0
\$\begingroup\$

I'm trying to figure out the meanings of all the parallel port IO addresses on a PC because I have custom hardware I use with it and I figure if I change a value then my hardware will work.

So far, the Internet tells me that the standard IO port 0x378 is data, 0x379 is status and 0x37A is control.

On my linux when I have the parallel port drivers loaded, I see the above IO port addresses but I also see these addresses:

0x37B through 0x37F

What do each of those addresses represent specifically?

\$\endgroup\$
  • \$\begingroup\$ Some of the addresses are for EPP/ECP. \$\endgroup\$ – Eugene Sh. Aug 3 '18 at 16:14
2
\$\begingroup\$

It's debatable if this is even on topic here, vs say retrocomputing.

That said, the registers of PC parallel ports are mostly standardized, and what differs is the base address. So for example your typical first port at base address 0x378 has its data register at base+0, its status at base+1, etc.

The same pattern would hold true for other base addresses. From memory, the most common were 0x378, 0x3bc and 0x278 - however there is not anything preventing someone from building a port with an address decoder that puts it at any other address not conflicting with something else in that particular system, as long as they can build the hardware and convince software to use it.

Worth noting that the pattern of having multiple similar peripherals with the same (or nearly so) register structure repeating from different base addresses is very common in modern microcontrollers as well (with the slight difference that they are memory mapped, vs. being in the special I/O address space the 8086 inherits from earlier Intel processors).

| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Actually, the fact that the port addresses are claimed by some driver doesn't mean they're being effectively used; some may be reserved for future use, and, as Eugene has commented, a few (though not all) were already put to use for controlling unattended (buffered) transfers in EPP/ECP mode.

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.