diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7daf19fa..28d3e3c5 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 f53b52c6..5323a38e 100644 --- a/BIN/PAK.S.txt +++ b/BIN/PAK.S.txt @@ -480,6 +480,7 @@ CS.RUN.WriteArcHdr.9 rts *-------------------------------------- CS.RUN.WriteSrcData + >DEBUG lda #CHNK.T.DATA jsr CS.RUN.WriteArcByteA bcs .9 diff --git a/BIN/UNPAK.S.txt b/BIN/UNPAK.S.txt index 1312ef53..2d2378ab 100644 --- a/BIN/UNPAK.S.txt +++ b/BIN/UNPAK.S.txt @@ -59,6 +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 .DA 0 *-------------------------------------- CS.INIT clc @@ -99,7 +100,7 @@ CS.RUN >LDYAI CHNK.SIZE >LDYAI CHNK.SIZE >SYSCALL getmem bcs .9 - >STYA ZPOutBufPtr + txa >STA.G hOutBuf @@ -199,6 +200,10 @@ CS.RUN.LOOP jsr CS.RUN.GetByte lda (ZPInBufPtr),y sta ZPOutBufLen+1 + >LDA.G hOutBuf + >SYSCALL getmemptr + >STYA ZPOutBufPtr + jsr X.Unpak bcs .9 @@ -325,7 +330,9 @@ CS.RUN.OpenFile >PUSHW.G FileAuxType *-------------------------------------- CS.RUN.WriteFile >PUSHW ZPOutBufLen - >PUSHW ZPOutBufPtr + >LDA.G hOutBuf + >SYSCALL getmemptr + >PUSHYA >LDA.G hFile >SYSCALL fwrite rts @@ -368,6 +375,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" *-------------------------------------- .DUMMY .OR 0 diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index 38c80909..293b6241 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 0 +STATS .EQ 1 *-------------------------------------- ZPSrcPtr .EQ ZPLIB ZPDstPtr .EQ ZPLIB+2 @@ -90,6 +90,7 @@ Pak >PULLW Pak.SrcPtr dec Pak.bPass2 jsr Pak.Out.Init Initialize properly for first "PutBit" Call + bcs .9 jsr Pak.Run bcs .9 @@ -258,11 +259,14 @@ Pak.ComputeLenBits lda Pak.BL.Longest beq .10 - ldx #8 + ldx #3 dec dec dec + beq .10 + + ldx #8 .1 asl bcs .10 @@ -357,7 +361,7 @@ Pak.BuildTOPTable bne .1 .8 sty Pak.Shnk+S.PAKSHNK.TOPCNT - +Pak.BuildTOPTable.RTS rts *-------------------------------------- Pak.PutBL ldx #S.PAKSTAT.BL @@ -367,23 +371,23 @@ Pak.PutBL ldx #S.PAKSTAT.BL lda Pak.BestBLLen cmp Pak.BL.Longest - bcc .10 + bcc .1 sta Pak.BL.Longest -.10 ldy Pak.BestBL +.1 ldy Pak.BestBL cpy Pak.BL.Farest lda Pak.BestBL+1 pha sbc Pak.BL.Farest+1 pla - bcc .11 + bcc .2 >STYA Pak.BL.Farest -.11 bit Pak.bPass2 - bmi .20 +.2 bit Pak.bPass2 + bmi .3 ldx #S.PAKSTAT.PASS1 Assume 1 BL worse case is 3 bytes jsr Pak.UpdateStats @@ -392,31 +396,29 @@ Pak.PutBL ldx #S.PAKSTAT.BL clc rts -.20 ldy #PAK.B.BL.W +.3 ldy #PAK.B.BL.W lda #PAK.B.BL jsr Pak.Out.PutYBits - bcs .9 + bcs Pak.BuildTOPTable.RTS + + ldy Pak.BL.OfsBitsL + lda Pak.BestBL + jsr Pak.Out.PutYBits + bcs Pak.BuildTOPTable.RTS ldy Pak.BL.OfsBitsH - beq .2 + beq .4 lda Pak.BestBL+1 jsr Pak.Out.PutYBits - bcs .9 + bcs Pak.BuildTOPTable.RTS -.2 ldy Pak.BL.OfsBitsL - lda Pak.BestBL - jsr Pak.Out.PutYBits - bcs .9 - - ldy Pak.BL.LenBits +.4 ldy Pak.BL.LenBits lda Pak.BestBLLen dec dec dec jmp Pak.Out.PutYBits - -.9 rts *-------------------------------------- Pak.PutByte8 bit Pak.bPass2 bmi Pak.PutByte8.2 @@ -435,7 +437,7 @@ Pak.PutByte8 bit Pak.bPass2 clc rts - + Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT .1 cmp Pak.Shnk+S.PAKSHNK.TOPBYTES-1,y @@ -468,7 +470,8 @@ Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT and #7 ora TOP.Bits,x ldy TOP.BitCnt,x - pha + +.4 pha lda TOP.Stat,x tax @@ -511,7 +514,7 @@ Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.ULEN sta Pak.Out.Mask stz Pak.Out.Byte - clc +* clc .9 rts *-------------------------------------- Pak.Out.Close bit Pak.Out.Mask @@ -549,6 +552,7 @@ Pak.Out.PutYBits lda Pak.Out.Byte stz Pak.Out.Byte + jsr Pak.Out.PutByte .5 pla diff --git a/SHARED/X.UNPAK.S.txt b/SHARED/X.UNPAK.S.txt index f3703a1e..045c8969 100644 --- a/SHARED/X.UNPAK.S.txt +++ b/SHARED/X.UNPAK.S.txt @@ -62,6 +62,7 @@ X.Unpak.PAK pha A = BLBITS sta ZPBLOfsHBits jsr X.Unpak.NextByte get TOPCNT + >DEBUG lda (ZPInBufPtr) CHNK.DATA.PAK.TOPLEN tax @@ -76,23 +77,20 @@ X.Unpak.PAK pha A = BLBITS clc adc ZPInBufPtr skip TOP table sta ZPInBufPtr + bcc .11 - lda ZPInBufPtr+1 - adc #0 - sta ZPInBufPtr+1 + inc ZPInBufPtr+1 - lda #$80 +.11 lda #$80 sta ZPInMask - - >DEBUG - *-------------------------------------- .1 lda ZPnCnt ora ZPnCnt+1 beq X.Unpak.STORE.8 *-------------------------------------- -.2 jsr X.Unpak.GetBitInC - bcs .3 ->TOP +.2 >DEBUG + jsr X.Unpak.GetBitInC + bcs .3 ->TOP * BYTE8 ldx #8 jsr X.Unpak.GetXBitInA @@ -127,27 +125,34 @@ X.Unpak.PAK pha A = BLBITS .52 jsr X.Unpak.PutByte bne .2 + clc rts *-------------------------------------- * BACKLINK : 1111 OfsLBits OfsHBits LenBits .6 ldx ZPBLOfsLBits - + jsr X.Unpak.GetXBitInA + tay + eor #$ff sec - sbc ZPOutBufPtr + adc ZPOutBufPtr sta ZPPtr2 - php + lda ZPBLOfsHBits beq .61 + php tax jsr X.Unpak.GetXBitInA + plp -.61 plp - - sbc ZPOutBufPtr+1 +.61 pha + >PUSHYA + pla + eor #$ff + adc ZPOutBufPtr+1 sta ZPPtr2+1 ldx ZPBLLenBits @@ -156,18 +161,35 @@ X.Unpak.PAK pha A = BLBITS inc +1 inc +1 inc +1 + >PUSHA + + pha - tay + >PUSHBI 3 -.62 dey - lda (ZPPtr2),y + >LDYA L.DBG + >SYSCALL printf + + pla + tax + ldy #0 + +.62 lda (ZPPtr2),y jsr X.Unpak.PutByte beq .99 - - tya - bne .62 - bra .1 + iny + dex + bne .62 + + lda #'\' + >SYSCALL putchar + lda #C.CR + >SYSCALL putchar + lda #C.LF + >SYSCALL putchar + + jmp .1 .99 sec rts @@ -211,6 +233,24 @@ 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