diff --git a/Machines/Enterprise/Enterprise.cpp b/Machines/Enterprise/Enterprise.cpp index e63c6c708..3964c5425 100644 --- a/Machines/Enterprise/Enterprise.cpp +++ b/Machines/Enterprise/Enterprise.cpp @@ -224,11 +224,11 @@ class ConcreteMachine: // MARK: - ScanProducer void set_scan_target(Outputs::Display::ScanTarget *scan_target) override { - (void)scan_target; + nick_.last_valid()->set_scan_target(scan_target); } Outputs::Display::ScanStatus get_scaled_scan_status() const override { - return Outputs::Display::ScanStatus(); + return nick_.last_valid()->get_scaled_scan_status(); } // MARK: - TimedMachine diff --git a/Machines/Enterprise/Nick.cpp b/Machines/Enterprise/Nick.cpp index 3c1f45d16..4cf9268e1 100644 --- a/Machines/Enterprise/Nick.cpp +++ b/Machines/Enterprise/Nick.cpp @@ -12,6 +12,13 @@ using namespace Enterprise; +Nick::Nick() : + crt_(16 * 57, 16, Outputs::Display::Type::PAL50, Outputs::Display::InputDataType::Red4Green4Blue4) { + + // Just use RGB for now. + crt_.set_display_type(Outputs::Display::DisplayType::RGB); +} + void Nick::write(uint16_t address, uint8_t value) { switch(address & 3) { default: @@ -25,5 +32,14 @@ uint8_t Nick::read([[maybe_unused]] uint16_t address) { } void Nick::run_for(HalfCycles) { - +} + +// MARK: - CRT passthroughs. + +void Nick::set_scan_target(Outputs::Display::ScanTarget *scan_target) { + crt_.set_scan_target(scan_target); +} + +Outputs::Display::ScanStatus Nick::get_scaled_scan_status() const { + return crt_.get_scaled_scan_status(); } diff --git a/Machines/Enterprise/Nick.hpp b/Machines/Enterprise/Nick.hpp index bde2c03ad..69a5bcb12 100644 --- a/Machines/Enterprise/Nick.hpp +++ b/Machines/Enterprise/Nick.hpp @@ -11,15 +11,24 @@ #include #include "../../ClockReceiver/ClockReceiver.hpp" +#include "../../Outputs/CRT/CRT.hpp" namespace Enterprise { class Nick { public: + Nick(); + void write(uint16_t address, uint8_t value); uint8_t read(uint16_t address); void run_for(HalfCycles); + + void set_scan_target(Outputs::Display::ScanTarget *scan_target); + Outputs::Display::ScanStatus get_scaled_scan_status() const; + + private: + Outputs::CRT::CRT crt_; };