- Connection: drop the hardwired COM12; replicate vRIO's endpoint picker —
a combo of pipe:vplasma (the DOSBox-X namedpipe backend) + the COM ports,
with Rescan and Open/Close. Nothing opens automatically; baud straps drive
a COM open.
- Demo (jumper 6) now runs the REAL firmware demonstration, not the vPLASMA
self-test. The 10 demo screens are extracted verbatim from the ROM demo
pointer table ($8000) into PlasmaFirmwareDemo.cs and looped through the
parser. Added ESC I / ESC i (draw/display page select) as 1-operand
commands — consumed but not acted on in the single-page model — so the
demo's page commands don't desync the stream.
- Orientation (jumper 4 / PD5) polarity fixed: unstrapped = horizontal
128x32 (the normal cockpit setup, now the default), installed = vertical.
Verified: 29 unit tests pass (2 new: demo replay, page-select operand); the
real demo screens render with the correct text/positioning/fonts, and the
picker lists pipe:vplasma + COM ports with no auto-open.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Both now do what the firmware does, at the device level so the shared
PlasmaCanvas (and vRIO's embedded glass) are untouched:
- Jumper 4 → display orientation. VPlasmaDevice gains a PlasmaOrientation
property; in Vertical the logical space is 32x128 and every dot is rotated
onto the physical 128x32 glass via a new Plot() helper that all drawing
(text, cursor, ESC P graphics, ESC Q/R bounds) now goes through. Jumper 4
installed = horizontal (the normal cockpit setup, default), removed =
vertical. Changing it re-inits the panel, like the boot strap read.
- Jumper 5 → ShowTestPattern(): lights every dot (the power-on dead-dot
check the firmware runs at $B888). Removing the jumper clears it.
The config panel wires both up and shows the live orientation in the
counters. 27 unit tests pass (3 new: vertical rotation mapping, orientation
re-init, test pattern), including the unchanged horizontal path.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replaces the guessed font/cursor model with what the firmware dump proved:
- The 8 real Babcock ROM fonts, extracted from tms27pc512.BIN into
PlasmaFonts.cs (6x8, 6x10, 7x10, 12x16, 12x20). Drops the public-domain
5x7 stand-in and PlasmaFont.cs.
- Pixel-addressed cursor with the real positioning commands: ESC Q (row Y,
0-31) and ESC R (column X, 0-127), matching the firmware's range checks.
Cursor motion (BS/HT/LF/VT/CR) now moves by font pixels, not cells.
- ESC K selects fonts 0-7 (out-of-range ignored, per firmware); ESC H
attributes are the low 4 bits (half/underline/reverse/flash).
Deferred (documented in FIRMWARE.md): the 10 double-buffered pages
(ESC I/i) and vector-graphics primitives (ESC A-F); vPLASMA keeps a
single-page model for now.
Verified: 24 unit tests pass; the three self-test pages render the real
glyphs (big font 4 banner, full charset in font 0, graphics). Next: begin
the modern-parts hardware replica, with this as the reference firmware.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds the dumped U3 EPROM image (tms27pc512.BIN) and the analysis it enabled.
Findings (FIRMWARE.md):
- Memory map: code+data at CPU $8000-$FFFF (EPROM upper 32KB, 1:1); lower
half unused. Valid HC11 vectors; SCI rx ISR at $B85C fills a ring buffer,
main-loop parser dispatches.
- Full command set recovered from the two jump tables: 58 ESC commands
($98AC) + control chars ($994C). Decoded semantics for @/G/H/K/L (confirm
earlier guesses) plus NEW commands: Q=set-row, R=set-col, I=draw-page,
i=display-page (10-page double-buffering), A-F=vector graphics, X/Y=pen.
- 8 fonts at $BC03 (6x8, 6x10, 7x10, 12x16, 12x20); glyph bitmaps in ROM
(~$C000-$DFFF, exact base TBD).
- Built-in demo enabled by jumper 6 (confirms the JP1 map).
Tooling: hc11dis.py, a purpose-built 68HC11 disassembler (the toolchain has
no m68hc11 target), with the analysis reproducible from the addresses noted.
The firmware is now the authoritative command spec, superseding the need for
the Babcock programming manual. Feeds both vPLASMA and the replica firmware.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>