diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9878e7de..75b1ed40 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 7d63a5c1..b7355305 100644 --- a/BIN/PAK.S.txt +++ b/BIN/PAK.S.txt @@ -63,6 +63,7 @@ L.MSG.OK .DA MSG.OK L.MSG.ERR .DA MSG.ERR L.MSG.E.IARC .DA MSG.E.IARC L.ARC.Header .DA ARC.Header +L.MSG.DBG .DA MSG.DBG .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBPAK @@ -372,8 +373,9 @@ CS.RUN.Pak >PUSHEA.G PAKSTAT >PUSHW.G Shunk.SrcSize >PUSHW ZPSrcBufPtr >LIBCALL hLIB,LIBPAK.Pak + bcs .9 >STYA.G Shunk.DstSize - rts +.9 rts *-------------------------------------- CS.RUN.OpenArc >PUSHWZ Aux type >PUSHBI $CF PAK @@ -484,6 +486,11 @@ CS.RUN.WriteSrcData jsr CS.RUN.WriteArcByteA bcs .9 + >PUSHW.G Shunk.SrcSize + >PUSHBI 2 + >LDYA L.MSG.DBG + >SYSCALL printf + >LDA.G Shunk.SrcSize jsr CS.RUN.WriteArcByteA bcs .9 @@ -506,6 +513,11 @@ CS.RUN.WritePakData lda #CHNK.T.DATA jsr CS.RUN.WriteArcByteA bcs .9 + +* >PUSHW.G Shunk.DstSize +* >PUSHBI 2 +* >LDYA L.MSG.DBG +* >SYSCALL printf >LDA.G Shunk.DstSize jsr CS.RUN.WriteArcByteA @@ -598,6 +610,7 @@ MSG.ERR .AZ "[%h]\r\n" MSG.E.IARC .AZ "Invalid/corrupt archive" MSG.DIR .AZ "Reading Dir:%s..." MSG.FILE .AZ "Adding File:%s..." +MSG.DBG .AZ "%H" ARC.Header .AZ "PAK" *-------------------------------------- LIBPAK .AZ "libpak" diff --git a/BIN/UNPAK.S.txt b/BIN/UNPAK.S.txt index 2d2378ab..518750aa 100644 --- a/BIN/UNPAK.S.txt +++ b/BIN/UNPAK.S.txt @@ -59,7 +59,7 @@ L.MSG.OK .DA MSG.OK L.MSG.ERR .DA MSG.ERR L.MSG.E.IARC .DA MSG.E.IARC L.MSG.E.OFS .DA MSG.E.OFS -L.DBG .DA DBG +L.MSG.DBG .DA MSG.DBG .DA 0 *-------------------------------------- CS.INIT clc @@ -182,35 +182,46 @@ 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 DataLen LO +.20 lda #'.' + >SYSCALL putchar + + jsr CS.RUN.GetByte DataLen LO bcs .9 sta ZPInBufLen jsr CS.RUN.GetByte DataLen HI bcs .9 sta ZPInBufLen+1 - + jsr CS.RUN.ReadData bcs .9 - lda (ZPInBufPtr) - sta ZPOutBufLen - ldy #1 lda (ZPInBufPtr),y + sta ZPOutBufLen + + iny + lda (ZPInBufPtr),y sta ZPOutBufLen+1 +* >PUSHW ZPOutBufLen +* >PUSHBI 2 +* >LDYA L.MSG.DBG +* >SYSCALL printf + >LDA.G hOutBuf >SYSCALL getmemptr >STYA ZPOutBufPtr jsr X.Unpak - bcs .9 +.90 bcs .9 jsr CS.RUN.WriteFile - bcs .9 + bcs .90 + jsr CS.RUN.GetByte bcs .8 + cmp #CHNK.T.DATA beq .20 @@ -289,7 +300,10 @@ CS.RUN.GetFileName .9 rts *-------------------------------------- CS.RUN.ReadData >PUSHW ZPInBufLen - >PUSHW ZPInBufPtr + >LDA.G hInBuf + >SYSCALL getmemptr + >STYA ZPInBufPtr + >PUSHYA >LDA.G hArcFile >SYSCALL fread rts @@ -375,7 +389,7 @@ MSG.ERR .AZ "[%h]\r\n" MSG.E.IARC .AZ "Invalid/corrupt archive" MSG.E.OFS .AZ "UnPak Error at Offset : %L\r\n" MSG.PAK .AS "PAK" -DBG .AZ "\r\n\e[7m[L=%h,O=%H]\e[0m" +MSG.DBG .AZ "%H" *-------------------------------------- .DUMMY .OR 0 diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index 4139cc51..472f5467 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -9,7 +9,7 @@ NEW .INB INC/A2OSX.I .INB INC/LIBPAK.I *-------------------------------------- -STATS .EQ 1 +STATS .EQ 0 *-------------------------------------- ZPSrcPtr .EQ ZPLIB ZPDstPtr .EQ ZPLIB+2 @@ -70,6 +70,12 @@ Pak >PULLW Pak.SrcPtr stz Pak.CntH,x inx bne .1 + + ldx #S.PAKSTAT.PASS2+1 + +.2 stz Pak.Stat,x Reset Stats + dex + bpl .2 * PASS #1 : no store, update byte counters @@ -100,7 +106,6 @@ Pak >PULLW Pak.SrcPtr .DO STATS=1 jsr Pak.PrintStats - >DEBUG .FIN ldy #S.PAKSTAT-1 @@ -132,12 +137,7 @@ Pak.Run >LDYA Pak.SrcPtr sta Pak.SrcCnt+1 sta Pak.DstCnt+1 - ldx #S.PAKSTAT.PASS1 - bit Pak.bPass2 - bpl .1 - - inx - inx + ldx #S.PAKSTAT.TOP8 .1 stz Pak.Stat,x Reset Stats inx diff --git a/SHARED/X.UNPAK.S.txt b/SHARED/X.UNPAK.S.txt index 9a9d98e2..03bb32fd 100644 --- a/SHARED/X.UNPAK.S.txt +++ b/SHARED/X.UNPAK.S.txt @@ -10,8 +10,8 @@ NEW * ZPPtr2 * ZPInMask,ZPBLOfsLBits,ZPBLOfsHBits,ZPBLLenBits *-------------------------------------- -X.Unpak >DEBUG - lda (ZPInBufPtr) CHNK.DATA.T +X.Unpak jsr X.Unpak.GetNextByte CHNK.DATA.T + tax bne X.Unpak.PAK *-------------------------------------- X.Unpak.STORE ldy #0 @@ -25,7 +25,6 @@ X.Unpak.STORE ldy #0 jsr X.Unpak.PutByte bne .1 -X.Unpak.STORE.8 clc rts *-------------------------------------- @@ -38,42 +37,38 @@ X.Unpak.PAK pha A = BLBITS sta ZPBLLenBits pla - ldx #8 and #$0f - tax + + ldx #0 + cmp #8 bcc .10 - - ldx #8 + and #7 + tax + lda #8 -.10 stx ZPBLOfsLBits - sta ZPBLOfsHBits - - jsr X.Unpak.NextByte get TOPCNT +.10 sta ZPBLOfsLBits + stx ZPBLOfsHBits - lda (ZPInBufPtr) ULEN LO + jsr X.Unpak.GetNextByte ULEN LO + sec + adc #0 eor #$ff sta ZPnCnt - jsr X.Unpak.NextByte - - lda (ZPInBufPtr) ULEN HI + jsr X.Unpak.GetNextByte ULEN HI + adc #0 eor #$ff sta ZPnCnt+1 - jsr X.Unpak.NextByte + jsr X.Unpak.GetNextByte get TOPCNT - lda (ZPInBufPtr) CHNK.DATA.PAK.TOPLEN - tax - jsr X.Unpak.NextByte get TOPCNT + ldx ZPInBufPtr ZPPtr1 = TOP table + stx ZPPtr1 + ldx ZPInBufPtr+1 + stx ZPPtr1+1 - lda ZPInBufPtr - sta ZPPtr1 - lda ZPInBufPtr+1 - sta ZPPtr1+1 - - txa clc adc ZPInBufPtr skip TOP table sta ZPInBufPtr @@ -84,10 +79,6 @@ X.Unpak.PAK pha A = BLBITS .11 lda #$80 sta ZPInMask *-------------------------------------- -.1 lda ZPnCnt - ora ZPnCnt+1 - beq X.Unpak.STORE.8 -*-------------------------------------- .2 jsr X.Unpak.GetBitInC bcs .3 ->TOP * BYTE8 @@ -131,9 +122,9 @@ X.Unpak.PAK pha A = BLBITS * BACKLINK : 1111 OfsLBits OfsHBits LenBits .6 ldx ZPBLOfsLBits - + jsr X.Unpak.GetXBitInA - tay + eor #$ff sec adc ZPOutBufPtr @@ -147,10 +138,7 @@ X.Unpak.PAK pha A = BLBITS jsr X.Unpak.GetXBitInA plp -.61 pha - >PUSHYA - pla - eor #$ff +.61 eor #$ff adc ZPOutBufPtr+1 sta ZPPtr2+1 @@ -160,16 +148,7 @@ X.Unpak.PAK pha A = BLBITS inc +1 inc +1 inc +1 - >PUSHA - pha - - >PUSHBI 3 - - >LDYA L.DBG - >SYSCALL printf - - pla tax ldy #0 @@ -181,14 +160,12 @@ X.Unpak.PAK pha A = BLBITS dex bne .62 - lda #'\' - >SYSCALL putchar - lda #C.CR - >SYSCALL putchar - lda #C.LF - >SYSCALL putchar + lda ZPnCnt + ora ZPnCnt+1 + bne .2 - jmp .1 + clc + rts .99 sec rts @@ -224,6 +201,8 @@ X.Unpak.GetBitInC pla rts *-------------------------------------- +X.Unpak.GetNextByte + lda (ZPInBufPtr) X.Unpak.NextByte inc ZPInBufPtr bne .8 @@ -232,32 +211,15 @@ X.Unpak.NextByte .8 rts *-------------------------------------- X.Unpak.PutByte sta (ZPOutBufPtr) - - pha - phx - phy - - lda (ZPOutBufPtr) - >SYSCALL putchar - - lda (ZPOutBufPtr) - cmp #C.CR - bne .6 - lda #C.LF - >SYSCALL putchar -.6 - ply - plx - pla - + inc ZPOutBufPtr bne .1 inc ZPOutBufPtr+1 - + .1 inc ZPnCnt - bne .2 + bne .8 inc ZPnCnt+1 -.2 rts +.8 rts *-------------------------------------- .LIST ON X.Unpak.Size .EQ *-X.Unpak