HIVE GUI BUILD 010 - based on your GUI009.zip

Run HIVE.COM in the 80x24 Microbee Premium CF environment.
The COM embeds kernal ABI 1.5 and replaces older resident kernals.

LAYOUT (zero-based cells)
Left: calculator (1,1), 27x13; saying (1,14), 27x2;
      Lissajous frame (3,16), 22x6 with exactly 20x4 cells inside.
      Curve interior (4,17) is 160x64 pixels in 8x16 PCG glyphs.
Right: clock (29,1), 51x11; notepad (29,13), 51x10.
Clock is immediately below the menu bar. Status row remains row 23.
Saying is two centred text lines on green; its former title/frame is removed.

CONTROLS
View > Pause/resume curve (L inside the View menu).
View > Next curve (R inside the View menu).
Four ratios: 1:1, 2:3 (initial), 3:2, 3:4.
Tab retains calculator -> clock -> saying -> notepad.
Lissajous is decorative and consumes no focus slot.
All existing notebook editing and menu controls remain available.

IMPLEMENTATION
Connected sine curves use lookup tables, no floating point on the Z80.
Initial curve is built at startup; animation builds eight samples per event
frame, then uploads the completed bitmap. This is slow phase animation,
not a high frame-rate oscilloscope. It keeps calculation spread across events.
Typing also services app ticks, so it does not stop the clock or curve.

State: 3120-318F, inside desktop RAM. Notebook: 3400-3DCF unchanged.
Bitmap: 7800-7FFF. HIVE limits its box backing pool to 7000-77FF;
its four boxes consume 1476 bytes, leaving 572 bytes in that pool.
The kernal pool end defaults to 8000 for other applications.
PCG upload is a kernal API: apps do not access video RAM or video ports.
Upload selects normal bank-0 PCG mode (port 1Ch = 0) and preserves IFF.
The full 2K bank is HIVE-owned and overwritten, as permitted by decision D8.
PCG is not restored on exit; screen characters and colours are restored.
Glyph 0 supplies blank tiles, avoiding the emulator's font fallback.
80 tile glyphs exclude the renderer-special indices listed in SPEC009.

VALIDATION
Builds with sjasmplus 1.21.0, zero assembler errors or warnings.
Desktop, notepad (including 40 random edit sequences), clock, widgets,
focus, box and calculator regressions pass in the supplied Z80 harness.
LISSTEST checks actual executed PCG pixels against a separate sine/line model
for all four ratios, pause/resume, continued animation during typing,
buffer separation, safe glyph indices, interrupts and screen restoration.
PREVIEW010.png is an approximate text-font rendering of executed harness
output; the curve pixels are actual PCG bytes from the COM.
The supplied harness does not model extended PCG/attribute banking.
The actual VibeDrone emulator and physical Microbee have not been tested.

Rebuild: sh build.sh (sjasmplus on PATH)
Check: sh run_tests.sh
