1
0
mirror of https://github.com/TomHarte/CLK.git synced 2026-01-23 01:16:10 +00:00

Make overflow private.

This commit is contained in:
Thomas Harte
2025-10-28 20:49:59 -04:00
parent b3f01fe314
commit 5aa9168dd6
2 changed files with 6 additions and 6 deletions

View File

@@ -141,7 +141,7 @@ void arr(RegistersT &registers, const uint8_t operand) {
const uint8_t unshifted_a = registers.a;
registers.a = uint8_t((registers.a >> 1) | (registers.flags.carry_value() << 7));
registers.flags.template set_per<Flag::NegativeZero>(registers.a);
registers.flags.overflow = (registers.a^(registers.a << 1))&Flag::Overflow;
registers.flags.template set_per<Flag::Overflow>(registers.a ^ (registers.a << 1));
if(registers.flags.template get<Flag::Decimal>() && has_decimal_mode(model)) {
if((unshifted_a&0xf) + (unshifted_a&0x1) > 5) registers.a = ((registers.a + 6)&0xf) | (registers.a & 0xf0);
@@ -240,7 +240,7 @@ template <typename RegistersT>
void bit(RegistersT &registers, const uint8_t operand) {
registers.flags.template set_per<Flag::Zero>(operand & registers.a);
registers.flags.template set_per<Flag::Negative>(operand);
registers.flags.overflow = operand & Flag::Overflow;
registers.flags.template set_per<Flag::Overflow>(operand);
}
template <typename RegistersT>
@@ -315,8 +315,8 @@ bool test(const Operation operation, RegistersT &registers) {
case Operation::BPL: return !registers.flags.template get<Flag::Negative>();
case Operation::BMI: return registers.flags.template get<Flag::Negative>();
case Operation::BVC: return !registers.flags.overflow;
case Operation::BVS: return registers.flags.overflow;
case Operation::BVC: return !registers.flags.template get<Flag::Overflow>();
case Operation::BVS: return registers.flags.template get<Flag::Overflow>();
case Operation::BCC: return !registers.flags.template get<Flag::Carry>();
case Operation::BCS: return registers.flags.template get<Flag::Carry>();
case Operation::BNE: return !registers.flags.template get<Flag::Zero>();
@@ -371,7 +371,7 @@ void perform(
case Operation::CLC: registers.flags.template set_per<Flag::Carry>(0); break;
case Operation::CLI: registers.flags.template set_per<Flag::Interrupt>(0); break;
case Operation::CLV: registers.flags.overflow = 0; break;
case Operation::CLV: registers.flags.template set_per<Flag::Overflow>(0); break;
case Operation::CLD: registers.flags.template set_per<Flag::Decimal>(0); break;
case Operation::SEC: registers.flags.template set_per<Flag::Carry>(Flag::Carry); break;
case Operation::SEI: registers.flags.template set_per<Flag::Interrupt>(Flag::Interrupt); break;

View File

@@ -169,8 +169,8 @@ struct Flags {
return static_cast<uint8_t>(*this) <=> static_cast<uint8_t>(rhs);
}
uint8_t overflow = 0; /// Contains Flag::Overflow.
private:
uint8_t overflow = 0; /// Contains Flag::Overflow.
uint8_t carry = 0; /// Contains Flag::Carry.
uint8_t negative_result = 0; /// Bit 7 = the negative flag.
uint8_t zero_result = 0; /// Non-zero if the zero flag is clear, zero if it is set.