Statement emission now runs from parser pass 2: assignment, byte + and -, and
print reach codegen.s through emit.s, and the statements fixture executes the
emitted bytes in x128. Restoring the parser trace fixture's length arithmetic
(it emitted between the two halves of the subtraction, which clears carry)
brings the 41-fixture parser verification back to green after emit.s joined
the link.
Also check in the vim clone's improved C128 build and the Power C
reverse-engineering notes and tools.
Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
Single-file conio-based editor (vim128.c) that runs on the 40 or 80 column
screen, with incremental redraw and 2 MHz mode in 80 column mode.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
NOTES records the dd/p, A/I/O/o, :q/:q! and missing-file checks that pass
on the work disk, and that \x03 in -keybuf arrives as RUN/STOP so a script
can leave insert mode.
Generated with Codebuff 🤖
Co-Authored-By: Codebuff <noreply@codebuff.com>
The single-row painter became vml.s at $C000: one sys() paints all 24
rows, memmove and line-index fix-ups run in ML, and the keyboard buffer
is popped with IRQs masked. dall() repaints only the cursor row or the
whole screen, so j went from 17 to 0-3 jiffies. Loading now checks the
drive error channel and splits lines over 80 columns. The temporary
jiffy counters used to measure the speedup are removed; the numbers are
in NOTES.md.
Generated with Codebuff 🤖
Co-Authored-By: Codebuff <noreply@codebuff.com>
Power C on the C64 calls ML as sys(addr, &a, &x, &y); the bank argument
from the manual's C128 library page made sys() jump to $000F and crash.
The ML row painter now runs. Quitting resets through $FCE2 because Power C
owns BASIC's zero-page pointers. Notes and Power C skill updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>