home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 700s / rfc734.txt < prev    next >
Text File  |  1992-10-14  |  33KB  |  665 lines

  1. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  2. SUPDUP Display Protocol                            Page 1
  3.  
  4. Network Working Group                          Mark Crispin
  5. Request for Comments 734                         SU-AI
  6. NIC 41953                            7 October 1977
  7.  
  8.               SUPDUP Protocol
  9.  
  10. INTRODUCTION
  11.  
  12. This document describes  the SUPDUP protocol,  a highly efficient  display
  13. telnet protocol.  It originally started as a private protocol between  the
  14. ITS systems at MIT to allow a user at any one of these systems to use  one
  15. of the others as a display.  At the current writing, SUPDUP user  programs
  16. also exist  for  Data  Disc  and  Datamedia  displays  at  SU-AI  and  for
  17. Datamedias at SRI-KL.  The author is not aware of any SUPDUP servers other
  18. than at the four MIT ITS sites.
  19.  
  20. The advantage  of  the  SUPDUP  protocol  over  an  individual  terminal's
  21. protocol is that SUPDUP defines a "virtual" or "software" display terminal
  22. that implements relevant  cursor motion operations.   The protocol is  not
  23. built on  any  particular  display  terminal but  rather  on  the  set  of
  24. functions common to all display terminals; hence it is completely  device-
  25. independent.  In addition, the protocol also provides for terminals  which
  26. cannot handle certain operations, such as line or character insert/delete.
  27. In fact,  it is  more than  this.   It provides  for terminals  which  are
  28. missing any set of features, all the way down to model 33 Teletypes.
  29.  
  30. The advantage over the TELNET protocol  is that SUPDUP takes advantage  of
  31. the full  capabilities of  display  terminals, although  it also  has  the
  32. ability to run printing terminals.
  33.  
  34. It is to be  noted that SUPDUP operates  independently from TELNET; it  is
  35. not an option to  the TELNET protocol.   In addition, certain  assumptions
  36. are made about the  server and the user  programs and their  capabilities.
  37. Specifically, it is  assumed that the  operating system on  a server  host
  38. provides all the display-oriented features of ITS.  However, a server  may
  39. elect not to do certain display operations available in SUPDUP; the SUPDUP
  40. protocol is far-reaching enough so  that the protocol allows terminals  to
  41. be handled  as well  as that  host can  handle terminals  in general.   Of
  42. course, if a host does not  support display terminals in any special  way,
  43. there is no point in bothering  to implement a SUPDUP server since  TELNET
  44. will work just as well.
  45.  
  46. A more complete description  of the display facilities  of SUPDUP and  ITS
  47. can be found by FTP'ing the  online file .INFO.;ITS TTY from ARPAnet  host
  48. MIT-AI (host 206 octal, 134. decimal).  For more information, the  mailing
  49. address for SUPDUP is "(BUG SUPDUP) at MIT-AI".  If your mail system won't
  50. allow you to use parentheses, use Bug-SUPDUP@MIT-AI.
  51. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  52. SUPDUP Display Protocol                            Page 2
  53.  
  54. BACKGROUND
  55.  
  56. The SUPDUP protocol originated as the internal protocol used between parts
  57. of ITS, and between ITS and "intelligent" terminals.  Over the network,  a
  58. user host acts like an intelligent terminal programmed for ITS.
  59.  
  60. The way terminal  output works  in ITS is  as follows:   The user  program
  61. tells the system to  do various operations,  such as printing  characters,
  62. clearing the screen, moving the cursor, etc.  These operations are  formed
  63. into 8-bit characters  (using the  %TD codes described  below) and  stored
  64. into a  buffer.   At interrupt  level,  as the  terminal  demands  output,
  65. characters are  removed  from  the buffer  and  translated  into  terminal
  66. dependent codes.  At this time  padding and cursor motion optimization are
  67. also done.
  68.  
  69. In some cases, the interrupt side does not run on the same machine as  the
  70. user program.  SUPDUP terminals have their "interrupt side" running in the
  71. user host.  When  SUPDUP is  run between two  ITS's, the  SUPDUP user  and
  72. server programs and the network simply move characters from the buffer  in
  73. the server machine to the buffer in the user machine.  The interrupt  side
  74. then runs on the user machine just as if the characters had been generated
  75. locally.
  76.  
  77. Due to the highly interactive characteristics of both the SUPDUP  protocol
  78. and the ITS system, all transactions are strictly character at a time  and
  79. all echoing  is  remote.  In  addition,  all padding  and  cursor  control
  80. optimization must be done by the user.
  81.  
  82. Because this is also the internals of ITS, the right to change it any time
  83. if necessary to provide new features  is reserved by MIT.  In  particular,
  84. the initial  negotiation  is probably  going  to be  changed  to  transmit
  85. additional variables, and additional %TD codes  may be added at any  time.
  86. User programs should ignore those they don't know about.
  87.  
  88. The following conventions are  used in this  document: function keys  (ie,
  89. keys which represent a "function"  rather than a "graphic character")  are
  90. in upper case in square brackets.  Prefix keys (ie, keys which generate no
  91. character but  rather are  held  down while  typing another  character  to
  92. modify that  character)  are  in  upper case  in  angle  brackets.   Hence
  93. "<CONTROL><META>[LINE FEED]" refers to  the character generated when  both
  94. the CONTROL and META keys  are held down while a LINE FEED is typed.  Case
  95. should  be  noted;  <CONTROL>A  refers  to  a  different  character   from
  96. <CONTROL>a.  Finally, all numbers which  do not explicitly specify a  base
  97. (ie, octal  or decimal)  should be  read  as octal  unless the  number  is
  98. immediately followed by a period, in which case it is decimal.
  99. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  100. SUPDUP Display Protocol                            Page 3
  101.  
  102. INITIALIZATION
  103.  
  104. The SUPDUP server listens on socket 137 octal.  ICP proceeds in the normal
  105. way for establishing 8-bit connections.   After the ICP is completed,  the
  106. user side  sends several  parameters to  the server  side in  the form  of
  107. 36.-bit words.  Each  word is  sent through  the 8-bit  connection as  six
  108. 6-bit bytes, most-significant first.  Each byte is in the low-order 6 bits
  109. of a character.  The first word is the negative of the number of variables
  110. to follow in the high order 18. bits (the low-order 18. bits are ignored),
  111. followed by the  values of  the TCTYP,  TTYOPT, TCMXV,  TCMXH, and  TTYROL
  112. terminal descriptor variables (these  are the names they  are known by  at
  113. ITS sites).  These  variables are  36.-bit binary numbers  and define  the
  114. terminal characteristics for the virtual terminal at the REMOTE host.
  115.  
  116. The count is for future compatability.  If more variables need to be  sent
  117. in the future, the server should assume "reasonable" default values if the
  118. user does not specify them.  PDP-10 fans will recognize the format of  the
  119. count (ie, -count,,0) as being an  AOBJN pointer.  At the present  writing
  120. there are five variables hence this word should be -5,,0.
  121.  
  122. The TCTYP variable defines the terminal type.  It MUST be 7 (%TNSFW).  Any
  123. other value is a violation of protocol.
  124.  
  125. The TTYOPT  variable specifies  what capabilities  or options  the  user's
  126. terminal has.  A bit being true implies that the terminal has this option.
  127. This variable also includes user options which the user may wish to  alter
  128. at his or her own descretion; these options are included since they may be
  129. specified along with the terminal capabilities in the initial negotiation.
  130. See below for the relevant TTYOPT bits.
  131.  
  132. The TCMXV variable specifies the screen height in number of lines.
  133.  
  134. The TCMXH variable specifies the line width in number of characters.  This
  135. value is one less  than the screen width  (ITS indicates line overflow  by
  136. outputting an exclamation  point at  the end  of the  display line  before
  137. moving to the  next line).  Note:  the terminal must  not do an  automatic
  138. CRLF when a  character is  printed in the  rightmost column.   If this  is
  139. unavoidable, the user SUPDUP must decrement the width it sends by one.
  140.  
  141. Note: Setting either the TCMXV or  TCMXH dimension greater than 128.  will
  142. work, but will have some problems as coordinates are sometimes represented
  143. in only  7 bits.   The main  problems occur  in the  SUPDUP protocol  when
  144. sending the cursor position after an output reset and in ITS user programs
  145. using the display position codes ^PH and ^PV.
  146.  
  147. The TTYROL variable specifies the "glitch count" when scrolling.  This  is
  148. the number of lines to scroll up when scrolling is required.  If zero, the
  149. terminal is not  capable of  scrolling.  1 is  the usual  value, but  some
  150. terminals glitch up by more than one line when they scroll.
  151.  
  152. Following the transmission of the terminal options by the user, the server
  153. should respond with an  ASCII greeting message,  terminated with a  %TDNOP
  154. code (%TD codes are described  below).  All transmissions from the  server
  155. after the  %TDNOP  are  either printing  characters  or  virtual  terminal
  156. display codes.
  157. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  158. SUPDUP Display Protocol                            Page 4
  159.  
  160. The user  and  the  server  now both  communicate  using  the  intelligent
  161. terminal protocol (described below) from the  user and %TD codes from  the
  162. server.  The user has two commands in addition to these; they are  escaped
  163. by sending 300  (octal).  If following  the escape is  a 301 (octal),  the
  164. server should attempt to  log off the remote  job (generally this is  sent
  165. immediately before the user disconnects,  so this logout procedure  should
  166. be done regardless of the continuing integrity of the connection).  If the
  167. character following  the escape  is a  302 (octal),  all ASCII  characters
  168. following up to a null (000  octal) are interpreted as "console  location"
  169. which the server  can handle as  it pleases.  No  carriage return or  line
  170. feed should be in the console location text.  Normally this is saved  away
  171. to be displayed by the "who" command when other users ask where this  user
  172. is located.
  173. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  174. SUPDUP Display Protocol                            Page 5
  175.  
  176. TTYOPT FUNCTION BITS
  177.  
  178. The relevant TTYOPT bits for SUPDUP usage follow.  The values are given in
  179. octal, with the left and right 18-bit  halves separated by ",," as in  the
  180. usual PDP-10 convention.
  181.  
  182. Bit name    Value        Meaning
  183.  
  184. %TOALT        200000,,0    characters  175  and 176  are converted to
  185.                 altmode (033) on input.
  186.  
  187. %TOERS         40000,,0    this  terminal  is capable  of selectively
  188.                 erasing its  screen.  That is, it supports
  189.                 the %TDEOL,  the %TDDLF,  and (optionally)
  190.                 the  %TDEOF  operations.   For   terminals
  191.                 which   can   only   do   single-character
  192.                 erasing, see %TOOVR.
  193.  
  194. %TOMVB         10000,,0    this  terminal  is capable of  backspacing
  195.                 (ie, moving the cursor backwards).
  196.  
  197. %TOSAI          4000,,0    this   terminal   has   the   Stanford/ITS
  198.                 extended ASCII graphics character set.
  199.  
  200. %TOOVR          1000,,0    this terminal is  capable of overprinting;
  201.                 if  two  characters  are  displayed in the
  202.                 same  position, they will both be visible,
  203.                 rather than one replacing the other.
  204.  
  205.                 Lack of this capability but the capability
  206.                 to backspace (see %TOMVB) implies that the
  207.                 terminal can  do single  character erasing
  208.                 by overstriking with a space.  This allows
  209.                 terminals without the %TOERS capability to
  210.                 have display-style "rubout processing", as
  211.                 this capability depends upon either %TOERS
  212.                 or [%TOMVB and not %TOOVR].
  213.  
  214. %TOMVU           400,,0    this terminal  is capable  of  moving  the
  215.                 cursor upwards.
  216.  
  217. %TOLWR            20,,0    this  terminal's  keyboard is  capable  of
  218.                 generating lowercase characters;  this bit
  219.                 is mostly provided for programs which want
  220.                 to know this information.
  221.  
  222. %TOFCI            10,,0    this  terminal's  keyboard is  capable  of
  223.                 generating  CONTROL and META characters as
  224.                 described below.
  225.  
  226. %TOLID             2,,0    this  terminal  is  capable  of doing line
  227.                 insert/delete operations,  ie, it supports
  228.                 %TDILP and %TDDLP.
  229.  
  230. %TOCID             1,,0    this   terminal   is   capable   of  doing
  231.                 character insert/delete operations, ie, it
  232.                 supports %TDICP and %TDDCP.
  233. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  234. SUPDUP Display Protocol                            Page 6
  235.  
  236. TTYOPT FUNCTION BITS (continued)
  237.  
  238. Bit name    Value        Meaning
  239.  
  240. %TPCBS             0,,40    this terminal is  using  the  "intelligent
  241.                 terminal protocol".
  242.                  THIS BIT MUST BE ON.
  243.  
  244. %TPORS             0,,10    the server should  process  output  resets
  245.                 instead of ignoring them.
  246.                  IT IS HIGHLY RECOMMENDED THAT THIS BIT BE
  247.                 ON; OTHERWISE THERE MAY BE LARGE DELAYS IN
  248.                 ABORTING OUTPUT.
  249.  
  250.  
  251.  
  252. The following bits are user  option bits.  They may be  set or not set  at
  253. the user's discretion.  The bits that are labelled "normally on" are those
  254. that are normally  set on when  a terminal is  initialized (ie, by  typing
  255. [CALL] on a local terminal).
  256.  
  257. Bit name    Value        Meaning
  258.  
  259. %TOCLC        100000,,0    convert  lower-case  input to  upper case.
  260.                 Many  terminals  have  a  "shift lock" key
  261.                 which makes this option useless.
  262.                  NORMALLY OFF.
  263.  
  264. %TOSA1          2000,,0    characters  001-037  should  be  displayed
  265.                 using  the  Stanford/ITS  extended   ASCII
  266.                 graphics character set instead of  uparrow
  267.                 followed by 100+character.
  268.                  NORMALLY OFF.
  269.  
  270. %TOMOR           200,,0    the   system   should  provide  "**MORE**"
  271.                 processing when  the  cursor  reaches  the
  272.                 bottom  line  of  the  screen.    **MORE**
  273.                 processing is described in ITS TTY.
  274.                  NORMALLY ON.
  275.  
  276. %TOROL           100,,0    the terminal should scroll when attempting
  277.                 output below the bottom line of the screen
  278.                 instead of wrapping around to the top.
  279.                  NORMALLY OFF.
  280. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  281. SUPDUP Display Protocol                            Page 7
  282.  
  283. INPUT -- THE INTELLIGENT TERMINAL PROTOCOL
  284.  
  285. Note: only  the parts  of the  intelligent terminal  protocol relevant  to
  286. SUPDUP are discussed here.  For more information, read ITS TTY.
  287.  
  288.  
  289. CHARACTER SETS
  290.  
  291. There are two  character sets  available for  use with  SUPDUP; the  7-bit
  292. character set of standard ASCII, and the 12-bit character set of  extended
  293. ASCII.  Extended ASCII has 5 high order  or "bucky" bits on input and  has
  294. graphics for octal 000-037 and 177 (see the section entitled "Stanford/ITS
  295. character set" for more details).  The two character sets are identical on
  296. output since the protocol  specifies that the host  should never send  the
  297. standard ASCII  formatting  characters  (ie,  TAB,  LF,  VT,  FF,  CR)  as
  298. formatting characters; the characters whose  octal values are the same  as
  299. these formatting characters are never output unless the user job has these
  300. characters enabled (setting %TOSAI and %TOSA1 generally does this).
  301.  
  302. Input differs dramatically  between the 7-bit  and 12-bit character  sets.
  303. In the 7-bit character set, all characters input whose value is 037  octal
  304. or less  are assumed  to be  (ASCII) control  characters.  In  the  12-bit
  305. character set,  there are  5 "bucky"  bits which  may be  attached to  the
  306. character.  The two most  important of these are  CONTROL and META,  which
  307. form a 9-bit character set.  TOP  is used to distinguish between  printing
  308. graphics in the extended character set and ASCII controls.  The other  two
  309. are reserved and should be ignored.  Since both 7-bit and 12-bit terminals
  310. are commonly in use, 0001, 0301, and 0341 are considered to be  <CONTROL>A
  311. on input by most programs, while 4001 is considered to be downwards arrow.
  312.  
  313.  
  314. MAPPING BETWEEN CHARACTER SETS
  315.  
  316. Many programs and hosts do not process 12-bit input.  In this case, 12-bit
  317. input is folded down to 7-bit as follows: TOP and META are discarded.   If
  318. CONTROL is on, then if the 7-bit  part of the character specifies a  lower
  319. case alphabetic it is converted to upper  case; then if the 7-bit part  is
  320. between 077 and 137 the  100 bit is complemented or  if the 7-bit part  is
  321. 040 the 040 bit is subtracted  (that's right, <CONTROL>?  is converted  to
  322. [RUBOUT] and <CONTROL>[SPACE] is  converted to [NULL]).   In any case  the
  323. CONTROL bit is discarded,  and the remainder is  treated as a 7-bit  ASCII
  324. character.  It should be noted that  in this case downwards arrow is  read
  325. by the program as standard ASCII <CONTROL>A.
  326.  
  327. Servers which expect 12-bit input and are told to use the 7-bit  character
  328. set should  do  appropriate unfolding  from  the 7-bit  character  set  to
  329. 12-bit.  It is up  to the individual server  to decide upon the  unfolding
  330. scheme.  On ITS, user programs that use the 12-bit character set generally
  331. have an alternative method for 7-bit; this often takes the form of  prefix
  332. characters indicating that the next character should be "controllified" or
  333. "metized", etc.
  334. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  335. SUPDUP Display Protocol                            Page 8
  336.  
  337. INPUT -- THE INTELLIGENT TERMINAL PROTOCOL (continued)
  338.  
  339.  
  340. BUCKY BITS
  341.  
  342. Under normal circumstances, characters input from the keyboard are sent to
  343. the foreign host as is.  There  are two exceptions; the first occurs  when
  344. an octal 034  character is to  be sent; it  must be quoted  by being  sent
  345. twice, because 034 is used as  an escape character for protocol  commands.
  346. The second  exception occurs  when  %TOFCI is  set  and a  character  with
  347. non-zero bucky bits is to be sent.  In this case, the character, which  is
  348. in the 12-bit form:
  349.  
  350. Name    Value    Description
  351.  
  352. %TXTOP    4000    This character has the [TOP] key depressed.
  353.  
  354. %TXSFL    2000    Reserved, must be zero.
  355.  
  356. %TXSFT    1000    Reserved, must be zero.
  357.  
  358. %TXMTA     400    This character has the [META] key depressed.
  359.  
  360. %TXCTL     200    This character has the [CONTROL] key depressed.
  361.  
  362. %TXASC     177    The ASCII portion of the character
  363.  
  364. is sent as three bytes.  The first  byte is always 034 octal (that is  why
  365. 034 must be  quoted).  The next  byte contains the  "bucky bits", ie,  the
  366. %TXTOP through %TXCTL bits,  shifted over 7 bits  (ie, %TXTOP becomes  20)
  367. with the 100  bit on.   The third  byte contains  the %TXASC  part of  the
  368. character.  Hence the character <CONTROL><META>[LINE FEED] is sent as  034
  369. 103 012.
  370.  
  371.  
  372. OUTPUT RESETS
  373.  
  374. The  intelligent  terminal  protocol  also  is  involved  when  a  network
  375. interrupt (INR/INS) is  received by  the user program.   The user  program
  376. should increment a count of received network interrupts when this happens.
  377. It should not do any output, and if possible abort any output in progress,
  378. if this count is greater than zero  (NOTE: the program MUST allow for  the
  379. count to go less than zero).
  380.  
  381. Since the server  no longer  knows where the  cursor is,  it suspends  all
  382. output until the user informs it of the cursor position.  This also  gives
  383. the server an idea of how much was thrown out in case it has to have  some
  384. of the aborted output  displayed at a later  time.  The user program  does
  385. this when it  receives a  %TDORS from the  server.  When  this happens  it
  386. should  decrement  the  "number  of  received  network  interrupts"  count
  387. described in the previous paragraph and then send 034 followed by 020, the
  388. vertical position,  and  the  horizontal  position  of  where  the  cursor
  389. currently is located on the user's screen.
  390. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  391. SUPDUP Display Protocol                            Page 9
  392.  
  393. OUTPUT -- DISPLAY PROTOCOL (%TD CODES)
  394.  
  395. Display output  is  somewhat  simpler.   Codes less  than  200  octal  are
  396. printing characters and  are displayed  on the terminal  (see the  section
  397. describing the "Stanford/ITS character set").  Codes greater than or equal
  398. to 200 (octal) are known as "%TD codes", so called since their names begin
  399. with %TD.  The %TD codes that are relevant to SUPDUP operation are  listed
  400. here.  Any other code  received should be ignored,  although a bug  report
  401. might be sent  to the server's  maintainers.  Note that  the normal  ASCII
  402. formatting characters (011 - 015) do NOT have their formatting sense under
  403. SUPDUP and should not occur at all unless the Stanford/ITS extended  ASCII
  404. character set is in use (ie, %TOSAI is set in the TTYOPT word).
  405.  
  406. For cursor  positioning operations,  the  top left  corner is  (0,0),  ie,
  407. vertical position 0, horizontal position 0.
  408.  
  409. %TD code    Value        Meaning
  410.  
  411. %TDMOV        200        General cursor position code.  Followed by
  412.                 four bytes;  the  first  two are the "old"
  413.                 vertical  and horizontal positions and may
  414.                 be  ignored.    The  next  two are the new
  415.                 vertical  and  horizontal  positions.  The
  416.                 cursor  should be moved  to this position.
  417.  
  418.                 On printing consoles (non %TOMVU), the old
  419.                 vertical position may differ from the true
  420.                 vertical position;  this  can  occur  when
  421.                 scrolling.  In this case, the user program
  422.                 should set  its  idea of the old  vertical
  423.                 position to what the %TDMOV says and  then
  424.                 proceed.  Hence a %TDMOV with an old  vpos
  425.                 of 20. and a new vpos of 22. should always
  426.                 move the "cursor" down two lines.  This is
  427.                 used to prevent the vertical position from
  428.                 becoming infinite.
  429.  
  430. %TDMV1        201        An  internal  cursor  motion  code   which
  431.                 should not be seen;  but if it is,  it has
  432.                 two  argument bytes after it and should be
  433.                 treated the same as %TDMV0.
  434.  
  435. %TDEOF        202        Erase  to  end  of  screen.   This  is  an
  436.                 optional function  since many terminals do
  437.                 not support this.   If  the terminal  does
  438.                 not  support this  function,  it should be
  439.                 treated the same as %TDEOL.
  440.  
  441.                 %TDEOF does an erase to end of line,  then
  442.                 erases  all lines lower on the screen than
  443.                 the cursor.  The cursor does not move.
  444.  
  445. %TDEOL        203        Erase  to  end  of  line.  This erases the
  446.                 character position the  cursor  is at  and
  447.                 all  positions  to the right on  the  same
  448.                 line.  The cursor does not move.
  449. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  450. SUPDUP Display Protocol                           Page 10
  451.  
  452. OUTPUT -- DISPLAY PROTOCOL (%TD CODES) (continued)
  453.  
  454. %TD code    Value        Meaning
  455.  
  456. %TDDLF        204        Clear the character position the cursor is
  457.                 on.  The cursor does not move.
  458.  
  459. %TDCRL        207        If the cursor is not on the bottom line of
  460.                 the screen, move  cursor to  the beginning
  461.                 of the next line and clear that line.   If
  462.                 the  cursor is at the bottom line,  scroll
  463.                 up.
  464.  
  465. %TDNOP        210        No-op; should be ignored.
  466.  
  467. %TDORS        214        Output reset.   This code serves as a data
  468.                 mark for  aborting  output much as  IAC DM
  469.                 does in the ordinary TELNET protocol.
  470.  
  471. %TDQOT        215        Quotes the following  character.   This is
  472.                 used  when sending 8-bit codes  which  are
  473.                 not  %TD codes,  for instance when loading
  474.                 programs  into  an  intelligent  terminal.
  475.                 The  following  character should be passed
  476.                 through intact to the terminal.
  477.  
  478. %TDFS        216        Non-destructive forward space.  The cursor
  479.                 moves right one position;  this  code will
  480.                 not be sent at the end of a line.
  481.  
  482. %TDMV0        217        General cursor position code.  Followed by
  483.                 two bytes; the new vertical and horizontal
  484.                 positions.
  485.  
  486. %TDCLR        220        Erase the screen.   Home the cursor to the
  487.                 top left hand corner of the screen.
  488.  
  489. %TDBEL        221        Generate an audio tone, bell, whatever.
  490.  
  491. %TDILP        223        Insert blank lines at the cursor; followed
  492.                 by a byte containing a count of the number
  493.                 of blank lines to insert.   The  cursor is
  494.                 unmoved.   The line the cursor is  on  and
  495.                 all lines below it move down;  lines moved
  496.                 off the bottom of the screen are lost.
  497.  
  498. %TDDLP        224        Delete lines at the cursor;  followed by a
  499.                 count.  The cursor is unmoved.   The first
  500.                 line  deleted is the  one the cursor is on.
  501.                 Lines below those deleted move up.  Newly-
  502.                 created lines  at the bottom of the screen
  503.                 are blank.
  504. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  505. SUPDUP Display Protocol                           Page 11
  506.  
  507. OUTPUT -- DISPLAY PROTOCOL (%TD CODES) (continued)
  508.  
  509. %TD code    Value        Meaning
  510.  
  511. %TDICP        225        Insert  blank  character  positions at the
  512.                 cursor;  followed by  a count.  The cursor
  513.                 is unmoved.   The character the  cursor is
  514.                 on and all characters to the right  on the
  515.                 current line move to the right; characters
  516.                 moved off the end of the line are lost.
  517.  
  518. %TDDCP        226        Delete characters at the cursor;  followed
  519.                 by a count.   The cursor is unmoved.   The
  520.                 first  character  deleted  is the  one the
  521.                 cursor is on.  Newly-created characters at
  522.                 the end of the line are blank.
  523.  
  524. %TDBOW        227        Display black characters on white screen.
  525.                 HIGHLY OPTIONAL.
  526.  
  527. %TDRST        230        Reset %TDBOW and such any future options.
  528. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  529. SUPDUP Display Protocol                           Page 12
  530.  
  531. STANFORD/ITS CHARACTER SET
  532.  
  533. This section describes the extended  ASCII character set.   It  originated
  534. with the character set developed at SAIL but was modified for 1968 ASCII.
  535.  
  536. This character set only  applies to terminals with  the %TOSAI and  %TOFCI
  537. bits set in its TTYOPT word.  For non-%TOSAI terminals, the standard ASCII
  538. printing  characters  are  the  only  available  output  characters.   For
  539. non-%TOFCI terminals, the standard ASCII characters are the only available
  540. input characters.
  541.  
  542.  
  543. PRINTING CHARACTERS
  544.  
  545. The first table describes the printing characters.  For output, the  7-bit
  546. code is sent (terminal operations are performed by %TD codes).  For input,
  547. the characters with values 000-037 and 177 must have the %TXTOP bit on  to
  548. indicate the graphic is intended rather than a function or ASCII control.
  549.  
  550. Value    Character
  551.  
  552.  4000    centered dot
  553.  4001    downward arrow
  554.  4002    alpha
  555.  4003    beta
  556.  4004    logical AND
  557.  4005    logical NOT
  558.  4006    epsilon
  559.  4007    pi
  560.  4010    lambda
  561.  4011    gamma
  562.  4012    delta
  563.  4013    uparrow
  564.  4014    plus-minus
  565.  4015    circle-plus
  566.  4016    infinity
  567.  4017    partial delta
  568.  4020    proper subset (left horseshoe)
  569.  4021    proper superset (right horseshoe)
  570.  4022    intersection (up horseshoe)
  571.  4023    union (downward horseshoe)
  572.  4024    universal quantifer
  573.  4025    existential quantifier
  574.  4026    circle-X
  575.  4027    double arrow
  576.  4030    left arrow
  577.  4031    right arrow
  578.  4032    not-equal
  579.  4033    lozenge (diamond)
  580.  4034    less-than-or-equal
  581.  4035    greater-than-or-equal
  582.  4036    equivalence
  583.  4037    logical OR
  584.  0040    first standard ASCII character (space)
  585.   ..        . . .
  586.  0176    last standard ASCII character (tilde)
  587.  4177    integral
  588. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  589. SUPDUP Display Protocol                           Page 13
  590.  
  591. STANFORD/ITS CHARACTER SET (continued)
  592.  
  593.  
  594. FUNCTION KEYS AND SPECIAL CHARACTERS
  595.  
  596. In addition, the following special characters exist for input only.  These
  597. characters are  function keys  rather than  printing characters;  however,
  598. some of these  characters have some  format effect or  graphic which  they
  599. echo as; the host, not the SUPDUP program, handles any such mappings.
  600.  
  601. Value    Character    Usual echo        Usual Function
  602.  
  603.  0000    [NULL]
  604.  0010    [BACK SPACE]                text formatting
  605.  0011    [TAB]                    text formatting
  606.  0012    [LINE FEED]                text formatting
  607.  0013    [VT]                    text formatting
  608.  0014    [FORM]                    text formatting
  609.  0015    [RETURN]                text formatting
  610.  0032    [CALL]        uparrow-Z        escape to system
  611.  0033    [ALTMODE]    lozenge or $        special activation
  612.  0037    [BACK NEXT]    uparrow-underscore    monitor command prefix
  613.  0177    [RUBOUT]                character delete
  614.  
  615.  4101    [ESCAPE]                local terminal command
  616.  4102    [BREAK]                    local subsystem escape
  617.  4103    [CLEAR]
  618.  4110    [HELP]                    requests a help message
  619.  
  620.  
  621. BUCKY BITS
  622.  
  623. For all input characters, the following  "bucky bits" may be added to  the
  624. character.  Their interpretation depends entirely upon the host.  <TOP> is
  625. not listed here, as it  has been considered part  of the character in  the
  626. previous  tables.
  627.  
  628. <CONTROL> is different from ASCII CTRL, however, many programs may request
  629. the operating system to map such  characters to the ASCII forms (with  the
  630. <TOP> bit off).  In this case <META> is ignored.
  631.  
  632. Value    Key
  633.  
  634.  2000    Reserved
  635.  1000    Reserved
  636.  0400    <META>
  637.  0200    <CONTROL>
  638. NWG/RFC# 734                        MRC 07-OCT-77 08:46  41953
  639. SUPDUP Display Protocol                           Page 14
  640.  
  641. ACKNOWLEDGEMENTS
  642.  
  643. Richard M. Stallman (RMS@MIT-AI)  and David A.  Moon (Moon@MIT-MC) of  the
  644. MIT-AI and MIT-MC  systems staff  wrote the source  documentation and  the
  645. wonderful ITS terminal support that made this protocol possible.  It  must
  646. be emphasized  that  this is  a  functional  protocol which  has  been  in
  647. operation for some years now.
  648.  
  649. In addition, Moon,  Stallman, and Michael  McMahon (MMcM@SRI-KL)  provided
  650. many helpful comments and corrections to this document.
  651.  
  652. For further reference, the sources for the known currently existing SUPDUP
  653. user programs are available online as:
  654.  
  655. [MIT-AI] SYSENG;SUPDUP >        for the ITS monitor,
  656. [SU-AI]  SUPDUP.MID[NET,MRC]        for the SAIL monitor,
  657. [SRI-KL] <MMcM>SD.FAI            for the TOPS-20 monitor.
  658.  
  659. The source for the known currently existing SUPDUP server program is:
  660.  
  661. [MIT-AI] SYSENG;TELSER >        for the ITS monitor.
  662.  
  663. These programs  are written  in  the MIDAS  and  FAIL dialects  of  PDP-10
  664. assembly language.