| Description | By | |
| Hardware | ZX81 | Sinclair |
| 16K RAM pack | Watford Electronics | |
| 4K battery-backed CMOS RAM pack | K. Howell | |
| G007 High Res Graphics Pack | Gary Keall | |
| ZX81 in Four Simple Programmable Logic Devices | Ian Bradbury | |
| ZX81 in One Complex Programmable Logic Device | Bodo Wenzel | |
| ZX81 in One Xilinx gate array, LCD display | Bodo Wenzel | |
| ZX81 from original Sinclair ULA | Kai Fischer | |
| Software | ZX81 BASIC ROM (binary) | Sinclair |
| G007 Hi-res Graphics ROM (hex dump | Gary Keall | |
| ZX81 machine code monitor (hex dump) | Unknown | |
| Documentation | ZX80/81
edge-connector signals ZX80 parts list ZX81 parts list ZX81 memory map with G007 and 4K CMOS RAM pack fitted ZX80/81 Technical Notes The Complete Timex TS1000 / Sinclair ZX81 ROM Disassembly ZX81 BASIC Manual Wilf Rigter's ZX97 project Worth looking at. I turned his original text file into HTML. |
|
Around 1982, when I was in sixth form, I bought a ZX81. Second hand mind you, and I had to beg for the £30. Ee, I were poor in them days, you try telling the kids today and they won't believe you.
The first program I wrote was to plot a sine wave. It failed, and I wondered if there was a fault. Opened up, there was a kludge board over the CPU, which I figured out to be doing some sort of address decoding. I unsoldered it, and my program worked. My first hardware debug - a hardware engineer was born!
I soon bought a 16K DRAM memory expansion board. This sufferered the infamous RAM pack wobble crashes. So I put flexible wires between the connector and the board. This fixed that problem.
The tape interface was hopeless, so I designed my first microcomputer hardware project: a battery-backed CMOS RAM board. This took two 6116 chips, allowing 4K in which to place machine code routines such as a machine code monitor program. A switch enabled or disabled writing, to prevent accidental overwriting.
A very bright person called Gary Keall invented a high-res graphics board for the ZX81. This meant 256 x 192 pixels in those days! Gary had worked out how the ZX81 generated the video signal, and designed hardware to replace a section of the ZX81 BASIC ROM with a section of his 2K graphics ROM. This extended the BASIC to have extra graphics modes. His 2K ROM was packed with assembled code for lots of advanced features. Some features were not available on more sophisticated machines like the Acorn Atom and the BBC micro. Triangle filling for example.
The ZX81 was almost identical to its predecessor, the ZX80. The ZX80 circuit was made of TTL logic, and had integer-only BASIC in a 4K mask-programmed ROM. The ZX81 had floating-point BASIC in an 8K mask-programmed ROM, and the logic was packed into a single 40-pin chip, a Ferranti ULA. This ULA was NMOS, not CMOS, so it got quite warm. The ZX81 had a more advanced display system: it could generate an NMI at TV frame rates to force the CPU to generate the video signal while it was running a program. This takes about 75% of the CPU time, so programs had full-time video at the expense of running at a quarter of full speed. Hence the full-time display mode was also called SLOW mode.
I still have the 16K RAM pack and the G007 graphics board, though I've lost the ZX81 itself. I've an inclination to re-build a ZX81 and put them all together again. Grant Searle's website has the ZX80 circuit diagram as a large (~327K) GIF file, and another page with the NMI generator circuit the ZX81 requires for full-time video. The GIF circuit diagram is barely readable, so some chap re-drew it with CorelDraw and produced pdf files (as one A3, or two A4 sheets). The circuit diagram is badly laid out, which doesn't make it easy to figure out how it works, so check out Wilf Ritger's website - especially his ZX97 project pages.
Searching the web, I was surprised to see how much information there is about ZX micros and other obsolete micros.
I think I'd like to take the ZX80 circuit, the NMI generator, the G007 board, and the memory pack and fuse them into one circuit on a single board. And use all CMOS parts to reduce the power consumption. The ZX80 circuit consumes about 310mA. One can use a 32K RAM for the main-board memory and an 8K RAM instead of the dynamic RAM pack. The G007 graphics board has to sit between these two separate memories, but this restriction might also be removeable.
The TS1500 is equivalent to a ZX81 with 16K DRAM pack. I've noticed that the circuit generates the extra power rails in the same way as Sinclair's RAM pack. It also uses buffers (U3,U6) to prevent bus conflicts which is technically better method than the ZX81 which just used resistors to limit the current.
I know it's an obsolete micro, but it would be useful for "show and tell" at interviews to demonstrate hardware skills.
After the ZX81, I moved up to an Acorn Atom. Again second hand, for £50 this time.
Over time, I've lost interest in re-creating the ZX81. Although it is a clever technical feat to squeeze video output from a CPU with a little cunning logic hardware, it is not very useful as an embedded computer that you could set doing tasks. Generating video occupies most of its time and interrupt resources. I would want to add a dedicated video circuit to allow the CPU to run at full speed without interrupts or spend most of its time running the display file. I would also want to add programmable fonts, colour, PC keyboard and mouse, so by that time I would have something that was not a ZX81 anymore.