Чем отличаются текстовые режимы 2 и 3 в ДОС?

Тема в разделе "WASM.DOS/BIOS/Vesa/ports", создана пользователем Intro, 25 мар 2025 в 01:23.

Метки:
  1. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    631
    Вот по быстрому набросал демку для UASM со своими библиотеками.
    Код (ASM):
    1. ;Демка демонстрации атрибутов в текстовом режиме.
    2. _TYPE_PROCESSOR_        = 186       ;8086, 186, 286
    3. @CatStr(<.>, %_TYPE_PROCESSOR_)
    4. .model small, stdcall
    5. option casemap:none
    6. .dosseg
    7. .stack  2048
    8. ;assume CS:code, DS:data
    9. include macro16.asm
    10. ;----------------------------------------------------------------------------
    11. .code
    12. align_proc
    13. putchar_a proc stdcall uses bx chr:byte, attr:byte
    14.     mov     cx, 1
    15.     mov     bl, attr
    16.     mov     bh, 0
    17.     mov     al, chr
    18.     mov     ah, 9
    19.     int     10h
    20.     mov     bh, 0
    21.     mov     ah, 3
    22.     int     10h
    23.     mov     bh, 0
    24.     inc     dl
    25.     mov     ah, 2
    26.     int     10h
    27.     ret
    28. putchar_a endp
    29. align_proc
    30. main proc C
    31.     mov     ax, 0
    32.     int     10h
    33.     .for (bh=0: bh<16: bh++)
    34.         .for (bl=0: bl<16: bl++)
    35.             mov     al, bl
    36.             .if (al<10)
    37.                 add     al, '0'
    38.             .else
    39.                 add     al, 'A'-10
    40.             .endif
    41.             mov     dl, bh
    42.             shl     dl, 4
    43.             add     dl, bl
    44.             putchar_a(al, dl)
    45.         .endfor
    46.         putchar(13);'\r'
    47.         putchar(10);'\n'
    48.     .endfor
    49.     xor     ax, ax
    50.     ret
    51. main endp
    52. main_startup0_DOS_END
    Тут ещё можно сделать ввод режима, но пока так. Да, ЧБ режим не работает просто так, только хорошие эмуляторы могут это делать, либо в досбоксе что можно поменять в настройках. Если так подумать, режим 3 доступен IBM PC с самого начала, значит программист выбирает режим 2 или другие не просто так... хотя ладно я повторяюсь, разрабы забили тут на обратную совместимость.
     
    MaKsIm нравится это.
  2. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    534
    Так если это композитная фишка, то и эмулятор должен эмулировать композит со всеми косяаами цветности в высоких разрешениях где монохром поэтому имеет смысл.
    А на мониторах оно просто не нужно.
     
  3. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    631
    Так проверил, эмулятор VARCem, весьма точный. Тестовую программу доработал, можно режим задавать с клавиатуры. Подключил CGA, через RGB нормальный цвет, и ЧБ режим игнорируется. Включил композит, изображение тут же поплыло, просто не читается, уж больно хорошо эмулирует. Запустил свою программку, начал включать разные режимы, в общем ЧБ включился в 0 и 2, причём качество резко повысилось, хотя хуже чем RGB, но символы можно читать и юзать ПК. Так что получается режимы 0,1,2 для композита, причём даже 2 читается кое как, а вот режим 0, самое то, 4 и 5 тоже хорошо читается, 5 самый лучший, так же для 25х80 пригоден режим 6. Так что разрабы решили не заморачиваться с ЧБ режимом для 0 и 2, их редко кто использовал, это было временная вынужденная мера!
    Понятно почему в EGA этот композит вообще убрали, уж больно слабо те телеки работали с мелким текстом. Так же в спектруме режим текста 24х32, маловато, но для тех мутных телеков самое-то. Ох, отвык я от тех телеков, Берёзка ЧБ на лампах, смотрели до середины 90-х где-то, пока дядька нормальный телек из Германии не привёз. Ну ладно. Теперь всё стало ясней.
     
    Последнее редактирование: 27 мар 2025 в 01:40
    MaKsIm нравится это.
  4. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    631
    В общем немного скриншотов. Сразу скажу 3 режим работает по дефолту.
    Включил в место RGB композитный выход, видно что текст ужасный, еле что можно разобрать.
    2025-03-27_11-10-01.png
    Запустил свою программу. Режим 0 т.е. ЧБ текстовый 25х40. С текстом можно работать, при это градаций серого совсем немного, 4 цвета по сути.
    2025-03-27_11-11-58.png
    Режим 1 это цветной 25х40, качество хреновое, некоторые символы не читаются, другие чуть по лучше.
    2025-03-27_11-12-28.png
    Режим 2, это ЧБ текст 25х80, работать можно, 4 цвета как видно.
    2025-03-27_11-13-11.png
    Включим 3 дефолтовые режим, цветной текст 25х80. Текст на цветном фоне вообще сливается кашу малашу.
    2025-03-27_11-13-42.png
    Режим 4 это графический 320x200 4 цвета, тест 25х40 читается хорошо, хотя небольшие артифакты наблюдаются.
    2025-03-27_11-14-08.png
    Режим 5 это аналог 4-го. На композите так же полностью ЧБ без градаций, зато качество высокое.
    2025-03-27_11-14-38.png
    Режим 6 это графический режим 640x200 истинно ЧБ, 1 бит на пиксель. Качество текста хорошее.
    2025-03-27_11-15-07.png
    Конечно это просто эмулятор, хоть и весьма точный. Реально на каких-то телеках может цветное изображение и покачественней будет, особенно на более современных, которые выпущены например уже в нулевые или даже в конце 90-х.

    ВЫВОД: режимы 0, 2, 5 сделаны для композитного вывода на телевизоры и некоторые мониторы, сделано для удешевления системы. Потом практику подключения телевизоров к ПК убрали, хотя нет, оставили, но в качестве вывода видео, типа ПК-видеомагнитофон.
     
    aa_dav, Mikl___, Marylin и ещё 1-му нравится это.
  5. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    534
    Должен быть графический режим 160x200 с 16-ю цветами.
    В нём как бы четыре монохромных пикселя сливаются в один 16-цветный.
    И что интересно судя по гуглу это блин должен был быть режим 6, но с твиками:
    Должна получится такая штука, что 4 соседних монохромных пикселя станут попадать на круговой диаграмме цвета в определенные места и это сработает как 16-цветный графический режим 160x200.
    Т.е. скорее всего не будет и штатный вывод текста работать, ибо он другого ожидает. Надо будет напрямую писать в картинку.
     
    Последнее редактирование: 28 мар 2025 в 15:32
  6. MaKsIm

    MaKsIm Active Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    160
    Тогда на экране все будет желтым...
     
  7. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    534
    С чего бы?
    [​IMG]
     
  8. MaKsIm

    MaKsIm Active Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    160
    Если
    тогда будет желтым. :blush2:
     
  9. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    534
    Выше скриншот на самом деле совсем не показательный, т.к. это какой то эмулятор.
    А наглядно и во всей красе можно посмотреть на ютубе тут:
    https:// youtu.be / niKblgZupOc?si=KKt0FEFc3iIJRz9x
    (пришлось пробелы натыкать в ссылку иначе парсер никак не хотел её вставлять не как плеер который у меня не работает)
    На 4:50 первая демонстрация, а на 8:15 обстоятельная как это выглядит вживую.
    Выглядит действительно прикольно.
    Но у меня сейчас закрадываются подозрения, что в режиме 4 всё это тоже должно воспроизводится просто надо чтобы пиксели были не однотонные, а чередовались, тогда цвета поплывут и возникнет новое цветовое пространство.
     
  10. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    631
    aa_dav, у него телек по современней будет, Samsung какой-то, модель не понятная, но это достаточно современный. А фильтр который в VARCem используется имитирует старый телек из 70-х начала 80-х, ну скорей всего, а может со спецэффектами перекрутили.
     
  11. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    534
    А возможно всё верно.
    Я сейчас внимательно присмотрелся к картинке Режим 4 и на самом деле то что "артефакты присутствуют" это оно и есть.
    Там где белые буквы явственно видно, что иногда "простреливают" два цвета которых нет в 4-х цветной палитре - типа рыжий и синий.
    "Простреливают" они на переходах из Ч в Б и наоборот - есть позиции где одно превратится в синий, а другой в рыжий.
    На магенте тоже видны иногда переходы в синий. Для меня больше удивительно как их мало и что на зеленых буквах практически отсутствует эффект. Он должен быть довольно заметным и на прочих цветах, т.к. все комбинации порождают что-то своё. Возможно зеленый практически не "интерферирует" на переходах с чёрным?
    В общем по хорошему чтобы воочию увидеть желательно сделать битовую перетусовки из вертикальных линий где перебрать все возможные переходы из всех 4-х базовых цветов ко всем цветам в соседней колонке. И таким паттерном залить все колонки - должна получится приличная радуга из 16 цветов.
    Тут же похоже, что из-за того, что задник чёрный и это отсутствие сигнала как то очень неохотно "дополнительные цвета выбиваются из цветового тракта".
    --- Сообщение объединено, 30 мар 2025 в 06:23 ---
    P.S.
    Ну да, английская вики про CGA полностью расставила сейчас точки над i.
    Короче режим 4 нежелательно даже для буйства красок использовать из-за того, что в нём возможны две разных палитры и поэтому перед композитным выводом всё еще трудится какой то преобразователь палитр и его наличие сужает буйство красок (композитные цвета сильно близки друг к другу).
    Максимально полноцветную картинку можно получить на монохромном 640x200 искусственно в портах вывода включив сигнал color burst при этом монохромные пиксели тупо начнут без преобразований попадать в круговую цветовую диаграмму цветного сигнала и вышибать четвёрками каждый конкретный и сильно отстоящий от других цвет:
    [​IMG]
    Именно это буйство красок в видео 8-bit-guy и показывается - игры это эксплуатировали с большим удовольствием пока еще были живы композитные выводы.