From 61778ec3f11938a9ca76c15598a7893ab2b6729d Mon Sep 17 00:00:00 2001 From: Cyd Date: Sat, 18 Jul 2026 11:13:38 -0500 Subject: [PATCH] =?UTF-8?q?FastRIO=20v2=20bench:=20CLEAN=20=E2=80=94=20ACK?= =?UTF-8?q?-wait=20widening=20eliminates=20the=20retry=20storm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 192s mash at 31250 with the $D9E7 wait fix: framing 5655 -> 54 (-99.4%), AbandonCount 65 -> +0, duplicate replies gone (215% -> 88.6% of poll slots — identical to the healthy 9600 profile, the structural $D758 drop-gate ratio), zero wedges, counters perfectly flat. The byte-clocked ACK-wait theory is confirmed end to end: disassembly predicted the mechanism, one operand byte fixed it, the wire went quiet. Evidence log archived; results table in ANALYSIS.md. Co-Authored-By: Claude Fable 5 --- rio-firmware/RIOv4_2-ANALYSIS.md | 22 +++++++++++++ ...iomash-patched-31250v2-20260718-110853.log | 32 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 rio-firmware/testlogs/riomash-patched-31250v2-20260718-110853.log diff --git a/rio-firmware/RIOv4_2-ANALYSIS.md b/rio-firmware/RIOv4_2-ANALYSIS.md index 32707a4..cb41dcf 100644 --- a/rio-firmware/RIOv4_2-ANALYSIS.md +++ b/rio-firmware/RIOv4_2-ANALYSIS.md @@ -282,3 +282,25 @@ sha256 `420d4cfc6b513651687982a70db2daeecda7bd00a5324321e272f35b95dca753`, 25 bytes vs original; re-disassembly diff vs the v1 31250 image is exactly the one CMPA operand line. Expected on the bench: framing 5655 → ~0, Abandon 65 → ~0, wedges 0 → 0. + +### 31250 v2 bench results (2026-07-18) — CLEAN. Byte-clock theory confirmed. + +`testlogs/riomash-patched-31250v2-20260718-110853.log` (192s mash): + +| metric | v1 @31250 | v2 @31250 (ACK-wait $28) | +|-------------------|----------------|--------------------------| +| framing resyncs | 5655 (~45/s) | **54 (~0.3/s, -99.4%)** | +| Abandon delta | 65 | **+0** | +| Restart delta | 2 | **+0** | +| analog vs polls | 215% (dupes) | **88.6% (no dupes)** | +| wedge events | 0 | **0** | +| worst mid-run gap | 0.09s (steady) | 0.14s (tail <100ms) | + +The 88.6% delivery ratio equals the healthy 9600 patched profile (87.5%) +— the deficit is the $D758 in-flight drop gate, identical at both rates, +i.e. structural, not a v2 artifact. Counters perfectly flat: the board +never entered retry escalation in 192s. FastRIO is now *clean*, not +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. diff --git a/rio-firmware/testlogs/riomash-patched-31250v2-20260718-110853.log b/rio-firmware/testlogs/riomash-patched-31250v2-20260718-110853.log new file mode 100644 index 0000000..241b930 --- /dev/null +++ b/rio-firmware/testlogs/riomash-patched-31250v2-20260718-110853.log @@ -0,0 +1,32 @@ +== RIO mash test :: COM1 @ 31250 8N1, 300s, chip label 'patched-31250v2' == + lamp echo ON (drives reply/lamp collisions), wedge threshold 2.0s, app auto-recovery DISABLED + log: C:\VWE\riojoy\riomash-patched-31250v2-20260718-110853.log + firmware: 4.2 + counters before: RestartCount=0 AbandonCount=0 FullBufferCount=0 [board/lamp faults reported!] + +>>> 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.03s] progress: presses=63 (63/min) analog=523 maxGap=0.28s wedges=0 +[ 63.05s] progress: presses=165 (157/min) analog=1002 maxGap=0.28s wedges=0 +[ 93.08s] progress: presses=185 (119/min) analog=1481 maxGap=0.28s wedges=0 +[ 123.11s] progress: presses=347 (169/min) analog=1958 maxGap=0.28s wedges=0 +[ 153.22s] progress: presses=504 (197/min) analog=2440 maxGap=0.28s wedges=0 +[ 183.26s] progress: presses=763 (250/min) analog=2919 maxGap=0.28s wedges=0 +[ 191.98s] operator stop (Ctrl+C) — ending run, snapshotting counters... + +== MASH SUMMARY [patched-31250v2] == +run : 191s on COM1, lamps on, wedge threshold 2.0s +firmware : 4.2 +presses/releases : 775 / 775 (241 presses/min) +analog replies : 3076 (~3472 poll slots; 88.6%), sentinels 0 +framing / NAK : 54 / 5 +gap histogram : <100ms:3068 100-250ms:5 250-500ms:2 0.5-1s:0 1-2s:0 2-5s:0 >5s:0 +longest gaps : 0.30s@192.0s, 0.28s@1.8s, 0.14s@57.2s, 0.13s@107.8s, 0.12s@98.5s, 0.11s@130.9s, 0.10s@165.4s, 0.10s@24.5s, 0.10s@151.9s, 0.10s@167.4s +wedge events : 0 +counters before : RestartCount=0 AbandonCount=0 FullBufferCount=0 [board/lamp faults reported!] +counters after : RestartCount=0 AbandonCount=0 FullBufferCount=0 [board/lamp faults reported!] +counter delta : RestartCount=+0 AbandonCount=+0 FullBufferCount=+0 +verdict : PASS — no wedge; compare gap histogram + counter delta to baseline +log file : C:\VWE\riojoy\riomash-patched-31250v2-20260718-110853.log