mirror of
https://github.com/A2osX/A2osX.git
synced 2025-03-17 10:29:37 +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
|
||||
*--------------------------------------
|
||||
LA021 jsr BS.KW.FRE
|
||||
bcs LA020
|
||||
BS.FRE0 ldx #BSX.Fre0.X
|
||||
.HS 2C BIT ABS
|
||||
BS.KW.FRE
|
||||
BS.FRE1 ldx #BSX.Fre0.X
|
||||
|
||||
lda AS.PGRMSTART+1
|
||||
sta BS.TXTTAB+1
|
||||
lda AS.PGRMSTART
|
||||
sta BS.TXTTAB
|
||||
ldy #13
|
||||
|
||||
lda AS.HIMEM+1
|
||||
sta XBBD8
|
||||
lda #$03
|
||||
sta XBBD9
|
||||
.1 lda AS.PGRMSTART,y
|
||||
sta ASX.PGRMSTART,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
lda AS.STRINGSTART+1
|
||||
sta BS.MEMSIZE+1
|
||||
jsr BS.ToAUX
|
||||
bcs .9
|
||||
|
||||
lda #$00
|
||||
sta BS.MEMSIZE
|
||||
bra LA089 Z
|
||||
pha
|
||||
phy
|
||||
ldy #13
|
||||
|
||||
.2 lda ASX.PGRMSTART,y
|
||||
sta AS.PGRMSTART,y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
ply
|
||||
pla
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
BS.KW.FRE stz BS.TXTTAB
|
||||
|
||||
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
|
||||
* DUPLICATE CODE in BASIC.S.XM.txt
|
||||
*--------------------------------------
|
||||
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
|
||||
lda XBBDC
|
||||
sta ZP.A2L
|
||||
@ -1109,69 +950,6 @@ LA170 ldy #$02
|
||||
clc
|
||||
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
|
||||
SAVE usr/src/basic.fx/basic.s.a
|
||||
LOAD usr/src/basic.fx/basic.s
|
||||
|
@ -3,7 +3,7 @@ NEW
|
||||
*--------------------------------------
|
||||
BS.GetSysBuf lda #$04
|
||||
|
||||
LA1FB sta XBBB5
|
||||
BS.GetSysBufA sta XBBB5
|
||||
jsr BS.KW.FRE
|
||||
bcs .99
|
||||
|
||||
@ -54,7 +54,7 @@ LA1FB sta XBBB5
|
||||
XBBB5 .BS 1
|
||||
*--------------------------------------
|
||||
BS.FreeSysBuf jsr BS.KW.FRE
|
||||
bcs LA29D
|
||||
bcs .9
|
||||
|
||||
lda AS.HIMEM+1
|
||||
sbc #$00
|
||||
@ -86,24 +86,27 @@ BS.FreeSysBuf jsr BS.KW.FRE
|
||||
|
||||
lda BS.BUFPAGE
|
||||
cmp AS.HIMEM+1
|
||||
beq LA2B7
|
||||
beq .8
|
||||
|
||||
pha
|
||||
ldx GP.OPENCNT
|
||||
beq LA29B
|
||||
beq .2
|
||||
|
||||
lda AS.HIMEM+1
|
||||
|
||||
LA293 cmp BS.BUFPAGEs-1,x
|
||||
.1 cmp BS.BUFPAGEs-1,x
|
||||
beq LA29E
|
||||
|
||||
dex
|
||||
bne LA293
|
||||
bne .1
|
||||
|
||||
LA29B pla
|
||||
.2 pla
|
||||
sec
|
||||
LA29D rts
|
||||
.9 rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LA29E pla
|
||||
*--------------------------------------
|
||||
BS.SetFileBuf sta GP.SBUFADR+1
|
||||
@ -114,52 +117,49 @@ BS.SetFileBuf sta GP.SBUFADR+1
|
||||
sta GP.MLIMRKEOFBUF.REFNUM
|
||||
lda #MLI.C.SETBUF
|
||||
jmp GP.GOSYSTEM
|
||||
|
||||
LA2B7 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
BS.GETBUFR jsr LA1FB
|
||||
bcs LA304
|
||||
BS.GETBUFR jsr BS.GetSysBufA
|
||||
bcs LA2F6.9
|
||||
|
||||
pha
|
||||
sbc #$03
|
||||
sta XBBB8
|
||||
pla
|
||||
|
||||
LA2C5 sta GP.SBUFADR+1
|
||||
.1 sta GP.SBUFADR+1
|
||||
ldx GP.OPENCNT
|
||||
beq LA2EE
|
||||
beq .4
|
||||
|
||||
lda XBBB7
|
||||
clc
|
||||
adc #$04
|
||||
sta XBBB7
|
||||
|
||||
LA2D6 cmp BS.BUFPAGEs-1,x
|
||||
bne LA2EB
|
||||
.2 cmp BS.BUFPAGEs-1,x
|
||||
bne .3
|
||||
|
||||
lda GP.SBUFADR+1
|
||||
jsr LA356
|
||||
jsr BS.SetFileBuf
|
||||
lda GP.SBUFADR+1
|
||||
adc #$04
|
||||
bcc LA2C5
|
||||
bcc .1
|
||||
|
||||
LA2EB dex
|
||||
bne LA2D6
|
||||
.3 dex
|
||||
bne .2
|
||||
|
||||
LA2EE lda GP.SBUFADR+1
|
||||
.4 lda GP.SBUFADR+1
|
||||
bit GP.EXECACTV
|
||||
bpl LA303
|
||||
|
||||
bpl LA2F6.8
|
||||
*--------------------------------------
|
||||
LA2F6 ldx #$08
|
||||
jsr LA356
|
||||
jsr BS.SetFileBuf
|
||||
lda GP.SBUFADR+1
|
||||
adc #$04
|
||||
|
||||
LA303 clc
|
||||
LA304 rts
|
||||
LA2F6.8 clc
|
||||
LA2F6.9 rts
|
||||
*--------------------------------------
|
||||
BS.FREEBUFR lda GP.OPENCNT
|
||||
asl
|
||||
@ -171,21 +171,21 @@ BS.FREEBUFR lda GP.OPENCNT
|
||||
sta XBBB8
|
||||
lda GP.RSHIMEM
|
||||
cmp AS.HIMEM+1
|
||||
beq LA354
|
||||
beq .8
|
||||
|
||||
sta AS.HIMEM+1
|
||||
bit GP.EXECACTV
|
||||
bpl LA327
|
||||
bpl .1
|
||||
|
||||
jsr LA2F6
|
||||
bcc LA345
|
||||
bcc .3
|
||||
|
||||
LA327 lda XBBB7
|
||||
.1 lda XBBB7
|
||||
ldx GP.OPENCNT
|
||||
beq LA351
|
||||
beq .5
|
||||
|
||||
LA32F cmp BS.BUFPAGEs-1,x
|
||||
bne LA34E
|
||||
.2 cmp BS.BUFPAGEs-1,x
|
||||
bne .4
|
||||
|
||||
lda AS.HIMEM+1
|
||||
jsr LA356
|
||||
@ -195,19 +195,20 @@ LA32F cmp BS.BUFPAGEs-1,x
|
||||
sbc #$04
|
||||
sta XBBB7
|
||||
|
||||
LA345 lda AS.HIMEM+1
|
||||
.3 lda AS.HIMEM+1
|
||||
sec
|
||||
sbc #$04
|
||||
sta AS.HIMEM+1
|
||||
bcs LA327
|
||||
bcs .1
|
||||
|
||||
LA34E dex
|
||||
bne LA32F
|
||||
.4 dex
|
||||
bne .2
|
||||
|
||||
LA351 jsr BS.KW.FRE
|
||||
LA354 clc
|
||||
.5 jsr BS.KW.FRE
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
*--------------------------------------
|
||||
LA356 pha
|
||||
lda XBBB8
|
||||
jsr BS.SetFileBuf
|
||||
@ -242,6 +243,7 @@ BS.MoveMemUp ldy BS.ReqMem
|
||||
XA386 beq LA38F SELF MODIFIED
|
||||
|
||||
LA388 jsr LA39A
|
||||
|
||||
dec ZP.A1H
|
||||
dec ZP.PCH
|
||||
|
||||
@ -264,63 +266,63 @@ LA3A3 lda AS.VARSTART+1
|
||||
lda AS.VARSTART
|
||||
ldx AS.ARRAYSTART+1
|
||||
clc
|
||||
bcc LA3B3
|
||||
bcc .2
|
||||
|
||||
LA3AE clc
|
||||
.1 clc
|
||||
lda ZP.A2L
|
||||
adc #$07
|
||||
|
||||
LA3B3 sta ZP.A2L
|
||||
bcc LA3B9
|
||||
.2 sta ZP.A2L
|
||||
bcc .3
|
||||
|
||||
inc ZP.A2H
|
||||
|
||||
LA3B9 eor AS.ARRAYSTART
|
||||
bne LA3BF
|
||||
.3 eor AS.ARRAYSTART
|
||||
bne .4
|
||||
|
||||
cpx ZP.A2H
|
||||
|
||||
LA3BF clc
|
||||
beq LA3D6
|
||||
.4 clc
|
||||
beq .5
|
||||
|
||||
ldy #$00
|
||||
lda (ZP.A2L),y
|
||||
iny
|
||||
eor (ZP.A2L),y
|
||||
bpl LA3AE
|
||||
bpl .1
|
||||
|
||||
lda (ZP.A2L),y
|
||||
bpl LA3AE
|
||||
bpl .1
|
||||
|
||||
iny
|
||||
jsr LA3FD
|
||||
bra LA3AE
|
||||
bra .1
|
||||
|
||||
LA3D6 lda ZP.A2L
|
||||
.5 lda ZP.A2L
|
||||
sta XBBDC
|
||||
|
||||
LA3DB clc
|
||||
.6 clc
|
||||
jsr LA160
|
||||
bcs LA410
|
||||
|
||||
LA3E1 ldy #$00
|
||||
.7 ldy #$00
|
||||
clc
|
||||
jsr LA3FD
|
||||
clc
|
||||
lda #$03
|
||||
adc ZP.A2L
|
||||
sta ZP.A2L
|
||||
bcc LA3F2
|
||||
bcc .8
|
||||
|
||||
inc ZP.A2H
|
||||
|
||||
LA3F2 cmp XBBDC
|
||||
bne LA3E1
|
||||
.8 cmp XBBDC
|
||||
bne .7
|
||||
|
||||
cpx ZP.A2H
|
||||
bne LA3E1
|
||||
bne .7
|
||||
|
||||
beq LA3DB
|
||||
beq .6
|
||||
*--------------------------------------
|
||||
LA3FD lda (ZP.A2L),y
|
||||
beq LA410
|
||||
@ -337,8 +339,8 @@ LA3FD lda (ZP.A2L),y
|
||||
|
||||
LA410 rts
|
||||
*--------------------------------------
|
||||
LA411 jsr LA021
|
||||
bcs LA47F
|
||||
LA411 jsr BS.FRE0
|
||||
bcs .9
|
||||
|
||||
lda AS.ARRAYEND
|
||||
sec
|
||||
@ -401,7 +403,7 @@ LA411 jsr LA021
|
||||
sta XBBEC
|
||||
|
||||
clc
|
||||
LA47F rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
LA480 lda BS.BAS.HDR
|
||||
sta BS.ReqMem
|
||||
@ -442,20 +444,26 @@ LA480 lda BS.BAS.HDR
|
||||
sec
|
||||
lda AS.HIMEM+1
|
||||
sbc BS.BAS.HDR+4
|
||||
beq LA4D0
|
||||
beq .8
|
||||
|
||||
sta XBBE2
|
||||
jsr LA3A3
|
||||
|
||||
LA4D0 clc
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*--------------------------------------
|
||||
BS.LINEBUFCLR80 lda #$A0
|
||||
ldx #$4F
|
||||
|
||||
LA67E sta IO.LINEBUF+1,x
|
||||
.1 sta IO.LINEBUF+1,x
|
||||
dex
|
||||
bpl LA67E
|
||||
bpl .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -491,11 +499,12 @@ LA6BA stz GP.FoundBITS
|
||||
stz GP.FoundBITS+1
|
||||
stz BS.CMDBUF
|
||||
stz MLI.PATHBUF
|
||||
|
||||
|
||||
lda GP.VDEFSLT
|
||||
sta GP.ParamS
|
||||
lda GP.VDEFDRV
|
||||
sta GP.ParamD
|
||||
|
||||
lda AS.HIMEM+1
|
||||
sta BS.BUFPAGE
|
||||
|
||||
@ -508,13 +517,13 @@ LA6BA stz GP.FoundBITS
|
||||
beq LA744
|
||||
|
||||
asl
|
||||
bmi LA747
|
||||
bmi LA747 CMDBITS0.SLOT
|
||||
|
||||
jsr BS.GetKWInCmdBuf
|
||||
php
|
||||
pha
|
||||
lda GP.AllowedBITS
|
||||
bpl LA6F8
|
||||
bpl LA6F8 CMDBITS0.PFIX
|
||||
|
||||
lda #MLI.C.GETPREFIX
|
||||
jsr GP.GOSYSTEM
|
||||
@ -529,10 +538,10 @@ LA6F8 pla
|
||||
|
||||
LA703 cmp #'/'
|
||||
beq LA70B
|
||||
|
||||
|
||||
cmp #'.' .. or ../
|
||||
beq LA70B
|
||||
|
||||
|
||||
cmp #'A'
|
||||
bcc LA73D
|
||||
|
||||
@ -564,7 +573,7 @@ LA70B dex
|
||||
|
||||
lda GP.AllowedBITS
|
||||
lsr
|
||||
bcs LA770
|
||||
bcs LA770 CMDBITS0.FN1
|
||||
|
||||
LA73A jmp BS.SYNERR
|
||||
|
||||
@ -648,7 +657,7 @@ LA7A6 lda GP.ParamS
|
||||
|
||||
cmp #$03
|
||||
bcs LA76C
|
||||
|
||||
* >DEBUG
|
||||
lda GP.AllowedBITS
|
||||
and #CMDBITS0.RRUN+CMDBITS0.FN1
|
||||
lsr
|
||||
@ -669,7 +678,7 @@ LA7C9 bcc LA80B
|
||||
|
||||
lda GP.FoundBITS
|
||||
lsr
|
||||
bcs LA7E1
|
||||
bcs LA7E1 CMDBITS0.FN1
|
||||
|
||||
lda GP.AllowedBITS
|
||||
and #CMDBITS0.PFIX+CMDBITS0.FNOPT
|
||||
@ -692,7 +701,7 @@ LA7ED lda GP.FoundBITS+1
|
||||
|
||||
stz BS.CMDBUF.LEN
|
||||
stz BS.CMDBUF
|
||||
|
||||
|
||||
lda #CMDBITS0.FN1
|
||||
tsb GP.FoundBITS
|
||||
|
||||
@ -711,7 +720,7 @@ LA80B lda GP.XCNUM
|
||||
lda GP.AllowedBITS+1
|
||||
and #CMDBITS1.SD
|
||||
beq .8
|
||||
|
||||
|
||||
lda GP.FoundBITS
|
||||
lsr
|
||||
bcc LA844
|
||||
@ -723,7 +732,7 @@ LA80B lda GP.XCNUM
|
||||
bne LA849
|
||||
|
||||
lda GP.AllowedBITS
|
||||
and #$08
|
||||
and #CMDBITS0.CRFLG
|
||||
bne LA844
|
||||
|
||||
lda #BS.E.PATHNFND6
|
||||
@ -945,13 +954,13 @@ LAB63 cmp #$FF
|
||||
LAB6F pha
|
||||
jsr BS.CloseAll
|
||||
jsr LB36B
|
||||
|
||||
|
||||
stz GP.ParamA
|
||||
|
||||
stz MLI.MEMTABL+20
|
||||
stz MLI.MEMTABL+21
|
||||
stz MLI.MEMTABL+22
|
||||
|
||||
|
||||
lda #$01
|
||||
sta MLI.MEMTABL+23
|
||||
lda #$20
|
||||
@ -976,12 +985,12 @@ LABA6 sec
|
||||
*--------------------------------------
|
||||
BS.KW.CHAIN jsr LA411
|
||||
lda AS.HIMEM+1
|
||||
sta BS.AS.HIMEMSave
|
||||
pha
|
||||
ldx XBBEA
|
||||
dex
|
||||
stx AS.HIMEM+1
|
||||
jsr BS.LoadBAS
|
||||
ldx BS.AS.HIMEMSave
|
||||
plx
|
||||
stx AS.HIMEM+1
|
||||
bcs BS.LoadBAS0.RTS
|
||||
|
||||
@ -1023,7 +1032,7 @@ BS.KW.LOAD jsr BS.LoadBAS0
|
||||
|
||||
BS.ENTRY jsr AS.CLEAR1
|
||||
jsr BS.SetState0
|
||||
|
||||
|
||||
stz ZP.CH
|
||||
jmp AS.RESTART1
|
||||
*--------------------------------------
|
||||
@ -1238,7 +1247,7 @@ BS.KW.RENAME lda GP.FoundBITS
|
||||
BS.KW.DELETE lda #MLI.C.DESTROY
|
||||
.HS 2C BIT ABS
|
||||
BS.SETPREFIX lda #MLI.C.SETPREFIX
|
||||
|
||||
|
||||
LAD9E jmp GP.GOSYSTEM
|
||||
*--------------------------------------
|
||||
BS.KW.LOCK jsr BS.GetFileInfo
|
||||
|
@ -409,7 +409,7 @@ BS.RAMReset bit GP.CISPARE1
|
||||
|
||||
lda #$FF
|
||||
sta AUX.RAMSIG
|
||||
dec
|
||||
dec $FE
|
||||
sta AUX.RAMSIG+1 Set $E000-$FEFF as BLOCK FREE
|
||||
|
||||
sta IO.CLRWRITEAUX
|
||||
@ -576,7 +576,7 @@ BS.ReadDirEnt lda #$59
|
||||
lda $27D
|
||||
sta BS.CAT.EPB
|
||||
|
||||
lda $27C
|
||||
lda $27C
|
||||
sta BS.CAT.EL
|
||||
sta GP.MLIRW.COUNT
|
||||
|
||||
@ -799,43 +799,44 @@ LB364 lda #$FF
|
||||
rts
|
||||
*--------------------------------------
|
||||
LB36B lda GP.EXECACTV
|
||||
bpl LB37B
|
||||
bpl .8
|
||||
|
||||
sta GP.EXECFILE
|
||||
ldx #$08
|
||||
lda BS.REFNUMs,x
|
||||
jsr BS.CloseA
|
||||
|
||||
LB37B rts
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
BS.KW.VERIFY bcs LB3B7
|
||||
|
||||
lda GP.FoundBITS
|
||||
and #CMDBITS1.R
|
||||
bne LB38D
|
||||
bne .8
|
||||
|
||||
ldy #0
|
||||
jsr BS.GetMSGY
|
||||
jsr MON.CROUT
|
||||
|
||||
LB38D clc
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
* lda #$00
|
||||
* beq LB39F
|
||||
* beq LB39F BS.KW.FLUSH.1
|
||||
|
||||
*--------------------------------------
|
||||
BS.KW.FLUSH lda GP.FoundBITS
|
||||
and #CMDBITS1.R
|
||||
beq LB39F
|
||||
beq .1
|
||||
|
||||
jsr BS.CheckFilename
|
||||
bcs LB3A7
|
||||
bcs .9
|
||||
|
||||
LB39F sta GP.MLICF.REFNUM
|
||||
.1 sta GP.MLICF.REFNUM
|
||||
lda #MLI.C.FLUSH
|
||||
jsr GP.GOSYSTEM
|
||||
|
||||
LB3A7 rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
BS.KW.OPEN php
|
||||
jsr BS.CheckFilename
|
||||
@ -1584,6 +1585,182 @@ BS.KW.ONLINE jsr MON.CROUT
|
||||
BS.KW.NOMON clc
|
||||
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
|
||||
.DA MLI.PATHBUF
|
||||
*--------------------------------------
|
||||
|
@ -141,16 +141,13 @@ XBBB8 .BS 1
|
||||
*--------------------------------------
|
||||
*BS.IVERSION .DA #5
|
||||
*--------------------------------------
|
||||
BS.AS.HIMEMSave .BS 1
|
||||
XBBD7 .BS 1
|
||||
XBBD8 .BS 1
|
||||
* XBBD6 .BS 1
|
||||
|
||||
|
||||
|
||||
XBBD9 .DA #4
|
||||
XBBDA .BS 1
|
||||
XBBDB .BS 1
|
||||
XBBDC .BS 1
|
||||
XBBDD .BS 1
|
||||
|
||||
*--------------------------------------
|
||||
BS.TXTTAB .DA $0800
|
||||
BS.MEMSIZE .DA HIMEM-$400
|
||||
|
||||
@ -191,6 +188,15 @@ BS.CAT.EL .BS 1
|
||||
BS.CAT.EPB .BS 1
|
||||
*BS.CAT.FileCnt .BS 2
|
||||
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
|
||||
BS.FREESPACE .EQ $BC17-*
|
||||
|
@ -37,26 +37,6 @@ LDR.START1 ldx #$FF
|
||||
jsr LDR.ShrinkRAM
|
||||
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
|
||||
sta GP.CISPARE1
|
||||
|
||||
@ -77,20 +57,25 @@ LDR.START1 ldx #$FF
|
||||
lda #%11000011 pages $B8,$B9,...,$BE,$BF protected
|
||||
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
|
||||
|
||||
sta IO.SETALTZP
|
||||
|
||||
stz Ptr1
|
||||
stz Ptr2
|
||||
|
||||
lda /LDR.AUX.SRC
|
||||
sta Ptr1+1
|
||||
ldx #PAKME.AUX-PAKME.Table
|
||||
ldy #LDR.AUX.DST
|
||||
lda /LDR.AUX.DST
|
||||
sta Ptr2+1
|
||||
|
||||
ldx #$10
|
||||
jsr LDR.MoveXpages
|
||||
jsr X.Unpak.XatYA
|
||||
|
||||
sta IO.CLRALTZP
|
||||
bit IO.RROMBNK2
|
||||
@ -114,20 +99,8 @@ LDR.START1 ldx #$FF
|
||||
sta MON.POWERUPBYTE
|
||||
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
|
||||
*--------------------------------------
|
||||
LDR.CSW cmp #$DD
|
||||
@ -368,8 +341,6 @@ LDR.ShrinkRAM stz bRAMFlag
|
||||
dex
|
||||
bpl .7
|
||||
|
||||
dec bRAMFlag Tell BYE to reset that...
|
||||
|
||||
php
|
||||
sei
|
||||
|
||||
@ -381,6 +352,8 @@ LDR.ShrinkRAM stz bRAMFlag
|
||||
sta IO.CLRWRITEAUX
|
||||
|
||||
plp
|
||||
|
||||
dec bRAMFlag Tell BYE to reset that...
|
||||
|
||||
LDR.GFInfoRAM ldy #LDR.RAM
|
||||
lda /LDR.RAM
|
||||
@ -448,7 +421,6 @@ LDR.COPYRIGHT.L .EQ *-LDR.COPYRIGHT
|
||||
.LIST ON
|
||||
LDR.SIZE .EQ *-LDR.START
|
||||
.LIST OFF
|
||||
.BS $2400-*
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/basic.fx/basic.s.ldr
|
||||
|
@ -1,9 +1,6 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
ZPXPtr1 .EQ 0
|
||||
ZPXPtr2 .EQ 2
|
||||
*--------------------------------------
|
||||
BSX.JMPX jmp (BSX.JMP,x)
|
||||
|
||||
BSX.JMP
|
||||
@ -25,8 +22,20 @@ BSX.MkCatLineF.X .EQ *-BSX.JMP
|
||||
.DA BSX.MkCatLineF
|
||||
BSX.Online.X .EQ *-BSX.JMP
|
||||
.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
|
||||
.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
|
||||
|
||||
@ -418,7 +427,7 @@ BSX.IsIntCmd lda #BSX.IntCmds
|
||||
lda /BSX.IntCmds
|
||||
sta ZPXPtr1+1
|
||||
|
||||
ldx #36
|
||||
ldx #37
|
||||
stx GP.XCNUM
|
||||
|
||||
.1 ldy #$ff
|
||||
@ -472,7 +481,8 @@ BSX.IsIntCmd lda #BSX.IntCmds
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
BSX.IntCmds .AT "CD"
|
||||
BSX.IntCmds .AT "FORMAT"
|
||||
.AT "CD"
|
||||
.AT "ONLINE"
|
||||
.AT "MEM"
|
||||
.AT "MTR"
|
||||
@ -545,6 +555,9 @@ BSX.KW.PBITS .DA $8040 IN
|
||||
.DA $0000 MEM
|
||||
.DA $0000 ONLINE
|
||||
.DA $0491 CD
|
||||
|
||||
.DA #$18 FORMAT
|
||||
.DA #$F6
|
||||
*--------------------------------------
|
||||
BSX.KW.JMP .DA BS.KW.EXTERNAL 0
|
||||
.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.ONLINE 35
|
||||
.DA BS.KW.PREFIX 36 (CD)
|
||||
.DA BS.KW.FORMAT 37
|
||||
*--------------------------------------
|
||||
BSX.GetErrA tax
|
||||
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
|
||||
sta $C010
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.INB inc/io.d2.i
|
||||
*--------------------------------------
|
||||
HIMEM .EQ $A000
|
||||
LOWERCASE .EQ 1
|
||||
@ -35,29 +37,40 @@ BS.E.DUPFILE .EQ $13
|
||||
BS.E.FBUSTY .EQ $14
|
||||
BS.E.FSTILLOPEN .EQ $15
|
||||
*--------------------------------------
|
||||
CMDBITS0.PFIX .EQ $80 ;Prefix needs fetching, pathname optional
|
||||
CMDBITS0.SLOT .EQ $40 ;No parameters to be processed
|
||||
CMDBITS0.RRUN .EQ $20 ;Command only valid during program
|
||||
CMDBITS0.FNOPT .EQ $10 ;Filename is optional
|
||||
CMDBITS0.CRFLG .EQ $08 ;CREATE allowed
|
||||
CMDBITS0.T .EQ $04 ;File type
|
||||
CMDBITS0.FN2 .EQ $02 ;Filename '2' for RENAME
|
||||
CMDBITS0.FN1 .EQ $01 ;Filename expected
|
||||
CMDBITS0.PFIX .EQ $80 Prefix needs fetching, pathname optional
|
||||
CMDBITS0.SLOT .EQ $40 No parameters to be processed
|
||||
CMDBITS0.RRUN .EQ $20 Command only valid during program
|
||||
CMDBITS0.FNOPT .EQ $10 Filename is optional
|
||||
CMDBITS0.CRFLG .EQ $08 CREATE allowed
|
||||
CMDBITS0.T .EQ $04 File type
|
||||
CMDBITS0.FN2 .EQ $02 Filename '2' for RENAME
|
||||
CMDBITS0.FN1 .EQ $01 Filename expected
|
||||
|
||||
CMDBITS1.A .EQ $80 ;Address
|
||||
CMDBITS1.B .EQ $40 ;Byte
|
||||
CMDBITS1.E .EQ $20 ;End address
|
||||
CMDBITS1.L .EQ $10 ;Length
|
||||
CMDBITS1.LINE .EQ $08 ;'@' line number
|
||||
CMDBITS1.SD .EQ $04 ;Slot and drive numbers
|
||||
CMDBITS1.F .EQ $02 ;Field
|
||||
CMDBITS1.R .EQ $01 ;Record
|
||||
CMDBITS1.V .EQ $00 ;Volume number ignored
|
||||
CMDBITS1.A .EQ $80 Address
|
||||
CMDBITS1.B .EQ $40 Byte
|
||||
CMDBITS1.E .EQ $20 End address
|
||||
CMDBITS1.L .EQ $10 Length
|
||||
CMDBITS1.LINE .EQ $08 '@' line number
|
||||
CMDBITS1.SD .EQ $04 Slot and drive numbers
|
||||
CMDBITS1.F .EQ $02 Field
|
||||
CMDBITS1.R .EQ $01 Record
|
||||
|
||||
CMDBITS1.V .EQ $00 Volume number ignored
|
||||
*--------------------------------------
|
||||
Ptr1 .EQ 0
|
||||
Ptr2 .EQ 2
|
||||
ZPCode .EQ 4
|
||||
bRAMFlag .EQ 6
|
||||
ZPPtr1 .EQ 0
|
||||
ZPPtr2 .EQ 2
|
||||
ZPInBufPtr .EQ 4
|
||||
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.WNDWDT .EQ $21
|
||||
@ -79,6 +92,13 @@ ZP.A1L .EQ $3C
|
||||
ZP.A1H .EQ $3D
|
||||
ZP.A2L .EQ $3E
|
||||
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
|
||||
|
||||
@ -99,6 +119,9 @@ AS.ERRNUM .EQ $DE
|
||||
AS.TRCFLG .EQ $F2
|
||||
AS.REMSTK .EQ $F8
|
||||
*--------------------------------------
|
||||
ZPXPtr1 .EQ 0
|
||||
ZPXPtr2 .EQ 2
|
||||
*--------------------------------------
|
||||
IO.LINEBUF .EQ $200
|
||||
*--------------------------------------
|
||||
DIRENTBUF .EQ $259
|
||||
@ -168,6 +191,7 @@ MLI.DEVNUM .EQ $BF30
|
||||
MLI.DEVCNT .EQ $BF31
|
||||
MLI.DEVLST .EQ $BF32
|
||||
MLI.MEMTABL .EQ $BF58
|
||||
MLI.DATETIME .EQ $BF90
|
||||
MLI.LEVEL .EQ $BF94
|
||||
MLI.MACHID .EQ $BF98
|
||||
MLI.SLTBYT .EQ $BF99
|
||||
@ -222,22 +246,67 @@ MON.SETVID .EQ $FE93
|
||||
MON.ENTERMON .EQ $FF69
|
||||
*--------------------------------------
|
||||
.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.DST .EQ *
|
||||
.INB usr/src/basic.fx/basic.s.a
|
||||
.INB usr/src/basic.fx/basic.s.b
|
||||
.INB usr/src/basic.fx/basic.s.c
|
||||
.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.DST .EQ *
|
||||
.INB usr/src/basic.fx/basic.s.gp
|
||||
.EP
|
||||
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
|
||||
GP.LEN .EQ *-LDR.GP.DST
|
||||
.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
|
||||
SAVE usr/src/basic.fx/basic.s
|
||||
|
@ -357,33 +357,36 @@ CS.RUN.LL.DISKII
|
||||
.2 jsr CS.RUN.CheckCtrlC
|
||||
bcs .9
|
||||
|
||||
>PUSHW L.MSG.LLDISK2
|
||||
>PUSHB CurHead
|
||||
>PUSHB CurTrack
|
||||
inc
|
||||
>PUSHA
|
||||
>PUSHB TrkCnt
|
||||
>PUSHBI 4
|
||||
>SYSCALL PrintF
|
||||
jsr CS.RUN.LL.DISKII.P
|
||||
bcs .9
|
||||
|
||||
>PUSHB DSSS0000
|
||||
>PUSHB VolNum
|
||||
>PUSHB CurHead
|
||||
>PUSHB CurTrack
|
||||
>PUSHWZ Empty track
|
||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s
|
||||
jsr CS.RUN.LL.DISKII.FT
|
||||
bcs .9
|
||||
|
||||
inc CurTrack
|
||||
|
||||
inc CurHead
|
||||
dec HCounter
|
||||
bne .2
|
||||
beq .3
|
||||
|
||||
dec TCounter
|
||||
beq .8
|
||||
>PUSHB DSSS0000
|
||||
>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
|
||||
|
||||
.3 dec TCounter
|
||||
beq .8
|
||||
|
||||
lda CurQTrack
|
||||
* clc
|
||||
adc Stepping
|
||||
@ -414,20 +417,25 @@ CS.RUN.LL.DISKII
|
||||
|
||||
jsr CS.RUN.LL.DISKII.V
|
||||
bcs .99
|
||||
|
||||
* jsr CS.RUN.MotorOn
|
||||
|
||||
* lda #20
|
||||
* jsr CS.RUN.Wait
|
||||
|
||||
.80
|
||||
* >PUSHB DSSS0000
|
||||
* >LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate
|
||||
|
||||
* lda #20
|
||||
* jsr CS.RUN.Wait
|
||||
|
||||
clc
|
||||
.80 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.LL.DISKII.P
|
||||
>PUSHW L.MSG.LLDISK2
|
||||
>PUSHB CurHead
|
||||
>PUSHB CurTrack
|
||||
inc
|
||||
>PUSHA
|
||||
>PUSHB TrkCnt
|
||||
>PUSHBI 4
|
||||
>SYSCALL PrintF
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.LL.DISKII.FT
|
||||
>PUSHB DSSS0000
|
||||
>PUSHB VolNum
|
||||
>PUSHB CurTrack
|
||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkFmt16s
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.LL.DISKII.V
|
||||
@ -795,7 +803,7 @@ OptionVars .DA #bLL,#bLL,#bCustomBlkSize,#bCustomBlkSize
|
||||
Disk2.Default .DA 280 BlkCnt
|
||||
.DA #35 TrkCnt
|
||||
.DA #4 Stepping
|
||||
.DA #1 VolNum
|
||||
.DA #$00 VolNum
|
||||
.DA #0 AltBB
|
||||
.DA #1 HeadCnt
|
||||
.BS 1
|
||||
@ -803,7 +811,7 @@ Disk2.Default .DA 280 BlkCnt
|
||||
Disk2.X .DA 320 BlkCnt
|
||||
.DA #40 TrkCnt
|
||||
.DA #4 Stepping
|
||||
.DA #2 VolNum
|
||||
.DA #$00 VolNum
|
||||
.DA #0 AltBB
|
||||
.DA #1 HeadCnt
|
||||
.BS 1
|
||||
@ -811,7 +819,7 @@ Disk2.X .DA 320 BlkCnt
|
||||
Disk2.H .DA 384 BlkCnt
|
||||
.DA #48 TrkCnt
|
||||
.DA #3 Stepping
|
||||
.DA #129 VolNum
|
||||
.DA #$03 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #1 HeadCnt
|
||||
.BS 1
|
||||
@ -819,7 +827,7 @@ Disk2.H .DA 384 BlkCnt
|
||||
Disk2.HX .DA 432 BlkCnt
|
||||
.DA #54 TrkCnt
|
||||
.DA #3 Stepping
|
||||
.DA #130 VolNum
|
||||
.DA #$03 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #1 HeadCnt
|
||||
.BS 1
|
||||
@ -827,7 +835,7 @@ Disk2.HX .DA 432 BlkCnt
|
||||
Disk2.DefaultD .DA 640 BlkCnt
|
||||
.DA #40 TrkCnt
|
||||
.DA #4 Stepping
|
||||
.DA #192 VolNum
|
||||
.DA #$84 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #2 HeadCnt
|
||||
.BS 1
|
||||
@ -835,7 +843,7 @@ Disk2.DefaultD .DA 640 BlkCnt
|
||||
Disk2.XD .DA 640 BlkCnt
|
||||
.DA #40 TrkCnt
|
||||
.DA #4 Stepping
|
||||
.DA #192 VolNum
|
||||
.DA #84 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #2 HeadCnt
|
||||
.BS 1
|
||||
@ -843,7 +851,7 @@ Disk2.XD .DA 640 BlkCnt
|
||||
Disk2.HD .DA 1280 BlkCnt
|
||||
.DA #80 TrkCnt
|
||||
.DA #2 Stepping
|
||||
.DA #193 VolNum
|
||||
.DA #$82 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #2 HeadCnt
|
||||
.BS 1
|
||||
@ -851,7 +859,7 @@ Disk2.HD .DA 1280 BlkCnt
|
||||
Disk2.HXD .DA 1280 BlkCnt
|
||||
.DA #80 TrkCnt
|
||||
.DA #2 Stepping
|
||||
.DA #193 VolNum
|
||||
.DA #$82 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #2 HeadCnt
|
||||
.BS 1
|
||||
|
@ -31,5 +31,7 @@ IO.D2.WLoad .EQ $C08D W
|
||||
IO.D2.ReadMode .EQ $C08E R
|
||||
IO.D2.WriteMode .EQ $C08F W
|
||||
*--------------------------------------
|
||||
*IO.D2.ReadSect .EQ $Cn5C
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE inc/io.d2.i
|
||||
|
@ -6,8 +6,10 @@ LIBBLKDEV.BuildProDOSCat .EQ 6
|
||||
LIBBLKDEV.D2MotorControl .EQ 8
|
||||
LIBBLKDEV.D2Recalibrate .EQ 10
|
||||
LIBBLKDEV.D2MoveHead .EQ 12
|
||||
LIBBLKDEV.D2TrkRead16s .EQ 14
|
||||
LIBBLKDEV.D2TrkWrite16s .EQ 16
|
||||
LIBBLKDEV.D2HeadSelect .EQ 14
|
||||
LIBBLKDEV.D2TrkFmt16s .EQ 16
|
||||
LIBBLKDEV.D2TrkRead16s .EQ 18
|
||||
LIBBLKDEV.D2TrkWrite16s .EQ 20
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE inc/libblkdev.i
|
||||
|
@ -65,6 +65,31 @@ D2.Recalibrate >PULLB D2.DrvSlt
|
||||
.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
|
||||
>PULLB D2.CurrentQTrack
|
||||
>PULLB D2.DrvSlt
|
||||
@ -136,7 +161,7 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
lda IO.D2.Ph0Off,y
|
||||
bcc .90
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
@ -149,11 +174,61 @@ D2.SeekPhOnY and #6
|
||||
lda IO.D2.Ph0On,y
|
||||
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
|
||||
* Write a track (16 sectors)
|
||||
* PUSHB = DSSS0000
|
||||
* PUSHB = TrackNum * 4 : 0->136+
|
||||
* PUSHW = Ptr to 16*256 buffer
|
||||
* PUSHB DSSS0000
|
||||
* PUSHB TrackNum
|
||||
* PUSHW Ptr to 16*256 buffer
|
||||
* ## RETURN VALUE
|
||||
* CC : success, A = VolNum
|
||||
* CS : A = Error
|
||||
@ -173,10 +248,9 @@ D2.TrkRead16s.RTS
|
||||
*/--------------------------------------
|
||||
* # D2TrkWrite16s
|
||||
* Write a track (16 sectors)
|
||||
* PUSHB = DSSS0000
|
||||
* PUSHB = VolNum
|
||||
* PUSHB = HeadNum (0,1)
|
||||
* PUSHB = TrackNum * 4 : 0->136+
|
||||
* PUSHB DSSS0000
|
||||
* PUSHB VolNum
|
||||
* PUSHB TrackNum
|
||||
* PUSHW = Ptr to 16*256 buffer
|
||||
* ## RETURN VALUE
|
||||
* CC : success
|
||||
@ -184,7 +258,6 @@ D2.TrkRead16s.RTS
|
||||
*\--------------------------------------
|
||||
D2.TrkWrite16s >PULLW ZPPtr1
|
||||
>PULLB D2.TrkNum
|
||||
>PULLB D2.HeadNum
|
||||
>PULLB D2.VolNum
|
||||
>PULLB D2.DrvSlt
|
||||
|
||||
@ -258,12 +331,9 @@ D2.TrkWrite16s >PULLW ZPPtr1
|
||||
lda #0
|
||||
sta (ZPPtr2)
|
||||
|
||||
bit D2.VolNum
|
||||
bvc .80
|
||||
|
||||
jsr D2.HeadSelect
|
||||
|
||||
.80 jsr D2.WriteTrackPtr2
|
||||
jsr D2.WriteTrackPtr2
|
||||
|
||||
php
|
||||
pha
|
||||
@ -291,9 +361,9 @@ D2.TrkWriteNIB >PULLW ZPPtr1
|
||||
>PULLB D2.DrvSlt
|
||||
|
||||
jsr D2.CheckDiskII was it a DISK II ?
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
.9 rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
* A=DSSS0000
|
||||
*--------------------------------------
|
||||
@ -361,23 +431,6 @@ D2.DrvSpinCheck ldy #0
|
||||
.8 sec
|
||||
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
|
||||
lda #0
|
||||
|
||||
|
@ -40,6 +40,7 @@ ZPPtr1 .EQ ZPLIB
|
||||
ZPPtr2 .EQ ZPLIB+2
|
||||
ZPPtr3 .EQ ZPLIB+4
|
||||
ZPPtr4 .EQ ZPLIB+6
|
||||
X.TRkFMT.Z .EQ ZPLIB+8
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -62,13 +63,16 @@ CS.START cld
|
||||
.DA D2.MotorControl
|
||||
.DA D2.Recalibrate
|
||||
.DA D2.MoveHead
|
||||
.DA D2.HeadSelect
|
||||
.DA D2.TrkFmt16s
|
||||
.DA D2.TrkRead16s
|
||||
.DA D2.TrkWrite16s
|
||||
.DA D2.TrkReadNIB
|
||||
.DA D2.TrkWriteNIB
|
||||
L.D2.TrkWriter .DA D2.TrkWriter
|
||||
L.ProDOS.Boot .DA ProDOS.Boot
|
||||
L.ProDOSFX.Boot .DA ProDOSFX.Boot
|
||||
L.X.BB.PRODOS .DA X.BB.PRODOS
|
||||
L.X.BB.SOS .DA X.BB.SOS
|
||||
L.X.BB.FXpart1 .DA X.BB.FX2
|
||||
L.X.BB.FXpart2 .DA X.BB.FX2+512
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD
|
||||
@ -97,11 +101,15 @@ GetProDOSCatSize.I
|
||||
clc for now, no partial bitmap blk to add
|
||||
tay DevSize is xxxxxxxx00000000 ?
|
||||
beq .1
|
||||
|
||||
sec
|
||||
|
||||
.1 lda VolDirHdr.TB+1 Get DevSizeHI
|
||||
bit #$0f DevSize is xxxx000000000000 ?
|
||||
beq .2
|
||||
|
||||
sec
|
||||
|
||||
.2 php
|
||||
lsr
|
||||
lsr
|
||||
@ -142,41 +150,33 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
|
||||
|
||||
ldx #3
|
||||
|
||||
.1 lda DATELO,x
|
||||
.10 lda DATELO,x
|
||||
sta VolDirHdr.CT,x
|
||||
dex
|
||||
bpl .1
|
||||
bpl .10
|
||||
|
||||
bit VolDirHdr.Options
|
||||
bmi .11
|
||||
|
||||
* Blk 0 : ProDOS Boot Code
|
||||
>LDYA L.ProDOS.Boot
|
||||
bit VolDirHdr.Options
|
||||
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
|
||||
>LDYA L.X.BB.PRODOS
|
||||
jsr Add2Pages
|
||||
|
||||
* Blk 1 : (SOS boot code)
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr1+1
|
||||
>LDYA L.X.BB.SOS
|
||||
jsr Add2Pages
|
||||
bra .20
|
||||
|
||||
.11 >LDYA L.X.BB.FXpart1
|
||||
jsr Add2Pages
|
||||
|
||||
>LDYA L.X.BB.FXpart2
|
||||
jsr Add2Pages
|
||||
|
||||
* Blk 2 : First Directory Block
|
||||
|
||||
jsr ZeroPtr1
|
||||
.20 jsr ZeroPtr1
|
||||
|
||||
* ldy #0
|
||||
|
||||
@ -333,10 +333,36 @@ ZeroPtr1 phy
|
||||
ply
|
||||
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
|
||||
*--------------------------------------
|
||||
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
|
||||
* X = Slot Cn
|
||||
* ZPPtr1 = Ptr To NibbleBuf
|
||||
@ -529,73 +555,9 @@ FC2Nib .HS 96
|
||||
*--------------------------------------
|
||||
LC.BitMap .HS 8040201008040201
|
||||
*--------------------------------------
|
||||
ProDOS.Boot .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
|
||||
*--------------------------------------
|
||||
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
|
||||
X.BB.PRODOS .INB usr/src/shared/x.bb.prodos.s
|
||||
X.BB.SOS .INB usr/src/shared/x.bb.sos.s
|
||||
X.BB.FX2 .INB usr/src/shared/x.bb.fx2.s
|
||||
*--------------------------------------
|
||||
* Block 2 : First DIR block
|
||||
*--------------------------------------
|
||||
|
@ -20,8 +20,10 @@ ILDR.START jsr MLI check for file 'atinit'
|
||||
.1 lda RROMBNK2 enable ROM
|
||||
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
|
||||
sta ILDR.MLIRB.P+1
|
||||
|
||||
@ -30,7 +32,7 @@ ILDR.START jsr MLI check for file 'atinit'
|
||||
ldy #$02 read directory into buffer
|
||||
ldx #0
|
||||
|
||||
.2 sta dst+1
|
||||
.22 sta dst+1
|
||||
sta ILDR.MLIRB.P+3 Data buf HI
|
||||
sty ILDR.MLIRB.P+4 Blk Num LO
|
||||
stx ILDR.MLIRB.P+5 Blk Num HI
|
||||
@ -38,14 +40,14 @@ ILDR.START jsr MLI check for file 'atinit'
|
||||
jsr MLI
|
||||
.DA #MLIREADBLOCK
|
||||
.DA ILDR.MLIRB.P
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
ldy #$03 get next block# from link
|
||||
lda (dst),y
|
||||
tax
|
||||
dey
|
||||
ora (dst),y 00 00 -> Last Block
|
||||
beq .8
|
||||
beq .28
|
||||
|
||||
lda (dst),y
|
||||
tay
|
||||
@ -53,13 +55,11 @@ ILDR.START jsr MLI check for file 'atinit'
|
||||
inc
|
||||
inc add $200 to buffer pointer
|
||||
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
|
||||
*--------------------------------------
|
||||
ILDR.ENUMPM .DO PM
|
||||
.DO PM
|
||||
|
||||
jsr ILDR.EnumInit
|
||||
|
||||
@ -68,10 +68,10 @@ ILDR.ENUMPM .DO PM
|
||||
lda /ILDR.KMPFX
|
||||
clc prefix
|
||||
jsr ILDR.EnumNext
|
||||
bcs .4
|
||||
bcs .8
|
||||
|
||||
jsr ILDR.LoadFilePBuf
|
||||
bcs ILDR.MLIERR
|
||||
bcs .99
|
||||
|
||||
ldx #3
|
||||
|
||||
@ -95,10 +95,12 @@ ILDR.ENUMPM .DO PM
|
||||
>DEBUGOA
|
||||
|
||||
bra .1
|
||||
|
||||
.99 jmp ILDR.MLIERR
|
||||
|
||||
.FIN
|
||||
.8 .FIN
|
||||
*--------------------------------------
|
||||
.4 jsr ILDR.EnumInit
|
||||
jsr ILDR.EnumInit
|
||||
|
||||
ldx #S.FI.T.SYS
|
||||
ldy #ILDR.SYSTEMSFX
|
||||
|
@ -691,28 +691,26 @@ XRW.TrackSelect lda #2
|
||||
bcc .1
|
||||
|
||||
rts
|
||||
|
||||
*--------------------------------------
|
||||
.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 CS if 2 heads
|
||||
bcc .5 single sided
|
||||
|
||||
bmi .5 > 192 ????
|
||||
|
||||
lda XRW.ReqTrack
|
||||
bcc .50
|
||||
|
||||
lsr Track 160 -> 80+Carry
|
||||
pha
|
||||
|
||||
lda #0 Carry = Head
|
||||
|
||||
rol
|
||||
and #1
|
||||
|
||||
rol A = 0/2
|
||||
|
||||
ora A2L
|
||||
@ -726,14 +724,12 @@ XRW.TrackSelect lda #2
|
||||
lda IO.D2.Ph0Off,y
|
||||
lda IO.D2.Ph0Off+4,y
|
||||
|
||||
pla
|
||||
|
||||
.50 sta XRW.ReqTrack2
|
||||
|
||||
lda XRW.AddrField.T
|
||||
sta XRW.D2Trk-1,x
|
||||
bra .1
|
||||
|
||||
cmp XRW.ReqTrack2
|
||||
.5 lda XRW.AddrField.T
|
||||
cmp XRW.ReqTrack
|
||||
beq .8
|
||||
|
||||
lda XRW.BadSeekCnt
|
||||
@ -751,7 +747,7 @@ XRW.TrackSelect lda #2
|
||||
sta XRW.D2SeekTime-1,x
|
||||
|
||||
.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
|
||||
|
||||
bra .3
|
||||
@ -850,33 +846,41 @@ XRW.SeekPhOnY and #6
|
||||
lda IO.D2.Ph0On,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
* A = 0 -> 159, X = XRW.UnitIndex
|
||||
* In:
|
||||
* A = Logical Track 0 -> 159,
|
||||
* X = XRW.UnitIndex
|
||||
* D2VolNum : d0000sss
|
||||
* Out:
|
||||
* A =
|
||||
*--------------------------------------
|
||||
XRW.Trk2Qtrk sta pch
|
||||
|
||||
bit XRW.D2VolNum-1,x
|
||||
bpl .1 < $80 : x4
|
||||
|
||||
bvs .2
|
||||
lda XRW.D2VolNum-1,x
|
||||
bne .1
|
||||
|
||||
asl $80 < v < $BF : x3
|
||||
adc pch
|
||||
rts
|
||||
|
||||
.1 asl
|
||||
.10 lda pch standard SS 4 qtrack stepping
|
||||
asl
|
||||
asl
|
||||
rts
|
||||
|
||||
* 2 sides :
|
||||
|
||||
.2 lda XRW.D2VolNum-1,x > $C0 : 2 heads
|
||||
lsr CS : $C1 = 80, 2 heads
|
||||
|
||||
lda pch
|
||||
and #$FE
|
||||
bcs .8 x2 for 80trk (ELITE III)
|
||||
.1 bpl .2
|
||||
cmp #$85
|
||||
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
|
||||
*--------------------------------------
|
||||
@ -888,7 +892,7 @@ XRW.Trk2Qtrk sta pch
|
||||
* 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
|
||||
* 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
|
||||
ldy buf+1 the fast timing required.
|
||||
@ -1069,7 +1073,7 @@ XRW.TargetQTrack .HS 00
|
||||
.HS B0B4B8BCC0C4C8
|
||||
* .HS FFFF
|
||||
XRW.RetryCnt .HS 00
|
||||
XRW.ReqTrack2 .HS 00
|
||||
.HS 00
|
||||
.HS CCD0D4D8DCE0
|
||||
XRW.bWrite .HS 00
|
||||
.HS E4E8ECF0F4F8FC
|
||||
|
@ -30,11 +30,13 @@ BB.HdrTrk .EQ $55
|
||||
BB.HdrVol .EQ $56
|
||||
BB.Hdr96 .EQ $57
|
||||
|
||||
BB.tmpTrk .EQ $58
|
||||
|
||||
nbuf1 .EQ $300
|
||||
dnib .EQ $2d6
|
||||
|
||||
clrscrn .EQ $fc58
|
||||
scrn .EQ $5b6
|
||||
|
||||
sosid .EQ $c00
|
||||
entlen .EQ sosid+$23
|
||||
kernel .EQ $2000
|
||||
@ -125,15 +127,13 @@ modboot ldy mods-1,x
|
||||
*--------------------------------------
|
||||
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
|
||||
sty idxl
|
||||
sty idxh
|
||||
sty idxp
|
||||
sty blok+1
|
||||
|
||||
iny y=1
|
||||
ldy #1
|
||||
sty dcmd set read command.
|
||||
|
||||
iny y=2
|
||||
@ -146,8 +146,9 @@ ndsk2 sta dent save low adr of device call entry.
|
||||
rddir jsr goread call read block routine.
|
||||
bcs bterr2 give up on error.
|
||||
|
||||
inc iobuff+1
|
||||
inc iobuff+1
|
||||
* inc iobuff+1
|
||||
* inc iobuff+1
|
||||
|
||||
inc blok
|
||||
lda blok have all directory blocks been read?
|
||||
cmp #6
|
||||
@ -177,7 +178,7 @@ nxdent2 sty idxl
|
||||
ldy #6
|
||||
|
||||
lookpro lda (idxl),y look for matching name.
|
||||
cmp BB.ProDOS,y
|
||||
cmp BB.FX.ProDOS,y
|
||||
bne nxdent branch if no match.
|
||||
|
||||
dey
|
||||
@ -197,8 +198,7 @@ lookpro lda (idxl),y look for matching name.
|
||||
lda (idxl),y
|
||||
sta blok+1
|
||||
|
||||
lda #0 now set up to read kernel.
|
||||
sta idxl
|
||||
stz idxl
|
||||
|
||||
ldy #$1e read index block at $1e00 and
|
||||
sty idxl+1 kernel at $2000
|
||||
@ -209,8 +209,8 @@ lookpro lda (idxl),y look for matching name.
|
||||
rdkernl jsr goread read index block.
|
||||
bterr2 bcs booterr
|
||||
|
||||
inc iobuff+1
|
||||
inc iobuff+1
|
||||
* inc iobuff+1
|
||||
* inc iobuff+1
|
||||
|
||||
ldy idxp get index pointer
|
||||
inc idxp bump for next time.
|
||||
@ -227,16 +227,19 @@ booterr jsr clrscrn clear video
|
||||
ldy #BB.MSG.ERR.Len-1
|
||||
|
||||
.1 lda BB.MSG.ERR,y
|
||||
sta scrn,y
|
||||
sta $5b6,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
jmp $ff69
|
||||
*--------------------------------------
|
||||
goread lda iobuff
|
||||
sta buff
|
||||
goread
|
||||
* lda iobuff
|
||||
stz buff
|
||||
lda iobuff+1
|
||||
sta buff+1
|
||||
inc iobuff+1
|
||||
inc iobuff+1
|
||||
jmp (dent)
|
||||
*--------------------------------------
|
||||
mods .DA #mod1,#mod2,#mod3,#mod4,#mod5,#mod6,#mod7,#mod8,#mod8+1,#mod9
|
||||
@ -247,11 +250,11 @@ endcode ldx BB.Slotn0
|
||||
clc
|
||||
rts
|
||||
|
||||
jmp BB.Seek
|
||||
jmp BB.FX.SeekRead
|
||||
*--------------------------------------
|
||||
BB.MSG.ERR .AS -"BOOT ERROR"
|
||||
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"
|
||||
*--------------------------------------
|
||||
BB.ReadBlock lda blok figure out track & sector.
|
||||
@ -278,14 +281,14 @@ BB.ReadBlock lda blok figure out track & sector.
|
||||
ldx BB.Slotn0
|
||||
lda IO.D2.DrvOn,x
|
||||
|
||||
jsr BB.Seek go read sector.
|
||||
jsr BB.FX.SeekRead
|
||||
|
||||
inc dbuf+1 bump address
|
||||
inc sector
|
||||
inc sector and sector #
|
||||
bcs .9 branch if error.
|
||||
|
||||
jsr BB.Seek
|
||||
jsr BB.FX.Read
|
||||
|
||||
.9 ldy IO.D2.DrvOff,x
|
||||
rts return error status in carry.
|
||||
@ -304,30 +307,47 @@ BB.Wait100usecA phx (3)
|
||||
|
||||
rts (6)
|
||||
*--------------------------------------
|
||||
BB.Trk2Qtrk asl x2
|
||||
sta .1+1
|
||||
BB.Trk2Qtrk ldy BB.HdrVol
|
||||
beq .5
|
||||
|
||||
cpy #$85
|
||||
bcs .5 > 192 ? must be a buggy 254
|
||||
|
||||
bit BB.HdrVol
|
||||
bpl .1 x4
|
||||
bvs .1 > $C0 ? (VOL=254)
|
||||
sta BB.tmpTrk
|
||||
|
||||
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.Seek lda BB.HdrTrk get track we're on
|
||||
jsr BB.Trk2Qtrk
|
||||
sta BB.CurrentQTrack
|
||||
|
||||
lda BB.TargetTrk
|
||||
BB.FX.SeekRead lda BB.TargetTrk
|
||||
jsr BB.Trk2Qtrk
|
||||
sta BB.TargetQTrack
|
||||
|
||||
lda BB.CurrentQTrack
|
||||
lda BB.HdrTrk get track we're on
|
||||
jsr BB.Trk2Qtrk
|
||||
sta BB.CurrentQTrack
|
||||
|
||||
cmp BB.TargetQTrack
|
||||
beq BB.Read
|
||||
beq BB.FX.Read
|
||||
|
||||
bit #1
|
||||
bne .1
|
||||
@ -399,7 +419,7 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||
lda IO.D2.Ph0Off,x
|
||||
.11
|
||||
*--------------------------------------
|
||||
BB.Read ldx BB.Slotn0
|
||||
BB.FX.Read ldx BB.Slotn0
|
||||
|
||||
stz BB.RetryCnt
|
||||
php
|
||||
@ -549,17 +569,14 @@ zzzend ldx BB.Slotn0
|
||||
rts
|
||||
|
||||
chg5 .EQ *-chg5a
|
||||
goseek jmp BB.Seek
|
||||
goseek jmp BB.FX.SeekRead
|
||||
.ED
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
BB.End .EQ *
|
||||
BB.Free .EQ $a00-*
|
||||
.BS BB.Free
|
||||
.LIST OFF
|
||||
.EP
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libblkdev.s.bb
|
||||
LOAD usr/src/lib/libblkdev.s
|
||||
ASM
|
||||
SAVE usr/src/shared/x.bb.fx.s
|
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…
x
Reference in New Issue
Block a user