1
0
mirror of https://github.com/mnaberez/py65.git synced 2024-06-01 18:41:32 +00:00

Add tests for page wrapping

This commit is contained in:
Mike Naberezny 2014-01-22 14:40:18 -08:00
parent ecf15d6171
commit 303cb30f37

View File

@ -2769,7 +2769,7 @@ class Common6502Tests:
self.assertEqual(mpu.NEGATIVE, mpu.p & mpu.NEGATIVE)
self.assertEqual(0, mpu.p & mpu.ZERO)
def test_lda_abs_x_indexed_loads_x_sets_z_flag(self):
def test_lda_abs_x_indexed_loads_a_sets_z_flag(self):
mpu = self._make_mpu()
mpu.a = 0xFF
mpu.x = 0x03
@ -2782,6 +2782,17 @@ class Common6502Tests:
self.assertEqual(mpu.ZERO, mpu.p & mpu.ZERO)
self.assertEqual(0, mpu.p & mpu.NEGATIVE)
def test_lda_abs_x_indexed_does_not_page_wrap(self):
mpu = self._make_mpu()
mpu.a = 0
mpu.x = 0xFF
# $0000 LDA $0080,X
self._write(mpu.memory, 0x0000, (0xBD, 0x80, 0x00))
mpu.memory[0x0080 + mpu.x] = 0x42
mpu.step()
self.assertEqual(0x0003, mpu.pc)
self.assertEqual(0x42, mpu.a)
# LDA Absolute, Y-Indexed
def test_lda_abs_y_indexed_loads_a_sets_n_flag(self):
@ -2810,6 +2821,17 @@ class Common6502Tests:
self.assertEqual(mpu.ZERO, mpu.p & mpu.ZERO)
self.assertEqual(0, mpu.p & mpu.NEGATIVE)
def test_lda_abs_y_indexed_does_not_page_wrap(self):
mpu = self._make_mpu()
mpu.a = 0
mpu.y = 0xFF
# $0000 LDA $0080,X
self._write(mpu.memory, 0x0000, (0xB9, 0x80, 0x00))
mpu.memory[0x0080 + mpu.y] = 0x42
mpu.step()
self.assertEqual(0x0003, mpu.pc)
self.assertEqual(0x42, mpu.a)
# LDA Indirect, Indexed (X)
def test_lda_ind_indexed_x_loads_a_sets_n_flag(self):
@ -2876,11 +2898,11 @@ class Common6502Tests:
# LDA Zero Page, X-Indexed
def test_lda_zp_x_indexed_loads_x_sets_n_flag(self):
def test_lda_zp_x_indexed_loads_a_sets_n_flag(self):
mpu = self._make_mpu()
mpu.a = 0x00
mpu.x = 0x03
# $0000 LDA $0010,X
# $0000 LDA $10,X
self._write(mpu.memory, 0x0000, (0xB5, 0x10))
mpu.memory[0x0010 + mpu.x] = 0x80
mpu.step()
@ -2889,11 +2911,11 @@ class Common6502Tests:
self.assertEqual(mpu.NEGATIVE, mpu.p & mpu.NEGATIVE)
self.assertEqual(0, mpu.p & mpu.ZERO)
def test_lda_zp_x_indexed_loads_x_sets_z_flag(self):
def test_lda_zp_x_indexed_loads_a_sets_z_flag(self):
mpu = self._make_mpu()
mpu.a = 0xFF
mpu.x = 0x03
# $0000 LDA $0010,X
# $0000 LDA $10,X
self._write(mpu.memory, 0x0000, (0xB5, 0x10))
mpu.memory[0x0010 + mpu.x] = 0x00
mpu.step()
@ -2902,6 +2924,17 @@ class Common6502Tests:
self.assertEqual(mpu.ZERO, mpu.p & mpu.ZERO)
self.assertEqual(0, mpu.p & mpu.NEGATIVE)
def test_lda_zp_x_indexed_page_wraps(self):
mpu = self._make_mpu()
mpu.a = 0x00
mpu.x = 0xFF
# $0000 LDA $80,X
self._write(mpu.memory, 0x0000, (0xB5, 0x80))
mpu.memory[0x007F] = 0x42
mpu.step()
self.assertEqual(0x0002, mpu.pc)
self.assertEqual(0x42, mpu.a)
# LDX Absolute
def test_ldx_absolute_loads_x_sets_n_flag(self):
@ -5619,7 +5652,7 @@ class Common6502Tests:
mpu.step()
self.assertEqual(0x31, mpu.a)
def test_zeropage_ind_indexed_indexwrap(self):
def test_zeropage_ind_indexed_index_wrap(self):
mpu = self._make_mpu()
mpu.x = 0xff
mpu.memory[0xa100] = 0x31
@ -5633,7 +5666,7 @@ class Common6502Tests:
mpu = self._make_mpu()
mpu.x = 0xff
mpu.memory[0x00ff] = 0
# $0000 LDA ($00,X)
# $0000 LDA ($00,X)
self._write(mpu.memory, 0, (0x6c, 0xff, 0x00))
mpu.step()
self.assertEqual(0x6c00, mpu.pc)