Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Выч.маш.сист.и сети2 Учебное пособие.doc
Скачиваний:
136
Добавлен:
24.09.2019
Размер:
2.12 Mб
Скачать

3.2. Программирование видеосистем с помощью рограммных прерываний.

Стандартными составляющими процесса программирования видеосистем принято считать:

  • функции прерывания DOS INT 21h, предназначенные для вывода на экран текстовой информации;

  • функции прерывания BIOS INT 10h, позволяющие управлять текстовыми и графическими режимами EGA, CGA и VGA;

  • функции видео расширения VBE (VESA BIOS Extensions), предназначенные для управления режимами SVGA;

  • функции установленного драйвера, учитывающие специфику своего видеоадаптера.

В текстовом режиме изображение обычно состоит из 25 строк и 80 символов в строке. В памяти адаптера одновременно может храниться до восьми текстовых страниц (экранов).

Функции прерывания DOS INT 21h позволяют:

  • обращение к экрану реализовать как обращение к файлу (функция 40h);

  • выводить на экран отельные символы и строки из буфера или из устройства стандартного ввода (клавиатуры), используя функции 1..C0h.

Каждый символ занимает в памяти 2 байта. Младший (четный) байт отводится под коды ASCII отображаемых символов, старшие (нечетные) байты - под атрибуты символов. Двухбайтовые коды записываются в видеобуфер в том порядке, в каком они должны появляться на экране: первые 80 двухбайтовых полей соответствуют первой строке экрана, вторые 80 полей - второй строке и т.д. Атрибут символа определяет цвет символа и фона. Структура байта атрибутов приведена на рис. 3.2.

Рис. 3.2. Структура байта атрибутов.

Каждый символ и его фон независимо от других могут принимать любой из 16 возможных цветов. Подфункция 03h функции 10h прерывания INT10h управляет назначением бита 7: яркость или мерцание.

Функции прерывания BIOS INT 10h позволяют:

  • устанавливать видеорежим (00h) и видеостраницу (05h);

  • выводить на экран пиксел заданного цвета (0Ch);

  • читать номер цвета пиксела с заданными координатами(0Dh);

  • устанавливать цветовые регистры палитры (10h);

  • загружать таблицы графических шрифтов (11h).

Цвета пикселов на экране задаются содержимым цветовых регистров, определяющих цветовую палитру видеосистемы. Адаптер EGA имеет 17 цветовых регистров, каждый из которых может содержать коды цветов от 0 до 63. Регистры 0-15 определяют цвета пикселов, а регистр 16 - цвет рамки вокруг рабочей части экрана. Цвет фона, которым заполняется экран при инициализации графического режима, определяется содержимым регистра 0.

Каждый цветовой регистр содержит 6 значащих разрядов, которые определяют интенсивность красного, зеленого и синего цветов, дающих при смешивании требуемый цвет. Разряды 0-2 закреплены за цветами с интенсивностью 2/3 от максимальной, разряды 3-5 соответствуют интенсивности 1/3 при следующем распределении цветов:

номер разряда:

5

4

3

2

1

0

цвет:

к

з

с

К

З

С

Например, запись в цветовой регистр числа 7 (К+З+С) определит белый цвет, число 3 (З+С) - бирюзовый.

При инициализации DOS в цветовые регистры записывается стандартная цветовая палитра состоящая из следующих значений:

регистр:

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

значение

0

1

2

3

4

5

20

7

56

57

58

60

61

62

63

0

Следует заметить, что вывод большого числа пикселов на экран средствами BIOS требует значительного времени.

Функции видео расширения VBE дополняют функции прерывания BIOS INT 10h в части работы с режимами SVGA. Основной задачей этих функций можно считать определение характеристик установленного видеоадаптера. Физически ПЗУ с функциями VBE находится на плате адаптера, куда изготовитель записывает ее параметры в соответствии со стандартом VESA. Обращение к этому ПЗУ осуществляется функцией 4Fh прерывания INT 10h, которая прежде была резервной для VGA режимов. При вызове этой функции регистры процессора имеют следующие значения: AH=4Fh, AL= номеру функции VBE.

Основные функции VBE решают следующие задачи:

00h

- чтение информации о видеоадаптере,

01h

- чтение параметров указанного режима,

02h

- установка указанного режима SVGA,

03h

- чтение номера активного режима SVGA,

04h

- сохранение / восстановление видеосостояния,

05h

- управление оконной видеопамятью SVGA,

06h

- установка / чтение логической длинны скан-строк,

07h

- установка / чтение начала высвечивания,

08h

- установка / чтение информации о ЦАП - палитре

Номера режимов SVGA могут занимать 15 бит. Стандартом VESA определены режимы SVGA в диапазоне 100h-11Вh.

Ответ на запрос информации о видеоадаптере формируется в виде блока в 256 байт, который помещается по адресу, указанному в команде запроса. В состав блока входит строка-идентификатор видеоадаптера, перечень поддерживаемых режимов, информация о разрядности аналого-цифрового преобразователя и объеме видеопамяти, установленной на плате. Объем видеопамяти указывается в виде числа 64Кбайтных блоков.

Структура информации о параметрах каждого поддерживаемого адаптером видеорежима занимает 256 байт и содержит следующее:

  • атрибуты режима (аппаратная реализуемость, поддержка функций вывода INT 10h, монохромный или цветной режимы, текстовый или графический режимы);

  • атрибуты окон памяти (наличие, возможность чтения и записи);

  • зернистость окна (наименьший размер шага в Кбайтах, с которым окно может быть размещено в видеопамяти);

  • размер окна в Кбайтах;

  • начальные сегменты окон (в адресном пространстве процессора);

  • указатель на адрес функции окна (установки и чтения положения окна);

  • число байт на логическую строку;

  • горизонтальное и вертикальное разрешение;

  • ширина и высота матрицы символов;

  • число бит на пиксел (число бит на пиксел в одном слое получается делением данного параметра на число слоев видеопамяти);

  • число слоев видеопамяти (для режимов с упакованными пикселами устанавливается равным 1);

  • тип модели памяти (текстовый, графика, упакованные пикселы);

  • размер банка в которые группируются строки растра (Кбайт);

  • число страниц (полноэкранных изображений);

  • размеры и битовые позиции масок цветов (красного, зеленого, синего);

  • атрибуты режима непосредственных цветов.

Установка нужного режима требует занесение номера режима в регистр процессора BX.

Операции со скан-строками позволяют варьировать начало высвечивания. Логический экран имеет большие размеры, чем высвечиваемый размер. Это свойство используется для быстрого скроллинга изображения. Кроме того, функция 07h VBE может обеспечить переключение между двумя высвечиваемыми экранами, что создает эффект анимации с помощью двух буферов.

Установка / чтение информации о ЦАП - палитре позволяет назначать число бит приходящихся на каждую цветовую компоненту.