HP3000-L Archives

March 1995, Week 5

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Larry Byler <[log in to unmask]>
Reply To:
Larry Byler <[log in to unmask]>
Date:
Tue, 28 Mar 1995 21:16:00 GMT
Content-Type:
text/plain
Parts/Attachments:
text/plain (145 lines)
John Burke ([log in to unmask]) wrote:
: The "HP Extra!" insert to the February 1995 HP Advisor, HP3000
: Edition, contains an article by Dave Wilde, a product manager in
: CSY, about system printers after the demise of HP-IB.
 
[...article highlights snipped...]
 
: Some comments from my experience in converting from HP-IB to
: serial printing and from my reading of Dave Wilde's article:
 
[...opinions similarly snipped...]
 
: - we still need someone to compare the robustness of recovery of
:   SCSI-attached printers and LAN-attached printers to our old
:   familiar, and highly reliable, HP-IB -attached printers (any
:   HP-ers lurking who would like to take a shot at this?). If they
    ^^^^^^^^^^^^^^
:   are no better than serial, then it seems we are taking a giant
:   step backwards.
 
I guess John means me :-).  This is somewhat [LONG], so now you've been
warned :-).  Here's a very high-level look at recovery in general and
printer-dependent variations in particular.
 
First, my working definition of "recovery" in the spirit I think John
intends it (but correct me if I'm wrong, John).  Recovery, or what I
often refer to as "page level recovery", is the ability to restart
print output at a specified page correctly, without having to reprint
all preceding pages.  The MPE/iX spooler recognizes three recovery
situations:
o   A device power failure after printing page N completely.  Output
    should resume at page N+1 automatically with no user or operator
    intervention required.
o   A combination of spooler process SUSPEND and RESUME (and possibly
    RELEASE) commands which modify the starting page using the ;OFFSET
    keyword (or BACK n PAGES for the older RESUMESPOOL command).  When
    the file is next selected for printing, output should begin at the
    page specified by the user.
o   Any other interruption of printing anywhere but at the end of a
    copy (such as SPOOLER <ldev>; STOP or SPOOLF #Onnn;DEFER).  The
    last completely printed page is saved with the spool file.  The
    next time the file is selected, output resumes at the subsequent
    page.
 
Recovery can take many forms.  PC word-processing applications such as
MS Word for Windows "recover" by reformatting the user's work file but
discarding unwanted pages.  In MPE terms, this would correspond to
re-executing the user application that produced the original output.
Not an option, IMHO, so let's note it and move on.
 
This leaves recovery by the spooler.  To work well, any such recovery
algorithm needs co-operation from the printer unless you are prepared
to emulate the entire print engine in software (and even this has corner
cases you can't foresee -- I'll ignore those here).  This is because at
this point in the process (remember, the user application is no longer
around) the printer is the only element in the chain which *knows* what
a page is.
 
Which brings me finally to the HP family of printers.  The HP2680 was the
first printer to support page level recovery.  Then came the HP-IB family
of 256x printers.  Most recently we have the SCSI-connected HP5000/F100
and F135 printers.  The spooler and any of these printers, working
together, support page level recovery using a method we call "silent-
running".
 
Using silent-run techniques, the printer is sent a page number at which
actual printed output should start.  The spooler then retransmits output
from before that page, which the printer interprets and discards.  When
the output stream reaches the desired point, the printer automatically
exits its silent run mode and begins printing.  The spooler knows nothing
of this once it begins its data transmission.
 
All of the printers I listed above except the HP-IB 256x family can
restart actual printing at a specified page, but the spooler must always
start sending data from the beginning of the spool file.  This is because
the spooler always places the printer in a known state at the start of
the spool file, and the same data stream sent to the printer should leave
it in the proper state at the desired target page.  Silent running to
these printers can be fairly time-consuming if you are trying to recover
to (say) page 300 -- you must wait for the printer to accept and discard
the first 299 pages.
 
The HP-IB 256x family addressed this concern by introducing *checkpoints*.
At the end of each page, the printer takes a snapshot of its environment
and returns it to the spooler as an ordered checkpoint for that page.
The spooler archives the snapshot in the checkpoint file corresponding
to the spool file and the spooler process printing that spool file.
 
So if page 299 has been printed, the spooler has a checkpoint for it.  Now
if it is necessary to recover to page 300, all the spooler has to do is
retrieve this checkpoint, and send it to the printer, thereby re-estab-
lishing the state of the printer as of the end of page 299.  The spooler
can then start sending data at page 300 rather than from the beginning of
the spool file.
 
Reality is somewhat more complex than this, but that's the general idea.
You save the time you would otherwise need to silent run over the first
299 pages.
 
Even the 256x family has to silent-run from the beginning of the spool
file if its checkpoint information is too big for the checkpoint data
structure.  The most common example of this is a user-defined VFC image
that replaces the printer's default image.  The replacement image is part
of the printer's state, but does not fit in the checkpoint.
 
At long last we get to serial printers.  Remember, I wrote that successful
recovery requires co-operation from the printer.  Serial printers do not
co-operate.  They do not support silent-running, nor do they return
checkpoints.  So the choices here are:  Emulate the printer in software
or reprint the entire file.
 
When the native mode spooler was first released back in 1989-90, HP chose
to provide a limited emulation in its serial printer storage
manager.  This emulation supports the HP %200 series of carriage control
(CCTL) values, the HP default VFC image for the %300 series (which
includes a 6 line-per-inch, 66 line-per-page specification), and other
assorted CCTL codes (%60, %61, %53, %55, etc.).
 
This emulation is only invoked when silent running is required.  If the
requirement is to restart at page 200, the spooler sends data from the
beginning, the serial printer storage manager interprets the CCTL codes
according to the above specifications and discards the data, then *when
IT thinks it has reached the target page*, it begins sending data to the
printer.  Until then, no user data has been sent.
 
Note some of the obvious limitations of this method (incomplete list):
o   Paper sizes or line densities different from 66 or 6, respectively,
    will not recover correctly except in limited cases requiring careful
    attention.
o   User data which includes PCL sequences that affect printer operation
    is not sent to the printer if it falls within the silent run range.
 
One thing I should mention -- this thread started based on the lack of
HP-IB support on the new 9X9 series.  Page level recovery does not depend
on the HP-IB, but can work on any bi-directional communication link.
Even the checkpoint mechanisms of the 256x printers are embodied in the
CIPER protocol, which is independent of the hardware link.  But it's still
important to emphasize that MPE cannot do the recovery job by itself -- it
needs support in the printer.
 
I hope this helps explain some of the differences in recovery operation
among the various HP printers.
 
-Larry "MPE/iX Spoolers 'R' Us^H^HMe" Byler-

ATOM RSS1 RSS2