📄 rfc292.txt
字号:
RFC 292 Graphics Protocol Level 0 January 1972
LEVEL 0: COMMAND DESCRIPTIONS
0 Null Statement ("null")
This statement has no arguments and no effect, either.
1 Erase screen and reset beam to origin ("Erase").
This command indicates that a new picture is about to be drawn.
It should always be (eventually) paired with a following End of
Picture command.
2 Move beam invisibly to absolute position
("Move Absolute") <x coordinate> <y coordinate>.
Nothing is drawn; the beam is positioned to the specified absolute
x,y position.
3 Move beam invisibly by relative amount
("Move Relative") <x delta> <y delta>.
Nothing is drawn; the beam is shifted by the specified amount in x
and y.
4 Draw line to absolute position
("Draw Absolute") <x coordinate> <y coordinate>.
A line is drawn from the current beam position to the specified
absolute x, y position.
5 Draw line to relative position
("Draw Relative") <x delta> <y delta>.
A line is drawn from the current beam position to the position
delta x and delta y away.
6 Display a Dot at absolute position
("Dot Absolute") <x coordinate> <y coordinate>.
The beam is moved invisibly to absolute position x, y and a dot is
displayed there.
7 Display a Dot at Relative position
("Dot Relative") <x delta> <y delta>.
The beam is moved invisibly by the specified amount in x and y and
a dot is displayed there.
8 Display text ("Text") <string>.
At the current beam position, display some characters at the
normal size for the device being operated. <string> consists of a
<count> followed by count many characters. If there is no "normal
size," choose the size so that seventy-two characters are
displayed per line. The characters in the string are coded in
network ASCII: all codes between 0 and 127 (decimal) inclusive are
permitted. (At level zero, what happens to control characters is
Michener [Page 6]
RFC 292 Graphics Protocol Level 0 January 1972
left unspecified.) Where the beam is, following execution of this
command, is left unspecified, except that another Display Text
command immediately following will append its text to the previous
string. (The use of the TEXT command is _discouraged_; use TextR
instead.) The position of the first character relative to the
initial beam position is left unspecified.
9 Display text and restore beam ("TextR") <string>.
At the current beam position, display a string of characters at
the normal size for the device being operated then reposition the
beam to where it was before the command. <string> consists of a
<count> followed by count many characters. If there is no "normal
size," choose the size so that seventy-two characters are
displayed per line. The characters in the string are coded in
network ASCII; all codes between 0 and 127 (decimal) inclusive are
permitted. (At level zero, what happens to control characters is
left unspecified.) The position of the first character relative
to the initial beam position is left unspecified.
10 End of Picture ("Endpic").
This command denotes the end of a new picture. It must be paired
with a preceding Erase command.
11 Escape to device specifics ("Escdev") <value> <string>.
If "value" is the code assigned (by the Protocol Committee) to the
device being operated, then transmit the eight-bit bytes in
<string> (which starts with a <count> indicating the number of
bytes) to the device without examining them. Otherwise ignore
this command. If the device does not accept 8-bit information,
reformat the data in some device specific way; an example would be
throwing away the high order bit for a seven bit device, or
gathering 5 8-bit bytes into one 36-bit word, again discarding the
high order bits, perhaps. The action of the bytes in the string
should leave alone (or at least restore) any hardware beam
position registers in the device which the interpreter might
conceivably depend on.
This command really should not be used; it was included at level 0
so that specific applications can do mode setting and other device
specific manipulations. For example ARDS terminals may optionally
have several, independently addressable output scopes. The
selection mechanism changes state only when a particular sequence
of ASCII characters reaches the terminal. Thus ESCDEV would be
used to select which scopes(s) is/are to be affected by following
commands. (The current state is invisible to the graphics package
at the Using Host.)
Further, suppose that another make of terminal has a similar
Michener [Page 7]
RFC 292 Graphics Protocol Level 0 January 1972
option, which responds to a different code sequence. This
possibility is the motivation for conditionally ignoring the
ESCDEV command based on the "<value>" specified. Given that a
particular application will only be used to output to either an
ARDS or this second make (with the multiple scope option), then
the application could always send two ESCDEV commands, one
applicable only to ARDS terminals, and the other applicable only
to the second make.
Michener [Page 8]
RFC 292 Graphics Protocol Level 0 January 1972
APPENDIX 1: BNF FOR THE GRAPHICS PROTOCOL BYTE STREAM
Key to below:
Non-terminals are represented in <>.
Terminals which are keywords standing for particular eight-bit values
are in capitals.
Terminals whose meaning should be clear to the reader are in lower
case. Note that "empty_string" means "zero bytes," and not "a
<string> whose <count> is zero".
<graphics output byte stream> ::= empty_string
| <picture> <graphics output byte stream>
<picture> ::= <new picture stt> <sttgroup> <end stt>
<stt group> ::= empty_string | <stt> <stt group>.
<stt> ::= <control stt> | <display stt>
<control stt> ::= <escape to device stt>
| <null stt>
<display stt> ::= <move absolute stt>
| <move relative stt>
| <draw absolute stt>
| <draw relative stt>
| <dot absolute stt>
| <dot relative stt>
| <text and restore beam stt>
| <text stt>
<new picture stt> ::= ERASE
<escape to device stt> ::=ESCDEV <device code> <string>
<null stt>::= NULL
<end stt>::= ENDPIC
<move absolute stt> ::= MOVEA <x coordinate> <y coordinate>
<move relative stt> ::= MOVER <x delta> <y delta>
<draw absolute stt> ::= DRAWA <x coordinate> <y coordinate>
<draw relative stt> ::= DRAWR <x delta> <y delta>
<dot absolute stt> ::= DOTA <x coordinate> <y coordinate>
<dot relative stt> ::= DOTR<x delta> <y delta>
<text and restore beam stt> ::= TEXTR <string>
<text stt> ::= TEXT <string>
<x coordinate> ::= <coordinate>
<y coordinate> ::= <coordinate>
<x delta> ::= <double coordinate>
<y delta> ::= <double coordinate>
<coordinate> ::= singed,_two's-complement,_fraction_in_range
-1/2_to_less_than_+1/2
<double coordinate> ::= signed,_two's_complement,_fraction,
range_strictly_between_-1_and_+1
Michener [Page 9]
RFC 292 Graphics Protocol Level 0 January 1972
<count ::= 7-bit_non-negative_integer
| 15-bit_non-negative_integer_represented_in
"excess_2**15"_notation
<string> ::= <count> count_8-bit_bytes
<device code> ::= <value>
<value> ::= 8-bit_integer
[This RFC was put into machine readable form for entry]
[into the online RFC archives by Kelly Tardif, Viag閚ie 10/99]
Michener [Page 10]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -