Проведенный тест:
Код:
START: MOV #10$,@#14
MOV #340,@#16
BPT
10$: RESET
MOV #PIRQ,@#240
MOV #340,@#242
MOV #TBIT,@#14
MOV #340,@#16
BIS #100000,@#177772
MOV #20,-(SP)
MOV #20$,-(SP)
RTI
20$: WAIT
HALT
PIRQ: MOV #TPIRQ,R0
CALL PRINT
DEC #5
BNE 10$
CLR 2(SP)
CLR @#177772
10$: RTI
TBIT: MOV #TTBIT,R0
CALL PRINT
DEC #5
BNE 10$
CLR 2(SP)
10$: RTI
PRINT: TSTB @#177564
BPL .-4
MOVB (R0)+,@#177566
BNE PRINT
RETURN
TTBIT: .ASCIZ /T-BIT/<15><12>
TPIRQ: .ASCIZ /BIRQ7/<15><12>
.END START
Результат:
Код:
RTI RTT Все RTT
----- ----- -------
T-BIT BIRQ7 BIRQ7
T-BIT T-BIT BIRQ7
T-BIT T-BIT BIRQ7
T-BIT T-BIT BIRQ7
T-BIT T-BIT BIRQ7
BIRQ7 T-BIT
BIRQ7 BIRQ7
BIRQ7 BIRQ7
BIRQ7 BIRQ7
BIRQ7 BIRQ7
Итого:
- Везде RTI: Пока не отработают T-биты у BIRQ7 шансов нет, WAIT будет достигнута только после всех прерываний
- Вход по RTT, возвраты из прерываний по RTI: RTT дает шанс BIRQ7, после него верх берет T-BIT
- Везде RTT: после отработки всех BIRQ получаем WAIT и T-биты, как и сказал Alex_K, заблокированы
---------- Post added at 01:13 ---------- Previous post was at 01:11 ----------
И ни в одном случае, разумеется, до HALT дела не доходит