diff options
author | 2008-08-19 11:13:43 +0000 | |
---|---|---|
committer | 2008-08-19 11:13:43 +0000 | |
commit | 15969c0428a76a36a2c0a2c600821a596e1b217b (patch) | |
tree | 57910a220288004ec266d57137750ecd372d21fb /src/emu | |
parent | cbe9983e4246d174f9f5fd281e0429601bb72af4 (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.c | 26 | ||||
-rw-r--r-- | src/emu/memory.h | 12 |
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) \ |