1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-13 00:29:14 +00:00
CLK/Analyser/Static/AppleII/Target.hpp

58 lines
1.2 KiB
C++
Raw Normal View History

//
// Target.hpp
// Clock Signal
//
// Created by Thomas Harte on 21/04/2018.
// Copyright 2018 Thomas Harte. All rights reserved.
//
#pragma once
#include "../../../Reflection/Enum.hpp"
#include "../../../Reflection/Struct.hpp"
#include "../StaticAnalyser.hpp"
2023-05-10 21:02:18 +00:00
namespace Analyser::Static::AppleII {
struct Target: public Analyser::Static::Target, public Reflection::StructImpl<Target> {
ReflectableEnum(Model,
II,
IIplus,
IIe,
EnhancedIIe
);
ReflectableEnum(DiskController,
None,
SixteenSector,
ThirteenSector
);
2022-09-15 16:17:50 +00:00
ReflectableEnum(SCSIController,
None,
AppleSCSI
);
2018-07-31 03:07:34 +00:00
Model model = Model::IIe;
DiskController disk_controller = DiskController::None;
2022-09-15 16:17:50 +00:00
SCSIController scsi_controller = SCSIController::None;
2024-02-14 20:18:19 +00:00
bool has_mockingboard = true;
Target() : Analyser::Static::Target(Machine::AppleII) {
if(needs_declare()) {
DeclareField(model);
DeclareField(disk_controller);
2022-09-15 16:17:50 +00:00
DeclareField(scsi_controller);
DeclareField(has_mockingboard);
2022-09-15 16:17:50 +00:00
AnnounceEnum(Model);
AnnounceEnum(DiskController);
2022-09-15 16:17:50 +00:00
AnnounceEnum(SCSIController);
}
}
};
constexpr bool is_iie(Target::Model model) {
return model == Target::Model::IIe || model == Target::Model::EnhancedIIe;
}
}