ASCII codesCompiled by Paul BourkeAugust 1995
Decimal Hex Oct Usage Control
----------------------------------------------------------------------------
0 0 0 NUL (Null) @
1 1 1 SOH A
2 2 2 STX B
3 3 3 ETX C
4 4 4 EQT D
5 5 5 ENQ (Answerback) E
6 6 6 ACK F
7 7 7 BEL (Bell) G
8 8 10 BS (Backspace) H
9 9 11 HT (Tab) I
10 a 12 LF (Linefeed) J
11 b 13 VT K
12 c 14 FF L
13 d 15 CR (Carriage Return) M
14 e 16 SO N
15 f 17 SI O
16 10 20 DLE P
17 11 21 DC1 (Xon) Q
18 12 22 DC2 R
19 13 23 DC3 (Xoff) S
20 14 24 DC4 T
21 15 25 NAK U
22 16 26 SYN V
23 17 27 ETB W
24 18 30 CAN (Cancel) X
25 19 31 EM Y
26 1a 32 SUB Z
27 1b 33 ESC (Escape) [
28 1c 34 FS \
29 1d 35 GS ]
30 1e 36 RS ~
31 1f 37 US ?
32 20 40 Space
33 21 41 !
34 22 42 "
35 23 43 #
36 24 44 $
37 25 45 %
38 26 46 &
39 27 47 '
40 28 50 (
41 29 51 )
42 2a 52 *
43 2b 53 +
44 2c 54 ,
45 2d 55 -
46 2e 56 .
47 2f 57 /
48 30 60 0
49 31 61 1
50 32 62 2
51 33 63 3
52 34 64 4
53 35 65 5
54 36 66 6
55 37 67 7
56 38 70 8
57 39 71 9
58 3a 72 :
59 3b 73 ;
60 3c 74 <
61 3d 75 =
62 3e 76 >
63 3f 77 ?
64 40 100 @
65 41 101 A
66 42 102 B
67 43 103 C
68 44 104 D
69 45 105 E
70 46 106 F
71 47 107 G
72 48 110 H
73 49 111 I
74 4a 112 J
75 4b 113 K
76 4c 114 L
77 4d 115 M
78 4e 116 N
79 4f 117 O
80 50 120 P
81 51 121 Q
82 52 122 R
83 53 123 S
84 54 124 T
85 55 125 U
86 56 126 V
87 57 127 W
88 58 130 X
89 59 131 Y
90 5a 132 Z
91 5b 133 [
92 5c 134 \
93 5d 135 ]
94 5e 136 ^
95 5f 137 _
96 60 140 `
97 61 141 a
98 62 142 b
99 63 143 c
100 64 144 d
101 65 145 e
102 66 146 f
103 67 147 g
104 68 150 h
105 69 151 i
106 6a 152 j
107 6b 153 k
108 6c 154 l
109 6d 155 m
110 6e 156 n
111 6f 157 o
112 70 160 p
113 71 161 q
114 72 162 r
115 73 163 s
116 74 164 t
117 75 165 u
118 76 166 v
119 77 167 w
120 78 170 x
121 79 171 y
122 7a 172 z
123 7b 173 {
124 7c 174 |
125 7d 175 }
126 7e 176 ~
127 7f 177 DEL (Delete)
Latin 1 character setThe following is the "official" Latin I Character set. In particular, these characters can be included in HTML documents by enclosing them as &#__;. For precise details view the source of this file.
32 160 Non-breaking space
33 ! 161 ¡ Inverted exclamation
34 " 162 ¢ Cent sign
35 # 163 £ Pound sterling
36 $ 164 ¤ General currency sign
37 % 165 ¥ Yen sign
38 & 166 ¦ Broken vertical bar
39 ' 167 § Section sign
40 ( 168 ¨ Umlaut (dieresis)
41 ) 169 © Copyright
42 * 170 ª Feminine ordinal
43 + 171 « Left angle quote, guillemotleft
44 , 172 ¬ Not sign
45 - 173 Soft hyphen
46 . 174 ® Registered trademark
47 / 175 ¯ Macron accent
48 0 176 ° Degree sign
49 1 177 ± Plus or minus
50 2 178 ² Superscript two
51 3 179 ³ Superscript three
52 4 180 ´ Acute accent
53 5 181 µ Micro sign
54 6 182 ¶ Paragraph sign
55 7 183 · Middle dot
56 8 184 ¸ Cedilla
57 9 185 ¹ Superscript one
58 : 186 º Masculine ordinal
59 ; 187 » Right angle quote, guillemotright
60 < 188 ¼ Fraction one-fourth
61 = 189 ½ Fraction one-half
62 > 190 ¾ Fraction three-fourths
63 ? 191 ¿ Inverted question mark
64 @ 192 À Capital A, grave accent ("À")
65 A 193 Á Capital A, acute accent ("Á")
66 B 194 Â Capital A, circumflex accent ("Â")
67 C 195 Ã Capital A, tilde ("Ã")
68 D 196 Ä Capital A, dieresis or umlaut mark ("Ä")
69 E 197 Å Capital A, ring ("Å")
70 F 198 Æ Capital AE dipthong (ligature) ("Æ")
71 G 199 Ç Capital C, cedilla ("Ç")
72 H 200 È Capital E, grave accent ("È")
73 I 201 É Capital E, acute accent ("É")
74 J 202 Ê Capital E, circumflex accent ("Ê")
75 K 203 Ë Capital E, dieresis or umlaut mark ("Ë")
76 L 204 Ì Capital I, grave accent ("Ì")
77 M 205 Í Capital I, acute accent ("Í")
78 N 206 Î Capital I, circumflex accent ("Î")
79 O 207 Ï Capital I, dieresis or umlaut mark ("Ï")
80 P 208 Ð Capital Eth, Icelandic ("Ð")
81 Q 209 Ñ Capital N, tilde ("Ñ")
82 R 210 Ò Capital O, grave accent ("Ò")
83 S 211 Ó Capital O, acute accent ("Ó")
84 T 212 Ô Capital O, circumflex accent ("Ô")
85 U 213 Õ Capital O, tilde ("Õ")
86 V 214 Ö Capital O, dieresis or umlaut mark ("Ö")
87 W 215 × Multiply sign
88 X 216 Ø Capital O, slash ("Ø")
89 Y 217 Ù Capital U, grave accent ("Ù")
90 Z 218 Ú Capital U, acute accent ("Ú")
91 [ 219 Û Capital U, circumflex accent ("Û")
92 \ 220 Ü Capital U, dieresis or umlaut mark ("Ü")
93 ] 221 Ý Capital Y, acute accent ("Ý")
94 ^ 222 Þ Capital THORN, Icelandic ("Þ")
95 _ 223 ß Small sharp s, German (sz ligature) ("ß")
96 ` 224 à Small a, grave accent ("à")
97 a 225 á Small a, acute accent ("á")
98 b 226 â Small a, circumflex accent ("â")
99 c 227 ã Small a, tilde ("ã")
100 d 228 ä Small a, dieresis or umlaut mark ("ä")
101 e 229 å Small a, ring ("å")
102 f 230 æ Small ae dipthong (ligature) ("æ")
103 g 231 ç Small c, cedilla ("ç")
104 h 232 è Small e, grave accent ("è")
105 i 233 é Small e, acute accent ("é")
106 j 234 ê Small e, circumflex accent ("ê")
107 k 235 ë Small e, dieresis or umlaut mark ("ë")
108 l 236 ì Small i, grave accent ("ì")
109 m 237 í Small i, acute accent ("í")
110 n 238 î Small i, circumflex accent ("î")
111 o 239 ï Small i, dieresis or umlaut mark ("ï")
112 p 240 ð Small eth, Icelandic ("ð")
113 q 241 ñ Small n, tilde ("ñ")
114 r 242 ò Small o, grave accent ("ò")
115 s 243 ó Small o, acute accent ("ó")
116 t 244 ô Small o, circumflex accent ("ô")
117 u 245 õ Small o, tilde ("õ")
118 v 246 ö Small o, dieresis or umlaut mark ("ö")
119 w 247 ÷ Division sign
120 x 248 ø Small o, slash ("ø")
121 y 249 ù Small u, grave accent ("ù")
122 z 250 ú Small u, acute accent ("ú")
123 { 251 û Small u, circumflex accent ("û")
124 | 252 ü Small u, dieresis or umlaut mark ("ü")
125 } 253 ý Small y, acute accent ("ý")
126 ~ 254 þ Small thorn, Icelandic ("þ")
127 255 ÿ Small y, dieresis or umlaut mark ("ÿ")
ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals in alphabetic order by mnemonicCompiled by Paul BourkeMarch 1989
Ps and Pn are parameters expressed in ASCII.
Numeric parameters are given in decimal radix.
Abbreviations are explained in detail at end.
Spaces used in this table for clarity are not used in the actual codes.
Default Type
Sequence Sequence Parameter or
Mnemonic Name Sequence Value Mode
---------------------------------------------------------------------------
APC Applicatn Program Command Esc Fe Delim
CBT Cursor Backward Tab Esc [ Pn Z 1 EdF
CCH Cancel Previous Character Esc T
CHA Cursor Horzntal Absolute Esc [ Pn G 1 EdF
CHT Cursor Horizontal Tab Esc [ Pn I 1 EdF
CNL Cursor Next Line Esc [ Pn E 1 EdF
CPL Cursor Preceding Line Esc [ Pn F 1 EdF
CPR Cursor Position Report Esc [ Pn ; Pn R 1, 1
CSI Control Sequence Intro Esc [ Intro
CTC Cursor Tab Control Esc [ Ps W 0 EdF
CUB Cursor Backward Esc [ Pn D 1 EdF
CUD Cursor Down Esc [ Pn B 1 EdF
CUF Cursor Forward Esc [ Pn C 1 EdF
CUP Cursor Position Esc [ Pn ; Pn H 1, 1 EdF
CUU Cursor Up Esc [ Pn A 1 EdF
CVT Cursor Vertical Tab Esc [ Pn Y EdF
DA Device Attributes Esc [ Pn c 0
DAQ Define Area Qualification Esc [ Ps o 0
DCH Delete Character Esc [ Pn P 1 EdF
DCS Device Control String Esc P Delim
DL Delete Line Esc [ Pn M 1 EdF
DMI Disable Manual Input Esc \ Fs
DSR Device Status Report Esc [ Ps n 0
EA Erase in Area Esc [ Ps O 0 EdF
ECH Erase Character Esc [ Pn X 1 EdF
ED Erase in Display Esc [ Ps J 0 EdF
EF Erase in Field Esc [ Ps N 0 EdF
EL Erase in Line Esc [ Ps K 0 EdF
EMI Enable Manual Input Esc b Fs
EPA End of Protected Area Esc W
ESA End of Selected Area Esc G
FNT Font Selection Esc [ Pn ; Pn Space D 0, 0 FE
GSM Graphic Size Modify Esc [ Pn ; Pn Space B 100, 100 FE
GSS Graphic Size Selection Esc [ Pn Space C none FE
HPA Horz Position Absolute Esc [ Pn ` 1 FE
HPR Horz Position Relative Esc [ Pn a 1 FE
HTJ Horz Tab w/Justification Esc I FE
HTS Horizontal Tab Set Esc H FE
HVP Horz & Vertical Position Esc [ Pn ; Pn f 1, 1 FE
ICH Insert Character Esc [ Pn @ 1 EdF
IL Insert Line Esc [ Pn L 1 EdF
IND Index Esc D FE
INT Interrupt Esc a Fs
JFY Justify Esc [ Ps ; ... ; Ps Space F 0 FE
MC Media Copy Esc [ Ps i 0
MW Message Waiting Esc U
NEL Next Line Esc E FE
NP Next Page Esc [ Pn U 1 EdF
OSC Operating System Command Esc ] Delim
PLD Partial Line Down Esc K FE
PLU Partial Line Up Esc L FE
PM Privacy Message Esc ^ Delim
PP Preceding Page Esc [ Pn V 1 EdF
PU1 Private Use 1 Esc Q
PU2 Private Use 2 Esc R
QUAD Typographic Quadding Esc [ Ps Space H 0 FE
REP Repeat Char or Control Esc [ Pn b 1
RI Reverse Index Esc M FE
RIS Reset to Initial State Esc c Fs
RM Reset Mode Esc [ Ps l none
SD Scroll Down Esc [ Pn T 1 EdF
SEM Select Edit Extent Mode Esc [ Ps Q 0
SGR Select Graphic Rendition Esc [ Ps m 0 FE
SL Scroll Left Esc [ Pn Space @ 1 EdF
SM Select Mode Esc [ Ps h none
SPA Start of Protected Area Esc V
SPI Spacing Increment Esc [ Pn ; Pn Space G none FE
SR Scroll Right Esc [ Pn Space A 1 EdF
SS2 Single Shift 2 (G2 set) Esc N Intro
SS3 Single Shift 3 (G3 set) Esc O Intro
SSA Start of Selected Area Esc F
ST String Terminator Esc \ Delim
STS Set Transmit State Esc S
SU Scroll Up Esc [ Pn S 1 EdF
TBC Tab Clear Esc [ Ps g 0 FE
TSS Thin Space Specification Esc [ Pn Space E none FE
VPA Vert Position Absolute Esc [ Pn d 1 FE
VPR Vert Position Relative Esc [ Pn e 1 FE
VTS Vertical Tabulation Set Esc J FE
Abbreviations:
Intro an Introducer of some kind of defined sequence; the normal 7-bit
X3.64 Control Sequence Introducer is the two characters "Escape ["
Delim a Delimiter
x/y identifies a character by position in the ASCII table (column/row)
EdF editor function (see explanation)
FE format effector (see explanation)
F is a Final character in
an Escape sequence (F from 3/0 to 7/14 in the ASCII table)
a control sequence (F from 4/0 to 7/14)
Gs is a graphic character appearing in strings (Gs ranges from
2/0 to 7/14) in the ASCII table
Ce is a control represented as a single bit combination in the C1 set
of controls in an 8-bit character set
C0 the familiar set of 7-bit ASCII control characters
C1 roughly, the set of control characters available only in 8-bit systems.
This is too complicated to explain fully here, so read Jim Fleming's
article in the February 1983 BYTE, especially pages 214 through 224.
Fe is a Final character of a 2-character Escape sequence that has an
equivalent representation in an 8-bit environment as a Ce-type
(Fe ranges from 4/0 to 5/15)
Fs is a Final character of a 2-character Escape sequence that is
standardized internationally with identical representation in 7-bit
and 8-bit environments and is independent of the currently
designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14)
I is an Intermediate character from 2/0 to 2/15 (inclusive) in the
ASCII table
P is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII
table
Pn is a numeric parameter in a control sequence, a string of zero or
more characters ranging from 3/0 to 3/9 in the ASCII table
Ps is a variable number of selective parameters in a control sequence
with each selective parameter separated from the other by the code
3/11 (which usually represents a semicolon); Ps ranges from
3/0 to 3/9 and includes 3/11
Format Effectors versus Editor Functions
A format effector specifies how the final output is to be created.
An editor function allows you to modify the specification.
For instance, a format effector that moves the "active position" (the
cursor or equvalent) one space to the left would be useful when you want to
create an overstrike, a compound character made of two standard characters
overlaid. Control-H, the Backspace character, is actually supposed to be a
format effector, so you can do this. But many systems use it in a
nonstandard fashion, as an editor function, deleting the character to the
left of the cursor and moving the cursor left. When Control-H is assumed to
be an editor function, you cannot predict whether its use will create an
overstrike unless you also know whether the output device is in an "insert
mode" or an "overwrite mode". When Control-H is used as a format effector,
its effect can always be predicted. The familiar characters carriage
return, linefeed, formfeed, etc., are defined as format effectors.
ANSI X3.64 Mode-Changing Parameters for use with the Select Mode (SM) and Reset Mode (RM) functions
Parameter Mode Mode Function
Characters Mnemonic
column/ graphic
row repres.
----------------------------------------------------------------------------
3/0 0 an error condition
3/1 1 GATM guarded-area transfer mode
3/2 2 KAM keyboard action mode
3/3 3 CRM control representation mode
3/4 4 IRM insertion/replacement mode
3/5 5 SRTM status-reporting transfer mode
3/6 6 ERM erasure mode
3/7 7 VEM vertical editing mode
3/8 8 reserved for future standardization
3/9 9 reserved for future standardization
3/10 : reserved separator for parameters
3/11 ; Standard separator for parameters
3/12 < reserved for private (experimental) use
3/13 = reserved for private (experimental) use
3/14 > reserved for private (experimental) use
3/15 ? reserved for private (experimental) use
3/1 3/0 10 HEM horizontal editing mode
3/1 3/1 11 PUM positioning unit mode
3/1 3/2 12 SRM send/receive mode
3/1 3/3 13 FEAM format effector action mode
3/1 3/4 14 FETM format effector transfer mode
3/1 3/5 15 MATM multiple area transfer mode
3/1 3/6 16 TTM transfer termination mode
3/1 3/7 17 SATM selected area transfer mode
3/1 3/8 18 TSM tabulation stop mode
3/1 3/9 19 EBM editing boundary mode
3/1 3/10 1: reserved separator for parameters
3/1 3/11 1; Standard separator for parameters
3/1 3/12 1< error condition--unspecified recovery
3/1 3/13 1= error condition--unspecified recovery
3/1 3/14 1> error condition--unspecified recovery
3/1 3/15 1? error condition--unspecified recovery
3/2 3/0 20 LNM linefeed/newline mode (not in ISO 6429)
3/2 3/1 21
. .
. . reserved for future standardization
. .
3/9 3/9 99
3/12 3/0 <0
. .
. . reserved for private (experimental) use
. .
3/15 3/15 ??
NOTES ON THE DEC VT100 IMPLEMENTATION
In the case of the popular DEC VT100 video-terminal implementation,
the only mode that may be altered is the linefeed/newline (LNM) mode.
Other modes are considered permanently set, reset, or not applicable
as follows:
Set: ERM
Reset: CRM, EBM, FEAM, FETM, IRM, KAM, PUM, SRTM, TSM
N/A: GATM, HEM, MATM, SATM, TTM, VEM
Control sequences implemented in the VT100 are as follows:
CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND,
LNM, NEL, RI, RIS, RM, SGR, SM, TBC
plus several private DEC commands.
Erasing parts of the display (EL and ED) in the VT100 is performed thus:
Erase from cursor to end of line Esc [ 0 K or Esc [ K
Erase from beginning of line to cursor Esc [ 1 K
Erase line containing cursor Esc [ 2 K
Erase from cursor to end of screen Esc [ 0 J or Esc [ J
Erase from beginning of screen to cursor Esc [ 1 J
Erase entire screen Esc [ 2 J
The VT100 responds to receiving the DA (Device Attributes) control
Esc [ c (or Esc [ 0 c)
by transmitting the sequence
Esc [ ? l ; Ps c
where Ps is a character that describes installed options.
The VT100's cursor location can be read with the DSR (Device Status
Report) control
Esc [ 6 n
The VT100 reports by transmitting the CPR sequence
Esc [ Pl ; Pc R
where Pl is the line number and Pc is the column number (in decimal).
The complete document describing the standard, "ANSI X3.64-1979:
Additional Controls for Use with the American National Standard
Code for Information Interchange," can be ordered for $13.50 (plus
$4 postage) from
Standards Sales Department
American National Standards Institute
1430 Broadway
New York, NY 10018
212/354-3300
It's best to read the full standard before using it. It also helps
to have copies of the related standards "X3.4-1977: American
National Standard Code for Information Interchange" (the ASCII
standard) and "X3.41.1974: Code-Extension Techniques for Use with
the 7-Bit Coded Character Set of American National Standard for
Information Interchange."
See also the chapter "Using Extended Screens and Keyboard Control"
in the IBM PC-DOS manuals (versions 2.0, 2.1, and 3.0), especially
for the coding for character attributes.
The specification for the DEC VT100 is document EK-VT100-UG-003,
available for $13.00 prepaid from:
Digital Equipment Corporation
Accessories and Supplies Group
POB CS-2008
Nashua, NH 03061
Copyright 1984 BYTE Publications, subsidiary of McGraw-Hill Inc.
Permission granted to reproduce for noncommercial uses.
This file prepared by Richard S. Shuford.
VT100 commands and control sequencesedited by Paul Bourke
The following are the VT100 commands as described by the
Digital VT101 Video Terminal User Guide (EK-VT101-UG-003). An
asterik (*) beside the function indicate that it is currently
supported. A plus (+) means the function is trapped and ignored.
Scrolling Functions:
* ESC [ pt ; pb r set scroll region
* ESC [ ? 6 h turn on region - origin mode
* ESC [ ? 6 l turn off region - full screen mode
Cursor Functions:
* ESC [ pn A cursor up pn times - stop at top
* ESC [ pn B cursor down pn times - stop at bottom
* ESC [ pn C cursor right pn times - stop at far right
* ESC [ pn D cursor left pn times - stop at far left
* ESC [ pl ; pc H set cursor position - pl Line, pc Column
* ESC [ H set cursor home
* ESC [ pl ; pc f set cursor position - pl Line, pc Column
* ESC [ f set cursor home
* ESC D cursor down - at bottom of region, scroll up
* ESC M cursor up - at top of region, scroll down
* ESC E next line (same as CR LF)
* ESC 7 save cursor position(char attr,char set,org)
* ESC 8 restore position (char attr,char set,origin)
Applications / Normal Mode:
* ESC [ ? 1 h cursor keys in applications mode
* ESC [ ? 1 l cursor keys in cursor positioning mode
* ESC = keypad keys in applications mode
* ESC > keypad keys in numeric mode
Character Sets:
* ESC ( A UK char set as G0
* ESC ( B US char set as G0
* ESC ( 0 line char set as G0
* ESC ) A UK char set as G1
* ESC ) B US char set as G1
* ESC ) 0 line char set as G1
* ESC N select G2 set for next character only
* ESC O select G3 set for next character only
Character Attributes:
* ESC [ m turn off attributes - normal video
* ESC [ 0 m turn off attributes - normal video
!* ESC [ 4 m turn on underline mode
* ESC [ 7 m turn on inverse video mode
* ESC [ 1 m highlight
* ESC [ 5 m blink
! On color systems underlined characters are displayed in blue
Line Attributes:
+ ESC # 3 double high (top half) - double wide
+ ESC # 4 double high (bottom half) - double wide
+ ESC # 5 single wide - single height
+ ESC # 6 double wide - single height
Erasing:
* ESC [ K erase to end of line (inclusive)
* ESC [ 0 K erase to end of line (inclusive)
* ESC [ 1 K erase to beginning of line (inclusive)
* ESC [ 2 K erase entire line (cursor doesn't move)
* ESC [ J erase to end of screen (inclusive)
* ESC [ 0 J erase to end of screen (inclusive)
* ESC [ 1 J erase to beginning of screen (inclusive)
* ESC [ 2 J erase entire screen (cursor doesn't move)
Tabulation:
* ESC H set tab in current position
* ESC [ g clear tab stop in current position
* ESC [ 0 g clear tab stop in current position
* ESC [ 3 g clear all tab stops
Printing:
* ESC [ i print page
* ESC [ 0 i print page
* ESC [ 1 i print line
* ESC [ ? 4 i auto print off
* ESC [ ? 5 i auto print on
+ ESC [ 4 i print controller off
+ ESC [ 5 i print controller on
Requests / Reports:
* ESC [ 5 n request for terminal status
ESC [ 0 n report - no malfunction
* ESC [ 6 n request for cursor position report
ESC [ pl;pc R report - cursor at line pl, & column pc
* ESC [ ? 1 5 n request printer status
ESC [ ? 1 0 n report - printer ready
* ESC [ c request to identify terminal type
* ESC [ 0 c request to identify terminal type
* ESC Z request to identify terminal type
ESC [ ? 1;0 c report - type VT100
Initialization / Tests:
+ ESC c reset to initial state
+ ESC [ 2 ; 1 y power up test
+ ESC [ 2 ; 2 y loop back test
+ ESC [ 2 ; 9 y power up test till failure or power down
+ ESC [ 2 ; 10 y loop back test till failure or power down
+ ESC # 8 video alignment test-fill screen with E's
Setup Functions:
+ ESC [ ? 2 l enter VT52 mode
+ ESC < exit VT52 mode
+ ESC [ ? 3 h 132 column mode
+ ESC [ ? 3 l 80 column mode
+ ESC [ ? 4 h smooth scroll
+ ESC [ ? 4 l jump scroll
* ESC [ ? 5 h black characters on white screen mode
* ESC [ ? 5 l white characters on black screen mode
* ESC [ ? 7 h auto wrap to new line
* ESC [ ? 7 l auto wrap off
+ ESC [ ? 8 h keyboard auto repeat mode on
+ ESC [ ? 8 l keyboard auto repeat mode off
+ ESC [ ? 9 h 480 scan line mode
+ ESC [ ? 9 l 240 scan line mode
* ESC [ ? 1 8 h print form feed on
* ESC [ ? 1 8 l print form feed off
* ESC [ ? 1 9 h print whole screen
* ESC [ ? 1 9 l print only scroll region
+ ESC [ 2 0 h newline mode LF, FF, VT, CR = CR/LF)
+ ESC [ 2 0 l line feed mode (LF, FF, VT = LF ; CR = CR)
LED Functions:
!* ESC [ 0 q turn off LED 1-4
!* ESC [ 1 q turn on LED #1
!* ESC [ 2 q turn on LED #2
!* ESC [ 3 q turn on LED #3
!* ESC [ 4 q turn on LED #4
! The bottom line of the screen is used as a status line by the
VT100 emulation. The information on the bottom line is:
1) the status of the four VT100 LED's
2) the status of the numeric keypad (application mode /normal mode)
3) the status of the cursor keypad (application mode/normal mode)
Interpreted Control Characters:
* ^O shift in - selects G0 character set
* ^N shift out - selects G1 character set
VT100 KEYBOARD MAP
The following table describes the special function keys of the
VT100 and shows the transmitted sequences. It also shows the key
or key sequence required to produce this function on the IBM-PC
keyboard. The VT100 has four function keys PF1 - PF4, four arrow
keys, and a numeric keypad with 0-9, ".", "-", RETURN and ",".
The numeric keypad and the arrow keys may be in standard mode or
applications mode as set by the host computer. Sequences will be
sent as follows:
To Get Press Key on
VT100 Key Standard Applications IBM Keypad
=====================================================
NUMLOK - On
Keypad:
0 0 ESC O p 0
1 1 ESC O q 1
2 2 ESC O r 2
3 3 ESC O s 3
4 4 ESC O t 4
5 5 ESC O u 5
6 6 ESC O v 6
7 7 ESC O w 7
8 8 ESC O x 8
9 9 ESC O y 9
- - ESC O m -
, , ESC O l * (on PrtSc key)
. . ESC O n .
Return Return ESC O M +
NUMLOK - Off
Arrows:
Up ESC [ A ESC O A Up
Down ESC [ B ESC O B Down
Right ESC [ C ESC O C Right
Left ESC [ D ESC O D Left
Up ESC [ A ESC O A Alt 9
Down ESC [ B ESC O B Alt 0
Right ESC [ C ESC O C Alt -
Left ESC [ D ESC O D Alt =
Note that either set of keys may be used to send VT100 arrow keys.
The Alt 9,0,-, and = do not require NumLok to be off.
Functions:
PF1 - Gold ESC O P ESC O P F1
PF2 - Help ESC O Q ESC O Q F2
PF3 - Next ESC O R ESC O R F3
PF4 - DelBrk ESC O S ESC O S F4
Please note that the backspace key transmits an ascii DEL
(character 127) while in VT100 emulation. To get a true ascii
backspace (character 8) you must press control-backspace.
![]()
mmencode/mmdecodeWritten by Paul BourkeJune 1993 man mmencode states
Name
Description The mimencode program simply converts a byte stream into (or out of) one of the standard mail encoding formats defined by MIME, the proposed standard for internet multimedia mail formats. Such an encoding is necessary because binary data cannot be sent through the mail. The encodings understood by mimencode are preferable to the use of the uuencode/uudecode programs, for use in mail, in several respects that were important to the authors of MIME. The man pages don't tell you how it does it, this is the discussion of this short note mmencode by default uses a system previously known as "base64". Basically, consider the bytes of a file lines up one after the other in a long stream. Now move along this stream taking 6 bits at a time and encode them using some "dictionary" of printable characters. The only trick now is to know what dictionary mmencode actually uses. It is given below. For example if the current 6 bits happen to be 000001 then the letter B is written to the mmencoded file. If 111110 is encountered then + is written to the mmencoded file. There are a number of way of encoding binary file into text only files for various restrictive transmission channels. Generally they are all very similar except for the bit length they use and the dictionary that maps whatever number of bits to a printable character. The two most common alternative formats are hqx which is generally used on Macintosh systems, and uuencode which is used on UNIX.
Perl script to convert base64 to uuencode format and then uudecode it
#!/bin/perl -n
tr#A-Za-z0-9+/##cd; # remove non-base64 chars
tr#A-Za-z0-9+/# -_#; # convert to uuencoded format
$len = pack("c", 32 + 0.75*length); # compute length byte
print unpack("u", $len . $_); # uudecode and print
MacBinary formatOriginally by Peter OlsonCompiled by Paul Bourke November 1990 Introduction
MacBinary is a binary (non-text) format that encodes Macintosh files so that they can be safely stored or transferred through non-Macintosh systems. MacBinary combines the two forks of a Mac file, together with the file information (Name, Creator Application, File Type, etc) into a single binary data stream, suitable for storage on non-Mac systems. This serves a similar purpose to BinHex, except that BinHex takes things even further and stores the file using only text characters, so that the file will be preserved on almost any system, and can be sent through Email or USENET News without loss or corruption. MacBinary II is the current standard for the MacBinary format. I have further extended the format to allow the encoding of folder hierarchies into a single MacBinary II+ file. But be warned, currently no one else implements this extension, and it may well be that no one else ever will, so the only program you can use to decode folders stored in MacBinary II+ format is this one. Note that this does not affect files stored in MacBinary II format, since files use the MacBinary II format without the new extensions, so any MacBinary decoder should work happily. Specification
This is a preliminary specification of an extension to the MacBinary II Standard to allow MacBinary to incorporate a directory tree in a similar way to a Unix tar file. This is done by a fairly simple extension to the standard (which is documented separately, and which you should be familiar with before reading this), basically, I defined a 128 byte block that marks the start of a folder, and another one that marks the end of the folder, and then set it up like this:
start block for folder "Folder1"
file1 - standard macbinary format
file2
start block for "Folder2"
file3
end block
end block
While the end block doesn't actually need to contain any information, its format is similar to the header block for consistency. Start Block:
Offset 000-version 1 - this is incompatible with previous decoders.
Offset 001-Byte, Length of foldername (must be in the range 1-63)
Offset 002-1 to 63 chars, foldername (only "length" bytes are significant,
the rest should be zero).
Offset 065-Long Word, file type - 'fold'
Offset 069-Long Word, file creator - $FFFFFFFF
Offset 073-Byte, original Finder flags of folder (high byte)
Offset 074-Byte, zero fill, must be zero for compatibility
Offset 075-Word, folder's vertical position within its window.
Offset 077-Word, folder's horizontal position within its window.
Offset 079-Word, folder's window or folder ID.
Offset 081-Byte, "Protected" flag (in low order bit).
Offset 082-Byte, zero fill, must be zero for compatibility
Offset 083-Long Word, Data Fork length 0
Offset 087-Long Word, Resource Fork length 0
Offset 091-Long Word, Folder's creation date
Offset 095-Long Word, Folder's "last modified" date.
Offset 099-Word, length of Get Info comment to be sent after the resource
fork (if implemented, see below).
*Offset 101-Byte, Finder Flags, bits 0-7. (Bits 8-15 are already in byte 73)
*Offset 116-Long Word, Length of total files when packed files are unpacked.
This may be zero to avoid having to preparse the folder when
creating the MacBinary file.
*Offset 120-Word, Length of a secondary header. If this is non-zero,
Skip this many bytes (rounded up to the next multiple of 128)
This is for future expansion only, when sending files with
MacBinary, this word should be zero.
*Offset 122-Byte, Version number of Macbinary II - 130
*Offset 123-Byte, Minimum MacBinary II version needed to read this file - 130
*Offset 124-Word, CRC of previous 124 bytes
Notes
Offset 000-version 1 - this is incompatible with previous decoders.
Offset 065-Long Word, file type - 'fold'
Offset 069-Long Word, file creator - $FFFFFFFE
*Offset 116-Long Word, Length of total files when packed files are unpacked.
This may be zero.
*Offset 120-Word, Length of a secondary header. If this is non-zero,
Skip this many bytes (rounded up to the next multiple of 128)
This is for future expansion only, when sending files with
MacBinary, this word should be zero.
*Offset 122-Byte, Version number of Macbinary II - 130
*Offset 123-Byte, Minimum MacBinary II version needed to read this file - 130
*Offset 124-Word, CRC of previous 124 bytes
Note You should recognize the Start and End blocks by the version, file type and creator fields. Decoders MUST NOT rely on ANY other fields in the End Block being valid. Encoders MAY fill them out to look like a start block, or may zero-fill them. Encoders SHOULD zero-fill any bytes not explicitly set - this applies to all header blocks and all padding. All internal files should have version 0, MacBinary II version 129,129.
An extended MacBinary file MUST start with a Start Block. Thus a
MacBinary II+ file is either:
Revised standard These are the new changes to the MacBinary Standard, as generally agreed upon in the MacBinary II Conference 6/21/87, and as changed in the follow-up conference 6/28/87. Revised 7/24/87 to reflect suggestions and clarifications that came later, and to include all necessary information needed from the original MacBinary standard document to implement MacBinary II. The new standard will be very similar to the original MacBinary standard as described in [MacBinary Standard]. (Reading the original standard is recommended for a full understanding of implementation and philosophy behind the MacBinary I and II formats.) The binary format consists of a 128-byte header containing all the information necessary to reproduce the document's directory entry on the receiving Macintosh; followed by the document's Data Fork (if it has one), padded with nulls to a multiple of 128 bytes (if necessary); followed by the document's Resource Fork (again, padded if necessary). The lengths of these forks (either or both of which may be zero) are contained in the header. Header format
Offset 000-Byte, old version number, must be kept at zero for compatibility
Offset 001-Byte, Length of filename (must be in the range 1-63)
Offset 002-1 to 63 chars, filename (only "length" bytes are significant).
Offset 065-Long Word, file type (normally expressed as four characters)
Offset 069-Long Word, file creator (normally expressed as four characters)
Offset 073-Byte, original Finder flags
Bit 7 - Locked.
Bit 6 - Invisible.
Bit 5 - Bundle.
Bit 4 - System.
Bit 3 - Bozo.
Bit 2 - Busy.
Bit 1 - Changed.
Bit 0 - Inited.
Offset 074-Byte, zero fill, must be zero for compatibility
Offset 075-Word, file's vertical position within its window.
Offset 077-Word, file's horizontal position within its window.
Offset 079-Word, file's window or folder ID.
Offset 081-Byte, "Protected" flag (in low order bit).
Offset 082-Byte, zero fill, must be zero for compatibility
Offset 083-Long Word, Data Fork length (bytes, zero if no Data Fork).
Offset 087-Long Word, Resource Fork length (bytes, zero if no R.F.).
Offset 091-Long Word, File's creation date
Offset 095-Long Word, File's "last modified" date.
Offset 099-Word, length of Get Info comment to be sent after the resource
fork (if implemented, see below).
*Offset 101-Byte, Finder Flags, bits 0-7. (Bits 8-15 are already in byte 73)
*Offset 116-Long Word, Length of total files when packed files are unpacked.
This is only used by programs that pack and unpack on the fly,
mimicking a standalone utility such as PackIt. A program that is
uploading a single file must zero this location when sending a
file. Programs that do not unpack/uncompress files when
downloading may ignore this value.
*Offset 120-Word, Length of a secondary header. If this is non-zero,
Skip this many bytes (rounded up to the next multiple of 128)
This is for future expansion only, when sending files with
MacBinary, this word should be zero.
*Offset 122-Byte, Version number of Macbinary II that the uploading program
is written for (the version begins at 129)
*Offset 123-Byte, Minimum MacBinary II version needed to read this file
(start this value at 129 129)
*Offset 124-Word, CRC of previous 124 bytes
* This is newly defined for MacBinary II.
All values are stored in normal 68000 order, with Most Significant Byte appearing first then the file. Any bytes in the header not defined above should be set to zero. The original MacBinary format was amended to include the sending of the FCMT (Get Info comment) after the resource fork was sent, if the length for such comment, given in offset 99, is not zero. To the best of our knowledge, no program has implemented this feature, due to Apple's stated position that no program should read or write these comments. The definition remains in MacBinary II, so that should Apple ever provide a documented way of reading and writing these comments, terminal programs will be able to take advantage of this feature.
All Finder flags and information would be uploaded, however, a downloading
program should clear the Finder flag bits of
To determine if a header is a valid MacBinary header, check bytes 0 and 74 to be both zero. If they are both zero, either (a) the CRC should match, which means it is a MB II file, or (b) byte 82 is zero, which means it may be a MB I file. (Note that, at the current version level, byte 82 is kept zero to maintain compatibility with MacBinary I. If at some point the MacBinary versions change sufficiently that it is necessary to keep MacBinary I programs from downloading these files, we can change byte 82 to non-zero.) If the header is a MB II header, the program will check the minimum version byte, to see if it knows enough to decode the file. If the minimum version in the header is greater than the version that the terminal program was written for, it will download the file as pure XModem (creating a "TEXT" file) and notify the user that conversion is needed because the MacBinary version was too high. If the header does NOT represent a valid MB II header, the program must at minimum check byte 82 to be zero--if it is not zero, the file is not a MB I file. It is possible to write a much more robust routine, by checking the following:
If any of these tests fail, the file is not a valid MacBinary file. It may still be desirable to distinguish between text files and foreign binary files (for stripping line feeds or similar helpful acts). Some tests that would prove useful include:
CSV - Comma Separated ValueWritten by Paul BourkeApril 2000
The CSV (Comma Separated Value) format is a straightforward (mostly) way of transferring data between programs. It is typically used for spreadsheet and database applications because it is suited to data arranged in a table, that is, made up of rows and columns. In it's simplest form a CSV file consists of records and fields. The records are separated by any combination of line-feeds, carriage control, or a carriage control linefeed pairs. Fields are separated by commas and any leading or trailing spaces are removed from fields. For example the following has two records each with four fields.1,tree,december,1999 5,bush,january, 2000 The above begs the question, "What if my field contains leading or trailing spaces, commas, line-feeds, or carriage control characters?". The answer is to enclose fields in double quotes. Note that this means that records can span lines. The following example has two records each with three fields. 1," tree","december, 1999" 5,bush,"january, 2000" So what about fields that contain double quotes? These are represented by two double quotes, the field itself must also be enclosed in double quotes. For example the first field in the following becomes I said "stop". "I said ""stop""","January 2000","5pm" In the vast majority of cases CSV is used to transfer human readable ascii data, however there is no reason why it can't be used for more general binary data. HTML Entities for symbols, mathematical symbols, and Greek lettersThese entities were taken directly from the HTML 4.0 specification.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||