From b7925394e5f4456a86ba2bcc68cf68c3eba86dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 3 Oct 2019 17:39:08 +0200 Subject: [PATCH] Kernel 0.93+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes INC/LIBPAK.I.txt | 8 +- LIB/LIBPAK.S.AC.txt | 10 -- LIB/LIBPAK.S.IN.txt | 63 -------- LIB/LIBPAK.S.LZ.txt | 133 --------------- LIB/LIBPAK.S.OUT.txt | 85 ---------- LIB/LIBPAK.S.txt | 342 +++++++++++++++++++++++++-------------- 7 files changed, 223 insertions(+), 418 deletions(-) delete mode 100644 LIB/LIBPAK.S.AC.txt delete mode 100644 LIB/LIBPAK.S.IN.txt delete mode 100644 LIB/LIBPAK.S.LZ.txt delete mode 100644 LIB/LIBPAK.S.OUT.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7e3de620b047b652cf4c843cd617e16ce15f47bc..c72f2e1924f36cdea62d6f504aae30910354e80f 100644 GIT binary patch delta 36608 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 delta 22746 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 WzXE;({0{g7@F(Chx0_tyX8#}Oodo3o diff --git a/INC/LIBPAK.I.txt b/INC/LIBPAK.I.txt index 87df861e..a91a1c55 100644 --- a/INC/LIBPAK.I.txt +++ b/INC/LIBPAK.I.txt @@ -9,10 +9,10 @@ WSIZE .EQ 4096 *-------------------------------------- PAK.B.STRING .EQ %0 PAK.B.BYTE8 .EQ %0 -PAK.B.TOP8 .EQ %10 -PAK.B.TOP16 .EQ %110 -PAK.B.TOP24 .EQ %1110 -PAK.B.REPn .EQ %1111 +PAK.B.TOP8 .EQ %10.000 +PAK.B.TOP16 .EQ %110.000 +PAK.B.TOP24 .EQ %1110.000 +PAK.B.REPn .EQ %1111.0000 PAK.B.BACKLINK .EQ %1 *-------------------------------------- * STRINGn : 0 xxxx (1-16) diff --git a/LIB/LIBPAK.S.AC.txt b/LIB/LIBPAK.S.AC.txt deleted file mode 100644 index 0c68b88b..00000000 --- a/LIB/LIBPAK.S.AC.txt +++ /dev/null @@ -1,10 +0,0 @@ -NEW -PREFIX -AUTO 4,1 - .LIST OFF -*-------------------------------------- - -*-------------------------------------- -MAN -SAVE USR/SRC/LIB/LIBPAK.S.AC -ASM diff --git a/LIB/LIBPAK.S.IN.txt b/LIB/LIBPAK.S.IN.txt deleted file mode 100644 index 71891601..00000000 --- a/LIB/LIBPAK.S.IN.txt +++ /dev/null @@ -1,63 +0,0 @@ -NEW - AUTO 3,1 - .LIST OFF -*-------------------------------------- -Pak.In.Init >LDYA Pak.SrcPtr - >STYA ZPSrcPtr - - lda Pak.Shnk+S.PAKSHNK.LEN - eor #$ff - sta Pak.SrcCnt - lda Pak.Shnk+S.PAKSHNK.LEN+1 - eor #$ff - sta Pak.SrcCnt+1 - - rts -*-------------------------------------- -Pak.In.GetRH lda #$ff - cmp Pak.SrcCnt+1 return 255 if not $ffxx - bne .1 - lda Pak.SrcCnt - eor #$ff return !xx if $ffxx -.1 rts -*-------------------------------------- -Pak.In.MoveFWA clc - adc ZPSrcPtr - sta ZPSrcPtr - bcc .8 - inc ZPSrcPtr+1 -.8 rts -*-------------------------------------- -Pak.In.Get8Bits ldy #8 - .HS 2C bit abs -Pak.In.Get4Bits ldy #4 - lda #0 make sure to reset A before reading less than 8 bits only -.1 jsr Pak.In.GetBit and to exit with CC if even if 8 bits read - rol - dey - bne .1 - rts always CC -*-------------------------------------- -Pak.In.GetBit ldx Pak.In.Mask - bne .1 - jsr Pak.In.NxtByte - ldx #8 -.1 dex - stx Pak.In.Mask - pha Don't trash A - lda (UnZPSrcPtr) - and Pak.In.BitMask,x - cmp #1 if 0:CC, i>0 CS - pla - rts Bit is in C -*-------------------------------------- -Pak.In.GetByte lda (UnZPSrcPtr) -Pak.In.NxtByte inc UnZPSrcPtr - bne .8 - inc UnZPSrcPtr+1 -.8 rts -*-------------------------------------- -MAN -SAVE USR/SRC/LIB/LIBPAK.S.IN -LOAD USR/SRC/LIB/LIBPAK.S -ASM diff --git a/LIB/LIBPAK.S.LZ.txt b/LIB/LIBPAK.S.LZ.txt deleted file mode 100644 index 513ca87b..00000000 --- a/LIB/LIBPAK.S.LZ.txt +++ /dev/null @@ -1,133 +0,0 @@ -NEW -PREFIX -AUTO 4,1 - .LIST OFF -*-------------------------------------- -* Sliding Window = 4096 -*-------------------------------------- -WSIZE .EQ 4096 power of 2 -*-------------------------------------- -* Output BITSTREAM : -* 0 : Lit (8) -* 1 : Copy, L (4), P.HI (4), P.LO (8) -*-------------------------------------- -Pak.LZ jsr Pak.In.Init Init SrcPtr,SrcCnt - jsr Pak.Out.Init - -* future optimization, make P grows from 2 to 12 while increasing W size -* lda #2 Ptr width starts at 2 bits -* sta Pak.LZ.PWidth -* lda #%00000011 Ptr Mask Starts at %000000000011 -* sta Pak.LZ.PMaskLO -* stz Pak.LZ.PMaskHI - lda #$ff - sta Pak.LZ.WCnt - sta Pak.LZ.WCnt+1 WCnt=!0 - -.1 jsr Pak.In.GetRH Z if EOF - beq .80 - cmp #3 - bcc .8 no more than 2 bytes left....store - cmp #19 more than 18 bytes left, limit to 18 - bcc .2 - lda #18 -.2 tax X = Read ahead max size - lda ZPSrcPtr make ZPSrcWPtr=ZPSrcPtr - sta ZPSrcWPtr - lda ZPSrcPtr - sta ZPSrcWPtr - lda Pak.LZ.WCnt - sta ZPCnt - lda Pak.LZ.WCnt+1 - sta ZPCnt+1 - stz Pak.LZ.BestLen -.3 inc ZPCnt - bne .4 - inc ZPCnt+1 - beq .7 reached begining of window....store - lda ZPSrcWPtr make ZPSrcWPtr-=1 - sec - sbc #1 - sta ZPSrcWPtr - bcs .4 - dec ZPSrcWPtr+1 -.4 ldy #0 - phx save Read ahead max size - -.5 lda (ZPSrcPtr),y Try to find a match - cmp (ZPSrcWPtr),y - bne .6 - iny - dex don't exceed 18 or Src Buffer - bne .5 -.6 plx get back Read ahead max size - - cpy #3 matched a least 3 chars ? - bcc .3 no....try one char back in Wnd - cpy Pak.LZ.BestLen better than last match ? - bcc .3 no....try one char back in Wnd - sty Pak.LZ.BestLen - lda ZPSrcWPtr - sta Pak.LZ.BestPtr - lda ZPSrcWPtr+1 - sta Pak.LZ.BestPtr+1 - bra .3 -.7 lda Pak.LZ.BestLen do we match something ? - beq .8 - lda Pak.LZ.BestPtr - sec - sbc ZPSrcPtr - sta Pak.LZ.BestPtr - lda Pak.LZ.BestPtr+1 - sbc ZPSrcPtr+1 - sta Pak.LZ.BestPtr+1 - tya get len - dec Adjust range 0-15 - dec - dec - ora Pak.LZ.BestPtr+1 merge with P.HI - sec - jsr Pak.Out.PutCA Put 9 bits 1+LLLL+PPPP - bcs .99 - lda Pak.LZ.BestPtr Put 8 bits pppppppp - jsr Pak.Out.PutA - bcs .99 - tya - bra .81 -.8 lda (ZPSrcPtr) - clc - jsr Pak.Out.PutCA Put 9 bits 0+xxxxxxxx - bcs .99 - lda #1 -.81 jsr Pak.In.MoveFWA - tya - jsr LZ.MoveWndY - bra .3 - bra .71 -.80 clc -.99 rts -*-------------------------------------- -Unpak.LZ - - - clc - rts -*-------------------------------------- -LZ.MoveWndY tya - sec - sbc Pak.LZ.WCnt - tax - lda #0 - sbc Pak.LZ.WCnt+1 - cpx #WSIZE^$FF - sbc /WSIZE^$FF - bcs .1 - ldx #WSIZE^$FF - lda /WSIZE^$FF -.1 stx Pak.LZ.WCnt - sta Pak.LZ.WCnt+1 - rts -*-------------------------------------- -MAN -SAVE USR/SRC/LIB/LIBPAK.S.LZ -ASM diff --git a/LIB/LIBPAK.S.OUT.txt b/LIB/LIBPAK.S.OUT.txt deleted file mode 100644 index 9dfe319e..00000000 --- a/LIB/LIBPAK.S.OUT.txt +++ /dev/null @@ -1,85 +0,0 @@ -NEW - AUTO 3,1 - .LIST OFF -*-------------------------------------- -Pak.Out.Init lda #$80 - sta Pak.Out.Mask - stz Pak.Out.Byte - rts -*-------------------------------------- -Pak.Out.Close bit Pak.Out.Mask - bmi .8 - lda Pak.Out.Byte - jmp Pak.Out.PutByte -.8 clc - rts -*-------------------------------------- -Pak.Out.PutCA jsr Pak.Out.PutBitC - bcs Pak.Out.Put.rts - -Pak.Out.PutA ldy #8 - -.1 asl - jsr Pak.Out.PutBitC - bcs Pak.Out.Put.rts - dey - bne .1 -Pak.Out.Put.rts rts -*-------------------------------------- -Pak.Out.PutYBits - asl - jsr Pak.Out.PutBitC - bcs .9 - dey - bne Pak.Out.PutYBits -.9 rts -*-------------------------------------- -Pak.Out.PutBitC pha - - bcc .1 - lda Pak.Out.Mask - tsb Pak.Out.Byte - clc -.1 lsr Pak.Out.Mask - bne .8 - jsr Pak.Out.PutByte - bcs .9 - jsr Pak.Out.Init -.8 pla -* clc - rts -.9 pla -* sec - rts -*-------------------------------------- -Pak.Out.PutByte inc Pak.DstCnt - bne .1 - inc Pak.DstCnt+1 - beq .9 -.1 bit Pak.bPass2 - bmi .6 - phx - tax - inc Pak.CntL,x - bne .2 - - inc Pak.CntH,x -.2 plx - bra .7 -.6 sta (ZPDstPtr) - - inc ZPDstPtr - bne .2 - inc ZPDstPtr+1 -.7 inc Pak.Stat+S.PAKSTAT.PASS2,x - bne .8 - inc Pak.Stat+S.PAKSTAT.PASS2+1,x -.8 clc - rts -.9 sec - rts -*-------------------------------------- -MAN -SAVE USR/SRC/LIB/LIBPAK.S.OUT -LOAD USR/SRC/LIB/LIBPAK.S -ASM diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index 550705a4..0e793ee2 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -55,7 +55,7 @@ LIB.UNLOAD clc * CS, Pak failure *\-------------------------------------- Pak >PULLW Pak.SrcPtr - >PULLW Pak.SrcLen + >PULLW Pak.Shnk+S.PAKSHNK.ULEN >PULLW ZPDstPtr >PULLW ZPStatPtr @@ -73,7 +73,7 @@ Pak >PULLW Pak.SrcPtr ldx #8 ldy #0 - lda Pak.SrcLen+1 + lda Pak.Shnk+S.PAKSHNK.ULEN+1 beq .22 ldy #8 @@ -83,7 +83,7 @@ Pak >PULLW Pak.SrcPtr dey bra .2 -.22 lda Pak.SrcLen +.22 lda Pak.Shnk+S.PAKSHNK.ULEN .3 asl bcs .4 @@ -97,8 +97,6 @@ Pak >PULLW Pak.SrcPtr stz Pak.bPass2 - jsr Pak.InitPass - jsr Pak.Run bcs .9 @@ -110,23 +108,15 @@ Pak >PULLW Pak.SrcPtr dec Pak.bPass2 - jsr Pak.InitPass - jsr Pak.Out.Init Initialize properly for first "PutBit" Call stz Pak.StringLen - + jsr Pak.Run bcs .9 + jsr Pak.PrintStats - ldy #S.PAKSHNK-1 - -.6 lda Pak.Shnk,y - - dey - bpl .6 - ldy #S.PAKSTAT-1 .7 lda Pak.Stat,y @@ -134,40 +124,61 @@ Pak >PULLW Pak.SrcPtr dey bpl .7 + >LDYA Pak.Stat+S.PAKSTAT.PASS2 clc .9 rts *-------------------------------------- -Pak.InitPass >LDYA Pak.SrcPtr - >STYA ZPSrcPtr - - lda Pak.SrcLen - eor #$ff - sta Pak.SrcCnt - - lda Pak.SrcLen+1 - eor #$ff - sta Pak.SrcCnt+1 +Pak.BuildTOPTable + ldy #0 + +.1 stz Pak.Cnt Init best score to 0 + stz Pak.Cnt+1 sec - ror Pak.RepCnt - stz Pak.LastByte + ror Pak.bStop - ldx #S.PAKSTAT.PASS1 - bit Pak.bPass2 - bpl .1 + ldx #0 - inx - inx +.2 lda Pak.CntL,x + ora Pak.CntH,x + beq .3 + + stz Pak.bStop + + lda Pak.Cnt + cmp Pak.CntL,x is it better at X + lda Pak.Cnt+1 + sbc Pak.CntH,x + bcs .3 not better or equal... -.1 stz Pak.Stat,x Reset Stats - inx - cpx #S.PAKSTAT + stx Pak.LastByte save new score index... + + lda Pak.CntL,x + sta Pak.Cnt ...and value + lda Pak.CntH,x + sta Pak.Cnt+1 + +.3 inx + bne .2 + + bit Pak.bStop + bmi .8 + + lda Pak.LastByte + sta Pak.Shnk+S.PAKSHNK.TOPBYTES,y + tax + stz Pak.CntL,x Discard this entry + stz Pak.CntH,x + iny + cpy #24 bne .1 +.8 sty Pak.Shnk+S.PAKSHNK.TOPCNT + rts *-------------------------------------- -Pak.Run +Pak.Run jsr Pak.InitPass Pak.Run.1 inc Pak.SrcCnt bne .1 @@ -179,7 +190,7 @@ Pak.Run.1 inc Pak.SrcCnt bcs .4 bit Pak.bPass2 - bpl .11 + bmi .11 ldx #S.PAKSTAT.PASS1 jsr Pak.UpdateStats @@ -234,8 +245,37 @@ Pak.Run.1 inc Pak.SrcCnt 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 - >LDYA ZPSrcBLPtr + >STYA ZPSrcBLPtr sec ror Pak.bBLFound @@ -276,11 +316,13 @@ Pak.ScanBL >LDYA Pak.SrcPtr .4 dey Adjust BL len Range dey (0 = 3 matching chars...etc..) + dey bmi .5 not long enough cpy Pak.BestBLLen - bcs .5 not better ... + bcc .5 not better ... + beq .5 same... sty Pak.BestBLLen >LDYA ZPBLCnt @@ -288,6 +330,8 @@ Pak.ScanBL >LDYA Pak.SrcPtr stz Pak.bBLFound + jsr PrintBL + .5 inc ZPSrcBLPtr bne .1 inc ZPSrcBLPtr+1 @@ -297,53 +341,36 @@ Pak.ScanBL >LDYA Pak.SrcPtr rts *-------------------------------------- -Pak.BuildTOPTable +PrintBl lda #'{' + >SYSCALL putchar + ldy #0 - -.1 stz Pak.Cnt Init best score to 0 - stz Pak.Cnt+1 + ldx Pak.BestBLLen + inx + inx + inx - sec - ror Pak.bStop - - ldx #0 - -.2 lda Pak.CntL,x - ora Pak.CntH,x - beq .3 - - stz Pak.bStop - - lda Pak.Cnt - cmp Pak.CntL,x is it better at X - lda Pak.Cnt+1 - sbc Pak.CntH,x - bcs .3 not better or equal... - - stx Pak.In.Byte save new score index... - - lda Pak.CntL,x - sta Pak.Cnt ...and value - lda Pak.CntH,x - sta Pak.Cnt+1 - -.3 inx - bne .2 - - bit Pak.bStop - bmi .8 - - lda Pak.In.Byte - sta Pak.Shnk+S.PAKSHNK.TOPBYTES,y - tax - stz Pak.CntL,x Discard this entry - stz Pak.CntH,x +.40 lda (ZPSrcBLPtr),y + phy + phx + cmp #C.SPACE + bcs .41 + + lda #'_' +.41 >SYSCALL putchar + plx + ply iny - cpy #24 - bne .1 - -.8 sty Pak.Shnk+S.PAKSHNK.TOPCNT + dex + bne .40 + lda #'}' + >SYSCALL putchar + lda #C.CR + >SYSCALL putchar + lda #C.LF + >SYSCALL putchar + >DEBUG rts *-------------------------------------- Pak.PutA bit Pak.bPass2 @@ -363,12 +390,14 @@ Pak.PutA bit Pak.bPass2 clc rts -Pak.PutA.2 bit Pak.RepCnt +Pak.PutA.2 bra Pak.PutA.2.Out + + bit Pak.RepCnt bpl .1 stz Pak.RepCnt LastByte invalid... sta Pak.LastByte - bra Pak.PutA.1 send first byte. + bra Pak.PutA.2.Out send first byte. .1 cmp Pak.LastByte beq .3 @@ -378,7 +407,7 @@ Pak.PutA.2 bit Pak.RepCnt beq .2 ora #PAK.B.REPn yes, send it - jsr Pak.PutA.1 + jsr Pak.PutA.2.Out bcs .9 ldx #S.PAKSTAT.REPN @@ -386,7 +415,7 @@ Pak.PutA.2 bit Pak.RepCnt stz Pak.RepCnt .2 lda Pak.LastByte - bra Pak.PutA.1 + bra Pak.PutA.2.Out .3 inc Pak.RepCnt lda Pak.RepCnt @@ -395,7 +424,7 @@ Pak.PutA.2 bit Pak.RepCnt dec ora #PAK.B.REPn - jsr Pak.PutA.1 + jsr Pak.PutA.2.Out bcs .9 lda #1 @@ -406,24 +435,8 @@ Pak.PutA.2 bit Pak.RepCnt .8 clc .9 rts - -Pak.PutA.1 bit Pak.bPass2 - bmi .10 - - tax - inc Pak.CntL,x - bne .11 - inc Pak.CntH,x - -.11 inc Pak.Stat+S.PAKSTAT.PASS1 - bne .12 - inc Pak.Stat+S.PAKSTAT.PASS1+1 -.12 clc - rts - -* Pak.PutA.1 PASS #2 - -.10 ldy #S.PAKSHNK.TOPCNT + +Pak.PutA.2.Out ldy Pak.Shnk+S.PAKSHNK.TOPCNT .1 cmp Pak.Shnk+S.PAKSHNK.TOPBYTES-1,y beq .3 @@ -440,7 +453,7 @@ Pak.PutA.1 bit Pak.bPass2 lsr lsr lsr - tax + tax Range 0-2 tya and #7 ora TOP.Bits,x @@ -482,6 +495,102 @@ Pak.Flush ldx Pak.StringLen .8 clc .9 rts *-------------------------------------- +Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.TOPCNT + jsr Pak.Out.PutByte + bcs .9 + + ldy #0 + +.1 lda Pak.Shnk+S.PAKSHNK.TOPBYTES + jsr Pak.Out.PutByte + bcs .9 + + iny + cpy Pak.Shnk+S.PAKSHNK.TOPCNT + bne .1 + + lda #$80 + sta Pak.Out.Mask + stz Pak.Out.Byte + + clc +.9 rts +*-------------------------------------- +Pak.Out.Close bit Pak.Out.Mask + bmi .8 + lda Pak.Out.Byte + jmp Pak.Out.PutByte +.8 clc + rts +*-------------------------------------- +Pak.Out.PutCA jsr Pak.Out.PutBitC + bcs Pak.Out.Put.rts + + ldy #8 + +.1 asl + jsr Pak.Out.PutBitC + bcs Pak.Out.Put.rts + dey + bne .1 +Pak.Out.Put.rts rts +*-------------------------------------- +Pak.Out.PutYBits + asl + jsr Pak.Out.PutBitC + bcs .9 + dey + bne Pak.Out.PutYBits +.9 rts +*-------------------------------------- +Pak.Out.PutBitC pha + + bcc .1 + lda Pak.Out.Mask + tsb Pak.Out.Byte + +.1 lsr Pak.Out.Mask + bne .8 + + ror Pak.Out.Mask + + jsr Pak.Out.PutByte + bcs .9 + + + +.8 pla +* clc + rts + +.9 pla +* sec + rts +*-------------------------------------- +Pak.Out.PutByte inc Pak.DstCnt + bne .1 + + inc Pak.DstCnt+1 + beq .9 + +.1 sta (ZPDstPtr) + + inc ZPDstPtr + bne .2 + + inc ZPDstPtr+1 + +.2 inc Pak.Stat+S.PAKSTAT.PASS2 + bne .8 + + inc Pak.Stat+S.PAKSTAT.PASS2+1 + +.8 clc + rts + +.9 sec + rts +*-------------------------------------- Pak.UpdateStats inc Pak.Stat,x bne .8 inc Pak.Stat+1,x @@ -507,12 +616,9 @@ Pak.PrintStats ldx #14 >PUSHBI 25 >LDYA L.MSG.Top24 >SYSCALL printf - >DEBUG + rts *-------------------------------------- -* .INB USR/SRC/LIB/LIBPAK.S.IN - .INB USR/SRC/LIB/LIBPAK.S.OUT -*-------------------------------------- CS.END *-------------------------------------- MSG.Stats .AS "\r\nPass 1 : %5D\r\n" @@ -523,13 +629,12 @@ MSG.Stats .AS "\r\nPass 1 : %5D\r\n" .AS "Top 24 : %5D\r\n" .AS "Rep N : %5D\r\n" .AZ "BLNK : %5D\r\n" -MSG.Top24 .AZ "Top24 : %d\r\n%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 #%10000,#%110000,#%1110000 +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 -TOP.Stat .DA #S.PAKSTAT.TOP8,S.PAKSTAT.TOP16,S.PAKSTAT.TOP24 +TOP.Stat .DA #S.PAKSTAT.TOP8,#S.PAKSTAT.TOP16,#S.PAKSTAT.TOP24 *-------------------------------------- Pak.SrcPtr .BS 2 -Pak.SrcLen .BS 2 Pak.SrcCnt .BS 2 Pak.DstCnt .BS 2 @@ -551,14 +656,6 @@ Pak.Cnt .BS 2 Pak.bStop .BS 1 Pak.bPass2 .BS 1 -Pak.MaxReadAhead .BS 1 - -Pak.WPtr .BS 2 -Pak.WLimit .BS 2 -Pak.WStrLen .BS 1 - -Pak.In.Byte .BS 1 -Pak.In.Mask .BS 1 Pak.Out.Byte .BS 1 Pak.Out.Mask .BS 1 @@ -568,7 +665,6 @@ Pak.CntH .BS 256 Pak.Shnk .BS S.PAKSHNK Pak.Stat .BS S.PAKSTAT *-------------------------------------- -Pak.In.BitMask .HS 8040201008040201 MAN SAVE USR/SRC/LIB/LIBPAK.S ASM