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
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
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 Data Register |
Device Status Register |
Device Control Register |
Interface Control Register |
Interface Status Register |
Reserved Register |
IRQ |
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
|
03BC-03BF
|
Compatible |
0278-027B |
Enhanced
|
1278-127D
|
Enhanced |
0278-027D |
Extended
|
1278-127F
|
Extended |
0278-027F |
Parallel 2 |
Parallel 4 |
Compatible
|
0378-037B
|
Compatible |
1378-137B |
Enhanced
|
0378-037D
|
Enhanced |
1378-137D |
Extended
|
0378-037F
|
Extended |
1378-137F |
Notes:
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
|