NEW AUTO 3,1 *-------------------------------------- * this routine handles interrupts and is coded to reach 'lreset' precisely at * address $FFCB (ROM rts opcode) for rom switching to function. * $2D9B-2DFF moved to $FF9B-FFFF *-------------------------------------- lanirq .LIST ON * pha * lda accsav * sta oldacc * pla * sta accsav pla get status register from stack pha and put it back. and #$10 is it a break or interrupt? bne H2DC2 branch if break. lda $D000 get ram bankid (LC1 = $D8, LC2=$EE) eor #$D8 is the system active? ($D8) beq sysactv branch if it is lda #$FF sysactv sta bankid sta afbank lda /aftirq setup return address pha lda #aftirq pha lda #$04 status reg with interrupt flag set pha H2DC2 lda /romirq setup ROM re-entry pha lda #romirq pha gorom sta RROMBNK2 hits ROM rts at $FFCB * 'lreset' address must = $FFCB for rom switch i/o to work .BS *-$ffcb lreset lda rreset+1 pha lda rreset pha jmp gorom rreset .DA resetv-1 rts to resetv fix45 sta p8areg A register savearea * lda oldacc * sta accsav lda RRAMWRAMBNK1 read/write RAM bank 1 lda RRAMWRAMBNK1 lda afbank jmp irqxit0 stypfx sty newpfxptr fix appletalk PFI bug sty preflag prefix flag rts stapfx sta newpfxptr sta preflag rts .BS *-$fffa .DA nmivect nmi handler .DA lreset reset handler irqv .DA lanirq irq handler *-------------------------------------- MAN SAVE USR/SRC/PRODOS.FX/PRODOS.S.IRQ LOAD USR/SRC/PRODOS.FX/PRODOS.S ASM