diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index cc7a17244..8bc87dc20 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -148,7 +148,6 @@ 4B1497921EE4B5A800CE2596 /* ZX8081.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1497901EE4B5A800CE2596 /* ZX8081.cpp */; }; 4B1497981EE4B97F00CE2596 /* ZX8081Options.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B1497961EE4B97F00CE2596 /* ZX8081Options.xib */; }; 4B1558C01F844ECD006E9A97 /* BitReverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B1558BE1F844ECD006E9A97 /* BitReverse.cpp */; }; - 4B1BA08A1FD4967800CB4ADA /* CSMSX.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B1BA0891FD4967800CB4ADA /* CSMSX.mm */; }; 4B1D08061E0F7A1100763741 /* TimeTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B1D08051E0F7A1100763741 /* TimeTests.mm */; }; 4B1E85811D176468001EF87D /* 6532Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B1E85801D176468001EF87D /* 6532Tests.swift */; }; 4B1EDB451E39A0AC009D6819 /* chip.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B1EDB431E39A0AC009D6819 /* chip.png */; }; @@ -156,7 +155,6 @@ 4B2A539F1D117D36003C6002 /* CSAudioQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B2A53911D117D36003C6002 /* CSAudioQueue.m */; }; 4B2A53A01D117D36003C6002 /* CSMachine.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B2A53961D117D36003C6002 /* CSMachine.mm */; }; 4B2A53A11D117D36003C6002 /* CSAtari2600.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B2A539A1D117D36003C6002 /* CSAtari2600.mm */; }; - 4B2A53A21D117D36003C6002 /* CSElectron.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B2A539C1D117D36003C6002 /* CSElectron.mm */; }; 4B2A53A31D117D36003C6002 /* CSVic20.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B2A539E1D117D36003C6002 /* CSVic20.mm */; }; 4B2AF8691E513FC20027EE29 /* TIATests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B2AF8681E513FC20027EE29 /* TIATests.mm */; }; 4B2B3A4B1F9B8FA70062DABF /* Typer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B2B3A471F9B8FA70062DABF /* Typer.cpp */; }; @@ -174,7 +172,6 @@ 4B37EE821D7345A6006A09A4 /* BinaryDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B37EE801D7345A6006A09A4 /* BinaryDump.cpp */; }; 4B38F3441F2EB3E900D9235D /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B38F3421F2EB3E900D9235D /* StaticAnalyser.cpp */; }; 4B38F3481F2EC11D00D9235D /* AmstradCPC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B38F3461F2EC11D00D9235D /* AmstradCPC.cpp */; }; - 4B38F34C1F2EC3CA00D9235D /* CSAmstradCPC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B38F34B1F2EC3CA00D9235D /* CSAmstradCPC.mm */; }; 4B38F34F1F2EC6BA00D9235D /* AmstradCPCOptions.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B38F34D1F2EC6BA00D9235D /* AmstradCPCOptions.xib */; }; 4B3940E71DA83C8300427841 /* AsyncTaskQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B3940E51DA83C8300427841 /* AsyncTaskQueue.cpp */; }; 4B3BA0C31D318AEC005DD7A7 /* C1540Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B3BA0C21D318AEB005DD7A7 /* C1540Tests.swift */; }; @@ -259,6 +256,7 @@ 4B8805F71DCFF6C9003085B1 /* Commodore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8805F51DCFF6C9003085B1 /* Commodore.cpp */; }; 4B8805FB1DCFF807003085B1 /* Oric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8805F91DCFF807003085B1 /* Oric.cpp */; }; 4B8805FE1DD02552003085B1 /* Tape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B8805FC1DD02552003085B1 /* Tape.cpp */; }; + 4B89449520194CB3007DE474 /* MachineForTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B055ABE1FAE98000060FFFF /* MachineForTarget.cpp */; }; 4B8FE21B1DA19D5F0090D3CE /* Atari2600Options.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B8FE2131DA19D5F0090D3CE /* Atari2600Options.xib */; }; 4B8FE21C1DA19D5F0090D3CE /* MachineDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B8FE2151DA19D5F0090D3CE /* MachineDocument.xib */; }; 4B8FE21D1DA19D5F0090D3CE /* QuickLoadCompositeOptions.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B8FE2171DA19D5F0090D3CE /* QuickLoadCompositeOptions.xib */; }; @@ -581,7 +579,6 @@ 4BC9E1EE1D23449A003FCEE4 /* 6502InterruptTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BC9E1ED1D23449A003FCEE4 /* 6502InterruptTests.swift */; }; 4BCA6CC81D9DD9F000C2D7B2 /* CommodoreROM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCA6CC61D9DD9F000C2D7B2 /* CommodoreROM.cpp */; }; 4BCF1FA41DADC3DD0039D2E7 /* Oric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1FA21DADC3DD0039D2E7 /* Oric.cpp */; }; - 4BCF1FA81DADC5250039D2E7 /* CSOric.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1FA71DADC5250039D2E7 /* CSOric.mm */; }; 4BCF1FAB1DADD41B0039D2E7 /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BCF1FA91DADD41B0039D2E7 /* StaticAnalyser.cpp */; }; 4BD14B111D74627C0088EAD6 /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD14B0F1D74627C0088EAD6 /* StaticAnalyser.cpp */; }; 4BD3A30B1EE755C800B5B501 /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BD3A3091EE755C800B5B501 /* Video.cpp */; }; @@ -691,8 +688,6 @@ 4B1667F91FFF215E00A16032 /* ASCII16kb.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ASCII16kb.hpp; path = MSX/Cartridges/ASCII16kb.hpp; sourceTree = ""; }; 4B1667FA1FFF215E00A16032 /* ASCII8kb.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ASCII8kb.hpp; path = MSX/Cartridges/ASCII8kb.hpp; sourceTree = ""; }; 4B1667FB1FFF215F00A16032 /* KonamiWithSCC.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = KonamiWithSCC.hpp; path = MSX/Cartridges/KonamiWithSCC.hpp; sourceTree = ""; }; - 4B1BA0881FD4967700CB4ADA /* CSMSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSMSX.h; sourceTree = ""; }; - 4B1BA0891FD4967800CB4ADA /* CSMSX.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CSMSX.mm; sourceTree = ""; }; 4B1D08051E0F7A1100763741 /* TimeTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TimeTests.mm; sourceTree = ""; }; 4B1E857B1D174DEC001EF87D /* 6532.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 6532.hpp; sourceTree = ""; }; 4B1E85801D176468001EF87D /* 6532Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 6532Tests.swift; sourceTree = ""; }; @@ -707,8 +702,6 @@ 4B2A53971D117D36003C6002 /* KeyCodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyCodes.h; sourceTree = ""; }; 4B2A53991D117D36003C6002 /* CSAtari2600.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSAtari2600.h; sourceTree = ""; }; 4B2A539A1D117D36003C6002 /* CSAtari2600.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CSAtari2600.mm; sourceTree = ""; }; - 4B2A539B1D117D36003C6002 /* CSElectron.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSElectron.h; sourceTree = ""; }; - 4B2A539C1D117D36003C6002 /* CSElectron.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CSElectron.mm; sourceTree = ""; }; 4B2A539D1D117D36003C6002 /* CSVic20.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSVic20.h; sourceTree = ""; }; 4B2A539E1D117D36003C6002 /* CSVic20.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CSVic20.mm; sourceTree = ""; }; 4B2AF8681E513FC20027EE29 /* TIATests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TIATests.mm; sourceTree = ""; }; @@ -745,8 +738,6 @@ 4B38F3431F2EB3E900D9235D /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StaticAnalyser.hpp; path = ../../StaticAnalyser/AmstradCPC/StaticAnalyser.hpp; sourceTree = ""; }; 4B38F3461F2EC11D00D9235D /* AmstradCPC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AmstradCPC.cpp; path = AmstradCPC/AmstradCPC.cpp; sourceTree = ""; }; 4B38F3471F2EC11D00D9235D /* AmstradCPC.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = AmstradCPC.hpp; path = AmstradCPC/AmstradCPC.hpp; sourceTree = ""; }; - 4B38F34A1F2EC3CA00D9235D /* CSAmstradCPC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSAmstradCPC.h; sourceTree = ""; }; - 4B38F34B1F2EC3CA00D9235D /* CSAmstradCPC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CSAmstradCPC.mm; sourceTree = ""; }; 4B38F34E1F2EC6BA00D9235D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Clock Signal/Base.lproj/AmstradCPCOptions.xib"; sourceTree = SOURCE_ROOT; }; 4B3940E51DA83C8300427841 /* AsyncTaskQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AsyncTaskQueue.cpp; path = ../../Concurrency/AsyncTaskQueue.cpp; sourceTree = ""; }; 4B3940E61DA83C8300427841 /* AsyncTaskQueue.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = AsyncTaskQueue.hpp; path = ../../Concurrency/AsyncTaskQueue.hpp; sourceTree = ""; }; @@ -907,6 +898,7 @@ 4B8805FA1DCFF807003085B1 /* Oric.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Oric.hpp; path = Parsers/Oric.hpp; sourceTree = ""; }; 4B8805FC1DD02552003085B1 /* Tape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Tape.cpp; path = ../../StaticAnalyser/Oric/Tape.cpp; sourceTree = ""; }; 4B8805FD1DD02552003085B1 /* Tape.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Tape.hpp; path = ../../StaticAnalyser/Oric/Tape.hpp; sourceTree = ""; }; + 4B89449220194A47007DE474 /* CSStaticAnalyser+TargetVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "CSStaticAnalyser+TargetVector.h"; path = "StaticAnalyser/CSStaticAnalyser+TargetVector.h"; sourceTree = ""; }; 4B8D287E1F77207100645199 /* TrackSerialiser.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TrackSerialiser.hpp; sourceTree = ""; }; 4B8E4ECD1DCE483D003716C3 /* KeyboardMachine.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = KeyboardMachine.hpp; sourceTree = ""; }; 4B8EF6071FE5AF830076CCDD /* LowpassSpeaker.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = LowpassSpeaker.hpp; sourceTree = ""; }; @@ -1274,8 +1266,6 @@ 4BCA98C21D065CA20062F44C /* 6522.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 6522.hpp; sourceTree = ""; }; 4BCF1FA21DADC3DD0039D2E7 /* Oric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Oric.cpp; path = Oric/Oric.cpp; sourceTree = ""; }; 4BCF1FA31DADC3DD0039D2E7 /* Oric.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Oric.hpp; path = Oric/Oric.hpp; sourceTree = ""; }; - 4BCF1FA61DADC5250039D2E7 /* CSOric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSOric.h; sourceTree = ""; }; - 4BCF1FA71DADC5250039D2E7 /* CSOric.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CSOric.mm; sourceTree = ""; }; 4BCF1FA91DADD41B0039D2E7 /* StaticAnalyser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StaticAnalyser.cpp; path = ../../StaticAnalyser/Oric/StaticAnalyser.cpp; sourceTree = ""; }; 4BCF1FAA1DADD41B0039D2E7 /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StaticAnalyser.hpp; path = ../../StaticAnalyser/Oric/StaticAnalyser.hpp; sourceTree = ""; }; 4BD060A51FE49D3C006E14BE /* Speaker.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Speaker.hpp; sourceTree = ""; }; @@ -1563,19 +1553,11 @@ 4B2A53981D117D36003C6002 /* Wrappers */ = { isa = PBXGroup; children = ( - 4B38F34A1F2EC3CA00D9235D /* CSAmstradCPC.h */, 4B2A53991D117D36003C6002 /* CSAtari2600.h */, - 4B2A539B1D117D36003C6002 /* CSElectron.h */, - 4B1BA0881FD4967700CB4ADA /* CSMSX.h */, - 4BCF1FA61DADC5250039D2E7 /* CSOric.h */, 4B2A539D1D117D36003C6002 /* CSVic20.h */, 4B14978D1EE4B4D200CE2596 /* CSZX8081.h */, 4BF4A2DA1F5365C600B171F4 /* CSZX8081+Instantiation.h */, - 4B38F34B1F2EC3CA00D9235D /* CSAmstradCPC.mm */, 4B2A539A1D117D36003C6002 /* CSAtari2600.mm */, - 4B2A539C1D117D36003C6002 /* CSElectron.mm */, - 4B1BA0891FD4967800CB4ADA /* CSMSX.mm */, - 4BCF1FA71DADC5250039D2E7 /* CSOric.mm */, 4B2A539E1D117D36003C6002 /* CSVic20.mm */, 4B14978E1EE4B4D200CE2596 /* CSZX8081.mm */, ); @@ -1925,6 +1907,7 @@ children = ( 4B643F381D77AD1900D431D6 /* CSStaticAnalyser.h */, 4B643F391D77AD1900D431D6 /* CSStaticAnalyser.mm */, + 4B89449220194A47007DE474 /* CSStaticAnalyser+TargetVector.h */, ); name = StaticAnalyser; sourceTree = ""; @@ -3520,7 +3503,6 @@ 4B4518A21F75FD1C00926311 /* G64.cpp in Sources */, 4BF829661D8F732B001BAE39 /* Disk.cpp in Sources */, 4B448E811F1C45A00009ABD6 /* TZX.cpp in Sources */, - 4B1BA08A1FD4967800CB4ADA /* CSMSX.mm in Sources */, 4BEBFB512002DB30000708CC /* DiskROM.cpp in Sources */, 4BEA52631DF339D7007E74F2 /* SoundGenerator.cpp in Sources */, 4BC5E4921D7ED365008CF980 /* StaticAnalyser.cpp in Sources */, @@ -3541,7 +3523,6 @@ 4BD468F71D8DF41D0084958B /* 1770.cpp in Sources */, 4BD3A30B1EE755C800B5B501 /* Video.cpp in Sources */, 4BBF99141C8FBA6F0075DAFB /* TextureBuilder.cpp in Sources */, - 4BCF1FA81DADC5250039D2E7 /* CSOric.mm in Sources */, 4B5FADBA1DE3151600AEC565 /* FileHolder.cpp in Sources */, 4B643F3A1D77AD1900D431D6 /* CSStaticAnalyser.mm in Sources */, 4B1497881EE4A1DA00CE2596 /* ZX80O81P.cpp in Sources */, @@ -3560,12 +3541,12 @@ 4B54C0C21F8D91CD0050900F /* Keyboard.cpp in Sources */, 4B553A032015855900027510 /* ConfidenceSummary.cpp in Sources */, 4BBC951E1F368D83008F4C34 /* i8272.cpp in Sources */, + 4B89449520194CB3007DE474 /* MachineForTarget.cpp in Sources */, 4BF1354C1D6D2C300054B2EA /* StaticAnalyser.cpp in Sources */, 4B4A76301DB1A3FA007AAE2E /* AY38910.cpp in Sources */, 4B6A4C991F58F09E00E3F787 /* 6502Base.cpp in Sources */, 4B4518871F75E91A00926311 /* DigitalPhaseLockedLoop.cpp in Sources */, 4B2A53A31D117D36003C6002 /* CSVic20.mm in Sources */, - 4B2A53A21D117D36003C6002 /* CSElectron.mm in Sources */, 4B98A05E1FFAD3F600ADF63B /* CSROMFetcher.mm in Sources */, 4B8FE2201DA19D7C0090D3CE /* Atari2600OptionsPanel.swift in Sources */, 4B8805F41DCFD22A003085B1 /* Commodore.cpp in Sources */, @@ -3573,7 +3554,6 @@ 4B8805FE1DD02552003085B1 /* Tape.cpp in Sources */, 4B9CCDA11DA279CA0098B625 /* Vic20OptionsPanel.swift in Sources */, 4B8805F01DCFC99C003085B1 /* Acorn.cpp in Sources */, - 4B38F34C1F2EC3CA00D9235D /* CSAmstradCPC.mm in Sources */, 4B38F3441F2EB3E900D9235D /* StaticAnalyser.cpp in Sources */, 4B3051301D98ACC600B4FED8 /* Plus3.cpp in Sources */, 4B30512D1D989E2200B4FED8 /* Drive.cpp in Sources */, diff --git a/OSBindings/Mac/Clock Signal/ClockSignal-Bridging-Header.h b/OSBindings/Mac/Clock Signal/ClockSignal-Bridging-Header.h index b05c01f4f..18f0f2e7d 100644 --- a/OSBindings/Mac/Clock Signal/ClockSignal-Bridging-Header.h +++ b/OSBindings/Mac/Clock Signal/ClockSignal-Bridging-Header.h @@ -6,8 +6,6 @@ #import "CSFastLoading.h" #import "CSAtari2600.h" -#import "CSElectron.h" -#import "CSOric.h" #import "CSVic20.h" #import "CSZX8081.h" diff --git a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift index 1a367787e..1763eddec 100644 --- a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift +++ b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift @@ -114,16 +114,15 @@ class MachineDocument: // MARK: configuring func configureAs(_ analysis: CSStaticAnalyser) { - if let machine = analysis.newMachine() { + if let machine = CSMachine(analyser: analysis) { self.machine = machine } - analysis.apply(to: self.machine) - if let optionsPanelNibName = analysis.optionsPanelNibName { - Bundle.main.loadNibNamed(NSNib.Name(rawValue: optionsPanelNibName), owner: self, topLevelObjects: nil) - self.optionsPanel.machine = self.machine - showOptions(self) - } +// if let optionsPanelNibName = analysis.optionsPanelNibName { +// Bundle.main.loadNibNamed(NSNib.Name(rawValue: optionsPanelNibName), owner: self, topLevelObjects: nil) +// self.optionsPanel.machine = self.machine +// showOptions(self) +// } } override func read(from url: URL, ofType typeName: String) throws { diff --git a/OSBindings/Mac/Clock Signal/Machine/CSMachine.h b/OSBindings/Mac/Clock Signal/Machine/CSMachine.h index e95038a0a..0315a623a 100644 --- a/OSBindings/Mac/Clock Signal/Machine/CSMachine.h +++ b/OSBindings/Mac/Clock Signal/Machine/CSMachine.h @@ -7,8 +7,10 @@ // #import -#import "CSOpenGLView.h" + #import "CSAudioQueue.h" +#import "CSOpenGLView.h" +#import "CSStaticAnalyser.h" @class CSMachine; @protocol CSMachineDelegate @@ -22,10 +24,9 @@ /*! Initialises an instance of CSMachine. - @param machine The pointer to an instance of @c Machine::DynamicMachine . C++ type is omitted because - this header is visible to Swift, and the designated initialiser cannot be placed into a category. + @param result The CSStaticAnalyser result that describes the machine needed. */ -- (instancetype)initWithMachine:(void *)machine NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithAnalyser:(CSStaticAnalyser *)result NS_DESIGNATED_INITIALIZER; - (void)runForNumberOfCycles:(int)numberOfCycles; diff --git a/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm b/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm index ae790259c..61aa9d38d 100644 --- a/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm +++ b/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm @@ -20,6 +20,7 @@ #include "StandardOptions.hpp" #include "Typer.hpp" +#import "CSStaticAnalyser+TargetVector.h" #import "NSBundle+DataResource.h" #import "NSData+StdVector.h" @@ -61,13 +62,16 @@ struct MachineDelegate: CRTMachine::Machine::Delegate, public LockProtectedDeleg SpeakerDelegate _speakerDelegate; MachineDelegate _machineDelegate; NSLock *_delegateMachineAccessLock; - Machine::DynamicMachine *_machine; + + std::vector _targets; + std::unique_ptr _machine; } -- (instancetype)initWithMachine:(void *)machine { +- (instancetype)initWithAnalyser:(CSStaticAnalyser *)result { self = [super init]; if(self) { - _machine = (Machine::DynamicMachine *)machine; + _targets = result.targets; + _machine.reset(Machine::MachineForTargets(_targets)); _delegateMachineAccessLock = [[NSLock alloc] init]; _machineDelegate.machine = self; @@ -77,6 +81,8 @@ struct MachineDelegate: CRTMachine::Machine::Delegate, public LockProtectedDeleg _machine->crt_machine()->set_delegate(&_machineDelegate); CSApplyROMFetcher(*_machine->crt_machine()); + + [self applyTarget:_targets.front()]; } return self; } @@ -336,4 +342,10 @@ struct MachineDelegate: CRTMachine::Machine::Delegate, public LockProtectedDeleg } } +- (NSString *)userDefaultsPrefix { + // Assumes that the first machine in the targets list is the source of user defaults. + std::string name = Machine::ShortNameForTargetMachine(_targets.front().machine); + return [[NSString stringWithUTF8String:name.c_str()] lowercaseString]; +} + @end diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser+TargetVector.h b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser+TargetVector.h new file mode 100644 index 000000000..c7bfa41c4 --- /dev/null +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser+TargetVector.h @@ -0,0 +1,15 @@ +// +// CSStaticAnalyser+ResultVector.h +// Clock Signal +// +// Created by Thomas Harte on 24/01/2018. +// Copyright © 2018 Thomas Harte. All rights reserved. +// + +#import "CSStaticAnalyser.h" + +@interface CSStaticAnalyser (ResultVector) + +- (std::vector &)targets; + +@end diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h index bf3499e84..ea7dde231 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h @@ -15,8 +15,6 @@ - (instancetype)initWithFileAtURL:(NSURL *)url; @property(nonatomic, readonly) NSString *optionsPanelNibName; -- (CSMachine *)newMachine; - @property(nonatomic, readonly) NSString *displayName; - (void)applyToMachine:(CSMachine *)machine; diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm index dd8661fcc..41c8196ca 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm @@ -14,14 +14,6 @@ #include "StaticAnalyser.hpp" -#import "CSAmstradCPC.h" -#import "CSAtari2600.h" -#import "CSElectron.h" -#import "CSMSX.h" -#import "CSOric.h" -#import "CSVic20.h" -#import "CSZX8081+Instantiation.h" - #import "Clock_Signal-Swift.h" @implementation CSStaticAnalyser { @@ -34,7 +26,8 @@ _targets = StaticAnalyser::GetTargets([url fileSystemRepresentation]); if(!_targets.size()) return nil; - // TODO: can this better be supplied by the analyser? + // TODO: could this better be supplied by the analyser? A hypothetical file format might + // provide a better name for it contents than the file name? _displayName = [[url pathComponents] lastObject]; } return self; @@ -53,23 +46,14 @@ } } -- (CSMachine *)newMachine { - switch(_targets.front().machine) { - case StaticAnalyser::Target::AmstradCPC: return [[CSAmstradCPC alloc] init]; - case StaticAnalyser::Target::Atari2600: return [[CSAtari2600 alloc] init]; - case StaticAnalyser::Target::Electron: return [[CSElectron alloc] init]; - case StaticAnalyser::Target::MSX: return [[CSMSX alloc] init]; - case StaticAnalyser::Target::Oric: return [[CSOric alloc] init]; - case StaticAnalyser::Target::Vic20: return [[CSVic20 alloc] init]; - case StaticAnalyser::Target::ZX8081: return [[CSZX8081 alloc] initWithIntendedTarget:_targets.front()]; - default: return nil; - } -} - - (void)applyToMachine:(CSMachine *)machine { [machine applyTarget:_targets.front()]; } +- (std::vector &)targets { + return _targets; +} + @end @implementation CSMediaSet { diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAmstradCPC.h b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAmstradCPC.h deleted file mode 100644 index df34baaf4..000000000 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAmstradCPC.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// CSAmstradCPC.h -// Clock Signal -// -// Created by Thomas Harte on 30/07/2017. -// Copyright © 2017 Thomas Harte. All rights reserved. -// - -#import "CSMachine.h" - -@interface CSAmstradCPC : CSMachine - -- (instancetype)init; - -@end diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAmstradCPC.mm b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAmstradCPC.mm deleted file mode 100644 index 0eea3643a..000000000 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAmstradCPC.mm +++ /dev/null @@ -1,25 +0,0 @@ -// -// CSAmstradCPC.m -// Clock Signal -// -// Created by Thomas Harte on 30/07/2017. -// Copyright © 2017 Thomas Harte. All rights reserved. -// - -#import "CSAmstradCPC.h" - -#include "AmstradCPC.hpp" -#include "TypedDynamicMachine.hpp" - -@implementation CSAmstradCPC { - Machine::TypedDynamicMachine _amstradCPC; -} - -- (instancetype)init { - _amstradCPC = Machine::TypedDynamicMachine(AmstradCPC::Machine::AmstradCPC()); - return [super initWithMachine:&_amstradCPC]; -} - -- (NSString *)userDefaultsPrefix { return @"amstradCPC"; } - -@end diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAtari2600.mm b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAtari2600.mm index d25fcf8bf..07d16c923 100644 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAtari2600.mm +++ b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSAtari2600.mm @@ -18,7 +18,7 @@ - (instancetype)init { _atari2600 = Machine::TypedDynamicMachine(Atari2600::Machine::Atari2600()); - return [super initWithMachine:&_atari2600]; + return nil;//[super initWithMachine:&_atari2600]; } - (void)setResetLineEnabled:(BOOL)enabled { diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSElectron.h b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSElectron.h deleted file mode 100644 index faafa2d87..000000000 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSElectron.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CSElectron.h -// Clock Signal -// -// Created by Thomas Harte on 04/01/2016. -// Copyright © 2016 Thomas Harte. All rights reserved. -// - -#import "CSMachine.h" -#import "CSFastLoading.h" - -@interface CSElectron : CSMachine - -- (instancetype)init; - -@end diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSElectron.mm b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSElectron.mm deleted file mode 100644 index d855ff949..000000000 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSElectron.mm +++ /dev/null @@ -1,27 +0,0 @@ -// -// CSElectron.m -// Clock Signal -// -// Created by Thomas Harte on 04/01/2016. -// Copyright © 2016 Thomas Harte. All rights reserved. -// - -#import "CSElectron.h" - -#include "Electron.hpp" -#include "TypedDynamicMachine.hpp" - -@implementation CSElectron { - Machine::TypedDynamicMachine _electron; -} - -- (instancetype)init { - _electron = Machine::TypedDynamicMachine(Electron::Machine::Electron()); - return [super initWithMachine:&_electron]; -} - -#pragma mark - ROM setting - -- (NSString *)userDefaultsPrefix { return @"electron"; } - -@end diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSMSX.h b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSMSX.h deleted file mode 100644 index d173dba5b..000000000 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSMSX.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CSMSX.h -// Clock Signal -// -// Created by Thomas Harte on 03/12/2017. -// Copyright © 2017 Thomas Harte. All rights reserved. -// - -#import "CSMachine.h" -#import "CSFastLoading.h" - -@interface CSMSX : CSMachine - -- (instancetype)init; - -@end diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSMSX.mm b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSMSX.mm deleted file mode 100644 index aac38a6fb..000000000 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSMSX.mm +++ /dev/null @@ -1,25 +0,0 @@ -// -// CSMSX.m -// Clock Signal -// -// Created by Thomas Harte on 03/12/2017. -// Copyright © 2017 Thomas Harte. All rights reserved. -// - -#import "CSMSX.h" - -#include "MSX.hpp" -#include "TypedDynamicMachine.hpp" - -@implementation CSMSX { - Machine::TypedDynamicMachine _msx; -} - -- (instancetype)init { - _msx = Machine::TypedDynamicMachine(MSX::Machine::MSX()); - return [super initWithMachine:&_msx]; -} - -- (NSString *)userDefaultsPrefix { return @"MSX"; } - -@end diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSOric.h b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSOric.h deleted file mode 100644 index b29bde922..000000000 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSOric.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// CSOric.h -// Clock Signal -// -// Created by Thomas Harte on 11/10/2016. -// Copyright © 2016 Thomas Harte. All rights reserved. -// - -#import "CSMachine.h" -#import "CSFastLoading.h" - -@interface CSOric : CSMachine - -- (instancetype)init; - -@end diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSOric.mm b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSOric.mm deleted file mode 100644 index 23fcebae8..000000000 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSOric.mm +++ /dev/null @@ -1,23 +0,0 @@ -// -// CSOric.m -// Clock Signal -// -// Created by Thomas Harte on 11/10/2016. -// Copyright © 2016 Thomas Harte. All rights reserved. -// - -#import "CSOric.h" - -#include "Oric.hpp" -#include "TypedDynamicMachine.hpp" - -@implementation CSOric { - Machine::TypedDynamicMachine _oric; -} - -- (instancetype)init { - _oric = Machine::TypedDynamicMachine(Oric::Machine::Oric()); - return [super initWithMachine:&_oric]; -} - -@end diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSVic20.mm b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSVic20.mm index 5a28d7277..58755b490 100644 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSVic20.mm +++ b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSVic20.mm @@ -17,7 +17,7 @@ - (instancetype)init { _vic20 = Machine::TypedDynamicMachine(Commodore::Vic20::Machine::Vic20()); - return [super initWithMachine:&_vic20]; + return nil;//[super initWithMachine:&_vic20]; } - (NSString *)userDefaultsPrefix { return @"vic20"; } diff --git a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSZX8081.mm b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSZX8081.mm index 3e6c61067..b66f2c0de 100644 --- a/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSZX8081.mm +++ b/OSBindings/Mac/Clock Signal/Machine/Wrappers/CSZX8081.mm @@ -17,7 +17,7 @@ - (instancetype)initWithIntendedTarget:(const StaticAnalyser::Target &)target { _zx8081 = Machine::TypedDynamicMachine(ZX8081::Machine::ZX8081(target)); - return [super initWithMachine:&_zx8081]; + return nil;//[super initWithMachine:&_zx8081]; } - (NSString *)userDefaultsPrefix { return @"zx8081"; }