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 starting 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 separate 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 instead 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]
