Category : Tutorials + Patches
Archive   : SPOOLER.ZIP
Filename : SPOOL.ART

 
Output of file : SPOOL.ART contained in archive : SPOOLER.ZIP
LIVING WITH DOS: PRINT SPOOLERS
by Barry Simon

Copyright (c) 1987, Capital PC User Group Inc.
This material may be republished only for internal use
by other not-for-profit user groups.

Posted on Compuserve with permission of CPCUG. May not be
reproduced without including the above copyright notice.

Published in the May 1987 issue of the Capital PC Monitor.


Interfacing your peripheral devices called I/O (for input/output)
is the slowest aspect of using your computer. In the March
Monitor, I discussed disk caches as a way to speed up disk access.
This month, we'll take a look at print spoolers. Depending on your
printer, printing a 20 page document can take anywhere from 5 to
20 minutes. If you are printing in graphics mode as you might
with a technical word processor or fancy printing program like
LePrint, the times are likely to be a multiple of these. It is
silly to tie up a powerful computer merely because your printer is
incapable of processing output at the rate that your application
can produce them. For this reason, I regard print spoolers as
among the most important productivity tools you can add to your
basic system. If your printing is only in text mode you will
benefit considerably even if you can only afford the memory for a
10K spooler.

In this month's article, I will discuss the things you should look for
in a print spooler and describe a sampling of the available programs.

Even if your main application programs have their own internal
spooler, a stand alone spooler may be a sensible program to use.
If you print from a word processor which has an internal spooler,
you will be able to continue using the word processor but unable
to exit and use another program.

If you have never used a spooler, you will be amazed the first
time that you do a screen dump at the DOS level. The
stately and slow procession of the cursor down the screen is
replaced by a blur.

For this review, the following print spoolers were evaluated:

o The print spooler provided by AST with its memory expansion boards;

o The print spooler provided by Intel with its AboveBoards;

o The print spooler provided by Quadram with its memory expansion
boards;

o JSPOOL, from Tall Tree Systems;

o MSPOOL2, a software program written by Rich Winkel;

o Personal Print Control, from IBM; and

o PrintQ, from Software Directions.

Before we look at the programs being reviewed, I think that it is
important to first briefly discuss PRINT.COM, the spooling program that
is included with DOS 3.x.


The DOS Print Command

MS DOS comes with a free spooling program called PRINT.COM. While
I have friends who use it, I have always found the performance
loss associated with it unacceptable. A good spooler should be
close to transparent. If you are only typing input in a word
processor or at the DOS level, you shouldn't even know that the
spooler is operating. With PRINT, I've always found a noticeable
slowdown especially at the DOS level. PRINT has a number of
parameters to play with but I've found that even by adjusting
these I am unable to find an acceptable setting. Another
disadvantage of PRINT is that it will only print disk files so it
can only be used with application programs that allow you to print
to disk and then only by the inconvenient method of exiting to DOS
to do the printing.

PRINT is slow in part because it is a true multi-tasking program
accessing disk files rather than a file in memory. While this
means that the RAM demands are small, it requires some
contortions on DOS' part. DOS is non-reentrant which, roughly
speaking, means that if it is in the middle of one task and you ask
it to do another, it will be confused (your system is likely
to crash) when it finishes the second task and returns to the
first. That is why a program like SideKick will refuse to come up when
you are scrolling a directory listing; instead, it just beeps at you.
If it did come up and you then tried to save a file to disk, DOS would
be badly fouled up.

Whenever you are at the DOS level, DOS is calling its service that
reads the keyboard. DOS has built in a special undocumented call to
allow PRINT to only do work at a safe time. It can be argued that the
most important function of PRINT.COM is that it has provided the
resident program developers willing to unassemble it, the necessary
hints to make resident programs that can safely call DOS services.


What to Look For

There are four things you should look for when evaluating a print
spooler:

o How transparent it is;

o What its memory demands are;

o How much control it gives you; and

o Whether it handles graphics properly.

Transparency to the user has several aspects. First, the program
should not be noticeable when you are merely typing. Of course,
there is no free lunch and you have got to expect some slowdown
for processor intensive tasks like compiling a program or
calculating a spreadsheet. All the programs under review met this
criterion. While you have to expect printing to be somewhat
slowed down if it is only being done as a background process,
you'd like that slowing to be as small as possible. On an AT, I
found all these programs acceptable. The most noticeable slowing
concerned the disk based spooler PrintQ, so much so that if you
use your printer very heavily, it may be only marginally
acceptable. Transparency also concerns what I'd call the tinker
factor. Does the program require you to often adjust parameters
to get it to run properly? PrintQ trades a remarkable amount of
control for a real tinker factor as I'll explain. All the other
programs have a totally acceptable level of tinkering required --
basically, very little.

