Справочник программиста на персональном компьютере фирмы IBM. Вывод на терминал - Установка цвета границы экрана
ОГЛАВЛЕНИЕ
4.1.4 Установка цвета границы экрана.
Граница символьного экрана может иметь цвет, отличный от фоно-
вого цвета центральной части экрана. Может быть использован любой
из 16 цветов. С другой стороны, графические экраны технически не
имеют области границы. Когда цвет фона устанавливается в графи-
ческом режиме, то весь экран, включая область границы, окраши-
вается в этот цвет. Однако, операции вывода точек на экран не
имеют доступа к области границы; если большую часть адресуемых
точек экрана изменить в нефоновый цвет, то будет создана види-
мость границы экрана.
Высокий уровень.
Третий параметр оператора Бейсика COLOR устанавливает цвет
границы. Используются те же самые кодовые номера цветов, приве-
денные в [4.1.3]. Например, для установки границы в светлосиний
цвет, надо написать COLOR ,,8. PCjr кроме того может изменять
цвет, за счет изменения установки регистра палетты, соответствую-
щего коду цвета, указанного для цвета границы. Полное объяснение
см. в [4.1.3].
Средний уровень.
Для всех видеосистем фоновый цвет может быть установлен функ-
цией BH, прерывания 10H. Эта функция устанавливает также основные
цвета. Чтобы указать, что надо изменить фоновый цвет, надо помес-
тить 0 в BH, а код цвета в BL и выполнить прерывание. Кроме того,
PCjr и EGA имеют специальную функцию для установки фонового цве-
та. Это подфункция 1 функции 10H прерывания 10H. Надо поместить
10H в AH, 1 в AL и код цвета в BH. Никаких значений не возвра-
щается.
Низкий уровень.
Для цветного графического адаптера биты 0-3 порта 3D9H (Ре-
гистр выбора цвета) устанавливают цвет границы, когда экран на-
ходмтся в текстовом режиме. Как обычно, назначение битов в восхо-
дящем порядке - синий (B), зеленый (G), красный (R) и интенсив-
ность. Поскольку этот адрес предназначен только для записи, все
остальные биты этого регистра должны быть правильно установлены.
Это бит 4, который, если его установить в 1, приводит к тому, что
все фоновые цвета будут выводиться с высокой интенсивностью.
;---установка светлосинего цвета границы
MOV AL,00001001B ;атрибут светлосинего цвета
MOV DX,3D9H ;адрес регистра выбора цвета
OUT DX,AL ;устанавливаем цвет границы
Для PCjr массив ворот дисплея [4.1.1] имеет регистр, который
устанавливает цвет границы. Это 4-битный регистр, причем биты 0-3
соответствуют синему, зеленому, красному и высокой интенсивности,
когда установлены в 1. Для установки светлосинего цвета надо
послать в регистр 1001. Регистр цвета границы - это регистр 2
массива ворот дисплея. Чтобы получить доступ к этому регистру
надо сначала послать 2 в порт по адресу 3DAH. Затем надо послать
данные по тому же адресу. Чтобы быть уверенным, что микросхема
готова принять номер регистра, а не данные, надо сначала прочи-
тать из порта 3DAH. Следующий пример устанавливает красный цвет
границы (бит 2 установлен).
MOV DX,3DAH ;адрес порта массива ворот дисплея
IN AL,DX ;чтение для подготовки микросхемы
MOV AL,2 ;номер требуемого регистра
OUT DX,AL ;посылаем в порт
MOV AL,4 ;устанавливаемс только бит 2
OUT DX,AL ;устанавливаем цвет границы
Для EGA цвет границы устанавливается регистром сканирования
(overscan). Это регистр номер 11H порта с адресом 3C0H. Надо
сначала прочитать этот порт, чтобы переключить его на адресный
регистр, затем послать туда номер 11H в качестве индекса, а затем
послать данные. Имеют значение только младшие 4 бита данных, если
только EGA не связан с улучшенным цветным дисплеем IBM, а в этом
случае имеют значение младшие 6 битов, которые устанавливают цвет
границы.