Регистр состояния 1 (Input Status Register 1 - ISR0)
Регистр позволяет получить различную информацию о состоянии видеоадаптера. Для видеоадаптера CGA содержимое регистра можно считать через порт, имеющий адрес 3DAh. Для адаптеров EGA, VGA и SVGA данный регистр, имеет адрес 3BAh в монохромных режимах и адрес 3DAh - в цветных. Регистр состояния 1 доступен только для чтения.
Приведем формат регистра состояния 1:
Биты
Описание
D0
Бит разрешения отображения
D1
Бит триггера светового пера
D2
Бит переключателя светового пера
D3
Бит обратного вертикального хода
D5-D4
Диагностические биты
D7-D6
Биты не используются
D7, D6 Биты не используются
D5, D4 Диагностические биты позволяют проверить два из шести цветовых выходных сигналов передаваемых монитору (для видеоадаптера EGA). Для выбора проверяемых сигналов используют регистр разрешения цветового слоя контроллера атрибутов:
Регистр разрешения цветового слоя
Регистр состояния 1
D5
D4
D5
D4
0
0
Красный
Синий
0
1
Второй красный
Второй зеленый
1
0
Второй синий
Зеленый
1
1
Не используется
Не используется
Следующая таблица показывает, как можно считать два из восьми цветовых сигналов, вырабатываемых контроллером атрибутов видеоадаптера VGA:
Регистр разрешения цветового слоя
Регистр состояния 1
D5
D4
D5
D4
0
0
P2
P0
0
1
P5
P4
1
0
P3
P1
1
1
P7
P6
Биты D5 и D4 позволяют прочитать содержимое регистров таблицы цветовой палитры видеоадаптера EGA. Следует отметить, что некоторые адаптеры, совместимые с EGA, не поддерживают эти биты. Поэтому их использование может наложить ограничения на работу программы.
D3 Бит обратного вертикального хода луча. Бит принимает значение 1 в течение обратного вертикального хода луча по кадру. Данный бит также установлен в случае, если разрешено прерывание IRQ2, и любое устройство компьютера выдает запрос на это прерывание.
Биты D2 и D1 управляют световым пером. Видеоадаптеры VGA и SVGA не поддерживают световое перо, поэтому биты D2 и D1 не используются.
D2 Бит переключателя светового пера. Если переключатель светового пера находится в положении ON (включено), то бит D2 равен единице. Если переключатель находится в положении OFF (выключено), то бит D2 равен нулю.
D1 Бит триггера светового пера. Бит равен единице, если триггер светового пера установлен. Сброс бита происходит при записи нуля через порт с адресом 3BBh для монохромного режима, или через порт 3DBh - для цветного режима.
D0 Бит разрешения отображения. Бит принимает значение единицы во время интервала активности монитора (когда адаптер читает данные из видеопамяти), и равен нулю во время горизонтального и вертикального обратного хода луча.
Во многих случаях возникает необходимость синхронизовать программирование регистров видеоадаптера с периодом вертикального или горизонтального обратного хода луча. Этого можно достичь периодической проверкой регистра состояния 1.
Листинг 4.2 содержит программу, использующую функцию WaitVert для определения частоты кадров. Функция WaitVert задерживает выполнение программы до начала обратного вертикального хода луча.
Исходный текст функции WaitVert представлен в листинге 4.3. Функция WaitVert периодически проверяет регистр состояния 1 (ISR1), ожидая начало обратного вертикального хода луча по экрану монитора.