A Commodore 64 program on The 8-Bit Construction Set

The case of the second program on The 8-Bit Construction Set record gave me more trouble than the first, for Atari, but I succeeded.

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.

 

The cover

A bit of context and explanations. Commodore 64 programs are particularly tricky with vinyl records because they depend on precise timings (not precise frequencies). Moreover, the audio conversion usually needs to be done in multiple steps: record the audio and convert it to .tap (some programs record directly), then to .prg to simplify launching. One of the reasons is related to how the Commodore 64 handles cassettes: the computer lacks an audio input, and the cassette drive performs internal processing and sends digital data to the Commodore 64.

In practice, cassette dumps usually go through an original drive (and its cassette) with either a real Commodore 64 or an intermediary that retrieves the data. But with a vinyl, naturally, the recommended solution is to record it onto a cassette. In my case, I tested by directly recording the turntable on my Mac with different levels before attempting to convert to .tap and then to .prg (a mistake).

The explanations

Since that didn’t work, I still read the documentation and realized I had missed something: « and follow the load instructions inscribed on inside of record. » It’s literal: the instructions are engraved on the record and even mentioned on the Discogs page. I didn’t need it with the Atari program because the CLOAD / RUN sequence is standard.

The Atari side


Clearly visible under light


The Commodore side


Likewise

For the Commodore 64, it took about sixty tries before I got a .tap without errors. For my future self, here are the steps: record with a good level, amplify like crazy, convert with audiotap, run through TAPClean. In the latter, after cleaning, a function can attempt to correct errors if they’re not (too) numerous, which worked in my case.

But I had only done half the work. On the record, it says LOAD "BEIGE",1,1 SYS 2304. Since I’m not very familiar with the Commodore 64, I typed the command all at once, but that’s a mistake. Actually, you need to type the first part of the command (LOAD "BEIGE",1,1), wait for everything to load, then type the second part (SYS 2304). To understand well: the first command loads the program BEIGE from the cassette drive (the first 1) to the address indicated in the program (the second 1). This implies that it’s a machine language program and not BASIC. The second command, on the other hand, launches the program at address 2304 (an absolute address).

With the .tap (or .prg), it generally doesn’t work by default because the emulator tries to run the program without success. So, I used Denise, and it’s a bit slow: you have to type the command, manually start the playback, wait, and then type the second command. In the video, I accelerated the loading 20x since it takes about 2 minutes (the length of the program).

The program offers scrolling text, an image with the Commodore 64 logo with text inside, images with random data (similar to Atari), and a program, SID-303, which allows playing with the sound chip, the SID. You navigate through settings with cyan letters, and the + and - keys allow modifying values. There’s also help, but I couldn’t capture the image natively (you have to hold h). It’s a bit passive/aggressive and explains how to handle audio on a real Commodore 64.

The program



SID-303

Help

In any case, I can check off another record on my list.