Skip to content
Systems

ZX Spectrum Next

The Spectrum Sinclair did not build, forty years late

A community-funded FPGA Spectrum in a Rick Dickinson case: a Z80N at up to 28MHz, 128 hardware sprites, Layer 2 graphics, three AY chips and SD storage — while still running the 1982 machine's software.

sinclair-zx-spectrumhome-computerz80fpgamodern-retrocommunity-hardware2017–present

The ZX Spectrum Next is a modern Spectrum: an FPGA implementation of the original machine, extended with the hardware the 1980s Spectrum conspicuously lacked, in a wedge case designed by Rick Dickinson — the industrial designer of the original ZX Spectrum.

It matters here for two reasons. It is the machine a good deal of new Spectrum software is now written for, and it is a working answer to a question this Vault keeps raising: what would these games have looked like if the hardware had given programmers sprites, a scrolling layer and enough colour?

It has a Copper, and it is the Amiga’s

The single most telling addition is a coprocessor with four instructions that waits on the raster beam. The Amiga’s Copper has three; the Next’s has four, and the fourth is an admission.

WAIT wait for raster line 0–311 and horizontal position h*8 — 1 clock
MOVE write a value to a Next register — 2 clocks
NOOP “special case of value 0 to port 0” — 1 clock
HALT “special case of WAIT 63,511

That last line is the interesting one. On the Amiga, a Copper list is terminated by waiting for a beam position that never arrives — Commodore’s manual notes that “this final WAIT instruction never finishes”. The Next inherits the same idiom and gives it a name: HALT is not separate hardware, it is WAIT for line 511, which does not exist. A convention on one machine has become an instruction on the other.

The program is 2 KB — “since each instruction is 2 bytes it can store exactly 1024 instructions” — and the program counter is 10 bits, “auto-incrementing it after each instruction, wrapping around after last one back to first one”. So a Copper list that does not halt runs forever by construction, which is why the halt idiom is needed at all.

Three AY chips, and one you can read

The original Spectrum 128 had one AY-3-8910. The Next has three: “there are three AY chips in the zx next whose selection is made through port 0xFFFD”, with the selected chip still using the classic ports for register select and data.

More quietly useful is what the Next adds around them. The AY-3-8910 is write-only from the programmer’s side — a register once written cannot be read back, so software must remember what it set. The Next adds port 0xBFF5, which “when read, returns the value stored in the selected register on the active AY chip”.

Forty years on, the fix is to make the chip answer.

Speed, and the price of the edge connector

The Z80 can run at 3.5, 7, 14 or 28 MHz — the original clock and multiples of it — selectable from a register, the NMI menu, or RUN AT in NextBASIC.

There is one condition, and it is the machine’s whole design philosophy in a sentence:

Enabling the expansion bus (edge connector at the back of the board) will limit the speed to 3.5MHz, to keep signals’ timing compatible with classic peripherals.

Plug in a 1982 peripheral and the machine returns to 1982 speed. Not as a limitation of the FPGA but as a deliberate contract: the original edge connector carries timing expectations that eight times the clock would violate, so the Next slows down to keep its promises to hardware older than itself.

Specification

From the community developer wiki at wiki.specnext.dev:

FPGA Xilinx Spartan-6 on first-Kickstarter boards; Artix-7 on the second
CPU Z80N — Z80-compatible with additional instructions
Clock 3.5, 7, 14 or 28 MHz, with wait states
RAM 768K unexpanded, 1792K expanded, in 16K banks with 8K MMU paging
ROM 64K for ROMs 0–3, plus a 32K user-programmable Alt ROM
Sprites Up to 128 hardware sprites, 16×16, with 1×–8× scaling, rotation and mirroring
Layer 2 256×192 or 320×256 in 8-bit colour; 640×256 in 4-bit
Tilemap 80×32 or 40×32, with 8×8 glyphs
LoRes 128×96, 4-bit or 8-bit colour
Legacy modes 48K and 128K ULA, plus Timex hi-colour and 512×192 mono hi-res
Sound Beeper, three AY-3-8910s, four 8-bit DACs, optional Raspberry Pi I2S audio
Audio out HDMI, 3.5mm jack, or an optional internal speaker

Also documented: DMA, a CTC, a Copper co-processor for per-scanline register changes, hardware expansion for a real-time clock, WiFi and a Raspberry Pi Zero accelerator.

What it fixes

Read that table against the attribute clash the original machine forced on every programmer, and the design intent is plain. The Next keeps the ULA modes so that 1982 software still runs, then adds the things whose absence defined Spectrum programming for a decade: hardware sprites instead of software-drawn ones, a colour layer without the 8×8 attribute grid, a tilemap, and three sound chips where there had been a one-bit beeper.

The 28MHz mode is the same idea applied to the clock. A Spectrum game that ran at 3.5MHz can be given eight times the cycles.

Why it is in this Vault

Most machines here stopped. This one did not start until 2017, and it is the reason several people in these pages are described in the present tense — Jim Bagley writing new software for it, Tim Gilberts bringing the Gilsoft adventure lineage forward, Rick Dickinson designing the case before his death.

It also gives the curriculum a live target. Everything the Spectrum sections of this site teach about Z80, memory layout and timing transfers directly, and the extra hardware is documented rather than reverse-engineered.

See also

Not yet fact-checked. This entry was drafted by an AI and nobody has verified it. The dates, figures and technical details may be wrong. Use it to find your bearings, then confirm anything that matters against a primary source.