diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 99516117..0fd1f03c 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index 5e21a301..a79520c9 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -1,6 +1,5 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 3de633a9..ded01f83 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -1,5 +1,5 @@ NEW - AUTO 4,1 + AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 @@ -568,7 +568,7 @@ MSG.FILE .AZ "%19s" MSG.FILEEXT .AS "%15s %S $%H %s %10u %s %s" MSG.CRLF .AZ "\r\n" *-------------------------------------- -PRODOS.FT.HEX .HS 0406FAFCFDE2CBCCFF +PRODOS.FT.HEX .HS 0406FAFCFDE2CBCCCFFF PRODOS.FT.TXT >PSTR "TXT" >PSTR "BIN" >PSTR "ASM" @@ -577,6 +577,7 @@ PRODOS.FT.TXT >PSTR "TXT" >PSTR "ATK" >PSTR "PIX" >PSTR "FON" + >PSTR "PAK" >PSTR "SYS" PRODOS.FT.DFLT >PSTR "$ " MSG.NODATE .AZ " " @@ -593,7 +594,6 @@ MOD .BS 11 drwxrwxrwx0 TIME.Create .BS 20 TIME.Mod .BS 20 -hFilter .BS 1 bPause .BS 1 bAllmostAll .BS 1 bColumn .BS 1 diff --git a/BIN/PAK.S.txt b/BIN/PAK.S.txt index 75da6cba..477f9cc1 100644 --- a/BIN/PAK.S.txt +++ b/BIN/PAK.S.txt @@ -7,9 +7,23 @@ NEW *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I + .INB INC/KERNEL.I .INB INC/MLI.I .INB INC/MLI.E.I *-------------------------------------- +CHNK.T .EQ 0 +CHNK.T.DATA .EQ 0 +CHNK.T.DIR .EQ 1 +CHNK.T.FILE .EQ 2 +* +CHNK.TYPE .EQ 1 +CHNK.AUXTYPE .EQ 2 +CHNK.FNLEN .EQ 4 +* +CHNK.COMPALG .EQ 1 +CHNK.ULEN .EQ 2 +CHNK.CLEN .EQ 4 +*-------------------------------------- X.ENTER.SUBDIR .EQ 0 X.COPY.TO.DEST .EQ 0 X.DELETE.SOURCE .EQ 0 @@ -21,7 +35,14 @@ ZPPtr1 .BS 2 ZPPtr2 .BS 2 ZPFileName .BS 2 ZPFileStat .BS 2 + ZPFullPath .BS 2 +ZPRelPath .BS 2 + +bAppend .BS 1 +bRecurse .BS 1 +bPause .BS 1 + ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -48,6 +69,7 @@ L.MSG.DIR .DA MSG.DIR L.MSG.FILE .DA MSG.FILE L.MSG.OK .DA MSG.OK L.MSG.ERR .DA MSG.ERR +L.ARC.Header .DA ARC.Header .DA 0 *-------------------------------------- CS.INIT clc @@ -62,15 +84,8 @@ CS.RUN >INC.G ArgIndex cmp #'-' bne .4 - ldy #1 - lda (ZPPtr1),y - - ldx OptionList - -.2 cmp OptionList,x - beq .3 - dex - bne .2 + jsr CS.RUN.CheckOpt + bcc CS.RUN .9 >PUSHBI 0 >LDYA L.MSG.USAGE @@ -78,11 +93,6 @@ CS.RUN >INC.G ArgIndex lda #E.SYN sec .99 rts - -.3 ldy OptionVars-1,x - lda #$80 - sta (pData),y - bra CS.RUN *-------------------------------------- .4 >LDA.G ArcName bne .5 @@ -111,6 +121,33 @@ CS.RUN >INC.G ArgIndex >STYA ZPFullPath txa >STA.G hSrcFullPath + + >LDA.G hSrcBasePath + >SYSCALL GetMemPtr + >STYA ZPPtr1 + + ldy #$ff + +.80 iny + lda (ZPPtr1),y + bne .80 + + tya + clc + adc ZPFullPath + sta ZPRelPath + lda ZPFullPath+1 + adc #0 + sta ZPRelPath+1 + + jsr CS.RUN.OpenArc + bcs .99 + + >LDYAI 4096 + >SYSCALL getmem + bcs .99 + txa + >STA.G hMem *-------------------------------------- CS.RUN.LOOP ldy #S.PS.hStdIn lda (pPS),y @@ -129,13 +166,14 @@ CS.RUN.LOOP ldy #S.PS.hStdIn cmp #$13 Ctrl-S bne .1 - >LDA.G bPause + lda bPause eor #$ff - sta (pData),y + sta bPause bne CS.RUN.LOOP -.1 >LDA.G bPause +.1 lda bPause bne CS.RUN.LOOP Pause... + jsr GetEntry bcs .9 @@ -176,7 +214,7 @@ CS.RUN.DEV lda #E.BADPATH sec rts *-------------------------------------- -CS.RUN.DIR >LDA.G bRecurse +CS.RUN.DIR lda bRecurse bpl .8 lda (ZPFileName) @@ -185,39 +223,60 @@ CS.RUN.DIR >LDA.G bRecurse jsr CS.RUN.GetFilePath - >PUSHW ZPFullPath + >PUSHW ZPRelPath >PUSHBI 2 >LDYA L.MSG.DIR >SYSCALL printf bcs .9 - jsr CS.RUN.CheckErr + lda #CHNK.T.DIR + jsr CS.RUN.WriteHeader + bcs .9 >LDYA ZPFileName - jmp EnterSubDirYA + jsr EnterSubDirYA +.9 jmp CS.RUN.CheckErr + .8 clc -.9 rts + rts *-------------------------------------- CS.RUN.FILE jsr FilterMatch bcs .8 no match, skip.... + >PUSHW ZPFullPath + + >LDA.G hArcFile + tay + lda OF.Table.hPath-1,x + >SYSCALL getmemptr + >SYSCALL strcmp + bcc .8 + jsr CS.RUN.GetFilePath - >PUSHW ZPFullPath + >PUSHW ZPRelPath >PUSHBI 2 >LDYA L.MSG.FILE >SYSCALL printf bcs .9 + lda #CHNK.T.FILE + jsr CS.RUN.WriteHeader + bcs .9 + + jsr CS.RUN.OpenFile + bcs .9 - - jsr CS.RUN.CheckErr + >LDA.G hFile + >SYSCALL fclose + +.9 jsr CS.RUN.CheckErr .8 clc -.9 rts + rts *-------------------------------------- CS.RUN.CheckErr bcs .1 >LDYA L.MSG.OK @@ -230,11 +289,9 @@ CS.RUN.CheckErr bcs .1 >LDYA L.MSG.ERR >SYSCALL printf - - >LDA.G bContinue - eor #$80 - asl + pla + sec rts *-------------------------------------- CS.RUN.GetFilePath @@ -251,6 +308,72 @@ CS.RUN.GetFilePath >SYSCALL StrCat rts *-------------------------------------- +CS.RUN.OpenArc >PUSHWZ Aux type + >PUSHBI $CF PAK + >PUSHBI O.CREATE+O.WRONLY + >LDA.G ArcName + >SYSCALL Argv + + >SYSCALL FOpen + bcs .9 + + >STA.G hArcFile + + >PUSHW L.ARC.Header + >LDA.G hArcFile + >SYSCALL fputs +.9 rts +*-------------------------------------- +CS.RUN.WriteHeader + >PUSHA + jsr .8 + bcs .9 + + ldy #S.STAT.P.TYPE + jsr .6 + bcs .9 + + ldy #S.STAT.P.AUXTYPE + jsr .6 + bcs .9 + + ldy #S.STAT.P.AUXTYPE+1 + jsr .6 + bcs .9 + + ldy #$ff + +.1 iny + lda (ZPRelPath),y + bne .1 + + tya + jsr .7 + bcs .9 + + >PUSHW ZPRelPath + >LDA.G hArcFile + >SYSCALL fputs + rts + +.6 lda (ZPFileStat),y +.7 >PUSHA +.8 >LDA.G hArcFile + >SYSCALL fputc +.9 rts +*-------------------------------------- +CS.RUN.OpenFile >PUSHWZ Aux type + >PUSHBI 0 Type + >PUSHBI O.RDONLY + >LDYA ZPFullPath + + >SYSCALL FOpen + bcs .9 + + >STA.G hFile + +.9 rts +*-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- @@ -262,48 +385,68 @@ CS.QUIT jsr LeaveSubDir >SYSCALL FreeMem .1 >LDA.G hSrcFullPath - beq .8 + beq .2 >SYSCALL FreeMem +.2 >LDA.G hArcFile + beq .3 + + >SYSCALL fclose + +.3 >LDA.G hMem + beq .8 + >SYSCALL FreeMem + + .8 clc rts +*-------------------------------------- +CS.RUN.CheckOpt ldy #1 + lda (ZPPtr1),y + + ldx #OptionVars-OptionList-1 + +.2 cmp OptionList,x + beq .3 + dex + bpl .2 + + sec + rts + +.3 ldy OptionVars,x + lda #$ff + sta 0,y + clc + rts *-------------------------------------- .INB USR/SRC/BIN/X.FILEENUM.S *-------------------------------------- CS.END *-------------------------------------- -OptionList >PSTR "CRcr" -OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse +OptionList .AS "AaRr" +OptionVars .DA #bAppend,#bAppend,#bRecurse,#bRecurse *-------------------------------------- MSG.USAGE .AS "Usage : PAK Archive [File *,? wildcards allowed]\r\n" - .AS " -C : Continue on error\r\n" + .AS " -A : Append to archive\r\n" .AZ " -R : Recurse subdirectories\r\n" MSG.OK .AZ "[OK]" MSG.ERR .AZ "[%h]\r\n" MSG.DIR .AZ "Reading Dir:%s..." MSG.FILE .AZ "Adding File:%s..." +ARC.Header .AZ "PAK" *-------------------------------------- .DUMMY .OR 0 DS.START ArgIndex .BS 1 -bContinue .BS 1 -bRecurse .BS 1 - ArcName .BS 1 - -bPause .BS 1 - -hFullPath .BS 1 hSrcFullPath .BS 1 -STAT .BS S.STAT -Index .BS 1 -hDIRs .BS X.MAX.RECURSE -hDIRENTs .BS X.MAX.RECURSE -oDIRENTs .BS X.MAX.RECURSE*2 -hSrcBasePath .BS 1 -hFilter .BS 1 +hArcFile .BS 1 +hFile .BS 1 +hMem .BS 1 + .INB USR/SRC/BIN/X.FILEENUM.G DS.END .ED *-------------------------------------- diff --git a/BIN/X.CPMVRM.G.txt b/BIN/X.CPMVRM.G.txt index c2b66797..e285138d 100644 --- a/BIN/X.CPMVRM.G.txt +++ b/BIN/X.CPMVRM.G.txt @@ -1,12 +1,10 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 .LIST OFF *-------------------------------------- ArgCount .BS 1 bPause .BS 1 -hFilter .BS 1 hSrcFile .BS 1 hSrcFullPath .BS 1 Count .BS 2 @@ -30,4 +28,4 @@ hToDelete .BS 1 .FIN *-------------------------------------- MAN -SAVE USR/SRC/BIN/BIN/X.CPMVRM.G +SAVE USR/SRC/BIN/X.CPMVRM.G diff --git a/BIN/X.CPMVRM.S.txt b/BIN/X.CPMVRM.S.txt index 1984a9dc..511e21fa 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/BIN/X.CPMVRM.S.txt @@ -1,5 +1,5 @@ NEW - AUTO 4,1 + AUTO 3,1 .LIST OFF *-------------------------------------- X.COPY.BUF.SIZE .EQ 4096 diff --git a/BIN/X.FILEENUM.G.txt b/BIN/X.FILEENUM.G.txt index 77449413..c8522064 100644 --- a/BIN/X.FILEENUM.G.txt +++ b/BIN/X.FILEENUM.G.txt @@ -1,8 +1,7 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 .LIST OFF -*-------------------------------------- +*-------------------------------------- Index .BS 1 hDIRs .BS X.MAX.RECURSE+1 hDIRENTs .BS X.MAX.RECURSE+1 @@ -10,11 +9,10 @@ oDIRENTs .BS X.MAX.RECURSE*2 STAT .BS S.STAT hFullPath .BS 1 hSrcBasePath .BS 1 +hFilter .BS 1 .DO X.COPY.TO.DEST=1 - hDstBasePath .BS 1 - .FIN *-------------------------------------- MAN diff --git a/BIN/X.FILEENUM.S.txt b/BIN/X.FILEENUM.S.txt index 274c593a..d3ccb661 100644 --- a/BIN/X.FILEENUM.S.txt +++ b/BIN/X.FILEENUM.S.txt @@ -1,6 +1,5 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 .LIST OFF *-------------------------------------- X.MAX.RECURSE .EQ 8 diff --git a/INC/LIBPAK.I.txt b/INC/LIBPAK.I.txt index db2eef37..48bb3ffe 100644 --- a/INC/LIBPAK.I.txt +++ b/INC/LIBPAK.I.txt @@ -2,6 +2,8 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- +STOREMAX .EQ 64 +*-------------------------------------- * File Header : *-------------------------------------- S.PAKFILE.LEN .EQ 0 File Length (uncomp) diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index a470d061..abd233cb 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -1,6 +1,5 @@ -NEW -PREFIX -AUTO 4,1 +NEW + AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000