[comp.sys.ibm.pc] Interrupt driver for parallel printer

paul@aucs.UUCP (06/11/87)

I am having difficulty in getting an interrupt driven parallel printer
driver to work (the way I think it should).  I've done all the necessary
initialization and changing of interrupt vectors, but when a character is
output (via the output/strobe toggle sequence, no interrupt occurs to
indicate that the printer is ready to accept another character.  The
only time the interrupt routine seems to get called is when I take the
printer off/on line, which is useless for the most part.  I want to
avoid polling the printer as much as possible.

The XT Technical Reference Manual says that an interrupt occurs when
pin 10 (busy) transitions high to low.  As far as my understanding
of a parallel printer adapter, this should happen after every character
is output.  I have written an interrupt driven routine for a QX-10 and
it worked as I would suspect.

I could go into more details, but I leave it as is for now.  If anybody
has any information about using interrupts with the parallel printer
adapter, please drop me a line.  I'll summarize for the net if I get
enough responses.


Paul H. Steele      UUCP:      {seismo|watmath|utai|garfield}!dalcs!aucs!Paul
Acadia University   BITNET:    {Paul|phs}@Acadia
Wolfville, NS       Internet:  {Paul|phs}%Acadia.BITNET@WISCVM.WISC.EDU
CANADA  B0P 1X0     PHONEnet:  (902) 542-2201x587

markg@amdcad.AMD.COM (Mark Gorlinsky) (06/15/87)

In article <371@aucs.UUCP> paul@aucs.UUCP (Paul Steele) writes:
>I am having difficulty in getting an interrupt driven parallel printer
>driver to work (the way I think it should).  I've done all the necessary
>
>The XT Technical Reference Manual says that an interrupt occurs when
>pin 10 (busy) transitions high to low.  As far as my understanding
>of a parallel printer adapter, this should happen after every character
>is output.  I have written an interrupt driven routine for a QX-10 and
>it worked as I would suspect.
>
>Paul H. Steele      UUCP:      {seismo|watmath|utai|garfield}!dalcs!aucs!Paul

Your problem lies not with you, but with the basic hardware flaws of the 
IBM PC.  It is impossible to generate a true interrupt driven parallel port.
This is because the ACK signal coming back from the printer is tied directly
to the interrupt controller.  Unfortunately the timing of this signal, as
defined for standard centronics interface, is too fast to be acknowledge by
the controller! It is uncanny how one simple flip-flop inserted between the
signal and the controller could have eliminated the problem.  BTW, all clones
out there never bothered to correct the problem, they just copied IBM line
for line.


-- 
 Mark Gorlinsky - AMD Processor Products Division/APPS SQA
 UUCP: {ucbvax,decwrl,allegra}!amdcad!markg or amdcad!phil@decwrl.dec.com
 AT&T: (408) 982-7811
 DISCLAIMER: What's mine is mine, not my employers.