ROM image from the prototype ZX Spectrum now available for download at the Centre for Computing History
This is the absolute original build of the Sinclair Spectrum, probably dating from late 1981 to early 1982.
It has been in the possession of Nine Tiles for the whole of its existence, a subcontract company who had been responsible for the Basic ROM in the ZX80 and ZX81, and finally the Spectrum.
The ZX80 and ZX81 BASIC were written by John Grant, who would comment in 1985 "Certainly with the Spectrum we wanted to rewrite the code, but there wasn’t the time and there definitely weren’t the resources. “At every point in the development of the ZX range Clive wanted the maximum new facilities for the minimum money.”
A video of it in action
Will be interesting to see any of the differences. (Sadly, I’m not that into Z-80, so it’ll be somebody else to explore this.)
If you see any write-ups on this, please do not forget to link it here!
It will be interesting! There might be some useful comments posted to the video page.
Unusually, it feels possible that this ROM is not an immediate predecessor to what shipped, but actually a successor. From the nearby article:
The original plan was for the machine to ship, and an upgraded ROM to be made available later, a plan rendered impossible by the sheer number of machines sold.
The result of all this unsettled period was that Sinclair launched the Spectrum with an unfinished ROM, Nine Tiles continued to work on it until 3 months after launch, but by then too many machines had shipped, so the new code and this prototype were no longer needed.
In which case we’ll see improvements and bug fixes!
Nice history here of Sinclair Basic, including a bit about the square root bug in ZX81 basic:
“As far as Clive was concerned, it wasn’t a question of what the machine ought to be able to do, but more what could be crammed into the machine given the component budget he’d set his mind on,” said Vickers in an interview on July 23, 1985. “The only firm brief for the '81 was that the '80’s math package must be improved.”
The ROM was almost complete by the end of autumn 1980, but support still had to be added for the ZX Printer. Somewhere between this time and the launch, a bug crept in which caused the square root of 0.25 to be 1.3591409. Nine Tiles quickly fixed the bug, but Sinclair was somewhat tardy in making this version available to people who had already bought the machine.
Also, about Spectrum Basic’s incompleteness:
Those who are interested in what the finished ROM might have looked like should visit Geoff Wearmouth’s website at http://www.wearmouth.demon.co.uk/, where you can download the latest version of his Sea Change ROM, complete with source code. Wearmouth’s version of Sinclair BASIC cunningly includes RS232 and network support in the main ROM, although sadly it is incompatible with the majority of commercial Spectrum software.
And this is impressive, from a different article:
The ZX81 could cope with floating point arithmetic which was achieved by a sub-interpreter, crammed into the ROM, and written very compactly in a FORTH type language. Square roots, for instance, were calculated using only seven bytes — but the code took an awful long time to run! The Spectrum is so slow on floating point arithmetic because it uses these very same routines, that first appeared in the ZX81 ROM.
(The square root bug was a result of three spurious instructions - see this fix.)