mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
s14001a_new: documentation header, copypasted pinout info from s14001a(_old)
This commit is contained in:
parent
2afcaa990a
commit
950e3c4bd9
@ -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));
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user