summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/mephisto_modular.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mephisto_modular.cpp')
-rw-r--r--src/mame/drivers/mephisto_modular.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/mame/drivers/mephisto_modular.cpp b/src/mame/drivers/mephisto_modular.cpp
index 6ae4c9bcdf0..ea144516740 100644
--- a/src/mame/drivers/mephisto_modular.cpp
+++ b/src/mame/drivers/mephisto_modular.cpp
@@ -84,7 +84,6 @@ Reminder: unsupported on Almeria and Portorose 1.01, this is not a bug.
#include "emu.h"
#include "cpu/m68000/m68000.h"
-#include "machine/bankdev.h"
#include "machine/nvram.h"
#include "machine/timer.h"
#include "machine/mmboard.h"
@@ -104,6 +103,7 @@ public:
mmodular_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ m_nvram(*this, "nvram", 0x2000, ENDIANNESS_BIG),
m_board(*this, "board"),
m_bav_busy(*this, "bav_busy"),
m_fake(*this, "FAKE")
@@ -127,6 +127,7 @@ protected:
private:
// devices/pointers
required_device<cpu_device> m_maincpu;
+ memory_share_creator<u8> m_nvram;
required_device<mephisto_board_device> m_board;
required_device<timer_device> m_bav_busy;
optional_ioport m_fake;
@@ -139,13 +140,15 @@ private:
void van16_mem(address_map &map);
void van32_mem(address_map &map);
void gen32_mem(address_map &map);
- void nvram_map(address_map &map);
// I/O handlers
void bavaria_w(u8 data);
u8 bavaria1_r();
u8 bavaria2_r();
+ u8 nvram_r(offs_t offset) { return m_nvram[offset]; }
+ void nvram_w(offs_t offset, u8 data) { m_nvram[offset] = data; }
+
u8 spawn_cb(offs_t offset);
void set_sbtype(ioport_value newval);
@@ -234,17 +237,11 @@ u8 mmodular_state::bavaria2_r()
Address Maps
******************************************************************************/
-void mmodular_state::nvram_map(address_map &map)
-{
- // nvram is 8-bit (8KB)
- map(0x0000, 0x1fff).ram().share("nvram");
-}
-
void mmodular_state::alm16_mem(address_map &map)
{
map(0x000000, 0x01ffff).rom();
map(0x400000, 0x47ffff).ram();
- map(0x800000, 0x803fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask16(0xff00);
+ map(0x800000, 0x803fff).rw(FUNC(mmodular_state::nvram_r), FUNC(mmodular_state::nvram_w)).umask16(0xff00);
map(0xc00000, 0xc00000).r("board", FUNC(mephisto_board_device::input_r)); // 0xff on Bavaria
map(0xc80000, 0xc80000).w("board", FUNC(mephisto_board_device::mux_w));
map(0xd00000, 0xd00000).w("board", FUNC(mephisto_board_device::led_w));
@@ -285,7 +282,7 @@ void mmodular_state::alm32_mem(address_map &map)
map(0x90000000, 0x90000007).w("board", FUNC(mephisto_board_device::led_w)).umask32(0xff000000);
map(0xa0000000, 0xa0000000).w("display", FUNC(mephisto_display2_device::latch_w));
map(0xa0000010, 0xa0000010).w("display", FUNC(mephisto_display2_device::io_w));
- map(0xa8000000, 0xa8007fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000);
+ map(0xa8000000, 0xa8007fff).rw(FUNC(mmodular_state::nvram_r), FUNC(mmodular_state::nvram_w)).umask32(0xff000000);
}
void mmodular_state::port32_mem(address_map &map)
@@ -320,7 +317,7 @@ void mmodular_state::gen32_mem(address_map &map)
map(0xd800000c, 0xd800000c).r(FUNC(mmodular_state::bavaria2_r));
map(0xe0000000, 0xe0000000).w("display", FUNC(mephisto_display2_device::latch_w));
map(0xe0000010, 0xe0000010).w("display", FUNC(mephisto_display2_device::io_w));
- map(0xe8000000, 0xe8007fff).m("nvram_map", FUNC(address_map_bank_device::amap8)).umask32(0xff000000);
+ map(0xe8000000, 0xe8007fff).rw(FUNC(mmodular_state::nvram_r), FUNC(mmodular_state::nvram_w)).umask32(0xff000000);
map(0xf0000004, 0xf0000007).portr("KEY1");
map(0xf0000008, 0xf000000b).portr("KEY2");
map(0xf0000010, 0xf0000013).portr("KEY3");
@@ -407,7 +404,6 @@ void mmodular_state::alm16(machine_config &config)
m_maincpu->set_periodic_int(FUNC(mmodular_state::irq2_line_hold), attotime::from_hz(600));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- ADDRESS_MAP_BANK(config, "nvram_map").set_map(&mmodular_state::nvram_map).set_options(ENDIANNESS_BIG, 8, 13);
MEPHISTO_SENSORS_BOARD(config, m_board);
subdevice<sensorboard_device>("board:board")->set_spawnpoints(12+2); // 2 jokers