diff -r f049c3d3244d -r b997cbf9e30b c++/rgb-assembler/commands/IncrementDecrement.h --- a/c++/rgb-assembler/commands/IncrementDecrement.h Sun Dec 24 00:47:34 2017 +0100 +++ b/c++/rgb-assembler/commands/IncrementDecrement.h Mon Dec 25 00:24:07 2017 +0100 @@ -37,13 +37,16 @@ this->change = change; } - void process(octet_t* memory, address_t& index) override { - address_t address = read(memory, index); - address_t address_r = address; - address_t address_w = address_r; - octet_t value = read(memory, address_r); + void process(Memory &memory) override { + address_t address = memory.read(); + address_t originalAddress = memory.getIndex(); + // TODO: add to Memory methods read(address_t) and write(address_t, T) + memory.setIndex(address); + octet_t value = memory.read(); value = increment ? value + change : value - change; - write(memory, address_w, value); + memory.setIndex(address); + memory.write(value); + memory.setIndex(originalAddress); wprintf(L"%sCREMENT %*d → %02X\n", (increment ? "IN" : "DE"), 5, address, value); } private: