Не получится. Команда MFPT будет прочитана, и соответственно флаг сброшен. Далее он установится при попытке прочтения первой команды подпрограммы исполнения TRAP10, произойдет TRAP4, но команда MFPT будет успешно прочитана из памяти. Ну и так до бесконечности, точнее до переполнения стека.
Тесты я не писал, т.к. пультовый отладчик в УКНЦ очень удобный и позволяет запускать код как в режиме USER, так и в HALT. Поэтому все исследования я делал в нём.
А программа довольно простая. Устанавливаем вектор 4 на адрес 0170000, ячейку 6 на 0340, R6 на 01000, RS на 0340. С адреса 01000 заносим команду TST @#170000 и исполняем её.
Происходит TRAP4, в стек успешно заносятся значения 01002 и 0340. А вот далее при чтении команды по адресу 0170000 снова происходит прерывание по зависанию и соответственно DOUBLE BUS ERROR. После всего этого значение R6 станет 0774, т.е. в стек занесено только два слова при первом прерывании TRAP4.
Тест можно усложнить, если сделать так, что ячейку 6 установить в 0, и чтобы было прерывание по таймеру или по терминалу. Их вектор также должен указывать на "пустоту". Соответственно стек заполнится ещё больше, но в итоге опять будет DOUBLE BUS ERROR.
Кстати, не помешало бы проверить это на МС1201.02, т.к. там нет "мегаглюка". Поэтому программу надо написать, а Mix её исполнит.





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