Except for PrintQ, all these programs have a rather low overhead
(in the 1 to 12 K range). The main issue is what kind of memory
the program uses to store the material to be printed. As already
noted, PrintQ, and optionally JSPOOL, use disk space which has the
advantage of being able to handle multi-page graphics jobs; the
tradeoff is that it uses more processing overhead, even if the disk is
a RAM disk, and even more if accessing a physical disk. Two of the
programs, Personal Print Control and MSPOOL2, use conventional memory
as do several others as an option. As we'll see, this effectively
limits them to spooling text and not graphics. Finally, the AST, Intel
and Quadram print spoolers that only come with boards exploit extended
or EMS memory. This is the best situation as far as memory usage is
concerned, since spoolers represent a good use for memory expansion
cards. Table 1 summarizes the type of memory available and the
conventional memory usage of the control program.

The amount of control that these programs give you over printing
once spooling has begun is probably the most important
distinguishing factor. In particular, it may matter if the
control is only at the DOS level or is through a resident program
which can called up with the right hot key. What kind of control
can you hope for? First, you might want the power to flush the
buffer, that is, cancel all further printing from the spooler of
material that has already been sent to the spooler. You might
want to do this if, for example, you realize that you neglected to
turn on near letter quality printing for a job that really
requires it. Secondly, you might want to be able to pause
printing if, for example, your phone rings. Thirdly, you might
want to get a reading of how much empty space is left in the
buffer. Fourth, you might want the power to disable the buffer,
that is, to send material directly to the printer without the
intervention of the spooler. This may be necessary if some
program is incompatible with the spooler. The control can be more
involved as we'll discuss. This issue is so important, we'll
discuss it further below and summarize in Table 1.

Finally, there is the issue of printing graphics. For reasons
that are not entirely clear to me, not all programs are capable of
printing graphics properly. I tested each of the programs with Print
Shop and LePrint, a program which produces high quality print in a
variety of fonts on dot matrix printers by using graphics mode. Of the
print spoolers, only MSPOOL2 printed graphics improperly; you will have
to disable it whenever you want to print graphics. To print from
LePrint with JSPOOL, it was essential that its smart processing, to be
described later, be turned off.

You must keep in mind that the memory usage required for graphics
printing is enourmous. Text based printing involves 2 - 4K per page,
so it is practical to handle 10 page documents; even in conventional
memory and with a memory card, 50 page documents are possible. Let us
do the computation for a bit mapped page on a laser printer. It
requires one bit to describe each potential dot. The number of dots is
8 inches by 11 inches by 300 dots per inch squared. Taking into
account the fact that one byte can describe 8 dots, we come up with a
whopping 900K. For a nine pin printer, the figure is only about 160K
while for a 24 pin printer, it is in the 250 - 350K range. It is clear
that a spooler cannot handle long graphics printing jobs and that even
medium sized jobs require a disk based spooler like PrintQ and a hard
disk with megabytes of free space. When I say that a spooler can
handle such jobs, all I mean is that the spooler fills up and you then
wait for the printer. In fact, because of the overhead associated with
the spooler, you wait longer than if you had no spooler!


Spooler Control

Table 1 gives a listing of the control functions provided by each
program. I am fond of the Quadram spooler which gives you
resident control in a little box that pops up in the upper left
hand corner of the screen. It pops up in text or CGA graphics
mode (without mode change) but not in high resolution EGA modes.
You can load spoolers for more than one printer and choose the hot
key to be a pair of the four shifts. This choice of hot key is
limited but giving you any choice is the exception. The Intel spooler
only pops up on (thereby conflicting with PC Paintbrush's
Frieze progrm), Personal Print Control pops up on the two ordinary
shifts only, and PrintQ only on .

