Программирование видеоадаптеров 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)

Таблица 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]

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



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