Das heißt, während des Interrupts einen weiteren Interrupt nach $0314/15 laden, den bestehenden ACKen über $d019 und mit cli den c64 bereit machen auf IRQs zu reagieren noch während der Rasterstrahl im Bildaufbau ist. Der zweite IRQ kann sich auf eine spätere Zeile beziehen.
Den zweiten IRQ dann wieder ACKen und den ersten IRQ Vektor in $0314/15 einsetzen.
Naja, auf diese Weise könntest Du mit den IRQ-Vektoren spielen, wenn Du im voraus weißt, wann welcher IRQ genau auftritt. Dazu müsste imho der CIA-IRQ schon irgendwie mit dem Raster synchron sein, und dann verliert das denn Sinn.
Man darf auch innerhalb des IRQ CLI verwenden, um einem anderen IRQ Priorität zu geben. Man muss halt nur vorher korrekt geACKt haben.
Aus dem Gedächtnis sah meine Routine (über $FFFE) so aus:
pha
txa
pha
tya
pha
lda $dc0d ; Liest und ACKt evtl. auch gleich das CIA-Register
bpl RIRQ ; Wenn es nicht CIA war, dann ja wohl Rasterirq
CIRQ
cli
.... CIA-Zeugs
jmp IREND
RIRQ
.... VIC-Zeugs
lda#1
sta IRR ; Oder andere Befehle, um Raster-IRQs zu ACKen
IREND
pla
tay
pla
tax
pla
rti
Alles anzeigen
Das könnte Raster um ca. 20 Takte extra verzögern, falls der CIA-IRQ ganz kurz vor dem RIRQ passiert.
Der Vektor bleibt dabei immer gleich. Letztlich ist ein anderer Vektor ja auch nur eine Fallunterscheidung, und das bekommt man in den eigentlichen Unterprogrammen auch anders hin, oder man baut am Anfang von RIRQ mit JMP() seinen eigenen Vektor.