mirror of
https://github.com/A2osX/A2osX.git
synced 2024-05-31 16:41:30 +00:00
Floppy format stuff
This commit is contained in:
parent
e8ba243ccb
commit
019d1e3c0e
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -882,196 +882,37 @@ BS.WriteTBUFAY sta GP.MLIRW.COUNT
|
||||||
|
|
||||||
LA020 rts
|
LA020 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LA021 jsr BS.KW.FRE
|
BS.FRE0 ldx #BSX.Fre0.X
|
||||||
bcs LA020
|
.HS 2C BIT ABS
|
||||||
|
BS.KW.FRE
|
||||||
|
BS.FRE1 ldx #BSX.Fre0.X
|
||||||
|
|
||||||
lda AS.PGRMSTART+1
|
ldy #13
|
||||||
sta BS.TXTTAB+1
|
|
||||||
lda AS.PGRMSTART
|
|
||||||
sta BS.TXTTAB
|
|
||||||
|
|
||||||
lda AS.HIMEM+1
|
.1 lda AS.PGRMSTART,y
|
||||||
sta XBBD8
|
sta ASX.PGRMSTART,y
|
||||||
lda #$03
|
dey
|
||||||
sta XBBD9
|
bpl .1
|
||||||
|
|
||||||
lda AS.STRINGSTART+1
|
jsr BS.ToAUX
|
||||||
sta BS.MEMSIZE+1
|
bcs .9
|
||||||
|
|
||||||
lda #$00
|
pha
|
||||||
sta BS.MEMSIZE
|
phy
|
||||||
bra LA089 Z
|
ldy #13
|
||||||
|
|
||||||
|
.2 lda ASX.PGRMSTART,y
|
||||||
|
sta AS.PGRMSTART,y
|
||||||
|
dey
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
ply
|
||||||
|
pla
|
||||||
|
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.KW.FRE stz BS.TXTTAB
|
* DUPLICATE CODE in BASIC.S.XM.txt
|
||||||
|
|
||||||
lda #$03
|
|
||||||
sta XBBD9
|
|
||||||
lda AS.HIMEM+1
|
|
||||||
sta XBBD8
|
|
||||||
|
|
||||||
lda AS.STRINGSTART+1
|
|
||||||
sta BS.TXTTAB+1
|
|
||||||
sec
|
|
||||||
sbc AS.ARRAYEND+1
|
|
||||||
cmp #$07
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
sbc #$03
|
|
||||||
sta XBBD9
|
|
||||||
|
|
||||||
lda AS.ARRAYEND+1
|
|
||||||
adc #$00
|
|
||||||
sta XBBD8
|
|
||||||
|
|
||||||
lda AS.HIMEM+1
|
|
||||||
sbc AS.STRINGSTART+1
|
|
||||||
adc #$01
|
|
||||||
cmp XBBD9
|
|
||||||
bcs .1
|
|
||||||
|
|
||||||
sta XBBD9
|
|
||||||
|
|
||||||
.1 lda AS.HIMEM+1
|
|
||||||
sta BS.MEMSIZE+1
|
|
||||||
|
|
||||||
lda AS.HIMEM
|
|
||||||
sta BS.MEMSIZE
|
|
||||||
sta AS.STRINGSTART
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LA089 clc
|
|
||||||
beq LA08D
|
|
||||||
|
|
||||||
sec
|
|
||||||
|
|
||||||
LA08D lda BS.MEMSIZE+1
|
|
||||||
sta AS.STRINGSTART+1
|
|
||||||
sbc #$00
|
|
||||||
sta XBBDA
|
|
||||||
adc #$00
|
|
||||||
sta XBBDB
|
|
||||||
lda AS.ARRAYEND+1
|
|
||||||
adc #$01
|
|
||||||
sta XBBDD
|
|
||||||
|
|
||||||
LA0A3 lda AS.VARSTART
|
|
||||||
sbc #$06
|
|
||||||
sta ZP.A2L
|
|
||||||
|
|
||||||
lda AS.VARSTART+1
|
|
||||||
sbc #$00
|
|
||||||
sta ZP.A2H
|
|
||||||
|
|
||||||
lda AS.ARRAYSTART
|
|
||||||
sta XBBDC
|
|
||||||
lda XBBDA
|
|
||||||
cmp BS.TXTTAB+1
|
|
||||||
bcc LA0FA
|
|
||||||
|
|
||||||
sbc XBBD9
|
|
||||||
sta XBBD7
|
|
||||||
|
|
||||||
lda AS.STRINGSTART+1
|
|
||||||
sbc XBBDA
|
|
||||||
sbc XBBD7
|
|
||||||
eor #$FF
|
|
||||||
adc #$02
|
|
||||||
cmp XBBD7
|
|
||||||
bcc LA0D6
|
|
||||||
|
|
||||||
lda XBBD7
|
|
||||||
|
|
||||||
LA0D6 cmp BS.TXTTAB+1
|
|
||||||
bcs LA0E0
|
|
||||||
|
|
||||||
lda BS.TXTTAB+1
|
|
||||||
sbc #$00
|
|
||||||
|
|
||||||
LA0E0 sta XBBDA
|
|
||||||
jsr LA199
|
|
||||||
ldx AS.ARRAYSTART+1
|
|
||||||
jsr LA0FB
|
|
||||||
bcs LA0F8
|
|
||||||
|
|
||||||
jsr LA131
|
|
||||||
lda XBBDA
|
|
||||||
sta XBBDB
|
|
||||||
bcc LA0A3
|
|
||||||
|
|
||||||
LA0F8 lda #BS.E.NOBUFFER
|
|
||||||
LA0FA rts
|
|
||||||
*--------------------------------------
|
|
||||||
LA0FB clc
|
|
||||||
|
|
||||||
LA0FC lda ZP.A2L
|
|
||||||
adc #$07
|
|
||||||
sta ZP.A2L
|
|
||||||
bcc LA106
|
|
||||||
|
|
||||||
inc ZP.A2H
|
|
||||||
|
|
||||||
LA106 eor AS.ARRAYSTART
|
|
||||||
bne LA10E
|
|
||||||
|
|
||||||
cpx ZP.A2H
|
|
||||||
beq LA12F
|
|
||||||
|
|
||||||
LA10E ldy #$00
|
|
||||||
lda (ZP.A2L),y
|
|
||||||
iny
|
|
||||||
eor (ZP.A2L),y
|
|
||||||
bpl LA0FB
|
|
||||||
|
|
||||||
lda (ZP.A2L),y
|
|
||||||
bpl LA0FB
|
|
||||||
|
|
||||||
ldy #$04
|
|
||||||
lda (ZP.A2L),y
|
|
||||||
cmp XBBDA
|
|
||||||
bcc LA0FC
|
|
||||||
|
|
||||||
cmp XBBDB
|
|
||||||
bcs LA0FB
|
|
||||||
|
|
||||||
jsr LA1BC
|
|
||||||
bcc LA0FC
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
LA12F clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
LA131 jsr LA160
|
|
||||||
bcs LA12F
|
|
||||||
|
|
||||||
LA136 ldy #$02
|
|
||||||
lda (ZP.A2L),y
|
|
||||||
cmp XBBDA
|
|
||||||
bcc LA14A
|
|
||||||
|
|
||||||
cmp XBBDB
|
|
||||||
bcs LA14A
|
|
||||||
|
|
||||||
jsr LA1BC
|
|
||||||
bcc LA14B
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
LA14A clc
|
|
||||||
LA14B lda #$03
|
|
||||||
adc ZP.A2L
|
|
||||||
sta ZP.A2L
|
|
||||||
bcc LA155
|
|
||||||
|
|
||||||
inc ZP.A2H
|
|
||||||
|
|
||||||
LA155 cmp XBBDC
|
|
||||||
bne LA136
|
|
||||||
|
|
||||||
cpx ZP.A2H
|
|
||||||
bne LA136
|
|
||||||
|
|
||||||
beq LA131
|
|
||||||
|
|
||||||
LA160 clc
|
LA160 clc
|
||||||
lda XBBDC
|
lda XBBDC
|
||||||
sta ZP.A2L
|
sta ZP.A2L
|
||||||
|
@ -1109,69 +950,6 @@ LA170 ldy #$02
|
||||||
clc
|
clc
|
||||||
LA198 rts
|
LA198 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LA199 lda XBBD7
|
|
||||||
sta ZP.PCH
|
|
||||||
lda XBBD8
|
|
||||||
sta ZP.A1H
|
|
||||||
ldy #$00
|
|
||||||
sty ZP.PCL
|
|
||||||
sty ZP.A1L
|
|
||||||
ldx XBBD9
|
|
||||||
inx
|
|
||||||
|
|
||||||
.1 lda (ZP.PCL),y
|
|
||||||
sta (ZP.A1L),y
|
|
||||||
iny
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
inc ZP.A1H
|
|
||||||
inc ZP.PCH
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
LA1BC cmp XBBD7
|
|
||||||
bcc LA1C8
|
|
||||||
|
|
||||||
sbc XBBD7
|
|
||||||
clc
|
|
||||||
adc XBBD8
|
|
||||||
|
|
||||||
LA1C8 sta ZP.PCH
|
|
||||||
dey
|
|
||||||
lda (ZP.A2L),y
|
|
||||||
sta ZP.PCL
|
|
||||||
dey
|
|
||||||
sec
|
|
||||||
lda AS.STRINGSTART
|
|
||||||
sbc (ZP.A2L),y
|
|
||||||
sta AS.STRINGSTART
|
|
||||||
iny
|
|
||||||
sta (ZP.A2L),y
|
|
||||||
lda AS.STRINGSTART+1
|
|
||||||
sbc #$00
|
|
||||||
sta AS.STRINGSTART+1
|
|
||||||
iny
|
|
||||||
sta (ZP.A2L),y
|
|
||||||
dey
|
|
||||||
dey
|
|
||||||
lda (ZP.A2L),y
|
|
||||||
beq LA1F2
|
|
||||||
|
|
||||||
tay
|
|
||||||
|
|
||||||
LA1EA dey
|
|
||||||
lda (ZP.PCL),y
|
|
||||||
sta (AS.STRINGSTART),y
|
|
||||||
tya
|
|
||||||
bne LA1EA
|
|
||||||
|
|
||||||
LA1F2 clc
|
|
||||||
lda XBBDD
|
|
||||||
sbc AS.STRINGSTART+1
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/basic.fx/basic.s.a
|
SAVE usr/src/basic.fx/basic.s.a
|
||||||
LOAD usr/src/basic.fx/basic.s
|
LOAD usr/src/basic.fx/basic.s
|
||||||
|
|
|
@ -3,7 +3,7 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.GetSysBuf lda #$04
|
BS.GetSysBuf lda #$04
|
||||||
|
|
||||||
LA1FB sta XBBB5
|
BS.GetSysBufA sta XBBB5
|
||||||
jsr BS.KW.FRE
|
jsr BS.KW.FRE
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ LA1FB sta XBBB5
|
||||||
XBBB5 .BS 1
|
XBBB5 .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.FreeSysBuf jsr BS.KW.FRE
|
BS.FreeSysBuf jsr BS.KW.FRE
|
||||||
bcs LA29D
|
bcs .9
|
||||||
|
|
||||||
lda AS.HIMEM+1
|
lda AS.HIMEM+1
|
||||||
sbc #$00
|
sbc #$00
|
||||||
|
@ -86,24 +86,27 @@ BS.FreeSysBuf jsr BS.KW.FRE
|
||||||
|
|
||||||
lda BS.BUFPAGE
|
lda BS.BUFPAGE
|
||||||
cmp AS.HIMEM+1
|
cmp AS.HIMEM+1
|
||||||
beq LA2B7
|
beq .8
|
||||||
|
|
||||||
pha
|
pha
|
||||||
ldx GP.OPENCNT
|
ldx GP.OPENCNT
|
||||||
beq LA29B
|
beq .2
|
||||||
|
|
||||||
lda AS.HIMEM+1
|
lda AS.HIMEM+1
|
||||||
|
|
||||||
LA293 cmp BS.BUFPAGEs-1,x
|
.1 cmp BS.BUFPAGEs-1,x
|
||||||
beq LA29E
|
beq LA29E
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bne LA293
|
bne .1
|
||||||
|
|
||||||
LA29B pla
|
.2 pla
|
||||||
sec
|
sec
|
||||||
LA29D rts
|
.9 rts
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
LA29E pla
|
LA29E pla
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.SetFileBuf sta GP.SBUFADR+1
|
BS.SetFileBuf sta GP.SBUFADR+1
|
||||||
|
@ -114,52 +117,49 @@ BS.SetFileBuf sta GP.SBUFADR+1
|
||||||
sta GP.MLIMRKEOFBUF.REFNUM
|
sta GP.MLIMRKEOFBUF.REFNUM
|
||||||
lda #MLI.C.SETBUF
|
lda #MLI.C.SETBUF
|
||||||
jmp GP.GOSYSTEM
|
jmp GP.GOSYSTEM
|
||||||
|
|
||||||
LA2B7 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.GETBUFR jsr LA1FB
|
BS.GETBUFR jsr BS.GetSysBufA
|
||||||
bcs LA304
|
bcs LA2F6.9
|
||||||
|
|
||||||
pha
|
pha
|
||||||
sbc #$03
|
sbc #$03
|
||||||
sta XBBB8
|
sta XBBB8
|
||||||
pla
|
pla
|
||||||
|
|
||||||
LA2C5 sta GP.SBUFADR+1
|
.1 sta GP.SBUFADR+1
|
||||||
ldx GP.OPENCNT
|
ldx GP.OPENCNT
|
||||||
beq LA2EE
|
beq .4
|
||||||
|
|
||||||
lda XBBB7
|
lda XBBB7
|
||||||
clc
|
clc
|
||||||
adc #$04
|
adc #$04
|
||||||
sta XBBB7
|
sta XBBB7
|
||||||
|
|
||||||
LA2D6 cmp BS.BUFPAGEs-1,x
|
.2 cmp BS.BUFPAGEs-1,x
|
||||||
bne LA2EB
|
bne .3
|
||||||
|
|
||||||
lda GP.SBUFADR+1
|
lda GP.SBUFADR+1
|
||||||
jsr LA356
|
jsr LA356
|
||||||
jsr BS.SetFileBuf
|
jsr BS.SetFileBuf
|
||||||
lda GP.SBUFADR+1
|
lda GP.SBUFADR+1
|
||||||
adc #$04
|
adc #$04
|
||||||
bcc LA2C5
|
bcc .1
|
||||||
|
|
||||||
LA2EB dex
|
.3 dex
|
||||||
bne LA2D6
|
bne .2
|
||||||
|
|
||||||
LA2EE lda GP.SBUFADR+1
|
.4 lda GP.SBUFADR+1
|
||||||
bit GP.EXECACTV
|
bit GP.EXECACTV
|
||||||
bpl LA303
|
bpl LA2F6.8
|
||||||
|
*--------------------------------------
|
||||||
LA2F6 ldx #$08
|
LA2F6 ldx #$08
|
||||||
jsr LA356
|
jsr LA356
|
||||||
jsr BS.SetFileBuf
|
jsr BS.SetFileBuf
|
||||||
lda GP.SBUFADR+1
|
lda GP.SBUFADR+1
|
||||||
adc #$04
|
adc #$04
|
||||||
|
|
||||||
LA303 clc
|
LA2F6.8 clc
|
||||||
LA304 rts
|
LA2F6.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.FREEBUFR lda GP.OPENCNT
|
BS.FREEBUFR lda GP.OPENCNT
|
||||||
asl
|
asl
|
||||||
|
@ -171,21 +171,21 @@ BS.FREEBUFR lda GP.OPENCNT
|
||||||
sta XBBB8
|
sta XBBB8
|
||||||
lda GP.RSHIMEM
|
lda GP.RSHIMEM
|
||||||
cmp AS.HIMEM+1
|
cmp AS.HIMEM+1
|
||||||
beq LA354
|
beq .8
|
||||||
|
|
||||||
sta AS.HIMEM+1
|
sta AS.HIMEM+1
|
||||||
bit GP.EXECACTV
|
bit GP.EXECACTV
|
||||||
bpl LA327
|
bpl .1
|
||||||
|
|
||||||
jsr LA2F6
|
jsr LA2F6
|
||||||
bcc LA345
|
bcc .3
|
||||||
|
|
||||||
LA327 lda XBBB7
|
.1 lda XBBB7
|
||||||
ldx GP.OPENCNT
|
ldx GP.OPENCNT
|
||||||
beq LA351
|
beq .5
|
||||||
|
|
||||||
LA32F cmp BS.BUFPAGEs-1,x
|
.2 cmp BS.BUFPAGEs-1,x
|
||||||
bne LA34E
|
bne .4
|
||||||
|
|
||||||
lda AS.HIMEM+1
|
lda AS.HIMEM+1
|
||||||
jsr LA356
|
jsr LA356
|
||||||
|
@ -195,19 +195,20 @@ LA32F cmp BS.BUFPAGEs-1,x
|
||||||
sbc #$04
|
sbc #$04
|
||||||
sta XBBB7
|
sta XBBB7
|
||||||
|
|
||||||
LA345 lda AS.HIMEM+1
|
.3 lda AS.HIMEM+1
|
||||||
sec
|
sec
|
||||||
sbc #$04
|
sbc #$04
|
||||||
sta AS.HIMEM+1
|
sta AS.HIMEM+1
|
||||||
bcs LA327
|
bcs .1
|
||||||
|
|
||||||
LA34E dex
|
.4 dex
|
||||||
bne LA32F
|
bne .2
|
||||||
|
|
||||||
LA351 jsr BS.KW.FRE
|
.5 jsr BS.KW.FRE
|
||||||
LA354 clc
|
|
||||||
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
LA356 pha
|
LA356 pha
|
||||||
lda XBBB8
|
lda XBBB8
|
||||||
jsr BS.SetFileBuf
|
jsr BS.SetFileBuf
|
||||||
|
@ -242,6 +243,7 @@ BS.MoveMemUp ldy BS.ReqMem
|
||||||
XA386 beq LA38F SELF MODIFIED
|
XA386 beq LA38F SELF MODIFIED
|
||||||
|
|
||||||
LA388 jsr LA39A
|
LA388 jsr LA39A
|
||||||
|
|
||||||
dec ZP.A1H
|
dec ZP.A1H
|
||||||
dec ZP.PCH
|
dec ZP.PCH
|
||||||
|
|
||||||
|
@ -264,63 +266,63 @@ LA3A3 lda AS.VARSTART+1
|
||||||
lda AS.VARSTART
|
lda AS.VARSTART
|
||||||
ldx AS.ARRAYSTART+1
|
ldx AS.ARRAYSTART+1
|
||||||
clc
|
clc
|
||||||
bcc LA3B3
|
bcc .2
|
||||||
|
|
||||||
LA3AE clc
|
.1 clc
|
||||||
lda ZP.A2L
|
lda ZP.A2L
|
||||||
adc #$07
|
adc #$07
|
||||||
|
|
||||||
LA3B3 sta ZP.A2L
|
.2 sta ZP.A2L
|
||||||
bcc LA3B9
|
bcc .3
|
||||||
|
|
||||||
inc ZP.A2H
|
inc ZP.A2H
|
||||||
|
|
||||||
LA3B9 eor AS.ARRAYSTART
|
.3 eor AS.ARRAYSTART
|
||||||
bne LA3BF
|
bne .4
|
||||||
|
|
||||||
cpx ZP.A2H
|
cpx ZP.A2H
|
||||||
|
|
||||||
LA3BF clc
|
.4 clc
|
||||||
beq LA3D6
|
beq .5
|
||||||
|
|
||||||
ldy #$00
|
ldy #$00
|
||||||
lda (ZP.A2L),y
|
lda (ZP.A2L),y
|
||||||
iny
|
iny
|
||||||
eor (ZP.A2L),y
|
eor (ZP.A2L),y
|
||||||
bpl LA3AE
|
bpl .1
|
||||||
|
|
||||||
lda (ZP.A2L),y
|
lda (ZP.A2L),y
|
||||||
bpl LA3AE
|
bpl .1
|
||||||
|
|
||||||
iny
|
iny
|
||||||
jsr LA3FD
|
jsr LA3FD
|
||||||
bra LA3AE
|
bra .1
|
||||||
|
|
||||||
LA3D6 lda ZP.A2L
|
.5 lda ZP.A2L
|
||||||
sta XBBDC
|
sta XBBDC
|
||||||
|
|
||||||
LA3DB clc
|
.6 clc
|
||||||
jsr LA160
|
jsr LA160
|
||||||
bcs LA410
|
bcs LA410
|
||||||
|
|
||||||
LA3E1 ldy #$00
|
.7 ldy #$00
|
||||||
clc
|
clc
|
||||||
jsr LA3FD
|
jsr LA3FD
|
||||||
clc
|
clc
|
||||||
lda #$03
|
lda #$03
|
||||||
adc ZP.A2L
|
adc ZP.A2L
|
||||||
sta ZP.A2L
|
sta ZP.A2L
|
||||||
bcc LA3F2
|
bcc .8
|
||||||
|
|
||||||
inc ZP.A2H
|
inc ZP.A2H
|
||||||
|
|
||||||
LA3F2 cmp XBBDC
|
.8 cmp XBBDC
|
||||||
bne LA3E1
|
bne .7
|
||||||
|
|
||||||
cpx ZP.A2H
|
cpx ZP.A2H
|
||||||
bne LA3E1
|
bne .7
|
||||||
|
|
||||||
beq LA3DB
|
beq .6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LA3FD lda (ZP.A2L),y
|
LA3FD lda (ZP.A2L),y
|
||||||
beq LA410
|
beq LA410
|
||||||
|
@ -337,8 +339,8 @@ LA3FD lda (ZP.A2L),y
|
||||||
|
|
||||||
LA410 rts
|
LA410 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LA411 jsr LA021
|
LA411 jsr BS.FRE0
|
||||||
bcs LA47F
|
bcs .9
|
||||||
|
|
||||||
lda AS.ARRAYEND
|
lda AS.ARRAYEND
|
||||||
sec
|
sec
|
||||||
|
@ -401,7 +403,7 @@ LA411 jsr LA021
|
||||||
sta XBBEC
|
sta XBBEC
|
||||||
|
|
||||||
clc
|
clc
|
||||||
LA47F rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LA480 lda BS.BAS.HDR
|
LA480 lda BS.BAS.HDR
|
||||||
sta BS.ReqMem
|
sta BS.ReqMem
|
||||||
|
@ -442,20 +444,26 @@ LA480 lda BS.BAS.HDR
|
||||||
sec
|
sec
|
||||||
lda AS.HIMEM+1
|
lda AS.HIMEM+1
|
||||||
sbc BS.BAS.HDR+4
|
sbc BS.BAS.HDR+4
|
||||||
beq LA4D0
|
beq .8
|
||||||
|
|
||||||
sta XBBE2
|
sta XBBE2
|
||||||
jsr LA3A3
|
jsr LA3A3
|
||||||
|
|
||||||
LA4D0 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.LINEBUFCLR80 lda #$A0
|
BS.LINEBUFCLR80 lda #$A0
|
||||||
ldx #$4F
|
ldx #$4F
|
||||||
|
|
||||||
LA67E sta IO.LINEBUF+1,x
|
.1 sta IO.LINEBUF+1,x
|
||||||
dex
|
dex
|
||||||
bpl LA67E
|
bpl .1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -491,11 +499,12 @@ LA6BA stz GP.FoundBITS
|
||||||
stz GP.FoundBITS+1
|
stz GP.FoundBITS+1
|
||||||
stz BS.CMDBUF
|
stz BS.CMDBUF
|
||||||
stz MLI.PATHBUF
|
stz MLI.PATHBUF
|
||||||
|
|
||||||
lda GP.VDEFSLT
|
lda GP.VDEFSLT
|
||||||
sta GP.ParamS
|
sta GP.ParamS
|
||||||
lda GP.VDEFDRV
|
lda GP.VDEFDRV
|
||||||
sta GP.ParamD
|
sta GP.ParamD
|
||||||
|
|
||||||
lda AS.HIMEM+1
|
lda AS.HIMEM+1
|
||||||
sta BS.BUFPAGE
|
sta BS.BUFPAGE
|
||||||
|
|
||||||
|
@ -508,13 +517,13 @@ LA6BA stz GP.FoundBITS
|
||||||
beq LA744
|
beq LA744
|
||||||
|
|
||||||
asl
|
asl
|
||||||
bmi LA747
|
bmi LA747 CMDBITS0.SLOT
|
||||||
|
|
||||||
jsr BS.GetKWInCmdBuf
|
jsr BS.GetKWInCmdBuf
|
||||||
php
|
php
|
||||||
pha
|
pha
|
||||||
lda GP.AllowedBITS
|
lda GP.AllowedBITS
|
||||||
bpl LA6F8
|
bpl LA6F8 CMDBITS0.PFIX
|
||||||
|
|
||||||
lda #MLI.C.GETPREFIX
|
lda #MLI.C.GETPREFIX
|
||||||
jsr GP.GOSYSTEM
|
jsr GP.GOSYSTEM
|
||||||
|
@ -529,10 +538,10 @@ LA6F8 pla
|
||||||
|
|
||||||
LA703 cmp #'/'
|
LA703 cmp #'/'
|
||||||
beq LA70B
|
beq LA70B
|
||||||
|
|
||||||
cmp #'.' .. or ../
|
cmp #'.' .. or ../
|
||||||
beq LA70B
|
beq LA70B
|
||||||
|
|
||||||
cmp #'A'
|
cmp #'A'
|
||||||
bcc LA73D
|
bcc LA73D
|
||||||
|
|
||||||
|
@ -564,7 +573,7 @@ LA70B dex
|
||||||
|
|
||||||
lda GP.AllowedBITS
|
lda GP.AllowedBITS
|
||||||
lsr
|
lsr
|
||||||
bcs LA770
|
bcs LA770 CMDBITS0.FN1
|
||||||
|
|
||||||
LA73A jmp BS.SYNERR
|
LA73A jmp BS.SYNERR
|
||||||
|
|
||||||
|
@ -648,7 +657,7 @@ LA7A6 lda GP.ParamS
|
||||||
|
|
||||||
cmp #$03
|
cmp #$03
|
||||||
bcs LA76C
|
bcs LA76C
|
||||||
|
* >DEBUG
|
||||||
lda GP.AllowedBITS
|
lda GP.AllowedBITS
|
||||||
and #CMDBITS0.RRUN+CMDBITS0.FN1
|
and #CMDBITS0.RRUN+CMDBITS0.FN1
|
||||||
lsr
|
lsr
|
||||||
|
@ -669,7 +678,7 @@ LA7C9 bcc LA80B
|
||||||
|
|
||||||
lda GP.FoundBITS
|
lda GP.FoundBITS
|
||||||
lsr
|
lsr
|
||||||
bcs LA7E1
|
bcs LA7E1 CMDBITS0.FN1
|
||||||
|
|
||||||
lda GP.AllowedBITS
|
lda GP.AllowedBITS
|
||||||
and #CMDBITS0.PFIX+CMDBITS0.FNOPT
|
and #CMDBITS0.PFIX+CMDBITS0.FNOPT
|
||||||
|
@ -692,7 +701,7 @@ LA7ED lda GP.FoundBITS+1
|
||||||
|
|
||||||
stz BS.CMDBUF.LEN
|
stz BS.CMDBUF.LEN
|
||||||
stz BS.CMDBUF
|
stz BS.CMDBUF
|
||||||
|
|
||||||
lda #CMDBITS0.FN1
|
lda #CMDBITS0.FN1
|
||||||
tsb GP.FoundBITS
|
tsb GP.FoundBITS
|
||||||
|
|
||||||
|
@ -711,7 +720,7 @@ LA80B lda GP.XCNUM
|
||||||
lda GP.AllowedBITS+1
|
lda GP.AllowedBITS+1
|
||||||
and #CMDBITS1.SD
|
and #CMDBITS1.SD
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
lda GP.FoundBITS
|
lda GP.FoundBITS
|
||||||
lsr
|
lsr
|
||||||
bcc LA844
|
bcc LA844
|
||||||
|
@ -723,7 +732,7 @@ LA80B lda GP.XCNUM
|
||||||
bne LA849
|
bne LA849
|
||||||
|
|
||||||
lda GP.AllowedBITS
|
lda GP.AllowedBITS
|
||||||
and #$08
|
and #CMDBITS0.CRFLG
|
||||||
bne LA844
|
bne LA844
|
||||||
|
|
||||||
lda #BS.E.PATHNFND6
|
lda #BS.E.PATHNFND6
|
||||||
|
@ -945,13 +954,13 @@ LAB63 cmp #$FF
|
||||||
LAB6F pha
|
LAB6F pha
|
||||||
jsr BS.CloseAll
|
jsr BS.CloseAll
|
||||||
jsr LB36B
|
jsr LB36B
|
||||||
|
|
||||||
stz GP.ParamA
|
stz GP.ParamA
|
||||||
|
|
||||||
stz MLI.MEMTABL+20
|
stz MLI.MEMTABL+20
|
||||||
stz MLI.MEMTABL+21
|
stz MLI.MEMTABL+21
|
||||||
stz MLI.MEMTABL+22
|
stz MLI.MEMTABL+22
|
||||||
|
|
||||||
lda #$01
|
lda #$01
|
||||||
sta MLI.MEMTABL+23
|
sta MLI.MEMTABL+23
|
||||||
lda #$20
|
lda #$20
|
||||||
|
@ -976,12 +985,12 @@ LABA6 sec
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.KW.CHAIN jsr LA411
|
BS.KW.CHAIN jsr LA411
|
||||||
lda AS.HIMEM+1
|
lda AS.HIMEM+1
|
||||||
sta BS.AS.HIMEMSave
|
pha
|
||||||
ldx XBBEA
|
ldx XBBEA
|
||||||
dex
|
dex
|
||||||
stx AS.HIMEM+1
|
stx AS.HIMEM+1
|
||||||
jsr BS.LoadBAS
|
jsr BS.LoadBAS
|
||||||
ldx BS.AS.HIMEMSave
|
plx
|
||||||
stx AS.HIMEM+1
|
stx AS.HIMEM+1
|
||||||
bcs BS.LoadBAS0.RTS
|
bcs BS.LoadBAS0.RTS
|
||||||
|
|
||||||
|
@ -1023,7 +1032,7 @@ BS.KW.LOAD jsr BS.LoadBAS0
|
||||||
|
|
||||||
BS.ENTRY jsr AS.CLEAR1
|
BS.ENTRY jsr AS.CLEAR1
|
||||||
jsr BS.SetState0
|
jsr BS.SetState0
|
||||||
|
|
||||||
stz ZP.CH
|
stz ZP.CH
|
||||||
jmp AS.RESTART1
|
jmp AS.RESTART1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -1238,7 +1247,7 @@ BS.KW.RENAME lda GP.FoundBITS
|
||||||
BS.KW.DELETE lda #MLI.C.DESTROY
|
BS.KW.DELETE lda #MLI.C.DESTROY
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
BS.SETPREFIX lda #MLI.C.SETPREFIX
|
BS.SETPREFIX lda #MLI.C.SETPREFIX
|
||||||
|
|
||||||
LAD9E jmp GP.GOSYSTEM
|
LAD9E jmp GP.GOSYSTEM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.KW.LOCK jsr BS.GetFileInfo
|
BS.KW.LOCK jsr BS.GetFileInfo
|
||||||
|
|
|
@ -409,7 +409,7 @@ BS.RAMReset bit GP.CISPARE1
|
||||||
|
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta AUX.RAMSIG
|
sta AUX.RAMSIG
|
||||||
dec
|
dec $FE
|
||||||
sta AUX.RAMSIG+1 Set $E000-$FEFF as BLOCK FREE
|
sta AUX.RAMSIG+1 Set $E000-$FEFF as BLOCK FREE
|
||||||
|
|
||||||
sta IO.CLRWRITEAUX
|
sta IO.CLRWRITEAUX
|
||||||
|
@ -576,7 +576,7 @@ BS.ReadDirEnt lda #$59
|
||||||
lda $27D
|
lda $27D
|
||||||
sta BS.CAT.EPB
|
sta BS.CAT.EPB
|
||||||
|
|
||||||
lda $27C
|
lda $27C
|
||||||
sta BS.CAT.EL
|
sta BS.CAT.EL
|
||||||
sta GP.MLIRW.COUNT
|
sta GP.MLIRW.COUNT
|
||||||
|
|
||||||
|
@ -799,43 +799,44 @@ LB364 lda #$FF
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LB36B lda GP.EXECACTV
|
LB36B lda GP.EXECACTV
|
||||||
bpl LB37B
|
bpl .8
|
||||||
|
|
||||||
sta GP.EXECFILE
|
sta GP.EXECFILE
|
||||||
ldx #$08
|
ldx #$08
|
||||||
lda BS.REFNUMs,x
|
lda BS.REFNUMs,x
|
||||||
jsr BS.CloseA
|
jsr BS.CloseA
|
||||||
|
|
||||||
LB37B rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.KW.VERIFY bcs LB3B7
|
BS.KW.VERIFY bcs LB3B7
|
||||||
|
|
||||||
lda GP.FoundBITS
|
lda GP.FoundBITS
|
||||||
and #CMDBITS1.R
|
and #CMDBITS1.R
|
||||||
bne LB38D
|
bne .8
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
jsr BS.GetMSGY
|
jsr BS.GetMSGY
|
||||||
jsr MON.CROUT
|
jsr MON.CROUT
|
||||||
|
|
||||||
LB38D clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
* lda #$00
|
* lda #$00
|
||||||
* beq LB39F
|
* beq LB39F BS.KW.FLUSH.1
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
BS.KW.FLUSH lda GP.FoundBITS
|
BS.KW.FLUSH lda GP.FoundBITS
|
||||||
and #CMDBITS1.R
|
and #CMDBITS1.R
|
||||||
beq LB39F
|
beq .1
|
||||||
|
|
||||||
jsr BS.CheckFilename
|
jsr BS.CheckFilename
|
||||||
bcs LB3A7
|
bcs .9
|
||||||
|
|
||||||
LB39F sta GP.MLICF.REFNUM
|
.1 sta GP.MLICF.REFNUM
|
||||||
lda #MLI.C.FLUSH
|
lda #MLI.C.FLUSH
|
||||||
jsr GP.GOSYSTEM
|
jsr GP.GOSYSTEM
|
||||||
|
|
||||||
LB3A7 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.KW.OPEN php
|
BS.KW.OPEN php
|
||||||
jsr BS.CheckFilename
|
jsr BS.CheckFilename
|
||||||
|
@ -1584,6 +1585,182 @@ BS.KW.ONLINE jsr MON.CROUT
|
||||||
BS.KW.NOMON clc
|
BS.KW.NOMON clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* FORMAT VOLNAME,Sx,Dy
|
||||||
|
* ,A<HEADCOUNT>,E<TRACKCOUNT>,F<STEPPING>
|
||||||
|
* ,L<CATBLOCK>,B<BLOCK>
|
||||||
|
*
|
||||||
|
* d : 1,2 heads
|
||||||
|
* sss : 4,3,2,1 steppings
|
||||||
|
* => T : dev type, 0 = BLK, 255 = D2
|
||||||
|
* => V : d0000sss
|
||||||
|
*--------------------------------------
|
||||||
|
BS.KW.FORMAT ldx #BSX.FMT.CheckP.X
|
||||||
|
jsr BS.ToAUX
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
bit GP.ParamT
|
||||||
|
bmi .5
|
||||||
|
*--------------------------------------
|
||||||
|
* Format BLK dev
|
||||||
|
*--------------------------------------
|
||||||
|
lda #10
|
||||||
|
sta ZP.BUFPTR+1 fake Buffer for status & format
|
||||||
|
stz ZP.BUFPTR
|
||||||
|
|
||||||
|
lda GP.FoundBITS+1
|
||||||
|
and #CMDBITS1.B
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
jsr .2 A = cmd = 0 = status
|
||||||
|
bcs .19
|
||||||
|
|
||||||
|
stx GP.ParamB
|
||||||
|
sty GP.ParamB+1
|
||||||
|
stz GP.ParamB+2
|
||||||
|
|
||||||
|
.1 lda #3 cmd = 3 = format
|
||||||
|
|
||||||
|
jsr .2
|
||||||
|
|
||||||
|
bcc BS.KW.FORMAT.CAT
|
||||||
|
|
||||||
|
.19 lda #BS.E.IO
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 sta ZP.CMD
|
||||||
|
|
||||||
|
lda BS.WBlock.P.NUM unitnum : DSSS0000
|
||||||
|
sta ZP.UNITNUM
|
||||||
|
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
tax 000DSSS0
|
||||||
|
jmp (MLI.DEVPTRS,x)
|
||||||
|
*--------------------------------------
|
||||||
|
* Format Disk II
|
||||||
|
*--------------------------------------
|
||||||
|
.5 stz GP.ParamB+1 Total Block Count
|
||||||
|
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
bit GP.ParamV
|
||||||
|
bpl .6
|
||||||
|
|
||||||
|
inx 2 heads....
|
||||||
|
|
||||||
|
.6 lda GP.ParamE
|
||||||
|
|
||||||
|
.7 asl
|
||||||
|
rol GP.ParamB+1
|
||||||
|
dex
|
||||||
|
bne .7
|
||||||
|
|
||||||
|
sta GP.ParamB
|
||||||
|
|
||||||
|
ldx #BSX.FMT.D2.X
|
||||||
|
jsr BS.ToAUX
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
bra BS.KW.FORMAT.CAT
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BS.KW.FORMAT.CAT
|
||||||
|
lda #2 512 bytes buffers
|
||||||
|
jsr BS.GETBUFR
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
sta BS.WBlock.P.PTR+1
|
||||||
|
|
||||||
|
ldx GP.ParamV
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
lda #0 BB.ProDOS
|
||||||
|
ldx #BSX.FMT.GetCatBlk.X
|
||||||
|
jsr BS.ToAUX
|
||||||
|
|
||||||
|
jsr BS.WBlock
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldx #BSX.FMT.GetCatBlk.X
|
||||||
|
lda #1 BB.SOS
|
||||||
|
jsr BS.ToAUX
|
||||||
|
|
||||||
|
jsr BS.WBlock
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
bra .11
|
||||||
|
|
||||||
|
.10 ldx #BSX.FMT.GetCatBlk.X
|
||||||
|
lda #2 BB.FX 1/2
|
||||||
|
jsr BS.ToAUX
|
||||||
|
|
||||||
|
jsr BS.WBlock
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldx #BSX.FMT.GetCatBlk.X
|
||||||
|
lda #3 BB.FX 2/2
|
||||||
|
jsr BS.ToAUX
|
||||||
|
|
||||||
|
jsr BS.WBlock
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.11 ldx #BSX.FMT.GetCatBlk.X
|
||||||
|
lda #4 Ist CAT block
|
||||||
|
jsr BS.ToAUX
|
||||||
|
|
||||||
|
jsr BS.WBlock
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.1 ldx #BSX.FMT.GetCatBlk.X
|
||||||
|
lda #5 Next CAT block
|
||||||
|
jsr BS.ToAUX
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
jsr BS.WBlock
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.2 ldx #BSX.FMT.GetCatBlk.X
|
||||||
|
lda #6 BM blocks
|
||||||
|
jsr BS.ToAUX
|
||||||
|
bcs .3
|
||||||
|
|
||||||
|
jsr BS.WBlock
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.3
|
||||||
|
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
.9 php
|
||||||
|
jsr BS.FREEBUFR
|
||||||
|
lda #BS.E.IO
|
||||||
|
plp
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BS.WBlock jsr MLI
|
||||||
|
.DA #MLI.C.WRITEBLOCK
|
||||||
|
.DA BS.WBlock.P
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
inc BS.WBlock.P.BLK
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #BS.E.IO
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BS.WBlock.P .DA #3
|
||||||
|
BS.WBlock.P.NUM .BS 1
|
||||||
|
BS.WBlock.P.PTR .BS 2
|
||||||
|
BS.WBlock.P.BLK .BS 2
|
||||||
|
*--------------------------------------
|
||||||
BS.Expand2.P .DA #1
|
BS.Expand2.P .DA #1
|
||||||
.DA MLI.PATHBUF
|
.DA MLI.PATHBUF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -141,16 +141,13 @@ XBBB8 .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*BS.IVERSION .DA #5
|
*BS.IVERSION .DA #5
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BS.AS.HIMEMSave .BS 1
|
* XBBD6 .BS 1
|
||||||
XBBD7 .BS 1
|
|
||||||
XBBD8 .BS 1
|
|
||||||
|
|
||||||
XBBD9 .DA #4
|
|
||||||
XBBDA .BS 1
|
|
||||||
XBBDB .BS 1
|
|
||||||
XBBDC .BS 1
|
XBBDC .BS 1
|
||||||
XBBDD .BS 1
|
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
BS.TXTTAB .DA $0800
|
BS.TXTTAB .DA $0800
|
||||||
BS.MEMSIZE .DA HIMEM-$400
|
BS.MEMSIZE .DA HIMEM-$400
|
||||||
|
|
||||||
|
@ -191,6 +188,15 @@ BS.CAT.EL .BS 1
|
||||||
BS.CAT.EPB .BS 1
|
BS.CAT.EPB .BS 1
|
||||||
*BS.CAT.FileCnt .BS 2
|
*BS.CAT.FileCnt .BS 2
|
||||||
BS.CAT.EICB .BS 1
|
BS.CAT.EICB .BS 1
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
ASX.PGRMSTART .BS 2
|
||||||
|
ASX.VARSTART .BS 2
|
||||||
|
ASX.ARRAYSTART .BS 2
|
||||||
|
ASX.ARRAYEND .BS 2
|
||||||
|
ASX.STRINGSTART .BS 2
|
||||||
|
ASX.STRINGPTR .BS 2
|
||||||
|
ASX.HIMEM .BS 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
BS.FREESPACE .EQ $BC17-*
|
BS.FREESPACE .EQ $BC17-*
|
||||||
|
|
|
@ -37,26 +37,6 @@ LDR.START1 ldx #$FF
|
||||||
jsr LDR.ShrinkRAM
|
jsr LDR.ShrinkRAM
|
||||||
bcs .3
|
bcs .3
|
||||||
|
|
||||||
stz Ptr1
|
|
||||||
stz Ptr2
|
|
||||||
|
|
||||||
lda /LDR.MAIN.SRC
|
|
||||||
sta Ptr1+1
|
|
||||||
lda /LDR.MAIN.DST
|
|
||||||
sta Ptr2+1
|
|
||||||
|
|
||||||
ldx /$BD00-HIMEM
|
|
||||||
|
|
||||||
jsr LDR.MoveXpages
|
|
||||||
|
|
||||||
lda /LDR.GP.SRC
|
|
||||||
sta Ptr1+1
|
|
||||||
lda /LDR.GP.DST
|
|
||||||
sta Ptr2+1
|
|
||||||
|
|
||||||
ldx #$01
|
|
||||||
jsr LDR.MoveXpages
|
|
||||||
|
|
||||||
lda bRAMFlag
|
lda bRAMFlag
|
||||||
sta GP.CISPARE1
|
sta GP.CISPARE1
|
||||||
|
|
||||||
|
@ -77,20 +57,25 @@ LDR.START1 ldx #$FF
|
||||||
lda #%11000011 pages $B8,$B9,...,$BE,$BF protected
|
lda #%11000011 pages $B8,$B9,...,$BE,$BF protected
|
||||||
sta MLI.MEMTABL+23
|
sta MLI.MEMTABL+23
|
||||||
|
|
||||||
|
ldx #PAKME.MAIN-PAKME.Table
|
||||||
|
ldy #LDR.MAIN.DST
|
||||||
|
lda /LDR.MAIN.DST
|
||||||
|
jsr X.Unpak.XatYA
|
||||||
|
|
||||||
|
ldx #PAKME.GP-PAKME.Table
|
||||||
|
ldy #LDR.GP.DST
|
||||||
|
lda /LDR.GP.DST
|
||||||
|
jsr X.Unpak.XatYA
|
||||||
|
|
||||||
bit IO.RRAMWRAMBNK2
|
bit IO.RRAMWRAMBNK2
|
||||||
bit IO.RRAMWRAMBNK2
|
bit IO.RRAMWRAMBNK2
|
||||||
|
|
||||||
sta IO.SETALTZP
|
sta IO.SETALTZP
|
||||||
|
|
||||||
stz Ptr1
|
ldx #PAKME.AUX-PAKME.Table
|
||||||
stz Ptr2
|
ldy #LDR.AUX.DST
|
||||||
|
|
||||||
lda /LDR.AUX.SRC
|
|
||||||
sta Ptr1+1
|
|
||||||
lda /LDR.AUX.DST
|
lda /LDR.AUX.DST
|
||||||
sta Ptr2+1
|
jsr X.Unpak.XatYA
|
||||||
|
|
||||||
ldx #$10
|
|
||||||
jsr LDR.MoveXpages
|
|
||||||
|
|
||||||
sta IO.CLRALTZP
|
sta IO.CLRALTZP
|
||||||
bit IO.RROMBNK2
|
bit IO.RROMBNK2
|
||||||
|
@ -114,20 +99,8 @@ LDR.START1 ldx #$FF
|
||||||
sta MON.POWERUPBYTE
|
sta MON.POWERUPBYTE
|
||||||
sta MON.POWERUP+1
|
sta MON.POWERUP+1
|
||||||
|
|
||||||
bmi *
|
bra *
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.MoveXpages ldy #0
|
|
||||||
|
|
||||||
.1 lda (Ptr1),y
|
|
||||||
sta (Ptr2),y
|
|
||||||
iny
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
inc Ptr1+1
|
|
||||||
inc Ptr2+1
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
L20D3 rts
|
L20D3 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LDR.CSW cmp #$DD
|
LDR.CSW cmp #$DD
|
||||||
|
@ -368,8 +341,6 @@ LDR.ShrinkRAM stz bRAMFlag
|
||||||
dex
|
dex
|
||||||
bpl .7
|
bpl .7
|
||||||
|
|
||||||
dec bRAMFlag Tell BYE to reset that...
|
|
||||||
|
|
||||||
php
|
php
|
||||||
sei
|
sei
|
||||||
|
|
||||||
|
@ -381,6 +352,8 @@ LDR.ShrinkRAM stz bRAMFlag
|
||||||
sta IO.CLRWRITEAUX
|
sta IO.CLRWRITEAUX
|
||||||
|
|
||||||
plp
|
plp
|
||||||
|
|
||||||
|
dec bRAMFlag Tell BYE to reset that...
|
||||||
|
|
||||||
LDR.GFInfoRAM ldy #LDR.RAM
|
LDR.GFInfoRAM ldy #LDR.RAM
|
||||||
lda /LDR.RAM
|
lda /LDR.RAM
|
||||||
|
@ -448,7 +421,6 @@ LDR.COPYRIGHT.L .EQ *-LDR.COPYRIGHT
|
||||||
.LIST ON
|
.LIST ON
|
||||||
LDR.SIZE .EQ *-LDR.START
|
LDR.SIZE .EQ *-LDR.START
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.BS $2400-*
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/basic.fx/basic.s.ldr
|
SAVE usr/src/basic.fx/basic.s.ldr
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPXPtr1 .EQ 0
|
|
||||||
ZPXPtr2 .EQ 2
|
|
||||||
*--------------------------------------
|
|
||||||
BSX.JMPX jmp (BSX.JMP,x)
|
BSX.JMPX jmp (BSX.JMP,x)
|
||||||
|
|
||||||
BSX.JMP
|
BSX.JMP
|
||||||
|
@ -25,8 +22,20 @@ BSX.MkCatLineF.X .EQ *-BSX.JMP
|
||||||
.DA BSX.MkCatLineF
|
.DA BSX.MkCatLineF
|
||||||
BSX.Online.X .EQ *-BSX.JMP
|
BSX.Online.X .EQ *-BSX.JMP
|
||||||
.DA BSX.Online
|
.DA BSX.Online
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.FMT.CheckP.X .EQ *-BSX.JMP
|
||||||
|
.DA BSX.FMT.CheckP
|
||||||
|
BSX.FMT.D2.X .EQ *-BSX.JMP
|
||||||
|
.DA BSX.FMT.D2
|
||||||
|
BSX.FMT.GetCatBlk.X .EQ *-BSX.JMP
|
||||||
|
.DA BSX.FMT.GetCatBlk
|
||||||
|
*--------------------------------------
|
||||||
BSX.Mem.X .EQ *-BSX.JMP
|
BSX.Mem.X .EQ *-BSX.JMP
|
||||||
.DA BSX.Mem
|
.DA BSX.Mem
|
||||||
|
BSX.Fre0.X .EQ *-BSX.JMP
|
||||||
|
.DA BSX.Fre0
|
||||||
|
BSX.Fre1.X .EQ *-BSX.JMP
|
||||||
|
.DA BSX.Fre1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BSX.CheckOpt jsr BS.TMPBUF3Reset
|
BSX.CheckOpt jsr BS.TMPBUF3Reset
|
||||||
|
|
||||||
|
@ -418,7 +427,7 @@ BSX.IsIntCmd lda #BSX.IntCmds
|
||||||
lda /BSX.IntCmds
|
lda /BSX.IntCmds
|
||||||
sta ZPXPtr1+1
|
sta ZPXPtr1+1
|
||||||
|
|
||||||
ldx #36
|
ldx #37
|
||||||
stx GP.XCNUM
|
stx GP.XCNUM
|
||||||
|
|
||||||
.1 ldy #$ff
|
.1 ldy #$ff
|
||||||
|
@ -472,7 +481,8 @@ BSX.IsIntCmd lda #BSX.IntCmds
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BSX.IntCmds .AT "CD"
|
BSX.IntCmds .AT "FORMAT"
|
||||||
|
.AT "CD"
|
||||||
.AT "ONLINE"
|
.AT "ONLINE"
|
||||||
.AT "MEM"
|
.AT "MEM"
|
||||||
.AT "MTR"
|
.AT "MTR"
|
||||||
|
@ -545,6 +555,9 @@ BSX.KW.PBITS .DA $8040 IN
|
||||||
.DA $0000 MEM
|
.DA $0000 MEM
|
||||||
.DA $0000 ONLINE
|
.DA $0000 ONLINE
|
||||||
.DA $0491 CD
|
.DA $0491 CD
|
||||||
|
|
||||||
|
.DA #$18 FORMAT
|
||||||
|
.DA #$F6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BSX.KW.JMP .DA BS.KW.EXTERNAL 0
|
BSX.KW.JMP .DA BS.KW.EXTERNAL 0
|
||||||
.DA BS.KW.IN 1
|
.DA BS.KW.IN 1
|
||||||
|
@ -583,6 +596,7 @@ BSX.KW.JMP .DA BS.KW.EXTERNAL 0
|
||||||
.DA BS.KW.MEM 34
|
.DA BS.KW.MEM 34
|
||||||
.DA BS.KW.ONLINE 35
|
.DA BS.KW.ONLINE 35
|
||||||
.DA BS.KW.PREFIX 36 (CD)
|
.DA BS.KW.PREFIX 36 (CD)
|
||||||
|
.DA BS.KW.FORMAT 37
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BSX.GetErrA tax
|
BSX.GetErrA tax
|
||||||
ldy BSX.MSG.IDX-2,x
|
ldy BSX.MSG.IDX-2,x
|
||||||
|
|
677
BASIC.FX/BASIC.S.XF.txt
Normal file
677
BASIC.FX/BASIC.S.XF.txt
Normal file
|
@ -0,0 +1,677 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.HeadSelect asl A = 0/2
|
||||||
|
|
||||||
|
ora BSX.Slotn0
|
||||||
|
tax x=n0/n2
|
||||||
|
|
||||||
|
lda IO.D2.Ph0On,x
|
||||||
|
lda IO.D2.Ph0On+4,x
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
jsr BSX.Wait100usecA
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x
|
||||||
|
lda IO.D2.Ph0Off+4,x
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.Recalibrate lda #168
|
||||||
|
|
||||||
|
ldy BSX.Slotn0
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
|
||||||
|
lda #IO.D2.SeekTimeR
|
||||||
|
jsr BSX.Wait100usecA
|
||||||
|
|
||||||
|
.1 dec
|
||||||
|
dec
|
||||||
|
|
||||||
|
pha
|
||||||
|
|
||||||
|
and #6
|
||||||
|
ora BSX.Slotn0
|
||||||
|
phy
|
||||||
|
plx
|
||||||
|
tay
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
|
||||||
|
lda #IO.D2.SeekTimeR
|
||||||
|
jsr BSX.Wait100usecA
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
|
lda #IO.D2.SeekTimeR
|
||||||
|
jsr BSX.Wait100usecA
|
||||||
|
|
||||||
|
pla
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
jsr BSX.Wait25600usec
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,y
|
||||||
|
|
||||||
|
jmp BSX.Wait25600usec
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.MoveHead sta BSX.TargetQTrack
|
||||||
|
|
||||||
|
lda BSX.CurrentQTrack
|
||||||
|
|
||||||
|
bit #1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
jsr BSX.SeekPhOnY we are on 0/4 or 2/4 track
|
||||||
|
bra .9 no wait, next operation will be phy/plx/Ph0On,y
|
||||||
|
|
||||||
|
.1 cmp BSX.TargetQTrack we are on 1/4 or 3/4
|
||||||
|
bcs .2 if CS, C > T, must move out
|
||||||
|
|
||||||
|
inc CC: C < T, ON next PH
|
||||||
|
|
||||||
|
.HS B0 BCS
|
||||||
|
|
||||||
|
.2 dec CS: C > T, ON prev PH
|
||||||
|
|
||||||
|
sta BSX.CurrentQTrack
|
||||||
|
|
||||||
|
bra .6 Ph ON to go to 0/4 or 2/4, then wait
|
||||||
|
*--------------------------------------
|
||||||
|
.3 bcs .4 if CS, C > T, must move out
|
||||||
|
|
||||||
|
inc CC: C < T, ON next PH
|
||||||
|
|
||||||
|
.HS B0 BCS
|
||||||
|
|
||||||
|
.4 dec CS: C > T, ON prev PH
|
||||||
|
|
||||||
|
sta BSX.CurrentQTrack
|
||||||
|
|
||||||
|
bit #1
|
||||||
|
bne .5
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x we must go to 0/4 or 2/4 : Off Prev Ph
|
||||||
|
bra .8 go wait....
|
||||||
|
|
||||||
|
.5 phy we must go on 1/4 or 3/4
|
||||||
|
plx Y already ON, -> X for Ph0Off,x
|
||||||
|
|
||||||
|
bcs .6 if CS, C > T, must move out
|
||||||
|
|
||||||
|
inc CC: C < T, ON next PH
|
||||||
|
|
||||||
|
.6 jsr BSX.SeekPhOnY now X and Y on
|
||||||
|
|
||||||
|
.8 lda #IO.D2.SeekTimeF
|
||||||
|
|
||||||
|
jsr BSX.Wait100usecA ...wait...
|
||||||
|
|
||||||
|
.9 lda BSX.CurrentQTrack
|
||||||
|
cmp BSX.TargetQTrack
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
lsr CS if X,Y on
|
||||||
|
|
||||||
|
jsr BSX.Wait25600usec
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,y
|
||||||
|
bcc .90
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
|
.90 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.SeekPhOnY and #6
|
||||||
|
ora BSX.Slotn0
|
||||||
|
tay
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.Wait25600usec
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
BSX.Wait100usecA
|
||||||
|
phx
|
||||||
|
|
||||||
|
.1 ldx #20 (2)
|
||||||
|
|
||||||
|
.2 dex (2)
|
||||||
|
bne .2 (3)
|
||||||
|
|
||||||
|
dec (2)
|
||||||
|
bne .1 (3)
|
||||||
|
|
||||||
|
plx
|
||||||
|
|
||||||
|
rts (6)
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.FMT.CheckP lda GP.ParamS
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
pha
|
||||||
|
lda GP.ParamD
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
pla
|
||||||
|
ror
|
||||||
|
sta BS.WBlock.P.NUM unitnum : DSSS0000
|
||||||
|
|
||||||
|
stz BS.WBlock.P.BLK
|
||||||
|
|
||||||
|
stz GP.ParamV Standard BB
|
||||||
|
|
||||||
|
stz GP.ParamT BLK/DiskII flag
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
sta GP.ParamA default Head Count
|
||||||
|
|
||||||
|
lda #4
|
||||||
|
sta GP.ParamL default Cat Block Count
|
||||||
|
|
||||||
|
lda GP.FoundBITS+1
|
||||||
|
bit #CMDBITS1.L
|
||||||
|
beq .10
|
||||||
|
|
||||||
|
lda GP.ParamL+1
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
lda GP.ParamL
|
||||||
|
bne .11
|
||||||
|
|
||||||
|
.9 lda #BS.E.RANGE
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
.10 lda #4
|
||||||
|
sta GP.ParamL Cat Block Count
|
||||||
|
|
||||||
|
.11 lda GP.ParamS
|
||||||
|
|
||||||
|
ora #$C0 make Cn
|
||||||
|
sta ZPXPtr1+1
|
||||||
|
stz ZPXPtr1
|
||||||
|
|
||||||
|
ldx #3 4 bytes to check
|
||||||
|
|
||||||
|
.1 ldy BSX.DiskII.OFS,x
|
||||||
|
|
||||||
|
.2 lda (ZPXPtr1),y
|
||||||
|
eor BSX.DiskII.SIG,x
|
||||||
|
bne BSX.FMT.CheckBLK
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
dec GP.ParamT
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.FMT.CheckD2 lda GP.FoundBITS+1
|
||||||
|
bit #CMDBITS1.B
|
||||||
|
bne .99 not allowed for D2
|
||||||
|
|
||||||
|
bit #CMDBITS1.A
|
||||||
|
beq .10
|
||||||
|
|
||||||
|
lda GP.ParamA+1
|
||||||
|
bne .98
|
||||||
|
|
||||||
|
lda GP.ParamA
|
||||||
|
beq .98
|
||||||
|
|
||||||
|
cmp #3
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
lsr
|
||||||
|
lsr CS if 2 heads
|
||||||
|
ror GP.ParamV => V : d0000sss
|
||||||
|
|
||||||
|
lda GP.FoundBITS+1
|
||||||
|
|
||||||
|
.10 bit #CMDBITS1.E
|
||||||
|
beq .19
|
||||||
|
|
||||||
|
lda GP.ParamE+1
|
||||||
|
bne .98
|
||||||
|
|
||||||
|
bra .20
|
||||||
|
|
||||||
|
.19 lda #35
|
||||||
|
sta GP.ParamE
|
||||||
|
|
||||||
|
.20 lda GP.FoundBITS+1
|
||||||
|
bit #CMDBITS1.F
|
||||||
|
beq .29
|
||||||
|
|
||||||
|
lda GP.ParamF+1
|
||||||
|
bne .98
|
||||||
|
|
||||||
|
lda GP.ParamF
|
||||||
|
beq .98
|
||||||
|
|
||||||
|
cmp #5
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
tsb GP.ParamV => V : d0000sss
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.29 lda #4
|
||||||
|
sta GP.ParamF Stepping
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.98 lda #BS.E.RANGE
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
.99 lda #BS.E.INVOPT
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.FMT.CheckBLK
|
||||||
|
lda GP.FoundBITS+1
|
||||||
|
bit #CMDBITS1.A+CMDBITS1.E+CMDBITS1.F
|
||||||
|
bne .99 not allowed for BLK dev
|
||||||
|
|
||||||
|
bit #CMDBITS1.B
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
lda GP.ParamB+2
|
||||||
|
bne .98
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.98 lda #BS.E.RANGE
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
.99 lda #BS.E.INVOPT
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.DiskII.OFS .HS 010305FF
|
||||||
|
BSX.DiskII.SIG .HS 20000300
|
||||||
|
*--------------------------------------
|
||||||
|
* GP.ParamS : Slot (1/7)
|
||||||
|
* GP.ParamD : Drive (1/2)
|
||||||
|
* GP.ParamA : Head count (1/2)
|
||||||
|
* GP.ParamE : Track count (0,...)
|
||||||
|
* GP.ParamF : Stepping (1..4)
|
||||||
|
* GP.ParamV : VolNum (0..255)
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.FMT.D2 lda GP.ParamS
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
sta BSX.Slotn0
|
||||||
|
tax
|
||||||
|
|
||||||
|
* clc
|
||||||
|
adc GP.ParamD
|
||||||
|
tay
|
||||||
|
lda IO.D2.DrvSel1-1,y
|
||||||
|
lda IO.D2.DrvOn,x
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
ldy #6
|
||||||
|
|
||||||
|
.11 jsr BSX.Wait100usecA
|
||||||
|
dey
|
||||||
|
bne .11
|
||||||
|
|
||||||
|
jsr BSX.Recalibrate
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
jsr BSX.HeadSelect
|
||||||
|
|
||||||
|
lda GP.ParamV
|
||||||
|
sta X.TRKFMT.VolNum
|
||||||
|
|
||||||
|
stz X.TRKFMT.TrkNum
|
||||||
|
stz BSX.CurrentQTrack
|
||||||
|
|
||||||
|
.1 ldx BSX.Slotn0
|
||||||
|
lda IO.D2.ReadProt,x test for write protected
|
||||||
|
lda IO.D2.ReadMode,x
|
||||||
|
asl
|
||||||
|
lda #BS.E.WPROT
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
php
|
||||||
|
sei
|
||||||
|
jsr X.TRKFMT
|
||||||
|
plp
|
||||||
|
|
||||||
|
lda GP.ParamA head count
|
||||||
|
dec
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
jsr BSX.HeadSelect
|
||||||
|
|
||||||
|
inc X.TRKFMT.TrkNum
|
||||||
|
|
||||||
|
php
|
||||||
|
sei
|
||||||
|
jsr X.TRKFMT
|
||||||
|
plp
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
jsr BSX.HeadSelect
|
||||||
|
|
||||||
|
.2 dec GP.ParamE track count
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
inc X.TRKFMT.TrkNum
|
||||||
|
|
||||||
|
lda BSX.CurrentQTrack
|
||||||
|
clc
|
||||||
|
adc GP.ParamF stepping
|
||||||
|
jsr BSX.MoveHead
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 lda #0
|
||||||
|
jsr BSX.MoveHead
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
.9 bit IO.D2.DrvOff,x
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.Slotn0 .BS 1
|
||||||
|
BSX.CurrentQTrack .BS 1
|
||||||
|
BSX.TargetQTrack .BS 1
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.FMT.GetCatBlk
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
jmp (.1,x)
|
||||||
|
|
||||||
|
.1 .DA BSX.GetCatBlk.PRODOS
|
||||||
|
.DA BSX.GetCatBlk.SOS
|
||||||
|
.DA BSX.GetCatBlk.FX1
|
||||||
|
.DA BSX.GetCatBlk.FX2
|
||||||
|
.DA BSX.GetCatBlk.1ST
|
||||||
|
.DA BSX.GetCatBlk.NEXT
|
||||||
|
.DA BSX.GetCatBlk.BM
|
||||||
|
|
||||||
|
BSX.GetCatBlk.PRODOS
|
||||||
|
lda /BB.PRODOS
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
BSX.GetCatBlk.SOS
|
||||||
|
lda /BB.SOS
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
BSX.GetCatBlk.FX1
|
||||||
|
lda /BB.FX2
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
BSX.GetCatBlk.FX2
|
||||||
|
lda /BB.FX2+512
|
||||||
|
|
||||||
|
sta ZPXPtr1+1
|
||||||
|
stz ZPXPtr1
|
||||||
|
|
||||||
|
lda BS.WBlock.P.PTR+1
|
||||||
|
sta ZPXPtr2+1
|
||||||
|
stz ZPXPtr2
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
ldx #2
|
||||||
|
|
||||||
|
.1 lda (ZPXPtr1),y
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc ZPXPtr1+1
|
||||||
|
inc ZPXPtr2+1
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.GetCatBlk.1ST
|
||||||
|
jsr BSX.GetCatBlk.Size
|
||||||
|
jsr BSX.GetCatBlk.CLR
|
||||||
|
|
||||||
|
lda BS.WBlock.P.PTR+1
|
||||||
|
sta ZPXPtr2+1
|
||||||
|
|
||||||
|
lda GP.ParamL cat blocks
|
||||||
|
dec
|
||||||
|
sta BSX.GetCatBlk.CNT
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
lda #3
|
||||||
|
sta BSX.GetCatBlk.IDX
|
||||||
|
|
||||||
|
ldy #$02 Next Cat Block = 3
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
|
||||||
|
.1
|
||||||
|
* lda BS.CMDBUF.LEN
|
||||||
|
* and #$F0
|
||||||
|
* bne .9
|
||||||
|
|
||||||
|
* lda BS.CMDBUF.LEN
|
||||||
|
|
||||||
|
lda #$F7 BLANK+s+d
|
||||||
|
|
||||||
|
ldy #$04 storage_type+filelen
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.2
|
||||||
|
* lda BS.CMDBUF,x
|
||||||
|
* jsr BSX.ToUpper
|
||||||
|
|
||||||
|
lda BSX.GetCatBlk.BLANK,x
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
* cpx BS.CMDBUF.LEN
|
||||||
|
cpx #5
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
lda GP.ParamS
|
||||||
|
ora #$30
|
||||||
|
iny
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
lda GP.ParamD
|
||||||
|
ora #$30
|
||||||
|
iny
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
|
||||||
|
ldy #$1C+3 date_time
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.3 lda MLI.DATETIME,x
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .3
|
||||||
|
|
||||||
|
ldy #$22 access
|
||||||
|
lda #$C3
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
|
||||||
|
iny entry_length
|
||||||
|
lda #$27
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
|
||||||
|
iny entries_per_block
|
||||||
|
lda #$0D
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
|
||||||
|
ldy #$27 bit_map_pointer
|
||||||
|
|
||||||
|
lda GP.ParamL
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
|
||||||
|
ldy #$29 total_blocks
|
||||||
|
|
||||||
|
lda GP.ParamB
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
eor #$ff
|
||||||
|
sta BSX.GetCatBlk.nCnt
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda GP.ParamB+1
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
eor #$ff
|
||||||
|
sta BSX.GetCatBlk.nCnt+1
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #BS.E.INVOPT
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.GetCatBlk.NEXT
|
||||||
|
sec
|
||||||
|
dec BSX.GetCatBlk.CNT
|
||||||
|
bmi .9
|
||||||
|
|
||||||
|
jsr BSX.GetCatBlk.CLR
|
||||||
|
|
||||||
|
lda BSX.GetCatBlk.IDX
|
||||||
|
dec
|
||||||
|
sta (ZPXPtr2) previous block#
|
||||||
|
|
||||||
|
ldy BSX.GetCatBlk.CNT
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
inc
|
||||||
|
inc
|
||||||
|
sta BSX.GetCatBlk.IDX
|
||||||
|
|
||||||
|
ldy #2 next block#
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
|
||||||
|
.1 clc
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.GetCatBlk.BM
|
||||||
|
sec
|
||||||
|
dec BSX.GetCatBlk.BMCNT
|
||||||
|
bmi .9
|
||||||
|
|
||||||
|
jsr BSX.GetCatBlk.CLR
|
||||||
|
|
||||||
|
* ldy #0
|
||||||
|
ldx #2
|
||||||
|
|
||||||
|
lda BSX.GetCatBlk.UB
|
||||||
|
beq .4
|
||||||
|
|
||||||
|
.1 lda #%10000000
|
||||||
|
|
||||||
|
.2 dec BSX.GetCatBlk.UB
|
||||||
|
bmi .5
|
||||||
|
|
||||||
|
inc BSX.GetCatBlk.nCnt
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
inc BSX.GetCatBlk.nCnt+1
|
||||||
|
|
||||||
|
.3 lsr
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
iny
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.4 lda #%10000000
|
||||||
|
|
||||||
|
.5 inc BSX.GetCatBlk.nCnt
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
inc BSX.GetCatBlk.nCnt+1
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.6 pha
|
||||||
|
eor (ZPXPtr2),y
|
||||||
|
sta (ZPXPtr2),y
|
||||||
|
pla
|
||||||
|
lsr
|
||||||
|
bne .5
|
||||||
|
|
||||||
|
iny
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
inc ZPXPtr2+1
|
||||||
|
dex
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.GetCatBlk.Size
|
||||||
|
clc
|
||||||
|
lda GP.ParamB total blocks
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
.1 lda GP.ParamB+1
|
||||||
|
bit #$0f
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
.2 php
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
plp
|
||||||
|
adc #0
|
||||||
|
sta BSX.GetCatBlk.BMCNT
|
||||||
|
|
||||||
|
inc +1 (ProDOS)
|
||||||
|
inc +1 (SOS)
|
||||||
|
adc GP.ParamL +x (cat blocks)
|
||||||
|
sta BSX.GetCatBlk.UB
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.GetCatBlk.CLR
|
||||||
|
lda BS.WBlock.P.PTR+1
|
||||||
|
sta ZPXPtr2+1
|
||||||
|
pha
|
||||||
|
stz ZPXPtr2
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
tay
|
||||||
|
|
||||||
|
ldx #2
|
||||||
|
|
||||||
|
.1 sta (ZPXPtr2),y
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc ZPXPtr2+1
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
pla
|
||||||
|
sta ZPXPtr2+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.GetCatBlk.BLANK .AS "BLANK"
|
||||||
|
BSX.GetCatBlk.BMCNT .BS 1
|
||||||
|
BSX.GetCatBlk.UB .BS 1
|
||||||
|
BSX.GetCatBlk.CNT .BS 1
|
||||||
|
BSX.GetCatBlk.IDX .BS 1
|
||||||
|
BSX.GetCatBlk.nCnt .BS 2
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/basic.fx/basic.s.xf
|
||||||
|
LOAD usr/src/basic.fx/basic.s
|
||||||
|
ASM
|
313
BASIC.FX/BASIC.S.XM.txt
Normal file
313
BASIC.FX/BASIC.S.XM.txt
Normal file
|
@ -0,0 +1,313 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
XBBD7 .BS 1
|
||||||
|
XBBD8 .BS 1
|
||||||
|
|
||||||
|
XBBD9 .BS 1 .DA #4 ????
|
||||||
|
XBBDA .BS 1
|
||||||
|
XBBDB .BS 1
|
||||||
|
XBBDD .BS 1
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.FRE0 jsr BSX.FRE1
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda ASX.PGRMSTART+1
|
||||||
|
sta BS.TXTTAB+1
|
||||||
|
lda ASX.PGRMSTART
|
||||||
|
sta BS.TXTTAB
|
||||||
|
|
||||||
|
lda ASX.HIMEM+1
|
||||||
|
sta XBBD8
|
||||||
|
lda #$03
|
||||||
|
sta XBBD9
|
||||||
|
|
||||||
|
lda ASX.STRINGSTART+1
|
||||||
|
sta BS.MEMSIZE+1
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta BS.MEMSIZE
|
||||||
|
bra BSX.FRE2 Z
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.FRE1 stz BS.TXTTAB
|
||||||
|
|
||||||
|
lda ASX.HIMEM+1
|
||||||
|
sta XBBD8
|
||||||
|
lda #$03
|
||||||
|
sta XBBD9
|
||||||
|
|
||||||
|
lda ASX.STRINGSTART+1
|
||||||
|
sta BS.TXTTAB+1
|
||||||
|
sec
|
||||||
|
sbc ASX.ARRAYEND+1
|
||||||
|
cmp #$07
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
sbc #$03
|
||||||
|
sta XBBD9
|
||||||
|
|
||||||
|
lda ASX.ARRAYEND+1
|
||||||
|
adc #$00
|
||||||
|
sta XBBD8
|
||||||
|
|
||||||
|
lda ASX.HIMEM+1
|
||||||
|
sbc ASX.STRINGSTART+1
|
||||||
|
adc #$01
|
||||||
|
cmp XBBD9
|
||||||
|
bcs .1
|
||||||
|
|
||||||
|
sta XBBD9
|
||||||
|
|
||||||
|
.1 lda ASX.HIMEM+1
|
||||||
|
sta BS.MEMSIZE+1
|
||||||
|
|
||||||
|
lda ASX.HIMEM
|
||||||
|
sta BS.MEMSIZE
|
||||||
|
sta ASX.STRINGSTART
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.FRE2 clc
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
.1 lda BS.MEMSIZE+1
|
||||||
|
sta ASX.STRINGSTART+1
|
||||||
|
sbc #$00
|
||||||
|
sta XBBDA
|
||||||
|
adc #$00
|
||||||
|
sta XBBDB
|
||||||
|
lda ASX.ARRAYEND+1
|
||||||
|
adc #$01
|
||||||
|
sta XBBDD
|
||||||
|
|
||||||
|
.2 lda ASX.VARSTART
|
||||||
|
sbc #$06
|
||||||
|
sta ZP.A2L
|
||||||
|
|
||||||
|
lda ASX.VARSTART+1
|
||||||
|
sbc #$00
|
||||||
|
sta ZP.A2H
|
||||||
|
|
||||||
|
lda ASX.ARRAYSTART
|
||||||
|
sta XBBDC
|
||||||
|
lda XBBDA
|
||||||
|
cmp BS.TXTTAB+1
|
||||||
|
bcc .9
|
||||||
|
|
||||||
|
sbc XBBD9
|
||||||
|
sta XBBD7
|
||||||
|
|
||||||
|
lda ASX.STRINGSTART+1
|
||||||
|
sbc XBBDA
|
||||||
|
sbc XBBD7
|
||||||
|
eor #$FF
|
||||||
|
adc #$02
|
||||||
|
cmp XBBD7
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
lda XBBD7
|
||||||
|
|
||||||
|
.3 cmp BS.TXTTAB+1
|
||||||
|
bcs .4
|
||||||
|
|
||||||
|
lda BS.TXTTAB+1
|
||||||
|
sbc #$00
|
||||||
|
|
||||||
|
.4 sta XBBDA
|
||||||
|
jsr BSX.LA199
|
||||||
|
ldx ASX.ARRAYSTART+1
|
||||||
|
jsr BSX.LA0FB
|
||||||
|
bcs .5
|
||||||
|
|
||||||
|
jsr BSX.LA131
|
||||||
|
lda XBBDA
|
||||||
|
sta XBBDB
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
.5 lda #BS.E.NOBUFFER
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.LA0FB clc
|
||||||
|
|
||||||
|
.1 lda ZP.A2L
|
||||||
|
adc #$07
|
||||||
|
sta ZP.A2L
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
inc ZP.A2H
|
||||||
|
|
||||||
|
.2 eor ASX.ARRAYSTART
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
cpx ZP.A2H
|
||||||
|
beq BSX.LA12F
|
||||||
|
|
||||||
|
.3 ldy #$00
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
iny
|
||||||
|
eor (ZP.A2L),y
|
||||||
|
bpl BSX.LA0FB
|
||||||
|
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
bpl BSX.LA0FB
|
||||||
|
|
||||||
|
ldy #$04
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
cmp XBBDA
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
cmp XBBDB
|
||||||
|
bcs BSX.LA0FB
|
||||||
|
|
||||||
|
jsr BSX.LA1BC
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
BSX.LA12F clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.LA131 jsr BSX.LA160
|
||||||
|
bcs BSX.LA12F
|
||||||
|
|
||||||
|
.1 ldy #$02
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
cmp XBBDA
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
cmp XBBDB
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
jsr BSX.LA1BC
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 clc
|
||||||
|
|
||||||
|
.3 lda #$03
|
||||||
|
adc ZP.A2L
|
||||||
|
sta ZP.A2L
|
||||||
|
bcc .4
|
||||||
|
|
||||||
|
inc ZP.A2H
|
||||||
|
|
||||||
|
.4 cmp XBBDC
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
cpx ZP.A2H
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
beq BSX.LA131
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.LA160 clc
|
||||||
|
lda XBBDC
|
||||||
|
sta ZP.A2L
|
||||||
|
stx ZP.A2H
|
||||||
|
eor ASX.ARRAYEND
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
cpx ASX.ARRAYEND+1
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
.1 ldy #$02
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
adc ZP.A2L
|
||||||
|
sta XBBDC
|
||||||
|
iny
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
adc ZP.A2H
|
||||||
|
tax
|
||||||
|
ldy #$00
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
iny
|
||||||
|
eor (ZP.A2L),y
|
||||||
|
bpl BSX.LA160
|
||||||
|
|
||||||
|
ldy #$04
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
asl
|
||||||
|
adc #$05
|
||||||
|
adc ZP.A2L
|
||||||
|
sta ZP.A2L
|
||||||
|
bcc .9
|
||||||
|
|
||||||
|
inc ZP.A2H
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.LA199 lda XBBD7
|
||||||
|
sta ZP.PCH
|
||||||
|
lda XBBD8
|
||||||
|
sta ZP.A1H
|
||||||
|
ldy #$00
|
||||||
|
sty ZP.PCL
|
||||||
|
sty ZP.A1L
|
||||||
|
ldx XBBD9
|
||||||
|
inx
|
||||||
|
|
||||||
|
.1 lda (ZP.PCL),y
|
||||||
|
sta (ZP.A1L),y
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc ZP.A1H
|
||||||
|
inc ZP.PCH
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BSX.LA1BC cmp XBBD7
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
sbc XBBD7
|
||||||
|
clc
|
||||||
|
adc XBBD8
|
||||||
|
|
||||||
|
.1 sta ZP.PCH
|
||||||
|
dey
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
sta ZP.PCL
|
||||||
|
dey
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda ASX.STRINGSTART
|
||||||
|
sbc (ZP.A2L),y
|
||||||
|
sta ASX.STRINGSTART
|
||||||
|
sta .3+1
|
||||||
|
iny
|
||||||
|
sta (ZP.A2L),y
|
||||||
|
|
||||||
|
lda ASX.STRINGSTART+1
|
||||||
|
sbc #$00
|
||||||
|
sta ASX.STRINGSTART+1
|
||||||
|
sta .3+2
|
||||||
|
iny
|
||||||
|
sta (ZP.A2L),y
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
lda (ZP.A2L),y
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
tay
|
||||||
|
|
||||||
|
.2 dey
|
||||||
|
lda (ZP.PCL),y
|
||||||
|
.3 sta $FFFF,y SELF MODIFIED
|
||||||
|
tya
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
lda XBBDD
|
||||||
|
sbc ASX.STRINGSTART+1
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/basic.fx/basic.s.xm
|
||||||
|
LOAD usr/src/basic.fx/basic.s
|
||||||
|
ASM
|
|
@ -10,6 +10,8 @@ NEW
|
||||||
bpl :1
|
bpl :1
|
||||||
sta $C010
|
sta $C010
|
||||||
.EM
|
.EM
|
||||||
|
*--------------------------------------
|
||||||
|
.INB inc/io.d2.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HIMEM .EQ $A000
|
HIMEM .EQ $A000
|
||||||
LOWERCASE .EQ 1
|
LOWERCASE .EQ 1
|
||||||
|
@ -35,29 +37,40 @@ BS.E.DUPFILE .EQ $13
|
||||||
BS.E.FBUSTY .EQ $14
|
BS.E.FBUSTY .EQ $14
|
||||||
BS.E.FSTILLOPEN .EQ $15
|
BS.E.FSTILLOPEN .EQ $15
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMDBITS0.PFIX .EQ $80 ;Prefix needs fetching, pathname optional
|
CMDBITS0.PFIX .EQ $80 Prefix needs fetching, pathname optional
|
||||||
CMDBITS0.SLOT .EQ $40 ;No parameters to be processed
|
CMDBITS0.SLOT .EQ $40 No parameters to be processed
|
||||||
CMDBITS0.RRUN .EQ $20 ;Command only valid during program
|
CMDBITS0.RRUN .EQ $20 Command only valid during program
|
||||||
CMDBITS0.FNOPT .EQ $10 ;Filename is optional
|
CMDBITS0.FNOPT .EQ $10 Filename is optional
|
||||||
CMDBITS0.CRFLG .EQ $08 ;CREATE allowed
|
CMDBITS0.CRFLG .EQ $08 CREATE allowed
|
||||||
CMDBITS0.T .EQ $04 ;File type
|
CMDBITS0.T .EQ $04 File type
|
||||||
CMDBITS0.FN2 .EQ $02 ;Filename '2' for RENAME
|
CMDBITS0.FN2 .EQ $02 Filename '2' for RENAME
|
||||||
CMDBITS0.FN1 .EQ $01 ;Filename expected
|
CMDBITS0.FN1 .EQ $01 Filename expected
|
||||||
|
|
||||||
CMDBITS1.A .EQ $80 ;Address
|
CMDBITS1.A .EQ $80 Address
|
||||||
CMDBITS1.B .EQ $40 ;Byte
|
CMDBITS1.B .EQ $40 Byte
|
||||||
CMDBITS1.E .EQ $20 ;End address
|
CMDBITS1.E .EQ $20 End address
|
||||||
CMDBITS1.L .EQ $10 ;Length
|
CMDBITS1.L .EQ $10 Length
|
||||||
CMDBITS1.LINE .EQ $08 ;'@' line number
|
CMDBITS1.LINE .EQ $08 '@' line number
|
||||||
CMDBITS1.SD .EQ $04 ;Slot and drive numbers
|
CMDBITS1.SD .EQ $04 Slot and drive numbers
|
||||||
CMDBITS1.F .EQ $02 ;Field
|
CMDBITS1.F .EQ $02 Field
|
||||||
CMDBITS1.R .EQ $01 ;Record
|
CMDBITS1.R .EQ $01 Record
|
||||||
CMDBITS1.V .EQ $00 ;Volume number ignored
|
|
||||||
|
CMDBITS1.V .EQ $00 Volume number ignored
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Ptr1 .EQ 0
|
ZPPtr1 .EQ 0
|
||||||
Ptr2 .EQ 2
|
ZPPtr2 .EQ 2
|
||||||
ZPCode .EQ 4
|
ZPInBufPtr .EQ 4
|
||||||
bRAMFlag .EQ 6
|
ZPOutBufPtr .EQ 6
|
||||||
|
|
||||||
|
ZPnCnt .EQ 8
|
||||||
|
|
||||||
|
ZPInMask .EQ 10
|
||||||
|
ZPBLOfsLBits .EQ 11
|
||||||
|
ZPBLOfsHBits .EQ 12
|
||||||
|
ZPBLLenBits .EQ 13
|
||||||
|
bRAMFlag .EQ 14
|
||||||
|
|
||||||
|
ZPCode .EQ 15
|
||||||
|
|
||||||
ZP.WNDLFT .EQ $20
|
ZP.WNDLFT .EQ $20
|
||||||
ZP.WNDWDT .EQ $21
|
ZP.WNDWDT .EQ $21
|
||||||
|
@ -79,6 +92,13 @@ ZP.A1L .EQ $3C
|
||||||
ZP.A1H .EQ $3D
|
ZP.A1H .EQ $3D
|
||||||
ZP.A2L .EQ $3E
|
ZP.A2L .EQ $3E
|
||||||
ZP.A2H .EQ $3F
|
ZP.A2H .EQ $3F
|
||||||
|
ZP.A4L .EQ $40
|
||||||
|
ZP.A4H .EQ $41
|
||||||
|
|
||||||
|
ZP.CMD .EQ $42
|
||||||
|
ZP.UNITNUM .EQ $43
|
||||||
|
ZP.BUFPTR .EQ $44
|
||||||
|
ZP.BLKNUM .EQ $46
|
||||||
|
|
||||||
AS.LINNUM .EQ $50
|
AS.LINNUM .EQ $50
|
||||||
|
|
||||||
|
@ -99,6 +119,9 @@ AS.ERRNUM .EQ $DE
|
||||||
AS.TRCFLG .EQ $F2
|
AS.TRCFLG .EQ $F2
|
||||||
AS.REMSTK .EQ $F8
|
AS.REMSTK .EQ $F8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
ZPXPtr1 .EQ 0
|
||||||
|
ZPXPtr2 .EQ 2
|
||||||
|
*--------------------------------------
|
||||||
IO.LINEBUF .EQ $200
|
IO.LINEBUF .EQ $200
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DIRENTBUF .EQ $259
|
DIRENTBUF .EQ $259
|
||||||
|
@ -168,6 +191,7 @@ MLI.DEVNUM .EQ $BF30
|
||||||
MLI.DEVCNT .EQ $BF31
|
MLI.DEVCNT .EQ $BF31
|
||||||
MLI.DEVLST .EQ $BF32
|
MLI.DEVLST .EQ $BF32
|
||||||
MLI.MEMTABL .EQ $BF58
|
MLI.MEMTABL .EQ $BF58
|
||||||
|
MLI.DATETIME .EQ $BF90
|
||||||
MLI.LEVEL .EQ $BF94
|
MLI.LEVEL .EQ $BF94
|
||||||
MLI.MACHID .EQ $BF98
|
MLI.MACHID .EQ $BF98
|
||||||
MLI.SLTBYT .EQ $BF99
|
MLI.SLTBYT .EQ $BF99
|
||||||
|
@ -222,22 +246,67 @@ MON.SETVID .EQ $FE93
|
||||||
MON.ENTERMON .EQ $FF69
|
MON.ENTERMON .EQ $FF69
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB usr/src/basic.fx/basic.s.ldr
|
.INB usr/src/basic.fx/basic.s.ldr
|
||||||
|
*--------------------------------------
|
||||||
|
X.Unpak.XatYA sty ZPOutBufPtr
|
||||||
|
sta ZPOutBufPtr+1
|
||||||
|
lda PAKME.Table,x
|
||||||
|
sta ZPInBufPtr
|
||||||
|
lda PAKME.Table+1,x
|
||||||
|
sta ZPInBufPtr+1
|
||||||
|
.INB usr/src/shared/x.unpak.s
|
||||||
|
*--------------------------------------
|
||||||
|
PAKME.Table
|
||||||
|
PAKME.MAIN .DA MAIN.PAK
|
||||||
|
PAKME.GP .DA GP.PAK
|
||||||
|
PAKME.AUX .DA AUX.PAK
|
||||||
|
|
||||||
|
MAIN.PAK .DA #0
|
||||||
|
.DA MAIN.LEN
|
||||||
|
|
||||||
LDR.MAIN.SRC .PH HIMEM
|
LDR.MAIN.SRC .PH HIMEM
|
||||||
LDR.MAIN.DST .EQ *
|
LDR.MAIN.DST .EQ *
|
||||||
.INB usr/src/basic.fx/basic.s.a
|
.INB usr/src/basic.fx/basic.s.a
|
||||||
.INB usr/src/basic.fx/basic.s.b
|
.INB usr/src/basic.fx/basic.s.b
|
||||||
.INB usr/src/basic.fx/basic.s.c
|
.INB usr/src/basic.fx/basic.s.c
|
||||||
.INB usr/src/basic.fx/basic.s.d
|
.INB usr/src/basic.fx/basic.s.d
|
||||||
.EP
|
MAIN.LEN .EQ *-LDR.MAIN.DST
|
||||||
|
.EP
|
||||||
|
|
||||||
|
GP.PAK .DA #0
|
||||||
|
.DA GP.LEN
|
||||||
|
|
||||||
LDR.GP.SRC .PH $BE00
|
LDR.GP.SRC .PH $BE00
|
||||||
LDR.GP.DST .EQ *
|
LDR.GP.DST .EQ *
|
||||||
.INB usr/src/basic.fx/basic.s.gp
|
.INB usr/src/basic.fx/basic.s.gp
|
||||||
.EP
|
GP.LEN .EQ *-LDR.GP.DST
|
||||||
LDR.AUX.SRC .PH $E000
|
|
||||||
LDR.AUX.DST .EQ *
|
|
||||||
.INB usr/src/basic.fx/basic.s.x
|
|
||||||
.INB usr/src/basic.fx/basic.s.xm
|
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
|
AUX.PAK .DA #0
|
||||||
|
.DA AUX.LEN
|
||||||
|
|
||||||
|
LDR.AUX.SRC .EQ *
|
||||||
|
LDR.AUX.DST .EQ $E000
|
||||||
|
BB.PRODOS .EQ $E000
|
||||||
|
.INB usr/src/shared/x.bb.prodos.s
|
||||||
|
BB.SOS .EQ $E200
|
||||||
|
.INB usr/src/shared/x.bb.sos.s
|
||||||
|
BB.FX2 .EQ $E400
|
||||||
|
.INB usr/src/shared/x.bb.fx2.s
|
||||||
|
X.TRkFMT.Z .EQ $10
|
||||||
|
.PH $E800
|
||||||
|
.INB usr/src/shared/x.trkfmt.s
|
||||||
|
.BS $E900-*
|
||||||
|
.LIST OFF
|
||||||
|
.INB usr/src/basic.fx/basic.s.xf
|
||||||
|
.INB usr/src/basic.fx/basic.s.xm
|
||||||
|
.INB usr/src/basic.fx/basic.s.x
|
||||||
|
.EP
|
||||||
|
AUX.LEN .EQ *-LDR.AUX.SRC
|
||||||
|
*--------------------------------------
|
||||||
|
.AS "PAKME" TAG
|
||||||
|
.DA $2000 BIN ORG
|
||||||
|
.DA #3 Chunk Count
|
||||||
|
.DA PAKME.Table Chunks
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/basic.fx/basic.s
|
SAVE usr/src/basic.fx/basic.s
|
||||||
|
|
|
@ -357,33 +357,36 @@ CS.RUN.LL.DISKII
|
||||||
.2 jsr CS.RUN.CheckCtrlC
|
.2 jsr CS.RUN.CheckCtrlC
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHW L.MSG.LLDISK2
|
jsr CS.RUN.LL.DISKII.P
|
||||||
>PUSHB CurHead
|
|
||||||
>PUSHB CurTrack
|
|
||||||
inc
|
|
||||||
>PUSHA
|
|
||||||
>PUSHB TrkCnt
|
|
||||||
>PUSHBI 4
|
|
||||||
>SYSCALL PrintF
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHB DSSS0000
|
jsr CS.RUN.LL.DISKII.FT
|
||||||
>PUSHB VolNum
|
|
||||||
>PUSHB CurHead
|
|
||||||
>PUSHB CurTrack
|
|
||||||
>PUSHWZ Empty track
|
|
||||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
inc CurTrack
|
||||||
|
|
||||||
inc CurHead
|
inc CurHead
|
||||||
dec HCounter
|
dec HCounter
|
||||||
bne .2
|
beq .3
|
||||||
|
|
||||||
dec TCounter
|
>PUSHB DSSS0000
|
||||||
beq .8
|
>PUSHBI 1
|
||||||
|
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2HeadSelect
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CS.RUN.LL.DISKII.FT
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>PUSHB DSSS0000
|
||||||
|
>PUSHBI 0
|
||||||
|
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2HeadSelect
|
||||||
|
bcs .9
|
||||||
|
|
||||||
inc CurTrack
|
inc CurTrack
|
||||||
|
|
||||||
|
.3 dec TCounter
|
||||||
|
beq .8
|
||||||
|
|
||||||
lda CurQTrack
|
lda CurQTrack
|
||||||
* clc
|
* clc
|
||||||
adc Stepping
|
adc Stepping
|
||||||
|
@ -414,20 +417,25 @@ CS.RUN.LL.DISKII
|
||||||
|
|
||||||
jsr CS.RUN.LL.DISKII.V
|
jsr CS.RUN.LL.DISKII.V
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
* jsr CS.RUN.MotorOn
|
|
||||||
|
|
||||||
* lda #20
|
.80 rts
|
||||||
* jsr CS.RUN.Wait
|
*--------------------------------------
|
||||||
|
CS.RUN.LL.DISKII.P
|
||||||
.80
|
>PUSHW L.MSG.LLDISK2
|
||||||
* >PUSHB DSSS0000
|
>PUSHB CurHead
|
||||||
* >LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate
|
>PUSHB CurTrack
|
||||||
|
inc
|
||||||
* lda #20
|
>PUSHA
|
||||||
* jsr CS.RUN.Wait
|
>PUSHB TrkCnt
|
||||||
|
>PUSHBI 4
|
||||||
clc
|
>SYSCALL PrintF
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.LL.DISKII.FT
|
||||||
|
>PUSHB DSSS0000
|
||||||
|
>PUSHB VolNum
|
||||||
|
>PUSHB CurTrack
|
||||||
|
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkFmt16s
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LL.DISKII.V
|
CS.RUN.LL.DISKII.V
|
||||||
|
@ -795,7 +803,7 @@ OptionVars .DA #bLL,#bLL,#bCustomBlkSize,#bCustomBlkSize
|
||||||
Disk2.Default .DA 280 BlkCnt
|
Disk2.Default .DA 280 BlkCnt
|
||||||
.DA #35 TrkCnt
|
.DA #35 TrkCnt
|
||||||
.DA #4 Stepping
|
.DA #4 Stepping
|
||||||
.DA #1 VolNum
|
.DA #$00 VolNum
|
||||||
.DA #0 AltBB
|
.DA #0 AltBB
|
||||||
.DA #1 HeadCnt
|
.DA #1 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -803,7 +811,7 @@ Disk2.Default .DA 280 BlkCnt
|
||||||
Disk2.X .DA 320 BlkCnt
|
Disk2.X .DA 320 BlkCnt
|
||||||
.DA #40 TrkCnt
|
.DA #40 TrkCnt
|
||||||
.DA #4 Stepping
|
.DA #4 Stepping
|
||||||
.DA #2 VolNum
|
.DA #$00 VolNum
|
||||||
.DA #0 AltBB
|
.DA #0 AltBB
|
||||||
.DA #1 HeadCnt
|
.DA #1 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -811,7 +819,7 @@ Disk2.X .DA 320 BlkCnt
|
||||||
Disk2.H .DA 384 BlkCnt
|
Disk2.H .DA 384 BlkCnt
|
||||||
.DA #48 TrkCnt
|
.DA #48 TrkCnt
|
||||||
.DA #3 Stepping
|
.DA #3 Stepping
|
||||||
.DA #129 VolNum
|
.DA #$03 VolNum
|
||||||
.DA #$80 AltBB
|
.DA #$80 AltBB
|
||||||
.DA #1 HeadCnt
|
.DA #1 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -819,7 +827,7 @@ Disk2.H .DA 384 BlkCnt
|
||||||
Disk2.HX .DA 432 BlkCnt
|
Disk2.HX .DA 432 BlkCnt
|
||||||
.DA #54 TrkCnt
|
.DA #54 TrkCnt
|
||||||
.DA #3 Stepping
|
.DA #3 Stepping
|
||||||
.DA #130 VolNum
|
.DA #$03 VolNum
|
||||||
.DA #$80 AltBB
|
.DA #$80 AltBB
|
||||||
.DA #1 HeadCnt
|
.DA #1 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -827,7 +835,7 @@ Disk2.HX .DA 432 BlkCnt
|
||||||
Disk2.DefaultD .DA 640 BlkCnt
|
Disk2.DefaultD .DA 640 BlkCnt
|
||||||
.DA #40 TrkCnt
|
.DA #40 TrkCnt
|
||||||
.DA #4 Stepping
|
.DA #4 Stepping
|
||||||
.DA #192 VolNum
|
.DA #$84 VolNum
|
||||||
.DA #$80 AltBB
|
.DA #$80 AltBB
|
||||||
.DA #2 HeadCnt
|
.DA #2 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -835,7 +843,7 @@ Disk2.DefaultD .DA 640 BlkCnt
|
||||||
Disk2.XD .DA 640 BlkCnt
|
Disk2.XD .DA 640 BlkCnt
|
||||||
.DA #40 TrkCnt
|
.DA #40 TrkCnt
|
||||||
.DA #4 Stepping
|
.DA #4 Stepping
|
||||||
.DA #192 VolNum
|
.DA #84 VolNum
|
||||||
.DA #$80 AltBB
|
.DA #$80 AltBB
|
||||||
.DA #2 HeadCnt
|
.DA #2 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -843,7 +851,7 @@ Disk2.XD .DA 640 BlkCnt
|
||||||
Disk2.HD .DA 1280 BlkCnt
|
Disk2.HD .DA 1280 BlkCnt
|
||||||
.DA #80 TrkCnt
|
.DA #80 TrkCnt
|
||||||
.DA #2 Stepping
|
.DA #2 Stepping
|
||||||
.DA #193 VolNum
|
.DA #$82 VolNum
|
||||||
.DA #$80 AltBB
|
.DA #$80 AltBB
|
||||||
.DA #2 HeadCnt
|
.DA #2 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
@ -851,7 +859,7 @@ Disk2.HD .DA 1280 BlkCnt
|
||||||
Disk2.HXD .DA 1280 BlkCnt
|
Disk2.HXD .DA 1280 BlkCnt
|
||||||
.DA #80 TrkCnt
|
.DA #80 TrkCnt
|
||||||
.DA #2 Stepping
|
.DA #2 Stepping
|
||||||
.DA #193 VolNum
|
.DA #$82 VolNum
|
||||||
.DA #$80 AltBB
|
.DA #$80 AltBB
|
||||||
.DA #2 HeadCnt
|
.DA #2 HeadCnt
|
||||||
.BS 1
|
.BS 1
|
||||||
|
|
|
@ -31,5 +31,7 @@ IO.D2.WLoad .EQ $C08D W
|
||||||
IO.D2.ReadMode .EQ $C08E R
|
IO.D2.ReadMode .EQ $C08E R
|
||||||
IO.D2.WriteMode .EQ $C08F W
|
IO.D2.WriteMode .EQ $C08F W
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
*IO.D2.ReadSect .EQ $Cn5C
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE inc/io.d2.i
|
SAVE inc/io.d2.i
|
||||||
|
|
|
@ -6,8 +6,10 @@ LIBBLKDEV.BuildProDOSCat .EQ 6
|
||||||
LIBBLKDEV.D2MotorControl .EQ 8
|
LIBBLKDEV.D2MotorControl .EQ 8
|
||||||
LIBBLKDEV.D2Recalibrate .EQ 10
|
LIBBLKDEV.D2Recalibrate .EQ 10
|
||||||
LIBBLKDEV.D2MoveHead .EQ 12
|
LIBBLKDEV.D2MoveHead .EQ 12
|
||||||
LIBBLKDEV.D2TrkRead16s .EQ 14
|
LIBBLKDEV.D2HeadSelect .EQ 14
|
||||||
LIBBLKDEV.D2TrkWrite16s .EQ 16
|
LIBBLKDEV.D2TrkFmt16s .EQ 16
|
||||||
|
LIBBLKDEV.D2TrkRead16s .EQ 18
|
||||||
|
LIBBLKDEV.D2TrkWrite16s .EQ 20
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE inc/libblkdev.i
|
SAVE inc/libblkdev.i
|
||||||
|
|
|
@ -65,6 +65,31 @@ D2.Recalibrate >PULLB D2.DrvSlt
|
||||||
.9 rts
|
.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
|
D2.HeadSelect >PULLB D2.HeadNum
|
||||||
|
>PULLB D2.DrvSlt
|
||||||
|
|
||||||
|
jsr D2.CheckDiskII
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda D2.HeadNum A = 0/1
|
||||||
|
|
||||||
|
asl A = 0/2
|
||||||
|
|
||||||
|
ora D2.Slotn0
|
||||||
|
tax x=n0/n2
|
||||||
|
|
||||||
|
lda IO.D2.Ph0On,x
|
||||||
|
lda IO.D2.Ph0On+4,x
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
jsr D2.Wait100usecA
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x
|
||||||
|
lda IO.D2.Ph0Off+4,x
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*/--------------------------------------
|
||||||
|
*\--------------------------------------
|
||||||
D2.MoveHead >PULLB D2.TargetQTrack
|
D2.MoveHead >PULLB D2.TargetQTrack
|
||||||
>PULLB D2.CurrentQTrack
|
>PULLB D2.CurrentQTrack
|
||||||
>PULLB D2.DrvSlt
|
>PULLB D2.DrvSlt
|
||||||
|
@ -136,7 +161,7 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||||
|
|
||||||
jsr D2.Wait25600usec
|
jsr D2.Wait25600usec
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,y
|
lda IO.D2.Ph0Off,y
|
||||||
bcc .90
|
bcc .90
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,x
|
lda IO.D2.Ph0Off,x
|
||||||
|
@ -149,11 +174,61 @@ D2.SeekPhOnY and #6
|
||||||
lda IO.D2.Ph0On,y
|
lda IO.D2.Ph0On,y
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
* # D2TrkFmt16s
|
||||||
|
* Write a track (16 sectors)
|
||||||
|
* PUSHB DSSS0000
|
||||||
|
* PUSHB VolNum
|
||||||
|
* PUSHB HeadNum (0,1)
|
||||||
|
* PUSHB TrackNum
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* CC : success
|
||||||
|
* CS : A = Error
|
||||||
|
*\--------------------------------------
|
||||||
|
D2.TrkFmt16s >PULLB D2.TrkNum
|
||||||
|
>PULLB D2.VolNum
|
||||||
|
>PULLB D2.DrvSlt
|
||||||
|
|
||||||
|
jsr D2.CheckDiskII
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
php
|
||||||
|
sei
|
||||||
|
|
||||||
|
lda D2.VolNum
|
||||||
|
sta X.TRKFMT.VolNum
|
||||||
|
|
||||||
|
lda D2.TrkNum
|
||||||
|
sta X.TRKFMT.TrkNum
|
||||||
|
|
||||||
|
ldy #D2.TrkFormat.Size
|
||||||
|
|
||||||
|
.1 lda D2.TrkFormat-1,y
|
||||||
|
sta $1ff,y
|
||||||
|
dey
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
ldx D2.Slotn0
|
||||||
|
lda IO.D2.ReadProt,x
|
||||||
|
lda IO.D2.ReadMode,x
|
||||||
|
bmi .9 Write protected
|
||||||
|
|
||||||
|
jsr $200
|
||||||
|
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #MLI.E.WRTPROT
|
||||||
|
|
||||||
|
plp
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*/--------------------------------------
|
||||||
* # D2TrkRead16s
|
* # D2TrkRead16s
|
||||||
* Write a track (16 sectors)
|
* Write a track (16 sectors)
|
||||||
* PUSHB = DSSS0000
|
* PUSHB DSSS0000
|
||||||
* PUSHB = TrackNum * 4 : 0->136+
|
* PUSHB TrackNum
|
||||||
* PUSHW = Ptr to 16*256 buffer
|
* PUSHW Ptr to 16*256 buffer
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* CC : success, A = VolNum
|
* CC : success, A = VolNum
|
||||||
* CS : A = Error
|
* CS : A = Error
|
||||||
|
@ -173,10 +248,9 @@ D2.TrkRead16s.RTS
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # D2TrkWrite16s
|
* # D2TrkWrite16s
|
||||||
* Write a track (16 sectors)
|
* Write a track (16 sectors)
|
||||||
* PUSHB = DSSS0000
|
* PUSHB DSSS0000
|
||||||
* PUSHB = VolNum
|
* PUSHB VolNum
|
||||||
* PUSHB = HeadNum (0,1)
|
* PUSHB TrackNum
|
||||||
* PUSHB = TrackNum * 4 : 0->136+
|
|
||||||
* PUSHW = Ptr to 16*256 buffer
|
* PUSHW = Ptr to 16*256 buffer
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
* CC : success
|
* CC : success
|
||||||
|
@ -184,7 +258,6 @@ D2.TrkRead16s.RTS
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
D2.TrkWrite16s >PULLW ZPPtr1
|
D2.TrkWrite16s >PULLW ZPPtr1
|
||||||
>PULLB D2.TrkNum
|
>PULLB D2.TrkNum
|
||||||
>PULLB D2.HeadNum
|
|
||||||
>PULLB D2.VolNum
|
>PULLB D2.VolNum
|
||||||
>PULLB D2.DrvSlt
|
>PULLB D2.DrvSlt
|
||||||
|
|
||||||
|
@ -258,12 +331,9 @@ D2.TrkWrite16s >PULLW ZPPtr1
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPPtr2)
|
sta (ZPPtr2)
|
||||||
|
|
||||||
bit D2.VolNum
|
|
||||||
bvc .80
|
|
||||||
|
|
||||||
jsr D2.HeadSelect
|
jsr D2.HeadSelect
|
||||||
|
|
||||||
.80 jsr D2.WriteTrackPtr2
|
jsr D2.WriteTrackPtr2
|
||||||
|
|
||||||
php
|
php
|
||||||
pha
|
pha
|
||||||
|
@ -291,9 +361,9 @@ D2.TrkWriteNIB >PULLW ZPPtr1
|
||||||
>PULLB D2.DrvSlt
|
>PULLB D2.DrvSlt
|
||||||
|
|
||||||
jsr D2.CheckDiskII was it a DISK II ?
|
jsr D2.CheckDiskII was it a DISK II ?
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
.9 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A=DSSS0000
|
* A=DSSS0000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -361,23 +431,6 @@ D2.DrvSpinCheck ldy #0
|
||||||
.8 sec
|
.8 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
D2.HeadSelect lda D2.HeadNum A = 0/1
|
|
||||||
|
|
||||||
asl A = 0/2
|
|
||||||
|
|
||||||
ora D2.Slotn0
|
|
||||||
tax x=n0/n2
|
|
||||||
|
|
||||||
lda IO.D2.Ph0On,x
|
|
||||||
lda IO.D2.Ph0On+4,x
|
|
||||||
|
|
||||||
lda #1
|
|
||||||
jsr D2.Wait100usecA
|
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,x
|
|
||||||
lda IO.D2.Ph0Off+4,x
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
D2.Wait25600usec
|
D2.Wait25600usec
|
||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@ ZPPtr1 .EQ ZPLIB
|
||||||
ZPPtr2 .EQ ZPLIB+2
|
ZPPtr2 .EQ ZPLIB+2
|
||||||
ZPPtr3 .EQ ZPLIB+4
|
ZPPtr3 .EQ ZPLIB+4
|
||||||
ZPPtr4 .EQ ZPLIB+6
|
ZPPtr4 .EQ ZPLIB+6
|
||||||
|
X.TRkFMT.Z .EQ ZPLIB+8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -62,13 +63,16 @@ CS.START cld
|
||||||
.DA D2.MotorControl
|
.DA D2.MotorControl
|
||||||
.DA D2.Recalibrate
|
.DA D2.Recalibrate
|
||||||
.DA D2.MoveHead
|
.DA D2.MoveHead
|
||||||
|
.DA D2.HeadSelect
|
||||||
|
.DA D2.TrkFmt16s
|
||||||
.DA D2.TrkRead16s
|
.DA D2.TrkRead16s
|
||||||
.DA D2.TrkWrite16s
|
.DA D2.TrkWrite16s
|
||||||
.DA D2.TrkReadNIB
|
.DA D2.TrkReadNIB
|
||||||
.DA D2.TrkWriteNIB
|
.DA D2.TrkWriteNIB
|
||||||
L.D2.TrkWriter .DA D2.TrkWriter
|
L.X.BB.PRODOS .DA X.BB.PRODOS
|
||||||
L.ProDOS.Boot .DA ProDOS.Boot
|
L.X.BB.SOS .DA X.BB.SOS
|
||||||
L.ProDOSFX.Boot .DA ProDOSFX.Boot
|
L.X.BB.FXpart1 .DA X.BB.FX2
|
||||||
|
L.X.BB.FXpart2 .DA X.BB.FX2+512
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.LOAD
|
LIB.LOAD
|
||||||
|
@ -97,11 +101,15 @@ GetProDOSCatSize.I
|
||||||
clc for now, no partial bitmap blk to add
|
clc for now, no partial bitmap blk to add
|
||||||
tay DevSize is xxxxxxxx00000000 ?
|
tay DevSize is xxxxxxxx00000000 ?
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
sec
|
sec
|
||||||
|
|
||||||
.1 lda VolDirHdr.TB+1 Get DevSizeHI
|
.1 lda VolDirHdr.TB+1 Get DevSizeHI
|
||||||
bit #$0f DevSize is xxxx000000000000 ?
|
bit #$0f DevSize is xxxx000000000000 ?
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
sec
|
sec
|
||||||
|
|
||||||
.2 php
|
.2 php
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
|
@ -142,41 +150,33 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.1 lda DATELO,x
|
.10 lda DATELO,x
|
||||||
sta VolDirHdr.CT,x
|
sta VolDirHdr.CT,x
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .10
|
||||||
|
|
||||||
|
bit VolDirHdr.Options
|
||||||
|
bmi .11
|
||||||
|
|
||||||
* Blk 0 : ProDOS Boot Code
|
* Blk 0 : ProDOS Boot Code
|
||||||
>LDYA L.ProDOS.Boot
|
>LDYA L.X.BB.PRODOS
|
||||||
bit VolDirHdr.Options
|
jsr Add2Pages
|
||||||
bpl .11
|
|
||||||
|
|
||||||
>LDYA L.ProDOSFX.Boot
|
|
||||||
|
|
||||||
.11 >STYA ZPPtr3
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
ldx #2 2 pages
|
|
||||||
|
|
||||||
.2 lda (ZPPtr3),y
|
|
||||||
sta (ZPPtr1),y
|
|
||||||
iny
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
inc ZPPtr3+1
|
|
||||||
inc ZPPtr1+1
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
* Blk 1 : (SOS boot code)
|
* Blk 1 : (SOS boot code)
|
||||||
|
|
||||||
inc ZPPtr1+1
|
>LDYA L.X.BB.SOS
|
||||||
inc ZPPtr1+1
|
jsr Add2Pages
|
||||||
|
bra .20
|
||||||
|
|
||||||
|
.11 >LDYA L.X.BB.FXpart1
|
||||||
|
jsr Add2Pages
|
||||||
|
|
||||||
|
>LDYA L.X.BB.FXpart2
|
||||||
|
jsr Add2Pages
|
||||||
|
|
||||||
* Blk 2 : First Directory Block
|
* Blk 2 : First Directory Block
|
||||||
|
|
||||||
jsr ZeroPtr1
|
.20 jsr ZeroPtr1
|
||||||
|
|
||||||
* ldy #0
|
* ldy #0
|
||||||
|
|
||||||
|
@ -333,10 +333,36 @@ ZeroPtr1 phy
|
||||||
ply
|
ply
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
Add2Pages >STYA ZPPtr3
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
ldx #2 2 pages
|
||||||
|
|
||||||
|
.1 lda (ZPPtr3),y
|
||||||
|
sta (ZPPtr1),y
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc ZPPtr3+1
|
||||||
|
inc ZPPtr1+1
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
.INB usr/src/lib/libblkdev.s.d2
|
.INB usr/src/lib/libblkdev.s.d2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* TrkFormat
|
||||||
|
* X = Slot Cn
|
||||||
|
*--------------------------------------
|
||||||
|
D2.TrkFormat .PH $200
|
||||||
|
D2.TrkFormat.Start
|
||||||
|
.INB usr/src/shared/x.trkfmt.s
|
||||||
|
D2.TrkFormat.Size .EQ *-D2.TrkFormat.Start
|
||||||
|
.EP
|
||||||
|
*--------------------------------------
|
||||||
* TrkWriter
|
* TrkWriter
|
||||||
* X = Slot Cn
|
* X = Slot Cn
|
||||||
* ZPPtr1 = Ptr To NibbleBuf
|
* ZPPtr1 = Ptr To NibbleBuf
|
||||||
|
@ -529,73 +555,9 @@ FC2Nib .HS 96
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LC.BitMap .HS 8040201008040201
|
LC.BitMap .HS 8040201008040201
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ProDOS.Boot .HS 01.38.b0.03.4c.32.a1.86.43.c9.03.08.8a.29.70.4a
|
X.BB.PRODOS .INB usr/src/shared/x.bb.prodos.s
|
||||||
.HS 4a.4a.4a.09.c0.85.49.a0.ff.84.48.28.c8.b1.48.d0
|
X.BB.SOS .INB usr/src/shared/x.bb.sos.s
|
||||||
.HS 3a.b0.0e.a9.03.8d.00.08.e6.3d.a5.49.48.a9.5b.48
|
X.BB.FX2 .INB usr/src/shared/x.bb.fx2.s
|
||||||
.HS 60.85.40.85.48.a0.63.b1.48.99.94.09.c8.c0.eb.d0
|
|
||||||
.HS f6.a2.06.bc.1d.09.bd.24.09.99.f2.09.bd.2b.09.9d
|
|
||||||
.HS 7f.0a.ca.10.ee.a9.09.85.49.a9.86.a0.00.c9.f9.b0
|
|
||||||
.HS 2f.85.48.84.60.84.4a.84.4c.84.4e.84.47.c8.84.42
|
|
||||||
.HS c8.84.46.a9.0c.85.61.85.4b.20.12.09.b0.68.e6.61
|
|
||||||
.HS e6.61.e6.46.a5.46.c9.06.90.ef.ad.00.0c.0d.01.0c
|
|
||||||
.HS d0.6d.a9.04.d0.02.a5.4a.18.6d.23.0c.a8.90.0d.e6
|
|
||||||
.HS 4b.a5.4b.4a.b0.06.c9.0a.f0.55.a0.04.84.4a.ad.02
|
|
||||||
.HS 09.29.0f.a8.b1.4a.d9.02.09.d0.db.88.10.f6.29.f0
|
|
||||||
.HS c9.20.d0.3b.a0.10.b1.4a.c9.ff.d0.33.c8.b1.4a.85
|
|
||||||
.HS 46.c8.b1.4a.85.47.a9.00.85.4a.a0.1e.84.4b.84.61
|
|
||||||
.HS c8.84.4d.20.12.09.b0.17.e6.61.e6.61.a4.4e.e6.4e
|
|
||||||
.HS b1.4a.85.46.b1.4c.85.47.11.4a.d0.e7.4c.00.20.4c
|
|
||||||
.HS 3f.09.26.50.52.4f.44.4f.53.20.20.20.20.20.20.20
|
|
||||||
.HS 20.20.a5.60.85.44.a5.61.85.45.6c.48.00.08.1e.24
|
|
||||||
.HS 3f.45.47.76.f4.d7.d1.b6.4b.b4.ac.a6.2b.18.60.4c
|
|
||||||
.HS bc.09.a9.9f.48.a9.ff.48.a9.01.a2.00.4c.79.f4.20
|
|
||||||
.HS 58.fc.a0.1c.b9.50.09.99.ae.05.88.10.f7.4c.4d.09
|
|
||||||
.HS aa.aa.aa.a0.d5.ce.c1.c2.cc.c5.a0.d4.cf.a0.cc.cf
|
|
||||||
.HS c1.c4.a0.d0.d2.cf.c4.cf.d3.a0.aa.aa.aa.a5.53.29
|
|
||||||
.HS 03.2a.05.2b.aa.bd.80.c0.a9.2c.a2.11.ca.d0.fd.e9
|
|
||||||
.HS 01.d0.f7.a6.2b.60.a5.46.29.07.c9.04.29.03.08.0a
|
|
||||||
.HS 28.2a.85.3d.a5.47.4a.a5.46.6a.4a.4a.85.41.0a.85
|
|
||||||
.HS 51.a5.45.85.27.a6.2b.bd.89.c0.20.bc.09.e6.27.e6
|
|
||||||
.HS 3d.e6.3d.b0.03.20.bc.09.bc.88.c0.60.a5.40.0a.85
|
|
||||||
.HS 53.a9.00.85.54.a5.53.85.50.38.e5.51.f0.14.b0.04
|
|
||||||
.HS e6.53.90.02.c6.53.38.20.6d.09.a5.50.18.20.6f.09
|
|
||||||
.HS d0.e3.a0.7f.84.52.08.28.38.c6.52.f0.ce.18.08.88
|
|
||||||
.HS f0.f5.bd.8c.c0.10.fb.00.00.00.00.00.00.00.00.00
|
|
||||||
*--------------------------------------
|
|
||||||
SOS.Boot .HS 4c.6e.a0.53.4f.53.20.42.4f.4f.54.20.20.31.2e.31
|
|
||||||
.HS 20.0a.53.4f.53.2e.4b.45.52.4e.45.4c.20.20.20.20
|
|
||||||
.HS 20.53.4f.53.20.4b.52.4e.4c.49.2f.4f.20.45.52.52
|
|
||||||
.HS 4f.52.08.00.46.49.4c.45.20.27.53.4f.53.2e.4b.45
|
|
||||||
.HS 52.4e.45.4c.27.20.4e.4f.54.20.46.4f.55.4e.44.25
|
|
||||||
.HS 00.49.4e.56.41.4c.49.44.20.4b.45.52.4e.45.4c.20
|
|
||||||
.HS 46.49.4c.45.3a.00.00.0c.00.1e.0e.1e.04.a4.78.d8
|
|
||||||
.HS a9.77.8d.df.ff.a2.fb.9a.2c.10.c0.a9.40.8d.ca.ff
|
|
||||||
.HS a9.07.8d.ef.ff.a2.00.ce.ef.ff.8e.00.20.ad.00.20
|
|
||||||
.HS d0.f5.a9.01.85.e0.a9.00.85.e1.a9.00.85.85.a9.a2
|
|
||||||
.HS 85.86.20.be.a1.e6.e0.a9.00.85.e6.e6.86.e6.86.e6
|
|
||||||
.HS e6.20.be.a1.a0.02.b1.85.85.e0.c8.b1.85.85.e1.d0
|
|
||||||
.HS ea.a5.e0.d0.e6.ad.6c.a0.85.e2.ad.6d.a0.85.e3.18
|
|
||||||
.HS a5.e3.69.02.85.e5.38.a5.e2.ed.23.a4.85.e4.a5.e5
|
|
||||||
.HS e9.00.85.e5.a0.00.b1.e2.29.0f.cd.11.a0.d0.21.a8
|
|
||||||
.HS b1.e2.d9.11.a0.d0.19.88.d0.f6.a0.00.b1.e2.29.f0
|
|
||||||
.HS c9.20.f0.3e.c9.f0.f0.08.ae.64.a0.a0.13.4c.d4.a1
|
|
||||||
.HS 18.a5.e2.6d.23.a4.85.e2.a5.e3.69.00.85.e3.a5.e4
|
|
||||||
.HS c5.e2.a5.e5.e5.e3.b0.bc.18.a5.e4.6d.23.a4.85.e2
|
|
||||||
.HS a5.e5.69.00.85.e3.c6.e6.d0.95.ae.4f.a0.a0.1b.4c
|
|
||||||
.HS d4.a1.a0.11.b1.e2.85.e0.c8.b1.e2.85.e1.ad.66.a0
|
|
||||||
.HS 85.85.ad.67.a0.85.86.20.be.a1.ad.68.a0.85.85.ad
|
|
||||||
.HS 69.a0.85.86.ad.00.0c.85.e0.ad.00.0d.85.e1.20.be
|
|
||||||
.HS a1.a2.07.bd.00.1e.dd.21.a0.f0.08.ae.64.a0.a0.13
|
|
||||||
.HS 4c.d4.a1.ca.10.ed.a9.00.85.e7.e6.e7.e6.86.e6.86
|
|
||||||
.HS a6.e7.bd.00.0c.85.e0.bd.00.0d.85.e1.a5.e0.d0.04
|
|
||||||
.HS a5.e1.f0.06.20.be.a1.4c.8a.a1.18.ad.6a.a0.6d.08
|
|
||||||
.HS 1e.85.e8.ad.6b.a0.6d.09.1e.85.e9.6c.e8.00.a9.01
|
|
||||||
.HS 85.87.a5.e0.a6.e1.20.79.f4.b0.01.60.ae.32.a0.a0
|
|
||||||
.HS 09.4c.d4.a1.84.e7.38.a9.28.e5.e7.4a.18.65.e7.a8
|
|
||||||
.HS bd.29.a0.99.a7.05.ca.88.c6.e7.d0.f4.ad.40.c0.4c
|
|
||||||
.HS ef.a1.00.00.00.00.00.00.00.00.00.00.00.00.00.00
|
|
||||||
*--------------------------------------
|
|
||||||
ProDOSFX.Boot .INB usr/src/lib/libblkdev.s.bb
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Block 2 : First DIR block
|
* Block 2 : First DIR block
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -20,8 +20,10 @@ ILDR.START jsr MLI check for file 'atinit'
|
||||||
.1 lda RROMBNK2 enable ROM
|
.1 lda RROMBNK2 enable ROM
|
||||||
jsr sysentry execute ATinit
|
jsr sysentry execute ATinit
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DO READCAT=1
|
* BOOT block read 4 directory blocks at dbuf=$C00 -> $13FF
|
||||||
|
*--------------------------------------
|
||||||
|
ILDR.ENUMPM .DO READCAT=1
|
||||||
|
|
||||||
lda LDR.MLIOL.P+1 Boot unitnum
|
lda LDR.MLIOL.P+1 Boot unitnum
|
||||||
sta ILDR.MLIRB.P+1
|
sta ILDR.MLIRB.P+1
|
||||||
|
|
||||||
|
@ -30,7 +32,7 @@ ILDR.START jsr MLI check for file 'atinit'
|
||||||
ldy #$02 read directory into buffer
|
ldy #$02 read directory into buffer
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.2 sta dst+1
|
.22 sta dst+1
|
||||||
sta ILDR.MLIRB.P+3 Data buf HI
|
sta ILDR.MLIRB.P+3 Data buf HI
|
||||||
sty ILDR.MLIRB.P+4 Blk Num LO
|
sty ILDR.MLIRB.P+4 Blk Num LO
|
||||||
stx ILDR.MLIRB.P+5 Blk Num HI
|
stx ILDR.MLIRB.P+5 Blk Num HI
|
||||||
|
@ -38,14 +40,14 @@ ILDR.START jsr MLI check for file 'atinit'
|
||||||
jsr MLI
|
jsr MLI
|
||||||
.DA #MLIREADBLOCK
|
.DA #MLIREADBLOCK
|
||||||
.DA ILDR.MLIRB.P
|
.DA ILDR.MLIRB.P
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
ldy #$03 get next block# from link
|
ldy #$03 get next block# from link
|
||||||
lda (dst),y
|
lda (dst),y
|
||||||
tax
|
tax
|
||||||
dey
|
dey
|
||||||
ora (dst),y 00 00 -> Last Block
|
ora (dst),y 00 00 -> Last Block
|
||||||
beq .8
|
beq .28
|
||||||
|
|
||||||
lda (dst),y
|
lda (dst),y
|
||||||
tay
|
tay
|
||||||
|
@ -53,13 +55,11 @@ ILDR.START jsr MLI check for file 'atinit'
|
||||||
inc
|
inc
|
||||||
inc add $200 to buffer pointer
|
inc add $200 to buffer pointer
|
||||||
cmp /dbuf+$800 until it points past end of buffer.
|
cmp /dbuf+$800 until it points past end of buffer.
|
||||||
bcc .2 if ok, read next block.
|
bcc .22 if ok, read next block.
|
||||||
|
|
||||||
.8 .FIN
|
.28 .FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* BOOT block read 4 directory blocks at dbuf=$C00 -> $13FF
|
.DO PM
|
||||||
*--------------------------------------
|
|
||||||
ILDR.ENUMPM .DO PM
|
|
||||||
|
|
||||||
jsr ILDR.EnumInit
|
jsr ILDR.EnumInit
|
||||||
|
|
||||||
|
@ -68,10 +68,10 @@ ILDR.ENUMPM .DO PM
|
||||||
lda /ILDR.KMPFX
|
lda /ILDR.KMPFX
|
||||||
clc prefix
|
clc prefix
|
||||||
jsr ILDR.EnumNext
|
jsr ILDR.EnumNext
|
||||||
bcs .4
|
bcs .8
|
||||||
|
|
||||||
jsr ILDR.LoadFilePBuf
|
jsr ILDR.LoadFilePBuf
|
||||||
bcs ILDR.MLIERR
|
bcs .99
|
||||||
|
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
|
@ -95,10 +95,12 @@ ILDR.ENUMPM .DO PM
|
||||||
>DEBUGOA
|
>DEBUGOA
|
||||||
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
|
.99 jmp ILDR.MLIERR
|
||||||
|
|
||||||
.FIN
|
.8 .FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.4 jsr ILDR.EnumInit
|
jsr ILDR.EnumInit
|
||||||
|
|
||||||
ldx #S.FI.T.SYS
|
ldx #S.FI.T.SYS
|
||||||
ldy #ILDR.SYSTEMSFX
|
ldy #ILDR.SYSTEMSFX
|
||||||
|
|
|
@ -691,28 +691,26 @@ XRW.TrackSelect lda #2
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
.4 ldx XRW.UnitIndex
|
.4 ldx XRW.UnitIndex
|
||||||
lda XRW.AddrField.V
|
|
||||||
cmp #194
|
|
||||||
bcc .5
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
|
|
||||||
.5 sta XRW.D2VolNum-1,x
|
|
||||||
|
|
||||||
|
lda XRW.AddrField.V
|
||||||
|
sta XRW.D2VolNum-1,x
|
||||||
|
|
||||||
|
lda XRW.AddrField.T
|
||||||
|
sta XRW.D2Trk-1,x
|
||||||
|
eor XRW.ReqTrack
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
lda XRW.AddrField.V
|
||||||
asl
|
asl
|
||||||
asl CS if 2 heads
|
bcc .5 single sided
|
||||||
|
|
||||||
|
bmi .5 > 192 ????
|
||||||
|
|
||||||
lda XRW.ReqTrack
|
lda XRW.ReqTrack
|
||||||
bcc .50
|
and #1
|
||||||
|
|
||||||
lsr Track 160 -> 80+Carry
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda #0 Carry = Head
|
|
||||||
|
|
||||||
rol
|
|
||||||
rol A = 0/2
|
rol A = 0/2
|
||||||
|
|
||||||
ora A2L
|
ora A2L
|
||||||
|
@ -726,14 +724,12 @@ XRW.TrackSelect lda #2
|
||||||
lda IO.D2.Ph0Off,y
|
lda IO.D2.Ph0Off,y
|
||||||
lda IO.D2.Ph0Off+4,y
|
lda IO.D2.Ph0Off+4,y
|
||||||
|
|
||||||
pla
|
|
||||||
|
|
||||||
.50 sta XRW.ReqTrack2
|
|
||||||
|
|
||||||
lda XRW.AddrField.T
|
lda XRW.AddrField.T
|
||||||
sta XRW.D2Trk-1,x
|
sta XRW.D2Trk-1,x
|
||||||
|
bra .1
|
||||||
|
|
||||||
cmp XRW.ReqTrack2
|
.5 lda XRW.AddrField.T
|
||||||
|
cmp XRW.ReqTrack
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
lda XRW.BadSeekCnt
|
lda XRW.BadSeekCnt
|
||||||
|
@ -751,7 +747,7 @@ XRW.TrackSelect lda #2
|
||||||
sta XRW.D2SeekTime-1,x
|
sta XRW.D2SeekTime-1,x
|
||||||
|
|
||||||
.7 ldy XRW.D2Trk-1,x From actual Pos...
|
.7 ldy XRW.D2Trk-1,x From actual Pos...
|
||||||
lda XRW.ReqTrack2 ....to Req
|
lda XRW.ReqTrack ....to Req
|
||||||
jsr XRW.SeekYA X = XRW.UnitIndex
|
jsr XRW.SeekYA X = XRW.UnitIndex
|
||||||
|
|
||||||
bra .3
|
bra .3
|
||||||
|
@ -850,33 +846,41 @@ XRW.SeekPhOnY and #6
|
||||||
lda IO.D2.Ph0On,y
|
lda IO.D2.Ph0On,y
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A = 0 -> 159, X = XRW.UnitIndex
|
* In:
|
||||||
|
* A = Logical Track 0 -> 159,
|
||||||
|
* X = XRW.UnitIndex
|
||||||
|
* D2VolNum : d0000sss
|
||||||
|
* Out:
|
||||||
|
* A =
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.Trk2Qtrk sta pch
|
XRW.Trk2Qtrk sta pch
|
||||||
|
|
||||||
bit XRW.D2VolNum-1,x
|
lda XRW.D2VolNum-1,x
|
||||||
bpl .1 < $80 : x4
|
bne .1
|
||||||
|
|
||||||
bvs .2
|
|
||||||
|
|
||||||
asl $80 < v < $BF : x3
|
.10 lda pch standard SS 4 qtrack stepping
|
||||||
adc pch
|
asl
|
||||||
rts
|
|
||||||
|
|
||||||
.1 asl
|
|
||||||
asl
|
asl
|
||||||
rts
|
rts
|
||||||
|
|
||||||
* 2 sides :
|
|
||||||
|
|
||||||
.2 lda XRW.D2VolNum-1,x > $C0 : 2 heads
|
|
||||||
lsr CS : $C1 = 80, 2 heads
|
|
||||||
|
|
||||||
lda pch
|
.1 bpl .2
|
||||||
and #$FE
|
cmp #$85
|
||||||
bcs .8 x2 for 80trk (ELITE III)
|
bcs .10 > 192 ? must be a buggy 254
|
||||||
|
|
||||||
|
lsr pch 2 sides
|
||||||
|
|
||||||
|
.2 phx
|
||||||
|
and #%00000111 stepping
|
||||||
|
tax
|
||||||
|
|
||||||
asl x4 for 40trk (ELITE II)
|
lda #0
|
||||||
|
clc
|
||||||
|
|
||||||
|
.3 adc pch
|
||||||
|
dex
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
plx
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -888,7 +892,7 @@ XRW.Trk2Qtrk sta pch
|
||||||
* on entry: buf is 2-byte pointer to 256 bytes of user data.
|
* on entry: buf is 2-byte pointer to 256 bytes of user data.
|
||||||
*
|
*
|
||||||
* on exit: a,x,y undefined. write routine modified to do direct conversion
|
* on exit: a,x,y undefined. write routine modified to do direct conversion
|
||||||
* of high 6 bits of user's buffer data.
|
* of high 6 bits of user's buffer data.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.PreNibble lda buf self-modify the addresses because of
|
XRW.PreNibble lda buf self-modify the addresses because of
|
||||||
ldy buf+1 the fast timing required.
|
ldy buf+1 the fast timing required.
|
||||||
|
@ -1069,7 +1073,7 @@ XRW.TargetQTrack .HS 00
|
||||||
.HS B0B4B8BCC0C4C8
|
.HS B0B4B8BCC0C4C8
|
||||||
* .HS FFFF
|
* .HS FFFF
|
||||||
XRW.RetryCnt .HS 00
|
XRW.RetryCnt .HS 00
|
||||||
XRW.ReqTrack2 .HS 00
|
.HS 00
|
||||||
.HS CCD0D4D8DCE0
|
.HS CCD0D4D8DCE0
|
||||||
XRW.bWrite .HS 00
|
XRW.bWrite .HS 00
|
||||||
.HS E4E8ECF0F4F8FC
|
.HS E4E8ECF0F4F8FC
|
||||||
|
|
|
@ -30,11 +30,13 @@ BB.HdrTrk .EQ $55
|
||||||
BB.HdrVol .EQ $56
|
BB.HdrVol .EQ $56
|
||||||
BB.Hdr96 .EQ $57
|
BB.Hdr96 .EQ $57
|
||||||
|
|
||||||
|
BB.tmpTrk .EQ $58
|
||||||
|
|
||||||
nbuf1 .EQ $300
|
nbuf1 .EQ $300
|
||||||
dnib .EQ $2d6
|
dnib .EQ $2d6
|
||||||
|
|
||||||
clrscrn .EQ $fc58
|
clrscrn .EQ $fc58
|
||||||
scrn .EQ $5b6
|
|
||||||
sosid .EQ $c00
|
sosid .EQ $c00
|
||||||
entlen .EQ sosid+$23
|
entlen .EQ sosid+$23
|
||||||
kernel .EQ $2000
|
kernel .EQ $2000
|
||||||
|
@ -125,15 +127,13 @@ modboot ldy mods-1,x
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ndsk2 sta dent save low adr of device call entry.
|
ndsk2 sta dent save low adr of device call entry.
|
||||||
|
|
||||||
ldy #0
|
stz iobuff
|
||||||
|
stz idxl
|
||||||
|
stz idxh
|
||||||
|
stz idxp
|
||||||
|
stz blok+1
|
||||||
|
|
||||||
sty iobuff y=0
|
ldy #1
|
||||||
sty idxl
|
|
||||||
sty idxh
|
|
||||||
sty idxp
|
|
||||||
sty blok+1
|
|
||||||
|
|
||||||
iny y=1
|
|
||||||
sty dcmd set read command.
|
sty dcmd set read command.
|
||||||
|
|
||||||
iny y=2
|
iny y=2
|
||||||
|
@ -146,8 +146,9 @@ ndsk2 sta dent save low adr of device call entry.
|
||||||
rddir jsr goread call read block routine.
|
rddir jsr goread call read block routine.
|
||||||
bcs bterr2 give up on error.
|
bcs bterr2 give up on error.
|
||||||
|
|
||||||
inc iobuff+1
|
* inc iobuff+1
|
||||||
inc iobuff+1
|
* inc iobuff+1
|
||||||
|
|
||||||
inc blok
|
inc blok
|
||||||
lda blok have all directory blocks been read?
|
lda blok have all directory blocks been read?
|
||||||
cmp #6
|
cmp #6
|
||||||
|
@ -177,7 +178,7 @@ nxdent2 sty idxl
|
||||||
ldy #6
|
ldy #6
|
||||||
|
|
||||||
lookpro lda (idxl),y look for matching name.
|
lookpro lda (idxl),y look for matching name.
|
||||||
cmp BB.ProDOS,y
|
cmp BB.FX.ProDOS,y
|
||||||
bne nxdent branch if no match.
|
bne nxdent branch if no match.
|
||||||
|
|
||||||
dey
|
dey
|
||||||
|
@ -197,8 +198,7 @@ lookpro lda (idxl),y look for matching name.
|
||||||
lda (idxl),y
|
lda (idxl),y
|
||||||
sta blok+1
|
sta blok+1
|
||||||
|
|
||||||
lda #0 now set up to read kernel.
|
stz idxl
|
||||||
sta idxl
|
|
||||||
|
|
||||||
ldy #$1e read index block at $1e00 and
|
ldy #$1e read index block at $1e00 and
|
||||||
sty idxl+1 kernel at $2000
|
sty idxl+1 kernel at $2000
|
||||||
|
@ -209,8 +209,8 @@ lookpro lda (idxl),y look for matching name.
|
||||||
rdkernl jsr goread read index block.
|
rdkernl jsr goread read index block.
|
||||||
bterr2 bcs booterr
|
bterr2 bcs booterr
|
||||||
|
|
||||||
inc iobuff+1
|
* inc iobuff+1
|
||||||
inc iobuff+1
|
* inc iobuff+1
|
||||||
|
|
||||||
ldy idxp get index pointer
|
ldy idxp get index pointer
|
||||||
inc idxp bump for next time.
|
inc idxp bump for next time.
|
||||||
|
@ -227,16 +227,19 @@ booterr jsr clrscrn clear video
|
||||||
ldy #BB.MSG.ERR.Len-1
|
ldy #BB.MSG.ERR.Len-1
|
||||||
|
|
||||||
.1 lda BB.MSG.ERR,y
|
.1 lda BB.MSG.ERR,y
|
||||||
sta scrn,y
|
sta $5b6,y
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
jmp $ff69
|
jmp $ff69
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
goread lda iobuff
|
goread
|
||||||
sta buff
|
* lda iobuff
|
||||||
|
stz buff
|
||||||
lda iobuff+1
|
lda iobuff+1
|
||||||
sta buff+1
|
sta buff+1
|
||||||
|
inc iobuff+1
|
||||||
|
inc iobuff+1
|
||||||
jmp (dent)
|
jmp (dent)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
mods .DA #mod1,#mod2,#mod3,#mod4,#mod5,#mod6,#mod7,#mod8,#mod8+1,#mod9
|
mods .DA #mod1,#mod2,#mod3,#mod4,#mod5,#mod6,#mod7,#mod8,#mod8+1,#mod9
|
||||||
|
@ -247,11 +250,11 @@ endcode ldx BB.Slotn0
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
jmp BB.Seek
|
jmp BB.FX.SeekRead
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.MSG.ERR .AS -"BOOT ERROR"
|
BB.MSG.ERR .AS -"BOOT ERROR"
|
||||||
BB.MSG.ERR.Len .EQ *-BB.MSG.ERR
|
BB.MSG.ERR.Len .EQ *-BB.MSG.ERR
|
||||||
BB.ProDOS .DA #$26 $20 = storage type + 6 = "PRODOS" len
|
BB.FX.ProDOS .DA #$26 $20 = storage type + 6 = "PRODOS" len
|
||||||
.AS "PRODOS"
|
.AS "PRODOS"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.ReadBlock lda blok figure out track & sector.
|
BB.ReadBlock lda blok figure out track & sector.
|
||||||
|
@ -278,14 +281,14 @@ BB.ReadBlock lda blok figure out track & sector.
|
||||||
ldx BB.Slotn0
|
ldx BB.Slotn0
|
||||||
lda IO.D2.DrvOn,x
|
lda IO.D2.DrvOn,x
|
||||||
|
|
||||||
jsr BB.Seek go read sector.
|
jsr BB.FX.SeekRead
|
||||||
|
|
||||||
inc dbuf+1 bump address
|
inc dbuf+1 bump address
|
||||||
inc sector
|
inc sector
|
||||||
inc sector and sector #
|
inc sector and sector #
|
||||||
bcs .9 branch if error.
|
bcs .9 branch if error.
|
||||||
|
|
||||||
jsr BB.Seek
|
jsr BB.FX.Read
|
||||||
|
|
||||||
.9 ldy IO.D2.DrvOff,x
|
.9 ldy IO.D2.DrvOff,x
|
||||||
rts return error status in carry.
|
rts return error status in carry.
|
||||||
|
@ -304,30 +307,47 @@ BB.Wait100usecA phx (3)
|
||||||
|
|
||||||
rts (6)
|
rts (6)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.Trk2Qtrk asl x2
|
BB.Trk2Qtrk ldy BB.HdrVol
|
||||||
sta .1+1
|
beq .5
|
||||||
|
|
||||||
|
cpy #$85
|
||||||
|
bcs .5 > 192 ? must be a buggy 254
|
||||||
|
|
||||||
bit BB.HdrVol
|
sta BB.tmpTrk
|
||||||
bpl .1 x4
|
|
||||||
bvs .1 > $C0 ? (VOL=254)
|
|
||||||
|
|
||||||
lsr x3
|
tya
|
||||||
|
bpl .1
|
||||||
|
|
||||||
.1 adc #$ff SELF MODIFIED
|
lsr BB.HdrVol 2 sides
|
||||||
|
|
||||||
|
.1 and #%00000111 stepping
|
||||||
|
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
clc
|
||||||
|
|
||||||
|
.2 adc BB.tmpTrk
|
||||||
|
dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.5 asl
|
||||||
|
asl
|
||||||
|
|
||||||
BB.Trk2Qtrk.RTS rts
|
BB.Trk2Qtrk.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.Seek lda BB.HdrTrk get track we're on
|
BB.FX.SeekRead lda BB.TargetTrk
|
||||||
jsr BB.Trk2Qtrk
|
|
||||||
sta BB.CurrentQTrack
|
|
||||||
|
|
||||||
lda BB.TargetTrk
|
|
||||||
jsr BB.Trk2Qtrk
|
jsr BB.Trk2Qtrk
|
||||||
sta BB.TargetQTrack
|
sta BB.TargetQTrack
|
||||||
|
|
||||||
lda BB.CurrentQTrack
|
lda BB.HdrTrk get track we're on
|
||||||
|
jsr BB.Trk2Qtrk
|
||||||
|
sta BB.CurrentQTrack
|
||||||
|
|
||||||
cmp BB.TargetQTrack
|
cmp BB.TargetQTrack
|
||||||
beq BB.Read
|
beq BB.FX.Read
|
||||||
|
|
||||||
bit #1
|
bit #1
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -399,7 +419,7 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||||
lda IO.D2.Ph0Off,x
|
lda IO.D2.Ph0Off,x
|
||||||
.11
|
.11
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.Read ldx BB.Slotn0
|
BB.FX.Read ldx BB.Slotn0
|
||||||
|
|
||||||
stz BB.RetryCnt
|
stz BB.RetryCnt
|
||||||
php
|
php
|
||||||
|
@ -549,17 +569,14 @@ zzzend ldx BB.Slotn0
|
||||||
rts
|
rts
|
||||||
|
|
||||||
chg5 .EQ *-chg5a
|
chg5 .EQ *-chg5a
|
||||||
goseek jmp BB.Seek
|
goseek jmp BB.FX.SeekRead
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
BB.End .EQ *
|
|
||||||
BB.Free .EQ $a00-*
|
BB.Free .EQ $a00-*
|
||||||
.BS BB.Free
|
.BS BB.Free
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.EP
|
.EP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libblkdev.s.bb
|
SAVE usr/src/shared/x.bb.fx.s
|
||||||
LOAD usr/src/lib/libblkdev.s
|
|
||||||
ASM
|
|
571
SHARED/X.BB.FX2.S.txt
Normal file
571
SHARED/X.BB.FX2.S.txt
Normal file
|
@ -0,0 +1,571 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
* 0, 2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15
|
||||||
|
*
|
||||||
|
* $0800 : Block 00 ProDOS (sect 0,2)
|
||||||
|
* $0A00 : Block 01 SOS (sect 4,6)
|
||||||
|
* $0C00 : Block 02 Cat (sect 8,10)
|
||||||
|
* $0E00 : Block 03 Cat (sect 12,14)
|
||||||
|
* $1000 : Block 04 Cat (sect 1,3)
|
||||||
|
* $1200 : Block 05 Cat (sect 5,7)
|
||||||
|
*--------------------------------------
|
||||||
|
ROM.D2.DataBuf .EQ $26
|
||||||
|
ROM.D2.Slotn0 .EQ $2b
|
||||||
|
ROM.D2.oddbits .EQ $3c
|
||||||
|
ROM.D2.ReqSect .EQ $3d
|
||||||
|
|
||||||
|
BB.RetryCnt .EQ $40
|
||||||
|
BB.TargetTrk .EQ $41
|
||||||
|
|
||||||
|
ZP.BLK.CMD .EQ $42
|
||||||
|
ZP.BLK.UNIT .EQ $43
|
||||||
|
ZP.BLK.BUFPTR .EQ $44
|
||||||
|
ZP.BLK.BLKNUM .EQ $46
|
||||||
|
|
||||||
|
ZP.FX2.GoROM .EQ $48 device call entry address
|
||||||
|
ZP.FX2.iBLKLO .EQ $4a pointer to low page of index block
|
||||||
|
ZP.FX2.iBLKHI .EQ $4c pointer to high page of index block
|
||||||
|
ZP.FX2.iBLKPtr .EQ $4e index byte pointer
|
||||||
|
|
||||||
|
BB.CurrentQTrack .EQ $50
|
||||||
|
BB.TargetQTrack .EQ $51
|
||||||
|
BB.tmpTrk .EQ $52
|
||||||
|
BB.FX2.AddrField .EQ $53
|
||||||
|
BB.FX2.AddrField.S .EQ $54
|
||||||
|
BB.FX2.AddrField.T .EQ $55
|
||||||
|
BB.FX2.AddrField.V .EQ $56
|
||||||
|
*--------------------------------------
|
||||||
|
iobuff .EQ $60
|
||||||
|
|
||||||
|
nbuf1 .EQ $300
|
||||||
|
dnib .EQ $2d6
|
||||||
|
|
||||||
|
clrscrn .EQ $fc58
|
||||||
|
|
||||||
|
BB.FX2.CATBLK1 .EQ $c00
|
||||||
|
*--------------------------------------
|
||||||
|
*
|
||||||
|
* BLOCK 0
|
||||||
|
*
|
||||||
|
*--------------------------------------
|
||||||
|
.PH $800
|
||||||
|
BB.FX2.Boot .DA #1
|
||||||
|
sec Apple /// enters $800 'ora $38'
|
||||||
|
bcs BB.FX2.Apple2 branch if not apple iii native mode
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.Apple3 lda #$9f make Apple /// boot using block 1
|
||||||
|
pha the return address is $a000
|
||||||
|
lda #$ff
|
||||||
|
pha
|
||||||
|
|
||||||
|
inc
|
||||||
|
tax ldx #0
|
||||||
|
|
||||||
|
inc lda #1 (read block 1)
|
||||||
|
|
||||||
|
jmp $f479
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.Apple2 stx ZP.BLK.UNIT save unit number
|
||||||
|
cmp #3
|
||||||
|
php
|
||||||
|
|
||||||
|
txa find out if disk ii
|
||||||
|
and #$70 strip drive # if any
|
||||||
|
lsr
|
||||||
|
lsr get slot address
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
ora #$c0
|
||||||
|
sta ZP.FX2.GoROM+1
|
||||||
|
ldy #0
|
||||||
|
sty ZP.FX2.GoROM
|
||||||
|
|
||||||
|
plp
|
||||||
|
|
||||||
|
dey Y=#$ff
|
||||||
|
lda (ZP.FX2.GoROM),y get device entry addr
|
||||||
|
bne BB.FX2.BDEV branch if not disk ii (16 sector)
|
||||||
|
|
||||||
|
bcs BB.FX2.BDEV 2 sectors read
|
||||||
|
|
||||||
|
lda #3 make rom read only sector 2
|
||||||
|
sta BB.FX2.Boot to complete block 0
|
||||||
|
inc ROM.D2.ReqSect was = 1
|
||||||
|
|
||||||
|
lda ZP.FX2.GoROM+1
|
||||||
|
pha
|
||||||
|
lda #$5b
|
||||||
|
pha
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.BDEV sta ZP.FX2.GoROM save low adr of device call entry.
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
sty iobuff $0A00
|
||||||
|
sty ZP.BLK.BLKNUM+1 $0001
|
||||||
|
|
||||||
|
sty BB.FX2.AddrField.V tell BB.FX2.SeekReadD2 vol 00
|
||||||
|
sty BB.FX2.AddrField.T tell BB.FX2.SeekReadD2 we are on track 0
|
||||||
|
|
||||||
|
iny Y=1
|
||||||
|
sty ZP.BLK.CMD set read command.
|
||||||
|
|
||||||
|
sty ZP.BLK.BLKNUM to read SOS+directory blocks
|
||||||
|
|
||||||
|
lda #$0A 1-5 at $A00
|
||||||
|
sta iobuff+1 $0A00
|
||||||
|
|
||||||
|
.1 jsr BB.FX2.ReadBLK
|
||||||
|
bcs .9 give up on error.
|
||||||
|
|
||||||
|
inc ZP.BLK.BLKNUM
|
||||||
|
lda ZP.BLK.BLKNUM have all directory blocks been read?
|
||||||
|
cmp #6
|
||||||
|
bcc .1 loop if not.
|
||||||
|
|
||||||
|
jmp BB.FX2.ScanCat
|
||||||
|
|
||||||
|
.9 jmp BB.FX2.BootErr
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.ReadBLK lda iobuff
|
||||||
|
sta ZP.BLK.BUFPTR
|
||||||
|
lda iobuff+1
|
||||||
|
sta ZP.BLK.BUFPTR+1
|
||||||
|
|
||||||
|
inc iobuff+1
|
||||||
|
inc iobuff+1
|
||||||
|
|
||||||
|
lda ZP.FX2.GoROM
|
||||||
|
beq BB.FX2.ReadD2
|
||||||
|
|
||||||
|
jmp (ZP.FX2.GoROM)
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.ReadD2 lda ZP.BLK.BLKNUM figure out track & sector.
|
||||||
|
and #7 strip track for now.
|
||||||
|
cmp #4
|
||||||
|
and #3
|
||||||
|
php
|
||||||
|
asl
|
||||||
|
plp
|
||||||
|
rol now we have the first sector of block.
|
||||||
|
sta ROM.D2.ReqSect
|
||||||
|
|
||||||
|
lda ZP.BLK.BLKNUM+1 get high block #
|
||||||
|
lsr shift hi addr to carry.
|
||||||
|
lda ZP.BLK.BLKNUM now figure track #
|
||||||
|
ror
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
sta BB.TargetTrk
|
||||||
|
*--------------------------------------
|
||||||
|
lda ZP.BLK.BUFPTR+1
|
||||||
|
sta ROM.D2.DataBuf+1
|
||||||
|
|
||||||
|
ldx ROM.D2.Slotn0
|
||||||
|
lda IO.D2.DrvOn,x
|
||||||
|
|
||||||
|
jsr BB.FX2.SeekReadD2
|
||||||
|
|
||||||
|
inc ROM.D2.DataBuf+1 bump address
|
||||||
|
inc ROM.D2.ReqSect
|
||||||
|
inc ROM.D2.ReqSect and sector #
|
||||||
|
bcs .9 branch if error.
|
||||||
|
|
||||||
|
jsr BB.FX2.ReadSectD2
|
||||||
|
|
||||||
|
.9 ldx ROM.D2.Slotn0
|
||||||
|
ldy IO.D2.DrvOff,x
|
||||||
|
rts return error status in carry.
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.HeadSelect
|
||||||
|
lda BB.FX2.AddrField.V
|
||||||
|
beq .8 VOL = 00
|
||||||
|
|
||||||
|
asl
|
||||||
|
bcc .8 single sided
|
||||||
|
|
||||||
|
bmi .8 > 192
|
||||||
|
|
||||||
|
lda BB.TargetTrk
|
||||||
|
and #1
|
||||||
|
lsr
|
||||||
|
php
|
||||||
|
|
||||||
|
rol
|
||||||
|
rol A = 0/2
|
||||||
|
|
||||||
|
ora ROM.D2.Slotn0
|
||||||
|
tay y = n0/n2
|
||||||
|
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
lda IO.D2.Ph0On+4,y
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
jsr BB.Wait100usecA
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,y
|
||||||
|
lda IO.D2.Ph0Off+4,y
|
||||||
|
|
||||||
|
lsr BB.FX2.AddrField.T
|
||||||
|
plp
|
||||||
|
rol BB.FX2.AddrField.T
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.Trk2Qtrk
|
||||||
|
ldy BB.FX2.AddrField.V
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
cpy #$85
|
||||||
|
bcs .5 > 192 ? must be a buggy 254
|
||||||
|
|
||||||
|
sta BB.tmpTrk
|
||||||
|
|
||||||
|
tya
|
||||||
|
and #%00000111 stepping
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
clc
|
||||||
|
|
||||||
|
.2 adc BB.tmpTrk
|
||||||
|
dey
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.5 asl X4 standard stepping
|
||||||
|
asl
|
||||||
|
|
||||||
|
BB.Trk2Qtrk.RTS rts
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.SeekReadD2
|
||||||
|
jsr BB.FX2.HeadSelect
|
||||||
|
|
||||||
|
lda BB.TargetTrk
|
||||||
|
jsr BB.FX2.Trk2Qtrk
|
||||||
|
sta BB.TargetQTrack
|
||||||
|
|
||||||
|
lda BB.FX2.AddrField.T
|
||||||
|
jsr BB.FX2.Trk2Qtrk
|
||||||
|
sta BB.CurrentQTrack
|
||||||
|
|
||||||
|
cmp BB.TargetQTrack
|
||||||
|
beq BB.FX2.ReadSectD2
|
||||||
|
|
||||||
|
bit #1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
jsr .20 we are on 0/4 or 2/4 track
|
||||||
|
|
||||||
|
bra .10 no wait, next operation will be phy/plx/Ph0On,y
|
||||||
|
|
||||||
|
.1 cmp BB.TargetQTrack we are on 1/4 or 3/4
|
||||||
|
bcs .2 if CS, C > T, must move out
|
||||||
|
|
||||||
|
inc CC: C < T, ON next PH
|
||||||
|
|
||||||
|
.HS B0 BCS
|
||||||
|
|
||||||
|
.2 dec CS: C > T, ON prev PH
|
||||||
|
|
||||||
|
sta BB.CurrentQTrack
|
||||||
|
|
||||||
|
bra .6 Ph ON to go to 0/4 or 2/4, then wait
|
||||||
|
*--------------------------------------
|
||||||
|
.20 and #6
|
||||||
|
ora ROM.D2.Slotn0
|
||||||
|
tay
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
.3 bcs .4 if CS, C > T, must move out
|
||||||
|
|
||||||
|
inc CC: C < T, ON next PH
|
||||||
|
|
||||||
|
.HS B0 BCS
|
||||||
|
|
||||||
|
.4 dec CS: C > T, ON prev PH
|
||||||
|
|
||||||
|
sta BB.CurrentQTrack
|
||||||
|
|
||||||
|
bit #1
|
||||||
|
bne .5 we must go to 1/4 or 3/4
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x we must go to 0/4 or 2/4 : Off Prev Ph
|
||||||
|
bra .8 go wait....
|
||||||
|
|
||||||
|
.5 phy we must go on 1/4 or 3/4
|
||||||
|
plx Y already ON, -> X for Ph0Off,x
|
||||||
|
|
||||||
|
bcs .6 if CS, C > T, must move out
|
||||||
|
|
||||||
|
inc CC: C < T, ON next PH
|
||||||
|
|
||||||
|
.6 jsr .20 now X and Y on
|
||||||
|
|
||||||
|
.8 lda #IO.D2.SeekTimeB
|
||||||
|
|
||||||
|
.9 jsr BB.Wait100usecA ...wait...
|
||||||
|
|
||||||
|
.10 lda BB.CurrentQTrack
|
||||||
|
cmp BB.TargetQTrack
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
lsr CS if X,Y on
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
jsr BB.Wait100usecA
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,y
|
||||||
|
bcc .11
|
||||||
|
|
||||||
|
lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
|
.11
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.ReadSectD2
|
||||||
|
ldx ROM.D2.Slotn0
|
||||||
|
|
||||||
|
stz BB.RetryCnt
|
||||||
|
php
|
||||||
|
|
||||||
|
tryread plp fix stack.
|
||||||
|
|
||||||
|
rdhead sec anticipate error.
|
||||||
|
inc BB.RetryCnt if = 0 then give up!
|
||||||
|
beq BB.Trk2Qtrk.RTS branch if can't fine/read sector.
|
||||||
|
|
||||||
|
clc indicate reading header.
|
||||||
|
|
||||||
|
ldy #0 Retry cnt waiting D5
|
||||||
|
|
||||||
|
rddata php carry set if reading DATA.
|
||||||
|
|
||||||
|
rd0 iny
|
||||||
|
beq tryread
|
||||||
|
|
||||||
|
rd1 lda IO.D2.RData,x read a byte from the state machine.
|
||||||
|
bpl rd1 loop until ready.
|
||||||
|
|
||||||
|
rd1a eor #$d5 mark 1?
|
||||||
|
bne rd0 branch if not.
|
||||||
|
|
||||||
|
rd2 lda IO.D2.RData,x
|
||||||
|
bpl rd2
|
||||||
|
|
||||||
|
cmp #$aa mark 2?
|
||||||
|
bne rd1a
|
||||||
|
nop waste a little time.
|
||||||
|
|
||||||
|
rd3 lda IO.D2.RData,x
|
||||||
|
bpl rd3
|
||||||
|
|
||||||
|
cmp #$96 header mark 3?
|
||||||
|
beq rdhd1 branch if it is.
|
||||||
|
|
||||||
|
plp were we looking for data mark 3?
|
||||||
|
bcc rdhead branch if not.
|
||||||
|
|
||||||
|
eor #$ad data mark 3?
|
||||||
|
beq rddt1 go read data field if true...
|
||||||
|
|
||||||
|
rdhd0 bne rdhead otherwise, start over.
|
||||||
|
|
||||||
|
rdhd1 ldy #3 read volume,trk,sect
|
||||||
|
|
||||||
|
rdhd2 lda IO.D2.RData,x
|
||||||
|
bpl rdhd2
|
||||||
|
|
||||||
|
rol
|
||||||
|
sta ROM.D2.oddbits save odd bits (7,5,3,1)
|
||||||
|
|
||||||
|
rdhd4 lda IO.D2.RData,x
|
||||||
|
bpl rdhd4
|
||||||
|
|
||||||
|
and ROM.D2.oddbits combine even and odd to form value.
|
||||||
|
sta BB.FX2.AddrField,y
|
||||||
|
dey
|
||||||
|
bne rdhd2 ignore Checksum, A=sector
|
||||||
|
|
||||||
|
plp
|
||||||
|
cmp ROM.D2.ReqSect last byte formed is sector#
|
||||||
|
bne rdhead branch if target sector not found.
|
||||||
|
|
||||||
|
lda BB.FX2.AddrField.T previous result is track #
|
||||||
|
cmp BB.TargetTrk is desired track found?
|
||||||
|
bne goseek re-seek if mismatch.
|
||||||
|
|
||||||
|
bcs rddata branch if proper track always.
|
||||||
|
*--------------------------------------
|
||||||
|
rddt1 ldy #$56 read 2 bit groupings first.
|
||||||
|
rddt1a sty ROM.D2.oddbits
|
||||||
|
|
||||||
|
rddt2 ldy IO.D2.RData,x
|
||||||
|
bpl rddt2
|
||||||
|
|
||||||
|
eor dnib,y denibblize using table left from boot rom.
|
||||||
|
ldy ROM.D2.oddbits save in nbuf1
|
||||||
|
dey
|
||||||
|
sta nbuf1,y
|
||||||
|
bne rddt1a loop until all 86 groups are read.
|
||||||
|
|
||||||
|
rddt3 sty ROM.D2.oddbits now count up for 6-bit groups.
|
||||||
|
|
||||||
|
rddt4 ldy IO.D2.RData,x
|
||||||
|
bpl rddt4
|
||||||
|
|
||||||
|
eor dnib,y
|
||||||
|
ldy ROM.D2.oddbits save result to specified buffer.
|
||||||
|
sta (ROM.D2.DataBuf),y
|
||||||
|
iny
|
||||||
|
bne rddt3 loop for 256 bytes.
|
||||||
|
|
||||||
|
rdchk ldy IO.D2.RData,x now verify checksum...
|
||||||
|
bpl rdchk
|
||||||
|
|
||||||
|
eor dnib,y must be equal...
|
||||||
|
bne rdhd0 branch if error.
|
||||||
|
|
||||||
|
ldy #0 make y=0
|
||||||
|
|
||||||
|
nxttwo ldx #$56 now combine 2-bit group with 6 bit group
|
||||||
|
|
||||||
|
twobit dex all done with this group?
|
||||||
|
bmi nxttwo branch if so.
|
||||||
|
|
||||||
|
lda (ROM.D2.DataBuf),y
|
||||||
|
lsr nbuf1,x
|
||||||
|
rol
|
||||||
|
lsr nbuf1,x
|
||||||
|
rol
|
||||||
|
sta (ROM.D2.DataBuf),y
|
||||||
|
iny
|
||||||
|
bne twobit
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
goseek jmp BB.FX2.SeekReadD2
|
||||||
|
*--------------------------------------
|
||||||
|
BB.Wait100usecA phx (3)
|
||||||
|
|
||||||
|
.1 ldx #20 (2)
|
||||||
|
|
||||||
|
.2 dex (2)
|
||||||
|
bne .2 (3)
|
||||||
|
|
||||||
|
dec (2)
|
||||||
|
bne .1 (3)
|
||||||
|
|
||||||
|
plx (4)
|
||||||
|
|
||||||
|
rts (6)
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.BootErr jsr clrscrn clear video
|
||||||
|
ldy #BB.MSG.ERR.Len-1
|
||||||
|
|
||||||
|
.1 lda BB.MSG.ERR,y
|
||||||
|
sta $5b6,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
jmp $ff69
|
||||||
|
*--------------------------------------
|
||||||
|
BB.MSG.ERR .AS -"BOOT ERROR"
|
||||||
|
BB.MSG.ERR.Len .EQ *-BB.MSG.ERR
|
||||||
|
*--------------------------------------
|
||||||
|
*
|
||||||
|
* BLOCK 1
|
||||||
|
*
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.ScanCat ldy #0
|
||||||
|
sty ZP.FX2.iBLKLO
|
||||||
|
sty ZP.FX2.iBLKHI
|
||||||
|
sty ZP.FX2.iBLKPtr
|
||||||
|
|
||||||
|
sta ZP.FX2.iBLKLO+1
|
||||||
|
|
||||||
|
lda #4 begin look-up with first entry past header.
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
.1 lda ZP.FX2.iBLKLO
|
||||||
|
clc
|
||||||
|
adc BB.FX2.CATBLK1+$23 ENTRY_LEN : bump to next directory entry.
|
||||||
|
tay save in y for now.
|
||||||
|
bcc .2 branch if not a page cross.
|
||||||
|
|
||||||
|
inc ZP.FX2.iBLKLO+1
|
||||||
|
lda ZP.FX2.iBLKLO+1 check for new block.
|
||||||
|
lsr if even then new block.
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
cmp #$a have all file names been compared?
|
||||||
|
beq BB.FX2.BootErr branch if no pro.kernel.
|
||||||
|
|
||||||
|
ldy #4 else, begin at block beginning.
|
||||||
|
|
||||||
|
.2 sty ZP.FX2.iBLKLO
|
||||||
|
|
||||||
|
ldy #6
|
||||||
|
|
||||||
|
.3 lda (ZP.FX2.iBLKLO),y look for matching name.
|
||||||
|
cmp BB.FX2.ProDOS,y
|
||||||
|
bne .1 branch if no match.
|
||||||
|
|
||||||
|
dey
|
||||||
|
bpl .3
|
||||||
|
|
||||||
|
* ldy #$10 get file type & index block addr.
|
||||||
|
* lda (ZP.FX2.iBLKLO),y
|
||||||
|
* cmp #S.FI.T.SYS is it a system file?
|
||||||
|
* bne BB.FX2.BootErr
|
||||||
|
* iny
|
||||||
|
|
||||||
|
ldy #$11
|
||||||
|
|
||||||
|
lda (ZP.FX2.iBLKLO),y
|
||||||
|
sta ZP.BLK.BLKNUM
|
||||||
|
iny
|
||||||
|
lda (ZP.FX2.iBLKLO),y
|
||||||
|
sta ZP.BLK.BLKNUM+1
|
||||||
|
|
||||||
|
stz ZP.FX2.iBLKLO
|
||||||
|
stz ZP.FX2.iBLKHI
|
||||||
|
|
||||||
|
ldy #$1e read index block at $1e00 and
|
||||||
|
sty ZP.FX2.iBLKLO+1 kernel at $2000
|
||||||
|
sty iobuff+1
|
||||||
|
iny
|
||||||
|
sty ZP.FX2.iBLKHI+1
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.LOADSYS jsr BB.FX2.ReadBLK read index block.
|
||||||
|
bcs BB.FX2.BootErr
|
||||||
|
|
||||||
|
ldy ZP.FX2.iBLKPtr get index pointer
|
||||||
|
inc ZP.FX2.iBLKPtr bump for next time.
|
||||||
|
|
||||||
|
lda (ZP.FX2.iBLKLO),y
|
||||||
|
sta ZP.BLK.BLKNUM
|
||||||
|
lda (ZP.FX2.iBLKHI),y high disk addr.
|
||||||
|
sta ZP.BLK.BLKNUM+1
|
||||||
|
|
||||||
|
ora (ZP.FX2.iBLKLO),y if both=0 then done.
|
||||||
|
bne BB.FX2.LOADSYS branch if more to read.
|
||||||
|
|
||||||
|
jmp $2000 go execute kernel code.
|
||||||
|
*--------------------------------------
|
||||||
|
BB.FX2.ProDOS .DA #$26 $20 = storage type + 6 = "PRODOS" len
|
||||||
|
.AS "PRODOS"
|
||||||
|
*--------------------------------------
|
||||||
|
.LIST ON
|
||||||
|
BB.FX2.Free .EQ $C00-*
|
||||||
|
.BS BB.FX2.Free
|
||||||
|
.LIST OFF
|
||||||
|
.EP
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/shared/x.bb.fx2.s
|
||||||
|
LOAD usr/src/lib/libblkdev.s
|
||||||
|
ASM
|
38
SHARED/X.BB.PRODOS.S.txt
Normal file
38
SHARED/X.BB.PRODOS.S.txt
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
.HS 01.38.b0.03.4c.32.a1.86.43.c9.03.08.8a.29.70.4a
|
||||||
|
.HS 4a.4a.4a.09.c0.85.49.a0.ff.84.48.28.c8.b1.48.d0
|
||||||
|
.HS 3a.b0.0e.a9.03.8d.00.08.e6.3d.a5.49.48.a9.5b.48
|
||||||
|
.HS 60.85.40.85.48.a0.63.b1.48.99.94.09.c8.c0.eb.d0
|
||||||
|
.HS f6.a2.06.bc.1d.09.bd.24.09.99.f2.09.bd.2b.09.9d
|
||||||
|
.HS 7f.0a.ca.10.ee.a9.09.85.49.a9.86.a0.00.c9.f9.b0
|
||||||
|
.HS 2f.85.48.84.60.84.4a.84.4c.84.4e.84.47.c8.84.42
|
||||||
|
.HS c8.84.46.a9.0c.85.61.85.4b.20.12.09.b0.68.e6.61
|
||||||
|
.HS e6.61.e6.46.a5.46.c9.06.90.ef.ad.00.0c.0d.01.0c
|
||||||
|
.HS d0.6d.a9.04.d0.02.a5.4a.18.6d.23.0c.a8.90.0d.e6
|
||||||
|
.HS 4b.a5.4b.4a.b0.06.c9.0a.f0.55.a0.04.84.4a.ad.02
|
||||||
|
.HS 09.29.0f.a8.b1.4a.d9.02.09.d0.db.88.10.f6.29.f0
|
||||||
|
.HS c9.20.d0.3b.a0.10.b1.4a.c9.ff.d0.33.c8.b1.4a.85
|
||||||
|
.HS 46.c8.b1.4a.85.47.a9.00.85.4a.a0.1e.84.4b.84.61
|
||||||
|
.HS c8.84.4d.20.12.09.b0.17.e6.61.e6.61.a4.4e.e6.4e
|
||||||
|
.HS b1.4a.85.46.b1.4c.85.47.11.4a.d0.e7.4c.00.20.4c
|
||||||
|
.HS 3f.09.26.50.52.4f.44.4f.53.20.20.20.20.20.20.20
|
||||||
|
.HS 20.20.a5.60.85.44.a5.61.85.45.6c.48.00.08.1e.24
|
||||||
|
.HS 3f.45.47.76.f4.d7.d1.b6.4b.b4.ac.a6.2b.18.60.4c
|
||||||
|
.HS bc.09.a9.9f.48.a9.ff.48.a9.01.a2.00.4c.79.f4.20
|
||||||
|
.HS 58.fc.a0.1c.b9.50.09.99.ae.05.88.10.f7.4c.4d.09
|
||||||
|
.HS aa.aa.aa.a0.d5.ce.c1.c2.cc.c5.a0.d4.cf.a0.cc.cf
|
||||||
|
.HS c1.c4.a0.d0.d2.cf.c4.cf.d3.a0.aa.aa.aa.a5.53.29
|
||||||
|
.HS 03.2a.05.2b.aa.bd.80.c0.a9.2c.a2.11.ca.d0.fd.e9
|
||||||
|
.HS 01.d0.f7.a6.2b.60.a5.46.29.07.c9.04.29.03.08.0a
|
||||||
|
.HS 28.2a.85.3d.a5.47.4a.a5.46.6a.4a.4a.85.41.0a.85
|
||||||
|
.HS 51.a5.45.85.27.a6.2b.bd.89.c0.20.bc.09.e6.27.e6
|
||||||
|
.HS 3d.e6.3d.b0.03.20.bc.09.bc.88.c0.60.a5.40.0a.85
|
||||||
|
.HS 53.a9.00.85.54.a5.53.85.50.38.e5.51.f0.14.b0.04
|
||||||
|
.HS e6.53.90.02.c6.53.38.20.6d.09.a5.50.18.20.6f.09
|
||||||
|
.HS d0.e3.a0.7f.84.52.08.28.38.c6.52.f0.ce.18.08.88
|
||||||
|
.HS f0.f5.bd.8c.c0.10.fb.00.00.00.00.00.00.00.00.00
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/shared/x.bb.prodos.s
|
38
SHARED/X.BB.SOS.S.txt
Normal file
38
SHARED/X.BB.SOS.S.txt
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
.HS 4c.6e.a0.53.4f.53.20.42.4f.4f.54.20.20.31.2e.31
|
||||||
|
.HS 20.0a.53.4f.53.2e.4b.45.52.4e.45.4c.20.20.20.20
|
||||||
|
.HS 20.53.4f.53.20.4b.52.4e.4c.49.2f.4f.20.45.52.52
|
||||||
|
.HS 4f.52.08.00.46.49.4c.45.20.27.53.4f.53.2e.4b.45
|
||||||
|
.HS 52.4e.45.4c.27.20.4e.4f.54.20.46.4f.55.4e.44.25
|
||||||
|
.HS 00.49.4e.56.41.4c.49.44.20.4b.45.52.4e.45.4c.20
|
||||||
|
.HS 46.49.4c.45.3a.00.00.0c.00.1e.0e.1e.04.a4.78.d8
|
||||||
|
.HS a9.77.8d.df.ff.a2.fb.9a.2c.10.c0.a9.40.8d.ca.ff
|
||||||
|
.HS a9.07.8d.ef.ff.a2.00.ce.ef.ff.8e.00.20.ad.00.20
|
||||||
|
.HS d0.f5.a9.01.85.e0.a9.00.85.e1.a9.00.85.85.a9.a2
|
||||||
|
.HS 85.86.20.be.a1.e6.e0.a9.00.85.e6.e6.86.e6.86.e6
|
||||||
|
.HS e6.20.be.a1.a0.02.b1.85.85.e0.c8.b1.85.85.e1.d0
|
||||||
|
.HS ea.a5.e0.d0.e6.ad.6c.a0.85.e2.ad.6d.a0.85.e3.18
|
||||||
|
.HS a5.e3.69.02.85.e5.38.a5.e2.ed.23.a4.85.e4.a5.e5
|
||||||
|
.HS e9.00.85.e5.a0.00.b1.e2.29.0f.cd.11.a0.d0.21.a8
|
||||||
|
.HS b1.e2.d9.11.a0.d0.19.88.d0.f6.a0.00.b1.e2.29.f0
|
||||||
|
.HS c9.20.f0.3e.c9.f0.f0.08.ae.64.a0.a0.13.4c.d4.a1
|
||||||
|
.HS 18.a5.e2.6d.23.a4.85.e2.a5.e3.69.00.85.e3.a5.e4
|
||||||
|
.HS c5.e2.a5.e5.e5.e3.b0.bc.18.a5.e4.6d.23.a4.85.e2
|
||||||
|
.HS a5.e5.69.00.85.e3.c6.e6.d0.95.ae.4f.a0.a0.1b.4c
|
||||||
|
.HS d4.a1.a0.11.b1.e2.85.e0.c8.b1.e2.85.e1.ad.66.a0
|
||||||
|
.HS 85.85.ad.67.a0.85.86.20.be.a1.ad.68.a0.85.85.ad
|
||||||
|
.HS 69.a0.85.86.ad.00.0c.85.e0.ad.00.0d.85.e1.20.be
|
||||||
|
.HS a1.a2.07.bd.00.1e.dd.21.a0.f0.08.ae.64.a0.a0.13
|
||||||
|
.HS 4c.d4.a1.ca.10.ed.a9.00.85.e7.e6.e7.e6.86.e6.86
|
||||||
|
.HS a6.e7.bd.00.0c.85.e0.bd.00.0d.85.e1.a5.e0.d0.04
|
||||||
|
.HS a5.e1.f0.06.20.be.a1.4c.8a.a1.18.ad.6a.a0.6d.08
|
||||||
|
.HS 1e.85.e8.ad.6b.a0.6d.09.1e.85.e9.6c.e8.00.a9.01
|
||||||
|
.HS 85.87.a5.e0.a6.e1.20.79.f4.b0.01.60.ae.32.a0.a0
|
||||||
|
.HS 09.4c.d4.a1.84.e7.38.a9.28.e5.e7.4a.18.65.e7.a8
|
||||||
|
.HS bd.29.a0.99.a7.05.ca.88.c6.e7.d0.f4.ad.40.c0.4c
|
||||||
|
.HS ef.a1.00.00.00.00.00.00.00.00.00.00.00.00.00.00
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/shared/x.bb.sos.s
|
193
SHARED/X.TRKFMT.S.txt
Normal file
193
SHARED/X.TRKFMT.S.txt
Normal file
|
@ -0,0 +1,193 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
X.TRKFMT.VolNum .EQ X.TRKFMT.Z
|
||||||
|
X.TRKFMT.TrkNum .EQ X.TRKFMT.Z+1
|
||||||
|
X.TRKFMT.SectNum .EQ X.TRKFMT.Z+2
|
||||||
|
X.TRKFMT.CheckSum .EQ X.TRKFMT.Z+3
|
||||||
|
*--------------------------------------
|
||||||
|
X.TRKFMT lda #$ff
|
||||||
|
|
||||||
|
sta IO.D2.WriteMode,x goto write mode
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
|
||||||
|
jsr X.TRKFMT.W14 (14)
|
||||||
|
|
||||||
|
lda #0 (2)
|
||||||
|
sta X.TRKFMT.SectNum (3)
|
||||||
|
|
||||||
|
ldy #0 (2) 256 SyncBytes
|
||||||
|
|
||||||
|
jsr X.TRKFMT.SyncBytes (15..15)
|
||||||
|
|
||||||
|
nop (2)
|
||||||
|
nop (2)
|
||||||
|
nop (2)
|
||||||
|
nop (2)
|
||||||
|
|
||||||
|
.1 jsr X.TRKFMT.AddrField (17..15)
|
||||||
|
|
||||||
|
ldy #6 (2)
|
||||||
|
|
||||||
|
jsr X.TRKFMT.SyncBytes (15..15)
|
||||||
|
|
||||||
|
jsr X.TRKFMT.W14 (14)
|
||||||
|
|
||||||
|
ldy #2 (2)
|
||||||
|
|
||||||
|
.2 lda X.TRKFMT.DATA,y (4)
|
||||||
|
sta IO.D2.WLoad,x (5)
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
dey (2)
|
||||||
|
bmi .22 (3-)
|
||||||
|
|
||||||
|
jsr X.TRKFMT.W12 (12)
|
||||||
|
bra .2 (3)
|
||||||
|
|
||||||
|
.22 jsr X.TRKFMT.W14 (14)
|
||||||
|
|
||||||
|
ldy #86 (2) 256+86...
|
||||||
|
lda #$96 (2)
|
||||||
|
|
||||||
|
sta IO.D2.WLoad,x (5) ...+1
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
|
||||||
|
nop (2)
|
||||||
|
bra .3 (3)
|
||||||
|
|
||||||
|
.3 jsr X.TRKFMT.W14 (14)
|
||||||
|
|
||||||
|
nop (2)
|
||||||
|
|
||||||
|
lda #$96 (2)
|
||||||
|
sta IO.D2.WLoad,x (5)
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
|
||||||
|
dey (2)
|
||||||
|
bne .3 (3)-
|
||||||
|
|
||||||
|
bra .5 (3)
|
||||||
|
|
||||||
|
.4 nop (2)
|
||||||
|
|
||||||
|
.5 jsr X.TRKFMT.W14 (14)
|
||||||
|
|
||||||
|
lda #$96 (2)
|
||||||
|
sta IO.D2.WLoad,x (5)
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
|
||||||
|
dey (2)
|
||||||
|
bne .4 (3)-
|
||||||
|
|
||||||
|
inc X.TRKFMT.SectNum (5)
|
||||||
|
|
||||||
|
jsr X.TRKFMT.EndMark (19..15)
|
||||||
|
|
||||||
|
ldy #16 (2)
|
||||||
|
|
||||||
|
jsr X.TRKFMT.SyncBytes (15..15)
|
||||||
|
|
||||||
|
lda X.TRKFMT.SectNum (3)
|
||||||
|
cmp #16 (2)
|
||||||
|
bne .1 (3-)
|
||||||
|
|
||||||
|
lda IO.D2.ReadMode,x (4) out of write mode
|
||||||
|
lda IO.D2.WShift,x (4) to read mode.
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
X.TRKFMT.SyncBytes
|
||||||
|
nop (2)
|
||||||
|
|
||||||
|
lda #$ff (2)
|
||||||
|
|
||||||
|
.1 sta IO.D2.WLoad,x (5)
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
dey (2)
|
||||||
|
beq .8 (3-)
|
||||||
|
|
||||||
|
jsr X.TRKFMT.W12 (12)
|
||||||
|
jsr X.TRKFMT.W12 (12)
|
||||||
|
|
||||||
|
bra .1 (3)
|
||||||
|
|
||||||
|
.8 rts (6)
|
||||||
|
*--------------------------------------
|
||||||
|
X.TRKFMT.AddrField
|
||||||
|
ldy #2 (2)
|
||||||
|
|
||||||
|
.1 lda X.TRKFMT.ADDR,y (4)
|
||||||
|
sta IO.D2.WLoad,x (5)
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
dey (2)
|
||||||
|
bmi .2 (3-)
|
||||||
|
|
||||||
|
lda X.TRKFMT.VolNum (3)
|
||||||
|
eor X.TRKFMT.TrkNum (3)
|
||||||
|
eor X.TRKFMT.SectNum (3)
|
||||||
|
sta X.TRKFMT.Checksum (3)
|
||||||
|
bra .1 (3)
|
||||||
|
|
||||||
|
.2 lda X.TRKFMT.VolNum (3)
|
||||||
|
lda X.TRKFMT.VolNum (3)
|
||||||
|
jsr X.TRKFMT.W4x4 (17..12)
|
||||||
|
|
||||||
|
lda X.TRKFMT.TrkNum (3)
|
||||||
|
jsr X.TRKFMT.W4x4 (17..12)
|
||||||
|
|
||||||
|
lda X.TRKFMT.SectNum (3)
|
||||||
|
jsr X.TRKFMT.W4x4 (17..12)
|
||||||
|
|
||||||
|
lda X.TRKFMT.Checksum (3)
|
||||||
|
jsr X.TRKFMT.W4x4 (17..12)
|
||||||
|
|
||||||
|
pha (3)
|
||||||
|
pla (4)
|
||||||
|
*--------------------------------------
|
||||||
|
X.TRKFMT.EndMark
|
||||||
|
ldy #2 (2)
|
||||||
|
|
||||||
|
nop (2)
|
||||||
|
|
||||||
|
.1 lda X.TRKFMT.END,y (4)
|
||||||
|
sta IO.D2.WLoad,x (5)
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
dey (2)
|
||||||
|
bmi .8 (3-)
|
||||||
|
|
||||||
|
jsr X.TRKFMT.W12 (12)
|
||||||
|
bra .1 (3)
|
||||||
|
|
||||||
|
.8 rts (6)
|
||||||
|
*--------------------------------------
|
||||||
|
X.TRKFMT.W4x4 tay (2)
|
||||||
|
lsr (2)
|
||||||
|
ora #$AA (2)
|
||||||
|
sta IO.D2.WLoad,x (5)
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
|
||||||
|
jsr X.TRKFMT.W12 (12)
|
||||||
|
|
||||||
|
pha (3)
|
||||||
|
pla (4)
|
||||||
|
|
||||||
|
tya (2)
|
||||||
|
ora #$AA (2)
|
||||||
|
|
||||||
|
sta IO.D2.WLoad,x (5)
|
||||||
|
ora IO.D2.WShift,x (4)
|
||||||
|
|
||||||
|
X.TRKFMT.W14 nop (2)
|
||||||
|
|
||||||
|
X.TRKFMT.W12 rts (6)
|
||||||
|
*--------------------------------------
|
||||||
|
.LIST ON
|
||||||
|
X.TRKFMT.ADDR .HS 96AAD5
|
||||||
|
X.TRKFMT.DATA .HS ADAAD5
|
||||||
|
X.TRKFMT.END .HS EBAADE
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/shared/x.trkfmt.s
|
||||||
|
LOAD usr/src/basic.fx/basic.s
|
||||||
|
ASM
|
Loading…
Reference in New Issue
Block a user