Программирование видеоадаптеров CGA, EGA и VGA© Александр Фролов, Григорий ФроловТом 3, М.: Диалог-МИФИ, 1992, 287 стр. 7.4. Регистры синхронизатораСинхронизатор управляет всеми временными
параметрами видеоадаптера, а также разрешением и
запрещением доступа к отдельным цветовым слоям.
Синхронизатор имеет пять регистров, они
перечислены в таблице 8.12. У видеоадаптера EGA все
пять регистров доступны только для записи, а у VGA
и Super VGA также и для чтения.
Таблица 8.12 Регистры синхронизатора. Доступ к регистрам осуществляется через индексный порт с адресом 3C4h и через порт данных с адресом 3C5h. Как и в случае описания регистров контроллера ЭЛТ мы будем подробно рассказывать только о безопасных и наиболее полезных регистрах синхронизатора. Регистр сброса синхронизатора (Reset Register - RR) (индекс 0)Если регистр переведен в состояние сброса, то все процессы видеоадаптера приостанавливаются. В результате могут быть разрушены данные в видеопамяти.
Для нормальной работы видеоадаптера биты D0 и D1 должны быть равны единице. Перед доступом к регистру режима синхронизации синхронизатор должен быть переведен в состояние синхронного сброса (бит D1 равен 0). Регистр режима синхронизации (Clock Mode Register - CMR) (индекс 1)Регистр управляет временными циклами синхронизатора. При изменении его содержимого необходимо соблюдать осторожность. Изменяя отдельные биты регистра, сохраняйте значения остальных битов. Перед модификацией регистра CMR надо сбросить бит D1 в регистре сброса синхронизатора, переведя таким образом синхронизатор в режим сброса и остановки.
Ниже приведены значения регистра CMR,
устанавливаемые BIOS при установке режима работы
адаптера:
Регистр разрешения записи цветового слоя
|
Режим | 0,1,2,3,4,5,7 | 6 | D,E,F,10 |
Содержимое регистра | 03 | 01 | 0Fh |
Регистр выбора знакогенератора (Character Generator Select Register - CGSR) (индекс 3)
Видеоадаптер EGA позволяет загрузить в память четыре, а VGA - восемь таблиц знакогенератора, каждая из которых опрделяет 256 символов.
Одновременно могут использоваться символы одной или двух таблиц знакогенератора. Это позволяет отображать до 512 различных символов.
Если разрешено одновременное использование двух различных таблиц знакогенератора, то бит D3 байта атрибутов определяет какая таблица будет использоваться при отображении символа с этим атрибутом.
Регистр выбора знакогенератора определяет два набора символов, расположенных во втором цветовом слое, символы которых могут одновременно отображаться на экране. Данный регистр используется только в текстовых режимах.
- D1-D0 Выбор таблицы знакогенератора, используемой адаптерами EGA/VGA при выводе символа на экран, когда бит D3 байта атрибутов символа сброшен в ноль.
- D3-D2 Выбор таблицы знакогенератора, используемой адаптерами EGA/VGA при выводе символа на экран, когда бит D3 байта атрибутов символа установлен в единицу.
- D4 Выбор таблицы знакогенератора, используемой адаптером VGA при выводе символа на экран, когда бит D3 байта атрибутов символа сброшен в ноль.
- D5 Выбор таблицы знакогенератора, используемой адаптером VGA при выводе символа на экран, когда бит D3 байта атрибутов символа установлен в единицу.
- D7-D6 Не используются.
Для выбора активных (используемых в данный
момент для отображения символов) таблиц
знакогенератора надо установить биты D0-D5 в
соответствии со следующей таблицей:
D5 D3 D2 | Номер таблицы знакогенератора, используемой если бит D3 байта атрибутов равен 1 |
D4 D1 D0 | Номер таблицы знакогенератора, используемой если бит D3 байта атрибутов равен 0 |
0 0 0 | первая таблица знакогенератора |
0 0 1 | вторая таблица знакогенератора |
0 1 0 | третья таблица знакогенератора |
0 1 1 | четвертая таблица знакогенератора |
1 0 0 | пятая таблица знакогенератора (VGA) |
1 0 1 | шестая таблица знакогенератора (VGA) |
1 1 0 | седьмая таблица знакогенератора (VGA) |
1 1 1 | восьмая таблица знакогенератора (VGA) |
Таблица 8.13 Выбор таблиц знакогенератора.
Если нужна только одна активная таблица знакогенератора, то значеня битов D5 D3 D2 и битов D4 D1 D0 должны совпадать.
Для установки номеров активных таблиц знакогенератора рекомендуется использовать соответствующую функцию BIOS.
Регистр определения структуры памяти (Memory Mode Register - MMR) (индекс 4)
Регистр инициализируется BIOS при выполнении операции выбора режима работы видеоадаптера и определяет структуру видеопамяти в этом режиме.
- D0 Для EGA бит устанавливается в единицу, при использовании в текстовом режиме функции выбора знакогенератора. Для VGA этот бит обычно сброшен в ноль.
- D1 Для EGA данный бит равен единице, если объем видеопамяти больше 64К байт.
- D2 Если D2 содержит ноль, то доступ по четным адресам происходит к нулевому цветовому слою, а по нечетным - к первому.
- D7-D3 Не используются.
При выборе режима работы адаптера, BIOS загружает
в регистр CPWE следующие значения:
Режим | 0,1,2,3,7 | 4,5 | 6,0Dh,0Eh | 0Fh,10h |
Содержимое регистра | 03 | 02 | 06 | 00 |