SH: Bugfix for Syntax Errors in loops

This commit is contained in:
burniouf 2024-01-05 17:33:57 +01:00
parent fee113dff1
commit 6e9c339c64
6 changed files with 246 additions and 46 deletions

Binary file not shown.

View File

@ -451,12 +451,6 @@ LA480 lda BS.BAS.HDR
.8 clc
rts
*--------------------------------------
BS.LINEBUFCLR80 lda #$A0
ldx #$4F
@ -484,9 +478,14 @@ BS.DOSCMD lda #$FF
LA6A2 jmp BS.SYNERR
LA6A5 jsr BS.IsIntCmd
bcs LA6A2
bcc .1
lda GP.STATE
jsr BS.IsExtCmd
bcs LA6A2
jmp BS.ExecCmd
.1 lda GP.STATE
bne LA6BA
lda GP.EXECACTV
@ -657,7 +656,7 @@ LA7A6 lda GP.ParamS
cmp #$03
bcs LA76C
* >DEBUG
lda GP.AllowedBITS
and #CMDBITS0.RRUN+CMDBITS0.FN1
lsr
@ -745,6 +744,48 @@ BS.SYNERR lda #BS.E.SYNTAX
LA849 sec
rts
*--------------------------------------
BS.IsExtCmd ldx #BSX.GetPath.X
jsr BS.ToAUX
ldx MLI.PATHBUF
ldy #$ff
.1 iny
lda IO.LINEBUF,y
and #$7F
cmp #$0D
beq .2
cmp #$20
beq .2
sta MLI.PATHBUF,x
inx
bra .1
.2 stx MLI.PATHBUF
ldx #0
.3 inx
lda MLI.PATHBUF,x
ora #$80
jsr MON.COUT
cpx MLI.PATHBUF
bne .3
jsr BS.GetFileInfo
>DEBUG
sec
rts
*--------------------------------------
BS.ExecCmd clc
rts
*--------------------------------------
BS.GetVolAtSxDy lda GP.ParamS
asl
asl

View File

@ -1552,9 +1552,15 @@ BS.KW.ONLINE jsr MON.CROUT
lda #MLI.C.ONLINE
jsr GP.GOSYSTEM
bcs .7
bcc .2
cmp #3 MLI.E.NODEV
beq .7
ldx #BSX.OnlineErr.X
bcs .6
lda BS.CMDBUF
.2 lda BS.CMDBUF
and #$0F
inc
sta BS.CMDBUF.LEN
@ -1565,7 +1571,7 @@ BS.KW.ONLINE jsr MON.CROUT
bcs .7
ldx #BSX.Online.X
jsr BS.ToAUX
.6 jsr BS.ToAUX
jsr BS.LINEBUFOUT
@ -1749,6 +1755,34 @@ BS.KW.FORMAT.CAT
plp
.99 rts
*--------------------------------------
BS.KW.PATH lda GP.FoundBITS
lsr
bcs BS.SetPath
ldx #BSX.GetPath.X
jsr BS.ToAUX
jsr MON.CROUT
ldx #$00
.1 cpx MLI.PATHBUF
beq .2
lda MLI.PATHBUF+1,x
ora #$80
jsr MON.COUT
inx
bne .1
.2 jsr MON.CROUT
jsr MON.CROUT
clc
rts
BS.SetPath clc
rts
*--------------------------------------
BS.WBlock jsr MLI
.DA #MLI.C.WRITEBLOCK
.DA BS.WBlock.P

View File

@ -189,9 +189,8 @@ L214E jsr MLI
and #$0F
beq L218B
tax
inx
stx MLI.PATHBUF
inc
sta MLI.PATHBUF
lda #'/'
sta MLI.PATHBUF+1
jsr MLI
@ -199,7 +198,10 @@ L214E jsr MLI
.DA LDR.GETSETPFX.P
bne L218B
L216F ldy #LDR.STARTUP
L216F ldx #BSX.InitPath.X
jsr BS.ToAUX
ldy #LDR.STARTUP
lda /LDR.STARTUP
jsr LDR.GFInfoYA
bcs L218B

View File

@ -22,6 +22,14 @@ 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
@ -427,7 +435,7 @@ BSX.IsIntCmd lda #BSX.IntCmds
lda /BSX.IntCmds
sta ZPXPtr1+1
ldx #37
ldx #38
stx GP.XCNUM
.1 ldy #$ff
@ -478,10 +486,14 @@ BSX.IsIntCmd lda #BSX.IntCmds
.5 dec GP.XCNUM
bne .1
sec
rts
*--------------------------------------
BSX.IntCmds .AT "FORMAT"
BSX.IntCmds .AT "PATH"
.AT "FORMAT"
.AT "CD"
.AT "ONLINE"
.AT "MEM"
@ -558,6 +570,8 @@ BSX.KW.PBITS .DA $8040 IN
.DA #$18 FORMAT
.DA #$F6
.DA $0091 PATH
*--------------------------------------
BSX.KW.JMP .DA BS.KW.EXTERNAL 0
.DA BS.KW.IN 1
@ -597,6 +611,7 @@ BSX.KW.JMP .DA BS.KW.EXTERNAL 0
.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
@ -932,32 +947,9 @@ BSX.MSG .DA #$2A
.DA #$54
.DA #$9F
*--------------------------------------
BSX.Online jsr BS.LINEBUFCLR80
BSX.Online jsr BSX.OnlineInit
jsr BSX.OnlineSxDy
lda #39
sta BS.CATWIDTH
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
ldx BS.CMDBUF.LEN
.2 lda BS.CMDBUF.LEN,x
@ -982,6 +974,129 @@ BSX.Online jsr BS.LINEBUFCLR80
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 MLI.PATHBUF
.1 lda BSX.PATH,x
sta MLI.PATHBUF+1,x
dex
bne .1
clc
rts
*--------------------------------------
BSX.Mem ldx #16+14
stx BS.CATWIDTH
@ -1376,6 +1491,13 @@ BSX.ToUpper cmp #'a'
.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

View File

@ -1302,7 +1302,7 @@ CMD.IF jsr STK.GetCtx
ora CORE.IntCmd
jmp STK.Push
*--------------------------------------
CMD.LOOP jsr STK.Pull
CMD.LOOP jsr STK.Get
bcs .9
tax
@ -1313,9 +1313,10 @@ CMD.LOOP jsr STK.Pull
txa
bmi .8 true, loop
jmp STK.PopCtxA false, Discard loop Ptr
jmp STK.PopCtx false, Discard loop Ptr
.8 jmp STK.PullInputBufPtr
.8 jsr STK.Pull
jmp STK.PullInputBufPtr
.9 lda #E.NOWHILE
sec