diff options
Diffstat (limited to 'src/mame/drivers/mephisto_modular.cpp')
-rw-r--r-- | src/mame/drivers/mephisto_modular.cpp | 20 |
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 |