Page Numbers: No
Heading: Not-on-first-page
Spruce Reference Manual -- OperationAugust 27, 1979
c Xerox Corporation 1979
XEROX
PALO ALTO RESEARCH CENTER
Computer Science Laboratory
August 27, 1979


ToSpruce Users and Installers

FromDan Swinehart

Subject
Spruce Reference Manual

Filed as[Maxc]<Spruce>SpruceManual.Press
This document describes the procedures for printing Press files using the Spruce printing service on an Alto II/Orbit/Printer configuration. It is also a reference manual for the operation and installation of the Spruce program. Charts summarizing these procedures appear in appendices.
Spruce Operations
Capabilities
The Spruce software is capable of printing a subset of Press format files. It will print characters, rectangles, and the Alto resolution bit map output from Draw and Markup. It will not print bit maps at other resolutions, objects, half-tones, etc. Spruce does implement the "only on copy" feature.
Spruce runs on Dovers and other Press printers. Recommended resolutions are in the range 300 to 384 bits/inch (most, if not all, current systems run at 384. See [Printing] for a fuller discussion of these options, and for details of Spruce configurations in Palo Alto.) Color pictures can be printed by treating each group of three Press pages as the three color separations (magenta, yellow, cyan) for a single piece of paper. The ability to print bit maps is limited, especially on Dover, by memory and bandwidth limitations.
Spruce will run in a stand alone mode, printing Press files that reside on the Spruce disk. However, its intended use is as a server, receiving and printing Press files using the EFTP protocol. See [Printing] for a complete description of methods for transmitting files to Spruce servers.
A Spruce system may be configured to run with either one or two Diablo Model 31 disk drives, or with one Model 31 and one T80 drive (yielding considerable performance and capacity improvements). The single-drive system has only limited font and spooling capacity.
Spruce and Fonts
Unlike earlier printers, fonts may not be sent to a Spruce system, but must already reside in its local storage. When Spruce cannot find a requested font, it substitutes one that seems to have similar attributes, reporting a substitution on the break page. The substitution may or may not be acceptable to the user. See [Printing] for a typical set of Spruce fonts.
The Break Page
The break page contains a region reserved for comments about the user’s Press file. Spruce inserts these to indicate that some font was not available, some entity could not be fully printed, etc. When there is a problem severe enough to suspend Press file processing, the user will be blessed with a lone break page containing the explanation. If the offending file does not even look like a Press file, the sender and file name will not be identified on the break page.
What To Do When it Crashes
If red lights are on on the printing machine, and Spruce is oscillating between a status report and a blank screen, do not touch the keyboard (except perhaps to disable printing -- see below). Arrange to get the offending condition cleared, and Spruce should continue normally.
If you find Spruce in Swat, or otherwise hopelessly lost, try to locate a Spruce maintenance person. Failing that, record the screen, and try <ctrl>P (proceed). The program should recover from the problem. If it does not (swats again, or does something really odd), boot the machine and restart Spruce.
Report all abnormal occurrances, hardware or software, in the nearby log book, if there is one. Otherwise, send a message to the appropriate authority. Please do not restart a Spruce server without submitting a report.
Important
If you have been using a printer system in stand alone mode, or for some other purpose, always return it to server operation before leaving it, unless something is broken.
The following sections describe the operator functions in both server and stand alone modes. Instructions for restarting Spruce are found in the stand alone section.
Spruce as a Server
To run Spruce as a server, be sure it is installed properly, then simply type:
Spruce ServerCR -- But be sure to read the Restarting section on the next page!
Commands
When Spruce is processing or printing a file, it must turn the display and keyboard off. Thus, it will only accept interactions with an operator when it is idle, or when it is receiving (spooling) a file from some remote user. You will be able to identify the interactive state because status entries for the last few documents to be handled will be visible on the screen.
There are only a few interactive Spruce server commands. Each is specified by typing one character. Some then require additional input.
Sstart/stop spoolingWhen Spruce is started, it is set to accept Press files from remote users. It is sometimes convenient to disable spooling activities for a while (perhaps in preparation for taking the system down.) This command toggles the "spooling switch", and tells you the new state. After you disable spooling, one more file might arrive.
Pstart/stop printingThis command toggles the "printing switch". Spruce is initially set to print files as they arrive. One should disable printing, for instance, in order to take the printer down for cleaning or other maintenance.
Ccheck queueThis prints identifying information for the last few Press files that have been received, along with their current status (pending, in progress, printed, etc.) This is a good first-level check that Spruce is up and operating normally.
Vverify queuePerforms the "check queue" operation, pausing after each line for a one-character confirmation. Type P to finish the list without further pausing.
RreasonOne must next type a line, terminated by carriage return, that will be sent with other status to remote users when spooling is disabled. This allows one to specify the reason that Spruce is unavailable.
Mmodify queueThis command provides a limited repertoire of operations for reprinting documents, aborting troublesome ones, etc. See the Queue Modification section on the next page.
QquitCauses Spruce to finish and return to the executive.
Status reporting
Spruce displays the remote host identifier, file name, sender, and internal numeric identifier for each Press file up to three times during its stay: when the file has been successfully received, when it has been printed, and when its contents have been overwritten by a newly arrived Press file. This information disappears when processing of the next file begins.
Spruce will also display a message when a problem is detected in the Press file or in program or printer operation. When the printer is in trouble, the system will cycle between a display-off state when it is checking to see if the problem has vanished, and a display-on state when it is reporting the problem. If you think the problem will take a while to fix, try to catch Spruce in the display on state and disable printing (and possibly spooling).
If Spruce requests that you notify maintenance personnel, please do so.
Special Server Functions
Queue Modification
This facility is currently in a particularly primitive state. Using it, one can request that a document which is still available but has already been printed be reprinted , or that a document that is scheduled for printing (or is already in progress) be marked printed (and thus be effectively aborted.) These activities apply only to the files that appear in response to the C (check queue) command, usually the last 25 or so that have been received.
To use this function, type "M" (for "modify queue".) The currently-queued files will be presented, one at a time. Respond with:
RTo cause the document to be reprinted.
ATo abort the printing of the document.
PTo complete the file listing without modifying any more files.
CRTo advance to the next file.
If the printing of documents is enabled when the R option is chosen, the selected document will be reprinted right away. Therefore, it is wise to disable printing (see the P command, above) before using the M command.
Interrupting the Printer
Although the keyboard functions are not available when the printing subsystem is running (the screen is blank except for a cursor), one may attract the attention of the spooling subsystem by pressing the ESC key. You may have to do this several times, especially if the printer itself is running. When the status legends appear, indicating a return to the spooler, you should toggle the printing switch (using the P command) to inhibit the return to the printer, which will otherwise occur within 10 seconds or so.
Restarting
Spruce saves sufficient information about the files it has queued for printing that it can be restarted, in most instances, without losing any files. This is true whether system operation terminated due to power failure, a crash in the printer or spooler subsystem from which manual continuation does not seem possible, or in response to the Q (quit) command. Restarting after the use of Spruce/I (see installation section) to change installation options does not currently work, although it is (errantly) permitted. Be sure to start over, using "Spruce Server", whenever you have performed any installation activity.
To invoke the restart action from the Alto Executive, simply type
Spruce RestartCR
Spruce should quickly bring up its status display. It will have both spooling and printing inhibited, so that you can use the M (modify queue) command to adjust the queue (perhaps to flush an offending file or to flush files that have been printed but not recorded.) Be sure to toggle both the spooling and printing indications before leaving the site. If this process does not seem to work well, quit or boot and do a cold start (via "Spruce Server".)
Spruce as a Stand Alone Printer
The Print Command
The basic command to Spruce is "Print," followed by a file name. Thus
>Spruce print memo-1.press
will invoke the process of printing the file "memo-1.press." The Spruce command words (e.g., "print" above) can be abbreviated as long as they remain unambiguous.
If you wish to override the number of copies specified in the Press file (usually 1), append the clause "copies n" to the end of the command:
>Spruce print memo-1.press copies 3
If you wish to print certain pages selectively, you may append the clause "page n" or "pages n to m" to the command:
>Spruce print memo-1.press page 2
>Spruce print memo-1.press pages 3 to 4
Spruce takes some time to format the files properly and begin printing. If you simply wish additional copies of a file you have just printed, you may avoid the formatting delay by using the "reprint" clause in place of the "print file" clause:
>Spruce reprint page 2
>Spruce repr cop 2
"Wrong" pages. If Spruce prints your document, but it doesn’t seem to have the right things on it, it may be that the Press file was trivially invalid. You can run Spruce again, with the "verbose" mode enabled, and see if it indicates any problems. Use the /V switch:
>Spruce/V pri memo-1.press
In some configurations, "verbose" mode is the default. The /V switch will disable it.
Illegal Press files. If Spruce complains that your file is illegal, and you suspect the method used to generate the file, the program ReadPress (see the bibliography), which prints on your screen a quasi-intelligible dump of the Press file, may be helpful in tracking down the problem.
>ReadPress memo-1.press
will bless you with more information that you can handle!
Complete Command Description

