From 0a77a11e17f697bf797655c4ae87b927432b1f88 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 16 Jul 2026 00:04:09 +0200 Subject: kernel: implement exec() - sys_exec(B=program id): look up ProgramTable, point PROC_ROMB at the program's ROM text bank, map it into $4000-$7FFF, reset stack, jp to entry (no return) - programs.asm: two demo programs (ping/pong) ORG'd at the SAME $4000 in banks 2 and 3 - proves execution is driven purely by PROC_ROMB - demo: init forks; parent execs PROG_PING (bank2, '1'), child execs PROG_PONG (bank3, '2') -> '1212...', 2000/2000 balanced, zero garbage - README: document exec + text-in-ROM model --- src/syscall.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/syscall.asm') diff --git a/src/syscall.asm b/src/syscall.asm index ca2857c..fd1b213 100644 --- a/src/syscall.asm +++ b/src/syscall.asm @@ -40,7 +40,7 @@ SyscallTable: dw sys_write ; 3 WRITE dw sys_nosys ; 4 OPEN (TODO) dw sys_nosys ; 5 CLOSE (TODO) - dw sys_nosys ; 6 EXEC (TODO) + dw sys_exec ; 6 EXEC dw sys_nosys ; 7 WAIT (TODO) dw sys_getpid ; 8 GETPID dw sys_nosys ; 9 KILL (TODO) -- cgit v1.3.1-sl0p