This guide only scratches the surface. If you are serious about diving into ZX design, you need the right documentation:
Connect your modern ULA (FPGA/CPLD) to the Z80 address lines (A0–A15) and data lines (D0–D7). Ensure your logic monitors control signals like /MREQ (Memory Request), /IORQ (Input/Output Request), /RD (Read), and /WR (Write). Step 2: Implement the Keyboard Matrix
The CPU has 16 address lines (A0–A15) that can address 64KB of memory. You cannot just wire the CPU directly to the chips. You need decoding logic to tell the chips which address range they should listen to. This guide only scratches the surface
If the CPU tries to read or write to this memory while the ULA is drawing the visible part of the screen, the ULA physically forces the CPU to wait by pulling the Z80's WAIT pin low. This complex timing choreography is one of the hardest parts of a ZX design to replicate accurately. The I/O Hub: Keyboard, Tape, and Speaker
Connect the physical rows and columns of your portable keyboard directly to your FPGA/CPLD pins, handling the pulling up/down logic in your code to match the standard port $FE reads. Step 5: Power Management and Portability Step 2: Implement the Keyboard Matrix The CPU
You want a deep feature — a portable retro microcomputer based on the ZX Spectrum ULA. Below is a structured, actionable design specification covering hardware, ULA emulation/replication, firmware, power, I/O, enclosure, and manufacturing considerations so you can build a faithful portable Spectrum-like machine.
Taking a Z80-based design and making it portable brings unique challenges, particularly regarding and display technology . Portable Design Considerations: If the CPU tries to read or write
Your HDL code must implement a global horizontal and vertical counter. For a standard PAL display:
Lithium-ion batteries can provide hours of play, unlike the original, which required a wall-wart transformer.
It accepted a master 14MHz crystal oscillator input and divided it down to drive the Zilog Z80A CPU at 3.5MHz.