simplify calculating signed values in adc and sbc

This commit is contained in:
Greg Hewgill 2011-08-07 18:33:42 +12:00
parent 5a8b25b771
commit e961d7e00d

View File

@ -602,12 +602,10 @@ class CPU:
# @@@ doesn't handle BCD yet # @@@ doesn't handle BCD yet
assert not self.decimal_mode_flag assert not self.decimal_mode_flag
a1 = a2 = self.accumulator a2 = self.accumulator
if a1 & 0x80: a1 = signed(a2)
a1 = (a1 & 0x7F) - 0x80 m2 = self.memory.read_byte(operand_address)
m1 = m2 = self.memory.read_byte(operand_address) m1 = signed(m2)
if m1 & 0x80:
m1 = (m1 & 0x7F) - 0x80
# twos complement addition # twos complement addition
result1 = a1 + m1 + self.carry_flag result1 = a1 + m1 + self.carry_flag
@ -624,12 +622,10 @@ class CPU:
# @@@ doesn't handle BCD yet # @@@ doesn't handle BCD yet
assert not self.decimal_mode_flag assert not self.decimal_mode_flag
a1 = a2 = self.accumulator a2 = self.accumulator
if a1 & 0x80: a1 = signed(a2)
a1 = (a1 & 0x7F) - 0x80 m2 = self.memory.read_byte(operand_address)
m1 = m2 = self.memory.read_byte(operand_address) m1 = signed(m2)
if m1 & 0x80:
m1 = (m1 & 0x7F) - 0x80
# twos complement subtraction # twos complement subtraction
result1 = a1 - m1 - [1, 0][self.carry_flag] result1 = a1 - m1 - [1, 0][self.carry_flag]