The latest acquisition is the JE520 by Jameco. This external voice synthesizer came in two variants: the JE520-CM for Commodore and JE520-AP for Apple II. The only difference was the interface connection to the computer. The Commodore version, the one I have, connects to the user port while the Apple II version connects via an interface slot card. Otherwise, I believe the rest of the hardware to be the same. I found an advertisement for it in RUN issue 7 1984— it retailed for $115-$150.
It’s based on the National Semiconductor Digitalker 54104 voice synthesis chip and four 2764 64kbit (8kbytes) EPROMs that form that vocabulary that it’s able to speak. This means it’s able to speak only using a fixed wordset. National also sold a series of vocabulary ROMs with the chip, but I believe this version has a custom ROM set from Jameco. It includes a built in amplifier and speaker with volume adjustment (located below) as well as a mini jack for sound output. Power comes directly from the computer.
I didn’t receive a manual or software so it’s trial and error. At first, I assumed it would communicate with the computer over a serial interface since most devices that connect to the user port on a Commodore would use serial. And it would greatly simplify communication by using serial. But loading a terminal program resulted in the synth talking complete gibberish.
I later realized that it must be using parallel instead. And indeed, it does appear that way. The computer interfaces via parallel directly to the data pins of the Digitalker chip. On the Commodore, this is PB0 through PB7. So, it should be a simple matter in BASIC to get it to speak. So I tried the following program.
10 POKE 56579,255:REM PB0-PB7 OUTPUTS
20 FOR I = 0 to 255
25 PRINT I;
30 POKE 56577,I
40 FOR J = 1 to 350:NEXT J
50 NEXT I
After RUNing the program, the voice synth began speaking words after iteration 8 with “FAIL”, “FAST”, “FIRE”, “FIRST”, “FORWARD”, etc. (0-7 were silent). It kept speaking properly until iteration 127 when it began talking mostly gibberish again through 255 with an occasional “SECOND”.
I’ve found online that two folks have said that their ROM #2 has gone bad so I decided to dump them in the hopes that I have a good copy. Dumping ROM 1 went well, but ROM 2 seems like it’s going bad. It returns different data each time it’s read. ROM 3 and ROM 4 read fine. So, it appears I also have the same problem most others do. I’m hoping that someone reading this will have access to the ROM set so I can burn a good version and get the voice synth working properly again. I’d even like to try the original National Digitalker Voice Vocabulary ROM set as I’m thinking they should be compatible as well. Leave a comment if you’re able to assist.
An interesting bit of trivia about this device is it has origins that can be traced back to someone named Forrest Mozer. The chip even contains his last name on the top. Mozer was a co-founder of Electronic Speech Systems (ESS) and developed the lossy codec that’s used to encode the speech that’s stored on the ROMs. Apparently, he did most of the encoding himself, by hand! Mozer’s codec went on to give speech to C64 games like Ghostbusters and Impossible Mission, without additional hardware. The National 54104 Digitalker was also used in the arcade hit Berzerk.
Jonathan GevaryahuNovember 12, 2015 at 1:59pm
I have good dumps of all 4 of the JE520 2364 mask roms; Replacing rom 2 (or 4) is a bit tricky, since those ROMs are non-JEDEC and have pin 20 (or is it pin 22 /OE? I forget) inverted as CE (or OE) instead, on just those two roms. (This may also effectively make the rom ‘look’ like it is bad when dumping it, since EPROM programmers will hold /CE and /OE low, which means the chip will read as open bus!)
The correct checksums of the 4 rom chips’ contents are:
ROM1 (U6): CRC32: 97B6281E SHA1: B81D308C88239EA5D708D9FD4474082C8AC74A29
ROM2 (U7): CRC32: 20FA796F SHA1: 058C1DD56F8E455E4F92078684C779AE020A6B32
ROM3 (U8): CRC32: 5984A509 SHA1: C80CD9078DD88E62B3BBA51797DF8D005ACD87E7
ROM4 (U9): CRC32: 56889C81 SHA1: 60929C6C73D944AB1FD249BFF4AF8240F84F357F
To replace a bad ROM 2 or 4, you will need to use a 2764 EPROM programmed with the data needed, and will need to add an inverter so the EPROM acts as if the /CE pin is inverted.
To do this, program the EPROM with the correct data, then bend pin 20 (/CE) sideways, then “dead bug wire” (i.e. mount upside-down with pins facing up in the air) a 7404 (or 74LS04) inverter on top of the 2764 EPROM with the 7404 VCC and GND wired to the EPROM VCC/GND pins (28 and 14 respectively). Then wire the 7404 pin 2 (1Y) to the pin 20 which is bent sideways, and wire 7404 pin 1 (1A) to a wire, which is stuck into the pin 20 of the socket on the pcb itself. You may also want to wire 7404 pins 3,5,9,11,and 13 to GND or VCC so the 5 unused inverters on the 7404 don’t float/oscillate weirdly.
Jonathan Gevaryahu AKA Lord Nightmare
Lord_Nightmare on IRC, Freenode ##electronics and #classiccmp