5d3a37619f98421b866b5e6f7f9054f04033929b
[its.git] / sysdoc / grphcs.21
1 Copyright (c) 1999 Massachusetts Institute of Technology
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or (at
6 your option) any later version.
7
8 This program is distributed in the hope that it will be useful, but
9 WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16 ------------------------------
17
18                This file was moved to MIT-MC from
19               MIT-AI by David C. Plummer on 6 June
20                   1981, and may be up to date.
21
22
23 NWG/RFC# 746                                      RMS 17-MAR-78  43976
24 SUPDUP Graphics Extension
25
26
27
28 Network Working Group                                   Richard Stallman
29 Request for Comments 746                                          MIT-AI
30 NIC 43976                                                  17 March 1978
31
32
33 The SUPDUP Graphics Extension
34
35      ... extends SUPDUP to permit the display of drawings on the
36 screen of the terminal, as well as text.  We refer constantly to the
37 documentation of the SUPDUP protocol, described by Crispin in RFC 734
38 "SUPDUP Protocol".
39
40      Since this extension has never been implemented, it presumably
41 has some problems.  It is being published to ask for suggestions, and
42 to encourage someone to try to bring it up.
43
44      The major accomplishments are these:
45
46 *    It is easy to do simple things.
47
48 *    Any program on the server host can at any time begin
49      outputting pictures.  No special preparations are needed.
50
51 *    No additional network connections are needed.  Graphics
52      commands go through the normal text output connection.
53
54 *    It has nothing really to do with the network.  It is suitable
55      for use with locally connected intelligent display terminals
56      in a terminal-independent manner, by programs which need not
57      know whether they are being used locally or remotely.  It can be
58      used as the universal means of expression of graphics output, for
59      whatever destination.  Programs can be written to use it for
60      non-network terminals, with little loss of convenience, and
61      automatically be usable over the ARPA network.
62
63 *    Loss of output (due, perhaps, to a "silence" command typed
64      by the user) does not leave the user host confused.
65
66 *    The terminal does not need to be able to remember the
67      internal "semantic" structure of the picture being
68      displayed, but just the lines and points, or even just bits
69      in a bit matrix.
70
71 *    The server host need not be able to invoke arbitrary
72      terminal-dependent software to convert a standard language
73      into one that a terminal can use.  Instead, a standard
74      language is defined which all programmable terminals can
75      interpret easily.  Major differences between terminals are
76      catered to by conventions for including enough redundant
77      information in the output stream that all types of terminals
78      will have the necessary information available when it is
79      needed, even if they are not able to remember it in usable
80      form from one command to another.
81
82      Those interested in network graphics should read about the
83 Multics Graphics System, whose fundamental purpose is the same, but
84 whose particular assumptions are very different (although it did
85 inspire a few of the features of this proposal).
86 \f
87 NWG/RFC# 746                                      RMS 17-MAR-78  43976
88 SUPDUP Graphics Extension
89
90
91 SUPDUP Initial Negotiation:
92
93      One new optional variable, the SMARTS variable, is defined.  It
94 should follow the other variables sent by the SUPDUP user process to
95 the SUPDUP server process.  Bits and fields in the left half-word of
96 this variable are given names starting with "%TQ".  Bits and fields in
97 the right half are given names starting with "%TR".  Not all of the
98 SMARTS variable has to do with the graphics protocol, but most of it
99 does.  The %TQGRF bit should be 1 if the terminal supports graphics
100 output at all.
101
102
103 Invoking the Graphics Protocol:
104
105      Graphics mode is entered by a %TDGRF (octal 231) code in the
106 output stream.  Following characters in the range 0 - 177 are
107 interpreted according to the graphics protocol.  Any character 200 or
108 larger (a %TD code) leaves graphics mode, and then has its normal
109 interpretation.  Thus, if the server forgets that the terminal in
110 graphics mode, the terminal will not long remain confused.
111
112      Once in graphics mode, the output stream should contain a
113 sequence of graphics protocol commands, each followed by its
114 arguments.  A zero as a command is a no-op.  To leave graphics mode
115 deliberately, it is best to use a %TDNOP.
116 \f
117 NWG/RFC# 746                                      RMS 17-MAR-78  43976
118 SUPDUP Graphics Extension
119
120
121 Co-ordinates:
122
123      Graphics mode uses a cursor position which is remembered from one
124 graphics command to the next while in graphics mode.  The graphics
125 mode cursor is not the same one used by normal type-out:  Graphics
126 protocol commands have no effect on the normal type-out cursor, and
127 normal type-out has no effect on the graphics mode cursor.  In
128 addition, the graphics cursor's position is measured in dots rather
129 than in characters.  The relationship between the two units (dots, and
130 characters) is recorded by the %TQHGT and %TQWID fields of the SMARTS
131 variable of the terminal, which contain the height and width in dots
132 of the box occupied by a character.  The size of the screen in either
133 dimension is assumed to be the length of a character box times the
134 number of characters in that direction on the screen.  If the screen
135 is actually bigger than that, the excess may or may not be part of
136 the visible area; the program will not know that it exists, in any
137 case.
138
139      Each co-ordinate of the cursor position is a 14-bit signed
140 number, where zero is at the center of the screen (if the screen
141 dimension is an even number of dots, then the visible negative points
142 extend one unit farther than the positive ones, in proper two's
143 complement fashion).  Excessively large values of the co-ordinates
144 will be off the screen, but are still meaningful.
145
146      An alternate mode is defined, which some terminals may support,
147 in which virtual co-ordinates are used.  The specified co-ordinates
148 are still 14-bit signed numbers, but instead of being in units of
149 physical dots on the terminal, it is assumed that +4000 octal is the
150 top of the screen or the right edge, while -4000 octal is the bottom
151 of the screen or the left edge.  The terminal is responsible for
152 scaling these virtual co-ordinates into units of screen dots.  Not all
153 terminals need have this capability; the %TQVIR bit in the SMARTS
154 variable indicates that it exists.  To use virtual co-ordinates, the
155 server should send a %GOVIR; to use physical co-ordinates again, it
156 should send a %GOPHY.  These should be repeated at intervals, such as
157 when graphics mode is entered, even though the terminal must attempt
158 to remember the state of the switch anyway.  This repetition is so
159 that a loss of some output will not cause unbounded confusion.
160
161      The virtual co-ordinates are based on a square.  If the visible
162 area on the terminal is not a square, then the standard virtual range
163 should correspond to a square around the center of the screen, and the
164 rest of the visible area should correspond to virtual co-ordinates
165 just beyond the normally visible range.
166
167      Graphics protocol commands take two types of cursor position
168 arguments, absolute ones and relative ones.  Commands that take
169 address arguments generally have two forms, one for each type of
170 address.  A relative address consists of two offsets, delta-X and
171 delta-Y, from the old cursor position.  Each offset is a 7-bit two's
172 complement number occupying one character.  An absolute address
173 consists of two co-ordinates, each 14 bits long, occupying two
174 characters, each of which conveys 7 bits.  The X co-ordinate or offset
175 precedes the Y.  Both types of address set the running cursor position
176 which will be used by the next address, if it is relative.  It is
177 perfectly legitimate for parts of objects to go off the screen.  What
178 happens to them is not terribly important, as long as it is not
179 disastrous, does not interfere with the reckoning of the cursor
180 position, and does not cause later objects, drawn after the cursor
181 moves back onto the screen, to be misdrawn.
182
183      Whether a particular spot on the screen is specified with an
184 absolute or a relative address is of no consequence.  The sequence in
185 which they are drawn is of no consequence.  Each object is independent
186 of all others, and exists at the place which was specified, in one way
187 or other, by the command that created it.  Relative addresses are
188 provided for the sake of data compression.  They are not an attempt to
189 spare programs the need for the meagre intelligence required to
190 convert between absolute and relative addresses; more intelligence
191 than that will surely be required for other aspects of the graphics
192 protocol.  Nor are relative addresses intended to cause several
193 objects to relocate together if one is "moved" or erased.  Terminals
194 are not expected to remember any relation between objects once they
195 are drawn.  Most will not be able to.
196
197      Although the cursor position on entry to graphics mode remains
198 set from the last exit, it is wise to reinitialize it with a %GOMVA
199 command before any long transfer, to limit the effects of lost output.
200 \f
201 NWG/RFC# 746                                      RMS 17-MAR-78  43976
202 SUPDUP Graphics Extension
203
204
205 Commands:
206
207      Commands to draw an object always have counterparts which erase
208 the same object.  On a bit matrix terminal, erasure and drawing are
209 almost identical operations.  On a display list terminal, erasure
210 involves searching the display list for an object with the specified
211 characteristics and deleting it from the list.  Thus, on such
212 terminals you can erase an object only if precisely that object was
213 drawn, and was specified the same way when drawn as when erased.
214 (presumably;  a very hairy program might allow more).  Any terminal
215 whose %TOERS bit is set must be able to erase to at least that extent.
216
217      The commands to draw objects run from 100 to 137, while those to
218 erase run in a parallel sequence from 140 to 177.  Other sorts of
219 operations have command codes below 100.  Meanwhile, the 20 bit in the
220 command code says which type of addresses are used as arguments:  if
221 the 20 bit is set, absolute addresses are used.  Graphics commands are
222 given names starting with "%GO".
223
224      Graphics often uses characters.  The %GODCH command is followed
225 by a string of characters to be output, terminated by a zero.  The
226 characters must be single-position printing characters.  On most
227 terminals, this limits them to ASCII graphic characters.  Terminals
228 with %TOSAI set in the TTYOPT variable allow all characters 0-177.
229 The characters are output at the current graphics cursor position (the
230 lower left hand corner of the first character's rectangle being placed
231 there), which is moved as the characters are drawn.  The normal
232 type-out cursor is not relevant and its position is not changed.  The
233 cursor position at which the characters are drawn may be in between
234 the lines and columns used for normal type-out.  The %GOECH command is
235 similar to %GODCH but erases the characters specified in it.  To clear
236 out a row of character positions on a bit matrix terminal without
237 having to respecify the text, a rectangle command may be used.
238
239
240 Example:
241
242      The way to send a simple line drawing is this:
243
244         %TDRST                  ;Reset all graphics modes.
245         %TDGRF                  ;Enter graphics.
246         %GOCLR                  ;Clear the screen.
247         %GOMVA xx yy            ;Set cursor.
248         %GODLA xx yy            ;Draw line from there.
249          << repeat last two commands for each line >>
250         %TDNOP                  ;Exit graphics.
251 \f
252 NWG/RFC# 746                                      RMS 17-MAR-78  43976
253 SUPDUP Graphics Extension
254
255
256 Graphics Input:
257
258      The %TRGIN bit in the right half of the SMARTS variable indicates
259 that the terminal can supply a graphic input in the form of a cursor
260 position on request.  Sending a %GOGIN command to the terminal asks to
261 read the cursor position.  It should be followed by an argument
262 character that will be included in the reply, and serve to associate
263 the reply with the particular request for input that elicited it.  The
264 reply should have the form of a Top-Y character (code 4131), followed
265 by the reply code character as just described, followed by an absolute
266 cursor position.  Since Top-Y is not normally meaningful as input,
267 %GOGIN replies can be distinguished reliably from keyboard input.
268 Unsolicited graphic input should be sent using a Top-X instead of a
269 Top-Y, so that the program can distinguish them.  Instead of a reply
270 code, for which there is no need, the terminal should send an encoding
271 of the buttons pressed by the user on his input device, if it has more
272 than one.
273
274
275 Sets:
276
277      Terminals may define the concept of a "set" of objects.  There
278 are up to 200 different sets, each of which can contain arbitrarily
279 many objects.  At any time, one set is selected; objects drawn become
280 part of that set, and objects erased are removed from it.  Objects in
281 a set other than the selected one cannot be erased without switching
282 to the sets that contain them.  A set can be made temporarily
283 invisible, as a whole, without being erased or its contents forgotten;
284 and it can then be made instantly visible again.  Also, a whole set
285 can be moved.  A set has at all times a point identified as its
286 "center", and all objects in it are actually remembered relative to
287 that center, which can be moved arbitrarily, thus moving all the
288 objects in the set at once.  Before beginning to use a set, therefore,
289 one should "move" its center to some absolute location.  Set center
290 motion can easily cause objects in the set to move off screen.  When
291 this happens, it does not matter what happens temporarily to those
292 objects, but their "positions" must not be forgotten, so that undoing
293 the set center motion will restore them to visibility in their
294 previous positions.  Sets are not easily implemented on bit matrix
295 terminals, which should therefore ignore all set operations (except,
296 for a degenerate interpretation in connection with blinking, if that
297 is implemented).  The %TQSET bit in the SMARTS variable of the
298 terminal indicates that the terminal implements multiple sets of
299 objects.
300
301      On a terminal which supports multiple sets, the %GOCLR command
302 should empty all sets and mark all sets "visible" (perform a %GOVIS on
303 each one).  So should a %TDCLR SUPDUP command.  Thus, any program
304 which starts by clearing the screen will not have to worry about
305 initializing the states of all sets.
306 \f
307 NWG/RFC# 746                                      RMS 17-MAR-78  43976
308 SUPDUP Graphics Extension
309
310
311 Blinking:
312
313      Some terminals have the ability to blink objects on the screen.
314 The command %GOBNK meaning make the current set blink.  All objects in
315 it already begin blinking, and any new objects also blink.  %GOVIS or
316 %TOINV cancels the effect of a %GOBNK, making the objects of the set
317 permanently visible or invisible.  %TQBNK indicates that the terminal
318 supports blinking on the screen.
319
320      However, there is a problem:  some intelligent bit matrix
321 terminals may be able to implement blinking a few objects, if they are
322 told in advance, before the objects are drawn.  They will be unable to
323 support arbitrary use of %GOBNK, however.
324
325      The solution to the problem is a convention for the use of %TOBNK
326 which, together with degenerate definitions for set operations, makes
327 it possible to give commands which reliably work on any terminal which
328 supports blinking.
329
330      On a terminal which sets %TQBNK but not %TQSET, %GOBNK is defined
331 to cause objects which are drawn after it to be drawn blinking.
332 %GOSET cancels this, so following objects will be drawn unblinking.
333 This is regardless of the argument to the %GOSET.
334
335      Thus, the way for a program to work on all terminals with %TQBNK,
336 whether they know about sets or not, is:  to write a bliniking
337 picture, select some set other than your normal one (set 1 will do),
338 do %GOBNK, output the picture, and reselect set 0.  The picture will
339 blink, while you draw things in set 0.  To draw more blinking objects,
340 you must reselect set 1 and do another %GOBNK.  Simply reselecting set
341 1 will not work on terminals which don't really support sets, since
342 they don't remember that the blinking objects are "in set 1" and not
343 "in set 0".
344
345      Erasing a blinking object should make it disappear, on any
346 terminal which implements blinking.  On bit matrix terminals, blinking
347 MUST always be done by XORing, so that the non-blinking background
348 is not destroyed.
349
350      %GOCLS, on a terminal which supports blinking but not sets,
351 should delete all blinking objects.  Then, the convention for deleting
352 all blinking objects is to select set 1, do a %GOCLS, and reselect set
353 0.  This has the desired effect on all terminals.  This definition of
354 %GOCLS causes no trouble on non-set terminals, since %GOCLS would
355 otherwise be meaningless to them.
356
357      To make blinking objects stop blinking but remain visible is
358 possible with a %GOVIS on a terminal which supports sets.  But in
359 general the only way to do it is to delete them and redraw them as
360 permanent.
361 \f
362 NWG/RFC# 746                                      RMS 17-MAR-78  43976
363 SUPDUP Graphics Extension
364
365
366 Rectangles and XOR Mode:
367
368      Bit matrix terminals have their own operations that display list
369 terminals cannot duplicate.  First of all, they have XOR mode, in
370 which objects drawn cancel existing objects when they overlap.  In
371 this mode, drawing an object and erasing it are identical operations.
372 All %GOD.. commands act IDENTICALLY to the corresponding %GOE..'s.
373 XOR mode is entered with a %GOXOR and left with a %GOIOR.  Display
374 list terminals will ignore both commands.  For that reason, the
375 program should continue to distinguish draw commands from erase
376 commands even in XOR mode.  %TQXOR indicates a terminal which
377 implements XOR mode.  XOR mode, when set, remains set even if graphics
378 mode is left and re-entered.  However, it is wise to re-specify it
379 from time to time, in case output is lost.
380
381      Bit matrix terminals can also draw solid rectangles.  They can
382 thus implement the commands %GODRR, %GODRA, %GOERR, and %GOERA.  A
383 rectangle is specified by taking the current cursor position to be one
384 corner, and providing the address of the opposite corner.  That can be
385 done with either a relative address or an absolute one.  The %TQREC
386 bit indicates that the terminal implements rectangle commands.
387
388      Of course, a sufficiently intelligent bit matrix terminal can
389 provide all the features of a display list terminal by remembering
390 display lists which are redundant with the bit matrix, and using them
391 to update the matrix when a %GOMSR or %GOVIS is done.  However, most
392 bit matrix terminals are not expected to go to such lengths.
393 \f
394 NWG/RFC# 746                                      RMS 17-MAR-78  43976
395 SUPDUP Graphics Extension
396
397
398 How Several Process Can Draw On One Terminal Without Interfering With
399 Each Other:
400
401      If we define "input-stream state" information to be whatever
402 information which can affect the action of any command, other than
403 what is contained in the command, then each of the several processes
404 must have its own set of input-stream state variables.
405
406      This is accomplished by providing the %GOPSH command.  The %GOPSH
407 command saves all such input-stream information, to be restored when
408 graphics mode is exited.  If the processes can arrange to output
409 blocks of characters uninterruptibly, they can begin each block with a
410 %GOPSH followed by commands to initialize the input-stream state
411 information as they desire.  Each block of graphics output should be
412 ended by a %TDNOP, leaving the terminal in its "normal" state for all
413 the other processes, and at the same time popping the what the %GOPSH
414 pushed.
415
416     The input-stream state information consists of:
417         The cursor position
418         the state of XOR mode (default is OFF)
419         the selected set (default is 0)
420         the co-ordinate unit in use (physical dots, or virtual)
421            (default is physical)
422         whether output is going to the display screen or to a hardcopy
423            device (default is to the screen)
424         what portion of the screen is in use
425            (see "Using Only Part of the Screen")
426            (default is all)
427
428      Each unit of input-stream status has a default value for the sake
429 of programs that do not know that the information exists; the
430 exception is the cursor position, since all programs must know that it
431 exists.  A %TDINI or %TDRST command should set all of the variables to
432 their default values.
433
434      The state of the current set (whether it is visible, and where
435 its center is) is not part of the input-stream state information,
436 since it would be hard to say what it would mean if it were.  Besides,
437 the current set number is part of the input-stream state information,
438 so different processes can use different sets.  The allocation of sets
439 to processes is the server host's own business.
440 \f
441 NWG/RFC# 746                                      RMS 17-MAR-78  43976
442 SUPDUP Graphics Extension
443
444
445 Using Only Part of the Screen:
446
447      It is sometimes desirable to use part of the screen for picture
448 and part for text.  Then one may wish to clear the picture without
449 clearing the text.  On display list terminals, %GOCLR should do this.
450 On bit matrix terminals, however, %GOCLR can't tell which bits were
451 set by graphics and which by text display.  For their sake, the %GOLMT
452 command is provided.  This command takes two cursor positions as
453 arguments, specifying a rectangle.  It declares that graphics will be
454 limited to that rectangle, so %GOCLR should clear only that part of
455 the screen.  %GOLMT need not do anything on a terminal which can
456 remember graphics output as distinct from text output and clear the
457 former selectively, although it would be a desirable feature to
458 process it even on those terminals.
459
460      %GOLMT can be used to enable one of several processes which
461 divide up the screen among themselves to clear only the picture that
462 it has drawn, on a bit matrix terminal.  By using both %GOLMT and
463 distinct sets, it is possible to deal successfully with almost any
464 terminal, since bit matrix terminals will implement %GOLMT and display
465 list terminals almost always implement sets.
466
467      The %TDCLR command should clear the whole screen, including
468 graphics output, ignoring %GOLMT.
469
470
471 Errors:
472
473      In general, errors in graphics commands should be ignored.
474
475      Since the output and input streams are not synchronized unless
476 trouble is taken, there is no simple way to report an error well
477 enough for the program that caused it to identify just which command
478 was invalid.  So it is better not to try.
479
480      Errors which are not the fault of any individual command, such as
481 running out of memory for display lists, should also be ignored as
482 much as possible.  This does NOT mean completely ignoring the commands
483 that cannot be followed; it means following them as much as possible:
484 moving the cursor, selecting sets, etc. as they specify, so that any
485 subsequent commands which can be executed are executed as intended.
486 \f
487 NWG/RFC# 746                                      RMS 17-MAR-78  43976
488 SUPDUP Graphics Extension
489
490
491 Extensions:
492
493      This protocol does not attempt to specify commands for dealing
494 with every imaginable feature which a picture-drawing device can have.
495 Additional features should be left until they are needed and well
496 understood, so that they can be done right.
497
498
499 Storage of Graphics Commands in Files:
500
501      This can certainly be done.  Since graphics commands are composed
502 exclusively of the ASCII characters 0 - 177, any file that can hold
503 ASCII text can hold the commands to draw a picture.  This is less
504 useful than you might think, however.  Any program for editing, in
505 whatever loose sense, a picture, will have its own internal data which
506 determine the relationships between the objects depicted, and control
507 the interpretation of the programs commands, and this data will all be
508 lost in the SUPDUP graphics commands for displaying the picture.
509 Thus, each such program will need to have its own format for storing
510 pictures in files, suitable for that program's internal data
511 structure.  Inclusion of actual graphics commands in a file will be
512 useful only when the sole purpose of the file is to be displayed.
513 \f
514 NWG/RFC# 746                                      RMS 17-MAR-78  43976
515 SUPDUP Graphics Extension
516
517
518 Note: the values of these commands are represented as 8.-bit octal
519 bytes.  Arguments to the commands are in lower case inside angle
520 brackets.
521
522 The Draw commands are:
523
524 Value   Name   Arguments
525
526  101    %GODLR <p>
527                 Draw line relative, from the cursor to <p>.
528  102    %GODPR <p>
529                 Draw point relative, at <p>.
530  103    %GODRR <p>
531                 Draw rectangle relative, corners at <p> and at the
532                 current cursor position.
533  104    %GODCH <string> <0>
534                 Display the chars of <string> starting at the current
535                 graphics cursor position.
536  121    %GODLA <p>
537                 Draw line absolute, from the cursor to <p>.
538                 The same effect as %GODLR, but the arg is an absolute
539                 address.
540  122    %GODPA <p>
541                 Draw point absolute, at <p>.
542  123    %GODRA <p>
543                 Draw rectangle absolute, corners at <p> and at the
544                 current cursor position.
545
546 The Erase commands are:
547
548 Value   Name   Arguments
549
550  141    %GOELR <p>
551                 Erase line relative, from the cursor to <p>.
552  142    %GOEPR <p>
553                 Erase point relative, at <p>.
554  143    %GOERR <p>
555                 Erase rectangle relative, corners at <p> and at the
556                 current cursor position.
557  144    %GOECH <string> <0>
558                 Erase the chars of <string> starting at the current
559                 graphics cursor position.
560  161    %GOELA <p>
561                 Erase line absolute, from the cursor to <p>.
562  162    %GOEPA <p>
563                 Erase point absolute, at <p>.
564  163    %GOERA <p>
565                 Erase rectangle absolute, corners at <p> and at the
566                 current cursor position.
567 \f
568 NWG/RFC# 746                                      RMS 17-MAR-78  43976
569 SUPDUP Graphics Extension
570
571
572 The miscellaneous commands are:
573
574 Value   Name   Arguments
575
576  001    %GOMVR <p>
577                 Move cursor to point <p>
578  021    %GOMVA <p>
579                 Move cursor to point <p>, absolute address.
580  002    %GOXOR
581                 Turn on XOR mode.  Bit matrix terminals only.
582  022    %GOIOR
583                 Turn off XOR mode.
584  003    %GOSET <n>
585                 Select set.  <n> is a 1-character set number, 0 - 177.
586  004    %GOMSR <p>
587                 Move set origin to <p>.  Display list terminals only.
588  024    %GOMSA <p>
589                 Move set origin to <p>, absolute address.
590  006    %GOINV
591                 Make current set invisible.
592  026    %GOVIS
593                 Make current set visible.
594  007    %GOBNK
595                 Make current set blink.  Canceled by %GOINV or %GOVIS.
596  010    %GOCLR
597                 Erase whole screen.
598  030    %GOCLS
599                 Erase entire current set (display list terminals).
600  011    %GOPSH
601                 Push all input-stream status information, to be
602                 restored when graphics mode is exited.
603  012    %GOVIR
604                 Start using virtual co-ordinates
605  032    %GOPHY
606                 Resume giving co-ordinates in units of dots.
607  013    %GOHRD <n>
608                 Divert output to output subdevice <n>.
609                 <n>=0 reselects the main display screen.
610  014    %GOGIN <n>
611                 Request graphics input (mouse, tablet, etc).
612                 <n> is the reply code to include in the answer.
613  015    %GOLMT <p1> <p2>
614                 Limits graphics to a subrectangle of the screen.
615                 %GOCLR will clear only that area.  This is for those
616                 who would use the rest for text.
617 \f
618 NWG/RFC# 746                                      RMS 17-MAR-78  43976
619 SUPDUP Graphics Extension
620
621
622 Bits in the SMARTS Variable Related to Graphics:
623
624 Note: the values of these bits are represented as octal 36.-bit words,
625 with the left and right 18.-bit halfword separated by two commas as in
626 the normal PDP-10 convention.
627
628 Name    Value      Description
629
630 %TQGRF  000001,,0  terminal understands graphics protocol.
631
632 %TQSET  000002,,0  terminal supports multiple sets.
633
634 %TQREC  000004,,0  terminal implements rectangle commands.
635
636 %TQXOR  000010,,0  terminal implements XOR mode.
637
638 %TQBNK  000020,,0  terminal implements blinking.
639
640 %TQVIR  000040,,0  terminal implements virtual co-ordinates.
641
642 %TQWID  001700,,0  character width, in dots.
643
644 %TQHGT  076000,,0  character height, in dots.
645
646 %TRGIN  0,,400000  terminal can provide graphics input.
647
648 %TRGHC  0,,200000  terminal has a hard-copy device to which output
649                    can be diverted.
650 \f
651 ;;;Local Modes:
652 ;;;Mode:Text
653 ;;;Auto Fill Mode:1
654 ;;;Fill Column:70
655 ;;;End: