Llamasoft History - Part 5
23 I didn't bother opening my exam results straight away. I'd agreed with a mate of mine who was getting his on the same day that we'd not look at them until we were safely down the pub with a pint in front of us. Instead, I opened the brown parcel from Sinclair Research and there, nestling in the polystyrene, was the little ZX-80 in all its vacuum-formed, membrane-keyboard glory.
I plugged it in to the family telly and fiddled with the tuning, until eventually I saw what was to become a familiar sight - a white screen with a black inverse-video letter K in the bottom left-hand corner. I fiddled with it for a couple of hours (slightly irked at the screen twitch whenever you pressed a key, and the fact that when it was actually running a program the display turned off - but hey, it was *my own machine*). Then it was time to meet my friend (the Baughurst Piano Wizard, also known as James Lisney, who in a few years' time would be involved musically with some of the Llamasoft games).
It was a nice sunny day, and we walked several miles to a country pub where we'd been underage drinking for some time, acquired a pint of Guinness each and went outside to sit in the beer garden and look at our results. There was a large Alsatian dog that belonged to the pub in the beer garden, and just as we were about to open the envelopes, he raised his tail and released what can only be described as a jet of projectile diarrhoea from out of his arse. It smelled really awful in the summer heat, and I hoped it didn't presage the arrival of shitty results.
I think the BPW failed one of his A-levels, but he really didn't care because he had a super A ultra-double-plus in music as expected (he was the Baughurst Piano Wizard after all), along with a guaranteed place at the Royal College of Music. My own results weren't brilliant, but nor were they catastrophic - I'd passed Eng Lit and Physics reasonably well and scraped through in Maths with Mechanics. It wasn't enough to get me into Aberystwyth Uni, but through the confusing vagaries of the admissions system, it was sufficient to get me a place on a physics course at East Anglia.
Secure in the knowledge that we weren't doomed to be ejected from the educational system that summer, we demolished another couple of pints of Guinness each before setting off home mildly inebriated. Jim had to play tennis that afternoon and I wondered whether his state of mild pissedness would interfere with his ability to play. No such exertion for me - I returned home and fell to playing with my new toy, finding my way around the little beast by writing a few simple little programs.
24 That was basically the pattern of my summer holidays that year - playing with the ZX, poking around to find out what was in there. One of the reported quirks of the machine was that, as the basic model only had 1K of memory, it didn't have a memory-mapped screen like on the PET, where the screen alone took up almost a whole K. It had something called a "serial display file" instead, which meant that the old technique of POKEing values into screen memory didn't work.
I thought it was silly to say that the display wasn't memory-mapped. After all, the characters on the screen definitely *were* in memory somewhere; surely all one had to do was find out *where*. And so I set out to explore the tiny ZX-80 memory, eventually working out a trick - printing lines of known length to the screen and allowing for the fact that there would be an invisible delimiter character at the end of each line - which allowed me to create a display which could be addressed just the same as on the PET. You had to be careful what you POKEd to the screen, though - there were far fewer displayable characters than on the PET, and some characters caused strange things to happen if you tried to print them. Some warped the display in an alarming manner, and some caused the machine to crash completely.
I wrote a little program to set up this memory-mapped display and to demonstrate how it could be used, and, along with a letter explaining how it worked, sent it to one of the early computer magazines, ‘Practical Computing’, which had just started a page dedicated to us new ZX-80 owners. The next month when I walked to the shop to pick up my copy I was delighted to find that my letter and program had been published on the ZX-80 page - my first taste of geeky fame.
Although people did pull off miracles of coding in that tiny 1K memory – amazingly, I remember somebody actually managed to create a chess program with rudimentary computer AI – it really wasn't enough, and I eventually ordered the 4K RAM pack. *Just* the RAM pack, mind - I couldn't afford any actual memory chips to go in it initially, so I bought it ‘unpopulated’, and then as funds allowed bought 2114 chips one at a time, expanding the system memory by half a K at each increment.
I got some information about the Z80 CPU that was at the heart of the ZX-80, and taught myself its machine language. Because memory was *so* tight in the machine, it was difficult to find a safe place to POKE some machine language where it wouldn't get stomped on by the system stack or the dynamic display file. I discovered the same trick that lots of us ZX machine language hackers came up with - if you made the first line of your code a REM statement, then BASIC wouldn't try and execute it (of course), and the text of the REM statement would begin at a static, known location. Therefore you could reserve x bytes of memory for machine language by simply creating a REM statement x characters long, and then POKEing the machine language commands into the statement from the known base.
You had to be careful, though. If your machine language routine contained the same byte that represented ‘end of line’ to the ZX-80 BASIC interpreter, you'd chop off the end of your REM statement and leave garbage following it, which would often cause the machine to crash. And if your code contained any of the values that distorted or crashed the display, then when the BASIC interpreter tried to list the program, at best it could make the display unreadable, and at worst it could crash the machine outright, losing your work as it did. Still, we worked round these problems, and many a ZX-80 program consisted of a single REM statement full of gibberish followed by the line RANDOMIZE USR 16514 – the BASIC command which transferred control to the machine language stored safely in the REM statement.
I tinkered away writing bits of code to do things that BASIC was slow at, just as on the PET - Conway's cellular automaton, screen scrolling, that kind of thing. I pored over disassemblies of the ZX-80's ROM code, eventually working out an inelegant hack - simply repeatedly calling the ROM routine to regenerate the display, and sneaking in my own code between calls - to allow the creation of graphics which moved without the display turning off.
Since I couldn't be taking over the family telly with all my hackery I looked in the free adverts section of the local paper and bought my first ever telly - a monster of an old black-and-white beast, just about barely alive, for a fiver from a granny in Reading, so that I could lurk in my bedroom and geek away to my heart's content.
25 Soon my summer of geeking came to an end and it was time for me to leave and go to UEA in Norwich. My parents loaded up the car with all my gear and my ZX-80 and my Teleng-Rowtron games system and that clunky old telly and we set off. Unfortunately, halfway there the car broke down, and I was sent on by train with a subset of my possessions to find my own way to the University halls of residence. I found my room, upstairs in O Block, and settled in as best I could. And then I did what every newly arrived student doubtless did, everyone a stranger and not really knowing what else to do - I headed to the student union bar and got a bit pissed.
My main memories of that first night are being a bit shy and nervous, but eventually as drink reduced my inhibitions, I fell in with some guys also from O block. I remember that in the bar they had a Star Trek pinball and one of the really old, big Cinematronics Space Wars games, and predictably enough I spent a lot of the time hovering around that thing, mostly watching others playing and occasionally having a go myself.
I also started drinking far too much cheap student union cider. Turns out the blokes I'd hooked up with were, well, much more ‘laddish’ than me. I wasn't that experienced at drinking, in part due to a formative experience which I shall shortly relate. The sloping off for a couple of illicit pints with the BPW had been very much an occasional thing, rather than something done every night or even every weekend, so I just wasn't experienced at supping, and my tolerance was very low. In order to keep up with the lads from O Block, I was having to drink rather more than I was used to, and smoke fags too, something I didn't do at all at that time.
I drank lots at the bar, and then we moved on to a concert that was being held that night in the halls, a band called Fischer-Z, about whom I don't recall that much except that they were very loud and at some stage in the proceedings someone came on stage dressed as a giant spliff.
More tins of lager were bought and consumed during this, and by the time I got back to my room I was thoroughly pissed. I flopped into bed and, unfortunately, rather than being claimed by merciful oblivion, I found myself experiencing a bad case of the helicopters. This swiftly deteriorated into a litterbin vomiting session (we didn't have our own loos, and there was no way I was running halfway down the block to the communal bogs with my stomach contents lapping at my back teeth).
Unfortunately, this process proved to be iterative, and I ended up spending most of the night trying to work my way through Piers Anthony's ‘Ox’ and ‘Orn’ stories (which I recall invoked Conway's cellular automaton at times as part of the story), occasionally pausing to deposit some sick into the bin. Eventually, as it started to get light again outside I went for a bit of a walk to try and make myself feel better, and found a nice calm little bit of woodlands, just down the road, where I rested a while, and vomited a bit more.
26 I had only been as pissed - and as badly hungover - once in my life before. When I was about 14, our school did a French exchange programme, and some of us went to stay with French families near a town called Alencon, which has the dubious honour of being twinned with Basingstoke. I'd stayed with a family called Beloche, twinned up with their son Eric. Now Eric Beloche was very mature for a 14-year-old, in that way that can seem a bit intimidating to a shy, thin and unremarkable British teenager like me.
Eric was a nice bloke though, and I spent some good time with him and his family over there, learning what it was like to go to French school and ride a bike on the wrong side of the road and how French people cooked a steak by just *showing* it to the cooker. And in due course he came over to stay with us, and his rugged Continental good looks and confident air made him most desirable to the girls in my year at school.
As a result of this, I got invited to a party I would never otherwise have even known about (being shy, thin and unremarkable) out in a village called Cliddesden way over on the other side of Basingstoke from where I lived. The party wasn't even with any of my small peer group in school, and I'd blatantly only been asked to come because I'd bring Eric with me. Perhaps I should have given it a miss, but matters were complicated by the fact that there was a girl going to the party; a girl upon whom I had a (completely innocent, utterly silly, shy adolescent kid style) bit of a crush. I got my parents to deliver me and Eric to Cliddesden village hall on the appointed evening.
Of course I had a very awkward time at first. These people weren't my mates, I was shy and awkward, and Eric was away with the girlies straight away, so I shambled around on my own trying not to feel too awkward about being far too inhibited to actually move in any way rhythmically to the little village hall-style disco they had going on.
Now this was a party for 14-year-olds, and there certainly shouldn't have been any alcoholic drinks there, but upon a foray to refill my glass of Coke I noticed that there were in fact several bottles of Strongbow around. At that point I don't think I'd ever been inebriated in my life - I'd probably had a sip of Mum's wine at Sunday lunch once or twice, but never enough to actually have any kind of perceptible effect. Still, I was bored, and so I thought, if only for something to do, I’d help myself to a bit of Strongbow. I filled my plastic cup with the fizzy yellow liquid.
It didn't taste too bad - sweet but with a sharper tang to it, and after I'd finished my first cup I was starting to feel more relaxed and not quite so awkward. So I returned to where the cider was and refilled the cup and drank a bit more.
This, too, proved to be an iterative process.
The results, on the whole, were entirely predictable, and I like to think actually helpful, once I'd recovered from the projectile vomiting and the hell that was my virgin hangover the following day; for they taught me quite fiercely that a little of something can be good but a lot of it can be Very Bad Indeed.
I got very pissed, made a complete twat of myself in front of a lot of people from my year in school, actually tried to talk to the girl I had a crush on whilst completely off my face and barely able to speak, thereby ensuing that whenever I saw her in school I wished devoutly for the ground to open up and swallow me. I spent a lot of the time lying on the ground outside, vomiting, and indeed decorated the back seat of my mortified parents' car when they arrived to pick me up. I learned that one must treat alcohol with caution, and above all I learned to be completely embarrassed and ashamed.
27 You may wonder, and rightfully so, why I am dwelling upon matters of teenage drunkenness when I am supposed to be telling the history of Llamasoft, and we'll get to that if you'll bear with me. Because somewhere on that awful slide down to drunken twattishness and shame, something happened; something insignificant at the time and for some years to come, but which I remember quite clearly.
Recursive flashback - forgive me, but it's a seed event...
The first music I ever really got into, as opposed to just heard as a background to my five older brothers growing up, was Pink Floyd's Dark Side Of The Moon. I was 11 when that album was released, and far too presentient to make any coherent music purchases of my own. My brother Steve bought a copy of Dark Side, and in due course I heard it and I liked it – in an entirely different way than I'd ever liked any music before. It was something I really wanted to *listen* to, again and again. I made a recording of it by putting a microphone in front of one of the speakers of the family stereo (playing in Mono mode) and recording it onto a cassette, and I'd take that crappy recording and lie in my bedroom with the lights off, just listening to it. At that age I wasn't really too into the singing bits (time would reveal their beauty to me). But the unique sound, the synthesisers, the... Floydianness of it really clicked with me.
In particular, one track, On The Run; a monster synth riff with aircraft noises and wicked filter sweeps. For some reason I started to *see* the music as progressions of geometric shapes and colours in my mind's eye, lying there in the dark. Only Floyd did that to me. It just seemed like a natural way for my imagination to accompany their music. Hence my predeliction for listening to them in the dark.
Anyway, back to that night of 14-year-old-drunken shame... As I mentioned earlier, they had a small disco in Cliddesden village hall that night, and the DJ had some of those little 3-lamp traffic-light-style flashing lights you used to be able to get from Tandy, and somewhere along the trajectory down into irrevocable nonsentience, something must have swilled loose in my brain on the tide of cheap cider.flashing lights and be silent”
I thought about my Floyd-inspired internal visualisations and what those silly traffic-light flashers were actually trying to do, and I looked at them and thought to myself, quite clearly and distinctly... "There must be a better way of doing it than that"...
28 In the months that followed, despite being crippled with embarrassment for most of the time on account of how awfully I had behaved that night, I started to have strange daydreams during the more boring parts of English lessons. Most kids daydreams are all about being a footballer or a rock star. Mine were similar, in that there was music, but I wasn't playing it, I was doing... something... that involved... big screens of some sort upon which were... something... a bit like what I used to see when I was listening to Floyd, except I was *performing* it along with the music rather than just imagining it... somehow...
I had no idea *how* any of this would happen. I'd never heard of computer graphics and I was of an age where you just assume that if something is a good idea then it will get made, and all I'd have to do was find out where I could get such a machine and then learn how to use it. Just like buying a guitar, except... different.
(And somewhere in America, entirely unknown to me, people at Atari were smoking their board-meeting spliffs and coming up with the Atari Video Music... and John Whitney was experimenting with visual harmonics using PASCAL programs and a frame-by-frame film recorder)...
Back at University, that first night and following morning of puking reminded me of the lesson I'd learned back when I was 14, and indeed probably occurred for all the same reasons - feeling alone and a bit nervous and shy in a social situation in which I didn't know anybody. But again, it probably stood me in good stead in the long run, because I didn't end up being a very boozy student at Uni. A bit is nice, too much is unpleasant; avoid the extremes and you'll be fine. Not a bad lesson to learn in the end, and probably cheap at the price of two hangovers, and a semi-infinite amount of shame.
YAK, September 2004.