diff --git a/harness/mame/BRINGUP_LOG.md b/harness/mame/BRINGUP_LOG.md index 32e1bbd..7246808 100644 --- a/harness/mame/BRINGUP_LOG.md +++ b/harness/mame/BRINGUP_LOG.md @@ -642,6 +642,31 @@ BUSY_W3=1` → still `PC=3FDCE400`, 5 distinct. So the knobs are wired *and* the critical handshake is isolated to the `0x06200000` window: arming only WIN2 leaves gate 1, arming only WIN3 does not. +Raw runs, verbatim: + +``` +$ VT1200_BOARD_MODEL=handshake VT1200_BOARD_BUSY_TICKS=0 \ +$ VT1200_BOARD_SWITCH="0640000D:70:70" \ +$ COV_FRAMES=600 COV_WINDOW=300 timeout 600 $M vt1200 -rompath harness/mame/roms -video none \ +$ -sound none -nothrottle -debug -debugger none -autoboot_script harness/mame/coverage.lua -autoboot_delay 0 2>&1 \ +$ | grep -E "^frame" | tail -1 +BUSY_TICKS=0 -> frame 600 new= 2 total_distinct= 5 PC=3FDCE400 + +$ VT1200_BOARD_MODEL=handshake VT1200_BOARD_BUSY_TICKS=0 VT1200_BOARD_BUSY_W2=1 \ +$ VT1200_BOARD_SWITCH="0640000D:70:70" \ +$ COV_FRAMES=600 COV_WINDOW=300 timeout 600 $M vt1200 -rompath harness/mame/roms -video none \ +$ -sound none -nothrottle -debug -debugger none -autoboot_script harness/mame/coverage.lua -autoboot_delay 0 2>&1 \ +$ | grep -E "^frame" | tail -1 +BUSY_TICKS=0 BUSY_W2=1 -> frame 600 new= 2 total_distinct= 56 PC=3F208950 + +$ VT1200_BOARD_MODEL=handshake VT1200_BOARD_BUSY_TICKS=0 VT1200_BOARD_BUSY_W3=1 \ +$ VT1200_BOARD_SWITCH="0640000D:70:70" \ +$ COV_FRAMES=600 COV_WINDOW=300 timeout 600 $M vt1200 -rompath harness/mame/roms -video none \ +$ -sound none -nothrottle -debug -debugger none -autoboot_script harness/mame/coverage.lua -autoboot_delay 0 2>&1 \ +$ | grep -E "^frame" | tail -1 +BUSY_TICKS=0 BUSY_W3=1 -> frame 600 new= 2 total_distinct= 5 PC=3FDCE400 +``` + ### Sweep: `BUSY_W2` in {1,2,4,8} `W3=2`, `DMA=2`, `MODEL=handshake`, `SWITCH=0640000D:70:70`, @@ -654,6 +679,24 @@ leaves gate 1, arming only WIN3 does not. | 4 | 59 | `3F208B20` | | 8 | 59 | `3F208B20` | +Raw run, verbatim (cwd `harness/mame`-repo root, +`M=/home/arti/code/k-space/mame0289/vt1200`): + +``` +$ for N in 1 2 4 8; do +$ printf "W2=%s -> " "$N" +$ VT1200_BOARD_MODEL=handshake VT1200_BOARD_BUSY_W2=$N VT1200_BOARD_BUSY_W3=2 \ +$ VT1200_BOARD_DMA_TICKS=2 VT1200_BOARD_SWITCH="0640000D:70:70" \ +$ COV_FRAMES=900 COV_WINDOW=300 timeout 600 $M vt1200 -rompath harness/mame/roms -video none \ +$ -sound none -nothrottle -debug -debugger none -autoboot_script harness/mame/coverage.lua -autoboot_delay 0 2>&1 \ +$ | grep -E "^frame" | tail -1 +$ done +W2=1 -> frame 900 new= 3 total_distinct= 59 PC=3F208B20 +W2=2 -> frame 900 new= 3 total_distinct= 59 PC=3F208B20 +W2=4 -> frame 900 new= 3 total_distinct= 59 PC=3F208B20 +W2=8 -> frame 900 new= 3 total_distinct= 59 PC=3F208B20 +``` + **The sweep is flat.** No `BUSY_W2` value moves the firmware further than any other, and none leaves the park loop. The reason is structural, not a bug: `tick()` runs **once per frame** (last visible scanline), while the gate polls @@ -697,14 +740,22 @@ level 1. ### `INTENB` — still never non-zero -`intr.lua`, boundary config, 900 frames: +`intr.lua`, boundary config, 900 frames, verbatim: ``` +$ VT1200_BOARD_MODEL=handshake VT1200_BOARD_BUSY_W2=2 VT1200_BOARD_BUSY_W3=2 \ +$ VT1200_BOARD_DMA_TICKS=2 VT1200_BOARD_SWITCH="0640000D:70:70" \ +$ INT_FRAMES=900 INT_EVERY=300 timeout 600 $M vt1200 -rompath harness/mame/roms -video none \ +$ -sound none -nothrottle -debug -debugger none -autoboot_script harness/mame/intr.lua -autoboot_delay 0 2>&1 \ +$ | grep -E "CHANGED|distinct|INTENB=" f 1 INTENB CHANGED -> 0000 (DI=0) +f 1 INTPEND CHANGED -> 0000 f 2 INTPEND CHANGED -> 0400 -f 300 DPYCTL=E008 INTENB=0000(DI=0) INTPEND=0400 DI=1 -f 900 DPYCTL=E008 INTENB=0000(DI=0) INTPEND=0400 DI=1 -distinct INTENB values seen: 0000 (900 frames) +f 300 DPYCTL=E008 INTENB=0000(DI=0) INTPEND=0400 DI=1 DPYINT=0000 VCOUNT=0383 VTOTAL=0384 HTOTAL=004F HSBLNK=004C +f 600 DPYCTL=E008 INTENB=0000(DI=0) INTPEND=0400 DI=1 DPYINT=0000 VCOUNT=0383 VTOTAL=0384 HTOTAL=004F HSBLNK=004C +f 900 DPYCTL=E008 INTENB=0000(DI=0) INTPEND=0400 DI=1 DPYINT=0000 VCOUNT=0383 VTOTAL=0384 HTOTAL=004F HSBLNK=004C +distinct INTENB values seen: + INTENB=0000 DI=0 (900 frames) ``` `INTENB` never becomes non-zero, so the level-0 boundary is **not** crossed: