Справочник программиста на персональном компьютере фирмы 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 битов, которые устанавливают цвет
границы.