With the recent passing of Jack Tramiel, founder of Commodore Business Machines, I was encouraged to do some digital archeology on my first published article as part of InfoQ’s obituary of Jack Tramiel.
Although my first computer was a Sinclair ZX81, and had access to a Vic-20 and a Commodore PET at school, my first real computer was a Commodore 64. Well, that’s not quite true; the computer was a Commodore 128D, a souped-up version which had a built-in disk drive but remained compatible with all the Commodore 64 games. (In fact, I can’t recall a single app, other than perhaps the demo disks, that I ever used in Commodore 128 mode; I probably booted the GEOS operating system with its Zilog-Z80 about as many times, mostly for novelty purposes.)
Several of my friends had Commodore 64s as well (Hi Snotty and Wilkindot!) which meant that they quickly became the lingua franca for computing and game exchange. Probably one of the key reasons for its success was the fact that games came on cassette tapes, which meant there was a very cheap source of blank material to record your own game state and programs on, and thanks to the dubbing players meant pirated games were frequently traded in the playground.
(Interesting side-note; my first purchased game was “Action Biker” – there’s even a video on YouTube, which I purchased from a computer shop in Milton Keynes shopping centre around 1985; twenty years later I moved here and have been here ever since.)
At the time, there were many write-your-own computer games books (sometimes based on the choose your own adventure series) and computer-specific magazines were frequently published with ‘type your own code’ listings. One of the first to have computer programmes shipped in binary form was Commodore Disk User which shipped a floppy floppy disk (5.4 inch) on the front cover, usually with a piece of tape over the read notch to prevent accidental overwriting.
Anyway, back to the point of this post; back in 1991, I wrote an article for Commodore Disk User on the subject of interrupt request handling. Back in those days, BASIC was single threaded, so you could only do one thing at a time; yet games frequently played sounds, interacted with the keyboard (or joystick) and performed these fluently. One way of doing this was to hook up with the interrupt processor on the 6510, which was triggered when a keypress was made. (These days, they’re akin to the INT80 request on a PC or syscalls on a Unix box.) This was how the processor picked up the interaction that a user was doing and ran the system calls to handle the requests; by putting your own code and remapping the interrupt, you could drive your own actions.
At the time, I was a spotty (and yes, overweight; still am) teenager but with the recent upswing in interest regarding Jack’s obiturary, I did a search and discovered to my delight that Archive.org has scanned copies of these magazines. There’s a full list at Commodore Disk User archives at Archive.org, and my article is published in Issue 28 of Commodore Disk User. Heck, now you can even get a C=64 emulator for your mobile phone:
For posterity, I’ve made my article available as a PDF, entitled Explaining Interrupt Requests, though here are some low-res images:
I’ve always had a colloquial style when writing, and it seems my foray into it started as I ended up going on. I particularly like my sign-off “I hope you have been able to understand what I have been blithering on about”. Though I also hope that the double exclaimation mark at the end of the article was a typo. That’s my story, and I’m sticking to it!!