A2osX/BASIC.FX/BASIC.S.X.txt
2024-01-07 13:44:01 +01:00

1505 lines
22 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
AUTO 3,1
*--------------------------------------
BSX.JMPX jmp (BSX.JMP,x)
BSX.JMP
BSX.CheckOpt.X .EQ *-BSX.JMP
.DA BSX.CheckOpt
BSX.GetDecNum.X .EQ *-BSX.JMP
.DA BSX.GetDecNum
BSX.Expand.X .EQ *-BSX.JMP
.DA BSX.Expand
BSX.IsIntCmd.X .EQ *-BSX.JMP
.DA BSX.IsIntCmd
BSX.GetErrA.X .EQ *-BSX.JMP
.DA BSX.GetErrA
BSX.GetMsgY.X .EQ *-BSX.JMP
.DA BSX.GetMsgY
BSX.MkCatLine.X .EQ *-BSX.JMP
.DA BSX.MkCatLine
BSX.MkCatLineF.X .EQ *-BSX.JMP
.DA BSX.MkCatLineF
BSX.Online.X .EQ *-BSX.JMP
.DA BSX.Online
BSX.OnlineErr.X .EQ *-BSX.JMP
.DA BSX.OnlineErr
BSX.InitPath.X .EQ *-BSX.JMP
.DA BSX.InitPath
BSX.SetPath.X .EQ *-BSX.JMP
.DA BSX.SetPath
BSX.GetPath.X .EQ *-BSX.JMP
.DA BSX.GetPath
*--------------------------------------
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.Rel.X .EQ *-BSX.JMP
.DA BSX.Rel
*--------------------------------------
BSX.CheckOpt jsr BS.TMPBUF3Reset
jsr BSX.ToUpper
ldx BS.ToAUXSaveX
ldy #$09
LA8FB cmp BSX.KW.OPT,y
beq LA935
dey
bpl LA8FB
cmp #'T'
beq LA90A
LA907 lda #BS.E.SYNTAX
sec
rts
LA90A lda #CMDBITS0.T
and GP.AllowedBITS
beq LA931
tsb GP.FoundBITS
stz XBC08
lda #$12
sta XBC09
jsr BS.GetCharSpaceSep
beq LA907
cmp #'$'
beq LA984
cmp #'A'
bcc LA96E
jmp BSX.GetFTypeASC
LA931 lda #BS.E.INVOPT
sec
rts
LA935 lda BSX.KW.OPT.PBITSLO,y
beq LA955
and GP.AllowedBITS+1
beq LA931
cmp #$04
bne LA94F
and GP.FoundBITS+1
bne LA955
lda #$01
sta GP.ParamD
lda #CMDBITS1.SD
LA94F tsb GP.FoundBITS+1
LA955 lda BSX.KW.OPT.PBITSHI,y
and #$03
sta XBC08
lda BSX.KW.OPT.PBITSHI,y
lsr
lsr
sta XBC09
jsr BS.GetCharSpaceSep
beq LA9BE
cmp #'$'
beq LA984
LA96E stx GP.INPTR
jsr BSX.GetDecDigit
bcc LA97A
bmi LA9C1
bcs LA9BE
LA97A ldx GP.INPTR
jsr BS.GetCharSpaceSep
bne LA96E
beq LA99D
LA984 jsr BS.GetCharSpaceSep
beq LA9BE
LA989 stx GP.INPTR
jsr BSX.GetHexDigit
bcc LA995
bmi LA9C1
bcs LA9BE
LA995 ldx GP.INPTR
jsr BS.GetCharSpaceSep
bne LA989
LA99D ldx #$02
LA99F cpx XBC08
beq LA9AC
lda BS.TMPBUF4,x
bne LA9C1
dex
bne LA99F
LA9AC ldy XBC09
LA9AF lda BS.TMPBUF4,x
sta GP.ParamA,y
dey
dex
bpl LA9AF
ldx GP.INPTR
clc
rts
LA9C1 lda #BS.E.RANGE
.HS 2C BIT ABS
LA9BE lda #BS.E.SYNTAX
sec
rts
*--------------------------------------
BSX.GetDecNum ldx BS.ToAUXSaveX
bra LA96E
*--------------------------------------
BSX.GetDecDigit cmp #'0'
bcc LAA72
cmp #'9'+1
bcc LAA76
LAA72 sec
ora #$00
rts
LAA76 and #$0F
pha
lda BS.TMPBUF4+2
cmp #$1A
bcs LAAA2
ldx #$02
LAA82 lda BS.TMPBUF4,x
pha
dex
bpl LAA82
jsr BS.TMPBUF3x2
jsr BS.TMPBUF3x2
ldx #$00
clc
LAA92 pla
adc BS.TMPBUF4,x
sta BS.TMPBUF4,x
inx
txa
eor #$03
bne LAA92
jsr BS.TMPBUF3x2
LAAA2 pla
bcs LAAB8
adc BS.TMPBUF4
sta BS.TMPBUF4
bcc LAABB
clc
inc BS.TMPBUF4+1
bne LAABB
inc BS.TMPBUF4+2
bne LAABB
LAAB8 lda #$FF
sec
LAABB rts
*--------------------------------------
BSX.GetHexDigit cmp #'0'
bcc LAACC
cmp #'9'+1
bcc LAAD2
cmp #'A'
bcc LAACC
cmp #'F'+1
bcc LAAD0
LAACC sec
ora #$00
rts
LAAD0 sbc #$06
LAAD2 and #$0F
ldx #$03
LAAD6 jsr BS.TMPBUF3x2
bcs LAAB8
dex
bpl LAAD6
ora BS.TMPBUF4
sta BS.TMPBUF4
rts
*--------------------------------------
BSX.KW.OPT .AS "ABEL@DFRVS"
*--------------------------------------
BSX.WHICHBITS
* .HS 8040201008040201
BSX.KW.OPT.PBITSLO
.DA #$80
.DA #$40
.DA #$20
.DA #$10
.DA #$08
.DA #$04
.DA #$02
.DA #$01
.DA #$00
.DA #$04
BSX.KW.OPT.PBITSHI
.DA #$05
.DA #$12
.DA #$19
.DA #$21
.DA #$45
.DA #$28
.DA #$31
.DA #$39
.DA #$40
.DA #$24
*--------------------------------------
BSX.GetFTypeASC ldy #$00
.1 sta BS.TMPBUF4,y
iny
cpy #$03
beq .3
jsr BS.GetCharSpaceSep
bne .1
.2 lda #BS.E.SYNTAX
sec
rts
.3 stx GP.INPTR
.4 ldx #$00
lda XBC08
cmp #$0F
beq .2
asl
adc XBC08
tay
.5 lda BS.TMPBUF4,x
eor BSX.PRODOSTYPES.ASC,y
asl
bne .6
iny
inx
cpx #$03
bne .5
beq .7
.6 inc XBC08
bne .4
.7 lda #$0E
sec
sbc XBC08
tay
lda BSX.PRODOSTYPES.H,y
sta GP.ParamT
ldx GP.INPTR
clc
rts
*--------------------------------------
BSX.Expand stz BSX.Expand.Ptr start at first char of BS.CMDBUF
.2 jsr BSX.Expand.GetN
beq .8
cmp #'.'
bne .6
jsr BSX.Expand.GetN
beq .9
cmp #'/' /./ ???? discard
beq .2
cmp #'.' /.DIR....
bne .5
jsr BSX.Expand.GetN
beq .3 /..
cmp #'/'
bne .9
ldy MLI.PATHBUF remove /DIR/..
cpy #1
beq .9 only /
.3 dey
lda MLI.PATHBUF,y
cmp #'/'
bne .3
sty MLI.PATHBUF
bra .2
.5 pha
lda #'.'
jsr BSX.Expand.PutN
pla
.6 jsr BSX.Expand.PutN
.7 jsr BSX.Expand.GetN
beq .8
jsr BSX.Expand.PutN
cmp #'/'
bne .7
bra .2
.8 ldy MLI.PATHBUF
.80 lda MLI.PATHBUF,y
sta BS.CMDBUF.LEN,y
dey
bpl .80
clc
rts
.9 sec
rts
BSX.Expand.GetN ldx BSX.Expand.Ptr
cpx BS.CMDBUF.LEN
beq .8
inc BSX.Expand.Ptr
lda BS.CMDBUF,x NZ
.8 rts
BSX.Expand.PutN inc MLI.PATHBUF
ldy MLI.PATHBUF
sta MLI.PATHBUF,y
rts
BSX.Expand.Ptr .BS 1
*--------------------------------------
BSX.IsIntCmd lda #BSX.IntCmds
sta ZPXPtr1
lda /BSX.IntCmds
sta ZPXPtr1+1
ldx #38
stx GP.XCNUM
.1 ldy #$ff
.2 iny
lda BS.CMDBUF,y
jsr BSX.ToUpper
eor (ZPXPtr1),y
asl
bne .3
bcc .2
sty GP.XLEN
lda GP.XCNUM
asl
tax
lda BSX.KW.PBITS-2,x
sta GP.AllowedBITS
lda BSX.KW.PBITS-1,x
sta GP.AllowedBITS+1
lda BSX.KW.JMP,x
sta BS.KW.JMPADDR
lda BSX.KW.JMP+1,x
sta BS.KW.JMPADDR+1
clc
rts
.3 iny
bcs .4
lda (ZPXPtr1),y
asl
bra .3
.4 tya
clc
adc ZPXPtr1
sta ZPXPtr1
bcc .5
inc ZPXPtr1+1
.5 dec GP.XCNUM
bne .1
sec
rts
*--------------------------------------
BSX.IntCmds .AT "PATH"
.AT "FORMAT"
.AT "CD"
.AT "ONLINE"
.AT "MEM"
.AT "MTR"
.AT "-"
.AT "POSITION"
.AT "RESTORE"
.AT "CATALOG"
.AT "VERIFY"
.AT "UNLOCK"
.AT "RENAME"
.AT "PREFIX"
.AT "DELETE"
.AT "CREATE"
.AT "APPEND"
.AT "WRITE"
.AT "STORE"
.AT "NOMON"
.AT "FLUSH"
.AT "CLOSE"
.AT "CHAIN"
.AT "BSAVE"
.AT "BLOAD"
.AT "SAVE"
.AT "READ"
.AT "OPEN"
.AT "LOCK"
.AT "LOAD"
.AT "EXEC"
.AT "BRUN"
.AT "RUN"
.AT "BYE"
.AT "FRE"
.AT "CAT"
.AT "PR#"
.AT "IN#"
*--------------------------------------
BSX.KW.PBITS .DA $8040 IN
.DA $8040 PR
.DA $0495 CAT
.DA $0000 FRE
.DA $0000 BYE
.DA $0C11 RUN
.DA $F401 BRUN
.DA $0701 EXEC
.DA $0401 LOAD
.DA $0401 LOCK
.DA $142D OPEN
.DA $5321 READ
.DA $0409 SAVE
.DA $F405 BLOAD
.DA $F40D BSAVE
.DA $0C01 CHAIN
.DA $0001 CLOSE
.DA $0001 FLUSH
.DA $0000 NOMON
.DA $0409 STORE
.DA $4321 WRITE
.DA $142D APPEND
.DA $040D CREATE
.DA $0401 DELETE
.DA $0491 PREFIX
.DA $0403 RENAME
.DA $0401 UNLOCK
.DA $0411 VERIFY
.DA $0495 CATALOG
.DA $0401 RESTORE
.DA $0321 POSITION
.DA $0401 DASH
.DA $0000 MTR
.DA $0000 MEM
.DA $0000 ONLINE
.DA $0491 CD
.DA #$18 FORMAT
.DA #$F6
.DA $0091 PATH
*--------------------------------------
BSX.KW.JMP .DA BS.KW.EXTERNAL 0
.DA BS.KW.IN 1
.DA BS.KW.PR 2
.DA BS.KW.CAT 3
.DA BS.KW.FRE 4
.DA BS.KW.BYE 5
.DA BS.KW.RUN 6
.DA BS.KW.BRUN 7
.DA BS.KW.EXEC 8
.DA BS.KW.LOAD 9
.DA BS.KW.LOCK 10
.DA BS.KW.OPEN 11
.DA BS.KW.READ 12
.DA BS.KW.SAVE 13
.DA BS.KW.BLOAD 14
.DA BS.KW.BSAVE 15
.DA BS.KW.CHAIN 16
.DA BS.KW.CLOSE 17
.DA BS.KW.FLUSH 18
.DA BS.KW.NOMON 19
.DA BS.KW.STORE 20
.DA BS.KW.WRITE 21
.DA BS.KW.APPEND 22
.DA BS.KW.CREATE 23
.DA BS.KW.DELETE 24
.DA BS.KW.PREFIX 25
.DA BS.KW.RENAME 26
.DA BS.KW.UNLOCK 27
.DA BS.KW.VERIFY 28
.DA BS.KW.CATALOG 29
.DA BS.KW.RESTORE 30
.DA BS.KW.POSITION 31
.DA BS.KW.DASH 32
.DA BS.KW.MTR 33
.DA BS.KW.MEM 34
.DA BS.KW.ONLINE 35
.DA BS.KW.PREFIX 36 (CD)
.DA BS.KW.FORMAT 37
.DA BS.KW.PATH 38
*--------------------------------------
BSX.GetErrA tax
ldy BSX.MSG.IDX-2,x
BSX.GetMSGY ldx #$00
clc
stz GP.INPTR
.1 jsr .4
bne .2
jsr .4
ora #$10
.2 tax
lda BSX.TBL6-1,x
beq .3
ldx GP.INPTR
sta IO.LINEBUF+1,x
inc GP.INPTR
bne .1
.3 rts
*--------------------------------------
.4 lda BSX.MSG,y
bcs .6
beq .5
lsr
lsr
lsr
lsr
sec
rts
.5 iny
lda BSX.MSG,y
sta GP.INPTR
iny
bne .4
.6 iny
and #$0F
clc
rts
*--------------------------------------
* .DA #$00 "Copyright..." (VERIFY with no arg)
* .DA #$10 CATALOG header
* .DA #$36 CATALOG footer
*--------------------------------------
BSX.MSG.IDX .DA #$54
.DA #$5B
.DA #$66
.DA #$6F
.DA #$75
.DA #$75
.DA #$7E
.DA #$84
.DA #$8A
.DA #$91
.DA #$9B
.DA #$A8
.DA #$B4
.DA #$BF
.DA #$C9
.DA #$D1
.DA #$D9
.DA #$E1
.DA #$EC
.DA #$F3
*--------------------------------------
BSX.TBL6 .AS -"ACDEFILMNORTU "
.DA #$00
*--------------------------------------
.DA #$00
.AS -"BGHKPSVWXY/().:"
*--------------------------------------
BSX.MSG .DA #$2A
.DA #$05
.DA #$0A
.DA #$B6
.DA #$02
.DA #$03
.DA #$CE
.DA #$10
.DA #$50
.DA #$57
.DA #$4E
.DA #$2A
.DA #$80
.DA #$5D
.DA #$C4
.DA #$BF
.DA #$E9
.DA #$18
.DA #$4E
.DA #$00
.DA #$10
.DA #$C0
.DA #$A0
.DA #$54
.DA #$EE
.DA #$01
.DA #$7A
.DA #$20
.DA #$40
.DA #$6E
.DA #$00
.DA #$1E
.DA #$8A
.DA #$36
.DA #$56
.DA #$43
.DA #$00
.DA #$2F
.DA #$2B
.DA #$41
.DA #$C4
.DA #$3E
.DA #$00
.DA #$40
.DA #$49
.DA #$35
.DA #$67
.DA #$4E
.DA #$06
.DA #$D0
.DA #$1C
.DA #$0A
.DA #$05
.DA #$4F
.DA #$01
.DA #$7A
.DA #$20
.DA #$40
.DA #$6E
.DA #$5B
.DA #$44
.DA #$0F
.DA #$00
.DA #$16
.DA #$01
.DA #$7A
.DA #$20
.DA #$40
.DA #$6E
.DA #$D0
.DA #$64
.DA #$30
.DA #$FE
.DA #$00
.DA #$2C
.DA #$CA
.DA #$C1
.DA #$7E
.DA #$01
.DA #$7A
.DA #$20
.DA #$40
.DA #$60
.DA #$FF
.DA #$B1
.DA #$90
.DA #$24
.DA #$E4
.DA #$BB
.DA #$AB
.DA #$F0
.DA #$9A
.DA #$E3
.DA #$40
.DA #$76
.DA #$24
.DA #$E2
.DA #$A9
.DA #$94
.DA #$2C
.DA #$43
.DA #$F0
.DA #$08
.DA #$B6
.DA #$C4
.DA #$E0
.DA #$5B
.DA #$AC
.DA #$42
.DA #$C4
.DA #$3F
.DA #$49
.DA #$3E
.DA #$A5
.DA #$E3
.DA #$1C
.DA #$1F
.DA #$05
.DA #$1C
.DA #$03
.DA #$E9
.DA #$AC
.DA #$E5
.DA #$AD
.DA #$93
.DA #$F0
.DA #$60
.DA #$BA
.DA #$E4
.DA #$BB
.DA #$AB
.DA #$F0
.DA #$36
.DA #$06
.DA #$04
.DA #$E5
.DA #$D7
.DA #$7F
.DA #$56
.DA #$74
.DA #$E7
.DA #$A2
.DA #$04
.DA #$43
.DA #$F0
.DA #$69
.DA #$07
.DA #$17
.DA #$63
.DA #$E0
.DA #$51
.DA #$B1
.DA #$84
.DA #$C4
.DA #$BF
.DA #$9A
.DA #$E0
.DA #$1D
.DA #$55
.DA #$4B
.DA #$06
.DA #$E1
.DA #$07
.DA #$16
.DA #$71
.DA #$01
.DA #$74
.DA #$F0
.DA #$56
.DA #$74
.DA #$EC
.DA #$0A
.DA #$05
.DA #$4E
.DA #$86
.DA #$06
.DA #$81
.DA #$C2
.DA #$03
.DA #$F0
.DA #$05
.DA #$BA
.DA #$02
.DA #$B1
.DA #$8E
.DA #$CA
.DA #$AE
.DA #$71
.DA #$B0
.DA #$24
.DA #$F0
.DA #$9A
.DA #$CE
.DA #$36
.DA #$B4
.DA #$2C
.DA #$E2
.DA #$A8
.DA #$81
.DA #$93
.DA #$F0
.DA #$06
.DA #$0A
.DA #$9C
.DA #$10
.DA #$9E
.DA #$4B
.DA #$BA
.DA #$BF
.DA #$36
.DA #$B4
.DA #$2C
.DA #$AB
.DA #$0A
.DA #$E5
.DA #$D7
.DA #$7F
.DA #$56
.DA #$74
.DA #$E9
.DA #$AC
.DA #$EA
.DA #$05
.DA #$49
.DA #$F0
.DA #$3D
.DA #$05
.DA #$76
.DA #$21
.DA #$C4
.DA #$E5
.DA #$67
.DA #$4E
.DA #$91
.DA #$84
.DA #$F0
.DA #$56
.DA #$74
.DA #$E0
.DA #$1D
.DA #$06
.DA #$0A
.DA #$F0
.DA #$56
.DA #$74
.DA #$0C
.DA #$06
.DA #$0D
.DA #$E0
.DA #$6C
.DA #$67
.DA #$7E
.DA #$A0
.DA #$54
.DA #$9F
*--------------------------------------
BSX.Online jsr BSX.OnlineInit
jsr BSX.OnlineSxDy
ldx BS.CMDBUF.LEN
.2 lda BS.CMDBUF.LEN,x
ora #$80
sta IO.LINEBUF+5,x
dex
bne .2
lda GP.FIBLOKS
ldx GP.FIBLOKS+1
ldy #28
jsr BSX.AXDEC2LINEBUFY
lda #"/"
sta IO.LINEBUF+30
lda GP.FIAUXTYPE
ldx GP.FIAUXTYPE+1
ldy #34
jsr BSX.AXDEC2LINEBUFY
clc
rts
*--------------------------------------
BSX.OnlineErr pha
jsr BSX.OnlineInit
pla
pha
jsr BSX.GetErrA
ldx GP.INPTR
.10 lda IO.LINEBUF+1,x
sta IO.LINEBUF+11,x
dex
bpl .10
pla
ldx #12
.1 cmp BS.BIERRTBL,x
beq .2
dex
bpl .1
lda #$27
bra .3
.2 lda BS.MLIERTBL,x
.3 pha
lsr
lsr
lsr
lsr
ora #$B0
sta IO.LINEBUF+7
pla
and #$0F
ora #$B0
sta IO.LINEBUF+8
lda #"("
sta IO.LINEBUF+6
lda #")"
sta IO.LINEBUF+9
lda #" "
sta IO.LINEBUF+5
jsr BSX.OnlineSxDy
clc
rts
*--------------------------------------
BSX.OnlineInit jsr BS.LINEBUFCLR80
lda #39
sta BS.CATWIDTH
rts
*--------------------------------------
BSX.OnlineSxDy lda #"S"
sta IO.LINEBUF+1
lda #"D"
sta IO.LINEBUF+3
lda GP.MLIMRKEOFBUF.REFNUM
asl
php
lsr
lsr
lsr
lsr
lsr
ora #$B0
sta IO.LINEBUF+2
lda #$B0
plp
adc #1
sta IO.LINEBUF+4
rts
*--------------------------------------
BSX.InitPath ldx #0
.1 inx
lda MLI.PATHBUF,x
sta BSX.PATH-1,x
cpx MLI.PATHBUF
bne .1
ldy #0
.2 lda BSX.BIN,y
beq .8
iny
inx
sta BSX.PATH-1,x
bra .2
.8 stx BSX.PATH.LEN
clc
rts
*--------------------------------------
BSX.SetPath clc
rts
*--------------------------------------
BSX.GetPath ldx BSX.PATH.LEN
stx BS.CMDBUF.LEN
.1 lda BSX.PATH-1,x
sta BS.CMDBUF-1,x
dex
bne .1
clc
rts
*--------------------------------------
BSX.Mem ldx #16+14
stx BS.CATWIDTH
ldx #0
asl
pha
asl
asl
asl
tay
.1 lda BS.MEM.MSG1,y
sta IO.LINEBUF+1,x
lda BS.MEM.MSG2,x
sta IO.LINEBUF+17,x
iny
inx
cpx #16
bne .1
ply
ldx $261,y
phx
lda $260,y
pha
ldy #20
jsr BSX.AXDEC2LINEBUFY
pla
ldy #27
jsr BSX.AHEX2LINEBUFY
pla
ldy #25
jsr BSX.AHEX2LINEBUFY
clc
rts
*--------------------------------------
BS.MEM.MSG1 .AS -"Program Start : "
.AS -"Var Start : "
.AS -"Array Start : "
.AS -"Array End : "
.AS -"String Start : "
.AS -"Himem : "
BS.MEM.MSG2 .AS -" ( ) "
*--------------------------------------
BSX.MkCatLine jsr BS.LINEBUFCLR80
lda #$A2
sta IO.LINEBUF
lda DIRENTBUF
and #$0F
tay
LA4E0 lda DIRENTBUF,y
ora #$80
sta IO.LINEBUF+1,y
dey
bne LA4E0
.DO LOWERCASE=1
lda DIRENTBUF+$1D
bpl .18
lda DIRENTBUF
and #$0f
tay
.10 cpy #8
bcs .13
lda DIRENTBUF+$1D
and BSX.WHICHBITS,y
beq .15
bne .14
.13 lda DIRENTBUF+$1C
and BSX.WHICHBITS-8,y
beq .15
.14 lda IO.LINEBUF+1,y
eor #$20
sta IO.LINEBUF+1,y
.15 dey
bne .10
.18 .FIN
stz BS.TMPBUF4+2
lda DIRENTBUF.TYPE
ldx #$0E
LA4F3 iny
iny
cmp BSX.PRODOSTYPES.H,x
beq LA505
iny
dex
bpl LA4F3
ldy #$13
jsr BSX.AHEX2LINEBUFY
bne LA549
LA505 ldx #$02
pha
LA508 lda BSX.PRODOSTYPES.ASC,y
sta $212,x
dey
dex
bpl LA508
pla
bit BS.CATWIDTH
bvc LA561
ldy #$4E
cmp #$06
beq LA533
cmp #$04
bne LA549
lda #$D2
sta $249
lda DIRENTBUF.AUXT
ldx DIRENTBUF.AUXT+1
jsr BSX.AXDEC2LINEBUFY
bra LA544
LA533 lda #$C1
sta $249
lda DIRENTBUF.AUXT
jsr BSX.AHEX2LINEBUFY
lda DIRENTBUF.AUXT+1
jsr BSX.AHEX2LINEBUFY
LA544 lda #$BD
sta $24A
LA549 lda DIRENTBUF.EOF+2
sta BS.TMPBUF4+2
lda DIRENTBUF.EOF
ldx DIRENTBUF.EOF+1
ldy #$46
jsr BSX.AXDEC2LINEBUFY
ldx #$18
ldy #$3D
jsr LA57E
LA561 ldy #$1B
lda DIRENTBUF.UBLK
ldx DIRENTBUF.UBLK+1
jsr BSX.AXDEC2LINEBUFY
lda DIRENTBUF.ACCESS
and #$C2
cmp #$C2
beq LA57A
lda #$AA
sta IO.LINEBUF+1
LA57A ldx #$21
ldy #$2C
LA57E lda $25A,x
lsr
sta XBC10
lda DIRENTBUF,x
pha
and #$1F
sta XBC0F
pla
rol
rol
rol
rol
and #$0F
beq LA5B1
cmp #$0D
bcs LA5B1
sta XBC0E
asl
adc XBC0E
sta XBC0E
lda XBC0F
beq LA5B1
lda XBC10
cmp #$64
bcc LA5C3
LA5B1 tya
sec
sbc #$06
tay
ldx #$08
LA5B8 lda BSX.NODATE,x
sta IO.LINEBUF+1,y
dey
dex
bpl LA5B8
rts
LA5C3 lda $25C,x
pha
lda $25B,x
ldx #$00
cmp #$3C
bcc LA5D1
txa
LA5D1 jsr LA618
lda #$BA
sta IO.LINEBUF+1,y
dey
pla
ldx #$00
cmp #$18
bcc LA5E2
txa
LA5E2 cmp #$0A
php
jsr BSX.AXDEC2LINEBUFY
plp
bcs LA5EC
dey
LA5EC dey
lda XBC10
jsr LA618
dey
ldx XBC0E
inx
inx
inx
LA5FA lda BSX.MONTHS-4,x
sta IO.LINEBUF+1,y
dey
dex
cpx XBC0E
bne LA5FA
lda #$AD
sta IO.LINEBUF+1,y
sta $205,y
dey
lda XBC0F
ldx #$00
jmp BSX.AXDEC2LINEBUFY
LA618 clc
adc #$64
jsr BSX.AXDEC2LINEBUFY
iny
rts
*--------------------------------------
BSX.MONTHS .AS -"JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
BSX.NODATE .AS -"<NO DATE>"
*--------------------------------------
BSX.MkCatLineF jsr BS.LINEBUFCLR80
ldy #$36
jsr BSX.GetMSGY
jsr BS.TMPBUF3Reset
lda GP.FIAUXTYPE
ldx GP.FIAUXTYPE+1
ldy #$3D
jsr BSX.AXDEC2LINEBUFY
lda GP.FIBLOKS
ldx GP.FIBLOKS+1
ldy #$26
jsr BSX.AXDEC2LINEBUFY
lda GP.FIAUXTYPE
sec
sbc GP.FIBLOKS
pha
lda GP.FIAUXTYPE+1
sbc GP.FIBLOKS+1
tax
pla
ldy #$10
jsr BSX.AXDEC2LINEBUFY
clc
rts
*--------------------------------------
BSX.AHEX2LINEBUFY
pha
and #$0F
jsr LA62B
pla
lsr
lsr
lsr
lsr
LA62B ora #$B0
cmp #$BA
bcc LA633
adc #$06
LA633 sta IO.LINEBUF+1,y
dey
lda #$A4
sta IO.LINEBUF+1,y
rts
*--------------------------------------
BSX.AXDEC2LINEBUFY
stx BS.TMPBUF4+1
sta BS.TMPBUF4
.1 jsr .2
lda BS.TMPBUF4+3
ora #$B0
sta IO.LINEBUF+1,y
dey
lda BS.TMPBUF4
ora BS.TMPBUF4+1
ora BS.TMPBUF4+2
bne .1
rts
.2 ldx #$18
lda #$00
sta BS.TMPBUF4+3
.3 jsr BS.TMPBUF3x2
rol BS.TMPBUF4+3
sec
lda BS.TMPBUF4+3
sbc #$0A
bcc .4
sta BS.TMPBUF4+3
inc BS.TMPBUF4
.4 dex
bne .3
rts
*--------------------------------------
BSX.PRODOSTYPES.H
.DA #$FF
.DA #$FE
.DA #$FD
.DA #$FC
.DA #$FB
.DA #$FA
.DA #$F0
.DA #$0F
.DA #$06
.DA #$04
.DA #$EF
.DA #$1A
.DA #$1B
.DA #$19
.DA #$B3
BSX.PRODOSTYPES.ASC
.AS -"S16ADBASPAWPPASTXTBINDIRCMDINTIVRBASVARRELSYS"
*--------------------------------------
BSX.ToUpper cmp #'a'
bcc .9
cmp #'z'+1
bcs .9
eor #$20
.9 rts
*--------------------------------------
BSX.BIN .AZ "/BIN/"
*--------------------------------------
.DUMMY
BSX.PATH.LEN .BS 1
BSX.PATH .BS 64
.ED
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s.x
LOAD usr/src/basic.fx/basic.s
ASM