by mrandish | 2025-05-10 23:19:05+00:00
As I searched for a first computer I hoped to talk my parents into buying for my late-teen self, I read a lot of early computer magazines and visited local stores. I looked first at the Atari 400 and loved the games but, wanting to learn programming too, I just couldn't imagine that membrane keyboard being livable. Then I saw the C64, fell in love and went home from the store clutching the same color brochure linked above. How could I not love the promised 320 x 200 resolution, the sprites, all those colors - but I knew that $600 was too expensive. Ultimately, I had to settle on a Radio Shack Color Computer at around $400.

I loved the 6809-based Coco but, at the time, I felt it was inferior to the C64 and Atari 400/800 because it had no sprites, far fewer colors, lower resolution, lower clock speed, etc. Because I didn't yet understand computer architecture and simply believed the specs in the brochure, it was only much later, during my computer-industry career, that I grew to understand that the Coco, which I'd felt so insecure about, was really pretty ideal for my young self to learn on. The built-in Microsoft Extended Color BASIC was far superior to the ROM BASIC the C64 shipped with. Perhaps more importantly, the comprehensive, illustrated BASIC manuals Radio Shack commissioned are still legendary for being excellent for beginners to self-teach. And, unlike many of its peers, that ROM BASIC had extensive native commands for graphics, sound and music from day 1.

Once I'd written a bunch of graphic games entirely in BASIC, I advanced to learn assembly language because it was the only way to draw more and bigger objects faster. Fortunately, Radio Shack offered a ROM cartridge-based 6809 editor/assembler that was unreasonably good for a cheap home computer. And the Motorola 6809 CPU, being the little brother of the legendary 68000 was really an 8/16-bit CPU with an elegantly orthogonal instruction set which supported advanced addressing modes and many features neither the 6502 nor Z80 had. Things like re-entrant, relocatable, program counter relative code, separate user and system stacks, a multiply instruction and multiple levels of interrupts. Today it's considered the most powerful 8-bit CPU of that era (in fact, Apple originally intended the Macintosh to use the 6809). Radio Shack even offered a multi-tasking, multi-user, Unix-like operating system for their 8-bit, 64K 'toy' home computer.

Of course, back then I didn't know how good I had it since my only experience was with the computer I owned and I still believed the impression I formed from that beautiful C64 brochure. It wasn't until the mid and late 90s when there were piles of C64s and Ataris at thrift stores for $5 and $10 that I really understood that the C64's 320x200 resolution and 256 colors weren't all available at the same time, at least for regular users (short of advanced programmer tricks and esoteric demo scene hacks far beyond a beginning coder). Once the computers I'd lusted after were nearly free (or actually free when people just gave them to me vs throwing them out), I managed to acquire ALL of the widely available 8-bit and 16-bit computers I'd never been able to afford in the 80s and actually play with them.

Only then did I understand a 0.89 Mhz 6809 was two to three times faster than a 1 Mhz 6502 and that I'd 'grown up' in programming understanding interrupt driven multi-tasking, managing multiple stacks and using index register indirection, which made pointers feel natural when I later learned C on 68000-based computers. Even the lack of hardware sprites in my 'poor Coco' forced me to figure out software sprites using bit masks and XOR in assembler - and I had a blazingly fast CPU to do it with. Even the higher resolution and colors of the C64 and Atari didn't turn out to actually be that much higher than my Coco. Setting aside the amazing tricks demo scene coders eventually figured out on all these machines, in practice, as a beginning assembly language game coder back then I would probably have only used 3-color sprites on a background with an effective 160 x 192 resolution background. My Coco had four colors (although from a more limited palette) at an effective resolution of 128 x 192 and, being entirely software-based, I could do anything with those pixels that I could figure out how to CPU blit in one frame. With no hardware graphics to rely on, work around or trick, it was always just my code and the unforgiving pace of the CRT beam. This kept me focused from day 1 on cycle-counting performance and intense code optimization, which made my practical experience with real-time graphics more Apple II-like - except with 2 to 3 times more CPU power to throw at it. Sure, I didn't have the hardware GFX I'd lusted after in that brochure but those capabilities weren't quite as accessible to novices as I'd assumed - and what I got instead had some pretty sizable advantages I didn't appreciate at the time in shaping and preparing the programmer I would later become.

To be clear, I'm not being critical of the C64, today I revere and respect all of these classic machines. They're each great in their own unique way, and each one represents a different vision of what personal computing could be. That's a big part of what I miss about 80s home computing and the reason I've collected over a hundred different models of non-Intel 8-bit and 16-bit home computers over the years (all the commonly available Apple, Atari, Commodore, Sinclair, Amstrad, Amiga machines a few dozen more rare 8-bits from around the world). It's just ironic how my teen self misunderstood the specs in that brochure and how it led to an undeserved inferiority complex which existed only in my head.