libc/kbd: raw-клавиатура — вычерпывание FIFO + селективный wipe модификаторов
- kbd_raw_sync: цикл вычерпывания SIO FIFO (не 1 байт/прерывание) — фикс залипания клавиш; overrun-wipe сбрасывает только пострадавшие клавиши, не модификаторы (typematic их не перечитывает). - Гайд docs/kbd-games.md; заметка о Rx-overrun в docs/TODO.md; справочник скан-кодов в docs/libc-reference.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -276,6 +276,18 @@ Quick wins:
|
||||
CBL-хука для ЭТОГО прерывания — при движении мыши часть тиков,
|
||||
которые должны были обслужить CBL-насос, уходят мимо, кольцо
|
||||
недоливается. Нужно исследование (MAME-дамп/лог трамплина).
|
||||
- [ ] **kbd_raw: частые Rx-overrun в MAME при тапах** (roomtest,
|
||||
2026-07-22) — замеры watchpoint-счётчиками: при стабильном
|
||||
удержании клавиши overrun'ов ноль, но каждый быстрый тап (5 байт:
|
||||
E0 74 + E0 F0 74 при FIFO 3) даёт overrun. Подозрение: dev-MAME
|
||||
не эмулирует прерывание SIO на каждый принятый байт (байты
|
||||
вычерпываются только кадровым IRQ 50 Гц) и/или подаёт пачку без
|
||||
реальных ~1 мс/байт — на железе per-byte INT должен делать
|
||||
overrun'ы редкостью. Проверить mame/sources/MAME/src/mame/
|
||||
sinclair/sprinter.cpp (путь байта клавиатуры → INT) и при
|
||||
желании поправить dev-MAME. Recovery-политика уже терпима к
|
||||
частым overrun'ам (селективный wipe, docs/kbd-games.md), но
|
||||
аккорд «держу →, тапнул ↑» остаётся уязвим.
|
||||
|
||||
## Known quirks (зафиксированы, обходы в libc)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user