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

       

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


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

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

Для видеоадаптеров, построенных на основе микросхемы Motorola 6845 - MDA, CGA и Hercules, контроллер ЭЛТ содержит 18 регистров. В таблице 7.3 приведен список всех регистров контроллера ЭЛТ и их индексы, используемые для доступа к ним.



Индекс Регистр контроллера ЭЛТ
0 общая длина линии горизонтальной развертки (Horizontal Total Register - HTR)
1 длина отображаемой части горизонтальной развертки (Horizontal Displayed - HDR)
2 положение горизонтальной синхронизации (Horizontal Sync Position - HSR)
3 ширина горизонтального синхросигнала (Horizontal Sync Pulse Width Register - HSPWR)
4 число горизонтальных линий растра (Vertical Total Register - VTR)
5 выравнивание ратстра (Vertical Total Adjust Register - VTAR)
6 длина отображаемой части вертикальной развертки (Vertical Displayed - VDR)
7 положение вертикальной синхронизации (Vertical Sync Position Register - VSPR)
8 режим соединения (Interlase Mode Register - IMR)
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 старший байт адреса светового пера (Light Pen Address Register - LPAR, high byte)
11h младший байт адреса светового пера (Light Pen Address Register - LPAR, low byte)
<
/p> Таблица 7. 3 Регистры контроллеров ЭЛТ, построенных на основе микросхемы Motorola 6845 или ее аналогов.

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

Учтите, что у видеоадаптера CGA большинство регистров контроллера ЭЛТ являются доступными только для записи. Только регистры SAR и CLR доступны как для записи, так и для чтения.

У видеоадаптеров MDA и Hercules индексный порт имеет адрес 3B4h, а порт данных - адрес 3B5h. Для CGA адреса портов другие. Индексный порт имеет адрес 3D4h, а порт данных - адрес 3D5h.

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

Адрес порта индексного регистра записан в области переменных видеофункций BIOS, по адресу 0000:0463. Приведем фрагмент программы для получения адреса порта индексного регистра контроллера ЭЛТ:

; устанавливаем es на нулевой сегмент

xor ax,ax mov es,ax

; записываем в dx адрес порта индексного регистра контроллера ЭЛТ

mov dx,es:[463h]

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


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