|
@@ -97,7 +97,7 @@ Current rung (measured today, normalised position):
|
|
|
|
|
|
|
|
| position | blocker |
|
|
| position | blocker |
|
|
|
|---|---|
|
|
|---|---|
|
|
|
-| **31758** | `var Value : Real` in `Evaluate` — by-reference REAL parameters (`ERR 102`) |
|
|
|
|
|
|
|
+| **32096** | `function Expression(...):Real;forward` — REAL function results (`ERR 102`) |
|
|
|
|
|
|
|
|
Rungs behind it (now passed):
|
|
Rungs behind it (now passed):
|
|
|
|
|
|
|
@@ -142,7 +142,8 @@ Rungs ahead:
|
|
|
| 27648 | text-file `Eof`/`Readln` - DONE |
|
|
| 27648 | text-file `Eof`/`Readln` - DONE |
|
|
|
| 27759 | `Str(count,st)` - integer Str - DONE |
|
|
| 27759 | `Str(count,st)` - integer Str - DONE |
|
|
|
| 28074 | `Val(Buffer^[0],...)` - string-to-integer - DONE |
|
|
| 28074 | `Val(Buffer^[0],...)` - string-to-integer - DONE |
|
|
|
-| 31758 | `var Value : Real` - by-reference REAL parameter |
|
|
|
|
|
|
|
+| 31758 | `var Value : Real` - by-reference REAL parameter - DONE |
|
|
|
|
|
+| 32096 | REAL function result (`Expression:Real`) |
|
|
|
|
|
|
|
|
Corrections the measurements force, worth stating plainly because the stage list
|
|
Corrections the measurements force, worth stating plainly because the stage list
|
|
|
below was written before them:
|
|
below was written before them:
|
|
@@ -465,9 +466,9 @@ membership, string fields in WRITE, real output, run-time set algebra,
|
|
|
`Succ`/`Pred`, the original memory layout, the untyped file type, the
|
|
`Succ`/`Pred`, the original memory layout, the untyped file type, the
|
|
|
file control-block operations, VAR string parameters, `Chr`, typed-file
|
|
file control-block operations, VAR string parameters, `Chr`, typed-file
|
|
|
block I/O, text-file output, `Str`, pointer types with `New`/dereference,
|
|
block I/O, text-file output, `Str`, pointer types with `New`/dereference,
|
|
|
-text `Eof`/`Readln`, integer `Str`, and integer `Val`). The
|
|
|
|
|
-ladder has moved from the first typed constant at 7,791 to **31,758**, where
|
|
|
|
|
-`var Value : Real` asks for by-reference REAL parameters.
|
|
|
|
|
|
|
+text `Eof`/`Readln`, integer `Str`, integer `Val`, and VAR REAL parameters). The
|
|
|
|
|
+ladder has moved from the first typed constant at 7,791 to **32,096**, where
|
|
|
|
|
+`function Expression(...):Real;forward` asks for REAL function results.
|
|
|
|
|
|
|
|
The rung commits and their tags, in order (each is one rung with its own
|
|
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
|
|
fixture, red proof, and — where the harness allows — execution under qemu and
|
|
@@ -511,7 +512,8 @@ Exec86):
|
|
|
| `38b6184` | `v-TP3-CALC-STR` | `ERR 30 26924` (pointer type) |
|
|
| `38b6184` | `v-TP3-CALC-STR` | `ERR 30 26924` (pointer type) |
|
|
|
| `1aed9cd` | `v-TP3-CALC-POINTER` | `ERR 41 27648` (`Eof`) |
|
|
| `1aed9cd` | `v-TP3-CALC-POINTER` | `ERR 41 27648` (`Eof`) |
|
|
|
| `e940a1d` | `v-TP3-CALC-TEXTREAD` | `ERR 41 28074` (`Val`) |
|
|
| `e940a1d` | `v-TP3-CALC-TEXTREAD` | `ERR 41 28074` (`Val`) |
|
|
|
-| *(this commit)* | `v-TP3-CALC-VALINT` | **`ERR 102 31758`** (VAR REAL) |
|
|
|
|
|
|
|
+| `9d4ab01` | `v-TP3-CALC-VALINT` | `ERR 102 31758` (VAR REAL) |
|
|
|
|
|
+| *(this commit)* | `v-TP3-CALC-VARREAL` | **`ERR 102 32096`** (REAL function result) |
|
|
|
|
|
|
|
|
- **Code HEAD** is the layout rung (`v-TP3-CALC-LAYOUT`). Nothing is pushed.
|
|
- **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
|
|
The terminal-config work (`v-TP3-TERMCFG`) and the editor key map
|
|
@@ -557,6 +559,11 @@ Exec86):
|
|
|
parameter slot holds the caller's address; assignment, `Read`, `Length`,
|
|
parameter slot holds the caller's address; assignment, `Read`, `Length`,
|
|
|
`writeln`, concatenation, comparison and `x[i]` all go through that address.
|
|
`writeln`, concatenation, comparison and `x[i]` all go through that address.
|
|
|
`Chr(n)` folds or loads an ordinal and yields a CHAR.
|
|
`Chr(n)` folds or loads an ordinal and yields a CHAR.
|
|
|
|
|
+- **VAR REAL parameters are landed (`t97_varreal`).** The two-byte slot
|
|
|
|
|
+ holds the caller's address; assignment copies six bytes through it (or
|
|
|
|
|
+ stores a converted constant), and call sites pass record-field addresses
|
|
|
|
|
+ (kind-5 DI actuals) as well as plain variables. The fixture executes under
|
|
|
|
|
+ both oracles.
|
|
|
- **`Val(string, integer, error)` is landed (`t96_valint`).** `val_int`
|
|
- **`Val(string, integer, error)` is landed (`t96_valint`).** `val_int`
|
|
|
parses optional sign and decimal digits, stores the value on success, and
|
|
parses optional sign and decimal digits, stores the value on success, and
|
|
|
leaves the destination unchanged on error while writing the 1-based
|
|
leaves the destination unchanged on error while writing the 1-based
|
|
@@ -1170,9 +1177,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`),
|
|
harness has no filesystem. `Str` real formatting is done (`t92_strreal`),
|
|
|
pointer types with `New`/`Dispose`/dereference are done (`t93_pointer`), and
|
|
pointer types with `New`/`Dispose`/dereference are done (`t93_pointer`), and
|
|
|
text `Eof`/`Readln` plus integer `Str` are done (`t94_textread`/`t95_strint`).
|
|
text `Eof`/`Readln` plus integer `Str` are done (`t94_textread`/`t95_strint`).
|
|
|
-The next ladder blocker is a by-reference REAL parameter (`var Value : Real`
|
|
|
|
|
-in `Evaluate`). The probe scaffold has been moved to HDR=0x1300 / data
|
|
|
|
|
-0x2110; the runtime is 4,384 bytes and now has room for the remaining work.
|
|
|
|
|
|
|
+The next ladder blocker is a REAL function result
|
|
|
|
|
+(`function Expression(...):Real;forward`). The probe scaffold has been moved
|
|
|
|
|
+to HDR=0x1300 / data 0x2110; the runtime is 4,384 bytes and now has room for
|
|
|
|
|
+the remaining work.
|
|
|
|
|
|
|
|
**Stage 14 — the CRT identifiers.** `GotoXY` (25), `LowVideo`/`NormVideo`
|
|
**Stage 14 — the CRT identifiers.** `GotoXY` (25), `LowVideo`/`NormVideo`
|
|
|
(16 + 16), `ClrEol` (10), `ClrScr` (6), `KeyPressed` (3), `Delay` (1),
|
|
(16 + 16), `ClrEol` (10), `ClrScr` (6), `KeyPressed` (3), `Delay` (1),
|