Формирование изображения в текстовом режиме.
Самый «скромный» знакогенератор имеет формат знакоместа 8x8 точек (рис. 1), причем для алфавитно-цифровых символов туда же входят и межсимвольные зазоры, необходимые для читаемости текста. Лучшую читаемость имеют матрицы 9x14 и 9x16 символов (знакогенератор на микросхеме ПЗУ, может использовать несколько выбираемых банков памяти знакогенератора, а на микросхеме ОЗУ, естественно, обеспечивается и режим, в котором его содержимое можно программно загрузить).
Рис. 1. Изображение буквы А в видеопамяти, знакогенераторе и на экране.
Каждому знакоместу в видеопамяти, кроме кода символа, соответствует еще и поле атрибутов, обычно имеющее размер 1 байт. Этого вполне достаточно, чтобы задать цвет и интенсивность символа и его фона. Для монохромных мониторов, допускающих всего три градации яркости, атрибуты можно трактовать иначе, формируя такие эффекты, как подчеркивание, инверсия, повышенная интенсивность и мигание символов в разных сочетаниях.
Текстовый адаптер также имеет аппаратные средства управления курсором. Знакоместо, на которое указывают регистры координат курсора, оформляется особым образом.
Через прерывание по команде INT 10h передается управление программе обслуживания BIOSа видеосистемы, она из регистра AH процессора берет код, указывающий на конкретную программу BIOS и запускает ее.
Программа BIOS из регистров процессора берет информацию определяющую параметры необходимые для выполнения ее действий.
Устанавливает текущий видеорежим. При вызове:
AH=00h
АL=видеорежим (например, 03h - текстовый, 80х25 строк, 16 цветов; 10h - графический, 640х350 точек,16 цветов).
Задает положение курсора на экране в текстовых координатах на указанной текстовой странице(в том числе в неактивной).
При вызове:
AH=02h
ВН=страница
DН=строка
DL=столбец
Записывает символ и его атрибут в текущую позицию курсора как в графическом, так и в текстовом режимах. В графическом режиме символы не должны переходить на следующую строку. Все коды в AL рассматриваются, как знаки и не управляют положением курсора. После вывода символа курсор следует сместить к следующей позиции функцией 02h. Коэффициент повторения позволяет выводить строки одинаковых символов (но курсор не смещается).
В текстовом режиме символ выводится с указанным атрибутом, т.е. заданного цвета на заданном фоне.
В графическом режиме содержимое BL влияет только на цвет символа, но не фона под ним. Однако графическое изображение под знакоместом затирается.
При вызове:
AH=09h
AL=символ
ВН=страница
ВL=атрибут (текстовый режим) или цвет(графический режим)
СХ=коэффициент повторения
Атрибут символа определяет цвет символа и фона под ним, а также некоторые дополнительные характеристики изображения на экране.
В биты 0...2 байта атрибутов записывается код цвета символа, а бит 3 при исходной настройке видеоадаптера, действующей по умолчанию, управляет яркостью символа. Таким образом, каждый символ независимо от других может принимать любой из 16 возможных цветов. Соответствие кодов, записываемых в байте атрибута, конкретным цветам составляет палитру видеосистемы. Палитра устанавливается программно, по умолчанию действует назначение кодов приведенное в табл. 1.
Таблица 1
Стандартные коды цветов |
|||
Значение кода |
Цвет |
Значение кода |
Цвет |
0h |
Черный |
8h |
Серый |
lh |
Синий |
9п |
Голубой |
2h |
Зеленый |
Ah |
Салатный |
3h |
Бирюзовый |
Bh |
Светло-бирюзовый |
4h |
Красный |
Ch |
Розовый |
5h |
Фиолетовый |
Dh |
Светло-фиолетовый |
6h |
Коричневый |
Eh |
Желтый |
7h |
Белый |
Fh |
Ярко-белый |
Записывает в видеобуфер точку заданного цвета в заданной графической позиции.
При вызове:
AH=0Ch
AL-цвет (номер цветового регистра)
ВН - страница
СХ=графический столбец
DX=графическая строка.