Reading Old Data Tapes, the Hard Way

Those who were around for the pre-floppy days of computer mass storage were likely to have made the mistake of slipping a cassette tape containing data into a stereo tape deck. Instead of hearing the expected Awesome Mix, the speakers gave off an annoying bleat, warbling between two discordant tones and no doubt spoiling the mood.

What you likely heard was the Kansas City standard, an early attempt to provide the budding microcomputer industry with a mass-storage standard. It was successful enough that you can still find KCS tapes in need of decoding to this day. That job would be a snap with a microcontroller, which is exactly why [matseng] chose to do it the hard way and built a KCS decoder with nothing but discrete components.

The goal was to decode the frequency-shift-keyed (FSK) signal into an 8-bit parallel output, and maybe drive a seven-segment display as the characters came off the tape at a screaming 300 baud. Not an IC is in sight in the schematics; as [matseng] says, it’s nothing but “Qs, Rs, and Cs.” All the amps, flip-flops, and counters needed are built from a forest of transistors, and even the seven-segment display is a DIY affair of LEDs in a 3D-printed and hot-glue frame. The video below shows the display doing its best to show the alphanumeric characters encoded on the audio tape. And for who absolutely need a dose of Arduino, [matseng] used one along with a dead-bug low-pass filter to emulate KCS signals, for easier development.

We always appreciate hackers who take the road less traveled to arrive at a solution, but if you’re pressed for time to decode some KCS tapes, fear not – all you need is a PC and Audacity.

29 thoughts on “Reading Old Data Tapes, the Hard Way

  1. In Poland at the end of the eighties one of the state-run radio stations actually broadcast computer programs for people to record them and use them with their microcomputers (Spectrum, Atari and Commodore). Given that the standard tranmission speed for tape storage was 600 baud, the broadcast could take quite a while. So each Friday, at four o’clock in the afternoon, you could tune in to a popular radio station to listen to twenty minutes of ‘bleating’.

    And yes, I did listen to that when I could only dream about having a computer. But just a few years later I had my own 65XE with the tape recorder and a rack full of ever-lengthening tapes… But I did not record the broadcasts – who needed some lame educational software when I could pirate GAMES?

      1. The idea was to have each bit be an integer number of cycles. I’m sure the choice of 4 or 8 cycles instead of using a different frequency and something like 4 or 7 cycles came down to parts count.

      2. That was one of the main criticisms of KCS – if your cassette recorder had significant distortion, it was possible for the 1200 Hz tone to have high enough 2nd harmonics to show up as 2400 Hz. But in practice, it wasn’t actually a problem, and there was a significant parts advantage since once you had the 2400 Hz, it was just one more flip-flop to get the 1200 Hz.

        1. But oh, never mind that – after reading Bill’s comment, I realize that this was being done in software, so flip flops don’t count. It’s all about getting it into a small piece of code, since that code had to fit into the same 4 kB or so, along with your programs.

  2. Okay, I get wanting to build things with discrete components, but 3D printing your own 7-segment LED displays? Now I’m going to have to do that.
    Oh, wait: but it’s only REALLY retro if you build an AVR microcontroller out of transistors to run the 3D printer.

    1. Actually the display was out of necessity – I discovered a day before the RetroChallenge deadline that I only had 2,3 and 4 digit displays in my displays-box. And I *really* wanted a single digit display. But I think it turned out rather well fitting in the clumsy homebrew retro style of the rest.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.