int main(int argc,char** argv) { int old_apage; int old_vpage; int new_apage; int new_vpage; struct videoconfig vc; int ret; if(argc==1) { cputs("用法:\n\tcread 文件名\n"); return 0; } // set_video_mode(&vc); // ROWS=_setvideomoderows(_TEXTC80,_MAXTEXTROWS); _getvideoconfig(&vc); ROWS = vc.numtextrows; COLS = vc.numtextcols; old_apage = _getactivepage(); old_vpage = _getvisualpage(); if(vc.numvideopages>1) { if(old_apage >=1) { new_apage = 0; } else { new_apage = 1; } } else { new_apage = old_apage; } if(old_apage != new_apage) { _setvisualpage(new_apage); _setactivepage(new_apage); _clearscreen(_GCLEARSCREEN); } print_videoconfig(&vc); OUT_PRINTF_BEGIN "old_visualpage=%d\nold_active_page=%d\n", old_vpage, old_apage OUT_PRINTF_END new_vpage = _getvisualpage(); new_apage = _getactivepage(); OUT_PRINTF_BEGIN "new_visualpage=%d\nnew_active_page=%d\n", new_vpage, new_apage OUT_PRINTF_END ret = process(argc,argv); _setactivepage(old_apage); _setvisualpage(old_vpage); // _setvideomode( _DEFAULTMODE ); return ret; }
static int iqc_setpos( void ) { union REGS ibm_registers; /* call the BDOS function 0x10 to read the current cursor position */ ibm_registers.h.ah = 3; ibm_registers.h.bh = (unsigned char) _getvisualpage(); int86( 0x10, &ibm_registers, &ibm_registers ); /* set text to this position */ _settextposition( ibm_registers.h.dh, ibm_registers.h.dl ); /* and move down one position */ prn_xprintf( stdout, "\n" ); return TRUE; }