commit c97d19d

neauoire  ·  2023-08-30 16:14:20 +0000 UTC
parent abfeead
(uxn.c) Catch JCI underflow
2 files changed,  +3, -4
+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;