xxl doczytał Altirra Hardware Reference Manual, który twierdzi, że BRK może wejść w procedurę NMI zamiast IRQ, ale B zawsze ustawi.
W związku z tym proponuję poniższe:
Procedura obsługi IRQ:
1. zawsze sprawdza (ASL NMIST) i obsługuje NMI
2. zawsze sprawdza i obsługuje BRK
3. sprawdza i obsługuje IRQ (*)
Procedura obsługi NMI:
1. zawsze sprawdza i obsługuje NMI
2. zawsze sprawdza i obsługuje BRK
Kolejność:
- najpilniejsze jest DLI (VBLKI też bym zrobił najpierw)
- potem IRQ
- na końcu BRK, bo z tym się raczej nie spieszy
(*) można rozwiązać na trzy sposoby:
a. jeśli obsłużyliśmy NMI lub BRK, to nie sprawdzamy IRQ
b. jeśli obsłużyliśmy NMI lub BRK, przed sprawdzeniem IRQ sprawdzamy znacznik I na stosie
c. zawsze sprawdzamy znacznik I, potem IRQ