From 4b4aad765806e916e7a8c9cd776bf3195cc33f67 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Mon, 15 Apr 2024 22:14:28 +0200 Subject: [PATCH] - [FIX] Interrupts now exit CPU from HALT --- z80.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/z80.cpp b/z80.cpp index c6ca624..25b6309 100644 --- a/z80.cpp +++ b/z80.cpp @@ -83,6 +83,7 @@ namespace z80 uint8_t *_rW = (uint8_t*)®s[27]; uint8_t iff1, iff2, im; + bool exit_from_halt = false; #define rA (*_rA) #define rF (*_rF) @@ -585,6 +586,7 @@ namespace z80 void interrupt() { if (!iff1) return; + exit_from_halt = true; PUSH(rPC); rPC = 0x38; } @@ -620,8 +622,12 @@ namespace z80 void HALT() { - printf("HALT\n"); - rPC--; + if (exit_from_halt) { + exit_from_halt = false; + } else { + printf("HALT\n"); + rPC--; + } } static inline const uint8_t RLC(const uint8_t v)