100 lines
839 B
ArmAsm
100 lines
839 B
ArmAsm
|
*
|
||
|
* boot block.
|
||
|
*
|
||
|
* loaded at $0800
|
||
|
|
||
|
xc
|
||
|
xc
|
||
|
rel
|
||
|
|
||
|
SLOT equ $00
|
||
|
CMD equ $42
|
||
|
UNIT equ $43
|
||
|
BUFFER equ $44
|
||
|
BLOCK equ $46
|
||
|
|
||
|
ext init
|
||
|
boot
|
||
|
mx %11
|
||
|
|
||
|
db $01 ; prodos boot id
|
||
|
|
||
|
* slot 5 = x = $50, a = $3178
|
||
|
* slot 6 = x = $60, a = $8401
|
||
|
* stx :unit
|
||
|
* txa
|
||
|
* lsr
|
||
|
* lsr
|
||
|
* lsr
|
||
|
* lsr
|
||
|
* ora #$c0
|
||
|
|
||
|
|
||
|
stx UNIT
|
||
|
txa
|
||
|
lsr
|
||
|
lsr
|
||
|
lsr
|
||
|
lsr
|
||
|
ora #$c0
|
||
|
sta :prodos+2
|
||
|
|
||
|
stz SLOT
|
||
|
sta SLOT+1
|
||
|
|
||
|
ldy #1
|
||
|
lda (SLOT),y
|
||
|
cmp #$20
|
||
|
bne noboot
|
||
|
ldy #3
|
||
|
lda (SLOT),y
|
||
|
bne noboot
|
||
|
ldy #5
|
||
|
lda (SLOT),y
|
||
|
cmp #$03
|
||
|
bne noboot
|
||
|
|
||
|
ldy #$ff
|
||
|
lda (SLOT),y
|
||
|
sta :prodos+1
|
||
|
|
||
|
|
||
|
lda #1
|
||
|
sta CMD
|
||
|
sta BLOCK
|
||
|
stz BLOCK+1
|
||
|
stz BUFFER
|
||
|
lda #$a0 ; $0800+512
|
||
|
sta BUFFER+1
|
||
|
|
||
|
:read
|
||
|
jsr :prodos ; block 1
|
||
|
bcs noboot
|
||
|
|
||
|
inc BLOCK
|
||
|
inc BUFFER+1
|
||
|
inc BUFFER+1
|
||
|
lda BLOCK
|
||
|
cmp #6
|
||
|
bcc :read
|
||
|
bra :ok
|
||
|
|
||
|
:prodos jmp $0000
|
||
|
|
||
|
|
||
|
:ok
|
||
|
|
||
|
clc
|
||
|
xce
|
||
|
cli
|
||
|
|
||
|
jsr init
|
||
|
|
||
|
noboot
|
||
|
:loop wai
|
||
|
bra :loop
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
sav boot.L
|