mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			780 lines
		
	
	
		
			41 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			780 lines
		
	
	
		
			41 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Summary of ANSI standards for ASCII terminals		Joe Smith, 18-May-84
 | ||
| 
 | ||
| Contents:
 | ||
|   1.  Overview and Definitions
 | ||
|   2.  General rules for interpreting an ESCape Sequence
 | ||
|   3.  General rules for interpreting a Control Sequence
 | ||
|   4.  C0 and C1 control codes in numeric order
 | ||
|   5.  Two and three-character ESCape Sequences in numeric order
 | ||
|   6.  Control Sequences in numeric order
 | ||
|   7.  VT100 emulation requirements
 | ||
| 
 | ||
| The VT100 USER GUIDE and ANSI standard X3.64-1979 both list the ANSI ESCape
 | ||
| sequences in alphabetic order by mnemonic, but do not have a have a cross
 | ||
| reference in order by ASCII code.  This paper lists the combination of all
 | ||
| definitions from the three ANSI standards in numeric order.  For a description
 | ||
| of the advantages of using these standards, see the article "Toward
 | ||
| Standardized Video Terminals" in the April-1984 issue of BYTE magazine.
 | ||
| 
 | ||
| ANSI X3.4-1977 defines the 7-bit ASCII character set (C0 and G0).  It was
 | ||
| written in 1968, revised in 1977, and explains the decisions made in laying out
 | ||
| the ASCII code.  In particular, it explains why ANSI chose to make ASCII
 | ||
| incompatible with EBCDIC in order to make it self-consistant.
 | ||
| 
 | ||
| ANSI X3.41-1974 introduces the idea of an 8-bit ASCII character set (C1 and G1
 | ||
| in addition to the existing C0 and G0).  It describes how to use the 8-bit
 | ||
| features in a 7-bit environment.  X3.41 defines the format of all ESCape
 | ||
| sequences, but defines only the 3-character ones with a parameter character
 | ||
| in the middle.  These instruct the terminal how to interpret the C0, G0, C1,
 | ||
| and G1 characters (such as by selecting different character-set ROMs).
 | ||
| 
 | ||
|   Note: NAPLPS does videotex graphics by redefining the C1 set and
 | ||
|         selecting alternate G0, G1, G2, and G3 sets.
 | ||
|   See the February 1983 issue of BYTE magazine for details.
 | ||
| 
 | ||
| ANSI X3.64-1979 defines the remaining ESCape sequences.  It defines all the C1
 | ||
| control characters, and specifies that certain two-character ESCape sequences
 | ||
| in the 7-bit environment are to act exactly like the 8-bit C1 control set.
 | ||
| X3.64 introduces the idea of a Control-Sequence, which starts with CSI
 | ||
| character, has an indefinite length, and is terminated by an alphabetic
 | ||
| character.  The VT100 was one of the first terminals to implement this
 | ||
| standard.
 | ||
| 
 | ||
| Definitions:
 | ||
| 
 | ||
|   Control Character - A single character with an ASCII code with the range
 | ||
|   of 000 to 037 and 200 to 237 octal, 00 to 1F and 80 to 9F hex.
 | ||
| 
 | ||
|   Escape Sequence - A two or three character string staring with ESCape.
 | ||
|   (Four or more character strings are allowed but not defined.)
 | ||
| 
 | ||
|   Control Sequence - A string starting with CSI (233 octal, 9B hex) or
 | ||
|   with ESCape Left-Bracket, and terminated by an alphabetic character.
 | ||
|   Any number of parameter characters (digits 0 to 9, semicolon, and
 | ||
|   question mark) may appear within the Control Sequence.  The terminating
 | ||
|   character may be preceded by an intermediate character (such as space).
 | ||
| Character classifications:
 | ||
| 
 | ||
| C0 Control	000-037 octal, 00-1F hex  (G0 is 041-176 octal, 21-7E hex)
 | ||
| SPACE		040+240 octal, 20+A0 hex  Always and everywhere a blank space
 | ||
| Intermediate	040-057 octal, 20-2F hex   !"#$%&'()*+,-./
 | ||
| Parameters	060-077 octal, 30-3F hex  0123456789:;<=>?
 | ||
| Uppercase	100-137 octal, 40-5F hex  @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
 | ||
