home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / lang / modula2 / 1413 < prev    next >
Encoding:
Text File  |  1992-11-18  |  13.0 KB  |  236 lines

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