Speech with an SP0256-AL2
- rehsd

- Feb 15
- 2 min read
Updated: Feb 16
On my 65265 MCU build, I was curious what it would take to get basic speech capabilities. As I researched this, having the 65265 directly generate speech did not seem like the right approach, primarily due to the CPU-intensive nature of speech synthesis. Rather, a dedicated speech synthesis chip was likely a better approach. Doing a cursory search, I found these as potential options:
General Instrument / Microchip SP0256 Family (SP0256‑AL2)
Texas Instruments LPC Speech Chips (TMS5100 / TMS5110 / TMS5200 / TMS5220)
Votrax / Federal Screw Works
National Semiconductor Digitalker (MM54104 / MM54104N)
NEC Speech Chips (uPD7751 / uPD7752)
I decided to try the SP0256-AL2 as it seemed to have been commonly used at one point in history. You can grab the data sheet from bitsavers.org: SP0256A-AL2 Speech Processor datasheet (Radio Shack Cat. No. 276-1784).
The basic function of the SP0256 speech synthesis chip is to output an allophone which is selected with six address lines. An allophone is one of the possible spoken variations of a single phoneme (a phoneme is a distinct sound in a language).

To the right, I have the pinout of the SP0256. For my purposes, the key signals (outside of power and reset) are LRQ, ALD, the address lines (A8:A1), the oscillator input, and the digital out.
LRQ output should be low before sending new address data.
The address lines specify which allophone to generate. The top two address lines are not used. The SP0256 supports 64 allophones.
ALD is pulsed low to load the address.
A crystal, or oscillator, with a 3.12 MHz is expected.
The following typical application schematic is available in the datasheet.

As I considered how to add this to my 65265 build, I decided to control it from a W65C22S VIA where I had a spare port. This posed a small challenge, as I had 8 GPIO available on the VIA, but I needed 11 GPIO to interface the 8 address lines plus RESET, ALD, and LRQ. I added a 74595 shift register to expand my GPIO off of the VIA. While I really did not need to connect the top two address lines to the VIA, as they do not appear to be needed (so why are they on the IC?), I still needed 9 GPIO, so I stuck with the shift register. I did want to keep the SP0256 reset controlled from a VIA GPIO, independent of the system-level reset.
For the clock, I used a 3.0 MHz oscillator (close enough to 3.12 MHz spec). I added an LM386 for basic amplification. That got me to my schematic.
For the assembly code, I created routines to support combining allophones into speech of words and sentences.
SP0256_Init: Initialize the synthesizer
SP0256_Send_Allophone: Select an allophone and send to digital output
SP0256_SpeakString: Loads from ROM data and plays a series of allophones, resulting in a phrase or sentence.
microcontollers/W65C265S/Primary AV Boards/Speech SP0256-AL2 20260215 at main · rehsd/microcontollers · GitHub (see Speech.asm)
I am planning to add a CTS256A-AL2 text-to-speech companion chip. This IC converts ASCII to allophones data that the SP0256-AL2 can play. With this, I could support dynamic speech based on ROM data and user input, without having to pre-build all allophone sequences.

I recently acquired a Votrax Personal Speech System device and the documents for that are here. It will help http://pdf.textfiles.com/manuals/ARCADE/S-Z/Votrax%20Personal%20Speech%20System%20[Quick%20Reference%20Card]%20[English].pdf
Greetings,
When you start adding the CTS256A-AL2, you may wish to add the exception ROM option. Scott Baker added one, but hasn't used it. I did a follow up for the DAISY256 at the retrobrew forum if interested. https://www.retrobrewcomputers.org/forum/index.php?t=msg&th=759&goto=10855&#msg_10855 It will let you generate your own exception ROM and use it when the system is configured properly.
-Berzerkula