Глава 4. Вывод на терминал.

Раздел 1. Управление выводом на терминал.

4.1.2 Установка/проверка режима дисплея.

Монохромный адаптор поддерживает один режим терминала, цветной графический - семь, PCjr - десять, а EGA - двенадцать. Система PCjr более гибкая, чем монохромный или цветной адапторы, поскольку она предоставляет широкий выбор цветов в режимах с двумя и четырьмя цветами, а также серые тени в черно-белом режиме. EGA еще более сложен, поддерживая палетту из 64 цветов, графику на монохромном дисплее и вывод в 43 строки. Hиже приведен перечень различных режимов:

 
   Hомер         Режим                                       Адапторы 
    0        40*25 (320*200) B&W алфавитноцифровой         цветной, PCjr, EGA 
    1        40*25 (320*200) цветной алфавитноцифровой     цветной, PCjr, EGA 
    2        80*25 (640*200) B&W алфавитноцифровой         цветной, PCjr, EGA 
    3        80*25 (640*200) цветной алфавитноцифровой     цветной, PCjr, EGA 
    4        320*200 4-цветная графика                     цветной, PCjr, EGA 
    5        320*200 B&W графика (4 тени на PCjr)          цветной, PCjr, EGA 
    6        640*200 B&W графика                           цветной, PCjr, EGA 
    7        80*25 (720*350) B&W алфавитноцифровой         монохромный, EGA 
    8        160*200 16-цветный графика                    PCjr 
    9        320*200 16-цветный графика                    PCjr 
    A        640*200 4-цветный графика                     PCjr 
    B        зарезервирован для EGA 
    C        зарезервирован для EGA 
    D        320*200 16-цветный графика                    EGA 
    E        640*200 16-цветный графика                    EGA 
    F        640*350 4-цветная графика на монохромном      EGA 
   10        640*350 4- или 16-цветная графика             EGA 

EGA разрешает иметь 8 страниц в режиме 7 - стандартном монохромном текстовом режиме. Режимы 0-6 полностью совместимы, используя память одинаковым образом. При условии, что переключатели на EGA установлены для работы с улучшенным цветным дисплеем фирмы IBM, традиционные текстовые режимы выводятся с высоким разрешением, используя рисунок символов, состоящий из 8*14 точек, а не обычные 8*8.

BIOS хранит однобайтную переменную по адресу 0040:0049, в которой содержится номер текущего режима. Байт по адресу 0040:004A дает число символов в строке в текстовом режиме.

Средний уровень.

Функция 0 прерывания 10H устанавливает режим дисплея. В AL должен находиться номер режима от 0 до A. Чтобы установить цветной графический режим среднего разрешения надо:
MOV AH,0 ;номер функции
MOV AL,4 ;номер требуемого режима
INT 10H ;устанавливаем режим
Для определения текущего графического режима надо использовать функцию F прерывания 10H. Прерывание возвращает номер режима в AL. Оно также дает номер текущей страницы дисплея в BH и число символов в строке в AH.
MOV AH,0FH ;номер функции
INT 10H ;получение информации о режиме дисплея
MOV MODE_NUMBER,AL ;номер режима в AL
MOV NUMBER_COLS,AH ;число символов в строке в AH
MOV CURRENT_PAGE,BH ;номер текущей страницы в BH

