franta-hg@20: #pragma once franta-hg@20: franta-hg@20: #include franta-hg@22: #include franta-hg@22: #include franta-hg@20: franta-hg@20: #include "../Command.h" franta-hg@23: #include "../memory.h" franta-hg@20: franta-hg@22: using namespace std; franta-hg@22: franta-hg@20: namespace commands { franta-hg@20: franta-hg@26: class IncrementDecrement : public Command { franta-hg@20: public: franta-hg@20: franta-hg@26: IncrementDecrement(const bool increment) { franta-hg@26: this->increment = increment; franta-hg@26: } franta-hg@26: franta-hg@20: void process(octet_t* memory, address_t& index) override { franta-hg@26: address_t address = read(memory, index); franta-hg@26: address_t address_r = address; franta-hg@26: address_t address_w = address_r; franta-hg@26: octet_t value = read(memory, address_r); franta-hg@26: value = increment ? value + 1 : value - 1; franta-hg@26: write(memory, address_w, value); franta-hg@26: wprintf(L"%sCREMENT %*d → %02X\n", (increment ? "IN" : "DE"), 5, address, value); franta-hg@20: } franta-hg@20: private: franta-hg@26: bool increment; franta-hg@20: franta-hg@20: }; franta-hg@20: franta-hg@20: }