diff --git a/Machines/Apple/Macintosh/Macintosh.cpp b/Machines/Apple/Macintosh/Macintosh.cpp index 4db65ca4e..20ef4ae80 100644 --- a/Machines/Apple/Macintosh/Macintosh.cpp +++ b/Machines/Apple/Macintosh/Macintosh.cpp @@ -27,6 +27,7 @@ #include "../../../ClockReceiver/JustInTime.hpp" #include "../../../ClockReceiver/ClockingHintSource.hpp" +#include "../../../Configurable/StandardOptions.hpp" //#define LOG_TRACE @@ -55,6 +56,12 @@ const int CLOCK_RATE = 7833600; namespace Apple { namespace Macintosh { +std::vector> get_options() { + return Configurable::standard_options( + static_cast(Configurable::QuickBoot) + ); +} + template class ConcreteMachine: public Machine, public CRTMachine::Machine, @@ -64,6 +71,7 @@ template class ConcreteMachin public KeyboardMachine::MappedMachine, public Zilog::SCC::z8530::Delegate, public Activity::Source, + public Configurable::Device, public DriveSpeedAccumulator::Delegate, public ClockingHint::Observer { public: @@ -506,6 +514,29 @@ template class ConcreteMachin } } + // MARK: - Configuration options. + std::vector> get_options() override { + return Apple::Macintosh::get_options(); + } + + void set_selections(const Configurable::SelectionSet &selections_by_option) override { + bool quick_boot; + if(Configurable::get_quick_boot(selections_by_option, quick_boot)) { + } + } + + Configurable::SelectionSet get_accurate_selections() override { + Configurable::SelectionSet selection_set; + Configurable::append_quick_boot_selection(selection_set, false); + return selection_set; + } + + Configurable::SelectionSet get_user_friendly_selections() override { + Configurable::SelectionSet selection_set; + Configurable::append_quick_boot_selection(selection_set, true); + return selection_set; + } + private: void set_component_prefers_clocking(ClockingHint::Source *component, ClockingHint::Preference clocking) override { scsi_bus_is_clocked_ = scsi_bus_.preferred_clocking() != ClockingHint::Preference::None; diff --git a/Machines/Apple/Macintosh/Macintosh.hpp b/Machines/Apple/Macintosh/Macintosh.hpp index e39462f01..58623ea7c 100644 --- a/Machines/Apple/Macintosh/Macintosh.hpp +++ b/Machines/Apple/Macintosh/Macintosh.hpp @@ -9,12 +9,15 @@ #ifndef Macintosh_hpp #define Macintosh_hpp +#include "../../../Configurable/Configurable.hpp" #include "../../../Analyser/Static/StaticAnalyser.hpp" #include "../../ROMMachine.hpp" namespace Apple { namespace Macintosh { +std::vector> get_options(); + class Machine { public: virtual ~Machine(); diff --git a/Machines/Utility/MachineForTarget.cpp b/Machines/Utility/MachineForTarget.cpp index e5b4ee453..631cb3c7f 100644 --- a/Machines/Utility/MachineForTarget.cpp +++ b/Machines/Utility/MachineForTarget.cpp @@ -139,6 +139,7 @@ std::map>> Machin options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::AppleII), Apple::II::get_options())); options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::ColecoVision), Coleco::Vision::get_options())); options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::Electron), Electron::get_options())); + options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::Macintosh), Apple::Macintosh::get_options())); options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::MSX), MSX::get_options())); options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::Oric), Oric::get_options())); options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::Vic20), Commodore::Vic20::get_options()));