top of page

The Zx Spectrum Ula- How To Design A Microcomputer -zx Design Retro Computer- //top\\ Today

The ZX Spectrum ULA: How to Design a Microcomputer

is a definitive technical work by Chris Smith that reverse-engineers the custom chip at the heart of the Sinclair ZX Spectrum. Published in 2010, the book serves as both a historical record of 1980s engineering and a practical guide for hobbyists looking to design their own retro-style microcomputers. Core Subject: The Ferranti ULA

Abstract

In 1982, Sinclair Research released the ZX Spectrum, a machine that would define a generation of programmers and gamers. At its heart was not a standard chipset, but a single piece of custom silicon: the Uncommitted Logic Array (ULA) designated 5C112E. This paper argues that the ULA is not merely a peripheral controller but the philosophical manifesto of Sir Clive Sinclair. By analyzing the ULA’s dual role as video generator, DRAM multiplexer, and I/O traffic cop, we deconstruct the extreme cost-reduction strategies that birthed the home computing revolution. We will explore how the ULA’s infamous "contention" (the slowdown of the CPU to draw the screen) is actually a brilliant systems integration hack, and how modern FPGA recreations (like the Harlequin project) reveal the original designer’s trade-offs between component count and logical perfection. The ZX Spectrum ULA: How to Design a

  • Pixel Memory: 1 bit per pixel (On/Off).
  • Attribute Memory: 1 byte per 8x8 character cell. That byte defines Ink (foreground) and Paper (background) color, plus Flash and Bright.
  • The ULA’s Job: As the ULA scans a pixel row, it looks at the pixel bit. If the bit is 1, it grabs the Ink color from the attribute map. If 0, it grabs the Paper color.
  • The Clash: Because the attribute map covers 8x8 blocks, a single character cell can only display two colors simultaneously. Hence, moving a red sprite over a blue background causes the infamous "color clash."
  • Controlling the ZX Spectrum's 16 KB or 48 KB of RAM
  • Generating the video signal for the TV output
  • Handling keyboard and joystick inputs
  • Managing the cassette interface
  • Providing interrupt handling and timing
  • True bit-mapped color (2 bits per pixel) would require 48KB of video RAM (impossible).
  • Color per cell (8x8 pixels) requires: 192x256 / 8 = 6KB for pixels + 32x24 attributes = 768 bytes.
bottom of page