From 2a6e9c5e8ae259d6f286437352bfff06c040c9e7 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 30 May 2021 19:28:26 -0400 Subject: [PATCH 001/117] Add readme for Enterprise ROM names. --- ROMImages/Enterprise/readme.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 ROMImages/Enterprise/readme.txt diff --git a/ROMImages/Enterprise/readme.txt b/ROMImages/Enterprise/readme.txt new file mode 100644 index 000000000..2b4947e52 --- /dev/null +++ b/ROMImages/Enterprise/readme.txt @@ -0,0 +1,5 @@ +ROM files would ordinarily go here; the copyright status of these is uncertain so they have not been included in this repository. + +Expected files: + +exos.rom From 61c127ed2e888f58d1bb7a238b29a92906fe386e Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 14 Jun 2021 20:55:39 -0400 Subject: [PATCH 002/117] Adds Enterprise as a File -> New... machine. And, similarly, exposes it for the route used by SDL. --- Analyser/Machines.hpp | 1 + Machines/Enterprise/Enterprise.cpp | 35 ++++++ Machines/Enterprise/Enterprise.hpp | 27 +++++ Machines/Utility/MachineForTarget.cpp | 9 +- .../Clock Signal.xcodeproj/project.pbxproj | 34 ++++++ .../xcschemes/Clock Signal Kiosk.xcscheme | 10 +- .../Machine/StaticAnalyser/CSStaticAnalyser.h | 7 ++ .../StaticAnalyser/CSStaticAnalyser.mm | 12 +++ .../Base.lproj/MachinePicker.xib | 100 +++++++++++------- .../MachinePicker/MachinePicker.swift | 16 +-- Storage/TargetPlatforms.hpp | 15 +-- 11 files changed, 207 insertions(+), 59 deletions(-) create mode 100644 Machines/Enterprise/Enterprise.cpp create mode 100644 Machines/Enterprise/Enterprise.hpp diff --git a/Analyser/Machines.hpp b/Analyser/Machines.hpp index 7159408f8..5c8fb6602 100644 --- a/Analyser/Machines.hpp +++ b/Analyser/Machines.hpp @@ -19,6 +19,7 @@ enum class Machine { AtariST, ColecoVision, Electron, + Enterprise, Macintosh, MasterSystem, MSX, diff --git a/Machines/Enterprise/Enterprise.cpp b/Machines/Enterprise/Enterprise.cpp new file mode 100644 index 000000000..ce793368d --- /dev/null +++ b/Machines/Enterprise/Enterprise.cpp @@ -0,0 +1,35 @@ +// +// Enterprise.cpp +// Clock Signal +// +// Created by Thomas Harte on 10/06/2021. +// Copyright © 2021 Thomas Harte. All rights reserved. +// + +#include "Enterprise.hpp" + +#include "../../Analyser/Static/Enterprise/Target.hpp" + +namespace Enterprise { + +class ConcreteMachine: + public Machine { + public: + ConcreteMachine(const Analyser::Static::Enterprise::Target &target, const ROMMachine::ROMFetcher &rom_fetcher) { + (void)target; + (void)rom_fetcher; + } +}; + +} + +using namespace Enterprise; + +Machine *Machine::Enterprise(const Analyser::Static::Target *target, const ROMMachine::ROMFetcher &rom_fetcher) { + using Target = Analyser::Static::Enterprise::Target; + const Target *const enterprise_target = dynamic_cast(target); + + return new Enterprise::ConcreteMachine(*enterprise_target, rom_fetcher); +} + +Machine::~Machine() {} diff --git a/Machines/Enterprise/Enterprise.hpp b/Machines/Enterprise/Enterprise.hpp new file mode 100644 index 000000000..3a42a70f5 --- /dev/null +++ b/Machines/Enterprise/Enterprise.hpp @@ -0,0 +1,27 @@ +// +// Enterprise.hpp +// Clock Signal +// +// Created by Thomas Harte on 10/06/2021. +// Copyright © 2021 Thomas Harte. All rights reserved. +// + +#ifndef Enterprise_hpp +#define Enterprise_hpp + +#include "../../Analyser/Static/StaticAnalyser.hpp" +#include "../ROMMachine.hpp" + +namespace Enterprise { + +class Machine { + public: + virtual ~Machine(); + + static Machine *Enterprise(const Analyser::Static::Target *target, const ROMMachine::ROMFetcher &rom_fetcher); + +}; + +}; + +#endif /* Enterprise_hpp */ diff --git a/Machines/Utility/MachineForTarget.cpp b/Machines/Utility/MachineForTarget.cpp index 0a576e867..0c1e92500 100644 --- a/Machines/Utility/MachineForTarget.cpp +++ b/Machines/Utility/MachineForTarget.cpp @@ -20,6 +20,7 @@ #include "../ColecoVision/ColecoVision.hpp" #include "../Commodore/Vic-20/Vic20.hpp" #include "../Electron/Electron.hpp" +#include "../Enterprise/Enterprise.hpp" #include "../MasterSystem/MasterSystem.hpp" #include "../MSX/MSX.hpp" #include "../Oric/Oric.hpp" @@ -34,6 +35,7 @@ #include "../../Analyser/Static/Atari2600/Target.hpp" #include "../../Analyser/Static/AtariST/Target.hpp" #include "../../Analyser/Static/Commodore/Target.hpp" +#include "../../Analyser/Static/Enterprise/Target.hpp" #include "../../Analyser/Static/Macintosh/Target.hpp" #include "../../Analyser/Static/MSX/Target.hpp" #include "../../Analyser/Static/Oric/Target.hpp" @@ -49,7 +51,7 @@ Machine::DynamicMachine *Machine::MachineForTarget(const Analyser::Static::Targe Machine::DynamicMachine *machine = nullptr; try { -#define BindD(name, m) case Analyser::Machine::m: machine = new Machine::TypedDynamicMachine(name::Machine::m(target, rom_fetcher)); break; +#define BindD(name, m) case Analyser::Machine::m: machine = new Machine::TypedDynamicMachine<::name::Machine>(name::Machine::m(target, rom_fetcher)); break; #define Bind(m) BindD(m, m) switch(target->machine) { Bind(AmstradCPC) @@ -61,6 +63,7 @@ Machine::DynamicMachine *Machine::MachineForTarget(const Analyser::Static::Targe BindD(Coleco::Vision, ColecoVision) BindD(Commodore::Vic20, Vic20) Bind(Electron) + Bind(Enterprise) Bind(MSX) Bind(Oric) BindD(Sega::MasterSystem, MasterSystem) @@ -127,6 +130,7 @@ std::string Machine::ShortNameForTargetMachine(const Analyser::Machine machine) case Analyser::Machine::AtariST: return "AtariST"; case Analyser::Machine::ColecoVision: return "ColecoVision"; case Analyser::Machine::Electron: return "Electron"; + case Analyser::Machine::Enterprise: return "Enterprise"; case Analyser::Machine::Macintosh: return "Macintosh"; case Analyser::Machine::MasterSystem: return "MasterSystem"; case Analyser::Machine::MSX: return "MSX"; @@ -148,6 +152,7 @@ std::string Machine::LongNameForTargetMachine(Analyser::Machine machine) { case Analyser::Machine::AtariST: return "Atari ST"; case Analyser::Machine::ColecoVision: return "ColecoVision"; case Analyser::Machine::Electron: return "Acorn Electron"; + case Analyser::Machine::Enterprise: return "Enterprise"; case Analyser::Machine::Macintosh: return "Apple Macintosh"; case Analyser::Machine::MasterSystem: return "Sega Master System"; case Analyser::Machine::MSX: return "MSX"; @@ -177,6 +182,7 @@ std::vector Machine::AllMachines(Type type, bool long_names) { AddName(AppleIIgs); AddName(AtariST); AddName(Electron); + AddName(Enterprise); AddName(Macintosh); AddName(MSX); AddName(Oric); @@ -226,6 +232,7 @@ std::map> Machine::Target Add(AppleIIgs); Add(AtariST); AddMapped(Electron, Acorn); + Add(Enterprise); Add(Macintosh); Add(MSX); Add(Oric); diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index 5bdace657..6ef07aa80 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -17,6 +17,10 @@ 4B051C93266D9D6900CA44E8 /* ROMImages in Resources */ = {isa = PBXBuildFile; fileRef = 4BC9DF441D044FCA00F44158 /* ROMImages */; }; 4B051C95266EF50200CA44E8 /* AppleIIOptionsPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B051C94266EF50200CA44E8 /* AppleIIOptionsPanel.swift */; }; 4B051C97266EF5F600CA44E8 /* CSAppleII.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B051C96266EF5F600CA44E8 /* CSAppleII.mm */; }; + 4B051CA22676F52200CA44E8 /* Enterprise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B051CA12676F52200CA44E8 /* Enterprise.cpp */; }; + 4B051CA32676F52200CA44E8 /* Enterprise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B051CA12676F52200CA44E8 /* Enterprise.cpp */; }; + 4B051CA826781D6500CA44E8 /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B051CA726781D6500CA44E8 /* StaticAnalyser.cpp */; }; + 4B051CA926781D6500CA44E8 /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B051CA726781D6500CA44E8 /* StaticAnalyser.cpp */; }; 4B05401E219D1618001BF69C /* ScanTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B05401D219D1618001BF69C /* ScanTarget.cpp */; }; 4B05401F219D1618001BF69C /* ScanTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B05401D219D1618001BF69C /* ScanTarget.cpp */; }; 4B055A7A1FAE78A00060FFFF /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B055A771FAE78210060FFFF /* SDL2.framework */; }; @@ -1028,6 +1032,11 @@ 4B051C94266EF50200CA44E8 /* AppleIIOptionsPanel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppleIIOptionsPanel.swift; sourceTree = ""; }; 4B051C96266EF5F600CA44E8 /* CSAppleII.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = CSAppleII.mm; sourceTree = ""; }; 4B051C98266EF60500CA44E8 /* CSAppleII.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSAppleII.h; sourceTree = ""; }; + 4B051CA02676F52200CA44E8 /* Enterprise.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Enterprise.hpp; sourceTree = ""; }; + 4B051CA12676F52200CA44E8 /* Enterprise.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Enterprise.cpp; sourceTree = ""; }; + 4B051CA526781D6500CA44E8 /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = ""; }; + 4B051CA626781D6500CA44E8 /* Target.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = ""; }; + 4B051CA726781D6500CA44E8 /* StaticAnalyser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StaticAnalyser.cpp; sourceTree = ""; }; 4B05401D219D1618001BF69C /* ScanTarget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ScanTarget.cpp; sourceTree = ""; }; 4B055A6A1FAE763F0060FFFF /* Clock Signal Kiosk */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "Clock Signal Kiosk"; sourceTree = BUILT_PRODUCTS_DIR; }; 4B055A771FAE78210060FFFF /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = ../../../../Library/Frameworks/SDL2.framework; sourceTree = SOURCE_ROOT; }; @@ -2090,6 +2099,25 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 4B051C9F2676F52200CA44E8 /* Enterprise */ = { + isa = PBXGroup; + children = ( + 4B051CA02676F52200CA44E8 /* Enterprise.hpp */, + 4B051CA12676F52200CA44E8 /* Enterprise.cpp */, + ); + path = Enterprise; + sourceTree = ""; + }; + 4B051CA426781D6500CA44E8 /* Enterprise */ = { + isa = PBXGroup; + children = ( + 4B051CA726781D6500CA44E8 /* StaticAnalyser.cpp */, + 4B051CA526781D6500CA44E8 /* StaticAnalyser.hpp */, + 4B051CA626781D6500CA44E8 /* Target.hpp */, + ); + path = Enterprise; + sourceTree = ""; + }; 4B055A761FAE78210060FFFF /* Frameworks */ = { isa = PBXGroup; children = ( @@ -3185,6 +3213,7 @@ 4B8944FB201967B4007DE474 /* Commodore */, 4B894507201967B4007DE474 /* Disassembler */, 4BD67DC8209BE4D600AB2146 /* DiskII */, + 4B051CA426781D6500CA44E8 /* Enterprise */, 4BB4BFB622A4372E0069048D /* Macintosh */, 4B89450F201967B4007DE474 /* MSX */, 4B8944F6201967B4007DE474 /* Oric */, @@ -4075,6 +4104,7 @@ 4B7A90E22041097C008514A2 /* ColecoVision */, 4B4DC81D1D2C2425003C5BF8 /* Commodore */, 4B2E2D9E1C3A070900138695 /* Electron */, + 4B051C9F2676F52200CA44E8 /* Enterprise */, 4B7F188B2154825D00388727 /* MasterSystem */, 4B79A4FC1FC8FF9800EEDAD5 /* MSX */, 4BCF1FA51DADC3E10039D2E7 /* Oric */, @@ -5177,6 +5207,7 @@ 4B055AB41FAE860F0060FFFF /* OricTAP.cpp in Sources */, 4B055AB71FAE860F0060FFFF /* TZX.cpp in Sources */, 4B2BF19123DCC6A200C3AD60 /* BD500.cpp in Sources */, + 4B051CA926781D6500CA44E8 /* StaticAnalyser.cpp in Sources */, 4B055ADA1FAE9B460060FFFF /* 1770.cpp in Sources */, 4B80CD77256CA16600176FCC /* 2MG.cpp in Sources */, 4B0F1BE62602FF9D00B85C66 /* ZX8081.cpp in Sources */, @@ -5186,6 +5217,7 @@ 4B055AB61FAE860F0060FFFF /* TapeUEF.cpp in Sources */, 4B055A9D1FAE85DA0060FFFF /* D64.cpp in Sources */, 4B0ACC2B23775819008902D0 /* Video.cpp in Sources */, + 4B051CA32676F52200CA44E8 /* Enterprise.cpp in Sources */, 4B055ABB1FAE86170060FFFF /* Oric.cpp in Sources */, 4B12C0EE1FCFAD1A005BFD93 /* Keyboard.cpp in Sources */, 4BCD634A22D6756400F567F1 /* MacintoshDoubleDensityDrive.cpp in Sources */, @@ -5492,6 +5524,7 @@ 4B12C0ED1FCFA98D005BFD93 /* Keyboard.cpp in Sources */, 4BA0F68E1EEA0E8400E9489E /* ZX8081.cpp in Sources */, 4BD468F71D8DF41D0084958B /* 1770.cpp in Sources */, + 4B051CA22676F52200CA44E8 /* Enterprise.cpp in Sources */, 4B7F1897215486A200388727 /* StaticAnalyser.cpp in Sources */, 4B47F6C5241C87A100ED06F7 /* Struct.cpp in Sources */, 4B5FADBA1DE3151600AEC565 /* FileHolder.cpp in Sources */, @@ -5505,6 +5538,7 @@ 4B74CF812312FA9C00500CE8 /* HFV.cpp in Sources */, 4B17B58B20A8A9D9007CCA8F /* StringSerialiser.cpp in Sources */, 4B2E2D9D1C3A070400138695 /* Electron.cpp in Sources */, + 4B051CA826781D6500CA44E8 /* StaticAnalyser.cpp in Sources */, 4B3940E71DA83C8300427841 /* AsyncTaskQueue.cpp in Sources */, 4B0E04FA1FC9FA3100F43484 /* 9918.cpp in Sources */, 4B69FB3D1C4D908A00B5F0AA /* Tape.cpp in Sources */, diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme index 2b77bafce..d3942a20a 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme +++ b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal Kiosk.xcscheme @@ -85,8 +85,8 @@ isEnabled = "YES"> + argument = "--new=enterprise" + isEnabled = "YES"> + isEnabled = "NO"> + isEnabled = "NO"> + isEnabled = "NO"> diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h index e82adb720..d064f48e8 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.h @@ -41,6 +41,12 @@ typedef NS_ENUM(NSInteger, CSMachineCPCModel) { CSMachineCPCModel6128 }; +typedef NS_ENUM(NSInteger, CSMachineEnterpriseModel) { + CSMachineEnterpriseModel64, + CSMachineEnterpriseModel128, + CSMachineEnterpriseModel256, +}; + typedef NS_ENUM(NSInteger, CSMachineMacintoshModel) { CSMachineMacintoshModel128k, CSMachineMacintoshModel512k, @@ -96,6 +102,7 @@ typedef int Kilobytes; - (instancetype)initWithAppleIIgsModel:(CSMachineAppleIIgsModel)model memorySize:(Kilobytes)memorySize; - (instancetype)initWithAtariSTModel:(CSMachineAtariSTModel)model; - (instancetype)initWithElectronDFS:(BOOL)dfs adfs:(BOOL)adfs ap6:(BOOL)ap6 sidewaysRAM:(BOOL)sidewaysRAM; +- (instancetype)initWithEnterpriseModel:(CSMachineEnterpriseModel)model; - (instancetype)initWithMacintoshModel:(CSMachineMacintoshModel)model; - (instancetype)initWithMSXRegion:(CSMachineMSXRegion)region hasDiskDrive:(BOOL)hasDiskDrive; - (instancetype)initWithOricModel:(CSMachineOricModel)model diskInterface:(CSMachineOricDiskInterface)diskInterface; diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm index acc8dd852..5a7a4032c 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm @@ -19,6 +19,7 @@ #include "../../../../../Analyser/Static/AppleIIgs/Target.hpp" #include "../../../../../Analyser/Static/AtariST/Target.hpp" #include "../../../../../Analyser/Static/Commodore/Target.hpp" +#include "../../../../../Analyser/Static/Enterprise/Target.hpp" #include "../../../../../Analyser/Static/Macintosh/Target.hpp" #include "../../../../../Analyser/Static/MSX/Target.hpp" #include "../../../../../Analyser/Static/Oric/Target.hpp" @@ -130,6 +131,17 @@ return self; } +- (instancetype)initWithEnterpriseModel:(CSMachineEnterpriseModel)model { + self = [super init]; + if(self) { + using Target = Analyser::Static::Enterprise::Target; + auto target = std::make_unique(); + // TODO: apply model. + _targets.push_back(std::move(target)); + } + return self; +} + - (instancetype)initWithMacintoshModel:(CSMachineMacintoshModel)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 cc68c2170..75127f3c4 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,10 +17,10 @@ - + - + + + + + + + + + - + - + @@ -317,7 +337,7 @@ Gw - + @@ -344,18 +364,18 @@ Gw - + - + @@ -369,7 +389,7 @@ Gw - + @@ -392,11 +412,11 @@ Gw - + - + @@ -404,7 +424,7 @@ Gw - + @@ -418,7 +438,7 @@ Gw - + @@ -434,7 +454,7 @@ Gw - + @@ -459,11 +479,11 @@ Gw - + - + @@ -479,7 +499,7 @@ Gw - + @@ -493,7 +513,7 @@ Gw - + @@ -501,7 +521,7 @@ Gw - + @@ -509,7 +529,7 @@ Gw + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -337,7 +438,7 @@ Gw - + @@ -353,9 +454,9 @@ Gw - + - + @@ -364,18 +465,18 @@ Gw - + - + @@ -389,7 +490,7 @@ Gw - + @@ -400,9 +501,9 @@ Gw - + - + @@ -412,11 +513,11 @@ Gw - + - + @@ -424,7 +525,7 @@ Gw - + @@ -438,7 +539,7 @@ Gw - + @@ -454,7 +555,7 @@ Gw - + @@ -463,7 +564,7 @@ Gw - + @@ -473,17 +574,17 @@ Gw - + - + - + @@ -499,7 +600,7 @@ Gw - + @@ -513,7 +614,7 @@ Gw - + @@ -521,7 +622,7 @@ Gw - + @@ -529,7 +630,7 @@ Gw