Да, точно. В 2(SP) PSW прерванного процесса.
Вид для печати
На уровне кернела - это как? Надо какой-то бит где-то установить?
Здравые мысли.
Подумав над результататми теста у formа, я склоняюсь к мысли, что на его процессоре Т-трап имеет больший приоритет, чем IRQ (как и у ВМ2), а установка бита Т блокирует младшие линии BR (типа, как команда вроде MTPS #200), поэтому прерывание таймера не блокируется, а команда WAIT не пропускает ни одного прерывания.
Для того, чтобы точно в этом убедиться, я хотел сделать так, чтобы при выполнении команд NOP - их мнемоника выводилась на экран. Поэтому если использовать последовательность команд типа NOP | WAIT | NOP | WAIT | NOP | NOP - то всегда будет примерно ясно, "где мы находимся".
Да - это гениально, как всё простое. Чем мудрстововать, подсчитывая на экране NOPы - гораздо проще сравнить адрес в стеке с листингом трансляции.
Т.е. вот такая вставка в начале программы переключит нас в KERNEL-моду:
Так?Код:MOV #340, @#16
MOV #10$, @#14
BPT
10$:
MTPS #0
Cmp (SP)+,(SP)+
SP на усмотрение - два слова не особо мешают. Или можно записать #340 в 2(SP) и потом по RTI/RTT вернуться после BPT (два старших бита PSW очищены - kernel mode, поскольку RTI из кернела делается - получится). MTPS лучше не использовать вообще по возможности - команда не портабельная (хотя у меня и есть). Ну и в любом случае если в этом именно мест есть потребности в приоритете 0, то можно сразу было 0 в 16 записать :)
Т.е. в подпрограмме сохранения векторов пишем
И никакие последующие команды RTI/RTT нас уже из KERNEL-моды не выбъют..Код:MOV #0, @#16
MOV #10$, @#14
BPT
10$:
Cmp (SP)+,(SP)+
Return
Думаю, что модератор последние несколько страничек вполне мог бы перенести в тему 'ДВК и все, что с ними связано')