The Sinclair Spectrum is a truly inspirational computer. It provided a cheap and accessible way for kids to learn how to program a computer and, unlike the ZX81 it replaced, the hardware was sufficiently advanced for the end results to look quite good.
The Spectrum also formed the basis for a series of clones (see this Wikipedia article: List of ZX Spectrum Clones). Sinclair computers were not cheaply available in all regions of Europe, often due to licensing or import restrictions. Enterprising hackers desperate for a simple to clone platform used the Spectrum as a template for a variety of clones, often employing clever, reverse engineered custom logic to replace the only difficult chip to clone, the ULA.
Ironically the only official clones (the Timex models sold in the States) did not sell in great numbers. I think the Timex machines struggled due to incompatibility issues with UK Spectrum software and a real lack of understanding of their target market.
Why does the Spectrum have so many cloned cousins? Having walked through the schematic myself whilst fixing my own poorly Spectrum I’ve realised it’s a simple, classic, easy to understand design. The Spectrum ULA itself is not a complicated design and its function can be easily reverse engineered, if not implemented using an alternative technology.
Why Sinclair computers? Well, the Commodore 64, for example, has many more custom chips (SID, VIC and PLA) which makes reverse engineering a much more difficult proposition.
I was rather hoping, whilst writing this post, that I’d be able to provide a link to a ULA implemented in discrete TTL logic chips, or something nice and steam driven, with brass gears. Unfortunately the ULA clone chips I can find on the Internet appear to be quite tidy and, in many instances, improve upon the original design.
There are some projects to implement the ULA using alternative silicon technologies:
- FPGA (Field Programmable Gate Array)
- CPLD (Complex Programmable Logic Device)
There are also some complete Spectrum implementations implemented in FPGA (see Mike Stirling’s article for an example).