From 353f376bb934e2eb5bdf61b9e19079d77b8d85ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 10 Oct 2019 17:52:45 +0200 Subject: [PATCH] Kernel 0.93+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/PAK.S.txt | 1 + INC/LIBPAK.I.txt | 8 ++- INC/PAK.I.txt | 4 +- LIB/LIBPAK.S.txt | 140 ++++++++++++++++++++++++++------------- SHARED/X.UNPAK.S.txt | 3 +- 6 files changed, 104 insertions(+), 52 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 4c7093ba981e22676236513b2145f7afa639c654..fbf371510938b99a0776b46beecf4ca4ab1eded3 100644 GIT binary patch delta 17142 zcmbVz30zcF`~SHYE?(y%+w3z84g&)yII=3@#;TyG1e!}`jEHF}B4DZc24gZBNp9tl zUM%EI%aTGZXfw?=Gb`H5tTdP019wH`_dNIB8Nhts|L60c&*%Fc<}A@ye=N0hwyJ7tpe zJ90oA;d_$4d&Bw>je_K)jJBoPM9E^jHJWIJuA#PxD^N~+3^91i;p4~UBvxUdH742? z9UVk>|l%! zD&P41|5`_Id-%S8l5(FyaNl2 zBY{D5*iOb6)Efjtgd=rvSz)PTucwVD%n+2GGCqX_1=GiNGNzsuNwPkKZraJ{m{7Vm zKUB-=t@La7sSlHj7@sm8i%4{00RxCWe8VnAS02$lHa5Nzqhq3pzE77J=$)}*zL;2| z?b{_HHCr5tn0UfPlDZ&- zR(p;L_w=KiU-9_Vna(z)dptbJ?;D;h3ky-oTI}i9{8+6=wPSs7)U6G@Jw54tBYbW( znLS^O@%u6a5?U}}T+XQQB;V#Y?(@t|44+<5>aYzW+@DMh(H~=KhGnOx*hWetWlJwD z%bUHVkeH6s)_9XKKsdqFxH6oC4936cs47nbb4rX36;5|XpMmIrvrNt08FpD%%G`&E z>6|R+d}qoFDClqc4G79@g$m?M$jhAQn34m9r!JhCQ&vJ$ZSH!_N+~HAF?((yQC)Ekl)&lo$tsubJl0Ewd7{gDkrIMsGU* zX^Vv><#P`(Jl)|Krll2*VV<=0=8y-O7V2x~YMD>y`Q;(u^gBCeiF_(_jVXT{Ykn%U zabR7%c|~YrbX@{|^{E?xUzWO#{X5RIv~M&&Ma|Q>KqDj^R@ZaKA{S%LroGNVzqw^m(}w9>a8OG`D_8%#nY^#duVZ!`srUG;BfOP6;CDSS|9y{$ z=5y1zWF|f-OqaiHL}p$2jzje)A?>WheDlVz#w_!J@XReIb+eNzk8k;FHmN)T0j;6t z@50Sj!YOltHER!qHTJ|n4gz)gknK!(i(o!LkM6f9)2@VXIj&o9sPg#!Ehpd$bBoC! zQLB)-jjTO1ODxX(M|gbz6x(Q6e!TKTUEq#Gy4luOs@5JdU!mt`aC#=5_9*0Hn29uJ zwZ*1|_||Cig}Y_YCknYGN|HCmYIQ_@ z9jU!(t!=j^7TvPelikWNlQO*3TzkvfaMSvmGOVH9dRrOZ==)5E72>LI0*6<(TTiw8 z5OvEM9njEWt(%+b>%iu8V(qZ@**(*-1%BSX6a~C`VoX>K$cR zi^m;hxF}JqpDus9CgK-OM5}IP%XKm20vooS4Xg18+v~T+n!Pq;3ezk6AN!pR~R@3u=S~G^iuY$DuY28u2@@jx=b+zXJ9j)I_vg+*VP|gw>Mr zuv!+BGl~g|_G%zu*~de4`3-DXYwx6jNRXzIzS-5z0eJpSl;jty&R6|+p)%eQ(e z_E%hAqA-6E(&(|W<$QkT8m|T>%$tObWy033h z+t&MeCvW&o&@jGetWP)nF1*T(RaTIi(y}EESO;vmg~e$_Wkl`h49d2HZG`2HaLWi7 zvnM-a#w{$fVGQQrmP4ezlGM=X>w-E-=_EDNXP1dGr{~y9OJj+!0)mR?I&3k7TM3Ez zr%280qD6$SlD@g8AuxCq9rA0OIlNj5Q$9m#3W^swLZoFG)=VO-1~Em2C?;?%ed4%a z3|r?8;nsr;^|P3{KrB12qyTCc3BJs8bkA`?U%mkoP-2UrkCc{3Neb*mso6x>2vTr; ziX{QhlNwiS&cZT`{I?tli&rg3&}<^G*en+Frxrs0WM>x^5#a?$RbqG81`zH=OjSp0 zvE9naEiWu4-kV(|MHA(Jx)lZ8PlT7;Whu9I79)?0^5xF{mxC1Bh;0BZTWlx%tI%C@ z3yA+~q{cp@0M<2VKQ3zi+cB5jF{RuUA~awr1rFOlqI_NIFIQ^lE$$7dzM_%X21;^w zNOF}sCAp|6QqL0QE=h8iAmL3}bPQ3yb=Ob~#jy~YAi=!Zq9!y$LAtkzEs;JluUPC) z)T$A47naT<+&ko1qIj3c>ukvTbm2+CQog%em!SeC65#`Pr*V5gr2pRTZ6X05LIO}5 zQOOq;f%Yi(bx#5nQ+@=AU;y2TmJ|MC$z4kSgosTnuv5)n!eHi8I{AzcQvMl~rQVOD zB;|5X7U6(2bRp4%`vMaA9Ymc&wVaZJ^F{blst>4}-`B2+NUExDfvCa-4qJRBigQ3u zJJRiCcEWuFg0$bFQWZdFMNG*lm&UhG)M6rhCkq5O?gtdOnE3yQvuCj*MBXtF;U_sw z3{m_-Z1LjY3Wwz41`*|9985{AW#!WSCdm-Hq_EhQJ-_H-PFHGxyDaUk+e89 z8}+!?S*fc-LTAn->T{i{H$63b#QcRtGl=FqU3)lAU48+|Q2&j6jzc4=wj_dYgSP0Or_0cn_uFX>=^36on6W#!rg`h z0e5idB^{FLD0IjJ8b>&SPB6oWrcZ7IRLsIM^yf2zd8P+M`*||9xUNdbfoF`iG#)mQ zuAH(G@(_heIN)w2>C0q|q~Ojql9tZ~d+6@cra1giYFH zsQWY6duj9M!5*YAH9K`SY-@yQYz3^ni9{PCHAw8@Z1?=;u?|PQW&uvxo>u?pkt#A-Q1)y>K4Z=V9(bh2i)oSTC@k$&f;q z(ybCB>?L4_puOIyAPF@!HkNQ{%=1J@mop|3E(3lmMldjKuqMJtxh7yEGqE0EHnZe< zK;}_QO*zqzhSaeeTm~KVPb!Hh#^B@;#fI%XymdoNv{W)n)#pwA)$%U#4-&FrvB}MdI*ee*7!Wa=gTT!msMc8r~;`AXV0Ah z#}ec1(_!B$6u5^Vyby;o`LDQ;@|m6LD%lF|VW3L=IiwXA# zL<@6J6lfES=3Mx#o`-|t>Sd6V9kqxki=;}6%2-sE2|>bq=vW-xI1;cxEZEdVv|lMo zl_nqBY-<^Prd0?HTi7ialtlR`wDzgE_kb&|GN z*3-I+LNN0zHD3}m{goTU>PxkkynQv5s*fEGJ~Vg}*w&38OJ75SZwNZ(dCaTj|BXSl zjJR*mFq_1{{1>py7om#iHq=RFbDJU1QqOdixYFgOcRG#2f1qIboarUVq1@8hZ?aF* zdns~Uu2sap-H)-)@LEYyqXtV4GgXM5J zTi#9BCRqL8AdqW@{Mxta>z4&h;5+cQ=3SVX(O|H;ZbyjbJ$eKLmcI`v)Vn*oKw6?e zBl!=Qn&Me@qT2&XBF_xBvBUVi5I@&Wygzi64eGHE7A4(BcxZ)=8IFWI3*kP-%6tNq ziP_-Z`WYo{@cvZN23ssN;4=_1c)v8_D*B%*LMZb&J#t0RG6$ruFGQ`f^9N-G_)=DY zub=?^*I+lIH{4^~TioNW`nKD^LKP>HfbXO}kOv#OT>m}oxGLzz{@~8X{Rjo%8g*^9Wh*XRf{bX~27ssBEfy^h zcNOv*uc3q2WscCn*9C#OF3u3I8<0YOQ?e56Vo<~_2;y(c`fx|mhiJlfubUIrPqbNF zUzUZ%YQgz9-AGu=@UA1TUkvV%JXqIa!h5pP`p-cSRyKy{d$7_H)n(e^1q{*gEIoQf z(3C4!cU!xjedq+tC=G7caDzANUN&6eaLNo7QTAeGU)XiSLj)hF2+nahV(?{Qy#3gk zySBvTrL!F1AVZ`gfCXQqc-CT~Q9?5LB%{*^@+uZ4FEm(R_pBSYqao| zaGgnLe(<(1g?-7}vxhymq_wrJjV^d?=(6Yb4jtLN-_tvW8I8_``!XV>!_`rF85yH(8DrCl4>%*ka-6)klker^eYWzx z5gtSrEoy3Tj9XK=SXAveY3iWI91p+45~$EFSm7iW^;$L1othtnW@$08B+;quuB~jKf zqJejtwG}Q`-z5Xlnci92+EhW!k!R6192=~a=g!HK;Q;RIb zaA`xUNzYuShE|gy@QR#n{QP1^Y<$;r5m#wWt0|nhMi;f3MzDF;>E2e8)-z#7l!NBq z7UDfEB>n~sXfwsZVbF*+(@>_JE^jlXc-<0v!CCLSwcfAH!%;t!GU-M=&7QOJIP24E zLx#~nO&P{xD>}6PfB=B9xkIaBUJyik{}3plA%8=YN?&e=KZWV?WClxFAkAjg47^*+ zoiNsxHg|q$p?KBlUkDm1UCYjr?ml6=*Ey>SFd-3O!{?e-uM? z{1Mf8T}=$I6%>6?cW&41F<$~(phb3~hMl2oOT>o&HoOt$%j9j$La75n9;JtmM_Q5| zlPd!@Ei`S!a`5~KhucEG#n4Xhil(O&gHZ)@0{cVP!8Pm>NzhX2xE5$sihIEBCXg}) zMepX`Z>x@Sew{Baz!BAtXE$6EwD(VN&tL9-P)cDUDy6hPo&>)YlhK92`w_#Ge@-6s zBEXe;05eXNwKNkx$+E+C43P$3wW|IUou%jF+@pc zRonu|rzm0JQ~*5}zEn!7D`V+!lR>Q(7P?!-KPLHZ`bBhHjIVZd&n0Z%jkr}*EOlF> ze@P}p`-IzsKuw{dX_e@C2o)#{H&k%d)wO$H&VQm8>)fYu?o&JWX`K7C&V9P3efp-P zUV?>rc365w>V%ObFa#eKsDs5rdDy+UM8TOIGy%@+;=whu!;=o0Uvs}!%STA-6W<4R zT40&DzL3liNrNUu=`36n=IMt!ZgI0~lQp!zq@jjr=D8yg+QG^goDJ!)>4Nj%ypgtX zqe(z4YPkF;L0qr#JPzLuaBv<+6bZOgLp|u)#}W)iRbqDm8M(QH8wBZ8N%R}PFlF!% zxspSrO7g?xiVT-3qDiLycl2sDg`tk&Mh%ej!rB^2Wt;wQC|BO^KqiEwDy^0x4cTA2_`e(~!j*-d?9ZRE+ zMTV&0jLo%@MlT<~xVVt0bEsocg3?2MA48e>naYuQki^v&vSR^RZlbA#KV3$&42VGq$70GLoz$ zq_26fnTFPcejd>yVspfBB=ez6oco{&^5>Ci_44} zTI6XkFbn8Yo`#ITsF23z>&P~~{s^XCz5HC|`Kmf@?I8@KXFLr_%tmVE3}L}V;qb!Y zm2mUOuW8^lQ=$)EtEo*vyp53B0f8OL}c;o|Oeo{Tno5-SpWMp`#pB$m}r;a@-+U6HG8|?MCz#e1PC;OP1 zMi_Zb>@S`~`~;c<%|Yg0LjP?gV5xQjS52|QTvV^5uW zp?}1wBQyM3u3tEdm+|MUt%>Fbf*Td)RhGt>?boaoe&#;GP@6(aqh&kfzGK~}D@?9T zUc;VD*{GWb1)R06`4aL)?}sM{`8$)%*DQ_KPbRm#aWbXiwe4rE4d<-OM^%n)=%BU- zjk@?d)`Pd<9mT5KR(!Z3*B$o^9o1K@wb!g$G80cES7vX?I+0R2rg4lYfG&B^*t;OL z<-}f(HHL%NtZUS(AYpRiiOlNj)-5R~vZ`-bYp+^QX12U?GOOYx+f{3RJ>SrZuPPLc z9tSFJK6A-h&%;}Xi|_`cj#o5#udKM)&}Nk*FI!h#u{K;HA;~nVEz-iI&~a^%AxtVA zKFz2Fr%-&5q)n#}O*3j9$Y62VUSmtmbHH)Z2q_Z1LREz4@u6? z|MTPp_}qaHKKl8ban3Yuof)X=GE0eDBYxJ$_#D0aZP5wW+ahm2U1DP5qD6~t-n=Q6wV&DQX$tKui0*h}s1LLz5ES|jKiYBU;#hqf#D_zZCX<^|UBEX@kxSl2wC7hMw5oXAk>?~V` zEo0mW;{6)LqN9P^rR~xojsnh4;c5z2E5jSKINqdBYV0CaT+V#qq!c~=kPKVi>EhWB$K{9bVT8_YPa+)d;o5x z{KRPw$nf3kDk{qXx09L=;b#{o4yBY5)jkMy`7XtHA7Fry{s^n^v0MeXq~Sh+fIgqn z*~XxV!Jo;+?U###BZtqixC32^OCXvrx)%pq)7bc}$4%aIi0a_oWzHo0m-6oWE6Gv^ ze$D2Hw-a;MNtMQi%QxKW7R-Ow;|%T_s6(%BC3iX`{PA$2{*I;oxAe;L?;%F`0b|7b zT+NSC!#XA6^C|8pNM-n$wZ-FYhU;m8c3oq}T6qUA)2{3MaZh=+}RmwB<+eWD&;fD1L+3Kc%e*e@yCB@8ci^ zja59HyPUulopiP6U(lkzx^^5q*qvoBAwH+%6lu1!T%taGuOw$&Nru|8M-cVdd!*sd z$pdg+8UV!weAp|lB7aLE5v{cTm?_+&jjh>w(G=Kezh6$dUB+$=2=dw$<1>*NSaH@% z_nrj(){0OuenMMQ8ycV_++6FIdplb^|}{?d_mprmX{l%>Qf|R71_ARd|AHqx1MLpPWfkr-`56 zI~(+mzwTMdWUgWzG*EP!1T*+T*YR`X#yu0C;wq9@-MeC9U+m7MOPAi3KT-y0cC>s{ zIGtvOkzUF3I8924t&A@q6%__ zWxB&W481*Q?PgycYxbZ=ZpG=C;O3(&*PChf+m~^afrHSLFn?^kKM)zW4CB z@2NYE$chjD*X-PTRMYbiJyC?eUGcKx#zSb`tmLDbNjY?PKOSK|I9G^ zj?J^BWsgf64ZDuK@fl+(j(h43=&JwA$80}(^cZ~3cCF-RjI*k@v&!tO3U*dmoK+#t zs!(T@)mathtO|ElML4VaIIH?Pt0J9MQO>G<&MKR;s=u=;+F2FjtcrD3#W}0uomC0W zssYZbfzGN#XVoBQRg$x6a8uO~CZJq?55s+<}TmjC`cD3~^Dg*lGLW zWih&5&o8>)UV>M%y=<~ef;$WE{&@ClcSNJ36)pMUe2l!7#mZ}09PDMY#->uu zjvmJNcqvek;C505NFn-xtW-|+>{2j@b$5EQ->yQNuU1MfTbH!jP-f-o`28S!go& zAJRWQjVGK3F6y4(RCQimz;jO`aF7li1#l$1=zUi_lswl1k{aMf|C@)RblyGX_*kM= zi1Bt#fOw5JIs-0YuoV-}|Abz0>NukE>Egi6lx{`DYkRdHcD5_0bl5-ye>r13Q3r^{ zSkx-;bKU8rQwr(29;=%`)EX%r7%O;bf$lIKrVv3dOM=@jxT_~xBTIuzjOyS(_@OYl z9g`q==z2?iZ8Wpgo*$)`uH!{t2^^&ubgP3ypex#gd$U%Su8lXUSKN7SC}0?1I3O92 z0!Rg<0nz~(fDwR^fJ{IZU=(09AR90SFcvTlkOR06kPFBIj0a2r+z*%tm;{&%m;!hJ zFct71U>e{dKt8|@m<}ia%m5SuW&$1t%mT~?JOY>lm zqkzW%ivWuOO8}1pmID3-cmhxkr~o(s%K%RTmIEpQPQVJlO2AWqD!|i#Re);1Gl12A zHGs8%b%6DNX93RvHUKDKBcKNGJmBAeTEHg23xF2^b%4!)dcc1GF9EgywgO%TyaLz; zcopy(U^}1z@H*fPKqFuWU?*S~;7!0=fF?jQ;BCM=fOi4!0p17f27Cb61K11r5U>yM z5#VFMCxA}@p8@s*J_j5Cd;vHJ_!96H;A=n&;2XfVfbRg`1AYMf2>1!`GvF7%A;7PI z!+_razXSdN9042!{0TS)I1V@gI0^U*a0+l5a0YM|a1L-DZ~^c)pcT*txCpoexD2=g zxC*!ixDL1hxCv+n+ydMN+yQhvedjr5H2{f4@<8%L;*h+MdLZ#gJ&_bh0+KgUFC-r% zUnD;yf205;C6WqBjif=+BI%IyNCqS$QXrBEDF~@Ik{Kx&$$}Ju6pCa;3PTD;kdlxFBMm_siZl#qI8riF3Q{Uk z8d5q^2GR(mkw}?HSxBRhMk8e-jX@fVG!7{T={}@fq&%eYNE49mN1BK<328FY6r=}` zrXoFvG!5w?q z8tECN)ktfQ)*`J#T95QB(sM`~kSNkdq#C5>k^YTTi?j*p1*8{|>X0@g)g%1}=_RBs zNL!I!MtTKl8`7&tuOV$mYCw7&=?$btq#Z~*k#-@yiS!my6H+tM+eq&qy^Hi7()&oe zkv>4$gR~dvL!^C3A0d5=^a;|ZNS`6?NBSJ;0MZvo2a&!+`U>f5q!y%akiJFw4(WTO zACP`T`U&Z0q+gH@A^nPU80j~p-;w@6I)Zc*=})9%NXL;*Ae}_|3+WWnX{0kqXOYe! xokzNW^fyu~QXA4mq)SMbk**+JMY@J`9q9(rO{8|DTS&K&?l616`Z4UR{{wkI0!;t_ delta 30810 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 p9_&RP^05#5QGh}e;Q$We5QDEBUG jsr CS.RUN.WriteArcData bcc .1 diff --git a/INC/LIBPAK.I.txt b/INC/LIBPAK.I.txt index 88094f6c..0bbecacf 100644 --- a/INC/LIBPAK.I.txt +++ b/INC/LIBPAK.I.txt @@ -2,11 +2,13 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -REP.MAX .EQ 8 +BYTE8.MAX .EQ 1+15 +REP.MAX .EQ 1+7 BL.MIN .EQ 3 -BL.MAX .EQ 252 +BL.MAX .EQ 3+63 *-------------------------------------- -PAK.B.BYTE8 .EQ %0 +PAK.B.BYTE8 .EQ %0.0000 +PAK.B.BYTE8.W .EQ 5 PAK.B.TOP8 .EQ %10.000 PAK.B.TOP8.W .EQ 5 PAK.B.TOP16 .EQ %110.000 diff --git a/INC/PAK.I.txt b/INC/PAK.I.txt index a13151b9..050aa115 100644 --- a/INC/PAK.I.txt +++ b/INC/PAK.I.txt @@ -2,7 +2,7 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -CHNK.SIZE .EQ 4096 +CHNK.SIZE .EQ 2048 *-------------------------------------- CHNK.T .EQ 0 CHNK.T.DIR .EQ 1 @@ -24,3 +24,5 @@ CHNK.DATA.PAK.TOPLEN .EQ 3 *-------------------------------------- MAN SAVE INC/PAK.I +LOAD USR/SRC/BIN/PAK.S +ASM diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index 186e84f5..a5ca03a1 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -124,11 +124,12 @@ Pak.Run >LDYA Pak.SrcPtr eor #$ff sta Pak.SrcCnt+1 sta Pak.DstCnt+1 - - sec - ror Pak.RepCnt + + stz Pak.RepCnt stz Pak.LastByte + stz Pak.Out.ByteCnt + ldx #S.PAKSTAT.PASS1 bit Pak.bPass2 bpl .1 @@ -147,23 +148,24 @@ Pak.Run.1 inc Pak.SrcCnt inc Pak.SrcCnt+1 beq .8 0 byte left... -.1 jsr Pak.ScanRep - bcs .10 +.1 jsr Pak.ScanBL + bcs .2 + + jsr Pak.PutBL + bcs .9 + + ldy Pak.BestBLLen + bra .6 + +.2 jsr Pak.ScanRep + bcs .20 jsr Pak.PutRep bcs .9 ldy Pak.RepCnt - bra .6 - -.10 jsr Pak.ScanBL - bcs .20 + stz Pak.RepCnt -.2 jsr Pak.PutBL - bcs .9 - - ldy Pak.BestBLLen - .6 tya clc adc ZPSrcPtr @@ -178,8 +180,9 @@ Pak.Run.1 inc Pak.SrcCnt bcc .1 inc Pak.SrcCnt+1 bmi .1 + +.8 jmp Pak.Out.Flush -.8 clc .9 rts .20 lda (ZPSrcPtr) Not found... @@ -412,15 +415,18 @@ Pak.PutRep ldx #S.PAKSTAT.REPN clc rts -Pak.PutRep.2 lda Pak.RepCnt +Pak.PutRep.2 jsr Pak.Out.Flush + bcs .9 + + lda Pak.RepCnt dec remap 1-8 to 0-7 range ldy #PAK.B.REPn.W ora #PAK.B.REPn - jsr Pak.Out.PutYBits + jmp Pak.Out.PutYBits - rts +.9 rts *-------------------------------------- Pak.PutBL ldx #S.PAKSTAT.BL jsr Pak.UpdateStats @@ -454,9 +460,13 @@ Pak.PutBL ldx #S.PAKSTAT.BL clc rts -.20 ldy #PAK.B.BL.W +.20 jsr Pak.Out.Flush + bcs .9 + + ldy #PAK.B.BL.W lda #PAK.B.BL jsr Pak.Out.PutYBits + bcs .9 ldy Pak.BL.OfsBitsH beq .2 @@ -475,14 +485,14 @@ Pak.PutBL ldx #S.PAKSTAT.BL dec dec dec - jsr Pak.Out.PutYBits + jmp Pak.Out.PutYBits .9 rts *-------------------------------------- Pak.PutByte8 sta Pak.LastByte bit Pak.bPass2 - bmi Pak.PutByte.2 + bmi Pak.PutByte8.2 .5 tax inc Pak.CntL,x @@ -499,7 +509,7 @@ Pak.PutByte8 sta Pak.LastByte clc rts -Pak.PutByte.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT +Pak.PutByte8.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT .1 cmp Pak.Shnk+S.PAKSHNK.TOPBYTES-1,y beq .3 @@ -509,10 +519,20 @@ Pak.PutByte.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT ldx #S.PAKSTAT.BYTE8 jsr Pak.UpdateStats - clc - jmp Pak.Out.PutCA + inc Pak.Out.ByteCnt + ldy Pak.Out.ByteCnt + sta Pak.Out.ByteBuf,y + cpy #BYTE8.MAX + bcc .9 -.3 dey Range 0-23 + jmp Pak.Out.Flush + +.3 phy + jsr Pak.Out.Flush + ply + bcs .9 + + dey Range 0-23 tya lsr @@ -529,6 +549,8 @@ Pak.PutByte.2 ldy Pak.Shnk+S.PAKSHNK.TOPCNT pla jsr Pak.UpdateStats jmp Pak.Out.PutYBits + +.9 rts *-------------------------------------- Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.BLBITS jsr Pak.Out.PutByte @@ -552,6 +574,8 @@ Pak.Out.Init lda Pak.Shnk+S.PAKSHNK.BLBITS sta Pak.Out.Mask stz Pak.Out.Byte + stz Pak.Out.ByteCnt + clc .9 rts *-------------------------------------- @@ -562,25 +586,53 @@ Pak.Out.Close bit Pak.Out.Mask .8 clc rts *-------------------------------------- -Pak.Out.PutCA jsr Pak.Out.PutBitC - bcs Pak.Out.Put.rts - +Pak.Out.Flush lda Pak.Out.ByteCnt + beq .8 + + dec + ora #PAK.B.BYTE8 + + ldy #PAK.B.BYTE8.W + jsr Pak.Out.PutYBits + bcs .9 + + ldx #0 + +.1 inx + lda Pak.Out.ByteBuf,x + ldy #8 - -.1 asl - jsr Pak.Out.PutBitC - bcs Pak.Out.Put.rts - dey + jsr Pak.Out.PutYBits + bcs .9 + + cpx Pak.Out.ByteCnt bne .1 - -Pak.Out.Put.rts rts + + stz Pak.Out.ByteCnt + +.8 clc +.9 rts *-------------------------------------- Pak.Out.PutYBits + phy + +.1 cpy #8 + beq .2 + + asl + iny + bra .1 + +.2 ply asl jsr Pak.Out.PutBitC bcs .9 + dey bne Pak.Out.PutYBits + +* clc + .9 rts *-------------------------------------- Pak.Out.PutBitC pha @@ -590,21 +642,14 @@ Pak.Out.PutBitC pha tsb Pak.Out.Byte .1 lsr Pak.Out.Mask - bne .8 + bcc .8 ror Pak.Out.Mask - - jsr Pak.Out.PutByte - bcs .9 - + lda Pak.Out.Byte + jsr Pak.Out.PutByte .8 pla -* clc - rts - -.9 pla -* sec rts *-------------------------------------- Pak.Out.PutByte inc Pak.DstCnt @@ -712,7 +757,7 @@ MSG.Stats .AS "\r\nPass 1 : %5D\r\n" .AS "Top 24 : %5D\r\n" .AS "Rep N : %5D, Longest : %d\r\n" .AZ "BLNK : %5D, Longest : %d (%d bits), Farest : %D (%d bits)\r\n" -MSG.Top24 .AZ "Top : %d, %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" +MSG.Top24 .AZ "Top : %5d, %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 #PAK.B.TOP8.W,#PAK.B.TOP16.W,#PAK.B.TOP24.W TOP.Stat .DA #S.PAKSTAT.TOP8,#S.PAKSTAT.TOP16,#S.PAKSTAT.TOP24 @@ -745,6 +790,9 @@ Pak.LastByte .BS 1 Pak.Out.Byte .BS 1 Pak.Out.Mask .BS 1 + +Pak.Out.ByteCnt .BS 1 +Pak.Out.ByteBuf .BS BYTE8.MAX *-------------------------------------- Pak.CntL .BS 256 Pak.CntH .BS 256 diff --git a/SHARED/X.UNPAK.S.txt b/SHARED/X.UNPAK.S.txt index ed78f062..01e32a61 100644 --- a/SHARED/X.UNPAK.S.txt +++ b/SHARED/X.UNPAK.S.txt @@ -25,8 +25,7 @@ X.Unpak lda (ZPInBufPtr) ULEN LO lda (ZPInBufPtr) CHNK.DATA.T beq X.Unpak.T.STORE - cmp #CHNK.DATA.T.PAK - beq X.Unpak.T.PAK + sec rts