summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2022-01-13 21:36:38 +1100
committer Robbbert <Robbbert@users.noreply.github.com>2022-01-13 21:36:38 +1100
commit5f732f0f43a12d0650e42989d311fa27289b9615 (patch)
treef25d44272e4425c3df02d902ef4d9967d93ed34a /src
parentb5d19bb8a2fbdc65728856aaff44e000a605245c (diff)
st_sam: split off the sam4 roms to a new machine. Preliminary address map added.
New clones marked as NOT_WORKING -------------------------------- Stern SAM IV Test Fixture
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/st_mp200.cpp62
-rw-r--r--src/mame/mame.lst1
2 files changed, 53 insertions, 10 deletions
diff --git a/src/mame/drivers/st_mp200.cpp b/src/mame/drivers/st_mp200.cpp
index 50e5cc09f93..cc5830e8edb 100644
--- a/src/mame/drivers/st_mp200.cpp
+++ b/src/mame/drivers/st_mp200.cpp
@@ -22,11 +22,17 @@ Status:
handle different credit/ball display (shows 17 at boot).
- Speech mostly doesn't work.
+SAM IV tester
+- No schematic or manuals have been found
+- Unknown how to use it
+- Unknown what the PIAs connect to
+- 5x 6-digit displays
+- The LED flashes a few times followed by nothing
+
ToDo:
- Sound - All machines have a B605/C605 sound card containing a 6840 and many other chips
- Sound - Games 126,128-151,165 have a A720 voice synthesizer with a 'CRC' CPU and many other chips
- Dips, Inputs, Solenoids vary per game
-- st_sam: hook up the sam4 roms
*********************************************************************************************/
@@ -74,6 +80,7 @@ public:
void st_mp201(machine_config &config);
void st_mp200(machine_config &config);
+ void st_sam4(machine_config &config);
void init_st_mp200();
void init_st_mp201();
@@ -101,6 +108,7 @@ private:
DECLARE_WRITE_LINE_MEMBER(u11_cb2_w);
void mem_map(address_map &map);
+ void sam4_map(address_map &map);
u8 m_u10a = 0U;
u8 m_u10b = 0U;
@@ -148,6 +156,21 @@ void st_mp200_state::mem_map(address_map &map)
map(0xf800, 0xffff).rom().region("maincpu", 0x5800); // vectors
}
+void st_mp200_state::sam4_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x007f).ram(); // internal to the cpu
+ map(0x0088, 0x008b).rw(m_pia_u10, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).rw(m_pia_u11, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2000, 0x207f).ram();
+ map(0x2104, 0x2107).rw("sam4_pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2108, 0x210b).rw("sam4_pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2110, 0x2113).rw("sam4_pia2", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2120, 0x2123).rw("sam4_pia3", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x2140, 0x2143).rw("sam4_pia4", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x3000, 0x3fff).rom().region("maincpu", 0);
+}
+
static INPUT_PORTS_START( mp200 )
PORT_START("TEST")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("Self Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, st_mp200_state, self_test, 0)
@@ -640,6 +663,20 @@ void st_mp200_state::st_mp201(machine_config &config)
m_s14001a->ext_read().set(FUNC(st_mp200_state::speech_r));
}
+void st_mp200_state::st_sam4(machine_config &config)
+{
+ st_mp200(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &st_mp200_state::sam4_map);
+ config.device_remove("nvram");
+ PIA6821(config, "sam4_pia0", 0);
+ PIA6821(config, "sam4_pia1", 0);
+ PIA6821(config, "sam4_pia2", 0);
+ pia6821_device &pia3(PIA6821(config, "sam4_pia3", 0));
+ pia3.writepa_handler().set_nop();
+ pia3.writepb_handler().set_nop();
+ PIA6821(config, "sam4_pia4", 0);
+}
+
/* ========== ALTERNATE ROMS =======================================================================
This is a list of known alternate roms. Nothing has been tested. They are modified for free play unless otherwise noted.
@@ -1065,20 +1102,24 @@ ROM_START(gamatron)
ROM_END
/*----------------------------------------
-/ Stern SAM III/IV test unit
-/ Ver. III roms working - see the manual
-/ Ver. IV roms not yet hooked up
+/ Stern SAM III Test Fixture
+/ working - see the manual
/----------------------------------------*/
ROM_START(st_sam)
ROM_REGION(0x6000, "maincpu", ROMREGION_ERASEFF)
ROM_LOAD( "sam_iii_rev5.u2", 0x5000, 0x0800, CRC(b9ac5204) SHA1(1ac4e336eb62c091e61e9b6b21a858e70ac9ab38))
ROM_LOAD( "sam_iii_rev5.u6", 0x5800, 0x0800, CRC(e16fbde1) SHA1(f7fe2f2ef9251792af1227f82dcc95239dd8baa1))
+ROM_END
- ROM_REGION(0x1000, "sam4", ROMREGION_ERASEFF) // not hooked up, order not worked out yet
- ROM_LOAD( "sam_iv_r_c5.u1", 0x0000, 0x0400, CRC(5fc44fc9) SHA1(aef3b9dbb0ba1c110b20b8e577168f4c67b6c99d) )
- ROM_LOAD( "sam_iv_r_c5.u3", 0x0400, 0x0400, CRC(121a4db0) SHA1(a6a94fb4e17ca1ebcd009b96de6a3c253c7fb510) )
- ROM_LOAD( "sam_iv_r_c5.u5", 0x0800, 0x0400, CRC(361af770) SHA1(1d9698bf261e4f34c7304569c3b5c6d31edaa16a) )
- ROM_LOAD( "sam_iv_r_c5.u7", 0x0c00, 0x0400, CRC(8766c667) SHA1(d6e6d1927016487f1429d084ec6b1abf54c004c5) )
+/*----------------------------------------
+/ Stern SAM IV Test Fixture
+/----------------------------------------*/
+ROM_START(st_sam4)
+ ROM_REGION(0x1000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD( "sam_iv_r_c5.u1", 0x0c00, 0x0400, CRC(5fc44fc9) SHA1(aef3b9dbb0ba1c110b20b8e577168f4c67b6c99d) )
+ ROM_LOAD( "sam_iv_r_c5.u3", 0x0800, 0x0400, CRC(121a4db0) SHA1(a6a94fb4e17ca1ebcd009b96de6a3c253c7fb510) )
+ ROM_LOAD( "sam_iv_r_c5.u5", 0x0400, 0x0400, CRC(361af770) SHA1(1d9698bf261e4f34c7304569c3b5c6d31edaa16a) )
+ ROM_LOAD( "sam_iv_r_c5.u7", 0x0000, 0x0400, CRC(8766c667) SHA1(d6e6d1927016487f1429d084ec6b1abf54c004c5) )
ROM_END
} // Anonymous namespace
@@ -1114,4 +1155,5 @@ GAME(1984, lazrlord, 0, st_mp200, mp200, st_mp200_state, init_st_m
// other manufacturer
GAME(1985, gamatron, flight2k, st_mp200, mp200, st_mp200_state, init_st_mp200, ROT0, "Pinstar", "Gamatron", MACHINE_IS_SKELETON_MECHANICAL)
-GAME(198?, st_sam, 0, st_mp200, mp200, st_mp200_state, init_st_mp200, ROT0, "Stern", "SAM III/IV test unit", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(198?, st_sam, 0, st_mp200, mp200, st_mp200_state, init_st_mp200, ROT0, "Stern", "SAM III Test Fixture", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(198?, st_sam4, st_sam, st_sam4, mp200, st_mp200_state, init_st_mp200, ROT0, "Stern", "SAM IV Test Fixture", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index b5da7e71cd5..b795e719431 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -39598,6 +39598,7 @@ quicksil //
seawitch //
spltsecp //
st_sam //
+st_sam4 //
stargzr //
viperp //