From efe354a7b1e2eac58270ff37dd266ba757383b3b Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 25 May 2017 22:55:04 -0400 Subject: [PATCH] Fixed half carry after logical operation.s --- Processors/Z80/Z80.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Processors/Z80/Z80.hpp b/Processors/Z80/Z80.hpp index 4e31fff43..58c2f1eb1 100644 --- a/Processors/Z80/Z80.hpp +++ b/Processors/Z80/Z80.hpp @@ -595,6 +595,7 @@ template class Processor: public MicroOpScheduler { case MicroOp::And: a_ &= *(uint8_t *)operation->source; + half_carry_flag_ = Flag::HalfCarry; sign_result_ = zero_result_ = bit5_result_ = bit3_result_ = a_; parity_overflow_flag_ = 0; set_parity(a_); @@ -602,6 +603,7 @@ template class Processor: public MicroOpScheduler { case MicroOp::Or: a_ |= *(uint8_t *)operation->source; + half_carry_flag_ = 0; sign_result_ = zero_result_ = bit5_result_ = bit3_result_ = a_; parity_overflow_flag_ = 0; set_parity(a_); @@ -609,6 +611,7 @@ template class Processor: public MicroOpScheduler { case MicroOp::Xor: a_ ^= *(uint8_t *)operation->source; + half_carry_flag_ = 0; sign_result_ = zero_result_ = bit5_result_ = bit3_result_ = a_; parity_overflow_flag_ = 0; set_parity(a_);