
The void left by the parallel port - OakNinja
https://medium.com/@tltx/the-void-left-by-the-parallel-port-51eb6c919e8a#.5wytgmtir
======
billforsternz
The parallel port was great for simple bit-bash interfacing and I miss being
able to do such hacking on contemporary PCs. I remember fondly a hacking war
story from the late 80s. I had just purchased a Mephisto 68000 dedicated chess
computer for my own recreational enjoyment. The embedded dev lab where I
worked won a new contract and the hardware dudes decided a 68000 was the way
to go. Not content to wait weeks, maybe months for first hardware, I decided
to get some early experience by hacking at my chess computer. Basically I
opened it up, reverse engineered the keyboard scanning hardware (which was
implemented with standard jellybean CMOS logic), and commandeered a couple of
inputs and outputs for my own purposes. I hooked these up to the printer port
of my PC.

Then I worked out a simple serial bit twiddling scheme to exchange bytes a bit
at a time and coded it up in C as a kind of software serial port. On the PC
side I ended up with something that looked just like a simple terminal that
happened to talk out the printer port. On the Mephisto side, I replaced the
64K byte EPROM with a 128K byte EPROM. I changed the cold boot vector to point
at "my" 64K, which first checked to see if the printer port was hooked up. If
it was hooked up, then the CPU stayed in "my" area and ran a monitor I had
coded up for the occasion. If it wasn't hooked up it vectored back to the
original boot code and the chess computer worked as well as it ever did. I
layered a loader on top of everything and enjoyed loading simple cross
compiled C programs on my new 68K computer, (complete with 16K RAM).

~~~
billforsternz
There is an amusing sequel to this story actually, and no harm in telling the
story after all these years. The 68K product was a proprietary networking card
for a private telephone exchange type product made by Philips. After
developing the product in NZ a hardware guy and I were sent to the Netherlands
for final testing and further integration prior to manufacture. The Dutch
engineers were very well trained and competent, but used to hugely elaborate
heavy process and the more free-wheeling type of development we were used to
was definitely foreign territory. Rumours that the crazy guy from New Zealand
had developed the telephone switch software in his chess computer (i.e. now
that I've explained the story, false rumours) preceded our arrival.

Now I was young and dumb at the time, and I had decided for some reason to
jokingly call the simple bit bashing communication protocol I'd invented to
talk to my chess computer "V.69" (The V series protocols - eg V.24 = RS-232 in
the USA were big at the time). A V.69 port had actually made it into the final
schematics for our board. It was just 5 logic level pins (two inputs two
outputs plus ground) - and in production it would not have any impact - but it
was possible to solder a 5 pin header onto the pins, and hook it up to a PC
running the same terminal software previously discussed - If such a PC was
connected my embedded code would emit diagnostic information.

We had many meetings during our visit, with the typically gruff non-nonsense
Dutch engineers and their huge vats of extraordinarily strong coffee. One of
them was with "the Standards guy" who wanted to audit compliance to all
possible standards - I was able to spectate mainly as it was hardware stuff.
But suddenly he was pointing at the V.69 connector, clearly labelled as such.
We'd forgotten all about it. Us> "Oh well, arrrgh, yes. It's a diagnostic port
- for the lab only - no impact on production - the header is just omitted."
Him> "But what is this V.69 standard?". Us (hopefully)> "Well, it's just a 5v
serial diagnostics standard". Him> "Okay, yes I've heard of it". So as is
often the case, the need to save face saved the day.

~~~
skrebbel
Hahaaha as someone from Eindhoven, where Philips did and still does most of
its R&D, this is frighteningly recognizable.

The scary part is that most departments in Philips _still_ prefer heavy
processes over progress. I, for one, didn't last more than 6 weeks there.

~~~
billforsternz
We were working for the Telecommunications and Data Systems division in
Hilversum. A tiny division by Philips standards, but huge relative to our lab
in NZ.

~~~
skrebbel
Sure, but I bet the culture at Philips was similar :) thanks for the
anecdotes! :)

~~~
billforsternz
Yes of course the Hilversum operation was no doubt a mini version of the huge
R&D operations in Eindhoven. I did enjoy the company of the Dutch engineers. I
think my phonetic Dutch pronunciation amused them. I think :)

