New machine added

----------
TI-1250 [hap, Sean Riddle]
This commit is contained in:
hap 2016-01-06 21:37:11 +01:00
parent 83f3ed7eb5
commit ccf24308d0
7 changed files with 269 additions and 98 deletions

View File

@ -5,6 +5,7 @@
TMS0980/TMS1000-family MCU cores TMS0980/TMS1000-family MCU cores
TODO: TODO:
- fix TMS0950 (opcode related?)
- emulate TMS1600 L-pins - emulate TMS1600 L-pins
- fix debugger disasm view - fix debugger disasm view
@ -166,26 +167,30 @@ const device_type TMS1670 = &device_creator<tms1670_cpu_device>; // high voltage
// - 2048x9bit ROM array at the bottom-left // - 2048x9bit ROM array at the bottom-left
// - main instructions PLA at the top half, to the right of the midline // - main instructions PLA at the top half, to the right of the midline
// - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions // - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions
// - 16-term output PLA and segment PLA above the RAM (rotate opla 90 degrees) // - 16-term inverted output PLA and segment PLA above the RAM (rotate opla 90 degrees)
const device_type TMS0980 = &device_creator<tms0980_cpu_device>; // 28-pin DIP, 9 R pins const device_type TMS0980 = &device_creator<tms0980_cpu_device>; // 28-pin DIP, 9 R pins
// TMS1980 is a TMS0980 with a TMS1x00 style opla // TMS1980 is a TMS0980 with a TMS1x00 style opla
// - RAM, ROM, and main instructions PLA is exactly the same as TMS0980 // - RAM, ROM, and main instructions PLA is the same as TMS0980
// - one of the microinstructions redirects to a RSTR instruction, like on TMS0270 // - one of the microinstructions redirects to a RSTR instruction, like on TMS0270
// - 32-term output PLA above the RAM, 7 bits! (rotate opla 270 degrees) // - 32-term inverted output PLA above the RAM, 7 bits! (rotate opla 270 degrees)
const device_type TMS1980 = &device_creator<tms1980_cpu_device>; // 28-pin DIP, 7 O pins, 10 R pins, high voltage const device_type TMS1980 = &device_creator<tms1980_cpu_device>; // 28-pin DIP, 7 O pins, 10 R pins, high voltage
// TMS0950 is a TMS1000 with a TMS0980 style opla, it was quickly succeeded by the TMS0970
// - RAM, ROM, microinstructions is the same as TMS1000
// - 10-term inverted output PLA and segment PLA on the top-left
const device_type TMS0950 = &device_creator<tms0950_cpu_device>; // 28-pin DIP, 8 O pins, 11? R pins
// TMS0970 is a stripped-down version of the TMS0980, itself acting more like a TMS1000 // TMS0970 is a stripped-down version of the TMS0980, itself acting more like a TMS1000
// - RAM and ROM is exactly the same as TMS1000 // - RAM and ROM is the same as TMS1000
// - main instructions PLA at the top half, to the right of the midline // - main instructions PLA at the top half, to the right of the midline
// - 32-term microinstructions PLA between the RAM and ROM, supporting 15 microinstructions // - 32-term microinstructions PLA between the RAM and ROM, supporting 15 microinstructions
// - 16-term output PLA and segment PLA above the RAM (rotate opla 90 degrees) // - 16-term inverted output PLA and segment PLA above the RAM (rotate opla 90 degrees)
const device_type TMS0970 = &device_creator<tms0970_cpu_device>; // 28-pin DIP, 11 R pins (note: pinout may slightly differ from chip to chip) const device_type TMS0970 = &device_creator<tms0970_cpu_device>; // 28-pin DIP, 11 R pins (note: pinout may slightly differ from chip to chip)
const device_type TMS1990 = &device_creator<tms1990_cpu_device>; // 28-pin DIP, ? R pins.. const device_type TMS1990 = &device_creator<tms1990_cpu_device>; // 28-pin DIP, ? R pins..
// TMS0950 is same?
// TMS0270 on the other hand, is a TMS0980 with earrings and a new hat. The new changes look like a quick afterthought, almost hacky // TMS0270 on the other hand, is a TMS0980 with earrings and a new hat. The new changes look like a quick afterthought, almost hacky
// - RAM, ROM, and main instructions PLA is exactly the same as TMS0980 // - RAM, ROM, and main instructions PLA is the same as TMS0980
// - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions plus optional separate lines for custom opcode handling // - 64-term microinstructions PLA between the RAM and ROM, supporting 20 microinstructions plus optional separate lines for custom opcode handling
// - 48-term output PLA above the RAM (rotate opla 90 degrees) // - 48-term output PLA above the RAM (rotate opla 90 degrees)
const device_type TMS0270 = &device_creator<tms0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O) const device_type TMS0270 = &device_creator<tms0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O)
@ -302,6 +307,10 @@ tms0970_cpu_device::tms0970_cpu_device(const machine_config &mconfig, device_typ
: tms1000_cpu_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source) : tms1000_cpu_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source)
{ } { }
tms0950_cpu_device::tms0950_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: tms0970_cpu_device(mconfig, TMS0950, "TMS0950", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms0950", __FILE__)
{ }
tms1990_cpu_device::tms1990_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) tms1990_cpu_device::tms1990_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: tms0970_cpu_device(mconfig, TMS1990, "TMS1990", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms1990", __FILE__) : tms0970_cpu_device(mconfig, TMS1990, "TMS1990", tag, owner, clock, 8, 11, 6, 8, 2, 10, ADDRESS_MAP_NAME(program_10bit_8), 6, ADDRESS_MAP_NAME(data_64x4), "tms1990", __FILE__)
{ } { }
@ -359,6 +368,23 @@ machine_config_constructor tms1400_cpu_device::device_mconfig_additions() const
} }
static MACHINE_CONFIG_FRAGMENT(tms0950)
// microinstructions PLA, output PLA, segment PLA
MCFG_PLA_ADD("mpla", 8, 16, 30)
MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
MCFG_PLA_ADD("opla", 4, 8, 10)
MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
MCFG_PLA_ADD("spla", 3, 8, 8)
MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
MACHINE_CONFIG_END
machine_config_constructor tms0950_cpu_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME(tms0950);
}
static MACHINE_CONFIG_FRAGMENT(tms0970) static MACHINE_CONFIG_FRAGMENT(tms0970)
// main opcodes PLA, microinstructions PLA, output PLA, segment PLA // main opcodes PLA, microinstructions PLA, output PLA, segment PLA
@ -1243,7 +1269,7 @@ void tms0970_cpu_device::op_setr()
{ {
// SETR: set output register // SETR: set output register
// DDIG line is a coincidence between the selected output pla row(s) and segment pla row(s) // DDIG line is a coincidence between the selected output pla row(s) and segment pla row(s)
int ddig = (m_opla->read(m_a) & m_o) ? 0 : 1; int ddig = (m_opla->read(m_a) & m_o) ? 1 : 0;
m_r = (m_r & ~(1 << m_y)) | (ddig << m_y); m_r = (m_r & ~(1 << m_y)) | (ddig << m_y);
} }

