|
|
@@ -18,19 +18,20 @@ second copy of a status table is a claim about the world that expires silently
|
|
|
and is never noticed expiring, so there is one now, and this file says where it
|
|
|
is.
|
|
|
|
|
|
-In short, current as of `v-TP3-DEAD-FIXTURES`:
|
|
|
+In short, current as of `v-TP3-CALC-CLI`:
|
|
|
|
|
|
- The shell and the WordStar-style editor are done.
|
|
|
- The compiler front end and 8086 code generator are done for the language
|
|
|
- subset the fixtures cover, and the emitted `.COM` images **run**: 31 fixtures
|
|
|
- boot in `qemu-system-i386` and print exactly their expected bytes, and 36
|
|
|
- further cases call the runtime's own entries directly.
|
|
|
+ subset the fixtures cover, and the emitted `.COM` images **run** under
|
|
|
+ `qemu-system-i386` and Exec86.
|
|
|
+- **CALC.PAS compiles and runs.** The generated CALC.COM reaches the welcome
|
|
|
+ screen, grid and command menu, and exits cleanly through `/Q`.
|
|
|
- **The shell's `R` key is still a stub.** There is no in-process 8086
|
|
|
interpreter, so nothing runs a `.COM` from inside `tpshell` itself; execution
|
|
|
- happens only under the test harness.
|
|
|
-- `string` *variables*, nested procedures, `var` parameters, range and index
|
|
|
- checks, typed constants and `array` at its point of use are not implemented.
|
|
|
- `SUMMARY.md` lists them with the reason for each.
|
|
|
+ happens under the test harness or the CALC launcher below.
|
|
|
+- The next capacity limit is CALC's full Help/heap use (16,281-byte `Pages`
|
|
|
+ plus a 16 KiB stack); the current flat-segment layout has less headroom than
|
|
|
+ that. `SUMMARY.md` and `CALC-COMPILE.md` record the details.
|
|
|
|
|
|
## Build
|
|
|
|
|
|
@@ -48,6 +49,24 @@ The shell runs in raw mode: it needs a real ANSI terminal, no wrappers.
|
|
|
To run the checks: `cd shell && bash tests/run_all.sh`. It is not part of
|
|
|
`make`, because it needs qemu and takes a few minutes.
|
|
|
|
|
|
+## CALC launcher
|
|
|
+
|
|
|
+`tests/calc_cli.py` builds CALC.COM in a temporary include directory, boots it
|
|
|
+under qemu and prints its serial output:
|
|
|
+
|
|
|
+```sh
|
|
|
+cd shell
|
|
|
+python3 tests/calc_cli.py # build + default welcome/quit keys
|
|
|
+python3 tests/calc_cli.py --com CALC.PAS.COM --keys '\r\r/Q'
|
|
|
+python3 tests/calc_cli.py --keys-file keys.bin --raw > screen.bin
|
|
|
+```
|
|
|
+
|
|
|
+Options: `--keys` (Python escapes such as `\r`, `\n`, `\x1b`), `--keys-file`,
|
|
|
+`--com`, `--timeout`, `--raw`, `--quiet`, `--verbose`, and `--no-keypress`
|
|
|
+(make AH=0Bh report no queued key; useful for scripted CALC input).
|
|
|
+Input is a static boot-time key stream, not a live terminal. The automated
|
|
|
+smoke check is `python3 tests/calc_smoke.py`, run by `tests/run_all.sh`.
|
|
|
+
|
|
|
## Layout
|
|
|
|
|
|
- `shell/Term.def|mod` — raw termios keyboard + ANSI screen primitives
|