Этот регистр, также как и регистр CSR, является доступным для чтения и для записи. Регистр задает линию сканирования символа, в которой кончается курсор.
D4-D0 Соответствует номеру последней линии курсора для видеоадаптеров VGA и SVGA (рис. 4.3). Для видеоадаптера EGA - номеру следующей линии.
D6-D5 Отклонение курсора. Задает смещение курсора относительно позиции, определенной регистром CLR.
00 - нет отклонения
01 - отклонение вправо на один символ
10 - отклонение вправо на два символа
11 - отклонение вправо на три символа
D7 Не используется.
При установке режима работы видеоадаптера BIOS загружает в регистр конечной линии курсора следующие значения:
Режим |
0,1,2,3 |
4,5,6,D,E,F,10 |
7 |
Содержимое регистра |
07 |
00 |
0Ch |
Изменяя значение регистров начальной и конечной линии курсора, можно менять его положение и размер (рис. 4.3). На левой части рисунка, приведенного ниже, регистр начальной линии курсора равен 0Ah, регистр конечной линии курсора равен 0Bh. На правой части рисунка значение регистров изменено. Регистр начальной линии равен 4, а регистр конечной линии - 5.
PICTURE._FIG_35.PCX;6";4.308";PCX
Рисунок 4.3 Изменение положения курсора
Следующая программа позволяет прочитать значение регистров начальной и конечной линии курсора:
Листинг 4.4. Файл GETCURS.C
#include <stdio.h>
#include <conio.h>
#include "sysp.h" // см. листинг 3.2
#include "sysgraph.h" // см. листинг 3.3
// Описания функций
void main(void);
void WriteReg(unsigned reg, unsigned char data);
unsigned char ReadReg(unsigned reg);
// Главная функция
void main(void) {
char top = 0, bottom = 0;
unsigned crt_address;
BIOS_VAR _far *bios_var_ptr;
// Получаем указатель на область переменных BIOS
bios_var_ptr = (BIOS_VAR _far *) FP_MAKE(0x0000, 0x0410);
// Определяем адрес индексного регистра контроллера ЭЛТ