mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-11-01 05:05:31 +00:00
109 lines
3.2 KiB
ArmAsm
109 lines
3.2 KiB
ArmAsm
* MAINMEM.INIT.S
|
|
* (c) Bobbi 2021 GPLv3
|
|
*
|
|
* Initialization, interrupt handling and reset handling code
|
|
* that resides in main memory.
|
|
|
|
* 14-Nov-2021 If started from CSD, gets prefix to CMDBUF.
|
|
|
|
|
|
* Trampoline in main memory used by aux memory IRQ handler
|
|
* to invoke Apple II / ProDOS IRQs in main memory
|
|
A2IRQ >>> IENTMAIN ; IENTMAIN does not do CLI
|
|
JSR A2IRQ2
|
|
>>> XF2AUX,IRQBRKRET
|
|
A2IRQ2 PHP ; Fake things to look like IRQ
|
|
JMP (A2IRQV) ; Call Apple II ProDOS ISR
|
|
|
|
* BRK handler in main memory. Used on Apple IIgs only.
|
|
GSBRK >>> XF2AUX,GSBRKAUX
|
|
|
|
* Set prefix if not already set
|
|
SETPRFX LDA #GPFXCMD
|
|
STA :OPC7 ; Initialize cmd byte to $C7
|
|
:L1 JSR MLI
|
|
:OPC7 DB $00
|
|
DW GSPFXPL
|
|
LDX DRVBUF1 ; was $0300
|
|
BNE RTSINST
|
|
LDA $BF30
|
|
STA ONLNPL+1 ; Device number
|
|
JSR MLI
|
|
DB ONLNCMD
|
|
DW ONLNPL
|
|
LDA DRVBUF2 ; was $0301
|
|
AND #$0F
|
|
TAX
|
|
INX
|
|
STX DRVBUF1 ; was $0300
|
|
LDA #'/'
|
|
STA DRVBUF2 ; was $0301
|
|
DEC :OPC7
|
|
BNE :L1
|
|
RTSINST LDA CMDPATH
|
|
BEQ :GETPFX ; CMDPATH empty
|
|
LDA CMDPATH+1
|
|
CMP #'/'
|
|
BEQ :GETPFXDONE ; CMDPATH already absolute path
|
|
:GETPFX JSR MLI
|
|
DB $C7 ; Get Prefix
|
|
DW :GETADDR
|
|
:GETPFXDONE RTS
|
|
:GETADDR HEX 01 ; One parameter
|
|
DW CMDPATH ; Get prefix to CMDPATH
|
|
|
|
|
|
* Disconnect /RAM ramdrive to avoid aux corruption
|
|
* Stolen from Beagle Bros Extra K
|
|
DISCONN LDA $BF98
|
|
AND #$30
|
|
CMP #$30
|
|
BNE :S1
|
|
LDA $BF26
|
|
CMP $BF10
|
|
BNE :S2
|
|
LDA $BF27
|
|
CMP $BF11
|
|
BEQ :S1
|
|
:S2 LDY $BF31
|
|
:L1 LDA $BF32,Y
|
|
AND #$F3
|
|
CMP #$B3
|
|
BEQ :S3
|
|
DEY
|
|
BPL :L1
|
|
BMI :S1
|
|
:S3 LDA $BF32,Y
|
|
STA DRVBUF2+1 ; was $0302
|
|
:L2 LDA $BF33,Y
|
|
STA $BF32,Y
|
|
BEQ :S4
|
|
INY
|
|
BNE :L2
|
|
:S4 LDA $BF26
|
|
STA DRVBUF1 ; was $0300
|
|
LDA $BF27
|
|
STA DRVBUF2 ; was $0301
|
|
LDA $BF10
|
|
STA $BF26
|
|
LDA $BF11
|
|
STA $BF27
|
|
DEC $BF31
|
|
:S1 RTS
|
|
|
|
* Reset handler - invoked on Ctrl-Reset
|
|
* XFER to AUXMOS ($C000) in aux, AuxZP on, LC on
|
|
RESET TSX
|
|
STX $0100
|
|
LDA $C058 ; AN0 off
|
|
LDA $C05A ; AN1 off
|
|
LDA $C05D ; AN2 on
|
|
LDA $C05F ; AN3 on
|
|
LDA #$20 ; Turn off PAGE2 shadow on ROM3 GS
|
|
TSB $C035
|
|
>>> XF2AUX,AUXMOS
|
|
RTS
|
|
|
|
|
|
|