Part One – In The Beginning…
The first lesson I was ever taught about computers
came from my dad. He and my mum were both students of the Open
University, which for me as a kid was brilliant. They were both
studying science units and would get sent experiments to do –
my dad's usually involving something to do with physics, while
my mum's were biology-related. So, my dad would get sent all kinds
of interesting gizmos with which he would set up experiments on
the dining room table, and I got to go and watch him rolling balls
down inclines and doing interesting things with masses and springs
and measuring and timing stuff. My mum would have loads of intricate
text-books I could read and occasional treats like a sheep's brain
to dissect (which I could then take to school and gross my mates
out with when she was done with it).
I remember I must have been about nine years
old when my dad had a computer science unit on his course. I knew
he had to go to a technical college near Reading to do the course,
and that he was studying something called “Basic”.
I had been brought up on a diet of Asimov and Clarke, and to me,
computers were things like Asimov's Universal AC – electronic
‘brains’ filled with all the knowledge of mankind
and eerily sentient. The idea that one only had to go as far as
just outside Reading to commune with one of these entities intrigued
me. One day, I was hanging out in the kitchen in a nine-year-old
kind of way, when my dad happened to come back from his course.
I was moved to ask him: "Da-aad, if there are so many problems
in the world, why don't we just ask the computers what to do?"
He fancies you.
He explained to me that computers weren't like
the machines I'd read about in my sci-fi books at all. In fact,
they couldn't ‘think’ at all. The only things they
‘knew’ were things that you had explicitly told them
yourself. He showed me bits of paper with some printed output
on, and I saw the results of his dialogue with a machine –
as it asked for some numbers and did some simple arithmetic on
them, and played a game involving taking matches from a pile.
Mildly interesting, but hardly world-saving stuff. I promptly
forgot all about computers for almost another nine years.
1978. I was sixteen, and had just left secondary
school to go to sixth-form college. I'd come through with a reasonable
crop of ‘O’ levels – nothing particularly great.
My best subjects were English, Physics and Maths, and, accordingly
I joined the sixth-form to do ‘A’ levels in Maths
with Mechanics, Physics and English Literature - something of
an odd combination. I still really didn't have a clue what I intended
to do once out of education – just some vague idea that
it might be something to do with physics, since that was what
my abilities seemed to dictate. English Lit seemed particularly
out of place in a system which tended to incline the arts and
sciences to separate.
At the start of sixth-form we had to sign up
for what were rather misleadingly called "main studies"
- misleadingly, because they weren't your main studies at all,
but little bits of skiveable mini-courses that were used to fill
up the curriculum between the main ‘A’ level studies.
I remember talking to my head of form about what to choose for
these, and he suggested, amongst other things, "Computing
"What, you mean using terminals and such?"
I asked him, vaguely remembering my dad's sheaf of teletype output
from many years before. He replied yes, and although I still had
no particular interest in the subject (my futuristic idea of what
computers were having been replaced by a more mundane belief that
they were good only for sending out bills and Readers Digest junk)
I thought I'd give it a go anyway. It had to be better than needlework
or cookery or somesuch, and, if I didn’t like it, it was
a potentially skiveable ‘main study’. So I signed
up for Computing Main Study.
Yes, baby. Fact me with that teletype.
Of course, I would like to say that this was
the spark which kicked it all off, and that this wise and insightful
suggestion by my form head led to the ignition of a passion that
was to burn clear and undimmed across a couple of decades. Alas,
that wasn’t the case. I think I only ever stuck out about
two lessons of Computing Main Study. The content of the course
was the trouble. It was as if someone had sat down (or quite possibly
a large group of people, the kind of people who enjoy sitting
on committees and probably end up being town councillors) to devise
a method of teaching possibly one of the most exciting disciplines
in the world in the most boring and off-putting way imaginable.
Terminals? Even the clunkiest old Teletype chuntering
along at a few characters per second would have been racy and
thrilling compared to what was taught in Computing Main Study,
because at least that would have been interactive. The genius
of this course was that it managed to completely remove any notion
of interactivity from the computing experience. Perhaps it was
a throwback to times when even Teletype terminals were rare…
On the first lesson, we were told that we would
be learning a language called CESIL. This wasn't any kind of a
real language that anyone used to really do things with, from
what I recall, but some synthetic language purely for the purposes
of education (or perhaps places on real comp.sci courses were
already getting oversubscribed, and CESIL was deployed to send
lesser students running gibbering and screaming into the hills,
vowing never to go near a drop of code ever again). During that
first lesson, we were taught the keyword for ‘Print’
(and I can't remember what it was, but I see no reason to think
that it might be anything other than ‘Print’) and
the appropriate syntax for using it. Then it came time for us
to write our first CESIL programs.
We were all handed sheets of paper with boxes
to write the letters of the program in. Upon these sheets, we
had to painstakingly write the two or three lines of our simple
programs, in capital letters, in the little boxes. Once this was
done, the sheets were collected up and put into an envelope by
the teacher. Then, we were told, they would be sent by mail to
somewhere else, where the programs would be typed in by operators
(who would slavishly copy EXACTLY what you wrote, including any
syntax errors) and run as a batch job on some system, which would
then produce printed output, which would be sent by mail back
to the college for us to finally look at the following week.
I remember I did go to the second lesson, just
out of curiosity, to see if what I had submitted had run correctly
(it had – a couple of people must have made errors with
the syntax because they got error messages) but basically I thought
enough was enough. If computing meant waiting a week to get a
couple of lines of output or a syntax error message then it wasn't
for me. I prepared to do some judicious skiving at appropriate
times and just concentrate on my key ‘A’ level courses.
That might have been the end of it except for
one thing: videogames. I'd seen a few by that time - one of my
brothers brought round a Pong machine (I remember it was the latest
thing and had cost him forty quid – a fair whack back then)
and it had seemed like magic when he'd plugged it into the telly
and we sat down to play. I'd watched that same brother break through
the wall in Breakout whilst under-age drinking in a smoky wine
bar in Basingstoke the previous Christmas. I'd even had my first
encounter with Space Invaders by then, in the arcade tent at a
travelling fair that came every year to the town where I lived.
Still, there was nothing in my brain that connected videogames
and computers. Games were just black boxes that someone had built
to do the things they did by way of some kind of incomprehensible
magic, and computers were things that sent you your gas bill and,
apparently, took a week to send you an error message if you got
One day, not long after college had started,
I happened to wander into a room where I saw something that interested
me. A dark-haired lad was sitting in front of a machine which
looked like a cross between a telly and a calculator, and on the
screen there was something that was crudely but recognisably a
videogame. He was pressing keys on the keyboard and a blob was
moving around on the screen. I watched over his shoulder for a
while, and then I asked him "How did that game get in there,
then?" His reply changed my life in an instant…
He turned and said: "I typed it in".
He stopped his game and typed LIST on the odd
little calculator-like keyboard of the machine and lines of code
flowed up the screen. He explained that this was BASIC, that the
machine was something called a ‘Commodore PET’, and
that if you learned a bit about BASIC, you could make games happen
on the screen. I was fascinated. The idea that you could type
in games – even make up your own… I suppose that’s
the point where my real education began.
”Would you like to play
a game? Get yourself a ZX81, then…”
I went straight to the college library and found
a book on BASIC. On the bus-ride home from college, I pored over
the book and began to get the first inklings of how it worked
- it was a bit like algebra, but not quite. The statement ‘a=a+1’
is nonsense in algebra but was an instruction in BASIC. The word
‘string’ came to mean something other than what tramps
tied their trousers up with. I'd used programmable calculators
before, so the concept was not entirely alien to me, but compared
to awkwardly programming thirty steps of purely mathematical operations
with only a row of LEDs for output, this was a whole new world.
By the time I got off the bus, my head was spinning.
I thought I understood a few BASIC basics – like how to
use variables and what a FOR-NEXT loop was and what IF-THEN did…
I was still no closer to being able to make up games with it,
but I wanted to do something. My brother was working for the AA
at the time and had the loan of a TI-59 programmable calculator
that came with a booklet of example programs. When I got home
I went to his room, blagged the booklet and looked through it
to see if I could make use of one of the examples as a starter
for my first bit of BASIC code.
My parents must have been surprised to see me
nip with such alacrity off into my room with books in hand - I
wasn't known for being keen on homework. I flipped through the
calculator programs to find something that looked simple, and
sat down to write - in biro on a bit of paper - my first bit of
proper code – porting a biorhythm program from a calculator
language that I'd never used, to a computer language that I'd
The next day, my parents must have been surprised
again, because I actually got up early to go to college. This
never happened – ever – so it was the cause of quite
some shock when it soon became a habit. On this first day I arrived
in college before anyone else and made straight for the Commodore
PET. I fumbled around the unfamiliar device looking for the power
switch, turned it on and saw for the first time something that
was to become very familiar:
*** COMMODORE BASIC ***
7167 BYTES FREE
…with a flashing square underneath prompting input. No writing
stuff on forms and sending it off for a week to write code on
this beast. I fished out the bit of paper with the few lines of
BASIC code I'd written and started to enter them into the machine,
putting numbers at the start of each line as I'd read one should.
For the first few weeks there was novelty even
in the act of typing itself – and seeing letters appear
not on paper but in glowing phosphor on the screen. For most of
my life, the TV had been entirely a one-way device, and only relatively
recently had the arrival of videogames started to change that.
To actually be able to write on a screen in this way seemed strange
and rather cool.
I entered my few lines of code and typed RUN,
and it worked - almost. The machine asked me for my date of birth
as expected, but upon printing out the state of my biorhythms,
something was wrong – unless all my biorhythms were flat
lines. Luckily, at about that time, I was joined at the machine
by the dark-haired lad from the day before – who I would
soon get to know as Mark ‘Ruptured’ Rawlinson. He
was on the proper computer science ‘A’ level course,
and pretty much Head Geek on account of having had experience
on a RM380Z system at his previous school. We went over the code
and he helped me fix a couple of errors. Then, we took it in turns
to find out the state of our biorhythms that day.
Over the next couple of weeks, I settled into
geek society. I got myself a cassette tape for storing my programs
on, which I carried everywhere with me. I met the other core geeks
- Mark ‘Clovis’ Clover and Andrew ‘Mole’
Round. Lunchtimes and breaks were spent clustered around the PET,
either coding or watching someone else coding. We'd be first into
college in the morning and last to be booted out by the cleaners
at night. There was no manual with the PET, so we learned what
we could by experimenting or from the occasional snippet of information
gleaned from obscure magazines. Out in the real world, the rest
of the students did their things just like in any college –
the drama freaks and the science lot, the cool people and the
nerds… but we were blissfully and uncaringly ignorant of
all that. We worshipped in the glow of that little screen.
Check those crazy biorhythms.
This means – um – you’re sad.
I continued to tinker with my little biorhythm
program and in the process began to learn that not all BASICs
were equal. The library book (which I had decided wasn't going
back to the library) described a very generic BASIC that would
work on just about anything, including teletype terminals. Commodore
BASIC had extensions which let you do things you could only do
on a screen, such as position the cursor anywhere before you PRINTed
something. I played around with that and eventually had my biorhythm
program actually graph out the three intersecting sine waves over
a period of time. The PET also had ‘graphics characters’
– special shapes not in the normal alphabet which you could
use to embellish graphic output.
There was another trick you could do with PET
BASIC. As I mentioned, there were commands to move the cursor
anywhere on the screen. You did this by printing special characters
- <HOME> would send the cursor to the top left of the screen
(position (0,0) in the character matrix). If you then printed
ten <CURSOR DOWN> characters and two <CURSOR RIGHT>
characters then you knew the cursor would be at position (2,10)
in the matrix - that was how I'd got my biorhythm graphs to appear.
The neat trick involved moving the cursor relative
to its own position. Say you started in the middle of the screen,
and printed a ‘*’ there. After printing a character,
the cursor always moved one position to the right. But you could
control the cursor position with special characters, and do this:
print a <CURSOR LEFT> character, which would place the cursor
‘on top’ of the ‘*’ you already printed
there. Then print a space, which would delete the ‘*’
and move the cursor back over to the right. Finally you could
print another ‘*’. Given the speed of execution, doing
that gave the appearance of causing the ‘*’ to move
one character to the right.
From there, it was a simple step to create a
string of three characters - <CURSOR LEFT>, a space, and
a character of your choice - the ‘graphics character’
which looked a bit like a ball, for example. Call it R$. Print
it repeatedly... and I had motion. The ball would appear to move
of its own volition across the screen – just like the balls
in Breakout and Pong...
Other strings would move the ball in different
directions - L$ for left, that was <CURSOR LEFT>, space,
<CURSOR LEFT>, <CURSOR LEFT>, ball. U$ for up was
<CURSOR LEFT>, space, <CURSOR UP>, <CURSOR LEFT>,
ball, and so on... IF-THEN let you work out if the ball was at
a screen edge and change its direction accordingly. There was
even a function, GET, that let you see if a key was being pressed
on the keyboard, and allow you to change the direction of what
you were moving accordingly.
You could move objects, and they could be aware
of their environment, and they could be controlled. At last I
could see how to get to ‘game’.
We knew how to get to game outside college,
too. Since I'd (unofficially) packed in Computing Main Study,
I took up Space Invaders Main Study, instead. Being sixth-form,
matters of skiving were much more civilised than in school, and
although technically there was a dress code, it wasn't really
a uniform, so one could pass off as a non-student in town easily.
”Du… du… du…
du… du… du-du-du…
du-du-du-du… ddddddddddddd… ZAP!”
It became second nature to us to stroll out
of the college gates, under the bridge, down the alleyway emerging
at the top of town, perhaps having a Grigg's pie and buying a
copy of PCW or Practical Computing at the newsagent along the
way, then down the hill and over the overpass into New Market
Square. Here there was a record shop, Harlequin Records, with
a bright orange sign outside and a Space Invaders machine lurking
in in a dark recess. We'd spend quality illicit time here, taking
turns to play or watch each other’s games. A hardcore of
skivers from other educational establishments would aggregate
here, too. Occasionally, I'd buy a Gary Numan single or something
just to placate the poor shop owner, because we spent a lot of
time in there but seldom bought anything - we just wanted to play.
When I first started going there, I’d
only had a couple of fleeting encounters with the game and I was
not at all expert. I remember watching in awe some kid who was
nonchalantly manoeuvring in the open space under the rack of Invaders,
casually dodging bullets, instead of cowering under the nearest
house and squeaking out every now and again to take terrified
pot-shots (as I did). We learned through practice and osmosis,
watching each other’s games intently when not at the controls
ourselves. I remember the sheer joy of finishing off my first
ever sheet - the heart-pounding intensity of the last Invader
running like the clappers down the screen, the carefully-timed
shot, the satisfying "ZAP!" followed by a blissful moment
of silence and exultation before the next rack appeared and the
game's slow, steady heartbeat resumed... It was like a little
I became quite competent at Space Invaders –
but not yet awesome. Before I was to encounter terrifying techniques
such as the Death Row Execution Method I'd need to study the methods
of one of those true videogame masters one occasionally encounters
- annoying people who are instantly good at any game they play
and achieve awesome skills if they actually bother to practice
(our own Sickboy being a prime example). I wasn't to meet one
of these individuals until a couple of years later at University
though, and for now we settled for competence, learned to handle
ourselves without fear in the war zone… to pick off enemies
in such a way that we controlled their advance down the screen…
to count shots so that we always milked the maximum 300 points
out of the little saucer every time - the basic skills of a solid
Space Invaders player.
Us geeks from the sixth form saw the game with
new eyes, too. We knew that as the objects on the screen moved,
inside the machine values were being incremented and decremented
to make them move. We knew that position comparisons were being
made to detect when objects collided. We knew that behind it all,
lines of code ticked away – orchestrating, regulating…
And we wanted some of that action.
Two – Colour, Sound, Poking Around…
Things to 'Make' and 'Do'.
Invaders site – including an explanation of the Death
Row Execution Method.
The wonderfully Dr Who-looking Commodore
guide to BASIC.
Look and learn. The Open
Arthur C. Clarke.