Программирование видеоадаптеров




Регистр сравнения линий (Line Compare Register - LCR) (индекс18h)


Позволяет разделить изображение на две независимые части. При этом одну из них можно свертывать. Содержимое другой части экрана остается на месте.

Регистр LCR используют совместно с регистром начального адреса. Когда счетчик горизонтальных линий сканирования достигает значения, записанного в регистре LCR, происходит сброс счетчика адреса регенерируемой видеопамяти в ноль. В результате экран разбивается на две части. В верхней части экрана отображаются данные, на которые указывает регистр начального адреса, а в нижней - данные, находящиеся в начале видеопамяти. Процесс разделения экрана иллюстрируется рисунком 4.7.

PICTURE._FIG_39.PCX;6";4.308";PCX

Рисунок 4.7   Процесс разделения экрана

Изображение в верхней части экрана можно перемещать, изменяя содержимое регистра начального адреса.

У видеоадаптера EGA регистр сравнения линий имеет 9 разрядов. Девятый бит регистра доступен через дополнительный регистр (OVR) контроллера ЭЛТ. Регистр сравнения линий видеоадаптера VGA имеет 10 разрядов. Десятый бит регистра LCR расположен в регистре MSLR.

При изменении режима работы видеоадаптера, BIOS записывает в регистр сравнения линий значение 0FFh.

Программа, представленная ниже, выводит на экран монитора 25 строк текста, а затем, после нажатия любой клавиши, разделяет изображение на две части.

Листинг 4.9. Файл SCRSPLIT.C

#include <dos.h>

#include <stdio.h>

#include <conio.h>

void        __pascal __far Split(unsigned);

void        main(void);

// Главная функция

void main(void) {

 

int   i;

 

for(i = 0; i < 25; i++)

                                 

printf("Строка номер %d.\n",i);

 

getch();

// Разделяем экран по линии 200

 

Split(200);

// Ожидаем нажатие на клавиши клавиатуры

 

getch();

// После завершения программы значения регистров не

// восстанавливеются!

}

Для разделения изображения на экране монитора предназначена функция Split. Исходный текст этой функции представлен в листинге 4.10.

Листинг 4.10. Файл SPLIT.ASM




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