summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/addrmap.h
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2012-04-01 12:57:59 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2012-04-01 12:57:59 +0000
commit4cb1c788de2cb7e926b109643555cb5b76559125 (patch)
tree46227569b47e4f4bc9890aedc2f53e77ef0b6699 /src/emu/addrmap.h
parent03b3d148c47ae3c7595300693fe9293c9d29f270 (diff)
MAME going modern part 2 (no whatsnew)
Diffstat (limited to 'src/emu/addrmap.h')
-rw-r--r--src/emu/addrmap.h313
1 files changed, 7 insertions, 306 deletions
diff --git a/src/emu/addrmap.h b/src/emu/addrmap.h
index 34c4769a35c..fd639f745e8 100644
--- a/src/emu/addrmap.h
+++ b/src/emu/addrmap.h
@@ -445,312 +445,9 @@ public:
// ADDRESS MAP MACROS
//**************************************************************************
-//
-// There are two versions of the macros below
-//
-// By default, the legacy forms are enabled; however, if ADDRESS_MAP_MODERN is #defined
-// prior to including this file, the new format are enabled instead.
-//
-
// so that "0" can be used for unneeded address maps
#define construct_address_map_0 NULL
-
-#ifndef ADDRESS_MAP_MODERN
-
-//
-// Legacy ADDRESS_MAPs
-//
-
-// start/end tags for the address map
-#define ADDRESS_MAP_NAME(_name) construct_address_map_##_name
-
-#define ADDRESS_MAP_START(_name, _space, _bits, _class) \
-ATTR_COLD void ADDRESS_MAP_NAME(_name)(address_map &map, const device_t &device) \
-{ \
- typedef read##_bits##_delegate read_delegate; \
- typedef write##_bits##_delegate write_delegate; \
- address_map_entry##_bits *curentry = NULL; \
- (void)curentry; \
- map.configure(_space, _bits); \
- typedef _class drivdata_class; \
-
-#define ADDRESS_MAP_END \
-}
-
-// use this to declare external references to an address map
-#define ADDRESS_MAP_EXTERN(_name, _bits) \
- extern void ADDRESS_MAP_NAME(_name)(address_map &map, const device_t &device)
-
-// use this to declare an address map as a member of a modern device class
-#define DECLARE_ADDRESS_MAP(_name, _bits) \
- void _name(address_map &map, const device_t &device)
-
-
-// global controls
-#define ADDRESS_MAP_GLOBAL_MASK(_mask) \
- map.set_global_mask(_mask); \
-
-#define ADDRESS_MAP_UNMAP_LOW \
- map.set_unmap_value(0); \
-
-#define ADDRESS_MAP_UNMAP_HIGH \
- map.set_unmap_value(~0); \
-
-
-// importing data from other address maps
-#define AM_IMPORT_FROM(_name) \
- ADDRESS_MAP_NAME(_name)(map, device); \
-
-
-// address ranges
-#define AM_RANGE(_start, _end) \
- curentry = map.add(_start, _end, curentry); \
-
-#define AM_MASK(_mask) \
- curentry->set_mask(_mask); \
-
-#define AM_MIRROR(_mirror) \
- curentry->set_mirror(_mirror); \
-
-
-// legacy space reads
-#define AM_READ(_handler) \
- curentry->set_handler(_handler, #_handler); \
-
-#define AM_READ8(_handler, _unitmask) \
- curentry->set_handler(_handler, #_handler, _unitmask); \
-
-#define AM_READ16(_handler, _unitmask) \
- curentry->set_handler(_handler, #_handler, _unitmask); \
-
-#define AM_READ32(_handler, _unitmask) \
- curentry->set_handler(_handler, #_handler, _unitmask); \
-
-
-// legacy space writes
-#define AM_WRITE(_handler) \
- curentry->set_handler(_handler, #_handler); \
-
-#define AM_WRITE8(_handler, _unitmask) \
- curentry->set_handler(_handler, #_handler, _unitmask); \
-
-#define AM_WRITE16(_handler, _unitmask) \
- curentry->set_handler(_handler, #_handler, _unitmask); \
-
-#define AM_WRITE32(_handler, _unitmask) \
- curentry->set_handler(_handler, #_handler, _unitmask); \
-
-
-// legacy space reads/writes
-#define AM_READWRITE(_rhandler, _whandler) \
- curentry->set_handler(_rhandler, #_rhandler, _whandler, #_whandler); \
-
-#define AM_READWRITE8(_rhandler, _whandler, _unitmask) \
- curentry->set_handler(_rhandler, #_rhandler, _whandler, #_whandler, _unitmask); \
-
-#define AM_READWRITE16(_rhandler, _whandler, _unitmask) \
- curentry->set_handler(_rhandler, #_rhandler, _whandler, #_whandler, _unitmask); \
-
-#define AM_READWRITE32(_rhandler, _whandler, _unitmask) \
- curentry->set_handler(_rhandler, #_rhandler, _whandler, #_whandler, _unitmask); \
-
-
-// legacy device reads
-#define AM_DEVREAD(_tag, _handler) \
- curentry->set_handler(device, _tag, _handler, #_handler); \
-
-#define AM_DEVREAD8(_tag, _handler, _unitmask) \
- curentry->set_handler(device, _tag, _handler, #_handler, _unitmask); \
-
-#define AM_DEVREAD16(_tag, _handler, _unitmask) \
- curentry->set_handler(device, _tag, _handler, #_handler, _unitmask); \
-
-#define AM_DEVREAD32(_tag, _handler, _unitmask) \
- curentry->set_handler(device, _tag, _handler, #_handler, _unitmask); \
-
-
-// legacy device writes
-#define AM_DEVWRITE(_tag, _handler) \
- curentry->set_handler(device, _tag, _handler, #_handler); \
-
-#define AM_DEVWRITE8(_tag, _handler, _unitmask) \
- curentry->set_handler(device, _tag, _handler, #_handler, _unitmask); \
-
-#define AM_DEVWRITE16(_tag, _handler, _unitmask) \
- curentry->set_handler(device, _tag, _handler, #_handler, _unitmask); \
-
-#define AM_DEVWRITE32(_tag, _handler, _unitmask) \
- curentry->set_handler(device, _tag, _handler, #_handler, _unitmask); \
-
-
-// legacy device reads/writes
-#define AM_DEVREADWRITE(_tag, _rhandler, _whandler) \
- curentry->set_handler(device, _tag, _rhandler, #_rhandler, _whandler, #_whandler); \
-
-#define AM_DEVREADWRITE8(_tag, _rhandler, _whandler, _unitmask) \
- curentry->set_handler(device, _tag, _rhandler, #_rhandler, _whandler, #_whandler, _unitmask); \
-
-#define AM_DEVREADWRITE16(_tag, _rhandler, _whandler, _unitmask) \
- curentry->set_handler(device, _tag, _rhandler, #_rhandler, _whandler, #_whandler, _unitmask); \
-
-#define AM_DEVREADWRITE32(_tag, _rhandler, _whandler, _unitmask) \
- curentry->set_handler(device, _tag, _rhandler, #_rhandler, _whandler, #_whandler, _unitmask); \
-
-
-// device reads
-#define AM_DEVREAD_MODERN(_tag, _class, _handler) \
- curentry->set_handler(device, _tag, read_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0)); \
-
-#define AM_DEVREAD8_MODERN(_tag, _class, _handler, _unitmask) \
- curentry->set_handler(device, _tag, read8_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), _unitmask); \
-
-#define AM_DEVREAD16_MODERN(_tag, _class, _handler, _unitmask) \
- curentry->set_handler(device, _tag, read16_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), _unitmask); \
-
-#define AM_DEVREAD32_MODERN(_tag, _class, _handler, _unitmask) \
- curentry->set_handler(device, _tag, read32_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), _unitmask); \
-
-
-// device writes
-#define AM_DEVWRITE_MODERN(_tag, _class, _handler) \
- curentry->set_handler(device, _tag, write_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0)); \
-
-#define AM_DEVWRITE8_MODERN(_tag, _class, _handler, _unitmask) \
- curentry->set_handler(device, _tag, write8_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), _unitmask); \
-
-#define AM_DEVWRITE16_MODERN(_tag, _class, _handler, _unitmask) \
- curentry->set_handler(device, _tag, write16_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), _unitmask); \
-
-#define AM_DEVWRITE32_MODERN(_tag, _class, _handler, _unitmask) \
- curentry->set_handler(device, _tag, write32_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), _unitmask); \
-
-
-// device reads/writes
-#define AM_DEVREADWRITE_MODERN(_tag, _class, _rhandler, _whandler) \
- curentry->set_handler(device, _tag, read_delegate(&_class::_rhandler, #_class "::" #_rhandler, (_class *)0), write_delegate(&_class::_whandler, #_class "::" #_whandler, (_class *)0)); \
-
-#define AM_DEVREADWRITE8_MODERN(_tag, _class, _rhandler, _whandler, _unitmask) \
- curentry->set_handler(device, _tag, read8_delegate(&_class::_rhandler, #_class "::" #_rhandler, (_class *)0), write8_delegate(&_class::_whandler, #_class "::" #_whandler, (_class *)0), _unitmask); \
-
-#define AM_DEVREADWRITE16_MODERN(_tag, _class, _rhandler, _whandler, _unitmask) \
- curentry->set_handler(device, _tag, read16_delegate(&_class::_rhandler, #_class "::" #_rhandler, (_class *)0), write16_delegate(&_class::_whandler, #_class "::" #_whandler, (_class *)0), _unitmask); \
-
-#define AM_DEVREADWRITE32_MODERN(_tag, _class, _rhandler, _whandler, _unitmask) \
- curentry->set_handler(device, _tag, read32_delegate(&_class::_rhandler, #_class "::" #_rhandler, (_class *)0), write32_delegate(&_class::_whandler, #_class "::" #_whandler, (_class *)0), _unitmask); \
-
-
-// device mapping
-#define AM_DEVICE(_tag, _class, _handler) \
- curentry->set_submap(device, _tag, address_map_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), 0, 0); \
-
-#define AM_DEVICE8(_tag, _class, _handler, _unitmask) \
- curentry->set_submap(device, _tag, address_map_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), 8, _unitmask); \
-
-#define AM_DEVICE16(_tag, _class, _handler, _unitmask) \
- curentry->set_submap(device, _tag, address_map_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), 16, _unitmask); \
-
-#define AM_DEVICE32(_tag, _class, _handler, _unitmask) \
- curentry->set_submap(device, _tag, address_map_delegate(&_class::_handler, #_class "::" #_handler, (_class *)0), 32, _unitmask); \
-
-
-
-// special-case accesses
-#define AM_ROM \
- curentry->set_read_type(AMH_ROM); \
-
-#define AM_RAM \
- curentry->set_read_type(AMH_RAM); \
- curentry->set_write_type(AMH_RAM); \
-
-#define AM_READONLY \
- curentry->set_read_type(AMH_RAM); \
-
-#define AM_WRITEONLY \
- curentry->set_write_type(AMH_RAM); \
-
-#define AM_UNMAP \
- curentry->set_read_type(AMH_UNMAP); \
- curentry->set_write_type(AMH_UNMAP); \
-
-#define AM_NOP \
- curentry->set_read_type(AMH_NOP); \
- curentry->set_write_type(AMH_NOP); \
-
-#define AM_READNOP \
- curentry->set_read_type(AMH_NOP); \
-
-#define AM_WRITENOP \
- curentry->set_write_type(AMH_NOP); \
-
-
-// port accesses
-#define AM_READ_PORT(_tag) \
- curentry->set_read_port(device, _tag); \
-
-#define AM_WRITE_PORT(_tag) \
- curentry->set_write_port(device, _tag); \
-
-#define AM_READWRITE_PORT(_tag) \
- curentry->set_readwrite_port(device, _tag); \
-
-
-// bank accesses
-#define AM_READ_BANK(_tag) \
- curentry->set_read_bank(device, _tag); \
-
-#define AM_WRITE_BANK(_tag) \
- curentry->set_write_bank(device, _tag); \
-
-#define AM_READWRITE_BANK(_tag) \
- curentry->set_readwrite_bank(device, _tag); \
-
-
-// attributes for accesses
-#define AM_REGION(_tag, _offs) \
- curentry->set_region(_tag, _offs); \
-
-#define AM_SHARE(_tag) \
- curentry->set_share(_tag); \
-
-#define AM_BASE(_base) \
- curentry->set_baseptr(_base); \
-
-#define myoffsetof(_struct, _member) ((FPTR)&((_struct *)0x1000)->_member - 0x1000)
-#define AM_BASE_MEMBER(_struct, _member) \
- curentry->set_member_baseptr(myoffsetof(_struct, _member)); \
-
-#define AM_BASE_GENERIC(_member) \
- curentry->set_generic_baseptr(myoffsetof(generic_pointers, _member)); \
-
-#define AM_SIZE(_size) \
- curentry->set_sizeptr(_size); \
-
-#define AM_SIZE_MEMBER(_struct, _member) \
- curentry->set_member_sizeptr(myoffsetof(_struct, _member)); \
-
-#define AM_SIZE_GENERIC(_member) \
- curentry->set_generic_sizeptr(myoffsetof(generic_pointers, _member##_size)); \
-
-
-// common shortcuts
-#define AM_ROMBANK(_bank) AM_READ_BANK(_bank)
-#define AM_RAMBANK(_bank) AM_READWRITE_BANK(_bank)
-#define AM_RAM_READ(_read) AM_READ(_read) AM_WRITEONLY
-#define AM_RAM_WRITE(_write) AM_READONLY AM_WRITE(_write)
-#define AM_RAM_DEVREAD(_tag, _read) AM_DEVREAD(_tag, _read) AM_WRITEONLY
-#define AM_RAM_DEVWRITE(_tag, _write) AM_READONLY AM_DEVWRITE(_tag, _write)
-
-#define AM_BASE_SIZE_MEMBER(_struct, _base, _size) AM_BASE_MEMBER(_struct, _base) AM_SIZE_MEMBER(_struct, _size)
-#define AM_BASE_SIZE_GENERIC(_member) AM_BASE_GENERIC(_member) AM_SIZE_GENERIC(_member)
-
-
-#else
-
-//
-// Modern ADDRESS_MAPs
-//
-
// start/end tags for the address map
#define ADDRESS_MAP_NAME(_name) construct_address_map_##_name
@@ -1112,7 +809,7 @@ void _class :: _name(address_map &map, const device_t &device) \
#define AM_SIZE_LEGACY(_size) \
curentry->set_sizeptr(_size); \
-#define AM_SIZE(_struct, _member) \
+#define AM_SIZE(_member) \
curentry->set_member_sizeptr(myoffsetof(drivdata_class, _member)); \
#define AM_SIZE_GENERIC(_member) \
@@ -1127,10 +824,14 @@ void _class :: _name(address_map &map, const device_t &device) \
#define AM_RAM_DEVREAD(_tag, _class, _read) AM_DEVREAD(_tag, _class, _read) AM_WRITEONLY
#define AM_RAM_DEVWRITE(_tag, _class, _write) AM_READONLY AM_DEVWRITE(_tag, _class, _write)
-#define AM_BASE_SIZE(_base, _size) AM_BASE_MEMBER(_base) AM_SIZE_MEMBER(_size)
+#define AM_RAM_READ_LEGACY(_read) AM_READ_LEGACY(_read) AM_WRITEONLY
+#define AM_RAM_WRITE_LEGACY(_write) AM_READONLY AM_WRITE_LEGACY(_write)
+#define AM_RAM_DEVREAD_LEGACY(_tag, _read) AM_DEVREAD_LEGACY(_tag, _read) AM_WRITEONLY
+#define AM_RAM_DEVWRITE_LEGACY(_tag, _write) AM_READONLY AM_DEVWRITE_LEGACY(_tag, _write)
+
+#define AM_BASE_SIZE(_base, _size) AM_BASE(_base) AM_SIZE(_size)
#define AM_BASE_SIZE_GENERIC(_member) AM_BASE_GENERIC(_member) AM_SIZE_GENERIC(_member)
-#endif