diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index acc7cfd9..2f39945e 100644 Binary files a/.Floppies/A2OSX.BOOT.po and b/.Floppies/A2OSX.BOOT.po differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ada26bc6..98a2e8cc 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/PAKME.S.txt b/BIN/PAKME.S.txt index 5bcbb1e5..bfac5c28 100644 --- a/BIN/PAKME.S.txt +++ b/BIN/PAKME.S.txt @@ -64,6 +64,7 @@ L.MSG.USAGE .DA MSG.USAGE L.MSG.SRCFILE .DA MSG.SRCFILE L.MSG.CHUNK .DA MSG.CHUNK L.MSG.PAKED .DA MSG.PAKED +L.MSG.STORE .DA MSG.STORE L.MSG.E.IARC .DA MSG.E.IARC L.TAG .DA TAG .DA 0 @@ -187,19 +188,16 @@ CS.RUN.LOOP ldy #S.PS.hStdIn bcs .9 jsr CS.RUN.Pak - bcs .9 + bcs .2 jsr CS.RUN.WritePak + bcc .7 + rts + +.2 jsr CS.RUN.WriteStore bcs .9 - >PUSHW ZPChunkNewOfs - >PUSHW ZPChunkPakedLen - >PUSHBI 4 - >LDYA L.MSG.PAKED - >SYSCALL printf - bcs .9 - - jsr CS.QUIT.BUF +.7 jsr CS.QUIT.BUF jsr CS.RUN.UpdateTable inc ZPChunkIndex @@ -208,7 +206,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn jmp CS.RUN.LOOP -.8 jsr CS.RUN.RewriteTable Write modifid Table +.8 jsr CS.RUN.RewriteTable Write modified Table bcs .9 lda #0 @@ -444,6 +442,45 @@ CS.RUN.WritePak lda hDstFile >PUSHW ZPDstBufPtr lda hDstFile >SYSCALL fwrite + bcs .9 + + >PUSHW ZPChunkNewOfs + >PUSHW ZPChunkPakedLen + >PUSHBI 4 + >LDYA L.MSG.PAKED + >SYSCALL printf + +.9 +CS.RUN.WritePak.RTS + rts +*-------------------------------------- +CS.RUN.WriteStore + lda hDstFile + >SYSCALL ftell + bcs CS.RUN.WritePak.RTS + + >PULLW ZPChunkNewOfs + inc pStack + inc pStack + + >PUSHWI 3 + >PUSHEA.G CHUNK.HEADER + lda hDstFile + >SYSCALL fwrite + bcs .9 + + >PUSHW ZPChunkLen + >PUSHW ZPSrcBufPtr + lda hDstFile + >SYSCALL fwrite + bcs .9 + + >PUSHW ZPChunkNewOfs + >PUSHW ZPChunkLen + >PUSHBI 4 + >LDYA L.MSG.STORE + >SYSCALL printf + .9 rts *-------------------------------------- CS.RUN.UpdateTable @@ -513,6 +550,7 @@ MSG.USAGE .AZ "Usage : PAKME SourceBIN PackedBIN\r\n" MSG.SRCFILE .AZ "Source File : %s, Size=%5D, Org=$%H, %d Chunks at $%H.\r\n" MSG.CHUNK .AZ " Chunk #%02d : Ofs=$%H, Len=%5D ... " MSG.PAKED .AZ "PAKed : %5D Bytes, New Ofs=$%H\r\n" +MSG.STORE .AZ "Store : %5D Bytes, New Ofs=$%H\r\n" MSG.E.IARC .AZ "Invalid/corrupt archive" TAG .AZ "PAKME" *-------------------------------------- diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index 301c7487..60bc4dbb 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -81,8 +81,10 @@ Pak >PULLW Pak.SrcPtr stz Pak.bPass2 + jsr Pak.Out.Init Initialize properly for first "PutBit" Call + bcs .9 + jsr Pak.Run -* bcs .9 jsr Pak.ComputeLenBits jsr Pak.BuildTOPTable @@ -104,10 +106,6 @@ Pak >PULLW Pak.SrcPtr jsr Pak.Out.Close bcs .9 - .DO STATS=1 - jsr Pak.PrintStats - .FIN - ldy #S.PAKSTAT-1 .7 lda Pak.Stat,y @@ -115,19 +113,25 @@ Pak >PULLW Pak.SrcPtr dey bpl .7 + .DO STATS=1 + jsr Pak.PrintStats + .FIN >LDYA Pak.Stat+S.PAKSTAT.PASS2 clc -.9 rts -*-------------------------------------- -Pak.Run >LDYA Pak.SrcPtr - >STYA ZPSrcPtr + .DO STATS=1 + rts + .FIN - stz Pak.BL.Longest - stz Pak.BL.Farest - stz Pak.BL.Farest+1 - - lda Pak.Shnk+S.PAKSHNK.ULEN +.9 + .DO STATS=1 + jsr Pak.PrintStats + sec + .FIN + + rts +*-------------------------------------- +Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.ULEN eor #$ff sta Pak.SrcCnt sta Pak.DstCnt @@ -137,6 +141,51 @@ Pak.Run >LDYA Pak.SrcPtr sta Pak.SrcCnt+1 sta Pak.DstCnt+1 + bit Pak.bPass2 + bpl .8 + + lda Pak.Shnk+S.PAKSHNK.BLBITS + jsr Pak.Out.PutByte + bcs .9 + + lda Pak.Shnk+S.PAKSHNK.ULEN + jsr Pak.Out.PutByte + bcs .9 + + lda Pak.Shnk+S.PAKSHNK.ULEN+1 + jsr Pak.Out.PutByte + bcs .9 + + lda Pak.Shnk+S.PAKSHNK.TOPCNT + jsr Pak.Out.PutByte + bcs .9 + + tax + + ldy #0 + +.1 lda Pak.Shnk+S.PAKSHNK.TOPBYTES,y + jsr Pak.Out.PutByte + bcs .9 + + iny + dex + bne .1 + + lda #$80 + sta Pak.Out.Mask + stz Pak.Out.Byte + +.8 clc +.9 rts +*-------------------------------------- +Pak.Run >LDYA Pak.SrcPtr + >STYA ZPSrcPtr + + stz Pak.BL.Longest + stz Pak.BL.Farest + stz Pak.BL.Farest+1 + ldx #S.PAKSTAT.TOP8 .1 stz Pak.Stat,x Reset Stats @@ -440,13 +489,14 @@ Pak.PutByte8 bit Pak.bPass2 rts Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT + beq .2 No TOP Table .1 cmp Pak.Shnk+S.PAKSHNK.TOPBYTES-1,y beq .3 dey bne .1 - ldx #S.PAKSTAT.BYTE8 +.2 ldx #S.PAKSTAT.BYTE8 jsr Pak.UpdateStats pha @@ -483,41 +533,6 @@ Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT .9 rts *-------------------------------------- -Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.BLBITS - jsr Pak.Out.PutByte - bcs .9 - - lda Pak.Shnk+S.PAKSHNK.ULEN - jsr Pak.Out.PutByte - bcs .9 - - lda Pak.Shnk+S.PAKSHNK.ULEN+1 - jsr Pak.Out.PutByte - bcs .9 - - lda Pak.Shnk+S.PAKSHNK.TOPCNT - jsr Pak.Out.PutByte - bcs .9 - - tax - - ldy #0 - -.1 lda Pak.Shnk+S.PAKSHNK.TOPBYTES,y - jsr Pak.Out.PutByte - bcs .9 - - iny - dex - bne .1 - - lda #$80 - sta Pak.Out.Mask - stz Pak.Out.Byte - -* clc -.9 rts -*-------------------------------------- Pak.Out.Close bit Pak.Out.Mask bmi .8 @@ -633,7 +648,12 @@ Pak.PrintStats lda Pak.BL.OfsBitsL >PUSHBI TOP.MAX+1 >LDYA L.MSG.TopBytes >SYSCALL printf - rts + + bit Pak.bPass2 + bpl .9 + >DEBUG + +.9 rts .FIN *-------------------------------------- CS.END diff --git a/ProDOS.FX/ProDOS.S.txt b/ProDOS.FX/ProDOS.S.txt index 8310893d..11700850 100644 --- a/ProDOS.FX/ProDOS.S.txt +++ b/ProDOS.FX/ProDOS.S.txt @@ -3,8 +3,7 @@ NEW .LIST OFF .OP 65816 .OR $2000 -* .TF PRODOS,TSYS - .TF PRODOS.FX + .TF PRODOS.FX,TSYS *-------------------------------------- .INB INC/ZP.I .INB INC/IO.I