Иллюстрированный самоучитель по SVGA

Функции BIOS

Дополнение к программе визуализации

В качестве примера приведем дополнение к примеру 4.1, позволяющее увидеть на экране эффект от изменения содержимого регистров палитры. Оно приведено в примере 4.5 и должно быть включено в текст примера 4.1 между командами int 2lh и mov ax, 03.

Напомним, что программа примера 4.1 заполняет экран разноцветными вертикальными линиями, ждет ввод любого символа и прекращает свою работу. После указанных изменений вместо прекращения работы будет выполняться группа команд из примера 4.5, которая записывает в регистры палитры значения, противоположные исходным (OFh, ОЕb,…, i, о). В результате картинка на экране окажется повернутой вокруг вертикальной оси. Например, если в исходном варианте палитра сел располагалась в первых 16-ти столбцах на экране, то теперь она будет находиться в столбцах с номерами 240-255, а расположение цветов в этих столбцах будет противоположно исходному.

После выполнения этих действий программа вновь ждет нажатия на одну из клавиш. Это сделано для того, чтобы оператор мог рассмотреть изменения, произошедшие на экране. После нажатия на клавишу выполнение программы будет закончено и произойдет возврат в DOS.

Пример 4.5. Дополнение (вставка) к программе примера 4.1.

mov сх, 16; количество изменяемых регистров
mov bx, 0F00h; код для записи в нулевой регистр
ip_3: mov ax,1000h код запрашиваемой функции B10s
int lOh установка регистра палитры
inc bi номер следующего регистра
dec bh код для следующего регистра
looj з lp_3 управление повторами цикла
mov ax, 0C0lh код функции DOS
int 21h ждет нажатия на клавишу

В примере 4.5 использован запрос 1000h, который производит запись в регистр палитры. Перед его вызовом заполняется регистр bx. В старший байт bb записывается номер группы регистров цвета, а в младший bl – номер регистра палитры.

Содержимое регистра палитры можно прочитать с помощью запроса 1007h. Номер читаемого регистра палитры указывается в ы, а его содержимое после выполнения запроса будет помещено в bh.

В состав группы 10h входят два запроса, которые позволяют прочитать (код 1009h) или записать (код I002h) сразу все регистры палитры. Кроме того, они считывают или записывают еще один специальный регистр, который называется overscan или Border. О назначении этого регистра следует поговорить особо.

Регистр Overscan

При работе в любом видеорежиме на экране существует небольшое свободное пространство, расположенное за "пределами рабочей области. Окраска этого пространства зависит от содержимого регистра цвета, номер которого хранится в регистре overscan. Обычно не используемое пространство окрашено в черный цвет, а поскольку код черного цвета находится в нулевом регистре, то Overscan просто очищен.

Некоторые,программы, например русификатор Keyrus, изменяют содержимое Overscan для окрашивания неиспользуемого пространства экрана в разные цвета. Это позволяет различать режимы работы программы, например ввод русских или латинских букв, не используя рабочую область экрана. Существуют два запроса – 1001h и 1008h, выполняющие запись и чтение регистра Overscan.

Замечание
В заключение еще раз подчеркнем, что в видеорежимах SVGA деление на страницы действует только при работе с палитрой 16 цветов. При работе с палитрой 256 цветов регистры палитры не используются
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.