# Metal test build — three fixes, and an honest note

## The honest note first

I validated the previous builds in QEMU and called it "close to metal." That
was wrong: QEMU's sendkey is not your NVS 295, and I shipped a display
regression (the nested blue box) that QEMU screenshots + my decoder script
didn't flag as wrong-looking. QEMU can only confirm it builds, boots, centers,
and runs. The real validation is you, on the hardware. This build is for that.

## Three fixes in this build

1. **1000Hz keyboard poll.** The keyboard is now drained inside the PIT timer
   interrupt (IOPITEventHandler::OnTick), which fires at 1000Hz. Input is
   sampled every 1ms REGARDLESS of how slow the C64 emulation runs — latency is
   decoupled from CPU work entirely. (The old per-loop poll is removed.)

2. **Nested-blue fixed.** The VIC border/background fill is now a CENTERED text
   area with a uniform border frame around it — like a real C64 — instead of a
   small background box jammed in the top-left of a big border field. Verified
   centered: left border == right border, top == bottom.

3. **Kept: fully expressive keyboard (shift + full font) and VIC colour
   (observed $D020/$D021/$D800).**

## The four programs to test on metal

Type each, RETURN to enter it, then RUN:

    10 PRINT CHR$(205.5+RND(1));:GOTO10
    10 POKE53280,RND(1)*16:POKE53281,RND(1)*16:?CHR$(205.5+RND(1));:GOTO10
    10 X=X+.13:?TAB(20+18*SIN(X));"*";:GOTO10
    10 PRINT CHR$(205.5+RND(1));:GOTO10

Symbols needed: $ ( ) + ; : , * " ? — all should type now.
(To stop a running GOTO-loop: RUN/STOP key = the key mapped to ESC/Ctrl.)

## Boot

Rufus hdgl-c64.iso -> DD Image mode -> USB. BIOS: Legacy/CSM on, Secure Boot
off, **USB Legacy / port 60/64 emulation ON** (required for keyboard). Boot USB,
pick interactive.

## What to tell me from metal

- Keyboard feel at 1000Hz: snappy now, or still laggy?
- Display: is the blue screen correct (centered C64 with a clean border), or
  still nested/wrong?
- Do the four programs type (all symbols appear) and RUN (maze draws, colours
  flash, sine wave of *)?

Whatever's still off, tell me and I fix it — but this time I'm not claiming the
metal behaviour works, only that it builds/boots/centers here and the logic is
right. You're the metal test.
