С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Немножко непонятно что должен выполнять Тест 56 из 791404:
Насколько я понял - rtt выполнит возврат на 2$, выполнится inc R1, произойдет отложенное исключение по T-биту на 3$, там будет dec R1 и завершение теста переходом к tst57. Зачем все остальные инструкции?Код:tst56: inc @#$testn ; тест 56, rtt - прослеживаемая cmp #56, @#$testn ; команда bne 4$ ; mov #-1, R5 ; ; 1$: mov #buff, SP ; mov #20, -(SP) ; mov #2$, -(SP) ; mov #3$, rtrap4 ; clr R1 ; rtt ; ; 2$: inc R1 ; inc R5 ; beq 1$ ; mov #216, @#$fatal ; inc @R2 ; halt ; нет прерывания ; 3$: dec R1 ; непонятно, сразу выход beq tst57 ; inc R5 ; beq 1$ ; ; 4$: mov #217, @#$fatal ; inc @R2 ; halt ; ошибка rtt или НПТ ; tst57:
Похоже, что авторы теста хотели проверить возникновение прерывания не только после установки T-бита командой RTT, но и после снятия, но так до конца и не поняли, как лучше это закодировать. В итоге ( насколько я понял ) - возникновение ровно одного прерывания после снятия T-бита командами RTI / RTT нигде в тесте не проверяется, хотя по идее - обязательно должно проверяться.
---------- Post added at 16:30 ---------- Previous post was at 16:26 ----------
Кстати, когда команда RTT снимает бит T и затем происходит "финальное" прерывание по вектору 014, то в какой момент должно происходить это прерывание - до выполнения следующей за RTT команды или после ?
---------- Post added at 17:13 ---------- Previous post was at 16:30 ----------
Ответ даёт TTST6.SAV
Результаты запуска в эмуляторе следующие :
Код:.RU TTST6 LSI-11 Traps Test #6 Mov #00,-(SP) Mov #L2,-(SP) Mov #20,-(SP) Mov #L1,-(SP) RTT L1: RTI L2: >>> Trap to 014 <<< NOP Mov #00,-(SP) Mov #L4,-(SP) Mov #20,-(SP) Mov #L3,-(SP) RTT L3: RTT L4: >>> Trap to 014 <<< NOP .
В тесте 791404 вообще хватает ошибок и опечаток, поэтому ничего удивительного.
Насчет инструкции RTT - похоже она блокирует распознавание бита Т в первой микрокоманде следующей инструкции, в которой происходит первичное декодирование и опрос контроллера прерываний. Как дойдут руки потестировать - отпишусь о подробностях.
Пока сложно сказать как оно точно происходит. Т-бит заходит (является аргументом) в матрицу контроллера прерываний, где может маскироваться битом 2 регистра 177700, пока это предположительно режим ожидания (по команде WAIT). Также T-бит заходит и в основную матрицу, поэтому может напрямую влиять на исполнение микрокода.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)