mirror of
https://github.com/PDP-10/its.git
synced 2026-01-25 19:56:53 +00:00
XGP WRITUP and WRITES are superceded by INFO; XGP >
This commit is contained in:
@@ -1,211 +1 @@
|
||||
Date: 11 Sep 1977 2232-PDT
|
||||
From: HPM at SU-AI (Hans Moravec)
|
||||
To: DLW at MIT-AI
|
||||
|
||||
Character Mode
|
||||
|
||||
|
||||
In character mode, the XGP can be used to print text using one or
|
||||
more fonts and to draw vectors. Modes 0 and 13 are the character
|
||||
modes for the XGP. In these modes, each 36-bit word is interpreted
|
||||
as five 7-bit bytes. There is no fixed mapping between byte values
|
||||
and particular graphic symbols. The graphic symbol for any byte is
|
||||
defined by the current font in use. Certain byte values have special
|
||||
meanings consistent with ascii, and one byte value, octal 177, is
|
||||
used as an escape which gives the bytes that follow a special
|
||||
meaning.
|
||||
|
||||
Character mode permits vectors and multiple active text lines. The
|
||||
system must be presented with vectors and text sorted by ascending
|
||||
values of Y0 (top scan line number for text or vectors); otherwise,
|
||||
the output will be wrong.
|
||||
|
||||
The 7-bit bytes taken from the user's buffer in character mode are
|
||||
interpreted as follows:
|
||||
|
||||
Byte Value Usual meaning Escape meaning
|
||||
|
||||
0 Null -- byte is ignored Normal
|
||||
1 Normal XGP ESCAPE 1
|
||||
2 Normal XGP ESCAPE 2
|
||||
3 Normal XGP ESCAPE 3
|
||||
4 Normal XGP ESCAPE 4
|
||||
5:10 Normal Reserved
|
||||
11 TAB Normal
|
||||
12 LF Normal
|
||||
13 Normal Reserved
|
||||
14 FF Normal
|
||||
15 CR Normal
|
||||
16:37 Normal Reserved
|
||||
40:176 Normal Normal
|
||||
177 ESCAPE Normal
|
||||
|
||||
NORMAL means that the definition of this byte in the current font
|
||||
will be printed. If this byte is undefined in the current font, it
|
||||
will be ignored.
|
||||
|
||||
ESCAPE means that the next byte will have an alternate meaning
|
||||
selected from the column ESCAPE MEANING.
|
||||
|
||||
TAB produces a column select to the first column which is at least
|
||||
the width of a blank to the right of the current column position, and
|
||||
some multiple of 8 blank widths to the right of the left margin.
|
||||
|
||||
LF activates the current text line. The current text will be queued
|
||||
to be printed, and then the default Y-position of text will be
|
||||
advanced by the number of scan lines it takes to draw this text line,
|
||||
plus the number of scan lines specified by the current interline
|
||||
spacing value XLINE (see functions 2 and 3--read and set margins--of
|
||||
the XGP MTAPE UUO on page 290). This new default Y-position will be
|
||||
used for the next text line (unless changed by a vector command or
|
||||
ESCAPE 3).
|
||||
|
||||
FF activates the current text line, then causes a page eject after
|
||||
the current text line is printed, and sets the default Y-position to
|
||||
the first scan line below the top of page margin (TMAR) on the new
|
||||
page. See also functions 2 and 3--read and set margins--of the XGP
|
||||
MTAPE UUO on page 290 for the effects of FF.
|
||||
|
||||
CR causes a column select to the current left margin to be generated.
|
||||
|
||||
XGP ESCAPE 1 ('177&'001) causes the next 7-bit byte to be read as a
|
||||
special operation code. The following codes are implemented:
|
||||
|
||||
CODE XGP ESCAPE 1 MEANING
|
||||
|
||||
0:17 FONT SELECT. The code, 0 to 17, is taken as the font
|
||||
identification number of the font to be used.
|
||||
|
||||
20:37 Reserved for future use.
|
||||
|
||||
40 COLUMN SELECT. The next 14 bits (2 bytes) are taken
|
||||
modulo =4096 as the absolute X-position to print at
|
||||
next. The intention is to allow arbitrary-width
|
||||
spaces for text justification.
|
||||
|
||||
41 UNDERSCORE. The next 7-bit byte is taken in two's
|
||||
complement as the relative number of the scan line on
|
||||
which the underscore is to occur, where zero
|
||||
represents the baseline of the text, negative values
|
||||
represent scan lines above the baseline and positive
|
||||
values scan lines below it. The next 14 bits (2
|
||||
bytes) are taken modulo =4096 as the length of the
|
||||
underscore. If the underscore command is the first
|
||||
thing done on a new text line, the baseline used will
|
||||
be the baseline of the current font.
|
||||
|
||||
42 LINE SPACE. The current text line is activated and
|
||||
queued to print. Then the default Y-position of text
|
||||
is advanced by the number of scan lines it takes to
|
||||
draw this text line, plus the number of scan lines
|
||||
given by the next byte. Thus, this is like LF
|
||||
(linefeed) but allows using a different interline
|
||||
spacing value (XLINE) for this one text line.
|
||||
|
||||
43 BASELINE ADJUST. The next 7 bits are taken in two's
|
||||
complement as the baseline adjustment to the current
|
||||
font. The adjustment sticks until reset by another
|
||||
BASELINE ADJUST or by a FONT SELECT, or until modified
|
||||
by a RELATIVE BASELINE ADJUST (52 below). The
|
||||
intention is to allow a font to be used for subscripts
|
||||
and superscripts. Increment baseline for superscript,
|
||||
decrement for subscript. Values 0:77 are increments;
|
||||
100:177 are decrements: 100 means -100, 177 means -1.
|
||||
|
||||
44 PRINT THE PAPER PAGE NUMBER. The paper page number is
|
||||
set to 1 by an FF (formfeed). It is incremented each
|
||||
time the paper is cut. The decimal value of this
|
||||
count is printed.
|
||||
|
||||
45 ACCEPT HEADING TEXT AND PRINT IT NOW. The next byte
|
||||
is a count of the number of bytes of heading text to
|
||||
follow. Those bytes will be read into the heading
|
||||
line, which will be printed 1) now and 2) immediately
|
||||
after an FF is inserted to begin a new page because of
|
||||
an LF (linefeed) or LINE SPACE command that has set
|
||||
the Y-position for printing to a scan line beyond the
|
||||
end of the page body (as defined by PMAR). Only one
|
||||
text line is allowed in the heading, which must end
|
||||
with an LF or a LINE SPACE (unless the byte count is
|
||||
zero). A zero byte count means flush any previously
|
||||
specified heading text.
|
||||
|
||||
46 START UNDERLINE. Set the left end of an underline.
|
||||
See the STOP UNDERLINE command below.
|
||||
|
||||
47 STOP UNDERLINE. The next byte is taken in two's
|
||||
complement as the relative number of the scan line on
|
||||
which the underline is to be written (same meaning as
|
||||
in UNDERSCORE--41 above: zero represents the baseline
|
||||
of the text, negative values represent scan lines
|
||||
above the baseline and positive values scan lines
|
||||
below it). The extent of the underscore is defined by
|
||||
this command and the START UNDERLINE command above.
|
||||
If this command is not preceded by a START UNDERLINE
|
||||
command, the results will be unpredictable. No
|
||||
underline will happen until this command is given.
|
||||
Beware of column selects.
|
||||
|
||||
50 SET INTERCHARACTER SPACING. The next byte is
|
||||
interpreted as the intercharacter spacing, which is
|
||||
not currently used for anything. This code is
|
||||
included for compatibility with MIT.
|
||||
|
||||
51 STOP UNDERLINE OF SPECIFIED THICKNESS. This is just
|
||||
like STOP UNDERLINE (47 above) except that the first
|
||||
byte after the 51 is interpreted as the desired
|
||||
thickness (in scan lines) of the underlining. The
|
||||
second byte after the 51 is taken in two's complement
|
||||
as the relative number of the first scan line on which
|
||||
the underline is to be written (same meaning as in
|
||||
UNDERSCORE--41 above: zero represents the baseline of
|
||||
the text, negative values represent scan lines above
|
||||
the baseline and positive values scan lines below it).
|
||||
|
||||
52 RELATIVE BASELINE ADJUST. This is the same as
|
||||
BASELINE ADJUST (43 above) except that the baseline is
|
||||
adjusted relative to any previous adjustment. The
|
||||
next 7 bits are taken in two's complement as the
|
||||
relative baseline adjustment to the current font. The
|
||||
adjustment sticks until reset by a BASELINE ADJUST
|
||||
(43) or a FONT SELECT, or until modified by another
|
||||
RELATIVE BASELINE ADJUST.
|
||||
|
||||
XGP ESCAPE 2 ('177&'002) causes the next 7-bit byte to be taken as a
|
||||
twos-complement column increment. Values 0:77 are positive
|
||||
increments; 100:177 are negative increments: 100 means -100, 177
|
||||
means -1.
|
||||
|
||||
XGP ESCAPE 3 ('177&'003) causes the next 2 bytes to be taken as the
|
||||
scan line number on which to start this text line. Scan line 0 is
|
||||
the first scan line on the page (immediately following the cut). The
|
||||
topmost scan line of the present text line will be placed on the scan
|
||||
line indicated in this command. If there is no current text line,
|
||||
the next text line will be put there. The system is not able to
|
||||
queue text or vectors for scan line 0 of the first page of a
|
||||
transfer; if it is necessary to queue things on scan line 0, it is
|
||||
recommended that a page be output prior to that attempt.
|
||||
|
||||
XGP ESCAPE 4 ('177&'004). This escape is used to specify a vector.
|
||||
It is followed by =11 bytes describing the vector:
|
||||
|
||||
2 bytes of Y0 Number of first scan line of vector.
|
||||
2 bytes of X0 Column position of left edge of first scan line
|
||||
of the vector.
|
||||
3 bytes of DX Delta X: 1 bit of sign; 11 bits of integer; 9
|
||||
bits of fraction.
|
||||
2 bytes of N The number of scan lines on which this vector
|
||||
is visible.
|
||||
2 bytes of W The column width of each scan line.
|
||||
|
||||
|
||||
The system must be presented with vectors and text sorted by
|
||||
ascending values of Y0. Otherwise, the output will be wrong.
|
||||
|
||||
|
||||
The escape significances of codes 5 through 10, 13, and 16 through 37
|
||||
are not defined at the present time but are reserved for future use.
|
||||
|
||||
-------
|
||||
|
||||
|
||||
This file has been superceded by INFO; XGP >
|
||||
|
||||
@@ -1,158 +1 @@
|
||||
Character Mode for the XGP
|
||||
|
||||
The PDP-11 program for the XGP interprets character strings in files
|
||||
in the following format:
|
||||
|
||||
|
||||
Byte Usual meaning Escape significance
|
||||
|
||||
0 Null - byte is ignored Normal
|
||||
1 Normal XGP ESCAPE 1
|
||||
2 Normal XGP ESCAPE 2
|
||||
3 Normal XGP ESCAPE 3
|
||||
4 Normal XGP ESCAPE 4
|
||||
5-7 Normal Reserved
|
||||
10 Backspace Normal
|
||||
11 TAB Normal
|
||||
12 LF Normal
|
||||
13 Normal Reserved
|
||||
14 FF Normal
|
||||
15 CR Normal
|
||||
16-37 Normal Reserved
|
||||
40-176 Normal Normal
|
||||
177 ESCAPE Normal
|
||||
|
||||
Normal means the definition of this byte in the current font will be
|
||||
printed. If this byte is undefined in the current font, it will be
|
||||
ignored.
|
||||
|
||||
ESCAPE causes the next byte to have an alternate meaning selected
|
||||
from the column "Escape significance".
|
||||
|
||||
Backspace spaces to the left the width of
|
||||
one space in the current font, including inter-character
|
||||
spacing.
|
||||
|
||||
TAB produces a column select to the column which is at least the
|
||||
width of a blank to the right of the current column position, and
|
||||
some multiple of 8 blank widths to the right of the left margin.
|
||||
(this computation of the width includes the inter character spacing)
|
||||
|
||||
LF activates the current text line. The current text will be queued
|
||||
to printed. This line will be printed at a vertical location such
|
||||
that the distance between the baselines of of it and the preceeding line
|
||||
is equal to the vertical spacing parameter, unless this would cause
|
||||
the subscripts of the former line to overlap vertically with the superscripts
|
||||
of this line. It will then be pushed down to make this not the case.
|
||||
|
||||
FF, like LF, activates the text. In addition, FF causes a page
|
||||
eject after the current text line is printed. FF also sets the
|
||||
defalut Y position to the first line below the top of page margin on
|
||||
the new page.
|
||||
|
||||
The program will automatically form feed when the next text line would
|
||||
place characters below the bottom margin. Sequential form feeds will
|
||||
increment the page number but will otherwise be ignored.
|
||||
|
||||
CR causes a column select to the current left margin to be
|
||||
generated. This can be used to produce overprinting.
|
||||
|
||||
|
||||
XGP ESCAPE 1 ('177&'001) causes the next 7 bits to be read as a
|
||||
special operation code. The following codes are implemented:
|
||||
|
||||
0-3 Font select.
|
||||
The code, 0 to 3 is taken as the font identification
|
||||
number of the font to use.
|
||||
|
||||
4-37 Reserved for future use.
|
||||
|
||||
40 XGP Column Selector
|
||||
The next 14 bits are taken as the
|
||||
x-position to print at next. (The intention is to
|
||||
allow arbitrary width spaces for text justification.)
|
||||
|
||||
41 XGP Underscore
|
||||
The next 7 bits are taken as the scan-line number on
|
||||
which to underscore. It is taken as a 2's complement
|
||||
increment to the base line. Zero is on the baseline,
|
||||
positive bytes are down from it. Underscores outside
|
||||
the range of the other characters on the line will be
|
||||
ignored. The next 14 bits are taken as the length
|
||||
of the underscore.
|
||||
|
||||
42 Line space.
|
||||
This does a line feed and then takes the byte as the
|
||||
number of lines between this line's baseline and the
|
||||
baeline of the following line.
|
||||
|
||||
43 Base-line adjust.
|
||||
The next 7 bits are taken in two's complement as the
|
||||
base-line adjustment to the current font. The
|
||||
adjustment sticks until reset by another adjust
|
||||
command or a font select. The intention is to allow a
|
||||
font to be used for subscripts and superscripts.
|
||||
(Increment baseline for superscript, decrement for
|
||||
subscript).
|
||||
|
||||
** 44 Print the paper page number.
|
||||
The paper page number is set to 1 by a form feed. It
|
||||
is incremented each time the paper is cut. The
|
||||
decimal value of this count is printed.
|
||||
|
||||
** 45 Accept heading text.
|
||||
The next byte is a count of bytes to follow. Those
|
||||
bytes will be read into the heading line. When that
|
||||
count is exhausted, the heading line will be printed.
|
||||
If a line feed or line space command is given that
|
||||
would cause text to be printed below the current text
|
||||
area, a form feed is inserted by the XGP and if a
|
||||
heading is defined, it will be printed.
|
||||
|
||||
46 Start Underline.
|
||||
Set the left end of an underline. See Stop Underline.
|
||||
|
||||
47 Stop Underline.
|
||||
The next byte is the scan line on which to write the
|
||||
underline (same as XGP Underscore). The extent of
|
||||
the underscore is defined by this command and Start
|
||||
Underline. If this command is not preceded by a Start
|
||||
Underline, it will underline from the left margin.
|
||||
Beware of column selects. No underline will happen
|
||||
until this command is given.
|
||||
|
||||
50 Takes the next byte as the intercharacter spacing
|
||||
This is reset to zero at the end of each line.
|
||||
|
||||
XGP ESCAPE 2 ('177&'002) causes the next 7 bits to be taken as the
|
||||
column increment. This quantity is signed: 0-77 are positive
|
||||
increments 100 to 177 are negative increments (100 -100, 177 -1).
|
||||
|
||||
XGP ESCAPE 3 ('177&'003) causes the next 2 bytes to be taken as the
|
||||
scan line number on which to start this text line. Scan line 0 is
|
||||
the first scan line on the page (immediately following the cut).
|
||||
The topmost scanline of the present text line will be placed on the
|
||||
scan line indicated in this command.
|
||||
|
||||
|
||||
** XGP ESCAPE 4 ('177&'004). This escape is used to specify a vector.
|
||||
It is followed by 11 bytes describing the vector:
|
||||
|
||||
2 bytes Y0 Scan line number of first line of vector.
|
||||
2 bytes X0 Column position of left edge of first line
|
||||
of the vector.
|
||||
3 bytes DX Delta X. 1 bit of sign; 11 bits of integer;
|
||||
9 bits of fraction.
|
||||
2 bytes N The number of scan lines on which this vector
|
||||
is visible.
|
||||
2 bytes W The column width of each scan-line.
|
||||
|
||||
The XGP service must be presented with vectors sorted by
|
||||
ascendending values of Y0. If the vectors are not sorted, the
|
||||
output will be wrong.
|
||||
|
||||
The escape significance of codes 5 through 10, 13, and 16 through
|
||||
37 is not defined at the present time but reserved for future use.
|
||||
|
||||
$
|
||||
|
||||
This file has been superceded by INFO; XGP >
|
||||
|
||||
Reference in New Issue
Block a user