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

       

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


Введение
Соглашения, принятые при изложении материала
Пролог
Типы дисплеев
Монохромный дисплей
Цветной дисплей
Улучшенный цветной дисплей
Многочастотный цветной дисплей
Дисплей VGA
Режимы работы видеоадаптеров

Режимы 0 и 1
Режимы 0 и 1 - 2
Режимы 0*, 1*
Режимы 0+, 1+
Режимы 2 и 3
Режимы 2*, 3*
Режимы 2+, 3+
Режимы 4 и 5
Режим 6
Режим 7

Режим 7+
Режимы 8, 9, 0Ah
Режим 0Dh
Режим 0Eh
Режим 0Fh
Режим 10h
Режим 11h
Режим 12h
Режим 13h
Системы с двумя видеоадаптерами

Архитектура видеоадаптера CGA
Текстовые режимы CGA
Знакогенератор
Видеопамять в графических режимах CGA
Режимы 4 и 5
Режим 6
Режим 6 - 2
Организация видеопамяти адаптера Hercules

Архитектура видеоадаптеров EGA и VGA
Электронно-лучевая трубка
Видеопамять
Текстовый режим

Атрибуты символов
Атрибуты символов (монохромный режим)
Видеопамять в графических режимах
Режимы 4 и 5
Режим 6
Режимы 0Dh и 0Eh
Режим 0Fh
Режим 10h
Режим 11h

Режим 12h
Режим 13h
Графический контроллер
Исполнение видеоадаптером операции записи
Выполнение видеоадаптером операции чтения
Последовательный преобразватель
Контроллер атрибутов
Контроллер ЭЛТ
Синхронизатор
Регистры видеоадаптера CGA

Краткий обзор
Регистры контроллера ЭЛТ
Общая длина линии горизонтальной развертки (Horizontal Total Register - HTR) (индекс0)
Длина отображаемой части горизонтальной
Положение горизонтальной синхронизации (Horizontal Sync Position - SHBR) (индекс2)
Ширина горизонтального синхросигнала (Horizontal Sync Pulse Width Register - HSPWR) (индекс3)
Выравнивание растра (Vertical Total Adjust Register - VTAR) (индекс5)
Длина отображаемой части вертикальной развертки (Vertical Displayed - VDR) (индекс6)
Положение вертикальной синхронизации (Vertical Sync Position Register - VSPR) (индекс7)

Режим соединения (Interlase Mode Register - IMR) (индекс8)
Высота символов текста (Max Scan Line Register - MSLR) (индекс9)
Начальная линия курсора (Cursor Start Register - CSR) (индекс0Ah)
Конечная линия курсора (Cursor End Register - CER) (индекс0Bh)
Регистры начального адреса
Регистры, определяющие положение курсора
Регистр адреса светового пера (LPAR)
Регистр выбора режима. (Mode Select Register)
Регистр выбора цвета. (Color Select Register)
Регистр состояния (Input Status Register - ISR0)

Регистр сброса триггера-защелки светового пера (Light Pen Latch Reset Register - LPLRR)
Регистр установки триггера-защелки светового пера (Light Pen Latch Set Register - LPLRR)
Регистры видеоадаптеров EGA и VGA
Внешние регистры
Регистр определения различных режимов работы (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)

Начало импульса гашения луча горизонтальной
Конец импульса гашения луча горизонтальной
Начало импульса горизонтального
Конец импульса горизонтального
Число горизонтальных линий растра (VTR) (индекс6)
Дополнительный регистр (OVR) (индекс7)
Предварительная установка горизонтальной развертки (Preset Row Scan Register - PRSR) (индекс8)
Высота сиволов текста (Max Scan Line Register - MSLR) (индекс9)

Начало обратного вертикального хода луча (VRSR) (индекс10h)
Конец обратного вертикального хода луча (VRER) (индекс11h)
Завершение отображения вертикальной развертки (VDER) (индекс 12h)
Логическая ширина экрана (OFR) (индекс13h)
Положение подчеркивания символа (ULR) (индекс14h)

Начало импульса гашения вертикальной развертки (SVBR) (byltrc 15h)
Конец импульса гашения вертикальной развертки (EVBR) (индекс16h)
Управление режимом (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)

