summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/ie15
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/ie15')
-rw-r--r--src/devices/cpu/ie15/ie15.cpp29
-rw-r--r--src/devices/cpu/ie15/ie15.h14
2 files changed, 20 insertions, 23 deletions
diff --git a/src/devices/cpu/ie15/ie15.cpp b/src/devices/cpu/ie15/ie15.cpp
index 90a58f83e9f..d3f512c9711 100644
--- a/src/devices/cpu/ie15/ie15.cpp
+++ b/src/devices/cpu/ie15/ie15.cpp
@@ -4,8 +4,6 @@
#include "ie15.h"
#include "ie15dasm.h"
-#include "debugger.h"
-
//**************************************************************************
// MACROS
@@ -35,7 +33,6 @@ ie15_cpu_device::ie15_cpu_device(const machine_config &mconfig, const char *tag,
: cpu_device(mconfig, IE15_CPU, tag, owner, clock)
, m_program_config("program", ENDIANNESS_LITTLE, 8, 14)
, m_io_config("io", ENDIANNESS_LITTLE, 8, 8), m_A(0), m_CF(0), m_ZF(0), m_RF(0), m_flags(0)
- , m_program(nullptr), m_io(nullptr), m_cache(nullptr)
{
// set our instruction counter
set_icountptr(m_icount);
@@ -48,9 +45,9 @@ ie15_cpu_device::ie15_cpu_device(const machine_config &mconfig, const char *tag,
void ie15_cpu_device::device_start()
{
// find address spaces
- m_program = &space(AS_PROGRAM);
- m_cache = m_program->cache<0, 0, ENDIANNESS_LITTLE>();
- m_io = &space(AS_IO);
+ space(AS_PROGRAM).cache(m_cache);
+ space(AS_PROGRAM).specific(m_program);
+ space(AS_IO).specific(m_io);
// save state
save_item(NAME(m_PC));
@@ -167,7 +164,7 @@ std::unique_ptr<util::disasm_interface> ie15_cpu_device::create_disassembler()
// cycles it takes for one instruction to execute
//-------------------------------------------------
-uint32_t ie15_cpu_device::execute_min_cycles() const
+uint32_t ie15_cpu_device::execute_min_cycles() const noexcept
{
return 1;
}
@@ -177,7 +174,7 @@ uint32_t ie15_cpu_device::execute_min_cycles() const
// cycles it takes for one instruction to execute
//-------------------------------------------------
-uint32_t ie15_cpu_device::execute_max_cycles() const
+uint32_t ie15_cpu_device::execute_max_cycles() const noexcept
{
return 1;
}
@@ -189,7 +186,7 @@ uint32_t ie15_cpu_device::execute_max_cycles() const
void ie15_cpu_device::execute_run()
{
// Removing the hook entirely is considerably faster than calling it for every instruction if the debugger is disabled entirely
- if (machine().debug_flags & DEBUG_FLAG_ENABLED)
+ if (debugger_enabled())
{
do
{
@@ -208,7 +205,7 @@ void ie15_cpu_device::execute_run()
inline void ie15_cpu_device::illegal(uint8_t opcode)
{
- if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0)
+ if (debugger_enabled())
{
logerror("IE15 illegal instruction %04X $%02X\n", m_PC.w.l, opcode);
}
@@ -322,7 +319,7 @@ inline void ie15_cpu_device::execute_one(int opcode)
if (opcode == 0x67)
m_A = 255;
else
- m_A = m_io->read_byte(opcode & 15);
+ m_A = m_io.read_byte(opcode & 15);
update_flags(m_A);
break;
case 0xf0: // ota
@@ -332,7 +329,7 @@ inline void ie15_cpu_device::execute_one(int opcode)
else if (opcode == 0xff)
m_RF = 0;
else
- m_io->write_byte(opcode & 15, m_A);
+ m_io.write_byte(opcode & 15, m_A);
// m_CF = 0;
break;
case 0xc0: // cfl, sfl
@@ -344,7 +341,7 @@ inline void ie15_cpu_device::execute_one(int opcode)
m_CF = 0;
break;
default:
- m_io->write_byte(020 | (opcode & 7), BIT(opcode, 3));
+ m_io.write_byte(020 | (opcode & 7), BIT(opcode, 3));
break;
}
break;
@@ -362,7 +359,7 @@ inline void ie15_cpu_device::execute_one(int opcode)
tmp = 0;
break;
default:
- tmp = m_io->read_byte(020 | tmp);
+ tmp = m_io.read_byte(020 | tmp);
break;
}
@@ -406,14 +403,14 @@ inline void ie15_cpu_device::execute_one(int opcode)
inline uint8_t ie15_cpu_device::rop()
{
- uint8_t retVal = m_cache->read_byte(m_PC.w.l);
+ uint8_t retVal = m_cache.read_byte(m_PC.w.l);
m_PC.w.l = (m_PC.w.l + 1) & 0x0fff;
return retVal;
}
inline uint8_t ie15_cpu_device::arg()
{
- uint8_t retVal = m_cache->read_byte(m_PC.w.l);
+ uint8_t retVal = m_cache.read_byte(m_PC.w.l);
return retVal;
}
diff --git a/src/devices/cpu/ie15/ie15.h b/src/devices/cpu/ie15/ie15.h
index 6b4b21e8dfc..771e2c0b326 100644
--- a/src/devices/cpu/ie15/ie15.h
+++ b/src/devices/cpu/ie15/ie15.h
@@ -27,12 +27,12 @@ protected:
};
// device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
// device_execute_interface overrides
- virtual uint32_t execute_min_cycles() const override;
- virtual uint32_t execute_max_cycles() const override;
+ virtual uint32_t execute_min_cycles() const noexcept override;
+ virtual uint32_t execute_max_cycles() const noexcept override;
virtual void execute_run() override;
// device_memory_interface overrides
@@ -72,9 +72,9 @@ protected:
uint8_t m_RF; // Current register page
uint8_t m_flags; // temporary I/O only
- address_space *m_program;
- address_space *m_io;
- memory_access_cache<0, 0, ENDIANNESS_LITTLE> *m_cache;
+ memory_access<14, 0, 0, ENDIANNESS_LITTLE>::cache m_cache;
+ memory_access<14, 0, 0, ENDIANNESS_LITTLE>::specific m_program;
+ memory_access< 8, 0, 0, ENDIANNESS_LITTLE>::specific m_io;
};
// device type definition