Spectrum ULA 5C102E / 6C001E pinout

DIP-40. Video, lower RAM timing and contention, keyboard, beeper, tape

The 16K/48K Spectrum ULA (Ferranti 5C102E on early boards, 6C001E later; Issue 4A and later boards need a 6C001E-7 or later) makes the video, the beeper and tape signal and the lower 16K RAM timing. When the CPU and the display both want the lower RAM it stops the CPU clock. It runs hot and is the most common failure. Check the 14 MHz crystal (pin 39) and +5 V (pins 13, 14) first.

Open the interactive ULA pinout

Pins

PinNameTypeSignal
1/CASctrlColumn address strobe to the lower 16K (4116s).
2/WRctrlWrite strobe from the Z80.
3/RDctrlRead strobe from the Z80.
4/WEctrlDRAM write enable to the 4116s (DRAMWE on the diagram), decoded from /RD and /WR.
5A0addrMultiplexed lower-RAM address bit 0. The ULA drives the display address here; the CPU address arrives through IC3/IC4 and resistors R17-R23, and the ULA wins.
6A1addrMultiplexed lower-RAM address bit 1.
7A2addrMultiplexed lower-RAM address bit 2.
8A3addrMultiplexed lower-RAM address bit 3.
9A4addrMultiplexed lower-RAM address bit 4.
10A5addrMultiplexed lower-RAM address bit 5.
11A6addrMultiplexed lower-RAM address bit 6.
12/INTctrlInterrupt to the Z80 once per frame; the ROM scans the keyboard then.
13+5Vpower+5 V (Vcc2 on the diagram). One of the two +5 V pins is fed through an RC low-pass (WoS). UNVERIFIED
14+5Vpower+5 V (Vcc1 on the diagram). The service manual checks +5 V here.
15UvideoColor difference signal U, to the LM1889 through a level shifter.
16VvideoColor difference signal V, to the LM1889 through a level shifter.
17/YvideoInverted luminance including sync.
18D0dataData bit 0, isolated from the CPU by R1-R8 so the ULA can read RAM while the CPU runs.
19KB0kbdKeyboard row input KB0 (ribbon KB1), pulled up by R65-R69 on the Issue 3 diagram. A pressed key pulls it LOW while its address line is LOW. UNVERIFIED
20KB1kbdKeyboard row input KB1.
21D1dataData bit 1.
22D2dataData bit 2.
23KB2kbdKeyboard row input KB2.
24KB3kbdKeyboard row input KB3.
25D3dataData bit 3 (port $FE write: MIC).
26KB4kbdKeyboard row input KB4.
27D4dataData bit 4 (port $FE write: speaker).
28SOUNDaudioOne analog pin for MIC out, EAR in and the beeper (MIC/TAPE on the diagram). Port $FE: write bit 3 = MIC, bit 4 = speaker; read bit 6 = EAR.
29D5dataData bit 5.
30D6dataData bit 6 (port $FE read: EAR).
31D7dataData bit 7.
32CLKclockCPU clock out, 3.5 MHz (14 MHz / 4). The ULA stops it to hold the CPU off contended RAM; TR3 squares it to a full 5 V swing for Z80 pin 6.
33/IOULActrlULA port select (IO REQ on the diagram): /IORQ gated with A0 by TR6, so LOW only on an I/O cycle to an even port such as $FE.
34/ROMCSctrlROM select to IC5 when A14 and A15 are LOW. R33 lets an add-on override it from edge pin 25A.
35/RASctrlRow address strobe to the lower 16K (4116s). The upper 32K gets its strobes from IC23/IC24.
36A14addrCPU address bit 14.
37A15addrCPU address bit 15. The Issue 3 diagram misprints this pin as 27.
38/MREQctrlMemory request from the Z80.
39OSCclockCrystal input: X1, 14 MHz, other side to ground through a capacitor (WoS calls the pin Q).
40GNDground0 V.

Fitted in

Sources