The repertoire of Spruce commands offers several options when a file is printed. The format of the command line is:
>Spruce/switches option <arg> option <arg> ...
The "switches" govern the overall operation of Spruce; the "options" label the specific options being used and can be abbreviated as long as they remain unambiguous; most of the options take arguments.
Options:
ServerThis command may appear alone, or in conjunction with a stand-alone command. It starts Spruce in server mode. To run Spruce as a server, type "Spruce serverCR" to the executive. See the previous section for subsequent operation. If another command appears, it will be obeyed before entering server mode.
RestartType "Spruce Restart" to attempt a recovery from catastrophic error or other spooler termination. Then adjust the queue as necessary and enable spooling and printing. If this fails, perform a cold start using the Server command.
PrintThis is the main command to print a Press file. The argument is the name of the file to be printed. Example: "Spruce print memo-1.press".
CopiesThe argument is a number, the number of copies of the document that should be printed. Default is "Copies 1."
PagesThis option governs which pages of a file will be printed. Standard use is with the "to" option: "Spruce print memo-1.press pages 2 to 3". If the page range does not match the page range of the Press file, the largest overlap of the two ranges is printed. Default is "pages 1 to 99999."
RePrintThe file most recently printed is re-printed, avoiding the scan-conversion processes. The "Copies" option applies to reprinting. Not available in server mode.
XOffsetThis option allows the page to be displaced in the X direction on the page, by an amount given by the argument (in inches). This feature may be disabled.
YOffsetThis is analogous to XOffset, but governs vertical displacement.
ResolutionThis option allows a user to override the default setting of the resolution of the output device being used. Be warned that changing resolution will usually result in poor font matches from the font dictionary. The argument is the resolution, measured in bits per inch.
PowerOnUsed to set the printer’s internal clocks and to stablilize them before running the printer. This function is usually performed adequately each time a document is printed, but it can be used alone to be sure things are set right before performing diagnostic tests, etc.
PowerOffNot applicable to current Spruce printers.
There are two global switches that alter the use of Spruce: /V (verbose) gives better error messages. /D is equivalent to the Debug 32 (usually -- don’t really print) option.
DebugThe argument is a decimal number comprising the sum of several option codes. These are for use by Spruce maintenance people only:
1The printing program (Sprint) pauses just before processing and printing a file. It pauses by entering Swat.
2File processing and printing is inhibited, but the printing program (Sprint) is brought in.
4Any printing program (Sprint) error condition is reported via Swat, before standard error recovery procedures are invoked. This function is inhibited if the code 512 (don’t Swat) is also present.
8The printing program will not monitor the Ethernet for spooling requests. It will therefore be totally unavailable while processing and printing files. It will not even respond to simple status requests.
16The printing program will monitor the Ethernet (unless code 8 is also requested), and will respond to status requests, but it will not suspend processing or printing to accept additional files.
32The printing program will process files, but will only pretend to print them. This is useful when one’s Alto can only pretend to have a printer.
64The printing program will call Swat when it has swapped in the processing overlay, but has not yet started processing.
128The printing program will call Swat when it has swapped in the printing overlay, but has not yet started printing.
256Spruce (the spooling program) pauses via Swat whenever it regains control, either on completion of printing several files, or due to some error detected by Sprint.
512The printing program, Sprint, will never invoke Swat due to an error it detects. Instead, for otherwise fatal errors it will terminate printing the file and report the problem to the spooler. That file being processed will not be retried. System errors may still, at this writing, invoke Swat.
1024 Spruce will not invoke Swat. This feature is not implemented, so it is fortunate that Swat is rarely invoked in Spruce.