summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/mmodular.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mmodular.cpp')
-rw-r--r--src/mame/drivers/mmodular.cpp55
1 files changed, 46 insertions, 9 deletions
diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp
index 25a256d9d92..39cbb14cb4a 100644
--- a/src/mame/drivers/mmodular.cpp
+++ b/src/mame/drivers/mmodular.cpp
@@ -41,6 +41,7 @@
#include "screen.h"
#include "speaker.h"
+#include "mephisto_berlin.lh"
#include "mmodular.lh"
@@ -77,11 +78,13 @@ public:
, m_keys(*this, "KEY")
{ }
+ void berl16(machine_config &config);
void berlinp(machine_config &config);
private:
DECLARE_READ8_MEMBER(berlinp_input_r);
+ void berl16_mem(address_map &map);
void berlinp_mem(address_map &map);
required_device<mephisto_board_device> m_board;
@@ -177,6 +180,18 @@ READ8_MEMBER(berlinp_state::berlinp_input_r)
return m_board->input_r(space, offset) ^ 0xff;
}
+void berlinp_state::berl16_mem(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x800000, 0x87ffff).ram();
+ map(0x900000, 0x907fff).ram().share("nvram");
+ map(0xa00000, 0xa00000).r(FUNC(berlinp_state::berlinp_input_r));
+ map(0xb00000, 0xb00000).w(m_board, FUNC(mephisto_board_device::mux_w));
+ map(0xc00000, 0xc00000).w("display", FUNC(mephisto_display_modul_device::latch_w));
+ map(0xd00008, 0xd00008).w("display", FUNC(mephisto_display_modul_device::io_w));
+ map(0xe00000, 0xe00000).w(m_board, FUNC(mephisto_board_device::led_w));
+}
+
void berlinp_state::berlinp_mem(address_map &map)
{
map(0x000000, 0x03ffff).rom();
@@ -261,8 +276,8 @@ void mmodular_state::alm16(machine_config &config)
maincpu.set_addrmap(AS_PROGRAM, &mmodular_state::alm16_mem);
maincpu.set_periodic_int(FUNC(mmodular_state::irq2_line_hold), attotime::from_hz(600));
- MEPHISTO_SENSORS_BOARD(config, "board", 0);
- MEPHISTO_DISPLAY_MODUL(config, "display", 0);
+ MEPHISTO_SENSORS_BOARD(config, "board");
+ MEPHISTO_DISPLAY_MODUL(config, "display");
config.set_default_layout(layout_mmodular);
}
@@ -282,8 +297,8 @@ void mmodular_state::alm32(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MEPHISTO_SENSORS_BOARD(config, "board", 0);
- MEPHISTO_DISPLAY_MODUL(config, "display", 0);
+ MEPHISTO_SENSORS_BOARD(config, "board");
+ MEPHISTO_DISPLAY_MODUL(config, "display");
config.set_default_layout(layout_mmodular);
}
@@ -303,8 +318,8 @@ void mmodular_state::gen32(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MEPHISTO_SENSORS_BOARD(config, "board", 0);
- MEPHISTO_DISPLAY_MODUL(config, "display", 0);
+ MEPHISTO_SENSORS_BOARD(config, "board");
+ MEPHISTO_DISPLAY_MODUL(config, "display");
config.set_default_layout(layout_mmodular);
}
@@ -317,9 +332,17 @@ void berlinp_state::berlinp(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- MEPHISTO_BUTTONS_BOARD(config, m_board, 0);
- MEPHISTO_DISPLAY_MODUL(config, "display", 0);
- config.set_default_layout(layout_mmodular);
+ MEPHISTO_BUTTONS_BOARD(config, m_board);
+ MEPHISTO_DISPLAY_MODUL(config, "display");
+ config.set_default_layout(layout_mephisto_berlin);
+}
+
+void berlinp_state::berl16(machine_config &config)
+{
+ berlinp(config);
+ m68000_device &maincpu(M68000(config.replace(), "maincpu", XTAL(12'000'000)));
+ maincpu.set_addrmap(AS_PROGRAM, &berlinp_state::berl16_mem);
+ maincpu.set_periodic_int(FUNC(berlinp_state::irq2_line_hold), attotime::from_hz(750));
}
@@ -385,11 +408,23 @@ ROM_START( lyon32 )
ROM_LOAD("lyon32.bin", 0x00000, 0x20000, CRC(5c128b06) SHA1(954c8f0d3fae29900cb1e9c14a41a9a07a8e185f))
ROM_END
+ROM_START( berl16 )
+ ROM_REGION16_BE( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("berlin_68000_even.bin", 0x00000, 0x10000, CRC(31337f15) SHA1(0dcacb153a6f8376e6f1c2f3e57e60aad4370740))
+ ROM_LOAD16_BYTE("berlin_68000_odd.bin", 0x00001, 0x10000, CRC(cc146819) SHA1(e4b2c6e496eff4a657a0718be292f563fb4e5688))
+ROM_END
+
ROM_START( berlinp )
ROM_REGION32_BE( 0x40000, "maincpu", 0 )
ROM_LOAD("berlinp.bin", 0x00000, 0x40000, CRC(82fbaf6e) SHA1(729b7cef3dfaecc4594a6178fc4ba6015afa6202))
ROM_END
+ROM_START( berl16l )
+ ROM_REGION16_BE( 0x20000, "maincpu", 0 )
+ ROM_LOAD16_BYTE("berlin_68000_london_even.bin", 0x00000, 0x10000, CRC(0ccddbc6) SHA1(90effdc9f2811a24d450b74ccfb24995ce896b86))
+ ROM_LOAD16_BYTE("berlin_68000_london_odd.bin", 0x00001, 0x10000, CRC(5edac658) SHA1(18ebebc5ceffd9a01798d8a3709875120bd096f7))
+ROM_END
+
ROM_START( bpl32 )
ROM_REGION32_BE( 0x40000, "maincpu", 0 )
ROM_LOAD("bpl32.bin", 0x00000, 0x40000, CRC(d75e170f) SHA1(ac0ebdaa114abd4fef87361a03df56928768b1ae))
@@ -414,5 +449,7 @@ CONS( 1996, lond020, alm32, 0, van32, alm32, mmodular_state, empty_in
CONS( 1996, lond030, gen32, 0, gen32, gen32, mmodular_state, init_gen32, "Hegener & Glaser", "Mephisto Genius 68030 London Upgrade", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_TIMING | MACHINE_CLICKABLE_ARTWORK )
// not modular boards
+CONS( 1992, berl16, 0, 0, berl16, berlinp, berlinp_state, empty_init, "Hegener & Glaser", "Mephisto Berlin 68000", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_TIMING | MACHINE_CLICKABLE_ARTWORK )
CONS( 1994, berlinp, 0, 0, berlinp, berlinp, berlinp_state, empty_init, "Hegener & Glaser", "Mephisto Berlin Pro 68020", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_TIMING | MACHINE_CLICKABLE_ARTWORK )
+CONS( 1996, berl16l, berl16, 0, berl16, berlinp, berlinp_state, empty_init, "Hegener & Glaser", "Mephisto Berlin 68000 London Upgrade", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_TIMING | MACHINE_CLICKABLE_ARTWORK )
CONS( 1996, bpl32, berlinp, 0, berlinp, berlinp, berlinp_state, empty_init, "Hegener & Glaser", "Mephisto Berlin Pro London Upgrade", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_TIMING | MACHINE_CLICKABLE_ARTWORK )