From 3b637977b4456164c00b1407b5abbc3f0c70cb27 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 13 Apr 2026 21:50:45 -0400 Subject: [PATCH] Add MO5/6 selection to macOS UI. --- Analyser/Static/Thomson/Target.hpp | 2 +- .../Machine/StaticAnalyser/CSStaticAnalyser.h | 7 ++- .../StaticAnalyser/CSStaticAnalyser.mm | 3 +- .../Base.lproj/MachinePicker.xib | 45 +++++++++++++++---- .../MachinePicker/MachinePicker.swift | 10 ++++- 5 files changed, 54 insertions(+), 13 deletions(-) diff --git a/Analyser/Static/Thomson/Target.hpp b/Analyser/Static/Thomson/Target.hpp index 9ce35cb5d..a8a0a0d6f 100644 --- a/Analyser/Static/Thomson/Target.hpp +++ b/Analyser/Static/Thomson/Target.hpp @@ -22,7 +22,7 @@ struct MOTarget: public Analyser::Static::Target, public Reflection::StructImpl< Floppy floppy = Floppy::None; ReflectableEnum(Model, MO5v1, MO5v11, MO6v1, MO6v2, MO6v3); - Model model = Model::MO6v1;//MO5v11; + Model model = Model::MO5v11; MOTarget() : Analyser::Static::Target(Machine::ThomsonMO) {} diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h index 5a61cc871..9adb1cf01 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h @@ -154,6 +154,11 @@ typedef NS_ENUM(NSInteger, CSPCCompatibleVideoAdaptor) { CSPCCompatibleVideoAdaptorCGA, }; +typedef NS_ENUM(NSInteger, CSMachineThomsonModel) { + CSMachineThomsonModelMO5, + CSMachineThomsonModelMO6, +}; + typedef int Kilobytes; @interface CSStaticAnalyser : NSObject @@ -210,7 +215,7 @@ typedef int Kilobytes; - (instancetype)initWithSpectrumModel:(CSMachineSpectrumModel)model; -- (instancetype)initWithThomsonMOHasDiskDrive:(BOOL)hasDiskDrive; +- (instancetype)initWithThomsonMOModel:(CSMachineThomsonModel)model hasDiskDrive:(BOOL)hasDiskDrive; - (instancetype)initWithVic20Region:(CSMachineVic20Region)region memorySize:(Kilobytes)memorySize diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm index 6611a8ab5..c771ef454 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm @@ -547,11 +547,12 @@ PermissionDelegate permission_delegate; return self; } -- (instancetype)initWithThomsonMOHasDiskDrive:(BOOL)hasDiskDrive { +- (instancetype)initWithThomsonMOModel:(CSMachineThomsonModel)model hasDiskDrive:(BOOL)hasDiskDrive { self = [super init]; if(self) { using Target = Analyser::Static::Thomson::MOTarget; auto target = std::make_unique(); + target->model = model == CSMachineThomsonModelMO5 ? Target::Model::MO5v11 : Target::Model::MO6v3; target->floppy = hasDiskDrive ? Target::Floppy::CD90_640 : Target::Floppy::None; _targets.push_back(std::move(target)); } diff --git a/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib b/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib index 2245b24bb..382ec7ffa 100644 --- a/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib +++ b/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib @@ -70,7 +70,7 @@ Gw - + @@ -934,11 +934,11 @@ Gw - + - + @@ -951,7 +951,7 @@ Gw - + @@ -959,7 +959,7 @@ Gw - + @@ -967,7 +967,7 @@ Gw - + @@ -995,22 +995,48 @@ Gw - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + @@ -1285,6 +1311,7 @@ Gw + diff --git a/OSBindings/Mac/Clock Signal/MachinePicker/MachinePicker.swift b/OSBindings/Mac/Clock Signal/MachinePicker/MachinePicker.swift index fccbbd19b..c66846e24 100644 --- a/OSBindings/Mac/Clock Signal/MachinePicker/MachinePicker.swift +++ b/OSBindings/Mac/Clock Signal/MachinePicker/MachinePicker.swift @@ -85,6 +85,7 @@ class MachinePicker: NSObject, NSTableViewDataSource, NSTableViewDelegate, NSPat @IBOutlet var spectrumModelTypeButton: NSPopUpButton! // MARK: - Thomson + @IBOutlet var thomsonModelTypeButton: NSPopUpButton! @IBOutlet var thomsonDiskButton: NSButton! // MARK: - Vic-20 properties @@ -168,6 +169,7 @@ class MachinePicker: NSObject, NSTableViewDataSource, NSTableViewDelegate, NSPat "spectrumModel": spectrumModelTypeButton, // Thomson MO + "thomsonModel": thomsonModelTypeButton, "thomsonDiskDrive": thomsonDiskButton, // Vic-20 @@ -489,7 +491,13 @@ class MachinePicker: NSObject, NSTableViewDataSource, NSTableViewDelegate, NSPat return CSStaticAnalyser(spectrumModel: model) case "thomsonmo": - return CSStaticAnalyser(thomsonMOHasDiskDrive: thomsonDiskButton.state == .on) + var model: CSMachineThomsonModel = .MO5 + switch thomsonModelTypeButton.selectedTag() { + case 5: model = .MO5 + case 6: model = .MO6 + default: break + } + return CSStaticAnalyser(thomsonMOModel: model, hasDiskDrive: thomsonDiskButton.state == .on) case "vic20": let memorySize = Kilobytes(vic20MemorySizeButton.selectedTag())