Remove all traces of read/write*_device_func from memory.c.

All legacy device callbacks are now promoted to delegates
and handed off to the modern read/write handler managers.
Fixed ibm5150 and surely many other broken systems. (nw)
This commit is contained in:
Aaron Giles 2012-09-18 06:10:57 +00:00
parent e33b41ee01
commit 81c982ec56
3 changed files with 18 additions and 231 deletions

View File

@ -349,10 +349,6 @@ public:
read16_space_func space16;
read32_space_func space32;
read64_space_func space64;
read8_device_func device8;
read16_device_func device16;
read32_device_func device32;
read64_device_func device64;
} handler;
};
@ -390,12 +386,6 @@ public:
void set_legacy_func(address_space &space, read32_space_func func, const char *name, UINT64 mask = 0);
void set_legacy_func(address_space &space, read64_space_func func, const char *name, UINT64 mask = 0);
// configure legacy device functions
void set_legacy_func(device_t &device, read8_device_func func, const char *name, UINT64 mask = 0);
void set_legacy_func(device_t &device, read16_device_func func, const char *name, UINT64 mask = 0);
void set_legacy_func(device_t &device, read32_device_func func, const char *name, UINT64 mask = 0);
void set_legacy_func(device_t &device, read64_device_func func, const char *name, UINT64 mask = 0);
// configure I/O port access
void set_ioport(ioport_port &ioport);
@ -456,10 +446,6 @@ public:
write16_space_func space16;
write32_space_func space32;
write64_space_func space64;
write8_device_func device8;
write16_device_func device16;
write32_device_func device32;
write64_device_func device64;
} handler;
};
@ -497,12 +483,6 @@ public:
void set_legacy_func(address_space &space, write32_space_func func, const char *name, UINT64 mask = 0);
void set_legacy_func(address_space &space, write64_space_func func, const char *name, UINT64 mask = 0);
// configure legacy device functions
void set_legacy_func(device_t &device, write8_device_func func, const char *name, UINT64 mask = 0);
void set_legacy_func(device_t &device, write16_device_func func, const char *name, UINT64 mask = 0);
void set_legacy_func(device_t &device, write32_device_func func, const char *name, UINT64 mask = 0);
void set_legacy_func(device_t &device, write64_device_func func, const char *name, UINT64 mask = 0);
// configure I/O port access
void set_ioport(ioport_port &ioport);
@ -564,12 +544,6 @@ public:
(*i)->set_legacy_func(space, func, name, mask);
}
// forward legacy device functions configuration
template<typename _func> void set_legacy_func(device_t &device, _func func, const char *name) const {
for (typename std::list<_HandlerEntry *>::const_iterator i = handlers.begin(); i != handlers.end(); i++)
(*i)->set_legacy_func(device, func, name, mask);
}
// forward I/O port access configuration
void set_ioport(ioport_port &ioport) const {
for (typename std::list<_HandlerEntry *>::const_iterator i = handlers.begin(); i != handlers.end(); i++)
@ -2526,42 +2500,6 @@ UINT8 *address_space::install_legacy_readwrite_handler(offs_t addrstart, offs_t
}
//-------------------------------------------------
// install_legacy_handler - install 8-bit read/
// write legacy device handlers for the space
//-------------------------------------------------
UINT8 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read8_device_func rhandler, const char *rname, UINT64 unitmask)
{
VPRINTF(("address_space::install_legacy_read_handler(%s-%s mask=%s mirror=%s, %s, %s, \"%s\") [read8]\n",
core_i64_hex_format(addrstart, m_addrchars), core_i64_hex_format(addrend, m_addrchars),
core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars),
rname, core_i64_hex_format(unitmask, data_width() / 4), device.tag()));
read().handler_map_range(addrstart, addrend, addrmask, addrmirror, unitmask).set_legacy_func(device, rhandler, rname);
generate_memdump(machine());
return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend));
}
UINT8 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write8_device_func whandler, const char *wname, UINT64 unitmask)
{
VPRINTF(("address_space::install_legacy_write_handler(%s-%s mask=%s mirror=%s, %s, %s, \"%s\") [write8]\n",
core_i64_hex_format(addrstart, m_addrchars), core_i64_hex_format(addrend, m_addrchars),
core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars),
wname, core_i64_hex_format(unitmask, data_width() / 4), device.tag()));
write().handler_map_range(addrstart, addrend, addrmask, addrmirror, unitmask).set_legacy_func(device, whandler, wname);
generate_memdump(machine());
return reinterpret_cast<UINT8 *>(find_backing_memory(addrstart, addrend));
}
UINT8 *address_space::install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read8_device_func rhandler, const char *rname, write8_device_func whandler, const char *wname, UINT64 unitmask)
{
install_legacy_read_handler(device, addrstart, addrend, addrmask, addrmirror, rhandler, rname, unitmask);
return install_legacy_write_handler(device, addrstart, addrend, addrmask, addrmirror, whandler, wname, unitmask);
}
//-------------------------------------------------
// install_handler - install 16-bit read/write
// delegate handlers for the space
@ -2615,32 +2553,6 @@ UINT16 *address_space::install_legacy_readwrite_handler(offs_t addrstart, offs_t
}
//-------------------------------------------------
// install_legacy_handler - install 16-bit read/
// write legacy device handlers for the space
//-------------------------------------------------
UINT16 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_device_func rhandler, const char *rname, UINT64 unitmask)
{
read().handler_map_range(addrstart, addrend, addrmask, addrmirror, unitmask).set_legacy_func(device, rhandler, rname);
generate_memdump(machine());
return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend));
}
UINT16 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write16_device_func whandler, const char *wname, UINT64 unitmask)
{
write().handler_map_range(addrstart, addrend, addrmask, addrmirror, unitmask).set_legacy_func(device, whandler, wname);
generate_memdump(machine());
return reinterpret_cast<UINT16 *>(find_backing_memory(addrstart, addrend));
}
UINT16 *address_space::install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_device_func rhandler, const char *rname, write16_device_func whandler, const char *wname, UINT64 unitmask)
{
install_legacy_read_handler(device, addrstart, addrend, addrmask, addrmirror, rhandler, rname, unitmask);
return install_legacy_write_handler(device, addrstart, addrend, addrmask, addrmirror, whandler, wname, unitmask);
}
//-------------------------------------------------
// install_handler - install 32-bit read/write
// delegate handlers for the space
@ -2694,32 +2606,6 @@ UINT32 *address_space::install_legacy_readwrite_handler(offs_t addrstart, offs_t
}
//-------------------------------------------------
// install_legacy_handler - install 32-bit read/
// write legacy device handlers for the space
//-------------------------------------------------
UINT32 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_device_func rhandler, const char *rname, UINT64 unitmask)
{
read().handler_map_range(addrstart, addrend, addrmask, addrmirror, unitmask).set_legacy_func(device, rhandler, rname);
generate_memdump(machine());
return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend));
}
UINT32 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write32_device_func whandler, const char *wname, UINT64 unitmask)
{
write().handler_map_range(addrstart, addrend, addrmask, addrmirror, unitmask).set_legacy_func(device, whandler, wname);
generate_memdump(machine());
return reinterpret_cast<UINT32 *>(find_backing_memory(addrstart, addrend));
}
UINT32 *address_space::install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_device_func rhandler, const char *rname, write32_device_func whandler, const char *wname, UINT64 unitmask)
{
install_legacy_read_handler(device, addrstart, addrend, addrmask, addrmirror, rhandler, rname, unitmask);
return install_legacy_write_handler(device, addrstart, addrend, addrmask, addrmirror, whandler, wname, unitmask);
}
//-------------------------------------------------
// install_handler64 - install 64-bit read/write
// delegate handlers for the space
@ -2773,32 +2659,6 @@ UINT64 *address_space::install_legacy_readwrite_handler(offs_t addrstart, offs_t
}
//-------------------------------------------------
// install_legacy_handler - install 64-bit read/
// write legacy device handlers for the space
//-------------------------------------------------
UINT64 *address_space::install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_device_func rhandler, const char *rname, UINT64 unitmask)
{
read().handler_map_range(addrstart, addrend, addrmask, addrmirror, unitmask).set_legacy_func(device, rhandler, rname);
generate_memdump(machine());
return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend));
}
UINT64 *address_space::install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write64_device_func whandler, const char *wname, UINT64 unitmask)
{
write().handler_map_range(addrstart, addrend, addrmask, addrmirror, unitmask).set_legacy_func(device, whandler, wname);
generate_memdump(machine());
return reinterpret_cast<UINT64 *>(find_backing_memory(addrstart, addrend));
}
UINT64 *address_space::install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_device_func rhandler, const char *rname, write64_device_func whandler, const char *wname, UINT64 unitmask)
{
install_legacy_read_handler(device, addrstart, addrend, addrmask, addrmirror, rhandler, rname, unitmask);
return install_legacy_write_handler(device, addrstart, addrend, addrmask, addrmirror, whandler, wname, unitmask);
}
//**************************************************************************
// MEMORY MAPPING HELPERS
@ -4910,44 +4770,6 @@ void handler_entry_read::set_legacy_func(address_space &space, read64_space_func
}
//-------------------------------------------------
// set_legacy_func - configure a legacy device
// stub of the appropriate size
//-------------------------------------------------
void handler_entry_read::set_legacy_func(device_t &device, read8_device_func func, const char *name, UINT64 mask)
{
legacy_info info;
info.handler.device8 = func;
info.object.device = &device;
set_delegate(read8_delegate(&handler_entry_read::read_stub_legacy, name, this), mask, &info);
}
void handler_entry_read::set_legacy_func(device_t &device, read16_device_func func, const char *name, UINT64 mask)
{
legacy_info info;
info.handler.device16 = func;
info.object.device = &device;
set_delegate(read16_delegate(&handler_entry_read::read_stub_legacy, name, this), mask, &info);
}
void handler_entry_read::set_legacy_func(device_t &device, read32_device_func func, const char *name, UINT64 mask)
{
legacy_info info;
info.handler.device32 = func;
info.object.device = &device;
set_delegate(read32_delegate(&handler_entry_read::read_stub_legacy, name, this), mask, &info);
}
void handler_entry_read::set_legacy_func(device_t &device, read64_device_func func, const char *name, UINT64 mask)
{
legacy_info info;
info.handler.device64 = func;
info.object.device = &device;
set_delegate(read64_delegate(&handler_entry_read::read_stub_legacy, name, this), mask, &info);
}
//-------------------------------------------------
// set_ioport - configure an I/O port read stub
// of the appropriate size
@ -5365,44 +5187,6 @@ void handler_entry_write::set_legacy_func(address_space &space, write64_space_fu
}
//-------------------------------------------------
// set_legacy_func - configure a legacy device
// stub of the appropriate size
//-------------------------------------------------
void handler_entry_write::set_legacy_func(device_t &device, write8_device_func func, const char *name, UINT64 mask)
{
legacy_info info;
info.handler.device8 = func;
info.object.device = &device;
set_delegate(write8_delegate(&handler_entry_write::write_stub_legacy, name, this), mask, &info);
}
void handler_entry_write::set_legacy_func(device_t &device, write16_device_func func, const char *name, UINT64 mask)
{
legacy_info info;
info.handler.device16 = func;
info.object.device = &device;
set_delegate(write16_delegate(&handler_entry_write::write_stub_legacy, name, this), mask, &info);
}
void handler_entry_write::set_legacy_func(device_t &device, write32_device_func func, const char *name, UINT64 mask)
{
legacy_info info;
info.handler.device32 = func;
info.object.device = &device;
set_delegate(write32_delegate(&handler_entry_write::write_stub_legacy, name, this), mask, &info);
}
void handler_entry_write::set_legacy_func(device_t &device, write64_device_func func, const char *name, UINT64 mask)
{
legacy_info info;
info.handler.device64 = func;
info.object.device = &device;
set_delegate(write64_delegate(&handler_entry_write::write_stub_legacy, name, this), mask, &info);
}
//-------------------------------------------------
// set_ioport - configure an I/O port read stub
// of the appropriate size

