diff options
Diffstat (limited to '')
| -rw-r--r-- | README.md | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -294,6 +294,15 @@ $ ps ## Filesystem +> **Being rewritten** into a persistent block-based FS. Stage 1 landed: a block +> device (`src/blk.asm`) over battery-backed cart RAM (banks 8–11, 256-byte +> blocks) read/written through a WRAM bounce buffer — so only two routines touch +> cart-RAM banking, and (crucially) they never touch the stack while the disk +> bank is mapped over the process's `$A000` window. Data survives power-off via +> the emulator's `.sav`. The 8-slot WRAM filesystem below still backs the tools +> until stages 2–3 (inodes + directories) replace it. + + A tiny **RAM filesystem** lives in **WRAMX (`$D000-$DFFF`, 4 KiB)** — always mapped in DMG mode and simultaneously accessible with a process's `$A000` data bank, so the kernel copies between file and process memory with no bounce @@ -338,7 +347,11 @@ $ rm notes - [x] shell in C with redirection (`>`/`<`) and pipes (`|`, via a temp file) - [x] per-process stdin/stdout routing (`KGetc`/`KPutc`, `setin`/`setout`) - [ ] more tools (`rev`, `grep`, `tail`), true concurrent pipes -- [ ] battery-backed files (move the FS to cart SRAM), directories +- [~] persistent filesystem rewrite (block-based, cart SRAM), directories: + - [x] **stage 1**: block device (`blk.asm`) — read_block/write_block via a WRAM + bounce buffer, format-on-first-boot, **persists across reboots** (`.sav`) + - [ ] stage 2: inodes + flat root dir (variable-size files); port cat/ls/save + - [ ] stage 3: directories, path resolution, per-process cwd, `cd`/`mkdir` - [ ] Preemptive scheduling: real context save in `TimerISR` → `hSwitchTo` - [ ] Use the `$D000-$DFFF` u-area (SVBK) for per-process kernel state / kstack - [ ] `brk`/heap allocator inside the task bank (heap up, stack down, collision = ENOMEM) |
