Kc89c72 Datasheet

While exact pinouts vary by package type (commonly found in PLCC or QFP packages), the functional groups of the KC89C72 are standard for storage controllers.

Power Supply:

Host Interface (CPU Side):

Drive Interface (FDD Side):

The KC89C72 is a 3-voice programmable sound generator (PSG) IC. It was manufactured by Microchip Technology (after acquiring GI’s semiconductor division) and also under license by other vendors like GoldStar (now LG) and UMC. kc89c72 datasheet

Key features extracted from the original datasheet include:

The KC89C72 is often mistaken for the older AY-3-8910, but the KC89C72 datasheet typically indicates a CMOS version with lower power consumption and slightly improved noise immunity.


Here is a practical reference circuit for prototyping with the KC89C72.

Components Needed:

Connection Guide:

  • Address: Pin 15 (A8) → Arduino D4
  • Data Bus: Pins 1-8 → Arduino D5 to D12.
  • Audio Out: Pin 27 (DAC) → 1k resistor to GND → 10µF capacitor in series → LM386 input.
  • Arduino Code Example (Initialization & Tone):

    // Write register function
    void writeReg(uint8_t reg, uint8_t value) 
      digitalWrite(A8_PIN, reg & 0x01); // Only A8 matters for 2-register mode
      // Address mode:
      digitalWrite(BC1_PIN, HIGH);
      digitalWrite(BDIR_PIN, HIGH);
      delayMicroseconds(1);
      digitalWrite(BC1_PIN, LOW);
      // Write mode:
      PORTC = value; // Data out
      digitalWrite(BDIR_PIN, HIGH);
      delayMicroseconds(1);
      digitalWrite(BDIR_PIN, LOW);
    

    void setup() // Set pins as outputs... // Reset the chip digitalWrite(RESET_PIN, LOW); delay(10); digitalWrite(RESET_PIN, HIGH);

    // Silence all channels and disable noise (Reg 7 = 0b00111111) writeReg(7, 0x3F); // Set Channel A volume max (Reg 8 = 0b1111) writeReg(8, 0x0F); // Set Channel A tone period (440 Hz) – calculate accordingly writeReg(0, 0xAF); // Fine writeReg(1, 0x06); // Coarse While exact pinouts vary by package type (commonly


    The internal register architecture, as detailed in the KC89C72 datasheet, is identical to the AY-3-891x family. There are 16 readable/writable registers (R0–R15).

    | Register | Function | |----------|-----------------------------------------------| | R0 | Tone A period (fine, bits 0–7) | | R1 | Tone A period (coarse, bits 8–11) | | R2 | Tone B period (fine) | | R3 | Tone B period (coarse) | | R4 | Tone C period (fine) | | R5 | Tone C period (coarse) | | R6 | Noise period (5-bit, bits 0–4) | | R7 | Mixer control (enable/disable tone/noise) | | R8 | Amplitude A (16 levels or envelope) | | R9 | Amplitude B | | R10 | Amplitude C | | R11 | Envelope period (fine) | | R12 | Envelope period (coarse) | | R13 | Envelope shape (attack/decay/cycle) | | R14 | I/O Port A data | | R15 | I/O Port B data |

    Understanding this register map is critical for programming the KC89C72 — any complete datasheet includes these details with example code. Host Interface (CPU Side):