Цитата Сообщение от Titus Посмотреть сообщение
Это говорит о том, что прерывание происходит только в конце последовательности сохранения регистров в стек. Т.е. занесли первое слово, установился флажок зависания, потом занесли второе слово, и только в конце этой последовательности может произойти прерывание.
Чтобы точно определить, заказывает ли блок прерываний второй цикл DATO ( для записи в стек содержимого PC ) сразу после неудачи записи в стек содержимого PSW или просто уменьшает SP ещё на 2 - можно осуществить следующий тест:
Код:
	Mov	#160002,SP
	CLR	@#157776
	MFPT
Если по завершении теста в ячейке 0157776 окажется записан не 0, а PC из первого прерывания - значит при входе в прерывание блок прерываний выполняет два последовательных цикла DATO без реакции на возможное зависание в первом из этих двух циклов.

Причём, если это окажется справедливо не только для ВМ2, но и для ВМ1 - то это будет означать, что два последовательных зависания при входе в прерывание с плохим стеком не формируют признака двойного зависания ( как если бы блок прерываний не заказывал второй цикл DATO и вместо попытки записи PC в стек после неудачи записи PSW - просто уменьшал SP ещё на 2).

Цитата Сообщение от Alex_K Посмотреть сообщение
Несмотря на это, SP еще уменьшается на 2, и хотя в 157776 уже можно занести, но второе слово не заносится в стек.
Т.е. в предлагаемом тесте в ячейке 0157776 так и останется ноль..