mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
- 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
This commit is contained in:
parent
91276001f2
commit
b734d88389
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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<driver_device>();
|
||||
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)
|
||||
|
@ -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<bsmt2000_device>;
|
||||
//**************************************************************************
|
||||
|
||||
// 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
|
||||
|
||||
|
@ -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<mie_device>;
|
||||
const device_type MIE_JVS = &device_creator<mie_jvs_device>;
|
||||
|
||||
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 )
|
||||
|
Loading…
Reference in New Issue
Block a user