|
|
@@ -97,7 +97,7 @@ Current rung (measured today, normalised position):
|
|
|
|
|
|
| position | blocker |
|
|
|
|---|---|
|
|
|
-| **10405** | `Length(S)` inside `CALC.INC`'s `Center` — a **string builtin** (`ERR 41`), the first rung that is a standard FUNCTION |
|
|
|
+| **10753** | `ClrScr` in `CALC.INC`'s nested `Welcome` — a **CRT identifier** (`ERR 41`) |
|
|
|
|
|
|
Rungs behind it (now passed):
|
|
|
|
|
|
@@ -111,12 +111,13 @@ Rungs behind it (now passed):
|
|
|
| 8705 | `Cells = array['A'..'G',1..FYMax]`, `Sheet : Cells`, `XPOS` | Stage 8 (declarations) |
|
|
|
| 9202 | `MCFile : file of CellRec` — file type, whole `var` block, `{$I}` expansion | Stage 13 (file types) |
|
|
|
| 10350 | `procedure Center(S : AnyString)` — a **string value parameter** | calling convention, steps 1-3 |
|
|
|
+| 10405 | `Length(S)` — the first string builtin | `LENGTH`, inline |
|
|
|
|
|
|
Rungs ahead:
|
|
|
|
|
|
| position | blocker |
|
|
|
|---|---|
|
|
|
-| 10405 | the string builtins (`Length`, `Copy`, `Delete`, `Insert`, `Str`, `Val`), then the rest of `CALC.INC` |
|
|
|
+| 10753 | the CRT identifiers (`ClrScr`, `GotoXY`, `LowVideo`/`NormVideo`, `ClrEol`, `KeyPressed`, `Delay`, `Kbd`), then the remaining string builtins and `CALC.INC` |
|
|
|
|
|
|
Corrections the measurements force, worth stating plainly because the stage list
|
|
|
below was written before them:
|
|
|
@@ -183,7 +184,7 @@ tables, so this list is also the `KProc`/`KFunc` work list.
|
|
|
| category | builtins (count in CALC) |
|
|
|
|---|---|
|
|
|
| **present today** | `write` 41, `writeln` 5, `read` 15, `readln` 1, `halt` 1 |
|
|
|
-| strings | `length` 19, `copy` 5, `delete` 3, `insert` 1, `str` 3, `val` 5 |
|
|
|
+| strings | `length` 19 (**done**, `t68_length`), `copy` 5, `delete` 3, `insert` 1, `str` 3, `val` 5 |
|
|
|
| ordinal | `chr` 5, `upcase` 12, `succ` 5, `pred` 1 |
|
|
|
| reals | `ln` 5, `exp` 3, `abs` 3, `sqrt` 2, `sqr` 1, `sin` 1, `cos` 1, `arctan` 1, `int` 1, `str`/`val` above |
|
|
|
| heap | `new` 1, `dispose` 1 |
|
|
|
@@ -463,10 +464,11 @@ Exec86):
|
|
|
(`v-TP3-CALC-STRPARAM`). Fixture `t67_strparam` proves value semantics: the
|
|
|
callee mutates `S[1]`, the caller's string is unchanged. This moved the rung
|
|
|
from 10350 to **10405**.
|
|
|
-- **The ladder now stops at `ERR 41` at `10405`** — `Length(S)`, inside
|
|
|
- `Center`'s body. The string builtins (`Length`, `Copy`, `Delete`, `Insert`,
|
|
|
- `Str`, `Val`) are the next increment, and the first rung that is a standard
|
|
|
- FUNCTION rather than a type.
|
|
|
+- **`LENGTH` is landed** — the first string builtin FUNCTION, loaded inline
|
|
|
+ from the string's length byte (no runtime entry). Fixture `t68_length`
|
|
|
+ (5/3/0). The rung moved 10405 → **10753**.
|
|
|
+- **The ladder now stops at `ERR 41` at `10753`** — `ClrScr` in `CALC.INC`'s
|
|
|
+ nested `Welcome`. The **CRT identifiers** are the next group.
|
|
|
- **One surprise on resuming:** the working tree was found holding the
|
|
|
nonvacuity script's *frame-rule* mutation of `shell/Compiler.mod` (the
|
|
|
`locFree := 0FFFEH` / pre-decrement-base revert), i.e. a mutation from a
|
|
|
@@ -476,8 +478,8 @@ Exec86):
|
|
|
byte-for-byte the same for INTEGER locals, so the compile matrix would have
|
|
|
been green and only `t40_readln` (and later CALC) would have noticed.
|
|
|
- **Verified baseline, run on this commit:** `./tests/run_all.sh` →
|
|
|
- **OVERALL: ALL PASS**, compile matrix **68/68**, CALC ladder **1/1** at
|
|
|
- `ERR 41 10405`, 59 `.COM` linked and 57 executed under both qemu and Exec86
|
|
|
+ **OVERALL: ALL PASS**, compile matrix **69/69**, CALC ladder **1/1** at
|
|
|
+ `ERR 41 10753`, 60 `.COM` linked and 58 executed under both qemu and Exec86
|
|
|
(`t64_arrays` is compile-only: its image is past the 8 KB boot-sector read).
|
|
|
- **`tests/nonvacuity.sh`:** re-run after this commit's cases (the set
|
|
|
membership bit among them); see the commit message for the count. It is not in
|