С для профессиональных программистов




Простейшая демонстрационная программа - часть 5


goto_xy(x,y);                           /* перемещение курсора */

/* чтение текущей позиции курсора */

void read_cursor_xy(x,y)

char *x,*y;

union REGS r;

r.h.ah = 3; /* чтение позиции курсора */

r.h.bh = 0; /* видеостраница 0 */

int86(0x10,&r,&r);

*y = r.h.dl;

*x = r.h.dh;

/* установка палитры */

void palette(pnum)

int pnum;

union REGS r;

r.h.bh = 1;  /* код для графического режима 4 */

r.h.bl = pnum;

r.h.ah = 11; /* функция установки палитры */

int86(0x10,&r,&r);

/* установка видеорежима */

void mode(mode_code)

int mode_code;

union REGS r;

r.h.al = mode_code;

r.h.ah = 0;

int86(0x10,&r,&r);

/* перемещение курсора в позицию x,y */

void goto_xy(x,y)

int x,y;

union REGS r;

r.h.ah = 2; /* функция адресации курсора */

r.h.dl = x; /* координаты столбца */

r.h.dh = y; /* координаты строки */

r.h.bh = 0; /* видеостраница 0 */

int86(0x10,&r,&r);

/* установка размера (формы) курсора */

void size_cursor(start,end)

char start,end; /* начальная и конечная строки

развертки */

union REGS r;

r.h.ah = 1; /* функция адресации курсора */

r.h.ch = start;

r.h.cl = end;

int86(0x10,&r,&r);

/* скроллинг в окне вперед и назад */

void     scroll_window(startx,starty,endx,endy,lines,direct)

char      startx,starty; /* верхний левый угол */

char      endx,endy;     /* нижний правый угол */

char      lines;         /* мощность скроллинга */

char      direct;        /* вверх или вниз */

union REGS r;

if ( direct == UP ) r.h.ah = 6; /* скроллинг вверх */

else r.h.ah = 7; /* скроллинг вниз */

r.h.al          =   lines;

r.h.ch         =   starty;

r.h.cl          =   startx;

r.h.dh        =   endy;

r.h.dl          =   endx;

r.h.bh        =   0; /* режим отображения */

int86(0x10,&r,&r);

 




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