Trailing-Edge
-
PDP-10 Archives
-
mit_emacs_170_teco_1220
-
info/xgp.info
There are no other files named xgp.info in the archive.
-*-Text-*-
File: XGP Node: Top Up: (DIR)
The XGP spooling system allows queueing to the Xerox Graphics Printer.
It is also possible to see a list of all of the pending requests.
* Menu:
* Normal:: The simplest way to queue a request
* Status:: Displaying the queue status: XGP^F
* Switches:: Options available in printing the file
* Edit:: Input editing commands
* Console:: XGP console commands for controlling XGPSPL
* Priority:: XGP unspooling priority algorithm explanation
* Files:: XGP commands that go in files to be printed
* Scan:: The format of ;SCAN files
* Misc:: Notes on the XGP's size and resolution, and font files.
* XD:: XD is a program that will display XGP files on a TV
as they would appear on the XGP. Save time and paper.
File: XGP, Node: NORMAL, Previous: Top, Up: Top, Next: STATUS
The XGP queuer accepts file commands, which specify a file to be
printed and optionally a font to be used. The general form is:
:XGP [;file-command][file-specification][_ fonts-spec-list]
:XGP .INFO.;DDT ORDER_20FG
A file-command is any one of these:
;PRINT the default, which prints the content of a text file
with no extra headers or special handling.
;THESIS prints a text file like ;PRINT but places the re-
quest in the T queue, to be printed on Thesis forms.
Before printing the file, the XGP will ask for thesis
paper to be mounted on it.
If you want to use Thesis paper, this is the way
to do it. *Note Thesis: Console
;LIST prints a text file with default header (time, date,
page number appear on every page).
;PRIORI prints a text file with high priority. This will force
the file to be printed next by the XGP spooler regardless
of other priority considerations. Only ONE request may
be in the high priority queue at a time.
This is intended only for critical queues which must be
printed immediately. Using this mode without a good
reason is considered to be anti-social.
;PLOT prints plot-file of coordinate positions.
;SAMPLE uses the file name as a font file
and prints a sample showing what all the
characters of the font look like, as well as
some examples of typical text.
;SCAN print a "scan" (bit-map) file.
Only one file may be explicitly specified in a file command.
_ fonts-specification
Any number of font names or file-specifications delimited
by commas that define the fonts to be used. Optional.
file-specification
The normal ITS file name, which may be a text-file, plot-file,
or scan-file. <device> defaults to local DSK: (i.e. if you are
on MC, <device> defaults to MC:), <sname> defaults to your
<msname> (i.e. the default sname for the job).
The second filename defaults to XGP if such a file exists;
otherwise, it defaults to >. For ;PLOT and ;SCAN the default
is PLT or SCN instead.
In general a file is printed as specified by the file-command using
the fonts-specification.
This command can be used like a file command:
;CANCEL qin cancels the request if it has not already started
printing. The qin may be obtained via XGP^F
File: XGP, Node: STATUS, Previous: NORMAL, Up: Top, Next: Switches
Status of XGP queue
The XGP^F command to DDT lists the status of the XGP queue. The index
number is the QIN(Queue Identification Number) of each request.
The QIN may be interpreted as follows:
high order char (T, 1, 2 OR 3) --> queue priority class.
T is for ;THESIS requests, and 1, 2, and 3
refer to successively lower priority classes.
low order digits --> position of the request in that queue.
The requests are listed in their printing order within their queue
priority class, and each priority class is listed in its priority
order. XGP^F also reports the physical status of the XGP, indicates
which request is printing currently, indicates what the current next
queue request is (normally, it will be printed next, unless a higher
priority request comes in ahead of it), and if a high priority request
is in the queues.
File: XGP, Node: SWITCHES, Previous: Status, Up: Top, Next: EDIT
Switches and Modifier Commands
There are many parameters in the XGP printing process which affect
how a file is printed. These can be specified in :XGP with switches,
which are included in with the filename, or, if not using JCL, with
modifier commands (an older, less obvious mechanism).
The syntax of a switch is "/" followed by the switch name, or
followed by a ":" and the argument of the command. The argument, or
the switch name if there is no argument, is terminated by a space,
slash, "_", or the end of the line. Examples:
FOO BAR/SKIP:10_20FG
UGH BLETCH_25FG,30VR/DELETE
FOO SCN/SCAN (or just FOO/SCAN)
Here is a list of switches. For switches which take arguments,
the default value of the parameter (the value used if the switch is
NOT specified) appears in brackets.
/AUTCUT:n [1] If n is nonzero, automatically cut between pages
/BOTMAR:n [124] Use n points of bottom margin
/DELETE or /D Delete the text file after printing
/FFCUT:n [0] If n is nonzero, cut only on form feeds
/LFTMAR:n [200] Use n points of left margin.
Note that there is no right margin.
/LIST or /L Print text file with default header (time, date, page
number)
/LSP:n [31] Use n points per line (includes font height and points
between lines)
/PLOT Treat this file as a plotter file and plot it.
/PRIORITY Give this queue request high priority
/RESET Reset value of commands to default. Shouldn't be needed.
/ROTATE Rotate bit map of points that are converted into scan
line
/SAMPLE Assume this file is a font, and print a sample of it.
/SCAN Use this file as a bit-map drawing.
/SIZE:n [11] Use page size of n inches
/SKIP:n [0] Skip n pages before printing
/SNDFNT Send font to PDP-11
/SQUISH Purge useless characters from font
/TEST Test XGP by sending a CONTROL-C and forcing the buffer
/THESIS Prints the text-file like /PRINT but places the
request in the T queue, to be printed on Thesis forms.
*Note Thesis: Console, for how the XGP spooler handles
requests to print on thesis paper.
/TOPMAR:n [128] Use n points of top margin
/TXTCMD:n [-1] If n is nonzero, read specification commands from text
file
/VSP:n [6] Use n points between lines.
What this really means is that n is added to the
height of font 0 to get the value of the LSP
parameter. Whether this is winning, I'm not certain.
/X0:n [1100] Use n as initial x-coordinate
/Y0:n [-180] Use n as initial y-coordinate
Another way to specify parameters is with modifier commands.
A modifier command is a line which starts with a semicolon, just
as a file command does; the distinction is based on which command you
use. The syntax of a modifier command is ";" followed by the command
name (the same as a switch name), followed optionally by a space and
an argument. Each modifier command takes its own line. Examples:
;SKIP 19
;DELETE
;SCAN
Each modifier command applies only to the very next file command,
after which all specifications are reset to their default settings.
Modifier commands are not followed by a prompt ("#"); only file
commands are. There is no way to give modifier commands in JCL;
you must use switches instead.
Note that ;LIST, ;PLOT, ;PRIORITY, ;SAMPLE, ;SCAN, ;THESIS are file
commands if followed by a filename; otherwise, they are modifier
commands, but with the same semantics, so that ;LIST FOO and ;LIST
<cr> FOO mean the same thing.
There are a couple of extra modifier commands that can't be given as
switches. This is because their arguments are long and complicated.
It is because of them that modifier commands still exist:
;HEADER text Use text as header.
;KSET font,font... Use the specified fonts for printing the file.
;KSUBSET font# bits bits bits bits
says which characters of that font are needed.
*Note KSUBSET: FILES.
File: XGP, Node: EDIT, Previous: Switches, Up: Top, Next: CONSOLE
Input Editing Commands
^C like CR, but XQUEUE commits suicide after this line
if no error is encountered.
^D flush entire input buffer
^H same as RUBOUT
^L re-display the buffer
^M terminate current line, and queue buffer if line was a file
command (also clear buffer)
^Q quote the next character in a file specification
^U kill currrent line
File: XGP, Node: CONSOLE, Previous: EDIT, Up: Top, Next: PRIORITY
XGP Console Messages and Questions
Requeue remained of file?
When a file is aborted from the XGP console with the ^G
command, the unspooler allows you to choose between
cancelling the request and delaying it. Type "Y" to
delay the request, "N" to cancel it.
Waiting for corrective action. Type any character to continue
When the XGP status lights are in their normal states
as marked next to them, and the PDP11 is running happily,
type any character on the XGP console to resume operation.
If the PDP11 was not running, you should follow the
procedure written on a sheet of paper taped to the PDP11
for reloading and restarting it.
Mount thesis forms in the XGP
Type any character when ready (^G to refuse)
When the spooler decides that it is time to print a request
for which /THESIS was specified (from the T queue), this
message is typed out. Install XGP paper and type a space to
print the thesis output. Or, if you have just queued some
non-thesis output, you can type ^G to say that you have not
changed the paper and non-thesis requests should be printed.
But if you type ^G and there are only thesis requests in the
queue, the spooler will just ask again for thesis paper.
If you do change the paper and type space, the XGP will print
/THESIS requests until there aren't any more in the queue.
Mount ordinary forms in the XGP
type any character when ready (^G to refuse)
After printing the last thesis paper request, when about to
print a file on normal paper, the XGP will type this message.
You should mount normal paper and type a space. If you wish
instead to have additional files printed on thesis paper,
queue them (with /THESIS) and type a ^G on the XGP console.
This says that you have NOT changed the paper and the T queue
should be checked again.
FOO AI - 23:01:40 03/25/77 1842 AI: COMMON; FOO XGP
is printed when the unspooler begins processing a queue file.
The last such message will normally show which queue entry
was being processed when lossage occurs.
XGP Console Commands
^G Current request stops printing. Asks whether to defer the
rest of it until later (the alternative is to cancel it).
^X Enter maintenance mode, in which commands are accepted from
the XGP console. It is antisocial to use this mode for per-
sonal usage since it disables spooling. ^X can be typed
while a request is printing. In that case, the request is not
aborted by the ^X. The ^X does not take effect until after
the request is finished. To abort a request and enter
maintenance mode, type ^X and then ^G. ^X can also be typed
when the unspooler is asking a question; it will have its
normal effect, but will NOT answer the question. So you
must follow it with a "Y" or "N". Similarly, ^X typed when
the unspooler is "waiting for corrective action" will
enter maintenance mode and not resume operation.
^X is not the thing to use for printing on thesis paper.
The /THESIS switch is for that.
Maintenance Mode Commands
;HELP Type list of commands on XGP console
;HEIGHT Type height of characters
;KILL Kill XGP spooler (for debugging purposes only)
;NLINES Type number of lines per page
;SHOW Type value of selected commands on the XGP console
;VERSE Type name and version number of queuer on XGP console
All file commands and specification commands may also be used.
Switches in filenames are not allowed, since they work in :XGP
by being converted to specification commands.
File: XGP, Node: PRIORITY, Previous: CONSOLE, Up: Top, Next: FILES
Priority Algorithm
Priority for queued requests is determined on the basis of file
size and user group.
Files larger than 30 blocks are put into queue 3, the lowest priority
queue; files between 5 blocks and 30 blocks are put into queue 2, and
files lower than 5 blocks go into queue 1. In addition, AI Lab
people never go into queue 2; an AI request that would normally go
into queue 2 goes into queue 1 instead.
The queues are unloaded with the numeric queues having absolute
priority over the thesis queue, although once thesis forms are mounted
all thesis requests are printed before reentering the numeric queues.
Queue 1 and queue 2 have absolute priority over queue 3. Queue 1 is
drained in preference to queue 2 by a factor of 5 to 1 iff the oldest
queue 2 request pending in the queues is older than the oldest queue 1
request. Otherwise, queue 1 has absolute priority over queue 2.
The user group priorities were implemented as a result of an administrative
decision. It is best for everybody concerned if people work within the
system instead of trying to defeat it; since under the current algorithm,
too many requests in queue 1 will simply end up degrading performance for
all users concerned. If a request is of sufficient importance to justify
higher priority than the system would otherwise assign it; then the
;PRIORITY option should be used.
File: XGP, Node: FILES, Previous: PRIORITY, Up: Top, Next: SCAN
Special XGP commands that you can put in a file to be printed
There are two types of commands that can go in files printed on the
XGP, in addition to ordinary text. First, there are
semicolon-commands like the XGP queueing program's options. Second,
there are the short sequences of characters used for font switching,
underlining, etc.
The first page of the file may contain "modifier commands", such as
";KSET" to specify the fonts, or ";VSP" to specify the vertical
spacing. *Note Modifiers: Switches, for a description of modifier
commands, the semicolon forms of switches. Each command must
be on a separate line, with the semicolon at the beginning of the line.
Unrecognized commands are ignored, in case the file simply happened to
contain lines starting with a semicolon. A nonempty line which does
not start with a semicolon indicates that there are no more commands.
Unless you specify otherwise, the semicolon commands will be printed
just like all the rest of the page. To avoid that, reserve the first
page for semicolon commands only, and include a ";SKIP 1" among them,
so that the first page will not be printed at all.
A command that might be useful in a text file is ;KSUBSET.
This command tells the XGP unspooler that only certain characters
of a certain font are actually needed. The same effect can be
obtained using ;SQUISH, automatically, but ;KSUBSET allows the
program generating the text file to do the squishing itself and
avoid wasting the XGP time. ;KSUBSET's syntax looks like this:
;KSUBSET <font #> <bits> <bits> <bits> <bits>
The font number is followed by a 128-bit bit stream, divided into
four groups of 32 bits each; each group s represented as an octal
number. The bits correspond to the ASCII characters, from ^@ through
rubout, in that order. A bit should be 1 to indicate that the
character is needed.
Once printing is under way, all characters except ^@, Rubout,
Backspace, Tab, Return, Linefeed and Formfeed are printed as defined
in the current font (or ignored, if not defined). ^@ is ignored.
Rubout starts an escape sequence (see below). Here is what the other
(formatting) characters do:
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
default Y position to the first line below the top of page margin on
the new page. The XGP 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.
Rubout is the "escape character" for command sequences which can go
anywhere in the file (as opposed to semicolon commands, which go only
at the beginning).
First of all, a rubout can be used to quote a character which
normally has some sort of special significance. The characters which
can be quoted include ^@ (normally ignored), Rubout (normally the
escape character), and Backspace, Tab, Return, Linefeed and Formfeed
(normally formatting characters. When quoted, they print whatever
character is in the selected font for them).
A rubout followed by ^A, ^B, ^C or ^D starts a special command sequence.
^A is known as "XGP Escape 1", ^B is "XGP Escape 2", ^C is "XGP Escape
3", and ^D is "XGP Escape 4". The meaning of Rubout followed by codes
5 through 10, 13, and 16 through 37, is undefined but reserved for
future use.
XGP ESCAPE 1 (177 001) causes the next 7 bits to be read as a
special operation code. The following codes are implemented:
0-17 Font select.
The code, 0 to 17, is taken as the font identification
number of the font to use.
17-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.
51 Variable width underline.
The next byte is the thickness in scan lines to use
for underscoring. The following byte specifies the
scan line to use for the top scan line of the underscoring
(same as XGP Underscore). Otherwise, this command is
the same as XGP Stop Underline.
52 Relative baseline adjust.
This command is like XGP Base-line adjust, except
that the following byte is interpreted as a signed
increment which is added to the previous value of
the baseline adjustment. This command can be used
repeatedly to arrive at an arbitrary absolute
baseline adjustment.
53 Relative XGP Underscore
Exactly like XGP Underscore, but the scan-line number
to underscore is relative to the adjusted baseline.
The first 7 bits are taken as the scan-line number on
which to underscore. It is taken as a 2's complement
increment to the adjusted base line. Zero is on the
adjusted baseline, positive bytes are down from it.
The next 14 bits are taken as the length of the
underscore.
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.
File: XGP, Node: SCAN, Previous: FILES, Up: Top, Next: MISC
Format for XGP SCN files:
Files consist of sequential lines on the XGP. Each line consists of
a header, specifying how long it is, which line it is to be printed
upon, and options such as specifying a cut and the end of file.
These two words of header are followed by the line in the format
required by the XGP interface.
The first PDP-11 word in each line is the number of PDP-11 WORDS
not bytes used for this scan line, including itself and the rest
of the header. For most PDP-10 programs this will be an
even number, resulting in an integer number of PDP-10 words.
The second PDP-11 word is the scan line upon which this line is to
be printed. It is allowable to have non-sequential lines. The
unspecified lines will be blank. If the line numbers are not
ordered, they will come out as close as possible together, and the
internal line count will be reset. This is not the recommended
mode of operation. The top line on a page is numbered 1. Line
specification which would result in pages longer than 36" are
treated as end-of-file, as is a line specification of zero.
Paper cutting may be specified by setting the sign of the second PDP-11
word. The rest of the buffer so marked will be ignored, and the paper
will be cut at the line number specified by the second PDP-11 word with
the sign bit cleared.
The paper will be automatically cut just before the top margin on
the page. The top margin will equal the value of the (setable)
parameter LFTMAR in the PDP-10 program.
PDP-11 words are stored in PDP-10 format in two 16 bit bytes,
left justified in the 36 bit word. It is required that the
remaining 4 right bits be clear.
The format of the XGP interface data fis as follows:
The data sent to the XGP is in the form of eight bit bytes. Due
to 10/11 numbering disagreement, the order of the bytes taken by
the interface is (in a PDP-10 word) Byte 2, Byte 1, Byte 4, Byte 3,
where the 8 bit bytes are numbered from the left. The byte
stream is interpreted in one of two (useful) modes. Image mode,
once entered, accepts bytes and sends them to the XGP until the end
of the XGP line is reached. There is no method of escaping from it.
It is entered (from command mode) by the byte sequence 0 , 2 . Run
length mode is entered from command mode by the sequence 0 , 0 ,
and accepts a count of the number of bits which are to be
(alternately) black or white. Initially, the color is white. If
a string of more than 377 dots which are white or black is
encountered, then you must output a 377, followed by a zero, to
switch back to the color in use, followed by the remainder.
Two sequential zeros will escape from run length encoding mode back
into command mode. From command mode,
The maximum allowable size for a line is 55. PDP-10 words, which
is enough to specify a line in image mode. The line should be
specified in image mode if the run length encoding of it would be
longer than this. Note that it is necessary to provide the trailing
zeros in image mode, as the interface will otherwise output garbage
for the remainder of the line.
File: XGP Node: MISC Previous: SCAN Up: Top
Scan Line
The XGP uses a scan line averaging 200 points per inch, and is con-
trolled to also produce 200 points per inch vertically. The scan
line extends over the entire eight and one-half inch wide paper sup-
plied on 2000 foot rools.
Font Files
Both MIT and CMU font formats are accepted. The file .INFO.;FED ORDER
describes the FED program, which creates the font files.
File: XGP Node: XD Up: (DIR)
Documentation for XD: XD 310, 7/15/76
XD is a program for editing files which are meant to be printed
on the XGP. XD inputs a file in XGP image format, such as the output of PUB
of TJ6, or any test file, and displays it on your TV terminal. It knows
about everything the XGP does, such as font specifications, which it gets
form the ;KSET command in the file.
The main problem in such a program is that the resolution of a TV
is much lower than that of the XGP. To deal with this problem, the program
has two modes. In the first of these, the normal mode, XD
keeps track of a window, whose position can be controlled by the user.
The window shows about one fifth of a page vertically, and one third of a
page horizontally. There are commands to move the page with respect to
the window.
In the "Mini-display" mode, the entire physical page is displayed
on the TV screen, compressed by a factor of 4 horizontally, and by 5
vertically. In theis mode the page is shown with very low resolution.
The dots are ORed together, so the mini-display gives a good idea of the
overall layout of the page.
Currently implemented commands are:
N Go to the next physical XGP page.
H Home the window to the upper left-hand corner of the screen.
C Center the window at the physical center of the page.
Q Quit.
R Redisplay the screen in normal mode.
M Mini-display. Redisplay the screen in low resolution mode.
nA Advance n pages ahead in the file. 1A is the same as N.
nP Display page n.
? Type a list of commands.
[ Move the page to the left.
] Move the page to the right.
\ Move the page up.
/ Move the page down.
The last four commands were chosen for their convenient physical location
on the keyboards of TV's, as they are in the DRAW program. These four
commands can be multiplied, also like the DRAW program. The multiplication
works as follows:
CTRL Multiply by 2
META Multiply by 4
TOP Multiply by 16
So CTRL-[ moves the page twice as far to the left, CTRL-TOP-/ moves it
16 times as far down, etc. Since this makes it easy to get lost, the H and C
commands can be used to get the window back on the page.
The page motion commands and the R command switch the program into
normal mode, and the M command switches it to display mode. The N,P, and A
commands do not affect the mode.
The XGP format file to be read in can be given as JCL, or the program
will ask for it.
As of now, it does not know about the ;SIZE command.
If you find a file which produces a bug, please :BUG XD about them,
explain the bug, and tell me where I can find an exact copy of the file
which produced it. Any bugs left in the program may take very specialized
conditions in order to show itself.
Please send any comments, suggestions, bugs, etc., to BUG-XD.