в чем отличие WAITовой и безWAITовой клавиатуре.
Вид для печати
в чем отличие WAITовой и безWAITовой клавиатуре.
Ну вообще WITE это ожидание. Я конечно не супер спектрумист, но понял так, что безвайтовая клавиатура будет как минимум меньше тормозить проц. Может и ошибаюсь.
WAIT нога проца . Низкий уровень на оной даёт отмашку процу бросить дела и тупо ждать . Контроллер тормозит проц чтоб успеть подготовить данные которые проц собирается прочесть с порта .
Безвэйтовый контроллер просто успевает всё сделать и не тормозит проц .
Ну значит я всё правильно понял, контроллер принудительно переводит проц в режим ожидания. А в безвайтовой клавиатуре всё успевается сделаться быстро, что не требуется переводить проц в режим ожидания.
Но в общем случае, конкретно по клавиатуре для пользователя разница только в подключении - не требуется переделывать цепи WAIT-сигнала. А то что проц затормаживается на доли процента в случае нажатия на клавишу, то это можно не принимать во внимание.Цитата:
Сообщение от sevol
не скажи
видел бы ты как здорово настраивать мультиколор на скорпе с такой клавой,
если опрос портов делать на верхнем бордюре
а напомните, что был за прикол с постоянным опросом ваитовой клавы?
вот это наглухо вешало скорпионовский контроллер PC клавыЦитата:
loop
xor a
in a,(#fE)
cpl
and #1f
jr z,loop
а если сделать так
то все ОКЦитата:
loop
djnz $
xor a
in a,(#fE)
cpl
and #1f
jr z,loop
кстати в ACTION FORCE 1 невозможно было изза этого нормально поиграть с клавиатуры
во-во! я ж помню, что где-то был косяк, но здравый смысл был уверен, что цикл из 3-4 команд не должен вешать намертво...
Косяк в том, что при таком коротком цикле опроса, контроллеру просто нет времени заниматься
ещё чем нибудь, кроме отработки прерывания по запросу порта клавиатуры со стороны Спектрума.
И дело в данном случае не в большой длительности /WAIT,
а в большом времени выхода контроллера из процедуры прерывания после снятия /WAIT.
а, ну да, понятно:)
Всё дело в низком быстродействии МК (семейство MSC51) , который используется в Скорпионовском контроллере.Цитата:
Сообщение от jerri
Вот фрагмент кода, завершающего обработку прерывания по запросу от Спектрума:
Тоесть после снятия WAIT контроллер еще 8 мксек занят, прежде чем будет выполнять остальные задачи.Код:movx @DPTR, A ;Снять /WAIT
;---- Восстановление регистров и выход из прерывания
mov DPH, R0 ;1
mov R0, temp_R0 ;1
pop PSW ;2
pop ACC ;2
reti ;2
;8 мксек при 12 Мгц
;----------------------------------
За это время Спектрум при тактовой частоте 3.5 Мгц выполнит несколько команд (можете сами прикинуть сколько).
PS. То же самое выполняется на ATTiny2313 на порядок быстрее, что исключает указанную проблему.