Part Two – Colour, Sound, Poking
Back in college, we finally had enough
knowledge to begin making simple games. And simple they were –
to the point of being ludicrously primitive by any reasonable
standards. But they were our games that we had made ourselves,
and there was something immensely satisfying about playing a game
with your mates and knowing that it had come entirely out of your
I remember writing a realtime version of those
Star Trek games that were popular at the time. In mine, instead
of being a turn-based game, you guided the ‘Enterprise’
(a PET graphic character that was meant to be similarly shaped
playing-card club symbol) across sectors of the galaxy in real-time
using the keyboard, one sector per screen. Sometimes, you would
encounter a ‘Klingon’ or a ‘Romulan’ (cue
more PET playing-card symbols) and a firefight would ensue, with
everyone firing straight and diagonal line characters at the other
Out of that grew a two-player dogfight game,
in which each player controlled their ‘ship’ from
opposite ends of the keyboard (a bit cramped, since the PET keyboard
was tiny) and bumbled around, sniping at each another (one of
the ships was just an X-shaped graphics character, so of course
whoever had that was said to have the X-Wing). Ahh, you needed
real imagination to flesh out your games with a little atmosphere
in those days…
The Enterprise, off of Star Trek.
A club, from out of playing cards.
We spent every spare moment in front of the
PET, coding up games, watching others coding up games, or playing
each other’s creations. In due course, the PET was joined
by a TRS-80 Model 1, which became known to us as the Trash-80.
This was a Z-80 based machine, and although we were curious about
it at first, it didn't appeal so much to us gamers - it lacked
the PET's ‘graphics’ characters and the keyboard,
although at first sight appearing to be nicer (being actually
keyboard-shaped, rather than small and weird and fiddly like the
PET’s) was a bit tacky and prone to double-entering. We
stuck with the PET and carried on creating and played our little
I remember that before long I began to run into
difficulty as the ambitions for my games got loftier. Everything
was fine as long as there weren't many objects on the screen and
the environments weren't too complex. But I wanted to have many
enemies on the screen at once, and gameplay arenas more complex
than just a straightforward box. But BASIC was too slow and unwieldy
to do some of the things that needed doing, and although I had
achieved competence at BASIC programming, I really had no idea
how things actually worked inside the heart of the machine.
’Ruptured’ Rawlinson was the guru of the geeks, and
he had told me about some strange BASIC commands called PEEK and
POKE. At first these commands seemed completely mysterious, because
I had no idea what it was they actually did. I knew it was something
to do with accessing parts of the machine's inner memory, and
we used them mainly to try and make strange things happen by altering
values in a location called, mysteriously, ‘zero page’.
We gleaned from magazines that BASIC stored
some working variables in this zero page area, and by fiddling
around and changing those values you could do odd things - like
speeding up the flash rate of the cursor until it became a blur,
or reducing the keyboard auto repeat rate so that the merest touch
of a key would spew out loads of characters all at once. Sometimes,
messing with these values did nothing at all, and sometimes it
crashed the machine solidly. I can't say that I used PEEK and
POKE on zero page to any great end, or really even knew what I
was doing at all - it was all very much just voodoo… POKE
about and see what happened, without really understanding why.
A Commodore Pet on top of a fridge.
The problems with my games were starting to
irritate me, though. I was working on a game where I wanted there
to be some kind of structured, maze-like environment for the player
to move around in, and it was all getting silly - I was considering
dimensioning a massive array as big as the screen, and for each
character I printed on the screen, storing a corresponding value
in my big array for the purposes of collision checking. PET BASIC
let you put a character at any position on the screen, but there
was no command to let you see what was at any position. Hence
my big, clunky, unwieldy array, which was as inelegant to use
as it sounds. I was getting fed up with it... And then, I thought:
“Well... The system has memory of its own – I know
that from using PEEK and POKE. So, somewhere it must have memory
for where things go on the screen...".
I sat down and proceeded to search for that
memory – by using the POKE command. It took two parameters
(POKE X,Y) and I knew from using it to tinker with BASIC variables
that ‘X’ was a system memory ‘address’
and ‘Y’ was the value you wanted to store at that
address. I knew that there was 8K of memory somewhere in the PET,
and I figured that some of that memory must be used to hold a
copy of what was displayed on the screen.
I POKED here, I POKED there – at first
randomly, and eventually more systematically, attempting to write
values in locations that fell on 1024-byte boundaries, since it
seemed logical to me that system memory might be laid out according
to the size of 1K memory blocks. Eventually I typed:
…and an ‘@’ symbol appeared
at the top left-hand edge of the screen. To confirm that I had
found what I thought I'd found, I typed:
FOR X=0 TO 255: POKE 32768+X,X: NEXT
…and the entire PET character set appeared
in neat order at the top of the screen, without a single ‘PRINT’
statement being necessary at all.
I had discovered the existence of screen RAM,
and in doing so taken my first step towards real understanding
of how the machine really worked, and away from the limitations
This was immediately absolutely superb for games. No more messing
around uttering strings of cursor-positioning characters - you
knew the screen was forty characters wide, you knew that location
0 of the screen was at 32768, and so placing a character with
code ‘N’ at location ‘X,Y’ was as easy
as POKE 32768+(Y*40)+X,N. And best of all, you could find out
what was at a particular screen location by using the opposite
PEEK command, so there was absolutely no need for the clumsy arrays
I had been playing around with. It all simplified down to moving
numbers around and being able to look at what numbers were already
This led to a whole new set of games we could
write, with complex environments and lots of enemies on screen
at once. One of the games we made was called Rhino, where the
player had to manoeuvre for as long as possible to avoid enemies
that constantly took steps towards him, in a vaguely Robotron
style (the advancing ‘Rhinos’ were represented graphically
by using the PET's Pi character). Another involved trying to bounce
a ball towards a target using diagonal lines as ‘bats’
- you could have hundreds of bats on the screen at once and the
ball would deflect through them all. We even arranged for a little
bit of extra chaos in the gameplay by having the bats flip to
their opposite state whenever the ball (PET character #81, bless
it) hit one. The trajectories thus generated were complex and
We called that one Deflex.
Check that crazy deflection principle.
Our code, of course, became incomprehensible.
The price of this new power was readability. When things had been
done using PRINT statements, it was at least fairly obvious what
we were doing. Now, our code was just control structures and lots
of arcane PEEK and POKE statements. Knowing how baffling PEEK
and POKE had been to me before the Great Glorious Moment Of Understanding,
I know our PET code of that era would have looked baffling indeed
to any normal BASIC user. We were becoming machine-specific.
My social life, such as it was, now revolved totally around geekdom.
Every morning I would get the early bus to college (or, if the
weather was nice, cycle the eight miles or so on my bike, listening
to music on a crappy mono tape deck I'd bought from Dixons, along
with a pair of new-fangled ‘Walkman’ headphones).
Park bike, lock bike, make a beeline for the computer room, settle
down to bang out some code, listening to Gary Numan on the crappy
mono tapedeck. Eventually the others would show up – Mole,
Rup and Clovis – and our normal routine of coding and playing
We had the machine to ourselves in the early
morning and after college at night, but during the day, access
to the machine was determined by a timetable. Every Monday morning
there was a stampede of geeks as the week's timetable was posted
up in the computer room – everyone could claim two half-hour
slots per day, and it was important to get there early to claim
the prime slots for oneself. I once bumbled straight into a teacher
whilst I was running to get to the booking sheet, and received
the worst punishment I ever had at college – banned from
using the computer for a week! I was bereft.
The still impressively futuristic-looking,
Most lunchtimes when we weren't coding we'd
bunk off and go down town, either to play Space Invaders at Harlequin,
or to find games available elsewhere – upstairs in Woolworth's
was good. In the electrical department could be found loads of
tellys upon which Terry Griffiths was winning the Embassy World
Professional Snooker Championship, and laid out amongst them were
the game consoles of that era – bright orange Binatone ‘Pong’
games, SIMON, Merlin, an oddity called Star Chess… We'd
loiter there buying nothing and fiddling with the tech.
Downstairs was the record department where every
now and again I'd buy the latest Gary Numan single. There was
a slightly serious little computer shop up at the top of town
that we once went and poked our noses into. They had a PET in
there and I remember loading up one of my games – a version
of the same Star Chess game that I'd seen in Woolworth's and thought
it might be fun to code.
Terry Griffiths, doing snooker.
The bloke in the shop asked me if I'd ever thought
of selling it – which I never had, of course. Our hobby
was pretty much unheard of out in the world at large, and the
only others I knew who were into it were part of our little gang
of geeks. We made games for each other for the fun of it and to
learn, and there was no more thought of making money from it than
one would think of making money from building Airfix kits or going
fishing by the canal on a Sunday afternoon. We used to joke and
wonder if one day in the distant future you'd be able to buy computers
in Tesco like any other household commodity, but we didn't seriously
believe it would ever happen. What we did was just too obscure.
So we thought…
Weekends were a forcible interrupt to the coding flow. I would
dearly have loved a computer at home, but these were pre-Uncle
Clive days, and a PET would set you back a good six-hundred quid
– far too expensive for a schoolkid with no income like
me, and my parents certainly weren't rich enough to buy me one
or interested enough to buy one for themselves. In fact they thought
of my passionate interest as just another passing fad –
like most kids, I'd regularly had intense periods of interest
in a subject only to move on to something else a few months later.
Gary Numan, doing pleasing synth-pop.
My fellow geeks all lived in or near Basingstoke
and I was out in Tadley, so, during these computer-detached weekends,
I amused myself in other ways. I'd go out for long walks with
my non-geeky mate James Lisney (the Baughurst Piano Wizard), usually
ending up at a country pub for a quiet bit of underage drinking.
Or I’d go down to Southampton to see my gran, and have a
bit of a mooch around town there, fiddling with the Pong machines
in the shops, keeping an eye out for Space Invaders machines to
hone my skills on, going to the cinema... I remember seeing Battlestar
Galactica in Sensurround at a Southampton cinema. I was so impressed
with the way my guts vibrated to the roar of Galactica's mighty
engines that I went back the following weekend and saw it again.
My dad worked "behind the wire", as
many people in our small town did – at the huge, sprawling
compound of the Atomic Weapons Research Establishment at the edge
of town. It was never entirely quiet in our town even in the dead
of night - the AWRE emitted a steady background industrial rumble
at all times, and you could lie in bed at night and listen to
the ticking of the criticality alarms guarding the reactors.
Having a parent working behind the wire brought
certain privileges – access to sports facilities at one
end of the compound, which was built on the site of an old WWII
airstrip (I think everyone in our town at that time took their
first unofficial driving lessons on the remaining bits of runway).
Young kiddies were treated to an annual Atomic Christmas Party
where they got to meet Santa and were given presents, and for
us older ones there was the Rec. Soc. (short for ‘Recreational
Society’) where they had a small cinema and, best of all,
a subsidised bar where you could get cheap beer (government-sponsored
underage drinking – class!) and where there would usually
be a couple of coin-ops deployed.
One day, my brother came home from a session
at the Rec. Soc. talking most enthusiastically about a new game
they'd got in: “Like Space Invaders but there are all these
little flies, and they peel off from their squadron and swoop
down on you!”. Of course, I had to get on my bike and head
over to the Rec. Soc. immediately to check out this novelty…
Ah, the days when you didn’t
even have to stand up.
There, I found a lovely tabletop Galaxian machine
(oh, how I miss tabletop videogames - they were so lovely, and
just right for sitting with a mate supping a pint and having a
nice two-player game) and I remember how impressed I was with
it. Colour was rarely seen in videogames at that time, and even
when it was it was usually via the Space Invaders method (strips
of coloured plastic overlaying a monochrome display – hardly
hi-tech stuff). But in Galaxian, colour was encoded into every
pixel – bright yellows and reds and blues and purples –
and the action took place against a smoothly scrolling backdrop
of twinkling multi-coloured stars. Astounding stuff for us PET
hackers used to the limitations of a monochrome display and a
fixed set of ‘graphics characters’.
The gameplay was sweet and much more flowing
and intricate than the monolithic march of the Space Invaders.
The brightly coloured, almost jewel-like insects hung in a buzzing
swarm at the top of the screen, and just as my brother had described,
individuals and groups would detach from the swarm with long looping
trajectories, emitting strange warbling noises and raining sprays
of bombs down on your ship at the bottom. They weren’t above
taking the kamikaze option and ramming straight into an unwary
The editor’s high score.
Genuinely (Nimble fingered arse boy, Ko).
Gone was the saucer and shot-counting, and instead
there were bright yellow ‘squadron leaders’ –
destroy one of these when he was attacking and you would earn
extra bonus points and a brief respite from the swooping attacks
and rain of bombs. Pick off his wingmen first and then nail him
for a nice fat 800-point bonus.
I spent many an afternoon happily hunched over
that machine, either alone or opposite my brother or the Baughurst
Piano Wizard, refining my skills, learning the little quirks of
the game, tricks like destroying an enemy without actually firing
your shot – simply touching the attacker with the nose of
the ship. The cadence of the attacks was similar to Space Invaders,
with the end of each wave being a frantic struggle to survive
as the remaining enemies left the fleet entirely and continually
swooped down the screen until finally you picked off the last
one and there was a glorious moment of silence and completion
before the next rack of Galaxians appeared, emitting their droning
Sound and colour… Smooth motion unconstrained
by an underlying character matrix... These were things us PET
geeks could only dream of, and seeing games like Galaxian put
us firmly in our place. We could make little games for fun, sure,
but they could never equal the wonders of proper coin-op games.
And besides, I was running into more problems with my games. Again…
One – In The Beginning…