|
|
@@ -97,7 +97,7 @@ Current rung (measured today, normalised position):
|
|
|
|
|
|
| position | blocker |
|
|
|
|---|---|
|
|
|
-| **43902** | the commented-out parameter list on the forward definition of `Expression` (`ERR 41`) |
|
|
|
+| **44567** | `delete(Formula,1,1)` in `Evaluate` — the `Delete` string builtin (`ERR 41`) |
|
|
|
|
|
|
Rungs behind it (now passed):
|
|
|
|
|
|
@@ -155,7 +155,8 @@ Rungs ahead:
|
|
|
| 40930 | `Exp`/`Ln` - DONE |
|
|
|
| 41118 | `Sin`/`Cos`/`Arctan` - DONE |
|
|
|
| 41595 | `Int(f)` - DONE |
|
|
|
-| 43902 | forward definition with a commented parameter list (`ERR 41`) |
|
|
|
+| 43902 | forward definition repeating only the name - DONE |
|
|
|
+| 44567 | `Delete` string builtin (`ERR 41`) |
|
|
|
|
|
|
Corrections the measurements force, worth stating plainly because the stage list
|
|
|
below was written before them:
|
|
|
@@ -481,10 +482,10 @@ block I/O, text-file output, `Str`, pointer types with `New`/dereference,
|
|
|
text `Eof`/`Readln`, integer `Str`, integer `Val`, and VAR REAL parameters). The
|
|
|
ladder has moved from the first typed constant at 7,791 to **35,135**, where
|
|
|
The real functions `Ln`, `Exp`, `Sin`, `Cos` and `Arctan` are landed. The
|
|
|
-ladder now stops at `function Expression{(var ExpressionCh : Char):Real;
|
|
|
-forward};` in `CALC.INC`, whose parameter list is commented out while the body
|
|
|
-still uses `ExpressionCh`; this is a source/forward-definition issue rather
|
|
|
-than a missing runtime function.
|
|
|
+forward definition `function Expression{(...):Real;forward};` is also accepted:
|
|
|
+the definition may repeat only the name, and the forward's formal symbols are
|
|
|
+made visible for its body again (`t107_forward`). The ladder now stops at
|
|
|
+`delete(Formula,1,1)` in `Evaluate`.
|
|
|
|
|
|
The rung commits and their tags, in order (each is one rung with its own
|
|
|
fixture, red proof, and — where the harness allows — execution under qemu and
|
|
|
@@ -533,7 +534,8 @@ Exec86):
|
|
|
| `884edba` | `v-TP3-CALC-REALFUNC` | `ERR 102 32482` (REAL constants) |
|
|
|
| `30782f6` | `v-TP3-CALC-REALEXPR` | `ERR 41 35135` (`Copy`) |
|
|
|
| `df54e71` | `v-TP3-CALC-COPYVAL` | `ERR 41 40930` (`Exp`) |
|
|
|
-| *(this commit)* | `v-TP3-CALC-TRANSCEND` | **`ERR 41 43902`** (forward definition) |
|
|
|
+| `dcfbf8c` | `v-TP3-CALC-TRANSCEND` | `ERR 41 43902` (forward definition) |
|
|
|
+| *(this commit)* | `v-TP3-CALC-FORWARD` | **`ERR 41 44567`** (`Delete`) |
|
|
|
|
|
|
- **Code HEAD** is the layout rung (`v-TP3-CALC-LAYOUT`). Nothing is pushed.
|
|
|
The terminal-config work (`v-TP3-TERMCFG`) and the editor key map
|
|
|
@@ -593,6 +595,11 @@ Exec86):
|
|
|
- **`Abs`, `Sqr` and `Sqrt` are landed (`t104_mathbasic`).** `Abs` clears the
|
|
|
MBF sign, `Sqr` lowers to the real multiply entry, and `Sqrt` is Newton over
|
|
|
the existing real division/addition entries.
|
|
|
+- **Forward definitions may repeat only the name (`t107_forward`).** The
|
|
|
+ earlier `function Expression{(...)}` source exposed two bugs: a forward
|
|
|
+ `FUNCTION` was rejected as if it were a duplicate `PROCEDURE`, and the
|
|
|
+ forward's formal parameter symbols stayed hidden from the definition body.
|
|
|
+ Both are fixed; the symbols are hidden again when the body ends.
|
|
|
- **`Ln`, `Exp`, `Sin`, `Cos` and `Arctan` are landed (`t105_lnexp`,
|
|
|
`t106_trig`).** `Exp` scales by 256, evaluates a Taylor series and squares
|
|
|
eight times; `Ln` extracts the exponent and uses the atanh series. The
|
|
|
@@ -1224,11 +1231,10 @@ and TEXT file output is done (`t91_textout`), both compile-only because the
|
|
|
harness has no filesystem. `Str` real formatting is done (`t92_strreal`),
|
|
|
pointer types with `New`/`Dispose`/dereference are done (`t93_pointer`), and
|
|
|
text `Eof`/`Readln` plus integer `Str` are done (`t94_textread`/`t95_strint`).
|
|
|
-The next ladder blocker is the forward definition of `Expression` in
|
|
|
-`CALC.INC`: its parameter list is commented out, so `ExpressionCh` is not in
|
|
|
-scope. All the REAL builtins CALC uses are now implemented. The runtime is
|
|
|
-13,955 bytes; `rt_exec` moved to HDR=0x4000 / data 0x5000, and the compiler's
|
|
|
-code ceiling is 0x7F00 so the large CALC image can reach this source point.
|
|
|
+The next ladder blocker is the `Delete` string builtin in `Evaluate`. All the
|
|
|
+REAL builtins CALC uses are implemented, and forward definitions that repeat
|
|
|
+only the name are accepted. The runtime is 13,955 bytes; `rt_exec` is at
|
|
|
+HDR=0x4000 / data 0x5000, and the compiler's code ceiling is 0x7F00.
|
|
|
|
|
|
**Stage 14 — the CRT identifiers.** `GotoXY` (25), `LowVideo`/`NormVideo`
|
|
|
(16 + 16), `ClrEol` (10), `ClrScr` (6), `KeyPressed` (3), `Delay` (1),
|