feat: add GOSUB/RETURN, CONST, SWAP, WIDTH, ELSEIF, and screen capture
- Language: GOSUB/RETURN (nested calls, same-block labels), CONST
module-level constants, SWAP for scalars and array elements, ELSEIF
chains in block IF, and bare parameterless FUNCTION calls.
- WIDTH statement for SCREEN 0: 80x25, 40x25 (double-wide glyphs) and
80x50 (8x8 font) text grids; clears the screen like the original.
- PAINT gets classic border semantics: fills every reachable non-border
pixel instead of confining to the seed color; off-screen seeds clip.
- INPUT # follows classic delimiters: numbers split on comma, space or
newline; strings on comma/newline with quotes stripped; empty slots
read as 0 / ""; statements may share and span lines.
- VIEW PRINT now confines printing and scrolling to the band; bare
VIEW PRINT restores the full screen.
- New capture package: ScreenRecorder samples the visual page at 30 Hz
into a lossless XOR-delta+deflate .crtrec; CrtrecEncoder pipes raw
frames to ffmpeg (H.264, CRF 18 with a VBV cap). Swing frontend:
F12 screenshot, Shift+F12 recording, background transcode queue that
drains before exit; --encode CLI re-encodes a recording later.
- Docs: README.org replaced by AGENTS.org (agent operating guide);
language reference updated for the new statements and semantics.
17 files changed: