Llamasoft History - Part 1
"In the beginning..."
1 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 sheeps 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 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.
2 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 Main Study".
"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.
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.
3 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 things wrong.
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.
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 never used.
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:
…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.
4 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.
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’.
5 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.
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 orgasm.
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.