c++/rgb-assembler/commands/IncrementDecrement.h
changeset 33 ff150572e8c0
parent 32 78c4d6b53499
     1.1 --- a/c++/rgb-assembler/commands/IncrementDecrement.h	Mon Dec 25 00:34:27 2017 +0100
     1.2 +++ b/c++/rgb-assembler/commands/IncrementDecrement.h	Mon Dec 25 01:27:44 2017 +0100
     1.3 @@ -39,14 +39,9 @@
     1.4  
     1.5  	void process(Memory &memory) override {
     1.6  		address_t address = memory.read<address_t>();
     1.7 -		address_t originalAddress = memory.getIndex();
     1.8 -		// TODO: add to Memory methods read(address_t) and write(address_t, T)
     1.9 -		memory.setIndex(address);
    1.10 -		octet_t value = memory.read<octet_t>();
    1.11 +		octet_t value = memory.read<octet_t>(address);
    1.12  		value = increment ? value + change : value - change;
    1.13 -		memory.setIndex(address);
    1.14 -		memory.write<octet_t>(value);
    1.15 -		memory.setIndex(originalAddress);
    1.16 +		memory.write<octet_t>(address, value);
    1.17  		wprintf(L"%sCREMENT %*d → %02X\n", (increment ? "IN" : "DE"), 5, address, value);
    1.18  	}
    1.19  private: