← Back to Guides

Making the Einstein Talk

Version:
1.0
Last Updated
September 26, 2026

The Einstein Speech Synthesiser, from J&K Software, was a small box that plugged into the Einstein's user port and gave it a voice. Inside, the manual says, is an SP0256 speech chip. It speaks by stringing together allophones, the small sounds that words are built from: 64 of them, five of which are pauses of different lengths. Send it the right sounds in the right order and it will say almost anything.

It came with a disc of five programs, from a talking alphabet book to the routine you need to make your own programs speak. This guide takes you through all of them, under MAME, which emulates the speech unit along with the rest of the Einstein. Everything here was done with the copies in our library: the Speech disc and the Speech manual.

The WELCOME program's title screen: WELCOME TO THE TATUNG EINSTEIN SPEECH in large coloured letters between rainbow bars
The WELCOME program, which introduces itself out loud.

What you need

On a real Einstein you need the speech unit itself. The manual says it plugs into the user port on a 16-way ribbon cable, with the red marker on the cable to the right as you look into the socket from the back, and that it has its own volume control and an on/off switch, so it can stay plugged in and silent. You also need Xtal BASIC, from your System Master disc, because the Speech disc holds only BASIC programs. We have not been able to try a real speech unit; if you have one, we would like to hear from you.

Under MAME you need three things:

  • The Einstein set up as in Setting Up MAME.
  • The speech chip's ROM. MAME's speech unit needs the contents of the SP0256 itself, in a file called einstein_speech.zip containing sp0256a-al2.bin. Put it in your ROM folder beside einstein.zip. Without it MAME stops with sp0256a-al2.bin NOT FOUND.
  • A disc with Xtal BASIC on it in drive 0, and the Speech disc in drive 1. We used the library's copy of the TC01 System Master disc, which boots to XtalDOS and has Xtal BASIC on it.

Then plug the speech unit into the user port with -user speech:

mame einstein -window -user speech -flop1 xtaldos.dsk -flop2 speech.dsk

The Einstein's voice comes out of your computer's speakers, along with its other sounds.

Starting

The System Master disc boots to the 0: prompt. Type XBAS and press ENTER to start Xtal BASIC:

TATUNG/Xtal BASIC 4.2, Size 43324, Ready
Xtal BASIC, ready for a command.

Every program on the Speech disc is started the same way, with RUN and the name, and 1: in front because the disc is in drive 1:

RUN"1:WELCOME"

WELCOME

Start here. WELCOME draws its title screen and introduces itself out loud, then shows two pages of instructions, a key press apart:

INSTRUCTIONS FOR USING SPEECH: SPEECH is a utility program starting at line 63010 which you can merge with your own programs. LOAD YOUR PROGRAM. TYPE HOLD65535. LOAD"SPEECH". TYPE MGE.
WELCOME's first page of instructions, on joining SPEECH to your own program.

Those pages explain how to add speech to your own programs, which is covered below. At the end, 1 runs the introduction again and 2 leaves it.

DEMO: typing what to say

DEMO is the one to play with. It asks GIVE ME SOMETHING TO SAY., and says whatever you type when you press ENTER. Then it asks again.

What you type is not English spelling. It is a code for the speech chip's sounds, and the case of each letter matters:

  • A capital letter says the letter's name: A says "ay", B says "bee".
  • A small letter says the letter's sound, the way children learn it: a says "ah", b says "buh".
  • The digits 0 to 9, the manual adds, say the numbers.
  • A semicolon makes a pause that stretches the sound before it, and a colon makes a silent pause.

The manual gives three examples, and in MAME each of them sets the speech unit talking:

TypeSays
heL;O;:evrEbodEHello everybody
tatun;::InstInTatung Einstein
InstIn;;;spE;;;sh:sinhesIzoEinstein speech synthesiser

Read them aloud using the rule above and you can hear how it works: heL is "h", "e", then the name of the letter L, which is "ell". InstIn is the name of I, "eye", then "n", "s", "t", the name of I again and "n": "eyenstine". The capitals are doing a lot of the work.

DEMO with the three examples typed in, each answered by the next GIVE ME SOMETHING TO SAY prompt
The three examples in DEMO.

Getting capitals in MAME. The Einstein starts with ALPHA LOCK on, so everything you type is a capital until you press ALPHA LOCK (Caps Lock in MAME). In our testing under MAME, holding SHIFT with a letter did not give a capital in BASIC, so we typed each capital by pressing ALPHA LOCK, typing the letter, and pressing ALPHA LOCK again. It is fiddly, but the difference is audible: typed all in small letters, each of the three examples came out as different, shorter sounds.

