It’s a ZX Spectrum 128K. It was designed by Sinclair and their Spanish distributor Investrónica, and was a major upgrade of the ZX Spectrum 48K. At that time, the 48K model was rather outdated with its limited RAM and the simple sound beeper, and Sinclair had nothing in its hand to compete with the Commodore 64 which was gaining ground in more and more households.
The 128K model has 128K of RAM (which also allowed double buffering), an AY-3-8912 sound chip, an RGB monitor port, a serial port and an optional external numerical keypad. Hardware sprites are still missing though. On software side, it provides a heavily improved BASIC.
The shape of the prominent heat sink on the right side of the case gave the machine its nickname: “Toast Rack”.
The model was first sold in Spain, as Sinclair UK still had a large number of unsold 48K models. In the end it could not save Sinclair from bankruptcy, but the 128K model was certainly very attractive for the new owner Amstrad. Today, the Toast Rack is a sought-after item for any serious Sinclair collector. (If you want to read more about the history of the ZX Spectrum 128K, there is a great post at 21twice.com!)
What makes this special model so curious is that it is an Arabic modification. 😀 There are stickers with Arabic letters on the keyboard, and at the front side there is a switch to select between the original 128K ROM and an Arabic version of the 48K ROM.
My first thought was that this was an elaborate DIY modification. But then I found a thread in a Sinclair forum. It says that Matsico, a Sinclair/Amstrad agency in Egypt, has produced these models. I could not find more information about it though, so I don’t know if they were actually sold, or just made as a proof-of-concept or promotional gift.
What they all have in common, is the switch at the front, and an EPROM soldered on top of the ROM. The only known exception I found in a video by ByteDelight about a ZX Spectrum +3, where the ROM could be selected via a separate boot menu.
Restoration
A first diagnostics run showed that the board was working fine. The only issues were massive picture interferences, and an almost inaudible sound from the AY chip.
Both issues are known problems with that model. A blog article by Adam’s Vintage Computer Restorations addresses them.
First of all, I replaced all electrolytic capacitors with premium ones. I’m doing that with all retro machines, irregarding their age and rareness. However I try my best to maintain the “retro optics”, for example by using axial caps in that classic blue color.
To enhance the image quality, I used a 47µF electrolytic cap for C28 (original was 22µF), and replaced C7 and C8 with 1µF MLCCs. I could also rewire C126 as mentioned in the blog article, to enhance image quality even further, but I decided to postpone that.
To raise the volume of the AY sound chip (so it has a similar level as the beeper), I replaced R115 with a 1.65kΩ resistor.
The 7805 voltage regulator is rated at 1A, and is working at its load limit on the 128K. This is the reason for the big heat sink on the right side. I replaced it with an 78S05, which is a drop-in replacement that is rated at 2A and stays considerably cooler.
I was lucky here, because in the past, someone had already replaced the 7805 with a LM1085. It is rated at 3A, but has a different pin configuration. If I had replaced it blindly, it would have killed the machine. You should always be prepared for nasty surprises when restoring old machines the previous owner already tinkered with!
I also cleaned the case (although it was already in a very clean state). The previous owner had already replaced the keyboard membrane, but the extra keys were not working there, so I replaced it with a new membrane of a known-good brand.
The next diagnostics run showed that all tests were still green. Also the picture interferences were mostly gone (except of some minimal jailbars that I can live with), and the AY sound is much louder.
Depending on the position of the switch, the system either boots into the original ZX Spectrum 128K startup menu, or shows an Arabic boot prompt. In the Arabic version, the entire BASIC has been modified, with all texts in Arabic and written from right to left. Unfortunately I cannot read it.
A short test with the Dandanator module also showed that games are working fine. The mandatory part of the restoration is completed!
Freestyle Restoration
There were two more things I didn’t like.
First was the ROM stack. The original solution switched the Vcc pins of the ROMs, so one of the chips was always powerless, but still connected to the address and data bus. To be honest, I wonder why this was working at all.
Anyway, I replaced it with a single 27C512 EPROM. On the bottom half of the memory, I burned the Arabic ROM (twice), and on the upper half, I burned the original 128K ROM. After that, I modified the switch to pull the A15 address line (pin 1) either to GND or Vcc. This way, the EPROM is always powered and the desired operating system is selected by an address line. I also upgraded the original Arabic ROM version 1 to the latest version 3.1 I could find on the web.
Of course I will keep the ROM stack. Mainly for licensing reasons, but also so that the original solution can be restored if desired.
I also didn’t like the optics of the naked switch at the front, so I 3D-printed a small switch cap that also covers the screws.
There are a few more things that could be done:
- I could also rewire C126 (as mentioned in Adam’s blog article above), to remove the sound signal from the RGB output.
- Due to a bug in the original PAL10H8, the system crashes just by reading the $7FFD port address. There is a fix that also removes a “rain” effect caused by refresh data on the bus.
- The original ULA can be replaced with a vLA128, as a replacement if broken, or if the precious original part should be conserved. For that, I would have to replace the socket though.
- Dave Curran reverse engineered the numeric keypad. An ambitious tinkerer could make a DIY keypad replica.
However, they were quite inconvenient. Cassettes were slow. It took several minutes for a game to load. With a “collection” of several games on one cassette, you first had to fast-forward to the right spot, which wasn’t that easy, as the noise of the data stream sounds pretty much the same to us humans. You could write down the counter readings on the cassette recorder, but the counters weren’t standardised, making the index tied to a specific model.
When I finally got my Amiga with a floppy disk drive, I quickly forgot the times when I had to fiddle with cassettes.
Today I own a few ZX Spectrums, but no cassette recorder anymore. To load software into the computer, I usually use my PC’s headphone jack and tzxplay. But there is a more elegant way. The ZX Dandanator Mini by Dandare is an expansion with 512KB of flash memory where your favourite games can be saved. A boot menu allows you to select one of these games. It is then loaded directly into memory. The Dandanator also offers a Kempston-compatible joystick port.
While assembling my ZX Dandanator Mini, I noticed that the project’s documentation left a few questions unanswered. I hope my blog article will help others with building their own.
Parts
Fortunately, the Dandanator’s bill of materials is very straightforward, and all components (with the exception of the edge connector) are easy to get.- 1x GAL 22V10 (+ DIP20 socket)
- 1x PIC 16F1826-I/P (+ DIP18 socket)
- 1x SST 39SF040 Flash ROM (+ PLCC32 socket)
- 1x 1N4148 (TH)
- 2x 10kΩ resistors (TH)
- 5x 100nF ceramic capacitors (TH)
- 1x D-Sub connector, 9-pin male, angled, European style (e.g. this one)
- 2x pin headers, 2-pin
- 1x jumper
- 2x tactile switches, 6 mm high (17 mm for the 3D-printed case)
- 1x PCB (Gerber files are here)
- 1x ZX Spectrum Edge Connector (can be found in retro shops, online marketplaces, or DIY)
- 1x 3D-printed case (optional)
You need a programmer capable of flashing the PIC, the GAL, and the Flash ROM (e.g. the XGecu TL-866II Plus with PLCC32 adapter). I also recommend a good PLCC extraction tool.
Classic GALs are no longer produced, but can still be ordered as NOS parts on online marketplaces. A replacement that is still being produced is the Atmel ATF22V10C-10PU. However, you will then additionally need a 3.3kΩ 6-pin resistor network (more on this below).
Assembly
The assembly is straightforward. You start with the flattest components and work your way up to the tallest ones. There are no SMD components, so even a soldering beginner shouldn’t have any problems.
Make sure the sockets are aligned correctly. Unfortunately, there are no markings for pin 1 of the two DIP sockets on the silkscreen. They should be aligned with the notches facing towards the buttons, as seen in the photo. The PLCC socket should match the outline on the silkscreen.
The edge connector is normally meant to be soldered upright, not to the edge of the PCB. So the pins must first be bent inwards on both sides until the connector sits centrally and all pins touch the pads of the PCB. Also, make sure to solder the connector to the correct side of the PCB; that’s the one with the short pads. The connector on the other side is intended for further expansions, such as a joystick interface, but you could even stack several Dandanators together.
If you intend to use the 3D-printed case, leave a gap of about 2 mm between the PCB edge and the connector.
Some of the pads are close to the edge connector on the back. It’s easy to accidentally spill a few drops of solder onto the pads while soldering. A piece of Kapton tape can easily protect them.
One problem with the ATF22V10C is that it doesn’t have internal pull-ups on the inputs. This means the inputs float when no joystick is connected. This causes problems. On my system, the first game in the list was always started immediately when no joystick was connected. A possible solution is to solder a resistor network onto the bottom side. The resistors are connected to pins 8, 9, 10, 11, and 13 of the ATF22V10C. The common bus is soldered to pin 24. Be careful not to bridge or short-circuit adjacent pins.
This problem shouldn’t occur with the ATF22V10B, but at the time of writing, this variant was either sold out or absurdly expensive.
Although this problem probably doesn’t occur with older GALs, the manufacturers still recommend not leaving input pins floating. In my opinion, the pull-up resistors should have been part of the Dandanator design.
In the final step, you clean the PCB and check it for solder bridges and other faults. A short circuit can destroy the voltage regulator in the ZX Spectrum, which is relatively difficult to repair.
The “Joystick” jumper is there to activate the joystick port. It should be closed if no other joystick interface is used. The “Serial Pins” jumper seems to be intended for in-circuit programming and should not be closed. (Nothing will break if you accidentally close it, but then the joystick will be permanently pressed to the right.)
Once the assembly is complete, the next step is to program the chips. They are all programmed differently.
Flashing the chips
- GAL: The fusemap can be downloaded here. If you are using an ATF22V10 and the XGecu programmer, make sure you select the
(UES)variant as the chip type. - PIC: An initial firmware can be downloaded here. I tried flashing it with the minipro software, but couldn’t get a working PIC this way. Ultimately, I used the original software from XGecu.
- Flash ROM: The Flash ROM contains the games and also pokes. The image file is generated by a ROM Assembler tool.
The ROM Assembler is written in Java, so it runs on every modern operating system. If you know your way around Java, you can easily compile the latest version yourself from the source code. You can also download a jar file from the Dandanator download page and run it using the command java -jar dandanator-mini-*.jar.
The GUI of the ROM Assembler is fairly self-explanatory. You can simply drag and drop TAP, SNA, Z80, and POK files of your favourite games into it until the flash memory is full. In the settings, you can change the font and language, and even use a custom background image.
Many games can be found at World of Spectrum. An extensive collection of POK files is available here.
Once you have put together your favourite games, create a ROM image and write it to the Flash ROM.
Let’s play!
The Dandanator is connected to the ZX Spectrum’s expansion port. Remember to unplug the computer from the power first.
Now switch on your Speccy and press the right button on the Dandanator to reach the main menu.
You can select a game, either by using the joystick or pressing the corresponding key, then select the pokes to apply, and finally start the game.
When using the Dandanator for the first time, you should turn the Speccy off, then hold down both buttons and turn it back on. The Dandanator will then flash the latest firmware version to the PIC.
The right button always takes you back to the main menu. The computer no longer needs to be reset.
Let’s take a look inside a ZX Spectrum Plus. Basically, it’s the same as a ZX Spectrum, but with a (slightly) better keyboard and a reset button. However, this machine here held a few surprises.
The first surprise was that instead of a serial number, the word “Upgraded” was stamped into the case. Next to it was a (damaged) warranty seal from Sinclair Germany. I didn’t know that Sinclair had sold upgrade packages for the ZX Spectrum.
Inside the case, I found an Issue Two board, which is a rare sight in a ZX Spectrum Plus. For an obvious reason: the Issue Two heatsink is too large for the Plus case, it only fits in at a very awkward angle.
I will replace the 7805 with a DC/DC converter anyway, so the sight of this twisted heatsink will disappear too.
I also noticed that the keyboard membrane had become brittle over the years and had to be replaced with a modern replica.
Technical Check
The very first thing I do is the Composite Mod. It only takes a piece of wire and a few minutes with the soldering iron. It’s always worth investing the time, even if the Speccy turns out to be beyond repair later. However, a first check showed the start screen, so everything seemed fine at first.
Then I plugged in the diagnostic module, and the trouble began.
The diagnostics reported that all eight lower RAM chips were faulty. The LEDs on the module showed that -5V and 12V were missing. A voltmeter confirmed that -5V had failed and only 7V was present on the 12V line. So the voltage converter seemed to be faulty. I found it strange: when I unplugged the diagnostic module, the system started up again, even though both voltages were still missing.
I checked the coil, but it had no short circuit between the windings. So I replaced the usual suspects of a faulty voltage converter: TR4, D15, and D16. I also replaced the 7805 with a DC/DC converter as planned and renewed all electrolytic capacitors. The -5V and 12V were fine after that, and all diagnostic tests were passed.
The repair wasn’t successful, though. Because now the screen had a strong green tint, the colours were pale, and there were visible horizontal lines.
On Issue Two boards, there are two potentiometers for calibrating the white balance. You just need to connect an oscilloscope to the composite line and then adjust both pots until the signal noise is reduced to a minimum. But I could only slightly improve the green tint; it didn’t disappear completely. The annoying horizontal lines remained as well.
That was the best I could get out of the signal. And that is pretty dismal.

