Программирование EGA и VGA
¦ ПОДФУНКЦИЯ 35h: ВЫБОР АКТИВНОГО ДИСПЛЕЯ
Функция позволяет выбрать один из двух видеоадаптеров системы
при конфликтах в использовании памяти или адресов портов
(между этими адаптерами).
Регистры (устанавливаются до вызова функции):
----------------------------------------------
BL: устанавливаются 35h
AL: 0-для запрещения исходного адаптера
1-для разрешения адаптера системной платы
2-для запрещения активного адаптера
3-для разрешения неактивного адаптера
ES: сегмент буфера длиной 128 байтов
DS: смещение буфера длиной 128 байтов
(если AL=0,2 или 3)
----------------------------------------------
Регистры (чтение выполняется после обращения):
----------------------------------------------
AL: 12h
----------------------------------------------
Если функция вызывалась с AL=0 или 2, информация о состоянии
видеоадаптера запоминается в буфере. Если функция вызывалась
с AL=3 состояние видеоадаптера определяется по содержимому
буфера.
¦ ПОДФУНКЦИЯ 36h: РЕГЕНЕРАЦИЯ ИЗОБРАЖЕНИЯ
Функция разрешает или запрещает регенерацию изображения для
текущего активного дисплея.
Регистры (устанавливаются до вызова функции):
----------------------------------------------
BL: устанавливается 36h
AL: 0-разрешение регенерации
1-запрещение регенерации
----------------------------------------------
Регистры (чтение выполняется после обращения):
----------------------------------------------
AL: 12h
----------------------------------------------
=======================================================================
ВЫЗОВ ФУНКЦИИ 13h: ВЫВОД СТРОКИ НА АКТИВНУЮ СТРАНИЦУ В РЕЖИМЕ ТЕЛЕТАЙПА
КОММЕНТАРИИ
Функция выдает строку на активную страницу, начиная с указанной
позиции. Эту функцию можно рассматривать как расширение функции eh.
Управляющие символы типа "звонок" (07h), "возврат на шаг" (08h), "пе-
ревод строки" (0ah) и "возврат каретки" (0dh) распознаются и выпол-
няются в соответствии с их назначением.
ИСХОДНЫЕ ДАННЫЕ
Регистры (устанавливаются до вызова функции):
-----------------------------------------------------------------
AL: устанавливается 13h
AL: 0-в BL находятся атрибуты;
строка содержит только коды символов; поло-
жение курсора после вывода строки не меня-
ется
1-в BL находятся атрибуты; строка содержит только
коды символов; положение курсора модифицируется
после вывода строки
2-строка содержит альтернативные коды символов и
байты атрибутов; положение курсора после вывода
строки не меняется
3-строка содержит альтернативные коды символов и байты
атрибутов; положение курсора модифицируется после
вывода строки
BH: страница
BL: атрибуты, если AL=0 или 1
CX: длина строки
DH: ряд
DL: столбец
ES: сегмент адреса строки
BP: смещение адреса первого байта строки
-----------------------------------------------------------------
Пример на языке ассемблера
-----------------------------------------------------------------
Приведенная ниже программа выполняет строки. Следует обратить
внимание на действие управляющих кодов 7, 10 и 13. Сравните
результаты действия функций 9, ah и eh.
data segment public
msg db 'The line demostrates printing'
db 'ASCII 7(',7,'),10(',10'), and
db '13(',13').
m_len equ $_msg ;формирование константы от текущей
;метки до начала сообщения
;(длина сообщения)
data ends
code segment public
assume CS:code
main proc far
start: push DS
sub AX,AX
push AX
mov AX,data
mov DS,AX
assume DS:data
mov AH,13h ;функция 13h-вывод строки
mov AL,01b ;только символы, переместить курсор
mov BH,0 ;страница 0
mov BL,15 ;атрибут 15
mov CX,m_len ;число символов
mov DH,05 ;строка 5
mov DL,0 ;столбец 0
mov BP,offset msg ;указывает на сообщение
push DS
pop ES ;сообщение - в сегменте данных
int 10h ;обращение к видео BIOS
ret
main endp
code ends
------------------------------------------------------------------
=======================================================================
ВЫЗОВ ФУНКЦИИ 1ah (только VGA) КОМБИНИРОВАННЫЙ КОД ДИСПЛЕЯ (ККД)
КОММЕНТАРИИ
Функция записывает и возвращает коды, определяющие основной (актив-
ный) и дополнительный адаптеры. Функция полезна для определения
конфигурации дисплея и поддерживается всеми вновь разрабатываемыми
адаптерами. Возвращаемый код помещается в регистр AL для подтвержде-
ния наличия поддержки выполнения данной функции. Если возвращаемый
код является некорректным, могут быть использованы альтернативные
методы определения конфигурации (в качестве примера см. пример
программы определения конфигурации в главе 14).
ИСХОДНЫЕ ДАННЫЕ
Регистры (устанавливаются до вызова функции):
----------------------------------------------
AH: устанавливается 1ah
----------------------------------------------
¦ ПОДФУНКЦИЯ 0: Чтение ККД
Регистры (устанавливаются до вызова функции):
----------------------------------------------
AL: установить 0
----------------------------------------------
Регистры (чтение выполняется после обращения):
----------------------------------------------
AL: 1ah
BH: код дополнительного дисплея
BL: код активного дисплея
----------------------------------------------
¦ ПОДФУНКЦИЯ 1: Запись ККД
Регистры (устанавливаются до вызова функции):
----------------------------------------------
AL: установить 1
BH: код дополнительного дисплея
BL: код активного дисплея
----------------------------------------------
Регистры (чтение выполняется после обращения):
----------------------------------------------
AL: 1ah
ККД код значение (BH/BL)
0 дисплей отсутствует
1 MDA
2 CGA
4 EGA со стандартным цветным монитором
5 EGA с монохромным монитором
6 PGA (Professional Graphics Adapter)
7 VGA с аналоговым монохромным монитором
8 VGA с аналоговым цветным монитором
bh MCGA с аналоговым монохромным монитором
ch MCGA с аналоговым цветным монитором
ffh неизвестная комбинация
----------------------------------------------
======================================================================
ВЫЗОВ ФУНКЦИИ 1bh (только VGA): ИНФОРМАЦИЯ О ФУНКЦИОНАЛЬНЫХ
ВОЗМОЖНОСТЯХ/СОСТОЯНИИ
КОММЕНТАРИИ
Функция возвращает информацию об окружении дисплей/адаптер.
Эта информация может быть размещена в различных местах области
сохранения BIOS и различных областях данных ПЗУ (см. главу 12).
Однако благодаря использованию рассматриваемой функции может быть
получен простой доступ к таким данным. Для сохранения возвращаемой
информации программа должна резервировать область памяти размером 40h
байтов.
ИСХОДНЫЕ ДАННЫЕ
Регистры (устанавливаются до вызова функции):
---------------------------------------------------------
AH: устанавливается 1bh
BX: реализуемый тип (устанавливает 0)
ES: Сегмент зарезервированной области сохранения
DI: Смещение зарезервированной области сохранения
---------------------------------------------------------
ВЫХОДНАЯ ИНФОРМАЦИЯ
Регистры (чтение выполняется после обращения):
---------------------------------------------------------
AL: 1bh
---------------------------------------------------------
Таблица, размещенная в ES:DI имеет следующую структуру.
---------T----------T------------------------------------------------
Смещение ¦ Размер ¦ Описание
---------+----------+------------------------------------------------
0 ¦ 1 слово ¦ Смещение статической функциональной таблицы
---------+----------+------------------------------------------------
2 ¦ 1 слово ¦ Сегмент статической функциональной таблицы
---------+----------+------------------------------------------------
4 ¦ 1 байт ¦ Текущий видеорежим
---------+----------+------------------------------------------------
5 ¦ 1 слово ¦ Число символов в строке
---------+----------+------------------------------------------------
7 ¦ 1 слово ¦ Размер области видеоданных в байтах
---------+----------+------------------------------------------------
9 ¦ 1 слово ¦ Начальный адрес области видеоданных
---------+----------+------------------------------------------------
bh ¦ 1 слово ¦ Страница 0 позиция курсора
---------+----------+------------------------------------------------
dh ¦ 1 слово ¦ Страница 1 позиция курсора
---------+----------+------------------------------------------------
fh ¦1 слово ¦ Страница 2 позиция курсора
---------+----------+------------------------------------------------
11h ¦1 слово ¦ Страница 3 позиция курсора
---------+----------+------------------------------------------------
13h ¦1 слово ¦ Страница 4 позиция курсора
---------+----------+------------------------------------------------
15h ¦1 слово ¦ Страница 5 позиция курсора
---------+----------+------------------------------------------------
17h ¦1 слово ¦ Страница 6 позиция курсора
---------+----------+------------------------------------------------
19h ¦1 слово ¦ Страница 7 позиция курсора
---------+----------+------------------------------------------------
1bh ¦1 байт ¦ Начальная строка курсора
---------+----------+------------------------------------------------
1ch ¦1 байт ¦ Конечная строка курсора
---------+----------+------------------------------------------------
1dh ¦1 байт ¦ Текущая страница дисплея
---------+----------+------------------------------------------------
1eh ¦1 байт ¦ Адрес порта КЭЛТ
---------+----------+------------------------------------------------
22h ¦1 байт ¦ Число символьных строк, вывод которых
¦ ¦ возможен
---------+----------+------------------------------------------------
23h ¦1 слово ¦ Высота символа в пикселях
---------+----------+------------------------------------------------
25h ¦1 байт ¦ Код первичного ККД (адаптер)
---------+----------+------------------------------------------------
26h ¦1 байт ¦ Код вторичного ККД (адаптер)
---------+----------+------------------------------------------------
27h ¦1 слово ¦ Количество поддерживаемых цветов
---------+----------+------------------------------------------------
29h ¦1 байт ¦ Количество поддерживаемых страниц
---------+----------+------------------------------------------------
2ah ¦1 байт ¦ Число строк развертки
¦ ¦ 0 - 200 строк
¦ ¦ 1 - 350 строк
¦ ¦ 2 - 400 строк
¦ ¦ 3 - 480 строк
---------+----------+------------------------------------------------
2bh ¦1 байт ¦ Номер первичного блока шрифтов (0-7)
---------+----------+------------------------------------------------
2ch ¦1 байт ¦ Номер вторичного блока шрифтов (0-7)
---------+----------+------------------------------------------------
2dh ¦1 байт ¦ Смешанный набор параметров
¦ ¦ (сохраняются в битах)
¦ +------------------------------------------------
¦ ¦Смешанный набор параметров
¦ ¦(сохраняются в битах)
¦ +-----T------------------------------------------
¦ ¦Бит ¦ Описание (если установлено значение 1)
¦ +-----+------------------------------------------
¦ ¦ 0 ¦ Поддерживаются все режимы
¦ ¦ 1 ¦ Выполняется суммирование
¦ ¦ ¦ цветов для получения оттенков
¦ ¦ ¦ серого
¦ ¦ 2 ¦ Подключен монохромный монитор
¦ ¦ 3 ¦ Запрет загрузки палитры,
¦ ¦ ¦ предусмотренной по умолчанию
¦ ¦ 4 ¦ Разрешена эмуляция курсора
¦ ¦ 5 ¦ Мерцание (0=яркость фона)
---------+----------+-----+------------------------------------------
31h ¦1 байт ¦ Размер видеопамяти (в блоках по 64К, 0=64К)
---------+----------+------------------------------------------------
32h ¦1 байт ¦ Состояние указателя сохранения
¦ ¦ (сохраняется в битах)
---------+----------+-----T------------------------------------------
¦ ¦Бит ¦ Описание (если установлено значение 1)
¦ +-----+------------------------------------------
¦ ¦ 0 ¦ Задействован
¦ ¦ ¦ 512-символьный набор
¦ ¦ 1 ¦ Задействована область
¦ ¦ ¦ сохранения палитры
¦ ¦ 2 ¦ Задействован алфавитно-цифровой набор
¦ ¦ ¦ символов пользователя
¦ ¦ 3 ¦ Задействован графический набор символов
¦ ¦ ¦ пользователя
¦ ¦ 4 ¦ Задействована палитра, определенная
¦ ¦ ¦ пользователем
¦ ¦ 5 ¦ Задействовано расширение ККД
---------+----------+-----+------------------------------------------
[ Назад ]
[ Оглавление ]
[ Далее ]