When it comes to control, Personal Print Control and PrintQ are of
special note. Personal Print Control pops up a window that lets
you move back the buffer pointer to characters already printed,
thereby letting you recover from a paper jam without reprinting
the whole job( at least with text mode). A separate window pops up
and lets you send printer codes to your printer, ahead of the
queue in the spooler. On balance, my favorite interface was that
of Personal Print Control; I only wish that it supported extended
or EMS memory. The control provided by PrintQ is extraordinary.
It treats each print job as a separate item and you can rearrange the
order of printing of any unprinted job. You can preassign
priority levels to jobs, and you can save individual jobs to disk for
later printing or to keep a record on disk. There are tradeoffs
for this power which make it less than ideal for some users; I
found that quite a bit of experimentation was necessary to prevent
it from splitting a single job into multiple jobs with certain
programs and experimentation with other factors was also needed.
In addition, its memory usage is inordinately large compared to
the other programs. Its spooling to disk is a mixed bag; there
does seem to be some performance degradation relative to memory
based spoolers, but you can use it for multi-page graphics jobs.

JSPOOL has an interesting feature but one that many users are
likely to ignore. While you can only send it commands directly at
the DOS level, you can also send it commands in the print stream.
If the character stream sent to the printer includes @#$, then the
next characters until a ; are a command. For example with an IBM
graphics compatible printer, the string

this is what @#$ C; compressed mode@#$ -C; looks like

would print only the middle in compressed print. Since this
checking must be turned off for graphics printing, it is likely to
be unwieldy if you do much graphics printing and, in any event, it
requires a hacker outlook to use it.


Summary

Unless you have no printer, you should definitely be using a print
spooler. Even a 10K spooler can make a big difference for printing in
text mode. For graphics printing, you'll need a much bigger spooler
which means either one of the disk based commercial spoolers or a
memory board and extended or EMS spooler. It is a shame that the
only spoolers of the later type that I know of are bundled with
memory boards and not available for separate purchase. From
questions I have seen posted on Compuserve, there is probably a
real market for such a program. Ideal in my opinion would be a
version of Personal Print Control that supports EMS and/or extended
memory.

The AST print spooler is published by AST Research, Irvine, CA,
(714) 863-1333. It is bundled with their memory expansion boards
and is not sold separately.

The Intel print spooler is published by Intel Corporation, PCEO
division, 5200 NE Elam Young Parkway, Hillsboro, OR 97124, (800)
538-3373. It is bundled with their AboveBoards and is not sold
separately.

The Quadram print spooler is published by Quadram, One Quad Way,
Norcross, GA 30093, (404) 923-6666. It is bundled with their
memory expansion boards and is not sold separately.

JSPOOL is published by Tall Tree Systems, 1120 San Antonio Road,
Palo Alto, CA 94303,(415) 964-1980. It is bundled with their
memory expansion boards but is sold separately as a package with
their enhanced copy program JET and their RAM disk for $50 or as a
single program for $20.

MSPOOL2 is a free software program by Rich Winkel available on
many BBSs.

Personal Print Control is published by IBM as part of the PDSW series,
Personally Developed Software, P.O. Box 3266, Wallingford, CT 06494,
(800) 426-7279. The suggested retail price is $29.95.

PrintQ is published by Software Directions, 1572 Sussex Turnpike,
Randolph, NJ 07869, (800) 346-7638. The suggested retail price is
$89.



AST Intel QUADRAM JSPOOL MSPOOL2 PPC PrintQ
-----------------------------------------------------
Type of Memory CEX CE CEX CJ(D) C C D
Memory Requirement 2K 11K 3K 5K 1K 12K 43K
Control DOS Res Res DOS DOS Res Res
Flush Buffer Yes Yes Yes Yes Yes Yes Yes
Pause Printing Yes Yes Yes Yes No Yes Yes
Disengage Buffer No No No No Yes Yes Yes
Reprint Material P No No No No Yes Yes
Multiple Copies No No No No No Yes Yes
Separate Jobs No No No No No No Yes
Send Control Codes Yes FF No Yes No Yes FF
Print Stream Codes No No No Yes No No No


Table 1. Summary of Print Spooler Features


Type of Memory: C=conventional
E=EMS
X=Extended
D=Disk
J=JRAM
Jspool allows you to spool to their RAMDISK only

Amount of memory for control program (conventional in K)
PrintQ with "color" support takes 55K

Control: DOS=Dos Level R=resident
Res=Resident

Remaining options are YES/NO, except for Reprint Material, where P denotes
reprint current page and Send Control Codes, where FF=form feed only



  3 Responses to “Category : Tutorials + Patches
Archive   : SPOOLER.ZIP
Filename : SPOOL.ART

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/