125000 bench: RX overrun confirmed (NAK=1082, lamps dead) — CPU is the wall

Board->PC near-perfect at 125k (framing 5) while PC->board shredded by
packet length (2-byte polls 60% delivered, 4-byte lamp cmds ~2/3 NAKed
as checksum-corrupt): the 2MHz HC11 RX ISR can't drain back-to-back
bytes at 80us. MAX232 acquitted; zero wedges even at 40% inbound loss.
62500 image built as the sweet-spot candidate (RIOv4_2_patched_62500.bin).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-18 12:57:51 -05:00
co-authored by Claude Fable 5
parent d7535f2a43
commit f7c16f579d
4 changed files with 13214 additions and 0 deletions
+14
View File
@@ -304,3 +304,17 @@ just survivable. To actually harvest the bandwidth, the next dial is
host-side: drop the 55ms analog poll interval (the board now answers in
~4.6ms of wire time). Cabinet adoption still gated on game-side baud
patches; 9600 patched chip remains the production standard meanwhile.
### 125000 bench results (2026-07-18) — CPU wall found; RX overrun confirmed
`testlogs/riomash-patched-125000-20260718-125310.log` (103s): zero wedges
(all gaps self-recovered <=0.52s even here), but the board's RX drowns:
NAK=1082 (~2/3 of the ~1650 lamp commands arrived checksum-corrupt —
overrun-dropped bytes; lamps visibly dead), analog delivery 60.6% (2-byte
requests survive better than 4-byte packets), both status exchanges
failed. Direction asymmetry nails the cause: board->PC was near-perfect
(framing 5), so the MAX232 leg is fine at 125k — the 2MHz HC11 RX ISR
(~160 E-cycles/byte, 1-byte buffer) is the wall, exactly as the cycle
estimate predicted. Verdict: 125000 NOT viable. Sweet-spot candidate:
`RIOv4_2_patched_62500.bin` (320 cycles/byte, MAX232 in-spec, ACK-wait
80 ticks = 12.8ms), sha256 below, awaiting bench.
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,29 @@
== RIO mash test :: COM1 @ 125000 8N1, 300s, chip label 'patched-125000' ==
lamp echo ON (drives reply/lamp collisions), wedge threshold 2.0s, app auto-recovery DISABLED
log: C:\VWE\riojoy\riomash-patched-125000-20260718-125310.log
firmware: 4.2
counters before: (no status reply — reply path dead?)
>>> MASH NOW: two hands, 8 lamp buttons, as fast as you can. <<<
>>> Test runs 300s. A wedge alarm will beep + banner. <<<
>>> Ctrl+C ends the run early and still prints the summary. <<<
[ 33.05s] progress: presses=147 (147/min) analog=344 maxGap=0.31s wedges=0
[ 63.12s] progress: presses=472 (449/min) analog=668 maxGap=0.37s wedges=0
[ 93.14s] progress: presses=741 (477/min) analog=999 maxGap=0.44s wedges=0
[ 103.09s] operator stop (Ctrl+C) — ending run, snapshotting counters...
== MASH SUMMARY [patched-125000] ==
run : 103s on COM1, lamps on, wedge threshold 2.0s
firmware : 4.2
presses/releases : 827 / 824 (470 presses/min)
analog replies : 1134 (~1872 poll slots; 60.6%), sentinels 0
framing / NAK : 5 / 1082
gap histogram : <100ms:804 100-250ms:298 250-500ms:30 0.5-1s:1 1-2s:0 2-5s:0 >5s:0
longest gaps : 0.52s@95.7s, 0.44s@63.3s, 0.44s@86.0s, 0.38s@79.8s, 0.37s@56.4s, 0.37s@73.4s, 0.37s@81.5s, 0.34s@95.3s, 0.31s@40.8s, 0.31s@58.4s
wedge events : 0
counters before : (no status reply — reply path dead?)
counters after : (no status reply — reply path dead?)
counter delta : (incomplete — a snapshot got no reply)
verdict : PASS — no wedge; compare gap histogram + counter delta to baseline
log file : C:\VWE\riojoy\riomash-patched-125000-20260718-125310.log