Для EGA-карты все эти регистры доступны только для чтения; VGA-адаптер поддерживает и запись, и чтение.
Проиллюстрируем это на процессе установки регистра битовой маски (Bit Mask) (установка остальных регистров проводится аналогично).
void setBitMask (char mask)
{
writeReg (EGAJ3RAPHICS, EGA_BITJv1ASK, mask);
}
4.7.2. Sequencer (порты 3C4-3C5)
Из регистров этой группы мы рассмотрим только регистр маски плоскости (Map Mask) и номер 2.
Процедура setMapMask устанавливает значение регистра маски плоскости. Рассмотрим, как проходит работа с видеопамятью.
При операции чтения байта из видеопамяти читаются сразу 4 байга - по одному из каждой плоскости. При этом прочитанные значения записываются в специальные регистры - "защелки" (latch-регистры), для прямого доступа недоступные. Байт, прочитанный процессором, является комбинацией значений latch-регистров.
При операции записи посланный процессором байт накладывается на значения btch-регистров по правилам, определяемым значениями других регистров, а результирующие 4 байта записываются ь соответствующие плоскости.
Так как при записи используются значения latch-регистров, то часто необходимо, чтобы перед записью в них находились исходные значения тех байтов, котоКомпьютерная графика. Полигональные модели рые затем изменяются. Это часто приводит к необходимости осуществлять чтение байта по адресу перед записью по этому адресу нового значения.
Правила, определяющие наложение при записи посланных процессором данных на значения latch-регистров, определяются установленным режимом записи, и, соответственно, режим чтения задает способ, которым определяется значение, прочитанное процессором.
Видеокарта EGA поддерживает два режима чтения и три режима записи; у карты VGA есть еще один дополнительный режим записи.
Установка режимов чтения и записи осуществляется записью соответствующих значений в регистр Mode. Бит 3 отвечает за режим чтения, биты 0 и 1 - за режим записи.
Функция setRWMode служит для установки режимов чтения и записи.
4.8. Режимы чтения