Как стать автором
Обновить

О бедном Text Mode замолвите слово…

Время на прочтение2 мин
Количество просмотров3.8K

Читая zx-pk.ru, я наткнулся на пару тем, где обсуждалась возможность создания видеокарты с полной реализацией текстовых режимов VGA. В одной из тем даже кипела бурная деятельность. Прототип был создан, в нескольких вариациях. Работал. Но...

В упомянутой выше теме, видеокарта реализовывала практически потолок для VGA в текстовом режиме. Даже придумывались различные способы применения в духе эмуляции CGA в VGA. Тестировался и FastDoom.

Все было бы хорошо если бы не одно но - и 10% возможностей было не раскрыто.

Текстовый режим для VGA подразумевает несколько особенностей

  1. Первое и главное: размер знакоместа. От 8x8 до 8x16. Да, некоторые режимы определяются как 9xN, но в 99.9% случаев режим 9xN дублирует 8 колонку в 9. Исключение: попытка реального отображения чего-то национального.

  2. Второе: количество страниц. От 2 до бесконечности. Определяется размером памяти, но напрямую от нее не зависит. 256kb позволяет выделить до 16 страниц.

  3. Третье: матрица знакомест. От 40x25 до 80x50. Фактически зависит от адаптера. Возможна адресация до 132x60 (даже 160x50, но это редкость).

  4. Четвертое: знакогенератор. VGA позволяет использовать отображать от 256 до 512 символов одновременно из набора "насколько хватит памяти". И... дополнение будет ниже.

  5. Пятое: цвета. По-умолчанию VGA использует для текстового режима "совместимую палитру". Это 16 цветов "каноничного" CGA. Вполне неплохая палитра кстати. Уж на фоне конкурентов так точно (посмотрите на "конючевших" о нехватке коричневого и целых четырех градаций серого в базовом). Есть нюанс. Можно сменить все цвета создав любую палитру из 16 цветов на свой выбор, но только при 256 знакоместах или 8 при 512. Но, хоть 16, хоть 8, они не будут фиксированными.

  6. Шестое: Перепрограммируемый "на лету" знакогенератор. Грубо говоря это способность превратить любой символ в любой в момент меньше чем способен оценить человеческий глаз. Графические "моменты" в Norton Utilies, FFORMAT, Impulse Tracker и прочих - это оно и есть. Но там было перепрограммирование всего и сразу для интерфейса + 4 знакомест в процессе для курсора.

Исходя из всего вышеперечисленного хочется заметить: Попытка создать эмулятор CGA в текстовом режиме VGA используя CP437 выглядит как минимум наивно.

Вы можете создать собственную таблицу. Вы можете создать много таблиц. Вы можете подменять таблицы в реальном времени. Вы даже способны соорудить нечто вроде спектрумовского GigaScreen, получая до 4 цветов на знакоместо (в реальности гораздо больше даже для 8088).

Благодарности

  1. zx-pk.ru:freddy

  2. zx-pk.ru:Tronix

P.S. В процессе написания своего движка для Text-Mode-Based игр я столкнулся с непониманием того, почему первый Tetris не использовал кастомный знакогенератор, поскольку первая (не первая конечно, но одна из первых) моя попытка что-то перенести на IBM с ZX (Kingdom of Grain) использовала именно его для отображения заставок. Возможно повлияло то, что мой первый xIBM-PC был "не совсем совместимый" и позволял делать то, что на оригинале было невозможно. Это был МК-88. Знакогенератор можно было менять сколько угодно, отжирая одну ячейку.

P.S.S. Если интересно, то во второй части я опишу проблему выбора фиксированного знакогенератора для интерпретации имеемого режима и проблем с перепрограммированием "на лету".

Теги:
Хабы:
Всего голосов 15: ↑8 и ↓7+7
Комментарии8

Публикации

Истории

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область