Archiving my dad’s 34 year old Commodore 64 program
My father owns a collection of carefully labeled cassette tapes in a small cardboard box. They are not being used for 80's music but as a storage medium for the Commodore 64. Being called ‘datasettes’ they are lodging the programs my dad typed into that thick TV-connected keyboard over 30 years ago. If he instead had poured tea over the computer ⑃ I would not write this story — but why would he do such a thing? Anyway, my father now works as an insurance agent and has no touch points to programming. Being a web engineer I am very interested into the code my dad wrote before I was born. I wanted to find out if there is a way to make one of his programs available on modern computers.
The program source is encoded into the datasette audio waveform. For this I bought a small cassette capturing device to record the tape’s audio onto the computer. The result is a WAV audio file. When listening to it I wondered about my aunts’ and uncles’ reaction to these strange high pitched sounds produced whenever they put a datasette into an ordinary cassette player.
Using a program called WAV-PRG by Fabrizio Gennari the captured WAV audio file can be interpreted and exported to a PRG file which in turn can be fed into a C64 emulator. I was able to run WAV-PRG on a Windows XP virtual machine. When importing the tape’s WAV file using the fast loader ‘Turbo loader’, the software recognised the program ‘VIEHBESTAND.PRG’.
I chose the Commodore 64 emulator emudore to run the PRG program for the reason that it provides a Web Assembly build allowing both the emulator and the program to run inside modern web browsers. Like this, the program is accessible by both my father and myself even though we are working on different platforms. I was amazed to see the emulator creating a window into the past by bringing to live the newly constructed PRG at the first try.
The program my father wrote in 1984 is called ‘Viehbestand’, which translates to ‘livestock’. It is a manager for cows being housed in the local farm with 50 cows currently indexed. The app offers a user interface for adding, removing and changing entries along with different views, filters and unexpected 3D drawing capabilities when it comes to a graph of a cow’s yearly milk production. I asked myself what my father’s original intention was. Was it to replace the current paper-based administration by this software? He later explained to me that the prototype was all about a proof of concept.
Given that SQL databases I’d choose today for such undertakings have not been officially adopted yet (they will be in 1986), I am fascinated by the way this program stores data. Each cow on the local farm is represented by two consecutive
DATA commands being appended to the end of the source code of the program itself. In other words the data is literally part of the program. I never thought I would reverse engineer a data structure put in place by my father but here we go. The first row appears to be covering meta information whereas the second row includes the milk production stats for each month. The list view and graph data shown above looks like this in BASIC code:
Each and every time the data receives updates it was necessary to save the changes together with the program on a datasette. Despite using a fast loader this requires a lot of time and a lot of manual actions, for instance pressing record on the cassette unit.
In the end this was an interesting trip into the past that concludes in discovering early data structures, in having a Commodore 64 program archived for the foreseeable future and in a lovely hand-made Christmas gift for my dad that he didn’t expect. Now he’s able to run his program by simply navigating to a web page. I still have the cardboard box on my desk. Maybe there is more magnetic-encoded treasure to be found.