| Lowercase	140-176 octal, 60-7E hex  `abcdefghijlkmnopqrstuvwxyz{|}~
 | ||
| Alphabetic	100-176 octal, 40-7E hex  (all of upper and lower case)
 | ||
| Delete		    177 octal,    7F hex  Always and everywhere ignored
 | ||
| C1 Control	200-237 octal, 80-9F hex  32 additional control characters
 | ||
| G1 Displayable	241-376 octal, A1-FE hex  94 additional displayable characters
 | ||
| Special		240+377 octal, A0+FF hex  Same as SPACE and DELETE
 | ||
| 
 | ||
| Note that in this paper, the terms uppercase, lowercase, and alphabetics
 | ||
| include more characters than just A to Z.
 | ||
| 
 | ||
| ------------------------------------------------------------------------------
 | ||
| 
 | ||
| General rules for interpreting an ESCape Sequence:
 | ||
| 
 | ||
|   An ESCape Sequence starts with the ESC character (033 octal, 1B hex).
 | ||
| The length of the ESCape Sequence depends on the character that immediately
 | ||
| follows the ESCape.
 | ||
| 
 | ||
| If the next character is
 | ||
|    C0 control:	 Interpret it first, then resume processing ESCape sequence.
 | ||
|      Example:  CR, LF, XON, and XOFF work as normal within an ESCape sequence.
 | ||
|    Intermediate: Expect zero or more intermediates, a parameter terminates
 | ||
|      a private function, an alphabetic terminates a standard sequence.
 | ||
|      Example:  ESC ( A defines standard character set, ESC ( 0 a DEC set.
 | ||
|    Parameter:	 End of a private 2-character escape sequence.
 | ||
|      Example:  ESC = sets special keypad mode, ESC > clears it.
 | ||
|    Uppercase:	 Translate it into a C1 control character and act on it.
 | ||
|      Example:  ESC D does indexes down, ESC M indexes up.  (CSI is special)
 | ||
|    Lowercase:	 End of a standard 2-character escape sequence.
 | ||
|      Example:  ESC c resets the terminal.
 | ||
|    Delete:	 Ignore it, and continue interpreting the ESCape sequence
 | ||
|    C1 and G1:	 Treat the same as their 7-bit counterparts
 | ||
| 
 | ||
|   Note that CSI is the two-character sequence ESCape left-bracket or the 8-bit
 | ||
| C1 code of 233 octal, 9B hex.  CSI introduces a Control Sequence, which
 | ||
| continues until an alphabetic character is received.
 | ||
| 
 | ||
| General rules for interpreting a Control Sequence:
 | ||
| 
 | ||
| 1) It starts with CSI, the Control Sequence Introducer.
 | ||
| 2) It contains any number of parameter characters (0123456789:;<=>?).
 | ||
| 3) It terminates with an alphabetic character.
 | ||
| 4) Intermediate characters (if any) immediately precede the terminator.
 | ||
| 
 | ||
| If the first character after CSI is one of "<=>?" (074-077 octal, 3C-3F hex),
 | ||
| then Control Sequence is to be interpreted according to private standards (such
 | ||
| as setting and resetting modes not defined by ANSI).  The terminal should
 | ||
| expect any number of numeric parameters, separated by semicolons (073 octal,
 | ||
| 3B hex).  Only after the terminating alphabetic character is received should
 | ||
| the terminal act on the Control Sequence.
 | ||
| 
 | ||
| =============================================================================
 | ||
|     C0 set of 7-bit control characters (from ANSI X3.4-1977).
 | ||
| 
 | ||
| Oct Hex Name *	(* marks function used in DEC VT series or LA series terminals)
 | ||
| --- -- - --- -	--------------------------------------------------------------
 | ||
| 000 00 @ NUL *	Null filler, terminal should ignore this character
 | ||
| 001 01 A SOH	Start of Header
 | ||
| 002 02 B STX	Start of Text, implied end of header
 | ||
| 003 03 C ETX	End of Text, causes some terminal to respond with ACK or NAK
 | ||
| 004 04 D EOT	End of Transmission
 | ||
| 005 05 E ENQ *	Enquiry, causes terminal to send ANSWER-BACK ID
 | ||
| 006 06 F ACK	Acknowledge, usually sent by terminal in response to ETX
 | ||
| 007 07 G BEL *	Bell, triggers the bell, buzzer, or beeper on the terminal
 | ||
| 010 08 H BS  *	Backspace, can be used to define overstruck characters
 | ||
| 011 09 I HT  *	Horizontal Tabulation, move to next predetermined position
 | ||
| 012 0A J LF  *	Linefeed, move to same position on next line (see also NL)
 | ||
| 013 0B K VT  *	Vertical Tabulation, move to next predetermined line
 | ||
| 014 0C L FF  *	Form Feed, move to next form or page
 | ||
| 015 0D M CR  *	Carriage Return, move to first character of current line
 | ||
| 016 0E N SO  *	Shift Out, switch to G1 (other half of character set)
 | ||
| 017 0F O SI  *	Shift In, switch to G0 (normal half of character set)
 | ||
| 020 10 P DLE	Data Link Escape, interpret next control character specially
 | ||
| 021 11 Q XON *	(DC1) Terminal is allowed to resume transmitting
 | ||
| 022 12 R DC2	Device Control 2, causes ASR-33 to activate paper-tape reader
 | ||
| 023 13 S XOFF*	(DC2) Terminal must pause and refrain from transmitting
 | ||
| 024 14 T DC4	Device Control 4, causes ASR-33 to deactivate paper-tape reader
 | ||
| 025 15 U NAK	Negative Acknowledge, used sometimes with ETX and ACK
 | ||
| 026 16 V SYN	Synchronous Idle, used to maintain timing in Sync communication
 | ||
| 027 17 W ETB	End of Transmission block
 | ||
| 030 18 X CAN *	Cancel (makes VT100 abort current escape sequence if any)
 | ||
| 031 19 Y EM	End of Medium
 | ||
| 032 1A Z SUB *	Substitute (VT100 uses this to display parity errors)
 | ||
| 033 1B [ ESC *	Prefix to an ESCape sequence
 | ||
| 034 1C \ FS	File Separator
 | ||
| 035 1D ] GS	Group Separator
 | ||
| 036 1E ^ RS  *	Record Separator (sent by VT132 in block-transfer mode)
 | ||
| 037 1F _ US	Unit Separator
 | ||
| 
 | ||
| 040 20	 SP  *	Space (should never be defined to be otherwise)
 | ||
| 177 7F	 DEL *	Delete, should be ignored by terminal
 | ||
| 
 | ||
| ==============================================================================
 | ||
|     C1 set of 8-bit control characters (from ANSI X3.64-1979)
 | ||
| 
 | ||
| Oct Hex Name *	(* marks function used in DEC VT series or LA series terminals)
 | ||
| --- -- - --- -	--------------------------------------------------------------
 | ||
| 200 80 @	Reserved for future standardization
 | ||
| 201 81 A	Reserved
 | ||
| 202 82 B	Reserved
 | ||
| 203 83 C	Reserved
 | ||
| 204 84 D IND *	Index, moves down one line same column regardless of NL
 | ||
| 205 85 E NEL *	NEw Line, moves done one line and to first column (CR+LF)
 | ||
| 206 86 F SSA	Start of Selected Area to be sent to auxiliary output device
 | ||
| 207 87 G ESA	End of Selected Area to be sent to auxiliary output device
 | ||
| 210 88 H HTS *	Horizontal Tabulation Set at current position
 | ||
| 211 89 I HTJ	Hor Tab Justify, moves string to next tab position
 | ||
| 212 8A J VTS	Vertical Tabulation Set at current line
 | ||
| 213 8B K PLD	Partial Line Down (subscript)
 | ||
| 214 8C L PLU	Partial Line Up (superscript)
 | ||
| 215 8D M RI  *	Reverse Index, go up one line, reverse scroll if necessary
 | ||
| 216 8E N SS2 *	Single Shift to G2
 | ||
| 217 8F O SS3 *	Single Shift to G3 (VT100 uses this for sending PF keys)
 | ||
| 220 90 P DCS *	Device Control String, terminated by ST (VT125 enters graphics)
 | ||
| 221 91 Q PU1	Private Use 1
 | ||
| 222 92 R PU2	Private Use 2
 | ||
| 223 93 S STS	Set Transmit State
 | ||
| 224 94 T CCH	Cancel CHaracter, ignore previous character
 | ||
| 225 95 U MW	Message Waiting, turns on an indicator on the terminal
 | ||
| 226 96 V SPA	Start of Protected Area
 | ||
| 227 97 W EPA	End of Protected Area
 | ||
| 230 98 X	Reserved for for future standard
 | ||
| 231 99 Y	Reserved
 | ||
| 232 9A Z     *	Reserved, but causes DEC terminals to respond with DA codes
 | ||
| 233 9B [ CSI *	Control Sequence Introducer (described in a seperate table)
 | ||
| 234 9C \ ST  *	String Terminator (VT125 exits graphics)
 | ||
| 235 9D ] OSC	Operating System Command (reprograms intelligent terminal)
 | ||
| 236 9E ^ PM	Privacy Message (password verification), terminated by ST
 | ||
| 237 9F _ APC	Application Program Command (to word processor), term by ST
 | ||
| 
 | ||
| ==============================================================================
 | ||
|     Character set selection sequences (from ANSI X3.41-1974)
 | ||
|     All are 3 characters long (including the ESCape).  Alphabetic characters
 | ||
|     as 3rd character are defined by ANSI, parameter characters as 3rd character
 | ||
|     may be interpreted differently by each terminal manufacturer.
 | ||
| 
 | ||
| Oct Hex   *	(* marks function used in DEC VT series or LA series terminals)
 | ||
| --- -- -- - ------------------------------------------------------------------
 | ||
| 040 20	    ANNOUNCER - Determines whether to use 7-bit or 8-bit ASCII
 | ||
| 	A   G0 only will be used.  Ignore SI, SO, and G1.
 | ||
| 	B   G0 and G1 used internally.  SI and SO affect G0, G1 is ignored.
 | ||
| 	C   G0 and G1 in an 8-bit only environment.  SI and SO are ignored.
 | ||
| 	D   G0 and G1 are used, SI and SO affect G0.
 | ||
| 	E
 | ||
| 	F * 7-bit transmission, VT240/PRO350 sends CSI as two characters ESC [
 | ||
| 	G * 8-bit transmission, VT240/PRO350 sends CSI as single 8-bit character
 | ||
| 041 21 !    Select C0 control set (choice of 63 standard, 16 private)
 | ||
| 042 22 "    Select C1 control set (choice of 63 standard, 16 private)
 | ||
| 043 23 #    Translate next character to a special single character
 | ||
|        #3 * DECDHL1 - Double height line, top half
 | ||
|        #4 * DECDHL2 - Double height line, bottom half
 | ||
|        #5 * DECSWL - Single width line
 | ||
|        #6 * DECDWL - Double width line
 | ||
|        #7 * DECHCP - Make a hardcopy of the graphics screen (GIGI,VT125,VT241)
 | ||
|        #8 * DECALN - Alignment display, fill screen with "E" to adjust focus
 | ||
| 044 24 $    MULTIBYTE CHARACTERS - Displayable characters require 2-bytes each
 | ||
| 045 25 %    SPECIAL INTERPRETATION - Such as 9-bit data
 | ||
| 046 26 &    Reserved for future standardization
 | ||
| 047 27 '    Reserved for future standardization
 | ||
| 050 28 (  * SCS - Select G0 character set (choice of 63 standard, 16 private)
 | ||
|        (0 * DEC VT100 line drawing set (affects lowercase characters)
 | ||
|        (1 * DEC Alternate character ROM set (RAM set on GIGI and VT220)
 | ||
|        (2 * DEC Alternate character ROM set with line drawing
 | ||
|        (5 * DEC Finnish on LA100
 | ||
|        (6 * DEC Norwegian/Danish on LA100
 | ||
|        (7 * DEC Swedish on LA100
 | ||
|        (9 * DEC French Canadian
 | ||
|        (< * DEC supplemental graphics (everything not in USASCII)
 | ||
|        (A * UKASCII (British pound sign)
 | ||
|        (B * USASCII (American pound sign)
 | ||
|        (C * ISO Finnish on LA120
 | ||
|        (E * ISO Norwegian/Danish on LA120
 | ||
|        (H * ISO Swedish on LA120
 | ||
|        (K * ISO German on LA100,LA120
 | ||
|        (R * ISO French on LA100,LA120
 | ||
|        (Y * ISO Italian on LA100
 | ||
|        (Z * ISO Spanish on LA100
 | ||
| 051 29 )  * SCS - Select G1 character set (choice of 63 standard, 16 private)
 | ||
|           * (same character sets as listed under G0)
 | ||
| 052 2A *  * SCS - Select G2 character set
 | ||
|           * (same character sets as listed under G0)
 | ||
| 053 2B +  * SCS - Select G3 character set
 | ||
|           * (same character sets as listed under G0)
 | ||
| 054 2C ,    SCS - Select G0 character set (additional 63+16 sets)
 | ||
| 055 2D -    SCS - Select G1 character set (additional 63+16 sets)
 | ||
| 056 2E .    SCS - Select G2 character set
 | ||
| 057 2F /    SCS - Select G3 character set
 | ||
| 
 | ||
| ==============================================================================
 | ||
|     Private two-character escape sequences (allowed by ANSI X3.41-1974)
 | ||
|     These can be defined differently by each terminal manufacturer.
 | ||
| 
 | ||
| Oct Hex  *	(* marks function used in DEC VT series or LA series terminals)
 | ||
| --- -- - - ------------------------------------------------------------------
 | ||
| 060 30 0
 | ||
| 061 31 1   DECGON graphics on for VT105, DECHTS horiz tab set for LA34/LA120
 | ||
| 062 32 2   DECGOFF graphics off VT105, DECCAHT clear all horz tabs LA34/LA120
 | ||
| 063 33 3   DECVTS  - set vertical tab for LA34/LA120
 | ||
| 064 34 4   DECCAVT - clear all vertical tabs for LA34/LA120
 | ||
| 065 35 5 * DECXMT  - Host requests that VT132 transmit as if ENTER were pressed
 | ||
| 066 36 6
 | ||
| 067 37 7 * DECSC   - Save cursor position and character attributes
 | ||
| 070 38 8 * DECRC   - Restore cursor and attributes to previously saved position
 | ||
| 071 39 9
 | ||
| 072 3A :
 | ||
| 073 3B ;
 | ||
| 074 3C < * DECANSI - Switch from VT52 mode to VT100 mode
 | ||
| 075 3D = * DECKPAM - Set keypad to applications mode (ESCape instead of digits)
 | ||
| 076 3E > * DECKPNM - Set keypad to numeric mode (digits intead of ESCape seq)
 | ||
| 077 3F ?
 | ||
| 
 | ||
|     DCS Device Control Strings used by DEC terminals (ends with ST)
 | ||
| 
 | ||
| Pp = Start ReGIS graphics (VT125, GIGI, VT240, PRO350)
 | ||
| Pq = Start SIXEL graphics (screen dump to LA34, LA100, screen load to VT125)
 | ||
| Pr = SET-UP data for GIGI, $PrVC0$\ disables both visible cursors.
 | ||
| Ps = Reprogram keys on the GIGI, $P0sDIR<CR>$\ makes keypad 0 send "DIR<CR>"
 | ||
| 	0-9=digits on keypad, 10=ENTER, 11=minus, 12=comma, 13=period,
 | ||
| 	14-17=PF1-PF4, 18-21=cursor keys.  Enabled by $[?23h (PK1).
 | ||
| Pt = Start VT105 graphics on a VT125
 | ||
| 
 | ||
| ==============================================================================
 | ||
| 
 | ||
|     Standard two-character escape sequences (defined by ANSI X3.64-1979)
 | ||
| 
 | ||
| 100 40 @ See description of C1 control characters
 | ||
| 	 An ESCape followed by one of these uppercase characters is translated
 | ||
| 	 to an 8-bit C1 control character before being interpreted.
 | ||
| 220 90 P DCS - Device Control String, terminated by ST - see table above.
 | ||
| 133 5B [ CSI - Control Sequence Introducer - see table below.
 | ||
| 137 5F _ See description of C1 control characters
 | ||
| 
 | ||
| ==============================================================================
 | ||
| 
 | ||
|     Indepenent control functions (from Appendix E of X3.64-1977).
 | ||
|     These four controls have the same meaning regardless of the current
 | ||
|     definition of the C0 and C1 control sets.  Each control is a two-character
 | ||
|     ESCape sequence, the 2nd character is lowercase.
 | ||
| 
 | ||
| Oct Hex  *  	(* marks function used in DEC VT series or LA series terminals)
 | ||
| --- -- - - --------------------------------------------------------------------
 | ||
| 140 60 `   DMI - Disable Manual Input
 | ||
