reimplemented CMP, CPX and CPY based on 2006/2007 code

This commit is contained in:
James Tauber 2011-08-06 22:39:11 -04:00
parent 6fb2d79cda
commit 84bdef67cd
1 changed files with 9 additions and 12 deletions

View File

@ -639,22 +639,19 @@ class CPU:
# COMPARISON
def CMP(self, operand_address):
value = self.memory.read_byte(operand_address)
self.carry_flag = (self.accumulator >= value)
self.zero_flag = (self.accumulator == value)
self.sign_flag = (self.accumulator < 0x80) # @@@ is this right?
result = self.accumulator - self.memory.read_byte(operand_address)
self.carry_flag = (result >= 0)
self.update_nz(result)
def CPX(self, operand_address):
value = self.memory.read_byte(operand_address)
self.carry_flag = (self.x_index >= value)
self.zero_flag = (self.x_index == value)
self.sign_flag = (self.x_index < 0x80) # TODO: is this right?
result = self.x_index - self.memory.read_byte(operand_address)
self.carry_flag = (result >= 0)
self.update_nz(result)
def CPY(self, operand_address):
value = self.memory.read_byte(operand_address)
self.carry_flag = (self.y_index >= value)
self.zero_flag = (self.y_index == value)
self.sign_flag = (self.y_index < 0x80) # @@@ is this right?
result = self.y_index - self.memory.read_byte(operand_address)
self.carry_flag = (result >= 0)
self.update_nz(result)
# SYSTEM