Browse code

(uxn.c) Unallow LDR/STR to reach outside of ram

Devine Lu Linvega authored on 13/01/2023 02:47:19
Showing 1 changed files
... ...
@@ -75,8 +75,8 @@ uxn_eval(Uxn *u, Uint16 pc)
75 75
 		case 0x0f: /* STH */ POP(a) PUSH(dst, a) break;
76 76
 		case 0x10: /* LDZ */ POP8(a) PEEK(b, a) PUSH(src, b) break;
77 77
 		case 0x11: /* STZ */ POP8(a) POP(b) POKE(a, b) break;
78
-		case 0x12: /* LDR */ POP8(a) PEEK(b, pc + (Sint8)a) PUSH(src, b) break;
79
-		case 0x13: /* STR */ POP8(a) POP(b) c = pc + (Sint8)a; POKE(c, b) break;
78
+		case 0x12: /* LDR */ POP8(a) PEEK(b, pc + (Sint8)a & 0xffff) PUSH(src, b) break;
79
+		case 0x13: /* STR */ POP8(a) POP(b) c = pc + (Sint8)a & 0xffff; POKE(c, b) break;
80 80
 		case 0x14: /* LDA */ POP16(a) PEEK(b, a) PUSH(src, b) break;
81 81
 		case 0x15: /* STA */ POP16(a) POP(b) POKE(a, b) break;
82 82
 		case 0x16: /* DEI */ POP8(a) DEVR(b, a) PUSH(src, b) break;