IEEE 1284

From Wikipedia, the free encyclopedia
Jump to: navigation, search

IEEE 1284 is a standard that defines bi-directional parallel communications between computers and other devices. It was originally developed in the 1970s by Centronics, and was widely known as the Centronics port, both before and after its IEEE standardization.

An IEEE 1284 36-pin male Centronics printer cable connection. The computer side normally uses a DB-25 port instead of this "Micro ribbon" connector.


An IEEE 1284 36 pin female on a circuitboard

In the 1970s, Centronics developed the now-familiar printer parallel port that soon became a de facto standard. Centronics had introduced the first successful low-cost seven-wire print head, which used a series of solenoids to pull the individual metal pins to strike a ribbon and the paper. Centronics lays claim to having developed the first dot matrix printer, although DEC introduced a similar design around the same time.

A dot matrix print head consists of a series of metal pins arranged in a vertical row. Each pin is attached to some sort of actuator, a solenoid in the case of Centronics, which can pull the pin forward to strike a ribbon and the paper. The entire print head is moved horizontally in order to print a line of text, striking the paper several times to produce a matrix for each character. Character sets on early printers normally used 7 by 5 "pixels" to produce 80-column text.

At any particular instant, the print head has to send instructions to all seven pins at the same time. The obvious solution to this problem is to use a parallel port of some sort, allowing drivers on the host computer to directly control the pins by setting bits in appropriate registers. At the time most computers featured a serial port and this could have been used for this purpose, but it would have required a string of bits sent one at a time (the meaning of "serial") to be buffered in the printer until the entire instruction was received. Using a parallel port greatly reduced the complexity of the electronics in the printer.

This style of operation did require careful timing on the part of the host, to ensure the data was available when the print head reached the proper position. In early microcomputers this generally required the entire computer's resources to be dedicated to printing. This was fine in the DOS era when most operations were single-tasking. However, this also meant that the timing had to be emulated by printers that didn't use a pin-based print head, daisy wheel systems for instance. As printers grew in sophistication, and the cost of memory dropped, printers began adding increasing amounts of buffer memory, initially a line or two, but then whole pages and then documents.

The original port design was send-only, allowing data to be sent from the host computer to the printer. Separate pins in the port allow status information to be sent back to the computer. This was a serious limitation as printers became "smarter" and a richer set of status codes were desired. This led to an early expansion of the system introduced by HP, the "Bitronics" implementation released in 1992. This used the status pins of the original port to form a 4-bit parallel port for sending arbitrary data back to the host.

A further modification, "Bi-Directional", used the status pins to indicate the direction of data flow on the 8-bit main data bus; by indicating there was data to send to the host on one of the pins, all eight data pins became available for use. This proved adaptable, and led to the "Enhanced Parallel Port" standard, which worked like Bi-Directional mode but greatly increased the signalling speeds to 2 MByte/s, and later the "Extended Capability Port" version increased this to 2.5 MByte/s.

In 1991 the Network Printing Alliance was formed to develop a new standard. In March 1994, the IEEE 1284 specification was released. 1284 included all of these modes, and allowed operation in any of them.


An IEEE 1284 compliant printer cable, with both DB-25 and 36 pin Centronics connectors.

The IEEE 1284 standard allows for faster throughput and bidirectional data flow with a theoretical maximum throughput of 4 megabytes per second; actual throughput is around 2 megabytes/second, depending on hardware. In the printer venue, this allows for faster printing and back-channel status and management. Since the new standard allowed the peripheral to send large amounts of data back to the host, devices that had previously used SCSI interfaces could be produced at a much lower cost. This included scanners, tape drives, hard disks, computer networks connected directly via parallel interface, network adapters and other devices. No longer was the consumer required to purchase an expensive SCSI card—they could simply use their built-in parallel interface. These low-cost devices provided a platform to leapfrog the faster USB interface into its present popularity, displacing the parallel devices. However, the parallel interface remains highly popular in the printer industry, with displacement by USB only in consumer models.

IEEE 1284 modes[edit]

IEEE 1284 can operate in five modes:

  • Compatibility Mode, also known as Centronics standard or SPP, is a uni-directional implementation with only a few differences from the original Centronics design. This mode is almost exclusively used for printers. The only signals that the printer can send back to the host are some fixed-meaning status lines that signal common error conditions, such as the printer running out of paper.
  • Nibble Mode is an interface that allows the device to transmit data four bits (a nibble) at a time, (re)using four of the status lines of Compatibility Mode for data. This is the Bi-tronics mode introduced by HP and is generally used for enhanced printer status. Although never officially supported with these, Nibble Mode works with most of the pre-IEEE-1284 Centronics interfaces as well.
  • Byte Mode, also known as "Bi-Directional" (although all modes except Compatibility Mode are in fact bi-directional), is a half-duplex mode that allows the device to transmit eight bits at a time using the same data lines that are used for the other direction. This mode is supported on a minority of pre-IEEE-1284 interfaces as well, such as those built into the IBM PS/2 computers; because of this, it is sometimes unofficially called the PS/2 mode.
  • Enhanced Parallel Port (EPP) is a half-duplex bi-directional interface designed to allow devices like printers, scanners, or storage devices to transmit large amounts of data while quickly being able to switch channel direction. EPP can provide up to 2 MByte/s bandwidth, approximately 15 times the speed achieved with normal parallel-port communication with far less CPU overhead.[1]
  • Extended Capability Port (ECP) is a half-duplex bi-directional interface similar to EPP, except that PC implementations use direct memory access (usually ISA DMA on channel 3) to provide even faster data transfer than EPP by having the ISA DMA hardware and the parallel port interface hardware handle the work of transferring the data instead of letting the CPU do this work. Many devices that interface using this mode support RLE compression. ECP can provide up to 2.5 MByte/s of bandwidth, which is the natural limit of 8-bit ISA DMA.[2] An ECP interface on a PC can improve transfers to pre-IEEE-1284 printers as well, by reducing the CPU load during the transfer ; however, the transfer in that case is unidirectional.

Most recent computers that include a parallel port can operate the port in ECP or EPP mode, or both simultaneously.

IEEE-1284 requires that bi-directional device communication is always initiated in Nibble Mode. If the host receives no reply in this mode, it will assume that the device is a legacy printer, and enter Compatibility Mode. Otherwise, the best mode that is supported on both sides of the connection is negotiated between the host and client devices by exchanging standardized Nibble Mode messages.

IEEE 1284 connectors and cables[edit]

An IEEE-compliant cable must meet several standards of wiring and quality. Three types of connectors are defined:

  • Type A: DB-25 25 pin, for the host connection.
  • Type B: Centronics (officially called "Micro Ribbon") 36 pin, for the printer or device connection.
  • Type C: Mini-Centronics (MDR36) 36 pin, a smaller alternative for the device connection that has not proven popular.

There are two kinds of IEEE 1284 cables:

  • IEEE 1284-I: uses IEEE 1284-A and IEEE 1284-B connectors.
  • IEEE 1284-II: uses IEEE 1284-C connectors.

In IEEE 1284 Daisy Chain Specification, up to 8 devices can be connected to a single parallel port.

All modes use TTL voltage logic levels, which limits the possible cable length to a few meters unless expensive special cables are used.[3]

For detailed specifications, including pinouts, refer to the links below.

IEEE 1284 standards[edit]

  • IEEE 1284-1994: Standard Signaling Method for a Bi-directional Parallel Peripheral Interface for Personal Computers
  • IEEE 1284.1-1997: Transport Independent Printer/System Interface- a protocol for returning printer configuration and status
  • IEEE 1284.2: Standard for Test, Measurement and Conformance to IEEE 1284 (not approved)
  • IEEE 1284.3-2000: Interface and Protocol Extensions to IEEE 1284-Compliant Peripherals and Host Adapters- a protocol to allow sharing of the parallel port by multiple peripherals (daisy chaining)
  • IEEE 1284.4-2000: Data Delivery and Logical Channels for IEEE 1284 Interfaces- allows a device to carry on multiple, concurrent exchanges of data

IEEE 1284 typical color codes[edit]

Here are the typical colors found on 25-pin IEEE 1284 cable leads.

Pin Color Alt Color
1 red
2 pink/red
3 brown
4 orange
5 light-blue/yellow
6 light-blue/red
7 light-blue
8 blue
9 light-blue/black green/blue
10 green
11 yellow
12 pink/orange
13 gray
14 gray/green
15 pink/blue orange/white
16 pink/black brown/white
17 light blue/blue light blue/green
18 blue-white
19 green/black green/red
20 pink/white yellow/black
21 gray/black
22 white/black gray/yellow
23 purple
24 pink
25 white
NC white/yellow white/green
All white/purple red/black

See also[edit]


  2. ^ Lava - IEEE 1284: Parallel Ports
  3. ^ IBM Parallel Port FAQ/Tutorial

External links[edit]

Interrupt list related to the EPP BIOS calls: