NEW AUTO 3,1 * object code = mli_3 * * this routine handles interrupts and is coded to reach 'lreset' precisely at * address $FFCB (ROM rts opcode) for rom switching to function. lanirq pha $2D9B-2DFF moved to $FF9B-FFFF 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 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 * these 3 vectors hard-coded into processor .DA nmivect nmi handler .DA lreset reset handler irqv .DA lanirq irq handler * end of obj mli_3 *-------------------------------------- MAN SAVE usr/src/prodos.203/prodos.s.irq LOAD usr/src/prodos.203/prodos.s ASM