Ja obstawialbym dwie rozne procedury zrzucania zawartosci rejestrow w Twoich IRQ a w IRQ Kernala (choc ten chyba wykorzystuje SEI - nie pamietam), w ostatecznym rozrachunku, system moze zrzucac rejestry korzystajac ze stosu PHA, PLA tym samym modyfukujac wskaznik stosu, jezeli do ladowania pliku wykorzystujesz rozkaz RTS
a popdrocedura powraca a wskaznik stosu lub zawartosc sotosu sie zmienia stad moze pojawiac sie adres 2144 i rts sie wywala.
Jeszcze jest kwestia SEI/CLI i jak sa ustawione przerwania wczeneij czy na $0314/$0315 czy $ffffe/$ffff. Jezeli te pierwsze to CPU sam zrzuca reg flag i reg AXY na stos w okreslonej kolejnosci i przy wyjsciu Kernal sciaga to w okreslonej kolejnosci.
Jezeli masz swoja procke zrobiona na $fffe/$ffff i zrzucasz w innej kolejnosci regxy lub do komorek w pamieci a potem przerzucasz sie do procek Kernala, to rozkaz SEI przy ladowaniu zablokuje przerwania i posle chyba 3(4) bajty na stos. Za malo danych wejsciowych zeby wykryc blad.
Najlepsze jest to ze i tak nikt nie sprawdzi tego co opisuje.