# HDGL C64 — 60/60/60, one clock

Two regressions from the previous build are fixed, and the clock is now what you
specified: ONE 60Hz timer drives substrate, monitor, and keyboard.

## One 60Hz clock (not a fast clock paced down)

- The PIT itself is set to 60Hz (divisor 1193182/60). src/drivers/pit.cpp.
- One PIT tick = one substrate tick = one frame = one keyboard scan.
  - substrate: 60Hz (tau advances, Omega=Fix(T)=phi re-settles per tick)
  - monitor:   60Hz (one screen refresh per tick)
  - keyboard:  60Hz (SCNKEY-style scan per tick, same clock as the frame)
- Removed the old 1000Hz timer, the millisecond pacing math, and the duplicate
  ms-based frame limiter in io.h sync() (which was double-limiting).

## Screen regression fixed

The background now fills the screen EDGE TO EDGE (85% blue) with only a thin
24px light-blue border frame — the authentic C64 look — instead of a small text
box floating in a huge light-blue border. (Real C64 boot colors: border=14
light-blue, background=6 blue; both observed from $D020/$D021.)

## Kept from before

- Substrate owns the loop; C64 is a face (phi-fold privacy), real 6502 + ROMs.
- Fully expressive keyboard (shift keymap: $ ( ) " * : etc.).
- VIC color observed (POKE53280/53281 visible), full 800x600, no size loss.

## Honest note on verification

Headless QEMU does not run the PIT at true wall-clock speed, so the 60Hz was
verified as LOGIC (correct divisor; one tick drives one frame drives one scan;
no stalls; boots + types). True 60.00fps reads on real metal. If it feels slow
on hardware, the remaining cost is the full-screen redraw per frame (~960K
writes); that's a redraw-only-changed-cells optimization, separate from the
clock — say the word and I'll add it.