ABC: the talking alphabet

ABC is a picture book for young children, from J&K Software. It starts with a menu:

ALPHABET menu: 1. FLIP THE PAGES, 2. ALPHABET TEST, 3. END. YOUR CHOICE, and the J&K SOFTWARE logo
The ABC menu.

1, Flip the pages, asks you to press a letter, then draws a picture for it and says what it is:

A large red and green apple with A IS FOR APPLE. PRESS SPACE. along the bottom
A is for apple.

Press SPACE to go back and choose another letter. ESC returns to the menu.

A yellow banana on green with B IS FOR BANANA. PRESS SPACE.
B is for banana.

2, Alphabet test, turns it round. It shows a picture and asks WHAT LETTER AM I THINKING OF?, and you answer with the first letter of the thing in the picture. The pictures come in a random order. For a sailing boat, B and Y were ignored; S was accepted and it moved on to the next picture.

A red sailing boat on blue waves, with WHAT LETTER AM I THINKING OF? above it
The alphabet test. S, for sailing boat, was the answer it wanted.

START: the sounds by number

The SP0256's 64 sounds each have a number, from 0 to 63, and the manual lists them all with an example word for each: 7 is the "e" of enter, 16 the "m" of make, and so on. START is the bare minimum for sending those numbers to the chip yourself:

The START listing: REM lines explaining to insert data from line 180, always beginning with 0 and ending with 128, then RESTORE, READ A, OUT 51,79, WAIT 50,64,64, OUT 51,15, OUT 50,A, and the end test
START, listed. The numbers go in DATA lines from line 180.

Load it, add a DATA line, and run it:

LOAD"1:START"
180 DATA 0,6,11,55,13,6,11,128
RUN

That DATA line is the example in START's own comments, and it speaks. The rule, from the comments: begin the data with 0 and end it with 128, which tells the program to stop. In between go the sound numbers, which you choose from the manual's allophone list. Everything the DEMO program can say is built from these same numbers; DEMO just turns your letters into them for you.

The lines that do the work are only a few: OUT 50,A sends a sound number to the user port, and WAIT 50,64,64 waits until the chip is ready for the next one. The manual points to the Xtal BASIC manual's pages on OUT and WAIT for the details.

Making your own programs talk

SPEECH is the DEMO program's speaking routine on its own, starting at line 63010, so that you can join it to a program of yours. WELCOME's instructions give the recipe, and it works exactly as written. Type your program first; this is WELCOME's example:

10 INPUT"TYPE IN A WORD";A$
20 SPEAK$=A$
30 GOSUB63010
40 GOTO10

Put what you want said in SPEAK$, in the same letter code as DEMO, and GOSUB63010 says it. Then join SPEECH on to the end:

HOLD65535
LOAD"1:SPEECH"
MGE

HOLD65535 keeps your program in memory while SPEECH loads, and MGE merges the two. Keep your own line numbers below 63000 so that they do not collide with SPEECH's. RUN it, and it asks for a word and says it.

The recipe typed in: the four program lines, HOLD65535, LOAD"1:SPEECH", MGE, then RUN, TYPE IN A WORD and tatunInstIn
Joined and running. It spoke "tatunInstIn".

The manual suggests saving the result under a new name, so that you do not overwrite SPEECH on the disc.

One warning. WELCOME's second instruction page shows the example with GOSUB60000 on line 30, although its own text says 63010. Use 63010: with 60000 the program stops with Branch Error in 30.

Quick reference

ToType
start Xtal BASICXBAS at the 0: prompt
run a program from drive 1RUN"1:WELCOME", RUN"1:DEMO", RUN"1:ABC"
say a letter's nameits capital, A
say a letter's soundits small letter, a
stretch a sound; after it
a silent pause:
speak from your programput the code in SPEAK$, then GOSUB63010
join SPEECH to your programHOLD65535, LOAD"1:SPEECH", MGE
send sound numbers yourselfSTART, with DATA 0,...,128 from line 180

Where next

If you have a real Einstein Speech Synthesiser, we would love to know how it compares with MAME's, and whether SHIFT gives capitals on the real machine. The contact form is at tatungbytes.co.uk/contact.

Gavin Watson

Get the Newsletter

New guides, disk images and community finds, roughly once a quarter. No spam, we promise, this isn't Tatung's marketing department.
Your subscription could not be saved. Please try again.
Your subscription has been successful.

Newsletter

Subscribe to our newsletter and stay updated.