diff --git a/Components/9918/Implementation/9918.cpp b/Components/9918/Implementation/9918.cpp index 747d6af43..a6ebe6355 100644 --- a/Components/9918/Implementation/9918.cpp +++ b/Components/9918/Implementation/9918.cpp @@ -849,7 +849,9 @@ void Base::commit_register(int reg, uint8_t value) { default: Storage::command_ = nullptr; case 0b0000: break; // TODO: stop. - case 0b0100: break; // TODO: point. + case 0b0100: + Storage::command_ = std::make_unique(Storage::command_context_); + break; case 0b0101: break; // TODO: pset. case 0b0110: break; // TODO: srch. case 0b0111: diff --git a/Components/9918/Implementation/YamahaCommands.hpp b/Components/9918/Implementation/YamahaCommands.hpp index 89e785eef..609daaeca 100644 --- a/Components/9918/Implementation/YamahaCommands.hpp +++ b/Components/9918/Implementation/YamahaCommands.hpp @@ -63,7 +63,7 @@ struct Command { virtual bool done() = 0; /// Repopulates the fields above with the next action to take. - virtual void advance() = 0; + virtual void advance() {} }; // MARK: - Line drawing. @@ -125,6 +125,19 @@ struct Line: public Command { Vector major_, minor_; }; +struct Point: public Command { + public: + Point(CommandContext &context) : Command(context) { + cycles = 0; + access = AccessType::PlotPoint; + location = context.destination; + } + + bool done() final { + return true; + } +}; + } } }