dbx@olympic.atmos.colostate.edu (Doug Burks) (01/04/91)
Greetings, Conflicting reports have passed through this newsgroup (and my own mail) about whether the IBM PS/2 hard disk can work under Minix without the bios_wini driver. Given that I shared the problems, I followed the thread with frustrated confusion. So I spent this Christmas vacation trying to straighten everything out. Apparently, two different hard disk controllers are used in PS/2's. The 60MB and 120MB hard disk use an ESDI interface, while smaller disks use an PC/AT-compatible interface. I'm not positive about this, but it explains all the reports I've seen. Thus the at_wini driver can be used for these smaller disks, but not the big ones. What about an esdi_wini driver? Requests for such a beast pop up with regularity in this group, and I have kept my eyes peeled. However, its existence lacks the slightest shred of evidence. Given that I have a spacious 120MB disk on my Model 70, I dedicated part of my Christmas vacation to remedying the situation. Poring over the terse IBM technical reference, I pieced together an esdi_wini driver. Over the next few days, I constructed a hard disk partition, populated it with all of the Minix source code, backed it up, deleted it, reconstructed an even bigger (60MB) Minix file system, and fully populated it from my backup. The new driver never even blinked from all of this work. Given its passing its tests with flying colors and the apparent demand in comp.os.minix, I hereby include the uuencoded, compressed source file for the hard disk driver. However, some caveats are in order first: * This has only been tested on an IBM PS/2 Model 70 with a 120MB disk, though I see no reason why it should not run with a 60MB disk or on a Model 80. Less confidently, I predict it should work on a Model 50 or 60 for the same sized disks. * This has only been tested under Minix-386, admittedly a strange note, but I see no reason why it should not run under 16-bit Minix. At worst, some compilation problem may crop up. * The error processing and recovery have not been tested. None have occurred! * While labelled ESDI, some changes may have to be made to the driver to support other ESDI system or devices, though this serves as an excellent starting point. * This driver requires a new function in klib88.x (or klib386.x). near the top add: .define _out_word later (best spot after out_byte) add: _out_word: mov edx, 4(esp) mov ax, 4+4(esp) outw ret this function works just like out_byte, except it writes a word (two bytes) to the port. As for its features, this driver fully uses the DMA controller to transfer data to and from the disk, using 16-bit transfers. The ends of commands and transfers are signalled through system interrupts, rather than busy waiting and timeouts. I'm no expert in this area, so if anyone has any suggestions, feel free to send them. I am also willing to answer questions or help anyone implement the driver (especially on different PS/2 models), as far as I can. Enjoy! I've had a blast the last few days running Minix in full 80386 mode, freed of many disk and memory constraints. Glorious! My Xenix partition is definitely an endangered species. By the way, thanks to everyone with a finger in Minix-386. It's worked great. Doug Burks _O_ dbx@olympic.atmos.colostate.edu |< ---------------------8< cut here 8<------------------------ begin 644 esdi_wini.c.Z M'YV-+U0H *$"A$&#:,+((0."3)HY:QK*26.GC!P09MY<3".F#0@X<U[( %%F MCD,08<B$@4/'XD"!! \:O#.13DLW(,3D:?BFSIF<=>2LF<,B9Y@Y91B^P?F& M#AJ+(-JD<9,&#X@[4]-(I&AQCHN7,D&P.4H'Q)B$;LXDU6$P!@@E87#&R)$C MQDNP,L>$J1B&SAP=>,,6=/H01,(Y():RV2FF3!F<+>>T5(HS+@B.'D&*C/J& M3!DV(&[ N)K&*4H0,63 :",F<-B&#]=\C?FZ8,:+84#0D5.G#$F36E.N;"FG MZ-FX:A%C90,Z847=;W+Z;I.R3%$Q=<H2GN,Z[!B+=,),70P"J9R*B(^>/O.F M<_GP<NC,+E@;A)OH=-*T*=/3+THYOND'!QME[.?&9$7-@1\:A9$Q4447C=$3 M&PRA]5,=;G@F1W<RI00A4F8MY5!^2WG%84Q.^6:1'!I]Q.)W<\PQU4^'V=>4 M=(_I5M)D+AC4QDX.07251D-!%]T=G[$Q'UA4/+45A.75 0<<&OF7(D9O,/<& M5FDE!H=%?:51(@@HU"%CE_O%&(9:6,I!75EMR) "8 2YUL87=.3QY6M$%&%% M$D,4(1,44CPQQ!=.2!'6$$]4X005@SXQ11)4)/&$$P8%08044A0QQ11@M2#J MJ*26:NJIJ*:J:JI@\6$0$4E,L<07G6H*@JN>V9'&=P:Y"L>+]EWD:DYY1-:K M06^880929;F*G1D?[79KJZNVL$*JUZ*:[:G;FMIMJ7RT"@*LLGYQA124"HIK M&;KR>JN+;XP1[+O$&DMOLLN6T2Q0T+(D;*C5!BSPP*S&Q,<40P1!!15%=$K$ M%Y:NVZYO[_X:[[RN AA';Y+-,>QK[XII1[3_QD3PR2@'?%=,3?IF1AH$AGB@ M>&X@MI2*!\JQ$Y53T4$G3/21YL99.UJ$YU%KZ) =5.1E/-.=SR%TQQY2%;@ M98B)P:)/:)0EY4LO*##"5&.P48=G((BPAD5N?.8"&B*(3;;9:/,@%55XO* 7 M<V[(\;8/<@]-MV]V9Y6WA&W\'7C99Q-^=U4OP*%0?B2ZH;@" :F@.7TEG93& M"]$)QQ)45,:'&$%AB^W9RVT;-$03#W=ZQ$$PX#%##3&,!K)! 1F$.'497G:@ M16:$P2N 9SQ$W.X&J1#V"*M/1?$45"A,:Q&S@U#[[;DS#T+O[_5EIO#$%7]\ M&<E;?9'WSJM>!NL4"S$$%4Q<G_WVN(_$//AB'+6KS+O)$@B0ISRH>.\@[8/> M^Z1G$"%0SWZTLUW^O,<__\E+,N)## '5=T"9)#!ZK0.!PJ@ 08/@+P8SH"!] M^G*3R@T0?05<7P<]^#P04BP)CRJA]B2(0A4:I&<KDE)9,$B'\6UP>>Q+'>8V MISF#]$]&%PQ/$34(0PZ*H32G:Y_[X/>J)@3A"T5P0A BB /=^7!<7G1:&,1 M(#+\8(8'_. "0XA#$D+!"42(( W,N#_Z %$.O&')1Q[CD+2\$8X(K.$<*?:Z MAQ$J>SM430?!][NX,*1I%CL#@&*$R.8IDHL@$$(5II"%U]2N>P<$7V%$MSSL M4.V0G?3D%AD( NI)X0M&J (3(@@#'$R2/D0<WQ_-YYLC0H59L$SD+$/82%SJ MDI<T^*7OWM &X%UR>'(@Y@O3MSPSU($YR90C*+%@A%MV*@J\U-\951(>W<@A M+G,P U3>\*5WNA! *<E#,F6I0%#6\0M3* *D3(@'&+@EE2M4R>@N@I0,S8A\ M063)/@6CQ,QMSB L?,P]J[B\2F8HBZGK)RU'^(5&$M2@,Z0D-:WYPHWM*)8T M7";%2%J$)R3AI.H\(R$3 ZT_!K(L%H/1F7ZR.W&.=&%?"((0!EH[&*10FB@1 M0Y5TXZ0Q! 5 !PI1-2T9QT\>E812H!Y!BQ!-J&Y27U15$7!0HE D=E"+2V2B M0<A G6W&D*T.*@E20*H F7;QBT7 A5,NL,8^+*/!BD#'F[B&89X<V@;Y:8! MB^K5$!+!BV#$0A&&()-3CA&Q)%DL(9."$0R-P86*+8-56]+5OL;UHE%YR'>8 M$Q?^C ]U?15I"!NFJ .VX* @ Y]:VO9.T*RH11)"6RR-&L* SN\)MYR4%@1U MD D&ESX)60ALA(24T[9(1GJ@V!9T$IDNU*:R%/,B%L#(*>A.(2QEW1WXJ(,' M_=3!(VZX;V,NDJP7IN0%-"E-,?4UD9(P-[U!6.^FDF %3X4EIZ^9;QCJVX;[ MVD>_\^P7&JJVJS" QD%<.1UN=4NQ1'VA3W\*U'ME@@+UGAA=#9Z""E#\!2@T M[,4,+D(*!@+33DJ8PA;.+VLR+)8W)&]O#6'7KDJB3!*_RD\UOO&"&VP0%,1@ M!2:&0A"D4*E*76H*.^ZQC^DCY/WR-,D3LQE.RF \-!A&(0P)4D0.;!!23J'& MT*V>*?&0 PCS#IA5:XE'))0S 9:N++F!(YU!P(0D' $))+P4R&HW!#X>!'PO MPT-26B!GE)R6(J79"1O2<(:N;;-'U!'2HC5E8S$RKZDPR($-P@(^5D+E,6LD MT N8)26[<O"\?@4!%"3EY[ T-7<0!E\FW[E5-OJ&GBY$"H%.>VH0J'/54A#" M%YC@I]UMC[,17J$<KKB;,"U%+.SZ3%20)KR/O(&*/QD)7"W:1!#802%IR#63 M<:L 0C%888*2#&^HS26M[ &.X)-SY"97&C'A9"JW>9/#D\AC\EW%#5^@9W++ ML .8@D]C')O,=B-"3S"YL+5B1B3X7A6K6=6*""\@UZS.E2Y%A^T@/;OX%X+: MMX['4MDOTFM+0_[0DMMSXB!K'\ZS>@>,@[@B/O\Y?>"P82AZ^,W:[?33?5/F MR<KR(&Q8RD^:GG%E,2OJ"*</OI@%@BUTEPX:47-IF3-R\\(]K4I/>4J#-O2B MQ3DV.0G[&"(RP[Q;G.Q/2<D<T*YR,F.8O]!*/!D0T[0K;9VR%<\YV>G;7<;O MW2!=AWQY5 MW.2"FGNXT'N&3?O,?,AWC]!U#'MBP@P0DX-*.'[+H93_J#'6E MW99_$,6^[OJRD/VT;" OQZ4^5\ 3.H"@47Z5K0:' ?:E#"D ]M*-C_%?J9:: M</ \0F=2$]]X'W%?JIFY<<+[J6A(^P8)>Y?('O8[B/_S14:29$;OW8O<)JT? MP7 GITQ@)W8Z!U[+YW'TT6F2$Q\-=VX(:!!N1WIQ9UX4E7FO]P42@B%T<'_C M=V&Z=V8@YW?UPF3X1 8 5GZ&IRMR\ 7*IQP8EQ)Y%2,>^&=.5 ?* A7_-X)6 M<TF@\U9ATP="DP9;8&(H!BB>T@4U&&ZNYQEXP!;:4Q0U *B,G<?!G@Q4!1^ M9GAZ=T8',2#CTX"4,W&A!X3]5@5"T&B<E7-F,B,N*":(T0,@8 1!P 0!Q7BJ MA!A7<D7O!@)F0EK_EUU_)R2?\P9OU#[^9@4 =WA?T#9)\05G519R2(=V6 0^ MEW!OP&17\GPLPAQ0X8@,D1N1"$N("&.+F'-]\P5;MWCX9SQ%='5EV%]4QV%( MIG7"5XK_QC!1H5=KXAMW\ 5IPHH?^#A6$8R]^!X#5T0 PB_R)$/*E(BGF%4> M109;0 -*"%6<F"4$$B$KQ57/THRM!8VZB"$R<@9MPQ#'<1'/L@5I:"BS(EU% MH(05UX6@)88/"!GZQHQ>1W'B*"@Y1U=AH(%HT3:T]X&91EI:5U?'X08$"8)F M!FRO56^/]6ECPF]& %U7L&5Y9 =OD 8,<0=AL#9DD@([H 7*049*04;V9'H M2$]YL',*$09M@!@H0)(FB9$::6\L&2)P\)*_4A8U69(GF9(KZ9'E,55!>9,H MF9.:IXIO (ED< = :9-#R91,AR?O5#/@F)15J9*,R$)?$&"LQ94XZ95-Z5-" M-))"699%^9&J2!U?P&MP0)9+:997&8EJZ5H!T0-\V9=^^9> &9B".9B$69B# M"32V9WM<0C3J<S00D9BWYT$@\!*&69F6>9F8^9>(B(9JJ)-&N9A/T9CA(20U M"0)[L$3=81YIUG<=TR98-X@148@KPW<H80;+DQ7YX6%IH </=251DR73H5=% M 9*EX9JB6 8NM7_&J!8)8A$3TQVET9S!<R6;]$U^,9SB41;_=YS)"2>\R)RC M=QY+=AET4!3Z,@8NP +=<9[ST7H65QQFX6';6!1!U8AR4)(5!Y(BF93YR2 Q M@P)4( 55H&.FV5>O 2#?P15D$@1.D 5%80*_&(PV^1II "TH$*%ZY0)WHB!! MP2L\H#W9=YK,\RL]8Z$B )I%<Q&C&1'LX9UJPB9FP"(>40)DP 5N( +#"8P9 MNJ$](0??,:&[\WQ3T1LE^1I],(^^(Y]0(8<8&B,:&I<]^AU%&A;UV3<@P*0Z MZJ2$8BB((@7X^1IS@!5T<!9DTJ1><2=Y\B4A:J!!>A2^(7/7HRETTJ8@ J<T MQS!SZCT7@:5D\)0+(95D J%9.@= ZCU:PV9K\*5TZAL(,T(-4P0/8REYRCQ[ MRA-?8 =_"I2"&HPYVJ=0*96%RCR'&I**"C*K$P;6.:F[4ZE%@$.*R 13:JCX ME*A("@)'^AIF^J1IZAMR6#WETBE0P 194'NUFJO 6F.%<BB)<J7P,@;V&:L' M8:Q% 4 53U4,$K,>I_7!7IOT"/]]8*IIY4KDA0O<%S<B#9<:! -Q1 HL#?S M"0*;JE>%>J1'VE=[F9GXFJ_Y"C3TB*LA.7S]^E:4J:\$6["$B8N*J(L<^9G_ M.I(%&A#0216Y.6KAA1CIIC.$T26@2%IWQQN0X22".'*S&197DA%:PB4_(6 S M^1\!(K'Y1K%K<2)5&+*=QD(3@1W&(AD:05I-PX?<01MA487VZ$+AX6Q%<8(8 M(:, *&<RVP(-45?E)JX1,I"?<;1LYEA*2S56XQ'&M"% *Q-5")#A&D]0P55H MR1*($23Z1AD F(V>Z+7\*A-70K. AYLONYOKAS4\T3I1DR-7@AD?$1(C41C* M>(Z)X0;J^;5^.%0 N&PR21W.YB71]AFDYVO$X14&X13C<R6*D0?=X;;;*#P- MIYMZD+>%01UK\%!S$!2^87E0FY5DBQL9$K'$\5/IL8QJZVQDT".7T5,N2[IY M:S'.MK)CP"+5)R7F65^2,2/=873KAQ@;2"'2819/,7B V")<M495DA1%4:'V MX1B-Q;O>FR*>J[A"FE_6T;9+ 7VA&[VAR 8*,KUXV32Y,1;[MTE5PKL<"#/= MD2*(>Q4;EA--\11R\ -@4W'D2&J&FW-IT)QG8"#ER5/YTH$5-XMSX(+%PF0R MN$F+QZ;?0Q\ LAMID&XY 8?"$W%YJ[W9 8 O8WIE0;="<GFX=1!KAU9R6!'. M6K0$L@7R!@)7@$-)\ 4P4&-;U@1?T&!#((\'@10/K%',BL-'XVP\'!,_[ 1! M/,1:)@5&C,0@L *HH<08108S&(>&43:[L@9X\I06+ 9DPL00G'U>7,,4_(55 MIX$N228;+)Q^2!W5AP+UZ2]%001%@0(LB,&1D0+/4A0Q8 ,IH,@VP 2%*B$] M"9/,1I.)#*\%MP4PT 4V67$?1V C_!P^>\(:(7'GIL+:X23=)2*O.7)/0C&& M)\=/K%I1O,,]7,5!' -$K,5'O%E@/'I-G%4W3,LZ7 937!"X_ 6ZG,5;O%E= M_,6QFL><)(=H8,:#E\8[5W5LC )NK%%P+,%G5\%U+,D[@0+23!1[O!)D\L>[ M$<B#7,@OB,@XZ,B-C!J/',DN2<DR:<GSC,E9L04UP,FE^LDB3,)7XHIU (N/ M=V8P'!&KF+345,)].,,&8<%VW)-D4CLT< ,UP 1%<5_J[,<OLG/M/"[OG 8M M&,^7' /U' .0'*NI^-!RB (]DWTJ\"RQZKTH$-/"AQ@^ (N-F6>DGT\'6+, M&M0PYBDY;:%%C1X@P -R" /9%\)!X0;0&K"T!L*@;- @"V>N++8+V9 4G1C9 M8<B^@0*L%D9!4!2U<P-"4*@ *9!QT9!R.!5F32;#-@5R J\BE&W;YB>Q&M=A MK6X^X -R* .QVA]WC=9$T&IKO4.BT<DT7-;2AP+R0S_VP]8D"5JY&S-B&[6Q MBQ+!<[;^H458+5_ A%:]5K+?!!I#.W'%?('1^L^;[ +TMR7,FLD!;=L85W_, M"@.P6G'_1]._W7%:\:%-71+&O0(KL*:X.J@N<(2!PJQ:41 U('Z?G!*-*X"P MG8\H%Q:YFM>48BF8$M7!_=S!Z *,XBB0(H?M. 3OF 33==57 =V:LBF>\EXS MG8X$D7TX7:S0O:7*JBAR6,5#@ 2>PC!>"N#IC:9ZPJOCTG)Q2@3TK=._Z*F9 M&JAFFGTAX-Y,X(X )=\$*J*[0Z('8J)#$!<G4!9(^]KG%MOGAJ(<1*,VBJ.7 M$:IA(17,D0:J^!EA4,ZJ 0-"CN-YL;Y#RG&U>JMAH=/KB#N;# (=OD,U,(6W M,BQ-'@,Q8%Y17CM!$ 3.7>(3<>)D(@))X ;W-FH,X>+X&+DQ3C:AN3PT?J/= M2^0'H>.CUN-C >1"/N3T?1#G2Z1)7JODO'/Q028T?2 ID 8J4 .;C=KJ6GJM MZR1JKAO>S3R&I^0O5+@E6:_VJ@(&^^F@SI=QB]6#WH#[?-JU,;"AONK[&C;] MZ)DM.<FFOK+<[*-%X1F2L6-=ZX<UH\"DQ=\J, <^6I*[+G!U0'!901"XWH$/ M.^K3! <CK(=.,LH-3<IN8KH'LB"^(7A7EROC6<PC6^30KHF2'I/[<;FN>3,C M]]&,JU$Z P+AQ2*NR=ITQ[2*RU6K*P9(X5)9Y>[1[IIL1J9JWIX5M^L,'*OR M]Q.\5Q22A\YO%W>ERGO,B@()GP(HH )ELLAXTM_"/@:2;1##G08] /&S0/7 M?1G,_>4RL>Q;D 9=P-M?T/ 37],=S\._?! L[_(P?W[@QZP87P<:7Q8JD (F M4/,!3=\Y__+'1P?)E\$SC^@UCP,W/U<[TO)*#WL3UEU/3P<I4/,Q8(U(7_4Z MOWD3)O$S7=.\%ZN8+O,S7?$L7]N(=[4=O,04:'H3[_95#_=8CP>=5W%O?_5Q MN9L0+O$%(?,%\?"F5ZI4+0=6K0"<OD2L'OF9Z>P!6^J%CNJI3A"2O_F5B;"+ MN+"Q[I.%C@)/5 8];@<[EG.E?_H==W#,5_IH-I[_=WGM [&*^S+,83,K/+=> MS8#<?6YV>W5L%"\1P56Q""W#/W@_2_F<*[W$&( .&&U2<FA7H1X T@9O4!%D MD"!D$^D-(GP7X1!DX 8KOI[*JYTMDB5I_OLU0_ '4>R[<>Q -3E?X.X[H0)? M$JOPGXQ#2!!-5ZK#;4_,-&-';<10_7L:_0U>K:,L1D*J1QHJ E_@"1@!(] % M$I?W:#K,"D+]L]67*YY9ENMS@^2I&3H"./_BPP'<#?<O^YB !;AE&J!2X381 M< )RLF>695K@>/LR()"Y?8FBP-R:CLJ+5FZ@!?B VW8'F-67$(+UI^_AJB X M!#%.!))#1] '(""U5W$4Q.C3@%1AO+BIT[<"LIQ->GSWBO.)P<!$^;":%2P+ MF"_IJ+HQR 9%G:LS10IK)YW!,N4&=!U'.2;Q#]E1A8NS!:[1:;)]M.D,2COS MP_XH7>0R'A)B(?0F;2>Z)E;@(7X.R274"<6U'5#"E% (&H4\? ;],!6N#V*0 M"C'BH:@Y=.84>D*I(4_EH7B5@3N &+Z&XIITH0=Z@1],^)%*@YMI0UW"#'2: M<^,0<A!6*0O.*S^DA=04: J$B1AK!B^K-# U$*M(8/^C VT@_'BPD%?<?H@( MK(%<Y@8Z@2G@<]) RBM0KV&XJ8%J" +&X8?"AEV&O$V!W^)SU, W)'$@0Z== M*#>P!=0 X/-M?$E[& 038 )F CUTAUD.YOFV+9=]JERM AGSL![>0]SVTYI. M/>R""[$(PJM^R <!8D2$<E$M!?S W0$-JP^3^H=3#V0X1'N8V_XA1 2!,F$D M0D1FU1%1(J8[")@.TRV^Q@<&/5T;O(D] #$EI@OGIZ(2'8!,@F$R:3Z<V 8] MGRYJ2AC.)Z* .^$O=LQR\@TJ@"GNAMJS!VQ/[^ 9V 0Z^!>E<!'$DB\:5,>H M]E&^$Q02O&)Z>(2#!Z)Y!-Z7=6)#N/-SU:M(7(DSYY%"S9FA3L@IY* $Q.!- MF,-.4 ]4(A0>PN"!^^!76ND.G0;BE+*\10)9EW2X#;[!73V4$_"+0%LS.@%: ML4\M+926)[K#'2 2O"MJP S?0(Z.G5#IBU["Y#B<VS5@6D!!VWY4Y73]..F0 MFJ0$\3 ;/<'A=3_U56C>%D\@=[YA#LBD9_-P_,.6L!R9JZJIF?[E) X2;/(T M^4%7Y FQ0&JZQG#R3[[!E>0!WH5^LL/O 46!9RJDKF&HN$9-J;E. Z0ZT@$# MA@SO($/)@\8GV:F _X>!6-RM4S+?P3P!$HCGP;P=KY!#4E$."$'I9HDRCX7R MCX1#'_(!B3&>#!L(,$)^ @F!F4Q7U0Q"JWH"2XU,!$@AN-X>!48,)1\.OH6X MZ3+5]$6%! &MR@F\JE*% >40%B1""/*7-1TA2'8NCQQ"D#$'RMB86R+4:D_O M$([/X?*4(<-CX9A@C10^(,!!)C="12$9GX6T%"S22&(<C=,9(-R&] $.+O\E M@-X!IUY.8K@(=@I=Z"(B::&NI'CS,IBB!(!($ >//J14:Y(X 46ZJCH4)6GD ME#0[-BPJD#0!Z0/.)'E[ <Z%"D"7$5D@<8Z%FI%-L.Q,L!7PWN+;= &4FT50 M1A<1ER0OCIT,?.&E1!8N$U(G$Z4L6P$?\5+6GUB%*(]/3Q!F>M)?<,A&\2A( MI93\ N=LXL&S#,8DK^1]ZQ2?PE5>2IY3J<QDLNI2I4JQ538[@V>XS&.S:\,R M"]R986,LLX^K:#2/)M(X@<UV$$\;^-B4+\Y)U*Q/(QU%C7J\0,*M1: <T7& M2%YBV8]V[T.Y&-[B7GP.<R.7:ZI66;A&!+X@44G0%]GG%T4B_G2@<AM6@B?- M:!X2.9VVI^30$U@"_FU64<')1@<6&[%DEM6C>V&<9+DL\XR7XVM^ %I"F@@X M+3M.M<1JU[)"XHO-*"1<$:B9CN;1U! @@S 3JTS!! $'\Y T2D() MC"A?R" MK@7R$44VJ!,5T[^46D!1,JW!G;GYC*(_NDJ6T2((3 6P_^1?_YN/5LTTR82K MV)&RXMT)/@K*&8K%[D 64Y" .8M#)68D/Y(#+=A);HA1U.0%7,VNUA8APEO, M7$[B!'E-UA(,)TX]B3B#$$N<+-75$D#"SP 954@57A_UM56"Q]AL6HWP;H47 MPLE23M!#T0F\D7U)0MID$*J05V2<WDCP1(2U&1G75R=Z5ZA+=3G&%'$BO(/G MU$90H48XA.0@<JZ$]]$5N5&KL)3/N!"NP_O86:53)LP!-)#]>I.3:!N+A2=@ M0"Q"55A$7Y@/@--I$2?T)[L@"B 1(M=Q5[B9"G._3*23S TGP&R.+7!T@O+ M"<B=2TR*F G>I;T*W2;J1J.MIY2%/E42R)]\0)QLI]?@._C@-:J/Y4%IE6L_ M8+]WES3A5O*L?L5I.ST<;/)3N)\YDD^^$V<H!6AQ)?KG =L^L4]*%3SW:'%2 MU]'RD07!_2P9Q&!X$AXXTQ<Y+:L$DP[F]_ CA"N53@=)\H /==T,)!V\E%02 M;>3#+ED$-,5&E)V61).9EZB&!VB :G +#%*"PD22 +]\ SST<^B3&CTY'NI# M8<!("*)(#B96G&FT!;(<LYJ9;?(%U))(.2CA46+#DY+(4GI*,!JKJ*@,V*%D MHJ:A %G6#VO'!)R ^*QP4J,9@$8/'==;HV T2?ZT1?;QZAM8NIPH $&^"Y+2 M2/KH<$M=Y!"1?B@:X"Y70.JZH8J-=K*K9B([C$,2W0*I2Z#5*LUX1,."YLQ+ MS&.$4K>)Z?0LVP.1'73.(&"(3YJ4C!0 &XUM3'PBAG[83'+)2ZLXF$Z48BG2 MEM$*E4X3I5$ND)K0=]%4WMH-_45_M/R0"4&Z0D' %'(5)$6I4 $B]XMX*0J0 M:O2M9:)(3K$P9\);"DARB0[V45U:WZPI2V.1L-(FA"5E*DPGQB!%*C4E"?11 M>2A*VVA!,0+9YZ?A $UY(GF+_K.><?)@;KJ<&0:)IN0K@WH'F:K3RYD&$<C0 M-*BKSFA^I87*3L]<;["#DF4C9!6+NGS^(.4SBZ=A&FG%*]$Y@H--T"@3IVN] M30#J'_[/^>R-H>ONL(Z'X&:(IRN1'IRD,4#&T>-0N@3I-%])=*16E=/YMGC7 M?6 M3J$O "#2]@G-1%EH#!(,.G#-JP6 GLC_$*6[SI)T+P8Z5&$J5"@,W;,H M4$\ZT!V.ZO0J7*2E?Z3%<[._0,-!.ZD'(J524)%:&!K*^QQK.6>$LDCL2"8" MU("ZH:R4R)%39%E*'0A8P1X#TT*% &XF2_D:"O@G=R2/N I10DHT8L)$5/1M ME4+"5FH0,)VP+*4DI9+:&P]S46.59DV+_))E E2#(% ='T&UB1 U\B'4'E-- M"6A::J@>Y*'&UD\G4<^2;14D@90ZI+ZL I!:7[]2)4\K-_1/O84A- 1(V@F6 M+FP 0O"6G?@B]AJ@M2LMH<VUR#:?(^B:G.O)#>0CIGJX %"U,UN_M2Q\5[MG MSH('0().T*)M"!6%D =20&C,3L8)NT84^3 3I,8+25#:SVIMRI]*FW@I5J6@ M''5)W#O]^CP%B5[ "5#5,[2$TT):RH MU$%*:P]9D/ Q12S7//&?<@L-;(U3 MF!NTEJ!QGC_ES62(;<2[>-^*_:JM$"DX%NS%'&C7?D5G9* W"%45@0>^!(5E M"!XT/Z0)K1A4A Y9%&T?J?PLO[# 5>[.7MA)VI&E'D/#\Q0;PGWY$2%TB,C2 M4B6V;F1=::8Q(+%1ML(Z/^J':!5;KN*<3E']D$[#4K)+K?_5PCX'%( $-%)* M*@(/*L=6D_H:+,?L6+IL9A9[:+8,&5S#0/;YK&/IL@ 6P=)(V!J?@0$K0+!1 M+38P3AMK72.E8^F?H%+%MUHYK)D8J'H)MN[64-<S+QQ<DDM!,S(U#]TZ:@F6 M1 5]]2VNR:6EV33U8'7[?\VN.SBNE>6Z<L-ZU8K8+TCV!>4:.@ACANVN(T?! MTJ8_E#<5"V,A+=@/;=3-<]-?_E9'"%R;@9>NU\_%(.# T>H+!(RJ6(:_-3Q M PZ0 3/@!JRS,? "^D+V03]A(G)%VS+@_HH/9_ ,1:'^P$HQ!I\81*G9MPZB M*, =. !PX9.^/2T,KSIJH#EF$&:EL6!!QH'A?H0Z!J[^4 NR8*6*!<E*E&;6 MF"0*+;AZI8R&44+&<>/9FA217A2!F8=L5C68E9 ):1^75Q8%B'MR':6.*57Z M=H-MO>QC<5GN+ TE68!AQ"I_BP8*[LXE$SW7@NE1$+!/^9H0"+J%,G/1$Z-[ M]A =TEVY2K>PV3,5"'2%;L4YN".WII$):N.T6)K3A;I#5^%2FZK+]0S=:?DM M^52?<MVGZW4-Y=4U&DHW'TJU6B4YJ(*\0 $BP B\ES.P%WR1FTM17PW\&850 MQ&]! (VR<78T!;"@/CIO)]['C:&\2@[14$UQ2#0:9V$+&HT&%*K *F8;9F53 MM)EEL, .1YL#(*VDG6N?(96"S 7T$/(1(A0Z=P>L35IG*MN0A9\]:Z@WL*A> M019)7"]<&FR4%B4&+$I"(!0" (J5T@<KNI652=9,;RD-OIIE".3;+5%P&QWX M8#M7HO[<FF\)?8DG]46TP!>S!);-DG#_[0;;;-\7K91?_X #?@N5*SSN"?V2 M">S+?J$#P7V_ERBUI3+?0'1U4(_"*QRLA/F'\_M[]Z_Z9;2K=X?LD4A[?">M M[%V^]*%LL!D5-50Y4 ER-W\$\S#,Q<9_M6_^6;B-S@:-G@&<?\;O>53 -@-: M;*"L0GRJ+PE^P/V7Z*+@J!-_67 !O@@6]@63FQ@<(CSP6-._* #[#E]'*QHH M<$!"OA?XN I@ +1<*Z_-J3A(N 2+U2J9@G&/ND(K#11V@2,KC'^Q< -.P@]X M">^0(&!\G[ %5KY2.+&(UT,X!H1*9E1(N_?^4M_3&A'@[$P$M9VNU;*ZGID M].6]_(E!$X$(15$KB U6;[U+A[@T>=2IRBSR9K7;MI.0-E7"B>1"3%82!$#" M<3^DQJ-SRM(#W7&I#$(6>E4Y\#=?0Q5Z"*O+-QPGMB-2.2=*@*N1)88@SN4Y M[YP$:3.@XG7'^=2X>8BURH#0%PX'<;8$NO-2)2<'5JKD-KL*DIFZ.TF+KE"N M3B*CQ-6E #Y5:T;UC/Z5&C\%V @@6D#P@UF1\W-:!-[%S1R#C3 638,R_JL3 M8%\?J#>^*WEURWHPA=HP 6EHI1Z%BIS65FD,E+!I?DJG_9B=UHXB,!J@*3RU L*7T4"0/:S :B/) J^5WHN!FK8V?$>O8QO7Q$>&D2U:$[-$$+%PHXF#A3 0"U end -----------------------8< cut here 8<---------------------- Doug Burks _O_ dbx@olympic.atmos.colostate.edu |<