From 6ade36bf0922f33c19084e1a80dff1c37cf79575 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Fri, 16 Jul 2021 20:30:48 -0400 Subject: [PATCH] Adds an empty shell of a machine. --- Machines/Amiga/Amiga.cpp | 36 +++++++++++++++++++ Machines/Amiga/Amiga.hpp | 27 ++++++++++++++ Machines/Utility/MachineForTarget.cpp | 7 ++++ .../Clock Signal.xcodeproj/project.pbxproj | 20 +++++++++-- OSBindings/Qt/ClockSignal.pro | 4 +++ OSBindings/SDL/SConstruct | 2 ++ 6 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 Machines/Amiga/Amiga.cpp create mode 100644 Machines/Amiga/Amiga.hpp diff --git a/Machines/Amiga/Amiga.cpp b/Machines/Amiga/Amiga.cpp new file mode 100644 index 000000000..57b22db2e --- /dev/null +++ b/Machines/Amiga/Amiga.cpp @@ -0,0 +1,36 @@ +// +// Amiga.cpp +// Clock Signal +// +// Created by Thomas Harte on 16/07/2021. +// Copyright © 2021 Thomas Harte. All rights reserved. +// + +#include "Amiga.hpp" + +#include "../../Analyser/Static/Amiga/Target.hpp" + +namespace Amiga { + +class ConcreteMachine: + public Machine { + public: + ConcreteMachine(const Analyser::Static::Amiga::Target &target, const ROMMachine::ROMFetcher &rom_fetcher) { + (void)target; + (void)rom_fetcher; + } + +}; + +} + + +using namespace Amiga; + +Machine *Machine::Amiga(const Analyser::Static::Target *target, const ROMMachine::ROMFetcher &rom_fetcher) { + using Target = Analyser::Static::Amiga::Target; + const Target *const amiga_target = dynamic_cast(target); + return new Amiga::ConcreteMachine(*amiga_target, rom_fetcher); +} + +Machine::~Machine() {} diff --git a/Machines/Amiga/Amiga.hpp b/Machines/Amiga/Amiga.hpp new file mode 100644 index 000000000..caa7fe965 --- /dev/null +++ b/Machines/Amiga/Amiga.hpp @@ -0,0 +1,27 @@ +// +// Amiga.hpp +// Clock Signal +// +// Created by Thomas Harte on 16/07/2021. +// Copyright © 2021 Thomas Harte. All rights reserved. +// + +#ifndef Amiga_hpp +#define Amiga_hpp + +#include "../../Analyser/Static/StaticAnalyser.hpp" +#include "../ROMMachine.hpp" + +namespace Amiga { + +class Machine { + public: + virtual ~Machine(); + + /// Creates and returns an Amiga. + static Machine *Amiga(const Analyser::Static::Target *target, const ROMMachine::ROMFetcher &rom_fetcher); +}; + +} + +#endif /* Amiga_hpp */ diff --git a/Machines/Utility/MachineForTarget.cpp b/Machines/Utility/MachineForTarget.cpp index 347421844..8b0f3026a 100644 --- a/Machines/Utility/MachineForTarget.cpp +++ b/Machines/Utility/MachineForTarget.cpp @@ -11,6 +11,7 @@ #include // Sources for runtime options and machines. +#include "../Amiga/Amiga.hpp" #include "../AmstradCPC/AmstradCPC.hpp" #include "../Apple/AppleII/AppleII.hpp" #include "../Apple/AppleIIgs/AppleIIgs.hpp" @@ -29,6 +30,7 @@ // Sources for construction options. #include "../../Analyser/Static/Acorn/Target.hpp" +#include "../../Analyser/Static/Amiga/Target.hpp" #include "../../Analyser/Static/AmstradCPC/Target.hpp" #include "../../Analyser/Static/AppleII/Target.hpp" #include "../../Analyser/Static/AppleIIgs/Target.hpp" @@ -54,6 +56,7 @@ Machine::DynamicMachine *Machine::MachineForTarget(const Analyser::Static::Targe #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(Amiga) Bind(AmstradCPC) BindD(Apple::II, AppleII) BindD(Apple::IIgs, AppleIIgs) @@ -123,6 +126,7 @@ Machine::DynamicMachine *Machine::MachineForTargets(const Analyser::Static::Targ std::string Machine::ShortNameForTargetMachine(const Analyser::Machine machine) { switch(machine) { + case Analyser::Machine::Amiga: return "Amiga"; case Analyser::Machine::AmstradCPC: return "AmstradCPC"; case Analyser::Machine::AppleII: return "AppleII"; case Analyser::Machine::AppleIIgs: return "AppleIIgs"; @@ -145,6 +149,7 @@ std::string Machine::ShortNameForTargetMachine(const Analyser::Machine machine) std::string Machine::LongNameForTargetMachine(Analyser::Machine machine) { switch(machine) { + case Analyser::Machine::Amiga: return "Amiga"; case Analyser::Machine::AmstradCPC: return "Amstrad CPC"; case Analyser::Machine::AppleII: return "Apple II"; case Analyser::Machine::AppleIIgs: return "Apple IIgs"; @@ -177,6 +182,7 @@ std::vector Machine::AllMachines(Type type, bool long_names) { } if(type == Type::Any || type == Type::DoesntRequireMedia) { + AddName(Amiga); AddName(AmstradCPC); AddName(AppleII); AddName(AppleIIgs); @@ -228,6 +234,7 @@ std::map> Machine::Target options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::Name), new Analyser::Static::TargetNamespace::Target)); #define Add(Name) AddMapped(Name, Name) + Add(Amiga); Add(AmstradCPC); Add(AppleII); Add(AppleIIgs); diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index b2622f38d..04504b721 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -894,6 +894,8 @@ 4BC080CB26A238CC00D03FD8 /* AmigaADF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC080C826A238CC00D03FD8 /* AmigaADF.cpp */; }; 4BC080D026A257A200D03FD8 /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC080CF26A257A200D03FD8 /* StaticAnalyser.cpp */; }; 4BC080D126A257A200D03FD8 /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC080CF26A257A200D03FD8 /* StaticAnalyser.cpp */; }; + 4BC080D926A25ADA00D03FD8 /* Amiga.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC080D826A25ADA00D03FD8 /* Amiga.cpp */; }; + 4BC080DA26A25ADA00D03FD8 /* Amiga.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC080D826A25ADA00D03FD8 /* Amiga.cpp */; }; 4BC0CB282446BC7B00A79DBB /* OPLTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BC0CB272446BC7B00A79DBB /* OPLTests.mm */; }; 4BC131702346DE5000E4FF3D /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC1316F2346DE5000E4FF3D /* StaticAnalyser.cpp */; }; 4BC131712346DE5000E4FF3D /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC1316F2346DE5000E4FF3D /* StaticAnalyser.cpp */; }; @@ -1916,6 +1918,8 @@ 4BC080CD26A257A200D03FD8 /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = ""; }; 4BC080CE26A257A200D03FD8 /* Target.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = ""; }; 4BC080CF26A257A200D03FD8 /* StaticAnalyser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StaticAnalyser.cpp; sourceTree = ""; }; + 4BC080D726A25ADA00D03FD8 /* Amiga.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Amiga.hpp; sourceTree = ""; }; + 4BC080D826A25ADA00D03FD8 /* Amiga.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Amiga.cpp; sourceTree = ""; }; 4BC0CB272446BC7B00A79DBB /* OPLTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OPLTests.mm; sourceTree = ""; }; 4BC1316D2346DE5000E4FF3D /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = ""; }; 4BC1316E2346DE5000E4FF3D /* Target.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = ""; }; @@ -3247,6 +3251,8 @@ 4B8944E9201967B4007DE474 /* Static */ = { isa = PBXGroup; children = ( + 4B894517201967B4007DE474 /* StaticAnalyser.cpp */, + 4B8944EA201967B4007DE474 /* StaticAnalyser.hpp */, 4B8944EB201967B4007DE474 /* Acorn */, 4BC080CC26A257A200D03FD8 /* Amiga */, 4B894514201967B4007DE474 /* AmstradCPC */, @@ -3263,8 +3269,6 @@ 4B89450F201967B4007DE474 /* MSX */, 4B8944F6201967B4007DE474 /* Oric */, 4B7F1894215486A100388727 /* Sega */, - 4B894517201967B4007DE474 /* StaticAnalyser.cpp */, - 4B8944EA201967B4007DE474 /* StaticAnalyser.hpp */, 4B894504201967B4007DE474 /* ZX8081 */, 4B0F1BAF2602645900B85C66 /* ZXSpectrum */, ); @@ -4147,6 +4151,7 @@ 4B046DC31CFE651500E9E45E /* ScanProducer.hpp */, 4B8DD375263481BB00B3C866 /* StateProducer.hpp */, 4BC57CD32434282000FBC404 /* TimedMachine.hpp */, + 4BC080D626A25ADA00D03FD8 /* Amiga */, 4B38F3491F2EC12000D9235D /* AmstradCPC */, 4BCE0048227CE8CA000CA200 /* Apple */, 4B0ACC0423775819008902D0 /* Atari */, @@ -4253,6 +4258,15 @@ path = Amiga; sourceTree = ""; }; + 4BC080D626A25ADA00D03FD8 /* Amiga */ = { + isa = PBXGroup; + children = ( + 4BC080D726A25ADA00D03FD8 /* Amiga.hpp */, + 4BC080D826A25ADA00D03FD8 /* Amiga.cpp */, + ); + path = Amiga; + sourceTree = ""; + }; 4BC1316C2346DE5000E4FF3D /* Atari2600 */ = { isa = PBXGroup; children = ( @@ -5227,6 +5241,7 @@ 4B0E04FB1FC9FA3100F43484 /* 9918.cpp in Sources */, 4B1B88C9202E469400B67DFF /* MultiJoystickMachine.cpp in Sources */, 4BCE1DF225D4C3FA00AE7A2B /* Bus.cpp in Sources */, + 4BC080DA26A25ADA00D03FD8 /* Amiga.cpp in Sources */, 4B055AAA1FAE85F50060FFFF /* CPM.cpp in Sources */, 4B055A9A1FAE85CB0060FFFF /* MFMDiskController.cpp in Sources */, 4B0ACC3123775819008902D0 /* TIASound.cpp in Sources */, @@ -5602,6 +5617,7 @@ 4B1497881EE4A1DA00CE2596 /* ZX80O81P.cpp in Sources */, 4B894520201967B4007DE474 /* StaticAnalyser.cpp in Sources */, 4BB4BFAD22A33DE50069048D /* DriveSpeedAccumulator.cpp in Sources */, + 4BC080D926A25ADA00D03FD8 /* Amiga.cpp in Sources */, 4B2B3A4B1F9B8FA70062DABF /* Typer.cpp in Sources */, 4B4518821F75E91A00926311 /* PCMSegment.cpp in Sources */, 4B74CF812312FA9C00500CE8 /* HFV.cpp in Sources */, diff --git a/OSBindings/Qt/ClockSignal.pro b/OSBindings/Qt/ClockSignal.pro index 6a7ae7d94..e70ec44cb 100644 --- a/OSBindings/Qt/ClockSignal.pro +++ b/OSBindings/Qt/ClockSignal.pro @@ -38,6 +38,7 @@ SOURCES += \ \ $$SRC/Analyser/Static/*.cpp \ $$SRC/Analyser/Static/Acorn/*.cpp \ + $$SRC/Analyser/Static/Amiga/*.cpp \ $$SRC/Analyser/Static/AmstradCPC/*.cpp \ $$SRC/Analyser/Static/AppleII/*.cpp \ $$SRC/Analyser/Static/AppleIIgs/*.cpp \ @@ -81,6 +82,7 @@ SOURCES += \ $$SRC/InstructionSets/x86/*.cpp \ \ $$SRC/Machines/*.cpp \ + $$SRC/Machines/Amiga/*.cpp \ $$SRC/Machines/AmstradCPC/*.cpp \ $$SRC/Machines/Apple/ADB/*.cpp \ $$SRC/Machines/Apple/AppleII/*.cpp \ @@ -159,6 +161,7 @@ HEADERS += \ \ $$SRC/Analyser/Static/*.hpp \ $$SRC/Analyser/Static/Acorn/*.hpp \ + $$SRC/Analyser/Static/Amiga/*.hpp \ $$SRC/Analyser/Static/AmstradCPC/*.hpp \ $$SRC/Analyser/Static/AppleII/*.hpp \ $$SRC/Analyser/Static/AppleIIgs/*.hpp \ @@ -212,6 +215,7 @@ HEADERS += \ $$SRC/InstructionSets/x86/*.hpp \ \ $$SRC/Machines/*.hpp \ + $$SRC/Machines/Amiga/*.hpp \ $$SRC/Machines/AmstradCPC/*.hpp \ $$SRC/Machines/Apple/ADB/*.hpp \ $$SRC/Machines/Apple/AppleII/*.hpp \ diff --git a/OSBindings/SDL/SConstruct b/OSBindings/SDL/SConstruct index b5cadb6c0..3ff1dc338 100644 --- a/OSBindings/SDL/SConstruct +++ b/OSBindings/SDL/SConstruct @@ -22,6 +22,7 @@ SOURCES += glob.glob('../../Analyser/Dynamic/MultiMachine/Implementation/*.cpp') SOURCES += glob.glob('../../Analyser/Static/*.cpp') SOURCES += glob.glob('../../Analyser/Static/Acorn/*.cpp') +SOURCES += glob.glob('../../Analyser/Static/Amiga/*.cpp') SOURCES += glob.glob('../../Analyser/Static/AmstradCPC/*.cpp') SOURCES += glob.glob('../../Analyser/Static/AppleII/*.cpp') SOURCES += glob.glob('../../Analyser/Static/AppleIIgs/*.cpp') @@ -68,6 +69,7 @@ SOURCES += glob.glob('../../InstructionSets/PowerPC/*.cpp') SOURCES += glob.glob('../../InstructionSets/x86/*.cpp') SOURCES += glob.glob('../../Machines/*.cpp') +SOURCES += glob.glob('../../Machines/Amiga/*.cpp') SOURCES += glob.glob('../../Machines/AmstradCPC/*.cpp') SOURCES += glob.glob('../../Machines/Apple/ADB/*.cpp') SOURCES += glob.glob('../../Machines/Apple/AppleII/*.cpp')