Loren is a good friend of mine, and he sent this to me some time ago.


PRPORT.DOC	10-MAR-2002


                       PARALLEL PRINTER PORT


                         IBM PC REGISTERS

CENTRONICS            STATUS         CONTROL                 CENTRONICS
                      (LPT+1)        (LPT+2)
                      -------        -------
11          |\       |       |      |       |
-- BUSY ----|  >o----|7      |      |    7-5|--- NC 
            |/       |       |      |       | 
10                   |       |      |       |
-- /ACK -------------|6      |      |       |      |\ 
                     |       |      |      4|------|  >o---- /IRQ_EN  (IRQ7)
12                   |       |      |       |      |/ 
-- PE ---------------|5      |      |       |
                     |       |      |       |      |\ 
13                   |       |      |      3|------|  >o---- /SLCT IN  36 
-- SLCT -------------|4      |      |       |      |/ 
                     |       |      |       | 
32                   |       |      |       | 
-- /ERROR -----------|3      |      |      2|--------------- /INIT     31 
                     |       |      |       |  
                     |       |      |       | 
                  ---|2      |      |       |      |\  
                     |       |      |      1|------|  >o---- /AUTOFEED 14 
                     |       |      |       |      |/ 
                  ---|1      |      |       | 
                     |       |      |       |      |\ 
                     |       |      |      0|------|  >o---- /STROBE    1 
                  ---|0      |      |       |      |/ 
                     |       |      |       |
                      -------        -------


LPT = 378h, 278h, etc.

van Gilluwe's "The Undocumented PC" incorrectly states that the /ERROR input is inverted (a second time). Axelson's "Parallel Port Complete" and Sam's "Computerfacts" are correct. Eggebrecht's "Interfacing to the IBM PC" 2nd Edition is so riddled with errors that it cannot be taken seriously.

BIOS interrupt 17h returns printer status by reading the contents of the above status register and inverting bits 3 and 6. In other words, when the BIOS shows bit 3 set (=1) there is an error. (This is verified by the BIOS listings in IBM's "Technical Reference Personal Computer AT").

Ralf Brown's Interrupt List (release 61) says that PRINTFIX from MS-DOS 5.0 hooks the status function (Int 17h, Func 02h) and always returns status AH=90h (SLCTed and not BUSY). My observation is that this problem exists in Windows 98 but not in DOS 5.0 nor in pure DOS under Win98. Win98 also ruins the status returned by func 0 by permanently setting it to AH=10h.

-Loren Blaney