summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
author Nathan Woods <npwoods@mess.org>2008-08-19 11:13:43 +0000
committer Nathan Woods <npwoods@mess.org>2008-08-19 11:13:43 +0000
commit15969c0428a76a36a2c0a2c600821a596e1b217b (patch)
tree57910a220288004ec266d57137750ecd372d21fb /src/emu
parentcbe9983e4246d174f9f5fd281e0429601bb72af4 (diff)
Readded generic calls to install memory handlers that were in long before
0.126u5 - these are useful on the MESS side for things like the PC driver
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/memory.c26
-rw-r--r--src/emu/memory.h12
2 files changed, 38 insertions, 0 deletions
diff --git a/src/emu/memory.c b/src/emu/memory.c
index c09a1624fe8..773b9d1c48e 100644
--- a/src/emu/memory.c
+++ b/src/emu/memory.c
@@ -1496,6 +1496,19 @@ int memory_get_log_unmap(int spacenum)
X-bit case
-------------------------------------------------*/
+void *_memory_install_handler(running_machine *machine, int cpunum, int spacenum, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, FPTR rhandler, FPTR whandler, const char *rhandler_name, const char *whandler_name)
+{
+ addrspace_data *space = &cpudata[cpunum].space[spacenum];
+ if (rhandler >= STATIC_COUNT || whandler >= STATIC_COUNT)
+ fatalerror("fatal: can only use static banks with memory_install_handler()");
+ if (rhandler != 0)
+ space_map_range(space, ROW_READ, space->dbits, 0, addrstart, addrend, addrmask, addrmirror, (genf *)(FPTR)rhandler, machine, rhandler_name);
+ if (whandler != 0)
+ space_map_range(space, ROW_WRITE, space->dbits, 0, addrstart, addrend, addrmask, addrmirror, (genf *)(FPTR)whandler, machine, whandler_name);
+ mem_dump();
+ return memory_find_base(cpunum, spacenum, ADDR2BYTE(space, addrstart));
+}
+
UINT8 *_memory_install_handler8(running_machine *machine, int cpunum, int spacenum, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read8_machine_func rhandler, write8_machine_func whandler, const char *rhandler_name, const char *whandler_name)
{
addrspace_data *space = &cpudata[cpunum].space[spacenum];
@@ -1547,6 +1560,19 @@ UINT64 *_memory_install_handler64(running_machine *machine, int cpunum, int spac
for X-bit case
-------------------------------------------------*/
+void *_memory_install_device_handler(const device_config *device, int cpunum, int spacenum, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, FPTR rhandler, FPTR whandler, const char *rhandler_name, const char *whandler_name)
+{
+ addrspace_data *space = &cpudata[cpunum].space[spacenum];
+ if (rhandler >= STATIC_COUNT || whandler >= STATIC_COUNT)
+ fatalerror("fatal: can only use static banks with memory_install_device_handler()");
+ if (rhandler != 0)
+ space_map_range(space, ROW_READ, space->dbits, 0, addrstart, addrend, addrmask, addrmirror, (genf *)(FPTR)rhandler, (void *)device, rhandler_name);
+ if (whandler != 0)
+ space_map_range(space, ROW_WRITE, space->dbits, 0, addrstart, addrend, addrmask, addrmirror, (genf *)(FPTR)whandler, (void *)device, whandler_name);
+ mem_dump();
+ return memory_find_base(cpunum, spacenum, ADDR2BYTE(space, addrstart));
+}
+
UINT8 *_memory_install_device_handler8(const device_config *device, int cpunum, int spacenum, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read8_device_func rhandler, write8_device_func whandler, const char *rhandler_name, const char *whandler_name)
{
addrspace_data *space = &cpudata[cpunum].space[spacenum];
diff --git a/src/emu/memory.h b/src/emu/memory.h
index 0e8f7a4c7ab..23f4d7c6f20 100644
--- a/src/emu/memory.h
+++ b/src/emu/memory.h
@@ -484,6 +484,8 @@ union _addrmap64_token
/* wrappers for dynamic read handler installation */
+#define memory_install_read_handler(machine, cpu, space, start, end, mask, mirror, rhandler) \
+ _memory_install_handler(machine, cpu, space, start, end, mask, mirror, rhandler, (FPTR)NULL, #rhandler, NULL)
#define memory_install_read8_handler(machine, cpu, space, start, end, mask, mirror, rhandler) \
_memory_install_handler8(machine, cpu, space, start, end, mask, mirror, rhandler, NULL, #rhandler, NULL)
#define memory_install_read16_handler(machine, cpu, space, start, end, mask, mirror, rhandler) \
@@ -493,6 +495,8 @@ union _addrmap64_token
#define memory_install_read64_handler(machine, cpu, space, start, end, mask, mirror, rhandler) \
_memory_install_handler64(machine, cpu, space, start, end, mask, mirror, rhandler, NULL, #rhandler, NULL)
+#define memory_install_read_device_handler(device, cpu, space, start, end, mask, mirror, rhandler) \
+ _memory_install_device_handler(device, cpu, space, start, end, mask, mirror, rhandler, NULL, #rhandler, NULL)
#define memory_install_read8_device_handler(device, cpu, space, start, end, mask, mirror, rhandler) \
_memory_install_device_handler8(device, cpu, space, start, end, mask, mirror, rhandler, NULL, #rhandler, NULL)
#define memory_install_read16_device_handler(device, cpu, space, start, end, mask, mirror, rhandler) \
@@ -504,6 +508,8 @@ union _addrmap64_token
/* wrappers for dynamic write handler installation */
+#define memory_install_write_handler(machine, cpu, space, start, end, mask, mirror, whandler) \
+ _memory_install_handler(machine, cpu, space, start, end, mask, mirror, (FPTR)NULL, whandler, NULL, #whandler)
#define memory_install_write8_handler(machine, cpu, space, start, end, mask, mirror, whandler) \
_memory_install_handler8(machine, cpu, space, start, end, mask, mirror, NULL, whandler, NULL, #whandler)
#define memory_install_write16_handler(machine, cpu, space, start, end, mask, mirror, whandler) \
@@ -513,6 +519,8 @@ union _addrmap64_token
#define memory_install_write64_handler(machine, cpu, space, start, end, mask, mirror, whandler) \
_memory_install_handler64(machine, cpu, space, start, end, mask, mirror, NULL, whandler, NULL, #whandler)
+#define memory_install_write_device_handler(device, cpu, space, start, end, mask, mirror, whandler) \
+ _memory_install_device_handler(device, cpu, space, start, end, mask, mirror, NULL, whandler, NULL, #whandler)
#define memory_install_write8_device_handler(device, cpu, space, start, end, mask, mirror, whandler) \
_memory_install_device_handler8(device, cpu, space, start, end, mask, mirror, NULL, whandler, NULL, #whandler)
#define memory_install_write16_device_handler(device, cpu, space, start, end, mask, mirror, whandler) \
@@ -524,6 +532,8 @@ union _addrmap64_token
/* wrappers for dynamic read/write handler installation */
+#define memory_install_readwrite_handler(machine, cpu, space, start, end, mask, mirror, rhandler, whandler) \
+ _memory_install_handler(machine, cpu, space, start, end, mask, mirror, rhandler, whandler, #rhandler, #whandler)
#define memory_install_readwrite8_handler(machine, cpu, space, start, end, mask, mirror, rhandler, whandler) \
_memory_install_handler8(machine, cpu, space, start, end, mask, mirror, rhandler, whandler, #rhandler, #whandler)
#define memory_install_readwrite16_handler(machine, cpu, space, start, end, mask, mirror, rhandler, whandler) \
@@ -533,6 +543,8 @@ union _addrmap64_token
#define memory_install_readwrite64_handler(machine, cpu, space, start, end, mask, mirror, rhandler, whandler) \
_memory_install_handler64(machine, cpu, space, start, end, mask, mirror, rhandler, whandler, #rhandler, #whandler)
+#define memory_install_readwrite_device_handler(device, cpu, space, start, end, mask, mirror, rhandler, whandler) \
+ _memory_install_device_handler(device, cpu, space, start, end, mask, mirror, rhandler, whandler, #rhandler, #whandler)
#define memory_install_readwrite8_device_handler(device, cpu, space, start, end, mask, mirror, rhandler, whandler) \
_memory_install_device_handler8(device, cpu, space, start, end, mask, mirror, rhandler, whandler, #rhandler, #whandler)
#define memory_install_readwrite16_device_handler(device, cpu, space, start, end, mask, mirror, rhandler, whandler) \