A2osX/ProDOS.203/ProDOS.S.IRQ.txt
2019-09-15 17:13:48 +02:00

69 lines
1.7 KiB
Plaintext
Raw 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