Атрибуты символов (монохромный режим) - часть 4
high = inp(adr_CRT+1);
outp(adr_CRT,0xd);
low = inp(adr_CRT+1);
offs = ((high << 8) + low) >> 4;
// Добавляем к базовому адресу видеопамяти смещение,
// взятое из регистров начального адреса
vbase += offs;
return(vbase);
}
//======================================================
// Функция возвращает количество символов в строке
//======================================================
int GetColumn(void) {
// Считываем содержимое переменной BIOS, расположенной по
// адресу 0000:044Ah. В ней записано количество символов
// в строке для текущего режима
return(*(int _far *)(FP_MAKE(0x40,0x4a)));
}
//======================================================
// Функция устанавливает режим работы видеоадаптера, заданный
// параметром vmode
//======================================================
void SetVideoMode( unsigned char vmode ) {
union REGS inregs, outregs;
// Устанавливаем режим vmode
inregs.h.ah = 0x0;
inregs.h.al = vmode;
int86( 0x10, &inregs, &outregs );
}
//======================================================
// Функция управляет назначением атрибутов символов.
// mode = 0 атрибут управляет интенсивностью цвета символов
// mode = 1 атрибут управляет миганием символов
//======================================================
void SetBlinkIntensity( unsigned char mode ) {
union REGS inregs, outregs;
inregs.h.ah = 0x10;
inregs.h.al = 0x3;
inregs.h.bl = mode;
int86( 0x10, &inregs, &outregs );
}
//======================================================
// Функция выводит на экран краткую справку о программе
//======================================================
void Hello(void) {
printf( "\nCopyright (C)Frolov G.V.,1995. E-mail:"
"frolov@glas.apc.org\n"
"\nФормат вызова: TEXTATTR <режим> <интенсивность>"
"\n <режим>: любые текстовые режимы"