The ‘Fun Program’ from Emitape cassettes

Today, a program that isn’t on a vinyl record or even a cassette tape, but rather on the jacket of a cassette tape. Indeed, Emitape computer cassettes hid two small BASIC programs inside.

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.

 

I stumbled upon this about a year ago from 8-Bit Show And Tell and it took me a while to find the cassettes. In the early 80s, audio cassette tape manufacturers sold versions for computers, which essentially had one advantage: they were short. One didn’t necessarily need 60 or 90-minute tapes to record programs, so they sold 20 or even 15-minute tapes (like here). This probably saved on cost (less tape) but also theoretically improved quality, with perhaps thicker or better quality tapes (I’m not sure if this is true).

A 15-minute cassette tape (less than 8 minutes per side)


Code inside the fold (the cassette has seen better days)

Inside the inner fold of C15 and C20 cassettes (I have C15s), there were two small BASIC programs, advertised as « Fun Program ». The first one was for the Commodore VIC-20, and the second for the Sinclair ZX81. In both cases, they’re just a few lines of BASIC. 8-Bit Show And Tell had demonstrated the programs live on real computers; I just attempted to put them into emulators. They are hidden and poorly documented: the inside of the fold isn’t necessarily visible and the text is quite small, so I scanned everything at 600 dpi to be able to enlarge it.


The code (at the bottom)

The VIC-20 Program

VIC-20 code

I did the VIC-20 program (a computer released by Commodore before the Commodore 64) after the ZX81, but it’s simpler to discuss it first. First hurdle: emulation. Power20, an emulator for Mac OS X, is too old for a modern Mac (the Aqua icons give it away), but Vice can emulate the VIC-20.

VIC-20 in Vice

Second hurdle, how to run BASIC code? I found out quite quickly: CBM prg Studio. It’s a code editor for Commodore programs and supports the VIC-20. I won’t go into the few trials it took to understand how it works, and it’s Windows-only.

Adapting the code posed two problems. The first was how to type the inverted heart (♥), which clears the screen. I struggled a bit, but I found out: you have to type {clear} in the code (I saw it with the virtual keyboard, Tools -> Screen Code Builder). Then, when I launched the compiled program, I had strange characters instead of my text. But it’s related to the VIC-20’s operation: there’s no case management. So BASIC code typed in UPPERCASE in the editor gives a strange result related to PETSCII (I believe). So I converted my text to lowercase, and it displays correctly in uppercase on the emulated VIC-20.

Code in the editor

Finally, with the same program, I compiled my code to output a .prg, which works in Vice.

The program


Like the ZX81 (below), it’s a sort of magic slate: you press Enter and you can move the cursor (here with arrows) to draw things. Given the number of lines, it’s obviously basic (get it?): you can go back over a line, for example.

The ZX81 program

The ZX81 code

For the ZX81, I didn’t really bother much: I copied/pasted the code thanks to the character recognition built into macOS. Once in a text file, I made some minor corrections (it’s never perfect) and saved everything. To run it in an emulator, I used ZXText2P: a small C program to compile (cc zxtext2p.c). There are a few warnings, but it compiles directly under macOS.

Then, with the line numbers, I typed the following line to generate the code.

zxtext2p -s 100 -i 5 -o mygame.p mycode.txt

I used the ZSXP emulator, launched the program… and corrected some code. Apparently, the copy/paste had put in some wrong parentheses. Once the code was corrected, it launched with the command R (for RUN). I’ll show you a short video of the « Fun program. » The program is a bit odd on the arrows: it uses 5, 6, 7, and 8. In fact, the ZX81 keyboard doesn’t have arrow keys, but as a result, the orientation is surprising: 5 for left, 6 for down, 7 for up, and 8 for right. I could have modified the code to use the numeric keypad, by the way.

As for the rest, it’s a sort of basic magic slate, allowing you to move a black bar on the screen. It’s not particularly fun (especially given the keys) but it’s functional and it can help appreciate BASIC.

The result in action

It was obviously less surprising than a program hidden in a hidden track on a vinyl record, but I still find it interesting to see that audio cassette manufacturers hid little things like this.