commit a7672e6
Devine Lu Linvega
·
2024-11-11 21:53:20 +0000 UTC
parent c0629cf
(uxn11) Cleanuo
2 files changed,
+16,
-26
+1,
-1
1@@ -24,7 +24,7 @@ WITH REGARD TO THIS SOFTWARE.
2
3 /* Microcode */
4
5-#define JMI a = uxn.ram[pc ] << 8 | uxn.ram[pc + 1], pc += a + 2;
6+#define JMI a = uxn.ram[pc] << 8 | uxn.ram[pc + 1], pc += a + 2;
7 #define JMP(i) if(_2) pc = i; else pc += (Sint8)i;
8 #define REM if(_r) uxn.rst.ptr -= 1 + _2; else uxn.wst.ptr -= 1 + _2;
9 #define INC(s) uxn.s.dat[uxn.s.ptr++]
+15,
-25
1@@ -17,6 +17,7 @@
2 #include "devices/datetime.h"
3
4 Uxn uxn;
5+Uint8 ram[0x10000 * RAM_PAGES];
6
7 /*
8 Copyright (c) 2022 Devine Lu Linvega
9@@ -97,17 +98,6 @@ emu_restart(char *rom, int soft)
10 system_reboot(rom, soft);
11 }
12
13-static int
14-emu_end(void)
15-{
16- close_console();
17- free(uxn.ram);
18- XDestroyImage(ximage);
19- XDestroyWindow(display, window);
20- XCloseDisplay(display);
21- return uxn.dev[0x0f] & 0x7f;
22-}
23-
24 static Uint8
25 get_button(KeySym sym)
26 {
27@@ -268,20 +258,20 @@ emu_run(void)
28 int
29 main(int argc, char **argv)
30 {
31- int i = 1;
32- char *rom;
33- if(i != argc && argv[i][0] == '-' && argv[i][1] == 'v') {
34+ if(argc > 1 && argv[1][0] == '-' && argv[1][1] == 'v')
35 fprintf(stdout, "Uxn11 - Varvara Emulator, 11 Nov 2024.\n");
36- exit(0);
37+ else {
38+ int i = 1;
39+ char *rom = i == argc ? "boot.rom" : argv[i++];
40+ if(!system_boot(ram, rom))
41+ return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
42+ if(!display_init())
43+ return !fprintf(stdout, "Could not open display.\n");
44+ uxn.dev[0x17] = argc - i;
45+ if(uxn_eval(PAGE_PROGRAM))
46+ console_listen(i, argc, argv), emu_run();
47+ close_console();
48+ XDestroyImage(ximage), XDestroyWindow(display, window), XCloseDisplay(display);
49 }
50- rom = i == argc ? "boot.rom" : argv[i++];
51- if(!system_boot((Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), rom))
52- return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
53- if(!display_init())
54- return !fprintf(stdout, "Could not open display.\n");
55- /* Event Loop */
56- uxn.dev[0x17] = argc - i;
57- if(uxn_eval(PAGE_PROGRAM))
58- console_listen(i, argc, argv), emu_run();
59- return emu_end();
60+ return uxn.dev[0x0f] & 0x7f;
61 }