Регистр состояния 0 (Input Status Register 0 - ISR0)
Данный регистр, имеющий адрес 3C2h, доступен только для чтения.
Регистр позволяет получить различную информацию от видеоадаптера EGA. Формат регистра приведен ниже:
3-D0 Не используются. 4 Состояние переключателей. 5 Бит 0 дополнительного устройства (FEAT0). 6 Бит 1 дополнительного устройства (FEAT1). 7 Бит прерывания от ЭЛТ.
D7Бит прерывания от ЭЛТ. Бит установлен в 1, когда произошло вертикальное прерывание (по линии IRQ2) из-за обратного вертикального хода луча по кадру (погашеный луч перемещается из правого нижнего угла экрана в левый верхний). Этот бит устанавливается в начале обратного вертикального хода луча и сбрасывается записью в регистр конца вертикального хода луча.
D6 Бит 1 дополнительного устройства. Используется только EGA. Бит регистра подключен к 17-му выводу разъема дополнительного устройства.
D5 Бит 0 дополнительного устройства. Используется только EGA. Бит регистра подключен к 19-му выводу разъема дополнительного устройства.
D4 Состояние переключателей. При помощи данного бита регистра, BIOS EGA считывает состояние четырех переключателей, находящихся на плате видеоадаптера и определяющих его конфигурацию. Номер считываемого переключателя задается двумя битами выбора частоты (Бтиы D2 и D3) регистра определения различных режимов работы (MOR), согласно следующей таблице:
Бит D3 |
Бит D2 |
Считываемый переключатель |
0 |
0 |
переключатель 1 |
0 |
1 |
переключатель 2 |
1 |
0 |
переключатель 3 |
1 |
1 |
переключатель 4 |
Таблица 8.6 Установка битов D3 и D2.
Если бит D4 установлен в единицу, то переключатель, заданный битами D2 и D3 регистра определения различных режимов работы, находится в положении ON. Если бит сброшен в ноль, то переключатель находится в положении OFF.
Для EGA эти четыре переключателя определяют, какой дисплей используется с видеоадаптером и какой дополнительный видеоадаптер может быть подключен к компьютеру (cм. главу "Системы с двумя дисплеями").
Ниже показаны правильные варианты установки переключателей для различных конфигураций видеосистемы.
4 3 2 1 _________ Первичный: EGA с цветным дисплеем (40х25). ON ¦Ё Ё¦ OFF ¦ Ё Ё ¦ Дополнительный: MDA. _________
4 3 2 1 _________ Первичный: EGA с цветным дисплеем (80х25). ON ¦Ё ¦ OFF ¦ Ё Ё Ё¦ Дополнительный: MDA. _________
4 3 2 1 _________ Первичный: EGA с улучшенным цветным дисплеем. ON ¦ Ё Ё Ё¦ OFF ¦Ё ¦ Дополнительный: MDA. _________
4 3 2 1 _________ Первичный: EGA с улучшенным цветным дисплеем. ON ¦ Ё Ё ¦ OFF ¦Ё Ё¦ Дополнительный: MDA. _________
4 3 2 1 _________ Первичный: EGA с монохромным дисплеем. ON ¦ Ё Ё¦ OFF ¦Ё Ё ¦ Дополнительный: CGA с цветным дисплеем _________ (40х25).
4 3 2 1 _________ Первичный: EGA с монохромным дисплеем. ON ¦ Ё ¦ OFF ¦Ё Ё Ё¦ Дополнительный: CGA с цветным дисплеем _________ (80х25)
4 3 2 1 _________ Первичный: MDA. ON ¦Ё Ё Ё Ё¦ OFF ¦ ¦ Дополнительный: EGA с цветным дисплеем _________ (40х25).
4 3 2 1 _________ Первичный: MDA. ON ¦Ё Ё Ё ¦ OFF ¦ Ё¦ Дополнительный EGA с цветным дисплеем _________ (80х25).
4 3 2 1 _________ Первичный: MDA. ON ¦Ё Ё Ё¦ OFF ¦ Ё ¦ Дополнительный: EGA с улучшенным цветным _________ дисплеем.
4 3 2 1 _________ Первичный: MDA. ON ¦Ё Ё ¦ OFF ¦ Ё Ё¦ Дополнительный: EGA с улучшенным цветным _________ дисплеем.
4 3 2 1 _________ Первичный: CGA с цветным дисплеем 40х25 ON ¦Ё Ё Ё¦ OFF ¦ Ё ¦ Дополнительный: EGA с монохромным дисплеем. _________
4 3 2 1 _________ Первичный: CGA с цветным дисплеем 80х25 ON ¦Ё Ё ¦ OFF ¦ Ё Ё¦ Дополнительный: EGA с монохромным дисплеем. _________
VGA использует бит D4 для определения типа используемого дисплея (цветной или монохромный).
Особенно подчеркнем, что положение этих переключателей может быть считано также из байта памяти с адресом 0000:0488h:
D3-D0 Биты, соответствующие переключателям. Если бит установлен в единицу, то соответствующий переключатель находится в положении ON. Если бит сброшен в ноль, то переключатель находится в положении OFF.
D7-D4 Не используются.
Следующая программа считывает значение регистра состояния 0, выделяет биты D5 и D6, поступающие с разъема дополнительного устройства и отображает значения этих битв на экране диспля.
// чтение битов дополнительного устройства // (битов D5 и D6 регистра состояния 0)
#include <stdio.h> #include "sysp.h" #include "sysgraph.h"
void main(void) { int feature_bits; unsigned crt_address; BIOS_VAR _far *bios_var_ptr;
// читаем содержимое регистра состояния 0 и выделяем // биты D5 и D6
feature_bits = (ReadReg(0x3C2) & 0x60) >> 5;
printf("Биты дополнительного устройства: %x\n", feature_bits); }
Функция ReadReg, используемая в программе, описана ранее.
Содержание раздела