As per Relevance of the word terminal, we have this rfc below:
NWG/RFC# 734 MRC 07-OCT-77 08:46 41953
SUPDUP Display Protocol Page 1
Network Working Group Mark
Request for Comments 734 SU-
NIC 41953 7 October 1977
SUPDUP
This document describes the SUPDUP protocol, a highly efficient
telnet protocol. It originally started as a private protocol between
ITS systems at MIT to allow a user at any one of these systems to use
of the others as a display. At the current writing, SUPDUP user
also exist for Data Disc and Datamedia displays at SU-AI and
Datamedias at SRI-KL. The author is not aware of any SUPDUP servers
than at the four MIT ITS sites
The advantage of the SUPDUP protocol over an individual terminal'
protocol is that SUPDUP defines a "virtual" or "software" display
that implements relevant cursor motion operations. The protocol is
built on any particular display terminal but rather on the set
functions common to all display terminals; hence it is completely device
independent. In addition, the protocol also provides for terminals
cannot handle certain operations, such as line or character insert/delete
In fact, it is more than this. It provides for terminals which
missing any set of features, all the way down to model 33 Teletypes
The advantage over the TELNET protocol is that SUPDUP takes advantage
the full capabilities of display terminals, although it also has
ability to run printing terminals
It is to be noted that SUPDUP operates independently from TELNET; it
not an option to the TELNET protocol. In addition, certain
are made about the server and the user programs and their capabilities
Specifically, it is assumed that the operating system on a server
provides all the display-oriented features of ITS. However, a server
elect not to do certain display operations available in SUPDUP; the
protocol is far-reaching enough so that the protocol allows terminals
be handled as well as that host can handle terminals in general.
course, if a host does not support display terminals in any special way
there is no point in bothering to implement a SUPDUP server since
will work just as well
A more complete description of the display facilities of SUPDUP and
can be found by FTP'ing the online file .INFO.;ITS TTY from ARPAnet
MIT-AI (host 206 octal, 134. decimal). For more information, the
address for SUPDUP is "(BUG SUPDUP) at MIT-AI". If your mail system won'
allow you to use parentheses, use Bug-SUPDUP@MIT-AI
SUPDUP Display Protocol Page 2
The SUPDUP protocol originated as the internal protocol used between
of ITS, and between ITS and "intelligent" terminals. Over the network,
user host acts like an intelligent terminal programmed for ITS
The way terminal output works in ITS is as follows: The user
tells the system to do various operations, such as printing characters
clearing the screen, moving the cursor, etc. These operations are
into 8-bit characters (using the %TD codes described below) and
into a buffer. At interrupt level, as the terminal demands output
characters are removed from the buffer and translated into
dependent codes. At this time padding and cursor motion optimization
also done
In some cases, the interrupt side does not run on the same machine as
user program. SUPDUP terminals have their "interrupt side" running in
user host. When SUPDUP is run between two ITS's, the SUPDUP user
server programs and the network simply move characters from the buffer
the server machine to the buffer in the user machine. The interrupt
then runs on the user machine just as if the characters had been
locally
Due to the highly interactive characteristics of both the SUPDUP
and the ITS system, all transactions are strictly character at a time
all echoing is remote. In addition, all padding and cursor
optimization must be done by the user
Because this is also the internals of ITS, the right to change it any
if necessary to provide new features is reserved by MIT. In particular
the initial negotiation is probably going to be changed to
additional variables, and additional %TD codes may be added at any time
User programs should ignore those they don't know about
The following conventions are used in this document: function keys (ie
keys which represent a "function" rather than a "graphic character")
in upper case in square brackets. Prefix keys (ie, keys which generate
character but rather are held down while typing another character
modify that character) are in upper case in angle brackets.
"[LINE FEED]" refers to the character generated when
the CONTROL and META keys are held down while a LINE FEED is typed.
should be noted; A refers to a different character
a. Finally, all numbers which do not explicitly specify a
(ie, octal or decimal) should be read as octal unless the number
immediately followed by a period, in which case it is decimal
SUPDUP Display Protocol Page 3
The SUPDUP server listens on socket 137 octal. ICP proceeds in the
way for establishing 8-bit connections. After the ICP is completed,
user side sends several parameters to the server side in the form
36.-bit words. Each word is sent through the 8-bit connection as
6-bit bytes, most-significant first. Each byte is in the low-order 6
of a character. The first word is the negative of the number of
to follow in the high order 18. bits (the low-order 18. bits are ignored),
followed by the values of the TCTYP, TTYOPT, TCMXV, TCMXH, and
terminal descriptor variables (these are the names they are known by
ITS sites). These variables are 36.-bit binary numbers and define
terminal characteristics for the virtual terminal at the REMOTE host
The count is for future compatability. If more variables need to be
in the future, the server should assume "reasonable" default values if
user does not specify them. PDP-10 fans will recognize the format of
count (ie, -count,,0) as being an AOBJN pointer. At the present
there are five variables hence this word should be -5,,0.
The TCTYP variable defines the terminal type. It MUST be 7 (%TNSFW).
other value is a violation of protocol
The TTYOPT variable specifies what capabilities or options the user'
terminal has. A bit being true implies that the terminal has this option
This variable also includes user options which the user may wish to
at his or her own descretion; these options are included since they may
specified along with the terminal capabilities in the initial negotiation
See below for the relevant TTYOPT bits
The TCMXV variable specifies the screen height in number of lines
The TCMXH variable specifies the line width in number of characters.
value is one less than the screen width (ITS indicates line overflow
outputting an exclamation point at the end of the display line
moving to the next line). Note: the terminal must not do an
CRLF when a character is printed in the rightmost column. If this
unavoidable, the user SUPDUP must decrement the width it sends by one
Note: Setting either the TCMXV or TCMXH dimension greater than 128.
work, but will have some problems as coordinates are sometimes
in only 7 bits. The main problems occur in the SUPDUP protocol
sending the cursor position after an output reset and in ITS user
using the display position codes ^PH and ^PV
The TTYROL variable specifies the "glitch count" when scrolling. This
the number of lines to scroll up when scrolling is required. If zero,
terminal is not capable of scrolling. 1 is the usual value, but
terminals glitch up by more than one line when they scroll
Following the transmission of the terminal options by the user, the
should respond with an ASCII greeting message, terminated with a %
code (%TD codes are described below). All transmissions from the
after the %TDNOP are either printing characters or virtual
display codes
SUPDUP Display Protocol Page 4
The user and the server now both communicate using the
terminal protocol (described below) from the user and %TD codes from
server. The user has two commands in addition to these; they are
by sending 300 (octal). If following the escape is a 301 (octal),
server should attempt to log off the remote job (generally this is
immediately before the user disconnects, so this logout procedure
be done regardless of the continuing integrity of the connection). If
character following the escape is a 302 (octal), all ASCII
following up to a null (000 octal) are interpreted as "console location
which the server can handle as it pleases. No carriage return or
feed should be in the console location text. Normally this is saved
to be displayed by the "who" command when other users ask where this
is located
SUPDUP Display Protocol Page 5
TTYOPT FUNCTION
The relevant TTYOPT bits for SUPDUP usage follow. The values are given
octal, with the left and right 18-bit halves separated by ",," as in
usual PDP-10 convention
Bit name Value
%TOALT 200000,,0 characters 175 and 176 are converted
altmode (033) on input
%TOERS 40000,,0 this terminal is capable of
erasing its screen. That is, it
the %TDEOL, the %TDDLF, and (optionally
the %TDEOF operations. For
which can only do single-
erasing, see %TOOVR
%TOMVB 10000,,0 this terminal is capable of
(ie, moving the cursor backwards).
%TOSAI 4000,,0 this terminal has the Stanford/
extended ASCII graphics character set
%TOOVR 1000,,0 this terminal is capable of overprinting
if two characters are displayed in
same position, they will both be visible
rather than one replacing the other
Lack of this capability but the
to backspace (see %TOMVB) implies that
terminal can do single character
by overstriking with a space. This
terminals without the %TOERS capability
have display-style "rubout processing",
this capability depends upon either %
or [%TOMVB and not %TOOVR].
%TOMVU 400,,0 this terminal is capable of moving
cursor upwards
%TOLWR 20,,0 this terminal's keyboard is capable
generating lowercase characters; this
is mostly provided for programs which
to know this information
%TOFCI 10,,0 this terminal's keyboard is capable
generating CONTROL and META characters
described below
%TOLID 2,,0 this terminal is capable of doing
insert/delete operations, ie, it
%TDILP and %TDDLP
%TOCID 1,,0 this terminal is capable of
character insert/delete operations, ie,
supports %TDICP and %TDDCP
SUPDUP Display Protocol Page 6
TTYOPT FUNCTION BITS (continued
Bit name Value
%TPCBS 0,,40 this terminal is using the "
terminal protocol".
THIS BIT MUST BE ON
%TPORS 0,,10 the server should process output
instead of ignoring them
IT IS HIGHLY RECOMMENDED THAT THIS BIT
ON; OTHERWISE THERE MAY BE LARGE DELAYS
ABORTING OUTPUT
The following bits are user option bits. They may be set or not set
the user's discretion. The bits that are labelled "normally on" are
that are normally set on when a terminal is initialized (ie, by
[CALL] on a local terminal).
Bit name Value
%TOCLC 100000,,0 convert lower-case input to upper case
Many terminals have a "shift lock"
which makes this option useless
NORMALLY OFF
%TOSA1 2000,,0 characters 001-037 should be
using the Stanford/ITS extended
graphics character set instead of
followed by 100+character
NORMALLY OFF
%TOMOR 200,,0 the system should provide "**MORE**"
processing when the cursor reaches
bottom line of the screen. **MORE**
processing is described in ITS TTY
NORMALLY ON
%TOROL 100,,0 the terminal should scroll when
output below the bottom line of the
instead of wrapping around to the top
NORMALLY OFF
SUPDUP Display Protocol Page 7
INPUT -- THE INTELLIGENT TERMINAL
Note: only the parts of the intelligent terminal protocol relevant
SUPDUP are discussed here. For more information, read ITS TTY
CHARACTER
There are two character sets available for use with SUPDUP; the 7-
character set of standard ASCII, and the 12-bit character set of
ASCII. Extended ASCII has 5 high order or "bucky" bits on input and
graphics for octal 000-037 and 177 (see the section entitled "Stanford/
character set" for more details). The two character sets are identical
output since the protocol specifies that the host should never send
standard ASCII formatting characters (ie, TAB, LF, VT, FF, CR)
formatting characters; the characters whose octal values are the same
these formatting characters are never output unless the user job has
characters enabled (setting %TOSAI and %TOSA1 generally does this).
Input differs dramatically between the 7-bit and 12-bit character sets
In the 7-bit character set, all characters input whose value is 037
or less are assumed to be (ASCII) control characters. In the 12-
character set, there are 5 "bucky" bits which may be attached to
character. The two most important of these are CONTROL and META,
form a 9-bit character set. TOP is used to distinguish between
graphics in the extended character set and ASCII controls. The other
are reserved and should be ignored. Since both 7-bit and 12-bit
are commonly in use, 0001, 0301, and 0341 are considered to be
on input by most programs, while 4001 is considered to be downwards arrow
MAPPING BETWEEN CHARACTER
Many programs and hosts do not process 12-bit input. In this case, 12-
input is folded down to 7-bit as follows: TOP and META are discarded.
CONTROL is on, then if the 7-bit part of the character specifies a
case alphabetic it is converted to upper case; then if the 7-bit part
between 077 and 137 the 100 bit is complemented or if the 7-bit part
040 the 040 bit is subtracted (that's right, ? is converted
[RUBOUT] and [SPACE] is converted to [NULL]). In any case
CONTROL bit is discarded, and the remainder is treated as a 7-bit
character. It should be noted that in this case downwards arrow is
by the program as standard ASCII A
Servers which expect 12-bit input and are told to use the 7-bit
set should do appropriate unfolding from the 7-bit character set
12-bit. It is up to the individual server to decide upon the
scheme. On ITS, user programs that use the 12-bit character set
have an alternative method for 7-bit; this often takes the form of
characters indicating that the next character should be "controllified"
"metized", etc
SUPDUP Display Protocol Page 8
INPUT -- THE INTELLIGENT TERMINAL PROTOCOL (continued
BUCKY
Under normal circumstances, characters input from the keyboard are sent
the foreign host as is. There are two exceptions; the first occurs
an octal 034 character is to be sent; it must be quoted by being
twice, because 034 is used as an escape character for protocol commands
The second exception occurs when %TOFCI is set and a character
non-zero bucky bits is to be sent. In this case, the character, which
in the 12-bit form
Name Value
%TXTOP 4000 This character has the [TOP] key depressed
%TXSFL 2000 Reserved, must be zero
%TXSFT 1000 Reserved, must be zero
%TXMTA 400 This character has the [META] key depressed
%TXCTL 200 This character has the [CONTROL] key depressed
%TXASC 177 The ASCII portion of the
is sent as three bytes. The first byte is always 034 octal (that is
034 must be quoted). The next byte contains the "bucky bits", ie,
%TXTOP through %TXCTL bits, shifted over 7 bits (ie, %TXTOP becomes 20)
with the 100 bit on. The third byte contains the %TXASC part of
character. Hence the character [LINE FEED] is sent as 034
103 012.
OUTPUT
The intelligent terminal protocol also is involved when a
interrupt (INR/INS) is received by the user program. The user
should increment a count of received network interrupts when this happens
It should not do any output, and if possible abort any output in progress
if this count is greater than zero (NOTE: the program MUST allow for
count to go less than zero).
Since the server no longer knows where the cursor is, it suspends
output until the user informs it of the cursor position. This also
the server an idea of how much was thrown out in case it has to have
of the aborted output displayed at a later time. The user program
this when it receives a %TDORS from the server. When this happens
should decrement the "number of received network interrupts"
described in the previous paragraph and then send 034 followed by 020,
vertical position, and the horizontal position of where the
currently is located on the user's screen
SUPDUP Display Protocol Page 9
OUTPUT -- DISPLAY PROTOCOL (%TD CODES
Display output is somewhat simpler. Codes less than 200 octal
printing characters and are displayed on the terminal (see the
describing the "Stanford/ITS character set"). Codes greater than or
to 200 (octal) are known as "%TD codes", so called since their names
with %TD. The %TD codes that are relevant to SUPDUP operation are
here. Any other code received should be ignored, although a bug
might be sent to the server's maintainers. Note that the normal
formatting characters (011 - 015) do NOT have their formatting sense
SUPDUP and should not occur at all unless the Stanford/ITS extended
character set is in use (ie, %TOSAI is set in the TTYOPT word).
For cursor positioning operations, the top left corner is (0,0), ie
vertical position 0, horizontal position 0.
%TD code Value
%TDMOV 200 General cursor position code. Followed
four bytes; the first two are the "old
vertical and horizontal positions and
be ignored. The next two are the
vertical and horizontal positions.
cursor should be moved to this position
On printing consoles (non %TOMVU), the
vertical position may differ from the
vertical position; this can occur
scrolling. In this case, the user
should set its idea of the old
position to what the %TDMOV says and
proceed. Hence a %TDMOV with an old
of 20. and a new vpos of 22. should
move the "cursor" down two lines. This
used to prevent the vertical position
becoming infinite
%TDMV1 201 An internal cursor motion code
should not be seen; but if it is, it
two argument bytes after it and should
treated the same as %TDMV0.
%TDEOF 202 Erase to end of screen. This is
optional function since many terminals
not support this. If the terminal
not support this function, it should
treated the same as %TDEOL
%TDEOF does an erase to end of line,
erases all lines lower on the screen
the cursor. The cursor does not move
%TDEOL 203 Erase to end of line. This erases
character position the cursor is at
all positions to the right on the
line. The cursor does not move
SUPDUP Display Protocol Page 10
OUTPUT -- DISPLAY PROTOCOL (%TD CODES) (continued
%TD code Value
%TDDLF 204 Clear the character position the cursor
on. The cursor does not move
%TDCRL 207 If the cursor is not on the bottom line
the screen, move cursor to the
of the next line and clear that line.
the cursor is at the bottom line,
up
%TDNOP 210 No-op; should be ignored
%TDORS 214 Output reset. This code serves as a
mark for aborting output much as IAC
does in the ordinary TELNET protocol
%TDQOT 215 Quotes the following character. This
used when sending 8-bit codes which
not %TD codes, for instance when
programs into an intelligent terminal
The following character should be
through intact to the terminal
%TDFS 216 Non-destructive forward space. The
moves right one position; this code
not be sent at the end of a line
%TDMV0 217 General cursor position code. Followed
two bytes; the new vertical and
positions
%TDCLR 220 Erase the screen. Home the cursor to
top left hand corner of the screen
%TDBEL 221 Generate an audio tone, bell, whatever
%TDILP 223 Insert blank lines at the cursor;
by a byte containing a count of the
of blank lines to insert. The cursor
unmoved. The line the cursor is on
all lines below it move down; lines
off the bottom of the screen are lost
%TDDLP 224 Delete lines at the cursor; followed by
count. The cursor is unmoved. The
line deleted is the one the cursor is on
Lines below those deleted move up. Newly
created lines at the bottom of the
are blank
SUPDUP Display Protocol Page 11
OUTPUT -- DISPLAY PROTOCOL (%TD CODES) (continued
%TD code Value
%TDICP 225 Insert blank character positions at
cursor; followed by a count. The
is unmoved. The character the cursor
on and all characters to the right on
current line move to the right;
moved off the end of the line are lost
%TDDCP 226 Delete characters at the cursor;
by a count. The cursor is unmoved.
first character deleted is the one
cursor is on. Newly-created characters
the end of the line are blank
%TDBOW 227 Display black characters on white screen
HIGHLY OPTIONAL
%TDRST 230 Reset %TDBOW and such any future options
SUPDUP Display Protocol Page 12
STANFORD/ITS CHARACTER
This section describes the extended ASCII character set. It
with the character set developed at SAIL but was modified for 1968 ASCII
This character set only applies to terminals with the %TOSAI and %
bits set in its TTYOPT word. For non-%TOSAI terminals, the standard
printing characters are the only available output characters.
non-%TOFCI terminals, the standard ASCII characters are the only
input characters
PRINTING
The first table describes the printing characters. For output, the 7-
code is sent (terminal operations are performed by %TD codes). For input
the characters with values 000-037 and 177 must have the %TXTOP bit on
indicate the graphic is intended rather than a function or ASCII control
Value
4000 centered
4001 downward
4002
4003
4004 logical
4005 logical
4006
4007
4010
4011
4012
4013
4014 plus-
4015 circle-
4016
4017 partial
4020 proper subset (left horseshoe
4021 proper superset (right horseshoe
4022 intersection (up horseshoe
4023 union (downward horseshoe
4024 universal
4025 existential
4026 circle-
4027 double
4030 left
4031 right
4032 not-
4033 lozenge (diamond
4034 less-than-or-
4035 greater-than-or-
4036
4037 logical
0040 first standard ASCII character (space
.. . . .
0176 last standard ASCII character (tilde
4177
SUPDUP Display Protocol Page 13
STANFORD/ITS CHARACTER SET (continued
FUNCTION KEYS AND SPECIAL
In addition, the following special characters exist for input only.
characters are function keys rather than printing characters; however
some of these characters have some format effect or graphic which
echo as; the host, not the SUPDUP program, handles any such mappings
Value Character Usual echo Usual
0000 [NULL
0010 [BACK SPACE] text
0011 [TAB] text
0012 [LINE FEED] text
0013 [VT] text
0014 [FORM] text
0015 [RETURN] text
0032 [CALL] uparrow-Z escape to
0033 [ALTMODE] lozenge or $ special
0037 [BACK NEXT] uparrow-underscore monitor command
0177 [RUBOUT] character
4101 [ESCAPE] local terminal
4102 [BREAK] local subsystem
4103 [CLEAR
4110 [HELP] requests a help
BUCKY
For all input characters, the following "bucky bits" may be added to
character. Their interpretation depends entirely upon the host.
not listed here, as it has been considered part of the character in
previous tables
is different from ASCII CTRL, however, many programs may
the operating system to map such characters to the ASCII forms (with
bit off). In this case is ignored
Value
2000
1000
0400
0200
SUPDUP Display Protocol Page 14
Richard M. Stallman (RMS@MIT-AI) and David A. Moon (Moon@MIT-MC) of
MIT-AI and MIT-MC systems staff wrote the source documentation and
wonderful ITS terminal support that made this protocol possible. It
be emphasized that this is a functional protocol which has been
operation for some years now
In addition, Moon, Stallman, and Michael McMahon (MMcM@SRI-KL)
many helpful comments and corrections to this document
For further reference, the sources for the known currently existing
user programs are available online as
[MIT-AI] SYSENG;SUPDUP > for the ITS monitor
[SU-AI] SUPDUP.MID[NET,MRC] for the SAIL monitor
[SRI-KL] SD.FAI for the TOPS-20 monitor
The source for the known currently existing SUPDUP server program is
[MIT-AI] SYSENG;TELSER > for the ITS monitor
These programs are written in the MIDAS and FAIL dialects of PDP-10
assembly language
if you see any problems within the linking, don't worry be happy,
this is version 0.1 of the Relevance System and you gotta expect some crappy subroutines sometimes,
just be content we did not write this in Java, which would have made this "bigger and better" HAHAHHA.
RFC documents can be found at I.E.T.F.
Relevance System Copyright © 2002 Spectrum WorldResearch
other technical nosh by ServerMasters Corporation
collaboration of BobX