Иллюстрированный самоучитель по SVGA

Графические режимы. Таблицы символов.

Основные особенности графических режимов, имеющие непосредственное отношение к работе с текстом, заключаются в следующем:

  • видеобуфер располагается в сегменте ДОООЬ (а не B800h);
  • в видеопамяти находятся коды цветов точек, а не символов;
  • выключен знакогенератор, преобразующий коды символов в рисунки;
  • выключена аппаратная поддержка работы с текстовым курсором.

Из этого перечня следует, что после установки графических режимов (как VESA, так и IBM) изображения символов и курсора на экране должны рисовать специальные подпрограммы. При работе с текстом в графических режимах IBM можно использовать поддержку BIOS, но в режимах VESA задача должна самостоятельно выполнять все необходимые действия.


Для вывода текста на экран нужен набор заготовок рисунков всех используемых символов. Обычно эти заготовки хранятся в специальных таблицах символов. Структура стандартных таблиц не зависит от режима, в котором они будут использоваться. При описании текстовых видеорежимов нас не интересовала структура таблиц, поскольку изображения символов рисовал видеоконтроллер. В данном случае нам необходимо знать способ хранения данных в таблицах символов, для того чтобы составить подпрограмму, выполняющую функции знакогенератора.

Структура стандартных таблиц

В стандартных таблицах ширина символа составляет восемь точек, т. е. код одной строки (линии) рисунка символа занимает один байт. В зависимости от высоты символа (количества строк в знакоместе) заготовка полного рисунка занимает 8, 14 или 16 байтов, расположенных последовательно друг за другом. Полная таблица содержит 256 заготовок символов и занимает в оперативной памяти пространство 256x8=2048, 256x14=3584 или 256x16=4096 байтов.

Заготовка строки кодируется следующим образом. Старший бит (разряд) байта соответствует крайней левой позиции в строке, а младший бит – крайней правой позиции. Если текущая позиция содержит одну из точек рисунка символа, то соответствующий ей бит установлен (содержит 1), в противном случае он очищен (содержит 0).

На рис. 5.1 схематически изображено расположение русской буквы Б в стандартном прямоугольнике (знакоместе) размером 8x16 точек. Первый столбец рисунка содержит коды байтов каждой строки. В остальных восьми столбцах расположен рисунок буквы Б.

Если клетка содержит точку изображения символа, то в ней записана буква Х, пустые клетки соответствуют фону, окружающему изображение символа.

00                
00                
FE X X X X X X X  
62   X X       X  
62   X X       X  
60   X X          
  X X X X X    
66   X X     X X  
66   X X     X X  
66   X X     X X  
66   X X     X X  
FC X X X X X X    
00                
00                
00                
00                

Рис. 5.1. Буква Б из таблицы символов размером 8x16

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.