Browse code

(uxn.c) Wrap RAM on LDA/STA

neauoire authored on 01/11/2023 16:25:39
Showing 3 changed files
... ...
@@ -37,7 +37,7 @@ WITH REGARD TO THIS SOFTWARE.
37 37
 int
38 38
 uxn_eval(Uxn *u, Uint16 pc)
39 39
 {
40
-	int t, n, l, r;
40
+	Uint16 t, n, l, r;
41 41
 	Uint8 *ram = u->ram, *rr;
42 42
 	if(!pc || u->dev[0x0f]) return 0;
43 43
 	for(;;) {
... ...
@@ -91,9 +91,9 @@ uxn_eval(Uxn *u, Uint16 pc)
91 91
 			case 0x13: /* STR  */ t=T;n=N;        SET(2,-2) ram[pc + (Sint8)t] = n; break;
92 92
 			case 0x33: /* STR2 */ t=T;n=H2;       SET(3,-3) rr = ram + pc + (Sint8)t; POKE2(rr, n) break;
93 93
 			case 0x14: /* LDA  */ t=T2;           SET(2,-1) T = ram[t]; break;
94
-			case 0x34: /* LDA2 */ t=T2;           SET(2, 0) rr = ram + t; T2_(PEEK2(rr)) break;
94
+			case 0x34: /* LDA2 */ t=T2;           SET(2, 0) N = ram[t++]; T = ram[t]; break;
95 95
 			case 0x15: /* STA  */ t=T2;n=L;       SET(3,-3) ram[t] = n; break;
96
-			case 0x35: /* STA2 */ t=T2;n=N2;      SET(4,-4) rr = ram + t; POKE2(rr, n) break;
96
+			case 0x35: /* STA2 */ t=T2;n=N2;      SET(4,-4) ram[t++] = n >> 8; ram[t] = n; break;
97 97
 			case 0x16: /* DEI  */ t=T;            SET(1, 0) T = emu_dei(u, t); break;
98 98
 			case 0x36: /* DEI2 */ t=T;            SET(1, 1) N = emu_dei(u, t); T = emu_dei(u, t + 1); break;
99 99
 			case 0x17: /* DEO  */ t=T;n=N;        SET(2,-2) emu_deo(u, t, n); break;
... ...
@@ -70,7 +70,7 @@ main(int argc, char **argv)
70 70
 		return system_error("usage", "uxncli [-v] file.rom [args..]");
71 71
 	/* Read flags */
72 72
 	if(argv[i][0] == '-' && argv[i][1] == 'v')
73
-		return system_version("Uxncli - Console Varvara Emulator", "31 Oct 2023");
73
+		return system_version("Uxncli - Console Varvara Emulator", "1 Nov 2023");
74 74
 	if(!system_init(&u, (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), argv[i++]))
75 75
 		return system_error("Init", "Failed to initialize uxn.");
76 76
 	/* Game Loop */
... ...
@@ -549,7 +549,7 @@ main(int argc, char **argv)
549 549
 	/* Read flag. Right now, there can be only one. */
550 550
 	if(argv[i][0] == '-') {
551 551
 		if(argv[i][1] == 'v')
552
-			return system_version("Uxnemu - Graphical Varvara Emulator", "31 Oct 2023");
552
+			return system_version("Uxnemu - Graphical Varvara Emulator", "1 Nov 2023");
553 553
 		if(argv[i][1] == '-')
554 554
 			i++;
555 555
 		if(strcmp(argv[i], "-2x") == 0 || strcmp(argv[i], "-3x") == 0)