Программирование видеоадаптеров

       

Переменные в младших адресах памяти


В младших адресах памяти 0000:0400h - 0000:0500h расположены переменные, используемые функциями BIOS. В них находятся основные параметры, определяющие состояние компьютера. Прикладные программы должны осторожно обращаться с этой областью памяти, так как нарушения в ней могут вызвать зависание системы, или другие нежелательные эффекты.

Если вы программируете видеоадаптер непосредственно через регистры, вам следует самостоятельно изменять соответствующие переменные в младших адресах памяти. Это даст вам возможность пользоваться функциями BIOS.

Например, если вы изменили непосредственно через регистры видеоадаптера положение курсора, а потом желаете определить его положение при помощи функций BIOS, то надо сразу после изменения регистра изменить и соответствующую переменную BIOS (ее адрес 0000:0450h).

Адрес и имя

Размер



0000:0410h

bEquipFlags

Байт

Флаги конфигурации: биты D5 и D4 определяют режим видеоадаптера, используемый сразу после включения компьютера:

D5 D4   

0   0        зарезервировано;

0   1        40 символов в строке, цветной;

1   0        80 символов в строке, цветной;

1   1        текстовый, монохромный.

Если биты D5 и D4 содержат единицы, значит используется монохромный адаптер. Видеопамять начинается по адресу B000:0000h.

В противном случае активным является цветной видеоадаптер и видеопамять начинается по адресу B800:0000h.

Остальные биты данного байта отвечают за другие подсистемы компьютера. Вы не должны изменять их значения

0000:0449h

bVideoMode

Байт

Номер текущего режима работы видеоадаптера

0000:044Ah

wColumns

Слово

Количество символов в строке экрана

0000:044Сh

wPageLength

Слово

Размер страницы видеопамяти в байтах

0000:044Eh

wVidStart

Слово

Смещение отображаемой области видеопамяти от начала видеопамяти (значение регистра начального адреса - SAR)

0000:0450h

w8CursorPos

8 слов

Каждое слово определяет координаты курсоров для одной из 8 страниц видеопамяти. Младший байт слова определяет столбец, а старший строку экрана в которой находится курсор

0000:0460h

wCursorShape

Слово

Определяет форму курсора (позицию первой и последней линии курсора). Старший байт слова содержит позицию первой строки курсора, а младший - последней. Состояние данной переменной отвечает регистрам начальной и конечной линии курсора (CSR - старший и CER - младший байты соответственно)

0000:0462h

bActivePage

Байт

Номер отображаемой (текущей) страницы видеопамяти

0000:0463h

wAddrCRT

Слово

Адрес индексного регистра контроллера ЭЛТ. Содержит 3B4h для монохромных или 3D4h для цветных режимов адаптера

0000:0465h

bRegMode

Байт

Значение регистра режима для видеоадаптеров CGA и MDA (регистр MCR). Для видеоадаптеров EGA и VGA эмулируется CGA и MDA

0000:0466h

bRegPalette

Байт

Значение регистра цветовой палитры CGA (регистр CSR). Для видеоадаптеров EGA и VGA эмулируется CGA и MDA

0000:0484h

bRows

Байт

Количество текстовых строк на экране минус единица

0000:0485h

wCharHigh

Слово

Высота символов в пикселах

0000:0487h

bInfo

Байт

Первый байт информации (для видеоадаптеров EGA и VGA):

D0 если бит равен единице, то разрешена эмуляция курсора CGA

D1 равен единице, видеоадаптер подсоединен к монохрому монитору

D2 единица в этом бите означает, что BIOS будет ожидать обратного вертикального хода луча перед записью в видеопамять (для видеоадаптера EGA).

D3 бит установлен, если  видеоподсистема неактивна

D4 зарезервировано

D6 D5 позволяют определить объем видеопамяти, установленной на адаптере EGA. Объем видеопамяти адаптеров VGA и SVGA, как правило, не бывает меньше 256 Кбайт

D6 D5    объем видеопамяти:

0   0        64 Кбайт;

0   1        128 Кбайт;

1   0        192 Кбайт;

1   1        256 Кбайт

D7 единица означает, что последняя операция выбора режима видеоадаптера не очистила видеопамять

0000:0488h

bInfoTwo

Байт

Второй байт информации о EGA:

D3-D0 положение переключателей на плате EGA (1 - OFF, 0 - ON)

D3           переключатель 4;

D2           переключатель 3;

D1           переключатель 2;

D0           переключатель 1

BIOS видеоадаптера VGA эмулирует переключатели EGA в соответствии с типом используемого монитора;

D7-D4 значение регистра управления дополнительным устройством видеоадаптера EGA

0000:0489h

bFlags

Байт

Набор различных флагов

D7, D4 количество линий развертки для текстовых режимов:

D7 D4

0   0        350 линий;

0   1        400 линий;

1   0        200 линий;

1   1        зарезервировано

D6 содержит единицу, если переключение мониторов разрешено и ноль в противном случае

D5 зарезервировано

D3 если данный бит содержит значение 1, значит загрузка палитры по умолчанию запрещена

D2 содержит единицу, если используется монохромный монитор и ноль - если используется цветной монитор

D1 содержит единицу, если разрешено преобразование серого цвета

D0 содержит единицу, если VGA активен и ноль - если не активен

0000:048Ah

bDCC

Байт

Индекс таблицы кодов комбинаций мониторов (Display Combination Code table index)

0000:04A8h

dwSavePtr

Двойное слово

Адрес таблицы окружения (см. следующий раздел)

Имена переменных видеофункций BIOS, которые мы привели в таблице соответствуют названиям полей структуры BIOS_VAR. Структура BIOS_VAR определена во включаемом файле SYSGRAPH.H. Вы можете просмотреть этот файл в листинге 3.3.

В конце данной главы мы приведем пример использования структуры BIOS_VAR для доступа к переменным видеофункций BIOS (листинг 6.1).



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