The ZX Spectrum is quite the beloved retro computer here in the UK (and in other parts of the world too I believe). It was cheap, it looked cool and it enabled a lot of young folks to get into computing and create their own software. Designed and built by Sinclair Research in 1982, there were a number of different models over the years. The most popular among retro aficionados seems to be the Spectrum +3 or possibly the Spectrum 128. However, the one I'd like to talk about here is the Spectrum 48K - arguably the most iconic - with it's rubber 'dead-flesh' keys!
In this first of a two-part blog post and video, I'll be getting some extra bits to load games and programs off an SD-Card, making the machine work on modern(ish) tellys and fixing the upper memory. In the second part I'll attempt to program the machine and make a demo.
I never had a Spectrum back in the day. I was on the other side of the line with a Commodore 64. I was pretty young though and didn't really know the difference. I figured I should really take a look at this iconic machine close up - see what I can learn from it and what, if anything, can we do with it in the modern day. As it turns out, quite a bit!
Clive Sinclair himself has become a bit of a living legend. If you haven't seen the film Micro-men you are in for a treat - it paints an interesting picture of the early days of computing. It stars Alexander Armstrong and Martin Freeman, with music by Vangelis of all people!
The Spectrum kinda survives into the modern day, with the Spectrum Next. So beloved is the brand that the next is onto it's second revision already, over 30 years after the original. Not too shabby!
With all this in mind, I decided to buy an old Spectrum, make some modifications to bring it up to date, then write a little demo for it, play some old and new games and see what folks have been making for it, for all these years.
If you are really into the Spectrum stuff, there is an excellent YouTube channel called The Spectrum Show which I highly recommend.
I managed to find my Spectrum on eBay for a decent price, some years ago as I remember. It came boxed with the original power supply and manuals - it even had the WH Smiths price sticker still on the front. Not too bad at all! The unit was in pretty good condition, or so it seemed from the outside.
The manual for the Spectrum, rather charmingly, suggests you tune your television to BBC2 once you've plugged in your specky (or 603.25 to 607.75MHz according to this website). Back in the day, modulators were used to convert the signal from the computer into the same sort of signal analogue TVs would pick up. We need to bypass this and get the raw digital signal out, over a composite cable.
I've found a couple of circuits for this - some seemed rather complicated for my liking and I'm not sure why. Googling for composite modifications for the Spectrum gives a few different approaches. I decided to go with a mod from Brian Hoskin's site instead. His guide is pretty good - he covers all the points in detail but I'll list them here (you can also see it in my video).
That's pretty much it really. A very simple mod, but it does require a bit of care as the modulator is soldering on pretty well. I broke the circuit board inside the modulator sadly. I'd hoped to keep the innards to use in another project. There was a hidden screw I'd missed on the inside. Oh well.
I'm happy with how the composite mod came out in the end.
It's quite easy to look back on the past with rose tinted spectacles, especially when nostalgia around retro computers is concerned. It's never all perfect though - there was a lot of hassle with older machines, back in the day - chief of which was loading times. In the UK, cassette tape was dominate media, until floppy disks came along. Only the richest, fanciest folk had hard drives. Cartridges were purely for consoles, which were also rare in eighties-UK.
Tape isn't the best for this sort of thing. It would take an age for a tape to load, if it even loaded at all. It certainly doesn't last forever. Thankfully, modern technology can help us out here. Enter the DivMMC Pro One from ByteDelight.
I looked around for the right SDCard loader for the specky and decided this was the one to go for. Reasonably priced, included joystick ports, non-invasive and ready to run out of the box. It supports the ever popular tap file format, along with a number of others. My order came complete with both a loaded SD-Card full of treats, and a stroopwaffle! Ah, these Dutch folks know how to market their country! :D ByteDelight make a number of products - they have a youtube account you can take a look at. Their customer service is pretty good too.
The DivMMC worked right first time. I can load games quickly and easily. Problem solved! Once the DivMMC is plugged in and the machine turned on, we are greeted with the ESXDOS screen. Soon after this loads, we get a very familiar looking file browser. Scrolling this with the arrow keys, we can find a tap file we want to load and off we go! Very simple.
Some folks would say this isn't the real experience - that tape loading is part of the joy, the authentic eighties-ness. They'd be absolutely right and there is a part of me that would like to experience that again, but I do know it would drive me up the wall ifI had to do this every time.
For me, I don't really want to recreate the eighties, so much as I want to understand what is still good from that era, and what we can take from that time going forward. Specky programmers have learned so much since that time; new techniques have been learned, tools have improved and game design has moved on. This project is more about finding what is relevant to the here-and-now. So yes, I totally get the tape loading thing, but we'll look at that another time.
The default SD-Card that comes with the DivMMC Pro one is loaded with a few things, including a bunch of demos. I tried a few of them but they wouldn't loaded. Some were fine though. I noticed a pattern - the smaller demos were fine, but the larger ones would fail. The same was true with the freeware games that were included too. I immediately began to suspect a memory fault.
There is a way to test the memory on a ZX Spectrum. You try to write and read from it directly, using the initial prompt. I found a couple of diagnostic webpages such as 1000bit and Brendan Alford's github to be very handy. The command I ran to confirm things looked like this:
PRINT PEEK 23732 + PEEK 23733 * 256
The result suggested that the first 16K was fine, but the upper part was not. Oh well. Looks like we need to replace the upper memory.
There are two banks of 4 chips each. It is still possible to buy these original chips but I thought it might be better to use a modern replacement, keeping the chips in case I do decide to test them later. My plan was to remove the chips, replacing them with sockets, so I could swap things in and out a later date. It's quite an invasive procedure but it's the only way to really fix things. The memory chips are soldered directly onto the board, as it keeps costs down, but we can do better.
I needed to replace the memory. I decided to go ahead and use a modern replacement for the upper memory, rather than replace each chip as I wasn't quite sure which chips had broken. Nevertheless, I picked up a few replacement chips just in case the modern board didn't work. I'm using the Upper RAM Replacement Board from Retroleum. It requires soldering a piece of wire over two contacts, as a jumper. I found this a little fiddly but once it's done, the board can be pressed down into place fairly easily.
I'm really interested in what folks are making for the ZX Spectrum today. Apparently, quite a lot! My interested was first piqued by Castlevania, the spectral interlude, which looks amazing! However this doesn't run on the 48K sadly. However, there are many modern games that do. In the video, I have a look at Bruce Lee RX and Last Train to Tranz Central. Both of these can be found for modest price on itch.io and they are great!
Looking at Tranz Central in particular, it really reminds me of Downwell, at least in how it looks. I don't think Tranz Central or Bruce Lee RX would look out of place on a Switch or a modern mobile phone. It's clear that theres still a lot of love out there for the Spectrum and that the games that are still being made for it hold up. I get the impression that Spectrum coders know the machine inside and out, but can now also apply modern gameplay design to the table.
I fancy trying my hand at some Spectrum programming, having never done Z80 assembly or Sinclair Basic before. Some folks might wonder what the point of such a project is. Ultimately, learning any sort of assembly gives one an appreciation of the hardware and low-level design. Secondly, having certain constraints forces creative solutions. Thirdly, learning a new language and style helps to break up the monotony of too much Python (at least in my case). Finally, NOVA demoparty is coming up and I think I might like to enter.
So the next video in the Spectrum series will (hopefully), be all about the programming of this mighty system! I hope I can grok it enough to make something half decent.