Programming

Sections in this Article:

The Commodore 64

I am probably showing my age, I came from the 8-bit era, the programming days of Basic and assembly language, the days of the bedroom programmer with aspirations of creating the next game masterpiece and becoming rich in the process! Of course, it didn’t happen for me, but it ignited a spark that persists to this day. It’s no surprise that programming/software shaped both my career and hobbies!

The Commodore 64

My very first computer was a Commodore 64, the famous bread-bin and historically, the most successful home computer to date. I first played the games but after I discovered the Commodore 64 Programmer's reference guide and the Basic program listings within, I began painstakingly keying in this code to make a balloon sprite glide across the screen. That seeded a thought, 'If I can write code to do this, then I could write a game!'. And so it began, I designed sprites on graph paper then calculated the byte code for them. After I had keyed this data into Basic programs, I created simple game loops and created an entire game in a weekend!

My parents had sensed this passion in me and subscribed to the magazine, 'Input', published by Marshall Cavendish. It was a weekly publication and contained a wealth of information about various computers of that era including the Commodore 64. The magazine contained pages of listings and I spent many hours keying them in. Importantly, this was an educational magazine and I slowly began to learn the science of computing!

It wasn't long before my programming ambitions were frustrated by the speed of basic and associated memory limitations. By now I had learned of something called machine code but needed more information. The Internet had not yet been invented and the local library didn't have anything on this subject. It was during a family trip to the city of Bath when I entered a discrete bookshop tucked away in the corner of the city. Hidden in the back was a bookcase labelled 'Technical'. On a whim scanned the shelves and spotted a book called '6502 Reference Guide' by Alan Tully. This looked to be just what I wanted and after I parted with my hard earned pocket money (£9.95), I left the bookshop with the book in hand and a smile from ear to ear.

When I got home I delved into pages of unfamiliar technical jargon and quickly became frustrated and disappointed; it was like an entire new language, the whole book didn't make any sense! It was only part of the picture and only covered the instruction set of the 6502 processor [exactly as it said on the cover!]. To make it do things, I needed to know the internal workings of the Commodore 64, the chips, their registers and how to manipulate them. Fortunately, Commodore basic was, well basic. The BBC and Spectrum computers of the time included graphic and sound commands in their implementations of Basic, but on the Commodore, everything had to be done by Peek'ing and Poke'ing numbers directly to memory locations. After some scratching of my head, I quickly realised that there were two assembly instructions that did just this: LDA and STA . I chuckle now looking back at this, but my first assembly language program was simply a series of these commands chained together to animate a tile, invoked by the SYS command from Basic [I also assembled the byte code for my assembly language program by hand - I didn't have a compiler!]. I was probably around the age of 11 at this time, so can be forgiven, but it was the missing part of the puzzle; Alan Tully's reference guide now started to make sense and became a much loved book and was prominent on my desk for many years!

6581 SID

Through experimentation I began to sus out the inner workings of the Commodore 64 and quickly became fluent in assembly and started coding games, some potentially on par with the commercial titles of the time. One thing lacking however was music and sound effects. Back in the day, I used to load up some of the games simply to listen to their music. Some of my favourite C64 [sid] artists were Rob Hubbard (Thrust and ACE II being my favourites), the late Ben Daglish (The Last Ninja), David Whittaker (Panther), Martin Galway (Comic Bakery, Ocean Loaders, Terra Cresta, Yie Ar Kung-Fu), ... I could go on. Music composition was another of my hobbies and I quickly began to learn about the SID chip; the chip that gave the Commodore 64 those wonderful sounds and made it stand apart from the competition [and probably a major part of its commercial success].

Eventually I coded my own Sid player and tools to aid in the creation of soundtracks. My Sid player routine was trigged from a 50Hz PAL interrupt, very common at the time as this was the raster interrupt of the VIC-II chip; commonly used to make Commodore 64 do things it wasn't designed to do, for example, sprite multiplexing and fixed stripes across the borders! Using this Sid plater and editing tool I composed a number of tracks for games that I would never finish.

I write extensively about this in my music section, if you're interest have a read of it by clicking here.

By the time my GCSE's had arrived, it was no surprise that computing would be a key part in them. I elected to do a GCSE in computer science, but was disappointed when the teacher asked me more than I was learning from class. The other subject was technology. For my final year project I created a 'game' with a difference, complete with soundtrack. It involved controlling two remote buggies with joysticks connected to the Commodore 64. The buggies themselves were controlled via the user-port of the Commodore 64. The aim of which was to hit the opponents kill micro switch. It was fun and I was awarded top marks!

By the time of my A'Levels I had elected to do Graphics. As my final year project, I decided to design, build and of course, program a synthesiser. I had successfully combined all of my favourite subjects, music, art, electronics and software. I built the keyboard and electronics using components sourced from Maplin [another high street store lost], with the sound generation and keyboard scanning coded on a Commodore 64.

A'Level Graphics Project Cover

Having successfully completed my A'Levels, I was off to University to do a degree in.... Electronics! Yeah I know, not software! Having understood the inner workings of the Commodore 64, electronics had become my thing [or so I thought]. That pretty much marked the end of the Commodore 64 for me and it went into long term storage in the loft!