mirror of
https://github.com/tmux/tmux.git
synced 2024-10-31 22:58:49 +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-consistent.
|
||
|
||
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 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
|
||
|
||
==============================================================================
|
||
|
||
Independent 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 Boundary 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]
|