Boot module for Level II
The Boot module from CMS 9639
nam Boot
ttl os9 system module
use defsfile
tylg set Systm+Objct
atrv set ReEnt+rev
rev set $01
mod BootEnd,name,tylg,atrv,start,0
name equ *
fcs /Boot/
fcb $05
L0012 fcb $02
fcb $00
fcb $21
fcb $01
fcb $01
fcb $04
fcb $02
fcb $64
fcb $02
fcb $65
fcb $02
fcb $65
fcb $00
fcb $00
L0020 fcb $00
fcb $00
fcb $21
fcb $01
fcb $01
fcb $02
fcb $FF
fcb $FF
fcb $FF
fcb $FF
fcb $FF
fcb $FF
fcb $00
fcb $00
L002E lda >$FF80
orcc #$01
bita #$40
bne L0046
stx <$18,u
sty <$1A,u
stb <$1D,u
stb >$FF80
andcc #$FE
L0046 rts
L0047 lda >$FF80
bmi L0052
bita #$40
bne L0047
bra L0062
L0052 tfr a,b
bita #$40
beq L0071
anda #$07
leax >L0074,pcr
lda a,x
jsr a,x
L0062 tst <$1D,u
bne L0047
lda <$1C,u
bita #$02
bne L0071
andcc #$FE
rts
L0071 orcc #$01
rts
L0074 fcb L008F-L0074 0
fcb L00A2-L0074 1
fcb L007C-L0074 2
fcb L00B3-L0074 3
fcb RETRN-L0074 4
fcb RETRN-L0074 5
fcb RETRN-L0074 6
fcb L00BA-L0074 7
L007C ldx <$18,u
L007F lda ,x+
sta >$FF81
L0084 brn L0084
cmpb >$FF80
beq L007F
stx <$18,u
RETRN rts
* Copy to drive
L008F ldx <$1A,u
L0092 lda ,x+
sta >$FF81
L0097 brn L0097
cmpb >$FF80
beq L0092
stx <$1A,u
rts
* Copy from drive
L00A2 ldx <$1A,u
L00A5 lda >$FF81
sta ,x+
cmpb >$FF80
beq L00A5
stx <$1A,u
rts
L00B3 lda >$FF81
sta <$1C,u
rts
L00BA tst >$FF81
clr <$1D,u
rts
L00C1 pshs y,x,b,a
sta <$14,u
stx <$12,u
clrb
lda >$FF80
bita #$10
bne L00D3
ldb #$40
L00D3 orb $01,s
stb <$11,u
clr <$15,u
puls pc,y,x,b,a
L00DD pshs y,x,b,a
leax <$10,u
ldy <$16,u
bsr L00EE
bcc L00EC
stb $01,s
L00EC puls pc,y,x,b,a
L00EE ldb #$01
lbsr L002E
bcs L00EE
lbsr L0047
bcc L00FC
ldb #E$Read
L00FC rts
L00FD pshs u,y,x,b,a
sta <$1E,u
lda #$01
bsr L00C1
clr <$10,u
L0109 bsr L00DD
bcs L0109
lda #$08
sta <$10,u
L0112 leax <$10,u
ldy <$1A,u
bsr L00EE
bcs L0135
ldd <$12,u
addd #$0001
std <$12,u
ldb #$00
adcb <$11,u
stb <$11,u
dec <$1E,u
bne L0112
bra L0137
L0135 stb $01,s
L0137 puls pc,u,y,x,b,a
* Delay
L0139 pshs b,a,cc
ldd #$1BE6
L013E subd #$0001
bne L013E
puls pc,b,a,cc
start equ *
pshs u,y,x,b,a
leas <-$20,s
ldd #$0100
os9 F$SRqMem
lbcs L01CD
stu <$16,s Store allocated buffer
leau ,s
lda #$10
sta >$FF80
bsr L0139
lda >$FF80
leay >L0012,pcr
clrb
clr <$1F,u
bita #$10
bne L0175
leay >L0020,pcr
ldb #$40
L0175 stb <$11,u
lda #$C4
leax <$10,u
sta ,x
clr <$15,u
pshs y,x
lbsr L00EE
puls y,x
lbsr L00EE
ldd #$0100
ldx #$0000 LSN 0
lbsr L00FD
bcs L01CD
ldx <$16,u
ldy <DD.BSZ,x
beq L01CA No boot file?
sty <$20,s
ldb <DD.BT,x
leau ,x
ldx <DD.BT+1,x
pshs y,x,b
ldd #$0100
os9 F$SRtMem Return memory boot sector
ldd $03,s
os9 F$SRqMem
puls y,x,b
stu <$16,s
stu <$22,s
leau ,s
lbsr L00FD
bcc L01D0
bcs L01CD
L01CA comb
ldb #E$BTyp
L01CD stb <$21,s
L01D0 leas <$20,s
puls pc,u,y,x,b,a
emod
BootEnd equ *