The ZX81 ULA is a custom gate array that handles the screen, keyboard input, memory access and tape input/output. It was designed to replace most of the discrete logic chips of the ZX80 to reduce the chip count down to 4 (or 5, if 2 x 2114 RAM chips are fitted).
ULA Pin Assignments

- A0-A7, A14/A15: Address Lines
- D0-D7: Data Lines
- M1
- ROMCS
- RAMCS
- MREQ
- IORQ
- RD: Read
- WR: Write
- OSC
- CLK: Clock source for the CPU
- KBD0-KBD4
- NMI: Interrupt
- HALT
- TV/TAPE
- TAPE-IN