Subject: Re: interrupting parallel port lossage
To: None <bakul@netcom.com, kenh@cmf.nrl.navy.mil>
From: Bruce Evans <bde@zeta.org.au>
List: port-i386
Date: 03/23/1995 17:54:16
>The protocol is something like:

>1. wait for BUSY to be deasserted.
>2. write data byte
>3. after at least 500 ns, pulse *STROBE low for at least 500 ns
>4. Some time later the printer will pulse *ACK low for at least 5 us.
>   It will (or at least ought to) lower BUSY when *ACK goes high.

Some printers raise *ACK before lowering BUSY.  This isn't related to
the current problem, but causes very slow printing if the interrupt
handler gets control while BUSY is still low.

>May be you need to put *two* delays in lpintr()?

Yes, but sufficent outb() is often more than slow enough to guarantee
enough delay, while inb(0x84) is not guaranteed to be slow enough to
give enough delay.  The Linux driver has adjustable delays for
everything, but there are still problems, perhaps because some printers
don't meet the 500 nsec spec.

Bruce