📄 pcvt_vtf.c
字号:
{ if(svsp->cur_offset < (svsp->scrr_end * svsp->maxcol)) { svsp->cur_offset += (svsp->maxcol-svsp->col); svsp->col = 0; } else { roll_up(svsp, 1); svsp->cur_offset -= svsp->col; svsp->col = 0; }}/*---------------------------------------------------------------------------* * set dec private modes, esc [ ? x h *---------------------------------------------------------------------------*/voidvt_set_dec_priv_qm(struct video_state *svsp){ switch(svsp->parms[0]) { case 0: /* error, ignored */ case 1: /* CKM - cursor key mode */ svsp->ckm = 1; break; case 2: /* ANM - ansi/vt52 mode */ break; case 3: /* COLM - column mode */ vt_col(svsp, SCR_COL132); break; case 4: /* SCLM - scrolling mode */ case 5: /* SCNM - screen mode */ break; case 6: /* OM - origin mode */ svsp->m_om = 1; break; case 7: /* AWM - auto wrap mode */ svsp->m_awm = 1; swritefkl(7,(u_char *)"AUTOWRAPENABLE *",svsp); break; case 8: /* ARM - auto repeat mode */ kbrepflag = 1; break; case 9: /* INLM - interlace mode */ case 10: /* EDM - edit mode */ case 11: /* LTM - line transmit mode */ case 12: /* */ case 13: /* SCFDM - space compression / field delimiting */ case 14: /* TEM - transmit execution mode */ case 15: /* */ case 16: /* EKEM - edit key execution mode */ break; case 25: /* TCEM - text cursor enable mode */ if(vsp == svsp) sw_cursor(1); /* cursor on */ svsp->cursor_on = 1; break; case 42: /* NRCM - 7bit NRC characters */ break; }}/*---------------------------------------------------------------------------* * reset dec private modes, esc [ ? x l *---------------------------------------------------------------------------*/voidvt_reset_dec_priv_qm(struct video_state *svsp){ switch(svsp->parms[0]) { case 0: /* error, ignored */ case 1: /* CKM - cursor key mode */ svsp->ckm = 0; break; case 2: /* ANM - ansi/vt52 mode */ break; case 3: /* COLM - column mode */ vt_col(svsp, SCR_COL80); break; case 4: /* SCLM - scrolling mode */ case 5: /* SCNM - screen mode */ break; case 6: /* OM - origin mode */ svsp->m_om = 0; break; case 7: /* AWM - auto wrap mode */ svsp->m_awm = 0; swritefkl(7,(u_char *)"AUTOWRAPENABLE ",svsp); break; case 8: /* ARM - auto repeat mode */ kbrepflag = 0; break; case 9: /* INLM - interlace mode */ case 10: /* EDM - edit mode */ case 11: /* LTM - line transmit mode */ case 12: /* */ case 13: /* SCFDM - space compression / field delimiting */ case 14: /* TEM - transmit execution mode */ case 15: /* */ case 16: /* EKEM - edit key execution mode */ break; case 25: /* TCEM - text cursor enable mode */ if(vsp == svsp) sw_cursor(0); /* cursor off */ svsp->cursor_on = 0; break; case 42: /* NRCM - 7bit NRC characters */ break; }}/*---------------------------------------------------------------------------* * set ansi modes, esc [ x *---------------------------------------------------------------------------*/voidvt_set_ansi(struct video_state *svsp){ switch(svsp->parms[0]) { case 0: /* error, ignored */ case 1: /* GATM - guarded area transfer mode */ case 2: /* KAM - keyboard action mode */ case 3: /* CRM - Control Representation mode */ break; case 4: /* IRM - insert replacement mode */ svsp->irm = 1; /* Insert mode */ break; case 5: /* SRTM - status report transfer mode */ case 6: /* ERM - erasue mode */ case 7: /* VEM - vertical editing mode */ case 10: /* HEM - horizontal editing mode */ case 11: /* PUM - position unit mode */ case 12: /* SRM - send-receive mode */ case 13: /* FEAM - format effector action mode */ case 14: /* FETM - format effector transfer mode */ case 15: /* MATM - multiple area transfer mode */ case 16: /* TTM - transfer termination */ case 17: /* SATM - selected area transfer mode */ case 18: /* TSM - tabulation stop mode */ case 19: /* EBM - editing boundary mode */ break; case 20: /* LNM - line feed / newline mode */ svsp->lnm = 1; break; }}/*---------------------------------------------------------------------------* * reset ansi modes, esc [ x *---------------------------------------------------------------------------*/voidvt_reset_ansi(struct video_state *svsp){ switch(svsp->parms[0]) { case 0: /* error, ignored */ case 1: /* GATM - guarded area transfer mode */ case 2: /* KAM - keyboard action mode */ case 3: /* CRM - Control Representation mode */ break; case 4: /* IRM - insert replacement mode */ svsp->irm = 0; /* Replace mode */ break; case 5: /* SRTM - status report transfer mode */ case 6: /* ERM - erasue mode */ case 7: /* VEM - vertical editing mode */ case 10: /* HEM - horizontal editing mode */ case 11: /* PUM - position unit mode */ case 12: /* SRM - send-receive mode */ case 13: /* FEAM - format effector action mode */ case 14: /* FETM - format effector transfer mode */ case 15: /* MATM - multiple area transfer mode */ case 16: /* TTM - transfer termination */ case 17: /* SATM - selected area transfer mode */ case 18: /* TSM - tabulation stop mode */ case 19: /* EBM - editing boundary mode */ break; case 20: /* LNM - line feed / newline mode */ svsp->lnm = 0; break; }}/*---------------------------------------------------------------------------* * clear tab stop(s) *---------------------------------------------------------------------------*/voidvt_clrtab(struct video_state *svsp){ int i; if(svsp->parms[0] == 0) svsp->tab_stops[svsp->col] = 0; else if(svsp->parms[0] == 3) { for(i=0; i<MAXTAB; i++) svsp->tab_stops[i] = 0; }}/*---------------------------------------------------------------------------* * DECSC - save cursor & attributes *---------------------------------------------------------------------------*/voidvt_sc(struct video_state *svsp){ svsp->sc_flag = 1; svsp->sc_row = svsp->row; svsp->sc_col = svsp->col; svsp->sc_cur_offset = svsp->cur_offset; svsp->sc_attr = svsp->c_attr; svsp->sc_awm = svsp->m_awm; svsp->sc_om = svsp->m_om; svsp->sc_G0 = svsp->G0; svsp->sc_G1 = svsp->G1; svsp->sc_G2 = svsp->G2; svsp->sc_G3 = svsp->G3; svsp->sc_GL = svsp->GL; svsp->sc_GR = svsp->GR; svsp->sc_sel = svsp->selchar; svsp->sc_vtsgr = svsp->vtsgr;}/*---------------------------------------------------------------------------* * DECRC - restore cursor & attributes *---------------------------------------------------------------------------*/voidvt_rc(struct video_state *svsp){ if(svsp->sc_flag == 1) { svsp->sc_flag = 0; svsp->row = svsp->sc_row; svsp->col = svsp->sc_col; svsp->cur_offset = svsp->sc_cur_offset; svsp->c_attr = svsp->sc_attr; svsp->m_awm = svsp->sc_awm; svsp->m_om = svsp->sc_om; svsp->G0 = svsp->sc_G0; svsp->G1 = svsp->sc_G1; svsp->G2 = svsp->sc_G2; svsp->G3 = svsp->sc_G3; svsp->GL = svsp->sc_GL; svsp->GR = svsp->sc_GR; svsp->selchar = svsp->sc_sel; svsp->vtsgr = svsp->sc_vtsgr; }}/*---------------------------------------------------------------------------* * designate a character set as G0, G1, G2 or G3 for 94/96 char sets *---------------------------------------------------------------------------*/voidvt_designate(struct video_state *svsp){ u_short *ctp = NULL; u_char ch; if(svsp->whichi == 1) ch = svsp->which[0]; else { int i; if(svsp->dld_id[0] == '\0') return; if(!(((adaptor_type == EGA_ADAPTOR) || (adaptor_type == VGA_ADAPTOR)) && (vgacs[svsp->vga_charset].secondloaded))) { return; } for(i = (svsp->whichi)-1; i >= 0; i--) { if(svsp->which[i] != svsp->dld_id[i]) return; }#ifdef HAVECSE_DOWNLOADABLE ctp = cse_downloadable; swcsp(svsp, ctp);#endif return; } if(((adaptor_type == EGA_ADAPTOR) || (adaptor_type == VGA_ADAPTOR)) && (vgacs[svsp->vga_charset].secondloaded)) { if((ch == svsp->dld_id[0]) && (svsp->dld_id[1] == '\0')) {#ifdef HAVECSE_DOWNLOADABLE ctp = cse_downloadable; swcsp(svsp, ctp);#endif return; } switch(ch) { case 'A': /* British or ISO-Latin-1 */ switch(svsp->state) { case STATE_BROPN: /* designate G0 */ case STATE_BRCLO: /* designate G1 */ case STATE_STAR: /* designate G2 */ case STATE_PLUS: /* designate G3 */#ifdef HAVECSE_BRITISH ctp = cse_british;#endif break; case STATE_MINUS: /* designate G1 (96)*/ case STATE_DOT: /* designate G2 (96)*/ case STATE_SLASH: /* designate G3 (96)*/#ifdef HAVECSE_ISOLATIN ctp = cse_isolatin;#endif break; } break; case 'B': /* USASCII */#ifdef HAVECSE_ASCII ctp = cse_ascii;#endif break; case 'C': /* Finnish */ case '5': /* Finnish */#ifdef HAVECSE_FINNISH ctp = cse_finnish;#endif break; case 'E': /* Norwegian/Danish */ case '6': /* Norwegian/Danish */#ifdef HAVECSE_NORWEGIANDANISH ctp = cse_norwegiandanish;#endif break; case 'H': /* Swedish */ case '7': /* Swedish */#ifdef HAVECSE_SWEDISH ctp = cse_swedish;#endif break; case 'K': /* German */#ifdef HAVECSE_GERMAN ctp = cse_german;#endif break; case 'Q': /* French Canadien */#ifdef HAVECSE_FRENCHCANADA ctp = cse_frenchcanada;#endif break; case 'R': /* French */#ifdef HAVECSE_FRENCH ctp = cse_french;#endif break; case 'Y': /* Italian */#ifdef HAVECSE_ITALIAN ctp = cse_italian;#endif break; case 'Z': /* Spanish */#ifdef HAVECSE_SPANISH ctp = cse_spanish;#endif break; case '0': /* special graphics */#ifdef HAVECSE_SPECIAL ctp = cse_special;#endif break; case '1': /* alternate ROM */#ifdef HAVECSE_ALTERNATEROM1 ctp = cse_alternaterom1;#endif break; case '2': /* alt ROM, spec graphics */#ifdef HAVECSE_ALTERNATEROM2 ctp = cse_alternaterom2;#endif break; case '3': /* HP Roman 8, upper 128 chars*/#ifdef HAVECSE_ROMAN8 ctp = cse_roman8;#endif break; case '4': /* Dutch */#ifdef HAVECSE_DUTCH ctp = cse_dutch;#endif break; case '<': /* DEC Supplemental */#ifdef HAVECSE_SUPPLEMENTAL ctp = cse_supplemental;#endif break; case '=': /* Swiss */#ifdef HAVECSE_SWISS ctp = cse_swiss;#endif break; case '>': /* DEC Technical */#ifdef HAVECSE_TECHNICAL ctp = cse_technical;#endif break; default: break; } } else { switch(ch) { case 'A': /* British or ISO-Latin-1 */ switch(svsp->state) { case STATE_BROPN: /* designate G0 */ case STATE_BRCLO: /* designate G1 */ case STATE_STAR: /* designate G2 */ case STATE_PLUS: /* designate G3 */#ifdef HAVECSD_BRITISH ctp = csd_british;#endif break; case STATE_MINUS: /* designate G1 (96)*/ case STATE_DOT: /* designate G2 (96)*/ case STATE_SLASH: /* designate G3 (96)*/#ifdef HAVECSD_ISOLATIN ctp = csd_isolatin;#endif break; } break; case 'B': /* USASCII */#ifdef HAVECSD_ASCII ctp = csd_ascii;#endif break; case 'C': /* Finnish */ case '5': /* Finnish */#ifdef HAVECSD_FINNISH ctp = csd_finnish;#endif break; case 'E': /* Norwegian/Danish */ case '6': /* Norwegian/Danish */#ifdef HAVECSD_NORWEGIANDANISH ctp = csd_norwegiandanish;#endif break; case 'H': /* Swedish */ case '7': /* Swedish */#ifdef HAVECSD_SWEDISH ctp = csd_swedish;#endif break; case 'K': /* German */#ifdef HAVECSD_GERMAN ctp = csd_german;#endif break; case 'Q': /* French Canadien */#ifdef HAVECSD_FRENCHCANADA ctp = csd_frenchcanada;#endif break; case 'R': /* French */#ifdef HAVECSD_FRENCH ctp = csd_french;#endif break; case 'Y': /* Italian */#ifdef HAVECSD_ITALIAN ctp = csd_italian;#endif break; case 'Z': /* Spanish */#ifdef HAVECSD_SPANISH ctp = csd_spanish;#endif break; case '0': /* special graphics */#ifdef HAVECSD_SPECIAL ctp = csd_special;#endif break; case '1': /* alternate ROM */#ifdef HAVECSD_ALTERNATEROM1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -