Parallel Port

HITR - Common Interfaces - Parallel Port Controller First Edition (Oct 1990)

Understanding New Developments in Parallel Ports Douglas Boling, PC Mag, 27 Oct 1992 (PDF)
New Developments in Parallel Ports (HTML)
Using Bidirectional Parallel Printer Ports (programming & hardware explanation)

IEEE 1284 – Updating the PC Parallel Port National Instruments - Application Note 062

Interfacing Articles by Craig Peacock
   Interfacing the Standard Parallel Port
   Interfacing the Enhanced Parallel Port
   Interfacing the Extended Capabilities Port

Parallel Port Information System version 1.45, Jay Lowe and Don Schuman 27 Oct 1994

PS/2 Type 3 DMA Arbitrated Parallel Port

95A Parallel Ports
   ExpressPrint Background
   F/MUX Information
Parallel Port Address Assignments
Updated W95 Printer Driver
Direct Cable Connection
DMA Printer Port (Uncut!)
Checking for DMA Use
Two Parallel Ports under W98SE
Bidirectional Trivia
Boca Parallel Cards in Server 720
Parallel Port Pinout
Parallel Port Addresses vs. Modes
ADF Sections

95A Parallel Ports

The 95A planar has 2 parallel ports:

  • Port "A" (bottom) is an ExpressPrint parallel port.
  • Port "B" (top) is a standard parallel port.

Note: If you experience a problem with a non-IBM device when attaching it to either the parallel port, you might need to go to the Change configuration screen of the system programs and set the port DMA (direct memory access) arbitration level to "Disabled."


ExpressPrint Parallel Port supports transfer rates at up to 2 MB/s. Using vendor supplied multiplexer (i.e. F/MUX) and software, users can attach up to four supported printers and output 300 DPI complex graphics at the rated speed of the printer and still have capacity left over. Compared to a direct LAN attachment, where data is sent over the LAN twice before being printed, the busmaster ExpressPrint Parallel Port not only reduces the load on the server processor, but prevents the LAN from being flooded with unnecessary printer traffic.

ExpressPrint Background

Subject: Just what is ExpressPrint and how do I use it?
Ref: Append at 05:06:53 on 94/10/26 GMT (by CONJSJOL at SFOVMIC1)
   Here is a note from the chip designer when I forwarded your append to him. Kevin

From: James P. Ward, Dept. W13A, ZIP 1715, Boca Raton, FL
   ExpressPrint hardware shipped with all Vizcaya (and later...) based systems. The 4-way printer support is achieved thru a printshare box from FarPoint Communications in San Jose. I believe there is a NetWare and OS/2 driver for this function (Howard Greenberg or Mike Derwin should know). The planner for all of this was Lew Miller. Hope this gets the wheel rolling... Jim

F/MUX Information

The lone existing F/Mux is all I know to be in existence. I'm not sure if Warp Nine Engineering will ever produce it. Now that USB is out, there is less reason than ever to do so. For more info on the F/Mux, go HERE.

Parallel Resistor Networks on 95A

Bourns 4816P-001 -330 (isolated 33 ohm) and 4816P-002 -472 (bussed 4.7K ohm) for each parallel port. Datasheet for the 4800P family HERE.

Parallel Port Address Assignments

Port * Parallel
Type 1
Par_1 03BC 03BD 03BE 03BF 7
Par_2 0378 0379 037A 037B 7
Par_3 0278 0279 027A 027B 7
Type 2
Par_1 03BC 03BD 03BE 03BF 7
Par_2 0378 0379 037A 037B 037C 037D 7
Par_3 0278 0279 027A 027B 027C 027D 7
Type 3
Par_1 03BC 03BD 03BE 03BF 7
Par_1 1278 1279 127A 127B 127C 127D 7
Par_2 0378 0379 037A 037B 037C 037D 7
Par_3 0278 0279 027A 027B 027C 027D 7
Par_4 1378 1379 137A 137B 137C 137D 7

* Parallel_x has been shortened to Par_x so the table fits.

Type 1 ports do not support DMA.
Type 2 Parallel_1 does not support DMA, Arbitration Level is fixed at Arb 6.
Type 3 Parallel_1 DMA Disabled (03BCh) -OR- DMA Enabled (1278h), full Arb levels

Note: 03BCh was used by the parallel port on the (old) Monochrome Display Adapter (MDA). I suspect that in certain video modes, placing Extended Mode registers on 03BCh would interfere with video memory.

Updated W95 Printer Driver

Found this on Russ Wright's Cannon Support Pages:
   Microsoft released a newer version of the LPT.VXD file for Windows 95 the LPT.VXD is located in the SYSTEM directory
   This LPT.VXD is to replace the version provided in the Windows 95 service pack #1 and is newer than the version provided with Windows 95 OEM or OSR2.x This latest LPT.VXD is version 4.00.955.

PRNT5UPD.EXE contains the latest LPT.VXD driver file.

Direct Cable Connection

I've used DCC under W95 to hook up a 9533 to a 77s. A 76s to a 77s. Go to the very detailed Connect Pages at Kime.Net to find out how! Sure beats the hell out of SneakerNet for 70+MB!

DMA Parallel Port (Uncut!)

With apologies to "The Micro Channel Architecture Handbook" ISBN 0-13-583493-2, pages 99-100. Spelling mistakes are probably mine.

"A practical application of Micro Channel technology that breaks the microprocessor bottleneck in printing is making the printer port into a DMA that uses a Direct Memory Access controller to move the data. During a print job, the DMA printer port would briefly take control of the bus, shuttle the data across, and step out of the way.

The load on the bus itself would immediately be reduced by this technology, but that's only of the tiniest benefit to system performance. This sort of advanced printer port trims the overhead on the bus because it requires only the equivalent of 68,000 characters per second in bus time to support the same 100,000 characters per second data rate. Fewer instructions than characters are required because a 16-bit DMA bus master would be able to move two characters at a time to the printer port instead of the single character permitted by most printer ports in classic bus systems. (Overhead mitigates the two-to-one theoretical advantage of the double-width bus.) Of course, this increase in bus width and consequent bandwidth saving is only an implementation issue more significant with multitasking.

The important increase in performance to the single-tasking system comes from savings in microprocessor usage. Nearly all of the millions of instructions per second used in the classic bus scenario could be freed up from the microprocessor by the bus master DMA printer port. The microprocessor would need to do nothing but spend a few thousand cycles to set up the DMA transfer, rather than continuously churning through millions of instructions every second. The DMA controller itself would do all the dirty work. The instructions it races through would not impact system performance at all.

All the time that the adapter and DMA controller are not putting data on the bus most of the time, considering that less than 1/10th (in truth, closer to 1/20th) of the bus bandwidth is used for actual transfer of characters per task. Instead of being fully loaded and unable to perform other tasks with any speed at all, the system with a DMA printer port would have more than 90 percent of it's potential available while the printer is running full speed. If the microprocessor has it's own cache memory, the impact on system performance would be even less, potentially zero.

The economics of adding a DMA printer port to a high-performance Micro Channel computer are astounding. The parts required to make a DMA printer port are insignificant compared to the cost of an 80386-based computer. As a result, in practical terms a DMA printer adapter could buy back most of that system's performance for less than one percent of the total system cost. In effect, DMA buys you the performance of another 80386-based computer for practically nothing.

A true bus master printer port would save more bus cycles and might be easily justified in a multitasking or multiuser system where bus cycles are at a premium. Remember that as earlier stated I/O transfers can take 5 or perhaps 10 percent of the bus bandwidth per task. This means that 5 or 10 tasks might consume a sizeable portion of bus bandwidth at the expense of performance overall. In the single-tasking system, however, the delays introduced by the processor-dependent I/O adapters can be cost-effectively overcome by DMA.

Checking for Parallel DMA Use

Q. I know that the 56/57/76/77/85/90/95 systems use serial and parallel ports capable of high-speed DMA transfers, but how do I know if my system is set up to use DMA? 

A. Simple.  Start the System Program (either from the System Partition on your hard disk drive, or the Refdisk), and look at the Arbitration Level for the serial and parallel ports. The parallel port should be set to Shared 7, and the serial port should be set to Shared 4 for Transmit Arb Level, and Shared 3 for Receive Arb Level.  If your system has two DMA serial ports, the second serial port should be set to Shared 6 for Transmit Arb Level, and Shared 5 for Receive Arb Level.  These are the defaults.  If the ports are set this way, they are using DMA. 

Two Parallel Ports under W98SE

How do I ensure both my parallel ports are enabled on a 95A?

Dr. Jim Shorney (on sabbatical)
   Actually, use of the LPT interrupts is software dependent.  Windows' 'standard parallel port', by default, is PIO and does not use interrupts.   Just set one up last night while trying to help Art, and I was able to install both parallel ports as 'standard' with no exclamation points. 

Art Reid:
   I got it using Jim's procedure with a few twists... I made the port setting changes in system setup but left DMA turned on because video manufacturer says I need ECP through DMA on the port for best performance. Next I booted system, went in ControlPanel and added a new ECP port. However, when checking the port in ControlPanel/System I did have an exclamation point on the new ECP port.

I had to then change the ECP port @ manually under the resources tab to 278-27A. (No more conflicts). Both the printer and video camera are working fine. Printer on plain LPT port and camera on LPT2 (ECP) with DMA.

Bidirectional Trivia

> Peter, is there a patch that allows the reconfiguration of the parallel port to bidirectional?

Err ... PS/2 LPT ports are bidirectional by nature. There are 3 registers used on LPT ports:

  • data register (LPT-I/O +0)
  • status register (LPT-I/O +1)
  • control register (LPT-I/O +2)

The I/O port address for LPT1 is usually 03BCh on PS/2, the control register is then 03BEh. (You can determine the address with reading the bytes at 0000:0408 and 0000:0409 in the BIOS address space - the LSB is first, it will read BC 03).

If you set bit 5 (direction) of the control register to 1 you can read from the bytes present at the data-register. To permanently read from the LPT-port you need to set the bit 0 (strobe) to 1 you get the bit pattern changes on the port. I use that for the little program that reads the CP codes from another machine.

A proper handshake signaling between two computers using the bidirectional mode will most likely work over reading the BUSY lines from one computer to the ACK signal on the other ... you need to read the status of the two lines to determine, which of the two is the sender and which receives data. This is a bit tricky ... but some other software does that already and uses this feature.

The PS/2 parallel port is a great device to be used as e.g. input from a Analog-to-Digital converter (however: only 8 bit resolution). For many simple purposes this is truly great. I used the parallel port to control the functions of my AKAI tape-machine ... or used it for some other weird stuff.

The system board provides two 25-pin D-shell connectors to the parallel port controllers on the system board. The drivers to the data lines can source up to 15 milliamps and sink up to 24 milliamps.

Parallel Port Connector Pinout

Pin Signal Name Pin Signal Name
1 -Strobe 14 -Auto FD XT
2 Data 0 15 -Error
3 Data 1 16 -Init
4 Data 2 17 -Select in
5 Data 3 18 Ground
6 Data 4 19 Ground
7 Data 5 20 Ground
8 Data 6 21 Ground
9 Data 7 22 Ground
10 -ACK 23 Ground
11 Busy 24 Ground
12 PE 25 Data parity *
13 Select

* Data parity is a function of parallel 9595A port A only).

Parallel Port Addresses vs. Modes

Parallel Port Address Parallel Port Address
Parallel 1 Parallel 3
Compatible 0278-027B
Enhanced 0278-027D
Extended 0278-027F
Parallel 2 Parallel 4
Compatible 1378-137B
Enhanced 1378-137D
Extended 1378-137F

   Many software drivers cannot handle addresses outside of 278-3BF. Parallel 4 (all modes) and the enhanced/extended Parallel 1 addresses are probably NOT supported unless you use OS/2 or a *nix.
   Parallel 1 has a primary address of 3BC-3BF. IBM says that the DMA controller does NOT support that address, so that's where the odd 1278-127F come from. 

Compatible is the old-styled unidirectional printer port
Enhanced is what?
Extended is bidirectional mode.
Enhanced/Extended ports use DMA. I don't know what the other difference is. Note that the enhanced port is one bit more than a standard port. Extended ports are two bits wider. 

W95 Trivia

I have installed an ECP Printer Port under "Add New Hardware". Go to the ECP Port's Resources and select the correct address and DMA Channel. It appears that DMA Channel 1 is used by DMA Arbitration Level 1. Am unsure if that's true, but it still works. I don't have a parallel port device yet to verify this other than my digital camera.
   I also hacked msports.inf in the [1aaa] section so that I had the extended port address. Dunno if that works better than the Compatible address, but it "looks" faster. Odd, but the IBM manual lists the enhanced mode, not the extended mode. The addresses in the adf for the planar are the ones ending with a "d". Does this mean compatible mode only? Or does it just show the non-DMA ports? Help!

ADF Settings for Parallel Ports

Not all systems support these settings, nor will they be in the same order. 

Parallel Port x
     The  parallel port x  can be set as Parallel 1 through 4 or the port can be disabled.
   <Parallel 1 ( io 03bch-03bfh 1278h-127fh int 7)>, Parallel 2"  (io 0378h-037fh int 7), Parallel 3 ( io 0278h-027fh int 7), Parallel 4 ( io 1378h-137fh int 7), Disabled 

Parallel Port x DMA Arbitration Level
      The parallel port x connector can be set to any one of the available DMA arbitration levels.  If the level selected is shared then other devices can be set at the same level.  If the level selected is dedicated then only this device can be set to that  level.
     <Shared level 7>, Shared level 6, Shared level 5, Shared level 4, Shared level 3, Shared level 1, Shared level 0, Level 7, Level 6, Level 5, Level 4, Level 3, Level 1, Level 0, Disabled" 

Parallel Port x SCB I/O Address
   The parallel port x connector can be set to any one of the available SCB I/O addresses.
        <8100-8102>, 8900-8902, 9100-9102, 9500-9502, A100-A102, A900-A902, B100-B102, B900-B902, C100-C102, C900-C902, D100-D102, D900-D902, E100-E102, E900-E902, F100-F102, "Disabled

Content created and/or collected by:
Louis F. Ohland, Peter H. Wendt, David L. Beem, William R. Walsh, Tatsuo Sunagawa, Tomáš Slavotínek, Jim Shorney, Tim N. Clarke, Kevin Bowling, and many others.

Ardent Tool of Capitalism is maintained by Tomáš Slavotínek.
Last update: 08 May 2024 - Changelog | About | Legal & Contact