Программирование видеоадаптеров

       

Программирование видеоадаптеров

Аннотация
Введение
Как связаться с авторами

Замечания
Видеоподсистема компьютера
Мониторы
Режимы работы видеоадаптеров
Режимы 0 и 1
Режимы 0*, 1*
Режимы 2 и 3
Режимы 2*, 3*

Режимы 4 и 5
Режим 6
Режим 7
Режимы 8, 9, 0Ah
Режим 0Dh
Режим 0Eh
Режим 0Fh
Режим 10h
Режим 11h

Режим 12h
Режим 13h
Архитектура видеоадаптеров EGA и VGA
Монитор
Видеопамять
Текстовый режим
Знакогенератор
Атрибуты символов

Атрибуты символов (монохромный режим)
Видеопамять в графических режимах
Режимы 4 и 5
Режим 6
Режимы 0Dh и 0Eh
Графический контроллер
Операция записи
Операция чтения
Последовательный преобразователь
Контроллер атрибутов
Контроллер ЭЛТ

Синхронизатор
Регистры видеоадаптеров EGA, VGA и SVGA
Краткий обзор
Внешние регистры
Регистр определения различных режимов работы (Miscellaneous Output Register - MOR)
Регистр управления дополнительным устройством (Feature Control Register - FCR)
Регистр состояния 0 (Input Status Register 0 - ISR0)

Регистр состояния 1 (Input Status Register 1 - ISR0)
Регистр разрешения работы системы VGA (VGA Enable Register - VGA_ER)
Регистр сброса триггера-защелки светового пера (Light Pen Latch Reset Register - LPLRR)
Регистр установки триггера-защелки светового пера (Light Pen Latch Set Register - LPLSR)
Регистры контроллера ЭЛТ

Общая длина линии горизонтальной развертки (Horizontal Total Register - HTR) (индекс 0)
Длина отображаемой части горизонтальной
Начало импульса гашения луча горизонтальной
Конец импульса гашения луча горизонтальной
Начало импульса горизонтального
Конец импульса горизонтального
Число горизонтальных линий растра (Vertical Total Register - VTR) (индекс6)

Дополнительный регистр (Overflow Register - OVR) (индекс7)
Предварительная установка горизонтальной развертки (Preset Row Scan Register - PRSR) (индекс8)
Высота символов текста (Max Scan Line Register - MSLR) (индекс9)
Начальная линия курсора (Cursor Start Register - CSR) (индекс0Ah)
Конечная линия курсора (Cursor End Register - CER) (индекс0Bh)
Регистры начального адреса
Регистры, определяющие положение курсора
Начало обратного вертикального хода луча (Vertical Retrace Start Register - VRSR) (индекс10h)

Конец обратного вертикального хода луча (Vertical Retrace End Register - VRER) (индекс11h)
Регистр адреса светового пера (Light Pen Address Register - LPAR)
Завершение отображения вертикальной развертки (Vertical Display End Register - VDER) (индекс 12h)
Логическая ширина экрана (Offset Register - OFR) (индекс13h)
Положение подчеркивания символа (Underline Location Register - ULR) (индекс14h)
Начало импульса гашения вертикальной развертки (Start Vertical Blank Register - SVBR) (индекс 15h)
Конец импульса гашения вертикальной развертки (End Vertical Blank Register - EVBR) (индекс16h)
Управление режимом (Mode Control Register - MCR) (индекс17h)
Регистр сравнения линий (Line Compare Register - LCR) (индекс18h)

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

