diff options
author | kdx <kikoodx@paranoici.org> | 2023-04-13 14:35:21 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-04-13 14:35:21 +0200 |
commit | a0615ea6f7496e97a5d9f837e9cf80fd6ec3acd0 (patch) | |
tree | 45bf519fcc60fac1e1609e9a2ecddf50e8df6d2b | |
parent | 8c2e6ce5fa3c4f7484c52c4a1c1b72d5d80bb0c5 (diff) | |
download | orga-a0615ea6f7496e97a5d9f837e9cf80fd6ec3acd0.tar.gz |
MUL AND ORA XOR
-rw-r--r-- | src/orgaemu.c | 24 |
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) |