Implement BSAVE/BLOAD, TUI color, extended PEEK/POKE, update to v0.12.0

BSAVE/BLOAD: save and load virtual memory blocks with 0xFD-header
binary format, operating on the current DEF SEG segment.

TUI color: tui_refresh emits ANSI SGR codes from cell attributes;
COLOR statement sets tui.current_attr when TUI is active.

Extended PEEK/POKE: CGA graphics framebuffer (interlaced layout) via
gfx_cga_peek/poke routed through virmem when gfx_active(); BIOS
keyboard shift flags (offset 0x17 bit 7 = insert mode).

Add bibliography to language reference. 64 tests, all passing.
This commit is contained in:
Eremey Valetov
2026-03-01 13:37:05 -05:00
parent 0743757029
commit 4551c88a50
17 changed files with 282 additions and 27 deletions
+5 -4
View File
@@ -15,10 +15,11 @@
| 0.9.0 | `2a8f98b` | EDIT statement, ON TIMER/ON KEY event trapping, F-key escape parser fixes |
| 0.10.0 | | Binary tokenized SAVE/LOAD, INKEY$ extended key sequences, golden-file regression tests, classic BASIC programs |
| 0.11.0 | | DEF SEG / PEEK / POKE virtual memory, GET/PUT graphics sprites, PRINT USING fixes |
| 0.12.0 | | BSAVE/BLOAD, TUI ANSI 16-color rendering, CGA graphics framebuffer PEEK/POKE, keyboard shift flags |
## Tests
61 test programs in `tests/programs/`, plus 4 classic interactive programs in
64 test programs in `tests/programs/`, plus 4 classic interactive programs in
`tests/classic/` (Hamurabi, Lunar Lander, Gunner, Diamond from David Ahl's
*BASIC Computer Games*).
@@ -28,9 +29,9 @@ Run the full automated suite:
bash tests/run_tests.sh
```
Each test has a 5-second timeout. 57 tests have `.expected` golden files
Each test has a 5-second timeout. 60 tests have `.expected` golden files
for output regression detection. Three timing-dependent tests (datetime,
on_timer, timer_stop) and one sound test (play_scale) run without golden
on_timer, timer_stop) and one visual test (color_test) run without golden
comparison.
### Compatibility Testing
@@ -48,6 +49,6 @@ bash tests/run_compat.sh
## CI
GitHub Actions runs on every push to `main` and on pull requests. The workflow
builds the project with PulseAudio support and runs all 61 test programs.
builds the project with PulseAudio support and runs all 64 test programs.
See [`.github/workflows/ci.yml`](https://github.com/evvaletov/gw-basic-2026/blob/main/.github/workflows/ci.yml).