mirror of
https://github.com/whscullin/apple2js.git
synced 2024-01-12 14:14:38 +00:00
84 lines
1.4 KiB
ArmAsm
84 lines
1.4 KiB
ArmAsm
|
ORG $C700
|
||
|
|
||
|
; Slot scan ZP addresses
|
||
|
SCAN_LO EQU $00
|
||
|
SCAN_HI EQU $01
|
||
|
|
||
|
; ProDOS
|
||
|
COMMAND EQU $42
|
||
|
UNIT EQU $43
|
||
|
ADDRESS_LO EQU $44
|
||
|
ADDRESS_HI EQU $45
|
||
|
BLOCK_LO EQU $46
|
||
|
BLOCK_HI EQU $47
|
||
|
|
||
|
MSLOT EQU $7F8
|
||
|
|
||
|
; Slot I/O addresses
|
||
|
STATUS EQU $C080
|
||
|
|
||
|
; ROM addresses
|
||
|
BASIC EQU $E000
|
||
|
SLOOP EQU $FABA ; Resume boot scan
|
||
|
ROMRTS EQU $FF58
|
||
|
BOOT EQU $0801
|
||
|
|
||
|
LDX #$20 ; $20 $00 $03 $00 - Smartport signature
|
||
|
LDX #$00 ; $20 $00 $03 $3C - Vanilla disk signature
|
||
|
LDX #$03
|
||
|
LDX #$00 ; Override with $3C for DumbPort
|
||
|
; Determine our slot
|
||
|
JSR ROMRTS
|
||
|
TSX
|
||
|
LDA $0100,X
|
||
|
STA MSLOT ; $Cn
|
||
|
ASL
|
||
|
ASL
|
||
|
ASL
|
||
|
ASL
|
||
|
TAY ; $n0
|
||
|
; Load the disk status bits
|
||
|
LDA STATUS,Y
|
||
|
LSR ; Check for Disk 1
|
||
|
BCS DISKREADY ; Boot from Disk 1
|
||
|
LDA SCAN_LO
|
||
|
BNE GO_BASIC
|
||
|
LDA SCAN_HI
|
||
|
CMP MSLOT
|
||
|
BNE GO_BASIC
|
||
|
JMP SLOOP ; Go back to scanning
|
||
|
GO_BASIC JMP BASIC ; Go to basic
|
||
|
; Boot routine
|
||
|
DISKREADY LDX #$01 ; Read
|
||
|
STX COMMAND
|
||
|
DEX
|
||
|
STX BLOCK_LO ; Block 0
|
||
|
STX BLOCK_HI
|
||
|
STX ADDRESS_LO ; Into $800
|
||
|
LDX #$08
|
||
|
STX ADDRESS_HI
|
||
|
LDA MSLOT
|
||
|
PHA ; Save slot address
|
||
|
PHA ; RTS address hi byte
|
||
|
LDA #REENTRY - 1
|
||
|
PHA ; RTS address lo byte
|
||
|
CLV
|
||
|
BVC BLOCK_ENT
|
||
|
REENTRY PLA ; Restore slot address
|
||
|
ASL ; Make I/O register index
|
||
|
ASL
|
||
|
ASL
|
||
|
ASL
|
||
|
TAX
|
||
|
JMP BOOT
|
||
|
DS 2
|
||
|
BLOCK_ENT RTS
|
||
|
DS 2
|
||
|
SMARTPOINT_ENT RTS
|
||
|
PADDING DS $C7FE - PADDING
|
||
|
ORG $C7FE
|
||
|
FLAGS DFB $D7
|
||
|
ENTRY_LO DFB BLOCK_ENT
|
||
|
|
||
|
END
|