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

Overview

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).

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