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

       

Регистр циклического сдвига и выбора функции (Data Rotate & Function Select - DRFS) (индекс3)


Регистр DRFS выполняет две различные функции, отраженные в его названии:

  • Циклический сдвиг данных, записываемых процессором в видеопамятять.
  • Выполнение над записываемыми в видеопамять данными и содержимым регистров-защелок некоторых логических операций.
  • D2-D0 Счетчик сдвига.
  • D4-D3 Биты выбора логической функции.
  • D7-D5 Не используются.
  • После выполнения BIOS установки режима работы видеоадаптера биты регистра DRFS содержат нулевые значения.

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



    D2 D1 D0 Данные циклически сдвигаются вправо на следующее количество битов
    0 0 0 ноль, сдвиг не происходит
    0 0 1 один бит
    0 1 0 два бита
    0 1 1 три бита
    1 0 0 четыре бита
    1 0 1 пять битов
    1 1 0 шесть битов
    1 1 1 семь битов

    Таблица 8.15 Циклический сдвиг.

    Теперь рассмотрим возможности графического контроллера по выполнению логических операций над записываемыми в видеопамять данными.

    Во время выполнения процессором операции чтения из видеопамяти одновременно происходит запись данных из всех четырех цветовых слоев (по считываемому адресу) в регистры-защелки. Каждому цветовому слою видеопамяти соответствует один 8-битовый регистр-защелка. Когда процессор начнет записывать в видеопамять (возможно уже по другому адресу) данные, можно комбинировать их с данными из регистров-защелок. Вид выполняемой логической операции будет зависеть от содержимого битов выбора логической функции (таблица 8.16):

    D4  D3 Выполняемая логическая операция
    0 0 запись немодифицированных данных
    0 1 И
    1 0 ИЛИ
    1 1 ИСКЛЮЧАЮЩЕЕ ИЛИ

    Таблица 8.16 Возможные логические операции.

    Следует отметить, что операция циклического сдвига выполняется до выполнения логических функций.

    Регистр DRFS можно использовать для быстрого копирования областей видеопамяти с возможной их модификацией.

    Рисунок 8.13 иллюстрирует выполнение логической операции ИЛИ. Регистр циклического сдвига и выбора функции содержит число 00010000b. После операции чтения данные из всех четырех слоев записываются в регистрах-защелках. Затем выполняется операция записи. При этом данные процессора в соответствии с состоянием регистра циклического сдвига и выбора функции складываются по логике ИЛИ со значением регистров-защелок и помещаются в видеопамять.

    Рисунок 8.13 Логические операции и операция циклического сдвига.

    Заметим, что логические операции можно производить только в нулевом и втором режиме записи.



    Содержание раздела