commit e26707c
Devine Lu Linvega
·
2025-01-21 00:14:40 +0000 UTC
parent e26a48e
Cache console vector
5 files changed,
+8,
-9
+1,
-1
1@@ -230,7 +230,7 @@ console_deo(Uint8 addr)
2 {
3 FILE *fd;
4 switch(addr) {
5- case 0x11: rV = PEEK2(&uxn.dev[0x10]); return;
6+ case 0x11: rVECTOR = PEEK2(&uxn.dev[0x10]); return;
7 case 0x18: fd = stdout, fputc(uxn.dev[0x18], fd), fflush(fd); break;
8 case 0x19: fd = stderr, fputc(uxn.dev[0x19], fd), fflush(fd); break;
9 case CMD_EXEC: start_fork(); break;
+6,
-5
1@@ -53,18 +53,19 @@ system_boot(Uint8 *ram, char *rom_path, int has_args)
2 uxn.ram = ram;
3 boot_path = rom_path;
4 uxn.dev[0x17] = has_args;
5- return system_load(uxn.ram + PAGE_PROGRAM, rom_path);
6+ if(ram && system_load(uxn.ram + PAGE_PROGRAM, rom_path))
7+ return uxn_eval(PAGE_PROGRAM);
8+ return 0;
9 }
10
11-void
12+int
13 system_reboot(int soft)
14 {
15 int i;
16- for(i = soft ? 0x100 : 0; i < 0x10000; i++) uxn.ram[i] = 0;
17 for(i = 0x0; i < 0x100; i++) uxn.dev[i] = 0;
18+ for(i = soft ? 0x100 : 0; i < 0x10000; i++) uxn.ram[i] = 0;
19 uxn.wst.ptr = uxn.rst.ptr = 0;
20- if(system_load(uxn.ram + PAGE_PROGRAM, boot_path))
21- uxn_eval(PAGE_PROGRAM);
22+ return system_boot(uxn.ram, boot_path, 0);
23 }
24
25 /* IO */
+1,
-1
1@@ -13,7 +13,7 @@ WITH REGARD TO THIS SOFTWARE.
2
3 int system_error(char *msg, const char *err);
4 int system_boot(Uint8 *ram, char *rom_path, int has_args);
5-void system_reboot(int soft);
6+int system_reboot(int soft);
7
8 Uint8 system_dei(Uint8 addr);
9 void system_deo(Uint8 addr);
+0,
-1
1@@ -262,7 +262,6 @@ main(int argc, char **argv)
2 return !fprintf(stdout, "Could not open display.\n");
3 else if(!system_boot((Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), argv[i++], argc > 2))
4 return !fprintf(stdout, "Could not load %s.\n", argv[i - 1]);
5- uxn_eval(PAGE_PROGRAM);
6 console_arguments(i, argc, argv);
7 emu_run();
8 close_console();
+0,
-1
1@@ -52,7 +52,6 @@ main(int argc, char **argv)
2 return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
3 else if(!system_boot((Uint8 *)calloc(0x10000 * RAM_PAGES, sizeof(Uint8)), argv[i++], argc > 2))
4 return !fprintf(stdout, "Could not load %s.\n", argv[i - 1]);
5- uxn_eval(PAGE_PROGRAM);
6 console_arguments(i, argc, argv);
7 while(!uxn.dev[0x0f] && console_input(fgetc(stdin), 0x1));
8 return uxn.dev[0x0f] & 0x7f;