RFC 452
TELNET Command at Host LL
TELNET Command at Host LL (part 1 of 3) π
Okay bestie, welcome to RFC 452 π Here's the title block tea first: it's from the Network Working Group, it's RFC 452, the NIC number is 14136 πΈ, and it was written by J. Winett (with JMW in the second column of the header β¨). The date is 8 February 1973 π¦. The original header doesn't list a category, and it doesn't obsolete or update anything, so there's no extra drama to track π
Introduction
Okay so this writeup explains the TELNET command at Host LL, for use under the CP/CMS time-sharing system π» It can run in HALF DUPLEX or FULL DUPLEX mode, and it works with ASCII codes or EBCDIC codes (aka transparent mode) π The keyboard conventions let you enter all the ASCII codes by typing a CONTROL character followed by another character, for the codes that aren't on an IBM 2741 terminal π§ There are also a bunch of local TELNET control commands that let you change the mode, redefine special characters, send TELNET control codes, and grab input from a file instead of the terminal. Those last bits give you a lil' file transfer facility, and honestly? Iconic π
This material hasn't been reviewed for public release and is only meant for use with the ARPA network. Don't quote or cite it in any publication that isn't related to the ARPA network π
TELNET
Purpose
To access another terminal oriented system on the ARPA network π¦
Format
TELNET host <tag> RESUME EBCDIC HALFDUP
1 OPEN ASCII FULLDUP
- host: either the hexadecimal code for a foreign network service site, or a standard mnemonic for a foreign site. See Figure 1.
- tag: the identifier for the local connections to the network. The tag gets used together with the address of the virtual machine descriptor table (UTABLE) to form the local socket numbers that show up in the network protocol π₯
- RESUME: used to reactivate communications with a foreign site after you've previously left the TELNET command with the connections left open π
- EBCDIC: to communicate with EBCDIC codes. The default is network ASCII π
- HALFDUP: to operate under a half duplex protocol, so basically with a locked keyboard π
The EBCDIC HALFDUP protocol assumes that the TELNET break code (circle C) will be received to indicate when the keyboard should be locked for input.
In ASCII HALFDUP, the keyboard locks after a line of input and unlocks after one or more lines have been received for output. An external interrupt will also unlock a locked keyboard β‘
The default is full duplex, where the keyboard is always unlocked for input. A null line is required to temporarily lock the keyboard so you can receive output π«Ά
Usage
A bunch of hosts on the ARPA network provide TELNET service β¨ A Network Virtual Terminal (NVT) has been specified, so using sites can write one TELNET program that maps a local terminal into the NVT to access any serving site on the network. That's the main character energy π Once communication is set up between a using site and a serving site, keyed input gets sent to the serving system, and output from the serving site gets typed on your local terminal as it arrives π
The NVT protocol requires that the keyboard can enter all 128 ASCII codes, together with a number of the TELNET control codes π To support an NVT with an IBM 2741 terminal, you need to adapt a control convention for entering codes that aren't tied to single keys on the keyboard. Also, since CP/CMS processes input from a 2741 one line at a time, terminated with a newline, there has to be a way to enter a sequence of characters for transmission that isn't terminated with a newline code π
When TELNET starts up, the message
ENTER CONTROL CHARACTER
gets typed π Then you enter a non-blank character. That character defines the one that, combined with another character, will be used to enter codes that aren't tied to single keys. The control character also handles some other special control functions, which we'll get into below π§
Codes
Okay so the NVT usually requires characters to be sent in an eight bit ASCII code π Since the TELNET command is written to process EBCDIC codes, ASCII codes that get received are translated into ASCII before they're sent to a serving site π Figure 2 gives the complete definition of EBCDIC, showing the EBCDIC controls and EBCDIC graphics. Figure 3 gives the codes for the ASCII controls and graphics. The complete mapping between 8-bit EBCDIC codes and 8-bit network ASCII codes is in Figure 4 πΈ The EBCDIC newline code (NL) gets mapped into the ASCII codes for the pair of characters CR-IF π
The following ASCII/EBCDIC mapping is used for the non-EBCDIC graphics π¦
ASCII EBCDIC
TILDE (7E) = (A1) NOT
BAR (7C) = (6A) OR
BACK SLASH (5C) = (EO)
CARAT (5E) = (71)
GRAVE (6O) = (79)
LEFT BRACE (7B) = (8B)
RIGHT BRACE (7D) = (9B)
LEFT BRACKET (5B) = (AD)
RIGHT BRACKET (5D) = (BD)
The ASCII control DC3 (X' 13') maps to the EBCDIC control TM (X'13') β¨ The ASCII control NUL (X' oo') is sent to the terminal as the EBCDIC code for NULL (X' oo'), and it is not mapped into an IDLE (X'17') π
The TELNET control hide-your-input is mapped into the EBCDIC code for bypass (print suppress), and the TELNET control noecho is mapped into the EBCDIC code for restore (print restore) π If the TELNET control for echo is received, a message is printed and it's mapped into an IDLE. Similarly, if the TELNET control for break is received, a message is printed and it's mapped into an IDLE, unless you're in EBCDIC HALFDUP mode. In that case, the break is used to indicate that any received characters should be printed and the keyboard unlocked for input π If a data mark or an interrupt is received, no action is taken, except printing a message to let the user know it happened π
If the last CHAR isn't an NL or a CR, the control character gets tacked on after the last character π , unless 130 characters must be sent to the file π. And if the last CHAR is a CR, it gets included in the file πΈ.
Here are the output options, bestie π
- OFF discards all output π
- ON is the default and sends output to the terminal β¨
- TERM makes output go to the terminal too π»
- NOTERM is the default and sends output to the file but not to the terminal π
- OUTPUT is the default and sends just the terminal output into the file
"FN termout"π§Ύ - INPUT sends both terminal input (but not output) into the output file β¨οΈ
- NOINPUT is the default and keeps input out of the file π«Ά
PURGE
Purge is giving "wipe everything the NCP has received so far" π§Ή
*****NOT YET IMPLEMENTED***** π
READER fn ft
Syntax:
READER fn ft
* READER
This is how you send a job to the RJS system at UCLA's CCN π
If fn and ft are defaulted, input comes from the card reader π
PRINTER fn ft
Syntax:
PRINTER fn ft
* PRINTER
This receives printer output from the RJS system at UCLA's CCN π¨οΈ
It also receives punch output from the RJS system at UCLA's CCN π³οΈ
If fn and ft are defaulted, output goes to the printer π
PUNCH fn ft
Syntax:
PUNCH fn ft
* PUNCH
If fn and ft are defaulted, output goes to the punch π
Serving Hosts on the APRA Network
Here's the crew of hosts on the APRA Network, sorted by site, system, and number π¦
HOST SITE MACHINE SYSTEM HOST NUMBER
DEC OCT HEX
NMC UCLA SIGNA-7 SEX 1 1 01
ARC SRI PDP-10 NIC 2 2 02
UCSB UCSB 360/75 OS/MVT 3 3 03
UTAH UTAH PDP-10 TENEX 4 4 04
MULTICS MIT H-645 MULTICS 6 6 06
SDC SDC 370/155 ADEPT 8 10 08
HARV HARVARD PDP-10 4S72 9 11 09
LL LL 360/67 CP/CMS 10 12 0A
CASE CASE PDP-10 10/50 13 15 0D
CMU CMU PDP-10 TOPS-10 14 16 0E
ILLIAC AMES 360/67 TTS/360 16 18 10
AMES AMES B-6500 ? 15 17 0F
CCN UCLA 360/91 OS/MVT 65 101 41
SRI SRI-AI PDP-10 TENEX 66 102 42
BBNA BBN PDP-10 TENEX 69 105 45
DMCG MIT PDP-10 ITS 70 106 46
RAND RAND-RCC PDP-10 TENEX 71 107 47
TX2 LL TX-2 APEX 74 112 4A
BBNB BBN PDP-10 TENEX 133 205 85
MIATI MIT PDP-10 ITS 134 206 86
Serving Hosts on the APRA Network
Figure 1
The figures for EBCDIC and USASCII live in the PDF, so check there π
[[See Figure 2 in PDF file.]]
Extended Binary-Coded Decimal Interchange Code (EBCDIC) FIGURE 2
and
[[See Figure 3 in PDF file.]]
USA Standard Code for Information Interchange (USASCII) FIGURE 3
Now the big character mapping table, ASCII against EBCDIC πΈ
ASCII ASCII ASCII SYMBOLS EBCDIC EBCDIC
DEC OCT HEX HEX DEC
0 0 (00) NUL (00) 00
1 1 (01) SOH (01) 01
2 2 (02) STX (02) 02
3 3 (03) ETX (03) 03
4 4 (04) EOT (37) 55
5 5 (05) ENQ (2D) 45
6 6 (06) ACK (2E) 46
7 7 (07) BEL (2F) 47
8 10 (08) BS (16) 22
9 11 (09) HT (05) 05
10 12 (0A) LF (25) 37
11 13 (0B) VT (0B) 11
12 14 (0C) FF (0C) 12
13 15 (0D) CR (0D) 13
14 16 (0E) SO (0E) 14
15 17 (0F) SI (0F) 15
16 20 (10) DLE (10) 16
17 21 (11) DC1 (11) 17
18 22 (12) DC2 (12) 18
19 23 (13) DC3 (13) 19
20 24 (14) DC4 (3C) 60
21 25 (15) NAK (3D) 61
22 26 (16) SYN (32) 50
23 27 (17) ETB (26) 38
24 30 (18) CAN (18) 24
25 31 (19) EM (19) 25
26 32 (1A) SUB (3F) 63
27 33 (1B) CTL (27) 39
28 34 (1C) FS (1C) 28
29 35 (1D) GS (1D) 29
30 36 (1E) RS (1E) 30
31 37 (1F) US (1F) 31
32 40 (20) SP (40) 64
33 41 (21) ! (5A) 90
34 42 (22) " (7F) 127
35 43 (23) # (7B) 123
36 44 (24) $ (5B) 91
37 45 (25) % (6C) 108
38 46 (26) & (50) 80
39 47 (27) ' (7D) 124
40 50 (28) ( (4D) 77
41 51 (29) ) (5D) 93
42 52 (2A) * (5C) 92
43 53 (2B) + (4E) 78
44 54 (2C) , (6D) 109
45 55 (2D) - (60) 96
46 56 (2E) . (4B) 75
47 57 (2F) / (61) 97
48 60 (30) 0 (F0) 240
49 61 (31) 1 (F1) 241
50 62 (32) 2 (F2) 242
51 63 (33) 3 (F3) 243
52 64 (34) 4 (F4) 244
53 65 (35) 5 (F5) 245
54 66 (36) 6 (F6) 246
55 67 (37) 7 (F7) 247
56 70 (38) 8 (F8) 248
57 71 (39) 9 (F9) 249
58 72 (3A) : (7A) 122
59 73 (3B) ; (5E) 94
60 74 (3C) < (4C) 76
61 75 (3D) = (7E) 126
62 76 (3E) > (6E) 110
63 77 (3F) ? (6F) 111
64 100 (40) @ (7C) 124
65 101 (41) A (C1) 193
66 102 (42) B (C2) 194
67 103 (43) C (C3) 195
68 104 (44) D (C4) 196
69 105 (45) E (C5) 197
70 106 (46) F (C6) 198
71 107 (47) G (C7) 199
72 110 (48) H (C8) 200
73 111 (49) I (C9) 201
74 112 (4A) J (D1) 209
75 113 (4B) K (D2) 210
76 114 (4C) L (D3) 211
77 115 (4D) M (D4) 212
78 116 (4E) N (D5) 213
79 117 (4F) O (D6) 214
80 120 (50) P (D7) 215
81 121 (51) Q (D8) 216
82 122 (52) R (D9) 217
83 123 (53) S (E2) 226
84 124 (54) T (E3) 227
85 125 (55) U (E4) 228
86 126 (56) V (E5) 229
87 127 (57) W (E6) 230
88 130 (58) 8 (E7) 231
89 131 (59) Y (E8) 232
90 132 (5A) Z (E9) 233
91 133 (5B) [ (AD) 173
92 134 (5C) (cent sign) (4A) 74 (BACK-SLASH)
93 135 (5D) ] (BD) 189
94 136 (5E) (71) 113 (CARAT)
95 137 (5F) _ (6D) 109
96 140 (60) (79) 121 (GRAVE)
97 141 (61) a (81) 129
98 142 (62) b (82) 130
99 143 (63) c (83) 131
100 144 (64) d (84) 132
101 145 (65) e (85) 133
102 146 (66) f (86) 134
103 147 (67) g (87) 135
104 150 (68) h (88) 136
105 151 (69) i (89) 137
106 152 (6A) j (91) 145
107 153 (6B) k (92) 146
108 154 (6C) l (93) 147
109 155 (6D) m (94) 148
110 156 (6E) n (95) 149
111 157 (6F) o (96) 150
112 160 (70) p (97) 151
113 161 (71) q (98) 152
114 162 (72) r (99) 153
115 163 (73) s (A2) 162
116 164 (74) t (A3) 163
117 165 (75) u (A4) 164
118 166 (76) v (A5) 165
119 167 (77) w (A6) 166
120 170 (78) x (A7) 167
121 171 (79) y (A8) 168
122 172 (7A) z (A9) 169
123 173 (7B) { (8B) 139
124 174 (7C) | (4F) 79 (BAR/OR)
125 175 (7D) } (9B) 155
126 176 (7E) (broken bar) (5F) 95 (TILDE/NOT)
127 177 (7F) DEL (07) 7
Now the upper half of the code space, where the TELNET controls hang out π¦
ASCII ASCII ASCII TELNET EBCDIC EBCDIC
DEC OCT HEX CONTROLS HEX DEC
128 100 (80) DATA-MARK (80) 128
129 101 (81) BREAK (38) 56
130 102 (82) NOP (17) 23 IDLE
131 103 (83) NOECHO (14) 20 RESTORE
132 104 (84) ECHO (23) 35
133 105 (85) HIDE-YOUR INPUT (24) 36 BYPASS
ASCII/EBCDIC Code Mappings
FIGURE 4
And last but not least, the control code mappings between ASCII and EBCDIC π
EBCDIC EBCDIC ASCII
CENT (4A) = ESC (27) (1B)
CTL < (4C) = LEFT BRACKET (AD) (5B)
CTL > (6E) = RIGHT BRACKET (BD) (5D)
CTL ( (4D) = LEFT BRACE (8B) (7B)
CTL ) (5D) = RIGHT BRACE (9B) (7D)
CTL / (61) = BACK SLASH (4A) (5C)
CTL " (7F) = CARAT (71) (5E)
CTL ' (7D) = GRAVE (79) (60)
CTL 6 (F6) = FS (1C) (1C)
CTL 7 (F7) = GS (1D) (1D)
CTL 8 (F8) = RS (1E) (1E)
CTL 9 (F9) = US (1F) (1F)
CTL _ (6D) = US (1F) (1F)
CTL (broken bar) (5F) = DEL (07) (7F)
Okay bestie, this last stretch is all about the keyboard and terminal maps π Let's go π
CTL 1 (F1) = BREAK (38) (81) - CIRCLE C
CTL 2 (F2) = NOP (17) (82) - IDLE
CTL 3 (F3) = NO ECHO (14) (83) - RESTORE
CTL 4 (F4) = ECHO (23) (84)
CTL 5 (F5) = HIDE YOU INPUT (24) (85) - BYPASS
Okay so the table above is the EBCDIC and ASCII control pairs for the extra CTL 1 through CTL 5 codes π§ Each one has its name, its EBCDIC byte, and its ASCII byte, and they're lined up so you can compare them at a glance π
Heads up, DATA MARK (80) CANNOT BE ENTERED FROM THE KEYBOARD π So the DATA MARK byte just isn't something you can type. Not on this one, anyway.
Now the keyboard characters that don't have a control meaning, which is lowkey important so you don't accidentally think they do π
$ # * % &
+ - = _
. , :
! | ? (cent sign)
SPACE
BACKSPACE
TAB
So yeah, $ # * % &, + - = _, . , :, ! | ? (plus the cent sign), SPACE, BACKSPACE, and TAB all just don't mean anything as a control π The original says these are the 2741 keyboard characters, so this list is specific to that terminal.
Next up is the Keyboard Control Character Mappings, which is labeled FIGURE 5 (CONTINUED) πΈ The actual figure lives in the PDF, so here's where it sits:
Keyboard Control Character Mappings
FIGURE 5 (CONTINUED)
[[See Figure in PDF file.]]
Hex Code X'xy' for Characters on a 2741 Terminal
[[See Figure in PDF file.]]
Decimal Code D 'xxy" for Characters on a 2741 terminal
The hex and decimal codes for characters on a 2741 terminal are in those two figures, and the PDF has the pictures β¨
Now the good stuff: the 2741 control codes, listed in hex and decimal side by side π¦
HT X'05' = D'005' Horizontal Tab
LC X'06' = D'006' Lower Case
RES X'14' = D'020' Print Restore
NL X'15' = D'021' New Line
BS X'16' = D'022' Back Space
IL X'17' = D'023' Idle
BYP X'24' = D'036' Print Bypass
LF X'25' = D'037' Line Feed
UC X'36' = D'054' Upper Case
Each row shows the same code twice, once in hex and once in decimal, which is honestly so satisfying to look at π HT is Horizontal Tab, LC is Lower Case, RES is Print Restore, NL is New Line, BS is Back Space, IL is Idle, BYP is Print Bypass, LF is Line Feed, and UC is Upper Case π
The title for that one is "Hex Code X'xy' and Decimal Code D'xxy' for 2741 Control Codes" π
Last part, the PN and TN trains π The figures for those are in the PDF too, so here's the layout:
[[See Figure in PDF file.]]
Hex Code X'xy' for Characters on the PN train
[[See Figure in PDF file.]]
Decimal Code D'xxy' for characters on the PN train
[[See Figure in PDF file.]]
Hex Code X'xy' for Characters on th TN train
[[See Figure in PDF file.]]
Decimal Code D'xxy' for Characters on the TN train
So that's the PN train hex and decimal codes, and then the TN train hex and decimal codes π Same idea as before, just for a different train. The original has "th TN train" in the header, so I'm keeping that exact spelling β¨
And that's the whole document, periodt π
[This RFC was put into machine readable form for entry]
[into the online RFC archives by Helene Morin, Via Genie,12/1999]
π¦ where this page comes from
- ietf: rfc452 1973-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms