1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-06-26 10:29:31 +00:00

Adds an empty shell of a machine.

This commit is contained in:
Thomas Harte 2021-07-16 20:30:48 -04:00
parent c52945aab5
commit 6ade36bf09
6 changed files with 94 additions and 2 deletions

36
Machines/Amiga/Amiga.cpp Normal file
View File

@ -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<const Target *>(target);
return new Amiga::ConcreteMachine(*amiga_target, rom_fetcher);
}
Machine::~Machine() {}

27
Machines/Amiga/Amiga.hpp Normal file
View File

@ -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 */

View File

@ -11,6 +11,7 @@
#include <algorithm>
// 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<std::string> 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<std::string, std::unique_ptr<Analyser::Static::Target>> 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);

View File

@ -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 = "<group>"; };
4BC080CE26A257A200D03FD8 /* Target.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = "<group>"; };
4BC080CF26A257A200D03FD8 /* StaticAnalyser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StaticAnalyser.cpp; sourceTree = "<group>"; };
4BC080D726A25ADA00D03FD8 /* Amiga.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Amiga.hpp; sourceTree = "<group>"; };
4BC080D826A25ADA00D03FD8 /* Amiga.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Amiga.cpp; sourceTree = "<group>"; };
4BC0CB272446BC7B00A79DBB /* OPLTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OPLTests.mm; sourceTree = "<group>"; };
4BC1316D2346DE5000E4FF3D /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = "<group>"; };
4BC1316E2346DE5000E4FF3D /* Target.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = "<group>"; };
@ -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 = "<group>";
};
4BC080D626A25ADA00D03FD8 /* Amiga */ = {
isa = PBXGroup;
children = (
4BC080D726A25ADA00D03FD8 /* Amiga.hpp */,
4BC080D826A25ADA00D03FD8 /* Amiga.cpp */,
);
path = Amiga;
sourceTree = "<group>";
};
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 */,

View File

@ -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 \

View File

@ -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')