Parallel port pinouts and registers
Name | Pin Number |
Pin type | Polarity | Register |
Register type |
Strobe | 1 | Out | - | Control 0 | RW |
Data 0 | 2 | Out | + | Data 0 | RW |
Data 1 | 3 | Out | + | Data 1 | RW |
Data 2 | 4 | Out | + | Data 2 | RW |
Data 3 | 5 | Out | + | Data 3 | RW |
Data 4 | 6 | Out | + | Data 4 | RW |
Data 5 | 7 | Out | + | Data 5 | RW |
Data 6 | 8 | Out | + | Data 6 | RW |
Data 7 | 9 | Out | + | Data 7 | RW |
Acknowledge | 10 | In | - | Status 6 | R |
Busy | 11 | In | + | Status 7 | R |
Paper End | 12 | In | + | Status 5 | R |
Select | 13 | In | + | Status 4 | R |
Auto Feed | 14 | Out | - | Control 1 | RW |
Error | 15 | In | - | Status 3 | R |
Initialize | 16 | Out | - | Control 2 | RW |
Select Input | 17 | Out | - | Control 3 | RW |
Ground | 18 | Power | N/A | N/A | N/A |
- Common base address used by parallel ports: 0x3BC, 0x378, 0x3BC. The
first port usually uses 0x378, but I have an old IBM PS/2 model 76s which uses
0x3BC instead.
- The parallel port uses 3 consecutive 8bit registers. The data register, the
status register, and the control register are located at base_addr,
base_addr+1, and base_addr+2 respectively.
- The original parallel port could drive 2.6mA. Newer ports may drive more, but
it is not garanteed.
- The control outputs usually are open collector with 4.7k pullups. Note
however that I have heard of ports which do not have pullups resistors.
Page written by Raphael Assenat <raph@raphnet.net>, using many information sources.