A2osX/ProDOS.203/ProDOS.S.IRQ.txt

69 lines
1.7 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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