|
|
@@ -97,7 +97,7 @@ Current rung (measured today, normalised position):
|
|
|
|
|
|
| position | blocker |
|
|
|
|---|---|
|
|
|
-| **compiles** | `CALC.PAS` reaches its final `.` — code **27,458** B, data **19,694** B |
|
|
|
+| **compiles** | `CALC.PAS` reaches its final `.` — code **27,498** B, data **19,694** B |
|
|
|
|
|
|
Rungs behind it (now passed):
|
|
|
|
|
|
@@ -164,7 +164,7 @@ Rungs ahead:
|
|
|
| 51322 | CASE/ELSE closing `end;` - DONE |
|
|
|
| 52316 | string vs CHAR comparison (`S <> Chr($FF)`) - DONE |
|
|
|
| 56540 | code-image ceiling - DONE (DataStart moved to 0xA000) |
|
|
|
-| **OK** | **CALC.PAS compiles: code 27,458, data 19,694** |
|
|
|
+| **OK** | **CALC.PAS compiles: code 27,498, data 19,694** |
|
|
|
|
|
|
Corrections the measurements force, worth stating plainly because the stage list
|
|
|
below was written before them:
|
|
|
@@ -1263,14 +1263,14 @@ include directory, boots it under qemu and feeds the default welcome/quit keys.
|
|
|
are available; input is a static boot-time key stream, not a live terminal.
|
|
|
|
|
|
**CALC.PAS compiles and runs.** The runtime is 9,393 bytes; the generated
|
|
|
-program is 27,458 bytes of code and 19,694 bytes of data, with
|
|
|
+program is 27,498 bytes of code and 19,694 bytes of data, with
|
|
|
`DataStart=0xA000` and `CodeMax=0xA000`. The boot harness now loads images at
|
|
|
segment `0x1000` and puts its input descriptor at `0x9800`, so the larger image
|
|
|
no longer collides with the boot sector/BIOS areas. The loader reads 77
|
|
|
sectors and accepts images up to 38,656 bytes. `tests/calc_smoke.py`
|
|
|
boots CALC.COM under qemu, enters `1+2` in cell A1, checks the resulting
|
|
|
`3.00` and the welcome/grid/command menu, sends `/Q`, and requires exit code 0. The original CALC.COM is 27,901 bytes; ours is
|
|
|
-36,854 bytes because the runtime, static links and code layout differ.
|
|
|
+36,894 bytes because the runtime, static links and code layout differ.
|
|
|
|
|
|
**Stage 14 — the CRT identifiers.** `GotoXY` (25), `LowVideo`/`NormVideo`
|
|
|
(16 + 16), `ClrEol` (10), `ClrScr` (6), `KeyPressed` (3), `Delay` (1),
|
|
|
@@ -1317,8 +1317,8 @@ remaining run-time capacity note.
|
|
|
| limit | value | CALC needs | verdict |
|
|
|
|---|---|---|---|
|
|
|
| `TextLimit` (source buffer) | 62,903 | `CALC.PAS` + `CALC.INC`, normalised = **62,415** | **488 bytes of slack** |
|
|
|
-| `MaxCode` | 0A000h | 27,458 B program + 9,393 B runtime = **36,851 B** | **OK, 4,109 B spare** |
|
|
|
-| code window | `CodeMax = 0A000h`, capped by `MaxCode` | 27,458 B | **OK**; no data gap (§3.2) |
|
|
|
+| `MaxCode` | 0A000h | 27,498 B program + 9,393 B runtime = **36,891 B** | **OK, 4,069 B spare** |
|
|
|
+| code window | `CodeMax = 0A000h`, capped by `MaxCode` | 27,498 B | **OK**; no data gap (§3.2) |
|
|
|
| data area | fixed image `0A000h`, zeroed by `initmem` | **19,694 B** (generated) | **OK**; CALC boots under qemu |
|
|
|
| stack | 16,384 min / 655,360 max | 16,384 min | matches the original's `minstk`/`maxstk` |
|
|
|
| `MaxSym` | 3,000 | 47 routines + locals + params | **inferred** OK, verify |
|