velxio/frontend/src
David Montero Crespo 47adb0b1c8 fix(chipbus): Galaksija boots + displays + types live in the browser
The gallery example loaded but the Z80 never visibly ran: the screen stayed
frozen on garbage. Two multi-chip async-load races, neither caught by the
existing headless tests (which drive RESET manually and attach the display
before boot):

1. RESET edge-vs-level race. The Z80 only left reset on the RISING edge of
   RESET (a pin watch). In the browser the 7 chips instantiate asynchronously,
   so the small power-on-reset chip releases RESET before the larger Z80 has
   registered its watch -> the edge is lost and the CPU stays in reset forever.
   Fix: on_clock samples the RESET level (hardware-accurate; RESET is
   level-sensitive) so a missed edge self-corrects. An undriven RESET reads low,
   so the CPU safely stays in reset until something drives it high.
   Repro/guard: chipbus-galaksija-reset-race (race ordering must still boot).

2. Display-snoop load-order race. galaksija-display was a passive write-snoop;
   the ROM paints the screen ONCE at boot then idles, so a display that comes up
   late misses every write and shows stale content forever. A snoop cannot
   recover writes it never saw. Fix: fold the screen into the RAM chip
   (galaksija-ram-display) and render from the ACTUAL video RAM (0x2800-0x2BFF,
   internal 0x0800 with A0-A12 wiring) on a ~30 fps timer - correct regardless
   of load order, exactly how the real machine scans video RAM.
   Repro/guard: chipbus-galaksija-display-snoop-race (late snoop shows nothing)
   + chipbus-galaksija-ram-display (renders even when first paint is post-boot).

The example now has 6 chips (RAM+display merged, gdisp dropped), 76 wires.
Verified live in the browser: boots to "@'READY", shows the ">" prompt, and
pressing A echoes ">A_" through keyboard -> Z80 -> video RAM -> display. The
full chipbus suite is 45/45.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 15:47:30 -03:00
..
__pro_stub__ feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
__tests__ fix(chipbus): Galaksija boots + displays + types live in the browser 2026-06-05 15:47:30 -03:00
assets feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
components fix(chipbus): Galaksija boots + displays + types live in the browser 2026-06-05 15:47:30 -03:00
data fix(chipbus): Galaksija boots + displays + types live in the browser 2026-06-05 15:47:30 -03:00
desktop feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
hooks
i18n chore(pricing): free tier shows 20 daily AI credits (up to 600/month) 2026-06-02 05:37:57 +02:00
lib feat: STM32 (Blue Pill / Black Pill) QEMU emulation + Pro board gating 2026-05-30 19:06:14 -03:00
pages feat(editor): rename boards & custom chips; show which target owns each file 2026-06-04 06:22:25 +02:00
services feat(custom-chip): newly-added programmable chip auto-gets an editable program; chaser-c goes board-less 2026-06-03 22:52:11 +02:00
simulation feat(chipbus): Galaksija keyboard - type BASIC over the bus 2026-06-05 14:37:42 -03:00
store feat(editor): rename boards & custom chips; show which target owns each file 2026-06-04 06:22:25 +02:00
tokens
types feat(editor): rename boards & custom chips; show which target owns each file 2026-06-04 06:22:25 +02:00
utils feat(editor): per-target compilation console — a section per board/chip 2026-06-04 07:56:54 +02:00
velxio-elements
App.css
App.tsx feat(desktop): hide web nav + redirect / → /editor in Tauri builds 2026-05-22 18:08:33 -03:00
entry-server.tsx
index.css
main.tsx feat(motors): fix stepper rotation + add A4988 driver (real Fritzing SVG) 2026-05-31 16:28:34 -03:00
seoRoutes.ts feat(seo+nav+community): public-project indexing + classroom nav + examples grid 2026-05-29 18:11:28 +02:00
vite-env.d.ts