Регистр установки/сброса (Set/Reset Register - SRR) (индекс 0)
Регистр разрешения установки/сброса (Set/Reset Enable Register - SRER) (индекс1)
Регистр сравнения цветов (Color Compare Register - CCR) (индекс2)
Регистр циклического сдвига и выбора функции (Data Rotate Function Select - DRFS) (индекс3)
Регистр выбора читаемого слоя (Read Plane Select Register - RPSR) (индекс4)
Регистр режима работы (Mode Register - MDR) (индекс5)
Регистр смешанного назначения (Miscellaneous Register - MIR) (индекс6)
Регистр маскирования цветовых слоев (Color Don't Care Register - CDCR) (индекс7)
Регистр битовой маски (Bit Mask Register - BMR) (индекс8)

Регистры контроллера атрибутов
Регистры цветовой палитры (0-15) (Color Palette Register's - CPR)
Улучшенный цветной монитор
Цветной монитор
Монохромный монитор
Монитор VGA
Регистр управления режимом (Mode Control Register - MCR) (индекс10h)
Регистр цвета рамки экрана (Screen Border Color Register - SBCR) (индекс11)
Регистр разрешения цветового слоя (Color Plane Enable Register - CPER) (индекс12)
Регистр горизонтального панорамирования (Horizontal Panning Register - HPR) (индекс13)

Регистр выбора цвета (Color Select Register - CSR) (индекс14)
Регистры цифро-аналогового преобразователя VGA
Регистр маскирования пикселов (Pixel Mask Register - PMR)
Регистр состояния ЦАП (DAC State Register - DAC_SR)
Индекс читаемого регистра таблицы цветов (Look-up Table Read Index Register - LTRIR)
Индекс записываемого регистра таблицы цветов (Look-up Table Write Index Register - LTWIR)

Регистр данных таблицы цветов (Look-up Table Data Register - LTDR)
Нестандартные режимы видеоадаптера VGA
Организация видеопамяти

Программирование видеоадаптеров

Режим 320х400 пикселов, 256 цветов
Режим 360х480 пикселов, 256 цветов
Использование функций BIOS для работы с видеоадаптерами
Выбор режима работы - функция 00h
Изменение формы курсора - функция 01h
Изменение положения курсора - функция 02h

Определение положения и формы курсора - функция 03h
Использование светового пера - функция 04h
Выбор активной страницы видеопамяти - функция 05h
Свертка окна вверх - функция 06h
Свертка текстового окна вниз - функция 07h
Чтение символа и его атрибутов - функция 08h
Запись символа с атрибутами в текущей позиции курсора - функция 09h
Запись символа в текущей позиции курсора - функция 0Ah

Установка цветовой палитры (режимы 4,5,6) - функция 0Bh
Вывод пиксела - функция 0Ch
Чтение пиксела - функция 0Dh
Запись символа в режиме телетайпа - функция 0Eh
Определение текущего режима работы видеоадаптера - функция 0Fh
Управление регистрами палитры - функция 10h
Установка регистра палитры - подфункция 00h
Установка цвета рамки - подфункция 01h
Установка всех регистров палитры - подфункция 02h

Управление атрибутом мигания и атрибутом интенсивности - подфункция 03h
Чтение регистра палитры - подфункция 07h
Чтение регистра цвета рамки - подфункция 08h
Чтение всех регистров палитры - подфункция 09h
Установка регистра таблицы цветов (регистров ЦАП) - подфункция 10h
Установка нескольких регистров таблицы цветов (регистров ЦАП) - подфункция 12h
Выбор подмножества цветов - подфункция 13h ???
Чтение регистра таблицы цветов - подфункция 15h
Чтение нескольких регистров таблицы цветов (регистров ЦАП) - подфункция 17h
Определение режима подмножества цветов - подфункция 1Ah ???

Установка палитры из градаций серого цвета - подфункция 1Bh
Загрузка таблиц знакогенератора - функция 11h
Загрузка набора символов пользователя - подфункция 00h
Загрузка набора символов из BIOS - подфункция 01h
Загрузка набора символов из BIOS - подфункция 02h
Выбор активных таблиц знакогенератора - подфункция 03h
Загрузка набора символов из BIOS - подфункция 04h
Установка вектора прерывания 1Fh - подфункция 20h
Установка набора символов для графических режимов - подфункция 21h

Установка набора символов 8х14 из ПЗУ BIOS
Установка набора символов 8х8 из ПЗУ BIOS
Установка набора символов 8х16 из ПЗУ BIOS
Получение информации об используемом наборе символов - подфункция 30h
Определение конфигурации и выбор программы распечатки экрана - функция 12h
Определение конфигурации видеоадаптера - подфункция 10h
Выбор программы печати экрана - подфункция 20h
Выбор количества линий развертки в текстовом режиме - подфункция 30h
Запрещение переустановки палитры - подфункция 31h
Управление доступом к видеоадаптеру - подфункция 32h

Управление преобразованием серого цвета - подфункция 33h
Эмуляция курсора CGA - подфункция 34h
Выбор активного монитора - подфункция 35h
Гашение экрана монитора - подфункция 36h
Вывод текстовой строки - функция 13h
Чтение/запись конфигурации видеосистемы - функция 1Ah
Чтение конфигурации видеосистемы - подфункция 00h
Запись конфигурации видеосистемы - подфункция 01h
Получение данных о состоянии VGA - функция 1Bh

Сохранение/восстановление состояния видеоадаптера - функция 1Ch
Определение размера буфера - подфункция 00h
Сохранение текущего состояния видеоадаптера - подфункция 01h
Восстановление текущего состояния видеоадаптера - подфункция 02h
Русификация видеоадаптеров
Область данных видеофункций BIOS
Переменные в младших адресах памяти

Таблица окружения
Таблица параметров
Область сохранения
Таблица символов текстового режима
Таблица символов графического режима
Дополнительная таблица окружения
Вторая таблица символов текстового режима
Таблица кодов комбинаций мониторов
Таблица настройки палитры

Видеоадаптеры SVGA
Видеопамять SVGA
Слоеный пирог
Увидеть весь мир через замочную скважину
Больше цветов больше бит
Стандарт VESA
Получить информацию о реализации VBE и видеоадаптере

Получить информацию о режиме видеоадаптера
Установить режим видеоадаптера
Определить текущий режим видеоадаптера

Сохранить/восстановить состояние видеоадаптера
Управление адресацией видеопамяти
Установить/определить длину строки развертки
Установить/определить видимую область экрана

Программирование видеоадаптеров

Установить/определить размер регистров ЦАП
Управление монитором
Определение возможностей управления
Включить режим сохранения электроэнергии
Определить состояние монитора

Использование функций MS-DOS для управления видеоадаптерами
Вывод символов - функция 02h
Вывод строки на экран монитора - функция 09h
Стандартные функции вывода языка Си
Функции putchar и putc
Функция puts
Функция printf
Функция putch

Функция cputs
Функция cprintf
Литература

Операционная система Windows -Пособие для начинающих см. раздел
Язык программирования Форт см. раздел