commit c97d19d
neauoire
·
2023-08-30 16:14:20 +0000 UTC
parent abfeead
(uxn.c) Catch JCI underflow
M
makefile
+2,
-3
1@@ -15,11 +15,10 @@ rom:
2 @ ./bin/uxnasm etc/polycat.tal bin/polycat.rom
3 run: bin/uxnasm bin/uxncli bin/uxn11 rom
4 @ ./bin/uxn11 bin/polycat.rom
5-cli: bin/uxnasm bin/uxncli
6- @ ./bin/uxnasm etc/opctest.tal bin/opctest.rom
7- @ ./bin/uxncli bin/opctest.rom
8 test: bin/uxnasm bin/uxncli bin/uxn11
9 @ ./bin/uxnasm && ./bin/uxncli && ./bin/uxn11 && ./bin/uxnasm -v && ./bin/uxncli -v && ./bin/uxn11 -v
10+ @ ./bin/uxnasm etc/opctest.tal bin/opctest.rom
11+ @ ./bin/uxncli bin/opctest.rom
12 install: bin/uxnasm bin/uxncli bin/uxn11
13 @ cp bin/uxn11 bin/uxnasm bin/uxncli ~/bin/
14 uninstall:
+1,
-1
1@@ -48,7 +48,7 @@ uxn_eval(Uxn *u, Uint16 pc)
2 switch(ins & 0x1f ? ins & 0x3f : ins << 4) {
3 /* IMM */
4 case 0x000: /* BRK */ return 1;
5- case 0x200: /* JCI */ if(!s->dat[--s->ptr]) { pc += 2; break; } /* else fallthrough */
6+ case 0x200: /* JCI */ t=T; SET(0,-1) if(!t) { pc += 2; break; } /* else fallthrough */
7 case 0x400: /* JMI */ pc += PEEK2(ram + pc) + 2; break;
8 case 0x600: /* JSI */ SET(0, 2) PUT2(pc + 2) pc += PEEK2(ram + pc) + 2; break;
9 case 0x800: /* LIT */ case 0xc00: SET(0, 1) PUT1(ram[pc++]) break;