The Parallel Port
The IBM Printer Adapter
The term parallel is in contrast to serial. The parallel port provides an 8-bit bidirectional data path, whereas a bidirectional serial connection typically uses a pair of wires, transferring one bit at a time.
The PC parallel port was typically used to interface with a printer, but over the years a number of other devices utilized the parallel port, from storage devices to sound generators. Hobbyists could use the parallel port to connect to breadboards and control various projects.
When connecting to a printer, a printer cable was typically used with a male DB-25 connector on one end and a Centronics connector on the other, named after the Centronics Data Computer Corporation.
The parallel port can be implemented entirely with off-the-shelf 74-series logic chips and a few discrete components. IBM sold a dedicated ISA card called the IBM Printer Adapter that provided a single parallel port. A parallel port was often included as a ‘bonus accessory’ on other cards, such as the Monochrome Display Adapter, various multifunction adapters, and several other third-party video cards.
At a Glance
| Item | Description |
|---|---|
| Typical LPT1 base address | 378h (or 3BCh on the MDA*) |
| Typical LPT2 base address | 278h |
| Data register | Base address + 0 |
| Status register | Base address + 1 |
| Control register | Base address + 2 |
| Interrupts | Usually IRQ7 for LPT1, IRQ5 for LPT2 |
| DMA | None |
Note
*There is no fixed address for LPT1, 2 and 3. Device names are assigned to ports discovered in the order
3BCh,378h,278h.
Registers
The Parallel Data Register
| Bits | Name | Description |
|---|---|---|
| 0:7 | DATA | Data byte |
The Parallel Status Register
| Bits | Name | Description |
|---|---|---|
| 0:2 | Unused | Unused |
| 3 | ERROR | 0: The printer has encountered an error condition. 1: The printer reports no current error condition. |
| 4 | SLCT | 0: The printer has not been selected (Printer offline) 1: The printer has been selected (Select/Online button pressed) |
| 5 | PE | 0: The printer reports it has paper. 1: The printer reports it is out of paper. |
| 6 | ACK | 0: The printer has acknowledged the last character and is ready to receive another. 1: The printer is processing (busy). |
| 7 | BUSY | 0: The printer is busy and cannot accept data. 1: The printer is not busy and can receive data. |
The Parallel Control Register
| Bits | Name | Description |
|---|---|---|
| 0 | STR | Data clock strobe to feed data into the printer. |
| 1 | ALF | 0: Do not line-feed automatically. 1: Line-feed automatically. |
| 2 | INIT | 0: Initialize the printer. 1: Do nothing. |
| 3 | SLCT_IN | 0: Leave printer unselected. 1: Select the printer. |
| 4 | IRQEN | 0: Disable interrupts. 1: Enable interrupts triggered by a rising edge of the pin. |
| 5:7 | Unused | Unused |
Datasheet
- (archive.org) IBM Printer Adapter
- (archive.org) IBM Serial/Parallel Adapter