diff --git a/Intel8080/inc/Intel8080.h b/Intel8080/inc/Intel8080.h index d744ca8..061a5cf 100644 --- a/Intel8080/inc/Intel8080.h +++ b/Intel8080/inc/Intel8080.h @@ -36,6 +36,8 @@ namespace EightBit { virtual register16_t& DE() override; virtual register16_t& HL() override; + virtual void reset() override; + private: bool m_interruptEnable = false; bool m_intLine = false; diff --git a/Intel8080/src/Intel8080.cpp b/Intel8080/src/Intel8080.cpp index 3aa319c..e9c6c9e 100644 --- a/Intel8080/src/Intel8080.cpp +++ b/Intel8080/src/Intel8080.cpp @@ -25,6 +25,12 @@ EightBit::register16_t& EightBit::Intel8080::HL() { return hl; } +void EightBit::Intel8080::reset() { + IntelProcessor::reset(); + INT() = false; + di(); +} + void EightBit::Intel8080::di() { m_interruptEnable = false; } diff --git a/Z80/src/Z80.cpp b/Z80/src/Z80.cpp index af30fe5..d4acfb4 100644 --- a/Z80/src/Z80.cpp +++ b/Z80/src/Z80.cpp @@ -28,6 +28,7 @@ void EightBit::Z80::reset() { IntelProcessor::reset(); + INT() = NMI() = false; di(); IM() = 0; @@ -662,9 +663,8 @@ int EightBit::Z80::step() { if (IFF1()) { di(); switch (IM()) { - case 0: + case 0: // i8080 equivalent return execute(BUS().DATA()); - break; case 1: restart(7 << 3); addCycles(13);