summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/68340.cpp
diff options
context:
space:
mode:
author Paul-Arnold <98924583+Paul-Arnold@users.noreply.github.com>2022-10-04 20:18:53 +0100
committer GitHub <noreply@github.com>2022-10-04 21:18:53 +0200
commit90371fc002f18363a98a499585441e9e1eb68616 (patch)
tree50ac29afaf478c0a561e15519c1291865f9821fc /src/devices/machine/68340.cpp
parent6fd46a6b31e0f2642cdec1848a1d55a1d1339ac6 (diff)
Change cpu32 and M68340 to 16 bit data bus instead of 32 [Paul Arnold]
Diffstat (limited to 'src/devices/machine/68340.cpp')
-rw-r--r--src/devices/machine/68340.cpp34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/devices/machine/68340.cpp b/src/devices/machine/68340.cpp
index 56a4ff007a6..710e7cadeb0 100644
--- a/src/devices/machine/68340.cpp
+++ b/src/devices/machine/68340.cpp
@@ -127,16 +127,16 @@ uint8_t m68340_cpu_device::int_ack(offs_t offset)
/* 68340 specifics - MOVE */
-uint32_t m68340_cpu_device::m68340_internal_base_r(offs_t offset, uint32_t mem_mask)
+uint16_t m68340_cpu_device::m68340_internal_base_r(offs_t offset, uint16_t mem_mask)
{
if (!machine().side_effects_disabled())
- LOGMASKED(LOG_BASE, "%08x m68340_internal_base_r %08x, (%08x)\n", m_ppc, offset*4,mem_mask);
- return m_m68340_base;
+ LOGMASKED(LOG_BASE, "%08x m68340_internal_base_r %08x, (%08x)\n", m_ppc, offset*2,mem_mask);
+ return ((!BIT(offset, 0) ? (m_m68340_base >> 16): m_m68340_base)) & 0xffff;
}
-void m68340_cpu_device::m68340_internal_base_w(offs_t offset, uint32_t data, uint32_t mem_mask)
+void m68340_cpu_device::m68340_internal_base_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- LOGMASKED(LOG_BASE, "%08x m68340_internal_base_w %08x, %08x (%08x)\n", m_ppc, offset*4,data,mem_mask);
+ LOGMASKED(LOG_BASE, "%08x m68340_internal_base_w %08x, %08x (%08x)\n", m_ppc, offset*2,data,mem_mask);
// other conditions?
if (m_dfc==0x7)
@@ -152,9 +152,17 @@ void m68340_cpu_device::m68340_internal_base_w(offs_t offset, uint32_t data, uin
m_internal->unmap_readwrite(base + 0x780, base + 0x7bf);
}
+
+ uint32_t data32 = data;
+ uint32_t mem_mask32 = mem_mask;
+ if (!BIT(offset,0))
+ {
+ data32 <<= 16;
+ mem_mask32 <<= 16;
+ }
- COMBINE_DATA(&m_m68340_base);
- LOGMASKED(LOG_BASE, "%08x m68340_internal_base_w %08x, %08x (%08x) (m_m68340_base write)\n", pc(), offset*4,data,mem_mask);
+ m_m68340_base = (m_m68340_base & ~mem_mask32) | (data32 & mem_mask32);
+ LOGMASKED(LOG_BASE, "%08x m68340_internal_base_w %08x, %08x (%08x) (m_m68340_base write)\n", pc(), offset*2,data,mem_mask);
// map new modules
if (m_m68340_base & 1)
@@ -168,8 +176,8 @@ void m68340_cpu_device::m68340_internal_base_w(offs_t offset, uint32_t data, uin
read8sm_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_ports_r)),
write8sm_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_ports_w)),0xffffffff);
m_internal->install_readwrite_handler(base + 0x040, base + 0x05f,
- read32s_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_cs_r)),
- write32s_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_cs_w)));
+ read16s_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_cs_r)),
+ write16s_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_cs_w)));
m_internal->install_readwrite_handler(base + 0x600, base + 0x63f,
read16s_delegate(*m_timer[0], FUNC(mc68340_timer_module_device::read)),
write16s_delegate(*m_timer[0], FUNC(mc68340_timer_module_device::write)),0xffffffff);
@@ -180,13 +188,13 @@ void m68340_cpu_device::m68340_internal_base_w(offs_t offset, uint32_t data, uin
read8sm_delegate(*m_serial, FUNC(mc68340_serial_module_device::read)),
write8sm_delegate(*m_serial, FUNC(mc68340_serial_module_device::write)),0xffffffff);
m_internal->install_readwrite_handler(base + 0x780, base + 0x7bf,
- read32s_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_dma_r)),
- write32s_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_dma_w)));
+ read16s_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_dma_r)),
+ write16s_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_dma_w)));
}
}
else
{
- LOGMASKED(LOG_BASE, "%08x m68340_internal_base_w %08x, %04x (%04x) (should fall through?)\n", pc(), offset*4,data,mem_mask);
+ LOGMASKED(LOG_BASE, "%08x m68340_internal_base_w %08x, %04x (%04x) (should fall through?)\n", pc(), offset*2,data,mem_mask);
}
}
@@ -214,7 +222,7 @@ void m68340_cpu_device::device_add_mconfig(machine_config &config)
//**************************************************************************
m68340_cpu_device::m68340_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : fscpu32_device(mconfig, tag, owner, clock, M68340, 32,32, address_map_constructor(FUNC(m68340_cpu_device::m68340_internal_map), this))
+ : fscpu32_device(mconfig, tag, owner, clock, M68340, address_map_constructor(FUNC(m68340_cpu_device::m68340_internal_map), this))
, m_serial(*this, "serial")
, m_timer(*this, "timer%u", 1U)
, m_clock_mode(0)