As a teenager I tried to sell these games by running an ad
in a magazine. Sadly, too few copies were sold to recover
the £100 pound cost of the ad. You can now play for free.

ZX Spectrum games by David Hembrow

Click below to download games directly. These games are all free to play. The files are usable with almost any Spectrum emulator, emulators being available fore free for most more modern computers, or can be exported to an actual cassette for loading on a real Spectrum.

While I'd been interested in computers for many years, the ZX Spectrum was my first 'real' computer. Before that we had lived in New Zealand where computers were far more expensive so I'd read in magazines about such wonders as the Ohio Superboard / Compukit UK101, the MK14, The Apple ][, Commodore PET, Tandy TRS-80 and other machines, but never had been able to afford one. We returned to the UK in 1981 and I quite quickly got my hands on the only programmable device I owned before the Spectrum, a TI57 programmable calculator. This was marvellous but limited to just 50 program steps and no I/O past the LED 7 segment screen and the keyboard. I wrote Lunar Lander games and similar types of things on the TI57, but you couldn't do much beyond that with such a simple machine. I'd also written some software in BASIC for an RML380Z at school, but of course my time was limited on that machine so I couldn't progress much.

Teaching myself to program in assembler and writing software on the Spectrum was something I did for fun. I did try to sell some of these games once and occasionally I sent things to magazines or to software houses with the hope of finding a career. I even ended up involved with a few commercial games software companies, but they either seemed to end up being something other than proper companies who could actually pay for work done or they'd not actually finish the projects so my efforts would end up unreleased. As a hobby I also built various bits of hardware for the Spectrum, including A/D and D/A converters with which I manipulated sound, a MIDI interface which allowed playing of samples from the Spectrum in response to a MIDI keyboard, Z80 CTC and PIO interfaces, a trackball interface, a fix for the IF 1 network so that it was compatible with the QL etc.

Simultaneously with this effort I was also getting into other sorts of software, writing other assembly languages (68000, 8086, 6800, 6809, 8051) and writing my own tools to work with these other machines (assemblers, compilers, linkers, disassemblers etc.). My Spectrum ended up in use as a printer service on the network running server software which I'd written in a FORTH like language. This was a path to an actual career in software for proper companies who actually paid invoices that I sent them.

I actually wrote quite a lot of games and other pieces of software for the Spectrum, but only the ones which I've successfully managed to get from cassette onto a modern computer can be found here. However all of that is a story for another time. This page is about the software written for the Spectrum which you are free to download and run. I hope it provides some amusement.

Miner 1983

Miner runs on a 16 K Spectrum. It uses interrupt driven sound to provide a continuous sound track (not just occasional beeps) and the monsters as well as your own character are animated. The monsters are quite stupid as the game was released. This was a deliberate decision - I also wrote a far more clever algorithm for them but this resulted in instant death because they really did follow you every time. The game wasn't playable with the smart monsters However with the stupid algorithm you can easily make traps for the monsters and avoidance is the key to success. If you need to you can laser them by heading towards them and pushing the fire button.

The laser was supposed to include a visual effect but I never got around to implementing it. At the time that I wrote this I had only a 16 K Spectrum and I was using a very primitive Assembler which took source code from REM statements and assembled it into RAM (reserved with CLEAR, further reducing space for source code). This required several files on tape to be assembled one after another and a memory leak meant that each part had to be shorter than that which came previously. Not a very good development environment and something which stopped me making further developments after this point !

Note that this game doesn't work perfectly on some older Spectrum emulators. I used BCD for the score because this made displaying it more efficient but that doesn't work on an emulator where the DAA instruction isn't correctly emulated and the score doesn't work properly. All modern emulators seem to be fine.

This is quite a difficult game because you quickly progress from one up to three opponents and it speeds up quite quickly. If you can score much more than a hundred points you're doing well.

Download Miner

Zap Attack 1984

By the time I wrote this I had expanded my personal Spectrum to 48 K of RAM. However the game still runs on a 16 K machine. This time the sound is similar but the objects on screen move pixel by pixel. I tried to get so many moving objects on screen as possible and I can't think of any other Spectrum game which animates so many objects at once as this one does. Mostly they're animated at 50 Hz, but slowdown can occur if the load becomes too high.

For a very long time this game was not available anywhere online. As well as the small number sold, I also gave copies to friends back in the 1980s and no doubt they tried to make copies for other friends, but this game was not easy to copy. I seemingly stumbled upon a copy protection mechanism worked reasonably well. This is how it worked:

  • Part 1: BASIC loader. Like almost all Spectrum games, this uses a small BASIC loader. This had code in a REM statement which was called immediately by the BASIC on loading, and that code then loads the loading screen.
  • Part 2: The loading screen. The loading screen is saved headerless, but looks like a header for a BASIC program to the Spectrum's standard load routine. I did this on purpose to sow confusion, especially for automatic copy software. The screen is also a little longer than usual because it also overwrites the printer buffer with code, to which the last piece of code then jumps.
  • Part 3: The tone. The printer buffer code did something quite unusual - it listened for a special tone on the tape which was not part of the code. If the tone was not present then a piracy warning text was displayed. If the tone was heard then the actual program would be loaded. The tone also had another feature: it was recorded far louder than the code segments. This confused the automatic level controls in cheap tape recorders and caused them to make poor and usually non-working copies if a tape to tape copy was attempted.

  • Part 4: The program. This is also headerless and also looks like a BASIC header, but it contains the actual code of the program. Once loaded it is jumped to and runs the game.
  • At the end of January 2020 I finally got around to defeating my own copy protection code by using a hex editor to re-write Part 2. This involved finding the code which checked for the tone and preventing it from jumping to the copyright message code. So a few NOPs replaced jumps and I had to recalculate the checksum.

    In the attact mode I show off the 64 column text routine I'd just written (yes, I know that this text is almost unreadable ;-) and smooth scrolling. These are things I was also using for more serious software. 32 columns was a real limitation. I also wrote a much nicer 40 column text output routine which may end up uploaded here somewhere if I find some more of my old tapes.

    This is a simple game to play. There are just three controls: left, right and fire. i.e. much like 'Space Invaders'. However as well as being simple it's also quite difficult. The speed is constant (unless you're good enough to experience the aforementioned slow down) but the number of enemies on screen rises rapidly. If you can score more than 1000 points you're doing well.

    Download Zapattack

    Microdrive backup utility 1985

    I used Sinclair's microdrives with my Spectrum (less so with the QL because I had disks) for many years and despite all the negative publicity actually found them to be quite reliable. This utility allows backups to be made of microdrives.

    Download microdrive backup

    You can also find other links, and a few other games (mostly demos of a BASIC extension that I wrote at this link).

    Support me ?

    If you enjoy these games, that's great. If you copied them and played them back in the 1980s, I'm glad you did so. I certainly don't expect payment now for work that I did as a teenager. These days I support myself by selling bicycle components. If there's anything you need for a bicycle then I can perhaps help you with that.