View File

@ -373,6 +373,20 @@ protected:
virtual void op_tdo() override; virtual void op_tdo() override;
}; };
class tms0950_cpu_device : public tms0970_cpu_device
{
public:
tms0950_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
protected:
// overrides
virtual void device_reset() override { tms1000_cpu_device::device_reset(); }
virtual machine_config_constructor device_mconfig_additions() const override;
virtual void op_rstr() override { ; } // assume it has no RSTR or CLO
virtual void op_clo() override { ; } // "
};
class tms1990_cpu_device : public tms0970_cpu_device class tms1990_cpu_device : public tms0970_cpu_device
{ {
public: public:
@ -478,6 +492,7 @@ extern const device_type TMS1400;
extern const device_type TMS1470; extern const device_type TMS1470;
extern const device_type TMS1600; extern const device_type TMS1600;
extern const device_type TMS1670; extern const device_type TMS1670;
extern const device_type TMS0950;
extern const device_type TMS0970; extern const device_type TMS0970;
extern const device_type TMS1990; extern const device_type TMS1990;
extern const device_type TMS0980; extern const device_type TMS0980;

View File

@ -2368,7 +2368,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( elecdet, elecdet_state ) static MACHINE_CONFIG_START( elecdet, elecdet_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation - unknown freq MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(elecdet_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(elecdet_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecdet_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecdet_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(elecdet_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(elecdet_state, write_o))
@ -2914,7 +2914,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( comp4, comp4_state ) static MACHINE_CONFIG_START( comp4, comp4_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation - unknown freq MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(comp4_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(comp4_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(comp4_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(comp4_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(comp4_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(comp4_state, write_o))
@ -3466,7 +3466,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( cnsector, cnsector_state ) static MACHINE_CONFIG_START( cnsector, cnsector_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation - unknown freq MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(cnsector_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(cnsector_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(cnsector_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(cnsector_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(cnsector_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(cnsector_state, write_o))
@ -3762,7 +3762,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( stopthief, stopthief_state ) static MACHINE_CONFIG_START( stopthief, stopthief_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation - unknown freq MCFG_CPU_ADD("maincpu", TMS0980, 425000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(stopthief_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(stopthief_state, read_k))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(stopthief_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(stopthief_state, write_r))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(stopthief_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(stopthief_state, write_o))
@ -4654,7 +4654,7 @@ ROM_START( elecdet )
ROM_REGION( 1982, "maincpu:mpla", 0 ) ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0980_elecdet_output.pla", 0, 352, CRC(652d19c3) SHA1(75550c2b293453b6b9efed88c8cc77195a53161f) ) ROM_LOAD( "tms0980_elecdet_output.pla", 0, 352, CRC(5d12c24a) SHA1(e486802151a704c6273d4a8682c9c374d27d1e6d) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END ROM_END
@ -4712,9 +4712,9 @@ ROM_START( comp4 )
ROM_REGION( 860, "maincpu:mpla", 0 ) ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_comp4_micro.pla", 0, 860, CRC(ee9d7d9e) SHA1(25484e18f6a07f7cdb21a07220e2f2a82fadfe7b) ) ROM_LOAD( "tms0970_comp4_micro.pla", 0, 860, CRC(ee9d7d9e) SHA1(25484e18f6a07f7cdb21a07220e2f2a82fadfe7b) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0970_comp4_output.pla", 0, 352, CRC(a0f887d1) SHA1(3c666663d484d5bed81e1014f8715aab8a3d489f) ) ROM_LOAD( "tms0980_comp4_output.pla", 0, 352, CRC(144ce2d5) SHA1(459b92ad62421932df61b7e3965f1821f9636a2c) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0970_comp4_segment.pla", 0, 157, CRC(e5bddd90) SHA1(4b1c6512c70e5bcd23c2dbf0c88cd8aa2c632a10) ) ROM_LOAD( "tms0980_comp4_segment.pla", 0, 157, CRC(73426b07) SHA1(311be3f95a97936b6d1a4dcfa7746da26318ce54) )
ROM_END ROM_END
@ -4760,9 +4760,9 @@ ROM_START( cnsector )
ROM_REGION( 860, "maincpu:mpla", 0 ) ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_cnsector_micro.pla", 0, 860, CRC(059f5bb4) SHA1(2653766f9fd74d41d44013bb6f54c0973a6080c9) ) ROM_LOAD( "tms0970_cnsector_micro.pla", 0, 860, CRC(059f5bb4) SHA1(2653766f9fd74d41d44013bb6f54c0973a6080c9) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0970_cnsector_output.pla", 0, 352, CRC(7c0bdcd6) SHA1(dade774097e8095dca5deac7b2367d0c701aca51) ) ROM_LOAD( "tms0980_cnsector_output.pla", 0, 352, CRC(c8bfb9d2) SHA1(30c3c73cec194debdcb1dd01b4adfefaeddf9516) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0970_common2_segment.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) ) ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END ROM_END
@ -4797,7 +4797,7 @@ ROM_START( stopthie )
ROM_REGION( 1982, "maincpu:mpla", 0 ) ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(50337a48) SHA1(4a9ea62ed797a9ac5190eec3bb6ebebb7814628c) ) ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END ROM_END
@ -4811,7 +4811,7 @@ ROM_START( stopthiep )
ROM_REGION( 1982, "maincpu:mpla", 0 ) ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(50337a48) SHA1(4a9ea62ed797a9ac5190eec3bb6ebebb7814628c) ) ROM_LOAD( "tms0980_stopthie_output.pla", 0, 352, CRC(680ca1c1) SHA1(dea6365f2e6b50a52f1a8f1d8417176b905d2bc9) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END ROM_END

View File

@ -12,6 +12,7 @@
TODO: TODO:
- TI-1250 doesn't work right
- MCU clocks are unknown where noted - MCU clocks are unknown where noted
***************************************************************************/ ***************************************************************************/
@ -20,6 +21,7 @@
// internal artwork // internal artwork
#include "dataman.lh" #include "dataman.lh"
#include "ti1250.lh"
#include "ti1270.lh" #include "ti1270.lh"
#include "ti30.lh" #include "ti30.lh"
#include "tisr16.lh" #include "tisr16.lh"
@ -54,12 +56,13 @@ void ticalc1x_state::machine_start()
/*************************************************************************** /***************************************************************************
TI SR-16, SR-16 II TI SR-16 (1974, first consumer product with TMS1000 series MCU)
* SR-16: TMS1000 MCU labeled TMS1001NL (die labeled 1000, 1001A) * TMS1000 MCU labeled TMS1001NL (die labeled 1000, 1001A)
* SR-16 II: TMS1000 MCU labeled TMS1016NL (die labeled 1000B, 1016A)
* 12-digit 7seg LED display * 12-digit 7seg LED display
SR-16 II is a cost-reduced 'sequel', [10^x] was removed, and [pi] was added. TI SR-16 II (1975 version)
* TMS1000 MCU labeled TMS1016NL (die labeled 1000B, 1016A)
* notes: cost-reduced 'sequel', [10^x] was removed, and [pi] was added.
***************************************************************************/ ***************************************************************************/
@ -184,7 +187,6 @@ static INPUT_PORTS_START( tisr16 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( tisr16ii ) static INPUT_PORTS_START( tisr16ii )
PORT_START("IN.0") // R0 PORT_START("IN.0") // R0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
@ -253,7 +255,6 @@ static INPUT_PORTS_START( tisr16ii )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9")
INPUT_PORTS_END INPUT_PORTS_END
static MACHINE_CONFIG_START( tisr16, tisr16_state ) static MACHINE_CONFIG_START( tisr16, tisr16_state )
/* basic machine hardware */ /* basic machine hardware */
@ -274,16 +275,33 @@ MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
TI-1250/TI-1200 (1975 version), Spirit of '76
* TMS0950 MCU labeled TMC0952NL, K0952 (die labeled 0950A 0952)
* 9-digit 7seg LED display
TI-1250/TI-1200 (1976 version), TI-1400, TI-1450, TI-1205, TI-1255, LADY 1200, ABLE
* TMS0970 MCU labeled TMS0972NL ZA0348, JP0972A (die labeled 0970D-72A)
* 8-digit 7seg LED display, or 9 digits with leftmost unused
As seen listed above, the basic 4-function TMS0972 calculator MCU was used
in many calculators. It was licensed to other manufacturers too, one funny
example being a Mattel Barbie handheld calculator.
Some cheaper models lacked the memory buttons (the function itself still works).
The ABLE series was for educational purposes, with each having a small subset of
available buttons.
TI-1270 TI-1270
* TMS0970 MCU labeled TMC0974NL ZA0355, DP0974A (die labeled 0970D-74A) * TMS0970 MCU labeled TMC0974NL ZA0355, DP0974A (die labeled 0970D-74A)
* 8-digit 7seg LED display * 8-digit 7seg LED display
* notes: almost same hardware as TMS0972 TI-1250, minor scientific functions
***************************************************************************/ ***************************************************************************/
class ti1270_state : public ticalc1x_state class ti1250_state : public ticalc1x_state
{ {
public: public:
ti1270_state(const machine_config &mconfig, device_type type, const char *tag) ti1250_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag) : ticalc1x_state(mconfig, type, tag)
{ } { }
@ -294,13 +312,16 @@ public:
// handlers // handlers
WRITE16_MEMBER(ti1270_state::write_r) WRITE16_MEMBER(ti1250_state::write_r)
{ {
// R0-R7: select digit (right-to-left) // R8 only has segment G connected
display_matrix_seg(8, 8, m_o, data, 0xff); m_display_segmask[8] = 0x40;
// R0-R7(,R8): select digit (right-to-left)
display_matrix_seg(9, 8, m_o, data, 0xff);
} }
WRITE16_MEMBER(ti1270_state::write_o) WRITE16_MEMBER(ti1250_state::write_o)
{ {
// O1-O5,O7: input mux // O1-O5,O7: input mux
// O0-O7: digit segments // O0-O7: digit segments
@ -308,7 +329,7 @@ WRITE16_MEMBER(ti1270_state::write_o)
m_o = data; m_o = data;
} }
READ8_MEMBER(ti1270_state::read_k) READ8_MEMBER(ti1250_state::read_k)
{ {
// K: multiplexed inputs // K: multiplexed inputs
return read_inputs(6); return read_inputs(6);
@ -317,9 +338,9 @@ READ8_MEMBER(ti1270_state::read_k)
// config // config
static INPUT_PORTS_START( ti1270 ) static INPUT_PORTS_START( ti1250 )
PORT_START("IN.0") // O1 PORT_START("IN.0") // O1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CE/C") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("CE")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("=")
@ -343,42 +364,74 @@ static INPUT_PORTS_START( ti1270 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY)
PORT_START("IN.4") // O5 PORT_START("IN.4") // O5
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("STO") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_NAME("C")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("RCL") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("CS") // named either CS(Change Sign) or +/-
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_NAME(UTF8_SMALL_PI) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("%")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE)
PORT_START("IN.5") // O7 PORT_START("IN.5") // O7
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_NAME("MC")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("MR")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_INSERT) PORT_NAME("M-")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("M+")
INPUT_PORTS_END
static INPUT_PORTS_START( ti1270 )
PORT_INCLUDE( ti1250 )
PORT_MODIFY("IN.0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("CE/C")
PORT_MODIFY("IN.4")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("STO")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_NAME("RCL")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_NAME(UTF8_SMALL_PI)
PORT_MODIFY("IN.5")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x" UTF8_POW_2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x")
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("+/-")
INPUT_PORTS_END INPUT_PORTS_END
static MACHINE_CONFIG_START( ti1270, ti1270_state ) static MACHINE_CONFIG_START( ti1250, ti1250_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed MCFG_CPU_ADD("maincpu", TMS0950, 200000) // RC osc. R=68K, C=68pf -> ~200kHz
MCFG_TMS1XXX_READ_K_CB(READ8(ti1270_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(ti1250_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1270_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1250_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1270_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1250_state, write_r))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_ti1270) MCFG_DEFAULT_LAYOUT(layout_ti1250)
/* no sound! */ /* no sound! */
MACHINE_CONFIG_END MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ti1270, ti1250 )
/* basic machine hardware */
MCFG_CPU_REPLACE("maincpu", TMS0970, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(ti1250_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1250_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1250_state, write_r))
MCFG_DEFAULT_LAYOUT(layout_ti1270)
MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
TI-1000 TI-1000 (1977 version)
* TMS1990 MCU labeled TMC1991NL (die labeled 1991-91A) * TMS1990 MCU labeled TMC1991NL (die labeled 1991-91A)
* 8-digit 7seg LED display * 8-digit 7seg LED display
TI-1000 (1978 version)
* TMS1990 MCU labeled TMC1992-4NL **not dumped yet
***************************************************************************/ ***************************************************************************/
class ti1000_state : public ticalc1x_state class ti1000_state : public ticalc1x_state
@ -455,7 +508,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( ti1000, ti1000_state ) static MACHINE_CONFIG_START( ti1000, ti1000_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed MCFG_CPU_ADD("maincpu", TMS1990, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(ti1000_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(ti1000_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1000_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti1000_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1000_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti1000_state, write_r))
@ -554,7 +607,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( wizatron, wizatron_state ) static MACHINE_CONFIG_START( wizatron, wizatron_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(wizatron_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(wizatron_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(wizatron_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(wizatron_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
@ -628,7 +681,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( lilprof, lilprof_state ) static MACHINE_CONFIG_START( lilprof, lilprof_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0970, 250000) // guessed MCFG_CPU_ADD("maincpu", TMS0970, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(lilprof_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(lilprof_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(wizatron_state, write_r))
@ -741,7 +794,7 @@ INPUT_PORTS_END
static MACHINE_CONFIG_START( lilprof78, lilprof78_state ) static MACHINE_CONFIG_START( lilprof78, lilprof78_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS1990, 250000) // guessed MCFG_CPU_ADD("maincpu", TMS1990, 250000) // approximation
MCFG_TMS1XXX_READ_K_CB(READ8(lilprof78_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(lilprof78_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof78_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(lilprof78_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(lilprof78_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(lilprof78_state, write_r))
@ -870,10 +923,10 @@ MACHINE_CONFIG_END
/*************************************************************************** /***************************************************************************
Majestic-line calculators: TMC098x series Majestic-line calculators
* TI-30(aka SR-40): TMS0980 MCU labeled TMC0981NL (die labeled 0980B-81F)
* TI Programmer: TMS0980 MCU labeled ZA0675NL, JP0983AT (die labeled 0980B-83) TI-30, SR-40, TI-15(less buttons) and several by Koh-I-Noor
* TI Business Analyst-I: TMS0980 MCU labeled TMC0982NL (die labeled 0980B-82F) * TMS0980 MCU labeled TMC0981NL (die labeled 0980B-81F)
* 9-digit 7seg LED display * 9-digit 7seg LED display
Of note is a peripheral by Schoenherr, called the Braillotron. It acts as Of note is a peripheral by Schoenherr, called the Braillotron. It acts as
@ -881,12 +934,18 @@ MACHINE_CONFIG_END
refreshable Braille cells. The TI-30 itself is slightly modified to wire refreshable Braille cells. The TI-30 itself is slightly modified to wire
the original LED display to a 25-pin D-Sub connector. the original LED display to a 25-pin D-Sub connector.
TI Business Analyst, TI Business Analyst-I, TI Money Manager, TI-31, TI-41
* TMS0980 MCU labeled TMC0982NL (die labeled 0980B-82F)
TI Programmer
* TMS0980 MCU labeled ZA0675NL, JP0983AT (die labeled 0980B-83)
***************************************************************************/ ***************************************************************************/
class majestic_state : public ticalc1x_state class ti30_state : public ticalc1x_state
{ {
public: public:
majestic_state(const machine_config &mconfig, device_type type, const char *tag) ti30_state(const machine_config &mconfig, device_type type, const char *tag)
: ticalc1x_state(mconfig, type, tag) : ticalc1x_state(mconfig, type, tag)
{ } { }
@ -897,9 +956,9 @@ public:
// handlers // handlers
WRITE16_MEMBER(majestic_state::write_r) WRITE16_MEMBER(ti30_state::write_r)
{ {
// note: 1st digit only has segments B,F,G,DP // 1st digit only has segments B,F,G,DP
m_display_segmask[0] = 0xe2; m_display_segmask[0] = 0xe2;
// R0-R8: select digit // R0-R8: select digit
@ -907,7 +966,7 @@ WRITE16_MEMBER(majestic_state::write_r)
display_matrix_seg(8, 9, o, data, 0xff); display_matrix_seg(8, 9, o, data, 0xff);
} }
WRITE16_MEMBER(majestic_state::write_o) WRITE16_MEMBER(ti30_state::write_o)
{ {
// O0-O2,O4-O7: input mux // O0-O2,O4-O7: input mux
// O0-O7: digit segments // O0-O7: digit segments
@ -915,7 +974,7 @@ WRITE16_MEMBER(majestic_state::write_o)
m_o = data; m_o = data;
} }
READ8_MEMBER(majestic_state::read_k) READ8_MEMBER(ti30_state::read_k)
{ {
// K: multiplexed inputs (note: the Vss row is always on) // K: multiplexed inputs (note: the Vss row is always on)
return m_inp_matrix[7]->read() | read_inputs(7); return m_inp_matrix[7]->read() | read_inputs(7);
@ -983,7 +1042,6 @@ static INPUT_PORTS_START( ti30 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( tiprog ) static INPUT_PORTS_START( tiprog )
PORT_START("IN.0") // O0 PORT_START("IN.0") // O0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_NAME("K") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_NAME("K")
@ -1043,8 +1101,7 @@ static INPUT_PORTS_START( tiprog )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( tibusan )
static INPUT_PORTS_START( tibusan1 )
// PORT_NAME lists functions under [2nd] as secondaries. // PORT_NAME lists functions under [2nd] as secondaries.
PORT_START("IN.0") // O0 PORT_START("IN.0") // O0
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("y" UTF8_POW_X" " UTF8_POW_X"" UTF8_SQUAREROOT"y") // 2nd one implies xth root of y PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_NAME("y" UTF8_POW_X" " UTF8_POW_X"" UTF8_SQUAREROOT"y") // 2nd one implies xth root of y
@ -1104,14 +1161,13 @@ static INPUT_PORTS_START( tibusan1 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, (void *)false)
INPUT_PORTS_END INPUT_PORTS_END
static MACHINE_CONFIG_START( ti30, ti30_state )
static MACHINE_CONFIG_START( majestic, majestic_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMS0980, 400000) // guessed MCFG_CPU_ADD("maincpu", TMS0980, 400000) // guessed
MCFG_TMS1XXX_READ_K_CB(READ8(majestic_state, read_k)) MCFG_TMS1XXX_READ_K_CB(READ8(ti30_state, read_k))
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(majestic_state, write_o)) MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ti30_state, write_o))
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(majestic_state, write_r)) MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ti30_state, write_r))
MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(hh_tms1k_state, auto_power_off)) MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(hh_tms1k_state, auto_power_off))
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1))
@ -1152,18 +1208,45 @@ ROM_START( tisr16ii )
ROM_END ROM_END
ROM_START( ti1270 ) ROM_START( ti1250 )
ROM_REGION( 0x0400, "maincpu", 0 ) ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "za0355", 0x0000, 0x0400, CRC(48e09b4b) SHA1(17f27167164df223f9f06082ece4c3fc3900eda3) ) ROM_LOAD( "tmc0952nl", 0x0000, 0x0400, CRC(fc0cee65) SHA1(1480e4553181f081281d3b78457721b9ecb20173) )
ROM_REGION( 867, "maincpu:mpla", 0 )
ROM_LOAD( "tms1000_ti1250_micro.pla", 0, 867, CRC(60106ee3) SHA1(70f914056238a93a6718f26f8591dbd18c25d7f5) )
ROM_REGION( 195, "maincpu:opla", 0 )
ROM_LOAD( "tms0950_ti1250_output.pla", 0, 195, CRC(31570eb8) SHA1(c1cb17c31367b65aa777925459515c3d5c565508) )
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END
ROM_START( ti125076 )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "tms0972nl_za0348", 0x0000, 0x0400, CRC(6e3f8add) SHA1(a249209e2a92f5016e33b7ad2c6c2660df1df959) )
ROM_REGION( 782, "maincpu:ipla", 0 ) ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) ) ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 ) ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_ti1270_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) ) ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0970_ti1270_output.pla", 0, 352, CRC(f39bf0a4) SHA1(160341490043eb369720d5f487cf0f59f458a93e) ) ROM_LOAD( "tms0980_ti1270_output.pla", 0, 352, CRC(472f95a0) SHA1(32adb17285f2f3f93a4b027a3dd2156ec48000ec) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0970_common2_segment.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) ) ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END
ROM_START( ti1270 )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "tmc0974nl_za0355", 0x0000, 0x0400, CRC(48e09b4b) SHA1(17f27167164df223f9f06082ece4c3fc3900eda3) )
ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0980_ti1270_output.pla", 0, 352, CRC(472f95a0) SHA1(32adb17285f2f3f93a4b027a3dd2156ec48000ec) )
ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END ROM_END
@ -1174,41 +1257,41 @@ ROM_START( ti1000 )
ROM_REGION( 782, "maincpu:ipla", 0 ) ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) ) ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 ) ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) ) ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0970_ti1000_output.pla", 0, 352, CRC(1d82061a) SHA1(90e4a4b0fb3b4ae5965da90479b7fed737ad8831) ) ROM_LOAD( "tms0980_ti1000_output.pla", 0, 352, CRC(a936631e) SHA1(1f900b12a41419d6e1ffbddd5cf72be3adaa4435) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0970_ti1000_segment.pla", 0, 157, CRC(234ca3a8) SHA1(76844dd87cb380a07c8fcbef143038087e98f138) ) ROM_LOAD( "tms0980_common3_segment.pla", 0, 157, CRC(b5b3153f) SHA1(e0145c729695a4f962970aee0571d42cee6f5a9e) )
ROM_END ROM_END
ROM_START( wizatron ) ROM_START( wizatron )
ROM_REGION( 0x0400, "maincpu", 0 ) ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "za0379", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) ) ROM_LOAD( "tmc0907nl_za0379", 0x0000, 0x0400, CRC(5a6af094) SHA1(b1f27e1f13f4db3b052dd50fb08dbf9c4d8db26e) )
ROM_REGION( 782, "maincpu:ipla", 0 ) ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) ) ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 ) ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) ) ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0970_wizatron_output.pla", 0, 352, CRC(745a3900) SHA1(031b55a0cf783c8a88eec4289d4373eb8538f374) ) ROM_LOAD( "tms0980_wizatron_output.pla", 0, 352, CRC(c0ee5c04) SHA1(e9fadcef688309adbe6c1c0545aac6883ce4a1ac) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0970_common2_segment.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) ) ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END ROM_END
ROM_START( lilprof ) ROM_START( lilprof )
ROM_REGION( 0x0400, "maincpu", 0 ) ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "za0356", 0x0000, 0x0400, CRC(fef9dd39) SHA1(5c9614c9c5092d55dabeee2d6e0387d50d6ad4d5) ) ROM_LOAD( "tms0975nl_za0356", 0x0000, 0x0400, CRC(fef9dd39) SHA1(5c9614c9c5092d55dabeee2d6e0387d50d6ad4d5) )
ROM_REGION( 782, "maincpu:ipla", 0 ) ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) ) ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 ) ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_lilprof_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) ) ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0970_lilprof_output.pla", 0, 352, CRC(c74daf97) SHA1(c4948000196171b34d4fe9cdd2962a945da9883d) ) ROM_LOAD( "tms0980_lilprof_output.pla", 0, 352, CRC(73f9ca93) SHA1(9d6c559e2c1886c62bcd57e3c3aa897e8829b4d2) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0970_common2_segment.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) ) ROM_LOAD( "tms0980_common2_segment.pla", 0, 157, CRC(c03cccd8) SHA1(08bc4b597686a7aa8b2c9f43b85b62747ffd455b) )
ROM_END ROM_END
ROM_START( lilprof78 ) ROM_START( lilprof78 )
@ -1218,17 +1301,17 @@ ROM_START( lilprof78 )
ROM_REGION( 782, "maincpu:ipla", 0 ) ROM_REGION( 782, "maincpu:ipla", 0 )
ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) ) ROM_LOAD( "tms0970_common1_instr.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
ROM_REGION( 860, "maincpu:mpla", 0 ) ROM_REGION( 860, "maincpu:mpla", 0 )
ROM_LOAD( "tms0970_common1_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) ) ROM_LOAD( "tms0970_common2_micro.pla", 0, 860, CRC(7f50ab2e) SHA1(bff3be9af0e322986f6e545b567c97d70e135c93) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0970_lilprof78_output.pla", 0, 352, CRC(03f509c4) SHA1(691554a55db0c5950df848077095f23a991b1909) ) ROM_LOAD( "tms0980_lilprof78_output.pla", 0, 352, CRC(b7416cc0) SHA1(57891ffeaf34aafe8a915086c6d2feb78f5113af) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0970_lilprof78_segment.pla", 0, 157, CRC(234ca3a8) SHA1(76844dd87cb380a07c8fcbef143038087e98f138) ) ROM_LOAD( "tms0980_common3_segment.pla", 0, 157, CRC(b5b3153f) SHA1(e0145c729695a4f962970aee0571d42cee6f5a9e) )
ROM_END ROM_END
ROM_START( dataman ) ROM_START( dataman )
ROM_REGION( 0x1000, "maincpu", 0 ) ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD16_WORD( "tmc1982nl", 0x0000, 0x1000, CRC(3521f53f) SHA1(c46fe7fe20715fdf5aed65833fb867cfd3938062) ) // it matches with source code in patent US4340374 ROM_LOAD16_WORD( "tmc1982nl", 0x0000, 0x1000, CRC(3521f53f) SHA1(c46fe7fe20715fdf5aed65833fb867cfd3938062) ) // matches patent US4340374
ROM_REGION( 1246, "maincpu:ipla", 0 ) ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
@ -1248,13 +1331,13 @@ ROM_START( ti30 )
ROM_REGION( 1982, "maincpu:mpla", 0 ) ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0980_ti30_output.pla", 0, 352, CRC(38788410) SHA1(cb3d1a61190b887cd2e6d9c60b4fdb9b901f7eed) ) ROM_LOAD( "tms0980_ti30_output.pla", 0, 352, CRC(00475f99) SHA1(70e04c1472639bd35d4adaab0b9f1ae4a0e394be) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END ROM_END
ROM_START( tibusan1 ) ROM_START( tibusan )
ROM_REGION( 0x1000, "maincpu", 0 ) ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD16_WORD( "tmc0982nl", 0x0000, 0x1000, CRC(6954560a) SHA1(6c153a0c9239a811e3514a43d809964c06f8f88e) ) ROM_LOAD16_WORD( "tmc0982nl", 0x0000, 0x1000, CRC(6954560a) SHA1(6c153a0c9239a811e3514a43d809964c06f8f88e) )
@ -1263,7 +1346,7 @@ ROM_START( tibusan1 )
ROM_REGION( 1982, "maincpu:mpla", 0 ) ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) ) ROM_LOAD( "tms0980_common1_micro.pla", 0, 1982, CRC(3709014f) SHA1(d28ee59ded7f3b9dc3f0594a32a98391b6e9c961) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0980_tibusan1_output.pla", 0, 352, CRC(38788410) SHA1(cb3d1a61190b887cd2e6d9c60b4fdb9b901f7eed) ) ROM_LOAD( "tms0980_ti30_output.pla", 0, 352, CRC(00475f99) SHA1(70e04c1472639bd35d4adaab0b9f1ae4a0e394be) )
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END ROM_END
@ -1271,14 +1354,14 @@ ROM_END
ROM_START( tiprog ) ROM_START( tiprog )
ROM_REGION( 0x1000, "maincpu", 0 ) ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD16_WORD( "za0675nl", 0x0000, 0x1000, CRC(82355854) SHA1(03fab373bce04df8ea3fe25352525e8539213626) ) ROM_LOAD16_WORD( "za0675nl", 0x0000, 0x1000, CRC(82355854) SHA1(03fab373bce04df8ea3fe25352525e8539213626) ) // tmc0983
ROM_REGION( 1246, "maincpu:ipla", 0 ) ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )
ROM_REGION( 1982, "maincpu:mpla", 0 ) ROM_REGION( 1982, "maincpu:mpla", 0 )
ROM_LOAD( "tms0980_tiprog_micro.pla", 0, 1982, CRC(57043284) SHA1(0fa06d5865830ecdb3d870271cb92ac917bed3ca) ) ROM_LOAD( "tms0980_tiprog_micro.pla", 0, 1982, CRC(57043284) SHA1(0fa06d5865830ecdb3d870271cb92ac917bed3ca) )
ROM_REGION( 352, "maincpu:opla", 0 ) ROM_REGION( 352, "maincpu:opla", 0 )
ROM_LOAD( "tms0980_tiprog_output.pla", 0, 352, BAD_DUMP CRC(2a63956f) SHA1(26a62ca2b5973d8564e580e12230292f6d2888d9) ) // corrected by hand ROM_LOAD( "tms0980_tiprog_output.pla", 0, 352, BAD_DUMP CRC(125c4ee6) SHA1(b8d865c42fd37c3d9b92c5edbecfc831be558597) ) // corrected by hand
ROM_REGION( 157, "maincpu:spla", 0 ) ROM_REGION( 157, "maincpu:spla", 0 )
ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) ROM_LOAD( "tms0980_common1_segment.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) )
ROM_END ROM_END
@ -1289,14 +1372,17 @@ ROM_END
COMP( 1974, tisr16, 0, 0, tisr16, tisr16, driver_device, 0, "Texas Instruments", "SR-16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1974, tisr16, 0, 0, tisr16, tisr16, driver_device, 0, "Texas Instruments", "SR-16", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1975, tisr16ii, 0, 0, tisr16, tisr16ii, driver_device, 0, "Texas Instruments", "SR-16 II", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1975, tisr16ii, 0, 0, tisr16, tisr16ii, driver_device, 0, "Texas Instruments", "SR-16 II", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1975, ti1250, 0, 0, ti1250, ti1250, driver_device, 0, "Texas Instruments", "TI-1250 (1975 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_NOT_WORKING )
COMP( 1976, ti125076, ti1250, 0, ti1270, ti1250, driver_device, 0, "Texas Instruments", "TI-1250 (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1976, ti1270, 0, 0, ti1270, ti1270, driver_device, 0, "Texas Instruments", "TI-1270", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1976, ti1270, 0, 0, ti1270, ti1270, driver_device, 0, "Texas Instruments", "TI-1270", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1977, ti1000, 0, 0, ti1000, ti1000, driver_device, 0, "Texas Instruments", "TI-1000", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1977, ti1000, 0, 0, ti1000, ti1000, driver_device, 0, "Texas Instruments", "TI-1000 (1977 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1977, wizatron, 0, 0, wizatron, wizatron, driver_device, 0, "Texas Instruments", "Wiz-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1977, wizatron, 0, 0, wizatron, wizatron, driver_device, 0, "Texas Instruments", "Wiz-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1976, lilprof, 0, 0, lilprof, lilprof, driver_device, 0, "Texas Instruments", "Little Professor (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1976, lilprof, 0, 0, lilprof, lilprof, driver_device, 0, "Texas Instruments", "Little Professor (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1978, lilprof78, lilprof, 0, lilprof78, lilprof78, driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1978, lilprof78, lilprof, 0, lilprof78, lilprof78, driver_device, 0, "Texas Instruments", "Little Professor (1978 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1977, dataman, 0, 0, dataman, dataman, driver_device, 0, "Texas Instruments", "DataMan", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1977, dataman, 0, 0, dataman, dataman, driver_device, 0, "Texas Instruments", "DataMan", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1976, ti30, 0, 0, majestic, ti30, driver_device, 0, "Texas Instruments", "TI-30", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1976, ti30, 0, 0, ti30, ti30, driver_device, 0, "Texas Instruments", "TI-30", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1977, tiprog, 0, 0, majestic, tiprog, driver_device, 0, "Texas Instruments", "TI Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1976, tibusan, 0, 0, ti30, tibusan, driver_device, 0, "Texas Instruments", "TI Business Analyst", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1979, tibusan1, 0, 0, majestic, tibusan1, driver_device, 0, "Texas Instruments", "TI Business Analyst-I", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1977, tiprog, 0, 0, ti30, tiprog, driver_device, 0, "Texas Instruments", "TI Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )

View File

@ -416,7 +416,7 @@ ROM_END
ROM_START( mrchalgr ) ROM_START( mrchalgr )
ROM_REGION( 0x1000, "maincpu", 0 ) ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD( "tmc0273nll", 0x0000, 0x1000, CRC(ef6d23bd) SHA1(194e3b022c299e99a731bbcfba5bf8a3a9f0d07e) ) ROM_LOAD( "tmc0273nll", 0x0000, 0x1000, CRC(ef6d23bd) SHA1(194e3b022c299e99a731bbcfba5bf8a3a9f0d07e) ) // matches patent US4421487
ROM_REGION( 1246, "maincpu:ipla", 0 ) ROM_REGION( 1246, "maincpu:ipla", 0 )
ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) ) ROM_LOAD( "tms0980_common1_instr.pla", 0, 1246, CRC(42db9a38) SHA1(2d127d98028ec8ec6ea10c179c25e447b14ba4d0) )

View File

@ -0,0 +1,42 @@
<?xml version="1.0"?>
<mamelayout version="2">
<!-- note: the digits were very small, wide space between them, and not the same style as (MAME's-)default -->
<element name="digit" defstate="0">
<led7seg><color red="1.0" green="0.15" blue="0.08" /></led7seg>
</element>
<view name="Internal Layout">
<bounds left="0" right="90" top="0" bottom="15" />
<bezel name="digit8" element="digit">
<bounds x="0" y="0" width="10" height="15" />
</bezel>
<bezel name="digit7" element="digit">
<bounds x="10" y="0" width="10" height="15" />
</bezel>
<bezel name="digit6" element="digit">
<bounds x="20" y="0" width="10" height="15" />
</bezel>
<bezel name="digit5" element="digit">
<bounds x="30" y="0" width="10" height="15" />
</bezel>
<bezel name="digit4" element="digit">
<bounds x="40" y="0" width="10" height="15" />
</bezel>
<bezel name="digit3" element="digit">
<bounds x="50" y="0" width="10" height="15" />
</bezel>
<bezel name="digit2" element="digit">
<bounds x="60" y="0" width="10" height="15" />
</bezel>
<bezel name="digit1" element="digit">
<bounds x="70" y="0" width="10" height="15" />
</bezel>
<bezel name="digit0" element="digit">
<bounds x="80" y="0" width="10" height="15" />
</bezel>
</view>
</mamelayout>

View File

@ -2279,11 +2279,13 @@ mbdtower // Milton Bradley
// hh_tms1k ticalc1x.cpp // hh_tms1k ticalc1x.cpp
tisr16 tisr16
tisr16ii tisr16ii
ti1250
ti125076
ti1270 ti1270
ti1000 ti1000
ti30 ti30
tiprog tiprog
tibusan1 tibusan
wizatron wizatron
lilprof lilprof
lilprof78 lilprof78