Видеоадаптеры EGA и VGA можно условно разделить на шесть логических блоков:
1. Видеопамять. В видеопамяти размещаются данные, тображаемые адаптером на экране дисплея. Для видеоадаптеров EGA и VGA видеопамять, как правило, имеет объем 256К байт. На некоторых моделях Super VGA и XGA объем видеопамяти может быть увеличен до 1М байт. Видеопамять находится в адресном пространстве процессора и программы могут непосредственно производить с ней обмен данными. Физически видеопамять разделена на четыре банка или цветовых слоя, разделяющих единое адресное пространство.
2. Графический контроллер. Посредством его происходит обмен данными между центральным процессором компьютера и видеопамятью. Аппаратура графического контроллера позволяет производить над данными, поступающими в видеопамять, и над данными, расположенными в регистрах-защелках (регистры-защелки описаны ниже) простейшие логические опрерации (И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, циклический сдвиг).
3.Последовательный преобразватель. Выбирает из видеопамяти один или несколько байт, преобразует их в последовательный поток битов и затем передает контроллеру атрибутов.
4.Контроллер ЭЛТ. Генерирует временные синхросигналы, управляющие ЭЛТ.
5. Контроллер атрибутов. Преобразует информацию о цветах из формата, в котором она хранится в видеопамяти, в формат, необходимый для ЭЛТ. Преобразование цветов осуществляется в соответствии с таблицей цветовой палитры (Color Look-up Table). Модифицируя таблицу цветовой палитры, можно выбирать 16 цветов, поддерживаемых видеоадаптером EGA из 64 цветов, которые может отображать цветной улучшенный дисплей.
6. Синхронизатор. Управляет всеми временными параметрами видеоадаптера. Синхронизатор также управляет доступом процессора к цветовым слоям видеоадаптера.
В текстовых режимах видеопамять состоит из пар (код символа, атрибут); код символа определяет символ ASCII, выводимый в соответствующей позиции экрана, а атрибут - цвет этого символа. Соответствие цветов атрибутам зависит от типа видеоадаптера. Цвет фона может варьироваться от 0 до 7, а цвет символа с учетом яркости - от 0 до 0Fh. Значение атрибута задается формулой:
16 * цвет фона + цвет символа (плюс 128 для мерцания)
Видеопамять EGA располагается в адесах ОЗУ B8000h - BFFFFh. EGA имеет два типа текстовых режимов: 25 строк по 40 символов в строке и по 80 символов в строке. В режимах 25 х 40 одна страница занимает 800h байтов, поэтому видеопамять состоит из 8 страниц; в режимах 25 х 80 страница занимает 1000h байтов и видеопамять состоит из 4 страниц. Адрес кода символа в текстовых режимах равен B800h :
n*P+m*L+2*C, адрес атрибута на единицу больше.
Здесь L – номер строки (0 - 24), C - номер столбца (0 - 79 или 0 - 39), m = 2
количество столбцов режима, n = 800h при m=80 и 1000h при m=160.
EGA имеет два типа графических режимов: цветной режим, имеющий разрешение 320 точек по горизонтали на 200 точек по вертикали, и черно-белый режим с разрешением 640 точек на 200 точек. В режиме 320 х 200 каждый пиксель задается двумя битами, кодирующими его цвет; в режиме 640 х 200 цвет пикселя задается одним битом (белый/черный). В графических режимах один экран требует 16К видеопамяти, поэтому имеется одна страница видеопамяти, которая размещается в адресах B8000h - BFFFFh. Эта страница расслоена на две области: область с адреса B8000h содержит пиксели, имеющие четные номера строк; область с адреса BA000h содержит пиксели из нечетных строк. Поэтому адрес байта, содержащего точку с координатами (X,Y), равен в цветном режиме
B800h : 2000h * (Y % 2) + 80 * int(Y/2) + int(X/4),
а номера соответствующих битов в этом байте равны 7 - 2 * (X %
4) и 6 - 2 * (X % 4). Здесь X - горизонтальная позиция точки (0
- 319), Y - ее вертикальная позиция (0 - 199).