Version 1.08
Focus: PS/2 mouse support now works with a much wider range of devices, including cheap and older mice that previously failed to initialize.
Fixes
- Handle the device's
0xFE(RESEND) reply. A single corrupt host-to-device byte no longer fails the whole init; the driver retries the byte as the spec requires. - Handle the device's
0xFC(ERROR) reply the same way. The spec says0xFCis BAT-only, but many real-world mice send it post-BAT as a soft "please resend". The driver now treats it as a retry request instead of a fatal error. - Wait for the bus to be idle (CLK and DATA both high) before every host-to-device transmit. Slower mice that hold the lines a little longer no longer cause a request-to-send collision.
- Add a 50 ms settling delay after BAT completes, plus a drain of any stragglers in the PIO RX FIFO, before the first configuration byte. Mice that were still finishing internal init no longer get commands thrown at them too early.
- Flush the RX FIFO before every command. A leftover response from a previously failed command can no longer be misread as the answer to the current one.
- Replace the old 4-try / 5 ms retry loop with 2 tries at 30 ms. The faster loop was flooding some mice into a locked state that even a fresh reset couldn't recover from.
- Add a communication-inhibit bus recovery step between init attempts: CLK held low for 20 ms, both lines released for 30 ms, then the PIO state machine is restarted. Retry attempts now start from a clean bus instead of a wedged one.
- Fall back gracefully when the IntelliMouse magic knock fails. Previously the driver gave up; now it continues in plain 3-button mode.
Diagnostics
- Command timeouts log
timed out waiting for ACKinstead of0xFFFFFFFF.
Assets
frank-snes_m1_1_08.uf2— firmware for M1 board variantfrank-snes_m2_1_08.uf2— firmware for M2 board variantmetadata.zip— sdcard ROM metadata bundle