Why was the white balance perfect before I repaired the voltage converter? I found out that the 12V is necessary for generating the colour signal. Because of the faulty voltage converter, the 12V was missing, and so the image was displayed in monochrome. But since the start screen doesn’t use colours anyway, everything seemed fine. After I repaired the 12V, a colour signal was generated again, and the image suddenly got a colour cast.
I initially suspected the ULA, but the problem persisted when I swapped it for a working one. Then I swapped the LM1889N. The strange horizontal lines disappeared, and the colours got a bit better too, but still not perfect.
I still couldn’t set a clean white with the pots. Then I noticed that pot VR1 wasn’t working very well and crackled when adjusted. So I replaced it with an encapsulated one from Piher that just about fitted. After that, I was finally able to calibrate the signal so that it had minimal noise. Still not perfect, but good enough.

The result was a picture with a good white balance, where the passed diagnostic tests were the only green things.
As a test, I reinstalled the previous LM1889N again, and the colour problems as well as the horizontal lines returned. So the green screen problem was a combination of a faulty LM1889N and a faulty potentiometer.
The hardware part is finished. Let’s look at the keyboard next.
The Keyboard
The ZX Spectrum Plus keyboard is a bit special. On the connection side, there’s no difference to the ZX Spectrum keyboard. However, the ZX Spectrum Plus has a few more special keys, like cursor keys or a dedicated delete key. These keys have to perform two key presses simultaneously and in the correct order. This is achieved by two interconnected membrane layers. A key press then closes the contacts on both layers.
These layers are connected to each other at the top end of the membrane connectors. So it is important to work precisely at this point and make sure that the layers are correctly aligned and securely fastened under the brackets. Please don’t tighten the screws too much, the plastic is almost 40 years old. 😉
After a thorough cleaning, I was able to reassemble the machine.
And that’s it. Now I finally have a ZX Spectrum Plus in my collection too.
For testing, I plugged in the diagnostic module, but the computer didn’t even start with it and the D0 LED stayed permanently dark. There had to be a short circuit somewhere on the data bus.
That wasn’t too bad, because I plan to build a completely new ZX Spectrum for myself anyway. I want to use as many new components as possible. Only the ULA, the CPU, the LM1889N, the coil and the RAM chips will be reused, as they are no longer manufactured and are correspondingly precious.
So I first removed everything valuable. The scavenged original board was quite a sad sight, but the prospect of a brand new Speccy emerging from it made it less painful.
I already checked the ULA in another Speccy, it was fine. Unfortunately, out of the 16 RAM chips, only nine passed the tester. That was much less than I had hoped. I still have a few of these old RAM chips in stock, but replacements are hard to come by.
A new board
The new replica board comes from PABB and can be ordered from PCBWay.I have put together a bill of materials for the required parts. It contains as many still available components as I could find. The rest can still be obtained as NOS parts from online marketplaces, in some cases there are also replacement types or recreations (like the Retroleum Nebula or vRetro vLA82).
Four wire jumpers determine the type of the upper RAM chips and the ROM chip manufacturer. The correct configuration is also in my bill of materials.
Instead of the modulator, I decided on an S-Video mod and a 3D-printed base plate. A far simpler alternative would be to solder an RCA connector to COMP and GND and use it as a composite output.
After a lot of soldering, the assembly was finally practically finished. But before the valuable chips find their way into their sockets, I checked whether all three voltages (+5V, +12V, -5V) were present and within tolerance.
The S-Video mod takes the place of the original modulator, but is not soldered in; instead it is held by two screws. The screws also provide the ground connection, so they must not be made of plastic. Three wires then connect the board to +5V and the composite signal as luma. The chroma signal is connected to the positive end of C65. This must not be populated, so that the luma and chroma signals do not mix.
After that, the new board was finally finished and ready for a first test.
Bug fixing
So, power on, and then I saw this:
The diagnostic module showed no activity on the CPU bus control lines. My suspicion was confirmed when I checked the CPU clock input with an oscilloscope. Only a flat line could be seen there.

