diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index da9def458..b08cdeb18 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -8,6 +8,24 @@ /* Begin PBXBuildFile section */ 4281683A2A37AFB4008ECD27 /* DispatcherTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 428168392A37AFB4008ECD27 /* DispatcherTests.mm */; }; + 42A5E80C2ABBE04600A0DD5D /* NeskellTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42A5E80B2ABBE04600A0DD5D /* NeskellTests.swift */; }; + 42A5E8442ABBE16F00A0DD5D /* illegal_rmw_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8332ABBE16F00A0DD5D /* illegal_rmw_test.bin */; }; + 42A5E8452ABBE16F00A0DD5D /* arr_bcd_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8342ABBE16F00A0DD5D /* arr_bcd_test.bin */; }; + 42A5E8462ABBE16F00A0DD5D /* add_sub_cvzn_flag_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8352ABBE16F00A0DD5D /* add_sub_cvzn_flag_test.bin */; }; + 42A5E8472ABBE16F00A0DD5D /* ahx_tas_shx_shy_pagecross_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8362ABBE16F00A0DD5D /* ahx_tas_shx_shy_pagecross_test.bin */; }; + 42A5E8482ABBE16F00A0DD5D /* sax_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8372ABBE16F00A0DD5D /* sax_test.bin */; }; + 42A5E8492ABBE16F00A0DD5D /* illegal_xb_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8382ABBE16F00A0DD5D /* illegal_xb_test.bin */; }; + 42A5E84A2ABBE16F00A0DD5D /* full_bcd_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8392ABBE16F00A0DD5D /* full_bcd_test.bin */; }; + 42A5E84B2ABBE16F00A0DD5D /* kil_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E83A2ABBE16F00A0DD5D /* kil_test.bin */; }; + 42A5E84C2ABBE16F00A0DD5D /* ahx_tas_shx_shy_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E83B2ABBE16F00A0DD5D /* ahx_tas_shx_shy_test.bin */; }; + 42A5E84D2ABBE16F00A0DD5D /* brk_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E83C2ABBE16F00A0DD5D /* brk_test.bin */; }; + 42A5E84E2ABBE16F00A0DD5D /* illegal_bcd_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E83D2ABBE16F00A0DD5D /* illegal_bcd_test.bin */; }; + 42A5E84F2ABBE16F00A0DD5D /* branch_pagecross_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E83E2ABBE16F00A0DD5D /* branch_pagecross_test.bin */; }; + 42A5E8502ABBE16F00A0DD5D /* jump_bug_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E83F2ABBE16F00A0DD5D /* jump_bug_test.bin */; }; + 42A5E8512ABBE16F00A0DD5D /* bcd_add_sub_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8402ABBE16F00A0DD5D /* bcd_add_sub_test.bin */; }; + 42A5E8522ABBE16F00A0DD5D /* nop_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8412ABBE16F00A0DD5D /* nop_test.bin */; }; + 42A5E8532ABBE16F00A0DD5D /* lax_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8422ABBE16F00A0DD5D /* lax_test.bin */; }; + 42A5E8542ABBE16F00A0DD5D /* branch_backwards_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8432ABBE16F00A0DD5D /* branch_backwards_test.bin */; }; 4B018B89211930DE002A3937 /* 65C02_extended_opcodes_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 4B018B88211930DE002A3937 /* 65C02_extended_opcodes_test.bin */; }; 4B01A6881F22F0DB001FD6E3 /* Z80MemptrTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B01A6871F22F0DB001FD6E3 /* Z80MemptrTests.swift */; }; 4B0333AF2094081A0050B93D /* AppleDSK.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0333AD2094081A0050B93D /* AppleDSK.cpp */; }; @@ -1104,6 +1122,24 @@ 4281572E2AA0334300E16AA1 /* Carry.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Carry.hpp; sourceTree = ""; }; 428168372A16C25C008ECD27 /* LineLayout.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = LineLayout.hpp; sourceTree = ""; }; 428168392A37AFB4008ECD27 /* DispatcherTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DispatcherTests.mm; sourceTree = ""; }; + 42A5E80B2ABBE04600A0DD5D /* NeskellTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NeskellTests.swift; sourceTree = ""; }; + 42A5E8332ABBE16F00A0DD5D /* illegal_rmw_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = illegal_rmw_test.bin; sourceTree = ""; }; + 42A5E8342ABBE16F00A0DD5D /* arr_bcd_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = arr_bcd_test.bin; sourceTree = ""; }; + 42A5E8352ABBE16F00A0DD5D /* add_sub_cvzn_flag_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = add_sub_cvzn_flag_test.bin; sourceTree = ""; }; + 42A5E8362ABBE16F00A0DD5D /* ahx_tas_shx_shy_pagecross_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = ahx_tas_shx_shy_pagecross_test.bin; sourceTree = ""; }; + 42A5E8372ABBE16F00A0DD5D /* sax_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = sax_test.bin; sourceTree = ""; }; + 42A5E8382ABBE16F00A0DD5D /* illegal_xb_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = illegal_xb_test.bin; sourceTree = ""; }; + 42A5E8392ABBE16F00A0DD5D /* full_bcd_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = full_bcd_test.bin; sourceTree = ""; }; + 42A5E83A2ABBE16F00A0DD5D /* kil_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = kil_test.bin; sourceTree = ""; }; + 42A5E83B2ABBE16F00A0DD5D /* ahx_tas_shx_shy_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = ahx_tas_shx_shy_test.bin; sourceTree = ""; }; + 42A5E83C2ABBE16F00A0DD5D /* brk_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = brk_test.bin; sourceTree = ""; }; + 42A5E83D2ABBE16F00A0DD5D /* illegal_bcd_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = illegal_bcd_test.bin; sourceTree = ""; }; + 42A5E83E2ABBE16F00A0DD5D /* branch_pagecross_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = branch_pagecross_test.bin; sourceTree = ""; }; + 42A5E83F2ABBE16F00A0DD5D /* jump_bug_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = jump_bug_test.bin; sourceTree = ""; }; + 42A5E8402ABBE16F00A0DD5D /* bcd_add_sub_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = bcd_add_sub_test.bin; sourceTree = ""; }; + 42A5E8412ABBE16F00A0DD5D /* nop_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = nop_test.bin; sourceTree = ""; }; + 42A5E8422ABBE16F00A0DD5D /* lax_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = lax_test.bin; sourceTree = ""; }; + 42A5E8432ABBE16F00A0DD5D /* branch_backwards_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = branch_backwards_test.bin; sourceTree = ""; }; 42AD552E2A0C4D5000ACE410 /* 68000.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 68000.hpp; sourceTree = ""; }; 42AD55302A0C4D5000ACE410 /* 68000Storage.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 68000Storage.hpp; sourceTree = ""; }; 42AD55312A0C4D5000ACE410 /* 68000Implementation.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 68000Implementation.hpp; sourceTree = ""; }; @@ -2277,6 +2313,30 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 42A5E8322ABBE16F00A0DD5D /* Neskell Tests */ = { + isa = PBXGroup; + children = ( + 42A5E8332ABBE16F00A0DD5D /* illegal_rmw_test.bin */, + 42A5E8342ABBE16F00A0DD5D /* arr_bcd_test.bin */, + 42A5E8352ABBE16F00A0DD5D /* add_sub_cvzn_flag_test.bin */, + 42A5E8362ABBE16F00A0DD5D /* ahx_tas_shx_shy_pagecross_test.bin */, + 42A5E8372ABBE16F00A0DD5D /* sax_test.bin */, + 42A5E8382ABBE16F00A0DD5D /* illegal_xb_test.bin */, + 42A5E8392ABBE16F00A0DD5D /* full_bcd_test.bin */, + 42A5E83A2ABBE16F00A0DD5D /* kil_test.bin */, + 42A5E83B2ABBE16F00A0DD5D /* ahx_tas_shx_shy_test.bin */, + 42A5E83C2ABBE16F00A0DD5D /* brk_test.bin */, + 42A5E83D2ABBE16F00A0DD5D /* illegal_bcd_test.bin */, + 42A5E83E2ABBE16F00A0DD5D /* branch_pagecross_test.bin */, + 42A5E83F2ABBE16F00A0DD5D /* jump_bug_test.bin */, + 42A5E8402ABBE16F00A0DD5D /* bcd_add_sub_test.bin */, + 42A5E8412ABBE16F00A0DD5D /* nop_test.bin */, + 42A5E8422ABBE16F00A0DD5D /* lax_test.bin */, + 42A5E8432ABBE16F00A0DD5D /* branch_backwards_test.bin */, + ); + path = "Neskell Tests"; + sourceTree = ""; + }; 42AD552D2A0C4D5000ACE410 /* 68000 */ = { isa = PBXGroup; children = ( @@ -2496,14 +2556,14 @@ 4B1414631B588A1100E04248 /* Test Binaries */ = { isa = PBXGroup; children = ( - 4BBB77DC2867EBB300D335A1 /* IIgs Memory Map */, - 4B7C7A06282C3DED002D6C0B /* flamewing 68000 BCD tests */, 4B680CE323A555CA00451D43 /* 68000 Comparative Tests */, 4B75F97A280D7C7700121055 /* 68000 Decoding */, 4B683B002727BE6F0043E541 /* Amiga Blitter Tests */, 4B9252CD1E74D28200B76AF1 /* Atari ROMs */, 4B44EBF81DC9898E00A7820C /* BCDTEST_beeb */, 4BB0CAB127E51D2A00672A88 /* dingusdev PowerPC tests */, + 4B7C7A06282C3DED002D6C0B /* flamewing 68000 BCD tests */, + 4BBB77DC2867EBB300D335A1 /* IIgs Memory Map */, 4B98A1CD1FFADEC400ADF63B /* MSX ROMs */, 4B018B88211930DE002A3937 /* 65C02_extended_opcodes_test.bin */, 4BE211DD253E4E4800435408 /* 65C02_no_Rockwell_test.bin */, @@ -2515,6 +2575,7 @@ 4BBF49B41ED2881600AB3669 /* FUSE */, 4B4F475B2533EA64004245B8 /* jeek816 */, 4B8DF5392550D91400F3433C /* krom 65816 */, + 42A5E8322ABBE16F00A0DD5D /* Neskell Tests */, 4B670A822401CB8400D4E002 /* Patrik Rak Z80 Tests */, 4B9F11C72272375400701480 /* QL Startup */, 4B85322B227793CA00F26553 /* TOS Startup */, @@ -4325,6 +4386,7 @@ 4BBF49AE1ED2880200AB3669 /* FUSETests.swift */, 4B4F477B253530B7004245B8 /* Jeek816Tests.swift */, 4B1414611B58888700E04248 /* KlausDormannTests.swift */, + 42A5E80B2ABBE04600A0DD5D /* NeskellTests.swift */, 4BD91D762401C2B8007BDC91 /* PatrikRakTests.swift */, 4B14145F1B58885000E04248 /* WolfgangLorenzTests.swift */, 4B08A2741EE35D56008B7065 /* Z80InterruptTests.swift */, @@ -5168,6 +5230,7 @@ 4BB2998A1B587D8400A49093 /* lseix in Resources */, 4BB2994E1B587D8400A49093 /* dexn in Resources */, 4BB299971B587D8400A49093 /* nopa in Resources */, + 42A5E84C2ABBE16F00A0DD5D /* ahx_tas_shx_shy_test.bin in Resources */, 4B018B89211930DE002A3937 /* 65C02_extended_opcodes_test.bin in Resources */, 4BEDA3BE25B25563000C2DBD /* README.md in Resources */, 4BFCA1291ECBE7A700AC40C1 /* zexall.com in Resources */, @@ -5175,6 +5238,7 @@ 4BB299411B587D8400A49093 /* cpyb in Resources */, 4BB299A61B587D8400A49093 /* phan in Resources */, 4B8DF6352550D91600F3433C /* CPUTRN-trace_compare.log in Resources */, + 42A5E8492ABBE16F00A0DD5D /* illegal_xb_test.bin in Resources */, 4BB299D91B587D8400A49093 /* staix in Resources */, 4BB299EA1B587D8400A49093 /* trap14 in Resources */, 4BB2990F1B587D8400A49093 /* asoiy in Resources */, @@ -5207,6 +5271,7 @@ 4BB299881B587D8400A49093 /* lseax in Resources */, 4BB299B91B587D8400A49093 /* rorz in Resources */, 4BB299F61B587D8400A49093 /* tsxn in Resources */, + 42A5E8502ABBE16F00A0DD5D /* jump_bug_test.bin in Resources */, 4B8DF6682550D91600F3433C /* CPUSBC.sfc in Resources */, 4BB298F11B587D8400A49093 /* start in Resources */, 4BDA00DD22E622C200AC3CD0 /* ROMImages in Resources */, @@ -5224,6 +5289,7 @@ 4BB299BE1B587D8400A49093 /* rraix in Resources */, 4BB299E41B587D8400A49093 /* tayn in Resources */, 4BB299CD1B587D8400A49093 /* sbxb in Resources */, + 42A5E8462ABBE16F00A0DD5D /* add_sub_cvzn_flag_test.bin in Resources */, 4BB299801B587D8400A49093 /* ldxzy in Resources */, 4BB2995A1B587D8400A49093 /* icr01 in Resources */, 4BB299751B587D8400A49093 /* ldaax in Resources */, @@ -5244,8 +5310,10 @@ 4BB299CF1B587D8400A49093 /* sedn in Resources */, 4BB299D01B587D8400A49093 /* sein in Resources */, 4BB299151B587D8400A49093 /* axszy in Resources */, + 42A5E84D2ABBE16F00A0DD5D /* brk_test.bin in Resources */, 4BB2994D1B587D8400A49093 /* deczx in Resources */, 4B8DF63A2550D91600F3433C /* CPUBRA.sfc in Resources */, + 42A5E8452ABBE16F00A0DD5D /* arr_bcd_test.bin in Resources */, 4BB299B11B587D8400A49093 /* rola in Resources */, 4BB299CE1B587D8400A49093 /* secn in Resources */, 4BB298F31B587D8400A49093 /* adcax in Resources */, @@ -5262,6 +5330,7 @@ 4BB2995C1B587D8400A49093 /* inca in Resources */, 4BB2994C1B587D8400A49093 /* decz in Resources */, 4BB299511B587D8400A49093 /* eorax in Resources */, + 42A5E8472ABBE16F00A0DD5D /* ahx_tas_shx_shy_pagecross_test.bin in Resources */, 4BB299A11B587D8400A49093 /* orab in Resources */, 4BB298F81B587D8400A49093 /* adcz in Resources */, 4B8DF6D02550D91700F3433C /* CPUPSR.sfc in Resources */, @@ -5270,6 +5339,7 @@ 4BB299871B587D8400A49093 /* lsea in Resources */, 4BB298F21B587D8400A49093 /* adca in Resources */, 4BB299391B587D8400A49093 /* cntdef in Resources */, + 42A5E8442ABBE16F00A0DD5D /* illegal_rmw_test.bin in Resources */, 4BB299591B587D8400A49093 /* flipos in Resources */, 4BB17D4E1ED7909F00ABD1E1 /* tests.expected.json in Resources */, 4BB2998F1B587D8400A49093 /* lsrax in Resources */, @@ -5278,6 +5348,7 @@ 4BB2993A1B587D8400A49093 /* cnto2 in Resources */, 4BB298FA1B587D8400A49093 /* alrb in Resources */, 4BB299C71B587D8400A49093 /* sbcb in Resources */, + 42A5E84A2ABBE16F00A0DD5D /* full_bcd_test.bin in Resources */, 4BB299D41B587D8400A49093 /* shxay in Resources */, 4BB299F71B587D8400A49093 /* txan in Resources */, 4BB299AB1B587D8400A49093 /* rlaax in Resources */, @@ -5287,6 +5358,7 @@ 4BB299381B587D8400A49093 /* cmpzx in Resources */, 4B8DF6A02550D91700F3433C /* readme.md in Resources */, 4B8DF6A62550D91700F3433C /* CPUAND.sfc in Resources */, + 42A5E84E2ABBE16F00A0DD5D /* illegal_bcd_test.bin in Resources */, 4BB2997F1B587D8400A49093 /* ldxz in Resources */, 4BB2992D1B587D8400A49093 /* clcn in Resources */, 4BB299E01B587D8400A49093 /* stya in Resources */, @@ -5346,6 +5418,7 @@ 4BB299EF1B587D8400A49093 /* trap3 in Resources */, 4BB299D31B587D8400A49093 /* shsay in Resources */, 4BB299AE1B587D8400A49093 /* rlaiy in Resources */, + 42A5E84F2ABBE16F00A0DD5D /* branch_pagecross_test.bin in Resources */, 4BB299181B587D8400A49093 /* beqr in Resources */, 4BB299311B587D8400A49093 /* cmpa in Resources */, 4B8DF6282550D91600F3433C /* CPUDEC-trace_compare.log in Resources */, @@ -5368,6 +5441,7 @@ 4B670AA12401CB8400D4E002 /* z80doc.tap in Resources */, 4BB299941B587D8400A49093 /* mmu in Resources */, 4BB299E11B587D8400A49093 /* styz in Resources */, + 42A5E8532ABBE16F00A0DD5D /* lax_test.bin in Resources */, 4B8DF6812550D91700F3433C /* CPULDR.sfc in Resources */, 4BB299BA1B587D8400A49093 /* rorzx in Resources */, 4B8DF6512550D91600F3433C /* CPURET.sfc in Resources */, @@ -5375,6 +5449,7 @@ 4BB299AC1B587D8400A49093 /* rlaay in Resources */, 4BB299131B587D8400A49093 /* axsix in Resources */, 4BB299781B587D8400A49093 /* ldaix in Resources */, + 42A5E8542ABBE16F00A0DD5D /* branch_backwards_test.bin in Resources */, 4B44EBF71DC9883B00A7820C /* 6502_functional_test.bin in Resources */, 4BB299291B587D8400A49093 /* cia2pb7 in Resources */, 4BE9A6B11EDE293000CBCB47 /* zexdoc.com in Resources */, @@ -5386,6 +5461,7 @@ 4B8DF6312550D91600F3433C /* CPUSBC-trace_compare.log in Resources */, 4BB299011B587D8400A49093 /* andiy in Resources */, 4BB2992B1B587D8400A49093 /* cia2tb in Resources */, + 42A5E8512ABBE16F00A0DD5D /* bcd_add_sub_test.bin in Resources */, 4BB299221B587D8400A49093 /* cia1pb6 in Resources */, 4BB299F41B587D8400A49093 /* trap8 in Resources */, 4BB2996C1B587D8400A49093 /* jsrw in Resources */, @@ -5446,6 +5522,7 @@ 4B8DF6292550D91600F3433C /* CPUAND-trace_compare.log in Resources */, 4BB299571B587D8400A49093 /* eorzx in Resources */, 4BB299701B587D8400A49093 /* laxix in Resources */, + 42A5E84B2ABBE16F00A0DD5D /* kil_test.bin in Resources */, 4B8DF6372550D91600F3433C /* CPUADC-trace_compare.log in Resources */, 4BB299441B587D8400A49093 /* dcmax in Resources */, 4BB2996F1B587D8400A49093 /* laxay in Resources */, @@ -5475,6 +5552,7 @@ 4BB299DF1B587D8400A49093 /* stxzy in Resources */, 4B8DF67F2550D91700F3433C /* CPUASL.sfc in Resources */, 4BB299231B587D8400A49093 /* cia1pb7 in Resources */, + 42A5E8522ABBE16F00A0DD5D /* nop_test.bin in Resources */, 4BB2998D1B587D8400A49093 /* lsezx in Resources */, 4BB299811B587D8400A49093 /* ldya in Resources */, 4BB299991B587D8400A49093 /* nopb in Resources */, @@ -5495,6 +5573,7 @@ 4BB2996D1B587D8400A49093 /* lasay in Resources */, 4BB299421B587D8400A49093 /* cpyz in Resources */, 4B8DF6B72550D91700F3433C /* CPUADC.sfc in Resources */, + 42A5E8482ABBE16F00A0DD5D /* sax_test.bin in Resources */, 4B8DF6222550D91600F3433C /* CPULSR-trace_compare.log in Resources */, 4B680CE423A555CA00451D43 /* 68000 Comparative Tests in Resources */, 4BB299DE1B587D8400A49093 /* stxz in Resources */, @@ -6227,6 +6306,7 @@ 4B778F4723A5F1DD0000D260 /* StaticAnalyser.cpp in Sources */, 4B778F1923A5ED1B0000D260 /* 6502Storage.cpp in Sources */, 4B7752A828217E110073E2C5 /* Nick.cpp in Sources */, + 42A5E80C2ABBE04600A0DD5D /* NeskellTests.swift in Sources */, 4B7752AE28217E830073E2C5 /* 2MG.cpp in Sources */, 4B08A2781EE39306008B7065 /* TestMachine.mm in Sources */, 4B778F1E23A5EDC00000D260 /* DriveSpeedAccumulator.cpp in Sources */, diff --git a/OSBindings/Mac/Clock SignalTests/Bridges/TestMachine6502.h b/OSBindings/Mac/Clock SignalTests/Bridges/TestMachine6502.h index af729db05..bf08b825c 100644 --- a/OSBindings/Mac/Clock SignalTests/Bridges/TestMachine6502.h +++ b/OSBindings/Mac/Clock SignalTests/Bridges/TestMachine6502.h @@ -24,6 +24,7 @@ typedef NS_ENUM(NSInteger, CSTestMachine6502Register) { }; typedef NS_ENUM(NSInteger, CSTestMachine6502Processor) { + CSTestMachine6502ProcessorNES6502, CSTestMachine6502Processor6502, CSTestMachine6502Processor65C02, CSTestMachine6502Processor65816 diff --git a/OSBindings/Mac/Clock SignalTests/Bridges/TestMachine6502.mm b/OSBindings/Mac/Clock SignalTests/Bridges/TestMachine6502.mm index cfcabd737..4d567cd53 100644 --- a/OSBindings/Mac/Clock SignalTests/Bridges/TestMachine6502.mm +++ b/OSBindings/Mac/Clock SignalTests/Bridges/TestMachine6502.mm @@ -44,6 +44,9 @@ static CPU::MOS6502::Register registerForRegister(CSTestMachine6502Register reg) if(self) { switch(processor) { + case CSTestMachine6502ProcessorNES6502: + _processor = CPU::MOS6502::AllRAMProcessor::Processor(CPU::MOS6502Esque::Type::TNES6502, hasCIAs); + break; case CSTestMachine6502Processor6502: _processor = CPU::MOS6502::AllRAMProcessor::Processor(CPU::MOS6502Esque::Type::T6502, hasCIAs); break; diff --git a/OSBindings/Mac/Clock SignalTests/NeskellTests.swift b/OSBindings/Mac/Clock SignalTests/NeskellTests.swift new file mode 100644 index 000000000..432f3f8ac --- /dev/null +++ b/OSBindings/Mac/Clock SignalTests/NeskellTests.swift @@ -0,0 +1,49 @@ +// +// KlausDormanTests.swift +// Clock Signal +// +// Created by Thomas Harte on 16/07/2015. +// Copyright 2015 Thomas Harte. All rights reserved. +// + +import Foundation +import XCTest + +// The below reuses the Neskell — https://github.com/blitzcode/neskell — tests and therefore attempts to transcribe +// https://github.com/blitzcode/neskell/blob/b4bfec6d6f0cf88d8d2de61585017d16a37e3b9a/src/Test.hs + +class NeskellTests: XCTestCase { + private func runTest(resource: String) -> CSTestMachine6502? { + if let filename = Bundle(for: type(of: self)).path(forResource: resource, ofType: "bin") { + if let functionalTest = try? Data(contentsOf: URL(fileURLWithPath: filename)) { + let machine = CSTestMachine6502(processor: .processorNES6502) + + machine.setData(functionalTest, atAddress: 0x0600) + machine.setValue(0x0600, for: .programCounter) + + // Install the halt-forever trailer. + let targetAddress = UInt32(0x0600 + functionalTest.count) + let infiniteStop = Data([0x38, 0xb0, 0xff]) // i.e. SEC; BCS -2 + machine.setData(infiniteStop, atAddress: targetAddress) + + while true { + let oldPC = machine.value(for: .lastOperationAddress) + machine.runForNumber(ofCycles: 1000) + let newPC = machine.value(for: .lastOperationAddress) + + if newPC == oldPC { + return machine + } + } + } + } + + return nil + } + + func testAHX_TAS_SHX_SHY() { + if let result = runTest(resource: "ahx_tas_shx_shy_test") { + XCTAssertEqual(result.value(for: .stackPointer), 0xf2) + } + } +}