1.1 --- a/c++/rgb-assembler/commands/IncrementDecrement.h Sun Dec 24 00:47:34 2017 +0100
1.2 +++ b/c++/rgb-assembler/commands/IncrementDecrement.h Mon Dec 25 00:24:07 2017 +0100
1.3 @@ -37,13 +37,16 @@
1.4 this->change = change;
1.5 }
1.6
1.7 - void process(octet_t* memory, address_t& index) override {
1.8 - address_t address = read<address_t>(memory, index);
1.9 - address_t address_r = address;
1.10 - address_t address_w = address_r;
1.11 - octet_t value = read<octet_t>(memory, address_r);
1.12 + void process(Memory &memory) override {
1.13 + address_t address = memory.read<address_t>();
1.14 + address_t originalAddress = memory.getIndex();
1.15 + // TODO: add to Memory methods read(address_t) and write(address_t, T)
1.16 + memory.setIndex(address);
1.17 + octet_t value = memory.read<octet_t>();
1.18 value = increment ? value + change : value - change;
1.19 - write<octet_t>(memory, address_w, value);
1.20 + memory.setIndex(address);
1.21 + memory.write<octet_t>(value);
1.22 + memory.setIndex(originalAddress);
1.23 wprintf(L"%sCREMENT %*d → %02X\n", (increment ? "IN" : "DE"), 5, address, value);
1.24 }
1.25 private: