VIBEDRONE BEAM (VDBEAM01)                  8 Nov 2026, 17:04 AEDT
=====================================================================

VDWolfBeeQueenPRN_beam.html = your VDWolfBeeQueenPRN_fix.html (the one
the Windows app runs) with two changes. The window title reads
"VibeDroneWolfBeeQueenPrinterBeam" so you can tell it apart.

VDBEAM01: A BEAM-ACCURATE 6545 FOR PROGRAMS THAT NEED ONE
------------------------------------------------------------
Why the megademo glitched: VibeDrone drew the whole screen once per
browser frame from the CRTC registers as they were at that moment. The
demo reprograms the 6545 up to every scanline, so each picture was a
mix of whatever the registers held when the browser happened to draw.

What VDBEAM01 does:
- Follows the 6545 from the CPU's T-states: a scanline is 2 x (R0+1)
  T (216 for the demo), with the raster line, character row, vertical
  adjust and row start addresses counted as on the real chip.
- Uses the two behaviours the demo's self test names, as this 6545
  has them: it compares its counters with R4/R6/R9 all the time (a
  register set below the count takes effect at once), and in the
  first row of a frame it re-reads the start address (R12/R13) on
  every scanline.
- Builds each TV field line by line as the beam passes, starting a
  new field at the 6545's VSYNC (it rolls, like a TV, if none comes).
- Holds the CPU when it touches screen, attribute, colour or PCG RAM
  while the beam is drawing the visible part of a line, until that
  part of the line is done (the self test's "holds the CPU when it
  touches the screen").
- Reports vertical blanking (status bit 5) from the beam.
It switches itself on only while a program keeps changing the frame
geometry (R4, R5, R6 or R9) every field, and off a second after that
stops. Everything else (FUZIX, CP/M, HIVE, the boot menu) is drawn by
the normal renderer exactly as before.


TESTED HERE (VibeDrone itself, in a headless Chromium)
-------------------------------------------------------
Your sc12 (saved) image, multiboot choice 5 (CP/M 3), MEGA.DS8 in
FLOPPY, B:, MEGA, C (colour):
- Before: the parts showed but torn and smeared (tests/
  megademo-in-vibedrone-before.png), as you saw.
- After: every part matches the demo's own screenshots, from the
  self test and title to the twister, plasma, Kefrens bars,
  rotozoomer, tunnel, floor, swirl, twist, torus and credits
  (tests/megademo-in-vibedrone-beam.png against
  tests/megademo-reference.png). The self test ends "... PERFECT.".
  It ran at full speed: 50 fields a second, 3.37 MHz.

