summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mc68hc11/mc68hc11.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/mc68hc11/mc68hc11.cpp')
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.cpp b/src/devices/cpu/mc68hc11/mc68hc11.cpp
index 4469be598ca..30ef3a30c45 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.cpp
+++ b/src/devices/cpu/mc68hc11/mc68hc11.cpp
@@ -16,6 +16,8 @@ TODO:
#include "mc68hc11.h"
#include "hc11dasm.h"
+#include <tuple>
+
#define LOG_IRQ (1U << 1)
#define VERBOSE (0)
@@ -163,12 +165,15 @@ std::unique_ptr<util::disasm_interface> mc68hc11_cpu_device::create_disassembler
bool mc68hc11_cpu_device::nvram_read(util::read_stream &file)
{
+ std::error_condition err;
size_t actual;
- if (file.read(&m_eeprom_data[0], m_internal_eeprom_size, actual) || actual != m_internal_eeprom_size)
+ std::tie(err, actual) = read(file, &m_eeprom_data[0], m_internal_eeprom_size);
+ if (err || (actual != m_internal_eeprom_size))
return false;
- if (file.read(&m_config, 1, actual) || actual != 1)
+ std::tie(err, actual) = read(file, &m_config, 1);
+ if (err || (actual != 1))
return false;
return true;
@@ -176,12 +181,15 @@ bool mc68hc11_cpu_device::nvram_read(util::read_stream &file)
bool mc68hc11_cpu_device::nvram_write(util::write_stream &file)
{
+ std::error_condition err;
size_t actual;
- if (file.write(&m_eeprom_data[0], m_internal_eeprom_size, actual) || actual != m_internal_eeprom_size)
+ std::tie(err, actual) = write(file, &m_eeprom_data[0], m_internal_eeprom_size);
+ if (err)
return false;
- if (file.write(&m_config, 1, actual) || actual != 1)
+ std::tie(err, actual) = write(file, &m_config, 1);
+ if (err)
return false;
return true;
@@ -1214,10 +1222,18 @@ void mc68hc11_cpu_device::execute_run()
check_irq_lines();
- m_ppc = m_pc;
- debugger_instruction_hook(m_pc);
+ if (m_wait_state != 0)
+ {
+ debugger_wait_hook();
+ m_icount = 0;
+ }
+ else
+ {
+ m_ppc = m_pc;
+ debugger_instruction_hook(m_pc);
- op = FETCH();
- (this->*hc11_optable[op])();
+ op = FETCH();
+ (this->*hc11_optable[op])();
+ }
}
}