From 1c8261dc097cd1431cb1a8c02c6fba823fc1cf37 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 15 Feb 2024 09:10:19 -0500 Subject: [PATCH] Add Mockingboard to macOS UI. --- .../Machine/StaticAnalyser/CSStaticAnalyser.h | 2 +- .../StaticAnalyser/CSStaticAnalyser.mm | 3 +- .../Base.lproj/MachinePicker.xib | 82 +++++++++++-------- .../MachinePicker/MachinePicker.swift | 5 +- 4 files changed, 53 insertions(+), 39 deletions(-) diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h index 1df0c77b7..e7f863ba9 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h @@ -141,7 +141,7 @@ typedef int Kilobytes; - (instancetype)initWithAmigaModel:(CSMachineAmigaModel)model chipMemorySize:(Kilobytes)chipMemorySize fastMemorySize:(Kilobytes)fastMemorySize; - (instancetype)initWithAmstradCPCModel:(CSMachineCPCModel)model; -- (instancetype)initWithAppleIIModel:(CSMachineAppleIIModel)model diskController:(CSMachineAppleIIDiskController)diskController; +- (instancetype)initWithAppleIIModel:(CSMachineAppleIIModel)model diskController:(CSMachineAppleIIDiskController)diskController hasMockingboard:(BOOL)hasMockingboard; - (instancetype)initWithAppleIIgsModel:(CSMachineAppleIIgsModel)model memorySize:(Kilobytes)memorySize; - (instancetype)initWithAtariSTModel:(CSMachineAtariSTModel)model memorySize:(Kilobytes)memorySize; - (instancetype)initWithElectronDFS:(BOOL)dfs adfs:(BOOL)adfs ap6:(BOOL)ap6 sidewaysRAM:(BOOL)sidewaysRAM; diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm index 9bdcc1f9e..f825e844f 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm @@ -93,7 +93,7 @@ return self; } -- (instancetype)initWithAppleIIModel:(CSMachineAppleIIModel)model diskController:(CSMachineAppleIIDiskController)diskController { +- (instancetype)initWithAppleIIModel:(CSMachineAppleIIModel)model diskController:(CSMachineAppleIIDiskController)diskController hasMockingboard:(BOOL)hasMockingboard { self = [super init]; if(self) { using Target = Analyser::Static::AppleII::Target; @@ -110,6 +110,7 @@ case CSMachineAppleIIDiskControllerSixteenSector: target->disk_controller = Target::DiskController::SixteenSector; break; case CSMachineAppleIIDiskControllerThirteenSector: target->disk_controller = Target::DiskController::ThirteenSector; break; } + target->has_mockingboard = hasMockingboard; _targets.push_back(std::move(target)); } return self; diff --git a/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib b/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib index 7b53dd6f6..b445ea9eb 100644 --- a/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib +++ b/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib @@ -1,8 +1,8 @@ - + - + @@ -18,7 +18,7 @@ - + @@ -49,7 +49,7 @@ Gw - + @@ -104,7 +104,7 @@ Gw - + @@ -135,7 +135,7 @@ Gw - + @@ -143,7 +143,7 @@ Gw - + @@ -202,7 +202,7 @@ Gw - + @@ -223,19 +223,19 @@ Gw - + - - + + - - + + @@ -243,7 +243,7 @@ Gw - + @@ -258,7 +258,7 @@ Gw - + @@ -271,16 +271,25 @@ Gw + - + + + @@ -292,7 +301,7 @@ Gw - + @@ -300,7 +309,7 @@ Gw - + @@ -357,7 +366,7 @@ Gw - + @@ -515,7 +524,7 @@ Gw - + @@ -523,7 +532,7 @@ Gw - + @@ -531,7 +540,7 @@ Gw - + @@ -539,7 +548,7 @@ Gw - + @@ -547,7 +556,7 @@ Gw - + @@ -593,7 +602,7 @@ Gw - + @@ -653,7 +662,7 @@ Gw - + @@ -661,7 +670,7 @@ Gw - + @@ -716,7 +725,7 @@ Gw - + @@ -754,7 +763,7 @@ Gw - + @@ -796,7 +805,7 @@ Gw - + @@ -804,7 +813,7 @@ Gw - + @@ -876,7 +885,7 @@ Gw - + @@ -884,7 +893,7 @@ Gw - + @@ -937,7 +946,7 @@ Gw - + @@ -985,7 +994,7 @@ Gw - + @@ -1026,7 +1035,7 @@ Gw - + @@ -1075,6 +1084,7 @@ Gw + diff --git a/OSBindings/Mac/Clock Signal/MachinePicker/MachinePicker.swift b/OSBindings/Mac/Clock Signal/MachinePicker/MachinePicker.swift index d9afc3431..a9217dba3 100644 --- a/OSBindings/Mac/Clock Signal/MachinePicker/MachinePicker.swift +++ b/OSBindings/Mac/Clock Signal/MachinePicker/MachinePicker.swift @@ -26,6 +26,7 @@ class MachinePicker: NSObject, NSTableViewDataSource, NSTableViewDelegate { // MARK: - Apple II properties @IBOutlet var appleIIModelButton: NSPopUpButton! @IBOutlet var appleIIDiskControllerButton: NSPopUpButton! + @IBOutlet var appleIIMockingboardButton: NSButton! // MARK: - Apple IIgs properties @IBOutlet var appleIIgsModelButton: NSPopUpButton! @@ -117,6 +118,7 @@ class MachinePicker: NSObject, NSTableViewDataSource, NSTableViewDelegate { // Apple II settings appleIIModelButton.selectItem(withTag: standardUserDefaults.integer(forKey: "new.appleIIModel")) appleIIDiskControllerButton.selectItem(withTag: standardUserDefaults.integer(forKey: "new.appleIIDiskController")) + appleIIMockingboardButton.state = standardUserDefaults.bool(forKey: "new.appleIIMockingboard") ? .on : .off // Apple IIgs settings appleIIgsModelButton.selectItem(withTag: standardUserDefaults.integer(forKey: "new.appleIIgsModel")) @@ -187,6 +189,7 @@ class MachinePicker: NSObject, NSTableViewDataSource, NSTableViewDelegate { // Apple II settings standardUserDefaults.set(appleIIModelButton.selectedTag(), forKey: "new.appleIIModel") standardUserDefaults.set(appleIIDiskControllerButton.selectedTag(), forKey: "new.appleIIDiskController") + standardUserDefaults.set(appleIIMockingboardButton.state == .on, forKey: "new.appleIIMockingboard") // Apple IIgs settings standardUserDefaults.set(appleIIgsModelButton.selectedTag(), forKey: "new.appleIIgsModel") @@ -292,7 +295,7 @@ class MachinePicker: NSObject, NSTableViewDataSource, NSTableViewDelegate { default: diskController = .none } - return CSStaticAnalyser(appleIIModel: model, diskController: diskController) + return CSStaticAnalyser(appleIIModel: model, diskController: diskController, hasMockingboard: appleIIMockingboardButton.state == .on) case "appleiigs": var model: CSMachineAppleIIgsModel = .ROM00