View File

@ -515,18 +515,18 @@ public:
UINT64 *install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, read64_device_func rhandler, const char *rname, write64_device_func whandler, const char *wname, UINT64 unitmask = 0) { return install_legacy_readwrite_handler(device, addrstart, addrend, 0, 0, rhandler, rname, whandler, wname, unitmask); }
// install legacy device handlers (with mirror/mask)
UINT8 *install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read8_device_func rhandler, const char *rname, UINT64 unitmask = 0);
UINT8 *install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write8_device_func whandler, const char *wname, UINT64 unitmask = 0);
UINT8 *install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read8_device_func rhandler, const char *rname, write8_device_func whandler, const char *wname, UINT64 unitmask = 0);
UINT16 *install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_device_func rhandler, const char *rname, UINT64 unitmask = 0);
UINT16 *install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write16_device_func whandler, const char *wname, UINT64 unitmask = 0);
UINT16 *install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_device_func rhandler, const char *rname, write16_device_func whandler, const char *wname, UINT64 unitmask = 0);
UINT32 *install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_device_func rhandler, const char *rname, UINT64 unitmask = 0);
UINT32 *install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write32_device_func whandler, const char *wname, UINT64 unitmask = 0);
UINT32 *install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_device_func rhandler, const char *rname, write32_device_func whandler, const char *wname, UINT64 unitmask = 0);
UINT64 *install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_device_func rhandler, const char *rname, UINT64 unitmask = 0);
UINT64 *install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write64_device_func whandler, const char *wname, UINT64 unitmask = 0);
UINT64 *install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_device_func rhandler, const char *rname, write64_device_func whandler, const char *wname, UINT64 unitmask = 0);
UINT8 *install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read8_device_func rhandler, const char *rname, UINT64 unitmask = 0) { return install_read_handler(addrstart, addrend, addrmask, addrmirror, read8_delegate(rhandler, rname, &device), unitmask); }
UINT8 *install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write8_device_func whandler, const char *wname, UINT64 unitmask = 0) { return install_write_handler(addrstart, addrend, addrmask, addrmirror, write8_delegate(whandler, wname, &device), unitmask); }
UINT8 *install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read8_device_func rhandler, const char *rname, write8_device_func whandler, const char *wname, UINT64 unitmask = 0) { return install_readwrite_handler(addrstart, addrend, addrmask, addrmirror, read8_delegate(rhandler, rname, &device), write8_delegate(whandler, wname, &device), unitmask); }
UINT16 *install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_device_func rhandler, const char *rname, UINT64 unitmask = 0) { return install_read_handler(addrstart, addrend, addrmask, addrmirror, read16_delegate(rhandler, rname, &device), unitmask); }
UINT16 *install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write16_device_func whandler, const char *wname, UINT64 unitmask = 0) { return install_write_handler(addrstart, addrend, addrmask, addrmirror, write16_delegate(whandler, wname, &device), unitmask); }
UINT16 *install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read16_device_func rhandler, const char *rname, write16_device_func whandler, const char *wname, UINT64 unitmask = 0) { return install_readwrite_handler(addrstart, addrend, addrmask, addrmirror, read16_delegate(rhandler, rname, &device), write16_delegate(whandler, wname, &device), unitmask); }
UINT32 *install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_device_func rhandler, const char *rname, UINT64 unitmask = 0) { return install_read_handler(addrstart, addrend, addrmask, addrmirror, read32_delegate(rhandler, rname, &device), unitmask); }
UINT32 *install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write32_device_func whandler, const char *wname, UINT64 unitmask = 0) { return install_write_handler(addrstart, addrend, addrmask, addrmirror, write32_delegate(whandler, wname, &device), unitmask); }
UINT32 *install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read32_device_func rhandler, const char *rname, write32_device_func whandler, const char *wname, UINT64 unitmask = 0) { return install_readwrite_handler(addrstart, addrend, addrmask, addrmirror, read32_delegate(rhandler, rname, &device), write32_delegate(whandler, wname, &device), unitmask); }
UINT64 *install_legacy_read_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_device_func rhandler, const char *rname, UINT64 unitmask = 0) { return install_read_handler(addrstart, addrend, addrmask, addrmirror, read64_delegate(rhandler, rname, &device), unitmask); }
UINT64 *install_legacy_write_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, write64_device_func whandler, const char *wname, UINT64 unitmask = 0) { return install_write_handler(addrstart, addrend, addrmask, addrmirror, write64_delegate(whandler, wname, &device), unitmask); }
UINT64 *install_legacy_readwrite_handler(device_t &device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_device_func rhandler, const char *rname, write64_device_func whandler, const char *wname, UINT64 unitmask = 0) { return install_readwrite_handler(addrstart, addrend, addrmask, addrmirror, read64_delegate(rhandler, rname, &device), write64_delegate(whandler, wname, &device), unitmask); }
// setup
void prepare_map();

View File

@ -12,6 +12,9 @@
#include "machine/am9517a.h"
#include "machine/isa.h"
#include "machine/pc_kbdc.h"
#include "machine/pic8259.h"
#include "machine/pit8253.h"
#include "sound/speaker.h"
#include "imagedev/cassette.h"
#define MCFG_IBM5160_MOTHERBOARD_ADD(_tag, _cputag) \
@ -40,11 +43,11 @@ protected:
void install_device(offs_t start, offs_t end, offs_t mask, offs_t mirror, read8_delegate rhandler, write8_delegate whandler);
public:
required_device<cpu_device> m_maincpu;
required_device<device_t> m_pic8259;
required_device<pic8259_device> m_pic8259;
required_device<am9517a_device> m_dma8237;
required_device<device_t> m_pit8253;
required_device<pit8253_device> m_pit8253;
required_device<i8255_device> m_ppi8255;
required_device<device_t> m_speaker;
required_device<speaker_sound_device> m_speaker;
required_device<isa8_device> m_isabus;
required_device<pc_kbdc_device> m_pc_kbdc;