Skip to content
Hardware

AY-3-8910: The Sound of the 80s

Three square waves heard around the world

General Instrument's AY-3-8910 brought three-voice synthesis to home computers and arcades—powering the 128K Spectrum, Amstrad CPC, MSX, and countless coin-ops.

sinclair-zx-spectrumamstrad-cpcMSXatari-staudiosound-chipsgeneral-instrumentpsg1978–present

The AY-3-8910 Programmable Sound Generator (PSG) was ubiquitous in 1980s computing. Its three square wave channels, noise generator, and hardware envelopes provided a consistent sound across platforms. While not as characterful as the SID, its widespread adoption made it the common tongue of chiptune.

Fast facts

  • Manufacturer: General Instrument (later Microchip).
  • Channels: 3 tone generators + 1 noise generator.
  • Output: mono (some systems mixed to stereo).
  • Variants: AY-3-8912 (fewer I/O pins), AY-3-8913 (no I/O), YM2149 (Yamaha clone).

The register that does two jobs

The AY’s oddest feature is not in its sound at all. General Instrument’s data manual heads register 7 “Mixer Control-I/O Enable Register”, and it means both halves of that name literally.

Bits Job
B2–B0 tone enable, channels A, B, C
B5–B3 noise enable, channels A, B, C
B6–B7 direction of the general-purpose I/O ports

The direction (input or output) of the two general purpose I/O Ports (IOA and IOB) is determined by the state of bits B7 and B6 of R7.

So the register a program writes to silence a channel is the same register that decides whether an I/O port is an input. Any machine that used those ports for something — and they were commonly wired to keyboards, joysticks or serial lines — had to preserve the top two bits every time it touched the mixer. Which machine wired what is not established from this datasheet; what the datasheet establishes is that the hazard is in the chip.

That the chip has I/O ports at all is the reason it was chosen as often as it was. A designer got three voices and two 8-bit ports for one part, and the variants are graded by how much of that survives: two ports on the AY-3-8910, one on the 8912, “none are available on the AY-3-8913”.

Architecture

Feature Specification
Tone channels 3 × 12-bit period divider; f_tone = clock / (16 × period); period 0 treated as period 1
Noise 5-bit period; 17-bit LFSR (XOR feedback bits 0 and 3, shared across all three channels)
Mixer per-channel tone/noise enable (active-low)
Envelopes 1 shared envelope generator, 16-bit period
Volume 4-bit per channel (16 levels), approximately logarithmic — ~3 dB per step

Register map

Register Purpose
R0-R1 Channel A frequency (12-bit)
R2-R3 Channel B frequency (12-bit)
R4-R5 Channel C frequency (12-bit)
R6 Noise frequency (5-bit)
R7 Mixer control
R8-R10 Channel volumes (4-bit each)
R11-R12 Envelope period (16-bit)
R13 Envelope shape
R14-R15 I/O ports (if present)

Mixer register (R7)

All enable bits are active-low — set to 0 to enable, 1 to disable.

Bit Function
0 Channel A tone enable
1 Channel B tone enable
2 Channel C tone enable
3 Channel A noise enable
4 Channel B noise enable
5 Channel C noise enable
6 Port A direction (0 = output, 1 = input)
7 Port B direction (0 = output, 1 = input)

Envelope shapes (R13)

Value Shape Description
$00-$03 \__ Decay then hold low
$04-$07 / __
$08 \\ Repeating decay
$09 \__ Single decay
$0A \/\/ Decay-attack cycle
$0B \‾‾ Decay then hold high
$0C //// Repeating attack
$0D /‾‾ Single attack, hold high
$0E /\/\ Attack-decay cycle
$0F / __

Platform implementations

ZX Spectrum 128K

  • Access: port $FFFD (register select), port $BFFD (data write).
  • Clock: 1.7734 MHz (PAL).
  • Stereo: ABC arrangement via Melodik interface or software mixing.

Amstrad CPC

  • Access: via PPI (8255), more complex addressing.
  • Clock: 1 MHz.
  • Stereo: hardware stereo (A left, B centre, C right).

MSX

  • Access: ports $A0-$A2.
  • Clock: varies by region.

Atari ST

  • Chip: YM2149F (Yamaha clone — software-compatible with the AY but with a 5-bit / 32-step envelope DAC and a selectable /8 divider).
  • Access: memory-mapped at $FF8800-$FF8802.
  • Output: mono. The STe and later models add external stereo via the LMC1992 chip on the microwire bus — not part of the YM itself.

Programming techniques

  • Arpeggios: rapid note changes simulate chords.
  • Software envelopes: bypass limited hardware envelope for flexibility.
  • Noise drums: mix noise with short tone bursts for percussion.
  • Digidrum: fast volume register updates for sample playback.
  • Buzzer bass: envelope-driven bass using the single envelope generator.

AY-3-8910 vs AY-3-8912

Feature 8910 8912
I/O ports 2 1
Pin count 40 28
Sound Identical Identical

See also

Not yet fact-checked. This entry was drafted by an AI and nobody has verified it. The dates, figures and technical details may be wrong. Use it to find your bearings, then confirm anything that matters against a primary source.