1
0
mirror of https://github.com/mnaberez/py65.git synced 2024-09-16 00:59:06 +00:00

Added 65C02 instruction ORA (ZP).

This commit is contained in:
Mike Naberezny 2009-04-08 18:30:44 -07:00
parent 59bc652a48
commit 623118ec3c
2 changed files with 32 additions and 0 deletions

View File

@ -43,6 +43,11 @@ class MPU(NMOS6502):
self.memory[address] = m & ~self.a
# instructions
@instruction(name="ORA", mode="zpi", cycles=5)
def i12(self):
self.opORA(self.IndirectXAddr)
self.pc += 1
@instruction(name="PHY", mode="imp", cycles=3)
def i5a(self):

View File

@ -38,6 +38,33 @@ class MPUTests(unittest.TestCase, Common6502Tests):
self.assertEquals(mpu.ZERO, mpu.flags & mpu.ZERO)
self.assertEquals(0, mpu.flags & mpu.NEGATIVE)
# ORA Zero Page, Indirect
def test_ora_zp_indirect_x_zeroes_or_zeros_sets_z_flag(self):
mpu = self._make_mpu()
mpu.flags &= ~(mpu.ZERO)
mpu.a = 0x00
self._write(mpu.memory, 0x0000, (0x12, 0x10)) #=> ORA ($0010)
self._write(mpu.memory, 0x0010, (0xCD, 0xAB)) #=> Vector to $ABCD
mpu.memory[0xABCD] = 0x00
mpu.step()
self.assertEquals(0x0002, mpu.pc)
self.assertEquals(0x00, mpu.a)
self.assertEquals(mpu.ZERO, mpu.flags & mpu.ZERO)
def test_ora_zp_indirect_x_turns_bits_on_sets_n_flag(self):
mpu = self._make_mpu()
mpu.flags &= ~(mpu.NEGATIVE)
mpu.a = 0x03
self._write(mpu.memory, 0x0000, (0x12, 0x10)) #=> ORA ($0010)
self._write(mpu.memory, 0x0010, (0xCD, 0xAB)) #=> Vector to $ABCD
mpu.memory[0xABCD] = 0x82
mpu.step()
self.assertEquals(0x0002, mpu.pc)
self.assertEquals(0x83, mpu.a)
self.assertEquals(mpu.NEGATIVE, mpu.flags & mpu.NEGATIVE)
self.assertEquals(0, mpu.flags & mpu.ZERO)
# PHX
def test_phx_pushes_x_and_updates_sp(self):