commit e055fd0

Devine Lu Linvega  ·  2024-11-11 18:25:40 +0000 UTC
parent bcc18c7
Added step limiter
4 files changed,  +8, -6
+5, -4
 1@@ -45,17 +45,17 @@ WITH REGARD TO THIS SOFTWARE.
 2 int
 3 uxn_eval(Uint16 pc)
 4 {
 5-	int a, b, c, x[2], y[2], z[2];
 6+	int step, a, b, c, x[2], y[2], z[2];
 7 	if(!pc || uxn.dev[0x0f]) return 0;
 8-	for(;;) {
 9+	for(step = STEP_LIMIT; step; step--) {
10 		switch(uxn.ram[pc++]) {
11 		/* BRK */ case 0x00: return 1;
12 		/* JCI */ case 0x20: if(DEC(wst)) { JMI break; } pc += 2; break;
13 		/* JMI */ case 0x40: JMI break;
14 		/* JSI */ case 0x60: c = pc + 2; INC(rst) = c >> 8; INC(rst) = c; JMI break;
15-		/* LI2 */ case 0xa0: INC(wst) = uxn.ram[pc++]; /* fall-through */
16+		/* LI2 */ case 0xa0: INC(wst) = uxn.ram[pc++]; /* fall through */
17 		/* LIT */ case 0x80: INC(wst) = uxn.ram[pc++]; break;
18-		/* L2r */ case 0xe0: INC(rst) = uxn.ram[pc++]; /* fall-through */
19+		/* L2r */ case 0xe0: INC(rst) = uxn.ram[pc++]; /* fall through */
20 		/* LIr */ case 0xc0: INC(rst) = uxn.ram[pc++]; break;
21 		/* INC */ OPC(0x01, POx(a), PUx(a + 1))
22 		/* POP */ OPC(0x02, REM, {})
23@@ -90,4 +90,5 @@ uxn_eval(Uint16 pc)
24 		/* SFT */ OPC(0x1f, PO1(a) POx(b),PUx(b >> (a & 0xf) << (a >> 4)))
25 		}
26 	}
27+	return 0;
28 }
+1, -0
1@@ -16,6 +16,7 @@ WITH REGARD TO THIS SOFTWARE.
2 
3 /* clang-format on */
4 
5+#define STEP_LIMIT 0x800000
6 #define PAGE_PROGRAM 0x0100
7 
8 typedef unsigned char Uint8;
+1, -1
1@@ -271,7 +271,7 @@ main(int argc, char **argv)
2 	int i = 1;
3 	char *rom;
4 	if(i != argc && argv[i][0] == '-' && argv[i][1] == 'v') {
5-		fprintf(stdout, "Uxn11 - Varvara Emulator, 20 Sep 2024.\n");
6+		fprintf(stdout, "Uxn11 - Varvara Emulator, 11 Nov 2024.\n");
7 		exit(0);
8 	}
9 	rom = i == argc ? "boot.rom" : argv[i++];
+1, -1
1@@ -69,7 +69,7 @@ main(int argc, char **argv)
2 	int i = 1;
3 	char *rom;
4 	if(i != argc && argv[i][0] == '-' && argv[i][1] == 'v') {
5-		fprintf(stdout, "Uxn11(cli) - Varvara Emulator, 20 Sep 2024.\n");
6+		fprintf(stdout, "Uxn11(cli) - Varvara Emulator, 11 Nov 2024.\n");
7 		exit(0);
8 	}
9 	rom = i == argc ? "boot.rom" : argv[i++];