Jump to content

Bidirectional parallel port

From Alfawiki
Adapted from the English Wikipedia article Bidirectional parallel port, available under CC BY-SA 4.0Updated 9 August 2025
Centronics
IndustryComputer peripherals
Founded1970
FounderAn Wang, Robert Howard, Prentice Robinson
ProductsDot matrix printers, parallel port interface

In the realm of computing, a parallel port refers to an interface commonly found on early personal computers and other systems for attaching peripheral devices. It enables the simultaneous transmission of multiple bits (parallel communication) through several data lines within cables and connectors, which makes these ports physically larger than serial ports that transfer data bits one after another.

The phrase is most frequently linked to the printer port or Centronics port, which became an industry de facto standard on personal computers from the 1970s until the early 2000s. This interface was formalized as IEEE 1284 in the late 1990s, introducing bi-directional variants including the Enhanced Parallel Port (EPP) and Extended Capability Port (ECP). Over time, parallel ports have been largely supplanted by USB connections and network printing solutions via Ethernet and Wi-Fi.

Initially named the Parallel Printer Adapter on IBM PC-compatible machines, it was primarily intended for dot matrix printers utilizing IBM's eight-bit extended ASCII character encoding but also supported various other peripherals. Eventually, graphical printers and a range of devices adopted this interface to communicate with computers.

Centronics

An Wang, Robert Howard, and Prentice Robinson engineered an affordable dot matrix printer at Centronics, a branch of Wang Laboratories focused on computer terminals. The printer employed a vertical array of seven metal pins driven by solenoids to produce characters as dot matrices. Early versions rendered glyphs seven dots high by five wide, while the "A" series featured 9-pin print heads creating glyphs nine by seven dots.

To send ASCII information, Centronics implemented a parallel port interface that presented the entire character simultaneously over eight data pins along with control lines. Wang repurposed a surplus stock of 20,000 Amphenol 36-pin micro ribbon connectors for this application, although only 21 pins were actively used. This connector became known as the Centronics connector.

The Model 101 printer, introduced in 1970, utilized this interface. The host computer transmitted ASCII characters via seven data pins and indicated readiness through a STROBE signal line. The printer replied with a BUSY line while printing to coordinate data flow effectively. Additional control signals handled operations such as line feeds and carriage returns.

While the printer-side connection became an industry de facto standard, manufacturers often differed in host-side connectors, necessitating various cable types. For example, NCR Corporation employed 36-pin micro ribbon connectors on both ends; early VAX machines used DC-37 connectors; Texas Instruments opted for 25-pin edge connectors; and Data General chose 50-pin micro ribbon connectors. When IBM incorporated the parallel interface into the IBM Personal Computer, it standardized the PC end with a DB-25F connector, resulting in the well-known DB25-to-36-pin cable arrangement.

The Centronics port could theoretically handle data rates up to 75,000 characters per second—significantly faster than typical printer speeds of about 160 cps—leading to considerable idle time on the port. To improve throughput, printers incorporated internal buffers, allowing data bursts to be sent rapidly and freeing host resources during printing. Buffered printing also supported bidirectional communication across multiple lines, effectively doubling performance in models like the Centronics 102 and 308 without requiring hardware modifications.

IBM

In 1981, IBM introduced the IBM Personal Computer, which incorporated a variant of the Centronics interface—initially, only printers bearing the IBM logo (essentially rebranded Epson models) were compatible. IBM established a standard parallel cable configuration featuring a DB25F connector on the PC end and a 36-pin Centronics connector on the printer end. Soon after, manufacturers began producing printers compatible with both the traditional Centronics interface and IBM’s specific implementation.

The initial IBM parallel printer adapter offered limited bidirectional communication, including 8 data output lines and 4 data input lines, enabling the port to function beyond simple printing tasks. Despite this capability, its usage was minimal and subsequently removed in later hardware versions. In 1987, IBM reinstated bidirectional support with the launch of the IBM PS/2 series, providing compatibility for software that did not originally support bidirectional ports.

Bi-Tronics

As printing technologies advanced, new mechanisms demanded more comprehensive status feedback than existing ports could deliver. To meet this need, HP introduced the Bi-Tronics system with their LaserJet 4Si in April 1993. This approach utilized four status pins—ERROR, SELECT, PE, and BUSY—to transmit a nibble, effectively sending an 8-bit value in two stages. Activation of Bi-Tronics (now referred to as nibble mode) occurred by pulling the SELECT line high and transferring data when AUTOFEED transitioned low.

Improved handshaking protocols increased data throughput to approximately 400,000 characters per second toward the printer and around 50,000 characters per second back to the host. A notable benefit of Bi-Tronics was its software-driven operation on standard hardware without modifications, leveraging existing printer-to-host status lines for data transmission.

EPP and ECP

