mirror of
https://github.com/mnaberez/py65.git
synced 2025-02-08 01:31:07 +00:00
Added 65C02 instruction STA (ZP).
This commit is contained in:
parent
e61b29dbcd
commit
9876bdb8fa
@ -80,8 +80,13 @@ class MPU(NMOS6502):
|
||||
|
||||
@instruction(name="PHY", mode="imp", cycles=4)
|
||||
def i7a(self):
|
||||
self.y = self.stPop()
|
||||
self.FlagsNZ(self.y)
|
||||
self.y = self.stPop()
|
||||
self.FlagsNZ(self.y)
|
||||
|
||||
@instruction(name="STA", mode="zpi", cycles=5)
|
||||
def i92(self):
|
||||
self.opSTA(self.ZeroPageIndirectAddr)
|
||||
self.pc += 1
|
||||
|
||||
@instruction(name="STZ", mode="abs", cycles=4)
|
||||
def i9c(self):
|
||||
@ -104,36 +109,36 @@ class MPU(NMOS6502):
|
||||
|
||||
@instruction(name="PLX", mode="imp", cycles=4)
|
||||
def ifa(self):
|
||||
self.x = self.stPop()
|
||||
self.FlagsNZ(self.x)
|
||||
self.x = self.stPop()
|
||||
self.FlagsNZ(self.x)
|
||||
|
||||
@instruction(name="TSB", mode="zpg", cycles=5)
|
||||
def i04(self):
|
||||
self.opTSB(self.ZeroPageAddr)
|
||||
self.pc += 1
|
||||
self.opTSB(self.ZeroPageAddr)
|
||||
self.pc += 1
|
||||
|
||||
@instruction(name="TSB", mode="abs", cycles=6)
|
||||
def i0c(self):
|
||||
self.opTSB(self.AbsoluteAddr)
|
||||
self.pc += 2
|
||||
self.opTSB(self.AbsoluteAddr)
|
||||
self.pc += 2
|
||||
|
||||
@instruction(name="TSB", mode="zpg", cycles=5)
|
||||
def i04(self):
|
||||
self.opTSB(self.ZeroPageAddr)
|
||||
self.pc += 1
|
||||
self.opTSB(self.ZeroPageAddr)
|
||||
self.pc += 1
|
||||
|
||||
@instruction(name="TSB", mode="abs", cycles=6)
|
||||
def i0c(self):
|
||||
self.opTSB(self.AbsoluteAddr)
|
||||
self.pc += 2
|
||||
self.opTSB(self.AbsoluteAddr)
|
||||
self.pc += 2
|
||||
|
||||
@instruction(name="TRB", mode="zpg", cycles=5)
|
||||
def i14(self):
|
||||
self.opTRB(self.ZeroPageAddr)
|
||||
self.pc += 1
|
||||
self.opTRB(self.ZeroPageAddr)
|
||||
self.pc += 1
|
||||
|
||||
@instruction(name="TRB", mode="abs", cycles=6)
|
||||
def i1c(self):
|
||||
self.opTRB(self.AbsoluteAddr)
|
||||
self.pc += 2
|
||||
self.opTRB(self.AbsoluteAddr)
|
||||
self.pc += 2
|
||||
|
||||
|
@ -250,6 +250,36 @@ class MPUTests(unittest.TestCase, Common6502Tests):
|
||||
self.assertEquals(0xAB, mpu.y)
|
||||
self.assertEquals(0xFF, mpu.sp)
|
||||
self.assertEquals(4, mpu.processorCycles)
|
||||
|
||||
# STA Zero Page, Indirect
|
||||
|
||||
def test_sta_zp_indirect_stores_a_leaves_a_and_n_flag_unchanged(self):
|
||||
mpu = self._make_mpu()
|
||||
mpu.flags = flags = 0xFF & ~(mpu.NEGATIVE)
|
||||
mpu.a = 0xFF
|
||||
self._write(mpu.memory, 0x0000, (0x92, 0x10)) #=> STA ($0010)
|
||||
self._write(mpu.memory, 0x0010, (0xED, 0xFE)) #=> Vector to $FEED
|
||||
mpu.memory[0xFEED] = 0x00
|
||||
mpu.step()
|
||||
self.assertEquals(0x0002, mpu.pc)
|
||||
self.assertEquals(5, mpu.processorCycles)
|
||||
self.assertEquals(0xFF, mpu.memory[0xFEED])
|
||||
self.assertEquals(0xFF, mpu.a)
|
||||
self.assertEquals(flags, mpu.flags)
|
||||
|
||||
def test_sta_zp_indirect_stores_a_leaves_a_and_z_flag_unchanged(self):
|
||||
mpu = self._make_mpu()
|
||||
mpu.flags = flags = 0xFF & ~(mpu.ZERO)
|
||||
mpu.a = 0x00
|
||||
self._write(mpu.memory, 0x0000, (0x92, 0x10)) #=> STA ($0010)
|
||||
self._write(mpu.memory, 0x0010, (0xED, 0xFE)) #=> Vector to $FEED
|
||||
mpu.memory[0xFEED] = 0xFF
|
||||
mpu.step()
|
||||
self.assertEquals(0x0002, mpu.pc)
|
||||
self.assertEquals(5, mpu.processorCycles)
|
||||
self.assertEquals(0x00, mpu.memory[0xFEED])
|
||||
self.assertEquals(0x00, mpu.a)
|
||||
self.assertEquals(flags, mpu.flags)
|
||||
|
||||
# STZ Zero Page
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user