diff options
author | 2021-08-19 11:40:00 +0200 | |
---|---|---|
committer | 2021-08-19 11:40:12 +0200 | |
commit | 4ea2e83412c98935c9fc0030f82aadd014bc8122 (patch) | |
tree | 9caae6bcff864b8b3d0c0d43a77a801d8948c522 | |
parent | 68affee3da1e93225774967425860412c9ab1715 (diff) |
New working machines
--------------------
TI-5100 [hap, Sean Riddle]
-rw-r--r-- | src/mame/drivers/hh_tms1k.cpp | 155 | ||||
-rw-r--r-- | src/mame/layout/ti5100.lay | 57 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
3 files changed, 213 insertions, 0 deletions
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index de5edf61b34..34755b08a6d 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -160,6 +160,7 @@ ROM source notes when dumped from another publisher, but confident it's the same - palmf31: Toshiba BC-8018B - ti1250: Texas Instruments TI-1200 - ti25503: Texas Instruments TI-1265 +- ti5100: loose chip TODO: - verify output PLA and microinstructions PLA for MCUs that have been dumped @@ -276,6 +277,7 @@ TODO: #include "ti1680.lh" #include "ti25503.lh" #include "ti30.lh" +#include "ti5100.lh" #include "timaze.lh" #include "tisr16.lh" #include "tithermos.lh" @@ -10474,6 +10476,158 @@ ROM_END /*************************************************************************** + TI-5100, more (see below) + * TMS1070 MCU label TMS1073NL or TMC1073NL (die label 1070B, 1073) + * 11-digit 7seg VFD (1 custom digit) + + This chip was also used in 3rd-party calculators, such as Toshiba BC-1015, + Panasonic JE1601U, Radio Shack EC2001, Triumph-Adler D100. The original + TI version did not have the 3 buttons at R4. + +***************************************************************************/ + +class ti5100_state : public hh_tms1k_state +{ +public: + ti5100_state(const machine_config &mconfig, device_type type, const char *tag) : + hh_tms1k_state(mconfig, type, tag) + { } + + void ti5100(machine_config &config); + +private: + void update_display(); + void write_o(u16 data); + void write_r(u16 data); + u8 read_k(); +}; + +// handlers + +void ti5100_state::update_display() +{ + // extra segment on R10 + m_display->matrix(m_r, (m_r >> 2 & 0x100) | m_o); +} + +void ti5100_state::write_r(u16 data) +{ + // R0-R10: input mux, select digit + m_r = m_inp_mux = data; + update_display(); +} + +void ti5100_state::write_o(u16 data) +{ + // O0-O7: digit segments + m_o = data; + update_display(); +} + +u8 ti5100_state::read_k() +{ + // K: multiplexed inputs + return read_inputs(11); +} + +// config + +static INPUT_PORTS_START( ti5100 ) + PORT_START("IN.0") // R0 + PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_CONFNAME( 0x08, 0x00, "K" ) // constant mode + PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) + PORT_CONFSETTING( 0x08, DEF_STR( On ) ) + + PORT_START("IN.1") // R1 + PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.2") // R2 + PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_CONFNAME( 0x08, 0x00, "DP" ) // display point + PORT_CONFSETTING( 0x00, "F" ) + PORT_CONFSETTING( 0x08, "2" ) + + PORT_START("IN.3") // R3 + PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.4") // R4 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) // clear all? + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("EX") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("GPM") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME(UTF8_CAPITAL_DELTA"%") + + PORT_START("IN.5") // R5 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CODE(KEYCODE_DEL) PORT_NAME("C/CE") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("CM") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("N") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("%") + + PORT_START("IN.6") // R6 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("0") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("4") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("7") + + PORT_START("IN.7") // R7 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) // duplicate of R8 0x01 + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("5") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("8") + + PORT_START("IN.8") // R8 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME(".") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("3") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("6") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") + + PORT_START("IN.9") // R9 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) // duplicate of R9 0x02 + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("+=") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("-=") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME(UTF8_MULTIPLY) + + PORT_START("IN.10") // R10 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_HOME) PORT_NAME("M+=") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_INSERT) PORT_NAME("M-=") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_END) PORT_NAME("RM") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME(UTF8_DIVIDE) +INPUT_PORTS_END + +void ti5100_state::ti5100(machine_config &config) +{ + /* basic machine hardware */ + TMS1070(config, m_maincpu, 250000); // approximation + m_maincpu->k().set(FUNC(ti5100_state::read_k)); + m_maincpu->o().set(FUNC(ti5100_state::write_o)); + m_maincpu->r().set(FUNC(ti5100_state::write_r)); + + /* video hardware */ + PWM_DISPLAY(config, m_display).set_size(11, 9); + m_display->set_segmask(0x7ff, 0xff); + config.set_default_layout(layout_ti5100); + + /* no sound! */ +} + +// roms + +ROM_START( ti5100 ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "tms1073nl", 0x0000, 0x0400, CRC(94185933) SHA1(d2d9432f857b8530ac399f5097c6d412f06d8814) ) + + ROM_REGION( 867, "maincpu:mpla", 0 ) + ROM_LOAD( "tms1000_ti5100_micro.pla", 0, 867, CRC(31b43e95) SHA1(6864e4c20f3affffcd3810dcefbc9484dd781547) ) + ROM_REGION( 365, "maincpu:opla", 0 ) + ROM_LOAD( "tms1000_ti5100_output.pla", 0, 365, CRC(11f6f0f4) SHA1(f25cf6bd284ab4614746b2e3f98d42d2585e425a) ) +ROM_END + + + + + +/*************************************************************************** + TMC098x series Majestic-line calculators TI-30, SR-40, TI-15(less buttons) and several by Koh-I-Noor @@ -13115,6 +13269,7 @@ COMP( 1975, ti1250, 0, 0, ti1250, ti1250, ti1250_state, emp COMP( 1976, ti125076, ti1250, 0, ti1270, ti1250, ti1250_state, empty_init, "Texas Instruments", "TI-1250 (1976 version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1976, ti1270, 0, 0, ti1270, ti1270, ti1250_state, empty_init, "Texas Instruments", "TI-1270", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1976, ti25503, 0, 0, ti25503, ti25503, ti25503_state, empty_init, "Texas Instruments", "TI-2550 III", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) +CONS( 1976, ti5100, 0, 0, ti5100, ti5100, ti5100_state, empty_init, "Texas Instruments", "TI-5100", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1976, ti30, 0, 0, ti30, ti30, ti30_state, empty_init, "Texas Instruments", "TI-30", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1976, tibusan, 0, 0, ti30, tibusan, ti30_state, empty_init, "Texas Instruments", "TI Business Analyst", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) COMP( 1977, tiprog, 0, 0, ti30, tiprog, ti30_state, empty_init, "Texas Instruments", "TI Programmer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) diff --git a/src/mame/layout/ti5100.lay b/src/mame/layout/ti5100.lay new file mode 100644 index 00000000000..94a31f840bf --- /dev/null +++ b/src/mame/layout/ti5100.lay @@ -0,0 +1,57 @@ +<?xml version="1.0"?> +<!-- +license:CC0 +--> +<mamelayout version="2"> + +<!-- define elements --> + + <element name="blackd"><disk><color red="0" green="0" blue="0" /></disk></element> + + <element name="digit" defstate="0"> + <led7seg><color red="0.2" green="1.0" blue="0.85" /></led7seg> + </element> + + <element name="seg_dp" defstate="0"> + <disk state="0"><color red="0.0235" green="0.1255" blue="0.1059" /></disk> + <disk state="1"><color red="0.2" green="1.0" blue="0.85" /></disk> + </element> + <element name="seg_r" defstate="0"> + <rect state="0"><color red="0.0235" green="0.1255" blue="0.1059" /></rect> + <rect state="1"><color red="0.2" green="1.0" blue="0.85" /></rect> + </element> + + <element name="seg_left" defstate="0"> + <text string="←" state="1"><color red="0.2" green="1.0" blue="0.85" /></text> + <text string="←" state="0"><color red="0.0235" green="0.1255" blue="0.1059" /></text> + </element> + <element name="seg_m" defstate="0"> + <text state="1" string="M"><color red="0.2" green="1.0" blue="0.85" /></text> + <text state="0" string="M"><color red="0.0235" green="0.1255" blue="0.1059" /></text> + </element> + + +<!-- build screen --> + + <view name="Internal Layout"> + <bounds left="9.6" right="130.5" top="0" bottom="15" /> + + <repeat count="10"> + <param name="i" start="9" increment="-1" /> + <param name="x1" start="20" increment="11" /> + <param name="x2" start="28.3" increment="11" /> + <param name="x3" start="29.2" increment="11" /> + <element name="digit~i~" ref="digit"><bounds x="~x1~" y="0" width="10" height="15" /></element> + + <!-- add dp/comma segments --> + <element ref="blackd"><bounds x="~x2~" y="13.3" width="2.1" height="2.1" /></element> + <element name="~i~.7" ref="seg_dp"><bounds x="~x3~" y="11.6" width="1.5" height="1.5" /></element> + <element name="~i~.8" ref="seg_r"><bounds x="~x3~" y="13.5" width="0.75" height="1.5" /></element> + </repeat> + + <element name="10.1" ref="seg_m"><bounds x="8.7" y="-0.7" width="10" height="8" /></element> + <element name="10.0" ref="seg_left"><bounds x="8.7" y="7.2" width="10" height="6.5" /></element> + <element name="10.6" ref="seg_r"><bounds x="10.6" y="6.85" width="6" height="1.3" /></element> + + </view> +</mamelayout> diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 593e12931ee..62eb5c3d1b5 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16560,6 +16560,7 @@ ti1270 // Texas Instruments ti1680 // Texas Instruments ti25503 // Texas Instruments ti30 // Texas Instruments +ti5100 // Texas Instruments tibusan // Texas Instruments timaze // Texas Instruments tiprog // Texas Instruments |