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

Запчасти Симферополь. шаровая опора меган .Лучшая цена

7. Регистры видеоадаптеров EGA и VGA


7.1. Краткий обзор

7.2. Внешние регистры

7.3. Регистры контроллера ЭЛТ

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

7.5. Регистры графического контроллера

7.6. Регистры контроллера атрибутов

7.7. Регистры цифро-аналогового преобразователя VGA

7.8. Нестандартные режимы видеоадаптера VGA

В этой главе мы опишем все основные регистры видеоадаптеров EGA и VGA, которые могут быть полезны при написании программ. Необходимо указать, что хотя программирование видеоадаптеров на уровне регистров позволяет увеличить скорость работы программ и решить некоторые задачи, которые нельзя решить при помоши функций BIOS, это может вызвать ряд проблем при переносе ваших программ на другие машины. Дело в том, что не все адаптеры совместимы на уровне регистров. Например, оригинальный видеоадаптер CGA создан на основе микросхемы Motorola 6845, а видеоадаптеры EGA и VGA используют более совершенный аналог этой микросхемы. Хотя EGA и VGA имеют регистры, соответствующие регистрам CGA, некоторые из них располагаются по другим адресам и могут выполнять какие-либо дополнительные функции. Кроме того, в каждом новом видеоадаптере расширяется набор используемых регистров.

Существуют модели видеоадаптеров EGA, VGA, Super VGA поддерживающие режим совместимости, когда они эмулируют адаптеры более низкого уровня (например MDA, Hercules, CGA). При этом эмуляция обычно происходит на уровне регистров, что гарантирует полную их совместимость. Режимы совместимости, если они поддерживаются, описаны в руководстве этого видеоадаптера.

На практике, для управления видеоадаптерами, рекомендуется преимущественно использовать функции BIOS. Это избавит вас от неприятных минут, когда ваша работающая программа, при переносе на другую машину перестанет правильно выполняться.

