diff --git a/display-board-1408.md b/display-board-1408.md index 356757d6..0589704b 100644 --- a/display-board-1408.md +++ b/display-board-1408.md @@ -55,9 +55,10 @@ J1 (14-pin, from the RIO's EXTERNAL DISPLAY port) is all input: ## What the RIO firmware displays (v4.2) All display writes go through `$CB49` (buffer render) or five canned -patterns at `$CB7C–$CC52`, driven from three contexts: initialization, -the built-in **test mode**, and the **serial error/crash displays** -(below). During normal, healthy gameplay the display is static. +patterns at `$CB7C–$CC52`, driven from four contexts: initialization, +the built-in **test mode**, the **serial error/crash displays**, and +the **CheckRequest self-test** (all below). During normal, healthy +gameplay the display is static. **Normal operation:** `F0000000` — written at cold boot (`$C068`) and warm re-init (`$C64B`), then left alone. @@ -92,6 +93,20 @@ In the axis tests `hhll` is the **live 16-bit quadrature count in hex** and watch the number move. The channel IDs are literally the keypad keys that start them, which is why the fourth axis reads `0C`. +## The CheckRequest self-test leftover: `04000000` + +The host `CheckRequest` (`0x80`) triggers a full self-test in the +handler at `$C5A6`: it sets the same display flag test mode uses +(`$2421`), brackets itself with `TestModeChange 0x8C` notifications, +flashes a lamp pattern, scans the pods, and sweeps the five encoder +channels — rendering each channel's `cc00hhll` frame as it goes. It +clears the flag on exit but **never repaints the display**, so after +every status check the digits are left showing the last frame: +channel 4, usually `04000000` with idle encoders. It is a stale +snapshot (axis movement does not update it — bench-confirmed +2026-07-19), purely cosmetic, and the board keeps operating normally. +Any reset repaints `F0000000`. + ## Error displays (the third use) Two more display writers live in the serial machinery — the display is