Long ago, when mainframes ruled the earth, computers were mute. In this era before MP3s and MMUs, most home computers could only manage a simple beep or two. Unless you had an add-on device like the Covox Speech Thing, that is. This 1986 device plugged into your parallel port and allowed you to play sound. Glorious 8-bit, mono sound. [Yeo Kheng Meng] had heard of this device, and wondered what it would take to get it running again on a modern Linux computer. So he found out in the best possible way: by doing it.
The Covox Speech Thing is a very simple device, a discrete component digital-to-analog converter (DAC) that uses computer parallel port. This offers 8 data pins, and the Covox couples each of these to a resistor of different value. Tie the output of these resistors together, then raise the voltage on different pins and you create an analog voltage level from digital data. Do this repeatedly, and you get an audio waveform. It’s a simple device that can create the waveform with a sampling frequency as fast as the parallel port can send data. It isn’t as Hi-Fi as modern sound cards, but it was a lot better than a bleep. If you don’t have one lying around, we’ve covered how to build your own.
The main problem that [Yeo Keng Meng] found with writing a program to drive this device is the sophistication of modern computers. Most of the time, devices like parallel ports are hidden behind drivers and buffers that control the flow of data. That makes things simple for the programmer: they can let the driver take care of the tedious details. This device requires a more direct approach: the data has to be written out to the parallel port at the right frequency to create the waveform. If there is any buffering or other fiddling about, this timing is off and it doesn’t work. [Yeo’s] code gets around this by writing the data (created from an MP3 file) directly to the parallel port address in memory. That only really works in Linux, though: it is much harder to do in OSes like Windows that do their best to keep you away from the hardware. It’s arguable if that is a good or a bad thing, but [Yeo] has done a nice job of writing up his work in a way that might intrigue a modern hacker trying to understand how things in the past were both simpler and more complicated at the same time.