franta-hg@29: /** franta-hg@29: * RGB assembler franta-hg@29: * Copyright © 2017 František Kučera (frantovo.cz) franta-hg@29: * franta-hg@29: * This program is free software: you can redistribute it and/or modify franta-hg@29: * it under the terms of the GNU General Public License as published by franta-hg@29: * the Free Software Foundation, either version 3 of the License, or franta-hg@29: * (at your option) any later version. franta-hg@29: * franta-hg@29: * This program is distributed in the hope that it will be useful, franta-hg@29: * but WITHOUT ANY WARRANTY; without even the implied warranty of franta-hg@29: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the franta-hg@29: * GNU General Public License for more details. franta-hg@29: * franta-hg@29: * You should have received a copy of the GNU General Public License franta-hg@29: * along with this program. If not, see . franta-hg@29: */ franta-hg@29: 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@32: #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@27: IncrementDecrement(const bool increment, octet_t change) { franta-hg@26: this->increment = increment; franta-hg@27: this->change = change; franta-hg@26: } franta-hg@26: franta-hg@31: void process(Memory &memory) override { franta-hg@31: address_t address = memory.read(); franta-hg@33: octet_t value = memory.read(address); franta-hg@27: value = increment ? value + change : value - change; franta-hg@33: memory.write(address, 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@27: octet_t change; franta-hg@20: franta-hg@20: }; franta-hg@20: franta-hg@20: }