mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-25 05:32:20 +00:00
69 lines
1.7 KiB
Plaintext
69 lines
1.7 KiB
Plaintext
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
|