A TRS-80 program on a vinyl record by the band Pinback

Yet another program on a vinyl, and I recently discovered it. It’s on the record Information Retrieved Pt. B by Pinback, which dates back to 2011.

Instead of repeating all the previous articles each time, I’ll refer you to the dedicated page, which explains what I do with vinyl records and lists all the pages containing programs, explanations, etc.

 

First, the context. Following the previous record, I looked more specifically to see if there were records for the Dragon 32 and its equivalents like the TRS-80. Bingo: in this thread on Reddit, I found some information, confirmed by this other topic.

The cover


The text mentions the program sounds

The record is a 7-inch that contains a track named CLOAD "Q", the command to launch a program. There’s a small related explanation in one of the papers provided with it. The coordinates on the cover lead to this address in Russia.

It’s in Russia

The first hurdle, the record is tricky to play. I have a fairly basic turntable, and it has an auto-stop mechanism that isn’t disengageable: when it reaches the limits, the arm automatically returns. The problem is that the data track is placed a bit further than the limit. There’s the music, an endless track, a space, and then the track. After a few attempts to place the stylus in the right spot – without success – I found a solution: to place it at the end of the endless track, lift it, and manually move it slightly to land on the data track. It was tedious, but I got a recording.

The space between the two tracks is clearly visible

Next, decoding the data was complicated. The various tools I tried to use to decode the content didn’t work. More precisely, they might decode the beginning, but that’s it.

After a basic analysis of the audio file, I realized I had gaps in the audio. I don’t know if it’s from my recording, my record, or the pressing, but it was annoying. I tried removing the silences, but without real success. I tried making new recordings, cleaning the record, but again… nothing. After the equivalent of a day’s work on it, I gave up and tossed a message in a bottle. At the time, it’s quite rare for recordings to resist: out of around thirty vinyl records, I have two or three in this case, without being certain they contain coherent data.

But the message in a bottle worked: Anton, the author of WAV2CAS, was able to help me, and I’m really thankful. He first noted the same problems as me, gaps in the audio stream. But he had an idea that I didn’t: he took the decoded version and shifted the bits in a hex editor assuming that the gaps didn’t contain data. Apparently, after a few shifts, he got readable BASIC code. He then corrected some typographical errors in the code, probably related to decoding, and provided me with a usable CAS file.

Emulation

For emulation, I thought the program used for the Dragon 32 would work. With Xroar and the ROMs, we can emulate the TRS-80… but the CoCo model. Not the one I need. So, I used the same program as Anton: TRS80GP. It conveniently works on Mac, which simplifies things for me. After some trial and error because I’m not familiar with the machine (it boots into its own DOS by default in the emulator), I launched the program from the command line. You need to fetch the executable in the package (/trs80gp.app/Contents/MacOS/trs80gp) and simply pass the .cas file as an argument.

The program itself is straightforward: it’s a text-based game in BASIC. I’ll provide screenshots of the various screens, although there aren’t many…

Opening


Choice 3: lost


Choice 1


1 and 4 give the same response (which is illogical).

From the BASIC code, there’s likely a decoding error in the logic (or an error in the program): presumably, choices 3 and 4 should lead to an error. Likewise (I haven’t corrected it), it’s probably EXISTENTIAL instead of EXMSTENTIAL.

There’s likely a missing IF D = 1 THEN at line 170

But overall, we understand what the program should do (thanks again, Anton).

The last point is that the text tends to indicate that there’s an Information Retrieved Pt. C but I haven’t found any information on it. Part A also apparently contains things, but I haven’t retrieved the record yet.