1
0
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:
Lars Brinkhoff
2018-12-06 10:08:57 +01:00
parent 140a706e09
commit ba438df2ac
2 changed files with 2 additions and 369 deletions

View File

@@ -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 >

View File

@@ -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 >