summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/isa/isa.cpp
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2016-06-05 23:41:13 +0200
committer Olivier Galibert <galibert@pobox.com>2016-06-14 23:21:58 +0200
commitb82d7c4aef44eac0c4752b7db3c29306610a84ac (patch)
tree40c96f334c72d5dc4d5e1e27bee3616e5905c8ef /src/devices/bus/isa/isa.cpp
parent58ee7eb241f3f9458544df2f14be525cfc6a1810 (diff)
Memory fun [O.Galibert]
- Added AM_SELECT/addrselect field. Replaces the old AM_MIRROR/AM_MASK combo used to mirror a handler and get the mirrored bits in the offset. - Removed mask and/or mirror from where it didn't belong. Simplified a lot of instances of mask that just weren't needed, especially in bus handlers. Used the short forms of install handlers where possible. - Replaced the 60s hippy, "It's cool man" range parameter handling in map_range that tried to guess what was meant when the values passed were not entirely sensible, by a cranky, diner waitress-turned IRS auditor curmudgeon. Main control function has a series of 14 tests just to find a reason to fatalerror out your requests. You have been warned. Some drivers, hopefully not many, will fail the gate-guarding bureaucrat trials. Should be easy to fix actually, I worked on the error messages. A full regression test would be welcome.
Diffstat (limited to 'src/devices/bus/isa/isa.cpp')
-rw-r--r--src/devices/bus/isa/isa.cpp52
1 files changed, 26 insertions, 26 deletions
diff --git a/src/devices/bus/isa/isa.cpp b/src/devices/bus/isa/isa.cpp
index fb449c5815d..3bbb41b5589 100644
--- a/src/devices/bus/isa/isa.cpp
+++ b/src/devices/bus/isa/isa.cpp
@@ -262,7 +262,7 @@ void isa8_device::device_reset()
}
-void isa8_device::install_space(address_spacenum spacenum, offs_t start, offs_t end, offs_t mask, offs_t mirror, read8_delegate rhandler, write8_delegate whandler)
+void isa8_device::install_space(address_spacenum spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler)
{
int buswidth;
address_space *space;
@@ -285,21 +285,21 @@ void isa8_device::install_space(address_spacenum spacenum, offs_t start, offs_t
switch(buswidth)
{
case 8:
- space->install_readwrite_handler(start, end, mask, mirror, rhandler, whandler, 0);
+ space->install_readwrite_handler(start, end, rhandler, whandler, 0);
break;
case 16:
- space->install_readwrite_handler(start, end, mask, mirror, rhandler, whandler, 0xffff);
+ space->install_readwrite_handler(start, end, rhandler, whandler, 0xffff);
break;
case 32:
if ((start % 4) == 0) {
if ((end-start)==1) {
- space->install_readwrite_handler(start, end+2, mask, mirror, rhandler, whandler, 0x0000ffff);
+ space->install_readwrite_handler(start, end+2, rhandler, whandler, 0x0000ffff);
} else {
- space->install_readwrite_handler(start, end, mask, mirror, rhandler, whandler, 0xffffffff);
+ space->install_readwrite_handler(start, end, rhandler, whandler, 0xffffffff);
}
} else {
- // we handle just misalligned by 2
- space->install_readwrite_handler(start-2, end, mask, mirror, rhandler, whandler, 0xffff0000);
+ // we handle just misaligned by 2
+ space->install_readwrite_handler(start-2, end, rhandler, whandler, 0xffff0000);
}
break;
default:
@@ -308,44 +308,44 @@ void isa8_device::install_space(address_spacenum spacenum, offs_t start, offs_t
}
-void isa8_device::install_memory(offs_t start, offs_t end, offs_t mask, offs_t mirror, read8_delegate rhandler, write8_delegate whandler)
+void isa8_device::install_memory(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler)
{
- install_space(AS_PROGRAM, start, end, mask, mirror, rhandler, whandler);
+ install_space(AS_PROGRAM, start, end, rhandler, whandler);
}
-void isa8_device::install_device(offs_t start, offs_t end, offs_t mask, offs_t mirror, read8_delegate rhandler, write8_delegate whandler)
+void isa8_device::install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler)
{
- install_space(AS_IO, start, end, mask, mirror, rhandler, whandler);
+ install_space(AS_IO, start, end, rhandler, whandler);
}
-void isa8_device::install_bank(offs_t start, offs_t end, offs_t mask, offs_t mirror, const char *tag, UINT8 *data)
+void isa8_device::install_bank(offs_t start, offs_t end, const char *tag, UINT8 *data)
{
- m_prgspace->install_readwrite_bank(start, end, mask, mirror, tag );
+ m_prgspace->install_readwrite_bank(start, end, 0, tag );
machine().root_device().membank(m_prgspace->device().siblingtag(tag).c_str())->set_base(data);
}
-void isa8_device::unmap_bank(offs_t start, offs_t end, offs_t mask, offs_t mirror)
+void isa8_device::unmap_bank(offs_t start, offs_t end)
{
- m_prgspace->unmap_readwrite(start, end, mask, mirror);
+ m_prgspace->unmap_readwrite(start, end);
}
-void isa8_device::install_rom(device_t *dev, offs_t start, offs_t end, offs_t mask, offs_t mirror, const char *tag, const char *region)
+void isa8_device::install_rom(device_t *dev, offs_t start, offs_t end, const char *tag, const char *region)
{
if (machine().root_device().memregion("isa")) {
UINT8 *src = dev->memregion(region)->base();
UINT8 *dest = machine().root_device().memregion("isa")->base() + start - 0xc0000;
memcpy(dest,src, end - start + 1);
} else {
- m_prgspace->install_read_bank(start, end, mask, mirror, tag);
- m_prgspace->unmap_write(start, end, mask, mirror);
+ m_prgspace->install_read_bank(start, end, 0, tag);
+ m_prgspace->unmap_write(start, end);
machine().root_device().membank(m_prgspace->device().siblingtag(tag).c_str())->set_base(machine().root_device().memregion(dev->subtag(region).c_str())->base());
}
}
-void isa8_device::unmap_rom(offs_t start, offs_t end, offs_t mask, offs_t mirror)
+void isa8_device::unmap_rom(offs_t start, offs_t end)
{
- m_prgspace->unmap_read(start, end, mask, mirror);
+ m_prgspace->unmap_read(start, end);
}
bool isa8_device::is_option_rom_space_available(offs_t start, int size)
@@ -507,25 +507,25 @@ void isa16_device::device_start()
m_out_drq7_cb.resolve_safe();
}
-void isa16_device::install16_device(offs_t start, offs_t end, offs_t mask, offs_t mirror, read16_delegate rhandler, write16_delegate whandler)
+void isa16_device::install16_device(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler)
{
int buswidth = m_prgwidth;
switch(buswidth)
{
case 16:
- m_iospace->install_readwrite_handler(start, end, mask, mirror, rhandler, whandler, 0);
+ m_iospace->install_readwrite_handler(start, end, rhandler, whandler, 0);
break;
case 32:
- m_iospace->install_readwrite_handler(start, end, mask, mirror, rhandler, whandler, 0xffffffff);
+ m_iospace->install_readwrite_handler(start, end, rhandler, whandler, 0xffffffff);
if ((start % 4) == 0) {
if ((end-start)==1) {
- m_iospace->install_readwrite_handler(start, end+2, mask, mirror, rhandler, whandler, 0x0000ffff);
+ m_iospace->install_readwrite_handler(start, end+2, rhandler, whandler, 0x0000ffff);
} else {
- m_iospace->install_readwrite_handler(start, end, mask, mirror, rhandler, whandler, 0xffffffff);
+ m_iospace->install_readwrite_handler(start, end, rhandler, whandler, 0xffffffff);
}
} else {
// we handle just misalligned by 2
- m_iospace->install_readwrite_handler(start-2, end, mask, mirror, rhandler, whandler, 0xffff0000);
+ m_iospace->install_readwrite_handler(start-2, end, rhandler, whandler, 0xffff0000);
}
break;