Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Программирование видеоадаптеров CGA, EGA и VGA

© Александр Фролов, Григорий Фролов
Том 3, М.: Диалог-МИФИ, 1992, 287 стр.

[Назад] [Содеожание] [Дальше]

7.4. Регистры синхронизатора

Синхронизатор управляет всеми временными параметрами видеоадаптера, а также разрешением и запрещением доступа к отдельным цветовым слоям. Синхронизатор имеет пять регистров, они перечислены в таблице 8.12. У видеоадаптера EGA все пять регистров доступны только для записи, а у VGA и Super VGA также и для чтения.

Индекс регистра Регистр синхронизатора
0 регистр сброса синхронизатора (Reset Register - RR)
1 регистр режима синхронизации (Clock Mode Register - CMR)
2 регистр разрешения записи цветового слоя (Color Plane Write Enable Register - CPWER)
3 регистр выбора знакогенератора (Character Generator Select Register - CGSR)
4 регистр определения структуры памяти (Memory Mode Register - MMR)

Таблица 8.12 Регистры синхронизатора.

Доступ к регистрам осуществляется через индексный порт с адресом 3C4h и через порт данных с адресом 3C5h.

Как и в случае описания регистров контроллера ЭЛТ мы будем подробно рассказывать только о безопасных и наиболее полезных регистрах синхронизатора.

Регистр сброса синхронизатора (Reset Register - RR) (индекс 0)

Если регистр переведен в состояние сброса, то все процессы видеоадаптера приостанавливаются. В результате могут быть разрушены данные в видеопамяти.

  • D0 Бит асинхронного сброса. После записи в этот бит нуля происходит немедленный сброс и остановка синхронизатора. В результате могут быть потеряны видеоданные.
  • D1 Бит синхронного сброса. Нулевое значение сбрасывает и останавливает синхронизатор в конце исполняемого цикла.
  • D7-D2 Не используются.

Для нормальной работы видеоадаптера биты D0 и D1 должны быть равны единице. Перед доступом к регистру режима синхронизации синхронизатор должен быть переведен в состояние синхронного сброса (бит D1 равен 0).

Регистр режима синхронизации (Clock Mode Register - CMR) (индекс 1)

Регистр управляет временными циклами синхронизатора. При изменении его содержимого необходимо соблюдать осторожность. Изменяя отдельные биты регистра, сохраняйте значения остальных битов.

Перед модификацией регистра CMR надо сбросить бит D1 в регистре сброса синхронизатора, переведя таким образом синхронизатор в режим сброса и остановки.

  • D0 Бит задает ширину символов в текстовых монохромных режимах с разрешением 720 пикселов по горизонтали. Если бит равен нулю, то ширина матрицы символов равна 9 пикселов, если единице - 8 пикселов.
  • D1 Бит используется EGA для определения числа циклов, используемых процессором, для доступа к видеопамяти . При D1
    равном единице, процессор может получить три из каждых пяти циклов, а при D1 равном нулю - только один из пяти циклов. Остальные циклы используются адаптером для обновления экрана.
  • D4-D2 Не используются.
  • D5 Для VGA: если этот бит равен единице, то экран гаснет и процессор получает монополию на доступ к видеопамяти. Это несколько ускоряет процесс обмена процессора с видеопамятью.
  • D7-D6 Не используются.

Ниже приведены значения регистра CMR, устанавливаемые BIOS при установке режима работы адаптера:

Режим 00,01,04,05,0Dh 02,03,06,0Eh 0Fh,10h
Содержимое регистра 0Bh 01 05

Регистр разрешения записи цветового слоя
(Color Plane Write Enable - CPWE) (индекс 2)

При помощи данного регистра можно запретить запись процессором данных в любые цветовые слои видеопамяти. На рисунке 8.9 показан механизм запрещения записи данных в отдельные слои видеопамяти. Рассмотрим процесс записи данных процессором в видеопамять:

  • ПЕРВЫЙ ШАГ. Процессор передает видеоадаптеру данные для записи в видеопамять. Они проходят через графическиий контроллер и попадают в синхронизатор. Графический контроллер производит над записываемыми в видеопамять данными операции, определяемые состоянием его регистров (смотри главу "Исполнение видеоадаптером операции записи" из раздела "Графический контроллер").
  • ВТОРОЙ ШАГ. Синхронизатор записывает поступившие ему данные в видеопамять в соответствии с содержимым регистра разрешения записи цветового слоя. Регистр разрешения записи цветового слоя содержит четыре бита, управляющие записью в цветовые слои видеопамяти. Если бит этого регистра, управляющий цветовым слоем равен нулю, то данный цветовой слой не изменяется. Если бит регистра равен единице, то в данный слой видеопамяти записываются значения, поступившие от графического контроллера.

Рисунок 8.9 Разрешение записи в цветовые слои.

Биты регистра разрешения записи цветового слоя имеют следующие значения:

  • D0 Если бит равен единице, то можно записывать данные в нулевой цветовой слой.
  • D1 Если бит равен единице, то можно записывать данные в первый цветовой слой.
  • D2 Если бит равен единице, то можно записывать данные в второй цветовой слой.
  • D3 Если бит равен единице, то можно записывать данные в третий цветовой слой.
  • D7-D4 Не используются.

При установке режима работы адаптера BIOS загружает в регистр CPWE следующие значения:

Режим 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
[Назад] [Содеожание] [Дальше]