summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/fidel_eag68k.cpp3
-rw-r--r--src/mame/drivers/fidel_phantom.cpp1
-rw-r--r--src/mame/drivers/hh_tms1k.cpp209
-rw-r--r--src/mame/layout/tc7atc.lay383
-rw-r--r--src/mame/mame.lst1
5 files changed, 559 insertions, 38 deletions
diff --git a/src/mame/drivers/fidel_eag68k.cpp b/src/mame/drivers/fidel_eag68k.cpp
index 877039bae78..2726ca94d92 100644
--- a/src/mame/drivers/fidel_eag68k.cpp
+++ b/src/mame/drivers/fidel_eag68k.cpp
@@ -16,6 +16,9 @@ TODO:
- V11 CPU should be M68EC060, not yet emulated. Now using M68EC040 in its place
- V11 beeper is too high pitched, related to wrong CPU type too?
maybe waitstates or clock divider on I/O access.
+- Do the opening book modules work? It detects the rom, but then does nothing
+ with it. Maybe support is limited since the basic CB9/CB16 modules have no use
+ on newer chesscomputers with a large internal opening library.
Currently(May 2020) when compared to the real chesscomputers, to get closer to the
actual speed, overclock V10 and V11 to 230%. This can be done by starting MAME
diff --git a/src/mame/drivers/fidel_phantom.cpp b/src/mame/drivers/fidel_phantom.cpp
index cd1f192df5c..dba7549e32a 100644
--- a/src/mame/drivers/fidel_phantom.cpp
+++ b/src/mame/drivers/fidel_phantom.cpp
@@ -21,7 +21,6 @@ Hardware notes:
Chesster Phantom is on the same base hardware, and adds the Chesster voice to it,
using the same ROM as the original Chesster. Model 6124 extra hardware is on a
daughterboard, the housing is the same as model 6100, except for button labels.
-
Model 6126 has a dedicated PCB, this version also has a motion sensor at the front
and 2 leds to mimick eyes, and the housing color theme is green instead of beige.
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index d0adf27c0c0..59e26917d1e 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -14,6 +14,49 @@ part of a series is (or will be) in its own driver, see:
- tispellb: TI Spelling B series gen. 1
- tispeak: TI Speak & Spell series gen. 1
+About the approximated MCU frequency everywhere: The RC osc. is not that
+stable on most of these handhelds. When comparing multiple video recordings
+of the same game, it shows(and sounds) that the frequency range can differ
+up to 50kHz. This is probably exaggerated due to components getting worn out
+after many decades. TMS1000 RC curve is documented in the data manual, but
+not for newer ones (rev. E or TMS1400 MCUs). TMS0970/0980 osc. is on-die.
+
+ROM source notes when dumped from another publisher, but confident it's the same:
+- arrball: Tandy Zingo
+- bcheetah: Fundimensions Incredible Brain Buggy
+- cmsport: Conic Basketball
+- cnbaskb: Cardinal Electronic Basketball
+- cnfball: Elecsonic Football
+- copycat: Sears Follow Me
+- ditto: Tandy Electronic Pocket Repeat
+- fxmcr165: Tandy Science Fair Microcomputer Trainer
+- ginv1000: Tandy Cosmic 1000 Fire Away
+- gjackpot: Entex Electronic Jackpot: Gin Rummy & Black Jack
+- gpoker: Entex Electronic Poker
+- matchnum: LJN Electronic Concentration
+- palmf31: Toshiba BC-8018B
+- ti1250: Texas Instruments TI-1200
+- ti25503: Texas Instruments TI-1265
+- ti5100: loose 1979 TMS1073NL chip
+
+TODO:
+- Verify output PLA and microinstructions PLA for MCUs that have been dumped
+ electronically (mpla is usually the default, opla is often custom).
+- unknown MCU clocks for some, especially if no YouTube videos are found
+- Fake-press ON button when emulation starts for machines that have it on the
+ button matrix (doesn't look like any relies on it though).
+- t7in1ss: in 2-player mode, game select and skill select can be configured after
+ selecting a game? Possibly BTANB, players are expected to quickly press the
+ "First Up" button after the alarm sound.
+- bship discrete sound, netlist is documented
+- finish bshipb SN76477 sound
+- improve elecbowl driver
+- tithermos temperature sensor comparator (right now just the digital clock works)
+- is alphie(patent) the same as the final version?
+- is starwbcp the same as MP3438? (starwbc is MP3438A)
+
+============================================================================
+
Let's use this driver for a list of known devices and their serials,
excluding most of TI's own products(they normally didn't use "MP" codes).
For TI's calculators, a comprehensive list of MCU serials is available
@@ -59,7 +102,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
@MP1221 TMS1100 1980, Entex Raise The Devil (6011)
@MP1231 TMS1100 1984, Tandy 3 in 1 Sports Arena (model 60-2178)
@MP1296 TMS1100 1982, Entex Black Knight Pinball (6081)
- *MP1311 TMS1100 1981, Bandai TC7: Air Traffic Control
+ @MP1311 TMS1100 1981, Bandai TC7: Air Traffic Control
@MP1312 TMS1100 1983, Gakken FX-Micom R-165/Radio Shack Science Fair Microcomputer Trainer
*MP1359 TMS1100? 1985, Capsela CRC2000
@MP1525 TMS1170 1980, Coleco Head to Head: Electronic Baseball
@@ -145,42 +188,6 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
(* means undumped unless noted, @ denotes it's in this driver)
-============================================================================
-
-ROM source notes when dumped from another publisher, but confident it's the same:
-- arrball: Tandy Zingo
-- bcheetah: Fundimensions Incredible Brain Buggy
-- cmsport: Conic Basketball
-- cnbaskb: Cardinal Electronic Basketball
-- cnfball: Elecsonic Football
-- copycat: Sears Follow Me
-- ditto: Tandy Electronic Pocket Repeat
-- fxmcr165: Tandy Science Fair Microcomputer Trainer
-- ginv1000: Tandy Cosmic 1000 Fire Away
-- gjackpot: Entex Electronic Jackpot: Gin Rummy & Black Jack
-- gpoker: Entex Electronic Poker
-- matchnum: LJN Electronic Concentration
-- palmf31: Toshiba BC-8018B
-- ti1250: Texas Instruments TI-1200
-- ti25503: Texas Instruments TI-1265
-- ti5100: loose 1979 TMS1073NL chip
-
-TODO:
-- verify output PLA and microinstructions PLA for MCUs that have been dumped
- electronically (mpla is usually the default, opla is often custom)
-- unknown MCU clocks for some: TMS1000 RC curve is documented in the data manual,
- but not for newer ones (rev. E or TMS1400 MCUs). TMS0970/0980 osc. is on-die.
-- fake-press ON button when emulation starts for machines that have it on the button matrix
- (doesn't look like any relies on it though)
-- t7in1ss: in 2-player mode, game select and skill select can be configured after selecting a game?
- Possibly BTANB, players are expected to quickly press the "First Up" button after the alarm sound.
-- bship discrete sound, netlist is documented
-- finish bshipb SN76477 sound
-- improve elecbowl driver
-- tithermos temperature sensor comparator (right now just the digital clock works)
-- is alphie(patent) the same as the final version?
-- is starwbcp the same as MP3438? (starwbc is MP3438A)
-
***************************************************************************/
#include "emu.h"
@@ -279,6 +286,7 @@ TODO:
#include "tandy12.lh" // clickable
#include "tbreakup.lh"
#include "tc4.lh"
+#include "tc7atc.lh"
#include "tcfball.lh"
#include "tcfballa.lh"
#include "ti1250.lh"
@@ -974,6 +982,132 @@ ROM_END
/***************************************************************************
+ Bandai TC7: Air Traffic Control
+ * TMS1100 MCU, label MP1311 (die label 1100E, MP1311)
+ * 4-digit 7seg LED display, 40 other LEDs, 1-bit sound
+
+ It is a very complicated game, refer to the manual on how to play.
+
+***************************************************************************/
+
+class tc7atc_state : public hh_tms1k_state
+{
+public:
+ tc7atc_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_tms1k_state(mconfig, type, tag)
+ { }
+
+ void tc7atc(machine_config &config);
+
+private:
+ void update_display();
+ void write_r(u16 data);
+ void write_o(u16 data);
+ u8 read_k();
+};
+
+// handlers
+
+void tc7atc_state::update_display()
+{
+ m_display->matrix(m_r, m_o);
+}
+
+void tc7atc_state::write_r(u16 data)
+{
+ // R5: speaker out
+ m_speaker->level_w(BIT(data, 5));
+
+ // R0-R4: input mux, led select
+ // R6-R9: digit select
+ m_inp_mux = m_r = data;
+ update_display();
+}
+
+void tc7atc_state::write_o(u16 data)
+{
+ // O0-O7: led data
+ m_o = data;
+ update_display();
+}
+
+u8 tc7atc_state::read_k()
+{
+ // K: multiplexed inputs
+ return read_inputs(5);
+}
+
+// config
+
+static INPUT_PORTS_START( tc7atc )
+ PORT_START("IN.0") // R0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("High Score")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("Hazard")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Clear")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter")
+
+ PORT_START("IN.1") // R1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("West")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("East")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("Arrive")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("Depart")
+
+ PORT_START("IN.2") // R2
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("Flight Path A / Level 1")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Flight Path B / Level 2")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Flight Path C / Level 3")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("Flight Path D / Level 4")
+
+ PORT_START("IN.3") // R3
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Altitude Descend")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Altitude Ascend")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Air Speed Decrease")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("Air Speed Increase")
+
+ PORT_START("IN.4") // R4
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_NAME("10%")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_NAME("20%")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_NAME("40%")
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_NAME("80%")
+INPUT_PORTS_END
+
+void tc7atc_state::tc7atc(machine_config &config)
+{
+ // basic machine hardware
+ TMS1100(config, m_maincpu, 350000); // approximation - RC osc. R=68K, C=47pF
+ m_maincpu->k().set(FUNC(tc7atc_state::read_k));
+ m_maincpu->r().set(FUNC(tc7atc_state::write_r));
+ m_maincpu->o().set(FUNC(tc7atc_state::write_o));
+
+ // video hardware
+ PWM_DISPLAY(config, m_display).set_size(10, 8);
+ m_display->set_segmask(0x3c0, 0x7f);
+ config.set_default_layout(layout_tc7atc);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker);
+ m_speaker->add_route(ALL_OUTPUTS, "mono", 0.25);
+}
+
+// roms
+
+ROM_START( tc7atc )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "mp1311", 0x0000, 0x0800, CRC(704f5e1b) SHA1(765dce31798640480eab7576550c5378d6351b65) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1100_common2_micro.pla", 0, 867, CRC(7cc90264) SHA1(c6e1cf1ffb178061da9e31858514f7cd94e86990) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1100_tc7atc_output.pla", 0, 365, CRC(0e6e3096) SHA1(375beb43657af0cc3070e581b42e501878c0eaaa) )
+ROM_END
+
+
+
+
+
+/***************************************************************************
+
Canon Palmtronic F-31, Canon Canola L813, Toshiba BC-8111B, Toshiba BC-8018B,
Triumph-Adler 81 SN, Silver-Reed 8J, more
* TMS1040 MCU label TMS1045NL (die label 1040A, 1045)
@@ -14044,6 +14178,7 @@ CONS( 1980, arrball, 0, 0, arrball, arrball, arrball_state, emp
COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, mathmagi_state, empty_init, "APF Electronics Inc.", "Mathemagician", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
CONS( 1979, bcheetah, 0, 0, bcheetah, bcheetah, bcheetah_state, empty_init, "Bandai", "System Control Car: Cheetah", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_MECHANICAL ) // ***
+CONS( 1981, tc7atc, 0, 0, tc7atc, tc7atc, tc7atc_state, empty_init, "Bandai", "TC7: Air Traffic Control", MACHINE_SUPPORTS_SAVE )
COMP( 1977, palmf31, 0, 0, palmf31, palmf31, palmf31_state, empty_init, "Canon", "Palmtronic F-31", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1977, palmmd8, 0, 0, palmmd8, palmmd8, palmmd8_state, empty_init, "Canon", "Palmtronic MD-8 (Multi 8)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/layout/tc7atc.lay b/src/mame/layout/tc7atc.lay
new file mode 100644
index 00000000000..23cfaf81ce2
--- /dev/null
+++ b/src/mame/layout/tc7atc.lay
@@ -0,0 +1,383 @@
+<?xml version="1.0"?>
+<!--
+license:CC0
+-->
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="white"><rect><color red="1" green="1" blue="1" /></rect></element>
+ <element name="black"><rect><color red="0" green="0" blue="0" /></rect></element>
+ <element name="whitem"><rect><color red="0.8" green="0.8" blue="0.8" /></rect></element>
+ <element name="whited"><disk><color red="1" green="1" blue="1" /></disk></element>
+ <element name="blackd"><disk><color red="0" green="0" blue="0" /></disk></element>
+
+ <element name="blacks"><rect><color red="0" green="0" blue="0" /></rect></element>
+ <element name="whiteds"><disk><color red="1" green="1" blue="1" /></disk></element>
+ <element name="blackds"><disk><color red="0" green="0" blue="0" /></disk></element>
+
+ <element name="text_1"><text string="1"></text></element>
+ <element name="text_2"><text string="2"></text></element>
+ <element name="text_3"><text string="3"></text></element>
+ <element name="text_4"><text string="4"></text></element>
+ <element name="text_5"><text string="5"></text></element>
+ <element name="text_6"><text string="6"></text></element>
+ <element name="text_a"><text string="A"></text></element>
+ <element name="text_b"><text string="B"></text></element>
+ <element name="text_c"><text string="C"></text></element>
+ <element name="text_d"><text string="D"></text></element>
+
+ <element name="text_west"><text string="WEST"></text></element>
+ <element name="text_east"><text string="EAST"></text></element>
+
+ <element name="text_u1"><text string="3000 FT."></text></element>
+ <element name="text_u2"><text string="300 FT."></text></element>
+ <element name="text_u3"><text string="LAND:"></text></element>
+ <element name="text_u4"><text string="0-100'"></text></element>
+
+ <element name="text_d1"><text string="AIR SPEED" align="2"></text></element>
+ <element name="text_d2"><text string="ALTITUDE" align="1"></text></element>
+ <element name="text_d3"><text string="H1:ALT.OVER 3000'" align="1"></text></element>
+ <element name="text_d4"><text string="H2:ALT.UNDER 300'" align="1"></text></element>
+ <element name="text_d5"><text string="H3:SPEED UNDER 140mph" align="1"></text></element>
+ <element name="text_d6"><text string="MAX SPEED:450" align="1"></text></element>
+ <element name="text_d7"><text string="MIN SPEED:100" align="1"></text></element>
+
+ <element name="rled" defstate="0">
+ <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
+ <disk state="0"><color red="0.13" green="0.013" blue="0.02" /></disk>
+ </element>
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
+ </element>
+
+ <!-- 6 rings -->
+ <element name="disks1">
+ <disk><bounds x="0" y="0" width="144" height="144" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="0.75" y="0.75" width="142.5" height="142.5" /><color red="0" green="0" blue="0" /></disk>
+
+ <disk><bounds x="12" y="12" width="120" height="120" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="12.75" y="12.75" width="118.5" height="118.5" /><color red="0" green="0" blue="0" /></disk>
+
+ <disk><bounds x="24" y="24" width="96" height="96" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="24.75" y="24.75" width="94.5" height="94.5" /><color red="0" green="0" blue="0" /></disk>
+
+ <disk><bounds x="36" y="36" width="72" height="72" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="36.75" y="36.75" width="70.5" height="70.5" /><color red="0" green="0" blue="0" /></disk>
+
+ <disk><bounds x="48" y="48" width="48" height="48" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="48.75" y="48.75" width="46.5" height="46.5" /><color red="0" green="0" blue="0" /></disk>
+
+ <disk><bounds x="60" y="60" width="24" height="24" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="60.75" y="60.75" width="22.5" height="22.5" /><color red="0" green="0" blue="0" /></disk>
+ </element>
+
+ <!-- 4 intersecting rings -->
+ <element name="disks2">
+ <rect><bounds x="-8" y="-110" width="160" height="364" /><color red="0" green="0" blue="0" /></rect>
+
+ <disk><bounds x="-8" y="-22" width="160" height="96" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="-7.25" y="-21.25" width="158.5" height="94.5" /><color red="0" green="0" blue="0" /></disk>
+
+ <disk><bounds x="15" y="-110" width="114" height="190" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="15.75" y="-109.25" width="112.5" height="188.5" /><color red="0" green="0" blue="0" /></disk>
+
+ <disk><bounds x="-8" y="70" width="160" height="96" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="-7.25" y="70.75" width="158.5" height="94.5" /><color red="0" green="0" blue="0" /></disk>
+
+ <disk><bounds x="15" y="64" width="114" height="190" /><color red="1" green="1" blue="1" /></disk>
+ <disk><bounds x="15.75" y="64.75" width="112.5" height="188.5" /><color red="0" green="0" blue="0" /></disk>
+ </element>
+
+ <!-- star shape leds -->
+ <element name="slmask">
+ <rect><bounds x="0" y="0" width="3.3" height="3.3" /><color alpha="0" /></rect>
+ <disk><bounds x="0.8" y="0.8" width="1.7" height="1.7" /><color red="0" green="0" blue="0" /></disk>
+ </element>
+
+ <element name="sled0" defstate="0">
+ <rect><bounds x="0" y="0" width="3.3" height="3.3" /><color alpha="0" /></rect>
+ <disk state="1">
+ <bounds x="1" y="1" width="1.3" height="1.3" />
+ <color red="1.0" green="0.1" blue="0.15" />
+ </disk>
+ <disk state="0">
+ <bounds x="1" y="1" width="1.3" height="1.3" />
+ <color red="0.13" green="0.013" blue="0.02" />
+ </disk>
+ <disk><bounds x="1.707106" y="0.292893" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="1.707106" y="1.707106" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="0.292893" y="1.707106" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="0.292893" y="0.292893" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ </element>
+
+ <element name="sled15" defstate="0">
+ <rect><bounds x="0" y="0" width="3.3" height="3.3" /><color alpha="0" /></rect>
+ <disk state="1">
+ <bounds x="1" y="1" width="1.3" height="1.3" />
+ <color red="1.0" green="0.1" blue="0.15" />
+ </disk>
+ <disk state="0">
+ <bounds x="1" y="1" width="1.3" height="1.3" />
+ <color red="0.13" green="0.013" blue="0.02" />
+ </disk>
+ <disk><bounds x="1.866025" y="0.500000" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="1.500000" y="1.866025" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="0.133974" y="1.500000" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="0.500000" y="0.133974" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ </element>
+
+ <element name="sled30" defstate="0">
+ <rect><bounds x="0" y="0" width="3.3" height="3.3" /><color alpha="0" /></rect>
+ <disk state="1">
+ <bounds x="1" y="1" width="1.3" height="1.3" />
+ <color red="1.0" green="0.1" blue="0.15" />
+ </disk>
+ <disk state="0">
+ <bounds x="1" y="1" width="1.3" height="1.3" />
+ <color red="0.13" green="0.013" blue="0.02" />
+ </disk>
+ <disk><bounds x="1.965925" y="0.741180" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="1.258819" y="1.965925" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="0.034074" y="1.258819" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="0.741180" y="0.034074" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ </element>
+
+ <element name="sled45" defstate="0">
+ <rect><bounds x="0" y="0" width="3.3" height="3.3" /><color alpha="0" /></rect>
+ <disk state="1">
+ <bounds x="1" y="1" width="1.3" height="1.3" />
+ <color red="1.0" green="0.1" blue="0.15" />
+ </disk>
+ <disk state="0">
+ <bounds x="1" y="1" width="1.3" height="1.3" />
+ <color red="0.13" green="0.013" blue="0.02" />
+ </disk>
+ <disk><bounds x="1" y="0" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="2" y="1" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="1" y="2" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ <disk><bounds x="0" y="1" width="1.3" height="1.3" /><color red="0" green="0" blue="0" /></disk>
+ </element>
+
+
+<!-- 7seg display -->
+
+ <group name="digits">
+ <element name="digit9" ref="digit"><bounds x="0" y="0" width="1" height="1" /></element>
+ <element name="digit8" ref="digit"><bounds x="1" y="0" width="1" height="1" /></element>
+ <element name="digit7" ref="digit"><bounds x="2" y="0" width="1" height="1" /></element>
+ <element name="digit6" ref="digit"><bounds x="3" y="0" width="1" height="1" /></element>
+ </group>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="-5" right="149" top="-5" bottom="144" />
+
+ <!-- bezel base -->
+ <element ref="whited"><bounds x="1" y="1" width="142" height="142" /></element>
+
+ <repeat count="19">
+ <param name="p1" start="2" increment="2.5" />
+ <param name="p2" start="2.75" increment="2.5" />
+ <param name="d1" start="140" increment="-5" />
+ <param name="d2" start="138.5" increment="-5" />
+
+ <element ref="blackds"><bounds x="~p1~" y="~p1~" width="~d1~" height="~d1~" /></element>
+ <element ref="whiteds"><bounds x="~p2~" y="~p2~" width="~d2~" height="~d2~" /></element>
+ </repeat>
+
+ <element ref="blackd"><bounds x="48" y="48" width="48" height="48" /></element>
+
+ <element ref="disks2" blend="multiply"><bounds x="-8" y="-110" width="160" height="364" /></element>
+
+ <element ref="white"><bounds x="48" y="71.625" width="48" height="0.75" /></element>
+
+ <repeat count="18">
+ <param name="p" start="50.325" increment="2.5" />
+ <element ref="blacks"><bounds x="~p~" y="70" width="0.75" height="4" /></element>
+ </repeat>
+
+ <element ref="white"><bounds x="60" y="71.625" width="24" height="0.75" /></element>
+
+ <element ref="white"><bounds x="64.5" y="67" width="15" height="10" /></element>
+ <element ref="black"><bounds x="65.25" y="67.75" width="13.5" height="8.5" /></element>
+
+
+ <element ref="disks1" blend="add"><bounds x="0" y="0" width="144" height="144" /></element>
+
+ <!-- bezel text -->
+ <element ref="text_west"><bounds x="4" y="11" width="20" height="5.5" /></element>
+ <element ref="text_east"><bounds x="120" y="11" width="20" height="5.5" /></element>
+
+ <element ref="text_a"><bounds x="9" y="18.5" width="10" height="5.5" /></element>
+ <element ref="text_a"><bounds x="125" y="18.5" width="10" height="5.5" /></element>
+
+ <element ref="text_b"><bounds x="-4" y="42.5" width="10" height="5.5" /></element>
+ <element ref="text_b"><bounds x="138" y="42.5" width="10" height="5.5" /></element>
+
+ <element ref="text_c"><bounds x="-4" y="95.75" width="10" height="5.5" /></element>
+ <element ref="text_c"><bounds x="138" y="95.75" width="10" height="5.5" /></element>
+
+ <element ref="text_d"><bounds x="9" y="119.5" width="10" height="5.5" /></element>
+ <element ref="text_d"><bounds x="125" y="119.5" width="10" height="5.5" /></element>
+
+ <element ref="black"><bounds x="68" y="-1" width="8" height="65" /></element>
+
+ <element ref="text_6"><bounds x="62" y="-5.5" width="20" height="11" /></element>
+ <element ref="text_5"><bounds x="62" y="6.5" width="20" height="11" /></element>
+ <element ref="text_4"><bounds x="62" y="18.5" width="20" height="11" /></element>
+ <element ref="text_3"><bounds x="62" y="30.5" width="20" height="11" /></element>
+ <element ref="text_2"><bounds x="62" y="42.5" width="20" height="11" /></element>
+ <element ref="text_1"><bounds x="62" y="54.5" width="20" height="11" /></element>
+
+ <element ref="text_u1"><bounds x="62" y="4.75" width="20" height="3" /></element>
+ <element ref="text_u2"><bounds x="62" y="52.75" width="20" height="3" /></element>
+ <element ref="text_u3"><bounds x="62" y="63.75" width="20" height="3" /></element>
+ <element ref="text_u4"><bounds x="62" y="77.25" width="20" height="3" /></element>
+
+ <element ref="black"><bounds x="54" y="110" width="36" height="50" /></element>
+ <element ref="black"><bounds x="26" y="112" width="92" height="5.5" /></element>
+
+ <element ref="text_d1"><bounds x="14" y="112" width="40" height="5.5" /></element>
+ <element ref="text_d2"><bounds x="91" y="112" width="40" height="5.5" /></element>
+
+ <element ref="text_d3"><bounds x="55" y="125" width="40" height="3" /></element>
+ <element ref="text_d4"><bounds x="55" y="128" width="40" height="3" /></element>
+ <element ref="text_d5"><bounds x="55" y="131" width="40" height="3" /></element>
+
+ <element ref="text_d6"><bounds x="-0.5" y="131" width="40" height="3" /></element>
+ <element ref="text_d7"><bounds x="-0.5" y="134" width="40" height="3" /></element>
+
+ <element ref="whitem" blend="multiply"><bounds x="-10" y="-10" width="164" height="164" /></element>
+
+ <!-- leds bottom -->
+ <group ref="digits"><bounds x="54.5" y="112" width="35" height="12" /></group>
+
+ <element name="4.7" ref="rled"><bounds x="46.5" y="120" width="4" height="4" /></element>
+ <element name="4.3" ref="rled"><bounds x="93.5" y="120" width="4" height="4" /></element>
+
+ <!-- leds middle -->
+ <element ref="slmask"><bounds x="43" y="66.5" width="11" height="11" /></element>
+ <element name="4.2" ref="sled0" blend="add"><bounds x="43" y="66.5" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="55" y="66.5" width="11" height="11" /></element>
+ <element name="4.1" ref="sled0" blend="add"><bounds x="55" y="66.5" width="11" height="11" /></element>
+
+ <element name="4.0" ref="sled0" blend="add"><bounds x="63.333" y="66.5" width="11" height="11" /></element>
+ <element name="4.4" ref="sled0" blend="add"><bounds x="69.666" y="66.5" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="78" y="66.5" width="11" height="11" /></element>
+ <element name="4.5" ref="sled0" blend="add"><bounds x="78" y="66.5" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="90" y="66.5" width="11" height="11" /></element>
+ <element name="4.6" ref="sled0" blend="add"><bounds x="90" y="66.5" width="11" height="11" /></element>
+
+ <!-- leds west a -->
+ <element ref="slmask"><bounds x="14.75" y="17" width="11" height="11" /></element>
+ <element name="0.3" ref="sled0" blend="add"><bounds x="14.75" y="17" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="19" y="30.75" width="11" height="11" /></element>
+ <element name="0.2" ref="sled15" blend="add"><bounds x="19" y="30.75" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <element ref="slmask"><bounds x="25" y="43.5" width="11" height="11" /></element>
+ <element name="0.1" ref="sled30" blend="add"><bounds x="25" y="43.5" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <element ref="slmask"><bounds x="32.75" y="55.5" width="11" height="11" /></element>
+ <element name="0.0" ref="sled45" blend="add"><bounds x="32.75" y="55.5" width="11" height="11" /></element>
+
+ <!-- leds west b -->
+ <element ref="slmask"><bounds x="-1.75" y="45.25" width="11" height="11" /></element>
+ <element name="1.3" ref="sled45" blend="add"><bounds x="-1.75" y="45.25" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="8.5" y="53" width="11" height="11" /></element>
+ <element name="1.2" ref="sled30" blend="add"><bounds x="8.5" y="53" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="19.5" y="59" width="11" height="11" /></element>
+ <element name="1.1" ref="sled15" blend="add"><bounds x="19.5" y="59" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="31" y="63" width="11" height="11" /></element>
+ <element name="1.0" ref="sled15" blend="add"><bounds x="31" y="63" width="11" height="11" /></element>
+
+ <!-- leds west c -->
+ <element ref="slmask"><bounds x="-1.75" y="87.75" width="11" height="11" /></element>
+ <element name="2.3" ref="sled45" blend="add"><bounds x="-1.75" y="87.75" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="8.5" y="80" width="11" height="11" /></element>
+ <element name="2.2" ref="sled30" blend="add"><bounds x="8.5" y="80" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <element ref="slmask"><bounds x="19.5" y="74" width="11" height="11" /></element>
+ <element name="2.1" ref="sled15" blend="add"><bounds x="19.5" y="74" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <element ref="slmask"><bounds x="31" y="70" width="11" height="11" /></element>
+ <element name="2.0" ref="sled15" blend="add"><bounds x="31" y="70" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <!-- leds west d -->
+ <element ref="slmask"><bounds x="14.75" y="116" width="11" height="11" /></element>
+ <element name="3.3" ref="sled0" blend="add"><bounds x="14.75" y="116" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="19" y="102.25" width="11" height="11" /></element>
+ <element name="3.2" ref="sled15" blend="add"><bounds x="19" y="102.25" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="25" y="89.5" width="11" height="11" /></element>
+ <element name="3.1" ref="sled30" blend="add"><bounds x="25" y="89.5" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="32.75" y="77.5" width="11" height="11" /></element>
+ <element name="3.0" ref="sled45" blend="add"><bounds x="32.75" y="77.5" width="11" height="11" /></element>
+
+ <!-- leds east a -->
+ <element ref="slmask"><bounds x="118.25" y="17" width="11" height="11" /></element>
+ <element name="0.7" ref="sled0" blend="add"><bounds x="118.25" y="17" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="114" y="30.75" width="11" height="11" /></element>
+ <element name="0.6" ref="sled15" blend="add"><bounds x="114" y="30.75" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="108" y="43.5" width="11" height="11" /></element>
+ <element name="0.5" ref="sled30" blend="add"><bounds x="108" y="43.5" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="100.25" y="55.5" width="11" height="11" /></element>
+ <element name="0.4" ref="sled45" blend="add"><bounds x="100.25" y="55.5" width="11" height="11" /></element>
+
+ <!-- leds east b -->
+ <element ref="slmask"><bounds x="134.75" y="45.25" width="11" height="11" /></element>
+ <element name="1.7" ref="sled45" blend="add"><bounds x="134.75" y="45.25" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="124.5" y="53" width="11" height="11" /></element>
+ <element name="1.6" ref="sled30" blend="add"><bounds x="124.5" y="53" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <element ref="slmask"><bounds x="113.5" y="59" width="11" height="11" /></element>
+ <element name="1.5" ref="sled15" blend="add"><bounds x="113.5" y="59" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <element ref="slmask"><bounds x="102" y="63" width="11" height="11" /></element>
+ <element name="1.4" ref="sled15" blend="add"><bounds x="102" y="63" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <!-- leds east c -->
+ <element ref="slmask"><bounds x="134.75" y="87.75" width="11" height="11" /></element>
+ <element name="2.7" ref="sled45" blend="add"><bounds x="134.75" y="87.75" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="124.5" y="80" width="11" height="11" /></element>
+ <element name="2.6" ref="sled30" blend="add"><bounds x="124.5" y="80" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="113.5" y="74" width="11" height="11" /></element>
+ <element name="2.5" ref="sled15" blend="add"><bounds x="113.5" y="74" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="102" y="70" width="11" height="11" /></element>
+ <element name="2.4" ref="sled15" blend="add"><bounds x="102" y="70" width="11" height="11" /></element>
+
+ <!-- leds east d -->
+ <element ref="slmask"><bounds x="118.25" y="116" width="11" height="11" /></element>
+ <element name="3.7" ref="sled0" blend="add"><bounds x="118.25" y="116" width="11" height="11" /></element>
+
+ <element ref="slmask"><bounds x="114" y="102.25" width="11" height="11" /></element>
+ <element name="3.6" ref="sled15" blend="add"><bounds x="114" y="102.25" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <element ref="slmask"><bounds x="108" y="89.5" width="11" height="11" /></element>
+ <element name="3.5" ref="sled30" blend="add"><bounds x="108" y="89.5" width="11" height="11" /><orientation flipx="yes" /></element>
+
+ <element ref="slmask"><bounds x="100.25" y="77.5" width="11" height="11" /></element>
+ <element name="3.4" ref="sled45" blend="add"><bounds x="100.25" y="77.5" width="11" height="11" /></element>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 967f4363c77..e2218bc6fc3 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -16763,6 +16763,7 @@ t7in1ss // Tiger Electronics
tandy12 // Tandy Corporation
tbreakup // Tomy
tc4 // Coleco
+tc7atc // Bandai
tcfball // Tandy Corporation
tcfballa // Tandy Corporation
ti1000 // Texas Instruments