From 5287c57ee0188c7a9a3e357afd328c8589be7562 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Tue, 20 Oct 2020 22:18:11 -0400 Subject: [PATCH 001/374] Adds the IIgs as a user-selectable machine. Albeit that there is no underlying machine yet. --- Analyser/Machines.hpp | 1 + Analyser/Static/AppleII/Target.hpp | 6 +- Analyser/Static/AppleIIgs/StaticAnalyser.cpp | 19 +++ Analyser/Static/AppleIIgs/StaticAnalyser.hpp | 26 ++++ Analyser/Static/AppleIIgs/Target.hpp | 49 ++++++++ Analyser/Static/StaticAnalyser.cpp | 2 + Machines/Apple/AppleIIgs/AppleIIgs.cpp | 31 +++++ Machines/Apple/AppleIIgs/AppleIIgs.hpp | 33 +++++ Machines/Utility/MachineForTarget.cpp | 9 +- .../Clock Signal.xcodeproj/project.pbxproj | 36 +++++- .../Machine/StaticAnalyser/CSStaticAnalyser.h | 15 ++- .../StaticAnalyser/CSStaticAnalyser.mm | 22 ++++ .../Base.lproj/MachinePicker.xib | 113 ++++++++++++++---- .../MachinePicker/MachinePicker.swift | 24 ++++ OSBindings/Qt/ClockSignal.pro | 4 + OSBindings/Qt/mainwindow.cpp | 25 ++++ OSBindings/Qt/mainwindow.h | 1 + OSBindings/Qt/mainwindow.ui | 82 ++++++++++++- OSBindings/SDL/SConstruct | 2 + ROMImages/AppleIIGS/readme.txt | 6 + Storage/TargetPlatforms.hpp | 8 +- 21 files changed, 479 insertions(+), 35 deletions(-) create mode 100644 Analyser/Static/AppleIIgs/StaticAnalyser.cpp create mode 100644 Analyser/Static/AppleIIgs/StaticAnalyser.hpp create mode 100644 Analyser/Static/AppleIIgs/Target.hpp create mode 100644 Machines/Apple/AppleIIgs/AppleIIgs.cpp create mode 100644 Machines/Apple/AppleIIgs/AppleIIgs.hpp create mode 100644 ROMImages/AppleIIGS/readme.txt diff --git a/Analyser/Machines.hpp b/Analyser/Machines.hpp index cd64edd33..2f36858bf 100644 --- a/Analyser/Machines.hpp +++ b/Analyser/Machines.hpp @@ -14,6 +14,7 @@ namespace Analyser { enum class Machine { AmstradCPC, AppleII, + AppleIIgs, Atari2600, AtariST, ColecoVision, diff --git a/Analyser/Static/AppleII/Target.hpp b/Analyser/Static/AppleII/Target.hpp index 988e7d4ee..733d7b79a 100644 --- a/Analyser/Static/AppleII/Target.hpp +++ b/Analyser/Static/AppleII/Target.hpp @@ -6,8 +6,8 @@ // Copyright 2018 Thomas Harte. All rights reserved. // -#ifndef Target_h -#define Target_h +#ifndef Analyser_Static_AppleII_Target_h +#define Analyser_Static_AppleII_Target_h #include "../../../Reflection/Enum.hpp" #include "../../../Reflection/Struct.hpp" @@ -47,4 +47,4 @@ struct Target: public Analyser::Static::Target, public Reflection::StructImpl(); + target->media = media; + + TargetList targets; + targets.push_back(std::move(target)); + return targets; +} diff --git a/Analyser/Static/AppleIIgs/StaticAnalyser.hpp b/Analyser/Static/AppleIIgs/StaticAnalyser.hpp new file mode 100644 index 000000000..dda1d9e87 --- /dev/null +++ b/Analyser/Static/AppleIIgs/StaticAnalyser.hpp @@ -0,0 +1,26 @@ +// +// StaticAnalyser.hpp +// Clock Signal +// +// Created by Thomas Harte on 20/10/2020. +// Copyright 2018 Thomas Harte. All rights reserved. +// + +#ifndef Analyser_Static_AppleIIgs_StaticAnalyser_hpp +#define Analyser_Static_AppleIIgs_StaticAnalyser_hpp + +#include "../StaticAnalyser.hpp" +#include "../../../Storage/TargetPlatforms.hpp" +#include + +namespace Analyser { +namespace Static { +namespace AppleIIgs { + +TargetList GetTargets(const Media &media, const std::string &file_name, TargetPlatform::IntType potential_platforms); + +} +} +} + +#endif /* Analyser_Static_AppleIIgs_StaticAnalyser_hpp */ diff --git a/Analyser/Static/AppleIIgs/Target.hpp b/Analyser/Static/AppleIIgs/Target.hpp new file mode 100644 index 000000000..0394312d4 --- /dev/null +++ b/Analyser/Static/AppleIIgs/Target.hpp @@ -0,0 +1,49 @@ +// +// Target.hpp +// Clock Signal +// +// Created by Thomas Harte on 20/10/2020. +// Copyright 2018 Thomas Harte. All rights reserved. +// + +#ifndef Analyser_Static_AppleIIgs_Target_h +#define Analyser_Static_AppleIIgs_Target_h + +#include "../../../Reflection/Enum.hpp" +#include "../../../Reflection/Struct.hpp" +#include "../StaticAnalyser.hpp" + +namespace Analyser { +namespace Static { +namespace AppleIIgs { + +struct Target: public Analyser::Static::Target, public Reflection::StructImpl { + ReflectableEnum(Model, + ROM00, + ROM01, + ROM03 + ); + ReflectableEnum(MemoryModel, + TwoHundredAndFiftySixKB, + OneMB, + EightMB + ); + + Model model = Model::ROM03; + MemoryModel memory_model = MemoryModel::EightMB; + + Target() : Analyser::Static::Target(Machine::AppleIIgs) { + if(needs_declare()) { + DeclareField(model); + DeclareField(memory_model); + AnnounceEnum(Model); + AnnounceEnum(MemoryModel); + } + } +}; + +} +} +} + +#endif /* Analyser_Static_AppleIIgs_Target_h */ diff --git a/Analyser/Static/StaticAnalyser.cpp b/Analyser/Static/StaticAnalyser.cpp index 35e11e5ce..954e27f03 100644 --- a/Analyser/Static/StaticAnalyser.cpp +++ b/Analyser/Static/StaticAnalyser.cpp @@ -17,6 +17,7 @@ #include "Acorn/StaticAnalyser.hpp" #include "AmstradCPC/StaticAnalyser.hpp" #include "AppleII/StaticAnalyser.hpp" +#include "AppleIIgs/StaticAnalyser.hpp" #include "Atari2600/StaticAnalyser.hpp" #include "AtariST/StaticAnalyser.hpp" #include "Coleco/StaticAnalyser.hpp" @@ -188,6 +189,7 @@ TargetList Analyser::Static::GetTargets(const std::string &file_name) { if(potential_platforms & TargetPlatform::Acorn) Append(Acorn); if(potential_platforms & TargetPlatform::AmstradCPC) Append(AmstradCPC); if(potential_platforms & TargetPlatform::AppleII) Append(AppleII); + if(potential_platforms & TargetPlatform::AppleIIgs) Append(AppleIIgs); if(potential_platforms & TargetPlatform::Atari2600) Append(Atari2600); if(potential_platforms & TargetPlatform::AtariST) Append(AtariST); if(potential_platforms & TargetPlatform::ColecoVision) Append(Coleco); diff --git a/Machines/Apple/AppleIIgs/AppleIIgs.cpp b/Machines/Apple/AppleIIgs/AppleIIgs.cpp new file mode 100644 index 000000000..f570619be --- /dev/null +++ b/Machines/Apple/AppleIIgs/AppleIIgs.cpp @@ -0,0 +1,31 @@ +// +// AppleIIgs.cpp +// Clock Signal +// +// Created by Thomas Harte on 20/10/2020. +// Copyright 2020 Thomas Harte. All rights reserved. +// + +#include "AppleIIgs.hpp" + +#include "../../../Analyser/Static/AppleIIgs/Target.hpp" + +namespace Apple { +namespace IIgs { + +} +} + +using namespace Apple::IIgs; + +Machine *Machine::AppleIIgs(const Analyser::Static::Target *target, const ROMMachine::ROMFetcher &rom_fetcher) { + using Target = Analyser::Static::AppleIIgs::Target; + + // TODO. + (void)target; + (void)rom_fetcher; + + return nullptr; +} + +Machine::~Machine() {} diff --git a/Machines/Apple/AppleIIgs/AppleIIgs.hpp b/Machines/Apple/AppleIIgs/AppleIIgs.hpp new file mode 100644 index 000000000..449919afd --- /dev/null +++ b/Machines/Apple/AppleIIgs/AppleIIgs.hpp @@ -0,0 +1,33 @@ +// +// AppleIIgs.hpp +// Clock Signal +// +// Created by Thomas Harte on 20/10/2020. +// Copyright 2020 Thomas Harte. All rights reserved. +// + +#ifndef AppleIIgs_hpp +#define AppleIIgs_hpp + +#include "../../../Configurable/Configurable.hpp" +#include "../../../Configurable/StandardOptions.hpp" +#include "../../../Analyser/Static/StaticAnalyser.hpp" +#include "../../ROMMachine.hpp" + +#include + +namespace Apple { +namespace IIgs { + +class Machine { + public: + virtual ~Machine(); + + /// Creates and returns an AppleIIgs. + static Machine *AppleIIgs(const Analyser::Static::Target *target, const ROMMachine::ROMFetcher &rom_fetcher); +}; + +} +} + +#endif /* AppleII_hpp */ diff --git a/Machines/Utility/MachineForTarget.cpp b/Machines/Utility/MachineForTarget.cpp index 2d721a4dc..c0712421b 100644 --- a/Machines/Utility/MachineForTarget.cpp +++ b/Machines/Utility/MachineForTarget.cpp @@ -10,9 +10,10 @@ #include -// Sources for runtime options. +// Sources for runtime options and machines. #include "../AmstradCPC/AmstradCPC.hpp" #include "../Apple/AppleII/AppleII.hpp" +#include "../Apple/AppleIIgs/AppleIIgs.hpp" #include "../Apple/Macintosh/Macintosh.hpp" #include "../Atari/2600/Atari2600.hpp" #include "../Atari/ST/AtariST.hpp" @@ -28,6 +29,7 @@ #include "../../Analyser/Static/Acorn/Target.hpp" #include "../../Analyser/Static/AmstradCPC/Target.hpp" #include "../../Analyser/Static/AppleII/Target.hpp" +#include "../../Analyser/Static/AppleIIgs/Target.hpp" #include "../../Analyser/Static/Atari2600/Target.hpp" #include "../../Analyser/Static/AtariST/Target.hpp" #include "../../Analyser/Static/Commodore/Target.hpp" @@ -50,6 +52,7 @@ Machine::DynamicMachine *Machine::MachineForTarget(const Analyser::Static::Targe switch(target->machine) { Bind(AmstradCPC) BindD(Apple::II, AppleII) + BindD(Apple::IIgs, AppleIIgs) BindD(Apple::Macintosh, Macintosh) Bind(Atari2600) BindD(Atari::ST, AtariST) @@ -116,6 +119,7 @@ std::string Machine::ShortNameForTargetMachine(const Analyser::Machine machine) switch(machine) { case Analyser::Machine::AmstradCPC: return "AmstradCPC"; case Analyser::Machine::AppleII: return "AppleII"; + case Analyser::Machine::AppleIIgs: return "AppleIIgs"; case Analyser::Machine::Atari2600: return "Atari2600"; case Analyser::Machine::AtariST: return "AtariST"; case Analyser::Machine::ColecoVision: return "ColecoVision"; @@ -135,6 +139,7 @@ std::string Machine::LongNameForTargetMachine(Analyser::Machine machine) { switch(machine) { case Analyser::Machine::AmstradCPC: return "Amstrad CPC"; case Analyser::Machine::AppleII: return "Apple II"; + case Analyser::Machine::AppleIIgs: return "Apple IIgs"; case Analyser::Machine::Atari2600: return "Atari 2600"; case Analyser::Machine::AtariST: return "Atari ST"; case Analyser::Machine::ColecoVision: return "ColecoVision"; @@ -164,6 +169,7 @@ std::vector Machine::AllMachines(Type type, bool long_names) { if(type == Type::Any || type == Type::DoesntRequireMedia) { AddName(AmstradCPC); AddName(AppleII); + AddName(AppleIIgs); AddName(AtariST); AddName(Electron); AddName(Macintosh); @@ -210,6 +216,7 @@ std::map> Machine::Target Add(AmstradCPC); Add(AppleII); + Add(AppleIIgs); Add(AtariST); AddMapped(Electron, Acorn); Add(Macintosh); diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index 020da0edc..70b982aed 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -847,6 +847,10 @@ 4BE0A3EE237BB170002AB46F /* ST.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BE0A3EC237BB170002AB46F /* ST.cpp */; }; 4BE0A3EF237BB170002AB46F /* ST.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BE0A3EC237BB170002AB46F /* ST.cpp */; }; 4BE211DE253E4E4800435408 /* 65C02_no_Rockwell_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 4BE211DD253E4E4800435408 /* 65C02_no_Rockwell_test.bin */; }; + 4BE211FF253FC80900435408 /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BE211FE253FC80900435408 /* StaticAnalyser.cpp */; }; + 4BE21200253FC80900435408 /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BE211FE253FC80900435408 /* StaticAnalyser.cpp */; }; + 4BE21219253FCE9C00435408 /* AppleIIgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BE21214253FCE9C00435408 /* AppleIIgs.cpp */; }; + 4BE2121A253FCE9C00435408 /* AppleIIgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BE21214253FCE9C00435408 /* AppleIIgs.cpp */; }; 4BE34438238389E10058E78F /* AtariSTVideoTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BE34437238389E10058E78F /* AtariSTVideoTests.mm */; }; 4BE76CF922641ED400ACD6FA /* QLTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BE76CF822641ED300ACD6FA /* QLTests.mm */; }; 4BE90FFD22D5864800FB464D /* MacintoshVideoTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BE90FFC22D5864800FB464D /* MacintoshVideoTests.mm */; }; @@ -1770,6 +1774,11 @@ 4BE0A3EC237BB170002AB46F /* ST.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ST.cpp; sourceTree = ""; }; 4BE0A3ED237BB170002AB46F /* ST.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ST.hpp; sourceTree = ""; }; 4BE211DD253E4E4800435408 /* 65C02_no_Rockwell_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = 65C02_no_Rockwell_test.bin; path = "Klaus Dormann/65C02_no_Rockwell_test.bin"; sourceTree = ""; }; + 4BE211FC253FC80800435408 /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = ""; }; + 4BE211FD253FC80900435408 /* Target.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = ""; }; + 4BE211FE253FC80900435408 /* StaticAnalyser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StaticAnalyser.cpp; sourceTree = ""; }; + 4BE2120E253FCE9C00435408 /* AppleIIgs.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = AppleIIgs.hpp; sourceTree = ""; }; + 4BE21214253FCE9C00435408 /* AppleIIgs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleIIgs.cpp; sourceTree = ""; }; 4BE3231220532443006EF799 /* Target.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = ""; }; 4BE32313205327D7006EF799 /* Target.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = ""; }; 4BE32314205328FF006EF799 /* Target.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = ""; }; @@ -2896,6 +2905,7 @@ 4B8944EB201967B4007DE474 /* Acorn */, 4B894514201967B4007DE474 /* AmstradCPC */, 4B15A9FE20824C9F005E6C8D /* AppleII */, + 4BE211FB253FC80800435408 /* AppleIIgs */, 4BC1316C2346DE5000E4FF3D /* Atari2600 */, 4BC131722346DE9100E4FF3D /* AtariST */, 4B7A90EA20410A85008514A2 /* Coleco */, @@ -3612,9 +3622,9 @@ 4BC1316C2346DE5000E4FF3D /* Atari2600 */ = { isa = PBXGroup; children = ( + 4BC1316F2346DE5000E4FF3D /* StaticAnalyser.cpp */, 4BC1316D2346DE5000E4FF3D /* StaticAnalyser.hpp */, 4BC1316E2346DE5000E4FF3D /* Target.hpp */, - 4BC1316F2346DE5000E4FF3D /* StaticAnalyser.cpp */, ); path = Atari2600; sourceTree = ""; @@ -3719,6 +3729,7 @@ 4BCE0048227CE8CA000CA200 /* Apple */ = { isa = PBXGroup; children = ( + 4BE2120D253FCE9C00435408 /* AppleIIgs */, 4BCE0049227CE8CA000CA200 /* AppleII */, 4BCE0057227CFFCA000CA200 /* Macintosh */, ); @@ -3881,6 +3892,25 @@ path = 5380; sourceTree = ""; }; + 4BE211FB253FC80800435408 /* AppleIIgs */ = { + isa = PBXGroup; + children = ( + 4BE211FE253FC80900435408 /* StaticAnalyser.cpp */, + 4BE211FC253FC80800435408 /* StaticAnalyser.hpp */, + 4BE211FD253FC80900435408 /* Target.hpp */, + ); + path = AppleIIgs; + sourceTree = ""; + }; + 4BE2120D253FCE9C00435408 /* AppleIIgs */ = { + isa = PBXGroup; + children = ( + 4BE2120E253FCE9C00435408 /* AppleIIgs.hpp */, + 4BE21214253FCE9C00435408 /* AppleIIgs.cpp */, + ); + path = AppleIIgs; + sourceTree = ""; + }; 4BE5F85A1C3E1C2500C43F01 /* Resources */ = { isa = PBXGroup; children = ( @@ -4571,6 +4601,7 @@ 4B89453D201967B4007DE474 /* StaticAnalyser.cpp in Sources */, 4BC131712346DE5000E4FF3D /* StaticAnalyser.cpp in Sources */, 4B055ACA1FAE9AFB0060FFFF /* Vic20.cpp in Sources */, + 4BE21200253FC80900435408 /* StaticAnalyser.cpp in Sources */, 4B8318B222D3E53C006DB630 /* Video.cpp in Sources */, 4B055ABC1FAE86170060FFFF /* ZX8081.cpp in Sources */, 4B055AC91FAE9AFB0060FFFF /* Keyboard.cpp in Sources */, @@ -4605,6 +4636,7 @@ 4B055A971FAE85BB0060FFFF /* ZX8081.cpp in Sources */, 4B055AAD1FAE85FD0060FFFF /* PCMTrack.cpp in Sources */, 4BD67DD1209BF27B00AB2146 /* Encoder.cpp in Sources */, + 4BE2121A253FCE9C00435408 /* AppleIIgs.cpp in Sources */, 4B89451F201967B4007DE474 /* Tape.cpp in Sources */, 4B055AA81FAE85EF0060FFFF /* Shifter.cpp in Sources */, 4B8318B422D3E546006DB630 /* DriveSpeedAccumulator.cpp in Sources */, @@ -4697,6 +4729,7 @@ 4B1B58F6246CC4E8009C171E /* State.cpp in Sources */, 4BEA525E1DF33323007E74F2 /* Tape.cpp in Sources */, 4B2BF19623E10F0100C3AD60 /* CSHighPrecisionTimer.m in Sources */, + 4BE211FF253FC80900435408 /* StaticAnalyser.cpp in Sources */, 4B8334951F5E25B60097E338 /* C1540.cpp in Sources */, 4B89453C201967B4007DE474 /* StaticAnalyser.cpp in Sources */, 4B595FAD2086DFBA0083CAA8 /* AudioToggle.cpp in Sources */, @@ -4734,6 +4767,7 @@ 4B8805F71DCFF6C9003085B1 /* Commodore.cpp in Sources */, 4BC76E691C98E31700E6EF73 /* FIRFilter.cpp in Sources */, 4B3BF5B01F146265005B6C36 /* CSW.cpp in Sources */, + 4BE21219253FCE9C00435408 /* AppleIIgs.cpp in Sources */, 4BCE0060227D39AB000CA200 /* Video.cpp in Sources */, 4B0ACC2E23775819008902D0 /* TIA.cpp in Sources */, 4B74CF85231370BC00500CE8 /* MacintoshVolume.cpp in Sources */, diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h index e15df8de6..000497914 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h @@ -23,6 +23,12 @@ typedef NS_ENUM(NSInteger, CSMachineAppleIIDiskController) { CSMachineAppleIIDiskControllerThirteenSector }; +typedef NS_ENUM(NSInteger, CSMachineAppleIIgsModel) { + CSMachineAppleIIgsModelROM00, + CSMachineAppleIIgsModelROM01, + CSMachineAppleIIgsModelROM03, +}; + typedef NS_ENUM(NSInteger, CSMachineAtariSTModel) { CSMachineAtariSTModel512k, }; @@ -74,16 +80,17 @@ typedef int Kilobytes; - (instancetype)initWithFileAtURL:(NSURL *)url; -- (instancetype)initWithElectronDFS:(BOOL)dfs adfs:(BOOL)adfs; - (instancetype)initWithAmstradCPCModel:(CSMachineCPCModel)model; +- (instancetype)initWithAppleIIModel:(CSMachineAppleIIModel)model diskController:(CSMachineAppleIIDiskController)diskController; +- (instancetype)initWithAppleIIgsModel:(CSMachineAppleIIgsModel)model memorySize:(Kilobytes)memorySize; +- (instancetype)initWithAtariSTModel:(CSMachineAtariSTModel)model; +- (instancetype)initWithElectronDFS:(BOOL)dfs adfs:(BOOL)adfs; +- (instancetype)initWithMacintoshModel:(CSMachineMacintoshModel)model; - (instancetype)initWithMSXRegion:(CSMachineMSXRegion)region hasDiskDrive:(BOOL)hasDiskDrive; - (instancetype)initWithOricModel:(CSMachineOricModel)model diskInterface:(CSMachineOricDiskInterface)diskInterface; - (instancetype)initWithVic20Region:(CSMachineVic20Region)region memorySize:(Kilobytes)memorySize hasC1540:(BOOL)hasC1540; - (instancetype)initWithZX80MemorySize:(Kilobytes)memorySize useZX81ROM:(BOOL)useZX81ROM; - (instancetype)initWithZX81MemorySize:(Kilobytes)memorySize; -- (instancetype)initWithAppleIIModel:(CSMachineAppleIIModel)model diskController:(CSMachineAppleIIDiskController)diskController; -- (instancetype)initWithMacintoshModel:(CSMachineMacintoshModel)model; -- (instancetype)initWithAtariSTModel:(CSMachineAtariSTModel)model; @property(nonatomic, readonly) NSString *optionsPanelNibName; @property(nonatomic, readonly) NSString *displayName; diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm index 3bcaceac2..c12d77d0d 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm @@ -16,6 +16,7 @@ #include "../../../../../Analyser/Static/Acorn/Target.hpp" #include "../../../../../Analyser/Static/AmstradCPC/Target.hpp" #include "../../../../../Analyser/Static/AppleII/Target.hpp" +#include "../../../../../Analyser/Static/AppleIIgs/Target.hpp" #include "../../../../../Analyser/Static/AtariST/Target.hpp" #include "../../../../../Analyser/Static/Commodore/Target.hpp" #include "../../../../../Analyser/Static/Macintosh/Target.hpp" @@ -83,6 +84,27 @@ return self; } +- (instancetype)initWithAppleIIgsModel:(CSMachineAppleIIgsModel)model memorySize:(Kilobytes)memorySize { + self = [super init]; + if(self) { + using Target = Analyser::Static::AppleIIgs::Target; + auto target = std::make_unique(); + switch(model) { + default: target->model = Target::Model::ROM00; break; + case CSMachineAppleIIgsModelROM01: target->model = Target::Model::ROM01; break; + case CSMachineAppleIIgsModelROM03: target->model = Target::Model::ROM03; break; + } + switch(memorySize) { + default: target->memory_model = Target::MemoryModel::EightMB; break; + case 1024: target->memory_model = Target::MemoryModel::OneMB; break; + case 256: target->memory_model = Target::MemoryModel::TwoHundredAndFiftySixKB; break; + } + _targets.push_back(std::move(target)); + } + return self; +} + + - (instancetype)initWithAtariSTModel:(CSMachineAtariSTModel)model { self = [super init]; if(self) { diff --git a/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib b/OSBindings/Mac/Clock Signal/MachinePicker/Base.lproj/MachinePicker.xib index e3b662a15..db8c4f6f1 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 @@ - + - + @@ -17,14 +17,14 @@ - + - +