summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-08-19 11:40:00 +0200
committer hap <happppp@users.noreply.github.com>2021-08-19 11:40:12 +0200
commit4ea2e83412c98935c9fc0030f82aadd014bc8122 (patch)
tree9caae6bcff864b8b3d0c0d43a77a801d8948c522
parent68affee3da1e93225774967425860412c9ab1715 (diff)
New working machines
-------------------- TI-5100 [hap, Sean Riddle]
-rw-r--r--src/mame/drivers/hh_tms1k.cpp155
-rw-r--r--src/mame/layout/ti5100.lay57
-rw-r--r--src/mame/mame.lst1
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="&#x2190;" state="1"><color red="0.2" green="1.0" blue="0.85" /></text>
+ <text string="&#x2190;" 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