/*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ prntinst = installs graphics print screen routine ³ ³ to replace the original print screen ³ ³ routine. ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/ #include unsigned char out_buff[565]={"\x1b*5\x30\x02"}; void interrupt print_handler() { unsigned char background; int i,x; void put_out(char character); put_out(0x1b); put_out(0x33); put_out(0x15); for (i=0; i<12; i++) put_out(0x0A); background = readPixel(0,0); for (x=639; x>=7; x-=8) { printrow(x,background); } put_out('\x0C'); } printrow(int x,int background) { unsigned char savechar,temp; int i, j, newy,y; char status(); void put_out(); for (y=0,j=84; y<=479; y++,j++) { savechar = 0; for (i=0; i<8; i++) { temp = readPixel(x-i,y); if (temp != background) savechar |= 1; if (i!=7) savechar <<= 1; } out_buff[j] = savechar; } for (i=0; i<565; i++) { put_out(out_buff[i]); } put_out('\r'); put_out('\n'); } char status() { char temp; temp = inp(0x379); return (temp & 0x80); } void put_out(char character) { int temp; while (!status()); outp(0x378,character); outp(0x37A,0x0D); outp(0x37A,0x0C); } int readPixel (int x, int y) { #define DISPLAY_OUT(index,val) {outp(0x3CE,index);\ outp(0x3CF,val);} int i,j,color=0; unsigned char mask, exist_color; char far *base; base = (char far *) (0xA0000000L + ((long)y * 80L + ((long)x/8L))); mask = 0x80 >> (x % 8); for (i=0; i<4; i++) { DISPLAY_OUT(4,i); DISPLAY_OUT(5,0); exist_color = *base & mask; if (exist_color != 0) color |= 0x01<