commit 2e2f8df
neauoire
·
2023-08-19 14:36:26 +0000 UTC
parent c6bd7f0
Added stack pointer accessors to system device
4 files changed,
+23,
-4
+16,
-0
1@@ -116,6 +116,16 @@ system_init(Uxn *u, Uint8 *ram, char *rom)
2
3 /* IO */
4
5+Uint8
6+system_dei(Uxn *u, Uint8 addr)
7+{
8+ switch(addr) {
9+ case 0x4: return u->wst.ptr;
10+ case 0x5: return u->rst.ptr;
11+ default: return u->dev[addr];
12+ }
13+}
14+
15 void
16 system_deo(Uxn *u, Uint8 *d, Uint8 port)
17 {
18@@ -134,6 +144,12 @@ system_deo(Uxn *u, Uint8 *d, Uint8 port)
19 ram[dst + (Uint16)(b_addr + i)] = ram[src + (Uint16)(a_addr + i)];
20 }
21 break;
22+ case 0x4:
23+ u->wst.ptr = d[4];
24+ break;
25+ case 0x5:
26+ u->rst.ptr = d[5];
27+ break;
28 case 0xe:
29 system_inspect(u);
30 break;
+4,
-3
1@@ -9,9 +9,9 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
2 WITH REGARD TO THIS SOFTWARE.
3 */
4
5-#define SYSTEM_VERSION 1
6-#define SYSTEM_DEIMASK 0x0000
7-#define SYSTEM_DEOMASK 0xff08
8+#define SYSTEM_VERSION 2
9+#define SYSTEM_DEIMASK 0x0030
10+#define SYSTEM_DEOMASK 0xff38
11
12 #define RAM_PAGES 0x10
13
14@@ -24,4 +24,5 @@ int system_version(Uxn *u, char *emulator, char *date);
15 int system_error(char *msg, const char *err);
16 int system_init(Uxn *u, Uint8 *ram, char *rom);
17
18+Uint8 system_dei(Uxn *u, Uint8 addr);
19 void system_deo(Uxn *u, Uint8 *d, Uint8 port);
+1,
-0
1@@ -49,6 +49,7 @@ Uint8
2 emu_dei(Uxn *u, Uint8 addr)
3 {
4 switch(addr & 0xf0) {
5+ case 0x00: return system_dei(u, addr);
6 case 0x20: return screen_dei(u, addr);
7 case 0xc0: return datetime_dei(u, addr);
8 }
+2,
-1
1@@ -24,6 +24,7 @@ Uint8
2 emu_dei(Uxn *u, Uint8 addr)
3 {
4 switch(addr & 0xf0) {
5+ case 0x00: return system_dei(u, addr);
6 case 0xc0: return datetime_dei(u, addr);
7 }
8 return u->dev[addr];
9@@ -73,7 +74,7 @@ main(int argc, char **argv)
10 system_connect(&u, 0xc, DATETIME_VERSION, DATETIME_DEIMASK, DATETIME_DEOMASK);
11 /* Read flags */
12 if(argv[i][0] == '-' && argv[i][1] == 'v')
13- return system_version(&u, "Uxncli - Console Varvara Emulator", "17 Aug 2023");
14+ return system_version(&u, "Uxncli - Console Varvara Emulator", "19 Aug 2023");
15 if(!system_init(&u, (Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), argv[i++]))
16 return system_error("Init", "Failed to initialize uxn.");
17 /* Game Loop */