ivagor,
а если запустить tst8253, потом что-то другое из пакета тестов, а потом снова tst8253?
- - - Добавлено - - -
KTSerg, просто первая команда в обработчике прерываний обычно всегда DI. Она однобайтная и вполне вписывается в несколько тактов.
ivagor,
а если запустить tst8253, потом что-то другое из пакета тестов, а потом снова tst8253?
- - - Добавлено - - -
KTSerg, просто первая команда в обработчике прерываний обычно всегда DI. Она однобайтная и вполне вписывается в несколько тактов.
Провёл эксперимент на реал Векторе (02).
Написал программку:
.org 0
EI
HLT
JMP 0
.org 38h
RET
.
Это просто цикл прерываний.
Результат такой:
Через 4 такта после фронта "F50Гц", "INTE" падает в "0" и отключает "INT".
INTE восстанавливается в "1" через 44 такта.
Если убрать EI (заменить NOPом, или вроде пробовал JMP 0001) - прерывания никогда не наступают.
Если вставлять "NOP" между HLT и JMP 0 - это приводит к тому, что каждый NOP задерживает восстановление INTE на 4 такта.
Если заменить
RET
на
EI
RET
т.е. разрешить прерывания сразу после перехода к ним, то INTE восстанавливается через 20 тактов.
Т.е. INTE - падает в 0 (запрет прерываний) как программный, так и аппаратный выходной сигнал процессора, поскольку я не использовал DI, а он сам срабатывал.
И разрешать прерывания на Векторе нужно программно - обязательно (если они нужны).
Вроде на процах Мега есть специальная команда выхода из прерывания, которая кроме обычного RETURN сама выполняет ещё и EI, но я опять-же могу путать... склероз аднака...![]()
Последний раз редактировалось KTSerg; 23.02.2016 в 10:34.
ага.. значит хоть в этом у меня нет расхождения.
А почему так? Тесты вроде ваши. Вы полностью прописываете все регистры или что-то забываете?
А на реальном Векторе есть возможность так же запустить tst8253 после других тестов?
- - - Добавлено - - -
KTSerg,
ну тогда значит сам процессор принудительно выдает DI при наступлении прерываний, а обработчик прерываний значит обязан выполнить EI перед выходом, чтобы вновь разрешить прерывание.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Получается, что модель ВИ53 где-то глючит.
- - - Добавлено - - -
Однако, это не отвечает на вопрос почему Exolon так глючит у меня.
- - - Добавлено - - -
ivagor,
а дайте ссылки на ваши тесты. Или лучше сюда залейте чтобы все в одно место.
Я протестирую их у себя и может тогда будет ясно (с вашей помощью) где у меня проблемы.
chkvi53_2, chkvi53_weirdbinbcd. Но эти тесты не сильно важны для нормальной работы классических программ, в основном пробовал детектить эмулятор. Для второго теста нет результата реального вектора.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)