From 126d5b2e55dca93e024f5654fed6fae37a012369 Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 17 Aug 2026 19:56:24 +0200 Subject: Terminal-app design (ADR 0005) + disk-write controller - ADR 0005: persistent home terminal (full-screen, chrome-less, bottom-pinned), F1 terminal windows, per-instance vt/tty/shell, queue-based input for all terminals, and the disk controller - Glossary: add the Terminal term; update Task/App for the new model - Add a re-entrant disk lock (DiskGuard over the preemption-depth counter) and wrap all fs/fat mutating operations per-call --- CONTEXT.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'CONTEXT.md') diff --git a/CONTEXT.md b/CONTEXT.md index 9fccbe4..c27f059 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -113,9 +113,16 @@ The action that destroys a window and ends its app. A task that owns exactly one window and receives input events through its message queue. A GUI program is an app; there is no separate "process" -concept — the app is its task plus its window. The console is app 0 +concept — the app is its task plus its window. The home terminal is app 0 (window 0). +## Terminal + +A program that presents a command line in a window: a text terminal +emulator plus a shell command loop, rendered into the window's pixel +buffer. The home terminal is the persistent full-screen chrome-less +desktop; additional terminals are ordinary windows (F1). + ## Focus The single window (if any) that receives keyboard and mouse input. Focus @@ -142,8 +149,9 @@ address-space separation — all tasks share the one identity-mapped space and the kernel's facilities (TempleOS-style, not a process). Tasks are preemptively round-robin-scheduled on the 100 Hz PIT tick; the shell is task 0 and an idle `hlt` task is the always-ready -fallback. A task may sleep, yield, and log to serial/klog; only the -shell touches the disk, filesystem, and terminal. A panicking or +fallback. A task may sleep, yield, and log to serial/klog; disk access +is serialized by a shared disk controller (a re-entrant lock), and each +terminal is its own program instance. A panicking or stack-overflowing task dies gracefully (logged, marked done, slot reaped) without taking the kernel down. -- cgit v1.2.3