ZX Spectrum Projects
The ZX Spectrum was my first computer, bought in 1983 with all my paper round savings. I loved it, spending hours on it. I got bored of the games pretty quickly, taught myself Z80 assembly language and wrote all sorts of programs, all now sadly lost to time. And then I moved on, as is the whim of a fickle youngster.
With my original Spectrum sold many years ago to fund my Atari ST, when I resurrected my interest a couple of years back emulation was the only option. Until, that is, in the summer of 2022 when I bought a couple of ZX Spectrums on eBay, sold as seen, for spares or repair. They were broken, so, knowing an awful lot more about such things now than I did the last time I had a Spectrum in my hands, I fixed them, then largely picked up where I'd left off in the late 80s. I learned more about the machine, the Z80 and the digital electronics which made it all work. Amazing that 40 years on I'm still learning all sorts of things from the little machine.
This page of my website catalogues my ZX Spectrum projects, from the simple to the absurdly complicated. All my work is open source or open hardware design, links to my Github page are provided.
ZX Spectrum Expansion System, Recreated
My recreation of the ZX Spectrum Expansion System from 1984. The original product gave you a ZX Microdrive high speed tape storage device, plus an Interface One to connect it to the Spectrum. My 2023 solution gives you 8 (virtual, SD-card backed) Microdrives, and, unlike every other virtual Microdrive at the moment, doesn't require an Interface One.
Pico ROM Interface
This is an implementation of a fairly typical ROM interface board, only one which uses a Raspberry Pi Pico microcontroller board as its main component and hence is far more programmable and flexible than the typical implementation which uses an EPROM or flash chip. It can carry several ROMs and will page them in turn when the magic button on top is pressed.
Tom Daly used this project as the basis for his ZXPicoIF2ROM work.
Lower RAM Module
When I was looking for a new lower RAM module - see next item - I realised that there aren't any open designs. So I created one.
It's a rather standard approach, using a modern SRAM IC in place of the original 8 DRAM ICs, but as far as I know it's still the only free, open design for this module ever created.
Replacing the ZX Spectrum Lower RAM
This isn't so much a project as a photo essay I did for Spectrum Computing. It's a write up, with lots of photos, of how to replace the lower RAM in a 48K Spectrum.
Space Raiders Disassembly
Game: The Virus
The Virus, my second game for the ZX Spectrum. I started off by trying to recreate the boids algorithm for the Spectrum, but that didn't really go too well. Seconds-per-frame, as opposed to frames-per-second sort of thing. After a massive optimisation effort it still wasn't great, but was good enough to build another game from.
Game: Wonky One Key
I tried to do something original, which was to create a game which only had a single control key. The concept worked, it's not a bad game and it was well received at Spectrum Computing. The source code is in my ZX Wonky One Key Github project.
BE is a tool used by the Storage Group at IBM where I've worked on and off for many years. Its function is to present in a hierarchical manner a block of data built up by a "flight recorder" module in a program. The program runs and builds this data block in memory. When the program hits an error the error handler captures the data block and presents it so it can be saved to disk. From there a tool like BE can be used to inspect it, yielding information about the state of the program when it hit the error. It's the IBM Storage Group's standard first failure data collection (FFDC) tool.
Short video here:
z88dk FUSE Source Level Debugging
This is a modification to the Z80 debugger in the FUSE Spectrum emulator. It adds to the debugger the ability to open and display a 'C' source file from a z88dk-based software project and have the debugger follow the source code as the Z80 single steps the generated Z80 machine code.
There's a lot of parsing of z88dk map, symbol and list files here, plus some rather clever GTK code to track the source code lines as the Z80 follows them.
z88dk Getting Started Guide
I'm the author and maintainer of The ZX Spectrum Programmer's Z88DK Getting Started Guide, a series of articles which introduces the z88dk 'C' compiler based toolkit from the perspective of the ZX Spectrum programmer.
The series covers many issues pertaining to the ZX Spectrum, including the screen, sprites, multi-colour tricks, etc. The guide has been adopted as part of the official z88dk documentation and is hosted on the project's Github page.
Site and content Copyright 2023 Derek Fountain - All Rights Reserved