RFC 110

Conventions for Using an IBM 2741 Terminal as a User Console for Access to Network Server Hosts

πŸ“… published March 1971, from ietf

RFC 110: Conventions for Using an IBM 2741 Terminal as a User Console for Access to Network Server Hosts πŸ’–

Okay bestie, let's do the paperwork first πŸ“Ž This one is from the Network Working Group and was written by J. Winett at MIT Lincoln Laboratory 🧚. It's RFC 110, with NIC number 5809, dated 25 March 1971. The header doesn't list a category, and it doesn't obsolete or update anything 🌸

Disclaimer 🫢

Heads up before anything else πŸ’… This material hasn't been reviewed for public release. It's only meant for use with the ARPA network, so it should not be quoted or cited in any publication that isn't related to the ARPA network πŸ™ˆ

The Memo πŸ“¬

Here's the memo header, verbatim. Fair warning, it spells the name Joel M. Winnet, not Winett, so I'm keeping it exactly as written 🫠

TO: NIC
FROM: Joel M. Winnet (LL)
SUBJECT: Conventions for Using an IBM 2741 Terminal as a User
Console for Access to Network Server Hosts

Let's Get Into the Conventions πŸŽ€

So an IBM terminal can key in 92 different codes 😭 That's 88 graphics plus the 4 controls SP, BS, HT, and NL. Every one of them has an ASCII code except the cent graphic ([1]) and the New Line Control (NL).

When you key NL, the program receiving your keyboard input can translate it into the right line end signal for the host you're using, so NL, CR, or LF, whichever fits 🫢

But here's the tea β˜• There are 7 other ASCII graphic characters ({, }, [, ], ^, \, and `) and 31 other ASCII controls that you can't key on a 2741 at all. So we need a convention that lets all 128 ASCII codes be keyed from a 2741 πŸ’€ The move is to pick one character as an escape (or prefix) character. The escape character plus the characters after it can be converted into any ASCII code you want πŸ¦‹

Besides the escape character, there are three other functions that usually get their own single key:

  • character delete πŸ“: deletes this character and the character before it in the input line.
  • line delete 🧹: deletes this character and all the previous characters in the current input line.
  • logical line end βœ‚οΈ: all the characters keyed after the last logical line end character or last NL character, up to this character, count as one logical line, and this character is treated as if the NL key were entered. Characters after the logical line end character, up to another logical line end character or an NL character, are used to form another input line.

Since keyed characters normally go to the Server Host, we need a way to let the user program interpret them instead. A system escape character does the job 🧚 On character-at-a-time systems, the characters keyed between two system escape characters can be interpreted by the user program. On line-at-a-time systems, the characters keyed after the system escape character, up to and including an NL character, can be interpreted by the user program. Lines the user program interprets are not sent to the Server Host πŸ™…β€β™€οΈ

Some host systems need the INS or INR network control commands, so there has to be a way to get those sent too ⚑ They can be sent as a command to the user program after keying the system escape character, or by using the 'attention' button on a 2741. Which one you pick depends on the characteristics of the terminal user's operating system πŸ–₯️

Other commands to the user program might be to:

  • suppress typeout of received messages 🀫
  • restore typeout of received messages πŸ“£
  • direct received message to a disk file πŸ’Ύ
  • direct keyed input to a disk file πŸ’Ύ
  • abort the user program πŸ›‘

These characters are recommended for the special functions listed above:

1. character escape $NOT [1]
2. system escape     |
3. character delete  @
4. line delete      $CENT [1]
5. logical linend    #

For the 7 ASCII graphics that aren't on a 2741, these character escape and graphic pairs are recommended 🌈

$NOT <           to translate to         [
$NOT >           to translate to         ]
$NOT (           to translate to         {
$NOT )           to translate to         }
$NOT "           to translate to         ^
$NOT /           to translate to         \
$NOT '           to translate to         `

To let the special function characters be keyed, these character escape and graphic pairs are recommended πŸ”‘

$NOT -           to translate to        $NOT
$NOT :           to translate to         |
$NOT ,           to translate to         @
$NOT .           to translate to        $CENT
$NOT =           to translate to         #

To key in the ASCII control codes, the recommendation is to use the character escape followed by two letters. Those two letters come from the mnemonic name of the ASCII control function, like so 🧁

$NOT AC          to translate to         ACK             X'06'
$NOT BE          to translate to         BEL             X'07'
$NOT BS          to translate to         BS              X'08'
$NOT CA          to translate to         CAN             X'18'
$NOT CR          to translate to         CR              X'0D'
$NOT D1          to translate to         DC1             X'11'
$NOT D2          to translate to         DC2             X'12'
$NOT D3          to translate to         DC3             X'13'
$NOT D4          to translate to         DC4             X'14'
$NOT DE          to translate to         DEL             X'7F'
$NOT DL          to translate to         DLE             X'10'
$NOT EM          to translate to         EM              X'19'
$NOT EN          to translate to         ENQ             X'05'
$NOT EO          to translate to         EOT             X'04'
$NOT ES          to translate to         ESC             X'1B'
$NOT EB          to translate to         ETB             X'17'
$NOT EX          to translate to         ETX             X'03'
$NOT FF          to translate to         FF              X'0C'
$NOT FS          to translate to         FS              X'1C'
$NOT GS          to translate to         GS              X'1D'
$NOT HT          to translate to         HT              X'09'
$NOT LF          to translate to         LF              X'0A'
$NOT NA          to translate to         NAK             X'15'
$NOT NU          to translate to         NUL             X'00'
$NOT RS          to translate to         RS              X'1E'
$NOT SI          to translate to         SI              X'0F'
$NOT SO          to translate to         SO              X'0E'
$NOT SH          to translate to         SOH             X'01'
$NOT SP          to translate to         SP              X'20'
$NOT ST          to translate to         STX             X'02'
$NOT SU          to translate to         SUB             X'1A'
$NOT SY          to translate to         SYN             X'16
$NOT US          to translate to         US              X'1F'
$NOT VT          to translate to         VT              X'0B'

Note that the controls SP, BS, and HT can be specified using the character escape character, or by keying the matching key directly on a 2741 terminal πŸ’…βœ¨


Endnote πŸ“

[1] The following identifiers are substituted for graphics not in ASCII:

$CENT   Cent sign
$NOT    Logical NOT ("bent bar")

See the PDF version of this document for graphics that cannot be represented in ASCII format 🎞️

[This RFC was put into machine readable form for entry] [into the online RFC archives by Lorrie Shiota, 10/02]

πŸ“¦ where this page comes from