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;