Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

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

© Александр Фролов, Григорий Фролов
Том 21, М.: Диалог-МИФИ, 1993.

[Назад] [Содеожание] [Дальше]

Определение конфигурации и выбор программы распечатки экрана - функция 12h

Функция 12h содержит девять различных подфункций:

Номер подфункции

Назначение

10h

Определение конфигурации видеоадаптера

20h

Выбор программы печати экрана

30h

Выбор количества линий развертки в текстовом режиме

31h

Запрещение загрузки палитры цветов, принятой по умолчанию

32h

Управление доступом к видеопамяти и регистрам видеоадаптера

33h

Управление преобразованием серого цвета

34h

Управление эмуляцией курсора видеоадаптера CGA

35h

Выбор активного монитора (PS/2)

36h

Гашение экрана монитора

Определение конфигурации видеоадаптера - подфункция 10h

Проверяет наличие видеоадаптеров EGA/VGA, а также позволяет получить данные о текущем состоянии видеоадаптера:

На входе:

AH

12h

 

BL

10h - определение конфигурации EGA/VGA

На выходе:

BH

Режим видеоадаптера устанавливаемый по умолчанию:

0 - цветной режим,

1 - монохромный режим

 

BL

Объем видеопамяти (для видеоадаптера EGA):

0 - 64 Кбайт,

1 - 128 Кбайт,

2 - 192 Кбайт,

3 - 256 Кбайт

 

CH

Биты управления дополнительным устройством

 

CL

Положение переключателей на плате видеоадаптера EGA

Если видеоадаптер, установленный на компьютере, не является видеоадаптером EGA, VGA или SVGA, то регистр BX не изменяет своего значения. Это можно использовать для проверки наличия видеоадаптеров EGA/VGA:


mov	ah, 12h

; Определение конфигурации EGA/VGA
mov	bl, 10h  
mov	bh, 55h
int	10h

; Изменился ли регистр BX
cmp	bx, 5510h

; Если нет, то видеоадаптеры EGA/VGA не обнаружены
je 	ega_vga_not_found

Выбор программы печати экрана - подфункция 20h

Программа, распечатывающая содержимое экрана монитора по нажатию клавиши <Print Screen>, не работает в режиме 43 текстовых строк. Если вы желает иметь эту возможность, можете выбрать альтернативную программу печати экрана, воспользовавшись подфункцией номер 20h:

На входе:

AH

12h

 

BL

20h - выбор альтернативной программы печати экрана монитора

На выходе:

 

Не используются

Выбор количества линий развертки в текстовом режиме - подфункция 30h

Функция используется для получения на видеоадаптере VGA текстовых режимов, внешне не отличающихся от CGA или MDA.

На входе:

AH

12h

 

BL

30h - выбор числа линий развертки

 

AL

Количество строк развертки:

0 - 200 строк развертки, размер символа 8х8 пикселов,

1 - 350 строк развертки, размер символа 8х14 пикселов,

2 - 400 строк развертки, размер символа 8х16 пикселов

На выходе:

AL

12h

Функция 30h возвращает в регистре AL значение 12h, если компьютер имеет видеоадаптер VGA или SVGA. Эта особенность может использоваться для определения типа видеоадаптера.

Запрещение переустановки палитры - подфункция 31h

Функция применяется для предотвращения перезагрузки таблицы цветов при выполнении операции выбора режима работы видеоадаптера VGA:

На входе:

AH

12h

 

BL

31h - запрещение переустановки палитры

 

AL

Разрешение/запрещение переустановки:

0 - разрешить загрузку палитры при выполнении операции выбора режима видеоадаптера,

1 - запретить загрузку палитры при выполнении операции выбора режима видеоадаптера

На выходе:

AL

12h

Управление доступом к видеоадаптеру - подфункция 32h

Вызов функции позволяет запретить (разрешить) доступ к видеопамяти и регистрам адаптера VGA/SVGA.

На входе:

AH

12h

 

BL

32h - управление доступом к видеоадаптеру

 

AL

Разрешение/запрещение доступа:

0 - разрешить доступ,

1 - запретить доступ

На выходе:

AL

12h

Управление преобразованием серого цвета - подфункция 33h

Поддерживается только видеоадаптерами VGA и SVGA. Если разрешено преобразование, то при загрузке регистров таблицы цветов (операцией выбора режима работы видеоадаптера или непосредственным вызовом функции загрузки этих регистров) происходит корректировка записываемых значений. После этого содержимое регистров будет соответствовать различным градациям серого цвета.

На входе:

AH

12h

 

BL

33h - управление преобразованием серого цвета

 

AL

Разрешение/запрещение преобразования:

0 - разрешить преобразование,

1 - запретить преобразование

На выходе:

AL

12h

Приведем фрагмент программы, использующий функцию 33h для управления преобразованием серого цвета:


enable:

	; Разрешение преобразования содержимого регистров
	; таблицы цветов в шкалу градаций серого цвета
	xor	al,al
	jmp	conversion

disable:

	; Запрещение преобразования содержимого регистров
	; таблицы цветов
	mov	al,1

conversion:	

	mov	ah,12h
	mov	bl,33h
	int	10h

Эмуляция курсора CGA - подфункция 34h

Функция 34h управляет режимом эмуляции курсора CGA. При разрешении эмуляции курсора CGA, его размеры устанавливаются, исходя из того, что символы имеют высоту 8 пикселов.

На входе:

AH

12h

 

BL

34h - управление эмуляцией курсора CGA

 

AL

Разрешение/запрещение эмуляции курсора:

0 - разрешить эмуляцию,

1 - запретить эмуляцию

На выходе:

AL

12h

Выбор активного монитора - подфункция 35h

Используется в системе PS/2 для переключения между видеоадаптером VGA, расположенным на системной плате компьютера, и дополнительным видеоадаптером. Функция работает даже если между видеоадаптерами существует конфликт по адресам видеопамяти или адресам портов ввода/вывода. Система PS/2 после загрузки в качестве первичного видеоадаптера использует дополнительный.

Программа, выполняющая переключение видеоадаптеров должна поддерживать 128-байтовый буфер для сохранения информации о состоянии неактивного видеоадаптера.

На входе:

AH

12h

 

BL

35h - выбор активного монитора для PS/2

 

ES:DX

Адрес буфера. Размер буфера должен составлять 128 байт

 

AL

0 - выключить дополнительный видеоадаптер (должно быть использовано при первом вызове функции),

1 - включить видеоадаптера VGA, расположенный на системной плате (должно быть использовано при втором вызове функции),

2 - выключить активный видеоадаптер (используется в последующих вызовах функции),

3 - включить неактивный видеоадаптер (используется в последующих вызовах функции)

На выходе:

AL

12h

Гашение экрана монитора - подфункция 36h

Видеоадаптеры VGA и SVGA имеют возможность гашения экрана монитора:

На входе:

AH

12h

 

BL

36h - управление гашением экрана монитора

 

AL

0 - включить отображение информации на экране монитора,

1 - погасить экран монитора

На выходе:

AL

12h

Функция возвращает в регистре AL значение 12h, если компьютер имеет видеоадаптер VGA.

[Назад] [Содеожание] [Дальше]