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



         

Прикладная часть TSR-программы - часть 7


register int i;

char far *v;

v = vid_mem;

v += (x*160) +y*2;

*v++ = ch;  /* вывести символ */

*v = attrib;                       /* вывести атрибуты */

/* Сохранить содержимое области экрана */

void save_video(num)

int num;

register int i,j;

char far *v, far *t;

char *but_ptr;

but_ptr = frame[num].p;

v = vid_mem;

t=v;

for(i=frame[num].starty; i<frame[num].endy+1; i++)

for(j=frame[num].startx; j<frame[num].endx+1; j++)

t = (v + (j*160) + i*2);

*buf_ptr++ = *t++;

*buf_ptr++ = *t;

*(t-1) = ' ';  /* очистить окно */

/* Восстановить содержимое области экрана */

void save_video(num)

int num;

register int i,j;

char far *v, far *t;

char *but_ptr;

but_ptr = frame[num].p;

v = vid_mem;

t=v;

for(i=frame[num].starty; i<frame[num].endy+1; i++)

for(j=frame[num].startx; j<frame[num].endx+1; j++)

v = t;

v += (j*160) + i*2;

*v++ = *but_ptr++;   /* вывести символ */

*v = *but_ptr++;   /* вывести атрибуты */

frame[num].active = 0; /* восстановить изображение */

/* Возвращает код текущего видеорежима */

video_mode()

union REGS r;

r.h.ah =15;  /* получить код видеорежима */

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

/**********************************************************

калькулятор **********************************************************/

#define MAX 100

int *p;   /* указатель стека */

int *tos; /* указатель вершины стека  */

int *bos; /* указатель дна стека */

char in[80], out[80];

int stack[MAX];

/* Стековый, с постфиксной записью калькулятор

на четыре функции */

void calc()

int      answer;

int      a, b;

p =     stack;

tos     = p;

bos    = p + MAX - 1;

window(0);

do

window_xy(0, 0, 0);

window_cleol(0);

window_puts(0, " : "); /* промптер калькулятора */

window_gets(0, in);

window_puts(0, " \n ");

window_cleol(0);

switch(*in)

case '+ ':

a = pop();

b = pop();

answer = a + b;

push(a+b);

break;

case '-':




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