diff options
Diffstat (limited to 'src/devices/cpu/ie15')
-rw-r--r-- | src/devices/cpu/ie15/ie15.cpp | 29 | ||||
-rw-r--r-- | src/devices/cpu/ie15/ie15.h | 14 |
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 |