Purpose & Scope
Here we share our experience and document our research about parallel port.Motivation
Parallel ports have all but disappeared from main stream computing hardware so why bother?As it turns out I have a rather obsessional interest for VFD modules and their retro electronics looks.
I notably did quite a bit of work to make good use of various such modules from Futaba, see CIC on MediaPortal for instance.
However the frame rate of the larger Futaba VFD modules is rather abysmal even though we used a USB interface.
The perfectionist in me was left frustrated with Futaba hardware. Asking Futaba about it, to see if they could somehow improve their firmware, yield no result since they obviously had no interest in helping out a technology enthusiast, even though it would have been mutually beneficial. Moreover the USB interface their display implement tends not to work on modern motherboards unless they have a BIOS option to disable xHCI.
Looking around on the market for VFD hardware I found out that Noritake did offer modules with similar mechanical specifications and a DMA mode that should enable high frame rates when connected over a parallel port interface. Thus I set out to understand and use parallel ports on Windows.
PC Hardware
PCI Express extension cards
The following PCIe hardware did not work with my Noritake VFD as the voltage on the Strobe channel only goes up to 1.8v:- Delock PCI Express Card > 2 x Parallel
- Longshine LCS-6320
- Startech 2 Port PCI-e Parallel Adapter Card - PEX2PECP2
Exsys also makes such a PCIe card, I have yet to check if it has that low voltage issue.
Motherboard connector
Some motherboards have an internal parallel port connector with a smaller pitch than the standard 2.54mm.Ribbon cable for those can be hard to find. I found information about them on this page in German.
I ended up ordering some of those cables there.
Various standards
Over the years there has been various standards for parallel ports from Standard Parallel Port (SPP) to Extended Capabilities Port (ECP). That later allowing for compatibility modes through its Extended Capabilities Register.Programming
Windows
To get pin level control on Windows you need to use a specific driver inpout32 being the most popular apparently.If you are connected to a device that's doing Standard Parallel Port handshake, also called Centronics, then you should be able to use the built-in Windows drivers.
In theory you should be able use your parallel port using CreateFile but that won't give you pin level control.
Tools
Doug developed that Parallel Port Tester for Windows. He even published the code he used to work out ports addresses on your Windows system.Pinout

The pinout of the male connector is obviously reversed as it needs to mate with the female.
|*DB25 PIN*|*IDC PIN*|*Signal*|
|1|1|Strobe|
|2|3|Data0|
|3|5|Data1|
|4|7|Data2|
|5|9|Data3|
|6|11|Data4|
|7|13|Data5|
|8|15|Data6|
|9|17|Data7|
|10|19|Ack|
|11|21|Busy|
|12|23|Paper-Out|
|13|25|Select|
|14|2|Linefeed|
|15|4|Error|
|16|6|Reset|
|17|8|Select-Printer|
|18|10|Ground|
|19|12|Ground|
|20|14|Ground|
|21|16|Ground|
|22|18|Ground|
|23|20|Ground|
|24|22|Ground|
|25|24|Ground|
Tester circuit
Here is a tester circuit we used to validate our controller implementation:
This circuit was based on the following design from xlentelectronics.

Conclusions
Parallel ports are a dying breed and I now understand why:- Printers, scanners and other peripherals have long moved on to USB or RJ45 connections.
- It also does not support GPIO use case reliably due to poor hardware and electrical standards, lack of low level APIs and archaic protocols.
References
- Pinout image from CNC4PC.
- About Parallel port on beyond logic.
- Parallel port tester application for Windows with hardware schematics.
- Parallel port output.
Last edited: