The CTS256A-AL2 is an 8-bit microcomputer programmed to create text-to-allophone address sequences, in flexible and cost effective manner. It sources the SP0256A-AL2 which is a speech synthesizer whose output drives an audio amplifier to produce speech output.
Input of the CTS256A-AL2 is standard English ASCII characters, which makes connecting to a stand-alone terminal or any personal computer simple.
CTS256A.ASMDisassembled and commented source of the ROM contained in the PIC7040 Microcontroller (based on TI TMS7042 MCU);CTS256A.LSTListing of the assembly ofCTS256A.ASM;CTS256A.PRNRaw disassembly listing of the ROM contained in the PIC7040 Microcontroller (based on TI TMS7042 MCU);CTS256A.BINBinary image of the ROM (address range $F000-$FFF);RULES.TXTExtracted rules used to convert the text to SP0256 allophones;extract_rules.cC program to extract the CTS rules from the ROM image;CTS256A.SCRScreening file for the disassembler;CTS256A.EQUEquates file for the disassembler;DASM7000.EXETMS7000 series disassembler.
While studying the CTS256A-AL2 module I found a number of oddities:
- The module doesn't handle the lower case letters properly. For example, "rider." in lower case generates
{[R]=[RR1]} {[I]=[IH]} {[D]=[PA2 DD2]} {[ER]=[ER1]} {[.]=[PA5 PA5]}whereas "RIDER." in upper case generates{[R]=[RR1]} {[I]^%=[AY]} {[D]=[PA2 DD2]} {[ER]=[ER1]} {[.]=[PA5 PA5]}. I found that theFETCHroutine in the ROM does not perform the conversion to upper case. The conversion is done inGNEXT, which callsFETCH. But in the pattern check routines,FETCHis directly called, so the lower case chars are not converted. - When I converted the rules to plain text, I found a pattern symbol '$1F' (symbolized as '$') that is not
recognized by the encoding routine in the ROM. I suspect that the rule
[I]$% = [AY]is wrongly encoded, and should be in fact[I]D% = [AY], if I refer to the original document from the Naval Research Laboratory:And the corresponding rules extracted from the CTS256A-AL2 ROM:[IZ]%=/AY Z/ [IS]%=/AY Z/ [I]D%=/AY/ +^[I]^+=/IH/ [I]T%=/AY/ #^:[I]^+=/IH/[IZ]% = [AY ZZ] [IS]% = [AY ZZ] [I]$% = [AY] ; and not [I]D% = [AY] +^[I]^+ = [IH] [I]T% = [AY] #*[I]^+ = [IH]
Frank Palazzolo, who designed an extractor to dump the masked ROMs of TMS7000-based devices, and published
the ROM binary image cts256a.bin: https://github.com/palazzol/TMS7xxx_dumper