------
kazinator
The _tinkering_ void left by the parallel port is pretty much filled by
microcontroller-based systems-on-a-chip that are smaller than the plastic
casing of a parallel connector.

Progress giveth, progress taketh away.

~~~
qq66
There was something about typing out commands on a keyboard and sending them
to a 7-segment LED array that you wired up yourself, that isn't really
comparable to an Arduino.

~~~
phkahler
Or that the joystick ports on the Atari 400/800 were actually bidirectional
and you could get a speech synth chip at radio shack and wire it up that
way...

~~~
greggman
I used the bidirectional ports on the Atari 800 and C64 to cross compile for
C64 because The Atari Macro Assembler was much better than anything on the C64
at the time :P

------
neckro23
I found out about the CNC thing recently while trying to get a hobbyist CNC
machine set up. My immediate reaction was "Parallel ports? What is this,
1985?" Turns out, there isn't really any getting around it. It's parallel port
or GTFO.

This is how I also learned that dirt-cheap PC motherboards _still_ have
parallel ports built in. The higher-end ones generally don't.

~~~
13of40
You can get a PCIe bus parallel card on Amazon for about $10 or $15. I've got
one I use for programming an older FPGA board.

~~~
throwaway7767
Just FYI, you can now get chinese knock-offs of the USB programmer for about
the same price off eBay. They're faster than the parallel cable, and they work
extremely well.

