s14001a_new: documentation header, copypasted pinout info from s14001a(_old)

This commit is contained in:
hap 2016-01-19 13:52:00 +01:00
parent 2afcaa990a
commit 950e3c4bd9
2 changed files with 112 additions and 9 deletions

View File

@ -1,13 +1,112 @@
// license:BSD-3-Clause
// copyright-holders:Ed Bernard
// copyright-holders:Ed Bernard, Jonathan Gevaryahu, hap
// thanks-to:Kevin Horton
/*
SSi TSI S14001A speech IC emulator
aka CRC: Custom ROM Controller, designed in 1975, first usage in 1976 on TSI Speech+ calculator
Originally written for MAME by Jonathan Gevaryahu(Lord Nightmare) 2006-2013,
replaced with near-complete rewrite by Ed Bernard in 2016
// http://www.vintagecalculators.com/html/speech-.html
TODO:
- nothing at the moment?
Further reading:
- http://www.vintagecalculators.com/html/speech-.html
- http://www.vintagecalculators.com/html/development_of_the_tsi_speech-.html
- http://www.vintagecalculators.com/html/speech-_state_machine.html
- https://archive.org/stream/pdfy-QPCSwTWiFz1u9WU_/david_djvu.txt
*/
/* Chip Pinout:
The original datasheet (which is lost as far as I know) clearly called the
s14001a chip the 'CRC chip', or 'Custom Rom Controller', as it appears with
this name on the Stern and Canon schematics, as well as on some TSI speech
print advertisements.
Labels are not based on the labels used by the Atari wolf pack and Stern
schematics, as these are inconsistent. Atari calls the word select/speech address
input pins SAx while Stern calls them Cx. Also Atari and Canon both have the bit
ordering for the word select/speech address bus backwards, which may indicate it
was so on the original datasheet. Stern has it correct, and I've used their Cx
labeling.
______ ______
_|o \__/ |_
+5V -- |_|1 40|_| -> /BUSY*
_| |_
?TEST ?? |_|2 39|_| <- ROM D7
_| |_
XTAL CLOCK/CKC -> |_|3 38|_| -> ROM A11
_| |_
ROM CLOCK/CKR <- |_|4 37|_| <- ROM D6
_| |_
DIGITAL OUT 0 <- |_|5 36|_| -> ROM A10
_| |_
DIGITAL OUT 1 <- |_|6 35|_| -> ROM A9
_| |_
DIGITAL OUT 2 <- |_|7 34|_| <- ROM D5
_| |_
DIGITAL OUT 3 <- |_|8 33|_| -> ROM A8
_| |_
ROM /EN <- |_|9 32|_| <- ROM D4
_| S |_
START -> |_|10 7 1 T 31|_| -> ROM A7
_| 7 4 S |_
AUDIO OUT <- |_|11 3 0 I 30|_| <- ROM D3
_| 7 0 |_
ROM A0 <- |_|12 1 29|_| -> ROM A6
_| A |_
SPCH ADR BUS C0 -> |_|13 28|_| <- SPCH ADR BUS C5
_| |_
ROM A1 <- |_|14 27|_| <- ROM D2
_| |_
SPCH ADR BUS C1 -> |_|15 26|_| <- SPCH ADR BUS C4
_| |_
ROM A2 <- |_|16 25|_| <- ROM D1
_| |_
SPCH ADR BUS C2 -> |_|17 24|_| <- SPCH ADR BUS C3
_| |_
ROM A3 <- |_|18 23|_| <- ROM D0
_| |_
ROM A4 <- |_|19 22|_| -> ROM A5
_| |_
GND -- |_|20 21|_| -- -10V
|________________|
*Note from Kevin Horton when testing the hookup of the S14001A: the /BUSY line
is not a standard voltage line: when it is in its HIGH state (i.e. not busy) it
puts out a voltage of -10 volts, so it needs to be dropped back to a sane
voltage level before it can be passed to any sort of modern IC. The address
lines for the speech rom (A0-A11) do not have this problem, they output at a
TTL/CMOS compatible voltage. The AUDIO OUT pin also outputs a voltage below GND,
and the TEST pins may do so too.
START is pulled high when a word is to be said and the word number is on the
word select/speech address input lines. The Canon 'Canola' uses a separate 'rom
strobe' signal independent of the chip to either enable or clock the speech rom.
It's likely that they did this to be able to force the speech chip to stop talking,
which is normally impossible. The later 'version 3' TSI speech board as featured in
an advertisement in the John Cater book probably also has this feature, in addition
to external speech rom banking.
The Digital out pins supply a copy of the 4-bit waveform which also goes to the
internal DAC. They are only valid every other clock cycle. It is possible that
on 'invalid' cycles they act as a 4 bit input to drive the dac.
Because it requires -10V to operate, the chip manufacturing process must be PMOS.
* Operation:
Put the 6-bit address of the word to be said onto the C0-C5 word select/speech
address bus lines. Next, clock the START line low-high-low. As long as the START
line is held high, the first address byte of the first word will be read repeatedly
every clock, with the rom enable line enabled constantly (i.e. it doesn't toggle on
and off as it normally does during speech). Once START has gone low-high-low, the
/BUSY line will go low until 3 clocks after the chip is done speaking.
*/
#include "emu.h"
#include "s14001a_new.h"
// device definition
const device_type S14001A_NEW = &device_creator<s14001a_new_device>;
s14001a_new_device::s14001a_new_device(const machine_config &mconfig, std::string tag, device_t *owner, UINT32 clock)
@ -64,8 +163,8 @@ void s14001a_new_device::device_start()
save_item(NAME(m_uOutputP1));
save_item(NAME(m_bDAR04To00CarryP2));
save_item(NAME(m_bPPQCarryP2));
save_item(NAME(m_bRepeatCarryP2));
save_item(NAME(m_bPPQCarryP2));
save_item(NAME(m_bRepeatCarryP2));
save_item(NAME(m_bLengthCarryP2));
save_item(NAME(m_RomAddrP1));

View File

@ -1,5 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Ed Bernard
// copyright-holders:Ed Bernard, Jonathan Gevaryahu, hap
// thanks-to:Kevin Horton
/*
SSi TSI S14001A speech IC emulator
*/
#ifndef __S14001A_H__
#define __S14001A_H__
@ -104,8 +108,8 @@ private:
// derived signals
bool m_bDAR04To00CarryP2;
bool m_bPPQCarryP2;
bool m_bRepeatCarryP2;
bool m_bPPQCarryP2;
bool m_bRepeatCarryP2;
bool m_bLengthCarryP2;
UINT16 m_RomAddrP1; // rom address