summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/68340.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/68340.cpp')
-rw-r--r--src/devices/machine/68340.cpp77
1 files changed, 36 insertions, 41 deletions
diff --git a/src/devices/machine/68340.cpp b/src/devices/machine/68340.cpp
index 36d42b869fa..3dc8f2e5c83 100644
--- a/src/devices/machine/68340.cpp
+++ b/src/devices/machine/68340.cpp
@@ -5,24 +5,22 @@
#include "emu.h"
#include "68340.h"
-const device_type M68340 = device_creator<m68340cpu_device>;
+DEFINE_DEVICE_TYPE(M68340, m68340_cpu_device, "mc68340", "MC68340")
-int m68340_calc_cs(m68340cpu_device *m68k, offs_t address)
+int m68340_cpu_device::calc_cs(offs_t address) const
{
- m68340_sim* sim = m68k->m68340SIM;
-
- if ( !(sim->m_ba[0] & 1) ) return 1;
+ if ( !(m68340SIM->m_ba[0] & 1) ) return 1;
for (int i=0;i<4;i++)
{
- if (sim->m_ba[i] & 1)
+ if (m68340SIM->m_ba[i] & 1)
{
- int mask = ((sim->m_am[i]&0xffffff00) | 0xff);
- int base = sim->m_ba[i] & 0xffffff00;
- int fcmask = (sim->m_am[i] & 0xf0);
- int fcbase = (sim->m_ba[i] & 0xf0) & ~(sim->m_am[i] & 0xf0);
- int fc = m68k->mmu_tmp_fc;
+ int mask = ((m68340SIM->m_am[i]&0xffffff00) | 0xff);
+ int base = m68340SIM->m_ba[i] & 0xffffff00;
+ int fcmask = (m68340SIM->m_am[i] & 0xf0);
+ int fcbase = (m68340SIM->m_ba[i] & 0xf0) & ~(m68340SIM->m_am[i] & 0xf0);
+ int fc = mmu_tmp_fc;
if ((address & ~mask) == base && ((fc << 4) & ~fcmask ) == fcbase ) return i+1;
}
@@ -33,61 +31,58 @@ int m68340_calc_cs(m68340cpu_device *m68k, offs_t address)
-uint16_t m68340cpu_device::get_cs(offs_t address)
+uint16_t m68340_cpu_device::get_cs(offs_t address)
{
- m68340_currentcs = m68340_calc_cs(this, address);
+ m_currentcs = calc_cs(address);
- return m68340_currentcs;
+ return m_currentcs;
}
/* 68340 specifics - MOVE */
-READ32_MEMBER( m68340cpu_device::m68340_internal_base_r )
+READ32_MEMBER( m68340_cpu_device::m68340_internal_base_r )
{
- m68340cpu_device *m68k = this;
int pc = space.device().safe_pc();
logerror("%08x m68340_internal_base_r %08x, (%08x)\n", pc, offset*4,mem_mask);
- return m68k->m68340_base;
+ return m68340_base;
}
-WRITE32_MEMBER( m68340cpu_device::m68340_internal_base_w )
+WRITE32_MEMBER( m68340_cpu_device::m68340_internal_base_w )
{
- m68340cpu_device *m68k = this;
-
int pc = space.device().safe_pc();
logerror("%08x m68340_internal_base_w %08x, %08x (%08x)\n", pc, offset*4,data,mem_mask);
// other conditions?
- if (m68k->dfc==0x7)
+ if (dfc==0x7)
{
// unmap old modules
- if (m68k->m68340_base&1)
+ if (m68340_base&1)
{
- int base = m68k->m68340_base & 0xfffff000;
+ int base = m68340_base & 0xfffff000;
- m68k->internal->unmap_readwrite(base + 0x000, base + 0x05f);
- m68k->internal->unmap_readwrite(base + 0x600, base + 0x67f);
- m68k->internal->unmap_readwrite(base + 0x700, base + 0x723);
- m68k->internal->unmap_readwrite(base + 0x780, base + 0x7bf);
+ internal->unmap_readwrite(base + 0x000, base + 0x05f);
+ internal->unmap_readwrite(base + 0x600, base + 0x67f);
+ internal->unmap_readwrite(base + 0x700, base + 0x723);
+ internal->unmap_readwrite(base + 0x780, base + 0x7bf);
}
- COMBINE_DATA(&m68k->m68340_base);
+ COMBINE_DATA(&m68340_base);
logerror("%08x m68340_internal_base_w %08x, %08x (%08x) (m68340_base write)\n", pc, offset*4,data,mem_mask);
// map new modules
- if (m68k->m68340_base&1)
+ if (m68340_base&1)
{
- int base = m68k->m68340_base & 0xfffff000;
+ int base = m68340_base & 0xfffff000;
- m68k->internal->install_readwrite_handler(base + 0x000, base + 0x03f, read16_delegate(FUNC(m68340cpu_device::m68340_internal_sim_r),this), write16_delegate(FUNC(m68340cpu_device::m68340_internal_sim_w),this),0xffffffff);
- m68k->internal->install_readwrite_handler(base + 0x010, base + 0x01f, read8_delegate(FUNC(m68340cpu_device::m68340_internal_sim_ports_r),this),write8_delegate(FUNC(m68340cpu_device::m68340_internal_sim_ports_w),this),0xffffffff);
- m68k->internal->install_readwrite_handler(base + 0x040, base + 0x05f, read32_delegate(FUNC(m68340cpu_device::m68340_internal_sim_cs_r),this), write32_delegate(FUNC(m68340cpu_device::m68340_internal_sim_cs_w),this));
- m68k->internal->install_readwrite_handler(base + 0x600, base + 0x67f, read32_delegate(FUNC(m68340cpu_device::m68340_internal_timer_r),this), write32_delegate(FUNC(m68340cpu_device::m68340_internal_timer_w),this));
- m68k->internal->install_readwrite_handler(base + 0x700, base + 0x723, read32_delegate(FUNC(m68340cpu_device::m68340_internal_serial_r),this), write32_delegate(FUNC(m68340cpu_device::m68340_internal_serial_w),this));
- m68k->internal->install_readwrite_handler(base + 0x780, base + 0x7bf, read32_delegate(FUNC(m68340cpu_device::m68340_internal_dma_r),this), write32_delegate(FUNC(m68340cpu_device::m68340_internal_dma_w),this));
+ internal->install_readwrite_handler(base + 0x000, base + 0x03f, read16_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_r),this), write16_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_w),this),0xffffffff);
+ internal->install_readwrite_handler(base + 0x010, base + 0x01f, read8_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_ports_r),this),write8_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_ports_w),this),0xffffffff);
+ internal->install_readwrite_handler(base + 0x040, base + 0x05f, read32_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_cs_r),this), write32_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_cs_w),this));
+ internal->install_readwrite_handler(base + 0x600, base + 0x67f, read32_delegate(FUNC(m68340_cpu_device::m68340_internal_timer_r),this), write32_delegate(FUNC(m68340_cpu_device::m68340_internal_timer_w),this));
+ internal->install_readwrite_handler(base + 0x700, base + 0x723, read32_delegate(FUNC(m68340_cpu_device::m68340_internal_serial_r),this), write32_delegate(FUNC(m68340_cpu_device::m68340_internal_serial_w),this));
+ internal->install_readwrite_handler(base + 0x780, base + 0x7bf, read32_delegate(FUNC(m68340_cpu_device::m68340_internal_dma_r),this), write32_delegate(FUNC(m68340_cpu_device::m68340_internal_dma_w),this));
}
@@ -102,7 +97,7 @@ WRITE32_MEMBER( m68340cpu_device::m68340_internal_base_w )
}
-static ADDRESS_MAP_START( m68340_internal_map, AS_PROGRAM, 32, m68340cpu_device )
+static ADDRESS_MAP_START( m68340_internal_map, AS_PROGRAM, 32, m68340_cpu_device )
AM_RANGE(0x0003ff00, 0x0003ff03) AM_READWRITE( m68340_internal_base_r, m68340_internal_base_w)
ADDRESS_MAP_END
@@ -110,8 +105,8 @@ ADDRESS_MAP_END
-m68340cpu_device::m68340cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : fscpu32_device(mconfig, "MC68340", tag, owner, clock, M68340, 32,32, ADDRESS_MAP_NAME(m68340_internal_map), "mc68340", __FILE__)
+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_NAME(m68340_internal_map))
{
m68340SIM = nullptr;
m68340DMA = nullptr;
@@ -125,13 +120,13 @@ m68340cpu_device::m68340cpu_device(const machine_config &mconfig, const char *ta
-void m68340cpu_device::device_reset()
+void m68340_cpu_device::device_reset()
{
fscpu32_device::device_reset();
}
-void m68340cpu_device::device_start()
+void m68340_cpu_device::device_start()
{
fscpu32_device::device_start();