The CPU clock is generated by the ULA, but the clock signal was present there.

A look at the schematic shows that transistor TR3 is located between the ULA clock output and the CPU clock input, probably to amplify the signal. Strangely, the signal to the right of R24, which is directly connected to the clock output, was still present. However, to the left of R24 (connected there to the base of the transistor), the signal was missing. When I removed TR3, the clock signal appeared there too, so TR3 had to be the cause.

After a longer search, I found out that the Spectrum is very picky about the type used for TR3. The original ZTX313 is no longer manufactured, so I first used a BC548, which was recommended as a replacement type in other places. For TR3, however, the only recommended replacement type is the MPS2369, which is now also hard to come by. With this type, the clock signal was finally fine (cyan: ULA clock output, yellow: CPU clock input).

To my delight, the new Spectrum then started up and showed the famous start screen.
As the next step, I carried out a complete diagnosis. Now I got the error that the M1 signal was missing.
The M1 signal is generated by the CPU and indicates the first of four machine cycles in which the next instruction is read in. The Spectrum itself does not use the M1 signal, but a few expansions like the ZX Interface 1 require it.
After replacing the CPU, all diagnostic checks were finally passed.
In the end, I could only reuse the ULA, the ROM, the LM1888N and the coil from the old ZX Spectrum. I had also hoped for all the RAM chips and the CPU, but I had less luck with those.
Test run
Anyway, it was finally time for a test run. I connected the new Speccy to my computer and used tzxplay to load my favourite game, Starquake. It loaded and ran perfectly. The picture quality of the S-Video output is also excellent, probably the best you can get out of this old design. Only the ZX Spectrum Next with its digital and pixel-perfect HDMI output has even better quality.
I got the original board without a case. But luckily, there are replica cases, keyboard mats, membranes and faceplates on the market, with which you can assemble a brand new exterior. Of course, I chose a transparent case so that you can admire the beautiful black motherboard from the outside. Well, at least a little bit.
And here it is, a ZX Spectrum in practically new condition.
And yet another Speccy that I could buy for a good price. The seller said it was “untested”, but I allege that he knew very well it was broken. It’s fine for me as I mainly buy those things for the repair fun. 😁
The computer was in a sad condition when I got it. What’s remarkable is that the machine was “assembled in Portugal”. It’s the first time I see this, and to be honest, it was one of the reasons why I wanted to have it. According to the very few information I found on the internet, those machines were intended for the Portugese and South American market, but some of them also made it to the UK and other European countries.
The faceplate was heavily bent, and a connector of the keyboard membrane was broken off. It seems that the previous owner tried to replace the membrane, but wasn’t able to remove the faceplate.
That’s the first hint that the machine wasn’t “untested”, but underwent a botched repair attempt.
I got the second hint when I tried to power up the machine, but found that it was completely dead, with all the voltages missing. The 5V is generated by an 7805 voltage regulator. It could just have died of old age. But considering the other hint, I rather guess that the previous owner has tried to power this machine with a standard 9V power supply. It has a reversed polarity, which kills the 7805 instantly, and usually damages the lower RAM chips and other components.
Let’s have a look inside. There’s an Issue 6A board inside, which is the final revision of the board. But besides that, there were no surprises. Anyway it’s the first Issue 6A board I own, so I’m happy to have it.
The 7805 regulator is definitely broken, but I would have replaced it with a Traco Power DC/DC converter anyway. After I replaced it, the 5V line was back. To my surprise, the 12V and -5V lines were also back, so at least there was no further damage to the power supply.
I did my usual composite mod. Then I connected the computer to my monitor and powered it up to find out what else is broken. To my surprise the start screen appeared, and the Diag ROM also found that all RAM chips are working.
Okay, so much for the “repair fun” I was hoping to get. On the other hand, this board has a second custom chip, the ZX8401, also known as ZXMUX chip. If it would have been damaged, repair would have been a lot more difficult. Not impossible though, since the ZXMUX can be simulated by a few standard SMD chips.
Now that the Speccy was repaired, I continued with replacing the electrolytic capacitors. I also found and fixed a lot of cold joints at the lower RAM chips. The refurbishment of the board was completed after that.
Let’s have a look at the case. The membrane connector was broken, but luckily there are new membranes available at retro shops. The previous owner tried to remove the faceplate, which is most often glued to the case. Most often, but not here. On this computer, the faceplate was just held in place by four brackets. All that would have needed to be done was to open these brackets and then easily pull of the faceplate.
Sadly, thanks to the botched repair attempt, the original faceplate was bent too much to be recoverable. It also had some visible scratches. I wished I could have salvaged it, but I decided to replace it with a new one instead. This time I took a metallic red faceplate, which looks as hot as a sunset in Portugal. 😉
And there it is, another ZX Spectrum for my collection.






























































