Printer port

              1
        3 2 1 0 9 8 7 6 5 4 3 2 1
    ---------------------------------
     \  o o o o o o o o o o o o o  /
       \ o o o o o o o o o o o o /
         -----------------------
                   2
         5 4 3 2 1 0 9 8 7 6 5 4

               DB-25 Female

IO adresses and IRQs;

LPT nrIO AddrIRQ
00x3787
10x2785

Or;

LPT nrIO AddrIRQ
00x3BC7
10x3787
20x2785

Printer ports on PCI cards may have other addresses and IRQs.

SPP

Standard Parallel Port.

Printer mode

Pre SPP.


Pin   Signal           Dir    Purpose

 1   -STROBE            ->    Control
 2    D0                ->    Data
 3    D1                ->    Data
 4    D2                ->    Data
 5    D3                ->    Data
 6    D4                ->    Data
 7    D5                ->    Data
 8    D6                ->    Data
 9    D7                ->    Data
10   -ACK              <-     Status
11    BUSY             <-     Status
12    PAPER END        <-     Status
13    SELECT           <-     Status

14   -AUTOFEED          ->    Control
15   -ERROR            <-     Status
16   -INIT PRINTER      ->    Control
17   -SELECT INPUT      ->    Control
18-25 GND

'-' means active low.

Control lines may be open collector / open drain, with or without pull-up resistors.

RegisterAddressBit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
DataBase76543210
StatusBase + 1-BusyAckPESelErr-IRQ
ControlBase + 2 EnBiDiEnIrq-SelinInitPr-AF-Strb

EnIrq = Enable IRQ Via Ack Line.
EnBiDi = Enable Bi-Directional Port. SPP and newer only!

'-' means inverted at connector.

Timing;


    Data     ------   -------------------   ----------
    0-7             X   Data valid        X
             ------   -------------------   ----------

   -Strobe   ------------           ------------------
                          \       /
                            -----

    Busy                        -----
                              /       \
             ----------------           --------------

   -Ack      -------------------------          ------
                                   \   \      /
                                     ---------

Nibble mode

This can be done with pre SPP stuff.


                       Dir

 1   -Strobe            ->   Set to '1'.
 2
 3
 4
 5
 6
 7
 8
 9
10    PtrClk           <-
11    PtrBusy          <-    Bit 3/7
12    AckDataReq       <-    Bit 2/6
13    Xflag            <-    Bit 1/5

14    HostBusy          ->   '0' when the PC receives, '1' when it sends.
15   -DataAvail        <-    Bit 0/4
16   -Init              ->   Set to '1'.
17    1284Active        ->
18-25 GND

Byte mode

Data register needs to be bidirectional / tristate (SPP and newer).


                       Dir

 1    HostClk           ->
 2    D0               <->
 3    D1               <->
 4    D2               <->
 5    D3               <->
 6    D4               <->
 7    D5               <->
 8    D6               <->
 9    D7               <->
10    PrtClk           <-
11    PtrBusy          <-
12    AckDataReq       <-
13    Xflag            <-

14    HostBusy          ->
15   -DataAvail        <-
16   -Init              ->
17    1284Active        ->
18-25 GND

EPP

Enhanced Parallel Port.


                       Dir

 1   -Write             ->
 2    D0               <->
 3    D1               <->
 4    D2               <->
 5    D3               <->
 6    D4               <->
 7    D5               <->
 8    D6               <->
 9    D7               <->
10   -Intr             <-
11   -Wait             <-
12    User Defined     <-
13    User Defined     <-

14   -Data Strobe       ->
15    User Defined     <-
16   -Init              ->
17   -Address Strobe    ->
18-25 GND

ECP

Extended Capabilities Port.


                       Dir

 1    HostClock         ->
 2    D0               <->
 3    D1               <->
 4    D2               <->
 5    D3               <->
 6    D4               <->
 7    D5               <->
 8    D6               <->
 9    D7               <->
10    Perif Clock      <-
11    Perif Ack        <-
12   -Ack Reverse      <-
13    X-Flag           <-

14    Host Ack          ->
15    Perif Request    <-
16   -Reverse Request   ->
17    1284 Active       ->
18-25 GND