Ref: 13390003
Title: Slow Printing with the OS/2 Print Spooler
Date: 8/1/89

Copyright 3Com Corporation, 1991.  All rights reserved.

There have been reports of slow printing on parallel printers
attached to PC/ATs and compatibles.  Typically, the printer
prints several lines, pauses, prints several more lines, pauses,
etc.

These delays are caused by an error originally made in the
implementation of the IBM PC's printer port:  it does not raise
an interrupt when operations are completed, although the
specification required it.

The error did not show up under DOS because DOS device drivers
always polled the port to see if an operation had finished.
However, OS/2 device drivers were correctly written to the
specification.  They expect an interrupt to occur when operations
to the port are complete, so that the spooler will know to send
more data to the printer.  Typically, when the interrupt does not
occur after some period, the device drivers poll the port to see
if it is done.  The slow printing (about 30 characters per
second) is caused by the driver waiting, then polling, for an
interrupt that never comes.

Many IBM PC clones exhibit the problem, since their manufacturers
designed the printer port circuitry to match that of the IBM PC.
The error was also propagated to the IBM PC/AT and copied by
PC/AT clone manufacturers, including some 386 machines that claim
PC/AT compatibility.

To verify that your printouts are slow because of this problem,
do the following:

1.  Without changing anything in the PC-printer hardware
    combination, boot DOS on the PC.

2.  Copy a 6-8 page file to the suspected port (for example,
    LPT1) and time how long it takes to print.

3.  Boot OS/2 on the PC.

    Do not start a spooler.

4.  Copy the same file to the suspected port and time it.

    If it takes significantly longer, it is almost certain to be
    due to the port error.

You can also compare the performance of a card or computer that
does not have the error to that of the system with the problem.
This is a hit-or-miss approach because there is no official list
of machines or cards without the error.  However, if you swap a
card with a parallel port into the computer and it goes faster
with the same OS/2 and spooler, it is probably because the other
port has the bug.

To fix the problem, contact the hardware manufacturer for a fix.
It is unlikely that OS/2 device drivers will be fixed to support
this hardware error.  Or, find a card that has a printer port
that works correctly.
