Текстовый режим
Чтобы изображение символа появилось на экране, необходимо занести в видеопамять код и атрибут символа. В текстовом режиме под каждый символ отводится 2 байта.
|
|
Левый байт содержит ASCII–код символа. Каждому символу соответствует свое изображение, состоящее из определенного набора пикселей, которое называется символьной матрицей. В соответствии с ASCII–кодом выбирается соответствующая символьная матрица.
Пример символьной матрицы размером 9 х 16 пикселей. Цвет пикселей определяется согласно информации, записанной в атрибутном байте. | Правый байт - атрибутный байт содержит IRGB-код, где I – определяет наличие интенсивности цвета (I = 1 – есть интенсивность, I = 0 нет интенсивности)
7 6 5 4 3 2 1 0
код цвета фона код цвета символа I = 1 при задании цвета фона (7 бит – бит мерцания) означает мерцание символа. Существуют специальные языковые средства для задания атрибутного байта. Например, в Паскале определены - байтовая переменная TextAttr, - процедуры TextColor(C:byte). Переменная C может принимать значения от 0 до 15 и 128 (Blink); - TextBackGround(C:byte). Переменная C может принимать значения от 0 до 7, которые активизируются при подключении модуля CRT (uses CRT).
Пример задания атрибутов символа.
1) ярко-красный на зеленом фоне 7 6 5 4 3 2 1 0 зеленый ярко-красный
В Паскале это определяется одним из следующих способом:
a) TextAttr:=LightRed + 16*Green; b) TextAttr:=12+16*2; c) TextAttr:=48; d) TextColor:= LightRed; TextBackGround:= Green; Write(A); {печать красного символа А на зеленом фоне}
2) зеленый, мерцающий на фиолетовом фоне 7 6 5 4 3 2 1 0 фиолетовый зеленый
a) TextAttr:=Green + 16*Magenta + Blink; b) TextAttr:=2+16*5+128; c) TextAttr:=210; d) TextColor:= Green + Blink; TextBackGround:= Magenta;
3) ярко-зеленый, мерцающий на фиолетовом фоне 7 6 5 4 3 2 1 0 фиолетовый ярко-зеленый
a) TextAttr:=LightGreen + 16*Magenta + Blink; b) TextAttr:=10+16*5+128; c) TextAttr:=218; d) TextColor:= LighGreen + Blink; TextBackGround:= Magenta; Можно решить и обратную задачу: по числовому значению переменной TextAttr определить атрибуты символа. Например, пусть TextAttr = 207. a) Так как 207>128, то выделим мерцание 207 - 128 = 79, b) выделим цвет фона: 79 div 16 = 4; c) выделим цвет символа: 79 mod 16 = 15. Ответ: белый мерцающий на красном фоне. |