Self-Contained Tape Loader For The ZX Spectrum

While these days we’re blessed with the magic of always-on internet connections and cloud services, back in the day software was delivered on physical media. Some of the most reviled media were data tapes, much maligned for their glacial loading times. However, the tangibility did give them some charm, and [JamHamster] decided to recreate this with his self-contained virtual tape loader.

The guts of the loader is a TZXDuino, a Spectrum tape emulator related to the Arduitape. It uses an Arduino Nano to store tape data files and replay them to load software on the retro platform. [JamHamster] combined this with a cassette tape shell and the head from a cassette audio adapter to make a digital tape emulator. The TZXDuino is crammed in the shell with a few mods, including a sensor that detects the play head moving inside the cassette to trigger playback. This stemmed from an earlier mod that did the same, just without an onboard battery.

It’s a tidy hack, and a very cool way to load games on your retro computer. With a firmware flash, it should be compatible with other systems too, thanks to the various computers supported by the wider Arduitape project. Tape emulators are popular with the community, thanks to eliminating the hassles of working with a now-obsolete format. Video after the break.

19 thoughts on “Self-Contained Tape Loader For The ZX Spectrum

    1. Would it be possible to turn this into an mp3 player… for standard cassette decks? Hmm? I bet it could be…. imagine this cassette inside a deck where the tiles and artist could be displayed on the screen… or even… an audio streaming option? Omg… a audio cassette that turns your tape deck into a streaming capable receiver would be pretty cool..

          1. Not exactly. This device uses TZX files. These are digital copies of the digital content of a Spectrum tape, not a digital recording of the sound in that tape. As you may know, a Spectrum tape contains digital data converted into and analogic sound signal. The Spectrum reads this sound signal and extracts the digital data contained in it. The TZX file stores this digital data. You can rebuild the sound signal from this digital data and play it back so the Spectrum receives the sound signal it was expecting. Or you can play a Wav recording, There is no difference for the Spectrum but a wav recording is a file much, much bigger than a TZX file. Of course you can reprogram the Arduino to play Wav files instead of rebuild sound signals from TZX files. The herdware is not modified, only the Arduino program.

    1. Although an MP3 is possible does that actually make sense?
      The modulating scheme is well known and does not require a lot of computational horse power (look at the devices that were doing this stuff). It makes more sense to support encode and decode of the original and new data respectively. Also store the original and new data as files on say an SD card, or serial NOR flash in an FATFS formatted system. A micro USB interface can allow you to read and write data to the “media” from a newer machine. The amount of space needed for the MP3 data might be 6M vs 48k (original) and the amount of performance needed to make the MP3 and play it back is a massive step up in performance requirements.

      Side note a fun secondary project would be to make a FAST mode for the modulation, the original schemes for these things were for old cassette tapes with high variance in speed etc. That limitation doesn’t exist anymore, using a faster modulation scheme (8 to 16x) might make load time less “strenuous” maybe? The cassette emulator won’t have trouble as the modulation scheme(s) are known simple and require little processor performance.

      I would say an STM32L4 could do the whole thing, SD support, QSPI with large NOR flash, audio CODEC for play record (out and in) and the processor can handle the modulation scheme (it has an FPU and decent enough integer performance with a max speed of 80MHz). The whole thing wouldn’t be exactly expensive either to make. I think I am going to play with KiCAD and STMCubeIDE now … :D

      1. id probably just do an esp32 instead of the arduino, that would give you bluetooth, wifi, and some mcu horsepower. it even has a couple dac pins and a few megs of flash (up to 16 megs on some modules. a lot more than the arduino).

    1. seriously. i got ahold of a sinclair z80 in about 1990, cheap at a garage sale, and even though you would think i would be excited to finally have my own computer, frustration is the only thing i encountered.

  1. I had the ZX-80 back when I was in middle school/high school long ago. Looking at the keyboard (with the blue buttons) and an ad on ebay brings back memories of trying to squeeze what I wanted to do into 1K of RAM – including the screen output which would shrink on the TV as your program grew in size. Really enjoyed every minute with the ZX-80.

    I remember writing a simple loop program that would calculate the exponents of values and print a table on screen. Maybe a total of 20 values and I remember calling in my parents to show them how fast (about 1/2 a second) the ZX-80 was able to calculate and display them.

    The tape system worked pretty good for me. No recollection of loosing programs. But then again, how much can go wrong with 1K. Still have several audio tapes with the programs that I wrote with little labels and the ZX-80.

    Interestingly, no other computer caught my imagination after than. I really liked the keyboard design except for the non-mechanical buttons.

  2. Congratulations [JamHamster] for the awesome build!
    Some may argue that one can buy cassette form fit mp3 players and bluetooth players for cheap online, but where is the fun on that?

  3. Cool idea. Two questions. Do you think it is possible to do this with a ZX microdrive (it would be faster)? And would it be possible to generate sufficient electricity from the wheel rotation to make it completely wireless?

    1. Nice idea about harvesting energy from the cassette drive! The take-up spools are designed to slip, so you wouldn’t get much power out of them but the pinch roller that actually pulls the tape past the read head is much more powerful so it might just be possible.

      As for the microdrive, it uses the edge connector on the back so you could presumably get data into the Spectrum almost intantaneously, unlike the microdrive. More akin to a games cartridge on an Atari.

      I just want some MP3 files of my old games – no new hardware needed. All my Spectrum tapes are long since degraded beyond use (as are my Atari floppies) :-(

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

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