| 141 61 a   INT - INTerrupt the terminal and do special action
 | ||
| 142 62 b   EMI - Enable Manual Input
 | ||
| 143 63 c * RIS - Reset to Initial State (VT100 does a power-on reset)
 | ||
|   ...            The remaining lowercase characters are reserved by ANSI.
 | ||
| 153 6B k   NAPLPS lock-shift G1 to GR
 | ||
| 154 6C l   NAPLPS lock-shift G2 to GR
 | ||
| 155 6D m   NAPLPS lock-shift G3 to GR
 | ||
| 156 6E n * LS2 - Shift G2 to GL (extension of SI) VT240,NAPLPS
 | ||
| 157 6F o * LS3 - Shift G3 to GL (extension of SO) VT240,NAPLPS
 | ||
|   ...            The remaining lowercase characters are reserved by ANSI.
 | ||
| 174 7C | * LS3R - VT240 lock-shift G3 to GR
 | ||
| 175 7D } * LS2R - VT240 lock-shift G2 to GR
 | ||
| 176 7E ~ * LS1R - VT240 lock-shift G1 to GR
 | ||
| 
 | ||
| ==============================================================================
 | ||
|     Control Sequences (defined by ANSI X3.64-1979)
 | ||
| 
 | ||
| Control Sequences are started by either ESC [ or CSI and are terminated by an
 | ||
| "alphabetic" character (100 to 176 octal, 40 to 7E hex).  Intermediate
 | ||
| characters are space through slash (40 to 57 octal, 20 to 2F hex) and parameter
 | ||
| characters are zero through question mark (60 to 77 octal, 30 to 3F hex,
 | ||
| including digits and semicolon).  Parameters consist of zero or more decimal
 | ||
| numbers separated by semicolons.  Leading zeros are optional, leading blanks
 | ||
| are not allowed.  If no digits precede the final character, the default
 | ||
| parameter is used.  Many functions treat a parameter of 0 as if it were 1.
 | ||
| 
 | ||
| Oct Hex  *  	(* marks function used in DEC VT series or LA series terminals)
 | ||
| --- -- - - --------------------------------------------------------------------
 | ||
| 100 40 @   ICH - Insert CHaracter
 | ||
| 		[10@ = Make room for 10 characters at current position
 | ||
| 101 41 A * CUU - CUrsor Up
 | ||
| 	 *	[A = Move up one line, stop at top of screen, [9A = move up 9
 | ||
| 102 42 B * CUD - CUrsor Down
 | ||
| 	 *	[B = Move down one line, stop at bottom of screen
 | ||
| 103 43 C * CUF - CUrsor Forward
 | ||
| 	 *	[C = Move forward one position, stop at right edge of screen
 | ||
| 104 44 D * CUB - CUrsor Backward
 | ||
| 	 *	[D = Same as BackSpace, stop at left edge of screen
 | ||
| 105 45 E   CNL - Cursor to Next Line
 | ||
| 		[5E = Move to first position of 5th line down
 | ||
| 106 46 F   CPL - Cursor to Previous Line
 | ||
| 		[5F = Move to first position of 5th line previous
 | ||
| 107 47 G   CHA - Cursor Horizontal position Absolute
 | ||
| 		[40G = Move to column 40 of current line
 | ||
| 110 48 H * CUP - CUrsor Position
 | ||
| 	 *	[H = Home, [24;80H = Row 24, Column 80
 | ||
| 111 49 I   CHT - Cursor Horizontal Tabulation
 | ||
| 		[I = Same as HT (Control-I), [3I = Go forward 3 tabs
 | ||
| 112 4A J * ED  - Erase in Display (cursor does not move)
 | ||
| 	 *	[J = [0J = Erase from current position to end (inclusive)
 | ||
| 	 *	[1J = Erase from beginning to current position (inclusive)
 | ||
| 	 *	[2J = Erase entire display
 | ||
| 	 *	[?0J = Selective erase in display ([?1J, [?2J similar)
 | ||
| 113 4B K * EL  - Erase in Line (cursor does not move)
 | ||
| 	 *	[K = [0K = Erase from current position to end (inclusive)
 | ||
| 	 *	[1K = Erase from beginning to current position
 | ||
| 	 *	[2K = Erase entire current line
 | ||
| 	 *	[?0K = Selective erase to end of line ([?1K, [?2K similar)
 | ||
| 114 4C L * IL  - Insert Line, current line moves down (VT102 series)
 | ||
| 		[3L = Insert 3 lines if currently in scrolling region
 | ||
| 115 4D M * DL  - Delete Line, lines below current move up (VT102 series)
 | ||
| 		[2M = Delete 2 lines if currently in scrolling region
 | ||
| 116 4E N   EF  - Erase in Field (as bounded by protected fields)
 | ||
| 		[0N, [1N, [2N act like [L but within currend field
 | ||
| 117 4F O   EA  - Erase in qualified Area (defined by DAQ)
 | ||
| 		[0O, [1O, [2O act like [J but within current area
 | ||
| 120 50 P * DCH - Delete Character, from current position to end of field
 | ||
| 		[4P = Delete 4 characters, VT102 series
 | ||
| 121 51 Q   SEM - Set Editing extent Mode (limits ICH and DCH)
 | ||
| 		[0Q = [Q = Insert/delete character affects rest of display
 | ||
| 		[1Q = ICH/DCH affect the current line only
 | ||
| 		[2Q = ICH/DCH affect current field (between tab stops) only
 | ||
| 		[3Q = ICH/DCH affect qualified area (between protected fields)
 | ||
| 122 52 R * CPR - Cursor Position Report (from terminal to host)
 | ||
| 	 *	[24;80R = Cursor is positioned at line 24 column 80
 | ||
| 123 53 S   SU  - Scroll up, entire display is moved up, new lines at bottom
 | ||
| 		[3S = Move everything up 3 lines, bring in 3 new lines
 | ||
| 124 54 T   SD  - Scroll down, new lines inserted at top of screen
 | ||
| 		[4T = Scroll down 4, bring previous lines back into view
 | ||
| 125 55 U   NP  - Next Page (if terminal has more than 1 page of memory)
 | ||
| 		[2U = Scroll forward 2 pages
 | ||
| 126 56 V   PP  - Previous Page (if terminal remembers lines scrolled off top)
 | ||
| 		[1V = Scroll backward 1 page
 | ||
| 127 57 W   CTC - Cursor Tabulation Control
 | ||
| 		[0W = Set horizontal tab for current line at current position
 | ||
| 		[1W = Set vertical tab stop for current line of current page
 | ||
| 		[2W = Clear horiz tab stop at current position of current line
 | ||
| 		[3W = Clear vert tab stop at current line of current page
 | ||
| 		[4W = Clear all horiz tab stops on current line only
 | ||
| 		[5W = Clear all horiz tab stops for the entire terminal
 | ||
| 		[6W = Clear all vert tabs stops for the entire terminal
 | ||
| 130 58 X   ECH - Erase CHaracter
 | ||
| 		[4X = Change next 4 characters to "erased" state
 | ||
| 131 59 Y   CVT - Cursor Vertical Tab
 | ||
| 		[2Y = Move forward to 2nd following vertical tab stop
 | ||
| 132 5A Z   CBT - Cursor Back Tab
 | ||
| 		[3Z = Move backwards to 3rd previous horizontal tab stop
 | ||
| 133 5B [	Reserved for future standardization     left bracket
 | ||
| 134 5C \	Reserved                                reverse slant
 | ||
| 135 5D ]	Reserved                                right bracket
 | ||
| 136 5E ^	Reserved                                circumflex
 | ||
| 137 5F _	Reserved                                underscore
 | ||
| 140 60 ` * HPA - Horizontal Position Absolute (depends on PUM)
 | ||
| 		[720` = Move to 720 decipoints (1 inch) from left margin
 | ||
| 	 *	[80` = Move to column 80 on LA120
 | ||
| 141 61 a * HPR - Horizontal Position Relative (depends on PUM)
 | ||
| 		[360a = Move 360 decipoints (1/2 inch) from current position
 | ||
| 	 *	[40a = Move 40 columns to right of current position on LA120
 | ||
| 142 62 b   REP - REPeat previous displayable character
 | ||
| 		[80b = Repeat character 80 times
 | ||
| 143 63 c * DA  - Device Attributes
 | ||
| 	 *	[c = Terminal will identify itself
 | ||
| 	 *	[?1;2c = Terminal is saying it is a VT100 with AVO
 | ||
| 	 *	[>0c = Secondary DA request (distinguishes VT240 from VT220)
 | ||
| 144 64 d * VPA - Vertical Position Absolute (depends on PUM)
 | ||
| 		[90d = Move to 90 decipoints (1/8 inch) from top margin
 | ||
| 	 *	[10d = Move to line 10 if before that else line 10 next page
 | ||
| 145 65 e * VPR - Vertical Position Relative (depends on PUM)
 | ||
| 		[720e = Move 720 decipoints (1 inch) down from current position
 | ||
| 	 *	[6e = Advance 6 lines forward on LA120
 | ||
| 146 66 f * HVP - Horizontal and Vertical Position (depends on PUM)
 | ||
| 		[720,1440f = Move to 1 inch down and 2 inches over (decipoints)
 | ||
| 	 *	[24;80f = Move to row 24 column 80 if PUM is set to character
 | ||
| 147 67 g * TBC - Tabulation Clear
 | ||
| 	 *	[0g = Clear horizontal tab stop at current position
 | ||
| 	 *	[1g = Clear vertical tab stop at current line (LA120)
 | ||
| 	 *	[2g = Clear all horizontal tab stops on current line only LA120
 | ||
| 	 *	[3g = Clear all horizontal tab stops in the terminal
 | ||
| 150 68 h * SM  - Set Mode (. means permanently set on VT100)
 | ||
| 		[0h = Error, this command is ignored
 | ||
| 	 *	[1h = GATM - Guarded Area Transmit Mode, send all (VT132)
 | ||
| 		[2h = KAM - Keyboard Action Mode, disable keyboard input
 | ||
| 		[3h = CRM - Control Representation Mode, show all control chars
 | ||
| 	 *	[4h = IRM - Insertion/Replacement Mode, set insert mode (VT102)
 | ||
| 		[5h = SRTM - Status Report Transfer Mode, report after DCS
 | ||
| 	 *	[6h = ERM - ERasure Mode, erase protected and unprotected
 | ||
| 		[7h = VEM - Vertical Editing Mode, IL/DL affect previous lines
 | ||
| 		[8h, [9h are reserved
 | ||
| 		[10h = HEM - Horizontal Editing mode, ICH/DCH/IRM go backwards
 | ||
| 		[11h = PUM - Positioning Unit Mode, use decipoints for HVP/etc
 | ||
| 	 .	[12h = SRM - Send Receive Mode, transmit without local echo
 | ||
| 		[13h = FEAM - Format Effector Action Mode, FE's are stored
 | ||
| 		[14h = FETM - Format Effector Transfer Mode, send only if stored
 | ||
| 		[15h = MATM - Multiple Area Transfer Mode, send all areas
 | ||
| 	 *	[16h = TTM - Transmit Termination Mode, send scrolling region
 | ||
| 		[17h = SATM - Send Area Transmit Mode, send entire buffer
 | ||
| 		[18h = TSM - Tabulation Stop Mode, lines are independent
 | ||
| 		[19h = EBM - Editing Boundry Mode, all of memory affected
 | ||
| 	 *	[20h = LNM - Linefeed Newline Mode, LF interpreted as CR LF
 | ||
| 	 *	[?1h = DECCKM - Cursor Keys Mode, send ESC O A for cursor up
 | ||
| 	 *	[?2h = DECANM - ANSI Mode, use ESC < to switch VT52 to ANSI
 | ||
| 	 *	[?3h = DECCOLM - COLumn mode, 132 characters per line
 | ||
| 	 *	[?4h = DECSCLM - SCrolL Mode, smooth scrolling
 | ||
| 	 *	[?5h = DECSCNM - SCreeN Mode, black on white background
 | ||
| 	 *	[?6h = DECOM - Origin Mode, line 1 is relative to scroll region
 | ||
| 	 *	[?7h = DECAWM - AutoWrap Mode, start newline after column 80
 | ||
| 	 *	[?8h = DECARM - Auto Repeat Mode, key will autorepeat
 | ||
| 	 *	[?9h = DECINLM - INterLace Mode, interlaced for taking photos
 | ||
| 	 *	[?10h = DECEDM - EDit Mode, VT132 is in EDIT mode
 | ||
| 	 *	[?11h = DECLTM - Line Transmit Mode, ignore TTM, send line
 | ||
| 		[?12h = ?
 | ||
| 	 *	[?13h = DECSCFDM - Space Compression/Field Delimiting on,
 | ||
| 	 *	[?14h = DECTEM - Transmit Execution Mode, transmit on ENTER
 | ||
| 		[?15h = ?
 | ||
| 	 *	[?16h = DECEKEM - Edit Key Execution Mode, EDIT key is local
 | ||
| 		[?17h = ?
 | ||
| 	 *	[?18h = DECPFF - Print FormFeed mode, send FF after printscreen
 | ||
| 	 *	[?19h = DECPEXT - Print Extent mode, print entire screen
 | ||
| 	 *	[?20h = OV1 - Overstrike, overlay characters on GIGI
 | ||
| 	 *	[?21h = BA1 - Local BASIC, GIGI to keyboard and screen
 | ||
| 	 *	[?22h = BA2 - Host BASIC, GIGI to host computer
 | ||
| 	 *	[?23h = PK1 - GIGI numeric keypad sends reprogrammable sequences
 | ||
| 	 *	[?24h = AH1 - Autohardcopy before erasing or rolling GIGI screen
 | ||
| 	 *	[?29h =     - Use only the proper pitch for the LA100 font
 | ||
| 	 *	[?38h = DECTEK - TEKtronix mode graphics
 | ||
| 151 69 i * MC  - Media Copy (printer port on VT102)
 | ||
| 	 *	[0i = Send contents of text screen to printer
 | ||
| 		[1i = Fill screen from auxiliary input (printer's keyboard)
 | ||
| 		[2i = Send screen to secondary output device
 | ||
| 		[3i = Fill screen from secondary input device
 | ||
| 	 *	[4i = Turn on copying received data to primary output (VT125)
 | ||
| 	 *	[4i = Received data goes to VT102 screen, not to its printer
 | ||
| 	 *	[5i = Turn off copying received data to primary output (VT125)
 | ||
| 	 *	[5i = Received data goes to VT102's printer, not its screen
 | ||
| 	 *	[6i = Turn off copying received data to secondary output (VT125)
 | ||
| 	 *	[7i = Turn on copying received data to secondary output (VT125)
 | ||
| 	 *	[?0i = Graphics screen dump goes to graphics printer VT125,VT240
 | ||
| 	 *	[?1i = Print cursor line, terminated by CR LF
 | ||
| 	 *	[?2i = Graphics screen dump goes to host computer VT125,VT240
 | ||
| 	 *	[?4i = Disable auto print
 | ||
| 	 *	[?5i = Auto print, send a line at a time when linefeed received
 | ||
| 152 6A j	Reserved for future standardization
 | ||
| 153 6B k	Reserved for future standardization
 | ||
| 154 6C l * RM  - Reset Mode (. means permanently reset on VT100)
 | ||
| 	 *	[1l = GATM - Transmit only unprotected characters (VT132)
 | ||
| 	 .	[2l = KAM - Enable input from keyboard
 | ||
| 	 .	[3l = CRM - Control characters are not displayable characters
 | ||
| 	 *	[4l = IRM - Reset to replacement mode (VT102)
 | ||
| 	 .	[5l = SRTM - Report only on command (DSR)
 | ||
| 	 *	[6l = ERM - Erase only unprotected fields
 | ||
| 	 .	[7l = VEM - IL/DL affect lines after current line
 | ||
| 		[8l, [9l are reserved
 | ||
| 	 .	[10l = HEM - ICH and IRM shove characters forward, DCH pulls
 | ||
| 	 .	[11l = PUM - Use character positions for HPA/HPR/VPA/VPR/HVP
 | ||
| 		[12l = SRM - Local echo - input from keyboard sent to screen
 | ||
| 	 .	[13l = FEAM - HPA/VPA/SGR/etc are acted upon when received
 | ||
| 	 .	[14l = FETM - Format Effectors are sent to the printer
 | ||
| 		[15l = MATM - Send only current area if SATM is reset
 | ||
| 	 *	[16l = TTM - Transmit partial page, up to cursor position
 | ||
| 		[17l = SATM - Transmit areas bounded by SSA/ESA/DAQ
 | ||
| 	 .	[18l = TSM - Setting a tab stop on one line affects all lines
 | ||
| 	 .	[19l = EBM - Insert does not overflow to next page
 | ||
| 	 *	[20l = LNM - Linefeed does not change horizontal position
 | ||
| 	 *	[?1l = DECCKM - Cursor keys send ANSI cursor position commands
 | ||
| 	 *	[?2l = DECANM - Use VT52 emulation instead of ANSI mode
 | ||
| 	 *	[?3l = DECCOLM - 80 characters per line (erases screen)
 | ||
| 	 *	[?4l = DECSCLM - Jump scrolling
 | ||
| 	 *	[?5l = DECSCNM - Normal screen (white on black background)
 | ||
| 	 *	[?6l = DECOM - Line numbers are independent of scrolling region
 | ||
| 	 *	[?7l = DECAWM - Cursor remains at end of line after column 80
 | ||
| 	 *	[?8l = DECARM - Keys do not repeat when held down
 | ||
| 	 *	[?9l = DECINLM - Display is not interlaced to avoid flicker
 | ||
| 	 *	[?10l = DECEDM - VT132 transmits all key presses
 | ||
| 	 *	[?11l = DECLTM - Send page or partial page depending on TTM
 | ||
| 		[?12l = ?
 | ||
| 	 *	[?13l = DECSCFDM - Don't suppress trailing spaces on transmit
 | ||
| 	 *	[?14l = DECTEM - ENTER sends ESC S (STS) a request to send
 | ||
| 		[?15l = ?
 | ||
| 	 *	[?16l = DECEKEM - EDIT key transmits either $[10h or $[10l
 | ||
| 		[?17l = ?
 | ||
| 	 *	[?18l = DECPFF - Don't send a formfeed after printing screen
 | ||
| 	 *	[?19l = DECPEXT - Print only the lines within the scroll region
 | ||
| 	 *	[?20l = OV0 - Space is destructive, replace not overstrike, GIGI
 | ||
| 	 *	[?21l = BA0 - No BASIC, GIGI is On-Line or Local
 | ||
| 	 *	[?22l = BA0 - No BASIC, GIGI is On-Line or Local
 | ||
| 	 *	[?23l = PK0 - Ignore reprogramming on GIGI keypad and cursors
 | ||
| 	 *	[?24l = AH0 - No auto-hardcopy when GIGI screen erased
 | ||
| 	 *	[?29l = Allow all character pitches on the LA100
 | ||
| 	 *	[?38l = DECTEK - Ignore TEKtronix graphics commands
 | ||
| 155 6D m * SGR - Set Graphics Rendition (affects character attributes)
 | ||
| 	 *	[0m = Clear all special attributes
 | ||
| 	 *	[1m = Bold or increased intensity
 | ||
| 	 *	[2m = Dim or secondary color on GIGI  (superscript on XXXXXX)
 | ||
| 		[3m = Italic                          (subscript on XXXXXX)
 | ||
| 	 *	[4m = Underscore, [0;4m = Clear, then set underline only
 | ||
| 	 *	[5m = Slow blink
 | ||
| 		[6m = Fast blink                      (overscore on XXXXXX)
 | ||
| 	 *	[7m = Negative image, [0;1;7m = Bold + Inverse
 | ||
| 		[8m = Concealed (do not display character echoed locally)
 | ||
| 		[9m = Reserved for future standardization
 | ||
| 	 *	[10m = Select primary font (LA100)
 | ||
| 	 *	[11m - [19m = Selete alternate font (LA100 has 11 thru 14)
 | ||
| 		[20m = FRAKTUR (whatever that means)
 | ||
| 	 *	[22m = Cancel bold or dim attribute only (VT220)
 | ||
| 	 *	[24m = Cancel underline attribute only (VT220)
 | ||
| 	 *	[25m = Cancel fast or slow blink attribute only (VT220)
 | ||
| 	 *	[27m = Cancel negative image attribute only (VT220)
 | ||
| 	 *	[30m = Write with black,   [40m = Set background to black (GIGI)
 | ||
| 	 *	[31m = Write with red,     [41m = Set background to red
 | ||
| 	 *	[32m = Write with green,   [42m = Set background to green
 | ||
| 	 *	[33m = Write with yellow,  [43m = Set background to yellow
 | ||
| 	 *	[34m = Write with blue,    [44m = Set background to blue
 | ||
| 	 *	[35m = Write with magenta, [45m = Set background to magenta
 | ||
| 	 *	[36m = Write with cyan,    [46m = Set background to cyan
 | ||
| 	 *	[37m = Write with white,   [47m = Set background to white
 | ||
| 		[38m, [39m, [48m, [49m are reserved
 | ||
| 156 6E n * DSR - Device Status Report
 | ||
| 	 *	[0n = Terminal is ready, no malfunctions detected
 | ||
| 		[1n = Terminal is busy, retry later
 | ||
| 		[2n = Terminal is busy, it will send DSR when ready
 | ||
| 	 *	[3n = Malfunction, please try again
 | ||
| 		[4n = Malfunction, terminal will send DSR when ready
 | ||
| 	 *	[5n = Command to terminal to report its status
 | ||
| 	 *	[6n = Command to terminal requesting cursor position (CPR)
 | ||
| 	 *	[?15n = Command to terminal requesting printer status, returns
 | ||
| 		        [?10n = OK, [?11n = not OK, [?13n = no printer.
 | ||
| 	 *	[?25n = "Are User Defined Keys Locked?" (VT220)
 | ||
| 157 6F o   DAQ - Define Area Qualification starting at current position
 | ||
| 		[0o = Accept all input, transmit on request
 | ||
| 		[1o = Protected and guarded, accept no input, do not transmit
 | ||
| 		[2o = Accept any printing character in this field
 | ||
| 		[3o = Numeric only field
 | ||
| 		[4o = Alphabetic (A-Z and a-z) only
 | ||
| 		[5o = Right justify in area
 | ||
| 		[3;6o = Zero fill in area
 | ||
| 		[7o = Set horizontal tab stop, this is the start of the field
 | ||
| 		[8o = Protected and unguarded, accept no input, do transmit
 | ||
| 		[9o = Space fill in area
 | ||
| 
 | ||
| ==============================================================================
 | ||
| 
 | ||
|     Private Control Sequences (allowed by ANSI X3.41-1974).
 | ||
|     These take parameter strings and terminate with the last half of lowercase.
 | ||
| 
 | ||
| Oct Hex  *  	(* marks function used in DEC VT series or LA series terminals)
 | ||
| --- -- - - --------------------------------------------------------------------
 | ||
| 160 70 p * DECSTR - Soft Terminal Reset
 | ||
| 		[!p = Soft Terminal Reset
 | ||
| 161 71 q * DECLL - Load LEDs
 | ||
| 		[0q = Turn off all, [?1;4q turns on L1 and L4, etc
 | ||
| 		[154;155;157q = VT100 goes bonkers
 | ||
| 		[2;23!q = Partial screen dump from GIGI to graphics printer
 | ||
| 		[0"q = DECSCA Select Character Attributes off
 | ||
| 		[1"q = DECSCA - designate set as non-erasable
 | ||
| 		[2"q = DECSCA - designate set as erasable
 | ||
| 162 72 r * DECSTBM - Set top and bottom margins (scroll region on VT100)
 | ||
| 		[4;20r = Set top margin at line 4 and bottom at line 20
 | ||
| 163 73 s * DECSTRM - Set left and right margins on LA100,LA120
 | ||
| 		[5;130s = Set left margin at column 5 and right at column 130
 | ||
| 164 74 t * DECSLPP - Set physical lines per page
 | ||
| 		[66t = Paper has 66 lines (11 inches at 6 per inch)
 | ||
| 165 75 u * DECSHTS - Set many horizontal tab stops at once on LA100
 | ||
| 		[9;17;25;33;41;49;57;65;73;81u = Set standard tab stops
 | ||
| 166 76 v * DECSVTS - Set many vertical tab stops at once on LA100
 | ||
| 		[1;16;31;45v = Set vert tabs every 15 lines
 | ||
| 167 77 w * DECSHORP - Set horizontal pitch on LAxxx printers
 | ||
| 		[1w = 10 characters per inch, [2w = 12 characters per inch
 | ||
| 		[0w=10, [3w=13.2, [4w=16.5, [5w=5, [6w=6, [7w=6.6, [8w=8.25
 | ||
| 170 78 x * DECREQTPARM - Request terminal parameters
 | ||
| 		[3;5;2;64;64;1;0x = Report, 7 bit Even, 1200 baud, 1200 baud
 | ||
| 171 79 y * DECTST - Invoke confidence test
 | ||
| 		[2;1y = Power-up test on VT100 series (and VT100 part of VT125)
 | ||
| 		[3;1y = Power-up test on GIGI (VK100)
 | ||
| 		[4;1y = Power-up test on graphics portion of VT125
 | ||
| 172 7A z * DECVERP - Set vertical pitch on LA100
 | ||
| 		[1z = 6 lines per inch, [2z = 8 lines per inch
 | ||
| 		[0z=6, [3z=12, [4z=3, [5z=3, [6z=4
 | ||
| 173 7B {   Private
 | ||
| 174 7C | * DECTTC - Transmit Termination Character
 | ||
| 		[0| = No extra characters, [1| = terminate with FF
 | ||
| 175 7D } * DECPRO - Define protected field on VT132
 | ||
| 		[0} = No protection, [1;4;5;7} = Any attribute is protected
 | ||
| 		[254} = Characters with no attributes are protected
 | ||
| 176 7E ~ * DECKEYS - Sent by special function keys
 | ||
| 		[1~=FIND, [2~=INSERT, [3~=REMOVE, [4~=SELECT, [5~=PREV, [6~=NEXT
 | ||
| 		[17~=F6...[34~=F20 ([23~=ESC,[24~=BS,[25~=LF,[28~=HELP,[29~=DO)
 | ||
| 177 7F DELETE is always ignored
 | ||
| 
 | ||
| ==============================================================================
 | ||
|     Control Sequences with intermediate characters (from ANSI X3.64-1979).
 | ||
|     Note that there is a SPACE character before the terminating alphabetic.
 | ||
| 
 | ||
| Oct Hex  *  	(* marks function used in DEC VT series or LA series terminals)
 | ||
| --- -- - - --------------------------------------------------------------------
 | ||
| 100 40 @   SL  - Scroll Left
 | ||
| 		[4 @ = Move everything over 4 columns, 4 new columns at right
 | ||
| 101 41 A   SR  - Scroll Right
 | ||
| 		[2 A = Move everything over 2 columns, 2 new columns at left
 | ||
| 102 42 B   GSM - Graphic Size Modification
 | ||
| 		[110;50 B = Make 110% high, 50% wide
 | ||
| 103 43 C   GSS - Graphic Size Selection
 | ||
| 		[120 C = Make characters 120 decipoints (1/6 inch) high
 | ||
| 104 44 D   FNT - FoNT selection (used by SGR, [10m thru [19m)
 | ||
| 		[0;23 D = Make primary font be registered font #23
 | ||
| 105 45 E   TSS - Thin Space Specification
 | ||
| 		[36 E = Define a thin space to be 36 decipoints (1/20 inch)
 | ||
| 106 46 F   JFY - JustiFY, done by the terminal/printer
 | ||
| 		[0 E = No justification
 | ||
| 		[1 E = Fill, bringing words up from next line if necessary
 | ||
| 		[2 E = Interword spacing, adjust spaces between words
 | ||
| 		[3 E = Letter spacing, adjust width of each letter
 | ||
| 		[4 E = Use hyphenation
 | ||
| 		[5 E = Flush left margin
 | ||
| 		[6 E = Center following text between margins (until [0 E)
 | ||
| 		[7 E = Flush right margin
 | ||
| 		[8 E = Italian form (underscore instead of hyphen)
 | ||
| 107 47 G   SPI - SPacing Increment (in decipoints)
 | ||
| 		[120;72 G = 6 per inch vertical, 10 per inch horizontal
 | ||
| 110 48 H   QUAD- Do quadding on current line of text (typography)
 | ||
| 		[0 H = Flush left,  [1 H = Flush left and fill with leader
 | ||
| 		[2 H = Center,      [3 H = Center and fill with leader
 | ||
| 		[4 H = Flush right, [5 H = Flush right and fill with leader
 | ||
| 111 49 I   Reserved for future standardization
 | ||
| 157 67 o   Reserved for future standardization
 | ||
| 160 70 p   Private use
 | ||
|   ...		May be defined by the printer manufacturer
 | ||
| 176 7E ~   Private use
 | ||
| 177 7F DELETE is always ignored
 | ||
| 
 | ||
| ==============================================================================
 | ||
| Minimum requirements for VT100 emulation:
 | ||
| 
 | ||
| 1) To act as a passive display, implement the 4 cursor commands, the 2 erase
 | ||
|    commands, direct cursor addressing, and at least inverse characters.
 | ||
|    The software should be capable of handling strings with 16 numeric parameters
 | ||
|    with values in the range of 0 to 255.
 | ||
| 
 | ||
|   [A      Move cursor up one row, stop if a top of screen
 | ||
|   [B      Move cursor down one row, stop if at bottom of screen
 | ||
|   [C      Move cursor forward one column, stop if at right edge of screen
 | ||
|   [D      Move cursor backward one column, stop if at left edge of screen
 | ||
|   [H      Home to row 1 column 1 (also [1;1H)
 | ||
|   [J      Clear from current position to bottom of screen
 | ||
|   [K      Clear from current position to end of line
 | ||
|   [24;80H Position to line 24 column 80 (any line 1 to 24, any column 1 to 132)
 | ||
|   [0m     Clear attributes to normal characters
 | ||
|   [7m     Add the inverse video attribute to succeeding characters
 | ||
|   [0;7m   Set character attributes to inverse video only
 | ||
| 
 | ||
| 2) To enter data in VT100 mode, implement the 4 cursor keys and the 4 PF keys.
 | ||
|    It must be possible to enter ESC, TAB, BS, DEL, and LF from the keyboard.
 | ||
| 
 | ||
|   [A       Sent by the up-cursor key (alternately ESC O A)
 | ||
|   [B       Sent by the down-cursor key (alternately ESC O B)
 | ||
|   [C       Sent by the right-cursor key (alternately ESC O C)
 | ||
|   [D       Sent by the left-cursor key (alternately ESC O D)
 | ||
|   OP       PF1 key sends ESC O P
 | ||
|   OQ       PF2 key sends ESC O Q
 | ||
|   OR       PF3 key sends ESC O R
 | ||
|   OS       PF3 key sends ESC O S
 | ||
|   [c       Request for the terminal to identify itself
 | ||
|   [?1;0c   VT100 with memory for 24 by 80, inverse video character attribute
 | ||
|   [?1;2c   VT100 capable of 132 column mode, with bold+blink+underline+inverse
 | ||
| 
 | ||
| 3) When doing full-screen editing on a VT100, implement directed erase, the
 | ||
|    numeric keypad in applications mode, and the limited scrolling region.
 | ||
|    The latter is needed to do insert/delete line functions without rewriting
 | ||
|    the screen.
 | ||
| 
 | ||
|   [0J     Erase from current position to bottom of screen inclusive
 | ||
|   [1J     Erase from top of screen to current position inclusive
 | ||
|   [2J     Erase entire screen (without moving the cursor)
 | ||
|   [0K     Erase from current position to end of line inclusive
 | ||
|   [1K     Erase from beginning of line to current position inclusive
 | ||
|   [2K     Erase entire line (without moving cursor)
 | ||
|   [12;24r   Set scrolling region to lines 12 thru 24.  If a linefeed or an
 | ||
|             INDex is received while on line 24, the former line 12 is deleted
 | ||
|             and rows 13-24 move up.  If a RI (reverse Index) is received while
 | ||
|             on line 12, a blank line is inserted there as rows 12-13 move down.
 | ||
|             All VT100 compatible terminals (except GIGI) have this feature.
 | ||
|   ESC =   Set numeric keypad to applications mode
 | ||
|   ESC >   Set numeric keypad to numbers mode
 | ||
|   OA      Up-cursor key    sends ESC O A after ESC = ESC [ ? 1 h
 | ||
|   OB      Down-cursor key  sends ESC O B    "      "         "
 | ||
|   OC      Right-cursor key sends ESC O B    "      "         "
 | ||
|   OB      Left-cursor key  sends ESC O B    "      "         "
 | ||
|   OM      ENTER key        sends ESC O M after ESC =
 | ||
|   Ol      COMMA on keypad  sends ESC O l    "      "   (that's lowercase L)
 | ||
|   Om      MINUS on keypad  sends ESC O m    "      "
 | ||
|   Op      ZERO on keypad   sends ESC O p    "      "
 | ||
|   Oq      ONE on keypad    sends ESC O q    "      "
 | ||
|   Or      TWO on keypad    sends ESC O r    "      "
 | ||
|   Os      THREE on keypad  sends ESC O s    "      "
 | ||
|   Ot      FOUR on keypad   sends ESC O t    "      "
 | ||
|   Ou      FIVE on keypad   sends ESC O u    "      "
 | ||
|   Ov      SIX on keypad    sends ESC O v    "      "
 | ||
|   Ow      SEVEN on keypad  sends ESC O w    "      "
 | ||
|   Ox      EIGHT on keypad  sends ESC O x    "      "
 | ||
|   Oy      NINE on keypad   sends ESC O y    "      "
 | ||
| 
 | ||
| 4) If the hardware is capable of double width/double height:
 | ||
| 
 | ||
|   #3     Top half of a double-width double-height line
 | ||
|   #4     Bottom half of a double-width double-height line
 | ||
|   #5     Make line single-width (lines are set this way when cleared by ESC [ J)
 | ||
|   #6     Make line double-width normal height (40 or 66 characters)
 | ||
| 
 | ||
| 5) If the terminal emulator is capable of insert/delete characters,
 | ||
| insert/delete lines, insert/replace mode, and can do a full-screen dump to
 | ||
| the printer (in text mode), then it should identify itself as a VT102
 | ||
| 
 | ||
|   [c     Request for the terminal to identify itself
 | ||
|   [?6c   VT102 (printer port, 132 column mode, and ins/del standard)
 | ||
|   [1@    Insert a blank character position (shift line to the right)
 | ||
|   [1P    Delete a character position (shift line to the left)
 | ||
|   [1L    Insert blank line at current row (shift screen down)
 | ||
|   [1M    Delete the current line (shift screen up)
 | ||
|   [4h    Set insert mode, new characters shove existing ones to the right
 | ||
|   [4l    Reset insert mode, new characters replace existing ones
 | ||
|   [0i    Print screen (all 24 lines) to the printer
 | ||
|   [4i    All received data goes to the printer (nothing to the screen)
 | ||
|   [5i    All received data goes to the screen (nothing to the printer)
 | ||
| 
 | ||
| 
 | ||
| [End of ANSICODE.TXT]
 | 
