aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-04-13 14:35:21 +0200
committerkdx <kikoodx@paranoici.org>2023-04-13 14:35:21 +0200
commita0615ea6f7496e97a5d9f837e9cf80fd6ec3acd0 (patch)
tree45bf519fcc60fac1e1609e9a2ecddf50e8df6d2b
parent8c2e6ce5fa3c4f7484c52c4a1c1b72d5d80bb0c5 (diff)
downloadorga-a0615ea6f7496e97a5d9f837e9cf80fd6ec3acd0.tar.gz
MUL AND ORA XOR
-rw-r--r--src/orgaemu.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/orgaemu.c b/src/orgaemu.c
index b824415..cdadb69 100644
--- a/src/orgaemu.c
+++ b/src/orgaemu.c
@@ -100,12 +100,6 @@ exec_data(uint16_t *mem)
push(a);
push(a);
} break;
- case OP_ADD:
- push(pop() + pop());
- break;
- case OP_WRT:
- putchar(pop());
- break;
case OP_JNZ:
if (pop() != 0) {
pc = mem[pc + 1];
@@ -131,6 +125,24 @@ exec_data(uint16_t *mem)
const uint16_t b = pop();
mem[a] = b;
} break;
+ case OP_WRT:
+ putchar(pop());
+ break;
+ case OP_ADD:
+ push(pop() + pop());
+ break;
+ case OP_MUL:
+ push(pop() * pop());
+ break;
+ case OP_AND:
+ push(pop() & pop());
+ break;
+ case OP_ORA:
+ push(pop() | pop());
+ break;
+ case OP_XOR:
+ push(pop() ^ pop());
+ break;
default:
fprintf(stderr, "unhandled opcode %04x\n", mem[pc]);
if (mem[pc] <= OP_SLP)