Программирование видеоадаптеров CGA,EGA и VGA

         

Регистры контроллера ЭЛТ


Регистры контроллера ЭЛТ управляют сигналами синхронизации, необходимыми для формирования растра, определяют формат данных на экране, форму курсора, а также для видеоадаптеров CGA и EGA управляют световым пером.

Большинство из этих регистров не предсталяют интереса для их непосредственного программирования. Более того, их неправильное использоване может послужить причиной физического разрушения дисплея. Поэтому мы подробно рассмотрим лишь наиболее полезные и безопасные регистры контроллера.

Назначение и формат ряда регистров контроллера ЭЛТ различаются для видеоадаптеров EGA, VGA и для видеоадаптеров MDA, Hercules и CGA. Кроме того, они могут различаться и для видеоадаптерв одного типа, но разных фирм-производителей. В результате могут возникнуть проблем совместимости на компьютерах, оснащенных другим видеоадаптером. Если вы все-таки решитесь их перепрограммировать, то обращайтесь к описанию вашего адаптера.

Регистры контроллера ЭЛТ составляют самую многочисленную группу регистров видеоадаптеров. Для видеоадаптеров EGA и VGA группа содержит 24 регистра.

В таблице 8.9 приведен список всех регистров контроллера ЭЛТ и их индексы, используемые для доступа к ним.



Индекс Регистр контроллера ЭЛТ
0общая длина линии горизонтальной развертки (Horizontal Total Register - HTR)
1длина отображаемой части горизонтальной развертки (Horizontal Display Enable End Register - HDER)
2начало импульса гашения луча горизонтальной развертки (Start Horizontal Blank Register - SHBR)
3конец импульса гашения луча горизонтальной развертки (End Horizontal Blank Register - EHBR)
4начало импульса горизонтального обратного хода луча (Start Horizontal Retrace Register - SHRR)
5конец импульса горизонтального обратного хода луча (End Horizontal Retrace Register - EHRR)
6число горизонтальных линий растра (Vertical Total Register - VTR)
7дополнительный регистр (Overflow Register - OVR)
8предварительная установка горизонтальной развертки (Preset Row Scan Register - PRSR)
9высота символов текста (Max Scan Line Register - MSLR)
0Ahначальная линия курсора (Cursor Start Register - CSR)
0Bhконечная линия курсора (Cursor End Register - CER)
0Chстарший байт начального адреса (Start Address Register - SAR, high byte)
0Dhмладший байт начального адреса (Start address Register - SAR, low byte)
0Ehстарший байт позиции курсора (Cursor Location Register - CLR, high byte)
0Fhмладший байт позиции курсора (Cursor Location Register - CLR, low byte)
10hначало обратного вертикального хода луча (Vertical Retrace Start Register - VRSR)
11hконец обратного вертикального хода луча (Vertical Retrace End Register - VRER)
10hстарший байт адреса светового пера (Light Pen Address Register - LPAR, high byte)
11hмладший байт адреса светового пера (Light Pen Address Register - LPAR, low byte)
12hначало гашения вертикальной развертки (Vertical Display End Register - VDER)
13hлогическая ширина экрана (Offset Register - OFR)
14hположение подчеркивания символа (Underline Location Register - ULR)
15hначало импульса гашения вертикальной развертки (Start Vertical Blank Register - SVBR)
16hконец импульса гашения вертикальной развертки (End Vertical Blank Register - EVBR)
17hуправление режимом (Mode Control Register - MCR)
18hрегистр сравнения линий (Line Compare Register - LCR)

Таблица 8.9 Регистры EGA и VGA контроллера ЭЛТ.

В отличие от внешних регистров, адресация к регистрам контроллера ЭЛТ происходит через два порта. В первый порт (индексный) записывается индекс регистра, к которому осуществляетя доступ, а через второй порт (порт данных) можно производить обмен данными (запись или чтение). Заметим, что у видеоадаптера EGA большинство регистров контроллера ЭЛТ доступны только для записи.

У видеоадаптеров MDA и Hercules индексный порт имеет адрес 3B4h, а порт данных - адрес 3B5h. Для CGA адреса портов другие. Индексный порт имеет адрес 3D4h, а порт данных - адрес 3D5h. Адреса портов контроллера ЭЛТ для видеоадаптеров EGA и VGA зависят от режима работы видеоадаптера (монохромный или цветной). В монохромном режиме адрес порта индексного регистра равен 3B4h, а регистра данных - 3B5h. В цветном режиме адреса соответственно равны 3D4h и 3D5h:

Тип адаптераАдрес порта индексного регистра Адрес порта регистра данных
MDA и Hercules3B4h3B5h
CGA3D4h3D5h
EGA и VGA (монохромный режим)3B4h 3B5h
EGA и VGA (цветной режим)3D4h 3D5h

Таблица 8.10 Адреса портов индексного регистра и регистра данных.

Использование видеоадаптерами различного адресного пространства для портов контроллера ЭЛТ необходимо, чтобы создать возможность одновременного подключения к компьютеру двух видеоадаптеров.

Адрес порта индексного регистра записан в области переменных видеофункций BIOS, по адресу 0000:0463. Приведем фрагмент программы, определяющей адрес индексного порта контроллера ЭЛТ: ; устанавливаем es на нулевой сегмент xor ax,ax mov es,ax ; записываем в dx адрес порта индексного регистра контроллера ЭЛТ mov dx,es:[463]

Так как адреса портов индексного регистра и регистра данных контроллера ЭЛТ является смежными, то адрес порта регистра данных можно получить, прибавив единицу к адресу порта индексного регистра.



Содержание раздела