Просмотр полной версии : обесните пожалуйста что такое WAIT
в чем отличие WAITовой и безWAITовой клавиатуре.
Viktor2312
23.09.2010, 18:04
Ну вообще WITE это ожидание. Я конечно не супер спектрумист, но понял так, что безвайтовая клавиатура будет как минимум меньше тормозить проц. Может и ошибаюсь.
WAIT нога проца . Низкий уровень на оной даёт отмашку процу бросить дела и тупо ждать . Контроллер тормозит проц чтоб успеть подготовить данные которые проц собирается прочесть с порта .
Безвэйтовый контроллер просто успевает всё сделать и не тормозит проц .
Viktor2312
23.09.2010, 18:20
Ну значит я всё правильно понял, контроллер принудительно переводит проц в режим ожидания. А в безвайтовой клавиатуре всё успевается сделаться быстро, что не требуется переводить проц в режим ожидания.
в чем отличие WAITовой и безWAITовой клавиатуре.
Но в общем случае, конкретно по клавиатуре для пользователя разница только в подключении - не требуется переделывать цепи WAIT-сигнала. А то что проц затормаживается на доли процента в случае нажатия на клавишу, то это можно не принимать во внимание.
не скажи
видел бы ты как здорово настраивать мультиколор на скорпе с такой клавой,
если опрос портов делать на верхнем бордюре
а напомните, что был за прикол с постоянным опросом ваитовой клавы?
loop
xor a
in a,(#fE)
cpl
and #1f
jr z,loop
вот это наглухо вешало скорпионовский контроллер PC клавы
а если сделать так
loop
djnz $
xor a
in a,(#fE)
cpl
and #1f
jr z,loop
то все ОК
кстати в ACTION FORCE 1 невозможно было изза этого нормально поиграть с клавиатуры
во-во! я ж помню, что где-то был косяк, но здравый смысл был уверен, что цикл из 3-4 команд не должен вешать намертво...
во-во! я ж помню, что где-то был косяк, но здравый смысл был уверен, что цикл из 3-4 команд не должен вешать намертво...Косяк в том, что при таком коротком цикле опроса, контроллеру просто нет времени заниматься
ещё чем нибудь, кроме отработки прерывания по запросу порта клавиатуры со стороны Спектрума.
И дело в данном случае не в большой длительности /WAIT,
а в большом времени выхода контроллера из процедуры прерывания после снятия /WAIT.
Косяк в том, что при таком коротком цикле опроса, контроллеру просто нет времени заниматься
ещё чем нибудь, кроме отработки прерывания по запросу порта клавиатуры со стороны Спектрума.
И дело в данном случае не в большой длительности /WAIT,
а в большом времени выхода контроллера из процедуры прерывания после снятия /WAIT.
Кстати да, а в чем именно причина такого поведения контроллера скорпионовского?
с точке зрения железа там или еще чего
Кстати да, а в чем именно причина такого поведения контроллера скорпионовского?
с точке зрения железа там или еще чего
Всё дело в низком быстродействии МК (семейство MSC51) , который используется в Скорпионовском контроллере.
Вот фрагмент кода, завершающего обработку прерывания по запросу от Спектрума:
movx @DPTR, A ;Снять /WAIT
;---- Восстановление регистров и выход из прерывания
mov DPH, R0 ;1
mov R0, temp_R0 ;1
pop PSW ;2
pop ACC ;2
reti ;2
;8 мксек при 12 Мгц
;----------------------------------
Тоесть после снятия WAIT контроллер еще 8 мксек занят, прежде чем будет выполнять остальные задачи.
За это время Спектрум при тактовой частоте 3.5 Мгц выполнит несколько команд (можете сами прикинуть сколько).
PS. То же самое выполняется на ATTiny2313 на порядок быстрее, что исключает указанную проблему.
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot