uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 9b8cd748ad81ad74c5cdb7e48e4f6bae319a60e6
parent 0e7137e016114335ffe8278eb7a4e1648e10cbc4
Author: Devine Lu Linvega <aliceffekt@gmail.com>
Date:   Tue,  3 Jan 2023 10:48:17 -0800

Faster CALL opcodes

Diffstat:
Msrc/uxn.c | 8++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/uxn.c b/src/uxn.c @@ -48,10 +48,10 @@ uxn_eval(Uxn *u, Uint16 pc) switch(instr & 0x1f) { case 0x00: /* Literals/Calls */ - if(instr == 0x20) /* JMI */ { sp = &u->wst->ptr; PEEK16(a, pc) pc = a; } - else if(instr == 0x40) /* JCI */ { sp = &u->wst->ptr; src = u->wst; POP8(a) PEEK16(b, pc) pc = a ? (Uint16)b : pc + 2; } - else if(instr == 0x60) /* JSI */ { sp = &u->wst->ptr; PEEK16(a, pc) PUSH16(u->rst, pc + 2) pc = a; } - else if(bs) /* LIT2 */ { PEEK16(a, pc) PUSH16(src, a) pc = pc + 2; } + if(instr == 0x20) /* JMI */ { PEEK16(a, pc) pc = a; } + else if(instr == 0x40) /* JCI */ { sp = &u->wst->ptr; src = u->wst; POP8(a) if(a) { PEEK16(b, pc) pc = b; } else { pc += 2; } } + else if(instr == 0x60) /* JSI */ { PEEK16(a, pc) PUSH16(u->rst, pc + 2) pc = a; } + else if(bs) /* LIT2 */ { PEEK16(a, pc) PUSH16(src, a) pc += 2; } else /* LITr */ { a = u->ram[pc++]; PUSH8(src, a) } break; /* ALU */ case 0x01: /* INC */ POP(a) PUSH(src, a + 1) break;