diff options
author | kdx <kikoodx@paranoici.org> | 2023-04-13 23:48:14 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-04-13 23:48:14 +0200 |
commit | a721fdf3dfefa817701371a62c834619055d7ce7 (patch) | |
tree | 3e8be1450ccc19821e739222fb5b516cca8733a0 /src/orgaemu.c | |
parent | 9f3cc0b94113fa7ba5162785c6dc3b5faefe53ab (diff) | |
download | orga-a721fdf3dfefa817701371a62c834619055d7ce7.tar.gz |
ROT DBG
Diffstat (limited to 'src/orgaemu.c')
-rw-r--r-- | src/orgaemu.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/orgaemu.c b/src/orgaemu.c index 74fd41f..38bd412 100644 --- a/src/orgaemu.c +++ b/src/orgaemu.c @@ -95,6 +95,14 @@ exec_op(uint16_t *mem, long pc) push(b); return pc + 1; } + case OP_ROT: { + const uint16_t a = pop(); + const uint16_t b = pop(); + const uint16_t c = pop(); + push(b); + push(a); + push(c); + } return pc + 1; case OP_DUP: { const uint16_t a = pop(); push(a); @@ -145,6 +153,12 @@ exec_op(uint16_t *mem, long pc) case OP_DEC: push(pop() - 1); return pc + 1; + case OP_DBG: + fprintf(stderr, "<%ld> ", stack_ptr); + for (size_t i = 0; i < stack_ptr; i++) + fprintf(stderr, "%d ", stack[i]); + fputc('\n', stderr); + return pc + 1; default: fprintf(stderr, "unhandled opcode %04x\n", mem[pc]); if (mem[pc] <= OP_SLP) |