Спасибо, Patron, сегодня попробую. Я вчера так-же возился с программой которая "ловит" все прерывания и показывает какой вектор сработал. Так вот, после инициализации массива векторов я пускал просто "br" (вечный цикл) и когда я нажимал кнопку "LTC" то при переходе состояния от "лампа горит" -> "лампа потухла" у меня в пульте вылетал вектор 100.
Я подумал что это значит что:
1. LTC кнопка и лампа работают так же как и HALT кнопка и лампа, т.е. если лампа горит это значит сигнал на шине = +5v (логический FALSE для шины QBUS) как токо лампа гаснет это = 0v или TRUE (т.е. HALT mode ON или посадить на 0 линию прерываний от таймера).
2. у меня нету никакого генератора прерываний от таймера на шине, так как вектор 100 срабатывает только при переходе от LTC="+5v" к LTC="0v".
3. SLU никаких векторов не генерирует, потому что такой кусок:
просто "зависает" и не вываливает никакого вектора в отличие от LTC кнопки которая вываливает вектор 100.Код:.=1000 MOV #700, SP MTPS #0 MOV #100, @#177564 ; Включить прерывания передатчика MOV #5, R1 MOV #100, R0 1$: INC R0 MOV R0, @#177566 2$: TSTB @#177564 BPL 2$ SOB R1, 1$ HALT
Вопросы:
1. как в pdp процессоре запретить прерывания? ведь возможен же вариант что даже при том заполнении таблицы векторов прийдет прерывание а вектор заполнен токо наполовину... Есть 3 бита управления "реакции на прерывания" соответствующего приоритета, но как этим пользоваться? не ясно какой уровень у SLU или таймера.
2. как это возможно что процессор "зависает"?? при каких условиях kdf11 процессор не может выйти в пульт по сигналу HALT=TRUE? как проверить что происходит?




Ответить с цитированием