Программирование EGA и VGA
----------------------------------------------------------------------
6. B B E Д E H И E B P E Г И C T P O B O E
П P O Г P A M M И P O B A H И E
----------------------------------------------------------------------
EGA и VGA имеют регистры, предназначенные для реализации управля-
ющих функций адаптера. Ранее уже было показано, как работают некоторые
из этих регистров. Регистры адаптера могут быть разделены на 5 основных
групп: Внешние регистры, регистры Указателя Последовательности, регист-
ры КЭЛТ (Контроллера Электронно-Лучевой Трубки), регистры Графического
Контроллера и регистры Атрибута. Эти группы регистров связаны между
собой, хотя и существуют исключения. Посредством Указателя Последова-
тельности осуществляется управление доступом к памяти, синхронизацией
и потоком данных между другими регистрами. КЭЛТ регулирует длительность
временного интервала для вывода информации. Основная задача, решаемая
Графическим Контроллером - реализация функций графического режима.
Атрибут-Контроллер осуществляет управление цветовыми палитрами, a
Внешние регистры предназначены для работы c различными функциями. При
использовании VGA к вышеуказанным группам добавляется группа регистров,
называемых регистрами ЦАП (Цифро-Аналогового Преобразователя), предназ-
наченного для преобразования номера цвета в напряжение для аналогового
монитора.
Как уже отмечалось выше, большинство регистров являются доступны-
ми косвенно. Каждая группа регистров (за исключением внешних регистров)
включает адресный регистр. Адресный регистр используется для выбора
модифицируемого регистра. Bce безадресные регистры (кроме внешних pe-
гистров и регистров Графического Позиции) имеют индекс. Индекс помеща-
ется в адресный регистр, после чего выполняется доступ к нужному регист-
py. Например, для записи значения 3 в регистр Маскирования Растра (ин-
декс 2 группы Указателя Последовательности) следует выполнить следую-
щие команды:
mov DX,3c4h ;номер порта регистра Адреса Указателя
;Последовательности
mov AL,2 ;номер индекса регистра Маскирования Растра
out DX,AL
inc DX ;номер порта Маскирования Растра
mov AL,3 ;значение записываемое в регистр
;Маскирования растра
out DX,AL
EGA и VGA также имеют 4 регистра-защелки, используемые во время
доступа к памяти процессора. Каждому из этих регистров (связанных c
АЛУ) соответствует одна битовая матрица. Регистры-защелки применяются
для сохранения информации, находящейся в памяти, во время записи памяти
ЦП, для последующей передачи содержимого памяти в процессе чтения памя-
ти ЦП, a АЛУ объединяют данные регистров-защелок и данные ЦП. Работа
регистров-защелок и АЛУ в основном незаметна для пользователя и не
связана непосредственно c ЦП. Однако некоторые регистры Графического
Контроллера непосредственно работают c содержимым регистров-защелок и
управляют работой АЛУ. Следует помнить, что регистры-защелки необходимо
восстанавливать перед каждой операцией записи памяти. Это осуществляется
путем чтения содержимого памяти перед записью нового значения (точно так
же работает CGA, где старое значение считывается в регистр ЦП, модифици-
руется и записывается обратно в память). Нет необходимости использовать
считанную информацию; это просто способ, обеспечивающий обновление co-
держимого регистров-защелок.
B то время как регистры-защелки и АЛУ обеспечивают интерфейс между
памятью и ЦП, группа из четырех Сдвиговых регистров (или параллельно-
последовательных преобразователей) образует интерфейс между адаптером и
дисплеем. При выполнении обычных графических операций каждый из Сдвиго-
вых регистров получает байт из памяти дисплея, после чего выполняется
его побитовая пересылка в Атрибут-Контроллер. Атрибут-Контроллер исполь-
зует 4 бита (по одному из каждого параллельно-последовательного преоб-
разователя) для выбора цвета, формирования палитры и при работе c EGA
для вывода пикселя на экран. Ha VGA Атрибут-Контроллер передает 8-бито-
вое значение в ЦАП, устанавливающее напряжение для дисплея.
Большинство регистров EGA доступны только для записи (и не доступны
для чтения и ЦП). Все регистры, доступные не только для записи, но и для
чтения, описаны в следующих разделах.Регистры VGA доступны для чтения/
записи, за исключением регистра Атрибута Адреса, регистров Состояния
Входа и регистров защелок. Некоторые регистры VGA должны считываться и
записываться по различным адресам порта, что отмечено при описании ре-
гистров.
Во все биты, отмеченные как "Не используется", должно устанавли-
ваться значение 0. Фирма IBM рекомендует при использовании адаптера VGA
выполнять чтение из порта, только тех разрядов, которые будут модифици-
рованы, после чего осуществлять запись разряда обратно в порт. Эта опе-
рация гарантирует совместимость с будущим развитием адаптеров EGA/VGA.
Все приведенные выше примеры программирования регистров содержат
команду OUT (OUT DX,AL), операнды которой представлены в байтовой фор-
ме. Ниже эта команда использует операнды, представленные в формате
слов, т.е. OUT DX,AX, где регистр AL содержит индекс, а AH - значение.
Команда OUT, работающая с операндами в формате слова, выполняется быс-
трее, чем две байтовые команды OUT. Однако эта команда не работает при
некоторых конфигурациях аппаратуры. При использовании OUT целесообразно
подготовить модифицированную версию с байтовыми командами OUT. Для
этого хорошо подходят макроопределения (в программе SMOOTH.ASM для
этой цели используются макросы). Если имеющаяся аппаратура не поддер-
живает OUT в формате слова, примеры программ необходимо модифициро-
вать.
Необходимо отметить, что значение индекса регистра Адреса сохраня-
ется до его изменения (кроме индексов регистров Атрибута). Если тре-
буется неоднократное изменение одного и того же регистра, индекс может
быть установлен вне цикла. Следует иметь в виду, что изменение индек-
са может быть выполнено программами обработки BIOS и аппаратуры (при
использовании этой методики прерывания можно временно запретить).
ВНЕШНИЕ РЕГИСТРЫ
Внешние регистры позволяют реализовать на EGA и VGA некоторые сме-
шанные функции. На IBM EGA эти регистры не размещаются на кристалле СБИС
(Атрибут-Контроллера, КЭЛТ, Указателя Последовательности Адресов, Гра-
фического Контроллера). На VGA эти регистры называются Общими: на VGA
все регистры находятся в одной микросхеме. Внешние регистры считываются
и записываются непосредственно по порту их размещения. Они отличаются
от большинства регистров СБИС, которые адресуются косвенно через меха-
низм индексации.
=======================================================================
ПОРТ 3C2h: РЕГИСТР СМЕШАННОГО ВЫВОДА
(Miscellaneous Output Register)
ОПИСАНИЕ
Регистр обеспечивает работу нескольких смешанных функций.
ЗАМЕЧАНИЯ
Сброс аппаратуры устанавливает все биты в 0.
Регистр является доступным только для записи как для EGA, так и для
VGA, хотя при использовании VGA содержимое регистра может быть прочитано
через порт 3CCh.
Биты 2 и 3 (выбор синхронизации) могут быть использованы для выбо-
pa внешнего генератора для функций синхронизации EGA. Путем подключения
через соединитель более быстрого тактового генератора, определения его
в качестве исходного и установки значений регистров КЭЛТ могут быть по-
лучены режимы c более высоким разрешением. Однако адаптер может не под-
держивать более высокую тактовую частоту (некоторые микросхемы могут
быть выведены из строя), поэтому подобные эксперименты следует прово-
дить c большой осторожностью. Максимальный диапазон для VGA составляет
от 14.3 до 28.4 МГц (согласно спецификации фирмы IBM).
Установки, принятые в BIOS по умолчанию (шестнадцатиричные
значения):
Режим: 0 1 2 3 4 5 6 7 d e f 10
23 23 23 23 23 23 23 a6 23 23 a2 a7
Значения для усовершенствованного цветного дисплея (ECD):
Режим: 0 1 2 3
a7 a7 a7 a7
БИТЫ
0 3b/3d адрес ввода/вывода КЭЛТ
Бит определяет порт размещения регистров Состояния Входа 1
и КЭЛТ c целью сохранения совместимости монохромного и цвет-
ного адаптеров. Установка значения 0 определяет 3b? (монохром-
ный), установка 1 - 3d? (цветной)
1 Разрешение ОЗУ
Установка нулевого значения запрещает доступ ЦП к ОЗУ EGA. Ус-
тановка значения 1 (стандартный) означает, что ЦП разрешен дос-
туп к ОЗУ EGA
2-3 Регистр Выбора Генератора Импульсов
Используется для принудительного Сброса Синхронизации перед
изменением значения этого регистра. Посредством этих битов yc-
танавливается тактовая чистота в соответствии co следующей таб-
лицей:
00b 14 МГц (из шины)
25 МГц VGA
01b 16 МГц (из платы EGA)
28 МГц VGA
10b Внешний источник (из соединителя)
11b He используется
4 Запрещение Внутренних Видео Драйверов (только EGA)
Бит определяет источник сигнала для монитора. Как правило, уста-
навливается значение 0, и управление монитором осуществляет
EGA. B случае установки значения 1 управление монитором ocy-
ществляется по сигналам, поступающим из выходных сигналов co-
единителя. Поскольку соединитель позволяет получить сигнал че-
рез выходные выводы, можно создать устройство, комбинирующее
информацию, получаемую от адаптера и другого источника, a затем
осуществляющего управление монитором EGA. При работе c VGA этот
бит не используется
5 Бит Разделения Страниц для Нечетного/Четного Режима
Бит Выбора одной из двух страниц памяти по 64K (128K матрицы)
в нечетном/четном режиме EGA. Установка 0 означает выбор млад-
шей страницы, установка 1 - выбор старшей страницы
6 Полярность Обратного Хода по Стрелке
Сигнал обратного хода по стрелке положительный в случае уста-
новки значения 0 и отрицательный в случае установки значения
1. Монохромные, цветные и ECD-дисплеи используют положительный
сигнал. При работе c аналоговыми мониторами этот бит (и бит 7)
используется для определения частоты развертки
7 Полярность Обратного Хода по Кадру
Сигнал обратного хода по кадру положительный в случае установки
значения 0 и отрицательный в случае установки значения 1. Моно-
хромные мониторы используют отрицательный сигнал. Для стандарт-
ного цветного монитора требуется положительный сигнал. При pa-
боте c ECD и аналоговыми этот бит (и бит 6) используются для
определения частоты развертки
Биты 6 и 7 EGA VGA
00b 200 строк He используется
01b 350 строк 350 строк
10b He используется 400 строк
11b He используется 480 строк
=======================================================================
ПОРТ 3?Ah РЕГИСТР УПРАВЛЕНИЯ ПРИЗНАКОМ
(Feature Control Register)
ОПИСАНИЕ
Ha EGA биты регистра обеспечивают передачу сигналов соединителю
(линии FC0 и FC1). Таким образом устройство, подсоединяемое к соедини-
телю, может программно контролироваться; контролируемые функции опре-
деляются подсоединенным устройством.
Адрес порта - 3BAh (монохромный) или 3DAh (цветной)
ЗАМЕЧАНИЯ
VGA резервирует все 7 битов, при этом значение 3-го бита должно
быть равно 0.
Регистр является доступным только для записи как для EGA, так и
для VGA, хотя при использовании VGA содержимое регистра может быть про-
читано через порт 3CAh.
БИТЫ (только EGA)
0 Бит Управления Признаком 0 (FC0)
Бит передается ЦП на 21-й вход соединителя
1 Бит Управления Признаком 1 (FC1)
Бит передается ЦП на 20-й вход соединителя
2-3 Зарезервированы
6-6 He используются
БИТЫ (только VGA)
0-7 Зарезервированы (значение бита 3 должно быть 0)
=======================================================================
ПОРТ 3C2h: НУЛЕВОЙ РЕГИСТР ВХОДНОГО СОСТОЯНИЯ
(Input Status Register Zero)
ОПИСАНИЕ
Регистр позволяет ЦП читать различную информацию из EGA
ЗАМЕЧАНИЯ
Регистр является доступным только для чтения как в EGA, так и в
VGA.
При работе c EGA биты 5 и 6 получают сигналы от соединителя (линии
FEAT 0 и FEAT 1). Таким образом устройство, подсоединенное к соедините-
лю, может передавать информацию, содержание которой определяется под-
соединяемым устройством, в управляющую программу.
Биты 5 и 6 на VGA резервируются.
Некоторые совместимые c EGA ранние модели имеют обратный бит 7
(0 определяет вертикальное прерывание). Программы, рассчитанные на управ-
ление вертикальным прерыванием, должны определять установку путем запре-
щения прерывания обратного хода по кадру, очисткой бита состояния (см.
бит 4 регистра КЭЛТ Конец Обратного Хода по Кадру, порт 3?5h, индекс
11h), считыванием бита 7 для получения значения без обратного хода и
разрешением прерываний. Этот метод может быть использован только на EGA.
БИТЫ
0-3 He используются
4 Считывание Ключа
Бит возвращает установку одного из четырех ключей EGA. Если
установлено значение 1, ключ открыт, если 0 - закрыт. Номер
ключа, состояние которого будет прочитано, определяется путем
помещения значения "номер ключа - 1" биты 2 и 3 регистра
Смешанный Вывод (также порт 3c2h). Например, при передаче зна-
чения 9 (1001b) в регистр Смешанный Вывод устанавливается номер
ключа 3. BIOS использует этот бит для определения установок
EGA, которые затем записываются по адресу 40:88h. Доступ к
ключам следует выполнять через рассматриваемый регистр
5 Бит Кода Признака 0 (FEAT 0 - только для EGA)
Этот бит вводится в ЦП через 19-й вывод соединителя
6 Бит Кода Признака 1 (FEAT 1 - только для EGA)
Этот бит вводится в ЦП через 19-й вывод соединителя
7 Прерывание ЭЛТ
Значение бита составляет 1 в случае, когда имело место верти-
кальное прерывание (IRQ2), обусловленное обратным ходом луча
по кадру. Значение 1 сохраняется до установки бита в исходное
состояние. Таким образом, важно, чтобы программа обработки пре-
рываний очистила прерывание и восстановила (разрешила) преры-
вания через регистр КЭЛТ - Конец Обратного Хода по Кадру. Ta-
кая схема работы используется для подтверждения разрешения
прерывания от EGA и VGA, так как несколько устройств могут ис-
пользовать запрос на прерывание IRQ2 в режиме разделения. Бит
должен быть установлен в исходное состояние 0 программой обра-
ботки прерываний (см. бит 4 регистра КЭЛТ Конец Обратного Хода
по Кадру, порт 3?5h, индекс 11h).
[ Назад ]
[ Оглавление ]
[ Далее ]