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

Enables running of a first test on the 65816.

This commit is contained in:
Thomas Harte 2020-10-09 21:44:47 -04:00
parent 9b6c48631d
commit 88293909f4

View File

@ -12,195 +12,198 @@ import Foundation
class WolfgangLorenzTests: XCTestCase, CSTestMachineTrapHandler { class WolfgangLorenzTests: XCTestCase, CSTestMachineTrapHandler {
func testWolfgangLorenzStart() { func testWolfgangLorenzStart() {
self.runWolfgangLorenzTest(" start") self.runWolfgangLorenzTest(" start", processor: .processor6502)
}
func testWolfgangLorenzStart65816() {
self.runWolfgangLorenzTest(" start", processor: .processor65816)
} }
func testWolfgangLorenzLDA() { func testWolfgangLorenzLDA() {
self.runWolfgangLorenzTest("lda", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("lda", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzSTA() { func testWolfgangLorenzSTA() {
self.runWolfgangLorenzTest("sta", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("sta", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzLDX() { func testWolfgangLorenzLDX() {
self.runWolfgangLorenzTest("ldx", suffixes: ["b", "z", "zy", "a", "ay"]) self.runWolfgangLorenzTest("ldx", suffixes: ["b", "z", "zy", "a", "ay"], processor: .processor6502)
} }
func testWolfgangLorenzSTX() { func testWolfgangLorenzSTX() {
self.runWolfgangLorenzTest("stx", suffixes: ["z", "zy", "a"]) self.runWolfgangLorenzTest("stx", suffixes: ["z", "zy", "a"], processor: .processor6502)
} }
func testWolfgangLorenzLDY() { func testWolfgangLorenzLDY() {
self.runWolfgangLorenzTest("ldy", suffixes: ["b", "z", "zx", "a", "ax"]) self.runWolfgangLorenzTest("ldy", suffixes: ["b", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testWolfgangLorenzSTY() { func testWolfgangLorenzSTY() {
self.runWolfgangLorenzTest("sty", suffixes: ["z", "zx", "a"]) self.runWolfgangLorenzTest("sty", suffixes: ["z", "zx", "a"], processor: .processor6502)
} }
func testWolfgangLorenzTransfers() { func testWolfgangLorenzTransfers() {
self.runWolfgangLorenzTest("taxn") self.runWolfgangLorenzTest("taxn", processor: .processor6502)
self.runWolfgangLorenzTest("tayn") self.runWolfgangLorenzTest("tayn", processor: .processor6502)
self.runWolfgangLorenzTest("txan") self.runWolfgangLorenzTest("txan", processor: .processor6502)
self.runWolfgangLorenzTest("tyan") self.runWolfgangLorenzTest("tyan", processor: .processor6502)
self.runWolfgangLorenzTest("tsxn") self.runWolfgangLorenzTest("tsxn", processor: .processor6502)
self.runWolfgangLorenzTest("txsn") self.runWolfgangLorenzTest("txsn", processor: .processor6502)
} }
func testWolfgangLorenzStack() { func testWolfgangLorenzStack() {
self.runWolfgangLorenzTest("phan") self.runWolfgangLorenzTest("phan", processor: .processor6502)
self.runWolfgangLorenzTest("plan") self.runWolfgangLorenzTest("plan", processor: .processor6502)
self.runWolfgangLorenzTest("phpn") self.runWolfgangLorenzTest("phpn", processor: .processor6502)
self.runWolfgangLorenzTest("plpn") self.runWolfgangLorenzTest("plpn", processor: .processor6502)
} }
func testWolfgangLorenzIncsAndDecs() { func testWolfgangLorenzIncsAndDecs() {
self.runWolfgangLorenzTest("inxn") self.runWolfgangLorenzTest("inxn", processor: .processor6502)
self.runWolfgangLorenzTest("inyn") self.runWolfgangLorenzTest("inyn", processor: .processor6502)
self.runWolfgangLorenzTest("dexn") self.runWolfgangLorenzTest("dexn", processor: .processor6502)
self.runWolfgangLorenzTest("deyn") self.runWolfgangLorenzTest("deyn", processor: .processor6502)
self.runWolfgangLorenzTest("incz") self.runWolfgangLorenzTest("incz", processor: .processor6502)
self.runWolfgangLorenzTest("inczx") self.runWolfgangLorenzTest("inczx", processor: .processor6502)
self.runWolfgangLorenzTest("inca") self.runWolfgangLorenzTest("inca", processor: .processor6502)
self.runWolfgangLorenzTest("incax") self.runWolfgangLorenzTest("incax", processor: .processor6502)
self.runWolfgangLorenzTest("decz") self.runWolfgangLorenzTest("decz", processor: .processor6502)
self.runWolfgangLorenzTest("deczx") self.runWolfgangLorenzTest("deczx", processor: .processor6502)
self.runWolfgangLorenzTest("deca") self.runWolfgangLorenzTest("deca", processor: .processor6502)
self.runWolfgangLorenzTest("decax") self.runWolfgangLorenzTest("decax", processor: .processor6502)
} }
func testWolfgangLorenzASL() { func testWolfgangLorenzASL() {
self.runWolfgangLorenzTest("asl", suffixes: ["n", "z", "zx", "a", "ax"]) self.runWolfgangLorenzTest("asl", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testWolfgangLorenzLSR() { func testWolfgangLorenzLSR() {
self.runWolfgangLorenzTest("lsr", suffixes: ["n", "z", "zx", "a", "ax"]) self.runWolfgangLorenzTest("lsr", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testWolfgangLorenzROL() { func testWolfgangLorenzROL() {
self.runWolfgangLorenzTest("rol", suffixes: ["n", "z", "zx", "a", "ax"]) self.runWolfgangLorenzTest("rol", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testWolfgangLorenzROR() { func testWolfgangLorenzROR() {
self.runWolfgangLorenzTest("ror", suffixes: ["n", "z", "zx", "a", "ax"]) self.runWolfgangLorenzTest("ror", suffixes: ["n", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testWolfgangLorenzAND() { func testWolfgangLorenzAND() {
self.runWolfgangLorenzTest("and", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("and", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzORA() { func testWolfgangLorenzORA() {
self.runWolfgangLorenzTest("ora", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("ora", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzEOR() { func testWolfgangLorenzEOR() {
self.runWolfgangLorenzTest("eor", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("eor", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzFlagManipulation() { func testWolfgangLorenzFlagManipulation() {
self.runWolfgangLorenzTest("clcn") self.runWolfgangLorenzTest("clcn", processor: .processor6502)
self.runWolfgangLorenzTest("secn") self.runWolfgangLorenzTest("secn", processor: .processor6502)
self.runWolfgangLorenzTest("cldn") self.runWolfgangLorenzTest("cldn", processor: .processor6502)
self.runWolfgangLorenzTest("sedn") self.runWolfgangLorenzTest("sedn", processor: .processor6502)
self.runWolfgangLorenzTest("clin") self.runWolfgangLorenzTest("clin", processor: .processor6502)
self.runWolfgangLorenzTest("sein") self.runWolfgangLorenzTest("sein", processor: .processor6502)
self.runWolfgangLorenzTest("clvn") self.runWolfgangLorenzTest("clvn", processor: .processor6502)
} }
func testWolfgangLorenzADC() { func testWolfgangLorenzADC() {
self.runWolfgangLorenzTest("adc", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("adc", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzSBC() { func testWolfgangLorenzSBC() {
self.runWolfgangLorenzTest("sbc", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("sbc", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzCompare() { func testWolfgangLorenzCompare() {
self.runWolfgangLorenzTest("cmp", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("cmp", suffixes: ["b", "z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
self.runWolfgangLorenzTest("cpx", suffixes: ["b", "z", "a"]) self.runWolfgangLorenzTest("cpx", suffixes: ["b", "z", "a"], processor: .processor6502)
self.runWolfgangLorenzTest("cpy", suffixes: ["b", "z", "a"]) self.runWolfgangLorenzTest("cpy", suffixes: ["b", "z", "a"], processor: .processor6502)
} }
func testWolfgangLorenzBIT() { func testWolfgangLorenzBIT() {
self.runWolfgangLorenzTest("bit", suffixes: ["z", "a"]) self.runWolfgangLorenzTest("bit", suffixes: ["z", "a"], processor: .processor6502)
} }
func testWolfgangLorenzFlow() { func testWolfgangLorenzFlow() {
self.runWolfgangLorenzTest("brkn") self.runWolfgangLorenzTest("brkn", processor: .processor6502)
self.runWolfgangLorenzTest("rtin") self.runWolfgangLorenzTest("rtin", processor: .processor6502)
self.runWolfgangLorenzTest("jsrw") self.runWolfgangLorenzTest("jsrw", processor: .processor6502)
self.runWolfgangLorenzTest("rtsn") self.runWolfgangLorenzTest("rtsn", processor: .processor6502)
self.runWolfgangLorenzTest("jmpw") self.runWolfgangLorenzTest("jmpw", processor: .processor6502)
self.runWolfgangLorenzTest("jmpi") self.runWolfgangLorenzTest("jmpi", processor: .processor6502)
} }
func testWolfgangLorenzBranch() { func testWolfgangLorenzBranch() {
self.runWolfgangLorenzTest("beqr") self.runWolfgangLorenzTest("beqr", processor: .processor6502)
self.runWolfgangLorenzTest("bner") self.runWolfgangLorenzTest("bner", processor: .processor6502)
self.runWolfgangLorenzTest("bmir") self.runWolfgangLorenzTest("bmir", processor: .processor6502)
self.runWolfgangLorenzTest("bplr") self.runWolfgangLorenzTest("bplr", processor: .processor6502)
self.runWolfgangLorenzTest("bcsr") self.runWolfgangLorenzTest("bcsr", processor: .processor6502)
self.runWolfgangLorenzTest("bccr") self.runWolfgangLorenzTest("bccr", processor: .processor6502)
self.runWolfgangLorenzTest("bvsr") self.runWolfgangLorenzTest("bvsr", processor: .processor6502)
self.runWolfgangLorenzTest("bvcr") self.runWolfgangLorenzTest("bvcr", processor: .processor6502)
} }
func testWolfgangLorenzNOP() { func testWolfgangLorenzNOP() {
self.runWolfgangLorenzTest("nop", suffixes: ["n", "b", "z", "zx", "a", "ax"]) self.runWolfgangLorenzTest("nop", suffixes: ["n", "b", "z", "zx", "a", "ax"], processor: .processor6502)
} }
func testWolfgangLorenzASO() { func testWolfgangLorenzASO() {
self.runWolfgangLorenzTest("aso", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("aso", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzRLA() { func testWolfgangLorenzRLA() {
self.runWolfgangLorenzTest("rla", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("rla", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzLSE() { func testWolfgangLorenzLSE() {
self.runWolfgangLorenzTest("lse", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("lse", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzRRA() { func testWolfgangLorenzRRA() {
self.runWolfgangLorenzTest("rra", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("rra", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzDCM() { func testWolfgangLorenzDCM() {
self.runWolfgangLorenzTest("dcm", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("dcm", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzINS() { func testWolfgangLorenzINS() {
self.runWolfgangLorenzTest("ins", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("ins", suffixes: ["z", "zx", "a", "ax", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzLAX() { func testWolfgangLorenzLAX() {
self.runWolfgangLorenzTest("lax", suffixes: ["z", "zy", "a", "ay", "ix", "iy"]) self.runWolfgangLorenzTest("lax", suffixes: ["z", "zy", "a", "ay", "ix", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzAXS() { func testWolfgangLorenzAXS() {
self.runWolfgangLorenzTest("axs", suffixes: ["z", "zy", "a", "ix"]) self.runWolfgangLorenzTest("axs", suffixes: ["z", "zy", "a", "ix"], processor: .processor6502)
} }
func testWolfgangLorenzALR() { func testWolfgangLorenzALR() {
self.runWolfgangLorenzTest("alrb") self.runWolfgangLorenzTest("alrb", processor: .processor6502)
} }
func testWolfgangLorenzARR() { func testWolfgangLorenzARR() {
self.runWolfgangLorenzTest("arrb") self.runWolfgangLorenzTest("arrb", processor: .processor6502)
} }
func testWolfgangLorenzSBX() { func testWolfgangLorenzSBX() {
self.runWolfgangLorenzTest("sbxb") self.runWolfgangLorenzTest("sbxb", processor: .processor6502)
} }
func testWolfgangLorenzSHA() { func testWolfgangLorenzSHA() {
self.runWolfgangLorenzTest("sha", suffixes: ["ay", "iy"]) self.runWolfgangLorenzTest("sha", suffixes: ["ay", "iy"], processor: .processor6502)
} }
func testWolfgangLorenzSHX() { func testWolfgangLorenzSHX() {
self.runWolfgangLorenzTest("shxay") self.runWolfgangLorenzTest("shxay", processor: .processor6502)
} }
func testWolfgangLorenzSHY() { func testWolfgangLorenzSHY() {
self.runWolfgangLorenzTest("shyax") self.runWolfgangLorenzTest("shyax", processor: .processor6502)
} }
func testWolfgangLorenzSHS() { func testWolfgangLorenzSHS() {
self.runWolfgangLorenzTest("shsay") self.runWolfgangLorenzTest("shsay", processor: .processor6502)
} }
func testWolfgangLorenzLXA() { func testWolfgangLorenzLXA() {
self.runWolfgangLorenzTest("lxab") self.runWolfgangLorenzTest("lxab", processor: .processor6502)
} }
func testWolfgangLorenzANE() { func testWolfgangLorenzANE() {
self.runWolfgangLorenzTest("aneb") self.runWolfgangLorenzTest("aneb", processor: .processor6502)
} }
func testWolfgangLorenzANC() { func testWolfgangLorenzANC() {
self.runWolfgangLorenzTest("ancb") self.runWolfgangLorenzTest("ancb", processor: .processor6502)
} }
func testWolfgangLorenzLAS() { func testWolfgangLorenzLAS() {
self.runWolfgangLorenzTest("lasay") self.runWolfgangLorenzTest("lasay", processor: .processor6502)
} }
func testWolfgangLorenzSBCB() { func testWolfgangLorenzSBCB() {
self.runWolfgangLorenzTest("sbcb(eb)") self.runWolfgangLorenzTest("sbcb(eb)", processor: .processor6502)
} }
fileprivate func runWolfgangLorenzTest(_ name: String, suffixes: [String]) { fileprivate func runWolfgangLorenzTest(_ name: String, suffixes: [String], processor: CSTestMachine6502Processor) {
for suffix in suffixes { for suffix in suffixes {
let testName = name + suffix let testName = name + suffix
self.runWolfgangLorenzTest(testName) self.runWolfgangLorenzTest(testName, processor: processor)
} }
} }
fileprivate var output: String = "" fileprivate var output: String = ""
fileprivate func runWolfgangLorenzTest(_ name: String) { fileprivate func runWolfgangLorenzTest(_ name: String, processor: CSTestMachine6502Processor) {
var machine: CSTestMachine6502! var machine: CSTestMachine6502!
if let filename = Bundle(for: type(of: self)).path(forResource: name, ofType: nil) { if let filename = Bundle(for: type(of: self)).path(forResource: name, ofType: nil) {
if let testData = try? Data(contentsOf: URL(fileURLWithPath: filename)) { if let testData = try? Data(contentsOf: URL(fileURLWithPath: filename)) {
machine = CSTestMachine6502(processor: .processor6502) machine = CSTestMachine6502(processor: processor)
machine.trapHandler = self machine.trapHandler = self
output = "" output = ""