Страница 8 из 47
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 битов, которые устанавливают цвет границы.
|