Программирование видеоадаптеров CGA, EGA и 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
Дополнительные средства BIOS для управления EGA и VGA
Управление регистрами палитры - функция 10h
Установка одного регистра палитры - подфункция 00h
Установка цвета рамки - подфункция 01h
Установка всех регистров палитры - подфункция 02h
Управление атрибутом мигания и атрибутом интенсивности - подфункция 03h
Чтение регистра палитры - подфункция 07h
Чтение регистра цвета рамки - подфункция 08h
Чтение всех регистров палитры - подфункция 09h

Установка одного регистра таблицы цветов (регистров ЦАП) - подфункция 10h
Установка нескольких регистров таблицы цветов (регистров ЦАП) - подфункция 12h
Выбор подмножества цветов - подфункция 13h
Чтение регистра таблицы цветов - подфункция 15h
Чтение нескольких регистров таблицы цветов (регистров ЦАП) - подфункция 17h
Определение режима подмножества цветов - подфункция 1Ah
Установка палитры из градаций серого цвета - подфункция 1Bh
Загрузка таблиц знакогенератора - функция 11h
Загрузка набора символов пользователя - подфункция 00h
Загрузка монохромного набора символов - подфункция 01h

Загрузка стандартного набора символов видеоадаптера CGA - подфункция 02h
Выбор активных таблиц знакогенератора (EGA) - подфункция 03h
Установка вектора прерывания 1Fh - подфункция 20h
Использование графического режима для отображения символов пользователя - подфункция 21h
Использование набора символов 8х14 из ПЗУ
Использование набора символов 8х8 из ПЗУ
Использование набора символов 8х16 из ПЗУ
Получение информации об используемом наборе символов - подфункция 30h
Определение конфигурации и выбор программы распечатки экрана - функция 12h

Определение конфигурации EGA/VGA - подфункция 10h
Выбор программы печати экрана - подфункция 20h
Выбор количества линий развертки в текстовом режиме - подфункция 30h
Запрещение переустановки палитры - подфункция 31h
Управление доступом к VGA - подфункция 32h
Управление преобразованием серого цвета - подфункция 33h
Эмуляция курсора CGA - подфункция 34h
Выбор активного дисплея - подфункция 35h
Гашение экрана - подфункция 36h
Вывод текстовой сторки - функция 13h

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

Переменные в младших адресах памяти
Таблица окружения
Таблица параметров
Область сохранения
Вспомогательная таблица символов текстового режима
Вспомогательная таблица символов для графического режима
Использование функций MS-DOS для управления видеоадаптерами
Вывод символов - функция 02h
Вывод строки на экран дисплея - функция 09h
Стандартные функции вывода языка Си

Функции putchar() и putc()
Функция puts()
Функция printf()
Функция putch()
Функция cputs()
Функция cprintf()
Определение конфигурации (функция _getvideoconfig())
Функции управления видеоадаптером

Функция _displaycursor()
Функция _gettextcursor()
Функция _settextcursor()
Функция _gettextposition()
Функция _settextposition()
Функция _getbkcolor()
Функция _setbkcolor()
Функция _gettextcolor()
Функция _settextcolor()
Функция _outtext()

Функции _setactivepage(), _setvisualpage(), _getactivepage() и _getvisualpage()
Функция _setvideomode()
Функция _clearscreen()
Функция _settextwindow()
Основные графические функции
Функция _setpixel()
Функция _lineto()
Функция _moveto()

Функция _rectangle()
Функция _ellipse()
Функция _arc()
Функция _pie()
Функция _setcolor()
Функция _selectpalette()
Функция _setlinestyle()
Функция _setviewport()
Функция _setvieworg()
Функция _setvideomoderows()

Функция _getimage()
Функция _putimage()
Функция _imagesize()
Приложения
Таблицы ASCII-кодов символов
Руссификация видеоадаптеров
Установка переключателей на плате EGA.

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

Карта памяти CGA/EGA/VGA
Карты портов ввода/вывода видеоадаптера CGA
Регистры контроллера ЭЛТ Motorola 6845.

Карты портов ввода/вывода видеоадаптеров EGA и VGA для монохромного и цветного режимов
Регистры контроллера ЭЛТ EGA/VGA8
Регистры синхронизатора EGA/VGA8
Регистры графического контроллера EGA/VGA
Регистры контроллера атрибутов EGA/VGA
Регистры цифро-аналогового преобразователя VGA
Включаемый файл "SYSP.H"

Включаемый файл "SYSGRAPH.H"
Включаемый файл "VGA_NEW.H"