From b734d88389ad76f0109beec0ff4213ec5ee82f50 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 8 May 2011 18:07:36 +0000 Subject: [PATCH] - Removed difference between handling driver and device address maps - Updated modern macros to propagate device so it is possible to make modern maps for devices too - Updated bsmt2000.c and mie.c as examples of modern address map devices --- src/emu/addrmap.c | 20 ++++++++-------- src/emu/addrmap.h | 49 ++++++++++++++++++++-------------------- src/emu/memory.c | 16 +++---------- src/emu/sound/bsmt2000.c | 19 ++++++++-------- src/mame/machine/mie.c | 40 ++++++++++++++++---------------- 5 files changed, 67 insertions(+), 77 deletions(-) diff --git a/src/emu/addrmap.c b/src/emu/addrmap.c index 12985a49ba7..a55ce994754 100644 --- a/src/emu/addrmap.c +++ b/src/emu/addrmap.c @@ -50,9 +50,7 @@ inline void map_handler_data::set_tag(const device_t &device, const char *tag) { - if (tag == NULL) - m_tag = NULL; - else if (strcmp(tag, DEVICE_SELF) == 0) + if (strcmp(tag, DEVICE_SELF) == 0) m_tag = device.tag(); else if (strcmp(tag, DEVICE_SELF_OWNER) == 0) { @@ -275,7 +273,7 @@ void address_map_entry::internal_set_handler(const device_t &device, const char { assert(!func.isnull()); assert(unitmask_is_appropriate(8, unitmask, func.name())); - m_read.m_type = (tag == NULL) ? AMH_DRIVER_DELEGATE : AMH_DEVICE_DELEGATE; + m_read.m_type = AMH_DEVICE_DELEGATE; m_read.m_bits = 8; m_read.m_mask = unitmask; m_read.m_name = func.name(); @@ -288,7 +286,7 @@ void address_map_entry::internal_set_handler(const device_t &device, const char { assert(!func.isnull()); assert(unitmask_is_appropriate(8, unitmask, func.name())); - m_write.m_type = (tag == NULL) ? AMH_DRIVER_DELEGATE : AMH_DEVICE_DELEGATE;; + m_write.m_type = AMH_DEVICE_DELEGATE; m_write.m_bits = 8; m_write.m_mask = unitmask; m_write.m_name = func.name(); @@ -377,7 +375,7 @@ void address_map_entry::internal_set_handler(const device_t &device, const char { assert(!func.isnull()); assert(unitmask_is_appropriate(16, unitmask, func.name())); - m_read.m_type = (tag == NULL) ? AMH_DRIVER_DELEGATE : AMH_DEVICE_DELEGATE;; + m_read.m_type = AMH_DEVICE_DELEGATE; m_read.m_bits = 16; m_read.m_mask = unitmask; m_read.m_name = func.name(); @@ -390,7 +388,7 @@ void address_map_entry::internal_set_handler(const device_t &device, const char { assert(!func.isnull()); assert(unitmask_is_appropriate(16, unitmask, func.name())); - m_write.m_type = (tag == NULL) ? AMH_DRIVER_DELEGATE : AMH_DEVICE_DELEGATE;; + m_write.m_type = AMH_DEVICE_DELEGATE; m_write.m_bits = 16; m_write.m_mask = unitmask; m_write.m_name = func.name(); @@ -479,7 +477,7 @@ void address_map_entry::internal_set_handler(const device_t &device, const char { assert(!func.isnull()); assert(unitmask_is_appropriate(32, unitmask, func.name())); - m_read.m_type = (tag == NULL) ? AMH_DRIVER_DELEGATE : AMH_DEVICE_DELEGATE;; + m_read.m_type = AMH_DEVICE_DELEGATE; m_read.m_bits = 32; m_read.m_mask = unitmask; m_read.m_name = func.name(); @@ -492,7 +490,7 @@ void address_map_entry::internal_set_handler(const device_t &device, const char { assert(!func.isnull()); assert(unitmask_is_appropriate(32, unitmask, func.name())); - m_write.m_type = (tag == NULL) ? AMH_DRIVER_DELEGATE : AMH_DEVICE_DELEGATE;; + m_write.m_type = AMH_DEVICE_DELEGATE; m_write.m_bits = 32; m_write.m_mask = unitmask; m_write.m_name = func.name(); @@ -581,7 +579,7 @@ void address_map_entry::internal_set_handler(const device_t &device, const char { assert(!func.isnull()); assert(unitmask_is_appropriate(64, unitmask, func.name())); - m_read.m_type = (tag == NULL) ? AMH_DRIVER_DELEGATE : AMH_DEVICE_DELEGATE;; + m_read.m_type = AMH_DEVICE_DELEGATE; m_read.m_bits = 64; m_read.m_mask = 0; m_read.m_name = func.name(); @@ -594,7 +592,7 @@ void address_map_entry::internal_set_handler(const device_t &device, const char { assert(!func.isnull()); assert(unitmask_is_appropriate(64, unitmask, func.name())); - m_write.m_type = (tag == NULL) ? AMH_DRIVER_DELEGATE : AMH_DEVICE_DELEGATE;; + m_write.m_type = AMH_DEVICE_DELEGATE; m_write.m_bits = 64; m_write.m_mask = 0; m_write.m_name = func.name(); diff --git a/src/emu/addrmap.h b/src/emu/addrmap.h index 9f297b61b21..d6b0f80f3c4 100644 --- a/src/emu/addrmap.h +++ b/src/emu/addrmap.h @@ -60,7 +60,6 @@ enum map_handler_type AMH_ROM, AMH_NOP, AMH_UNMAP, - AMH_DRIVER_DELEGATE, AMH_DEVICE_DELEGATE, AMH_LEGACY_SPACE_HANDLER, AMH_LEGACY_DEVICE_HANDLER, @@ -858,86 +857,86 @@ void ADDRESS_MAP_NAME(_name)(address_map &map, const device_t &device) \ // driver data base reads #define AM_READ_BASE(_class, _handler) \ - curentry->set_handler(device, NULL, read_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0)); \ + curentry->set_handler(device, DEVICE_SELF, read_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0)); \ #define AM_READ8_BASE(_class, _handler, _unitmask) \ - curentry->set_handler(device, NULL, read8_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read8_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ #define AM_READ16_BASE(_class, _handler, _unitmask) \ - curentry->set_handler(device, NULL, read16_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read16_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ #define AM_READ32_BASE(_class, _handler, _unitmask) \ - curentry->set_handler(device, NULL, read32_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read32_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ // driver data base writes #define AM_WRITE_BASE(_class, _handler) \ - curentry->set_handler(device, NULL, write_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0)); \ + curentry->set_handler(device, DEVICE_SELF, write_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0)); \ #define AM_WRITE8_BASE(_class, _handler, _unitmask) \ - curentry->set_handler(device, NULL, write8_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, write8_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ #define AM_WRITE16_BASE(_class, _handler, _unitmask) \ - curentry->set_handler(device, NULL, write16_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, write16_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ #define AM_WRITE32_BASE(_class, _handler, _unitmask) \ - curentry->set_handler(device, NULL, write32_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, write32_delegate(&_class::_handler, "driver_data::" #_handler, (_class *)0), _unitmask); \ // driver data base reads/writes #define AM_READWRITE_BASE(_class, _rhandler, _whandler) \ - curentry->set_handler(device, NULL, read_delegate(&_class::_rhandler, "driver_data::" #_rhandler, (_class *)0), write_delegate(&_class::_whandler, "driver_data::" #_whandler, (_class *)0)); \ + curentry->set_handler(device, DEVICE_SELF, read_delegate(&_class::_rhandler, "driver_data::" #_rhandler, (_class *)0), write_delegate(&_class::_whandler, "driver_data::" #_whandler, (_class *)0)); \ #define AM_READWRITE8_BASE(_class, _rhandler, _whandler, _unitmask) \ - curentry->set_handler(device, NULL, read8_delegate(&_class::_rhandler, "driver_data::" #_rhandler, (_class *)0), write8_delegate(&_class::_whandler, "driver_data::" #_whandler, (_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read8_delegate(&_class::_rhandler, "driver_data::" #_rhandler, (_class *)0), write8_delegate(&_class::_whandler, "driver_data::" #_whandler, (_class *)0), _unitmask); \ #define AM_READWRITE16_BASE(_class, _rhandler, _whandler, _unitmask) \ - curentry->set_handler(device, NULL, read16_delegate(&_class::_rhandler, "driver_data::" #_rhandler, (_class *)0), write16_delegate(&_class::_whandler, "driver_data::" #_whandler, (_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read16_delegate(&_class::_rhandler, "driver_data::" #_rhandler, (_class *)0), write16_delegate(&_class::_whandler, "driver_data::" #_whandler, (_class *)0), _unitmask); \ #define AM_READWRITE32_BASE(_class, _rhandler, _whandler, _unitmask) \ - curentry->set_handler(device, NULL, read32_delegate(&_class::_rhandler, "driver_data::" #_rhandler, (_class *)0), write32_delegate(&_class::_whandler, "driver_data::" #_whandler, (_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read32_delegate(&_class::_rhandler, "driver_data::" #_rhandler, (_class *)0), write32_delegate(&_class::_whandler, "driver_data::" #_whandler, (_class *)0), _unitmask); \ // driver data reads #define AM_READ(_handler) \ - curentry->set_handler(device, NULL, read_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0)); \ + curentry->set_handler(device, DEVICE_SELF, read_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0)); \ #define AM_READ8(_handler, _unitmask) \ - curentry->set_handler(device, NULL, read8_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read8_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ #define AM_READ16(_handler, _unitmask) \ - curentry->set_handler(device, NULL, read16_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read16_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ #define AM_READ32(_handler, _unitmask) \ - curentry->set_handler(device, NULL, read32_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read32_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ // driver data writes #define AM_WRITE(_handler) \ - curentry->set_handler(device, NULL, write_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0)); \ + curentry->set_handler(device, DEVICE_SELF, write_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0)); \ #define AM_WRITE8(_handler, _unitmask) \ - curentry->set_handler(device, NULL, write8_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, write8_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ #define AM_WRITE16(_handler, _unitmask) \ - curentry->set_handler(device, NULL, write16_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, write16_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ #define AM_WRITE32(_handler, _unitmask) \ - curentry->set_handler(device, NULL, write32_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, write32_delegate(&drivdata_class::_handler, "driver_data::" #_handler, (drivdata_class *)0), _unitmask); \ // driver data reads/writes #define AM_READWRITE(_rhandler, _whandler) \ - curentry->set_handler(device, NULL, read_delegate(&drivdata_class::_rhandler, "driver_data::" #_rhandler, (drivdata_class *)0), write_delegate(&drivdata_class::_whandler, "driver_data::" #_whandler, (drivdata_class *)0)); \ + curentry->set_handler(device, DEVICE_SELF, read_delegate(&drivdata_class::_rhandler, "driver_data::" #_rhandler, (drivdata_class *)0), write_delegate(&drivdata_class::_whandler, "driver_data::" #_whandler, (drivdata_class *)0)); \ #define AM_READWRITE8(_rhandler, _whandler, _unitmask) \ - curentry->set_handler(device, NULL, read8_delegate(&drivdata_class::_rhandler, "driver_data::" #_rhandler, (drivdata_class *)0), write8_delegate(&drivdata_class::_whandler, "driver_data::" #_whandler, (drivdata_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read8_delegate(&drivdata_class::_rhandler, "driver_data::" #_rhandler, (drivdata_class *)0), write8_delegate(&drivdata_class::_whandler, "driver_data::" #_whandler, (drivdata_class *)0), _unitmask); \ #define AM_READWRITE16(_rhandler, _whandler, _unitmask) \ - curentry->set_handler(device, NULL, read16_delegate(&drivdata_class::_rhandler, "driver_data::" #_rhandler, (drivdata_class *)0), write16_delegate(&drivdata_class::_whandler, "driver_data::" #_whandler, (drivdata_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read16_delegate(&drivdata_class::_rhandler, "driver_data::" #_rhandler, (drivdata_class *)0), write16_delegate(&drivdata_class::_whandler, "driver_data::" #_whandler, (drivdata_class *)0), _unitmask); \ #define AM_READWRITE32(_rhandler, _whandler, _unitmask) \ - curentry->set_handler(device, NULL, read32_delegate(&drivdata_class::_rhandler, "driver_data::" #_rhandler, (drivdata_class *)0), write32_delegate(&drivdata_class::_whandler, "driver_data::" #_whandler, (drivdata_class *)0), _unitmask); \ + curentry->set_handler(device, DEVICE_SELF, read32_delegate(&drivdata_class::_rhandler, "driver_data::" #_rhandler, (drivdata_class *)0), write32_delegate(&drivdata_class::_whandler, "driver_data::" #_whandler, (drivdata_class *)0), _unitmask); \ // device reads diff --git a/src/emu/memory.c b/src/emu/memory.c index 4519745ebfa..ea139da4c8f 100644 --- a/src/emu/memory.c +++ b/src/emu/memory.c @@ -2066,20 +2066,10 @@ void address_space::populate_map_entry(const address_map_entry &entry, read_or_w unmap_generic(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, readorwrite, false); break; - case AMH_DRIVER_DELEGATE: case AMH_DEVICE_DELEGATE: - if (data.m_type == AMH_DRIVER_DELEGATE) - { - object = machine().driver_data(); - if (object == NULL) - throw emu_fatalerror("Attempted to map a driver delegate in space %s of device '%s' when there is no driver data\n", m_name, m_device.tag()); - } - else - { - object = machine().device(data.m_tag); - if (object == NULL) - throw emu_fatalerror("Attempted to map a non-existent device '%s' in space %s of device '%s'\n", data.m_tag, m_name, m_device.tag()); - } + object = machine().device(data.m_tag); + if (object == NULL) + throw emu_fatalerror("Attempted to map a non-existent device '%s' in space %s of device '%s'\n", data.m_tag, m_name, m_device.tag()); if (readorwrite == ROW_READ) switch (data.m_bits) diff --git a/src/emu/sound/bsmt2000.c b/src/emu/sound/bsmt2000.c index 2eb7d4b824c..057bd39a01e 100644 --- a/src/emu/sound/bsmt2000.c +++ b/src/emu/sound/bsmt2000.c @@ -41,6 +41,7 @@ Trivia: BSMT stands for "Brian Schmidt's Mouse Trap" ***************************************************************************/ +#define ADDRESS_MAP_MODERN #include "emu.h" #include "bsmt2000.h" @@ -55,20 +56,20 @@ const device_type BSMT2000 = &device_creator; //************************************************************************** // program map for the DSP (points to internal ROM) -static ADDRESS_MAP_START( tms_program_map, AS_PROGRAM, 16 ) +static ADDRESS_MAP_START( tms_program_map, AS_PROGRAM, 16, bsmt2000_device) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x000, 0xfff) AM_ROM ADDRESS_MAP_END // I/O map for the DSP -static ADDRESS_MAP_START( tms_io_map, AS_IO, 16 ) - AM_RANGE(0, 0) AM_DEVREADWRITE_MODERN(DEVICE_SELF, bsmt2000_device, tms_register_r, tms_rom_addr_w) - AM_RANGE(1, 1) AM_DEVREADWRITE_MODERN(DEVICE_SELF, bsmt2000_device, tms_data_r, tms_rom_bank_w) - AM_RANGE(2, 2) AM_DEVREAD_MODERN(DEVICE_SELF, bsmt2000_device, tms_rom_r) - AM_RANGE(3, 3) AM_DEVWRITE_MODERN(DEVICE_SELF, bsmt2000_device, tms_left_w) - AM_RANGE(7, 7) AM_DEVWRITE_MODERN(DEVICE_SELF, bsmt2000_device, tms_right_w) - AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_DEVREAD_MODERN(DEVICE_SELF, bsmt2000_device, tms_write_pending_r) +static ADDRESS_MAP_START( tms_io_map, AS_IO, 16, bsmt2000_device) + AM_RANGE(0, 0) AM_READWRITE(tms_register_r, tms_rom_addr_w) + AM_RANGE(1, 1) AM_READWRITE(tms_data_r, tms_rom_bank_w) + AM_RANGE(2, 2) AM_READ(tms_rom_r) + AM_RANGE(3, 3) AM_WRITE(tms_left_w) + AM_RANGE(7, 7) AM_WRITE(tms_right_w) + AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(tms_write_pending_r) ADDRESS_MAP_END @@ -83,7 +84,7 @@ MACHINE_CONFIG_END // default address map for the external memory interface // the BSMT can address a full 32 bits but typically only 24 are used -static ADDRESS_MAP_START( bsmt2000, AS_0, 8 ) +static ADDRESS_MAP_START( bsmt2000, AS_0, 8, bsmt2000_device) AM_RANGE(0x00000, 0xffffff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/machine/mie.c b/src/mame/machine/mie.c index f7be77fe016..a20b93587b6 100644 --- a/src/mame/machine/mie.c +++ b/src/mame/machine/mie.c @@ -1,3 +1,5 @@ +#define ADDRESS_MAP_MODERN + #include "emu.h" #include "mie.h" #include "maple-dc.h" @@ -16,30 +18,30 @@ const device_type MIE = &device_creator; const device_type MIE_JVS = &device_creator; -static ADDRESS_MAP_START( mie_map, AS_PROGRAM, 8 ) +static ADDRESS_MAP_START( mie_map, AS_PROGRAM, 8, mie_device) AM_RANGE(0x0000, 0x07ff) AM_ROM - AM_RANGE(0x0800, 0x6fff) AM_DEVREAD_MODERN(DEVICE_SELF, mie_device, read_ff) - AM_RANGE(0x7000, 0x7002) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, control_r, control_w) AM_MIRROR(0x07c0) - AM_RANGE(0x7003, 0x7003) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, lreg_r, lreg_w) AM_MIRROR(0x07c0) - AM_RANGE(0x7004, 0x7023) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, tbuf_r, tbuf_w) AM_MIRROR(0x07c0) - AM_RANGE(0x7024, 0x703f) AM_DEVREAD_MODERN(DEVICE_SELF, mie_device, read_00) AM_MIRROR(0x07c0) - AM_RANGE(0x7800, 0x7fff) AM_DEVREAD_MODERN(DEVICE_SELF, mie_device, read_78xx) + AM_RANGE(0x0800, 0x6fff) AM_READ(read_ff) + AM_RANGE(0x7000, 0x7002) AM_READWRITE(control_r, control_w) AM_MIRROR(0x07c0) + AM_RANGE(0x7003, 0x7003) AM_READWRITE(lreg_r, lreg_w) AM_MIRROR(0x07c0) + AM_RANGE(0x7004, 0x7023) AM_READWRITE(tbuf_r, tbuf_w) AM_MIRROR(0x07c0) + AM_RANGE(0x7024, 0x703f) AM_READ(read_00) AM_MIRROR(0x07c0) + AM_RANGE(0x7800, 0x7fff) AM_READ(read_78xx) AM_RANGE(0x8000, 0xffff) AM_RAM ADDRESS_MAP_END -static ADDRESS_MAP_START( mie_port, AS_IO, 8 ) +static ADDRESS_MAP_START( mie_port, AS_IO, 8, mie_device) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x07) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, gpio_r, gpio_w) - AM_RANGE(0x08, 0x08) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, gpiodir_r, gpiodir_w) - AM_RANGE(0x0f, 0x0f) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, adc_r, adc_w) - AM_RANGE(0x10, 0x10) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, jvs_r, jvs_w) - AM_RANGE(0x12, 0x12) AM_DEVWRITE_MODERN(DEVICE_SELF, mie_device, jvs_dest_w) - AM_RANGE(0x15, 0x15) AM_DEVREAD_MODERN(DEVICE_SELF, mie_device, jvs_status_r) - AM_RANGE(0x30, 0x30) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, irq_enable_r, irq_enable_w) - AM_RANGE(0x50, 0x50) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, maple_irqlevel_r, maple_irqlevel_w) - AM_RANGE(0x70, 0x70) AM_DEVREADWRITE_MODERN(DEVICE_SELF, mie_device, irq_pending_r, irq_pending_w) - AM_RANGE(0x90, 0x90) AM_DEVWRITE_MODERN(DEVICE_SELF, mie_device, jvs_control_w) - AM_RANGE(0x91, 0x91) AM_DEVREAD_MODERN(DEVICE_SELF, mie_device, jvs_sense_r) + AM_RANGE(0x00, 0x07) AM_READWRITE(gpio_r, gpio_w) + AM_RANGE(0x08, 0x08) AM_READWRITE(gpiodir_r, gpiodir_w) + AM_RANGE(0x0f, 0x0f) AM_READWRITE(adc_r, adc_w) + AM_RANGE(0x10, 0x10) AM_READWRITE(jvs_r, jvs_w) + AM_RANGE(0x12, 0x12) AM_WRITE(jvs_dest_w) + AM_RANGE(0x15, 0x15) AM_READ(jvs_status_r) + AM_RANGE(0x30, 0x30) AM_READWRITE(irq_enable_r, irq_enable_w) + AM_RANGE(0x50, 0x50) AM_READWRITE(maple_irqlevel_r, maple_irqlevel_w) + AM_RANGE(0x70, 0x70) AM_READWRITE(irq_pending_r, irq_pending_w) + AM_RANGE(0x90, 0x90) AM_WRITE(jvs_control_w) + AM_RANGE(0x91, 0x91) AM_READ(jvs_sense_r) ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( mie )