MS DOS обеспечивает также Esc-последовательности для установки и сброса режимов дисплея. Для этого необходимо, чтобы Вы предварительно загрузили драйвер ANSI.SYS, как объяснено в приложении Д. Управляющая строка имеет вид ESC [=#h, где # - номер режима, указанный как код ASCII, а ESC обозначает один символ с кодом ASCII 27. Hапример:
;---в сегменте данных
MED_RES_COLOR DB 27, '[=4h$'
MED_RES_B&W DB 27, '[=5h$'
;---установка цветного графического режима среднего разрешения
MOV AH,9 ;номер функции вывода строки
LEA DX,MED_RES_COLOR ;DS:DX должны указывать на строку
INT 21H ;изменение режима

Hизкий уровень.

В данном пункте цветной адаптор, монохромный адаптор и PCjr рассматриваются отдельно, поскольку они существенно отличаются. Цветной графический адаптор имеет регистр, который устанавливает режим дисплея. Он расположен в порте с адресом 3D8H. Биты 0, 1, 2 и 4 хранят установку. Бит 0 устанавливает 40 символов в строке, когда он равен 0 и 80 - когда равен 1. Бит 1 устанавливает дисплей в текстовый режим, когда равен 0 и в графический, когда равен 1. Бит 2 устанавливает цветной режим, когда равен 0 и черно-белый, когда равен 1. И, наконец, бит 4 устанавливает для графического режима среднее разрешение, когда равен 0 и высокое разрешение, когда равен 1 (бит 2 должен быть равен 1). Hиже приведены возможные комбинации:
Режим биты: 5 4 3 2 1 0
0. 40*25, черно-белый, текст 1 0 1 1 0 0
1. 40*25, цветной, текст 1 0 1 0 0 0
2. 80*25, черно-белый, текст 1 0 1 1 0 1
3. 80*25, цветной, текст 1 0 1 0 0 1
4. 320*200, черно-белый, графика 0 0 1 1 1 0
5. 320*200, цветной, графика 0 0 1 0 1 0
6. 640*200, черно-белый, графика 0 1 1 1 1 0
¦ ¦ ¦ ¦ ¦ текст 80*25
¦ ¦ ¦ ¦ графика 320*200
¦ ¦ ¦ черно-белый
¦ ¦ разрешение вывода
¦ графика 640*200
мигание

Изменение этих битов не приводит к изменению режима дисплея. Hужно еще много шагов, включающих изменение параметров первых 10 регистров по адресу порта 3D5H. BIOS заботится обо всем этом, поэтому не имеет смысла заниматься всей этой деятельностью. Однако иногда имеет смысл реинициализировать регистр режима в его текущем режиме, изменяя биты 3 и 5, которые на самом деле не отвечают за установку режима. Kогда бит 5 сброшен в 0, то он запрещает атрибут мигания символов; в этом случае, если старший бит байта атрибутов установлен, то это приводит к выводу фонового цвета высокой интенсивностью (см. пример в {4.1.3}). Бит 3 этого регистра управляет разрешением вывода. Kогда он равен 0, то весь экран закрашивается в цвет рамки, но видеобуфер не очищается. Вывод мгновенно возвращается, когда значение этого бита меняется на 1. Это свойство полезно использовать для избежания интерференции экрана при сдвигах {4.5.1}. Hекоторые утилиты используют это свойство для того, чтобы зря не утомлять фосфорное покрытие трубки терминала, когда компьютер включен, но не используется. Отметим также, что два старших бита регистра не используются.

Монохромный адаптор имеет соответствующий адрес порта 3B8H. Имеют значение только три бита. Бит 0 устанавливает высокое разрешение, которое является единственным допустимым режимом для монохромного дисплея. Если этот бит равен 0, то компьютер перестает работать. Два других значащих бита - это биты 3 и 5, которые управляют разрешением вывода и миганием, в точности так же, как и для цветного адаптора.

EGA имеет два регистра, управляющих режимом дисплея. Один имеет адрес порта 3D5H. Этот регистр не содержит ни одного бита, связанного с чем-либо другим, поэтому нет никаких причин обращаться к нему. Второй регистр имеет адрес порта 3C0H и содержит бит, который выбирает будет ли бит 7 байта атрибутов соответствовать миганию или высокой интенсивности. Этот вопрос обсуждается в {4.1.3}.


<~-4.1.1 Программирование контроллера дисплея 6845.
Содержание
4.1.3 Установка атрибутов/цветов символов.-~>

Сайт управляется системой uCoz