
;
;
;       This IRQ does VBlank and Raster interrupts.
;

                org     $5c5c
IM2Routine:     ei
                jp      DoIRQ

                org     $5d00
VectorTable:            
                dw      IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine
                dw      IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine
                dw      IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine
                dw      IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine
                dw      IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine
                dw      IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine
                dw      IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine
                dw      IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine,IM2Routine
                dw      IM2Routine





DoIRQ:
                push    bc
                push    af
                

                ld      a,(WhichIRQ)
                cp      0
                jr      z,@DoVBlank
                cp      2
                jr      z,@SecondSplit
                ld      a,$2
                out     ($fe),a

                ; set next IRQ
                NextReg $23,$a0
                NextReg $22,$02
                ld      a,2
                ld      (WhichIRQ),a
                jr      @ExitIRQ

@SecondSplit:
                ld      a,$0
                out     ($fe),a

                ; set next IRQ
                NextReg $23,$27
                NextReg $22,$03
                ld      a,0
                ld      (WhichIRQ),a
                jr      @ExitIRQ




@DoVBlank:                
                ; VBlank
                ld      a,1
                out     ($fe),a
                ld      a,1
                ld      (WhichIRQ),a

@ExitIRQ:
                pop     af
                pop     bc
                reti

WhichIRQ        db      0

