From ff0efac421ff5952d65aa8b0850e4bfc4d74d525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 9 Feb 2018 16:02:47 +0000 Subject: [PATCH] Kernel 0.9.1 : LIBPAK rewrite... --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes LIB/LIBPAK.S.txt | 195 ++++++++++++++++++----------------- TEST.S.txt | 213 ++++++++++++++++++++++++++++++++++++++- 4 files changed, 312 insertions(+), 96 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 2b6e14f74fbe10e8d2b83e4ed20c83d01d3b0d92..7f4d16ba57ea7a45b474df8c36f612dbc8f75d22 100644 GIT binary patch delta 7708 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 GcKin-3!^Ro delta 4448 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 5dc5461af444707a829ef8ca2623df2ca1eb5777..25329ca9e8cb1c9c299a5735fa1aececaff6ee60 100644 GIT binary patch delta 8990 zcmZ`<30zZG);}-i>4W!NAcO#lEJ1c+0tnbzTNV{62ol%s0fL|*U=lR6PUBNiYpqso zy-i!~?sVT7D`&m74wgS5GZrQS2zoW9PsfNzIw-eUEPw&tcf$T*eF z=`yB=PQ&Fk*BYC%#}`=A;n^1DD5-?>T79wJ8@M>OPz6$*p_st4>N&&ixou0En`?&` zxC0Rl)aF)@8Vq5-yAzao_}S5^S{=h+nvdTDE|ru*WlK;i$XH+q{}+VDCXgHTop#7? zV!w46XXKo22t(>ZeZz7MhZ_fCGcHxPuz7A{)q+J4F=QO-4`M5AY%_#c`+c~J$f$1J zP{0i-i^njRI6!Pi_L)xhl-p<%mayaak+c*^@-jo%)8$gFHBi5t*}IK(p%q9@S!u92 zSg*HJhbD>g8HR9&*R9&hA>~X%c+?_FP|m_-_gd99dp3w?BZlQ1gRPv6R$

FeebIh)>M&T~GgY*od&mp6e06JA$#c*%8T3@gB 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 diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index 5991e2aa..4b592b34 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -23,19 +23,15 @@ AUTO 4,1 *-------------------------------------- * 1111 : STOREn (4) + 4 cnt + 8n.... *-------------------------------------- -PAK.L.SHORT3 .EQ 1 -PAK.B.SHORT3 .EQ %00000000 -PAK.L.SHORT4 .EQ 2 -PAK.B.SHORT4 .EQ %10000000 -PAK.L.REPn .EQ 3 -PAK.B.REPn .EQ %11000000 -PAK.L.BACKLINK .EQ 4 -PAK.B.BACKLINK .EQ %11100000 -PAK.L.STOREn .EQ 4 -PAK.B.STOREn .EQ %11110000 +PAK.B.SHORT3 .EQ %00000000 0xxx0000 +PAK.B.SHORT4 .EQ %10000000 10xxxx00 +PAK.B.REPn .EQ %11000000 110xxxxx +PAK.B.BACKLINK .EQ %11100000 1110hhhhllllllllxxxxxxxx +PAK.B.STOREn .EQ %11110000 1111xxxx ... *-------------------------------------- WSIZE .EQ 4096 REPMAX .EQ 32 +STOREMAX .EQ 16 *-------------------------------------- .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I @@ -90,59 +86,65 @@ Pak >PULLW ZPStatPtr sta ZPHdrPtr clc adc #S.PAKHDR - sta Pak.DstPtr + sta ZPDstPtr >PULLA sta ZPHdrPtr+1 adc /S.PAKHDR - sta Pak.DstPtr+1 + sta ZPDstPtr+1 >PULLW Pak.Hdr+S.PAKHDR.LEN >PULLW Pak.SrcPtr + +* Reset Byte counters + + ldx #0 + +.1 stz Pak.CntL,x + stz Pak.CntH,x + inx + bne .1 -* PASS #1 : REP & BL, raw store +* PASS #1 : REP & BL, no store, update byte counters jsr Pak.InitPass - stz Pak.StoreMode + stz Pak.bPass2 jsr Pak.Run bcs .9 - >LDYA Pak.Stat+S.PAKSTAT.PASS2 - >STYA Pak.Stat+S.PAKSTAT.PASS1 - -* PASS #2a : Count occurence for each value... - jsr Pak.BuildShortTable -* PASS #2b : REP & BL, true store with S3,S4 +* PASS #2 : REP & BL, store with S3,S4 jsr Pak.InitPass - dec Pak.StoreMode + dec Pak.bPass2 - lda #8 - sta Pak.PutBit+1 Initialize properly for + lda #$80 + sta Pak.Mask Initialize properly for stz Pak.Byte first "PutBit" Call + stz Pak.StoreCnt + jsr Pak.Run bcs .9 ldy #S.PAKHDR-1 -.1 lda Pak.Hdr,y +.2 lda Pak.Hdr,y sta (ZPHdrPtr),y dey - bpl .1 + bpl .2 ldy #S.PAKSTAT-1 -.2 lda Pak.Stat,y +.3 lda Pak.Stat,y sta (ZPStatPtr),y dey - bpl .2 + bpl .3 clc rts @@ -155,9 +157,6 @@ Pak.InitPass >LDYA Pak.SrcPtr >STYA ZPSrcPtr >STYA Pak.WPtr - >LDYA Pak.DstPtr - >STYA ZPDstPtr - lda Pak.Hdr+S.PAKHDR.LEN eor #$ff sta Pak.SrcCnt @@ -237,7 +236,13 @@ Pak.Run lda #$ff bra Pak.Run -.8 clc +.8 lda Pak.RepCnt do we have a pending REP ? + beq .80 + + ora #PAK.B.REPn yes, add it + jmp Pak.PutA.1 + +.80 clc .9 rts *-------------------------------------- Pak.SrcForward pha Len @@ -337,43 +342,8 @@ Pak.ScanBL stx Pak.WStrLen rts *-------------------------------------- Pak.BuildShortTable - ldx #0 - -.1 stz Pak.CntL,x - stz Pak.CntH,x - inx - bne .1 - - lda Pak.Stat+S.PAKSTAT.PASS1 - eor #$ff - sta Pak.Cnt - lda Pak.Stat+S.PAKSTAT.PASS1+1 - eor #$ff - sta Pak.Cnt+1 - - >LDYA Pak.SrcPtr - >STYA .3+1 - ldy #0 -.2 inc Pak.Cnt - bne .3 - inc Pak.Cnt+1 - beq .5 - -.3 ldx $FFFF,y SELF MODIFIED - - inc Pak.CntL,x - bne .4 - inc Pak.CntH,x -.4 iny - bne .2 - inc .3+2 - bra .2 - -* ...Search for Top 24 -.5 ldy #0 - .6 stz Pak.Cnt Init best score to 0 stz Pak.Cnt+1 @@ -383,7 +353,7 @@ Pak.BuildShortTable cmp Pak.CntL,x is it better at X lda Pak.Cnt+1 sbc Pak.CntH,x - bcc .8 not better or equal... + bcs .8 not better or equal... stx Pak.Byte save new score index... @@ -450,12 +420,21 @@ Pak.PutA bit Pak.RepCnt .8 clc .9 rts -Pak.PutA.1 bit Pak.StoreMode +Pak.PutA.1 bit Pak.bPass2 bmi .10 - ldx #S.PAKSTAT.STORE - jsr Pak.UpdateStats - bra Pak.PutByte + 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 #7 @@ -491,8 +470,15 @@ Pak.PutA.1 bit Pak.StoreMode ldx #S.PAKSTAT.S4 bra .8 -.7 ldy #8 - ldx #S.PAKSTAT.STORE +.7 ldx Pak.StoreCnt + sta Pak.StoreBuf,x + inx + cpx #STOREMAX + beq Pak.Flush + stx Pak.StoreCnt + clc + rts + .8 jsr Pak.UpdateStats *-------------------------------------- Pak.PutYBits asl @@ -502,37 +488,56 @@ Pak.PutYBits asl bne Pak.PutYBits .9 rts *-------------------------------------- +Pak.Flush ldx Pak.StoreCnt + beq .8 + + lda #PAK.B.STOREn + ldy #4 + jsr Pak.PutYBits + bcs .9 + + ldx #0 + +.1 lda Pak.StoreBuf,x + ldy #4 + jsr Pak.PutYBits + bcs .9 + inx + dec Pak.StoreCnt + bne .1 + + ldx #S.PAKSTAT.STORE + jsr Pak.UpdateStats + +.8 clc +.9 rts +*-------------------------------------- * Pak.PutBit (bit in C) *-------------------------------------- -Pak.PutBit ldx #$ff SELF MODIFIED +Pak.PutBit pha - pha - bne .1 + bcc .1 + lda Pak.Mask + tsb Pak.Byte + clc - lda Pak.Byte - php +.1 lsr Pak.Mask + bne .8 jsr Pak.PutByte bcs .9 - plp stz Pak.Byte - ldx #8 + lda #$80 -.1 dex - stx Pak.PutBit+1 - bcc .8 Nothing to "light up" - - lda Pak.BitMask,x - tsb Pak.Byte - clc + sta Pak.Mask .8 pla +* clc rts -.9 plp - pla - sec +.9 pla +* sec rts *-------------------------------------- Pak.PutByte inc Pak.DstCnt @@ -541,6 +546,7 @@ Pak.PutByte inc Pak.DstCnt beq .9 .1 sta (ZPDstPtr) + inc ZPDstPtr bne .2 inc ZPDstPtr+1 @@ -720,17 +726,20 @@ UnPak.PutByte inc UnZPDstPtr CS.END Pak.SrcPtr .BS 2 Pak.SrcCnt .BS 2 -Pak.DstPtr .BS 2 Pak.DstCnt .BS 2 Pak.RepCnt .BS 1 Pak.LastByte .BS 1 +Pak.StoreCnt .BS 1 +Pak.StoreBuf .BS STOREMAX + +Pak.Mask .BS 1 Pak.Byte .BS 1 Pak.Cnt .BS 2 -Pak.StoreMode .BS 1 +Pak.bPass2 .BS 1 Pak.MaxReadAhead .BS 1 Pak.BestBLLen .BS 1 @@ -739,13 +748,11 @@ Pak.WPtr .BS 2 Pak.WLimit .BS 2 Pak.WStrLen .BS 1 *-------------------------------------- -Pak.StoreBuf .BS 16 Pak.CntL .BS 256 Pak.CntH .BS 256 Pak.Hdr .BS S.PAKHDR Pak.Stat .BS S.PAKSTAT *-------------------------------------- -Pak.BitMask .HS 0102040810204080 UnPak.BitMask .HS 8040201008040201 MAN SAVE /A2OSX.SRC/LIB/LIBPAK.S diff --git a/TEST.S.txt b/TEST.S.txt index 597cbf57..65a9db7f 100644 --- a/TEST.S.txt +++ b/TEST.S.txt @@ -10,6 +10,17 @@ AUTO 4,1 .INB /A2OSX.BUILD/INC/A2OSX.I .INB /A2OSX.BUILD/INC/LIBPAK.I *-------------------------------------- +ZPPakHdrPtr .EQ ZPBIN +ZPPakDataPtr .EQ ZPBIN+2 +ZPPakSrcPtr .EQ ZPBIN+4 + +*-------------------------------------- +UNPAK.Mask .EQ ZPBIN+8 +UNPAK.LastByte .EQ ZPBIN+9 +UNPAK.Cnt .EQ ZPBIN+10 +UNPAK.Ofs .EQ ZPBIN+12 +UNPAK.BLOfs .EQ ZPBIN+14 +*-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld @@ -20,7 +31,7 @@ CS.START cld .DA CS.END-CS.START CS .DA DS.END-DS.START DS .DA #64 SS - .DA #0 ZP + .DA #16 ZP .DA 0 *-------------------------------------- * Relocation Table @@ -44,6 +55,8 @@ L.MSG3 .DA MSG3 L.MSG4 .DA MSG4 L.MSG5 .DA MSG5 L.MSG6 .DA MSG6 +L.MSG.UnpakErr .DA MSG.UnpakErr +L.MSG.DEBUG.S3 .DA MSG.DEBUG.S3 .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBPAK @@ -80,7 +93,7 @@ CS.RUN.Pak >PUSHWI 0 Aux type >LDYA.G PAK.FileSize >SYSCALL GetMem.YA bcs .9 - + >STYA ZPPakSrcPtr txa >STA.G PAK.hOutBuf @@ -92,6 +105,7 @@ CS.RUN.Pak >PUSHWI 0 Aux type >LDA.G PAK.hOutBuf >SYSCALL GetMemPtr.A + >STYA ZPPakHdrPtr >PUSHYA >PUSHEA.G PAK.Stat @@ -110,9 +124,202 @@ CS.RUN.Pak >PUSHWI 0 Aux type >LDYA L.MSG6 >SYSCALL PrintF.YA +*-------------------------------------- +CS.RUN.Unpak lda ZPPakHdrPtr + clc + adc #S.PAKSTAT + sta ZPPakDataPtr + lda ZPPakHdrPtr+1 + adc /S.PAKSTAT + sta ZPPakDataPtr+1 + + lda (ZPPakHdrPtr) + eor #$ff + sta UNPAK.Cnt + + ldy #1 + lda (ZPPakHdrPtr),y + eor #$ff + sta UNPAK.Cnt+1 + + lda #$80 + sta UNPAK.Mask + + >LDA.G PAK.hFileBuf + >SYSCALL GetMemPtr.A + >STYA ZPPakSrcPtr + + stz UNPAK.Ofs + stz UNPAK.Ofs+1 + +.1 inc UNPAK.Cnt + bne .2 + inc UNPAK.Cnt+1 + bne .2 + lda #0 sec + rts + +.2 lda #'>' + >SYSCALL PutChar.A + + jsr CS.RUN.UnpakGetBitInC + bcs .3 +*-------------------------------------- +* SHORT3 + ldx #3 + jsr CS.RUN.UnpakGetXBitInA + clc + adc #S.PAKHDR.SHORT3 + tay + lda (ZPPakHdrPtr),y + sta UNPAK.LastByte + jsr DEBUG.S3 + jsr CS.RUN.UnpakCmpA + bcs .9 + bra .1 + +.3 jsr CS.RUN.UnpakGetBitInC + bcs .4 +*-------------------------------------- +* SHORT4 + ldx #4 + jsr CS.RUN.UnpakGetXBitInA + clc + adc #S.PAKHDR.SHORT4 + tay + lda (ZPPakHdrPtr),y + sta UNPAK.LastByte + jsr CS.RUN.UnpakCmpA + bcs .9 + bra .1 + +.4 jsr CS.RUN.UnpakGetBitInC + bcs .5 +*-------------------------------------- +* REPn + ldx #4 + jsr CS.RUN.UnpakGetXBitInA + tay + tax + lda UNPAK.LastByte + +.41 jsr CS.RUN.UnpakCmpA + bcs .9 + dey + bne .41 + +.42 txa + clc + adc UNPAK.Cnt + sta UNPAK.Cnt + bcc .2 + inc UNPAK.Cnt+1 + bra .2 + +.5 jsr CS.RUN.UnpakGetBitInC + bcs .6 +*-------------------------------------- +* BACKLINK + ldx #4 + jsr CS.RUN.UnpakGetXBitInA + sta UNPAK.BLOfs+1 + jsr CS.RUN.UnpakGetByteInA + sta UNPAK.BLOfs + jsr CS.RUN.UnpakGetByteInA + tax + tay + +.51 + bra .42 +*-------------------------------------- +* STOREn +.6 ldx #4 + jsr CS.RUN.UnpakGetXBitInA + tay + tax + +.61 jsr CS.RUN.UnpakGetByteInA + dey + bne .61 + + sta UNPAK.LastByte + + bra .42 + +.9 >PUSHW UNPAK.Ofs + >LDYA L.MSG.UnpakErr + >SYSCALL PrintF.YA + + lda #0 + sec + rts +*-------------------------------------- +CS.RUN.UnpakGetByteInA + ldx #8 +*-------------------------------------- +CS.RUN.UnpakGetXBitInA + lda #0 + +.1 jsr CS.RUN.UnpakGetBitInC + rol + dex + bne .1 + + rts +*-------------------------------------- +CS.RUN.UnpakGetBitInC + pha + clc + lda (ZPPakDataPtr) + and UNPAK.Mask + beq .1 + sec + +.1 php + + lsr UNPAK.Mask + bne .8 + + lda #$80 + sta UNPAK.Mask + + inc ZPPakDataPtr + bne .8 + inc ZPPakDataPtr+1 + +.8 plp + pla + rts +*-------------------------------------- +CS.RUN.UnpakCmpA + cmp (ZPPakSrcPtr) + bne .9 + inc ZPPakSrcPtr + bne .1 + inc ZPPakSrcPtr+1 + +.1 inc UNPAK.Ofs + bne .8 + inc UNPAK.Ofs+1 + +.8 clc + rts + +.9 sec + rts +*-------------------------------------- +DEBUG.S3 pha + phx + phy + >PUSHA + >LDYA L.MSG.DEBUG.S3 + >SYSCALL PrintF.YA + ply + plx + pla rts *-------------------------------------- CS.RUN.Math >PUSHEA.G ENDPTR @@ -221,6 +428,8 @@ MSG6 .AS "Src Length : %D\r\n" .AS "S3 Count : %D\r\n" .AS "S4 Count : %D\r\n" .AZ "STO Count : %D\r\n" +MSG.UnpakErr .AZ "UnPak Error at Offset : %H\r\n" +MSG.DEBUG.S3 .AZ "S3:%h\r\n" *-------------------------------------- .DUMMY .OR 0