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



Положение подчеркивания символа (ULR) (индекс14h)


Регистр ULR используется только в текстовых режимах. Он определяет положение подчеркивания символа. Подчеркивание предстовляет собой одну из линий в матрице символа. Подчеркивание отображается, если установлен атрибут подчеркивания. Отображение подчеркивания можно запретить, записав в регистр ULR величину большую, чем высота символов.

  • D4-D0 Определяют положение подчеркивания символа (0-13).
  • D5 Для VGA установка этого бита означает, что для каждого знакоместа счетчик адреса регенерации будет увеличиваться на 4 вместо 1.
  • D6 Установка для VGA этого бита выбирает адресацию видеопамяти по двойным словам.
  • D7 Не используется.
  • Программа, приведенная ниже, использует регистры контроллера ЭЛТ для перевода видеоадаптеров EGA и VGA в нестандартный текстовый режим, имеющий разрешение по вертикали 43 строки. Данная программа переводит видеоадаптер в текстовый режим с разрешением по вертикали 43 символа и затем отображает на экране диспля 43 строки текста.

    #include <graph.h>

    void Set43Line(void);

    void main(void) {

    int i;

    // устанавливаем текстовый режим, принятый по умолчанию; // функция _setvideomode определена в графической библиотеке // трансляторов Microsoft Quick C 2.5 и C 6.0

    _setvideomode(_DEFAULTMODE);

    // перепрограммируем видеоадаптер для отображения 43 строк

    Set43Line();

    // выводим на экран дисплея 43 строки текста

    for(i = 0; i < 43; i++) printf("text line number %d\n", i);

    getch();

    // восстанавливаем режим с 25 текстовыми строками

    _setvideomode(_DEFAULTMODE); }

    /** *.Name Set43Line * *.Title Установка текстового режима, использующего 43 строки. * *.Descr Переводит адаптеры EGA и VGA в режим отображения 43 * строк текста. * *.Proto void Set43Line(void) * *.Params Отсутствуют. * * *.Return Не используется. * *.Sample 43line.c **/ void Set43Line(void) {

    #define CHAR_SIZE 8 // новая высота символов

    _asm {

    ; устанавливаем регистр es на начало оперативной памяти

    xor ax,ax mov es,ax

    ; получаем адрес порта индексного регистра контроллера ЭЛТ ; (3B4h/3D4h), ; в монохромных режимах для адресации к индексному регистру ; используется порт с адресом 3B4h, а в цветных - порт 3D4h




    Содержание  Назад  Вперед