When Your Weird Hobby Takes Over the World (Part 2)
This is the second in a series of posts about my history with computers. I want to describe how it feels for your weird little obsession (computers) to end up taking over the world. Click here to read part 1.
By the summer of 1982, the computer situation in my house was getting to be a problem. I wanted to spend more and more time on my dad's Northstar Horizon, but so did my dad. I imagine I was fairly insistent, possibly even annoying about it. Something had to be done.
So my dad started figuring out how to get another computer, one that was more compatible with the needs and desires of a 6-year-old. I did love that Northstar, but the games were pretty boring. There's only so much Hunt the Wumpus and Star Trek you can play before you yearn for the cool computer games you see on TV ads.
Above all I wanted graphics. Colors. Excitement. All the things that business-oriented CP/M machine lacked. But in 1982, excitement cost money and my dad wasn't about to get anything like a (cheaper) game console anytime soon. I still remember his disdain for anything related to Atari and video games. Heck even the Commodore 64 came in for some criticism as being insufficiently serious.
Fortunately, there was a happy medium and its name was Apple. My dad managed to find a surplus Apple II+ motherboard (European version, for some reason) and started to build it out. I don't remember much about this process and I imagine it mostly happened at my dad's work. There was some hacking required to make the board compatible with the North American NTSC TV system, since Europeans of the time used a competing PAL system for color TV.
At some point towards the end, my dad asked me what I wanted to call it. He felt it wasn't really an Apple, since it had been hacked together, and he was going to flash the boot ROM anyway so I had the opportunity to give it a name. I must have been pretty obsessed with the solar system at the time because I decided on Phobos II in honor of Mars' largest satellite. I finally had my computer, and it was glorious.
Color graphics! Actual sound! I could play Breakout, Galaxian, Zaxxon, Spyhunter, and a ton of other games. The games appeared every so often on floppies my dad brought home from work in his briefcase. Like a pigeon in a BF Skinner experiment, I responded to the intermittent reinforcement of new games occasionally arriving from some mysterious source at work. That briefcase was a cornucopia of wonders and so it had to be checked every day, just in case my dad had forgotten he'd put in a new game that day.
It goes without saying that the games of the time were pokey at best. You had the choice of either lo-res (40x40 with 16 colors) or hi-res (140x192 with 6 colors). You could have two-player games as long as each player only used a paddle (like a 1-D joystick), but if you wanted a joystick then only one of you could play. Still, at the time the limitations felt reasonable. Who was I to complain? I had my own computer! Sure I had to share it with my sister, but fortunately for selfish little me, she wasn't quite as interested in it as I was.
My very own games
By 1984, I had had my Phobos for a few years. I was good at all the games I had, and I was probably a bit bored with them. I wanted more levels, more stuff. Full of ideas, the obvious next step was to write my own games. I didn't have much idea what that involved, but how hard could it be? My dad took the news of his 8-year-old wanting to write computer games in stride, and simply pointed me to some binders with photocopied manuals. White plastic binders, each one with Sharpied letter on the spine. T for tutorial. B for BASIC. Those two binders were going to end up being my best friends as I embarked on the task of learning how to program.
It's worth pausing yet again to describe how niche and weird this was. By 1984, computers had definitely gotten more popular. 13% of UK households in 1985 had computers, a statistic which is likely a good proxy for computer penetration in Canada at the time. But I'm pretty sure the fraction of those households that wrote any code was pretty small. And the fraction of those coding households which had an 8-year-old teaching himself how to program probably was smaller still. To modern ears this may sound self-congratulatory. But I assure you that if anything it's the opposite. I had no idea what I was doing, no idea what I was getting into, and no idea how it would work out. I didn't start programming because anyone told me to, or because I thought it was a good skill to have for the future, or because it was popular. Eight year old me didn't care about any of those things. I just wanted to make computer games. It was my weird hobby.
And I do still remember the way it felt to learn BASIC. Some things were fine, others were weird and scary. Like GOSUB. I could understand GOTOs easily enough, but it confused me why you would want a GOSUB. Why not just GOTO into the routine and then just GOTO back when you were done? One day, finally, the lightbulb came on in my head:
Wait, if I use GOSUB then I don't need to know where to GOTO back to. That means I can use this GOSUB in more than one place!
And so it went, for months. Copying a program from the tutorial manual. Copying programs from computer magazines I borrowed at the local library. Modifying them, expanding them. Little victories interspersed with little defeats in equal measure. Bugs that crashed your program, bugs that did new and interesting things you didn't expect. Nobody else cared. If you had asked me at the time, I'd have told you I had goals: to build a game that did X. But the goals changed every day, sometimes many times a day. In truth there was no real goal. It was just playing with an imaginary friend buried deep inside a beige metal case.
I'd show my parents things I was particularly proud of. They were supportive and encouraging, of course, but I always felt they didn't really get it. Every programmer (or artist for that matter) knows this feeling of course. The end result must necessarily encapsulate everything that it took to create it, but somehow all of the false starts, side quests and toil required to get there end up... smoothed out. Erased, almost. The end product never quite manages to convey the path to it, and yet it's the path itself that constructs meaning for the creator.
I had all of the other frustrations of dealing with computers in the 80s too. For those too young to remember, autosave didn't exist. I'd forget to save every so often, and hours of work would disappear. Floppy disks would periodically get corrupted too. As Omar from The Wire would later say, "It's all in the game." Or at least it was in those days.
I spent months working on my own version of Spyhunter. I loved how the road randomly oscillated left and right, and I spent literal weeks trying to figure out how to use a random number generator to make that happen. I learned a lot of math while trying to figure it out, without even realizing it, but in the end I gave up. Too hard. Besides, I was testing the speed limits in an interpreted language on a 1MHz 8-bit processor.
I asked my dad how the games I played managed such awesome graphics performance, and I already knew he was going to say the dreaded words: "Assembly Language". I was comfortable with BASIC. I loved it. But I knew even at age 10 that it was dead-end. My dad bought me a book on 6502 assembly, and I can still picture bespectacled author on the cover facing sideways to his computer, turned smiling to the camera as if to say: "This won't be a vale of tears at all. Assembly is fun!" It wasn't, but I soldiered on. I wanted to write a good game, for once. Like Karateka. In the end, I don't think I ever did.
In sixth grade I moved to a new school which had two very big things going for it. One, it had a computer in the classroom (a Commodore 64, but whatever, it will do) along with a compliant teacher that let me sit at the back alternately (a) playing with the C64 or, (b) reading the 15 year archive of National Geographic that mysteriously sat collecting dust in that room. But the school also had an Apple II in another rather distant room, one where I'd try to spend as many lunches as I could working on my projects. However, I quickly realized that schlepping floppies to and from school so that I could sneak in an extra 35 minutes of feverish programming-while-eating-a-sandwich wasn't going to work out. Plus the assembly language manuals were also rather heavy. By then it was winter anyway, and building huge snow-forts during recess was the thing to do.
Testing the limits of the Apple II+. And my own.
By the summer of 1987, now aged 11, I was starting to chafe at the Apple's constraints. My dad had gotten an IBM PC compatible a few years prior, with its faster processor (8MHz!), spacious RAM (640k vs 64k) and huge display resolution (80x24 text and CGA graphics). For some reason I fixated on the 80 columns. I wanted that for my Apple, but I couldn't convince him to shell out for an 80-column expansion card. Quite reasonably, he felt it was a dead-end machine with little reason for additional investment.
Undaunted, I decided I would build my own. I'd seen my dad build electronics for years, so again, how hard could it be? I lived near the university so I grabbed my mom's university library card, biked over, and started poring through the university's database for possible sources. Finally I hit the jackpot: a book at the University of Toronto detailing circuit diagrams for Apple II expansion cards. I got my mom to order it via inter-library loan, and the day it came I was overjoyed to see a circuit schematic for an 80-column card.
I showed it to my dad. He was annoyed at my resourcefulness, and also helpfully pointed out that a circuit diagram is nice and all but but isn't much good without a board layout, or indeed an actual board you could order, let alone the parts. I was incensed. All of these ridiculous roadblocks to my dream Apple II+ with an 80-column display!
"Screw it, I'll just design my own!"
At this point my dad knew he had me. Of course I only realized this years later. Calmly he told me that it was a great idea. All I had to do was learn electronics. And to learn that, I had to first:
- learn physics and chemistry,
- which required learning trigonometry,
- which required learning algebra.
At the time, I felt like I was finally getting some real help. Today we take for granted that we can ask an omniscient oracle any question, and we'll get a high quality response. In those days, even knowing what you needed to know was a challenge. And here, finally, was the shopping list of knowledge I needed to build my precious 80-column card. And so I went.
The next day, a baking sunny day in early July, I checked out an algebra book and started learning. Doing the exercises. Something about ranges, some weird new notation I didn't understand with sideways 8s. I blazed through the first two chapters. Of course I hadn't learned almost anything, as my dad quickly determined that evening by asking me a few basic questions from the backs of the chapters. Turns out you have to actually do the exercises to learn math.
Still, some of it did seep in. The physics, the chemistry too. Eventually in high school, I would feel like most of the stuff we were doing was stuff I'd seen before. School would become even more boring than before, which sure didn't seem possible.
But by the end of that summer in 1987, the realization began to hit about my computer. Dimly at first, then with more clarity. The dream was dead. No 80-column card, no big expansions. It just didn't make any sense to try. The Apple II+, Phobos II, my first computer, my computer, had to be put out to pasture. Everything interesting was happening on the PC anyway. That's where the action was, and that's where I wanted to be...
In the next episode, I start to realize other people like computers too. Stay tuned...