diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 04f42248..43965f92 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/PAK.S.txt b/BIN/PAK.S.txt index e0fe8934..f53b52c6 100644 --- a/BIN/PAK.S.txt +++ b/BIN/PAK.S.txt @@ -287,8 +287,14 @@ CS.RUN.FILE jsr FilterMatch bra .9 .2 jsr CS.RUN.Pak -* >DEBUG - jsr CS.RUN.WriteArcData + bcs .3 + + jsr CS.RUN.WritePakData + bcc .1 + + bra .4 + +.3 jsr CS.RUN.WriteSrcData bcc .1 .4 pha @@ -367,8 +373,6 @@ CS.RUN.Pak >PUSHEA.G PAKSTAT >PUSHW ZPSrcBufPtr >LIBCALL hLIB,LIBPAK.Pak >STYA.G Shunk.DstSize - txa - >STA.G Shunk.Alg rts *-------------------------------------- CS.RUN.OpenArc >PUSHWZ Aux type @@ -475,11 +479,34 @@ CS.RUN.WriteArcHdr CS.RUN.WriteArcHdr.9 rts *-------------------------------------- -CS.RUN.WriteArcData +CS.RUN.WriteSrcData lda #CHNK.T.DATA jsr CS.RUN.WriteArcByteA bcs .9 + >LDA.G Shunk.SrcSize + jsr CS.RUN.WriteArcByteA + bcs .9 + + >LDA.G Shunk.SrcSize+1 + jsr CS.RUN.WriteArcByteA + bcs .9 + + lda #0 NO COMPRESSION + jsr CS.RUN.WriteArcByteA + bcs .9 + + >PUSHW.G Shunk.SrcSize + >PUSHW ZPSrcBufPtr + >LDA.G hArcFile + >SYSCALL fwrite +.9 rts +*-------------------------------------- +CS.RUN.WritePakData + lda #CHNK.T.DATA + jsr CS.RUN.WriteArcByteA + bcs .9 + >LDA.G Shunk.DstSize jsr CS.RUN.WriteArcByteA bcs .9 @@ -487,11 +514,7 @@ CS.RUN.WriteArcData >LDA.G Shunk.DstSize+1 jsr CS.RUN.WriteArcByteA bcs .9 - - lda Shunk.Alg - jsr CS.RUN.WriteArcByteA - bcs .9 - + >PUSHW.G Shunk.DstSize >PUSHW ZPDstBufPtr >LDA.G hArcFile @@ -595,7 +618,6 @@ hDstBuf .BS 1 Shunk.SrcSize .BS 2 Shunk.DstSize .BS 2 -Shunk.Alg .BS 1 PAKSTAT .BS S.PAKSTAT diff --git a/BIN/UNPAK.S.txt b/BIN/UNPAK.S.txt index 30a37998..aae6c4ea 100644 --- a/BIN/UNPAK.S.txt +++ b/BIN/UNPAK.S.txt @@ -16,17 +16,21 @@ ZS.START ZPPtr1 .BS 2 ZPPtr2 .BS 2 -ZPFullPathPtr .BS 2 -ZPRelPathPtr .BS 2 - ZPInBufPtr .BS 2 ZPOutBufPtr .BS 2 -ZPULen .BS 2 + ZPnCnt .BS 2 ZPInMask .BS 1 ZPBLOfsLBits .BS 1 ZPBLOfsHBits .BS 1 ZPBLLenBits .BS 1 + +ZPInBufLen .BS 2 +ZPOutBufLen .BS 2 + +ZPFullPathPtr .BS 2 +ZPRelPathPtr .BS 2 + ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -69,18 +73,23 @@ CS.RUN >LDYAI CHNK.SIZE lda #1 >SYSCALL Argv - bcs .9 + bcs .99 + jsr CS.RUN.OpenArc bcs .9 + >LDYAI 256 >SYSCALL getmem bcs .9 + >STYA ZPFullPathPtr txa >STA.G hFullPath + lda #2 >SYSCALL Argv bcc .1 + ldy #S.PS.hCWD lda (pPS),y >SYSCALL getmemptr @@ -151,6 +160,7 @@ CS.RUN.LOOP jsr CS.RUN.GetByte .99 rts .9 jmp CS.RUN.E.IARC + .1 cmp #CHNK.T.FILE bne .9 @@ -170,32 +180,38 @@ CS.RUN.LOOP jsr CS.RUN.GetByte .2 cmp #CHNK.T.DATA bne .3 Could be a 0 byte file -.20 jsr CS.RUN.GetByte ULEN LO +.20 jsr CS.RUN.GetByte DataLen LO bcs .9 - sta ZPULen + sta ZPInBufLen - jsr CS.RUN.GetByte ULEN HI + jsr CS.RUN.GetByte DataLen HI bcs .9 - sta ZPULen+1 + sta ZPInBufLen+1 - jsr CS.RUN.GetByte ALG - bcs .9 - >DEBUG - cmp #0 STORE - bne .9 - jsr CS.RUN.ReadData bcs .9 + + lda (ZPInBufPtr) + sta ZPOutBufLen + + ldy #1 + lda (ZPInBufPtr),y + sta ZPOutBufLen+1 + >DEBUG + jsr X.Unpak + bcs .9 + jsr CS.RUN.WriteFile bcs .9 jsr CS.RUN.GetByte bcs .8 cmp #CHNK.T.DATA beq .20 + .3 pha jsr .8 pla - jmp .10 + jmp .10 .8 >LDA.G hFile >SYSCALL fclose @@ -266,7 +282,7 @@ CS.RUN.GetFileName * clc .9 rts *-------------------------------------- -CS.RUN.ReadData >PUSHW ZPULen +CS.RUN.ReadData >PUSHW ZPInBufLen >PUSHW ZPInBufPtr >LDA.G hArcFile >SYSCALL fread @@ -307,8 +323,8 @@ CS.RUN.OpenFile >PUSHW.G FileAuxType .9 rts *-------------------------------------- CS.RUN.WriteFile - >PUSHW ZPULen - >PUSHW ZPInBufPtr + >PUSHW ZPOutBufLen + >PUSHW ZPOutBufPtr >LDA.G hFile >SYSCALL fwrite rts diff --git a/INC/PAK.I.txt b/INC/PAK.I.txt index 810bef5a..e7aeb9c2 100644 --- a/INC/PAK.I.txt +++ b/INC/PAK.I.txt @@ -15,9 +15,7 @@ CHNK.FILE.FNLEN .EQ 4 * CHNK.DIR.FNLEN .EQ 1 * -CHNK.DATA.ULEN .EQ 1 -CHNK.DATA.PAK.BLBITS .EQ 3 -CHNK.DATA.PAK.TOPLEN .EQ 1 +CHNK.DATA.LEN .EQ 1 *-------------------------------------- MAN SAVE INC/PAK.I diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index e6694a5c..81bb0462 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -479,7 +479,15 @@ Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT .9 rts *-------------------------------------- -Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.BLBITS +Pak.Out.Init 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.BLBITS jsr Pak.Out.PutByte bcs .9 @@ -487,14 +495,16 @@ Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.BLBITS jsr Pak.Out.PutByte bcs .9 + tax + ldy #0 -.1 lda Pak.Shnk+S.PAKSHNK.TOPBYTES +.1 lda Pak.Shnk+S.PAKSHNK.TOPBYTES,y jsr Pak.Out.PutByte bcs .9 iny - cpy Pak.Shnk+S.PAKSHNK.TOPCNT + dex bne .1 lda #$80 @@ -522,11 +532,13 @@ Pak.Out.PutYBits bra .1 .2 ply - asl -.3 pha +.3 asl + + pha bcc .4 + lda Pak.Out.Mask tsb Pak.Out.Byte @@ -536,13 +548,14 @@ Pak.Out.PutYBits ror Pak.Out.Mask lda Pak.Out.Byte + stz Pak.Out.Byte jsr Pak.Out.PutByte .5 pla bcs .9 dey - bne Pak.Out.PutYBits + bne .3 * clc diff --git a/SHARED/X.UNPAK.S.txt b/SHARED/X.UNPAK.S.txt index be24bae3..840fc49e 100644 --- a/SHARED/X.UNPAK.S.txt +++ b/SHARED/X.UNPAK.S.txt @@ -61,15 +61,24 @@ X.Unpak.PAK pha A = BLBITS sta ZPBLOfsHBits jsr X.Unpak.NextByte get TOPCNT - + lda (ZPInBufPtr) CHNK.DATA.PAK.TOPLEN + tax + jsr X.Unpak.NextByte get TOPCNT + + lda ZPInBufPtr + sta ZPPtr1 + lda ZPInBufPtr+1 + sta ZPPtr1+1 + + txa clc adc ZPInBufPtr skip TOP table - sta ZPPtr1 + sta ZPInBufPtr - lda ZPInBufPtr+1 ZPInBufPtr = TOPs + lda ZPInBufPtr+1 adc #0 - sta ZPPtr1+1 ZPPtr1 = DATA + sta ZPInBufPtr+1 lda #$80 sta ZPInMask @@ -112,7 +121,7 @@ X.Unpak.PAK pha A = BLBITS ora #32 .51 tay - lda (ZPInBufPtr),y + lda (ZPPtr1),y .52 jsr X.Unpak.PutByte bne .2 @@ -174,7 +183,7 @@ X.Unpak.GetXBitInA X.Unpak.GetBitInC pha clc - lda (ZPPtr1) + lda (ZPInBufPtr) and ZPInMask beq .1 sec @@ -193,9 +202,9 @@ X.Unpak.GetBitInC rts *-------------------------------------- X.Unpak.NextByte - inc ZPPtr1 + inc ZPInBufPtr bne .8 - inc ZPPtr1+1 + inc ZPInBufPtr+1 .8 rts *--------------------------------------