next page key */ 28 , cm32 , /* the HELP key on the 220*/ 29 , cm33 , /* the DO key ,get line ed*/ 24 , cm34 , /* backspace in vt200 mode*/ 31 , cm35 , /* f17 */ 32 , cm36 , /* f18 */ 33 , cm37 , /* f19 */ 34 , cm38 , /* f20 */ 21 , cm39 , /* f10 (exit) */ 26 , cm40 , /* f14 (stats) */ '\0', cm0 /* end of list */ } ; static struct mapcmd cvt220[]={ 'A' , cm1 , 'B' , cm2 , 'C' , cm3 , 'D' , cm4 , 'Q' , cm5 , 'R' , cm6 , 'S' , cm7 , 'P' , cm8 , 'H' , cm9 , 'h' , cm10 , '\027',cm11 , 'p' , cm12 , 'q' , cm13 , 'r' , cm14 , 's' , cm15 , 't' , cm16 , 'u' , cm17 , 'v' , cm18 , 'w' , cm19 , 'x' , cm20 , 'y' , cm21 , 'm' , cm22 , 'l' , cm23 , 'n' , cm24 , 'M' , cm25 , 1 , cm26 , /* the find key for vt220 */ 2 , cm27 , /* the INSERT HERE */ 3 , cm28 , /* the remove key */ 4 , cm29 , /* the select key */ 5 , cm30 , /* the previous page */ 6 , cm31 , /* the next page key */ 28 , cm32 , /* the HELP key on the 220*/ 29 , cm33 , /* the DO key ,get line ed*/ 24 , cm34 , /* backspace in vt200 mode*/ 31 , cm35 , /* f17 */ 32 , cm36 , /* f18 */ 33 , cm37 , /* f19 */ 34 , cm38 , /* f20 */ 21 , cm39 , /* f10 (exit) */ 26 , cm40 , /* f14 (stats) */ '\0', cm0 } ; static struct mapcmd cansi[]={ 'A' , cm1 , 'B' , cm2 , 'C' , cm3 , 'D' , cm4 , 'Q' , cm5 , 'R' , cm6 , 'S' , cm7 , 'P' , cm8 , 'H' , cm9 , 'h' , cm10 , '\027',cm11 , 'p' , cm12 , 'q' , cm13 , 'r' , cm14 , 's' , cm15 , 't' , cm16 , 'u' , cm17 , 'v' , cm18 , 'w' , cm19 , 'x' , cm20 , 'y' , cm21 , 'T' , cm22 , 'U' , cm23 , 'n' , cm24 , 'M' , cm25 , '\0', cm0 } ; /* get the function/keypad key and get the command executed */ fcnlookup(ch) register char ch; { register struct mapcmd *mp,*mpinit ; extern int termtype, goldcount ; switch (termtype) { case _vt100: mpinit = cvt100 ; break ; case _vt220: mpinit = cvt220 ; break ; case _ansi: mpinit = cansi ; break ; } for (mp=mpinit; mp->cmdmap != 0;mp++) if (mp->cmdchar == ch) break ; return( mp->cmdmap ) ; } funcommand(ch) char ch ; { extern int goldcount ; register int gcount,cmdindex ; gcount = goldcount ; cmdindex = fcnlookup(ch) ; if (gcount == 0) then switch (cmdindex) { case cm0: vtbell() ;break ; /* error */ case cm1: vtmvup() ;break ; /* move up */ case cm2: vtmvdown() ;break ; /* move down */ case cm3: vter() ;break ; /* move right in line */ case cm4: vtel() ;break ; /* move left in line */ case cm5: vtnextpage() ;break ; /* display next page */ case cm6: vtfnext(1) ;break ; /* find next occurance */ case cm7: vtdeleteline();break; /* delete line or range*/ case cm8: vtgold() ;break ; /* shift keypad */ case cm9: vthelp() ;break ; /* enter help */ case cm10: vtinit() ;break ; /* reinit terminal */ case cm11: vthelp() ;break ; /* enter help */ case cm12: vtbline() ;break ; /* start of next line */ case cm13: vtnxtword() ;break ; /* next word */ case cm14: vteoln() ;break ; /* end of current line */ case cm15: vtmark() ;break ; /* get paste text */ case cm16: vtlastpage() ;break ; /* last page of file */ case cm17: vtfirstpage();break ; /* first page of file */ case cm18: vtpaste() ;break ; /* insert cut text */ case cm19: vtflast() ;break ; /* forward search */ case cm20: vtswpch() ;break ; /* swp adjacent chars */ case cm21: vtapp() ;break ; /* append paste buffer */ case cm22: vtdelword() ;break ; /* kill next word */ case cm23: vtdelc() ;break ; /* delete char and merg*/ case cmSCCMD C [.050036]SCCMD .C [.050036]    X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>?\\\\\\\\\`:#@'="\abcdefghi\\\\\\\jklmnopqr\\\\\\\~stuvwxyz\\\\\\\\\\\\\\\\\\\\\\{ABCDEFGHI\\\\\\}JKLMNOPQR\\\\\\\\STUVWXYZ\\\\\\0123456789\\\\\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@ggh<i|o<m<4p<p<k|Zn<l fr rwx<x<x<x޺<w@]@@fjnr]Ze@@|> | |v<H|  |  |xz|  |zt f r   < &^ @&@'*/V,"?Lh:hmBmz|z{x`y~|fN|@@|@͂|@ ݃ƃ<ns<|Ŏ |️|ep|u|-@率|<ᄇ2ֻr||ZRM | ntB|xyvZw|J=|R>|J? nnaa|bddfcm16: vtfill() ;break; /* fill line */ case cm17: vtcenter() ;break; /* center line */ case cm18: vtcutzap() ;break; /* clear paste buffer */ case cm19: vtprflast();break; /* find next reverse */ case cm20: vtswpline() ;break; /* swap lines */ case cm21: vtspins() ;break; /* insert special */ case cm22: vtunword() ;break; /* undelete word */ case cm23: vtunchar() ;break; /* undelete character */ case cm24: vtoverwrite();break; /* toggle insert */ case cm25: vtsetpat() ;break; /* enter search pattern */ case cm26: vtprfnext(1) ;break; /* findnext,prompt (220)*/ case cm40: qiostats() ;break; } if ( gcount == 2 ) then switch( cmdindex ) { case cm1: vtpopmark() ;break; case cm2: vtpushmark() ;break; case cm25: vtsetrep() ;break; case cm6: case cm26: vtfnext(0) ;break; } } fungoldcommand(ch) register char ch ; { struct mapcmd *mp ; extern int termtype, goldcount ; register int cmdindex, gcount ; int status ; if ( (gcount = goldcount) == 0 ) then return(0) ; ch = tolower(ch); for (mp=goldkeys; mp->cmdmap != 0;mp++) if (tolower(mp->cmdchar) == ch) break ; cmdindex = mp->cmdmap ; if ( gcount == 1 ) switch (cmdindex) { status = 1 ; case cm0: vtbell() ;break; /* unknown gold command */ case cm1: vtmacnum() ;break; /* M, macro buffer # */ case cm2: vtopfile() ;break; /* G, get a disk file */ case cm3: vtstop() ;break; /* F, exit screen editor*/ case cm4: vtfsave() ;break; /* S, save current file */ case cm5: vtparagraph(1);break; /* P, fill a paragraph */ case cm6: vthelp() ;break; /* H, put up help screen*/ case cm7: vtfwrite() ;break; /* W, write select range*/ case cm8: vtlreverse() ;break; case cm9: vtfque() ;break; /* Q, que select range */ case cm10:vteraline() ;break; /* U, control U */ case cm11:vttabset() ;break; /* A, set left margin */ case cm12:vtlearn() ;break; /* L, learn a macro */ case cm13:vttime() ;break; /* T, insert timestamp */ case cm14:vtcutdel() ;break; /* D, cut&delete select */ case cm15:vtgetmacro() ;break; /* X, read a macro */ case cm16:vtmview() ;break; /* V, set parameters */ case cm17:vtsetnext() ;break; /* N, obsolete */ case cm18:vtnpara() ;break; /* [, find next para */ case cm19:vtepara() ;break; /* ], end of paragraph */ case cm20:vtsystem() ;break; /* $, execute system cmd*/ case cm21:vtccase() ;break; /* C, change case */ case cm22:vtdump(0) ;break; /* O, octal dump */ case cm23:vtdump(1) ;break; /* Z, hex dump */ case cm24:execmacro() ;break; /* E, execute macro */ case cm25:vtcallted() ;break; /* @, call line editor */ case cm26:vtlogsys() ;break; /* #, spawn and insert */ case cm27:vtscroll() ;break; /* \ */ case cm28:vtswindow(-1) ;break; /* b, set buffer number */ case cm29:scbrodisplay();break; /* Look at messages */ default: status = 0 ;break; /* unknown */ } ; if ( gcount == 2 ) switch (cmdindex) { case cm5: vtparagraph(0);break; /* P, fill a paragraph */ default: status = 0 ;break; } ; return( status ) ; } #if VAXVMS static vtcallted() { register int len ; char s[64] ; scunloadline() ; ceol24() ; if ( (len=trimjunk(s,lgetbin(s,"Command ? "))) != 0 ) then { sclear() ; s[len] = 0 ; teddocommand(s) ; ceol24() ; lgetbin(s,"Type a carriage return to continue") ; scloadline() ; ref_screen() ; } goback() ; } #else static vtcallted() { return(0) ; } #endif static vtstats() { ceol24() ; accstats() ; goback() ; } static vtgetmacro() { readmacro() ; } static vtgold() { extern int goldcount,goldk ; goldk = 1 ; goldcount++ ; } static vtinit() { terinit() ; } static vthelp() { schelp() ; ref_screen() ; } static vtbs() { if ( atcrlf() ) then vtboln() ; else vteoln() ; } static vtmenu() { return(0) ; } static vttabset() { return(0) ; } static vtset() { return(0) ; } static vtsetnext() { return(0) ; } SCCMD C [.050036]SCCMD .C [.050036]<   X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>