I found old ZX Spectrum clone made in Soviet Union in 90′s. It was my computer, I wrote several program on it and also, I wrote drivers for Espon printer on this hardware. This model has Soviet chip КР580ВВ55А (Intel i8255) and I used this port for LPT interface and some custom hardware.
I powered it and without results- old crappy Soviet chips are dead. At least 3 chips were bad and quality of PCB prevent me from full repair.
After some analysis of this computer, I decided that it is very simple, and I can write it in Verilog hardware description language even with my amateur knowledge. Also, I have several trashed PCBs with Altera MAX chip (CPLD). And these board populated with small fast SRAM chip (32K only, but 12ns speed).
Here is my first version of the ZX Spectrum clone in CPLDs. I’ve used two boards as I didn’t want to use external RAM chip. I added CPU and ROM only. And my main idea is to build computer from scratch by myself. Another goal- VGA connection, not TV.
This is not very informative schematics, all stuff is plain System Verilog:
First run of the system. Basic is working and there is only small bug in the left side of the screen. It took about week to find it and it was completely in other place of code.
I think I made error in the interpretation of the BRIGHT command- I think that PAPER attribute is not affected with this bit.
My system is made from programmer’s point of view and I was not aware, that ZX slows down CPU when accessing video RAM- my system with 12ns RAM is completely transparent for CPU. Time arbiter is slotting CPU and VGA controller access to RAM in such way, that there is no any collision and WAIT cycles. I was wondering if this will not conflict with tape interface, but everything is OK. Old commercial software is loading and some programs are too fast.
Tape interface is much better than in original speccy:
Using fast comparator and self zeroing circuit made tape loading much more stable than I remembered from old times.