Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование видеоадаптеров EGA, VGA и SVGA.doc
Скачиваний:
138
Добавлен:
01.05.2014
Размер:
4.51 Mб
Скачать

Управление регистрами палитры - функция 10h

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

Для видеоадаптера EGA эта функция содержит четыре подфункции:

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

Назначение

0

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

1

Программирование регистра цвета рамки

2

Программирование всех регистров палитры (таблицы цветов)

3

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

Видеоадаптеры VGA и SVGA дополнительно поддерживают еще 10 подфункций:

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

Назначение

7

Чтение регистра палитры

8

Чтение регистра цвета рамки

9

Чтение всех регистров палитры

10h

Программирование регистра ЦАП

12h

Программирование нескольких регистров ЦАП

13h

Выбор подмножества цветов

15h

Чтение регистра ЦАП

17h

Чтение нескольких регистров ЦАП

1Ah

Чтение состояния страницы цветов

1Bh

Преобразование регистров ЦАП для работы в монохромном режиме

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

Функция выполняет запись в регистр палитры контроллера атрибутов:

На входе:

AH

10h

AL

00h - установка регистра палитры

BL

Номер регистра палитры для записи

BH

Данные, записываемые в регистр палитры

На выходе:

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

Следующий фрагмент записывает в регистр палитры с номером reg_num содержимое переменной data:

mov ah,10h ; Функция 10h xor al,al ; Подфункция 0h mov bl,num_reg ; Задаем номер регистра палитры mov bh,data ; Новое значение регистра int 10h

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

Функция выполняет запись значения в регистр цвета рамки контроллера атрибутов. Надо иметь в виду, что эта функция не работает в некоторых режимах видеоадаптера EGA.

На входе:

AH

10h

AL

01h - установка цвета рамки

BH

Значение, записываемое в регистр (цвет)

На выходе:

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

Программа BORDER, приведенная в листинге 5.4, использует подфункцию 01h для изменения цвета рамки экрана.

Листинг 5.4. Файл BORDER.C

#include <dos.h> #include <stdio.h> #include <conio.h> void main(void); // Главная функция void main(void) { union REGS inregs, outregs; unsigned char i; // Пробуем 16 цветов для рамки for(i = 0; i < 16; i++) { // Функция управления контроллером атрибутов inregs.h.ah = 0x10; // Подфункция установки цвета рамки inregs.h.al = 0x1; // Номер нового цвета рамки inregs.h.bh = i; int86( 0x10, &inregs, &outregs ); // Ожидаем нажатия на любую клавишу printf("\nДля изменения цвета рамки " "нажмите любую клавишу..."); getch(); } }

Установка всех регистров палитры - подфункция 02h

Функция обеспечивает быстрое заполнение новыми значениями всех регистров палитры и регистра цвета рамки. Новые значения регистров должны быть записаны перед вызовом функции в таблице размером 17 байт, расположенной в оперативной памяти компьютера. Байты 0 - 15 этой таблицы содержат новые значения для регистров палитры, а байт 16 новое значение для регистра цвета рамки.

На входе:

AH

10h

AL

02h - установка регистров палитры и регистра цвета рамки

ES:DX

Адрес таблицы с новыми значениями регистров

На выходе:

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