The emergence of devices such as scanners and multifunction printers necessitated higher performance levels than those offered by Bi-Tronics or IBM backchannels. Two standards gained prominence: Enhanced Parallel Port (EPP), developed by Zenith Electronics, which achieved speeds up to 2 MB/s by refining handshaking methods; and Extended Capability Port (ECP), a new design supporting direct memory access (DMA) via ISA and incorporating run-length encoding for data compression, enabling bidirectional transfer rates up to 2.5 MB/s.

These technologies were unified within the IEEE 1284 standard. Released in 1994, this specification included original Centronics mode ("compatibility mode"), nibble and byte modes, alongside enhanced handshaking—modifying BUSY signaling from toggling on any data line change to toggling per received character, thereby minimizing interruptions. Subsequent updates in 1997 standardized printer status codes, and by 2000, EPP and ECP modes were fully integrated along with specified connector and cable types as well as support for daisy chaining up to eight devices from a single port.

Certain host systems or print servers may emit strobe signals at low voltages or with rapid toggling frequencies, resulting in printing errors such as missed or duplicated characters. Some printers include switches or configurable settings to adjust busy signaling behavior; others may require specialized handshake adapters.

Dataproducts

Dataproducts implemented a unique parallel interface featuring a DC-37 connector on the host side paired with either a 50-pin DD-50 or M-50 ("Winchester") connector on the printer side. Their design supported short-distance connections up to 50 feet and long-distance differential signaling extending as far as 500 feet. This interface was widely adopted in mainframe environments throughout the 1990s, with many printer manufacturers offering Dataproducts interfaces as optional features.

Over time, parallel ports accommodated a variety of devices—primarily unidirectional peripherals receiving data from PCs. Nevertheless, some devices like Zip drives operated bidirectionally, as did printers that began transmitting status information back to their host systems.

Historical applications

Prior to the advent of USB, the parallel port accommodated a variety of peripherals beyond just printers. Early uses included dongles serving as hardware-based software protection keys. It also supported optical disc drives such as CD readers and writers, Zip drives, scanners, tape drives, external modems, as well as gaming devices like gamepads and joysticks. Certain early portable MP3 players transferred audio files through the parallel interface. Additionally, adapters allowed connection of SCSI equipment via parallel ports. Other hardware like EPROM programmers and control units also utilized this interface.

Port configurations

During the 1980s and 1990s, most PC-compatible computers were equipped with one to three parallel ports, commonly assigned these I/O addresses and IRQ lines:

  • Logical parallel port 1: I/O range 0x3BC–0x3BF, IRQ 7 (typically integrated on monochrome display adapters)
  • Logical parallel port 2: I/O range 0x378–0x37F, IRQ 7 (found on dedicated expansion cards or onboard controllers)
  • Logical parallel port 3: I/O range 0x278–0x27F, IRQ 5 (also on dedicated cards or onboard controllers)

When a port at 0x3BC is absent, the BIOS designates the port at 0x378 as logical port 1 and the one at 0x278 as logical port 2. Despite distinct I/O addresses, printer ports sometimes share interrupt lines, which restricts interrupt-driven operations to a single port at a time. Some BIOS versions offer support for a fourth printer port with various base addresses; however, these often require custom drivers due to address conflicts with other devices such as graphics adapters.

In DR-DOS version 7.02, users can customize BIOS port assignments using directives like LPT1, LPT2, LPT3, and optionally LPT4 within the CONFIG.SYS configuration file.

Port access

On DOS platforms, logical parallel ports recognized by the BIOS are mapped to device identifiers such as LPT1, LPT2, and LPT3 corresponding to logical ports one through three. These labels originate from terms like Line Print Terminal or Line Printer. Comparable naming schemes were employed in operating systems including ITS, DEC systems, CP/M, and 86-DOS.

Within DOS environments, printers connected to parallel ports could be addressed directly via command-line instructions; for example, "TYPE C:\AUTOEXEC.BAT > LPT1:" sends the contents of AUTOEXEC.BAT to the printer connected at LPT1. The PRN device name functions as an alias for LPT1. Certain operating systems such as Multiuser DOS permit reassignment of these port names. DOS variants may use resident driver extensions like MODE or configure device mappings through a CONFIG.SYS directive such as PRN=n (e.g., in DR-DOS 7.02). The same DR-DOS version also supports an LPT4 designation if supported by BIOS.

Device names including PRN, CON, and AUX remain reserved under DOS and Windows (including Windows XP and later), preventing their use for files or directories. Earlier Windows editions like 95 and 98 suffered from vulnerabilities where these reserved names could cause system instability; Microsoft addressed these issues with patches for existing installations but not for new setups.

The "PRINT" command offered analogous functionality for sending output to printers. Although modern Microsoft Windows versions often conceal these ports from casual view, references to them persist in various system contexts.

On SCO UNIX and Linux systems, the initial parallel port is identified as /dev/lp0. Linux IDE devices can operate using a paride (parallel port IDE) driver supporting parallel interface connections.

Prominent consumer products

Present applications

