summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Patrick Mackinlay <pmackinlay@hotmail.com>2023-02-13 15:32:29 +0700
committer Patrick Mackinlay <pmackinlay@hotmail.com>2023-02-13 15:32:29 +0700
commitb5c15b8a2c96b24a38c2ea99e3ea6d8fd4ea1c66 (patch)
tree468f2068c2de459e18d445029423e3eef35947b9 /src
parent17080d3d93bef38024b75b16b04da89550a52f64 (diff)
mc88200: improve initial mapping logic
Diffstat (limited to 'src')
-rw-r--r--src/devices/machine/mc88200.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/devices/machine/mc88200.cpp b/src/devices/machine/mc88200.cpp
index 9b409c7440a..8baf1d27d57 100644
--- a/src/devices/machine/mc88200.cpp
+++ b/src/devices/machine/mc88200.cpp
@@ -204,15 +204,12 @@ void mc88200_device::device_start()
save_pointer(STRUCT_MEMBER(m_cache, status), CACHE_SETS);
// TODO: save state for cache lines
- m_idr = TYPE_MC88200;
+ m_idr = m_id | TYPE_MC88200;
+ m_mbus->install_device(0xfff00000U | ((m_idr & IDR_ID) >> 12), 0xfff00fffU | ((m_idr & IDR_ID) >> 12), *this, &mc88200_device::map);
}
void mc88200_device::device_reset()
{
- m_mbus->unmap_readwrite(0xfff00000U | ((m_idr & IDR_ID) >> 12), 0xfff00fffU | ((m_idr & IDR_ID) >> 12));
-
- idr_w(m_id);
-
m_scr = 0;
m_ssr = 0;
m_sar = 0; // undefined
@@ -233,7 +230,7 @@ void mc88200_device::device_reset()
m_bus_error = false;
- m_mbus->install_device(0xfff00000U | ((m_idr & IDR_ID) >> 12), 0xfff00fffU | ((m_idr & IDR_ID) >> 12), *this, &mc88200_device::map);
+ idr_w(m_id);
}
void mc88200_device::map(address_map &map)
@@ -264,14 +261,12 @@ void mc88200_device::map(address_map &map)
void mc88200_device::idr_w(u32 data)
{
- LOG("idr_w 0x%08x (%s)\n", data, machine().describe_context());
-
if ((data ^ m_idr) & IDR_ID)
{
- m_mbus->unmap_readwrite(0xfff00000U | ((m_idr & IDR_ID) >> 12), 0xfff00fffU | ((m_idr & IDR_ID) >> 12));
+ LOG("idr_w 0x%08x (%s)\n", data, machine().describe_context());
+ m_mbus->unmap_readwrite(0xfff00000U | ((m_idr & IDR_ID) >> 12), 0xfff00fffU | ((m_idr & IDR_ID) >> 12));
m_idr = (m_idr & ~IDR_ID) | (data & IDR_ID);
-
m_mbus->install_device(0xfff00000U | ((m_idr & IDR_ID) >> 12), 0xfff00fffU | ((m_idr & IDR_ID) >> 12), *this, &mc88200_device::map);
}
}