RFC 452

TELNET Command at Host LL

πŸ“… published February 1973, from ietf

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