From 886ca8ec0a88590edd03aa1a18caf63180253e90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 3 Oct 2017 17:33:30 +0200 Subject: [PATCH] Kernel 0.9.1 : SHELL : RealPath.YA API, StrMatch debug --- .Docs/KERNEL.md | 2 +- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/ASM.S.DIR.txt | 2 +- BIN/ASM.S.FIO.txt | 2 +- BIN/ASM.S.txt | 18 +++--- BIN/CAT.S.txt | 9 +-- BIN/CP.S.txt | 14 ++--- BIN/EDIT.S.txt | 2 +- BIN/FORMAT.S.txt | 74 ++++++++++--------------- BIN/MD.S.txt | 2 +- BIN/X.CPMVRM.S.txt | 40 ++++++-------- BIN/X.FILEENUM.S.txt | 116 +++++++++++++++++++-------------------- INC/A2osX.I.txt | 2 +- README.md | 4 +- SYS/KERNEL.S.FIO.txt | 46 ---------------- SYS/KERNEL.S.JMP.txt | 2 +- SYS/KERNEL.S.STDLIB.txt | 31 +++++++---- SYS/KERNEL.S.STRING.txt | 27 +++++---- 19 files changed, 165 insertions(+), 228 deletions(-) diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 26fbf626..ae3cbed8 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -600,7 +600,7 @@ Convert String to 32 bits int ## In: + PUSHW PTR to target buffer DWORD -+ PUSHW Source String (PSTR) ++ PUSHW Source String (C-Sring) ## Out: diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index de708bd93fa767330336464a655c4fe3af06e664..dd3600656454629fe8df33b846d2a621665154ea 100644 GIT binary patch delta 10139 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 3e9d027936aa027857b55a44f73c4138eadf30da..7d3fa3310d60848b83dfbe9b1743d36ce37e65bc 100644 GIT binary patch delta 32551 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 delta 33065 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 diff --git a/BIN/ASM.S.DIR.txt b/BIN/ASM.S.DIR.txt index 99d0d3e2..6f71f851 100644 --- a/BIN/ASM.S.DIR.txt +++ b/BIN/ASM.S.DIR.txt @@ -212,7 +212,7 @@ DIR.IN jsr SRC.GetArg bcs .9 >LDYA L.SRC.BUFFER - >SYSCALL NewPStrYA + >SYSCALL NewStr.YA phx diff --git a/BIN/ASM.S.FIO.txt b/BIN/ASM.S.FIO.txt index 5a536264..02c3c25f 100644 --- a/BIN/ASM.S.FIO.txt +++ b/BIN/ASM.S.FIO.txt @@ -49,7 +49,7 @@ FIO.OpenFileA sta FIO.hFileName ldy #S.PS.hPREFIX lda (pPs),y >PUSHA - >SYSCALL PStrCat + >SYSCALL StrCat sta FIO.hFullPath sta FIO.hFileName diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 5c3fd053..bdeed047 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -59,9 +59,10 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 - .DA CS.END-CS.START - .DA DS.END-DS.START Data Segment to Allocate - .DA 0 + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #128 SS + .DA #10 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -149,13 +150,13 @@ J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/ .DA EXP.OP.DIV .DA 0 *--------------------------------------- -CS.INIT >SYSCALL GetArgC - cmp #1 - beq .99 No arg, new file.... +CS.INIT ldy #S.PS.ARGC + lda (pPs),y + beq .99 lda #1 >SYSCALL GetArg.A - >SYSCALL GetFullPath.YA + >SYSCALL RealPath.YA txa ldy #SRC.hFILENAME @@ -182,7 +183,7 @@ CS.INIT >SYSCALL GetArgC sec .9 rts *-------------------------------------- -CS.RUN >SYSCALL GetC +CS.RUN >SYSCALL GetChar bcs .11 no char cmp #$03 Ctrl-C @@ -445,6 +446,7 @@ SRC.FLabel.Flags .BS 1 SRC.FLabel.Value .BS 4 SRC.FLabel.Len .BS 1 SRC.FLabel.Name .BS SRC.GLABEL.MAXLEN +UsrBuf256 .BS 256 *-------------------------------------- .DUMMY .OR 0 diff --git a/BIN/CAT.S.txt b/BIN/CAT.S.txt index 4876b431..35219e53 100644 --- a/BIN/CAT.S.txt +++ b/BIN/CAT.S.txt @@ -22,9 +22,10 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 - .DA CS.END-CS.START Code Length To Relocate - .DA DS.END-DS.START Data Segment to Allocate - .DA 0 + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #16 SS + .DA #4 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -264,7 +265,7 @@ CS.RUN.PRINTNUM clc >SYSCALL PrintF.YA .8 rts *-------------------------------------- -CS.RUN.OPEN >SYSCALL GetFullPath.YA +CS.RUN.OPEN >SYSCALL RealPath.YA bcs .9 stx hFullPath pha diff --git a/BIN/CP.S.txt b/BIN/CP.S.txt index 42121fed..f35da396 100644 --- a/BIN/CP.S.txt +++ b/BIN/CP.S.txt @@ -24,21 +24,21 @@ OptionList >PSTR "CRYQcryq" OptionVars .DA #bContinue,#bRecurse,#bNoConfirm,#bQuiet,#bContinue,#bRecurse,#bNoConfirm,#bQuiet *-------------------------------------- MSG.USAGE >CSTR "Usage : CP [Src File/Dir, *,? wildcards allowed]\r\n -C : Continue on error\r\n -Q : Quiet\r\n -R : Recurse subdirectories\r\n -Y : Dont't prompt for override\r\n" -MSG.DIR >CSTR "CP Dir :%S to %S..." -MSG.FILE >CSTR "CP File:%S to %S..." -MSG.OVERWRITE >CSTR "Overwrite %S [Yes,No,All]?" +MSG.DIR >CSTR "CP Dir :%s to %s..." +MSG.FILE >CSTR "CP File:%s to %s..." +MSG.OVERWRITE >CSTR "Overwrite %s [Yes,No,All]?" MSG.OK >CSTR "[OK]\r\n" MSG.ERR >CSTR "[%h]\r\n" MSG.DONE >CSTR "%D File(s) Copied.\r\n" -*-------------------------------------- -STAT .BS S.STAT -ArgCount .BS 1 -ArgIndex .BS 1 *-------------------------------------- .DUMMY .OR 0 DS.START +ArgCount .BS 1 Index .BS 1 +STAT .BS S.STAT + +hFullPath .BS 1 hDIRs .BS X.MAX.RECURSE hDIRENTs .BS X.MAX.RECURSE oDIRENTs .BS X.MAX.RECURSE*2 diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 08b2bf1f..393d8240 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -110,7 +110,7 @@ CS.INIT lda #$ff lda #1 >SYSCALL GetArg.A - >SYSCALL GetFullPath.YA + >SYSCALL RealPath.YA txa ldy #hFileName sta (pData),y diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index a9b17b5a..812c664b 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -22,9 +22,10 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 - .DA CS.END-CS.START Code Length To Relocate - .DA DS.END-DS.START Data Segment to Allocate - .DA 0 + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #16 SS + .DA #4 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -41,31 +42,22 @@ L.MSG.OK .DA MSG.OK L.MSG.ERR .DA MSG.ERR .DA 0 *-------------------------------------- -CS.INIT >SYSCALL GetArgC - sta ArgCount - cmp #1 - beq .99 - - stz ArgIndex +CS.INIT ldy #S.PS.ARGC + lda (pPs),y + beq .99 -.1 dec ArgCount - beq .7 +.1 >INC.G ArgIndex - inc ArgIndex - lda ArgIndex >SYSCALL GetArg.A + bcs .7 + >STYA ZPPtr1 lda (ZPPtr1) - cmp #2 - bne .4 - - ldy #1 - lda (ZPPtr1),y cmp #'-' bne .4 - iny + ldy #1 lda (ZPPtr1),y ldx OptionList @@ -89,31 +81,26 @@ CS.INIT >SYSCALL GetArgC .4 ldy #hDev lda (pData),y bne .5 Already have a dev name...go get VolName - - lda (ZPPtr1) - cmp #4 - bne .99 DevName must be DxDy - + >LDYA ZPPtr1 - >SYSCALL GetDevByNameYA + >SYSCALL GetDevByName.YA bcs .99 txa ldy #hDev sta (pData),y bra .1 -.5 lda (ZPPtr1) - cmp #16 - bcs .99 VolName too long +.5 ldy #$ff - tay +.6 iny -.6 lda (ZPPtr1),y + cpy #16 + beq .99 VolName too long + + lda (ZPPtr1),y sta (pData),y - dey - bpl .6 - - bra .1 success, scan for any other args + bne .6 success, scan for any other args + bra .1 .7 lda (pData) bne .8 Volume name ok @@ -146,7 +133,7 @@ CS.INIT >SYSCALL GetArgC bpl .71 .8 >LDYA L.LIBBLKDEV - >SYSCALL LoadLibYA + >SYSCALL LoadLib.YA sta hLIBBLKDEV lda (pPs) @@ -178,7 +165,7 @@ CS.RUN jsr CS.RUN.BuildCat *-------------------------------------- CS.RUN.BuildCat ldy #hDev lda (pData),y - >SYSCALL GetDevStatusA + >SYSCALL GetDevStatus.A bcs .99 >STYA ZPPtr1 @@ -191,7 +178,7 @@ CS.RUN.BuildCat ldy #hDev ldy #hDev lda (pData),y - >SYSCALL GetDevByIDA + >SYSCALL GetDevByID.A bcs .99 pha @@ -234,7 +221,7 @@ CS.RUN.WriteCat stz BlkParams.Num ldy #hDev lda (pData),y - >SYSCALL GetDevByIDA + >SYSCALL GetDevByID.A bcs .9 >STYA pDev @@ -261,7 +248,7 @@ CS.QUIT ldy #hBuf .1 lda hLIBBLKDEV beq .8 - >SYSCALL UnloadLibA + >SYSCALL UnloadLib.A .8 clc rts @@ -293,12 +280,10 @@ OptionVars .DA #bLL,#bLL MSG.USAGE >CSTR "Usage : FORMAT [VOLUME.NAME]\r\n -L : Low-Level Format\r\n" MSG.OK >CSTR "[OK]\r\n" MSG.ERR >CSTR "[%h]\r\n" -MSG.INIT >CSTR "Formatting %S (%D Blks),Volname:%S..." +MSG.INIT >CSTR "Formatting %s (%D Blks),Volname:%s..." *-------------------------------------- -LIBBLKDEV >PSTR "libblkdev.o" -DefaultVolName >PSTR "BLANKXXXXXXXX" -ArgCount .BS 1 -ArgIndex .BS 1 +LIBBLKDEV >CSTR "libblkdev.o" +DefaultVolName >CSTR "BLANKXXXXXXXX" hLIBBLKDEV .BS 1 SizeInBlocks .BS 2 BlkCnt .BS 1 @@ -308,6 +293,7 @@ BlkParams.Num .BS 2 .DUMMY .OR 0 DS.START +ArgIndex .BS 1 VolName .BS 16 hDev .BS 5 hBuf .BS 1 diff --git a/BIN/MD.S.txt b/BIN/MD.S.txt index 4fafc328..ccaaa108 100644 --- a/BIN/MD.S.txt +++ b/BIN/MD.S.txt @@ -39,7 +39,7 @@ CS.RUN lda #1 >SYSCALL GetArg.A bcs .99 - >SYSCALL GetFullPath.YA + >SYSCALL RealPath.YA bcs .9 phy pha diff --git a/BIN/X.CPMVRM.S.txt b/BIN/X.CPMVRM.S.txt index 5d981257..75bc3c6f 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/BIN/X.CPMVRM.S.txt @@ -19,9 +19,10 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 - .DA CS.END-CS.START Code Length To Relocate - .DA DS.END-DS.START Data Segment to Allocate - .DA 0 + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #16 SS + .DA #8 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -42,19 +43,10 @@ L.MSG.DONE .DA MSG.DONE L.STAT .DA STAT .DA 0 *-------------------------------------- -CS.INIT >SYSCALL GetArgC - sta ArgCount - cmp #1 - beq .99 - - stz ArgIndex - -.1 dec ArgCount - beq .7 - - inc ArgIndex - lda ArgIndex +CS.INIT +.1 >INC.G ArgCount >SYSCALL GetArg.A + bcs .7 >STYA ZPPtr1 lda (ZPPtr1) @@ -153,7 +145,7 @@ CS.INIT >SYSCALL GetArgC clc rts *-------------------------------------- -CS.RUN >SYSCALL GetC +CS.RUN >SYSCALL GetChar bcs .11 no char cmp #$03 Ctrl-C @@ -246,7 +238,7 @@ CS.RUN >SYSCALL GetC >SYSCALL GetMemPtr.A >PUSHYA >PUSHW ZPFileName - >SYSCALL PStrMatch + >SYSCALL StrMatch bcs CS.RUN.NEXT no match, skip.... .4 ldy #S.STAT.P.DRIVE @@ -352,7 +344,7 @@ CS.RUN.DIR jsr CS.RUN.DIR.MSG bcs CS.RUN.DIR.RTS .1 >SYSCALL Sleep - >SYSCALL GetC + >SYSCALL GetChar bcs .1 cmp #3 beq .99 abort @@ -416,7 +408,7 @@ CS.RUN.FILE jsr CS.RUN.FILE.MSG bcs .9 .1 >SYSCALL Sleep - >SYSCALL GetC + >SYSCALL GetChar bcs .1 cmp #3 beq .99 abort @@ -448,7 +440,7 @@ CS.RUN.FILE jsr CS.RUN.FILE.MSG jsr CS.RUN.GetPathY >PUSHYA - >SYSCALL PStrMatch + >SYSCALL StrMatch bcs .3 not same dir, go copy/delete jsr CS.RUN.Rename @@ -725,11 +717,11 @@ CS.RUN.BuildFilePath >STYA ZPPtr1 >PUSHYA - >SYSCALL PStrCpy + >SYSCALL StrCpy >PUSHW ZPFileName >PUSHW ZPPtr1 - >SYSCALL PStrCat + >SYSCALL StrCat .DO X.COPY.TO.DEST=1 ldy #hDstBasePath @@ -741,7 +733,7 @@ CS.RUN.BuildFilePath >STYA ZPPtr1 >PUSHYA - >SYSCALL PStrCpy + >SYSCALL StrCpy ldy #hDstFileName lda (pData),y @@ -754,7 +746,7 @@ CS.RUN.BuildFilePath .1 >PUSHW ZPFileName .2 >PUSHW ZPPtr1 - >SYSCALL PStrCat + >SYSCALL StrCat .FIN rts *-------------------------------------- diff --git a/BIN/X.FILEENUM.S.txt b/BIN/X.FILEENUM.S.txt index 83b3983f..2eddae36 100644 --- a/BIN/X.FILEENUM.S.txt +++ b/BIN/X.FILEENUM.S.txt @@ -15,28 +15,21 @@ X.MAX.RECURSE .EQ 8 * hDstBasePath .BS 1 (optional) * STAT .BS S.STAT *-------------------------------------- -InitSrcDirYA >SYSCALL GetFullPath.YA +InitSrcDirYA >SYSCALL RealPath.YA bcc .10 rts .10 >STYA ZPPtr1 txa >STA.G hFullPath - -* >LDYA ZPPtr1 -* >SYSCALL PrintF.YA -* lda #'|' -* >SYSCALL PutChar.A -* lda #13 -* >SYSCALL PutChar.A -* lda #10 -* >SYSCALL PutChar.A ldy #1 lda (ZPPtr1),y - beq .5 we have '/' +* beq .5 we have '/' + bne .55 + jmp .5 - >PUSHEA.G STAT +.55 >PUSHEA.G STAT >PUSHW ZPPtr1 >SYSCALL Stat bcs .1 File/DIR does not exists, go extract pattern @@ -46,11 +39,11 @@ InitSrcDirYA >SYSCALL GetFullPath.YA bne .4 TYPE not a DIR, extract.... beq .5 TYPE=DIR, do not extract pattern - ldy #0 TYPE is not DIR, check if wc +.1 ldy #0 TYPE is not DIR, check if wc -.1 iny +.11 iny lda (ZPPtr1),y Get Src Path Len - bne .1 + bne .11 dey @@ -72,7 +65,6 @@ InitSrcDirYA >SYSCALL GetFullPath.YA .3 txa beq .91 no wc, file not found.... - .4 ldy #0 .41 iny Search end of string..... @@ -86,7 +78,7 @@ InitSrcDirYA >SYSCALL GetFullPath.YA bne .42 tya - clc + sec +1 to skip '/' adc ZPPtr1 sta ZPPtr2 tay @@ -99,6 +91,9 @@ InitSrcDirYA >SYSCALL GetFullPath.YA txa >STA.G hFilter + >LDYA ZPPtr2 + jsr DEBUG.YA + lda #0 sta (ZPPtr2) @@ -145,12 +140,13 @@ InitSrcDirYA.RTS rts *-------------------------------------- .DO X.COPY.TO.DEST=1 -InitDstDirYA >SYSCALL GetFullPath.YA +InitDstDirYA >SYSCALL RealPath.YA bcs InitSrcDirYA.RTS - stx .90+1 >STYA ZPPtr1 - + txa + >STA.G hFullPath + >PUSHEA.G STAT >PUSHW ZPPtr1 >SYSCALL Stat @@ -160,40 +156,34 @@ InitDstDirYA >SYSCALL GetFullPath.YA cmp #$0f beq .5 Dst is a directory...no destfilename -.1 lda (ZPPtr1) - tay +.1 ldy #0 + +.11 iny Search end of string..... + lda (ZPPtr1),y + bne .11 -.2 lda (ZPPtr1),y search backward for a / - cmp #'/' - beq .3 - dey + lda #'/' + +.2 dey + cmp (ZPPtr1),y Search backward / bne .2 -.3 tya - cmp (ZPPtr1) - beq .5 Make sure at least one char - - ldx #0 - phy save / pos to trunk string later - -.4 iny - inx - lda (ZPPtr1),y - sta UsrBuf256,x tya - cmp (ZPPtr1) - bne .4 - - pla get back / pos - sta (ZPPtr1) trunk it for Opendir - - stx UsrBuf256 - >LDYAI UsrBuf256 - >SYSCALL NewPstrYA + sec +1 to skip '/' + adc ZPPtr1 + sta ZPPtr2 + tay + lda ZPPtr1+1 + adc #0 + sta ZPPtr2+1 + + >SYSCALL NewStr.YA bcs .9 txa - ldy #hDstFileName - sta (pData),y + >STA.G hDstFileName + + lda #0 + sta (ZPPtr2) .5 >LDYAI 256 >SYSCALL GetMem.YA Get a 256 buffer to store DstBasePath @@ -201,28 +191,26 @@ InitDstDirYA >SYSCALL GetFullPath.YA >STYA ZPPtr2 txa - ldy #hDstBasePath - sta (pData),y + >STA.G hDstBasePath - lda (ZPPtr1) - sta (ZPPtr2) - tay + ldy #$ff -.6 lda (ZPPtr1),y +.6 iny + lda (ZPPtr1),y sta (ZPPtr2),y - dey bne .6 - lda (ZPPtr2) - tay + dey + lda #'/' cmp (ZPPtr2),y beq .7 iny sta (ZPPtr2),y - tya - sta (ZPPtr2) + iny + lda #0 + sta (ZPPtr2),y .7 jsr .9 Cleanup @@ -230,7 +218,7 @@ InitDstDirYA >SYSCALL GetFullPath.YA .99 rts .9 pha -.90 lda #$ff self modified + >LDA.G hFullPath >SYSCALL FreeMem.A pla sec @@ -575,6 +563,14 @@ BasePath..1 lda (pData),y rts *-------------------------------------- +DEBUG.YA >SYSCALL PrintF.YA + lda #'|' + >SYSCALL PutChar.A + lda #13 + >SYSCALL PutChar.A + lda #10 + >SYSCALL PutChar.A + rts MAN SAVE /A2OSX.SRC/BIN/X.FILEENUM.S LOAD /A2OSX.SRC/BIN/LS.S diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 2b5f25be..e8bdc11c 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -148,7 +148,7 @@ SYS.FPrintF.YA .EQ $5C * .EQ $5E * .EQ $60 -SYS.GetFullPath.YA .EQ $62 +* .EQ $62 SYS.LoadFile .EQ $64 SYS.SaveFile .EQ $66 diff --git a/README.md b/README.md index 68522a33..92d40e2b 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,7 @@ note : '$VAR' does NOT expand Variable | RM | Working | -C : Continue On Error | 0.9 | | | | -Q : Quiet | | | | | -R : Recurse subdirectories | | -| CP | Working | -C : Continue On Error | 0.9 | +| CP | Working | -C : Continue On Error | 0.9.1 | | | | -Q : Quiet | | | | | -R : Recurse subdirectories | | | | | -Y : Dont't Prompt For Override | | @@ -207,7 +207,7 @@ note : '$VAR' does NOT expand Variable | | | -R : Recurse subdirectories | | | CHGRP | In Progress | -C : Continue On Error | 0.9 | | | | -R : Recurse subdirectories | | -| FORMAT | In Progress | -L : Low-Level Format | 0.9 | +| FORMAT | In Progress | -L : Low-Level Format | 0.9.1 | | EDIT | Working | still missing : find/replace | 0.9 | | NSCUTIL | Working | Tool for setting time in NSC/DL1216E | 0.9 | | ---- | ------ | ------- | ----- | diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 6b035ce3..bdceccfc 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -4,52 +4,6 @@ LOMEM $A00 INC 1 AUTO 6 */-------------------------------------- -* # GetFullPath.YA -* ## In : -* Y,A = Filename (C-String) -* ## Out : -* CC : success -* Y,A = FullPath (C-String) -* X = hMem of FullPath -* CS : A = Error Code -*\-------------------------------------- -K.GetFullPath.YA - >STYA ZPPtr1 - - ldx #$ff - - lda (ZPPtr1) - beq .10 - - cmp #'/' full path starting with '/'? - beq .2 yes, do not append to current prefix - -.10 ldy #S.PS.hPREFIX - lda (pPs),y - jsr K.GetMemPtr.A - >STYA ZPPtr2 - - ldy #$ff - -.1 iny - inx - lda (ZPPtr2),y - sta K.Buf256,x - bne .1 - - dex - -.2 ldy #$ff - -.3 iny - inx - lda (ZPPtr1),y - sta K.Buf256,x - bne .3 - -.8 >LDYAI K.Buf256 - jmp K.NewStr.YA -*/-------------------------------------- * # LoadFile * ## In: * PUSHW = AUXTYPE (Handled by.... diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 61f8ba47..cccd9112 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -63,7 +63,7 @@ K.SYSCALL.JMP .DA 0 $00 .DA 0 .DA 0 $60 - .DA K.GetFullPath.YA + .DA 0 .DA K.LoadFile .DA K.SaveFile .DA K.ChTyp diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index 23f4b483..dd989a02 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -208,33 +208,33 @@ K.RealPath.YA >STYA ZPPtr1 ldx #$ff lda (ZPPtr1) - beq .10 + beq .1 cmp #'/' full path starting with '/'? - beq .2 yes, do not append to current prefix + beq .3 yes, do not append to current prefix -.10 ldy #S.PS.hPREFIX +.1 ldy #S.PS.hPREFIX lda (pPs),y jsr K.GetMemPtr.A >STYA ZPPtr2 ldy #$ff -.1 iny +.2 iny inx lda (ZPPtr2),y sta K.Buf256,x - bne .1 + bne .2 dex -.2 ldy #$ff +.3 ldy #$ff -.3 iny +.4 iny inx lda (ZPPtr1),y sta K.Buf256,x - bne .3 + bne .4 *-------------------------------------- * X=LEN, K.Buf256 = /dir1../file(/) /x0 @@ -282,16 +282,16 @@ K.RealPath.YA >STYA ZPPtr1 jsr K.RealPath.RemoveAtX remove "/.." -.11 dex +.10 dex lda K.Buf256,x go to "/dir" cmp #'/' - bne .11 + bne .10 jsr K.RealPath.RemoveAtX ...remove "/dir" .80 txa - beq .89 + beq .89 Empty path!!! go put back "/" an exit dex bra .5 @@ -316,11 +316,18 @@ K.RealPath.RemoveAtX .3 lda K.Buf256,y sta K.Buf256,x - beq .8 + beq .4 iny inx bne .3 +.4 txa + bne .8 + + lda #'/' Make sure we have a least '/' in the buffer + sta K.Buf256 + stz K.Buf256+1 + .8 plx rts *-------------------------------------- diff --git a/SYS/KERNEL.S.STRING.txt b/SYS/KERNEL.S.STRING.txt index d02d2900..e28f15dd 100644 --- a/SYS/KERNEL.S.STRING.txt +++ b/SYS/KERNEL.S.STRING.txt @@ -86,12 +86,12 @@ K.StrMatch jsr PullPtr1Ptr2 bra .21 -.1 inc ZPPtr2 Make PTR2 advance to next char +.1 inc ZPPtr2 Make PTR2 (pattern) advance to next char bne .2 inc ZPPtr2+1 .2 lda (ZPPtr2) get pattern char - beq .41 + beq .41 end of pattern... .21 cmp #'*' beq .5 @@ -105,26 +105,27 @@ K.StrMatch jsr PullPtr1Ptr2 cmp (ZPPtr1),y Regular Char, compare with string at Y bne .9 no match, exit - iny advance to next char to compare - -.4 dex char matched, check if end of pattern - bne .1 continue if remaining char in pattern +.4 iny advance to next char to compare + bra .1 continue if remaining char in pattern .41 lda (ZPPtr1),y end of pattern, but end of string ? beq .8 yes, string matched entirely - bra .9 no, remaining char in string, no match +* no, remaining char in string, no match +.9 sec + rts .5 inc ZPPtr2 Make PTR2 advance to next char bne .6 inc ZPPtr2+1 - lda (ZPPtr2) we have '*', last char of pattern ? + +.6 lda (ZPPtr2) we have '*', last char of pattern ? beq .8 yes, match everything, including empty string -.6 lda (ZPPtr2) get next char of pattern + lda (ZPPtr2) get next char of pattern cmp #'*' another '*' ? beq .5 yes, '**' = '*', go next char - cmp #'?' '*?' ??? we must match a least one char + cmp #'?' '*?' ? we must match a least one char beq .3 .7 lda (ZPPtr1),y we need at least one remaining char in string, check if at end of string @@ -135,13 +136,11 @@ K.StrMatch jsr PullPtr1Ptr2 cmp (ZPPtr1),y compare with char in string bne .7 not equal to next non wildcard in pattern - bra .4 go check remaining char in pattern... + iny + bra .1 go check remaining char in pattern... .8 clc rts - -.9 sec - rts */-------------------------------------- * # StrUpr.YA/StrLwr.YA * Convert string to UPPERCASE/lowercase