The parallel printer port has been mostly supplanted by USB connections and network interfaces for attaching printers and other peripherals. Many PC and laptop manufacturers now regard the parallel port as outdated technology, frequently excluding it, particularly in compact models with limited physical space. To maintain compatibility with printers that only support parallel connections on USB-only machines, USB-to-parallel adapters are commonly used. Additionally, PCI and PCI Express expansion cards can add parallel ports to systems, while some print servers provide network-based access to parallel ports. USB-to-EPP controller chips also facilitate the use of non-printer devices requiring parallel interfaces on modern computers.

For electronics enthusiasts, the parallel port remains a preferred option due to its simplicity and speed advantage over serial ports when interfacing external circuits, demanding less interface hardware and software complexity than USB. However, from Windows versions succeeding 98 onward, direct user-level access to LPT ports is restricted without specialized software.

Parallel ports are frequently employed in CNC milling machines to manage stepper motors and auxiliary devices, especially when running LinuxCNC operating systems.

Port addresses

Typical IBM PC configurations assign up to three parallel ports with the following I/O addresses and interrupt requests:

Port number IRQ Start I/O address End I/O address
1 IRQ 7 0x3BC 0x3BF
2 IRQ 7 0x378 0x37F
3 IRQ 5 0x278 0x27F

If a designated port (for example, at 0x3BC) is missing, subsequent ports shift upward logically (e.g., the port at 0x378 becomes LPT1). The base address 0x3BC is commonly supported by printer interfaces integrated into MDA and Hercules graphics adapters, whereas motherboard or expansion card ports seldom utilize this address. Therefore, in the absence of a monochrome display adapter, the first logical parallel port typically defaults to 0x378 even though BIOS settings may default to 0x3BC if detected. Interrupt request lines are usually configurable; assigning identical IRQs to multiple ports is discouraged as it may cause the system to resort to polled mode operation. Port addresses can be confirmed within the BIOS Data Area at memory location 0000h:0408h.

Bit-to-pin allocation for the Standard Parallel Port (SPP):

Address Bit: 7 6 5 4 3 2 1 0
Base (Data register) Pin: 9 8 7 6 5 4 3 2
Base+1 (Status register) Pin: ~11 10 12 13 15
Base+2 (Control register) Pin: ~17 16 ~14 ~1

(The tilde (~) denotes bits that are inverted by hardware)

Software interface

In earlier Microsoft Windows editions lacking the Windows NT kernel (including DOS), applications accessed parallel ports through straightforward outportb() and inportb() instructions. On platforms such as Windows NT and various Unix variants (NetBSD, FreeBSD, Solaris, 386BSD, etc.), the CPU operates within a restricted privilege level that prevents direct parallel port access unless mediated by a device driver. This approach improves security and manages device arbitration effectively. Under Linux, direct port I/O via inb() and outb() functions is possible with root permissions combined with ioperm() calls; alternatively, the ppdev driver allows controlled user-space access with appropriate privileges.

The cross-platform library libieee1284, commonly included in Linux distributions, provides an abstracted interface for managing parallel port communication through an open-claim-release-close sequence, enabling concurrent operations from multiple userspace processes.

Pinouts

Earlier parallel printer interfaces utilized an 8-bit data bus accompanied by four control output signals (Strobe, Linefeed, Initialize, Select In) and five control input signals (ACK, Busy, Select, Error, Paper Out), enabling data transfer rates near 150 kB/s. Certain parallel ports are capable of achieving transfer speeds up to 300 kB/s.

The more recent Enhanced Parallel Ports (EPP) preserve the 8-bit data bus and control lines while supporting transfer rates reaching as high as 2 MB/s.


Pin No (DB25) Pin No (36 pin) Signal name Direction Register - bit Inverted
1 1 Strobe Bidirectional Control-0 Yes
2 2 Data0 Output Data-0 No
3 3 Data1 Output Data-1 No
4 4 Data2 Output Data-2 No
5 5 Data3 Output Data-3 No
6 6 Data4 Output Data-4 No
7 7 Data5 Output Data-5 No
8 8 Data6 Output Data-6 No
9 9 Data7 Output Data-7 No
10 10 Ack Input Status-6 No
11 11 Busy Input Status-7 Yes
12 12 Paper-Out Input Status-5 No
13 13 Select Input Status-4 No
14 14 Linefeed Bidirectional Control-1 Yes
15 32 Error Input Status-3 No
16 31 Reset Bidirectional Control-2 No
17 36 Select-Printer Bidirectional Control-3 Yes
18-25 19-30,33,17,16 Ground - - -

Lines marked as inverted operate with active low logic; those without inversion are active high.

Note that on some contemporary systems, pin 25 of the DB25 connector may not be connected to ground.

See also

Integrated circuit references for hardware:

  • For host-side controllers, refer to Super I/O
  • Examples of peripheral interface ICs include PPC34C60 (SMSC) and W91284PIC (Warp Nine)
  • USB-to-printer interface chips such as PL-2305 (Prolific) and CH341 (QinHeng)

References


External links