The Need for SID
The second computer that I ever owned was a Commodore 64. By the mid-1980s, I’d become increasingly frustrated by the limitations of my Sinclair ZX Spectrum — especially as I was interested in generating sound and music.
After moving from high school to college, I discovered that some of the students were Commodore 64 owners.
Having previously read about the 6581 SID chip (the sound generator chip in the C64), I decided that I just had to get my hands on one, to see what it could do.
Goodbye ZX Spectrum
My parents couldn’t afford for me to have two computers, and they made it clear that my ZX Spectrum would have to be sold. So, reluctantly, it was out with the Spectrum, and in with the Commodore 64.
With the C64 being a more expensive machine, we got a second-hand one. The seller also had a disk drive for sale, but the budget wouldn’t stretch to that, so I only ever had a cassette-based system.
I liked the C64’s better keyboard, and its easy-to-use dedicated cassette recorder. With the Spectrum, it had been necessary to use an ordinary audio cassette recorder, and set the volume level just right. Unfortunately, the C64’s cassette interface was about 5x slower than the Spectrum’s, unless some sort of non-standard ‘turbo loader’ software was used — they were eventually quite common.
Playing with SID
Very soon after getting the Commodore 64 set up, I went through the manuals to find out how to make some sounds. I’d hoped it would be like the BBC Micro that I’d used at school, with commands such as SOUND and ENVELOPE. Sadly, it wasn’t long before I realised how primitive the C64’s BASIC language was in some respects.
No BASIC Sound Commands
The built-in BASIC had no support for sound, other than using the POKE command to configure registers in the SID chip directly.
That was quite a disappointment — even the low-cost Spectrum had a BEEP command for sound. I realised that it would take longer than expected to get started…
The SID chip was like a mini synthesizer. It had three oscillators, which could provide triangle, sawtooth, pulse or noise waveforms. Each oscillator had an ADSR envelope generator (attack, decay, sustain, release). In addition, there was a filter with a choice of modes, as well as support for ring modulation, enabling bell-like sounds to be produced.
Making Sounds and Music
After more reading, and issuing dozens of POKE commands, I was amazed by the sounds that could be created by the SID chip. There were some unexpected niggles, such as a ‘click’ being generated every time the master volume level was changed. But there was still a lot to like.
I made the 64 play some tunes, by developing my own BASIC programs, and started using 6502 machine code for some purposes too. A classmate at college gave me some software called Synth Sound, which played a selection of well-known tunes; it was quite impressive, especially when connected to a hi-fi system.
A year or two later, when I started work, a colleague gave me his copy of Music Studio. It was the first music software package I’d ever seen. Even though it was quite impressive at the time, I soon found that editing notes using a joystick was slow and tedious.
The Commodore 64 had other interesting features, such as sprite graphics and hardware support for smooth scrolling. This turned out to be another area where the built-in BASIC was lacking — it had no proper support for graphics at all. So it was a case of using dozens of POKE commands to control the graphics hardware from BASIC, which was not very friendly for beginners.
The default mode at power-up provided 40 x 25 text. High resolution graphics modes could give 320 x 200 with two colours per 8 x 8 square, or 160 x 200 with four colours per 8 x 8 square. The colour palette provided a choice of 16 colours.
There were eight hardware sprites, with their own colour registers. Like the high resolution graphics, the sprites could have two or four colours per pixel, depending on their mode. Through ‘raster interrupt’ programming, more colours and more sprites could be made to appear, by changing graphics hardware registers at exactly the right moment.
Based on my experience with the Spectrum in previous years, I knew that I wouldn’t get the most out of any 8-bit machine using BASIC.
So, having previously learned Z80 assembly language, I studied the programmer’s reference manual, which covered the 6510 instruction set. The 6510 was essentially a 6502, with a few additional features.
(Learning about the 6502 would turn out to be useful a year or two later, when I got my first job, and found myself working with the Apple II again.)
In the Commodore 64, the 6510 was clocked at about 1 MHz. But the performance was comparable to the ZX Spectrum’s 3.5 MHz Z80. Despite the 64 having — as you might guess — 64 KB of RAM, not all of it was available directly to BASIC programs. By switching out things like the BASIC ROM, all of the RAM could be accessed using assembly language software.
After damaging my ZX Spectrum with a worn-out card edge connector, I was relieved to see that the Commodore 64’s user port had a pitch of 0.156″, which seemed more forgiving than the 0.1″ pitch of the Spectrum’s expansion port. Also, the 64’s user port was connected to a 6526 CIA chip (complex interface adapter), rather than directly to the microprocessor’s bus, which simplified the design of any external hardware add-ons.
I ended up attaching simple analogue to digital and digital to analogue converters, and writing assembly language code to control them. I tried to use them to record and play sound, as well as turning my 64 into a simple digital storage oscilloscope.
The modest processor speed meant that my primitive add-on had quite a low sample rate, and it wasn’t until I switched to the Amiga 500 that I got good results.
With its sound, graphics, and built-in joystick ports, plenty of games were written for the Commodore 64. That helped to make it a very popular machine.
Even though I’ve never spent a massive proportion of my time playing games, I did enjoy quite a few.
Radar Rat Race was the only cartridge-based game I had. As well as being easy to understand and fun to play, it loaded immediately.
My other games were cassette-based, so they took longer to load — sometimes 15 minutes or more! Fortunately, as mentioned earlier, many later games had fast loaders, which brought the cassette speed more in line with computers like the ZX Spectrum, resulting in loading times of a few minutes.
I remember playing Falcon Patrol, Flight Path 737, Dr Soft’s 747, ACE, Action Biker, Kick Start, Colony and The Last V8, to name just a few.
Sadly, I never used a floppy drive with my Commodore 64. But I was aware of its serial bus, which could be used to connect it to things like disk drives and printers.
Although the floppy drive was rather slow as standard, fast loader software was often used to boost the transfer rate. (Today, I sometimes think about designing a circuit to allow an SD card to be used for storage, despite knowing that such devices already exist.)
Other Commodore 8-Bit Machines
The Commodore 64 was released in 1982, but it wasn’t their first computer. In 1977, they released the PET, which was a fairly expensive all-in-one machine. And in 1981, there was the cheaper VIC-20 computer, which had a more limited specification.
In 1984, they released the Commodore 16, and the Plus/4. And in 1985, there was the Commodore 128, which was compatible with the 64, but had lots of additional features.
None of the other machines had the same appeal — or sold as well — as the 64. Somehow, the 64 seemed to have just the right blend of features, at the right price.
I learned a lot of useful skills, including 6502 assembly language, and became interested in music synthesis — all because of the Commodore 64. And I still remember a few 6502 (6510) op-codes, as well as various SID chip register addresses!
I still have the Commodore 64 that my parents bought for me back in the mid-80s — and it still works perfectly. I don’t think any of my other machines have been quite so trouble-free over that period, but I suppose the 64 didn’t get a great deal of use after I got an Amiga 500 in 1987. Despite that, it’s still good to have a quick game of Radar Rat Race or Action Biker from time to time.
Do you have memories of using the Commodore 64?
Share your thoughts in the comments section below.