_WGETBTS INLeGETBTS MACGETBTS PQN GETBTS RELPMLINK BIO2PMLINK BIT!݁PMLINK CQM(YPMLINK DQCPMLINK PQS$IPMLINK UQL \ROTLFT INLROTLFT MACROTLFT PQN(ROTLFT REL- begin {Modul GETBTS} InLine ( {0000} $21/$00/$00/$3A/NBITS /$4F/$3A/BITCNT /$B9/$30/$23/$47/$79/$90/ {0010} $32/NBITS /$3A/WB /$CD/*+40 /$E5/$CD/INBYTE /$3A/NBITS / {0020} $47/$3E/$08/$90/$32/BITCNT /$7D/$E1/$CD/*+21 /$32/WB /$C9/ {0030} $41/$90/$32/BITCNT /$3A/WB /$CD/*+6 /$32/WB /$C9/$CB/ {0040} $27/$CB/$15/$10/$FA/$C9) end; {GETBTS}  $41/$90/$32/BITCNT /$3A/WB /$CD/*+6 /$32/WB /$C9/$CB/ {0040} $27/$CB/$15/$10 .z80 external NBits,BitCnt,WB,InByte getbts: ld HL,0 ;Results here ld A,(NBits) ld C,A ; C := NBits ld A,(BitCnt) cp C jr NC,ok ;BitCnt>=NBits ld B,A ;B := BitCnt ld A,C ;A := NBits sub B ;A := NBits - BitCnt ld (NBits),A ld A,(WB) call shl ;WB shl BitCnt push HL ;intermediate result call InByte ;new Byte in L ld A,(NBits) ld B,A ;B := NBits ld A,8 ; SUB B ;A := 8 - NBits ld (BitCnt),A ld A,L ;New byte pop HL call shl ;WB shl NBits ld (WB),A ret ok: ld B,C ;B := NBits sub B ;A := BitCnt - NBits ld (BitCnt),A ld A,(WB) call shl ld (WB),A ret shl: sla A ;MSB in Carry rl L djnz shl ret end getbts ),A ld A,L ;New byte pop HL call shl ;WB shl NBits ld (WB),A ret ok: lvEGETBTS.PRNN o !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMm^~t:هOAKq#k~}kphΆ]U(j_rZkpXG|m}(}sS?K D$@#n>-45׫WX[":#nѲuLWD*Yh^|!#7>L3ܓ~iW֗uPW5 "_&uc _rրl#pM45ץsgt 5 "l7^sgt '|!X"#@#n>-45|u[",Yh^@yHv>R"S\$|!X"Mp}R\WChg?ڦڅY[` ׈Oq }إσ 1T7ր:Yh^:_bm nQ_:,| k@E "ܓFck@"DouR"S\$:_d=SBSssk@?F&:k58L"&ߗucWDQ6hr^93|!pU(@#n>-45U(sk@${,G|[hj4W~m d׈dLj[.%-.5 d=SBSssk@$F&:k58_ដ"4[O5PfGk@d?@=,5 "09Ioo-.5 r C_p kۼt{_˟VoƚeƚXZNElwVͣ>wT;|w"ԚOH&QoܨHvzU$+j5X]qvv65XFW~]րH@999thuL0uCRQ`YZ.ShUT`: r0) ~f"G*}piʊ2H)%Rm?S`K,N LɘBITCNTd%DXNBITS%t)Function InByte: byte; Begin If BytePtr>127 then Begin BlockRead (RelFile,Buffer,1); BytePtr :=0 End; InByte := Buffer[BytePtr]; BytePtr := Succ(BytePtr); End; Function GetBits (NBits: Bits): byte; Begin WB.High :=0; if BitCnt127 then Begin BlockRead (RelFile,Buffer,1); BytePtr :=0 End; InByte := Buffer[BytePtr]; BytePtr := Succ(BytePtr); End; Function GetBits (NBits: Bits): byte; begin {Modul GETBTS} InLine ( {0000} $21/$00/$00/$3A/NBITS /$4F/$3A/BITCNT /$B9/$30/$23/$47/$79/$90/ {0010} $32/NBITS /$3A/WB /$CD/*+40 /$E5/$CD/INBYTE /$3A/NBITS / {0020} $47/$3E/$08/$90/$32/BITCNT /$7D/$E1/$CD/*+21 /$32/WB /$C9/ {0030} $41/$90/$32/BITCNT /$3A/WB /$CD/*+6 /$32/WB /$C9/$CB/ {0040} $27/$CB/$15/$10/$FA/$C9) end; {GETBTS} Function GetByte: byte; Begin If BitCnt=0 then GetByte := InByte else GetByte := GetBits(8) End; Function GetWord: integer; Var WB: ByteRec; WW: integer absolute WB; Begin with WB do Begin Low := GetByte; High := GetByte End; GetWord := WW End; etvPMLINK.COM 2 !"#$%&'()*+,-./0123456H"6&4.789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\:GF<E*]^_`abcdefghijklmnopqrstuvwxyz{|}~>7 5/P?OI9'=#Uo%~]3hQC)d^Y BA _\- yxqJ;1+nSL|tm!}Nlgj@$ fZWTK{vsRwpkecDzub`M0(ria[V8,8_:kYǡMWa-G*ػ:kg?b=: xᢃgzt3Uul-̡5Sm$Z|ͲasTc T| ][|I->vM->VvpմWI|_oX}*Z؃OZovd䬌C\Y)xzaߐCԦ{yy֟)>߯-,whk˭//k2ˎݐʔvqrۦ*ٱ`݂Kݮ夬-(_zku(ƥ*ƞ0;[;5jZ1:xI,Qo9`tR=U!`eo[lPl,[&ԁ B t1AJ/WV[ִ׳T8)Kbaz62ua.j˸SksQ`V 3x0dV+ITwxJnmsFDv-|ֹ}V}ֹ;m+[ZR;ވپژ^/TdEkU7F6Fζ޾d8#ʕ(8uЉYeTQA!( Yܐ}JRa -=EB^x?kDG6*reNf)B2b*hfkCdv1˶ יBҢXjQ;[vIrVzqnvjdβg?j6wIZW[]rW)A{V7(+ sYiU+ۚV ?ɖ]J7Wu{KGvqҤs4裸!nU(KٴAU9VٯLHlUnQv%6Dw*dYwGWC˷dkm%U5V+GZ9#.^/Txpܡ>EVޢQޢYŕj[%Rv<;ZBXQZ$[]EK2#Uo*:ƾn9ώT aO <>YgG;G|Ei Ͷ/l}.yӺ=xvM}7m7Zպٖa;.*^A5VGHw*XQx#ȏa*Y(Xshʤk1QfXq6mʮ?7p;T{/%G_ztO8W֭c_pZk+[.wbSk\|5F3-Ej@25(-H)xvU} ]a)i9'_#kosk;?d⑇ [rɎ\\@HiZ-Ś/Fi۪m{H[ ^-3q:(j±bAű"/fNJUQpH;wXQ"(^H+8\dYZ{ZpwOr|?D従7^wODlKV.ye6K+|"b %dUI/=| 8qbɯm $R69ZOّ>vL|k6^ gsĮk3܂4m.mġLgrdxibáFA%c}_P@ h ,p jy7@%P r'\&ԁ ṫ1s-᲻5K9oIտnOV& R +-.c_vvA;DqmV;.(p{euP rv-ޓծ{!U2sC[v-ޓ}\@̇ X%·vY %{S#lh6OD }Q|jzaTqWy*U jgYzwz&B z,T V "ΟޱpPqtYDYv=yeP]f*ʲKR-L]c[iW Y(v4"r5wǮicZۡXLf>HݴXQxƧz}gGDud7l6=7%dx9ēnGkK>Pv=_>pX/r;fqmMCc~xkt/容*/HX بX9vi[y@誑䨁97q2~d݂;*ԉBl^}qX9l}wT6_\'VfZ x'@gA%%fĴy1qBV`D+[TWJE-S'-)%UlH5[-)̞ J@EHLҖF吵{=(WyMWVdQ<d&&e%Z{x;"%goiVyKG@̷՝;r|ԒT3AϷ3q<|iۆ72B|^ֆZڰ \V/.&b],f2q(/J,ʍ)RM5[9>e`iLWfje\B p6Ht{Q5_<*Srv_'8oc!.(wS|_/ ;٘qF\:Qx] qBS9{DI&uԀ;Wn Slү^9yY+7-9>U>WnLEؘva0\wxEZ2w7Y-)e#o7mz{6< f^O-f(pf#<_Ȯ܉B-0bgR Es8rq6(I5]4̺qDa}iY^8w/ *n r=cPwcW;B.Jxߗv`/r/A wRߚ*qS;p=ΝGs'^֨YVb&WndR͖)kohjXW d |tp5\75f0I6P:RP:y*b*y KU^W;qkՉuql^B8(Uq(.sT&P::QTs!0Cxwwk9\7ǚ2mX2qGA=-ß@4Mfȇ%6OYk&j@h,VQ,L A6ʱ˸\ /3qtnŒ#qKjbSe ' w9*sPSlLTy@ƉЂT@6 u ]=\pmHo < (o9Ai#:(*Fآ#oǦ:g:.=l!V9z5H5n;Qڋe> m^F؊5pu`oc #owTm&g:L=^Bݞu.$؆epya &GAPrtL'K?L2S#|g@Ǔ6mI1`QJ$UY?Yǀw$?{Əqd&UI~LYw'%:i ="N+Gg"/ltma_uhx̡,dʏZb/lDLb1K0q/6H1` (xe'7j!S~L1`([OڴL1`9b=Fm5dʏq R2ǀUdeSw'%:i ٥8i&:::غCk`_uhxe硫S.y"I[kI?MJ$Wڧ_s3`&׭U:~&理tR&wc"?%^~"?ߣ'V/%~ 6/̏q'1`P睻󨿀2G 6д9w'[;=~o (OnʼU71]2o ]K{1w~/'* x87 (^؈e)/%.d,;YuWXr&uIL'C,K~ %1vL]uCN>ݱ麛XDB})uI$rϻ|⅍Noa{YfbR뒘NβU_wU%/1`\t2:]3uSeT(zNFf٧wˬRl_Jp],{p硩d4$bY]"?eݔUg){ǘ~]23-:e{3 ?zT_8{T{ 8#'N\k{T{8#~N#U7T5ke2@W) = ( b[:}=ȑ en<o!~'^("ZA+tUWu L %>HqR)>X9v.JA81s;7Fnʬj@1sAcOڴvfE˷"( (s=:}!= q捻;M!=H!V]2C3y@ԋoh]$Pj#P2ĀFuM$PI60-{1$;g䗏2,.g䗟f %P$cT{ 8#| w5sjg?i;RuMUh>mˉG X̒AL7b:ϲLm:4,y9'M[l@C5CV1݈d0YuW LLb1KV1݈b bvvCSY9qN %^бF8S"\y2qU"H@8xƶ\92F:X2gs=rbM Yt#Y L2sj@$\bsE( |q~˷9n[Rf[wpFY1u%,l&ް( 6P1KzeL_QIq7  LeLX2sܢfs$瘋8PÀFE]u.dr ݔUzhU]U 6øq9nwSfBWp6qf6q@6m!BӔyBW1P8S3Q@"f2S%:i b ÀIz`jDMr,0`bof#Wp7 LX29P]usE(ÀFu廈M9 ]37C ГEK巴 =ZT{ 8#옕 X̒AL7b:b 7%1&7>ׯ 4ԌAL7b:e7{%|9".qps廈û{9n u]fstL{@h0W'dX9M\=ih WYۦ+3Pi)BŖ88]`Y\M3`? 5M 90.. K@ud[vԚPMLINK.DOCO  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNѰJ[D8(9h Ja,L)zXNHjs7%D/>l:R`+5Nϯl>% -mڦm}p% dEs=G`,L)4m/ӹ '(LQ`\O>$,q=(7 \)-˔q ?x2+a],4WkQ;6`Dx~\xe9.Oۦmvi\?Æ =*ϗ܇D cR @葨gxm.ez3D3TtC"Ee @4I-M^;TxL>$hcR *hv6G:WxL>$o 4ia@q`lH DӸ~wק;vi\?qhna~)Fт+:#0x 66I +cr'D8(bF*mf/F69=EBOD Ӹ~# aq\Y=Ni6{R”zYBhX-^<"h JQ<6m;L 1#Q3#dWe:!DsW6XVP\YrI ʀSH FQ|`x~ܵhGaDs۴0 ~\ HA?#dJ(\ ty6o/ק $ dCa eۦm)#`wj(4PD?3hNt)OS)pm2=ŇMca8CW\ {R”&h J( P*d&1-H!<6mtqNHP P<z;-\S "wQۆ+ A˄3k01+AhX-N WzrېfW/ QB,p#e,]\9vbES%ʔa*Agۦmf4;J΂2S4Tر"I"U\m6e hpM[vp%J SWMRG8+mǥm p%&# Hv(1E8ZO2p ")cd*I"e MB;-\QD72RI&Hv](1EC+$\f#Qb״q\/`WBP={p%$u3_~ 8#| w5sjg?i;RuMUh>mˉG X̒AL7b:ϲLm:4,y9'M[l@C5CV1݈d0YuWvPMLINK.PAST  !"#$%&'(o)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSp(wop2g/F?oon,wco޾ZiX$-wl<6}q<6Vlyl,L"gadrsY'9 #j=㒅 Z,L.7?V7g@6wYjuHe@D3{0xvT,vjG2ɉ;k$G&VZ %>+(X$pVYЅ"](w '*>3)!aS]1 #*[wţ !eylF]j,͒*;uxY!Dq7o^jp3|*ŠBd6xt.P!V Yml33)!a屉YlylFYP|f$SBf}g(D9 #ˏJS}4/dPCLj?5Æꕜ8bPHwef޻h] Q5wB1Udd @,DJdytHUV+=%Fjt6|X/zJD{~oY,d=c &^XVY 7QWPVzJ f*r+qo8/TpVH7sg(D-^NDV+7 A . Ba|y # 2Zi nh%}g(D ycSbVH7}g(D+|ŭ(_{yVH78 vؑL;C!9]W[QGJ+VZ(Z ’xc[!p;0)!aSbVH7cx,M ߢ jt# @w X3jt-bsg(DWD=%Fb$÷XEpddBK.4ϝUIoqcqs! pA+P[莵BYI6jt<61 4c0jX ,Ou[|+G&#B S]1 >.,WT:W<^)^TIoq}d`,0ΉpA+VZ(Z p;#?[|+ @OZ!]n-|_ܕ4ĽZU7UeBgÎd·e Qȡ r·X܊?2UZdd @,DJT9S]F2%$*#BeS]1+"#q-ŧ"ũsb 2Z!ݜ:YX!PLMeA'IA+7>Er(owBdB%p$ >S](.E'Й@ =h`igBO}gDqZ,[-Nu,[-E]V=QZ!ݘĽ[Pf/*P@9b^Y 5J+AFZXI6Eb$>u3"B,DJ4E[ 7QTD$VzJ f- S(G:X Är3fs# fP4$ (CgU|P44?+Z Q2t&Pe (CgHrg$WZdd @,DJ0$VH7 AF;#ѹ@dbfqc &nh%V9\n{vnXnzJ o#S;`_-v[;'p7"0L(G:h6Ǽ fJ+X aVHpE+AX tpZ!l- Q1-ӱHwe,\rIf_goj4-i*Ee]bbdj[,WTLBr #VHpE+AX B[!0259 #۫ŧ"H 龧Hf"/b %SV4j4k|*ŠߒFj4[ Är3fg#SSYfr5Mr5Me*YHo125 7V+.v9|ݓ4; ߖ#SSUZ!2Zit 7Q0LV+٧BP4<6KF&V {<lvHũ,`anʐEC-ECS]/Y` i (CgEC*,$÷d|]rɄoCP #MOZy ~*rB,\rm ivpX tpZ!^(x`- lca ~ f0L̓VZ)120팤n0r3*0L(G:h6糏tWƋj6@WV+)xQoIjtSb$0eLye125 bw 2 BN)1#S Xb÷7ddBDktidjVHEߢ?X$; ߢ緕sUλV+{SC:boIHaB9Й@+]r4YnVM@9hg$ .IAF6˲0L;#A+Ma\NHVzJ f- S(G:h6Z& h6HFv^YnH |%0L(G:h6X$a^Yn0r3* 2Zi#,_yxbpH[E# AOT00$$"ZXS,0fYv).A+Sbde D3r0LAZn1H BtH*-InzJ ^Ҭ3"s SC::|KK"ϵB_I6L "P2t&P #$HkAF[?X$-wl<6}q<6Vlyl,L"gadrsY'9 #j=㒅 Z,L.7?V7g@6wYjuHvTPMLINK.UTLH  !"#$%o&'()*+,-./0123456789:;<=>?@ABCDEFGJ4m5a&zR{'o5J4m5!Zy<*8E3UkB, zK3ыǍVB5V1/5T)j5+52K1+DreoC][qn?b4E9: ,Q1PNf (G>>AʷN1]5k9bop[k}&f[ˍVBhj"SLk(n=&h2Kzh%[Z#+DE]Cv,b+\%:V1oq@t\NPkƼ ,ѩ~#+D2KP^ޚp ?@ABCDEFG|Lb5$lw<[jH~s? \/#+ lks oY{3y(+& ޻_guˇMd!>ǂz{' m c౟աzRhAcؒ`ߩD4Ld{ؔT @7Mٕ0·<ԾQm2PT"J=lʱlD%)ǂAO .0Xpo@*0D4Otf{2z~*2 uKU j)ehw%w*Q;K _aS΋ ˝•UTm%_`K.59z @Jǰ)ǂ{y)1npSu{MٕA.!|16Ր}lo![y'c~q:}:7&yDfqL6I~ye"jo****}GyX= .l[F\ŜSnpɝD-%#+D2KP^ޚp