- •Видеосистема
- •Введение
- •Компоненты видеосистемы
- •Монитор
- •Область памяти дисплея
- •Видеоконтроллер
- •Видео-bios
- •Видеорежимы
- •Атрибуты
- •Функции прерывания iнт 10н
- •Функция 0н прерывания int10н: установка видеорежима
- •Функция 01н прерывания int10н: установка размера курсора
- •Функция 02н прерывания int10н: установка положения курсора
- •Функция 0зн прерывания int10н: получение состояния курсора
- •Функция 05н прерывания int10н: выбор активной страницы
- •Функция 06н прерывания int10н: прокрутка экрана вверх
- •Функция 07н прерывания int10н: прокрутка экрана вниз
- •Функция 08н прерывания int10н: считывание символа и его атрибутов в положении курсора
- •Функция 09н прерывания int10н: вывод том символа и атрибутов в положение курсора
- •Функция 0ан прерывания int10н: вывод символа в положение курсора
- •Непосредственный вывод на экран
Видеоконтроллер
Видеоконтроллер генерирует сигналы, управляющие разверткой на экране. Он также содержит счетчик, указывающий текущий адрес в области видеоданных. Этот счетчик указывает схемам видеоадаптера, какие данные в текущий момент обрабатывать и передавать монитору. Контроллер синхронизирует передачу данных с синхросигналом.
Сразу после горизонтального прохода лучей контроллер выдает вертикальный синхросигнал, вызывающий переход к следующей строке вниз и возврат луча к левому краю экрана. Таким образом, последовательно проходится вся занятая изображением область экрана.
Видеоконтроллер также управляет размером и положением курсора и выбором страницы, подлежащей выводу на экран. В его составе также есть несколько регистров, к которым программы могут получить доступ для записи и чтения их содержимого.
Знакогенератор, показанный на рис. 9.1, преобразует коды ASCIIобласти видеоданных в сочетания пикселов, составляющих символы. Декодер атрибутов расшифровывает атрибутов области видеоданных в сигналы, определяющие цвет символа.
Видео-bios
Видео-BIOSвыполняет роль интерфейса видеоадаптера и выполняет такие задачи, как установку курсора и вывод символов. ОЗУ видео-BIOSподдерживает две области видеоданных:
40:[49H] содержит такие данные, как текущий режим, число столбцов и размер области дисплея;
40:[84H] содержит, в частности, число строк и высоту символов.
Подпрограммы в ПЗУ BIOSадаптераVGAначинаются с адреса С000:[0]
Видеорежимы
Видеорежим определяет, выводится ли на экран текст или графика, в цвете или в монохромном режиме, с каким разрешением и каким количеством цветов. Функция 00Н прерывания ВIОSINT 10Hиспользуется для инициализации видео режима исполняемой в данный момент программы или для переключения между текстовыми и графическими режимами. Например, режим 03 — это текстовый режим с 25 строками и 80 столбцами, цветной, с разрешением дисплея 720х400 точек. Функция 0ЕН прерыванияINT 10Hсчитывает номер текущего видеорежима и помещает его в регистрAL. Установка режима также приводит к очистке экрана. Обе упомянутые функции подробно описаны далее.
Текстовый (алфавитно-цифровой) режим используется для вывода символов таблицы ASCII. Он работает одинаково и для цветного, и для монохромного режимов, за исключением того, что цветной режим не позволяет выполнять подчеркивание символов. В нижеследующей таблице приведены наиболее распространенные текстовые режимы, с номером режима, приведенным в первом столбце слева:

Текстовые режимы 00 и 01 — 40-столбцовый формат — изначально были предназначены для CGA, но поддерживаются и адаптерамиVGA.
Текстовые режимы 02 и 03 — 80-столбцовый формат — также изначально были предназначены для CGA, но поддерживаются и адаптерамиVGA.
Текстовый режим 07 (монохромный): стандартный монохромный режим.
Атрибуты
В текстовом режиме байт атрибутов определяет свойства каждого выводимого символа. Когда программа устанавливает атрибут, он остается в установленном состоянии до следующего явного изменения. Поэтому все дальнейшие — символы после того, для которого установлен атрибут, будут иметь такие же атрибуты. Можно использовать функции прерывания INT10Hдля генераций атрибутов; а также выполнения прокрутки экрана, считывания символов и атрибутов или вывода на экран. Чтобы просмотреть область памяти дисплея, воспользуйтесь командойDEBUGВ800:0. В этой области памяти после каждого байта содержащего код символа, стоит байт, содержащий его атрибуты.
Байт атрибутов имеет следующую структуру:

Буквы R,G,Bуказывают позиции битов, соответствующих красному, зеленому и синему цветам.
Бит 7 (ВL) устанавливает атрибут мерцания (может быть заблокирован).
Биты 6—4 определяют цвет фона символа.
Бит 3 (I) устанавливает для символа нормальную (0) или повышенную (1) яркость.
Биты 2—0 определяют составляющие цвета символа.
Фон может иметь один из восьми цветов, а сам символ один из шестнадцати. Мигание и яркость относятся только к символу, хотя можно использовать функцию 10Н прерывания INT 10Hдня отключения возможности мерцания и перехода фона в шестнадцатицветный режим. Также можно выбрать один из шестнадцати цветов для рамки.
Используя различные сочетания трех основных цветов (красного, зеленого и синего), можно представить 8 различных цветов (включая черный и белый), а с использованием нормальной или повышенной интенсивности (Iв нижеследующей таблице) — 16 цветов.

Если цвета фона и символа совпадают, то символ будет невидимым. Также можно использовать байт атрибутов для того, чтобы вызвать мерцание символа. Видеосистема вызывает мерцание, заменяя цвет фона цветом символа примерно каждые две секунды, так что символ исчезает с дисплея.
Вот несколько типичных значений атрибута (где BL— мерцание).

Для монохромного монитора байт атрибутов используется так же, как и для цветного, за исключением того, что бит 0 устанавливает подчеркивание символа. для определения атрибутов можно устанавливать биты следующим образом:
Нормальный режим (черный фон, белые символы): 0000 0111 (07H)
Инверсный режим (черные символы, белый фон): 0111 0000 (70Н)
Значение четырех битов байта атрибутов соответствует битам 0—3 регистра цветов контроллера, в свою очередь указывающих на один из 16 регистров палитры. Биты 0—5 регистра палитры связываются с шестью сигналами RGB(три — цветовых и три — яркостных). Значения битов в регистре палитры указывают на один из 256 регистров в ЦАП, определяющих выводимый цвет.
Можно создавать цвета, выбирая атрибут для каждого символа. Также можно изменять цвета в регистрах палитры с помощью функции 10Н прерывания INT10Н, рассмотренной далее.
Атрибут сохраняет установленное значение до новой установки. Атрибуты устанавливаются следующими функциями прерывания INT10Н (рассмотренными далее):
06Н — прокрутка экрана вверх;
07Н — прокрутка экрана вниз;
09Н — вывести символы с указанными атрибутами;
13Н — вывести строку символа.
Например, следующая последовательность инструкций с помощью функции 09Н прерывания INT10Н выводит 12 коричневых, мигающих (1110) звездочек (*) на синем (0001) фоне:


Можно просмотреть выполнение этих инструкций в DEBUGи попробовать указывать различные атрибуты.
