diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9e73968a..d0a13175 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BASIC.FX/BASIC.S.B.txt b/BASIC.FX/BASIC.S.B.txt index 6dcc6bd6..86e19b6a 100644 --- a/BASIC.FX/BASIC.S.B.txt +++ b/BASIC.FX/BASIC.S.B.txt @@ -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 diff --git a/BASIC.FX/BASIC.S.C.txt b/BASIC.FX/BASIC.S.C.txt index 34a5e254..b1b62e9f 100644 --- a/BASIC.FX/BASIC.S.C.txt +++ b/BASIC.FX/BASIC.S.C.txt @@ -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 diff --git a/BASIC.FX/BASIC.S.LDR.txt b/BASIC.FX/BASIC.S.LDR.txt index 1dc3c299..eeac11fc 100644 --- a/BASIC.FX/BASIC.S.LDR.txt +++ b/BASIC.FX/BASIC.S.LDR.txt @@ -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 diff --git a/BASIC.FX/BASIC.S.X.txt b/BASIC.FX/BASIC.S.X.txt index 7cb6428b..e3ec7007 100644 --- a/BASIC.FX/BASIC.S.X.txt +++ b/BASIC.FX/BASIC.S.X.txt @@ -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 diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index 24a572e0..09c6f841 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -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