author | František Kučera <franta-hg@frantovo.cz> |
Sun, 24 Dec 2017 00:08:55 +0100 | |
changeset 26 | 47ee91579133 |
parent 23 | c++/rgb-assembler/commands/End.h@e85d2bfaff73 |
child 27 | 835bd4559e5c |
permissions | -rw-r--r-- |
franta-hg@20 | 1 |
#pragma once |
franta-hg@20 | 2 |
|
franta-hg@20 | 3 |
#include <wchar.h> |
franta-hg@22 | 4 |
#include <chrono> |
franta-hg@22 | 5 |
#include <thread> |
franta-hg@20 | 6 |
|
franta-hg@20 | 7 |
#include "../Command.h" |
franta-hg@23 | 8 |
#include "../memory.h" |
franta-hg@20 | 9 |
|
franta-hg@22 | 10 |
using namespace std; |
franta-hg@22 | 11 |
|
franta-hg@20 | 12 |
namespace commands { |
franta-hg@20 | 13 |
|
franta-hg@26 | 14 |
class IncrementDecrement : public Command { |
franta-hg@20 | 15 |
public: |
franta-hg@20 | 16 |
|
franta-hg@26 | 17 |
IncrementDecrement(const bool increment) { |
franta-hg@26 | 18 |
this->increment = increment; |
franta-hg@26 | 19 |
} |
franta-hg@26 | 20 |
|
franta-hg@20 | 21 |
void process(octet_t* memory, address_t& index) override { |
franta-hg@26 | 22 |
address_t address = read<address_t>(memory, index); |
franta-hg@26 | 23 |
address_t address_r = address; |
franta-hg@26 | 24 |
address_t address_w = address_r; |
franta-hg@26 | 25 |
octet_t value = read<octet_t>(memory, address_r); |
franta-hg@26 | 26 |
value = increment ? value + 1 : value - 1; |
franta-hg@26 | 27 |
write<octet_t>(memory, address_w, value); |
franta-hg@26 | 28 |
wprintf(L"%sCREMENT %*d → %02X\n", (increment ? "IN" : "DE"), 5, address, value); |
franta-hg@20 | 29 |
} |
franta-hg@20 | 30 |
private: |
franta-hg@26 | 31 |
bool increment; |
franta-hg@20 | 32 |
|
franta-hg@20 | 33 |
}; |
franta-hg@20 | 34 |
|
franta-hg@20 | 35 |
} |