mirror of
https://github.com/TomHarte/CLK.git
synced 2025-11-02 18:16:08 +00:00
Elide ADC logic.
This commit is contained in:
@@ -33,16 +33,15 @@ void anc(RegistersT ®isters, const uint8_t operand) {
|
||||
|
||||
template <Model model, typename RegistersT>
|
||||
void adc(RegistersT ®isters, const uint8_t operand) {
|
||||
uint8_t result = registers.a + operand + registers.flags.carry;
|
||||
registers.flags.carry = result < registers.a + registers.flags.carry;
|
||||
|
||||
if(!has_decimal_mode(model) || !registers.flags.decimal) {
|
||||
const uint8_t result = registers.a + operand + registers.flags.carry;
|
||||
registers.flags.carry = result < registers.a + registers.flags.carry;
|
||||
registers.flags.set_v(result, registers.a, operand);
|
||||
registers.flags.set_nz(registers.a = result);
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t result = registers.a + operand + registers.flags.carry;
|
||||
registers.flags.carry = Numeric::carried_out<Numeric::Operation::Add, 7>(registers.a, operand, result);
|
||||
if constexpr (!is_65c02(model)) {
|
||||
registers.flags.zero_result = result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user