Конкретно для Спека, где надо по первому такту проца сгерить прерывание и уже через 2 такта Z80 выдать результат из таблицы состояний, надо к схеме контроллера добавить всего лишь один 8-битный регистр с Z-состоянием (ИР22/23/33): контроллер по прерыванию в нее пишет как успеет, а Спек из него читает когда хочет, управляя Z-состоянием (Z80.RD->ИР23.OE).
При такой реализации не важно сразу ты отработаешь прерывание от ZX и запишешь в регистр, или по приоритетам спустя несколько милисекунд, или отвлекаясь на обработку USB. Ибо регистр хранит данные уже актуальные (если успели ответить) или предыдущего "запроса" (если моментально ответить не успели). Т.е. опять все тот же некритичный (для человеческого восприятия) случай когда со стороны ZX-хоста выглядит что кнопка нажата или отпущена на пару милисекунд позже чем есть.
В любом случае, схема "контроллер + регистр" выглядит куда как более здраво чем схема с двумя последовательно включенными контроллерами где один делает преобразование "USB-PS2", а второй "PS2-матрица". Кстати, два контроллера тоже не будут успевать отрабатывать без задержки, т.к. в последовательных схемах задержки складываются.
Ну так а я об чем.
Да и Wait не так страшен, КМК.






Ответить с цитированием