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 .8 clc
rts rts
*-------------------------------------- *--------------------------------------
BS.LINEBUFCLR80 lda #$A0 BS.LINEBUFCLR80 lda #$A0
ldx #$4F ldx #$4F
@ -484,9 +478,14 @@ BS.DOSCMD lda #$FF
LA6A2 jmp BS.SYNERR LA6A2 jmp BS.SYNERR
LA6A5 jsr BS.IsIntCmd 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 bne LA6BA
lda GP.EXECACTV lda GP.EXECACTV
@ -657,7 +656,7 @@ LA7A6 lda GP.ParamS
cmp #$03 cmp #$03
bcs LA76C bcs LA76C
* >DEBUG
lda GP.AllowedBITS lda GP.AllowedBITS
and #CMDBITS0.RRUN+CMDBITS0.FN1 and #CMDBITS0.RRUN+CMDBITS0.FN1
lsr lsr
@ -745,6 +744,48 @@ BS.SYNERR lda #BS.E.SYNTAX
LA849 sec LA849 sec
rts 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 BS.GetVolAtSxDy lda GP.ParamS
asl asl
asl asl

View File

@ -1552,9 +1552,15 @@ BS.KW.ONLINE jsr MON.CROUT
lda #MLI.C.ONLINE lda #MLI.C.ONLINE
jsr GP.GOSYSTEM 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 and #$0F
inc inc
sta BS.CMDBUF.LEN sta BS.CMDBUF.LEN
@ -1565,7 +1571,7 @@ BS.KW.ONLINE jsr MON.CROUT
bcs .7 bcs .7
ldx #BSX.Online.X ldx #BSX.Online.X
jsr BS.ToAUX .6 jsr BS.ToAUX
jsr BS.LINEBUFOUT jsr BS.LINEBUFOUT
@ -1749,6 +1755,34 @@ BS.KW.FORMAT.CAT
plp plp
.99 rts .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 BS.WBlock jsr MLI
.DA #MLI.C.WRITEBLOCK .DA #MLI.C.WRITEBLOCK
.DA BS.WBlock.P .DA BS.WBlock.P

View File

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

View File

@ -22,6 +22,14 @@ BSX.MkCatLineF.X .EQ *-BSX.JMP
.DA BSX.MkCatLineF .DA BSX.MkCatLineF
BSX.Online.X .EQ *-BSX.JMP BSX.Online.X .EQ *-BSX.JMP
.DA BSX.Online .DA BSX.Online
BSX.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 BSX.FMT.CheckP.X .EQ *-BSX.JMP
.DA BSX.FMT.CheckP .DA BSX.FMT.CheckP
@ -427,7 +435,7 @@ BSX.IsIntCmd lda #BSX.IntCmds
lda /BSX.IntCmds lda /BSX.IntCmds
sta ZPXPtr1+1 sta ZPXPtr1+1
ldx #37 ldx #38
stx GP.XCNUM stx GP.XCNUM
.1 ldy #$ff .1 ldy #$ff
@ -478,10 +486,14 @@ BSX.IsIntCmd lda #BSX.IntCmds
.5 dec GP.XCNUM .5 dec GP.XCNUM
bne .1 bne .1
sec sec
rts rts
*-------------------------------------- *--------------------------------------
BSX.IntCmds .AT "FORMAT" BSX.IntCmds .AT "PATH"
.AT "FORMAT"
.AT "CD" .AT "CD"
.AT "ONLINE" .AT "ONLINE"
.AT "MEM" .AT "MEM"
@ -558,6 +570,8 @@ BSX.KW.PBITS .DA $8040 IN
.DA #$18 FORMAT .DA #$18 FORMAT
.DA #$F6 .DA #$F6
.DA $0091 PATH
*-------------------------------------- *--------------------------------------
BSX.KW.JMP .DA BS.KW.EXTERNAL 0 BSX.KW.JMP .DA BS.KW.EXTERNAL 0
.DA BS.KW.IN 1 .DA BS.KW.IN 1
@ -597,6 +611,7 @@ BSX.KW.JMP .DA BS.KW.EXTERNAL 0
.DA BS.KW.ONLINE 35 .DA BS.KW.ONLINE 35
.DA BS.KW.PREFIX 36 (CD) .DA BS.KW.PREFIX 36 (CD)
.DA BS.KW.FORMAT 37 .DA BS.KW.FORMAT 37
.DA BS.KW.PATH 38
*-------------------------------------- *--------------------------------------
BSX.GetErrA tax BSX.GetErrA tax
ldy BSX.MSG.IDX-2,x ldy BSX.MSG.IDX-2,x
@ -932,32 +947,9 @@ BSX.MSG .DA #$2A
.DA #$54 .DA #$54
.DA #$9F .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 ldx BS.CMDBUF.LEN
.2 lda BS.CMDBUF.LEN,x .2 lda BS.CMDBUF.LEN,x
@ -982,6 +974,129 @@ BSX.Online jsr BS.LINEBUFCLR80
clc clc
rts 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 BSX.Mem ldx #16+14
stx BS.CATWIDTH stx BS.CATWIDTH
@ -1376,6 +1491,13 @@ BSX.ToUpper cmp #'a'
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
BSX.BIN .AZ "/BIN/"
*--------------------------------------
.DUMMY
BSX.PATH.LEN .BS 1
BSX.PATH .BS 64
.ED
*--------------------------------------
MAN MAN
SAVE usr/src/basic.fx/basic.s.x SAVE usr/src/basic.fx/basic.s.x
LOAD usr/src/basic.fx/basic.s LOAD usr/src/basic.fx/basic.s

View File

@ -1302,7 +1302,7 @@ CMD.IF jsr STK.GetCtx
ora CORE.IntCmd ora CORE.IntCmd
jmp STK.Push jmp STK.Push
*-------------------------------------- *--------------------------------------
CMD.LOOP jsr STK.Pull CMD.LOOP jsr STK.Get
bcs .9 bcs .9
tax tax
@ -1313,9 +1313,10 @@ CMD.LOOP jsr STK.Pull
txa txa
bmi .8 true, loop 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 .9 lda #E.NOWHILE
sec sec