If you are a devotee of the Sinclair series of 8-bit home computers then a piece of news from the Centre For Computing History in Cambridge may be of interest to you, they’ve released a copy of the ROM from their ZX Spectrum prototype. This machine surfaced last year as part of a donation form the company originally contracted to write the Spectrum ROM and has been given pride of place int heir exhibition ever since. They’ve been doing some very careful work on it, and while The Register reports they can’t yet make the board boot, they have extracted the code for study. In the video below the break, we see it running on the Speccy emulator on an older Windows PC.
The ROM comes with an invitation to the ZX Spectrum community to analyze it against the stock version, in the hope of revealing ossified fragments of code such as that for the Microdrive storage peripheral which never made it into the stock Spectrum. But should you simply want to try your favorite games with the earliest possible version of the ROM, you can do that too.
We covered the machine’s emergence last year, meanwhile, if you haven’t been to the Centre for Computing History yet, we suggest you take a look at our review from a few years ago.
Speaker on picture looks much younger then the whole rest, isn’t it?
Unless you’re seeing a datecode on it, nah, that style had got used in FM radio headsets and early walkman clones as headphones around the same time.
Yes no maybe
It’s been through one restoration already
Some axial lead electro’s have been replaced with single ended
Another large electro has been added to the board for stability
Two pots look like they’ve been replaced and they will all need some pot lube now
Polymer cone speakers were not at all common then. Even much later computers of this series used paper cone speakers
If it did originally have paper cone then it would have needed to be replaced previously as the paper would have disintegrated
The polymer speaker / headphone driver is the same type that Spectrums used. Up until the 128K models that sent sound through the RF modulator to the TV instead. By that time they’d fitted an actual sound chip so it needed something a bit better than a cheezy beeper to actually hear it. It looks exactly like it, far as I can remember, the Spectrum + model’s manual came with a photo of the motherboard in the manual if you want to compare.
Looking at the state of the plastic, I could believe it’s 40 years old, looks a bit fogged.
Paper speakers don’t disintegrate over any sort of time period, unless you use them in the bath. But no Speccy ever contained a paper speaker.
Perhaps we should call it SIR ROM?
you can also install the rom and get it to run on the nice shiny new Spectrum Next!
ZXspectrum rom You can download from internet ;)
Question is. Is possible write my own ROM in C (or Rust) and forget copyright
meybe my rom will be faster? Meybe Writing it in Verilog?
First I must say that I am not a Spectrum firmware expert but I think that If those are your choices, I would suggest starting with C then maybe optimize in assembler.
In my opinion Verilog is not the best tool for writing a ROM (if you are not talking about a hardware ROM implementation, in that case it is possible), but if you choose to create a firmware ROM in Verilog I think that the Hackaday crew and many other would be interested in the process.
You can create ROMable code for the Z80 using z88dk, https://www.z88dk.org/
Writing an actual operating system from scratch that way would be rather an undertaking though.
You could do it, but most of the routines were called by their address in the ROM. So if you wanted a compatible OS you’d be very limited and probably end up having to do it the way they originally did. And then go over and over it to try and squeeze it into 16K. The best result you’d end up with would be as good as the original.
You could take the floating point routines out and have BASIC use integer maths if you wanted it to run quicker. Wouldn’t help a whole shitload though. I’d be surprised if you could get a faster BASIC on the same machine. There were third-party BASICs you could load from tape or microdrive but they compiled your BASIC code, so faster but not as friendly to beginners.
So yes, you could. You probably shouldn’t bother though.
The code for the microdrive was in an 8k ROM inside the “Interface1” rather than in the speccy ROM itself.
The article mentions the microdrive routines not making it into the production ROM.
You’re right though. The ROM bank switches in, through IF1’s own ULA watching for memory reads from a few addresses, I think just 2 or 3. One of them is the error handling routine for BASIC. So when your BASIC program tries to use the microdrive specific features, or the standard keywords that’ve been extended, the standard BASIC ROM doesn’t recognise your command and jumps to the BASIC error routine. This pages in the IF1 ROM, which checks which error was thrown, and then does the appropriate microdrive / serial / network stuff, clears the BASIC error, then returns.
Nice and clever. And also handily used a vector in RAM to jump through, so if you changed the vector you could have your own RAM-based code run. So with an IF1 installed you could add your own extensions to BASIC, your own keywords, or, more likely, modify existing ones, since the keywords were solid, fixed parts of the character set, each keyword being 1 character of it’s modified-ASCII. Having a keyword stored, and entered, as just 1 character meant there wasn’t much need to read through and tokenise the program. Fitting “PRINT” into 1 character was done through the character-printer routine, as in putc(), expand the keywords into separate letters when written to screen.
If I am not mistaken, the Spectrum ROM is hand written assembly.
The ROM assembly source was published in a book, highly commented. I have it around, somewhere…
It was, but so was pretty much all code on ROM chips back then. Even the Apple Mac’s first OS was handwritten asm.
I think you mean, IIRC, “The Complete Spectrum ROM Disassembly”, which as it says, is actually a disassembly by a third party, not original source. It’s very well annotated and considered a classic in it’s field, was very respected at the time.