- •Аннотация
- •Введение
- •Как связаться с авторами
- •Благодарности
- •Замечания
- •1. Видеоподсистема компьютера
- •Мониторы
- •2. Режимы работы видеоадаптеров
- •Режимы 0 и 1
- •Режимы 0*, 1*
- •Режимы 2 и 3
- •Режимы 2*, 3*
- •Режимы 4 и 5
- •Режим 6
- •Режим 7
- •Режимы 8, 9, 0Ah
- •Режим 0Dh
- •Режим 0Eh
- •Режим 0Fh
- •Режим 10h
- •Режим 11h
- •Режим 12h
- •Режим 13h
- •3. Архитектура видеоадаптеров ega и vga
- •Монитор
- •Видеопамять
- •Текстовый режим
- •Знакогенератор
- •Атрибуты символов
- •Атрибуты символов (монохромный режим)
- •Видеопамять в графических режимах
- •Режимы 4 и 5
- •Режим 6
- •Режимы 0Dh и 0Eh
- •Режим 0Fh
- •Режим 10h
- •Режим 11h
- •Режим 12h
- •Режим 13h
- •Графический контроллер
- •Операция записи
- •Операция чтения
- •Последовательный преобразователь
- •Контроллер атрибутов
- •Контроллер элт
- •Синхронизатор
- •4. Регистры видеоадаптеров 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)
- •Длина отображаемой части горизонтальной развертки (Horizontal Display Enable End Register - hder) (индекс 1)
- •Начало импульса гашения луча горизонтальной развертки (Start Horizontal Blank Register - shbr) (индекс 2)
- •Конец импульса гашения луча горизонтальной развертки (End Horizontal Blank Register - ehbr) (индекс 3)
- •Начало импульса горизонтального обратного хода луча (Start Horizontal Retrace Register - shrr) (индекс 4)
- •Конец импульса горизонтального обратного хода луча (End Horizontal Retrace Register - ehrr) (индекс 5)
- •Число горизонтальных линий растра (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)
- •Улучшенный цветной монитор
- •Регистр цвета рамки экрана (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 цветов
- •5. Использование функций 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
- •Русификация видеоадаптеров
- •6. Область данных видеофункций bios
- •Переменные в младших адресах памяти
- •Область сохранения
- •Дополнительная таблица окружения
- •Вторая таблица символов текстового режима
- •7. Видеоадаптеры svga
- •Видеопамять svga
- •Слоеный пирог
- •Увидеть весь мир через замочную скважину
- •Больше цветов больше бит
- •Стандарт vesa
- •Получить информацию о реализации vbe и видеоадаптере
- •Получить информацию о режиме видеоадаптера
- •Установить режим видеоадаптера
- •Определить текущий режим видеоадаптера
- •Сохранить/восстановить состояние видеоадаптера
- •Управление адресацией видеопамяти
- •Установить/определить длину строки развертки
- •Установить/определить видимую область экрана
- •Установить/определить размер регистров цап
- •Управление монитором
- •Определение возможностей управления
- •Включить режим сохранения электроэнергии
- •Определить состояние монитора
- •8. Использование функций ms-dos для управления видеоадаптерами
- •Функция puts
- •Функция printf
- •Функция putch
- •Функция cputs
- •Функция cprintf
- •Литература
- •Оглавление
- •5. Использование функций bios для работы с видеоадаптерами 100
- •6. Область данных видеофункций bios 152
- •7. Видеоадаптеры svga 159
- •8. Использование функций ms-dos для управления видеоадаптерами 175
- •9. Стандартные функции вывода языка Си 176
Режимы 0*, 1*
Режимы EGA 0* и 1* являются расширенными версиями режимов 0 и 1 адаптера CGA. Эти режимы отличаются только размером матрицы пикселов, используемой для отображения символов текста. В режимах 0* и 1* матрица имеет большее число элементов - 8х14 пикселов.
Из-за различий в размерности матриц символов ухудшается совместимость между видеоадаптерами CGA и EGA. В частности возникают трудности при установке формы курсора и положения линии подчеркивания символов.
Режимы 0+, 1+
Видеоадаптеры VGA и SVGA реализуют собственные расширенные версии режимов 0 и 1. Они обозначаются как 0+и 1+. Эти режимы отличаются от режимов 0 и 1 только размером матрицы пикселов, используемой при отображении символов текста. В режимах 0+и 1+матрица имеет большее число элементов - 9х16 пикселов.
Как и для режимов 0* и 1*, отличие размерности матриц символов создает трудности при создании совместимых программ для адаптеров CGA, EGA, VGA и SVGA. Необходимо быть уверенным в правильности установки формы курсора и положения линии подчеркивания символов.
Режимы 2 и 3
Во втором и третьем режимах монитор отображает цветную текстовую информацию. Количество строк, также как и в режимах 0 и 1, равно 25, а количество столбцов увеличено до 80. Для видеоадаптеров EGA, VGA и SVGA данные режимы не имеют различий.
Символы текста можно отображать в 8 основных и 8 дополнительных цветах, имеющих большую интенсивность, чем основные. Для каждого символа можно независимо задать его цвет и цвет фона. Вы можете использовать те же цвета, что в режимах 0 и 1.
В данных режимах работы видеоадаптеры EGA, VGA и SVGA поддерживают 8 страниц экрана. Исключение составляют конфигурации, в которых видеоадаптер EGA имеет только 64 Кбайт видеопамяти. В этом случае EGA поддерживает только первые 4 страницы видеопамяти. Одна из этих восьми страниц является активной.
Страницы видеопамяти располагаются по следующим адресам:
Страница 0 - B800:0000h |
Страница 1 - B800:1000h |
Страница 2 - B800:2000h |
Страница 3 - B800:3000h |
Страница 4 - B800:3000h |
Страница 5 - B800:5000h |
Страница 6 - B800:4000h |
Страница 7 - B800:7000h |
Режимы 2*, 3*
Режимы EGA 2* и 3* являются расширенными версиями режимов 2 и 3 для CGA. Эти режимы отличаются только размером матрицы пикселов, используемой для отображения символов текста. В режимах 2* и 3* матрица имеет большее число элементов - 8х14 пикселов.
Режимы 2+, 3+
Видеоадаптеры VGA и SVGA реализуют собственные расширенные версии режимов 2 и 3. Они обозначаются как 2+и 3+. Эти режимы отличаются от режимов 2 и 3 только размером матрицы пикселов, используемой при отображении символов текста. В режимах 2+и 3+матрица имеет большее число элементов - 9х16 пикселов.
Как указывалось выше, в режимах 2 и 3 видеоадаптеры VGA и SVGA используют двойное сканирование.
Режимы 4 и 5
В этих режимах отображается цветная графическая информация. Экран монитора имеет разрешение 320 пикселов по горизонтали и 200 пикселов по вертикали. При отображении могут использоваться либо четыре основных, либо четыре альтернативных цвета:
Стандартные цвета |
Альтернативные цвета |
Черный |
Черный |
Светло-синий |
Зеленый |
Малиновый |
Красный |
Белый |
Коричневый |
В отличие от предыдущих режимов поддерживается только одна страница видеопамяти. Ее начальный адрес равен B800:0000h.