Программирование EGA и VGA
----------------------------------------------------------------------
9. Р Е Г И С Т Р Ы
Г Р А Ф И Ч Е С К О Г О К О Н Т Р О Л Л Е Р А
----------------------------------------------------------------------
С помощью регистров Графического Контроллера осуществляется обра-
ботка потока данных между ЦП и памятью EGA. Они также используются
для передачи данных из памяти в виде битовых матриц в Атрибут-Конт-
роллер при разрешенном графическом режиме. Некоторые из регистров гра-
фического Контроллера предназначены для обеспечения режимов эмуляции
CGA. ОПИСАНИЕ функций Графического Контроллера сделает более ясным по-
нимание внутренних особенностей функционирования адаптера.
Для каждой битовой матрицы памяти имеется один 8-битовый регистр-
защелка. В графическом режиме данные не записываются (или не читаются)
в память; АЛУ. установленные на плате,объединяют данные из ЦП с содер-
жимым регистров-защелок. Существует 4 таких регистра-защелки (по одно-
му для каждой матрицы),которые хранят содержимое последнего прочитан-
ного адреса памяти адаптера. Затем комбинированные данные записываются
в память. Поскольку регистры-защелки содержат полные байты данных
(часто изменяется только один бит),для защиты от изменения немодифи-
цированных данных важно ,чтобы они содержали текущие данные. В регист-
ры-защелки должно загружаться текущее содержимое памяти до их модифи-
кации при передаче из графической памяти в регистр ЦП (например,коман-
дой MOV AL,ES:[BX],где ES:[BX] -ссылка на память EGA). Обычно факти-
ческое значение,считываемое ЦП, игнорируется, хотя назначением этих
данных можно управлять в режиме чтения.
Регистры управления графикой осуществляют управление функциями
комбинирования данных ЦП и регистров-защелок. Например, с данными мо-
гут быть выполнены логические операции И, ИЛИ, исключающее ИЛИ;бито-
вые матрицы могут "постоянно" включаться или выключаться; позиции би-
тов могут маскироваться как неизменяемые. Отметим появление здесь
функции маскирования битовой матрицы, которая является функцией ре-
гистра Указатель Последовательности.
=======================================================================
ПОРТ 3cah: РЕГИСТР ПОЛОЖЕНИЯ ГРАФИКИ 2 (Только EGA)
(Graphics 2 Position Register)
ОПИСАНИЕ
B EGA входят две микросхемы Графического Контроллера, каждая из ко-
торых управляет двумя матрицами (так, что общее число матриц равно 4).
Эти две микросхемы обозначаются Графика 1 и Графика 2. Регистр Положе-
ние Графики 2 выбирает, какие два бита шины данных ЦП определяют микро-
схему Графика 2, т.e. определяет, какие цветовые матрицы управляют cxe-
мой Графика 2 (следует заметить, что введен дополнительный бит для pea-
лизации этой функции, так как достаточно одного бита на 4-битовую мат-
рицу).
ЗАМЕЧАНИЯ
Микросхема всегда должна программироваться для положения 1.
Значение регистра содержит адрес чтения для регистра VGA Управле-
ние Признаком (см. порт 3?ah группы Внешних регистров).
Установки, принятые в BIOS по умолчанию (шестнадцатиричные значе-
ния):
Режим 0 1 2 3 4 5 6 7 d e f 10
01 01 01 01 01 01 01 01 01 01 01 01
БИТЫ
0-1 Номер положения
2-7 He используются
=======================================================================
ПОРТ 3cch: РЕГИСТР ПОЛОЖЕНИЕ ГРАФИКА 1 (Только EGA)
(Graphics 1 Position Register)
ОПИСАНИЕ
B EGA входят две микросхемы Графического Контроллера, каждая из ко-
торых управляет двумя матрицами (так, что общее число матриц равно 4).
Эти две микросхемы обозначаются Графика 1 и Графика 2. Регистр Положе-
ние Графики 1 выбирает, какие два бита шины данных ЦП определяют микро-
схему Графика 1, т.e. определяет, какие цветовые матрицы управляют cxe-
мой Графика 1 (следует заметить, что введен дополнительный бит для pea-
лизации этой функции, так как достаточно одного бита на 4-битовую мат-
рицу).
ЗАМЕЧАНИЯ
Микросхема всегда должна программироваться для положения 0.
Значение регистра содержит адрес чтения для регистра VGA Смешан-
ный Вывод (см. порт 3c2h группы Внешних регистров).
Установки, принятые в BIOS по умолчанию (шестнадцатиричные значе-
ния):
Режим 0 1 2 3 4 5 6 7 d e f 10
00 00 00 00 00 00 00 00 00 00 00 00
БИТЫ
0-1 Номер положения
2-7 He используются
=======================================================================
ПОРТ 3ceh: РЕГИСТР АДРЕС ГРАФИКИ 1 И 2
(Graphics 1 and 2 Address Register)
ОПИСАНИЕ
Регистр Адрес Графики 1 и 2 определяет регистр порта 3cfh. Номер
индекса выбранного регистра выдается в порт 3ceh (командой OUT).
Индекс Регистр
0 Установка/Сброс
1 Разрешение Установки/Сброса
2 Сравнение Цветов
3 Циклический Сдвиг Данных
4 Выбор Схемы Чтения
5 Регистр Режим
6 Смешанный
7 Цвет Безразличен
8 Битовая Маска
=======================================================================
ПОРТ 3cfh: РЕГИСТР УСТАНОВКА/СБРОС (Индекс 0)
(Set/Reset Register)
ОПИСАНИЕ
Регистр Установка/Сброс может быть использован для выбора битовых
матриц в режиме "постоянного" сброса или установки. При определении
битовой матрицы как "установленной" бит маскирования устанавливается
в 1 на все время записи в память. При определении битовой матрицы в
режиме сброса в бите маскирования устанавливается 0.
Регистр может быть использован для записи абсолютного значения
цвета в память (незатрагиваемого логическими функциями) для ограниче-
ния количества разрешенных цветов путем поддержания в конкретной бито-
вой матрице (или матрицах) состояния "включено" или "выключено" или для
сброса матриц, запрещенных в регистре Маскирования битов.
ЗАМЕЧАНИЯ
Регистр влияет только в режиме записи 0 (см. описание регистра
Режим, индекс 5).
Следует разрешить использование регистра Установка/Сброс через pe-
гистр Разрешение Установки/Сброса (индекс 1). B противном случае все би-
товые матрицы будут устанавливаться или сбрасываться в процессе записи в
режиме 0. B VGA применяется для записи режим 3, в котором регистр Уста-
новка/Сброс используется напрямую (нет необходимости задействовать pe-
гистр Разрешение Установки/Сброса, см. регистр Режим).
Установки, принятые в BIOS по умолчанию (шестнадцатиричные значе-
ния):
Режим 0 1 2 3 4 5 6 7 d e f 10
00 00 00 00 00 00 00 00 00 00 00 00
БИТЫ
0 Установка/Сброс, битовая матрица 0
1 Установка/Сброс, битовая матрица 1
2 Установка/Сброс, битовая матрица 2
3 Установка/Сброс, битовая матрица 3
4-7 He используются
=======================================================================
ПОРТ 3cfh: РЕГИСТР РАЗРЕШЕНИЯ УСТАНОВКИ/СБРОСА (Индекс 1)
(Enable Set/Reset Register)
ОПИСАНИЕ
Регистр Разрешение Установки/Сброса может быть использован для "пос-
тоянного" разрешения или запрета битовой матрицы памяти, выбираемой че-
рез регистр Установка/Сброс.
ЗАМЕЧАНИЯ
Регистр влияет только в режиме записи 0 (см. ниже описание регистра
Режим).
До разрешения Установки/Сброса через этот регистр следует устано-
вить функцию сброса или установки в регистре Установка/Сброс.
Установки, принятые в BIOS по умолчанию (шестнадцатиричные значе-
ния):
Режим 0 1 2 3 4 5 6 7 d e f 10
00 00 00 00 00 00 00 00 00 00 00 00
БИТЫ
0 Разрешение Установки/Сброса, битовая матрица 0
1 Разрешение Установки/Сброса, битовая матрица 1
2 Разрешение Установки/Сброса, битовая матрица 2
3 Разрешение Установки/Сброса, битовая матрица 3
4-7 He используются
Пример программирования
-------------------------------------------------------------------
Ниже приведены две короткие программы, написанные для DOS (BASICA)
3.2. Программа, написанная на ассемблере, имеет имя SET_RST, a основная
программа для запуска написана на языке BASIC.
Программа SЕТ_RSТ обеспечивает такую установку регистров, что в би-
товую матрицу 0 всегда записывается 0. Это особенно заметно при печати
цифр - наличие только 8 цветов. Однако линии при этом могут выводиться
шестнадцатью цветами, a окружности - белым цветом, несмотря на отсутст-
вие белого среди выводимых номеров цветов.
Как было отмечено выше, регистр Установка/Сброс имеет значение
только при записи в режиме 0. Этот режим используется в процедурах вы-
вода символов и поэтому при их выводе задействуется 8 цветов. B то же
время в процедурах вывода линий и окружностей применяется режим вывода
2. Режим записи 0 обычно используется для записи 8-битовых комбинаций
(комбинация битов символа), в то время как peжим записи 2 применяется
в графических процедурах. Именно такое внутреннее использование режимов
записи задействовано в языке BASIC.
10 CLS:KEY OFF
20 SCREEN 9
30 SHELL "set_rst"
40 FOR I%=0 TO 15
50 FOR J%=0 TO 20
60 LINE(0+I%*20+J%,40)-(40+I%*20+J%,200),I%
70 NEXT J%
80 NEXT I%
90 CIRCLE(320,170)150
100 LOCATE 20,1
110 FOR I%=1 TO 15
120 COLOR I%:PRINT I%;
130 NEXT I%
cseg segment 'public'
assume cs:cseg
main proc far
start:
push DS
sub AX,AX
push AX
mov DX,3ceh ; адрес Графики 1 и 2
mov AL,0 ; индекс регистра Установка/Сброс
out DX,AL
inc DX ; адрес регистра Установка/Сброс
mov AL,0000b ; сброс всех матриц
out DX,AL
dec DX ; адрес Графика 1 и 2
mov AL,1 ; индекс регистра Разрешения Установки
; Сброса
out DX,AL
inc DX ; адрес регистра Разрешения Установки
; Сброса
mov AL,0001b ; разрешение только матрицы 0
out DX,AL ; возможен только сброс матрицы 1
ret
main endp
cseg ends
end start
-------------------------------------------------------------------
========================================================================
ПОРТ 3cfh: РЕГИСТР СРАВНЕНИЯ ЦВЕТОВ (Индекс 2)
(Color Compare Register)
ОПИСАНИЕ
Регистр Сравнения Цветов, как это следует из его названия, осущест-
вляет сравнение цвета, установленного в регистре, c содержимым памяти
адаптера. Сначала в регистр Сравнения Цветов записывается значение соот-
ветствующего цвета, a затем читается содержимое памяти. Значение читае-
мого бита будет равно 1, если цвет совпадает c указанным в регистре
Сравнения Цветов, и 0 - в противном случае (таким образом, в процессе
чтения ЦП по восьми пикселям может быть проведено сравнение цветов).
Регистр применяется только в режиме чтения 1 (см. регистр Режим, ин-
декс 5). Фактическое значение любой битовой матрицы может быть игнори-
ровано (подразумевается совпадение) при использовании регистра Цвет
(индекс 7).
Установки, принятые в BIOS по умолчанию (шестнадцатиричные значе-
ния):
Режим 0 1 2 3 4 5 6 7 d e f 10
00 00 00 00 00 00 00 00 00 00 00 00
БИТЫ
0-3 Номер сравниваемого цвета
4-8 He используется
[ Назад ]
[ Оглавление ]
[ Далее ]