home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 00s / rfc86.txt < prev    next >
Text File  |  1997-06-19  |  7KB  |  325 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                           S. Croker
  8. Request for Comments #86                                        January 5, 1971
  9. NIC 5631                                                        UCLA
  10.  
  11.                  Proposal for a Network Standard Format
  12.              for a Data Stream to Control Graphics Display
  13.  
  14.  
  15. A typical arrangement of facilities is to have a console attached to a
  16.  
  17. computer at the user's site, and to be using the computational facilities
  18.  
  19. of a remote site.  Information entered by the user is transmitted to the
  20.  
  21. remote Host, and output from the remote Host is transmitted back to the
  22.  
  23. local user.  In this proposal I am concerned with specifying the form of
  24.  
  25. the output stream for the case that the output portion of the console is a
  26.  
  27. typical refresh display with point, vector and character drawing capability.
  28.  
  29. Devices in this class include the DEC 338, DEC 340, IBM 2250, and IMLAC
  30.  
  31. PDS-1.
  32.  
  33.  
  34.  
  35. It must be understood that this proposal is illustrative only, and knowingly
  36.  
  37. avoids important issues.  Its main purpose is to provide a basis for dis-
  38.  
  39. cussion and development.
  40.  
  41.  
  42.  
  43. In order to specify the semantices of the network standard graphics data
  44.  
  45. stream (NGDS), I will postulate
  46.  
  47.    1.   a network standard display list (NGDL)
  48.  
  49.    2.   a network standard stream interpreter (NGSI)
  50.  
  51.    3.   a network standard list interpreter (NGLI), also called the
  52.         display controller, and
  53.  
  54.    4.   a network standard screen (NGS)
  55.  
  56.  
  57.  
  58.                                                                 [Page 1]
  59.  
  60. The NGDS is accepted into the local Host and interpreted by the NGSI.  The
  61.  
  62. NGSI is a process which modifies the NGDL according to inputs in the NGDS.
  63.  
  64. The NGDL is the display list for the NGLI; the NGLI executes the NGDL and
  65.  
  66. controls the beam which writes on the NGS.
  67.  
  68.  
  69.  
  70. The NGS is square, has horizontal and vertical sides, and positions on it
  71.  
  72. are specified by an ordered pair of unsigned 16 bit fractions.  The first
  73.  
  74. fraction specifies the horizontal distance from the left hand edge, and
  75.  
  76. the second specifies the vertical distance from the bottom edge.  The
  77.  
  78. resolution of the screen is unspecified.
  79.  
  80.  
  81.  
  82. The lack of specification of the resolution of the NGS is intentional;
  83.  
  84. programs designers should not interpret this to mean that they may impose
  85.  
  86. a particular requirement on the using system.  Thus the quality of the
  87.  
  88. displayed picture should degrade gradually with decreasing resolution.
  89.  
  90.  
  91.  
  92. The NGLI has primitives for moving the beam to a particular point, intensify-
  93.  
  94. ing a point, drawing a vector, or drawing a character.  Characters are
  95.  
  96. assumed to be not more than .015 screen width wide, and not more than .025
  97.  
  98. screen height high.  When the beam is moved to a screen position before
  99.  
  100. drawing characters, that position should be at the lower left hand corner
  101.  
  102. of the first character drawn.  The beam position after drawing a character
  103.  
  104. is immediately to the right of the character, properly positioned for another
  105.  
  106. character.  However, after drawing one or more characters, the exact horizontal
  107.  
  108.  
  109.  
  110.  
  111.                                                                 [Page 2]
  112.  
  113. position of the beam is unspecified.
  114.  
  115.  
  116.  
  117. The imprecise specification of character size is intended to take cognizance
  118.  
  119. of the existance of character drawing hardware which is capable of producing
  120.  
  121. only one or a few character sizes.  The particular proportions of .015 wide
  122.  
  123. by .025 high provides for 67 characters to a line and 40 lines, and seems
  124.  
  125. well within the capability of most displays in the class considered.  As in
  126.  
  127. the case of screen resolution, variations in character drawing hardware
  128.  
  129. should cause only minor degradation in the usefulness of the picture.
  130.  
  131.  
  132.  
  133. The character set intrepreted by the NGLI is ASCII, excepting all form
  134.  
  135. control characters, but including the space character.  The tab, return
  136.  
  137. and line feed functions should be simulated by explicit positioning of the
  138.  
  139. beam.
  140.  
  141.  
  142.  
  143. The NGDL consists of a set of named and possibly null lists.  The names
  144.  
  145. are 16 bit integers, and the name zero is the name of the chief list.
  146.  
  147. Each list is composed of zero of more display items.  An item is any of
  148.  
  149. the following:
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.                                                                 [Page 3]
  165.  
  166.    a)  "Move beam to xxxx,yyyy, relative to current origin"
  167.  
  168.    b)  "Display vector from current position to xxxx,yyyy, relative to
  169.         current origin"
  170.  
  171.    c)  "Display current point"
  172.  
  173.    d)  "Display the following n characters:
  174.  
  175.        c  c  ...c "
  176.         1  2     n
  177.  
  178.    e)  "Execute list gggg with origin xxxx,yyyy relative to current origin"
  179.  
  180.  
  181.  
  182. The NGLI is constantly in a loop executing the chief list, the origin of
  183.  
  184. the chief list is always <0,0>.  When the NGLI comes to the end of the
  185.  
  186. chief list, it returns to the top of it.  When the NGLI encounters a
  187.  
  188. type e item, it suspends execution of the current list, set the new origin
  189.  
  190. to <xxxx,yyyy> + <the old origin>, and executes the list named gggg. When
  191.  
  192. finished with the list, the old origin is restored and execution of the
  193.  
  194. old list resumed.  The NGLI is, therefore, a recursive interpreter, and
  195.  
  196. type e items are subroutine calls.
  197.  
  198.  
  199.  
  200. There remains only the matter of the NGDS and the NGSI.  The NGDS is parsed
  201.  
  202. into commands by the NGSI and each command is executed as soon as it is
  203.  
  204. recognized.  The commands in the NGDS are in prefix form, consisting of an
  205.  
  206. eight bit operation code followed by any arguments.  Only two commands
  207.  
  208. are defined: Erase and Replace.
  209.  
  210.  
  211. The Erase command consists of a single zero-valued opcode and no arguments.
  212.  
  213. The NGSI executes the Erase command by making all lists into null lists.
  214.  
  215.  
  216.  
  217.                                                                 [Page 4]
  218.  
  219. This erases the screen.
  220.  
  221.  
  222.  
  223. The Replace command has an opcode of 1, followed by a 16-bit list name,
  224.  
  225. followed by an 8 bit subargument count, followed by the indicated number
  226.  
  227. of subarguments.  The NGSI executes the Replcae command by deleteing all
  228.  
  229. items from the indicated list, and rebuilding the list from the subarguments.
  230.  
  231. There are five kinds of subarguments, corresponding to the five item types.
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.                                                                 [Page 5]
  271.  
  272.             <subargument>::=<atype> | <btype> |  <ctype> |
  273.  
  274.                                       <dtype> | <etype>
  275.  
  276.  
  277.             <atype>::= <a> <x> <y>
  278.  
  279.             <btype>::= <b> <x> <y>
  280.  
  281.             <ctype>::= <c>
  282.  
  283.             <dtype>::= <d> <n> <c> ... <c>
  284.                                     n
  285.  
  286.             <etype>::= <e> <g> <x> <y>
  287.  
  288.  
  289.  
  290. <a>, <b>, <c>, <d>, and <e> are 8 bit bytes valued at 0, 1 ... 4,
  291.  
  292. respectively and corresponging to the item types listed on page 4.
  293.  
  294.  
  295.             <x> and <y> are 16 bit numbers
  296.  
  297.             <g> is a 16 bit list name
  298.  
  299.             <n> is an 8 bit count
  300.  
  301.             <c> is an ASCII character code
  302.  
  303.  
  304.  
  305.        [ This RFC was put into machine readable form for entry ]
  306.          [ into the online RFC archives by Anand Kumria 6/97 ]
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.                                                                 [Page 6]
  324.  
  325.