feat(v4.0.0): the block words are the kernel's -- v3's way in full

Ruled 2026-10-07.  BLOCK, BUFFER, UPDATE, SAVE-BUFFERS and EMPTY-BUFFERS
are each one kernel request on port 0, by block number only.  The node
has a window of four slots in its memory, as a v3 VM has; the kernel
copies blocks into it, keeps the record of which block is in which slot,
and decides when a block is written (v4/system/blocks.c).  The node keeps
no record and gives the kernel no address, so a request cannot overwrite
the node's code.  When a block is written stays FORTH-79's: UPDATE marks
it.  When the chain of devices changes the slots are let go, as in v3.

The window is 512 cells more than the two buffers were; the dictionary
space ends that much lower, at 13824.

MESH.md 8.5 had said, from the review, that a v3 VM's BLOCK is the
kernel's buffer.  It is not, and the section now says what was reported,
what v3 does, and what was ruled.

make -C v4 test, sanitize and hosted-check pass; amd64, aarch64 and
riscv64 boot, POST 538 of 538, the same hashes on all six:
logs/20261007-092835, -093112, -093456.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rajames
2026-10-07 09:37:30 -04:00
co-authored by Claude Opus 5.5
parent 7f4d946d2e
commit 9bfd5071d2
21 changed files with 991 additions and 330 deletions
+8 -5
View File
@@ -133,11 +133,14 @@ The two products are not yet this: they become the five nodes at steps 8
and 9.
A node she births is not POSTed: POST is the kernel's, once, on Hera.
**Blocks** (`MESH.md` step 6). A node asks its kernel for a block, as a v3
VM does: `BLOCK` and its family keep two buffers, and the word beneath them
writes a request to port 0 with the block's number and the buffer's address
on the stack (`v4/include/v4/blocks.h`). `v4/system/blocks.c` serves it from
the kernel's block subsystem, which is v3's (`v3/src/block_subsystem.c`):
**Blocks** (`MESH.md` step 6). The block words are the kernel's, as they
are for a v3 VM: `BLOCK`, `BUFFER`, `UPDATE`, `SAVE-BUFFERS` and
`EMPTY-BUFFERS` each write one request to port 0, by block number only
(`v4/include/v4/blocks.h`). The node has a window of four slots in its
memory; the kernel copies blocks into it, keeps the record of what is in
it, and decides when a block is written (`v4/system/blocks.c`). The blocks
are the kernel's block subsystem's, which is v3's
(`v3/src/block_subsystem.c`):
one chain, the same blocks at the same numbers for every node. A hosted
program has the chain's fast RAM, blocks 1 to 2047. On bare metal the chain
is fast RAM, the ramdrive and the virtio disk; the disk is read and not yet