Без долгих вступлений - протестируем влияние бита T в PSW на обслуживание запросов IRQ от таймера и порта терминала.
В приложении - дополненный вариант теста PDP-11 Interrupts Test #1c
Без долгих вступлений - протестируем влияние бита T в PSW на обслуживание запросов IRQ от таймера и порта терминала.
В приложении - дополненный вариант теста PDP-11 Interrupts Test #1c
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В кернел пока не перключается, соответственно MTPS не работает итд.
Из под FB:
Код:.RU PDPT1C PDP-11 Interrupts Test #1c MTPS #340 ...Press Key... BIS #100,@#TTPS Set T x3 RTI | NOP | WAIT | NOP | NOP | NOP >>> Trap to 014 <<< ; 001234 >>> Interrupt <<< 100 ; 001234 >>> Trap to 014 <<< ; 001234 >>> Trap to 014 <<< ; 001234 >>> Interrupt <<< 060 ; 001234 >>> Interrupt <<< 064 ; 001234 NOP NOP NOP NOP MTPS #340 ...Press Key... BIS #100,@#TTPS Set T x3 RTT | NOP | WAIT | NOP | NOP | NOP >>> Interrupt <<< 100 ; 001432 >>> Trap to 014 <<< ; 001432 >>> Trap to 014 <<< ; 001432 >>> Trap to 014 <<< ; 001432 >>> Interrupt <<< 060 ; 001432 >>> Interrupt <<< 064 ; 001432 NOP NOP NOP NOP MTPS #340 BIS #100,@#TTPS ...Press Key... Set T x3 RTT | NOP | NOP | NOP | NOP | NOP >>> Interrupt <<< 100 ; 001630 >>> Trap to 014 <<< ; 001630 >>> Trap to 014 <<< ; 001630 >>> Trap to 014 <<< ; 001630 >>> Interrupt <<< 060 ; 001630 >>> Interrupt <<< 064 ; 001630 NOP NOP NOP NOP NOP Program completed. .
---------- Post added at 17:01 ---------- Previous post was at 16:59 ----------
Кстати в доке по KDJ11B про T-бит написано просто NM (non maskable) и перечислен в списке с остальными прерываниями. Для EMT/BPT итд статус просто не пишется.
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
Странно, как это после RTT в обработчике Т-трапа не выполняются никакие команды (и все прерывания возникают "на одном месте")..
Последний раз редактировалось Patron; 22.02.2012 в 13:05.
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
Ну вот и тест на реальном УКНЦ.
А вот и нет!
Как же тогда в этом куске:
три Т-трапа происходят НА ОДНОМ МЕСТЕ и ни одна из команд программы не выполняется, хотя обработчики Т-трапа заканчиваются командой RTT.Код:MTPS #340 ...Press Key... BIS #100,@#TTPS Set T x3 RTT | NOP | WAIT | NOP | NOP | NOP >>> Interrupt <<< 100 ; 001432 >>> Trap to 014 <<< ; 001432 >>> Trap to 014 <<< ; 001432 >>> Trap to 014 <<< ; 001432 >>> Interrupt <<< 060 ; 001432 >>> Interrupt <<< 064 ; 001432 NOP NOP NOP NOP
...
Вот это мне гораздо больше нравится!
Очевидно, что у formа "нереальный УКНЦ" :)))
Кстати, весьма похоже, что на 1801ВМ2 бит Т просто вводит дополнительную блокировку прерываний, которую нейтрализует команда WAIT, ожидающая и обслуживающая одно прерывание.
Ну положим я все еще не уверен в правильности теста
Свой же тест я приводил и результат в нем был однозначный - RTT дает шанс прерыванию и никаких гвоздей.
К примеру я не сильтно уверен в результатах прерывания по 64 так как мы одновременно трогаем устройство которое его должно дать.
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
Бит T блокирует прерывания просто в силу своего приоритета. Блок прерываний в 1801ВМ2 при своей работе просматривает все незамаскированные прерывания на данный момент и выбирает самое приоритетное. У T-бита приоритет равен 3, у таймера (EVNT) - 6, VIRQ - 7.
А команда WAIT блокирует прерывание по T-разряду, поэтому и выполняется прерывание по таймеру.
И еще в тесте хорошо видна особенность 1801ВМ2 (а может и не только его), когда происходит возврат по RTT без установки бита T, то блок прерываний не запрещается на один шаг. Это видно на последних шагах, когда сохраненный в стеке счетчик команд оказывается одним и тем же.
Именно поэтому так важен результат теста на реальной УКНЦ. Ведь там запускался тот же самый код, а результаты гораздо более логичные - после каждой команды RTT гарантированно выполняется одна команда программы.
Возможно, как-то влияют прерывания от таймера. Дело в том, что во время работы программы они случаются примерно по одному на каждую строчку вывода на экран.
Если наша попытка перехвата V100 была как-то пресечена операционкой и перед нашим обработчиком V100 или после него выполняется код операционки - тогда это может как-то влиять.
Есть возможность запустить этот тест с гарантированно выключенным таймером?
Не забываем только, что на УКНЦ есть только один IRQ, а у меня их 4
---------- Post added at 17:36 ---------- Previous post was at 17:36 ----------
Сейчас отключим.
---------- Post added at 17:38 ---------- Previous post was at 17:36 ----------
Код:.GET PDPT1C .E 40 001000 .D 10000=5037,177546,137,1000 .ST 10000 PDP-11 Interrupts Test #1c MTPS #340 ...Press Key... BIS #100,@#TTPS Set T x3 RTI | NOP | WAIT | NOP | NOP | NOP >>> Trap to 014 <<< ; 001234 >>> Interrupt <<< 060 ; 001234 >>> Trap to 014 <<< ; 001234 >>> Interrupt <<< 064 ; 001234 >>> Trap to 014 <<< ; 001234 NOP (зависон - WAIT видимо, клавишу тык) MTPS #340 ...Press Key... BIS #100,@#TTPS Set T x3 RTT | NOP | WAIT | NOP | NOP | NOP >>> Interrupt <<< 060 ; 001432 >>> Trap to 014 <<< ; 001432 >>> Interrupt <<< 064 ; 001432 >>> Trap to 014 <<< ; 001432 NOP >>> Trap to 014 <<< ; 001434 (зависон - WAIT видимо, клавишу тык) NOP >>> Trap to 014 <<< ; 001434 NOP NOP NOP MTPS #340 BIS #100,@#TTPS ...Press Key... Set T x3 RTT | NOP | NOP | NOP | NOP | NOP >>> Interrupt <<< 060 ; 001630 >>> Trap to 014 <<< ; 001630 >>> Interrupt <<< 064 ; 001630 >>> Trap to 014 <<< ; 001630 NOP >>> Trap to 014 <<< ; 001632 NOP NOP NOP NOP Program completed. .
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
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)