diff --git a/src/main/java/com/loomcom/symon/Cpu.java b/src/main/java/com/loomcom/symon/Cpu.java index d881a70..8a1d714 100644 --- a/src/main/java/com/loomcom/symon/Cpu.java +++ b/src/main/java/com/loomcom/symon/Cpu.java @@ -126,7 +126,7 @@ public class Cpu implements InstructionTable { // Clear status register bits. state.carryFlag = false; state.zeroFlag = false; - state.irqDisableFlag = false; + state.irqDisableFlag = true; state.decimalModeFlag = false; state.breakFlag = false; state.overflowFlag = false; diff --git a/src/test/java/com/loomcom/symon/CpuAbsoluteModeTest.java b/src/test/java/com/loomcom/symon/CpuAbsoluteModeTest.java index 166b225..bd02f03 100644 --- a/src/test/java/com/loomcom/symon/CpuAbsoluteModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuAbsoluteModeTest.java @@ -29,7 +29,7 @@ public class CpuAbsoluteModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* @@ -169,7 +169,7 @@ public class CpuAbsoluteModeTest extends TestCase { assertEquals(0x04, bus.read(0x1fe, true)); // No flags should have changed. - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* BIT - Bit Test - $2c */ @@ -362,7 +362,7 @@ public class CpuAbsoluteModeTest extends TestCase { cpu.step(); assertEquals(0x3400, cpu.getProgramCounter()); // No change to status flags. - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* EOR - Exclusive OR - $4d */ diff --git a/src/test/java/com/loomcom/symon/CpuAbsoluteXModeTest.java b/src/test/java/com/loomcom/symon/CpuAbsoluteXModeTest.java index 38f0799..36fc874 100644 --- a/src/test/java/com/loomcom/symon/CpuAbsoluteXModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuAbsoluteXModeTest.java @@ -29,7 +29,7 @@ public class CpuAbsoluteXModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* diff --git a/src/test/java/com/loomcom/symon/CpuAbsoluteYModeTest.java b/src/test/java/com/loomcom/symon/CpuAbsoluteYModeTest.java index 02a1655..2ef2c87 100644 --- a/src/test/java/com/loomcom/symon/CpuAbsoluteYModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuAbsoluteYModeTest.java @@ -29,7 +29,7 @@ public class CpuAbsoluteYModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* diff --git a/src/test/java/com/loomcom/symon/CpuAccumulatorModeTest.java b/src/test/java/com/loomcom/symon/CpuAccumulatorModeTest.java index 7b51770..ab73902 100644 --- a/src/test/java/com/loomcom/symon/CpuAccumulatorModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuAccumulatorModeTest.java @@ -30,7 +30,7 @@ public class CpuAccumulatorModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* @@ -306,4 +306,4 @@ public class CpuAccumulatorModeTest extends TestCase { assertFalse(cpu.getCarryFlag()); } -} \ No newline at end of file +} diff --git a/src/test/java/com/loomcom/symon/CpuImmediateModeTest.java b/src/test/java/com/loomcom/symon/CpuImmediateModeTest.java index 148106d..ef64f2d 100644 --- a/src/test/java/com/loomcom/symon/CpuImmediateModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuImmediateModeTest.java @@ -29,7 +29,7 @@ public class CpuImmediateModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* diff --git a/src/test/java/com/loomcom/symon/CpuImpliedModeTest.java b/src/test/java/com/loomcom/symon/CpuImpliedModeTest.java index dd92edc..19d6a61 100644 --- a/src/test/java/com/loomcom/symon/CpuImpliedModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuImpliedModeTest.java @@ -33,7 +33,7 @@ public class CpuImpliedModeTest { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* @@ -76,6 +76,7 @@ public class CpuImpliedModeTest { public void test_BRK() throws MemoryAccessException { cpu.setCarryFlag(); cpu.setOverflowFlag(); + cpu.clearIrqDisableFlag(); assertEquals(0x20 | Cpu.P_CARRY | Cpu.P_OVERFLOW, cpu.getProcessorStatus()); assertEquals(0x00, cpu.stackPeek()); @@ -343,7 +344,7 @@ public class CpuImpliedModeTest { assertEquals(0, cpu.getYRegister()); assertEquals(0x201, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* PHA - Push Accumulator - $48 */ @@ -432,7 +433,7 @@ public class CpuImpliedModeTest { cpu.step(); assertEquals(0x0f12, cpu.getProgramCounter()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* SEC - Set Carry Flag - $38 */ @@ -641,4 +642,4 @@ public class CpuImpliedModeTest { assertFalse(cpu.getZeroFlag()); assertTrue(cpu.getNegativeFlag()); } -} \ No newline at end of file +} diff --git a/src/test/java/com/loomcom/symon/CpuIndexedIndirectModeTest.java b/src/test/java/com/loomcom/symon/CpuIndexedIndirectModeTest.java index 6c66bcb..2ce7375 100644 --- a/src/test/java/com/loomcom/symon/CpuIndexedIndirectModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuIndexedIndirectModeTest.java @@ -31,7 +31,7 @@ public class CpuIndexedIndirectModeTest { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } @Test @@ -105,4 +105,4 @@ public class CpuIndexedIndirectModeTest { assertEquals(0x11, cpu.getAccumulator()); assertEquals(0x31, bus.read(0xc51f, true)); } -} \ No newline at end of file +} diff --git a/src/test/java/com/loomcom/symon/CpuIndirectIndexedModeTest.java b/src/test/java/com/loomcom/symon/CpuIndirectIndexedModeTest.java index d309866..41d425e 100644 --- a/src/test/java/com/loomcom/symon/CpuIndirectIndexedModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuIndirectIndexedModeTest.java @@ -31,7 +31,7 @@ public class CpuIndirectIndexedModeTest { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } @Test @@ -81,4 +81,4 @@ public class CpuIndirectIndexedModeTest { assertEquals(0xe3, bus.read(0xd828, true)); } -} \ No newline at end of file +} diff --git a/src/test/java/com/loomcom/symon/CpuIndirectModeTest.java b/src/test/java/com/loomcom/symon/CpuIndirectModeTest.java index 95b8664..3b2cc1c 100644 --- a/src/test/java/com/loomcom/symon/CpuIndirectModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuIndirectModeTest.java @@ -29,7 +29,7 @@ public class CpuIndirectModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* @@ -48,7 +48,7 @@ public class CpuIndirectModeTest extends TestCase { cpu.step(); assertEquals(0x5400, cpu.getProgramCounter()); // No change to status flags. - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } public void test_JMP_with_ROR_Bug() throws MemoryAccessException { @@ -60,7 +60,7 @@ public class CpuIndirectModeTest extends TestCase { cpu.step(); assertEquals(0x2200, cpu.getProgramCounter()); // No change to status flags. - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } public void test_JMP_withIndirectBug() throws MemoryAccessException { @@ -72,7 +72,7 @@ public class CpuIndirectModeTest extends TestCase { cpu.step(); assertEquals(0x2200, cpu.getProgramCounter()); // No change to status flags. - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } public void test_JMP_withOutIndirectBug() throws MemoryAccessException { @@ -84,7 +84,7 @@ public class CpuIndirectModeTest extends TestCase { cpu.step(); assertEquals(0x5400, cpu.getProgramCounter()); // No change to status flags. - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } public void test_JMP_cmos() throws MemoryAccessException { @@ -96,7 +96,7 @@ public class CpuIndirectModeTest extends TestCase { cpu.step(); assertEquals(0x5400, cpu.getProgramCounter()); // No change to status flags. - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } -} \ No newline at end of file +} diff --git a/src/test/java/com/loomcom/symon/CpuIndirectXModeTest.java b/src/test/java/com/loomcom/symon/CpuIndirectXModeTest.java index 8896980..005b27f 100644 --- a/src/test/java/com/loomcom/symon/CpuIndirectXModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuIndirectXModeTest.java @@ -28,7 +28,7 @@ public class CpuIndirectXModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* diff --git a/src/test/java/com/loomcom/symon/CpuRelativeModeTest.java b/src/test/java/com/loomcom/symon/CpuRelativeModeTest.java index 325bcf3..e154cd8 100644 --- a/src/test/java/com/loomcom/symon/CpuRelativeModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuRelativeModeTest.java @@ -29,7 +29,7 @@ public class CpuRelativeModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* @@ -278,4 +278,4 @@ public class CpuRelativeModeTest extends TestCase { assertEquals(0x202, cpu.getProgramCounter()); } -} \ No newline at end of file +} diff --git a/src/test/java/com/loomcom/symon/CpuTest.java b/src/test/java/com/loomcom/symon/CpuTest.java index 0ba5747..b85ed02 100644 --- a/src/test/java/com/loomcom/symon/CpuTest.java +++ b/src/test/java/com/loomcom/symon/CpuTest.java @@ -44,7 +44,7 @@ public class CpuTest extends TestCase { assertEquals(0x0200, cpu.getProgramCounter()); assertFalse(cpu.getCarryFlag()); assertFalse(cpu.getZeroFlag()); - assertFalse(cpu.getIrqDisableFlag()); + assertTrue(cpu.getIrqDisableFlag()); assertFalse(cpu.getDecimalModeFlag()); assertFalse(cpu.getBreakFlag()); assertFalse(cpu.getOverflowFlag()); @@ -205,14 +205,12 @@ public class CpuTest extends TestCase { } public void testGetProcessorStatus() { - // By default, no flags are set. Remember, bit 5 + // By default, only "interrupt disable" is set. Remember, bit 5 // is always '1'. - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); cpu.setCarryFlag(); - assertEquals(0x21, cpu.getProcessorStatus()); + assertEquals(0x25, cpu.getProcessorStatus()); cpu.setZeroFlag(); - assertEquals(0x23, cpu.getProcessorStatus()); - cpu.setIrqDisableFlag(); assertEquals(0x27, cpu.getProcessorStatus()); cpu.setDecimalModeFlag(); assertEquals(0x2f, cpu.getProcessorStatus()); @@ -237,13 +235,16 @@ public class CpuTest extends TestCase { assertEquals(0xa0, cpu.getProcessorStatus()); cpu.clearNegativeFlag(); assertEquals(0x20, cpu.getProcessorStatus()); + + cpu.setIrqDisableFlag(); + assertEquals(0x24, cpu.getProcessorStatus()); } public void testSetProcessorStatus() { // Default assertFalse(cpu.getZeroFlag()); assertFalse(cpu.getZeroFlag()); - assertFalse(cpu.getIrqDisableFlag()); + assertTrue(cpu.getIrqDisableFlag()); assertFalse(cpu.getDecimalModeFlag()); assertFalse(cpu.getBreakFlag()); assertFalse(cpu.getOverflowFlag()); @@ -669,4 +670,4 @@ public class CpuTest extends TestCase { cpu.step(); assertEquals(0x3E, cpu.getAccumulator()); } -} \ No newline at end of file +} diff --git a/src/test/java/com/loomcom/symon/CpuZeroPageModeTest.java b/src/test/java/com/loomcom/symon/CpuZeroPageModeTest.java index 9cdd387..b2b775f 100644 --- a/src/test/java/com/loomcom/symon/CpuZeroPageModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuZeroPageModeTest.java @@ -29,7 +29,7 @@ public class CpuZeroPageModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* diff --git a/src/test/java/com/loomcom/symon/CpuZeroPageXModeTest.java b/src/test/java/com/loomcom/symon/CpuZeroPageXModeTest.java index 5b082c6..cda8c01 100644 --- a/src/test/java/com/loomcom/symon/CpuZeroPageXModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuZeroPageXModeTest.java @@ -29,7 +29,7 @@ public class CpuZeroPageXModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /* diff --git a/src/test/java/com/loomcom/symon/CpuZeroPageYModeTest.java b/src/test/java/com/loomcom/symon/CpuZeroPageYModeTest.java index cab2561..13cbf90 100644 --- a/src/test/java/com/loomcom/symon/CpuZeroPageYModeTest.java +++ b/src/test/java/com/loomcom/symon/CpuZeroPageYModeTest.java @@ -29,7 +29,7 @@ public class CpuZeroPageYModeTest extends TestCase { assertEquals(0, cpu.getYRegister()); assertEquals(0x200, cpu.getProgramCounter()); assertEquals(0xff, cpu.getStackPointer()); - assertEquals(0x20, cpu.getProcessorStatus()); + assertEquals(0x24, cpu.getProcessorStatus()); } /*