1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-05 10:28:58 +00:00

Corrects ROL d.

This commit is contained in:
Thomas Harte 2020-10-10 11:22:23 -04:00
parent 6efe4e1753
commit 7966592fae
3 changed files with 90 additions and 90 deletions

View File

@ -44,129 +44,129 @@ class WolfgangLorenzTests: XCTestCase, CSTestMachineTrapHandler {
testIncsAndDecs(processor: .processor6502) testIncsAndDecs(processor: .processor6502)
} }
func testASL() { func testASL() {
self.runTest("asl", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502) runTest("asl", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testLSR() { func testLSR() {
self.runTest("lsr", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502) runTest("lsr", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testROL() { func testROL() {
self.runTest("rol", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502) runTest("rol", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testROR() { func testROR() {
self.runTest("ror", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502) runTest("ror", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testAND() { func testAND() {
self.runTest("and", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("and", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testORA() { func testORA() {
self.runTest("ora", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("ora", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testEOR() { func testEOR() {
self.runTest("eor", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("eor", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testFlagManipulation() { func testFlagManipulation() {
self.runTest("clcn", processor: .processor6502) runTest("clcn", processor: .processor6502)
self.runTest("secn", processor: .processor6502) runTest("secn", processor: .processor6502)
self.runTest("cldn", processor: .processor6502) runTest("cldn", processor: .processor6502)
self.runTest("sedn", processor: .processor6502) runTest("sedn", processor: .processor6502)
self.runTest("clin", processor: .processor6502) runTest("clin", processor: .processor6502)
self.runTest("sein", processor: .processor6502) runTest("sein", processor: .processor6502)
self.runTest("clvn", processor: .processor6502) runTest("clvn", processor: .processor6502)
} }
func testADC() { func testADC() {
self.runTest("adc", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("adc", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testSBC() { func testSBC() {
self.runTest("sbc", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("sbc", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testCompare() { func testCompare() {
self.runTest("cmp", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("cmp", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
self.runTest("cpx", suffixes: ["b", "z", "a"], processor: .processor6502) runTest("cpx", suffixes: ["b", "z", "a"], processor: .processor6502)
self.runTest("cpy", suffixes: ["b", "z", "a"], processor: .processor6502) runTest("cpy", suffixes: ["b", "z", "a"], processor: .processor6502)
} }
func testBIT() { func testBIT() {
self.runTest("bit", suffixes: ["z", "a"], processor: .processor6502) runTest("bit", suffixes: ["z", "a"], processor: .processor6502)
} }
func testFlow() { func testFlow() {
self.runTest("brkn", processor: .processor6502) runTest("brkn", processor: .processor6502)
self.runTest("rtin", processor: .processor6502) runTest("rtin", processor: .processor6502)
self.runTest("jsrw", processor: .processor6502) runTest("jsrw", processor: .processor6502)
self.runTest("rtsn", processor: .processor6502) runTest("rtsn", processor: .processor6502)
self.runTest("jmpw", processor: .processor6502) runTest("jmpw", processor: .processor6502)
self.runTest("jmpi", processor: .processor6502) runTest("jmpi", processor: .processor6502)
} }
func testBranch() { func testBranch() {
self.runTest("beqr", processor: .processor6502) runTest("beqr", processor: .processor6502)
self.runTest("bner", processor: .processor6502) runTest("bner", processor: .processor6502)
self.runTest("bmir", processor: .processor6502) runTest("bmir", processor: .processor6502)
self.runTest("bplr", processor: .processor6502) runTest("bplr", processor: .processor6502)
self.runTest("bcsr", processor: .processor6502) runTest("bcsr", processor: .processor6502)
self.runTest("bccr", processor: .processor6502) runTest("bccr", processor: .processor6502)
self.runTest("bvsr", processor: .processor6502) runTest("bvsr", processor: .processor6502)
self.runTest("bvcr", processor: .processor6502) runTest("bvcr", processor: .processor6502)
} }
func testNOP() { func testNOP() {
self.runTest("nop", suffixes: ["n", "b", "z", "zx", "a", "ax"], processor: .processor6502) runTest("nop", suffixes: ["n", "b", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testASO() { func testASO() {
self.runTest("aso", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("aso", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testRLA() { func testRLA() {
self.runTest("rla", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("rla", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testLSE() { func testLSE() {
self.runTest("lse", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("lse", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testRRA() { func testRRA() {
self.runTest("rra", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("rra", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testDCM() { func testDCM() {
self.runTest("dcm", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("dcm", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testINS() { func testINS() {
self.runTest("ins", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502) runTest("ins", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testLAX() { func testLAX() {
self.runTest("lax", suffixes: ["z", "zy", "a", "ay", "ix", "iy"], processor: .processor6502) runTest("lax", suffixes: ["z", "zy", "a", "ay", "ix", "iy"], processor: .processor6502)
} }
func testAXS() { func testAXS() {
self.runTest("axs", suffixes: ["z", "zy", "a", "ix"], processor: .processor6502) runTest("axs", suffixes: ["z", "zy", "a", "ix"], processor: .processor6502)
} }
func testALR() { func testALR() {
self.runTest("alrb", processor: .processor6502) runTest("alrb", processor: .processor6502)
} }
func testARR() { func testARR() {
self.runTest("arrb", processor: .processor6502) runTest("arrb", processor: .processor6502)
} }
func testSBX() { func testSBX() {
self.runTest("sbxb", processor: .processor6502) runTest("sbxb", processor: .processor6502)
} }
func testSHA() { func testSHA() {
self.runTest("sha", suffixes: ["ay", "iy"], processor: .processor6502) runTest("sha", suffixes: ["ay", "iy"], processor: .processor6502)
} }
func testSHX() { func testSHX() {
self.runTest("shxay", processor: .processor6502) runTest("shxay", processor: .processor6502)
} }
func testSHY() { func testSHY() {
self.runTest("shyax", processor: .processor6502) runTest("shyax", processor: .processor6502)
} }
func testSHS() { func testSHS() {
self.runTest("shsay", processor: .processor6502) runTest("shsay", processor: .processor6502)
} }
func testLXA() { func testLXA() {
self.runTest("lxab", processor: .processor6502) runTest("lxab", processor: .processor6502)
} }
func testANE() { func testANE() {
self.runTest("aneb", processor: .processor6502) runTest("aneb", processor: .processor6502)
} }
func testANC() { func testANC() {
self.runTest("ancb", processor: .processor6502) runTest("ancb", processor: .processor6502)
} }
func testLAS() { func testLAS() {
self.runTest("lasay", processor: .processor6502) runTest("lasay", processor: .processor6502)
} }
func testSBCB() { func testSBCB() {
self.runTest("sbcb(eb)", processor: .processor6502) runTest("sbcb(eb)", processor: .processor6502)
} }
@ -203,25 +203,25 @@ class WolfgangLorenzTests: XCTestCase, CSTestMachineTrapHandler {
testIncsAndDecs(processor: .processor65816) testIncsAndDecs(processor: .processor65816)
} }
func testASL65816() { func testASL65816() {
self.runTest("asl", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor65816) runTest("asl", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor65816)
} }
func testLSR65816() { func testLSR65816() {
self.runTest("lsr", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor65816) runTest("lsr", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor65816)
} }
func testROL65816() { func testROL65816() {
self.runTest("rol", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor65816) runTest("rol", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor65816)
} }
func testROR65816() { func testROR65816() {
self.runTest("ror", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor65816) runTest("ror", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor65816)
} }
func testAND65816() { func testAND65816() {
self.runTest("and", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor65816) runTest("and", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor65816)
} }
func testORA65816() { func testORA65816() {
self.runTest("ora", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor65816) runTest("ora", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor65816)
} }
func testEOR65816() { func testEOR65816() {
self.runTest("eor", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor65816) runTest("eor", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor65816)
} }
@ -233,33 +233,33 @@ class WolfgangLorenzTests: XCTestCase, CSTestMachineTrapHandler {
} }
} }
func testStack(processor: CSTestMachine6502Processor) { func testStack(processor: CSTestMachine6502Processor) {
self.runTest("phan", processor: processor) runTest("phan", processor: processor)
self.runTest("plan", processor: processor) runTest("plan", processor: processor)
self.runTest("phpn", processor: processor) runTest("phpn", processor: processor)
self.runTest("plpn", processor: processor) runTest("plpn", processor: processor)
} }
func testIncsAndDecs(processor: CSTestMachine6502Processor) { func testIncsAndDecs(processor: CSTestMachine6502Processor) {
self.runTest("inxn", processor: processor) runTest("inxn", processor: processor)
self.runTest("inyn", processor: processor) runTest("inyn", processor: processor)
self.runTest("dexn", processor: processor) runTest("dexn", processor: processor)
self.runTest("deyn", processor: processor) runTest("deyn", processor: processor)
self.runTest("incz", processor: processor) runTest("incz", processor: processor)
self.runTest("inczx", processor: processor) runTest("inczx", processor: processor)
self.runTest("inca", processor: processor) runTest("inca", processor: processor)
self.runTest("incax", processor: processor) runTest("incax", processor: processor)
self.runTest("decz", processor: processor) runTest("decz", processor: processor)
self.runTest("deczx", processor: processor) runTest("deczx", processor: processor)
self.runTest("deca", processor: processor) runTest("deca", processor: processor)
self.runTest("decax", processor: processor) runTest("decax", processor: processor)
} }
func testFlagManipulation(processor: CSTestMachine6502Processor) { func testFlagManipulation(processor: CSTestMachine6502Processor) {
self.runTest("clcn", processor: processor) runTest("clcn", processor: processor)
self.runTest("secn", processor: processor) runTest("secn", processor: processor)
self.runTest("cldn", processor: processor) runTest("cldn", processor: processor)
self.runTest("sedn", processor: processor) runTest("sedn", processor: processor)
self.runTest("clin", processor: processor) runTest("clin", processor: processor)
self.runTest("sein", processor: processor) runTest("sein", processor: processor)
self.runTest("clvn", processor: processor) runTest("clvn", processor: processor)
} }
@ -268,7 +268,7 @@ class WolfgangLorenzTests: XCTestCase, CSTestMachineTrapHandler {
fileprivate func runTest(_ name: String, suffixes: [String], processor: CSTestMachine6502Processor) { fileprivate func runTest(_ name: String, suffixes: [String], processor: CSTestMachine6502Processor) {
for suffix in suffixes { for suffix in suffixes {
let testName = name + suffix let testName = name + suffix
self.runTest(testName, processor: processor) runTest(testName, processor: processor)
} }
} }
@ -405,7 +405,7 @@ class WolfgangLorenzTests: XCTestCase, CSTestMachineTrapHandler {
testMachine6502.setValue(0x3, for:CSTestMachine6502Register.A) testMachine6502.setValue(0x3, for:CSTestMachine6502Register.A)
case 0x8000, 0xa474: case 0x8000, 0xa474:
NSException(name: NSExceptionName(rawValue: "Failed test"), reason: self.petsciiToString(output), userInfo: nil).raise() NSException(name: NSExceptionName(rawValue: "Failed test"), reason: petsciiToString(output), userInfo: nil).raise()
case 0x0000: case 0x0000:
NSException(name: NSExceptionName(rawValue: "Failed test"), reason: "Execution hit 0000", userInfo: nil).raise() NSException(name: NSExceptionName(rawValue: "Failed test"), reason: "Execution hit 0000", userInfo: nil).raise()

View File

@ -45,14 +45,14 @@ template <Type type> class ConcreteAllRAMProcessor: public AllRAMProcessor, publ
*value = memory_[address]; *value = memory_[address];
#ifdef BE_NOISY #ifdef BE_NOISY
// if((address&0xff00) == 0x100) { // if((address&0xff00) == 0x100) {
// printf("%04x -> %02x\n", address, *value); printf("%04x -> %02x\n", address, *value);
// } // }
#endif #endif
} else { } else {
memory_[address] = *value; memory_[address] = *value;
#ifdef BE_NOISY #ifdef BE_NOISY
// if((address&0xff00) == 0x100) { // if((address&0xff00) == 0x100) {
// printf("%04x <- %02x\n", address, *value); printf("%04x <- %02x\n", address, *value);
// } // }
#endif #endif
} }

View File

@ -777,7 +777,7 @@ ProcessorStorage::ProcessorStorage() {
/* 0x23 AND d, s */ op(stack_relative, AND); /* 0x23 AND d, s */ op(stack_relative, AND);
/* 0x24 BIT d */ op(direct, BIT); /* 0x24 BIT d */ op(direct, BIT);
/* 0x25 AND d */ op(direct, AND); /* 0x25 AND d */ op(direct, AND);
/* 0x26 ROL d */ op(absolute_rmw, ROL); /* 0x26 ROL d */ op(direct_rmw, ROL);
/* 0x27 AND [d] */ op(direct_indirect_long, AND); /* 0x27 AND [d] */ op(direct_indirect_long, AND);
/* 0x28 PLP s */ op(stack_pull, PLP); /* 0x28 PLP s */ op(stack_pull, PLP);
/* 0x29 AND # */ op(immediate, AND); /* 0x29 AND # */ op(immediate, AND);