Preserving 5.25” floppies and audio cassettes

Next to intensively preparing for a conference talk, I had the chance to attend a preservation-session with people from the Swiss Video Game Archivists association. I contacted RF regarding some 5.25” floppies for the Commodore 64 that I’ve been trusted with by the developer of Robox.md), as well as some audio cassettes for the 4A. RF in turn contacted RM who is specialized on preserving and restoring new media and has a workshop in Bern. We got joined and helped by the expertise of EB, as well an SVGA member.

Preserving the Commodore 64 floppies and the 4A cassettes was unknown territory for us. Whereas RF had a lot of expertise regarding floppy preservation and RM on audio cassettes, there were still some missing bits and pieces. RF mentioned how there is a lot of conflicting information regarding C64 floppy-drives and what setup actually works for reading them out properly, we all didn’t have a clue on how to approach the cassettes.

Open: 895619cb6def9cb9beae348e5965f2f3_MD5.jpeg Open: 895619cb6def9cb9beae348e5965f2f3_MD5.jpeg Open: 895619cb6def9cb9beae348e5965f2f3_MD5.jpeg Open: 895619cb6def9cb9beae348e5965f2f3_MD5.jpeg

Essentially, these are just audio tapes. But, the audio on them encodes data. To read the data, the computer first listens to the tape and decodes the audio into instructions that the machine understands. The problem we had was, that we didn’t know how the data is encoded and, in turn, what settings we need to produce a proper backup of the tape. A first recording was not recognized to contain data by the JavaScript-based 4A emulator /.

What followed were try-outs and discussions regarding how to record the tapes, and how to prepare them for the emulator. Along the way, we learned some important bits via unige.ch/medecine/nouspikel/ti99/cassette.htm and dimhoff/ti99_4a_tape_decode: Tool for decoding TI-99/4a Cassette Tape recordings. We guessed, that since audio-recording can be a messy business, especially in the 80ies when hardware was less exact, that it can’t be that difficult to produce a proper backup. We finally had success with the tool by dimhoff.

The beginning of each data encoding is preceded by plenty of zeros, which the computer uses to calibrate. My wild guess would be, that the JS99’er is more sensible regarding this error correction and wasn’t able to adjust to our recordings. The tool by dimhoff, on the other hand, has a lot of code around these issues of differences in recordings and was able to deal with what we provided.

When looking at the wave-forms on the recordings, one can easily spot the different programs and games that are stored on the cassette. In that way, I was able to make an educated guess, where a game is, that Laro Schatzer mentioned in our discussions. I clipped the specific part, decoded it with the dimhoff/decoding script, and re-encoded it with another script from the same collection. Looking at the wave forms again, the difference is apparent.

Open: 193146edaaef2a187d819cb6dd8e90c7_MD5.jpeg Open: 47711230f70573dcf55a9c9d91fb1f3f_MD5.jpeg Open: 47711230f70573dcf55a9c9d91fb1f3f_MD5.jpeg Open: 47711230f70573dcf55a9c9d91fb1f3f_MD5.jpeg

The re-encoded audio file was now recognized by the JS99’er emulator, and we could play the game the first time again after probably four decades!

Open: 3e274c8bd1fa00e81ee518233b445332_MD5.jpeg Open: 768e4fd37e205d2842ecf7e7331c9ec7_MD5.jpeg Open: 768e4fd37e205d2842ecf7e7331c9ec7_MD5.jpeg Open: 768e4fd37e205d2842ecf7e7331c9ec7_MD5.jpeg

What especially stuck with me was the embodiment of this process. In our approaches to figure out if we do this correctly, we listened to the tapes being played out and tried to guess, if it sounds right. We wanted to figure out if our recordings are hitting the correct frequencies, since that is an important aspect of the data encoding. We also needed to know, when the recording was finished to continue giving instructions to the computer or start another recording. And since cassettes are a time-based media, that aspect also played a roll. When trying out if our prepared recording works, we had to give the emulated 4A the instruction to listen for data, play the recording and wait until it played through, then continue with instructions. The game above is around 300 rows of code and about 2 minutes of audio. The sound the recordings produce is very similar to the sounds dial-up modems produced in the 90ies, but more industrial and uniform. The encodings are so dense, that one bit is less than 1 millisecond long, which is so short that our hearing can’t comprehend what is happening.

On one hand we had clean data, encoded properly in 0s and 1s, and on the other the messiness of audio-recordings and human hearing.

Log 2024-17

  • I read through the explanations that Laro Schatzer and Paolo Baerlocher provided regarding their source code. It helped me choose what piece of code I actually want to analyse regarding my Leisure Electronics contribution, as well as understanding what and why they were interested in.
  • Critically read the parser routine for Robox.md). Analysing code per se is, as Marino mentioned in marinoCriticalCodeStudies2020, not something that uncovers profound insight, but something that needs to be contextualized. And only in this process can it unfold into something meaningful.
  • Rewrote parts of the proposal for said conference after getting my review feedback and also in accords to the research I was able to do so far. I left out Ball Raider.md) since I don’t have the same amount of material accessible, as with Robox.md) and Aldebaran.md).
  • Read Game Studies - “If You Can See Something for its True Essence”: Exploring the Origins of the Personal Computer in TIS-100 and found some interesting bits about nostalgia and thinking on the relationship of early programmers and computers/computing. It’s important that I don’t overly idolize this relationship, or at least, that it doesn’t sound like I do. That was also feedback that I got for my Leisure Electronics contribution, and which I didn’t intend at all.
  • Invested a lot of time to work on two presentations. The first is a guest-lecture I can hold with AB on the topic of “Humanities of the Digital”, how digital objects can be researched through classical approaches. The second is my Leisure Electronics contribution, which I already linked a few times here…
  • I spent Friday with people from the Swiss Video Game Archivists association. RF, RM and EB and I joined together to work on material from Laro Schatzer, namely some of the original 5.25” floppy disks for Robox.md) as well as cassettes for the TI-99/4A with unreleased material.