• Please review our updated Terms and Rules here

New project: ISA Parallel Card

Hak Foo

Experienced Member
Joined
Jul 18, 2021
Messages
282

On my visit to San Francisco, I made it a point to stop at Anchor Electronics, looking for some interesting projects. Noticed they had some GAL20V8s in their catalogue, and decided "I should build something with them".

I figured a simple parallel card was a good idea because:
* It's a ball of 74xx logic, so some of it could be reasonably compressed into a GAL
* There aren't that many parallel cards in the "solder your own PC clone" ecosystem. I see https://github.com/hkzlab/ISA_DualUARTParport, but that's obviously more functionality than a single parallel port.

I based it largely on the schematics in the PC Technical Reference (page D-34) with the following new ideas:
* The GAL generates the five decodes at the top left of the schematic (RPA/RPB/RPC/WPA/WPC) as well as the DIR signal for the 74LS245.
* The 74LS05s plus pullup are replaced with 74LS04s, which seem to be equivalent except for the pullup being baked in.
* Based on https://forum.vcfed.org/index.php?threads/looking-for-parallel-port-schematic.76112/post-926025 I wired the last line out of the 174 to the 374's output enable, so it should provide PS/2-compatible bidirectional functionality.
* Several places where inversion was done by feeding a signal and its copy into a NOR/NAND/XOR gate were simplified by using more inverters. I assume they were done this way since the original design had gates to spare on those other parts.

Status so far:
* BIOS identifies the existence of a port at 0x378
* DEBUG will let me "o 378,xx" and "i 378" and get the same value back.

I need to await more parts to build loopback plugs for further tests, and find a nice dot-matrix printer at the Goodwill. :)

Known limitations:
* You could reprogram the GAL easily to have the device activate at a different port, but IRQ7 is hard wired.
* I'm concerned that the "use 74LS04 instead of 74LS05 + pullups" may cause problems in some scenarios. Specifically looking at the note at https://minuszerodegrees.net/misc/Parallel port types.png -- if someone's expecting "heavy duty" pullups, relying on the 74LS04's "returns active high instead of open collector" instead of a real pullup may not be that good of an idea.

Known errata:
* Poor footprint choices: The DB25 socket I chose is unlike most real ones-- the large mounting holes are set back about 2mm. Still worked with the one I bought. and most actual DB25 connectors have the prongs for mounting dead-centre rather than in line with one row of pins. The capacitor footprints are probably too small depending which ones you buy.
* Exact card dimensions need tweaks to have the port fit neatly out the back of the case. My chosen socket was a bit too shallow for that. I suspect this needs a holistic approach-- choose the socket, then adjust the PCB dimensions and footprint to match.
* The decoupling caps are marked 470nf, when the original spec was actually 47nf. You can never have too much decoupling. :)
 
Neat, although I don't see much use for parallel ports on retro machines. I've got lots of ISA cards with them, and they universally go unused (except for notebooks, where I connect a DAC). Serial ports are different, though (nullmodem cable for data transfer plus mouse).

What do you use parallel ports for?
 
Parallel has the potential to be faster than serial for file transfers. There are also EPROM programmers that need it, as another example.
 
In defence of parallel I/O port cards, years ago in the UK there was a great hobby electronics store called Maplin, very much like Tandy/Radioshack. In their heyday Maplin also printed a high quality magazine, filled with projects and technology updates. One project was an Input/Output ISA card based on the Intel 8255. It gave you three general-purpose, programmable 8-bit ports. This one was assembled from the Maplin kit and spent most of its working life inside an Opus XT where it switched radio channels on a system I'd rigged to interface my AX25 packet-radio BBS to to my Fido Node. It worked great for about a year, and then one morning I had a letter from Ofcom (the UK government communications regulatory dept) telling me to shut it down :)
Great for playing with ADC & DACs, light cubes, servos....
Cheers
Phil G4PHL

1725925807020.png
 
I need a native parallel port for the Andromeda Research AR-32A EPROM programmer so I can program 2716s & 2732s when I occasionally need to.

 
Svenska said:
What do you use parallel ports for?

I booted a computer through one, more precisely it was a networked-boot thin client that had no provisions of connecting disk drives by design.
You can also make a simple resistor divider for each of the 8 bits, connect that to an active speaker and you've got yourself a primitive parallel port sound interface, aka the Covox.
That, and it's faster to transfer files through it (~30-50 kB/s) than a 9600bps serial interface would normally do.
Perhaps external drives too, as mentioned above. With a fast CPU you can read Amiga and Mac floppies with some drive bit-banging.
If all else fails, then for the atmosphere of a trusty 9-pin dot matrix, that won't ever nag you about refills and may outlive you whole...
 
Last edited:
When it is working, consider to integrate it on the same PCB with XT-IDE.

And it should be switchable by one Jumper (adress and IRQ) between LPT1/2.
 
Thank you for your answers. Seems like the parallel port is mainly used for a few special or home-made devices, some ZIP drives, and lots of "well maybe someone has a use but I don't know for sure".

One project was an Input/Output ISA card based on the Intel 8255. It gave you three general-purpose, programmable 8-bit ports.
That's what I consider a "GPIO" card, not a parallel port (even though the ports are parallel). Very different application.

I booted a computer through one, more precisely it was a networked-boot thin client that had no provisions of connecting disk drives by design.
How did that work? The only standard protocol I can think of is PLIP (not common on PCs) or those few parallel port network adapters. Neither mesh well with RPL or PXE to my knowledge.

You can also make a simple resistor divider for each of the 8 bits, connect that to an active speaker
Yes, that's the only use I have - but for notebooks only. While the Covox sounds good, it loses in compatibility against regular AdLib/SoundBlaster compatible cards.

That, and it's faster to transfer files through it (~30-50 kB/s) than a 9600bps serial interface would normally do.
A serial connection, on the other hand, allows you to transfer files from a modern computer through a USB-serial adapter. Not sure if USB-LPT adapters are compatible with non-printers, and software support is definitely far more limited. Also, parallel cables are very unwieldy.
 
Svenska said:
A serial connection, on the other hand, allows you to transfer files from a modern computer through a USB-serial adapter. Not sure if USB-LPT adapters are compatible with non-printers...

Was thinking more of a DOS Laplink/INTERLNK session, but even Total Commander for Windows used to allow parallel port file transfer, if you had a hardware port. I reckon even under the NT kernels with the inpout32/x64 driver.
USB-LPT adaptors only emulate USB printing support. As the name says, it's a Universal Serial Bus, it won't provide individual data lines available to tweak. I keep a Core 2 Duo motherboard with Win7 that still has LPT onboard.
With non-UART serial transfers (think ports on a 5150/XT) approaching 9600bps, or 1K/s I might aswell bring out the floppy drive...

Svenska said:
How did that work?

Some 2K of bootable ROM code that received a 64K floppy image containing FreeDOS, barebones COMMAND.COM and INTERLNK that reused the same parallel connection once FreeDOS booted. It could do without it too.
Yeah, non-standard, but far easier than trying to setup Novell NetWare 2 using an 8-bit ARCnet card as a server, as that was the only network interface of the thin client I tried to boot. "Achieved" both, in the end.

Oh, and you can use the parallel port to debug broken mainboards. So the possibilities are endless :)
 
Last edited:
With non-UART serial transfers (think ports on a 5150/XT) approaching 9600bps, or 1K/s I might aswell bring out the floppy drive...
My 286/12 with an 16450 (no FIFO) can pull off 115.200 bps (~11 KB/s) without issues in TERM95.
For larger amounts of data I use mTCP with a network card. Need one for the XTIDE BIOS anyway.

Some 2K of bootable ROM code that received a 64K floppy image containing FreeDOS, barebones COMMAND.COM and INTERLNK that reused the same parallel connection once FreeDOS booted.
I see, that's a fully custom solution. In that case, I'd probably aim at regular network boot; INTERLNK unfortunately doesn't like modern host machines, and nobody has implemented the protocol to my knowledge (as far as I know, it exports the FAT filesystem directly, which would be annoying to implement).

Thanks for explaining.
 
Back
Top