You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
printer: accurate line-printer mechanical test (PER->PRT + faithful display)
The SAT Printer Mechanical Test (printermechanicaltest.cap) now runs to its
documented END OF DIAGNOSTIC HLT (PO=0x0BC0) and prints its real pattern
sequence: solid 0x55 ('E') lines, inverse 0xAA ('-') lines, and the shifting
graphic-set "barber-pole" exercising every character position.
Model / batch:
- sat_batches.c: the printer-mechanical batch enters at 0x0118 and synthesizes
the required center card into the startup input buffer (0x0670-0x0675:
integrated subsystem, no 2nd transport, normal drum/ribbon, with end-of-test
HLT) since the scatter-image path has no physical center card.
- printer.c: line-printer WRITE (cmd 0x42) shares the 6-byte order block with
the typewriter PUT but parks at the b8 request-wait with RC00 set; it is
released there and the transfer is armed on return to alpha (line_mode appends
a paper break per WRITE). Control orders (single-space 0x2E -> 1 break,
triple-space 0x5A -> 3 breaks) emit paper feeds; other control PERs complete
silently. printer_begin_output() gains a line_mode argument.
Display (wasm console):
- main.c drain_printer(): emit the new tail AND clear the capture buffer each
frame. Previously it only advanced a cursor, so out[] accumulated across
frames, capped at sizeof(out)-1 within ~50 ms, and the panel froze mid-test
(the mechanical test prints ~6.6M chars) — the apparent "hang at 0x014A".
- ge.h: out[] 8192 -> 65536 for catch-up/fast-frame bursts.
- console.html: drop the 80-column auto-wrap (white-space: pre, inline spans,
no 80ch clamp) so the paper breaks lines only on the typewriter's own line
feed and long lines scroll horizontally.
Verified: halts at 0x0BC0, uniform ~244 cyc/WRITE (no stall); 279 unit tests pass.
0 commit comments