Retro Computer Portable Updated: The Zx Spectrum Ula How To Design A Microcomputer Zx Design

Overview

  • Keep high-speed signals (HDMI, SDRAM) routed with controlled impedance; separate FPGA power domains and add decoupling.
  • Provide test headers for JTAG/SWD and the Z80 bus for debugging.
  • Design keyboard as a matrix with diodes to prevent ghosting; consider a flat membrane keyboard or small mechanical switches for tactile feedback.
  • For portability, integrate a battery management solution and thermal considerations for continuous use.

Uncommitted Logic Array (ULA)

Designing a retro microcomputer based on the ZX Spectrum involves understanding its "heart"—the . This custom chip replaced dozens of discrete logic components, making the original Spectrum affordable and compact. The Core: The ZX Spectrum ULA

  • Use PIO 0 to generate Z80 bus timings (clock, wait states, contended memory cycles). Run the Z80 at 3.5 MHz (original) or a selectable 7 MHz.
  • Use PIO 1 to generate video: Instead of composite, drive a 240x180 pixel area (4:3 aspect) on a 320x240 SPI LCD. Scale the original 256x192 by 0.9375x.
  • Memory: Emulate 48K or 128K RAM inside RP2040's RAM (264KB is enough for 48K+ROM+screen). No external DRAM needed!

The ULA was the "glue logic" that made the Z80 CPU work with the rest of the system. Its core jobs were: Overview

  • Authenticity: Discrete Z80 + precise contention emulation + composite output = most compatible with original software/demo tricks.
  • Modern comforts: HDMI, SD storage, USB, larger RAM, and faster storage make the machine convenient. Offer toggles in firmware to enable a strict “classic” mode for demos and a “modern” mode for practicality.

The book goes beyond historical trivia, providing a deep dive into the engineering compromises that made the Spectrum affordable: Keep high-speed signals (HDMI, SDRAM) routed with controlled

  • Educational mode – shows live ULA state machine (horizontal/vertical sync, pixel fetch, attribute decoding).