7.1. Краткий обзор
Видеоадаптеры EGA и VGA содержат большое количество регистров. EGA имеет около шестидесяти регистров, а VGA и Super VGA еще больше. Большая часть регистров EGA доступна только для записи, что созд...
7.2. Внешние регистры
Эти регистры называются внешними, так как в видеоадаптере EGA они не принадлежат центральной микросхеме, содержащей контроллер атрибутов, контроллер ЭЛТ, графический контроллер и преобразователь п...
Регистр определения различных режимов работы (Miscellaneous Output Register - MOR)
Регистр определения различных режимов работы(Miscellaneous Output Register - MOR)В видеоадаптере EGA данный регистр доступен по адресу 3C2h только для записи. Видеоадаптер VGA позволяет также счит...
Регистр управления дополнительным устройством (Feature Control Register - FCR)
Регистр управления дополнительным устройством(Feature Control Register - FCR) Для видеоадаптера EGA биты D1 и D0 данного регистра передают сигналы на разъем дополнительного устройства, соответстве...
Регистр состояния 0 (Input Status Register 0 - ISR0)
Регистр состояния 0(Input Status Register 0 - ISR0)Данный регистр, имеющий адрес 3C2h, доступен только для чтения. Регистр позволяет получить различную информацию от видеоадаптера EGA. Формат реги...
Регистр состояния 1 (Input Status Register 1 - ISR0)
Регистр состояния 1(Input Status Register 1 - ISR0)Регистр позволяет получить различную информацию о состоянии видеоадаптера. Для видеоадаптера CGA Содержимое регистраможно считать через порт, име...
Регистр разрешения работы системы VGA (VGA Enable Register - VGA_ER)
Регистр разрешения работы системы VGA(VGA Enable Register - VGA_ER)Данный регистр имеет адрес 3С3h. Регистр используется только для VGA. Биты D1-D7 зарезервированны, а бит D0 управляет работой VGA...
Регистр сброса триггера-защелки светового пера (Light Pen Latch Reset Register - LPLRR)
Регистр сброса триггера-защелки светового пера (Light Pen Latch Reset Register - LPLRR)Доступ к регистру производится через порт 3DBh для цветного режима и через 3BBh для монохромного. Регистр исп...
Регистр установки триггера-защелки светового пера (Light Pen Latch Set Register - LPLRR)
Регистр установки триггера-защелки светового пера (Light Pen Latch Set Register - LPLRR)Доступ к регистру производится через порт 3DCh для цветного режима и через 3BCh для монохромного. Регистр ис...
7.3. Регистры контроллера ЭЛТ
Регистры контроллера ЭЛТ управляют сигналами синхронизации, необходимыми для формирования растра, определяют формат данных на экране, форму курсора, а также для видеоадаптеров CGA и EGA управляют...
Общая длина линии горизонтальной развертки (Horizontal Total Register - HTR) (индекс0)
Общая длина линии горизонтальной развертки (Horizontal Total Register - HTR) (индекс 0)Этот регистр относится к группе регистров контроллера ЭЛТ, которые управляют генерацией синхросигналов д...
Длина отображаемой части горизонтальной
Длина отображаемой части горизонтальной развертки (Horizontal Display Enable End Register - HDER) (индекс 1)Регистр задает длину отображаемого участка горизонтальной развертки. Величина, запи...
Начало импульса гашения луча горизонтальной
Начало импульса гашения луча горизонтальной развертки (Start Horizontal Blank Register - SHBR) (индекс 2)Регистр используется видеоадаптерами EGA и VGA для определения начала импульса гашения...
Конец импульса гашения луча горизонтальной
Конец импульса гашения луча горизонтальной развертки (End Horizontal Blank Register - EHBR) (индекс 3)D4-D0 Конец импульса гашения луча горизонтальной развертки. Гашение луча горизонтальной р...
Начало импульса горизонтального
Начало импульса горизонтального обратного хода луча (Start Horizontal Retrace Register - SHRR) (индекс 4)Для EGA и VGA регистр задает момент начала импульса горизонтального обратного хода луч...
Конец импульса горизонтального
Конец импульса горизонтального обратного хода луча (End Horizontal Retrace Register - EHRR) (индекс 5)D4-D0 Конец импульса горизонтального обратного хода луча. Когда биты D4-D0 равны счетчику...
Число горизонтальных линий растра (VTR) (индекс6)
Число горизонтальных линий растра (VTR) (индекс 6)Регистр определяет общее число линий горизонтальной развертки в кадре вертикальной развертки, включая гашение вертикального хода луча и обрат...
Дополнительный регистр (OVR) (индекс7)
Дополнительный регистр (OVR) (индекс 7)Многие регистры контроллера ЭЛТ, видеоадаптера EGA, имеют по девять, а для VGA и по десять битов. Дополнительный регистр содержит биты, которые не помещ...
Предварительная установка горизонтальной развертки (Preset Row Scan Register - PRSR) (индекс8)
Предварительная установка горизонтальной развертки(Preset Row Scan Register - PRSR) (индекс 8)Регистр позволяет производить плавную вертикальную прокрутку содержимого экрана дисплея в текстов...
Плавная прокрутка экрана.
Рисунок 8.1 Плавная прокрутка экрана. После установки режима работы видеоадаптера данный регистр содержит нулевое значение....
Высота сиволов текста (Max Scan Line Register - MSLR) (индекс9)
Высота сиволов текста(Max Scan Line Register - MSLR) (индекс 9)Этот регистр определяет количество линий сканирования на один символ или, другими словами, высоту символов в пикселах. Регистр и...
Изменение высоты символов текста.
Рисунок 8.2 Изменение высоты символов текста....
Изменение высоты символов текста. Начальная линия курсора (Cursor Start Register - CSR) (индекс0Ah)
Рисунок 8.3 Изменение высоты символов текста....
Начальная линия курсора (Cursor Start Register - CSR) (индекс0Ah)
Этот регистр является доступным как для чтения, так и для записи. Регистр задает линию сканирования символа, в которой начинается курсор. Вместе с регистром конечной линии курсора (CER) он определ...
Конечная линия курсора (Cursor End Register - CER) (индекс0Bh)
Конечная линия курсора(Cursor End Register - CER) (индекс 0Bh)Этот регистр, также как и регистр CSR, является доступным для чтения и для записи. Регистр задает последнюю линию сканирования си...
Изменение положения курсора.
Рисунок 8.4 Изменение положения курсора. Следующая программа позволяет прочитать значение регистров начальной и конечной линии курсора: #include <stdio.h> #include "sysp.h" #includ...
Регистры начального адреса
Регистры начального адресаЭто группа из двух регистров: регистр старшего байта начального адреса (Start Address Register - SAR, high byte) (индекс0Ch) и регистр младшего байта начального адреса (S...
Процесс панорамирования экрана.
Рисунок 8.5 Процесс панорамирования экрана. Регистры начального адреса доступны для чтения и для записи. При установке режима работы видеоадаптера регистры обнуляются....
Регистры, определяющие положение курсора
Регистры, определяющие положение курсораДва регистра - регистр старшего байта позиции курсора (Cursor Location Register - CLR_h, high byte) (индекс0Eh) и регистр младшего байта позиции курсора (Cu...
Отображение курсора на экране.
Рисунок 8.6 Отображение курсора на экране. Программа, приведенная ниже считывает значения из регистров позиции курсора (на момент запуска программы) и отображает их на экране дисплея: // чтение ре...
Начало обратного вертикального хода луча (VRSR) (индекс10h)
Начало обратного вертикального хода луча (VRSR) (индекс 10h) Регистр определяет начало обратного вертикального хода луча. Для EGA этот регистр содержит 9, а для VGA - 10 битов. Дополнительные...
Конец обратного вертикального хода луча (VRER) (индекс11h)
Конец обратного вертикального хода луча (VRER) (индекс 11h) Данный регистр видеоадаптеров EGA и VGA доступен только для записи. Регистр устанавливает конец обратного вертикального хода луча,...
Регистр адреса светового пера (LPAR)
Регистр адреса светового пера (LPAR)Это 16-битовый регистр, который имеется в видеоадаптерах CGA и EGA, доступен только для чтения. Регистр LPAR дает возможность определить положение светового пер...
Завершение отображения вертикальной развертки (VDER) (индекс 12h)
Завершение отображения вертикальной развертки (VDER) (индекс 12h) Регистр определяет момент, когда заканчивается видемая часть вертикальной развертки и происходит гашение луча. Регистр содерж...
Логическая ширина экрана (OFR) (индекс13h)
Логическая ширина экрана (OFR) (индекс 13h)Регистр может быть использован для отображения большего, чем обычно, количества символов в строке. Например, для перевода видеоадаптера в режим отоб...
Логическая ширина экрана. Положение подчеркивания символа (ULR) (индекс14h)
Рисунок 8.7 Логическая ширина экрана....
Положение подчеркивания символа (ULR) (индекс14h)
Регистр ULR используется только в текстовых режимах. Он определяет положение подчеркивания символа. Подчеркивание предстовляет собой одну из линий в матрице символа. Подчеркивание отображается, ес...
Начало импульса гашения вертикальной развертки (SVBR) (byltrc 15h)
Начало импульса гашения вертикальной развертки (SVBR) (byltrc 15h)Регистр определяет момент начала гашения луча в прцессе вертикальной развертки. Для EGA регистр имеет 9, а для VGA - 10 битов. Дев...
Конец импульса гашения вертикальной развертки (EVBR) (индекс16h)
Конец импульса гашения вертикальной развертки (EVBR) (индекс 16h) В момент, когда младшие 5 битов регистра для EGA или все 8 битов для VGA равны счетчику горизонтальных линий, заканчивается с...
Управление режимом (MCR) (индекс17h)
Управление режимом (MCR) (индекс 17h)Регистр содержит набор битов, управляющих контроллером ЭЛТ. D7 Если бит равен нулю, то горизонтальный и вертикальный обратный ход луча невозможен. D6 Если...
Регистр сравнения линий (Line Compare Register - LCR) (индекс18h)
Регистр сравнения линий (Line Compare Register - LCR) (индекс 18h) Обеспечивает разделение экрана на две независимые части. При этом одну из них можно свертывать, содержимое другой части экра...
Процесс разделения экрана.
Рисунок 8.8 Процесс разделения экрана. Содержимое верхнего окна можно перемещать, изменяя содержимое регистра начального адреса. Заметим, что у видеоадаптера EGA регистр сравнения линий состоит из...
7.4. Регистры синхронизатора
Синхронизатор управляет всеми временными параметрами видеоадаптера, а также разрешением и запрещением доступа к отдельным цветовым слоям. Синхронизатор имеет пять регистров, они перечислены в табл...
Регистр сброса синхронизатора (Reset Register - RR) (индекс0)
Регистр сброса синхронизатора (Reset Register - RR) (индекс 0) Если регистр переведен в состояние сброса, то все процессы видеоадаптера приостанавливаются. В результате могут быть разрушены д...
Регистр режима синхронизации (Clock Mode Register - CMR) (индекс1)
Регистр режима синхронизации (Clock Mode Register - CMR) (индекс 1) Регистр управляет временными циклами синхронизатора. При изменении его содержимого необходимо соблюдать осторожность. Измен...
Регистр разрешения записи цветового слоя (Color Plane Write Enable - CPWE) (индекс2)
Регистр разрешения записи цветового слоя(Color Plane Write Enable - CPWE) (индекс 2)При помощи данного регистра можно запретить запись процессором данных в любые цветовые слои видеопамяти. На...
Разрешение записи в цветовые слои.
Рисунок 8.9 Разрешение записи в цветовые слои. Биты регистра разрешения записи цветового слоя имеют следующие значения: D0 Если бит равен единице, то можно записывать данные в нулевой цветовой сло...
Регистр выбора знакогенератора (Character Generator Select Register - CGSR) (индекс3)
Регистр выбора знакогенератора (Character Generator Select Register - CGSR) (индекс 3)Видеоадаптер EGA позволяет загрузить в память четыре, а VGA - восемь таблиц знакогенератора, каждая из ко...
Регистр определения структуры памяти (Memory Mode Register - MMR) (индекс4)
Регистр определения структуры памяти (Memory Mode Register - MMR) (индекс 4)Регистр инициализируется BIOS при выполнении операции выбора режима работы видеоадаптера и определяет структуру вид...
7.5. Регистры графического контроллера
Как мы уже указывали, графический контроллер поддерживает обмен данными между процессором и видеопамятью. При этом он может выполнять простейшие логические операции над записываемыми в видеопамять...
Функции графического контроллера.
Рисунок 8.10 Функции графического контроллера. Теперь рассмотрим регистры графического контроллера более подробно....
Регистр установки/сброса (Set/Reset Register - SRR) (индекс0)
Регистр установки/сброса(Set/Reset Register - SRR) (индекс 0)Использовав данный регистр совместно с регистром разрешения установки/сброса (Set/Reset Enable Register), можно определить данные,...
Регистр разрешения установки/сброса (Set/Reset Enable Register - SRER) (индекс1)
Регистр разрешения установки/сброса (Set/Reset Enable Register - SRER) (индекс 1)Регистр разрешения установки/сброса позволяет при операции записи в видеопамять для одних цветовых слоев испол...
Использование регистров установки/сброса
Рисунок 8.11 Использование регистров установки/сброса....
Регистр сравнения цветов (Color Compare Register - CCR) (индекс2)
Регистр CCR используется программами, осуществляющими поиск на экране пикселов с определенным цветом. Без использования регистра CCR за один цикл чтения видеопамяти процессор может считать данные...
Использование регистра CCR.
Рисунок 8.12 Использование регистра CCR. Как видно из рисунка, в случае совпадения сравниваемых битов соответствующий бит результата равен единице. Заметим, что перед использованием регистра CCR д...
Регистр циклического сдвига и выбора функции (Data Rotate & Function Select - DRFS) (индекс3)
Регистр циклического сдвига и выбора функции(Data Rotate & Function Select - DRFS) (индекс 3)Регистр DRFS выполняет две различные функции, отраженные в его названии: Циклический сдвиг дан...
Рисунок8.13 иллюстрирует выполнение
Рисунок 8.13 иллюстрирует выполнение логической операции ИЛИ. Регистр циклического сдвига и выбора функции содержит число 00010000b. После операции чтения данные из всех четырех слоев записыв...
Логические операции и операция циклического сдвига.
Рисунок 8.13 Логические операции и операция циклического сдвига. Заметим, что логические операции можно производить только в нулевом и втором режиме записи....
Регистр выбора читаемого слоя (Read Plane Select Register - RPSR) (индекс4)
Регистр выбора читаемого слоя(Read Plane Select Register - RPSR) (индекс 4)Определяет номер цветового слоя видеопамяти, из которого процессор может читать данные. Заметим, что при выполнении...
Операция чтения из видеопамяти. Регистр режима работы (Mode Register - MDR) (индекс5)
Рисунок 8.14 Операция чтения из видеопамяти....
Регистр режима работы (Mode Register - MDR) (индекс5)
Регистр управляет несколькими различными функциями графического контроллера. В частности он управляет режимом записи в видеопамять, а также разрешением режима сравнния цветов (см. регистр сравнени...
Различные режимы записи в видеопамять
Рисунок 8.14 Различные режимы записи в видеопамять. D3 Этот бит управляет разрешением использования режима сравнения цветов (см. регистр сравнения цветов графического контроллера). Для перевода ви...
Регистр смешанного назначения (Miscellaneous Register - MIR) (индекс6)
Регистр смешанного назначения(Miscellaneous Register - MIR) (индекс 6)Регистр управляет видеопамятью и регистром-защелкой для адреса знакогенератора. В результате неправильной модификации рег...
Регистр маскирования цветовых слоев (Color Don't Care Register - CDCR) (индекс7)
Регистр маскирования цветовых слоев (Color Don't Care Register - CDCR) (индекс 7)Регистр используется в режиме сравнения цветов (см. регистр сравнения цветов - CCR). Если какие-либо биты D3-D...
Регистр битовой маски (Bit Mask Register - BMR) (индекс8)
Регистр битовой маски(Bit Mask Register - BMR) (индекс 8)Регистр управляет записью данных в видеопамять. Если какой-то бит регистра BMR содержит ноль, то соответствующий бит будет записыватьс...
Использование регистра битовой маски.
Рисунок 8.15 Использование регистра битовой маски. Напомним, что занести данные в регистр-защелку можно, если выполнить операцию чтения из видеопамяти. При этом в каждый регистр-защелку считываетс...
7.6. Регистры контроллера атрибутов
Контроллер атрибутов управляет цветовыми характеристиками изображений. Контроллер атрибутов содержит двадцать один регистр. Регистры перечисленны в таблице 8.17. Доступ к ним осуществляется через...
Регистры цветовой палитры (0-15) (Color Palette Register's - CPR)
Регистры цветовой палитры (0-15) (Color Palette Register's - CPR)Четыре цветовых слоя видеоадаптера EGA позволяют закодировать 16 различных цветов, однако улучшенный цветной дисплей обеспечивает в...
Улучшенный цветной дисплей.
Улучшенный цветной дисплей.D0 Голубой. D1 Зеленый. D2 Краснй. D3 Второй голубой. D4 Второй зеленый. D5 Второй красный. D7-D6 Не используются....
Цветной дисплей.
Цветной дисплей.D0 Голубой. D1 Зеленый. D2 Краснй. D3 Не используется. D4 Интенсивность. D7-D5 Не используются....
Монохромный дисплей.
Монохромный дисплей.D2-D0 Не используются. D3 Видео выход. D4 Интенсивность. D7-D5 Не используются....
Дисплей VGA.
Дисплей VGA.D0 P0 D1 P1 D2 P2 D3 P3 D4 P4 D5 P5 D7-D6 Не используются....
Регистр управления режимом (Mode Control Register - MCR) (индекс10h)
Регистр управления режимом(Mode Control Register - MCR) (индекс 10h)Регистр управления режимом управляет контроллером атрибутов. D0 ноль для текствых режимов, единица - для графических. Бит о...
Регистр цвета рамки экрана (Screen Border Color Register - SBCR) (индекс11)
Регистр цвета рамки экрана(Screen Border Color Register - SBCR) (индекс 11)В текстовых режимах работы видеоадаптеров регистр задает цвет рамки, расположенной вокруг текста. Назначение битов р...
Регистр разрешения цветового слоя (Color Plane Enable Register - CPER) (индекс12)
Регистр разрешения цветового слоя (Color Plane Enable Register - CPER) (индекс 12)D3-D0 Биты разешения цветовых слоем. Если бит равен нулю, то данные из соответствующего цветвого слоя не пост...
Регистр горизонтального панорамирования (Horizontal Panning Register - HPR) (индекс13)
Регистр горизонтального панорамирования (Horizontal Panning Register - HPR) (индекс 13)Регистр позволяет сдвигать в горизонтальном направлении содержимое экрана на один пиксел. При использова...
Горизонтальный сдвиг экрана.
Рисунок 8.16 Горизонтальный сдвиг экрана. Следующая программа позволяет перемещать содержимое экрана по горизонтали и вертикали. Функции HorScroll и VerScroll реализуют, соответственно, горизонтал...
Регистр выбора цвета (Color Select Register - CSR) (индекс14)
Регистр выбора цвета(Color Select Register - CSR) (индекс 14)Регистр используется только видеоадаптером VGA для управления цветом. D0 Цвет Р4. D1 Цвет Р5. Данные биты могут использоваться вме...
7.7. Регистры цифро-аналогового преобразователя VGA
VGA работает с аналоговыми дисплеями, имеющими три раздельных видеовхода. Величина напряжения на каждом из них управляет, соответственно, интенсивностью красного, зеленого и голубого цвета изображ...
Схема управления цветами (VGA).
Рисунок 8.17 Схема управления цветами (VGA). Таблица цветов фактически является набором из 256 18-битовых регистров. Используя регистры ЦАП, можно получить доступ для чтения и для записи к каждому...
Регистр маскирования пикселов (Pixel Mask Register - PMR)
Регистр маскирования пикселов (Pixel Mask Register - PMR)Фирма IBM в руководстве по VGA предупреждает, что доступ к регистру нежелателен. В противном случае могут разрушиться данные в таблице цвет...
Регистр состояния ЦАП (DAC State Register - DAC_SR)
Регистр состояния ЦАП(DAC State Register - DAC_SR)Регистр адресуется при помоши порта с адресом 3C7h и доступен только для чтения. Прочитав данные из регистра, можно определить, доступны регистры...
Индекс читаемого регистра таблицы цветов (Look-up Table Read Index Register - LTRIR)
Индекс читаемого регистра таблицы цветов(Look-up Table Read Index Register - LTRIR)Это индексный регистр доступен через порт 3C7h только для записи. Запись в данный регистр индекса элемента цветов...
Индекс записываемого регистра таблицы цветов (Look-up Table Write Index Register - LTWIR)
Индекс записываемого регистра таблицы цветов (Look-up Table Write Index Register - LTWIR)После записи в регистр LTWIR индекса регистра таблицы цветов можно записать в него новое значение через рег...
Регистр данных таблицы цветов (Look-up Table Data Register - LTDR)
Регистр данных таблицы цветов(Look-up Table Data Register - LTDR)Регистр используется для получения доступа к регистрам таблицы цветов. Для чтения из (записи в) таблицы цветов необходимо три раз п...
7.8. Нестандартные режимы видеоадаптера VGA
В этой главе на примере видеоадаптера VGA мы рассмотрим программирование нестандартных режимов. Так как программирование нестандартных режимов видеоадаптеров требует непосредственного доступа к ег...
Организация видеопамяти
Организация видеопамятиРежим 13h использует простую линейную организацию видеопамяти, в которой по каждому адресу в видеопамяти находится один байт управляющий одним пикселом. Такая организация ви...
Структура видеопамяти в нестандартных, 256-цветовых режимах.
Рисунок 8.18 Структура видеопамяти в нестандартных, 256-цветовых режимах. Как видно из рисунка первый пиксел экрана, отображаемый в левом верхнем углу, определяется байт со смещением 0 из нулевого...
Режим 320х400 пикселов, 256 цветов
Режим 320х400 пикселов, 256 цветовМы начнем рассмотрение нестандартных режимов с режима, имеющего разрешение 320х400 пикселов. Программирование этого режима является самым простым и безопасным, та...
Режим 360х480 пикселов, 256 цветов
Режим 360х480 пикселов, 256 цветовВторой рассматриваемый нами нестандартный режим может отображать 256 цветов при разрешающей способности 360х480 пикселов. Программирование этого режима является м...








Начало