home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.lang.modula2
- From: tchannon@black.demon.co.uk (Tim Channon)
- Path: sparky!uunet!sun-barr!cs.utexas.edu!hermes.chpc.utexas.edu!news.utdallas.edu!corpgate!bnrgate!bnr.co.uk!pipex!demon!black.demon.co.uk!tchannon
- Subject: Re: High Precision Timer for Modula-2
- Reply-To: tchannon@black.demon.co.uk
- Distribution: world
- X-Mailer: cppnews $Revision: 1.20 $
- Organization: null
- Lines: 222
- Date: Thu, 19 Nov 1992 00:53:22 +0000
- Message-ID: <722159602snx@black.demon.co.uk>
- Sender: usenet@gate.demon.co.uk
-
- > I am looking for a High Precision Timer Module in Modula-2, especially in
- > TopSpeed. It should be something like TPHRT3 for Turbo-Pascal 5.0 to 5.5.
- > It should use the 8253-chip on the PC to measure time
- > accurate to micro!!seconds.
- >
-
- Well here is something of interest for pc users.
-
- It has bugs but mostly works. The core was translated from UK published C
- source __but it did not work adequately__. The technique now used is wildly
- different.
-
- Contained in this are I think some useful gems including about real bugs in
- the pc bios. How it works depends on the bios -- machine hangs.
-
- A test program (source for the lot under TopSpeed V3.02) is following
- uuencode.
- A test shell is included which I hope makes a fair assessment
- of the timer performance. The implication is +-12us over 1 second (timed
- against the real time clock). 1.8MHz crystal inaccuracy is a problem :-)
- Long period timers should be fairly easy to make but you would need > 32 bit
- math.
-
- The bombshell -- this timer routine does NOT use interrupts. They are
- unreliable on the pc compats and I have a machine here which I can made to
- appear to run at 1/3rd speed according to the Dos clock! This is done by
- timing dummy disk accesses to find the bad spot. Ever wonder why that clock
- sometimes goes slow on some machines?
-
- The code presented here has at least one dire bug. Someone fix it please the
- reported timings will sometimes go crazy. Minor bugs in test shell please
- ignore and bad style -- this was not intended for public release.
-
- If anyone wants the executable please mail me. It's about 24k uuencoded but if
- many ask I'll try to find somewhere for ftp.
-
- TC.
- E-mail: tchannon@black.demon.co.uk or tchannon@cix.compulink.co.uk
-
- section 1 of uuencode 5.10 of file timetest.zip by R.E.M.
-
- begin 644 timetest.zip
- M4$L#!`H````&`!VFD1=ZG[((*0(``#<$```(````5$E-12Y$148-`@$2(Q05
- M-C=HB9K;/`4&$A-$Q?:6]XD6-9K4:5*J29\Z!=GT*=&J3(N"I)JV;=F=#16B
- M5`DR*$BT:<^B!2FW[-RW;.O23?O6+4@ZVR\7I-DWPSLH59!CV8:=.Q=D4J%-
- MDO?;MG##TIWKHGZ#!$GTC?L&Z?8M79!UYY8%F=8MG?<MMRZ<YDU6;EJ[9=W,
- M_]NQ:\RWRA3#*W@/H==3J<P/?]VTJ-0IQRLX[PF2YDX00#^L7+%IZ1#O/,^Z
- M;ELQ^/[63-!Z+HMP6]9HRRQK$%7_#=>E/>6&=7NVC+,(#L;8);[Z5]1W"?*I
- M6S;5.JQ9,\%*?],YUB#GIM5;QILM7_DR7]P;S5Q-QN\^\PS$<[8^G:A-+Q4<
- MC+8TU:Q0B[!E[S^5CI"Z+-6\<,NH]:!2I0;-"G(K3)<NC*Q;QNSB=1L%R83+
- M?73(]B:Z8W]:05[Z<PJ\^!]A:AW'$,H[5*E/AQ890DLM@IZ4BZ+,9>5V6Y8-
- M_#6+-710IBFVY%/X5F^-"OH$>GG";<&,/"+GEDIU2+-$F5+'U0CDR2*,;SAP
- M:#+N(,P'_6J8+C1*NB"^DRG`&Y)`"0YCU*5PW77ENGERE_FGF+(FW.V8XCTV
- M+%LV00!.<$AZ)GKG(-NF'2OWS;4"[79+=@XR@&>D6`NA2"8[C0*(4PJ"^)S#
- MF5;%8+_C_>:IC?;%YMD'\$JSWZ[1:XI=85"U:9#1<,D\K^II9LU598`S>5W4
- M*1';=9<:4$L#!`H`!@`&`#%B<AE0U:RT4@X``'PH```(````5$E-12Y-3T1A
- M"GL'!AL&NPQ+`PD'"PD+"0<6!P@&!08'!@4V!Q87"PH&"`H+!085!`87!0H(
- M!085!@HE!@@'&`H'"@@+!PL$)00E!`H&!`44!0DT!P87"1HK_/S\^_O[#`LL
- M"RP+/`LL*ZP,`2(C%!4V-VB)FML\!082(Q3E]I;W@^2D_IO\]EKCUJ#;^\G=
- M86+__:VK?`>CHN+"6+^P43")'GWR6WF_E_='E><X]B/OQRHH*O9YQK]R52M_
- MN]?]G)=K/_YB][=?V[>_5.X_;OW&^:SK'Z0F_Z31;^SETK/D%17__Q/7>T5Z
- M8J?G9&;_!NY[G^O/_<]1_SGB?T?Y=R/A7^LO/_7[/\U]7LB>=;Z6IWF=UQ+.
- M\MEK+`_O.R_^UVT^CNNHPGR_7]KVZO:4Y;_=#+^[G=;O7\W\/^CF_W9H[=:;
- MC+Z+BD?=7KNE^D+\5J?;C\BSI/W<K.PH0/__X;@U1GDB-BJY,$\NS*%S8)X<
- MF-OZC9C.\:GVAWEC3N_K@UBA)QE#RDO*@<YOBD`U]]ZE?JDIUE<LSI235Y
- M5%ZD'W%I'$O$<X\WOP:C#U8O^_*</T9F9G8,B"[42>7"F;`^HC_B7JNM]_)=
- MKNDN9]@C4M*CT!Q)>9J2`C))38P:>3QHC;J)O9;,S\S-=7Z+BENA);T^KWFV
- M%:YTP]V==]3M#&DK`B=1MO5'^Z-Q9SCHC?O!B.?PY.M8>0ZJ?3=X#C+*>C=X
- M#NKM#26GK:N1<&]6"]3`"54I#]JJJG/0Y:NQ1?O];B^JT*MSN,(DC'%'*.8Y
- MPWC.&:UK=H3,/<F'N.;X'"Y441BBN>\F;VJWVW_'/9)'TR_=X<M=+IE<![T6
- MR5W.-_@[U.$6.5AUW.F,0_N1<O/R,D+]W12DXS*I*8/0X4^<8GM[A"_OG?-K
- M5WA-/\UK7_]U`'J^Z'VK^FV>=WD%<36ITQV]P\3.^R,_UQ+EV>J%!<'(>7O^
- M^GT^X2"?"LN/?[;[QU>N1N7'[T?LY3?OOY>P][7>]8_L%?1%;@WOU,C4EWV[
- M/-'2"&-):NYS,&)QE-S+I>NZ=FWK\H]G]=K-:PDE[2,UVGGB._=35_-:"/[M
- MLOE$J4XM!<'(8JSS2SR/0#6IZ]^_G=_J$C?))NZTHXA[0Q3[K]?F_Y?-+F[@
- M_96<_UK9MZ6AMEV[)O_<CRK'+;0RC\D_](K^.CP0T:3_.J[E>DZR_E-Z7(J6
- M-AYV"B5^@=1):0?^G_AX_E^O\PP'9N<Z[RV4A.<<PG..^_IE;,T;#D`OJI?Z
- MM3[Z-=ZZ\EVMKMUY*<2S\7QG!UD@G#F?A;]6MQ3=NOXL#^.5LYC`0PH<FO%/
- M9AQSBKX\EW^\VS?.-"I7B62`SB$99`[)(*!;@D&DW%"CI>E>!T<ABHGAMYC^
- M#3>'O67CH`>=`WH0*4H1!C5!&$CG@S,[:/)"ON2%A&^$2'C]!X)YY8EP?PVS
- MDQC`H2N&5NBQCE_B0(!\BJ6][?''#Z$['EUKZ=D6&1]N]F&6P@)8%Z/P*91O
- M>P<6TOP?THG4Q,2!NQQ<.)=#(/BLY.'P%^'`&MVJD[[_I+;MY7\_E#F+HB9R
- MC()X^@'0FCFE^,(-MVG#^)W)_.M"?3YR!^5D+GTMGU(^.>F4/X?R4#Q=M!O#
- MV=N+C7PSW$]7N5>FE_(>I&`](6%GI!7E[5$>ONZ42_E9*NN/Q_.6L]\2Q(^D
- MO%VF"#]LF\6W`V?8N8=YY`>I/R%R*F4G7]B[5KNW^VC<0-9+_'T?RI+:K4`:
- M7.`04(M?%]AZMK6*X-QXSL8LXG__"LPO/T<XR@.)6%UY.I5G_=7]H+6>=7_C
- MVAKGG2^S/&6:E?-`4AK3>!,(ZE%XR:<&O?-^Y/L?]UW'&1#Q/^+9>*^EYZ!/
- MQFM<\T`:*-W17`,*:KZ2\,OW#Z5,\VX\FKWG`>>R"(0>=P3@O2Y[*0_N0()F
- M37(A_GF1M_Y1'9%J#4<N[$_/_UD"_B$QK=_-N:H8I3<J5%<3"4P3K4M!J,2V
- MM9Y\_7;YA@D_VP:C;J':K_4Y3YT!:<U5SQS0O;S7YW/_Z7E_0*MG/NO<,^6!
- M"#)Z[HU'DM/53[:*]0\YQ34C5,P#D<#H^M1N<6V7MGHXW!\.PC#DKVF#*^\B
- M\O;!>00;MZQJA]06[`*\7U0>K<M#YY<N>QV`7NL[9[;\)*!I*P4@XFJ]J\A=
- M13<,^YC+38\O\9WO->^WM.4U#T38547R++.WY>']X2Q?);TV:VE?+_PNYX&(
- MVR26N$"`&V:@I;P;&3>V<*L^I]?Q-!KS]C3"_3&/\3)O-#Y@J20#^?'BOA]U
- M;DLIHA>_VMF21=II+LPXQ[^2&3U&9O1@Q#(]KX0[GD]J_+54G(0?M(X"GBX_
- M[!\.00,'^)]Z'=EC]HN8#$RK(DD/2%=/O+E)V(V@R.T*E&/9+^A>'J`$0LF>
- M-ELXE`H9<X%PUC#V^[;=#11J4/=EZ@-A\`OUPN'VN4"DK\XJ80Y>I:PN@+%P
- M<=U_7O+B;!80V:TY5\<H?D9]FU)K(L^_7XCQ=MYQG]*Z@*V>Y.6^,7[,3W.D
- M.%L*I&1WWE9BI_<7HP(-8(4_3):8C,S$B@0C/@ZRO7#(B]"[%5[Z7$+H&)>;
- M5>BE<H9/Y>*PF,*$YS72Y2V-*1,SCAJ?HD@B\NBJ$Y*4-;:Q,SI/&?Z!44HD
- M(0<$W)GF`BT9)^-1`3Z(FA0I@&"J@(P;.I_Z[G15`LIB?0C-ZQ(+PRD5;U99
- M$^YPS5W$7,U[6QA<`SUEJF^32'WMV)/8@MG[,..&48VT/08[X'SJ)>&(O.3]
- M5-`_T3R2^3\GI[,-N9?8O99N5>>-YA6^U;I+Y5E^E3>\&AVW/+*^71%N#!T!
- MQX7Q$3D?ED4+4P>M]MLJA.13I7-!`9LWSW524.#`@R(IX+QYD&8GS#PLWYJ(
- MP1VP.?F61$S\`%FYP`^0;A=I+D4CDVAIF5G1)^DD)YS"P0B5P1O')Y1,-7/^
- M3V.9'U)&C[MQK^NSA5/V62DP=)"-U%W;KGU>O8][<WL2[*R%MA/URRR;_[>G
- MI/#U]!+1/Y_J;<G#&<RJ913X];*CPO]!=J^3Q0GMG2X6H?RQ&&AY_-"NW^NU
- M(<7Q[<J%XIM&UD4=%W$!OL3OB!(UCC<V)7T]:_2@GA-8J2NEP;Z!.8,H!^%1
- M^G"$"4E_$<=*[U,G]FL\L=HJP3:;W?NB=J.PW=TA>A:D'=_JOM?_&NYH*"[4
- M5_2EQ(XL`(E%9K:G><-]`F-QHTQFM95`([%\5M\:O_9<MM).N[I+\?L8?9`:
- M\Q&PA8#WKBKL4]54EWF,''!MI5UH24**Q.0+$R=A0EX,&[Q7^&)Q+AS4RG(5
- M.$OCH=D(D)8"#486Y_:R%<8>+ZRX+E[PV4$[@JEY/S95L,4:+6V2ZXBT(NF;
- MGWLHS01R+P*U*KZ\^*+\NH`3!X'ZY\=3%OG6]8I%XGZWFP3O.J7;^1<N<4E"
- M,_ZPR^&(\*IG)M<!K8HL(3M29E4[L:*#U[GP,Q`LIY0,C.7"PH!)V129"44T
- M)`?7AHL&EPOQF5J@PJ6R@VM7HZ6Q/;FAANWP3!RN,1RN&:%:77EVH=>;!OHI
- MQ192=,+Z2G4!U[`W]$%+^M)OO[PCN)FPON[@VD5-3K4N(?%SN`[_R"ZF<@*<
- M98-<.!_$1BBJ,"34$6%"'=/4X"I'\!@`&8O'D-R4410A0P0NEA;&?71`0X=F
- M/>*U'2Z8.%,C4<J9$*9@'2EQ<;@X^]3`Q!3<:DN(]WQ*-I2I)60T<0+TDA^>
- MB`!J09;@8!FM+(6(X9*,8.1D4LIDOY@IU_EX[/B3QZ$7XB.8T;M0\-ATT;UM
- MFDIQ.S4Z)M$8DH`IVMQ3A$:H5PL7=7CP-9?CYL-KZ$.&O7A?D]ZQ(&BL(1[T
- M^=Z02./$XFJP1&&(U-$P)W70HZC@)A=$<[0A5:>3W%B%O!Y?!3^LL%PHAVV<
- M!.=L$!7K!")@40I<)@A3H(;RV/H0533QC235,V*=NZI/7\_:HU,[JT0GO)"4
- M<@2L1=N'A@\D-R,W2O[/'4>QA<4)809A#ZONEZ+]>9%X;L8DBDK_<S,H0`9[
- MYU)=G%42SB:`L9('6LC5$EY4?"1BZ5D-1AA$:\V?D-:]3$:.EC8]'-LK$]C?
- M=25U37Z]H5N:3V1&=>0@#]4("2A`(P^4%^5G8QZ(O6Z+>K$31;V(1R*BWC!W
- M^2[$\B!=$E@0E:80@(JI1442M_QYXRC1TE1TVK^:ZIM-'4<Y=T+5E;D)9^P+
- M%NXM7`J<<`=]PB_QKG`>@OD`1-4%M\7ZD`4(+J0XG:5]V?($S,;*CI&;J^;C
- M3H?L._T82@=NZ.A3H:+P?`$C3^YL"\PT_X]8!`4G>K$4X#C"H6B[8$PMOMPX
- M3&E0KT:Y]>9X4P?=-BVB[*AL-R:QEF]L3$$0_[7"0]8AU%8Z=MY/JNSW80JT
- M*Z_CY(&9E(1#`JK:\+*$LJC8$PC>NM<E9=]2YRIV+NA1`Q>P<J:8.$A.(`1#
- M//)XT!IU$UT!U"=QG43:)-CA.RH,7P`:"%&"\!G%"\.GY6J2L?!<;@U+X4?Y
- M`V)D1Q`="(0GX[;8P@Q;&_>T'P.J:7AC/OQ!XV-V@$;@(=7Y<$]2T(X[W].)
- MW1F*6'`^#)D?LPD$*US<>G.4"Q_8QXR=/'&^P`M$G(GT9@B+2X4.%&7A-H>K
- MSM+\:!.0,HKDLLE,*NB%<4'(#N_S"5<(+BQZD2M-I4WR4/'4J46,UYR?&MJG
- M^&@\X3]#7*<.-VIOZ&$JCQ)0<_-R:8_GF+Z^9]1CN:@72_ZX5]*#A[B"XV"L
- MUQRAB!%=9++YAI<"=@E**;)>#$DR.`<N3Z"W'*/S5H*";]X/D=L!<B%H8QK!
- M9103L5Q>-X$3>7@%@K$5V_@8S!Q<P>C<?.J^='4P5*)%%B/JO&!36,9TM#0`
- M%W>>O7D8KQ#.>5S*)ZB^2/V\0#)02P,$"@````8`DA*-%Y3U!IJ!`@``^P0`
- M``P```!424U%5$535"Y-3T0-`@$2(Q05-C=HB9K;/`4&$A-$Q?:6]YL^)5J5
- M:5&0=-.V+4NW[%RZ.QLJ1*D2Y%JW;\>N+4L69%TXV!MMVKD@T;Z5*T=X@PR3
- MO,.")"LWK=TRR]O,\VWO,O@M>;=]2[8N&^:M,H7_"MY)FT)]*I4JR*1/68)D
- MFE9,M!N5^K0I2"KH#T*[G$HWK%PZT%..^"[*-BS<.>L*>5\-FY;.]AYBO?05
- M\SY:9KD2WRS:DW.6+7A;#2J%>(,$.30L6RO"N\ZT4MXZSO53IT>'7&^B.[*3
- M,5D@ES*^PT[-.X=<@LAO3W=2IU2+2O&ZGY!'3.-=/0_P'93)=!?[]LWT%/KT
- M29P[J!/IYE=\@SE2MX4S76R;=-V6Q?"_00\-3LVBN,=XO^HM-6A6D%MANG0I
- M$R;,KB"?&F$//]8MW3GFD6^0APG>0HO(VUAXG3W0-TV82'7"M#D4:9>D1='=
- M$\:151%IE#!3-$5UKR@*ZNR*./M@2RT*Y<E-)7FTAT(-;!">O\NK<IFZ:<Z-
- M*$GS`#N8V$B+.KFNSM-GF-!R^G?3H%A1P,53MHB?+=YO2!W#VD'@SEK'A/^.
- MZU3\!ME">9])[)9S.6I9%F4ZM<@U\)(AL)=.B:B-H%YE#HDRA7O,,VC<+X,[
- M>%N47L!CK&CUX[E7L7TG94(_EY;-"^7OGH/G2*_JC%EN32PC]LDAB%'/.DU<
- M:PP=]@P1VPWE5E\5^VK><@B]Z5P73^X[7;S+$\JTD<2H\+7XZ7;$[D$2?:*T
- M^@)4$(>>+HF6$4+G19EV98RY*=SYUK1=M@!)LDV[[0:!.`4XRDK,GXSA#^9(
- M".)TB^.Z9<PN<0)%GFR!7*Q'FJ>"U_&E,NU2(U!+`P0*`````0!H8G(9CIL6
- MV$4```!'````"P```%1)345415-4+E!2(^;DF4.G3!L08>K0>0.B#)XR#12,
- M:/.&3!DV(,:\:0,GS!@Z(")&'*&18QHV94"4:!,FC9N1;%RN40E'CAHW8=I`
- M5!`14$L#!`H````&`)-D<AGZT%XQD@D```H1```*````4D5!1$U%+E1)30T"
- M`1(C%!4V-VB)FML\!082$T3%]I;WH;(M&W9N69!NW](AWG31IIT+<NQ;,LD[
- MZ5203I]2!2FU*-.D084R+>JRH8+@3?3)=*\ZM8CW=@H2JM2G1*L.I9KTB?*>
- M^M0HU:M!I9372,O*\5_&'M8MR+)XP[:%XZU!OC73/-.Z/5O6;=JW=;0WV;1R
- MZ>9AUW+3CET+PGE='[[-O]@V^P:_P](%&:1<PQT+8EG?1<,L]C_LV+%UY88)
- M.].VD5[F2_K%,.^V8=+^W33\BUK302:&%_F6*[<N7+IS0S"=5*Y]CK^F>S?,
- ML:5OMFR6;K=L]/7=MW+7))\[KP/_<XI9N091OL.R&6?:F^V;KG>NR?SO.ML[
- MK!BCYJSZB3(W'+7<B+$*WV*^-9MA$]O*5?'JUGF<KG"ORT9_NRU;AGC3?7/.
- M]NHY0*69^6O+W4Q%QW2)LRE2/=X^5F[>N72`GE)E?^C9/-VR!1<5W<4E6UYE
- M'C"VM!]]8\<&@73-+9,`+=FF71-L0->QTKJ,J+SNL'"F6'FJ^Z7$=CN'O:<U
- M([>/X?MKY%FS%EOWS/;=?;AY[,>;HTNA5L'KL66V"2#."=7\8OBTWA?=E77C
- M(:O'TM'[:/J7]2[3Q7I3*5O?/0>O>E[.&@[JJJ3VAR*KQ%A<W^T:..8;>IXD
- MCS&LZ?PM#-]YA&Q[*J_\"ESQO(#0;^_.Z5SC0\\]8U9(:Y!GWPBN&6NX;_Q<
- M3EOD\RR:Y7-6U!94&)-4F-0@ARAK-V^W&^;MM.P=]B6G0MY"QO?:.5TJ/I3R
- MKB)5!95+HIT,'4M^%CDJ=4CK,?8UD,27F>\"=[O-\G;QY799!W$OISLY-BU>
- M%Y5K7,5W12SHJN!L>4-)JM$\*V/00PQCEWLYP2H>"%$<A4_QOJ?6%:LF3Y/?
- M4LL,;Z1I\BK.J*4JZ9X3AH.DXGM+4C8!?57=85O*>%_F:XF=MR75-^-`Y&43
- M4R5=:.RY.@#;78@O*K?+-L6,V(E\JT!?FU;N.D(?DB_JW80-NF52(M*;YTV9
- M,F/6K$'\<]WB`0?51_O&VK+)EN9U?=ODM!MW!TE"Z[9SM^NHK,N$\;S.+;37
- MO*]0L5E(;QR`TF_M@LPI$Z3,F3IIPM21K4&"/-J4ROA^*O?,UIU6;YBEM1NP
- MF\WT9@+$+I/W:=[X4_I0_1:E8K=(JP[;G)QAT@Q.F<TSXLW4O3I6F+W96:X]
- MK1MFH>>&.Q7.IM^%M2+=GHO&L9AG5;`JC8';;3I5J$BE4IW!SJF<;HM]VR(/
- M/7>,I[^F2QBM$\:[IHNL31AUZU,LQRFSYLP6I1JC$M`3ZA#XV>:W7E=.I"G\
- M04G$]B5&J;%#A@!66RK?ZCG7[)<%_(VA[9C&WJY#')??5HQDJ=&I*59>C::U
- MMVDEK5ZY1&.,W&]ZRZPW"T^XMEIHGDZ54[+:&!H-&S>^7+,\([+<>?(;_'*-
- M]9)]BHT/PAC_388TF^;[PYS&$-62%=UL23MJY*/1>NZ:I4+W$UY1<KIU$&WU
- M:VE_@Z4,,^KSY!`_WP_J%-*X/\-/U=LI1A.SR2='SK^8)]2R6:FL=YM@058E
- M6[\VT_%Q570XP"KR57%/YNHYH1B[Q-5="]<@J(<HBJCF;S?_:TJK[]#O,%MM
- ML=YVCL!E?)>UVG/QL>D<7#H,LSN=&M-&;C?,H$8V=E>YV$TEU+)L'(/7=II\
- M.IX:=I=248N&<<,69AXB\3)63W*R3%&&./<%].RYGDEU:5U53&^QN)^[8@
- MOF!GY1PUB[I;+ADI81S1VW3KLW68QYI7<(YFFZ!BR2O'8M2#YUTN'9-O0)AK
- MQ/H.XG@UL742;.%7VYEW,E]6&*OH]1O]^Q_)UN9X78?C<O;\+."Z',?'>LMX
- M-NBE]A):3[DXDLY`SS&][6=VP=D$@H@['G55-8OY'A,FC->JCWV4<BA!W+Y3
- M&%$IJR90!=^J?I[;M,S--\VHH=8:#2)GO(ZK3%$]R6.IL3JFC,#H)BLM5L8L
- MUI24+`YR:+_8L&3>Q""><305,C>^QEQ2/)$^C\X74J1@DUWZ;KL>KF#I-AD9
- M=@UK*(O6=71SQ3KFBT;K.;>6(=(+:&4[)7<]QB!+P1]#5DJRH5-MW3F#96Z8
- MW`Y'Y4RJ!FEDE4IYEWVSD5(,L,U2/?%M4B.G>.\Q@^IN8%E1V6BMZ)69*B?9
- M%OYEM!;.OVQMN/(\V'(L"\P6?0JI#/6[ND1ZFRGCOLXYJF->GE<Q&)Z$'_L"
- M._W;G/IP=YAQ.I9KDA1<7F/$OMDY,))MAA(U8<9Q)*;5Z%^LG(*_$-\LI*F#
- M6?QG1<.IVX)5/E(BC,U0+0''QF$WGWDW<XRT5-`35;LVWY-D=+V(JDN59>:L
- MPPRSJY2I*%Q1):N$UB=@T5Q1GCB%,:3(J,ZV[1O/T6T>ZF[?8LAH0BY.D&\$
- M!0=MV<JLB)/7=:.YG,V:QKSSE#V+*,,$6C!=+2O'TFE-@<BX3#+O&Y2)4=6C
- M!,?SBBUCD%E3=].860=WX\9R%R??DYXHPLD45K99E$8#GTTIDP`=?0HXQ5Z3
- M`UD&B@'O;A(LTS%?V8(RRYN16K!8$[,JUU">EZ5]CE04BS\;MQ*-)<X,)GQY
- ML\Y5TD^'*:0VV`M/N"DD`1)?<:26`_8"PZP4%S;G)#T=R;Z8=F;:P.</G)QR
- M,K/31$LVK?N\9>?DTW0Z`154Q%,WQ896F=(OVX9QX0/%&J.:PQ8'FZI2*+@"
- MK"F<=K/I.LWL6O-ZV*-9:H`UESTWK>KH'=W&M>Z63FL;&E\2!%-4E"93)[LY
- MQ^%:K7@8YBMRT9U;,,@789K1FI_1.\5$"(,M94&8W&FF9IOW<)S1\[!J:#-D
- M1"2K4LHT.SH"ZWE=,-D\GGC8IN]"9(B>PFC4Q0GJS6)\"&!*"BOAQ;K(`@\S
- M0P0&)T-8D,I8@&FXK[@B)UK+BM[8KDRC$I6/T_M=.10S(B<""&L_3;4/;J90
- MR6D4&N\"Q7O,'"J^NQC@[%J=+SU5V_5#*XJ^T:X!=B$4@7?L=JQ4U9:16VV?
- MS`7F='+'*EZ`C+CM3C.0W`X"\S(T?1'76'`#8<]"81!_'`JE&$*BA(L&D9Z"
- M2$&^J(47\\[+C%49]2IH,[*"H]!_.`AX7)(.4E%%VMT&;B'08_//LX)A*#9^
- M#J6XFPJGTB`X>F"R]1*<MYZ"X4S\1&&,3,N8]FR`\&4^*7`_"W9PQBTQOXK-
- M$QCD%Q%*R2&V7D>LGS<9R\^JB:CLR,/,;O1@0N)*OQ?&D3^W1/^!)+9ARB
- MJ0Y!S#A>P;MH"P,2#7`LAH,84$L!`@L`"@````8`'::1%WJ?L@@I`@``-P0`
- M``@``````````0`@`````````%1)344N1$5&4$L!`@L`"@`&``8`,6)R&5#5
- MK+12#@``?"@```@``````````0`@````3P(``%1)344N34]$4$L!`@L`"@``
- M``8`DA*-%Y3U!IJ!`@``^P0```P``````````0`@````QQ```%1)345415-4
- M+DU/1%!+`0(+``H````!`&AB<AF.FQ;810```$<````+``````````$`(```
- M`'(3``!424U%5$535"Y04E!+`0(+``H````&`)-D<AGZT%XQD@D```H1```*
- M``````````$`(````.`3``!214%$344N5$E-4$L%!@`````%``4`%P$``)H=
- $````````
- `
- end
- sum -r/size 57279/10889 section (from "begin" to "end")
- sum -r/size 29187/7879 entire input file
-