Возврат в программу
После выполнения прерывания команда RTI завершает работу подпрограммы и возвращает программу, выполнявшуюся перед прерыванием. В процессе обработки прерывания содержимое ряда регистров CPU08 было сохранено. Для продолжения прерванной программы состояния регистров должны быть восстановлены до тех значений которые они имели на момент предшествовавший прерыванию программы. Команда RTI выполняет это извлекая сохраненное содержимое регистров из стека. Последнее значение, извлеченное из стека, является содержимым счетчика команд, при котором было остановлено выполнение программы для обработки прерывания.
Извлечение CCR из стека, в общем случае, приводит к очистке бита I, выполняемой во время второго цикла команды RTI.
Примечание: Поскольку состояние бита I возвращается с содержимым CCR из стека, то пользователь установкой бита I в находящемся в стеке содержимом CCR, может блокировать от обработки все последующие отложенные и другие прерывания, вне зависимости от приоритетов.
LDA #$08
ORA 1, SP
STA 1, SP
RTI
Такая возможность может быть использована для обработки переходных ситуаций, при которых обработчик прерываний обнаруживает, что фоновую программу временно невозможно поменять с загрузкой прерывания и необходимо некоторое время для восстановления. При такой сложившейся ситуации фоновая программа должна будет установить новые состояния прерывания после их восстановления.
|