Программирование видеоадаптеров.© Александр Фролов, Григорий ФроловТом 21, М.: Диалог-МИФИ, 1993. Определение конфигурации и выбор программы распечатки экрана - функция 12hФункция 12h содержит девять различных подфункций:
Определение конфигурации видеоадаптера - подфункция 10hПроверяет наличие видеоадаптеров EGA/VGA, а также позволяет получить данные о текущем состоянии видеоадаптера:
Если видеоадаптер, установленный на компьютере, не является видеоадаптером 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:
Выбор количества линий развертки в текстовом режиме - подфункция 30hФункция используется для получения на видеоадаптере VGA текстовых режимов, внешне не отличающихся от CGA или MDA.
Функция 30h возвращает в регистре AL значение 12h, если компьютер имеет видеоадаптер VGA или SVGA. Эта особенность может использоваться для определения типа видеоадаптера. Запрещение переустановки палитры - подфункция 31hФункция применяется для предотвращения перезагрузки таблицы цветов при выполнении операции выбора режима работы видеоадаптера VGA:
Управление доступом к видеоадаптеру - подфункция 32hВызов функции позволяет запретить (разрешить) доступ к видеопамяти и регистрам адаптера VGA/SVGA.
Управление преобразованием серого цвета - подфункция 33hПоддерживается только видеоадаптерами VGA и SVGA. Если разрешено преобразование, то при загрузке регистров таблицы цветов (операцией выбора режима работы видеоадаптера или непосредственным вызовом функции загрузки этих регистров) происходит корректировка записываемых значений. После этого содержимое регистров будет соответствовать различным градациям серого цвета.
Приведем фрагмент программы, использующий функцию 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 пикселов.
Выбор активного монитора - подфункция 35hИспользуется в системе PS/2 для переключения между видеоадаптером VGA, расположенным на системной плате компьютера, и дополнительным видеоадаптером. Функция работает даже если между видеоадаптерами существует конфликт по адресам видеопамяти или адресам портов ввода/вывода. Система PS/2 после загрузки в качестве первичного видеоадаптера использует дополнительный. Программа, выполняющая переключение видеоадаптеров должна поддерживать 128-байтовый буфер для сохранения информации о состоянии неактивного видеоадаптера.
Гашение экрана монитора - подфункция 36hВидеоадаптеры VGA и SVGA имеют возможность гашения экрана монитора:
Функция возвращает в регистре AL значение 12h, если компьютер имеет видеоадаптер VGA. |