Текстовый режим

В символьном, или текстовом, режиме формирование изображения происходит несколько иначе. Если в графическом режиме (АРА) каждой точке экрана соответствует своя ячейка видеопамяти, то в текстовом режиме ячейка видеопамяти хранит информацию о символе, занимающем на экране знакоместо определенного формата. Знакоместо представляет собой матрицу точек, в которой может быть отображен один из символов из определенного набора. Здесь умышленно применяется слово «точка», а не «пиксел», поскольку пиксел является сознательно используемым элементом изображения, в то время как точки разложения символа, в общем случае, программиста не интересуют. В ячейке видеопамяти хранится код символа, определяющий его индекс в таблице символов, и атрибуты символа, определяющие вид его отображения. К атрибутам относится цвет фона, цвет символа, инверсия, мигание и подчеркивание символа. Поскольку изначально в дисплеях использовали только алфавитно-цифровые символы, такой режим работы иногда сокращенно называют AN (Alpha-Numerical — алфавитно-цифровой). Чаще его называют текстовым — ТХТ, что корректнее: символы псевдографики, которые широко применяются для оформления текстовой информации, к алфавитно-цифровым не отнесешь.

В текстовом режиме экран организуется в виде матрицы знакомест, образованной горизонтальными линиями UN (Line) и вертикальными колонками COL (Column). Этой матрице соответствует аналогичным образом организованная видеопамять. Адаптер, работающий в текстовом режиме, имеет дополнительный блок — знакогенератор. Во время сканирования экрана выборка данных из очередной ячейки видеопамяти происходит при подходе к соответствующему знакоместу (рис. 4.4), причем одна и та же ячейка видеопамяти будет выбираться при проходе по всем строкам растра, образующим линию знакомест. Считанные данные попадают в знакогенератор, который вырабатывает построчную развертку соответствующего символа — его изображение на экране. Знакогенератор представляет собой запоминающее устройство — ОЗУ или ПЗУ. На его старшие адресные входы поступает код текущего символа из видеопамяти, а на младшие — номер текущей строки в отображаемой линии знакомест. Выходные данные содержат побитную развертку текущей строки разложения символа (в графическом режиме эти данные поступали из видеопамяти). Необходимый объем памяти знакогенератора определяется форматом знакоместа и количеством отображаемых символов. Самый «скромный» знакогенератор имеет формат знакоместа 8x8 точек, причем для алфавитно-цифровых символов туда же входят и межсимвольные зазоры, необходимые для читаемости текста. Поскольку в PC принято 8-битное кодирование символов, для такого знакогенератора требуется 8х28=2К 8-разрядных слов. Лучшую читаемость имеют матрицы 9x14 и 9x16 символов. Если знакогенератор выполнен на микросхеме ПЗУ, то набор отображаемых символов оказывается жестко фиксированным (в лучшем случае переключаемым, для чего может использоваться несколько выбираемых банков памяти знакогенератора). Для знакогенераторов на ПЗУ изменение таблицы символов (например, русификация) становится сложным делом. Если микросхема ПЗУ установлена в сокет, ее несложно перепрограммировать или просто заменить. Запаянная микросхема знакогенератора дополнительно осложняет эту задачу, а размещение ПЗУ внутри специализированной БИС, что случалось в малогабаритных ПК, делает ее практически невыполнимой. Когда знакогенератор выполняют на микросхеме ОЗУ, естественно, обеспечивают и режим, в котором его содержимое можно по крайней мере программно загрузить. Адаптеры с загружаемым знакогенератором русифицируются чисто программными средствами.

Рис. 4.4. Формирование изображения в текстовом режиме

Как уже говорилось, каждому знакоместу в видеопамяти, кроме кода символа, соответствует еще и поле атрибутов, обычно имеющее размер 1 байт. Этого вполне достаточно, чтобы задать цвет и интенсивность символа и его фона. Для монохромных мониторов, допускающих всего три градации яркости, атрибуты можно трактовать иначе, формируя такие эффекты, как подчеркивание, инверсия, повышенная интенсивность и мигание символов в разных сочетаниях.

Текстовый адаптер также имеет аппаратные средства управления курсором. Знакоместо, на которое указывают регистры координат курсора, оформляется особым образом. Обычно его выделяют мигающей полоской, размер и положение которой относительно знакоместа программируется. Подчеркнем, что к такому выделению байт атрибутов не имеет отношения, хотя возможен неудачный выбор атрибутов (сочетание цветов), когда курсор перестает быть различимым. Несмотря на большее количество узлов текстового адаптера по сравнению с чисто графическим, его цена оказывалась гораздо ниже. Дело в том, что для текстового режима с форматом 25 строк по 80 символов (максимального для существующих чисто текстовых адаптеров) требуется всего 2 Кбайт видеопамяти для символов и 2 Кбайт для их атрибутов. При этом символы могут иметь хорошо читаемую матрицу разложения 9x14 и по 8 бит для атрибутов, определяющих цветовое оформление знакоместа. Частота считывания видеопамяти для регенерации изображения невысока: за время прямого хода по строке должно быть считано всего 80 слов. Графический режим (720x350) для отображения такой же матрицы символов потребует уже около 32 Кбайт видеопамяти в монохромном варианте, а в 16-цветном уже 128 Кбайт. Конечно, в настоящее время экономия видеопамяти в таких объемах уже не играет роли в цене адаптера, но не следует забывать и о том, что при выводе изображения эту память нужно заполнять. Поскольку в текстовом режиме в адаптер передаются только коды символов, заполнение всего экрана займет в десятки раз меньше времени, чем в построение того же изображения в графическом режиме. Программный код вывода символов в текстовом режиме проще и компактнее, чем при программном формировании его растрового изображения. По этим причинам все графические адаптеры имеют знакогенератор, дающий возможность работы и в текстовом режиме, а при переходе в графический режим знакогенератор отключается. Интеллектуальные адаптеры позволяют выводить символы (формировать их растровое изображение с заданным форматом знакоместа) и в графическом режиме. При этом адаптер получает только команду с указанием координат отображаемых символов и сам поток кодов символов, после чего быстро строит их изображение, не отвлекая центральный процессор.