I first became aware of the idea of a personal computer around 1982 (10 years old) when I saw a magazine ad for the Commodore Vic-20. The picture in the ad featured a color display with a roughly pixellated image of Earth (which looked amazing to me at the time). I hoped that one day I would get to have a go on one!
Later, some awesome guy, I think a school counselor, I think his name was Mr Smith, let it be known that he would bring in his own Vic-20 for free demonstration & lessons in the school library. Of course I attended, and learned my first bit of BASIC programming, of the no-doubt familiar form
10 INPUT “Enter your name:” n$
20 PRINT “Hello ” ; n$ ; “, My name is Computer!”
As ridiculous and pointless as this seems now, it was a great introduction to symbolic logic (especially since I would not be taught algebra for another year or two). Since computer time was severely limited (we had access to one computer maybe once a week, and there were at least six of us proto-geeks attending) I took to composing more and more advanced versions of the “what is your name” program on a manual typewriter– I wish I still had those hard copies for posterity!
Sometime shortly after that I met other people from relatively well-off families who owned their own computers, namely the Apple II. This was when I saw my first graphical adventure game, namely Robin Hood, and was blown away by the immersiveness of being able to see a glowing green rendition of a crossroads where the Tax Man dropped his bag of money, where I could type TAKE BAG and the machine would understand me! At some point I first experienced the tedium of the graphical programming language LOGO, which weirdly I was never particularly inspired by– it always seemed rather pointless for some reason.
In 1985, now 14 and at high school, I lobbied for a personal computer of our own, and my wonderful parents, possibly guilted into it by the popular message of the time that it would be good for their children’s education, purchased an Amstrad CPC464.
Although it was only the green-screen version, the graphical capabilities were impressive to me. It had 3 different display modes: Mode 0 (160 x 200 x 16 colors), Mode 1 (320 x 200 x 4 color) and Mode 2 (640 x 200 x 2 color– basically black and white). After dicking around in BASIC for a while, writing code to draw circles using trigonometric functions, I became more interested in how the machine worked, ie what was going on behind the scenes of my basic programs. So I started reading articles (in computer magazines) about the architecture of the machine, and began to understand the memory model, addressing and machine code.
I learned how to run machine code routines from BASIC, and was amazed at the vast speed improvements. Unfortunately the examples I had were all based on raw hexadecimal code entered directly from magazines into long and tedious data statements. While the articles had the Z80 assembly language listings alongside the raw code, I did not have an assembler. So of course, instead of simply acquiring one (what a silly idea!) I wrote my own, primarily by reverse engineering the listings from magazines and inferring a lot about the way instructions were represented by raw numbers. I think the coolest thing I did was when I optimized my assembler by replacing some of the BASIC code with machine code generated using the assembler itself– I had stumbled into the magic of bootstrapping! … although perhaps in a slightly ass-backwards way.
Other projects at the time (all now lost) included:
- A knock-off of the classic Elevator Action game, using modified character sets for the graphics, which never worked so great.
- A sliding puzzle game I called Hedgehog, which I was very pleased with and used my own assembly coded sprite routines. The blocks had to be rearranged in real time to stop the slow-moving hedgehog meeting its demise in various ways.
- A keyboard-based painting program (I never had a mouse) using fast custom-assembly fill routines.
- A ridiculously ambitious 3D modelling program, with a lathe feature (required for creating the obligatory 3D Goblet). By plugging the computer’s video output into our VCR I made painstaking animations by pressing pause/record rapidly, to achieve somewhere between 3 and 5 frames per second.
I was at that time extremely impressed by The Hobbit adventure game, and determined that my magnum opus would be a comprehensive Lord of the Rings sequel. Ideas about procedural generation were beginning to germinate and so I filled notebooks on how a thousand distinct locations could somehow be crammed into the rather meager 32K of space available for program data, along with characters, objects, a decent lexical parser and graphics. For some reason it never occurred to me that the last thing you want in a strongly narrative game is a thousand locations to have to search for clues, keys, treasure etc, but in the end that didn’t matter because…
I realized that girls did not seem in the slightest bit interested or impressed in any of this stuff, and so I lost interest too. This is an important point, I will come back to it later.
I did not really get back into computers until 1991, after I had managed to secure a girlfriend, finish high-school, and realize just how much I didn’t like undergraduate graphic design. You work for ages to create something and chances are it’s not that great, and then you have to work just as hard to create the next thing, and it might be only slightly better. Compared to programming, in which the effort/achievement curve feels practically exponential at the early stages, doing charcoal sketches of local buildings felt like a giant waste of time.
So I dropped out of university after just a few months, and took a crappy job working the phones and radio for a courier company, where during the quiet moments I reacquainted myself with programming via the wonderful QuickBasic installed on the office computer. After rediscovering the delight of making circles bounce around on the screen I cashed in my parental grant money (which I think I was supposed to put toward an overseas trip) to buy myself a 20MHz 286 PC for $1500, at the time a really nice machine which I still recall fondly. Except for the fact that I had my first ever panic attack while on my way to buy it (I collapsed just after crossing the road, the only time this ever happened).
Continued in Part 2…