The project - To design and built a Multi function I/O board for the ZX Spectrum.........
Back in the early 80's when I was a teenager I bought myself a 16k Sinclair ZX Spectrum computer, but rather than play games I spent all my time playing about with BASIC writing some wierd and wonderful programs. I also got into the actual hardware behind the Spectrum which of course is the Z80A Cpu by Zilog. At work we also used the Z80A so it was fun and easy for me to play around with the hardware building the odd interface and gleaning info from those around me more in the know of the Z80A.
Roll the clock on some 30 years and I find myself with the ZX Spectrum once again on the bench in-front of me and looking rather curiously at the edge connector at the back............hmmmm, I wonder!
A lot of my workshop projects recently have been with the Arduino and enjoying interfacing lots of analogue and digital signals, so I thought wouldn't it be nice if the Spectrum had similar analogue and digital I/O capability. So, I set to work and came up with a specification and a number of IC's I'd used previously with the Arduino and thought they might be easily ported to the ZX Spectrum. If anything a nice challenge!
- ADC - 4 analogue inputs - 12 to 18bit configurable
- DAC - 4 analogue outputs - 16bit
- 24 digital I/O
- I2C bus interface
The I2C interface is key to the design as I wanted to use the same I2C based ADC & DAC IC's that i'd used before (with the Arduino). Therefore, I'd need to find a converter IC that would allow this, i.e Spectrum data bus to I2C conversion. The following is the basic hardware behind the entire interface.
- MCP3424 ADC IC - http://ww1.microchip.com/downloads/en/DeviceDoc/22088b.pdf
- DAC8574IPW DAC - http://www.ti.com/lit/ds/slas377b/slas377b.pdf
- PCA9564 Parallel to I2C bus Controller - http://www.nxp.com/documents/data_sheet/PCA9564.pdf
- 82C55 Programmable peripheral interface - http://www.embeddedsys.com/subpages/resources/images/documents/82C55_datasheet.pdf
With the above and a few additional components the basics of the hardware design is there, and so I set to prototype a pcb, and then design a full board using Eagle PCB.
Note: This design has onlybeen tested with a 48K ZX Spectrum rubber keys model. I have not tested it at all with any 128k Spectrums so am unsure of any compatibility there.
ZX Spectrum Multi I/O Interface
Ian Johnston