/* ** ANSILOAD.C - tries to detect if an ANSI-style driver is loaded ** ** public domain by Bob Jarvis */ #include #include typedef enum {FALSE, TRUE} LOGICAL; void goto_rc(int row, int col) { union REGS regs; regs.h.ah = 2; regs.h.bh = 0; /* assumes we're using video page 0 */ regs.h.dh = (unsigned char)row; regs.h.dl = (unsigned char)col; int86(0x10, ®s, ®s); } void get_rc(int *row, int *col) { union REGS regs; regs.h.ah = 3; regs.h.bh = 0; /* again, assume video page 0 */ int86(0x10, ®s, ®s); *row = regs.h.dh; *col = regs.h.dl; } int is_ansi_loaded(void) { int save_r, save_c; int new_r, new_c; int isloaded; get_rc(&save_r, &save_c); goto_rc(15,15); fputs("\x1B[0;0H", stderr); get_rc(&new_r, &new_c); if(new_r == 0 && new_c == 0) isloaded = TRUE; else { isloaded = FALSE; fputs("\b\b\b\b\b\b \b\b\b\b\b\b", stderr); } goto_rc(save_r, save_c); return isloaded; } void main(void) { if(is_ansi_loaded()) puts("ANSI.SYS is loaded"); else puts("ANSI.SYS is NOT loaded"); }