Also - I have to thank Mark Magness, who has provided Data Sheets from his GI Databook.
So far, I have:
Need Pinout Here
Here is the memory map of the SPB640 with respect to the CP1610 address space, as provided by Ron Carlson:
Valid SPB Hex AD2 AD1 AD0 Functions
addr read the SPC cycle write to SPB cycle
--------------------------------------------------------------------------------------
0080 1 0 0 Bit 15 outputs LRQ condition. Bus copy SD0-SD7 to D0-D7
(speech chip start addr)
0081 1 0 0 Bit 15 outputs full/ Bit 10=0; copies 5D0-5D9
not full fifo flag onto the STACK
Bit 10=1; clear FIFO array
0082-00FF 1 0 0 copies D0-D7 to SD0-SD7 copy SD0-SD7 to D0-D7
01FE-0BFF 101 - 011 copies D0-D7 to SD0-SD7 copy SD0-SD7 to D0-D7
1 1 1 Tri-state SD0-SD15 accepts no inputs
Remember that the data read or written by the CP1610 could be 16-bits wide.
SD0-SD7 refers to the peripheral bus that was unused but available for
future expansion. At this time I am still a little unclear how the FIFO
contents map into the SP0256's address space, but newly acquired datasheets
on the GI serial ROMS should clear this up, I hope.
New Info! - There are documented test modes for the SP0256. This should make it much easier to figure out how it works. See the datasheets for details: Datasheets
The SP0256 contains a 4-bit GI micro, 2K of internal ROM and a 12-pole digital filter. It can be made to speak using its internal ROM data, or using external serial data. This is provided by the SPB640 in the Intellivoice design. (In other applications, it could be provided by a GI serial ROM.)
The internal ROM in the SP0256 used in the Intellivoice was pre-programmed with words and phrases which could be used in all cartridges. One interesting note - The SP0256-AL2 (sold a Radio Shack for a long time), was the same chip programmed with English allophones instead of INTV game phrases!
Instruction Set - Unknown to me at this time. I know it had 16 instructions. I believe these include a single level stack, register immediate loads, and register immediate adds/subtracts. I plan to proceed by sending data which consist of Space Spartans samples which have been altered, to see what I can learn.
Data Format - Unknown to me at this time. These should be based on the addressing modes of the micro, I suppose.
Digital Filter - This is a 12-pole digital filter, consisting of 6 cascaded 2nd order stages. The excitation for the filter was either white noise or a series of impulses at the pitch frequency. I believe this filter is identical to the one in the SP0250 chip. The SP0250 data sheet and applications guide has further details.
I have traced out the low-pass filter section and regenerated a schematic for this here. It is a fifth-order elliptical filter implememented with GIC's. It was dubbed "the brickwall" for obvious reasons. (>120db attenuation in the stop band) I will be converting it to a digital filter for simulation purposes.
This was actually a VERY involved process in the original cartridge development. Cartridge space was critical and so special candidate screening and software processing were done to insure intelligibility and small code space. I'm putting this off until the end.