From 17aee1f2a86fcf783dee20f7e87ff4bd6fba1484 Mon Sep 17 00:00:00 2001 From: burniouf Date: Tue, 7 Feb 2023 08:04:23 +0100 Subject: [PATCH] CIFSD:bugfix & type/auxtype mapping CP,MV,RM:memory leak & new X.FILEENUM LIBTUI:TBOX improvment --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes BIN/CP.S.txt | 10 +- BIN/LS.S.txt | 1 + BIN/MV.S.txt | 10 +- BIN/RM.S.txt | 8 +- LIB/LIBTUI.S.OBJ.txt | 6 + LIB/LIBTUI.S.TBOX.txt | 123 ++++-- SBIN/CIFSD.S.CORE.txt | 72 +++- SBIN/CIFSD.S.IO.txt | 325 +++++++++++---- SBIN/CIFSD.S.txt | 1 - SHARED/X.CPMVRM.G.txt | 31 -- SHARED/X.CPMVRM.S.txt | 868 ++++++++++++++++++--------------------- SHARED/X.FILEENUM.G.txt | 10 +- SHARED/X.FILEENUM.S.txt | 429 +++++++++---------- 15 files changed, 1016 insertions(+), 878 deletions(-) delete mode 100644 SHARED/X.CPMVRM.G.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 71cf323566a25cc75024185a9cf1f5dc7769cf49..9641bc30aa2b0bcf7f2b25780cb288ce203fa2c5 100644 GIT binary patch delta 52363 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 E3x%?^LI3~& delta 68343 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 diff --git a/BIN/CP.S.txt b/BIN/CP.S.txt index d9e603bd..153bf561 100644 --- a/BIN/CP.S.txt +++ b/BIN/CP.S.txt @@ -19,17 +19,19 @@ X.DELETE.SOURCE .EQ 0 *-------------------------------------- CS.END *-------------------------------------- -OptionList .AS "CcQqRrYy" -OptionVars .DA #bContinue,#bContinue +OptionList .AS "IiCcQqRrYy" +OptionVars .DA #0,#0 + .DA #bContinue,#bContinue .DA #bQuiet,#bQuiet .DA #bRecurse,#bRecurse .DA #bNoConfirm,#bNoConfirm *-------------------------------------- MSG.USAGE .CS "Usage : CP [Src File/Dir, *,? wildcards allowed]\r\n" .CS " -C : Continue on error\r\n" + .CS " -I <*,? wildcards allowed> : Ignore matching files\r\n" .CS " -Q : Quiet\r\n" .CS " -R : Recurse subdirectories\r\n" - .CZ " -Y : Don't prompt for override\r\n" + .CZ " -Y : Don't prompt for overwrite\r\n" MSG.DIR .CZ "CP Dir :%s to %s..." MSG.REG .CZ "CP File:%s to %s..." MSG.OVERWRITE .CZ "Overwrite %s [Yes,No,All]?" @@ -40,7 +42,7 @@ MSG.DONE .CZ "%D File(s) Copied.\r\n" *-------------------------------------- .DUMMY .OR 0 -DS.START .INB usr/src/shared/x.cpmvrm.g +DS.START .INB usr/src/shared/x.fileenum.g DS.END .ED *-------------------------------------- diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 323b8933..2c9d18f3 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -894,6 +894,7 @@ MSG.USAGE .CS "Usage : LS [-A] [-C] [-F] [-L] [-R] [filespec]\r\n" .CS " -A : Show all files\r\n" .CS " -C : List in one column\r\n" .CS " -F : Show full paths\r\n" + .CS " -I <*,? wildcards allowed> : Ignore matching files\r\n" .CS " -L : Use long listing format\r\n" .CZ " -R : Recursively list subdirectories\r\n" *-------------------------------------- diff --git a/BIN/MV.S.txt b/BIN/MV.S.txt index 37cc30dc..8156ae19 100644 --- a/BIN/MV.S.txt +++ b/BIN/MV.S.txt @@ -19,17 +19,19 @@ X.DELETE.SOURCE .EQ 1 *-------------------------------------- CS.END *-------------------------------------- -OptionList .AS "CcQqRrYy" -OptionVars .DA #bContinue,#bContinue +OptionList .AS "IiCcQqRrYy" +OptionVars .DA #0,#0 + .DA #bContinue,#bContinue .DA #bQuiet,#bQuiet .DA #bRecurse,#bRecurse .DA #bNoConfirm,#bNoConfirm *-------------------------------------- MSG.USAGE .CS "Usage : MV [Src File/Dir, *,? wildcards allowed]\r\n" .CS " -C : Continue on error\r\n" + .CS " -I <*,? wildcards allowed> : Ignore matching files\r\n" .CS " -Q : Quiet\r\n" .CS " -R : Recurse subdirectories\r\n" - .CZ " -Y : Dont't prompt for override\r\n" + .CZ " -Y : Dont't prompt for overwrite\r\n" MSG.DIR .CZ "MV Dir :%s to %s..." MSG.REG .CZ "MV File:%s to %s..." MSG.OVERWRITE .CZ "Overwrite %s [Yes,No,All]?" @@ -40,7 +42,7 @@ MSG.DONE .CZ "%D File(s) Moved.\r\n" *-------------------------------------- .DUMMY .OR 0 -DS.START .INB usr/src/shared/x.cpmvrm.g +DS.START .INB usr/src/shared/x.fileenum.g DS.END .ED *-------------------------------------- diff --git a/BIN/RM.S.txt b/BIN/RM.S.txt index 3efc217e..e1858920 100644 --- a/BIN/RM.S.txt +++ b/BIN/RM.S.txt @@ -19,13 +19,15 @@ X.DELETE.SOURCE .EQ 1 *-------------------------------------- CS.END *-------------------------------------- -OptionList .AS "CcQqRr" -OptionVars .DA #bContinue,#bContinue +OptionList .AS "IiCcQqRr" +OptionVars .DA #0,#0 + .DA #bContinue,#bContinue .DA #bQuiet,#bQuiet .DA #bRecurse,#bRecurse *-------------------------------------- MSG.USAGE .CS "Usage : RM [File/Dir, *,? wildcards allowed]\r\n" .CS " -C : Continue on error\r\n" + .CS " -I <*,? wildcards allowed> : Ignore matching files\r\n" .CS " -Q : Quiet\r\n" .CZ " -R : Recurse subdirectories\r\n" MSG.DIR .CZ "RM Dir :%s..." @@ -37,7 +39,7 @@ MSG.DONE .CZ "%D File(s) Removed.\r\n" *-------------------------------------- .DUMMY .OR 0 -DS.START .INB usr/src/shared/x.cpmvrm.g +DS.START .INB usr/src/shared/x.fileenum.g DS.END .ED *-------------------------------------- diff --git a/LIB/LIBTUI.S.OBJ.txt b/LIB/LIBTUI.S.OBJ.txt index 14b15560..b5257666 100644 --- a/LIB/LIBTUI.S.OBJ.txt +++ b/LIB/LIBTUI.S.OBJ.txt @@ -922,6 +922,12 @@ OBJ.CurOff ldy #S.OBJ.F clc rts *-------------------------------------- +OBJ.ZeroWordAtY lda #0 + lda (ZPObjPtr),y + iny + sta (ZPObjPtr),y + rts +*-------------------------------------- OBJ.IncWordAtY lda (ZPObjPtr),y inc sta (ZPObjPtr),y diff --git a/LIB/LIBTUI.S.TBOX.txt b/LIB/LIBTUI.S.TBOX.txt index e265e1d8..fa4bfb21 100644 --- a/LIB/LIBTUI.S.TBOX.txt +++ b/LIB/LIBTUI.S.TBOX.txt @@ -20,7 +20,7 @@ TBOX.New lda #S.OBJ.T.TBOX jsr OBJ.Insert bcs .99 - + lda hObj * clc rts @@ -47,7 +47,7 @@ TBOX.Run ldy #S.OBJ.S .1 cmp #C.DEL beq .3 - + jsr TBOX.GetBuf jsr TBOX.ToBuf1 bcs .8 Buffer full @@ -55,7 +55,7 @@ TBOX.Run ldy #S.OBJ.S jsr TBOX.RUN.FS1 bit bRepaintAll bmi .2 - + jsr OBJ.CurUpdPos jmp TBOX.DrawCurLine @@ -74,8 +74,8 @@ TBOX.Run ldy #S.OBJ.S jmp TBOX.DrawCurLine .4 jmp TBOX.DrawAllLines - -.8 + +.8 *-------------------------------------- TBOX.RUN.Ignore lda #0 sec @@ -87,13 +87,13 @@ TBOX.RUN.SelBegin tax iny lda (ZPObjPtr),y - + ldy #S.TBOX.SelBegin+1 sta (ZPObjPtr),y txa dey sta (ZPObjPtr),y - + bra TBOX.RUN.Sel *-------------------------------------- TBOX.RUN.SelEnd ldy #S.TBOX.BufPtr @@ -101,7 +101,7 @@ TBOX.RUN.SelEnd ldy #S.TBOX.BufPtr tax iny lda (ZPObjPtr),y - + ldy #S.TBOX.SelEnd+1 sta (ZPObjPtr),y txa @@ -117,18 +117,18 @@ TBOX.RUN.Sel ldy #S.TBOX.SelEnd lda (ZPObjPtr),y ldy #S.TBOX.SelBegin+1 sbc (ZPObjPtr),y - + ldy #S.TBOX.bSelect lda #0 ror pha eor (ZPObjPtr),y bpl .1 - + pla sta (ZPObjPtr),y jmp TBOX.SetViewPort - + .1 pla clc rts @@ -161,7 +161,7 @@ TBOX.RUN.BS ldy #S.TBOX.BufPtr+1 *-------------------------------------- TBOX.RUN.LF jsr TBOX.GetBuf - jsr TBOX.GetCurlineInAX +TBOX.RUN.LF1 jsr TBOX.GetCurlineInAX inx bne .1 @@ -262,17 +262,17 @@ TBOX.RUN.SOL lda #0 sta (ZPObjPtr),y iny sta (ZPObjPtr),y - + jsr TBOX.GetCurlineInAX jsr TBOX.GetLineAX - + ldy #S.TBOX.BufPtr lda TempC BufPtr at SOL sta (ZPObjPtr),y iny lda TempC+1 sta (ZPObjPtr),y - + jmp TBOX.CheckViewPort *-------------------------------------- TBOX.RUN.EOL jsr TBOX.GetCurlineInAX @@ -304,19 +304,34 @@ TBOX.RUN.CR jsr TBOX.GetBuf jsr TBOX.ToBuf1 bcs .8 Buffer full - jmp TBOX.RUN.FS1 + lda #0 + ldy #S.TBOX.DocX + sta (ZPObjPtr),y + iny + sta (ZPObjPtr),y + + jsr TBOX.RUN.LF1 + jsr OBJ.CurUpdPos + + bit bRepaintAll + bmi .1 + + jsr TBOX.DrawBottom + +.1 jmp TBOX.DrawAllLines + .8 clc rts *-------------------------------------- -TBOX.RUN.PGUP +TBOX.RUN.PGUP *-------------------------------------- TBOX.RUN.PGDN lda #0 sec rts *-------------------------------------- TBOX.RUN.QUIT lda #3 User Interrupt - clc + sec rts *-------------------------------------- TBOX.RUN.Home ldy #S.TBOX.DocX @@ -342,7 +357,7 @@ TBOX.RUN.EraseCL jsr TBOX.GetLineAX jsr TBOX.GetLineLenInAXC jsr TBOX.DeleteAXC - + jmp TBOX.RUN.VT1 *-------------------------------------- TBOX.RUN.EOF lda #$ff @@ -353,9 +368,9 @@ TBOX.RUN.EOF lda #$ff lda TempI sta (ZPObjPtr),y tax - + lda TempI+1 - iny + iny sta (ZPObjPtr),y jsr TBOX.GetLineAX @@ -377,7 +392,7 @@ TBOX.RUN.EOF lda #$ff sta (ZPObjPtr),y iny txa - sta (ZPObjPtr),y + sta (ZPObjPtr),y jmp TBOX.CheckViewPort *-------------------------------------- @@ -388,26 +403,50 @@ TBOX.DrawAllLines jsr OBJ.Draw.Body inc pStack - + rts *-------------------------------------- +TBOX.DrawBottom ldy #S.OBJ.InnerY + lda (ZPObjPtr),y + + clc + + ldy #S.OBJ.CurY + adc (ZPObjPtr),y + >PUSHA Start + + ldy #S.OBJ.InnerH + lda (ZPObjPtr),y + + sec + + ldy #S.OBJ.CurY + sbc (ZPObjPtr),y + >PUSHA Count + + ldy #S.OBJ.CurY + lda (ZPObjPtr),y Relative Y + >PUSHA + + jmp OBJ.Draw.Lines +*-------------------------------------- TBOX.DrawCurLine ldy #S.OBJ.InnerY lda (ZPObjPtr),y - + clc - + ldy #S.OBJ.CurY adc (ZPObjPtr),y >PUSHA Start - + lda #1 >PUSHA Count ldy #S.OBJ.CurY lda (ZPObjPtr),y Relative Y >PUSHA - + jmp OBJ.Draw.Lines *-------------------------------------- TBOX.Draw ldy #S.TBOX.VScroll @@ -425,15 +464,15 @@ TBOX.Draw ldy #S.TBOX.VScroll ldy #S.TBOX.HScroll lda (ZPObjPtr),y + beq .12 tax - beq .12 .1 jsr TBOX.GetLineChar - beq .12 + beq .5 cmp #C.CR - beq .12 + beq .5 dex bne .1 @@ -454,7 +493,7 @@ TBOX.Draw ldy #S.TBOX.VScroll .3 txa bne .6 - + clc rts @@ -471,7 +510,7 @@ TBOX.Draw ldy #S.TBOX.VScroll .8 clc rts *-------------------------------------- -TBOX.Activate +TBOX.Activate *-------------------------------------- TBOX.Deactivate clc rts @@ -524,7 +563,7 @@ TBOX.GetLineAX stx TempW jsr TBOX.GetLineLenInAXC bcc .9 - + php pha @@ -569,18 +608,18 @@ TBOX.GetLineChar lda (ZPPtr1) beq .8 - + inc ZPPtr1 bne .7 - + inc ZPPtr1+1 - + .7 inc TempC bne .8 - + inc TempC+1 - -.8 rts + +.8 rts *-------------------------------------- TBOX.GetLineLenInAXC lda ZPPtr1+1 @@ -706,9 +745,9 @@ TBOX.CheckViewPort jsr TBOX.SetViewPort bit bRepaintAll bpl .8 - + jmp TBOX.DrawAllLines - + .8 jmp OBJ.CurUpdPos *-------------------------------------- TBOX.SetViewPort @@ -899,7 +938,7 @@ TBOX.SetViewPort .40 ldy #S.OBJ.CurY sta (ZPObjPtr),y - + dec bRepaintAll .41 clc CLC RTS to jmp to diff --git a/SBIN/CIFSD.S.CORE.txt b/SBIN/CIFSD.S.CORE.txt index bcd83802..2b9a1621 100644 --- a/SBIN/CIFSD.S.CORE.txt +++ b/SBIN/CIFSD.S.CORE.txt @@ -112,6 +112,14 @@ CORE.AppendPathPtr2 rts *-------------------------------------- CORE.AppendTypePtr2 + pha + + lda #'.' + sta (ZPPtr2),y + iny + + pla + ldx #0 .1 cmp PRODOS.FT.HEX,x @@ -121,6 +129,43 @@ CORE.AppendTypePtr2 cpx #PRODOS.FT.TXT-PRODOS.FT.HEX bne .1 + pha + + lda #'0' + sta (ZPPtr2),y + iny + + pla + bra CORE.AppendHEXPtr2 + +.4 txa + asl + asl + tax + +.6 lda PRODOS.FT.TXT,x + sta (ZPPtr2),y + beq .8 + + inx + iny + bra .6 + +.8 rts +*-------------------------------------- +CORE.AppendAuxTPtr2 + pha + + lda #'_' + sta (ZPPtr2),y + iny + + pla + jsr CORE.AppendHEXPtr2 + + txa +*-------------------------------------- +CORE.AppendHEXPtr2 pha lsr lsr @@ -133,7 +178,9 @@ CORE.AppendTypePtr2 adc #6 -.2 sta PRODOS.FT.DFLT+1 +.2 sta (ZPPtr2),y + iny + pla and #$0F @@ -143,26 +190,10 @@ CORE.AppendTypePtr2 adc #6 -.3 sta PRODOS.FT.DFLT+2 - -.4 txa - asl - asl - tax - - lda #'.' - sta (ZPPtr2),y +.3 sta (ZPPtr2),y iny - -.6 lda PRODOS.FT.TXT,x - sta (ZPPtr2),y - beq .8 - - inx - iny - bra .6 - -.8 rts + + rts *-------------------------------------- CORE.Add2ByteCount ldy ByteCountOfs @@ -256,7 +287,6 @@ CORE.SetReqLen lda ZPReqLen sta (ZPReqPtr),y lda ZPReqLen+1 - sec sbc /S.NETBIOS dey sta (ZPReqPtr),y diff --git a/SBIN/CIFSD.S.IO.txt b/SBIN/CIFSD.S.IO.txt index e2da5e0a..3e7e391a 100644 --- a/SBIN/CIFSD.S.IO.txt +++ b/SBIN/CIFSD.S.IO.txt @@ -39,7 +39,7 @@ IO.Sleep ldy #S.PS.PID sta CIFS.PID dec CIFS.Status - + stz CIFS.Cnt stz CIFS.Cnt+1 @@ -231,7 +231,7 @@ IO.Q.OpenDir >STYA pPath resolved path .98 jmp IO.Exit *-------------------------------------- -* IO.R.OpenDir +* IO.R.OpenDir *-------------------------------------- * A = hDIR *-------------------------------------- @@ -472,72 +472,12 @@ IO.R.ReadDir.FillBuf sec jsr IO.AddA2Ptr1 - txa - sec - sbc #4 "x.EXT" ? - bcc .7 + jsr IO.R.ReadDir.AuxT - tay - - lda (ZPPtr2),y - cmp #'.' - bne .7 - - ldx #0 - -.4 phy Y = '.' offset - - phx - -.5 iny - lda (ZPPtr2),y - beq .51 - - cmp #'A' - bcc .50 - - cmp #'Z'+1 - bcs .50 - - eor #$20 - -.50 cmp PRODOS.FT.TXT,x - bne .6 - - inx - bra .5 - -.51 pla - lsr - lsr - tax - lda PRODOS.FT.HEX,x - sta StatBuf+S.STAT.P.TYPE - - ply - lda #0 - sta (ZPPtr2),y - - tya - bra .70 - -.6 pla - clc - adc #4 - tax - - ply - - cpx #PRODOS.FT.END - bne .4 - - tya -* sec - adc #3 - bra .70 + jsr IO.R.ReadDir.Type .7 txa -.70 sec +\0 + sec +\0 jsr IO.AddA2Ptr2 jsr IO.StatBuf2Ptr2 @@ -552,6 +492,180 @@ IO.R.ReadDir.FillBuf sta (ZPPtr2) rts +*-------------------------------------- +IO.R.ReadDir.AuxT + txa X = filename len + sec + sbc #5 "x.EXT_hhhh" ? + bcc .99 + beq .99 + + tay + + lda (ZPPtr2),y + cmp #'_' + bne .99 + + phy + + iny + lda (ZPPtr2),y + + jsr IO.IsHexDigit + bcs .9 + + asl + asl + asl + asl + sta StatBuf+S.STAT.P.AUXTYPE+1 + + iny + lda (ZPPtr2),y + + jsr IO.IsHexDigit + bcs .9 + + ora StatBuf+S.STAT.P.AUXTYPE+1 + sta StatBuf+S.STAT.P.AUXTYPE+1 + + iny + lda (ZPPtr2),y + + jsr IO.IsHexDigit + bcs .9 + + asl + asl + asl + asl + sta StatBuf+S.STAT.P.AUXTYPE + + iny + lda (ZPPtr2),y + + jsr IO.IsHexDigit + bcs .9 + + ora StatBuf+S.STAT.P.AUXTYPE + sta StatBuf+S.STAT.P.AUXTYPE + + pla + tax + tay + lda #0 + sta (ZPPtr2),y + rts + +.9 plx + +.99 stz StatBuf+S.STAT.P.AUXTYPE + stz StatBuf+S.STAT.P.AUXTYPE+1 + + rts +*-------------------------------------- +IO.R.ReadDir.Type + txa X = filename len + sec + sbc #4 "x.EXT" ? + bcc .99 + beq .99 + + tay + + lda (ZPPtr2),y + cmp #'.' + bne .99 + + phx + + ldx #0 + +.1 phy Y = '.' offset + +.2 iny + lda (ZPPtr2),y + beq .4 + + cmp #'A' + bcc .3 + + cmp #'Z'+1 + bcs .3 + + eor #$20 + +.3 cmp PRODOS.FT.TXT,x + bne .5 + + inx + bra .2 + +.4 txa + lsr + lsr + tax + lda PRODOS.FT.HEX,x + sta StatBuf+S.STAT.P.TYPE + + ply + bra .8 + +.5 txa + and #$FC + clc + adc #4 + tax + + ply + + cpx #PRODOS.FT.END + bne .1 + + iny + lda (ZPPtr2),y + cmp #'0' + bne .9 + + iny + lda (ZPPtr2),y + + jsr IO.IsHexDigit + bcs .9 + + asl + asl + asl + asl + sta StatBuf+S.STAT.P.TYPE + + iny + lda (ZPPtr2),y + + jsr IO.IsHexDigit + bcs .9 + + ora StatBuf+S.STAT.P.TYPE + sta StatBuf+S.STAT.P.TYPE + +.8 pla + sec + sbc #4 + tax + + tay + lda #0 + sta (ZPPtr2),y + + rts + +.9 plx + +.99 stz StatBuf+S.STAT.P.TYPE + + rts +*-------------------------------------- + *-------------------------------------- IO.Q.CloseReg IO.Q.CloseDir tax @@ -574,7 +688,7 @@ IO.Q.CloseDir tax jmp IO.Exit *-------------------------------------- -* IO.R.CloseDir +* IO.R.CloseDir *-------------------------------------- * short int fopen ( const char *filename, short int flags, short int ftype, int auxtype ); *-------------------------------------- @@ -594,18 +708,38 @@ IO.Q.FOpen >STYA pPath resolved path jsr CORE.ReqSetupPtr2 - ldy #2 - lda (pStack),y TYPE - pha - jsr CORE.AppendPathPtr2 - pla + phy + + ldy #2 + lda (pStack),y TYPE beq .2 + ply + jsr CORE.AppendTypePtr2 -.2 jsr CORE.AddYReqLen + phy + + lda (pStack) AUXT + tax + + ldy #1 + ora (pStack),y + beq .2 + + lda (pStack),y AUXT + + ply + + jsr CORE.AppendAuxTPtr2 + + phy + +.2 ply + + jsr CORE.AddYReqLen tya @@ -784,8 +918,6 @@ IO.R.FClose sta hFILE .99 jmp IO.SleepCont *-------------------------------------- -* -*-------------------------------------- IO.Q.FRead ldy #4 hFILE lda (pStack),y @@ -915,7 +1047,7 @@ IO.R.FRead jsr IO.ReadSocket >LDYA CIFS.Cnt clc - + .98 >POP 5 jmp IO.Exit @@ -1106,9 +1238,9 @@ IO.Q.FTell jsr IO.GetFD dey cpy #S.FD.REG.FPOS-1 bne .1 - + clc - + jmp IO.Exit *-------------------------------------- * IO.R.FTell @@ -1541,6 +1673,45 @@ IO.FileInfo2StatBufDT rts *-------------------------------------- +IO.IsHexDigit jsr IO.IsDigit + bcc .8 + + cmp #'A' + bcc .9 + + cmp #'F'+1 + bcc .1 + + cmp #'a' + bcc .9 + + cmp #'f'+1 + bcs .99 + + eor #$20 + +.1 +* clc + sbc #'A'-11 cc so A->10 (11-CC) + clc +.8 rts + +.9 sec +.99 rts +*-------------------------------------- +IO.IsDigit cmp #'0' + bcc .9 + + cmp #'9'+1 + bcs .99 + + and #$0F +* clc + rts + +.9 sec +.99 rts +*-------------------------------------- MAN SAVE usr/src/sbin/cifsd.s.io LOAD usr/src/sbin/cifsd.s diff --git a/SBIN/CIFSD.S.txt b/SBIN/CIFSD.S.txt index 78311585..18d1fd3e 100644 --- a/SBIN/CIFSD.S.txt +++ b/SBIN/CIFSD.S.txt @@ -450,7 +450,6 @@ PRODOS.FT.TXT .AZ "txt" .AZ "pak" .AZ "sys" PRODOS.FT.END .EQ *-PRODOS.FT.TXT -PRODOS.FT.DFLT .AZ "$ " *-------------------------------------- SMBERR01 .DA #2,#3,#32 MLIERR01 .DA #MLI.E.FNOTFND,#MLI.E.PNOTFND,#MLI.E.OPEN diff --git a/SHARED/X.CPMVRM.G.txt b/SHARED/X.CPMVRM.G.txt deleted file mode 100644 index c7a1ba0a..00000000 --- a/SHARED/X.CPMVRM.G.txt +++ /dev/null @@ -1,31 +0,0 @@ -NEW - AUTO 3,1 - .LIST OFF -*-------------------------------------- -ArgCount .BS 1 -bPause .BS 1 - -hSrcFullPath .BS 1 -Count .BS 2 -RC .BS 1 - - .DO X.COPY.TO.DEST=1 -hDstFileName .BS 1 -hDstFullPath .BS 1 - -bCopy .BS 1 - -hSrcFile .BS 1 -hDstFile .BS 1 -hCopyBuf .BS 1 -CopyRC .BS 1 - .FIN - - .DO X.DELETE.SOURCE=1 -hToDelete .BS 1 - .FIN -*-------------------------------------- -MAN -SAVE usr/src/shared/x.cpmvrm.g -LOAD usr/src/bin/cp.s -ASM diff --git a/SHARED/X.CPMVRM.S.txt b/SHARED/X.CPMVRM.S.txt index 9e3314cb..9e1b6a57 100644 --- a/SHARED/X.CPMVRM.S.txt +++ b/SHARED/X.CPMVRM.S.txt @@ -2,7 +2,7 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -X.COPY.BUF.SIZE .EQ 4096 +X.RESETSRCDIR .EQ 0 single pass *-------------------------------------- .DUMMY .OR ZPBIN @@ -15,9 +15,28 @@ ZPFileStat .BS 2 bContinue .BS 1 bRecurse .BS 1 bQuiet .BS 1 +bPause .BS 1 + +Count .BS 2 + +PageCount .EQ * +ArgIndex .BS 1 + +hSrcFullPath .BS 1 + .DO X.COPY.TO.DEST=1 +X.COPY.MINBUF .EQ 1024 +X.COPY.MAXBUF .EQ 4096 + bNoConfirm .BS 1 + +hDstFullPath .BS 1 + +hSrcFile .BS 1 +hDstFile .BS 1 +hCopyBuf .BS 1 .FIN + ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -51,308 +70,138 @@ L.MSG.CRLF .DA MSG.CRLF L.MSG.DONE .DA MSG.DONE .DA 0 *-------------------------------------- -CS.INIT -.1 >INC.G ArgCount - >SYSCALL ArgV - bcs .7 +CS.INIT clc +CS.INIT.RTS rts +*-------------------------------------- +CS.RUN jsr CS.RUN.CheckOpt + bcs CS.INIT.RTS - >STYA ZPPtr1 - lda (ZPPtr1) - cmp #'-' - bne .4 - - ldy #1 - lda (ZPPtr1),y - beq .99 - -.20 ldx #OptionVars-OptionList-1 - -.2 cmp OptionList,x - beq .3 - - dex - bpl .2 - -.99 >LDYA L.MSG.USAGE - >SYSCALL PutS - lda #E.SYN - sec - rts - -.3 lda OptionVars,x - tax -* sec - ror $0,x - - iny - lda (ZPPtr1),y - bne .20 - - bra .1 - -.4 >LDA.G index - - .DO X.COPY.TO.DEST=1 - bne .5 Already have a Src dir... - .ELSE - bne .99 - .FIN - - >LDYA ZPPtr1 - jsr InitSrcDirYA - bcc .1 success, scan for any other args - -.9 rts - - .DO X.COPY.TO.DEST=1 -.5 >LDA.G hDstBasePath - bne .99 we already have a second arg....error! - - >LDYA ZPPtr1 - jsr InitDstDirYA - bcc .1 success, scan for any other args - - rts - .FIN - -.7 >LDA.G index processed all args - beq .99 , no src ? ERROR - - .DO X.COPY.TO.DEST=1 - >LDA.G hDstBasePath - bne .8 we also have a Dst folder - - ldy #S.PS.hCWD no dst folder, use actual prefix - lda (pPS),y - >SYSCALL GetMemPtr - jsr InitDstDirYA - bcs .99 - .FIN - -.8 >LDYAI 256 + >LDYAI 256 >SYSCALL GetMem - bcs .9 + bcs CS.INIT.RTS - txa - >STA.G hSrcFullPath + stx hSrcFullPath .DO X.COPY.TO.DEST=1 >LDYAI 256 >SYSCALL GetMem - bcs .9 + bcs CS.INIT.RTS - txa - >STA.G hDstFullPath - - .FIN - clc -CS.INIT.RTS rts -*-------------------------------------- -CS.RUN ldy #S.PS.hStdIn - lda (pPS),y - >SYSCALL FEOF - bcs CS.INIT.RTS I/O error - tay - bne .15 - - >SYSCALL GetChar - bcs CS.INIT.RTS I/O error - cmp #$03 Ctrl-C - bne .10 - - sec - rts Abort.... - -.10 cmp #$13 Ctrl-S - bne .15 - - >LDA.G bPause - eor #$ff - sta (pData),y - -.15 >LDA.G bPause - bpl .1 - -.8 clc - rts -*-------------------------------------- -.1 .DO X.COPY.TO.DEST=1 - - >LDA.G bCopy - beq .2 - - jsr CS.RUN.Copy - - >LDA.G bCopy Copy completed ? - bne .8 no.....exit - - clc - >LDA.G CopyRC - - .DO X.DELETE.SOURCE=0 - beq .20 no copy error - - sec - jsr CS.RUN.CheckErr we have an error.... - bcs .9 - - jmp CS.RUN.NEXT - -.20 jsr CS.RUN.CheckErr Success!! - jsr CS.RUN.IncCount - jmp CS.RUN.NEXT - .ELSE - beq .2 - - sec - jsr CS.RUN.CheckErr we have an error.... - bcc .21 - - rts - -.21 >STZ.G hToDelete Cancel delete if any - jmp CS.RUN.NEXT - .FIN - .FIN - -.2 .DO X.DELETE.SOURCE=1 - >LDA.G hToDelete - beq .3 - - lda #0 - sta (pData),y - - ldy #hSrcFullPath - jsr CS.RUN.GetPathY - >SYSCALL Remove - bcs .22 - - jsr CS.RUN.CheckErr Success!!! - jsr CS.RUN.IncCount - jmp CS.RUN.NEXT - -.22 jsr CS.RUN.CheckErr - bcs .9 - - jmp CS.RUN.NEXT + stx hDstFullPath .FIN *-------------------------------------- -.3 jsr GetEntry - bcs CS.RUN.LEAVE - jsr FilterMatch +CS.RUN.Loop jsr CS.RUN.CheckKey + bcs .99 - bcs CS.RUN.NEXT no match, skip.... -.4 ldy #S.STAT.MODE+1 - lda (ZPFileStat),y - and #$70 - bne .5 REG file ? + bit bPause + bmi CS.RUN.Loop + + jsr X.GetEntry + bcs .80 + + jsr X.IncludeMatch + bcs .8 no match, skip.... + + jsr X.IgnoreMatch + bcc .8 jsr CS.RUN.BuildFilePath - jmp CS.RUN.REG -.5 cmp /S.STAT.MODE.DIR DIR ? - bne .7 + ldy #S.STAT.MODE+1 + lda (ZPFileStat),y + and #$70 + bne .1 REG file ? + + jsr CS.RUN.REG + bra .7 + +.1 cmp /S.STAT.MODE.DIR DIR ? + bne .98 bit bRecurse - bpl CS.RUN.NEXT + bpl .8 lda (ZPFileName) cmp #'.' - beq CS.RUN.NEXT Skip "." & ".." + bne .2 Skip "." & ".." - jsr CS.RUN.BuildFilePath - jmp CS.RUN.DIR + ldy #1 + lda (ZPFileName),y + beq .8 + + cmp #'.' + bne .2 Skip "." & ".." + + iny + lda (ZPFileName),y + beq .8 + +.2 jsr CS.RUN.DIR + +.7 jsr CS.RUN.CheckErr + bcs .99 + +.8 jsr X.GetNextEntry + bcc CS.RUN.Loop + +.80 jsr CS.RUN.LEAVE + bcc .8 -.7 lda #MLI.E.UNSUPST - sec -.9 rts -*-------------------------------------- -CS.RUN.CR.NEXT jsr CS.RUN.CR -CS.RUN.NEXT jsr GetNextEntry - bcs CS.RUN.LEAVE rts + +.98 lda #MLI.E.UNSUPST + sec +.99 rts *-------------------------------------- -CS.RUN.LEAVE jsr LeaveSubDir exit this sub dir.... - bcs .99 base, we are done, exit +CS.RUN.LEAVE jsr X.LeaveSubDir exit this sub dir.... + bcs .90 base, we are done, exit - jsr BasePath.. + jsr X.BasePath.. .DO X.DELETE.SOURCE=1 -* .DO X.COPY.TO.DEST=0 - jsr GetEntry + jsr X.GetEntry jsr CS.RUN.BuildFilePath jsr CS.RUN.DIR.MSG - bcs CS.RUN.LEAVE.RTS - - ldy #hSrcFullPath - jsr CS.RUN.GetPathY - >SYSCALL Remove - jsr CS.RUN.CheckErr bcs .99 -* .FIN + + lda hSrcFullPath + jsr CS.RUN.GetPathA + >SYSCALL Remove + .ELSE + clc .FIN - jmp CS.RUN.NEXT + rts -.99 bit bQuiet - bmi .91 +.90 bit bQuiet + bmi .98 >PUSHW L.MSG.DONE - ldy #Count+1 - >PUSHB (pData),y - dey - >PUSHB (pData),y + >PUSHW Count >PUSHBI 2 >SYSCALL PrintF + bcs .99 -.91 ldy #RC - lda (pData),y get global RC in case of bContinue +.98 lda #0 sec -CS.RUN.LEAVE.RTS - rts +.99 rts *-------------------------------------- -CS.RUN.DIR .DO X.COPY.TO.DEST=1 - jsr CS.RUN.DIR.MSG - bcs CS.RUN.LEAVE.RTS +CS.RUN.DIR jsr CS.RUN.DIR.MSG + bcs .99 - jsr CS.RUN.StatDst - bcs .3 File Not exists...go create + .DO X.COPY.TO.DEST=1 - bit bNoConfirm - bmi .21 no prompt, nothing to create, enter subdir + jsr CS.RUN.CheckOverwrite + bcs .99 ABORT - jsr CS.RUN.OVERWRITE.MSG - bcs CS.RUN.DIR.RTS + bmi .99 NO -.1 >SLEEP - >SYSCALL GetChar - bcs .1 + bne .8 YES, no create but enter - cmp #3 - beq .99 abort + lda hDstFullPath NOT EXISTS + jsr CS.RUN.PushPathA - jsr CS.RUN.ToUpper - - cmp #'N' - bne .2 - - jmp CS.RUN.CR.NEXT no overwrite, nothing to do, no recurse -.2 cmp #'Y' - beq .21 no create, but recurse - - cmp #'A' - bne .1 - -* sec - ror bNoConfirm - -.21 clc - lda #0 - bra .4 - -.3 ldy #hDstFullPath - jsr CS.RUN.PushPathY ldy #S.STAT.MODE+1 lda (ZPFileStat),y >PUSHA @@ -360,99 +209,64 @@ CS.RUN.DIR .DO X.COPY.TO.DEST=1 lda (ZPFileStat),y >PUSHA >SYSCALL MKDir + bcs .99 -.4 jsr CS.RUN.CheckErr - bcs CS.RUN.DIR.RTS jsr CS.RUN.IncCount .FIN - >LDYA ZPFileName - jmp EnterSubDirYA +.8 >LDYA ZPFileName + jmp X.EnterSubDirYA -.99 ldy #RC - lda (pData),y get global RC in case of bContinue - sec -CS.RUN.DIR.RTS rts +.99 rts *-------------------------------------- CS.RUN.REG ldx #2 jsr CS.RUN.REG.MSG - bcs CS.RUN.DIR.RTS + bcs .99 .DO X.COPY.TO.DEST=1 - jsr CS.RUN.StatDst - bcs .2 File Not exists...go create - bit bNoConfirm - bmi .2 no prompt, overwrite + jsr CS.RUN.CheckOverwrite + bcs .99 ABORT - jsr CS.RUN.OVERWRITE.MSG - bcs .9 - -.1 >SLEEP - >SYSCALL GetChar - bcs .1 - - cmp #3 - beq .99 abort - - jsr CS.RUN.ToUpper - - cmp #'N' - bne .11 - - jmp CS.RUN.CR.NEXT no overwrite exit - -.90 rts - -.11 cmp #'Y' - beq .12 copy - - cmp #'A' - bne .1 - -* sec - ror bNoConfirm - -.12 jsr GetEntry get back current entry corrupted by SLEEP + bmi .99 do not overwrite .2 .DO X.DELETE.SOURCE=1 mv file, check if srcbase=dstbase - ldy #hSrcBasePath - jsr CS.RUN.PushPathY - ldy #hDstBasePath - jsr CS.RUN.PushPathY + bne .3 overwrite, copy over + + lda hSrcBasePath + jsr CS.RUN.PushPathA + lda hDstBasePath + jsr CS.RUN.PushPathA >SYSCALL StrCaseCmp bcs .3 not same dir, go copy/delete - jsr CS.RUN.Rename - jsr CS.RUN.CheckErr - bcs .9 + lda hSrcFullPath + jsr CS.RUN.PushPathA + lda hDstFullPath + jsr CS.RUN.PushPathA + >SYSCALL Rename + bcc .8 - jmp CS.RUN.NEXT + rts .FIN .3 jsr CS.RUN.CopyStart - bcc .4 + bcs .99 - jsr CS.RUN.CheckErr - bcs .9 - - jmp CS.RUN.NEXT .FIN .4 .DO X.DELETE.SOURCE=1 - ldy #hSrcFullPath - lda (pData),y - ldy #hToDelete - sta (pData),y + lda hSrcFullPath + jsr CS.RUN.GetPathA + >SYSCALL Remove + bcs .99 + .FIN - clc -.9 rts +.8 jmp CS.RUN.IncCount -.99 >LDA.G RC get global RC in case of bContinue - sec - rts +.99 rts *-------------------------------------- CS.RUN.DIR.MSG ldx #0 @@ -461,12 +275,12 @@ CS.RUN.REG.MSG bit bQuiet >PUSHW L.MSG.DIR,x - ldy #hSrcFullPath - jsr CS.RUN.PushPathY + lda hSrcFullPath + jsr CS.RUN.PushPathA .DO X.COPY.TO.DEST=1 - ldy #hDstFullPath - jsr CS.RUN.PushPathY + lda hDstFullPath + jsr CS.RUN.PushPathA >PUSHBI 4 .ELSE @@ -479,96 +293,74 @@ CS.RUN.REG.MSG bit bQuiet .8 clc rts -*-------------------------------------- - .DO X.COPY.TO.DEST=1 -CS.RUN.OVERWRITE.MSG - bit bQuiet - bmi .1 - - jsr CS.RUN.CR - -.1 >PUSHW L.MSG.OVERWRITE - ldy #hDstFullPath - jsr CS.RUN.PushPathY - >PUSHBI 2 - >SYSCALL PrintF - rts - .FIN *-------------------------------------- CS.RUN.CR >PUSHW L.MSG.CRLF >PUSHBI 0 >SYSCALL PrintF - rts -*-------------------------------------- - .DO X.COPY.TO.DEST=1 - .DO X.DELETE.SOURCE=1 -CS.RUN.Rename ldy #hSrcFullPath - jsr CS.RUN.PushPathY - ldy #hDstFullPath - jsr CS.RUN.PushPathY - >SYSCALL Rename - bcs .9 - - jsr CS.RUN.IncCount - -.9 rts - .FIN - .FIN +CS.RUN.CR.RTS rts *-------------------------------------- .DO X.COPY.TO.DEST=1 CS.RUN.CopyStart - >STZ.G hSrcFile - >STA.G hDstFile - >STA.G hCopyBuf - >STA.G CopyRC Reset RC + stz hSrcFile + stz hDstFile + stz hCopyBuf - >LDYAI X.COPY.BUF.SIZE + lda hSrcFullPath + ldx #O.RDONLY + jsr CS.RUN.Open + bcs .9 + + sta hSrcFile + + lda hDstFullPath + ldx #O.WRONLY+O.CREATE + jsr CS.RUN.Open + + bcs .9 + + sta hDstFile + + lda /X.COPY.MAXBUF + +.1 sta PageCount + + ldy #0 >SYSCALL GetMem - bcs .99 + bcc .2 + + tax + + lda PageCount + lsr + cmp /X.COPY.MINBUF + bcs .1 - >STYA ZPPtr1 txa - >STA.G hCopyBuf + sec +.9 bra CS.RUN.CopyEnd - ldy #hSrcFullPath - lda #O.RDONLY - jsr CS.RUN.Open - bcs CS.RUN.CopyEnd - - >STA.G hSrcFile - - ldy #hDstFullPath - lda #O.WRONLY+O.CREATE - jsr CS.RUN.Open - - bcs CS.RUN.CopyEnd - - >STA.G hDstFile - - lda #$ff - >STA.G bCopy -* clc -.99 rts +.2 >STYA ZPPtr1 + stx hCopyBuf *-------------------------------------- -CS.RUN.Copy >PUSHB.G hSrcFile +CS.RUN.Copy >PUSHB hSrcFile >PUSHW ZPPtr1 Dst Ptr - >PUSHWI X.COPY.BUF.SIZE Bytes To Read + >PUSHB PageCount Bytes To Read + >PUSHBI 0 >SYSCALL FRead bcc .1 cmp #MLI.E.EOF - bne .9 + sec + bne CS.RUN.CopyEnd lda #0 clc bra CS.RUN.CopyEnd -.1 phy - pha - >PUSHB.G hDstFile +.1 pha + >PUSHB hDstFile >PUSHW ZPPtr1 Src Ptr pla - ply >PUSHYA Bytes To Write >SYSCALL FWrite bcs CS.RUN.CopyEnd @@ -579,40 +371,35 @@ CS.RUN.Copy >PUSHB.G hSrcFile lda #'.' >SYSCALL PutChar -.8 rts - -.9 sec +.8 jsr CS.RUN.CheckKey + bcc CS.RUN.Copy *-------------------------------------- -CS.RUN.CopyEnd >STA.G CopyRC - - php +CS.RUN.CopyEnd php pha - - >LDA.G hDstFile + + lda hDstFile beq .1 >SYSCALL FClose -.1 >LDA.G hSrcFile +.1 lda hSrcFile beq .2 >SYSCALL FClose -.2 >LDA.G hCopyBuf +.2 lda hCopyBuf beq .3 >SYSCALL FreeMem -.3 >STZ.G bCopy - - pla +.3 pla plp - rts +CS.RUN.Copy.RTS rts .FIN *-------------------------------------- -CS.RUN.Open pha Save open mode - jsr CS.RUN.PushPathY +CS.RUN.Open phx Save open mode + jsr CS.RUN.PushPathA pla >PUSHA @@ -637,41 +424,47 @@ CS.RUN.CheckErr bcs .1 >SYSCALL PutS .8 rts -.1 pha +.1 tax + clc + beq .8 SKIP + >PUSHW L.MSG.ERR - pla + txa pha >PUSHA >PUSHBI 1 >SYSCALL PrintF - lda bContinue - eor #$80 - asl pla - rts + sec + bit bContinue + bpl .99 + + clc + +.99 rts *-------------------------------------- CS.RUN.BuildFilePath - ldy #hSrcFullPath - jsr CS.RUN.PushPathY - ldy #hSrcBasePath - jsr CS.RUN.PushPathY + lda hSrcFullPath + jsr CS.RUN.PushPathA + >LDA.G hSrcBasePath + jsr CS.RUN.PushPathA >SYSCALL StrCpy - ldy #hSrcFullPath - jsr CS.RUN.PushPathY + lda hSrcFullPath + jsr CS.RUN.PushPathA >PUSHW ZPFileName >SYSCALL StrCat .DO X.COPY.TO.DEST=1 - ldy #hDstFullPath - jsr CS.RUN.PushPathY - ldy #hDstBasePath - jsr CS.RUN.PushPathY + lda hDstFullPath + jsr CS.RUN.PushPathA + >LDA.G hDstBasePath + jsr CS.RUN.PushPathA >SYSCALL StrCpy - ldy #hDstFullPath - jsr CS.RUN.PushPathY + lda hDstFullPath + jsr CS.RUN.PushPathA >LDA.G hDstFileName beq .1 @@ -686,23 +479,12 @@ CS.RUN.BuildFilePath .FIN rts *-------------------------------------- - .DO X.COPY.TO.DEST=1 - -CS.RUN.StatDst ldy #hDstFullPath - jsr CS.RUN.PushPathY - >PUSHEA.G STATBUF - >SYSCALL Stat - rts - - .FIN -*-------------------------------------- -CS.RUN.GetPathY sec +CS.RUN.GetPathA sec .HS 90 BCC -CS.RUN.PushPathY +CS.RUN.PushPathA clc php - lda (pData),y >SYSCALL GetMemPtr plp @@ -712,48 +494,220 @@ CS.RUN.PushPathY .8 rts *-------------------------------------- -CS.RUN.IncCount >INCW.G Count - rts -*-------------------------------------- -CS.RUN.ToUpper cmp #'a' - bcc .8 +CS.RUN.IncCount inc Count + bne .8 - cmp #'z'+1 - bcs .8 - - eor #$20 + inc Count+1 .8 rts +*-------------------------------------- + .DO X.COPY.TO.DEST=1 +CS.RUN.CheckOverwrite +*-------------------------------------- + lda hDstFullPath + jsr CS.RUN.PushPathA + >PUSHEA.G STATBUF + >SYSCALL Stat + bcs .8 File Not exists... + + bit bNoConfirm + bmi .4 no prompt, override + + bit bQuiet + bmi .10 + + jsr CS.RUN.CR + +.10 >PUSHW L.MSG.OVERWRITE + lda hDstFullPath + jsr CS.RUN.PushPathA + >PUSHBI 2 + >SYSCALL PrintF + bcs .99 + +.1 >SYSCALL GetChar + + cmp #3 + beq .99 abort + + jsr X.ToUpper + + cmp #'N' + bne .2 + + lda #$80 EXISTS, NO OVERWRITE + clc + rts + +.2 cmp #'Y' + beq .4 + +.3 cmp #'A' + bne .1 + +* sec + ror bNoConfirm + +.4 lda #$01 EXISTS, OVERWRITE + clc + rts + +.8 lda #0 NOT EXISTS + clc +.99 rts + .FIN +*-------------------------------------- +CS.RUN.CheckKey ldy #S.PS.hStdIn + lda (pPS),y + >SYSCALL FEOF + bcs .9 I/O error + + tay + bne .8 + + >SYSCALL GetChar + bcs .9 I/O error + + cmp #$03 Ctrl-C + beq .9 + + cmp #$13 Ctrl-S + bne .8 + + lda bPause + eor #$ff + sta bPause + +.8 clc + +.9 rts +*-------------------------------------- +CS.RUN.CheckOpt jsr CS.RUN.NextOpt + bcs .7 + + >STYA ZPPtr1 + + lda (ZPPtr1) + cmp #'-' + bne .5 + + ldy #1 + lda (ZPPtr1),y + beq .98 + +.1 ldx #OptionVars-OptionList-1 + +.2 cmp OptionList,x + beq .3 + + dex + bpl .2 + +.98 >LDYA L.MSG.USAGE + >SYSCALL PutS + lda #E.SYN + sec +.99 rts + +.3 lda OptionVars,x + beq .4 -I + + tax + dec 0,x + + iny + lda (ZPPtr1),y + bne .1 + + bra CS.RUN.CheckOpt + +.4 iny + lda (ZPPtr1),y + bne .98 + + >LDA.G hExclude + bne .98 + + jsr CS.RUN.NextOpt + bcs .98 + + >SYSCALL StrDup + bcs .99 + + txa + >STA.G hExclude + bra CS.RUN.CheckOpt +*-------------------------------------- +.5 >LDA.G index + + .DO X.COPY.TO.DEST=1 + bne .6 Already have a Src dir... + .ELSE + bne .98 + .FIN + + jsr X.InitSrcDirPtr1 + bcc CS.RUN.CheckOpt success, scan for any other args + + rts + + .DO X.COPY.TO.DEST=1 +.6 >LDA.G hDstBasePath + bne .98 we already have a second arg....error! + + jsr X.InitDstDirPtr1 + bcc CS.RUN.CheckOpt success, scan for any other args + + rts + .FIN +*-------------------------------------- +.7 >LDA.G index processed all args + beq .98 , no src ? ERROR + + .DO X.COPY.TO.DEST=1 + >LDA.G hDstBasePath + bne .8 we also have a Dst folder + + ldy #S.PS.hCWD no dst folder, use actual prefix + lda (pPS),y + >SYSCALL GetMemPtr + jsr X.InitDstDirYA + bcs .99 + .FIN + +.8 clc + rts +*-------------------------------------- +CS.RUN.NextOpt inc ArgIndex + lda ArgIndex + >SYSCALL ArgV + rts *-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- -CS.QUIT jsr LeaveSubDir +CS.QUIT jsr X.LeaveSubDir bcc CS.QUIT .DO X.COPY.TO.DEST=1 - >LDA.G bCopy - bpl .1 - jsr CS.RUN.CopyEnd - -.1 ldy #hDstFullPath - jsr .7 + lda hDstFullPath + jsr .8 ldy #hDstFileName jsr .7 .FIN - ldy #hSrcFullPath - jsr .7 + lda hSrcFullPath + jsr .8 - ldy #hFilter + ldy #hInclude jsr .7 ldy #hExclude .7 lda (pData),y - beq .9 +.8 beq .9 >SYSCALL FreeMem .9 clc diff --git a/SHARED/X.FILEENUM.G.txt b/SHARED/X.FILEENUM.G.txt index 56a5aae6..cfac6a96 100644 --- a/SHARED/X.FILEENUM.G.txt +++ b/SHARED/X.FILEENUM.G.txt @@ -6,15 +6,17 @@ hDIRs .BS X.MAX.RECURSE+1 hDIRENTs .BS X.MAX.RECURSE+1 oDIRENTs .BS X.MAX.RECURSE*2 STATBUF .BS S.STAT -hFullPath .BS 1 -hSrcBasePath .BS 1 -hFilter .BS 1 + +hInclude .BS 1 hExclude .BS 1 + +hSrcBasePath .BS 1 .DO X.COPY.TO.DEST=1 hDstBasePath .BS 1 +hDstFileName .BS 1 .FIN *-------------------------------------- MAN SAVE usr/src/shared/x.fileenum.g -LOAD usr/src/bin/ls.s +LOAD usr/src/bin/cp.s ASM diff --git a/SHARED/X.FILEENUM.S.txt b/SHARED/X.FILEENUM.S.txt index ef37daa4..db9d1c87 100644 --- a/SHARED/X.FILEENUM.S.txt +++ b/SHARED/X.FILEENUM.S.txt @@ -4,7 +4,13 @@ NEW *-------------------------------------- X.MAX.RECURSE .EQ 8 *-------------------------------------- -* Uses: (pData) +* Uses: +* (ZP) +* ZPPtr1 .BS 2 +* ZPPtr2 .BS 2 +* ZPFileName .BS 2 +* ZPFileStat .BS 2 +* (pData) * Index .BS 1 * hDIRs .BS X.MAX.RECURSE+1 * hDIRENTs .BS X.MAX.RECURSE+1 @@ -12,38 +18,35 @@ X.MAX.RECURSE .EQ 8 * STATBUF .BS S.STAT * hSrcBasePath .BS 1 * hDstBasePath .BS 1 (optional) -* hFilter .BS 1 +* hInclude .BS 1 * hExclude .BS 1 *-------------------------------------- -* Compare a ZPFileName against hFilter (e.g. '*test?.*') +* Compare a ZPFileName against hInclude (e.g. '*test?.*') * CC : match * CS : no match *-------------------------------------- -FilterMatch >LDA.G index +X.IncludeMatch >LDA.G index dec - bne FilterMatch.CLCRTS in a subdir, match everything + bne X.FilterMatch.CLCRTS in a subdir, match everything clc .HS B0 BCS -ExcludeMatch sec - php - lda #hFilter - adc #0 - tay - lda (pData),y - plp - - tax - - beq FilterMatch.RTS No filter....exit with passed carry +X.IgnoreMatch sec + ldy #hInclude + bcc .11 + + iny + +.11 lda (pData),y + beq X.FilterMatch.RTS No filter....exit with passed carry >SYSCALL GetMemPtr >STYA ZPPtr2 ldy #S.STAT.FSID lda (ZPFileStat),y if 0, Regular ProDOS.... - pha save FSID for comapring later + pha save FSID for comparing later bne .10 >LDYA ZPPtr2 ... so CI compare @@ -57,7 +60,7 @@ ExcludeMatch sec ldy #0 bra .2 -.1 jsr FilterMatch.NextPtr2 get next pattern char +.1 jsr X.FilterMatch.NextPtr2 get next pattern char beq .41 end of pattern... .2 cmp #'*' @@ -70,7 +73,7 @@ ExcludeMatch sec cmp #'?' beq .4 no need to compare, any char will match - jsr FilterMatch.CmpPtr2CharPtr1Y Regular Char, compare with string at Y + jsr X.FilterMatch.CmpPtr2CharPtr1Y Regular Char, compare with string at Y bne .9 no match, exit .4 iny advance to next char to compare @@ -82,7 +85,7 @@ ExcludeMatch sec .9 sec rts -.5 jsr FilterMatch.NextPtr2 we have '*', last char of pattern ? +.5 jsr X.FilterMatch.NextPtr2 we have '*', last char of pattern ? beq .8 yes, match everything, including empty string cmp #'*' another '*' ? @@ -95,40 +98,30 @@ ExcludeMatch sec beq .9 no chance to match ? or regular char iny - jsr FilterMatch.CmpPtr2CharPtr1Y compare with char in string + jsr X.FilterMatch.CmpPtr2CharPtr1Y compare with char in string bne .7 not equal to next non wildcard in pattern iny bra .1 go check remaining char in pattern... .8 -FilterMatch.CLCRTS +X.FilterMatch.CLCRTS clc -FilterMatch.RTS +X.FilterMatch.RTS rts *-------------------------------------- -FilterMatch.CmpPtr2CharPtr1Y +X.FilterMatch.CmpPtr2CharPtr1Y + lda (ZPFileName),y phx plx - bne .2 Foreign FS or ProDOS.FX : CS compare + bne .1 Foreign FS or ProDOS.FX : CS compare - lda (ZPFileName),y - cmp #'a' - bcc .1 - - cmp #'z'+1 - bcs .1 - - eor #$20 + jsr X.ToUpper .1 cmp (ZPPtr2) rts - -.2 lda (ZPPtr2) - cmp (ZPFileName),y - rts *-------------------------------------- -FilterMatch.NextPtr2 +X.FilterMatch.NextPtr2 inc ZPPtr2 Make PTR2 advance to next char bne .1 @@ -137,22 +130,19 @@ FilterMatch.NextPtr2 .1 lda (ZPPtr2) rts *-------------------------------------- -InitSrcDirYA >PUSHYA - >PUSHWZ Allocate - >SYSCALL RealPath - bcs FilterMatch.RTS +X.InitSrcDirYA >STYA ZPPtr1 - >STYA ZPPtr1 - txa - >STA.G hFullPath +X.InitSrcDirPtr1 + jsr X.InitGetBuf Get a 256 buffer to store BasePath + bcs .99 + + >STA.G hSrcBasePath ldy #1 - lda (ZPPtr1),y - beq .5 we have '/' + lda (ZPPtr2),y + beq .8 we have '/' - >PUSHW ZPPtr1 - >PUSHEA.G STATBUF - >SYSCALL Stat + jsr X.Init.StatBuf bcs .1 File/DIR does not exists, go extract pattern .DO X.ENTER.SUBDIR=1 @@ -169,15 +159,16 @@ InitSrcDirYA >PUSHYA .1 cmp #MLI.E.INVPATH beq .11 - jmp .9 + sec + rts -.11 jsr GetPtr1Len TYPE is not DIR, check if wc +.11 jsr X.GetPtr2Len TYPE is not DIR, check if wc dey ldx #0 Init Wildcard count -.2 lda (ZPPtr1),y search backward for a / +.2 lda (ZPPtr2),y search backward for a / cmp #'/' beq .3 @@ -192,58 +183,16 @@ InitSrcDirYA >PUSHYA bne .2 .3 txa - beq .90 no wc, file not found.... + beq .98 no wc, file not found.... -.4 jsr GetPtr1Len Search end of string..... +.4 jsr X.InitSplitBuf + bcs .99 - lda #'/' + >STA.G hInclude -.42 dey - cmp (ZPPtr1),y Search backward / - bne .42 - - tya - sec +1 to skip '/' - adc ZPPtr1 - sta ZPPtr2 - tay - lda ZPPtr1+1 - adc #0 - sta ZPPtr2+1 - - >SYSCALL StrDup - bcs .9 - - txa - >STA.G hFilter - - lda #0 - sta (ZPPtr2) cut path at last '/' to remove wildcards - -.5 >LDYAI 256 - >SYSCALL GetMem Get a 256 buffer to store BasePath - bcs .9 - - >STYA ZPPtr2 - txa - >STA.G hSrcBasePath - - jsr StrcpyPtr1ptr2 - - dey - lda #'/' - cmp (ZPPtr2),y - beq .7 - - iny - sta (ZPPtr2),y - iny - lda #0 - sta (ZPPtr2),y - -.7 >LDYA ZPPtr2 +.8 >LDYA ZPPtr2 >SYSCALL OpenDir - bcs .9 + bcs .99 ldy #hDIRs sta (pData),y set hDIRs[0] = Src Hdir @@ -251,22 +200,16 @@ InitSrcDirYA >PUSHYA lda #1 sta (pData),y index=hDIRs[0] - jsr .9 Cleanup +* clc - clc rts -.90 lda #MLI.E.FNOTFND - -.9 pha - >LDA.G hFullPath - >SYSCALL FreeMem - pla +.98 lda #MLI.E.INVPATH sec -InitSrcDirYA.RTS - rts +.99 rts *-------------------------------------- -ResetSrcDir jsr GethDIR + .DO X.RESETSRCDIR=1 +X.ResetSrcDir jsr X.GethDIR >SYSCALL CloseDir @@ -287,92 +230,107 @@ ResetSrcDir jsr GethDIR * clc .9 rts + .FIN *-------------------------------------- .DO X.COPY.TO.DEST=1 -InitDstDirYA >PUSHYA - >PUSHWZ Allocate - >SYSCALL RealPath - bcs InitSrcDirYA.RTS +X.InitDstDirYA >STYA ZPPtr1 - >STYA ZPPtr1 - txa - >STA.G hFullPath - - >PUSHW ZPPtr1 - >PUSHEA.G STATBUF - >SYSCALL Stat +X.InitDstDirPtr1 + jsr X.InitGetBuf Get a 256 buffer to store BasePath + bcs .99 + + >STA.G hDstBasePath + + jsr X.Init.StatBuf bcs .1 File/DIR does not exists, go extract DstFileName >LDA.G STATBUF+S.STAT.MODE+1 and #$F0 cmp /S.STAT.MODE.DIR - beq .5 Dst is a directory...no destfilename + beq .8 Dst is a directory...no hDstFileName -.1 jsr GetPtr1Len Search end of string..... +.1 jsr X.InitSplitBuf + bcs .99 + + >STA.G hDstFileName + +.8 jmp X.NormalizePtr2 + +.99 rts + + .FIN +*-------------------------------------- +X.InitGetBuf >LDYAI 256 + >SYSCALL GetMem Get a 256 buffer to store BasePath + bcs .99 + + >STYA ZPPtr2 + phx + + >PUSHW ZPPtr1 + >PUSHW ZPPtr2 + >SYSCALL RealPath + bcs .98 + + pla hBuf + +* clc + + rts + +.98 plx + + pha + txa + >SYSCALL FreeMem + pla + + sec + +.99 rts +*-------------------------------------- +X.Init.StatBuf >PUSHW ZPPtr2 + >PUSHEA.G STATBUF + >SYSCALL Stat + rts +*-------------------------------------- +X.InitSplitBuf jsr X.GetPtr2Len Search end of string..... lda #'/' -.2 dey - cmp (ZPPtr1),y Search backward / - bne .2 +.1 dey + cmp (ZPPtr2),y Search backward / + bne .1 tya sec +1 to skip '/' - adc ZPPtr1 - sta ZPPtr2 - tay - lda ZPPtr1+1 + adc ZPPtr2 + sta ZPPtr1 + + lda ZPPtr2+1 adc #0 - sta ZPPtr2+1 + sta ZPPtr1+1 + lda (ZPPtr1) + beq .8 path is /dir/ + + >LDYA ZPPtr1 >SYSCALL StrDup - bcs .9 - - txa - >STA.G hDstFileName + bcs .99 lda #0 - sta (ZPPtr2) + sta (ZPPtr1) -.5 >LDYAI 256 - >SYSCALL GetMem Get a 256 buffer to store DstBasePath - bcs .9 - - >STYA ZPPtr2 txa - >STA.G hDstBasePath - jsr StrcpyPtr1ptr2 +.8 clc - dey - - lda #'/' - cmp (ZPPtr2),y - beq .7 - - iny - sta (ZPPtr2),y - iny - lda #0 - sta (ZPPtr2),y - -.7 jsr .9 Cleanup - - clc - rts - -.9 pha - >LDA.G hFullPath - >SYSCALL FreeMem - pla - sec - rts - .FIN +.99 rts *-------------------------------------- -GetNextEntry jsr GetEntry +X.GetNextEntry jsr X.GetEntry bcs .9 - jsr GetFilenameLen Save actual file len for setting up + jsr X.GetFilenameLen Save actual file len for setting up pha new offset later lda ZPFileStat clc @@ -383,12 +341,12 @@ GetNextEntry jsr GetEntry adc /S.STAT sta ZPFileName+1 Make nDIRENTs[i] point to next DIRENT - jsr GetFilenameLen are we at end of this buffer ? + jsr X.GetFilenameLen are we at end of this buffer ? beq .1 yes, go read next one ... - jsr SetFileStatPtr + jsr X.SetFileStatPtr - jsr GetoDIRENT + jsr X.GetoDIRENT pla Get back previous file len sec @@ -413,13 +371,13 @@ GetNextEntry jsr GetEntry rts .1 pla - jsr GetEntry.ReadDir + jsr X.GetEntry.ReadDir bcs .9 - jsr GetFilenameLen + jsr X.GetFilenameLen beq .99 - jsr SetFileStatPtr + jsr X.SetFileStatPtr clc .9 rts @@ -427,10 +385,10 @@ GetNextEntry jsr GetEntry .99 sec rts *-------------------------------------- -GetEntry jsr GethDIRENT +X.GetEntry jsr X.GethDIRENT bne .1 we have a buffer to scan - jsr GetEntry.ReadDir First run, get first block + jsr X.GetEntry.ReadDir First run, get first block bcs .9 ZPFileName = start of buffer lda (ZPFileName) Empty !!! @@ -441,7 +399,7 @@ GetEntry jsr GethDIRENT .1 >SYSCALL GetMemPtr >STYA ZPFileName - jsr GetoDIRENT + jsr X.GetoDIRENT lda ZPFileName clc @@ -454,15 +412,15 @@ GetEntry jsr GethDIRENT adc (pData),y sta ZPFileName+1 ZPFileName=ZPFileName+oDIRENT -.8 jsr GetFilenameLen +.8 jsr X.GetFilenameLen - jsr SetFileStatPtr + jsr X.SetFileStatPtr clc .9 rts *-------------------------------------- -GetEntry.ReadDir - jsr GethDIRENT +X.GetEntry.ReadDir + jsr X.GethDIRENT beq .1 pha @@ -471,7 +429,7 @@ GetEntry.ReadDir pla >SYSCALL FreeMem discard previous hDIRENT -.1 jsr GethDIR +.1 jsr X.GethDIR >SYSCALL ReadDir bcs .9 @@ -484,7 +442,7 @@ GetEntry.ReadDir txa get hDIRENT in A sta (pData),y - jsr GetoDIRENT + jsr X.GetoDIRENT lda #0 and reset offset for this buffer sta (pData),y @@ -493,15 +451,15 @@ GetEntry.ReadDir clc .9 rts *-------------------------------------- -EnterSubDirYA >STYA ZPPtr2 save SUBDIR for StrCat +X.EnterSubDirYA >STYA ZPPtr1 save SUBDIR for StrCat >LDA.G index cmp #X.MAX.RECURSE beq .9 ldy #hSrcBasePath - jsr EnterSubDirY - >LDYA ZPPtr1 + jsr X.EnterSubDirY + >LDYA ZPPtr2 >SYSCALL OpenDir bcs .9 @@ -521,44 +479,44 @@ EnterSubDirYA >STYA ZPPtr2 save SUBDIR for StrCat .DO X.COPY.TO.DEST=1 ldy #hDstBasePath - jsr EnterSubDirY + jsr X.EnterSubDirY .FIN clc .9 rts - -EnterSubDirY lda (pData),y +*-------------------------------------- +X.EnterSubDirY lda (pData),y >SYSCALL GetMemPtr - >STYA ZPPtr1 save full path + >STYA ZPPtr2 save full path - jsr .1 Make sure ending with / - - >PUSHW ZPPtr1 >PUSHW ZPPtr2 + >PUSHW ZPPtr1 >SYSCALL StrCat -.1 jsr GetPtr1Len +X.NormalizePtr2 jsr X.GetPtr2Len dey lda #'/' - cmp (ZPPtr1),y + cmp (ZPPtr2),y beq .8 iny - sta (ZPPtr1),y + sta (ZPPtr2),y + iny lda #0 - sta (ZPPtr1),y + sta (ZPPtr2),y -.8 rts +.8 clc + rts *-------------------------------------- -LeaveSubDir >LDA.G index +X.LeaveSubDir >LDA.G index beq .7 - jsr GethDIRENT.A - jsr LeaveSubDir.free + jsr X.GethDIRENT.A + jsr X.LeaveSubDir.free - jsr GethDIR + jsr X.GethDIR beq .1 pha @@ -571,11 +529,11 @@ LeaveSubDir >LDA.G index bne .8 .7 >LDA.G hSrcBasePath - jsr LeaveSubDir.free + jsr X.LeaveSubDir.free .DO X.COPY.TO.DEST=1 >LDA.G hDstBasePath - jsr LeaveSubDir.free + jsr X.LeaveSubDir.free .FIN sec @@ -584,7 +542,7 @@ LeaveSubDir >LDA.G index .8 clc rts *-------------------------------------- -LeaveSubDir.free +X.LeaveSubDir.free tax beq .8 @@ -595,51 +553,53 @@ LeaveSubDir.free .8 rts *-------------------------------------- -BasePath.. .DO X.COPY.TO.DEST=1 +X.BasePath.. .DO X.COPY.TO.DEST=1 ldy #hDstBasePath - jsr BasePath..1 + jsr X.BasePath..1 .FIN ldy #hSrcBasePath -BasePath..1 lda (pData),y +X.BasePath..1 lda (pData),y >SYSCALL GetMemPtr - >STYA ZPPtr1 save full path + >STYA ZPPtr2 save full path - jsr GetPtr1Len get len + jsr X.GetPtr2Len get len dey discard ending / .2 dey - lda (ZPPtr1),y + lda (ZPPtr2),y cmp #'/' bne .2 iny lda #0 - sta (ZPPtr1),y cut DIR2/ from /dir1/DIR2/ + sta (ZPPtr2),y cut DIR2/ from /dir1/DIR2/ rts *-------------------------------------- -GetPtr1Len ldy #$ff +X.ToUpper cmp #'a' + bcc .8 + + cmp #'z'+1 + bcs .8 + + eor #$20 + +.8 rts +*-------------------------------------- +X.GetPtr2Len ldy #$ff .1 iny - lda (ZPPtr1),y get len + lda (ZPPtr2),y get len bne .1 - rts + rts *-------------------------------------- -StrcpyPtr1ptr2 ldy #$ff - -.1 iny - lda (ZPPtr1),y - sta (ZPPtr2),y - bne .1 - - rts -*-------------------------------------- -GetFilenameLen ldy #$ff +X.GetFilenameLen + ldy #$ff .1 iny lda (ZPFileName),y @@ -648,7 +608,8 @@ GetFilenameLen ldy #$ff tya rts *-------------------------------------- -SetFileStatPtr sec +X.SetFileStatPtr + sec adc ZPFileName sta ZPFileStat lda ZPFileName+1 @@ -656,7 +617,7 @@ SetFileStatPtr sec sta ZPFileStat+1 rts *-------------------------------------- -GethDIR >LDA.G index +X.GethDIR >LDA.G index clc adc #hDIRs-1 @@ -664,15 +625,15 @@ GethDIR >LDA.G index lda (pData),y rts *-------------------------------------- -GethDIRENT >LDA.G index +X.GethDIRENT >LDA.G index -GethDIRENT.A clc +X.GethDIRENT.A clc adc #hDIRENTs-1 tay lda (pData),y rts *-------------------------------------- -GetoDIRENT >LDA.G index +X.GetoDIRENT >LDA.G index asl clc adc #oDIRENTs-1 @@ -681,5 +642,5 @@ GetoDIRENT >LDA.G index *-------------------------------------- MAN SAVE usr/src/shared/x.fileenum.s -LOAD usr/src/bin/ls.s +LOAD usr/src/bin/cp.s ASM