diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 6f70a28b..393a8282 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/HTTPGET.S.txt b/BIN/HTTPGET.S.txt index 48408d60..f810571c 100644 --- a/BIN/HTTPGET.S.txt +++ b/BIN/HTTPGET.S.txt @@ -328,7 +328,7 @@ CS.RUN.REQUEST jsr Init.Timeout jsr .8 bcc .1 - tay + inc bne .99 >SLEEP jsr Wait.TimeOut diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index 0e793ee2..894e0aba 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -10,13 +10,14 @@ NEW .INB INC/LIBPAK.I *-------------------------------------- ZPSrcPtr .EQ ZPLIB -ZPCnt .EQ ZPLIB+2 -ZPSrcBLPtr .EQ ZPLIB+4 -ZPBLCnt .EQ ZPLIB+6 -ZPCntTmp .EQ ZPLIB+8 +ZPDstPtr .EQ ZPLIB+2 +ZPStatPtr .EQ ZPLIB+4 + +ZPSrcBLPtr .EQ ZPLIB+8 +ZPCnt .EQ ZPLIB+10 +ZPBLCnt .EQ ZPLIB+12 + -ZPDstPtr .EQ ZPLIB+16 -ZPStatPtr .EQ ZPLIB+18 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -110,8 +111,6 @@ Pak >PULLW Pak.SrcPtr jsr Pak.Out.Init Initialize properly for first "PutBit" Call - stz Pak.StringLen - jsr Pak.Run bcs .9 @@ -129,6 +128,111 @@ Pak >PULLW Pak.SrcPtr .9 rts *-------------------------------------- +Pak.Run >LDYA Pak.SrcPtr + >STYA ZPSrcPtr + + lda Pak.Shnk+S.PAKSHNK.ULEN + eor #$ff + sta Pak.SrcCnt + sta Pak.DstCnt + + lda Pak.Shnk+S.PAKSHNK.ULEN+1 + eor #$ff + sta Pak.SrcCnt+1 + sta Pak.DstCnt+1 + + sec + ror Pak.RepCnt + stz Pak.LastByte + + ldx #S.PAKSTAT.PASS1 + bit Pak.bPass2 + bpl .1 + + inx + inx + +.1 stz Pak.Stat,x Reset Stats + inx + cpx #S.PAKSTAT + bne .1 + + stz Pak.BL.Longest + stz Pak.BL.Farest + stz Pak.BL.Farest+1 + +Pak.Run.1 inc Pak.SrcCnt + bne .1 + + inc Pak.SrcCnt+1 + beq .8 0 byte left... + +.1 jsr Pak.ScanBL + bcs .4 + + ldx #S.PAKSTAT.BL + jsr Pak.UpdateStats + +* jsr PrintBL + + lda Pak.BestBLLen + cmp Pak.BL.Longest + bcc .10 + + sta Pak.BL.Longest + +.10 bit Pak.bPass2 + bmi .11 + + ldx #S.PAKSTAT.PASS1 Assume 1 BL worse case is 3 bytes + jsr Pak.UpdateStats + jsr Pak.UpdateStats + jsr Pak.UpdateStats + bra .3 + +.11 sec + lda Pak.Out.PutBitC + + ldy Pak.BL.BitCntH + beq .2 + + lda Pak.BestBL+1 + jsr Pak.Out.PutYBits + +.2 ldy Pak.BL.BitCntL + lda Pak.BestBL + jsr Pak.Out.PutYBits + + ldy #6 + lda Pak.BestBLLen + jsr Pak.Out.PutYBits + + lda Pak.BestBLLen + clc + adc ZPSrcPtr + sta ZPSrcPtr + bcc .3 + inc ZPSrcPtr+1 + +.3 lda Pak.BestBLLen + clc + adc Pak.SrcCnt + sta Pak.SrcCnt + bcc .1 + inc Pak.SrcCnt+1 + bmi .1 + +.8 clc +.9 rts + +.4 lda (ZPSrcPtr) + jsr Pak.PutA + + inc ZPSrcPtr + bne Pak.Run.1 + inc ZPSrcPtr+1 + bra Pak.Run.1 +*-------------------------------------- Pak.BuildTOPTable ldy #0 @@ -178,110 +282,15 @@ Pak.BuildTOPTable rts *-------------------------------------- -Pak.Run jsr Pak.InitPass - -Pak.Run.1 inc Pak.SrcCnt - bne .1 - - inc Pak.SrcCnt+1 - beq .8 0 byte left... - -.1 jsr Pak.ScanBL - bcs .4 - - bit Pak.bPass2 - bmi .11 - - ldx #S.PAKSTAT.PASS1 - jsr Pak.UpdateStats - jsr Pak.UpdateStats - jsr Pak.UpdateStats - - bra .3 - -.11 sec - lda Pak.Out.PutBitC - - ldy Pak.BL.BitCntH - beq .2 - - lda Pak.BestBL+1 - jsr Pak.Out.PutYBits - -.2 ldy Pak.BL.BitCntL - lda Pak.BestBL - jsr Pak.Out.PutYBits - - ldy #6 - lda Pak.BestBLLen - jsr Pak.Out.PutYBits - - lda Pak.BestBLLen - clc - adc ZPSrcPtr - sta ZPSrcPtr - bcc .3 - inc ZPSrcPtr+1 - -.3 ldx #S.PAKSTAT.BL - jsr Pak.UpdateStats - - lda Pak.BestBLLen - clc - adc Pak.SrcCnt - sta Pak.SrcCnt - bcc .1 - inc Pak.SrcCnt+1 - bmi .1 - -.8 clc -.9 rts - -.4 lda (ZPSrcPtr) - jsr Pak.PutA - - inc ZPSrcPtr - bne Pak.Run.1 - inc ZPSrcPtr+1 - bra Pak.Run.1 -*-------------------------------------- -Pak.InitPass >LDYA Pak.SrcPtr - >STYA ZPSrcPtr - - lda Pak.Shnk+S.PAKSHNK.ULEN - eor #$ff - sta Pak.SrcCnt - - lda Pak.Shnk+S.PAKSHNK.ULEN+1 - eor #$ff - sta Pak.SrcCnt+1 - - sec - ror Pak.RepCnt - stz Pak.LastByte - - ldx #S.PAKSTAT.PASS1 - bit Pak.bPass2 - bpl .1 - - inx - inx - -.1 stz Pak.Stat,x Reset Stats - inx - cpx #S.PAKSTAT - bne .1 - - rts -*-------------------------------------- -Pak.ScanBL >LDYA Pak.SrcPtr +Pak.ScanBL >LDYA Pak.SrcPtr Start at beginning of Src buf >STYA ZPSrcBLPtr - + sec ror Pak.bBLFound + stz Pak.BestBLLen -.1 sec - lda ZPSrcBLPtr +.1 lda ZPSrcBLPtr + sec sbc ZPSrcPtr sta ZPBLCnt @@ -290,8 +299,8 @@ Pak.ScanBL >LDYA Pak.SrcPtr sta ZPBLCnt+1 ZPSrcBLPtr < !BlCnt < ZPSrcPtr bcs .8 ZPSrcBLPtr = ZPSrcPtr, exit - >LDYA ZPCnt - >STYA ZPCntTmp Stop at end of Src Data + >LDYA Pak.SrcCnt make sure not going past End Buffer + >STYA ZPCnt while reading ahead ldy #0 ...or Y = BL.MAX @@ -309,9 +318,9 @@ Pak.ScanBL >LDYA Pak.SrcPtr cpy #BL.MAX beq .4 Max BL len - inc ZPCntTmp + inc ZPCnt bne .2 - inc ZPCntTmp+1 + inc ZPCnt+1 bne .2 Last Src Data .4 dey Adjust BL len Range @@ -319,29 +328,30 @@ Pak.ScanBL >LDYA Pak.SrcPtr dey bmi .5 not long enough - + cpy Pak.BestBLLen bcc .5 not better ... beq .5 same... sty Pak.BestBLLen - >LDYA ZPBLCnt + >LDYA ZPSrcBLPtr >STYA Pak.BestBL stz Pak.bBLFound - jsr PrintBL - .5 inc ZPSrcBLPtr bne .1 inc ZPSrcBLPtr+1 bra .1 - + .8 rol Pak.bBLFound rts *-------------------------------------- -PrintBl lda #'{' +PrintBl >LDYA Pak.BestBL + >STYA ZPSrcBLPtr + + lda #'{' >SYSCALL putchar ldy #0 @@ -370,7 +380,7 @@ PrintBl lda #'{' >SYSCALL putchar lda #C.LF >SYSCALL putchar - >DEBUG + rts *-------------------------------------- Pak.PutA bit Pak.bPass2 @@ -382,9 +392,7 @@ Pak.PutA bit Pak.bPass2 inc Pak.CntH,x -.1 ldx #S.PAKSTAT.PASS1 - jsr Pak.UpdateStats - ldx #S.PAKSTAT.BYTE8 +.1 ldx #S.PAKSTAT.BYTE8 jsr Pak.UpdateStats clc @@ -441,7 +449,7 @@ Pak.PutA.2.Out ldy Pak.Shnk+S.PAKSHNK.TOPCNT .1 cmp Pak.Shnk+S.PAKSHNK.TOPBYTES-1,y beq .3 dey - bpl .1 + bne .1 ldx #S.PAKSTAT.BYTE8 jsr Pak.UpdateStats @@ -449,7 +457,9 @@ Pak.PutA.2.Out ldy Pak.Shnk+S.PAKSHNK.TOPCNT clc jmp Pak.Out.PutCA -.3 tya Range 0-23 +.3 dey Range 0-23 + + tya lsr lsr lsr @@ -462,7 +472,6 @@ Pak.PutA.2.Out ldy Pak.Shnk+S.PAKSHNK.TOPCNT lda TOP.Stat,x tax pla - jsr Pak.UpdateStats jmp Pak.Out.PutYBits *-------------------------------------- @@ -509,6 +518,8 @@ Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.TOPCNT cpy Pak.Shnk+S.PAKSHNK.TOPCNT bne .1 + stz Pak.StringLen + lda #$80 sta Pak.Out.Mask stz Pak.Out.Byte @@ -596,14 +607,22 @@ Pak.UpdateStats inc Pak.Stat,x inc Pak.Stat+1,x .8 rts *-------------------------------------- -Pak.PrintStats ldx #14 +Pak.PrintStats lda Pak.BL.BitCntL + clc + adc Pak.BL.BitCntH + >PUSHA + + lda Pak.BL.Longest + >PUSHA + + ldx #14 .1 >PUSHW Pak.Stat,x dex dex bpl .1 - >PUSHBI 16 + >PUSHBI 18 >LDYA L.MSG.Stats >SYSCALL printf @@ -628,7 +647,7 @@ MSG.Stats .AS "\r\nPass 1 : %5D\r\n" .AS "Top 16 : %5D\r\n" .AS "Top 24 : %5D\r\n" .AS "Rep N : %5D\r\n" - .AZ "BLNK : %5D\r\n" + .AZ "BLNK : %5D, Longest : %d bytes, ptr witdh : %d bits\r\n" MSG.Top24 .AZ "Top (%2d) : %h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h%h\r\n" TOP.Bits .DA #PAK.B.TOP8,PAK.B.TOP16,PAK.B.TOP24 TOP.BitCnt .DA #5,#6,#7 @@ -639,8 +658,10 @@ Pak.SrcPtr .BS 2 Pak.SrcCnt .BS 2 Pak.DstCnt .BS 2 -Pak.RepCnt .BS 1 -Pak.LastByte .BS 1 +Pak.bPass2 .BS 1 + +Pak.BL.Longest .BS 1 +Pak.BL.Farest .BS 2 Pak.BL.BitCntL .BS 1 Pak.BL.BitCntH .BS 1 @@ -649,13 +670,14 @@ Pak.bBLFound .BS 1 Pak.BestBLLen .BS 1 Pak.BestBL .BS 2 -Pak.StringLen .BS 1 -Pak.StringBuf .BS STRING.MAX - Pak.Cnt .BS 2 Pak.bStop .BS 1 -Pak.bPass2 .BS 1 +Pak.RepCnt .BS 1 +Pak.LastByte .BS 1 + +Pak.StringLen .BS 1 +Pak.StringBuf .BS STRING.MAX Pak.Out.Byte .BS 1 Pak.Out.Mask .BS 1