TMGTERM.m
From VistApedia
;"-------------------------------------------------------------- ;"Terminal interface ;"ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals ;" in alphabetic order by mnemonic EscN(Num,N2,Cmd) write $char(27,91)_Num if $data(N2) write ";"_N2 if $data(Cmd) write Cmd quit CBT(Pn) ;"CBT Cursor Backward Tab Esc [ Pn Z do EscN(.Pn,,"Z") quit CCH ;"Cancel Previous Character Esc T write $char(27)_"T" CHA(Pn) ;"Cursor Horzntal Absolute Esc [ Pn G do EscN(.Pn,,"G") quit CHT(Pn) ;"Cursor Horizontal Tab Esc [ Pn I do EscN(.Pn,,"I") quit CNL(Pn) ;"Cursor Next Line Esc [ Pn E do EscN(.Pn,,"E") quit CPL(Pn) ;"Cursor Preceding Line Esc [ Pn F do EscN(.Pn,,"F") quit CPR(Pn,P2) ;"Cursor Position Report Esc [ Pn ; Pn R VT100 do EscN(.Pn,.P2,"R") quit CTC(Pn) ;"Cursor Tab Control Esc [ Ps W do EscN(.Pn,,"W") quit CUB(Pn) ;"Cursor Backward Esc [ Pn D VT100 do EscN(.Pn,,"D") quit CUD(Pn) ;"Cursor Down Esc [ Pn B VT100 do EscN(.Pn,,"B") quit CUF(Pn) ;"Cursor Forward Esc [ Pn C VT100 do EscN(.Pn,,"C") quit CUP(X,Y) ;"Cursor Position Esc [ Pn ; Pn H VT100 do EscN(.Y,.X,"H") quit HOME ;"Cursor Home Esc [ H w $char(27,91)_"H" quit CUU(Pn) ;"Cursor Up Esc [ Pn A VT100 do EscN(.Pn,,"A") quit CVT(Pn) ;"Cursor Vertical Tab Esc [ Pn Y do EscN(.Pn,,"Y") quit DCH(Pn) ;"Delete Character Esc [ Pn P do EscN(.Pn,,"P") quit DL(Pn) ;"Delete Line Esc [ Pn M do EscN(.Pn,,"M") quit EA(Pn) ;"Erase in Area Esc [ Ps O do EscN(.Pn,,"O") quit ECH(Pn) ;"Erase Character Esc [ Pn X do EscN(.Pn,,"X") quit ED(Pn) ;"Erase in Display Esc [ Ps J VT100 do EscN(.Pn,,"J") quit EF(Pn) ;"Erase in Field Esc [ Ps N do EscN(.Pn,,"N") quit EL(Pn) ;"Erase in Line Esc [ Ps K VT100 do EscN(.Pn,,"K") quit EPA ;"End of Protected Area Esc W w $char(27)_"W" quit ESA ;"End of Selected Area Esc G w $char(27)_"G" quit FNT(Pn,P2) ;"Font Selection Esc [ Pn ; Pn Space D do EscN(.Pn,P2,"D") quit GSM(Pn,P2) ;"Graphic Size Modify Esc [ Pn ; Pn Space B do EscN(.Pn,P2,"B") quit GSS(Pn) ;"Graphic Size Selection Esc [ Pn Space C do EscN(.Pn,,"C") quit HPA(Pn) ;"Horz Position Absolute Esc [ Pn ` do EscN(.Pn,,"`") quit HPR(Pn) ;"Horz Position Relative Esc [ Pn a do EscN(.Pn,,"a") quit HTJ ;"Horz Tab w/Justification Esc I w $char(27)_"I" quit HTS ;"Horizontal Tab Set Esc H VT100 w $char(27)_"H" quit HVP(Pn,P2) ;"Horz & Vertical Position Esc [ Pn ; Pn f VT100 do EscN(.Pn,P2,"A") quit ICH(Pn) ;"Insert Character Esc [ Pn @ do EscN(.Pn,,"@") quit IL(Pn) ;"Insert Line Esc [ Pn L do EscN(.Pn,,"L") quit IND ;"Index Esc D VT100 w $char(27)_"D" quit NEL ;"Next Line Esc E VT100 w $char(27)_"E" quit NP(Pn) ;"Next Page Esc [ Pn U do EscN(.Pn,,"U") quit PP(Pn) ;"Preceding Page Esc [ Pn V do EscN(.Pn,,"V") quit IS ;"Reset to Initial State Esc c w $char(27)_"c" quit RM(Pn) ;"Reset Mode Esc [ Ps l VT100 do EscN(.Pn,,"l") quit SD(Pn) ;"Scroll Down Esc [ Pn T do EscN(.Pn,,"T") quit SL(Pn) ;"Scroll Left Esc [ Pn Space @ do EscN(.Pn,," @") quit SM(Pn) ;"Select Mode Esc [ Ps h VT100 do EscN(.Pn,,"h") quit SPA ;"Start of Protected Area Esc V w $char(27)_"V" quit SPI(Pn,P2) ;"Spacing Increment Esc [ Pn ; Pn Space G do EscN(.Pn,P2," G") quit SR(Pn) ;"Scroll Right Esc [ Pn Space A do EscN(.Pn,," A") quit SA ;"Start of Selected Area Esc F w $char(27)_"F" quit ST ;"String Terminator Esc \ w $char(27)_"\" quit SU(Pn) ;"Scroll Up Esc [ Pn S do EscN(.Pn,,"S") quit TBC(Pn) ;"Tab Clear Esc [ Ps g VT100 do EscN(.Pn,,"g") quit VPA(Pn) ;"Vert Position Absolute Esc [ Pn d do EscN(.Pn,,"d") quit VPR(Pn) ;"Vert Position Relative Esc [ Pn e do EscN(.Pn,,"e") quit VCULOAD ;"Unsave Cursor ESC [ u w $char(27,91)_"u" quit VCUSAV2 ;"Save Cursor & Attrs ESC 7 w $char(27)_"7" quit VCULOAD2 ;"Restore Cursor & Attrs ESC 8 w $char(27)_"8" quit VTATRIB(n) ;"Set Text attributes <ESC>[{attr1};...;{attrn}m ;"0-Reset all attributes ;"1-Bright ;"2-Dim ;"4-Underscore ;"5-Blink ;"7-Reverse ;"8-Hidden do EscN(n,,"m") quit VFGCOLOR(n) ;"Set Text Foreground Color <ESC>[{attr1};...;{attrn}m set n=n+30 do EscN(n,,"m") quit ;"-------------------------------------------------------------- ;"VT100 specific calls ;"Terminal interface VCEL ;"Erase from cursor to end of line Esc [ 0 K or Esc [ K do EscN("0",,"K") quit VCBL ;"Erase from beginning of line to cursor Esc [ 1 K do EscN("1",,"K") quit VEL ;"Erase line containing cursor Esc [ 2 K do EscN("2",,"K") quit VCES ;"Erase from cursor to end of screen Esc [ 0 J or Esc [ J do EscN("0",,"J") quit VCBS ;"Erase from beginning of screen to cursor Esc [ 1 J do EscN("1",,"J") quit VCS ;"Erase entire screen Esc [ 2 J do EscN("2",,"J") quit VCUSAV ;"Save Cursor ESC [ s w $char(27,91)_"s" quit VCULOAD ;"Unsave Cursor ESC [ u w $char(27,91)_"u" quit VCUSAV2 ;"Save Cursor & Attrs ESC 7 w $char(27)_"7" quit VCULOAD2 ;"Restore Cursor & Attrs ESC 8 w $char(27)_"8" quit VTATRIB(n) ;"Set Text attributes <ESC>[{attr1};...;{attrn}m ;"0-Reset all attributes ;"1-Bright ;"2-Dim ;"4-Underscore ;"5-Blink ;"7-Reverse ;"8-Hidden do EscN(n,,"m") quit VFGCOLOR(n) ;"Set Text Foreground Color <ESC>[{attr1};...;{attrn}m do VTATRIB(0) if n>7 do . do VTATRIB(1) . set n=n-7 set n=n+30 do EscN(n,,"m") quit VBGCOLOR(n) ;"Set Text Background Color <ESC>[{attr1};...;{attrn}m do VTATRIB(0) if n>7 do . do VTATRIB(1) . set n=n-7 set n=n+40 do EscN(n,,"m") quit VCOLORS(FG,BG) ;Set Text Colors <ESC>[{attr1};...;{attrn}m do VTATRIB(0) if FG>7 do . do VTATRIB(1) . set FG=FG-7 if BG>7 do . do VTATRIB(1) . set BG=BG-7 set FG=FG+30 set BG=BG+40 do EscN(FG,BG,"m") quit quit SetGlobals set TMGcBlack=0 set TMGcRed=1 set TMGcGreen=2 set TMGcYellow=3 set TMGcBlue=4 set TMGcMagenta=5 set TMGcCyan=6 set TMGcGrey=7 set TMGcBRed=8 set TMGcBGreen=9 set TMGcBYellow=10 set TMGcBBlue=11 set TMGcBMagenta=12 set TMGcBCyan=13 set TMGcBGrey=14 set TMGcWhite=15 quit KillGlobals kill TMGcBlack kill TMGcRed kill TMGcGreen kill TMGcYellow kill TMGcBlue kill TMGcMagenta kill TMGcCyan kill TMGcGrey kill TMGcBRed kill TMGcBGreen kill TMGcBYellow kill TMGcBBlue kill TMGcBMagenta kill TMGcBCyan kill TMGcBGrey kill TMGcWhite quit