С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Последний раз редактировалось form; 31.01.2016 в 19:44.
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Просится на выполнение следующий тест :
Код:.ASect . = 0 Jmp @#Next // Точка входа пульта. . = 4 .Word Trap4 .Word 340 . = 24 .Word Start // Адрес старта. .Word 340 Trap4: RtI Start: Mov #400, SP Call L1 L1: Mov #364, SP Call L2 L2: Mov #200, SP Call L3 L3: Mov #2, SP Call Next Next: Wait
Классическая зачистка памяти:Вызывает YSA там где он есть. Где нет - чистит память и штатно останавливается.Код:MOV #160000,SP MOV #4747,@#0 CLR PC
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Надо бы после CALL вставить NOP для чистоты эксперимента, тогда будет видно при заносе в SP это выполняется или при заносе в стек. Т.е. первой командой на метке будет NOP, а не MOV.
.
В общем ситуация ясна, при любом значении SP меньше 402 ( или меньше 404 в случае прерываний ) - прерывания и вызовы подпрограмм приводят к YELLOW TRAP после выполнения команды.
Последний раз редактировалось Patron; 01.02.2016 в 00:41.
.
Осталось узнать, произойдёт ли YELLOW TRAP при возникновении прерываний по вектору 4 :
- - - Добавлено - - -Код:.ASect . = 0 Jmp @#Next // Точка входа пульта. . = 4 .Word Trap4 .Word 340 . = 10 .Word Trap4 .Word 340 . = 24 .Word Start // Адрес старта. .Word 340 Trap4: RtI Start: Mov #400, SP MFPT // Начнём с TrapTo_10 Nop Jmp R0 Nop Tst @#1 Nop Next: Wait
Но и ситуацию с аппаратными прерываниями тоже полезно уточнить :
- - - Добавлено - - -Код:.ASect . = 0 Jmp @#Next // Точка входа пульта. . = 4 .Word Trap4 .Word 340 . = 24 .Word Start // Адрес старта. .Word 340 .=62 .Word Trap4 .Word 340 Trap4: Nop RtI Start: Mov #400, SP BiS #100, @#177564 Nop Nop Nop Next: Wait
Ещё одна "пушащая" команда: MFPI, но не стоит забывать и про RETURN :
Код:.ASect . = 0 Jmp @#Next // Точка входа пульта. . = 4 .Word Trap4 .Word 340 . = 24 .Word Start // Адрес старта. .Word 340 Trap4: Nop RtI Start: Mov #200, SP Nop MFPI (PC)+ Nop Nop Mov #Next, -(SP) Nop Nop Return Nop Next: Nop Wait
Последний раз редактировалось Patron; 01.02.2016 в 03:01.
По mfpt возникает дополнительное исключение по 000004, сразу перед первой инструкцией обработчика
[]
По jmp R0 тоже возникает дополнительное исключение по 000004, любопытно что не повторяется бесконечно
[]
По нечетному адресу также возникает одно дополнительное исключение 000004
[]
По аппаратному прерыванию тоже возникает исключение 000004
[]
MFPI вызывает исключение 000004
[]
Обращение к стеку через -(SP) вызывает исключение 000004
[]
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)