c++/rgb-assembler/commands/GotoCompare.h
author František Kučera <franta-hg@frantovo.cz>
Sat, 23 Dec 2017 23:50:44 +0100
changeset 25 5ce09de7f9b7
parent 20 c++/rgb-assembler/commands/Goto.h@b9ceffdcaf14
child 29 10d6964e7b4a
permissions -rw-r--r--
GOTO_COMPARE in class
franta-hg@20
     1
#pragma once
franta-hg@20
     2
franta-hg@20
     3
#include <wchar.h>
franta-hg@20
     4
franta-hg@20
     5
#include "../Command.h"
franta-hg@20
     6
franta-hg@20
     7
namespace commands {
franta-hg@20
     8
franta-hg@25
     9
class GotoCompare : public Command {
franta-hg@20
    10
public:
franta-hg@20
    11
franta-hg@20
    12
	void process(octet_t* memory, address_t& index) override {
franta-hg@25
    13
		address_t aa = read<address_t>(memory, index);
franta-hg@25
    14
		address_t ab = read<address_t>(memory, index);
franta-hg@25
    15
		address_t eq = read<address_t>(memory, index);
franta-hg@25
    16
		address_t gt = read<address_t>(memory, index);
franta-hg@25
    17
		address_t lt = read<address_t>(memory, index);
franta-hg@25
    18
franta-hg@25
    19
		octet_t a = read<octet_t>(memory, aa);
franta-hg@25
    20
		octet_t b = read<octet_t>(memory, ab);
franta-hg@25
    21
franta-hg@25
    22
		if (a == b) index = eq;
franta-hg@25
    23
		else if (a > b) index = gt;
franta-hg@25
    24
		else index = lt;
franta-hg@25
    25
franta-hg@25
    26
		wprintf(L"GOTO COMPARE  a = %02X, b = %02X, eq = %d, gt = %d, lt = %d → %d\n", a, b, eq, gt, lt, index);
franta-hg@20
    27
	}
franta-hg@20
    28
private:
franta-hg@20
    29
franta-hg@20
    30
};
franta-hg@20
    31
franta-hg@20
    32
}