aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-06-10 22:09:40 +0200
committerkdx <kikoodx@paranoici.org>2023-06-10 22:09:40 +0200
commit78dc5325ae51a8871457b9c418fbed0495bc8910 (patch)
tree2bbe6f9cf361ccebc144a0b8b6b49313c17c2c3a
parenta44b870228b9dcabfe9a200e4a16182082570160 (diff)
downloadorga-78dc5325ae51a8871457b9c418fbed0495bc8910.tar.gz
LTE and GTE
-rw-r--r--src/ops.h4
-rw-r--r--src/orgaemu.c12
2 files changed, 16 insertions, 0 deletions
diff --git a/src/ops.h b/src/ops.h
index 0d06f1b..e42656f 100644
--- a/src/ops.h
+++ b/src/ops.h
@@ -12,7 +12,9 @@ enum {
OP_EQU,
OP_NEQ,
OP_GTH,
+ OP_GTE,
OP_LTH,
+ OP_LTE,
OP_JEZ,
OP_JNZ,
OP_JMP,
@@ -49,7 +51,9 @@ static const char ops[][4] = {
[OP_EQU] = "EQU",
[OP_NEQ] = "NEQ",
[OP_GTH] = "GTH",
+ [OP_GTE] = "GTE",
[OP_LTH] = "LTH",
+ [OP_LTE] = "LTE",
[OP_JEZ] = "JEZ",
[OP_JNZ] = "JNZ",
[OP_JMP] = "JMP",
diff --git a/src/orgaemu.c b/src/orgaemu.c
index a9f29d2..09fd453 100644
--- a/src/orgaemu.c
+++ b/src/orgaemu.c
@@ -258,6 +258,18 @@ exec_op(uint16_t *mem, long pc)
push(a < b);
return pc + 1;
}
+ case OP_GTE: {
+ const uint16_t b = pop();
+ const uint16_t a = pop();
+ push(a >= b);
+ return pc + 1;
+ }
+ case OP_LTE: {
+ const uint16_t b = pop();
+ const uint16_t a = pop();
+ push(a <= b);
+ return pc + 1;
+ }
case OP_JEZ:
if (pop() == 0)
return mem[pc + 1];