------
zw123456
And don't forget about the venerable FTDI FT232R chip which has the very
useful "Bit Bang" mode
[http://www.ftdichip.com/Support/Documents/AppNotes/AN_232R-0...](http://www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf)
I use those FT232R puppies a lot for all kinds of things that the old PP was
good for, programming FPGA's, testing out a new chip or circuit before going
to MCU etc. It is very simple and inexpensive, and much faster than the PP
was.

~~~
marshray
Fuck FTDI.

[https://www.google.com/?q=ftdi+brick](https://www.google.com/?q=ftdi+brick)

~~~
paulgerhardt
They apologized for that and pulled the update.

When they did so, do you think they came to terms with why that line of
reasoning was wrong and should be given a second chance or were their
reactions purely reactionary?

A huge percentage of their chips are used specifically for software integrity
validation (aka 'security dongle') - that has to warp their threat modeling.

~~~
kqr2
Then they decided to break it again (albeit without bricking it):

[http://hackaday.com/2016/02/01/ftdi-drivers-break-fake-
chips...](http://hackaday.com/2016/02/01/ftdi-drivers-break-fake-chips-again/)

    
    
      Instead of bricking fake chips, the latest FTDI drivers 
      will inject garbage data into a circuit.

~~~
kabdib
Fool me once, shame on you. Fool me twice, shame on me.

Whenever I see a board that uses an FTDI replacement chip, I smile. And I see
a lot more of these as time goes on.

------
zorpner
What we really need to bring back is the BeBox Geekport:
[http://www.hardwarebook.info/GeekPort](http://www.hardwarebook.info/GeekPort)

~~~
Gracana
National Instruments make some nice little IO cards that can provide GPIO and
analog functions.

Also worth checking out are MCC's USB data acquisition devices, which have
open source drivers and provide digital IO and high speed differential analog
inputs: [http://www.mccdaq.com/usb-data-acquisition/USB-1208FS-
LS-140...](http://www.mccdaq.com/usb-data-acquisition/USB-1208FS-LS-1408FS-
Series.aspx)

~~~
cnvogel
The NI stuff, in my opinion, is an over engineered mess, designed to force you
into using LabView and really don't work with anything except their
proprietary windows driver architecture.

~~~
Gracana
Well, that rings true for a lot of my experience with NI, but my
recommendation was based on writing a linux driver for one of the NI digital
IO cards in a university class. I figured if we could do it in that class,
maybe they're not all that bad?

~~~
cnvogel
So... I also used PCI based NI (Digital/Analog I/O) cards in the past (around
the year ~2000), which then were supported by "comedi" (open source linux data
acquisition drivers).

On the other hand, I recently got a few USB based I/O boxes from NI where no
documentation on the USB protocol (or, god forbid, even open source drivers)
exist.

------
ryan-c
This reminds me of junior high and high school, making PC peripherals that
used the parallel port based on schematics I found on the internet. It was a
lot of fun.

I remember building a link cable for my TI-89, NES and SNES controller
adapters, a programming cable for a radio shack universal remote, AVR
programmers, and other things.

~~~
DanBC
I made a little toy resistor ladder digital to analogue convertor. I used this
with NO$GB Emulator for authentically horrible sound, but you could buy
commercial product - COVOX Speech Thing - so it was supported by a few
commercial games too.

[http://www.epanorama.net/circuits/dacs.html](http://www.epanorama.net/circuits/dacs.html)

It's a really simple circuit, and pushing stuff out the parallel port was also
really easy.

------
kirrent
I think this article explains pretty well why we don't need a parallel port
anymore. Rather than outfitting every computer with a complicated and slow
port we can have faster, smaller, and more flexible solutions using extra
processors in our devices. While I appreciate the ability to control so many
IO lines directly I just don't really see the use case anymore and this comes
from someone who went down the whole design a new CNC controller because the
old one used parallel. No-one ever designs new hardware anymore and bemoans
the lack of parallel port that would make their job easier. The void is only
legacy hardware that is difficult to use these days.

~~~
iheartmemcache
>> No-one ever designs new hardware anymore and bemoans the lack of parallel
port that would make their job easier.

Did you even _skim_ the article? Not only did he identify a painpoint (whether
or not you feel it, he did), but he wrote a solution, took the PCB to
production, and _open sourced the whole thing_. That's the exact opposite of
most of the tech articles which sit around and complain about the lack of
solution.

Hey OP, way to go man. Setup a Patreon, and I'll throw a tenner your way just
to see what you come up with next. Like AvE, mikeselectricstuff, SpritesMods,
you're a "do-er" and I'm sure whatever you do will be mighty interesting.

~~~
kirrent
Like I said, I understand the pain of interfacing with legacy hardware but I
thought his solution demonstrated perfectly why we don't need a parallel port
any more. I didn't mean to imply that OP was complaining about the lack of a
parallel port and I enjoyed his post very much.

~~~
qb45
Two issues you are completely ignoring are "barrier to entry" and "PITA
factor".

I can control a bunch of LPT-attached LEDs with two lines of shell script or
bitbang SPI/1W/whatever with a screenful of C. No reason to design one-off
PCBs and make those external devices "smarter" than they need to be.

------
Aqwis
So why do those "cheap USB to parallel port converters" only work with
printers?

~~~
simcop2387
Timing mostly. These kinds of devices are using the parallel port to "bitbang"
everything. Because of that they need rather precise control of timing in
order for things to happen when they expect. The USB devices usually just let
you send a stream of bytes and they go out without much control over how fast
they change.

There's apparently some people making usb devices for things like Mach3 and
they have some links to them: [http://www.cncrouterparts.com/my-computer-
doesnt-have-a-para...](http://www.cncrouterparts.com/my-computer-doesnt-have-
a-parallel-port-can-i-just-get-a-usb-p-154.html)

~~~
toomuchtodo
I used a Geckodrive controller to connect via USB to the interface I needed to
drive three stepper motors (and speed control for the drill motor) for the CNC
mill I built. Works natively with Mach3.

The timing is then offloaded to the microcontroller (in this case, the
Geckodrive).

[http://www.geckodrive.com/geckodrive-step-motor-
drives/g540....](http://www.geckodrive.com/geckodrive-step-motor-
drives/g540.html)

~~~
nictinkers
That Geckodrive product appears to connect via a standard parallel port. I
don't believe Geckodrive has a USB breakout board. You're possibly using the
SmoothStepper from Warp9, the KFLOP board from Dynomotion, or one of a couple
of Chinese products of widely varying quality.

Once upon a time, the upper end of the market used expensive dedicated
hardware for CNC motion control. The low end of the market used commodity PCs
ruining the signals out the parallel port.

Nowadays, the high end of the market is using PCs to do complex motion control
(with computer vision etc) and the low end is using variants of Arduino boards
with firmware like GRBL. With GRBL, the G-code itself is fed out the USB in a
serial stream and the hardware does the motion calculations. Having the motion
control in dedicated hardware is much nicer than having it on a PC with an
operating system that can interrupt the fast timing loops and as hobby
electronics gets more capable, you're going to see this set up more and more.

~~~
digi_owl
> having it on a PC with an operating system that can interrupt the fast
> timing loops

I wonder if this is also the case for old lab equipment that keep running one
some dusty DOS box because replacing the equipment is expensive and time
consuming.

------
cortesoft
What about just installing a parallel port on your computer?
[http://www.amazon.com/StarTech-com-Express-Profile-
Parallel-...](http://www.amazon.com/StarTech-com-Express-Profile-Parallel-
Adapter/dp/B001Q7X0Z8)

~~~
downvotemyjokes
That will likely suffer from the same drawbacks as 'installing' a parallel
port via USB. You still lack the timing precision required to bitbang out many
of these protocols.

~~~
i736680
USB latency is generally 0.25ms. PCI-Express latency is around 250ns. That's
three orders of magnitude lower. I'm not sure how you can say that this will
suffer from the same problem.

~~~
downvotemyjokes
I'd wager the device hanging off the PCIe bus looks very little like a
traditional parallel port to the CPU. Notice the modes supported by the device
don't mention 'RAW', and a number of reviews bitch about ECP not working.

Just because it is on pcie doesn't mean it isn't just emulating the most
frequently used parts of a parallel port.

~~~
n00b101
I have successfully used a StarTech PCIe parallel port adapter card to
interface with a stepper motor controller board, and I'm able to run CNC
machining operations from LinuxCNC. It works fine in EPP mode (communicating
bi-directionally).

The parallel port is actually very cool. You can take a high-end Linux machine
and add the parallel port as a low latency GPIO interface with 25 pins. It can
be used to control LEDs, motors, etc, and can also be used to receive sensor
data, etc.

What is 'RAW' mode? I think you are referring to a legacy TCP/IP network
printing protocol also known as "Port 9100." I'm not sure that's relevant to
parallel ports?

~~~
downvotemyjokes
By 'RAW', I mean being able to drive the port by poking at 0x378 in a highly
controlled manner. (Not terribly uncommon when the hardware in the article was
originally released)

~~~
stevetrewick
This has been my experience when trying to interface with some legacy LPT
stuff, much of the _software_ of the era is basically hard coded to do that
and won't play well with (or sometimes even recognise) the PCIe add on ports.
YMMV, clearly.

------
sdk77
I fondly remember a university project where we made an mp3 player - hardware
based around an Intermetall (MAS) chip and the software to drive it. This was
late 90's and the run of the mill 486 struggled to play 256kbps mp3's. I
designed an interface around a PAL chip that received nibbles from the
parallel port and serially sent them to the decoder chip. The program to parse
the mp3 and bit-bang the parallel port I wrote in Turbo Pascal, and it
actually did an amazing job, up to 320kbps mp3 could be played. Fun fact: the
PAL originally couldn't quite keep up, so I had to increase the supply voltage
(as well as the clock voltage level) and attach a heatsink to it!

------
jpm_sd
This is a cool hack, but I think the article would benefit from a deeper
explanation of why "USB to serial" worked and "USB to parallel" would not.

~~~
tyingq
>> "USB to serial" worked

Somewhat. The combination of vendors sunsetting older chipsets (Prolific HX),
and their reaction to counterfeit chips makes the USB-to-Serial world a huge
pain in the ass.

I'm hopeful the CH340 chipset eases the pain of supporting non-tech end users
with these things.

~~~
janekm
CH340 has no practical Mac support last I tried. Try CP2102, works great and
cheap too.

~~~
voltagex_
Oh boy - looks like the same kinds of problems that happened when Microsoft
started enforcing driver signing. [https://tzapu.com/making-
ch340-ch341-serial-adapters-work-un...](https://tzapu.com/making-
ch340-ch341-serial-adapters-work-under-el-capitan-os-x/)

How difficult would it be to write a driver for these adapters from scratch?

------
digi_owl
One of the most intriguing uses of a parallel port i have seen was back in the
early days of digital sat coding.

It was a crude PCB, some wires, and a old IBM PC.

The PCB was shaped such that it fit the receivers card reader, along it was 4
lanes going from the contact pads to the other end that protruded from the
reader, from there went 4 wires that was poked into specific holes in the
parallel port, and then a program was fired up on the PC that did the
decoding.

~~~
cnvogel
I think you are referring to a “Season 7” interface by which a PC could
emulate a smart card for pay TV encryption.

One side was a PCB the shape of a SmartCard, only slightly longer. The part
protruding from the satellite receiver/TV decoder had a single 74hc driver on
it (I think an open collector driver of some sorts to handle the half duplex,
bidirectional, data pin of the smartcard interface).

------
GnarfGnarf
The parallel port was really neat. I once connected my furnace to a PC, to
track when the thermostats were opening the hot-water valves.

My house has hot-water heating (as opposed to electric or hot air). I would
occasionally observe the furnace coming on for a few seconds, then shutting
down. I suspected a malfunction. So I connected the 24 v. valves that control
the flow of hot water to the radiators, to relays. Each relay opened/closed a
pin on the parallel port. I wrote a program to record the status of the
parallel port.

I was able to determine that the furnace was coming on at the very end of a
heat cycle, just when the room had reached temperature. The furnace would kick
in just before the room stopped asking for heat. So it was OK after all.

------
byuu
Props to innovating a solution. But since this is SNES related ...

I've been working with people over the years on an SNES<>PC interface. Idea
being, you could dump SNES games from the cartridge port to the PC. Or you
could upload hardware diagnostic/test programs (for emulator development) from
the PC to the SNES, and then read back the results to the PC for analysis. Or
just do crazy stuff like linking multiple SNES units together, support netplay
on real hardware, download an unlimited amount of game level content, mix in
audio from the PC via SNES commands, etc.

Here's the history:
[http://i.imgur.com/ucxVbJa.jpg](http://i.imgur.com/ucxVbJa.jpg)

We started with the SNES controller port and used bit-banging code to a
MAX232N, and connected the other serial end to a PC serial<>USB adapter. This
worked out to around ~4KiB/s that we could transfer.

After that, I moved to a TTL-232R-5V cable, and spliced it directly to an SNES
controller. Same speed, but a lot less bulky.

The speed killer was having to bit-bang everything. The SNES has DRAM refresh
cycles that stall out the CPU for a short duration on every scanline, so that
greatly impedes the maximum baud rate you can bit-bang at.

Then I found out about the Teensy, which has a synchronous UART mode. Just
connect another line that you strobe when new data is available on your pin.
They have software drivers that simulate USB serial UART, so you just compile
that in and flash it onto the chip. This got us up to around ~30KiB/s, but
that was still rather slow.

Finally, we moved on to targeting the expansion port on the bottom of the
SNES. It exposes the entire 8-bit data bus. And so we connected that to an
FT232H board, which has built-in 1024-byte smoothing buffers in each
direction. From the SNES' perspective, it's just like a parallel port. From
the PC's side, it's just like a virtual COM port. This lets us hit ~160KiB/s
in both directions, and that's with code to verify data is available/can be
sent from both ends of the connection on every single byte transferred either
way.

The device itself is actually USB high-speed, so we could max out the SNES'
2.68MiB/s transfer rate, but we would lose the ability to ensure data or
buffer space was available during DMA transfers, so it wasn't as reliable to
do that.

...

Moving on to the Super Wild Card ... that thing is just a relic. It's unable
to dump games that use the SA-1 coprocessor (Mario RPG, Kirby Super Star,
etc), or memory map controllers (Star Ocean, Tengai Makyou Zero, etc), making
it quite limited.

The device we've built can dump games over a USB interface. Takes about ~20
seconds a game, and can dump absolutely every game in the library. And the
dumper is written in pure C/C++. About 200 lines of code to support every
possible cartridge type.

When it comes to _playing_ games, the SWC can't play anything with _any_
coprocessors (all the aforementioned games; plus DSP games like Super Mario
Kart, Pilotwings, Top Gear 3000, etc) [well, some of these copiers supported
DSP-1 pass-through, not sure if the original SWC supported that or not]. On
this front, the sd2snes is a vastly superior solution. You can put the entire
SNES game collection onto a micro SD card, and run anything the SWC can, plus
the DSP games as well.

All the same, even if it's not the optimal solution, I still give props to the
author of this hack. It's definitely cool to restore these old copiers, if
just for the novelty factor. I'm reminded of a guy who built his own SWC DX2
CD-ROM drive interface for loading games, because the CD drives are much less
common.

~~~
wicket
The original Super Wild Card can actually play DSP games if you have a DSP
cart inserted. It's the only enhancement chip that will work with pass-through
on the SWC. Of course the sd2snes is a superior solution but we didn't have
that 20 odd years ago when the SNES was still in its prime. ;) I've
contemplated getting an sd2snes but my 32Mb SWC (original model, pre DX) is
still working great after all these years and runs probably over 95% of
available games. sd2snes doesn't actually support that many enhancement chips
yet so I don't it's worth the investment over what I've already got. I'll
probably end up getting one when more chips are supported.

I must say that your SNES<>PC interface sounds great. Do you have a website
with more information?

~~~
byuu
Oh awesome, so the original SWC supported DSP pass-through as well? Thought
that was a SWC DX2 feature only (the 'Rolls Royce of SNES copiers.') Super UFO
actually had a NEC uPD DIP socket you could connect to its mainboard for DSP-1
support.

The chips that could never work with that design would be the SA-1, SuperFX,
S-DD1, SPC7110, MCC, and ICD2 (Supe Game Boy.) These coprocessors sit between
the SNES bus and the ROM/RAM, but copiers can only sit between the cartridge
and the bus, so you won't be able to substitute the game mask ROMs inside the
cart.

> sd2snes doesn't actually support that many enhancement chips yet so I don't
> it's worth the investment over what I've already got.

It does all the firmware-based ones we dumped except for the ST011/ST018 (two
Japanese chess games.) So that's DSP-1/1B/2/3/4, ST010, Cx4. But so far,
nothing does SA-1, SuperFX, S-DD1, SPC7110. I think the sd2snes _could_ do the
latter two, but so far it does not. ikari has been working on either SA-1 or
SuperFX, but I don't think it's panned out thus far. Those two are more
complex individually than the entirety of an NES.

I'm not sure if it does OBC1 or not. Nobody seems to care either way about
poor Metal Combat ;)

> Of course the sd2snes is a superior solution but we didn't have that 20 odd
> years ago when the SNES was still in its prime.

Undoubtedly. I would have killed for a parallel port copier back in '04\. I
spent about 5-6 years developing an emulator using a Super UFO 8.3j that I
paid $250 for in '01\. Every time I assembled a new hardware test, I had to
run this old DOS tool to generate a valid Super UFO copier header, split the
game into 1MiB chunks to fit on a series of 1-4 floppy disks. Then I had to
load each floppy onto the UFO, run the test, power cycle the UFO, put another
floppy in, go through the menu to copy the save RAM back to the disk, then
copy that file back to the PC for analysis. It took me about 10-20 minutes
(floppy disks are _slow_ ) per hardware test. And I must have done over a
thousand of them.

If I weren't poor back then, I'm sure I would have tried to purchase a
parallel-port copier.

------
rocky1138
I'm having the exact same problem with my Atari Jaguar, modified to use BJL
(Behind Jaggy Lines), which is a replacement ROM chip that lets you upload
games directly to the Jaguar's RAM using a Parallel cable plugged into the
second controller port. New PCs don't have a Parallel port and the USB
adaptors don't work :(

I've been considering trying to build something using my Raspberry Pi or get
into Arduinos to try and fix it, but I'm not really capable with hardware
stuff.

[http://jaguar.linkovitch.me.uk.s3.mytilde.co.uk/bjl/about.ht...](http://jaguar.linkovitch.me.uk.s3.mytilde.co.uk/bjl/about.html)

------
fit2rule
I'm really bummed at how quickly perfectly working and valid technologies just
get discarded when the new hot stuff comes out .. take, for example, SCSI.
SCSI was ubiquitous in computing, its everywhere. I have a 19" case full of
perfectly working drives.

But can I, for the life of me, find a modern SCSI adapter with ease these days
- say, USB-SCSI? Nope. Its just been discarded like yesterdays cheese.

Same goes for the Parallel port. What used to be a perfectly cromulant means
of wiring up some I/O for quick hacking has now been supplanted by a drawer
full of Bus Pirates ..

Meh.

~~~
rlonstein
> USB-SCSI? Nope. Its just been discarded like yesterdays cheese.

It's for that reason I've kept around the oddities like the Castlewood Orb
USB-SCSI cable and the Iomega JAZ cables. A couple of years ago I used the
Orb's USB-SCSI with an external power supply to fire up an old drive and check
the contents. Sometimes you just need it. Keep an eye (in the USA) on
[http://www.shopgoodwill.com/](http://www.shopgoodwill.com/) sometimes these
things turn up.

~~~
StillBored
Ebay has dozens of them, although the prices are outrageous. I even see the
adaptec usb->scsi converter I had a few years ago. The problem with them is
that there compatibility seems pretty limited, especially if you try to attach
an old scanner, tape drive, etc.

------
IvyMike
One of the coolest class projects I worked on in school back in the mid 90's
was a compiler for TTL_PAPERS, which was a hardware-assisted low-latency
interconnect between PCs used for barrier synchronization. It was also
correspondingly low bandwidth, but for the cases where synchronization was
your bottleneck, it was hard to beat it.

More info from the inventor (Hank Dietz) here:
[http://aggregate.org/TechPub/ICPP95/icpp95.html](http://aggregate.org/TechPub/ICPP95/icpp95.html)

------
jheriko
i love stories like this.

kudos to the author for taking it all the way to the finish line.

------
protomyth
I miss the 9-pin joystick ports more than the parallel ports. I hooked a
photocell to the paddle pins on one and had a huge amount of fun. I remember
Be had a huge port on the BeBox for hacking.

~~~
donatj
It was called the geek port. I never had one but read a ton about them back in
the late 90s. I was a true BeOS fanboy back then and tried my hardest to run
it as my primary OS. I usually ended up back in Windows 2k sadly.

------
xirdstl
Ah, the pre-USB interfaces. The most fun I had was figuring out how to read
the input from an old shipping scale which had serial port output. That
powered my keg monitoring server, which I eventually wrote mobile apps for. It
was the best side project I've worked on!

------
raimue
Now add a SD card slot and you could load all games you ever owned from it
without a computer.

------
philjohn
I have a rather faded memory of using a parallel port to transfer files
between our old 386 computer and the shiny, new, Pentium that replaced it ...
much faster than using floppy disks and this was before everything came with
an ethernet port!

~~~
rlonstein
> I have a rather faded memory of using a parallel port to transfer files

Indeed. It was called "Laplink" though that was a trademark
([https://en.wikipedia.org/wiki/LapLink_cable](https://en.wikipedia.org/wiki/LapLink_cable)).
In addition to the Laplink brand software there was Interlink which Microsoft
bundled with Win95 iirc, FastLynx (FastLink? my memory is also fuzzy), and a
bunch of shareware/freeware from the era (I remember simtel).

I was a field service engineer in the early 90's and carried around a six-
headed parallel/serial null modem cable just for this. I also got my hands on
a few of those (awful) Xircom Parallel-Ethernet adapters some time later and
those were just the thing for ruining an entire day getting some awful old
machine backed up onto Novell NetWare.

------
paddi91
Whoever is interested in buying one:
[https://aisler.net/tltx/swc_usb/swc_usb](https://aisler.net/tltx/swc_usb/swc_usb)

------
beeswax
Man we were proud when we soldered our own Covox DACs for the LPT; Our MODs
sure sounded awesome on those :)

And I didn't know DOSBox has an emulation for those, nice!

------
garyrichardson
I thought this was going to be about the space where a parallel port used to
be on the back of your computer. Was I disappointed.

------
gaze
I feel like PCI and ISA have left holes as well. PCI/e is a fiendishly
difficult protocol

------
justinlardinois
Definitely an interesting story, and I'm loving the other ones that come up in
this comment thread.

But I have to say the article name is a little overbearing. USB serves the
same purpose parallel ports originally did plus more. Yes, devices designed
for the parallel port might have trouble playing with modern hardware, but
you're just as likely if not more to have drivers that don't run on modern
operating systems and are closed source so you can't do anything about it.

