Firmware: --e0thresh patch — gate the E0 error display (default N=5)
Stock $D5F2 repaints the cockpit display to the E0 counter readout on the FIRST increment of $3187/$3184/$3185, so one benign give-up shows E0000001 forever. New opt-in make_patch.py edit 5 hijacks the render's LDX #$2038 into a 30-byte cave at $E000: all three counters below N -> exit via the routine's own epilogue (registers restored, display untouched); any >= N -> resume the render. Counters still accumulate. Built + disassembly-verified (not yet burned): RIOv4_2_patched_e0t5.bin (9600) and RIOv4_2_patched_31250v2_e0t5.bin (FastRIO). Docs updated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -104,7 +104,11 @@ also the RIO's **error annunciator**:
|
||||
count (`$3185`, `$DA2F`). Each increment site immediately re-renders,
|
||||
so the display live-updates as serial trouble accumulates. If a
|
||||
cockpit's display reads `E0…` instead of `F0000000`, the serial link
|
||||
has been dropping or retrying.
|
||||
has been dropping or retrying. Note there is **no threshold in stock
|
||||
firmware** — the first event paints `E0000001` permanently; the
|
||||
`_e0t5` patched images (`make_patch.py --e0thresh`, see
|
||||
[RIOv4_2-ANALYSIS.md](../../rio-firmware/RIOv4_2-ANALYSIS.md)) keep
|
||||
the display quiet until a counter reaches 5.
|
||||
- **`dEAd` crash screen** (`$DAB8`, loop at `$DAB2`) — the TX-ISR ring
|
||||
drain (`$D8C2`) looks each outgoing command byte up in an 8-entry
|
||||
dispatch table at `$3158`; an unmatched byte means internal state
|
||||
|
||||
Reference in New Issue
Block a user