int main(void) { int i; char key, maxx, maxy, page, x, y, attr[10]; char far *b800 = MK_FP(0xb800,0x0000); randomize(); for (i = 0; i < 1990; i++) { b800[i*2] = text[i]; b800[i*2+1] = random(256); } maxx = *(char far *)MK_FP(0x0000,0x044A)-1; maxy = *(char far *)MK_FP(0x0000,0x0484); page = *(char far *)MK_FP(0x0000,0x0462); while (1) { x = *(char far *)MK_FP(0x0000,0x0450+page*2); y = *(char far *)MK_FP(0x0000,0x0450+page*2+1); attr[0] = b800[x*2+y*160]; // символ itoa(b800[y*160+x*2+1],attr+2,2); // атрибут в bin for (i = 0; i < 10; i++) { b800[(1990+i)*2] = attr[i]; b800[(1990+i)*2+1] = 0x07; } key = getch(); if ((key == 75) || (key == 77) || (key == 72) || (key == 80)) { if ((key == 75) && x) x--; // left else if ((key == 77) && (x < maxx)) x++; // right else if ((key == 72) && y) y--; // up else if ((key == 80) && (y < maxy)) y++; // down asm { mov ah, 0x02 mov bh, page mov dh, y mov dl, x int 0x10 } } else if (key == 27) return 0; // esc } } |