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
Хитрость тут (насколько понимаю) в том, что когда у устройства обнуляют бит РП - оно сразу теряет способность ответить на запрос передачи вектора, тогда как на то, чтобы снять IRQ, и чтобы этот обратный фронт успел дойти по шине до процессора - требуется время, поэтому при последовательном выполнении команд установки и сброса бита РП - процессор успевает запросить у устройства вектор, но устройство к тому моменту уже "забывает о чём речь".
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
PDPT4A на УКНЦ.
Вот еще пример где УКНЦа наверное свалится, а KDJ11 нет.
Код:.E 0-2 040000 104350 .RU RED ?MON-F-Trap to 4 001004 .E 0-2 001004 000004 .TY RED.MAC START: CLR SP WAIT .END START .
---------- Post added at 22:33 ---------- Previous post was at 22:28 ----------
Кстати по этой причине мой любимый способ зачистки нижней памяти с чистым остановом не работает - останутся недочистки в 0-2![]()
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
А как это так? Каким образом стек так перемещается? Или это особенность KDJ-11?
А УКНЦ будет так.
На KDJ11 двойная защита стека. Первый уровень - yellow trap - если SP упал ниже 400 происходит прерывание по 4 (причина берется из cpuerr регистра). Второй уровень red stack abort - когда вызов прерывыния не позволяет в кернелный стек записать - тогда KSP принудительно ставится на 4 и делается трап по 4.
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 точно так же.
Есть ещё один момент, про который не мешает знать - как поведёт себя пара BIS-BIC, если BIC идёт сразу после BIS, но не по ходу программы, а как первая команда обработчика прерывания, выполняющегося с разрешёнными прерываниями.
Ответ даёт следующий тест: PDP-11 Interrupts Test #4b.
В любом варианте.
При включенном MMU только для kernel mode, при выключенном - оно и есть kernel mode.
---------- Post added at 22:44 ---------- Previous post was at 22:41 ----------
Код:.RU PDPT4B PDP-11 Interrupts Test #4b 060 Handler: 001364: BIC #100,@#TTPS 001372: NOP ...Press Key... BIS #100,@#TTKS BIS #100,@#TTPS 060 Handler: >>> Interrupt <<< 064 ; 001364 NOP NOP Program completed. .D 10000=5037,177546,137,1000 .ST 10000 PDP-11 Interrupts Test #4b 060 Handler: 001364: BIC #100,@#TTPS 001372: NOP ...Press Key... BIS #100,@#TTKS BIS #100,@#TTPS 060 Handler: >>> Interrupt <<< 064 ; 001364 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
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)