RFC 698

Telnet extended ASCII option

๐Ÿ“… published July 1975, from ietf

RFC 698 ๐Ÿ“œ TELNET Extended ASCII Option ๐ŸŽ€

okay bestie, this one is from July 1975 ๐ŸŒธ and it's from the NIC (Network Information Center, NIC #32964). It's titled TELNET EXTENDED ASCII OPTION โœจ. The title block doesn't name any authors, and it doesn't say what category or status it has, or whether it obsoletes or updates anything ๐Ÿ™ˆ. So I'm not gonna invent any of that ๐Ÿ’….


1. Command Name and Code โœจ

Okay so the option is called EXTEND-ASCII, and its code is 17 ๐Ÿ”ฅ:

EXTEND-ASCII 17

2. Command Meanings ๐Ÿ’–

Here's where the commands get juicy ๐Ÿ“. Each one is written out with its option name, so you can see exactly what's happening.

IAC WILL EXTEND-ASCII

The sender of this command is asking for permission to start sending extended ASCII, or is confirming that it's now allowed to start ๐Ÿฆ‹. Extended ASCII is normal ASCII with extra "control" bits added on top, and certain programs on the host computer treat those bits in special ways ๐Ÿงš.

IAC WON'T EXTEND-ASCII

If the connection is already running in extended ASCII mode, the sender of this one is demanding that the receiver switch back to sending data characters in standard NVT ASCII ๐Ÿ˜ญ. If the connection is not already in extended ASCII mode, the sender is refusing to start sending extended ASCII ๐Ÿ’€. (Note that "The sender" starts with a capital letter in the original; that's just how it was typed, and the meaning is the same.)

IAC DO EXTEND-ASCII

The sender is asking the receiver to start sending extended ASCII, or confirming that the receiver is allowed to start sending it ๐ŸŒˆ.

IAC DON'T EXTEND-ASCII

The sender is demanding that the receiver stop sending data in extended ASCII mode, or not start doing so in the first place ๐Ÿ™…โ€โ™€๏ธ.

IAC SB EXTASC
<high order bits (bits 15-8)><low order bits (bits 7-0)> IAC SE

This command sends one extended ASCII character as two 8-bit bytes ๐Ÿ‘‘. Each of those bytes holds 8 data bits ๐Ÿซถ.


3. Default ๐ŸŽ€

The default is the "don't" and "won't" side of things:

DON'T EXTEND-ASCII
WON'T EXTEND-ASCII

Which basically means i.e., only use standard NVT ASCII ๐Ÿ’œ.


4. Motivation ๐Ÿฆ‹

Okay the why is so real ๐Ÿ˜ญ. Several sites on the net, like SU-AI and MIT-AI, have keyboards where almost all 128 characters are printable ๐Ÿคฏ. They use one or more extra bits as "control" bits, either as command modifiers or to separate typed text from commands going to programs ๐Ÿ”ฅ. Without those extra bits, some characters can't be entered as text, because they're already used for control purposes โœจ. The Greek letter "beta," for example, is CONTROL-C on a TELNET connection, and that's the key used for stopping your job ๐Ÿ’€. On top of that, a bunch of commonly used programs at those sites need those extra bits to run properly ๐Ÿ’…. So we need some way to send characters wider than 8 bits ๐ŸŒธ.


5. Description of the option ๐Ÿ’–

This option lets you send extended ASCII ๐ŸŽ€.

Experience has shown that most of the time people type 7-bit ASCII, with the occasional "control" character sprinkled in ๐Ÿ“. So normal NVT ASCII is expected to handle the 7-bit ASCII, and extended ASCII gets sent as an escape character sequence ๐Ÿงš.

What those extra bits mean depends on the user program ๐Ÿ”ฎ. At SU-AI and MIT-AI, the first two bits beyond the normal 7-bit ASCII get passed to the user program, and they're defined like this:

Bit 8 (or 200 octal) is the CONTROL bit
Bit 9 (or 400 octal) is the META bit
NOTE: "CONTROL" is used in a non-standard way here. It usually refers to codes 0-37 in NVT ASCII ๐Ÿ™ˆ. CONTROL and META get echoed by putting a prefix in front of the normal character: 013 (integral symbol) for CONTROL and 014 (plus-minus) for META ๐Ÿ’…. If both are present, it's called CONTROL-META and gets echoed as 013 014 followed by the 7-bit character ๐ŸŒˆ.

6. Description of Stanford Extended ASCII Characters ๐ŸŒŸ

Okay this section is a little extra, but it's still important ๐Ÿค“. It describes the extended graphic character set used at SU-AI, just for reference ๐Ÿ“š. This specific character set is not required as part of the extended ASCII TELNET option, so you don't have to use it ๐Ÿ™Œ. Characters marked "hidden" are alternate graphic meanings for codes that are normally format effectors, which certain typesetting programs use ๐Ÿ–จ๏ธ.

Code Graphic represented

000 null (hidden vertically centered dot)
001 downward arrow
002 alpha (all Greek letters are lowercase)
003 beta
004 logical and (caret)
005 logical not (dash with downward extension)
006 epsilon
007 pi
010 lambda
011 tab (hidden gamma)
012 linefeed (hidden delta)
013 vertical tab (hidden integral)
014 formfeed (hidden plus-minus)
015 carriage return (hidden circled-plus)
016 infinity
017 del (partial differential)
020 proper subset (right-opening horseshoe)
021 proper superset (left-opening horseshoe)
022 intersection (down-opening horseshoe)
023 union (up-opening horseshoe)
024 universal quantifier (upside-down A)
025 existential quantifier (backwards E)
026 circled-times
027 left-right double headed arrow
030 underbar
031 right pointing arrow
032 tilde
033 not-equal
034 less-than-or-equal
035 greater-than-or-equal
036 equivalence (column of 3 horizontal bars)
037 logical or (V shape)
040-135 as in standard ASCII
136 upward pointing arrow
137 left pointing arrow
140-174 as in standard ASCII
175 altmode (prints as lozenge)
176 right brace
177 rubout (hidden circumflex)

That's the whole thing, bestie ๐Ÿซถโœจ. The original's last page is just blank space, so there's nothing else in it ๐Ÿ’œ.

๐Ÿ“ฆ where this page comes from