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++];