Программирование видеоадаптеров.© Александр Фролов, Григорий ФроловТом 21, М.: Диалог-МИФИ, 1993. Регистры синхронизатораСинхронизатор управляет всеми временными параметрами видеоадаптера, а также разрешением и запрещением доступа к отдельным цветовым слоям видеопамяти. Синхронизатор содержит пять регистров. Их названия перечислены в таблице 4.12. У видеоадаптера EGA все пять регистров доступны только для записи, а у видеоадаптеров VGA и SVGA также и для чтения.
Доступ к регистрам осуществляется через индексный порт с адресом 3C4h и через порт данных с адресом 3C5h. Регистр сброса синхронизатора (Reset Register - RR) (индекс 0)Если регистр переведен в состояние сброса, то все процессы видеоадаптера приостанавливаются. В результате могут быть разрушены данные в видеопамяти. D0 Бит асинхронного сброса. После записи в этот бит нуля происходит немедленный сброс и остановка синхронизатора. В результате информация из видеопамяти может быть потеряна. D1 Бит синхронного сброса. Нулевое значение сбрасывает и останавливает синхронизатор в конце исполняемого цикла. D7-D2 Не используются. Для нормальной работы видеоадаптера биты D0 и D1 должны быть равны единице. Перед доступом к регистру режима синхронизации синхронизатор должен быть переведен в состояние синхронного сброса (бит D1 равен 0). Регистр режима синхронизации (Clock Mode Register - CMR) (индекс 1)Регистр управляет временными циклами синхронизатора. При изменении его содержимого необходимо соблюдать осторожность. Меняя отдельные биты регистра, оставляйте значения остальных битов без изменения. Перед модификацией регистра CMR надо сбросить бит D1 в регистре сброса синхронизатора, переведя, таким образом, синхронизатор в режим синхронного сброса и остановки. D0 Бит определяет ширину символов в текстовых монохромных режимах с разрешением 720 пикселов по горизонтали. Если бит D0 равен нулю, то ширина матрицы символов составляет 9 пикселов, если единице - 8 пикселов. D1 Бит используется видеоадаптером EGA для определения числа циклов, отводимых центральному процессору, для доступа к видеопамяти. При D1 равном единице, процессор может получить три из каждых пяти циклов, а при D1 равном нулю - только один из пяти циклов. Остальные циклы используются адаптером для регенерации видеопамяти. D4-D2 Не используются. D5 Используется только видеоадаптерами VGA и SVGA. Если бит D5 равен единице, то экран монитора гаснет и центральный процессор получает монополию на доступ к видеопамяти. Это несколько ускоряет процесс обмена процессора с видеопамятью. D7-D6 Не используются. Ниже приведены значения регистра 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 и SVGA - восемь таблиц знакогенератора, каждая из которых определяет 256 символов. Одновременно могут использоваться символы одной или двух таблиц знакогенератора. Это позволяет одновременно отображать на экране монитора до 512 различных символов.
Если разрешено одновременное использование двух различных таблиц знакогенератора, тогда бит D3 байта атрибутов указывает, какая таблица будет использоваться при отображении символа с этим атрибутом.
Регистр выбора знакогенератора определяет два активных набора символов, расположенных во втором цветовом слое, символы которых могут одновременно отображаться на экране. Данный регистр используется только в текстовых режимах.
D1-D0 Выбор первой активной таблицы знакогенератора. Эта таблица используется для вывода символа на экран, если бит D3 байта атрибутов символа содержит ноль.
D3-D2 Выбор второй активной таблицы знакогенератора. Вторая таблица используется для вывода символа на экран, если бит D3 байта атрибутов символа содержит единицу.
D4 Дополнительный бит, доступный на видеоадаптерах VGA и SVGA. Используется для выбора первой таблицы знакогенератора.
D5 Дополнительный бит, доступный на видеоадаптерах VGA и SVGA. Используется для выбора второй таблицы знакогенератора.
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 и SVGA) |
1 0 1 |
Шестая таблица знакогенератора (видеоадаптеры VGA и SVGA) |
1 1 0 |
Седьмая таблица знакогенератора (видеоадаптеры VGA и SVGA) |
1 1 1 |
Восьмая таблица знакогенератора (видеоадаптеры VGA и SVGA) |
Если нужна только одна активная таблица знакогенератора, то значения битов D5 D3 D2 и битов D4 D1 D0 должны совпадать.
. Для выбора активных таблиц знакогенератора рекомендуется использовать соответствующую функцию BIOS.
Регистр определения структуры памяти (Memory Mode Register - MMR) (индекс 4)
Регистр инициализируется BIOS во время выбора режима работы видеоадаптера и определяет структуру видеопамяти в этом режиме.
D0 Для видеоадаптера EGA бит D0 содержит единицу, при использовании в текстовом режиме функции выбора знакогенератора. Для адаптера VGA этот бит обычно сброшен в ноль.
D1 Для видеоадаптера EGA бит D1 равен единице, если объем видеопамяти больше 64 Кбайт.
D2 Если бит D2 содержит ноль, то доступ по четным адресам происходит к нулевому цветовому слою, а по нечетным - к первому.
D7-D3 Не используются.
При выборе режима работы адаптера, BIOS загружает в регистр CPWE следующие значения:
Режим |
0,1,2,3,7 |
4,5 |
6,0Dh,0Eh |
0Fh,10h |
Содержимое регистра |
03 |
02 |
06 |
00 |