bisanabi@vrdxhq.UUCP (04/07/87)
I am looking for a way to generate a RAM disk from within a program, and then release it prior to exiting the same program. Any information on the following would be appreciated : 1) How can the last drive assigned be found ? (If A: and B: are floppies, and C: and D: are the hard drive and an existing RAM disk, how do I find out that the next available drive is E: ??) 2) How can I use this info (#1 above) and allocate RAM to create a RAM disk (E: in this example) for some arbitrary amount of memory ? 3) How do I get rid of the RAM disk and return the RAM to the system when I am done using it ? 4) How do I get the amount of RAM memory available in the system ? I assume #4 can be found in a tech. ref. manual, but I figured I ask since I need information regarding #1 thru #3 anyway. Thanks. -- :-- Paul : :UUCP: ...!{decuac, rlgvax, seismo, verdix}!vrdxhq!bisanabi
connery@bnrmtv.UUCP (04/08/87)
> > I am looking for a way to generate a RAM disk from within a program, > and then release it prior to exiting the same program. > > Any information on the following would be appreciated : > > 1) How can the last drive assigned be found ? (If A: and B: are > floppies, and C: and D: are the hard drive and an existing RAM disk, > how do I find out that the next available drive is E: ??) > > 2) How can I use this info (#1 above) and allocate RAM to create a > RAM disk (E: in this example) for some arbitrary amount of memory ? > > 3) How do I get rid of the RAM disk and return the RAM to the > system when I am done using it ? > > 4) How do I get the amount of RAM memory available in the system ? > I doubt this is what you really want to do. It would be better in most instances to do the paging/swapping yourself in high memory. However, assuming this is really what you want to do: 1) You can find the value of LASTDRIVE, the last legal drive number by calling INT 21H function 0EH, set default disk drive. If you set AH to the current drive so that it effectively does nothing, it returns AL=LASTDRIVE. ie: mov ah,19h int 21h ; gets al=current drive mov dl,al mov ah,0Eh int 21h ; sets current drive from dl returns AL=LASTDRIVE. It would be E: or 5 if pre-DOS 3.0 or if the user has no LASTDRIVE statement in CONFIG.SYS. Skipping over A: and B: which are always used, you can determine whether a given drive is in use (real or redirected) by calling INT 21H function 36H with DL=the drive number (starting at 1 this time). If the value returned in AX is 0xFFFF then the drive is not in use. This process can take a little bit of time if you have a hard disk, and generally you want to start AFTER any hard disks, which can be obtained through the BIOS equipment check, but this should be enough to get you going. 2) Buy a good book on TSRs. This is much too complex to explain here. Basically you are going to hook the DOS disk stuff and handle it in memory. There is source for VDISK.ASM on the second DOS disk which should give you a start, but it's a device driver which won't do you much good. If you can find source for one of the freeware TSR VDISKs that would probably get you pretty close. 3) See 2) 4) This is easy. Use INT 21H function 62H to get the PSP address. Its returned in BX. This is the paragraph where this program loaded, ie. the start of available memory. At offset 2 in the PSP is a word containing the top of memory segment address. Subtract the two to get the amount of RAM (remember that these are in paragraphs). ...Glenn -- Glenn Connery, Bell Northern Research, Mountain View, CA {hplabs,amdahl,3comvax}!bnrmtv!connery
reintom@rocky2.UUCP (04/09/87)
This is not a programming example. It does the job of creating a RAM disk on the fly. You need to include a device driver in the CONFIG.SYS file whic takes up about 1K. I have another driver that does the very same thing, written by another person. I have no big preference of one over the other. (I wrote neither.) I think the other can support as many disks as you want and this one will give you only one. You don't have to cut below. Uudecode knows enough to do so. begin 664 ramdisk.arc M&@(Q,C@N0D%4``,```34"P```#\,E`B=.@L```!R86UD:7-K(#$R.!H",S8P M+D)!5``#```$U`L````_#*H(/_P+````<F%M9&ES:R`S-C`:`C8T+D)!5``` M`P``!-0*````/PRR">-O"@```')A;61I<VL@-C0:`D]&1BY"050``P``!-0+ M````/PRT"$/0"P```')A;61I<VL@;V9F&@A204U$25-++D-/30#46`,``!`- MT@7M?P`$```,Z2H!`"`E2!,B("`=```I0\$F((BDF;,&!)F)8<2P*4.F@0(2 M#R-.K!B&C9PR8<CD`5$&ST0Z<SR22.+&3LDT9$#,2:.GC$XX9<:D,9.&H\R0 M$BE:+&,GS1B?9.2DL5-&#@@W;^B`2.-F#IV2&SM^',@+0`!=E@+0TM`LA*X! M:A^T50"L3I!%^HX5<1``0*Z^M$ZT=60@+;I$`.J\6)",#@83@'SH`/"/#@IT M.Q)[0-<-P*)I,H#1BM'6A#$#DP&@>P)`%XH`ZQKH>@,;@2XKL`?HXJ$V05L/ M,X!!618%%YP!L0A,0Y=EF`$H41P<6)0-';M_`[!-"30,`()%RV@I:;LCVY8L M=10L&K8B&*-G`_#I`(;EP#`3BSS@4$WLWPIL!C@R#"U)I&.$`,/X$HAJ3/B% M1@!TN$#"%S,DP\,3=2#02@]&&%&'#>MXL(L"`,A`#BOHY)"8`I'<,XX<)$0R M`#+KP,,8'1L,D@\!<E@02#X@#'`'!.A`D-@"BP03BP'3@+,(,O,-P]@P3ABA M"`$\@$!'/CPT,`P+,,AQ``\)W#%`E$X,,T444EP!F0\W#$0'`Y#9``,`!)AF M0)R>91-+`=.L8T(B'K@`P*`^[(=.!*H)H=H:AYXVV3]?:)'%%FKN`@(`N/3U M(P`@R,&!/\`,L,VG4,@A`:F?`B*'`JSF`P`H<@A`J@FCQ'`HH2P`@"E^'N@: M2P+3C(.?!2D`,(TX`TQC0BB]_MGD`,(\&=PB^!A@`F'[S:.*?=J"<B=^/B2[ MK0'[#3O-.:K@\L\_J]C'4`6+V,'/(,8(H(@1]RSB!0*(4&8$/__880`Z3?B# M"+_K=#*('_P`8$<$]?)CA+\(`((#"'44\(\3_*R3#BBP3``--G.(L,C`&"-R M1``%&Z#)#`!P,=V_C;P,A29PU'R`)C8$8/,Q1N@S$-'X#+0R/CL,/(<2@P`C M0"+&8*PQQP=$5LL$`-`10[WXX"N`U1O7T4"]^H@-RM8!KS,!V&(OXD?:QXS] MKR(`(`)ST?\8@<\ZKJRL3\LO[WN/*+-,\'#$=1@1"PLX.$#+!+!4%@`04$26 M>`.5TW&Y%B((D[D/DW-N.>:1)][YYZ%KH0!5<NSTAAL@Q.!"#'="0H`!;1UP M;J\$]MX=)&$`&@A204U$25-++D1/0P#4[`(``-4,)V*-]:<$```,("`52.)F M#ITP;-B`H(.F#`@R<M+8*2,'A)0@38A(L>)B2I8I(-*X`9'G39V*0YXX,9+D M2,>/(,RD8>-03!X08<B0$7EF84,0;$26T=%`0=&`%X@4L9)D2)$>%S-N?#FE M:%$42<R0-`D"39B).+N&D4/F842P(@TBI$F&!8@V8=8XG'/2(<,P=$"D7-F2 M*DXW9:-JY.BQJH*Q-=\P##FRY$D0<MXH?IA&3IDQ=-[(R>,B!0@00=C,>>,6 MKEP0="W[Q.O3(9S(9^2$:6,1(Y$D4Y:X2-FD:)HY..V$F1E&#$W&6Q_#P8O& MA54%`0UD;8TZC\$RM'^#$".93IFR=](L9JA=\$:S$BDBW\O296&W82#/WCEG M3=$W6L.XN3DGC1Z'8^BW'8"6X?7==C?1D0<</#T7$`>"X;8$:L_=T9!JP&G' MD$-DE-&?967U]Q]R:\STADW>S>'"9T9H!D(9>,P&!TUN19@;"#;0`,(8!:88 M5HX@3"A;&_2ML2((5*"AW9!%OA7&36(X9%D;;TQ4EDT++<A3;1E)",(31ACA M%D-U`&>&965L60<<U+6!G68WE?G=D4&`X$89=\A'Y&]K@(!?6#N9809%9;B1 MEX@.P95@0R-%N6./<SH(B0%"X#4&&C'-Y.%";SQ:AH%Z%@G<GS/8`(-;,>!P MJI\5Y=BG5V!%62@(KU691H=D.*?`%&FT,6.""]KUDQMUM!%E16:\D=`;=QR( M97P!RA%1&&=(608=)[D!'V`@V/$&<<F)!=:&177XX8%#4E9?")]-%U^@@UIF M*&K^.;1D&7'44=EW;JE19EX*PF'O2"*`:80(VY9%K@+I-AE>0@.J6QQ;=`+L M%<"]SM7KKUD*C)Q^BEU([XAGOM%&41ONJ"Q-F*7QQDA_BL&:3#2I*&D!22XY M'Y^TPI:N=G0)')&+F?FYH1S`?34<&Q/7=%D8<H:4%QEO;.J&8D59EN^^D)7! MG6);%EVT96.\+-,9=5''),^(ZJH!&@A204U$4E8N4UE3``#4@P$``!`-T@5= M\P`"```,$@!`(@"H"8!$`*0$:4($Q,!_`P&`X'$00`"!!TP``"#@HD4@`@?H M$VC@GT`"+HP9V`'@GXM$'F8`<,'(0`T`RU*NW+BNW3,`O8`*Q1$@J%&A1X\. M`^`-P#VA"XHB!4`D0-6D`#AY,`!E2A0I5JZX*!83@*(C`@0`P[0(GPM`/EC^ MHW/`Q;]*50"L*V"WTAL`7[QHR;(%RX$/G98%>C+`XC!C1QH$.'9$`@D`C)Y0 MP)4K0*(C#C)#6-PXP#`7H&#,A'NC):T`=`30^H?HC`/2CBE+T)B9@L[6_W"; M?NM#1\LZ']`Q`5"'`K$_#CR@NP(`'1D`'Q(]D2!\&&D$@;PS%A#^>6ADJ[H3 M-_ZOCCET$YAODQX",S9'P!;Y^^"AV!T'Z_2R2&6+(+/(%10,((P+.QC@`@!W M"*`#,,-$$4L!TXCCP@`6X`"`(]K,8$\6%2X2#3H*`)"+1?.4HD0=]9`8B#\M MR;$`(]@4`,\#@;C3DB/8!&+2/S8R`HR./+[S(X4"'0$:`!H:&AH:&AH:&AH: M&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH: )&AH:&AH:&AH: ` end -- Tom Reingold; The Rockefeller University; 1230 York Av; NY 10021 PHONE: (212) 570-7709 [office]; (212) 304-2504 [home] ARPANET: reintom@rockefeller.arpa BITNET: REINTOM@ROCKVAX UUCP: {seismo|ihnp4|yale|harvard|philabs|phri}!cmcl2!rna!rocky2!reintom
reintom@rocky2.UUCP (04/09/87)
In article <3347@vrdxhq.UUCP>, bisanabi@vrdxhq.UUCP (Paul Paloski) writes: > > I am looking for a way to generate a RAM disk from within a program, > and then release it prior to exiting the same program. > > [...] What the hell. Here is number two. It is a utility that will create RAM disks on the fly. begin 664 ramdisk2.arc M&@A-04M%1DE,12Y$050`S````((-JV#%86T!```,<\K0D1.F#8B``PNZ*(.G M#(@Q;,J$<3-'3@,%!`UF=#$GSYR'$2=FO(AP(T.')16^N9A`3!HW9!8V/"@P M(X@6<V+`@#2`9$V5-!.V<3&&Y1@<.&2B_&F0#IF+&SM^--F0Y4D9+MTH!4'5 M852/4!6>Y*J29=:88VVV"'-SCA%(!,(.?4-V:!B68>:T0;K5IM.+$"52M*@@ MP9@W;=I,C'G8X(LQ/<H0#!ATXTH%@446-(I8,4RBB$$\CCS9J]BJA1M[9AQZ MM.2\IN=>U``:"$U!2T5204TN0D%4`",=`0``@@VL8*15U`$```QEQJ!Y`^*- M&3,-%,@ITP9$FS!KRH"0$Z:-BSEYYH`(XX8,B#EEZ%"T6`:/Q#ISTK@Y`X(. M&HE$RDQI$W+C')!MQ+`I(R=A0C9AZ/#\&'*DBS%$159T4;),PC1F0+AY0P<$ M3SEOY.RT4X8-B!@@SE`E.!6DTC8)Q^#`D73DTZA7LV[M^C7LV(]TWL!)&'`@ M"!`)Q:CT:'8DB!9S8L"`-."M53E8M9;AZA6LV+QX]?(52!"P`C)T"R]]DU!' MV:(5?2H`*E3.Q*5A7EO$.,?QU*IQ)5.N>YG@G+Q[%829TV:M;,>YYU:VB_FW M9@5].P<>+/MP;,1&(!'8[-=S4QF"W1S_3-<H:?)>C39-"#K]4MH)%XHW&E[V MQ8REG0?7`!H(4D%-+D$`(R,C(R,C(WL)``""#>]@#A&-$0``##L22`G2Q$60 M!$VFM"#R9`H(*S)<P``QL`D((DFF+`$!1<J3(Q4;*`@89LZ<,FW$L"D#XDX: M.FA`P&1)I,R4-F7H@"AY,N5*.2(#,DFSAN5,$$F$6)03I@V9-'/6@!!31Z=+ MF#M!G*3#M`T(,V7"T*DCIXP+$"U`*'F#Q@T()V>OH'E91J3(*5*0?&%2Q$F" M!$6B5$D08\;?'7R='*&"Y&[>+U.H!/EBA`D1P((3&$ZP(W(0*E4<&DE2Q+)= M!40D_PT\&*_>Q"MB<";R.0@(*@.=3#%21`J(($2(2"DR98K((4^J.*&R.G/J M("MHW)WB%_-@Y,JIK)!QV+,4*B"F%!E"Y8EO)U6:".E]>CB5+T*R4"EB/<'S MP^ZK2'$"(O[\TT)`(<1D4.!6'W;+'0;%$TDLU]MM3_0G8%`)-)@$%4D$P402 M6A0ADG(73M%<:X\E)I(04GP!G'!?P%"?:WOU%=N)*:Z8HFRL)8"BBL&E",-V M)PKX18$I/F&$$?7M:&.+T04IQ)"X05;$$4D*2>071AH!I`(B)3"$>$=02$01 M5B0Q1!$@(%$$<.PIX$016+PWIA7V79%`"S&P@*=(G^&65!7SU9F`#3!`,@`2 MAR7Q!'E,:%4'''"\(0<=99!Q%VZ?39F%H'-"ANE\1V0A4H/S22%%%05R2N87 MI(K4J1,$T4>$$(0=AIYZ#QIY$9EF$M>E?;3"P(*PQ`YK+`SMZ97E7T38Z2)G MPPE&''AJLNE;EN)1(=)C8#+K;'=3-M&7MER.Y*5^PRV'E!-&F-?$9XHZ(5)Y MDC'A;0+/[G#K>M<:$=YXY4GA4'FWY;9;F]Z])]X0@N8[FL#@+1RP2%9@I!&4 M4C3\H7@IWM<LOL,>%EIO#M$F6<%!Z,:;;S829YP"`=(J:`TQ<,<9%`]*;-ZO ML];*F89,+`KO$_R!2.Z]^4XT',=6%$$$S[3*QED,(!CQ&<]VSF#S#A@-1YYY M68`PKA2DO:RSP/?&``.BG)T]\!/UBB0N1I-1D07.P.)KQ!!L[S!WAOW)YZ$" M5BO,H:Q9@_NUP.M6_=G+,6-\;\QR.YTAJW[UC.=A?]O6X$5D-XV4OS&<9D1V M00BA0Y<?6WCTQYU_P?=X2[!NIQ!5)&$9?!,J(*BBC"9A>X5.0`'H\'!>B#P6 MROO^<?*OVYD<%<9'G\#TU2=@*-=$@R<$W&KZUC391F318)C.VPG]\LW_OB@5 M09_6(&1!-*U#$T_0&006+!"GPQ7F(0((MB`$+*S@.5UH6_W0-`2@D>PBDND2 M_NA$A"G\+X`@&%G'),."_4DP?PG87_\L"$`I")"`!GS.=KKP00J2$(,:_((* M9=!!++0PA/SS7PE/6,`5%,<)">R,9+[SK\7=L((Z2)B4AE##&XI0AQA$X0H0 M1(4@4A$$NG*;$Y$PK".^T(00JE<3?>>>TS20"4/@D7!6Y[L)XI`%2%3BPFXX M!":PH`;:&\`.0+.?(@;,(:2*$!2",!"0!`$*2'A9`J:`!'N)L(Y=6M$;D5BQ MC"P!8W3D(A+]@R9Z:8@S0\!"#Q*S&"0T;H>*=&,=N]A&$%:PAGGT6_[0U++B M0.@B%IR"\'R'!?,L,@DLT&67REBN@$1F(*`*V]A$A9I5'3-3H6(C0D#X)1UP M:THC[,X"Q6;!`M+1@H_)$@N\Z3LF$%-,O#K3NDIUJ@*E*65$X(L47+4J4DG3 M>(RTCXBV-X5M>N8_OL,GHGP5T-`@RH,%S2<Y$R!0+]DPH8@BPD,9:M!?=JFA M&*'0(HL0,<F`YFV_84*CGE"[5M()BF"4(HP\0QG+=($%:EN;$^WH/RG*((&< M.0)'JZ8<\L0K<`!=9"-#:$?9;`]#XG*(#+;(RFE2$)C[B^7IG.!3HF'Q2-FZ M:$6_=-$G0$&?75)"$[ZZ0YXN)W5;P`@+BXD0R]EF=D,HZ0YP\I0P:(4.8JG# M'$``%;10+0QFH)0<0%"6E92$)6\P`PAPT@9)Y:%R=).=FN(J33=J"(X6C%V# M;N@_3@ZPA^Z!C^!>JJ&PCA4PS",7A7"G.P$*05$.&61%./H@(00MKB?*W>YB M5ED0HI2'!HP9@7#S4FSME'(F!<P7@;L"X6)LA2S@JN^&<%HD:M8),`TK?=8W MW>I:L)(7(U)3E:`%U+;/C=9U*^:R.UW3))<XF-4!>"])I","TT7;ZY!'L`@H MQQW-LG9,;V3MAK,N]3)CES6J'MLE!74F9"$-N6702/J;B`',/""@HA?OIUX" M%Z.A29!I"*T@0H#,[?5AD0#`#H!+GJOYU(O]@8`03-\9W(Y["%>C(OQC8 M0`4TDT$+-M.9P\%X:>#15>%`L(*+),%K`6-F`@Y,5!!OJPA?S7&)3[SDC(!` MOT\P[5>Y2Z'A`.<W?MR9`AI4/6E2]ZL"OER#8,JY("P!35/0#YHZUSCA)*%I M87V3CH#S!>YZ"6C$HQ^@IXOH,Z;11H?1J847]YL>N:Q+?!$11J)KP1C>AS-! M._.8(M.@H?&GEHJLX],4,)RO3E#'VCOQ!-%D9@&:+`AB-J]JS74%LLT'S6<3 M"?8`Y6;O<CBR<Y::W^R,9SV#@,^?\_.B$Z`$00^("(5.;9?.:*_Y]7/:W#XT M&M68L9SN=-08@A6&K(IJK>:S@ET=\S[U6+U=D5K=/PTD-W60T>1N6ICEK.`O M.:T#3ZL&U$\X\Q22TV!:6KHXVW9OJYVJXUR3&6:$AEYO3[K<SQIPI9)I*1%> MB@,8P$`&-Z;V:2\>$.#!;Y<NWY";$>WM!<HXOO/%9,`U#4PD&AS7_K9@6I-` MVHF*=<S:9FO,P[SF]P5MYB)-]+<'1]%W*](R/"?XSV^.Q*&OU:D.C>_05QAO ML`9=OA:C+V[&"/9'3A2]N;RPP-C.2`3W6*H-$N"2==FA2`;GC:&DHQUS(&(D MV#VZ(?9=@QB&4+`CL:R%@\SAV`YW'7CVNGHJ7;DHA)PFX(\_W-4X0[UJGUV. M/LNF7Q"<)ZIZAY9]H:UO?.L)>GJS)\"<'#U-RY>CNPUIP=2C<L*%-OY&XX+' M=?@A"%(<\AFQ.4&`NF*,EY$S)L&S@`:Q?->=.4+(("BR[H!///$8CX584HW! M%$G.\S,(!7<C2KJU[W<(_RY"C,1R11E&U[@RK,B&TK[U\'9V925%2M(C+?)2 M$X%BX&$$P^%PPG%I`AA%/52`+!(#1;=AGB5%1C,%+R4;.T`T:&(T&S:`$V@E M49(EQ855QV6"\Q2!*56"3W(E8/)2\'=TNG8:@/%\(J$!&@A204TN4UE3`",C M(R,CY@$``((-FEX.X@`"```,_R`1``#F#P!%``(`@&1!@,*$(`!``,!O`("( M_]P$2`5@%H`7`>H!*!.`)$D&`5":#-`C@(E%1QR,X@#@Y1$(HSS4A$EA%(:= M1R30`C#*`H!AH7[&*C`-W``#&@ZZ,!H+@"-L,^P-<\'(``4`+A)YD`!@F0<# M4*9$D6+EBHEC1RRZ5'1$`#1P0Q?A<_#!Q;]2,`"`>E$34<QTLFK"E1#1!*,G M%`#Y(!R@SH!TG@`,\A$5@.5TE``8,T"9GR.H`'X!$*P"`(T`HEJKPO7OWZI< M_3[(`#9/53HX`"13KK,"W9)_Z,[\<T',!TU^\TJMRR(\81T*Z&@@A_+/PX%% M_EP4L_$\^CH?;^,*`+3.!CH,_T)%+>8<0*("ZU"@4]!=?/U%!2S2A``?C!+5 M(L&,@@(`T:`S0#"Q)#`-.D",LH)HI`'PSQ=>:)'%%E@<\,$RN&@4"P$3`N'` M%P,<8\`'<#FP6B(W&7-$`P$LU@(`CU&PSC04L"``'9>U$IP/>[!`0!U1A)($ M`"THE(@1^BQBASZ`\!)D`'04\(\3^JP3SR)41@/.(O`$8HP/*_Q#`SH7S#`( M,0+T4%L=%Y"ICYEHJGF!$6[BPL8`4*`#0@AS$F"E/L80$J0`ZQ#@CP%)XK(: M%+CHH$*A>@`:"%-%5%)!32Y#`",C(R.^!```@@W\8(>@\P<```PO5("84H8. M"#IHRH"0$Z8-F31SUAQ\<S`AB#EPRHQ)8R9-&3(@W-1I(Z:,'!!OS(!8(R8/ MG3)S0*AXT4!!0!!MZLPQ6!($FS1NUGP$<2<-0A`MYL2``6F`3)HV!=Z18_2E M&Q`M02AY@^:J$Q<@KJ`QJG!FS9IUW,Q)<\;-T+5ZRNQ`JY:M6Y!QY;S9(J,+ M"S9O-O*M8:/+7`5`#9J4PX(,53ME_@9F\88-F<,UVX0!BB*,G#-C6'@^8R=% MS3%H/,M4,=K.CCTU$R0&D>:P;#.=/X_A(2,%;`4ZPYPIHR,!G#ITYJ`0,:<@ MPS9(0<#1>^;YQ(L%+Z:)BU+E\X<1:5]EZ1(F%S<B4M@VCERYB.##=9Q/O_YX M\N7-Z5AWG`;RRI8OQ00)`710%`8;@(T1QDLXE='&&W+D`8(9$"[4$'AKS*=> M;.S=QYQS#8'`GW^0+%#@A'*4H5`;#D(HH1EZ0?<=1&O0QV$9>!B%0@P;*I!` M'[&ET4-K6\30Q18P&!8D;FGXT,,)89R0`FTM]#"###LDD,!-^5U7!QP9G:1@ M<T_%-F(9/:31P@E!G+!"#+9QA,*9/,```A]\B/A8&3[,P",(9[QQ(GQRQ39< M@9:AT.-M*%1&AF\<RCG:&#[T]EL"3=GGWHSA'9AB&&1(F%I,+#X8H8T^-H6C MCCRN!Z2/"8S!1AF>*;K>JG2@`,.BKS(Z*0\S0`JKILNY05&I+H)P8((+#G4B MIS4NF@"N._(:&UQH+OA&&KF1QE<7B\J)+0\XW)DGMC[@`,.N@`I*$:&V)9A& MD5WT,"X/<%Z[71D\\-"##8>-$,8<;<3VH!U:AH$&"S0HC.D`.SSXD!D23O=& M=0W%M&Q@S8(D1H)K&/P&PK'BP<(8<UQ;AQA:CF'R4FB(3/(=$(*4X!<GXR&S MEC3+87-@:>#L\L[3SI'SPSOLY)E!*4FWM%%IO.$&T6*8W#-(V'Z1P`YNW:%= M7$&Z08>6,L00LX]JC*'E8F?Y>'#")J.,]*'2;2NV2=>5X88=:>CE!HMB8P6R MRBPG$,;+,)R=P-M%BZ:SVR.O;31,.O`U!!I=$*TPPSF@@309M"(8&`AZ\^TW MX#P-[F-B9)L=6]IKRR%'VXM';KC)--``0PV>;YW$$T-0P00("B)X';146UVS MGOV5\0719)B<DAE=ROL\Y"2[S'#88R=0MN)JN*%V`F^$K,!B.A!]->FRXWSX MZVW`H:5F0'VQ&(37EY\^]G"SX.>ZBF-<]%BPOJQQKW7@BU_L9J>`$=3D?G+8 M7X?<`\&0C*0D)T'5M&1G@G_-($ZX68P/<C`E^Z"F5HMYP5)6<`(82,DV)DR- M'%"PF!*LL(4OC`VQ1`"".6DD#9IA0PHT2*U6U>15-3F4HQ3U&X$13'.XTQT- M>K>#WP5O>,5CP_$N1*/D$7!Y9[I>[4@VP.E5#VAB9)SV9'!`[[D.;>-C6P-C MXZ@>R`M)2E(`$J,"@B',2C4(40BTRJ0`6=%JAL)R8L'X9[B%T:!S2(.1BAJT MR#%*[HL^0XEEQ,@Z-X(OCK*C'>,.QS#=\4Y+502>\(BWK"TZI(N,K!HF01)& MZ$G/#-3+3E[>D$;;:8\&;?S>ZT#)0`?Z*$5TJ(,<W'"85VD`&@A3151204TN M1$]#`",C`@0``((-J5[F<+,&```,1N2\::,#!*0":MS<`=)FC)LQ#11(*3.F M3!H[9<@4%),'1,.'(%#0<!%#QHN1-U)$3)"&#(@@063DL''CQ@X04^JX80%" MQ@T02L*X`8&C1L\8.FC02)H#1)DY="(2"4.G3,&#.7?V_!ET:-&C29?2:/HT MJH(G<M*<2>,F#)L6`0<65/(&S=`K:-)4!<$CX<*/8WQ$;/)T3I@S95HDT<BW M*(R2.&#(4.H"IDR:-Q@Z#!R1RINK!RC.L1,&3P@Q9<Q:21.F((@FFV_Z!"J4 MJ%$9,W3`@-&B"!$J$:?0H5IG3D$I3R)VSCL'A)PP;<BDF;,&!-0P<N@T?U.' M#H@[>M&`<//&8YDV;^3D<0'",PBW;-Z,H5K&/'KU(,RD!Z$71'&K*\V1VG-M M@$!&6AB!L`9'5<T1T1UHE"%'?0=>5-]T(-`1H8$(UL=&:E7)\9X;+BV81X/\ M-:=A?6[4T09J(KYAAH(,/I5A>?#)Y\)@YZ77T7Q#O>$&&QVA]AX;\<U7E4L0 MEC'4BA.F",(8=<@QH1MT$#E>>6WTB%^.2F84$1WEK>@<=-)1MZ,"9>`!'1P? M\I3&C&82F&9U&%:88'U"N10&"#;@4)V=T^'9'!E/I3$A&0$.")U3@.*@G`+N M(0HF?1ENV.5]'6E(U7=A-'?IDOGM5R>:A?+TGPZ-TD$@AQ8^&&&4>EZHXH:U M@O`A'2&NV>:;<?)'YX:$4B=EKF6T^FJR"BR'8;'5Y7A'<W7`<2,(,\A@H*(4 MD8F?DZZF82-;F=8GT!O>23?A&-ZNUUEY__%'!T]0UM=&<=X9^2<;;%WXY(9C M"&F&6B[,D4=S`W^X$J)VI%%1#P06?'!$?0H[(G]NZ,4:&V=&5^BQB2Y*[X;\ MNL%L`@*Z^FBN)C88$9`@&`E'=QB7^UYW;[1)D0MB?)IP&6M*)>0)WHUJKY<= MS5ENE!A2:26X6I*[J8_O@0"'0&>\ZJEWX"$YIH1ML(5IQ69,6%^U\C8WM7H\ MA6ISRJ^NW5'7'.N+I'ST^6E&B&,R9S76KU8L]W=I(!DS10/5)^`976*9$7M! ML#''&SR1,;1W<NCTWM=RA-U652WTV<)U>;0PX1PM@?OW&UD_VN10@V-HM$OZ MB7BJQ]1%A-I\\;YN,[3V49UG&;,'CQ_=AUM7!N/@/AY1$C/&?BCQ=X?I$KE_ M\NQSX66,[*3Q<Q=>M^++-TZJ3G04WG=]VGOW<X9@B]T@3Y,;>+G](YZ8EQMG MU+QUS-O[T'OV)B&*&8AZ2:)*&H1D,0UA:''F4R`#`U8'-KB$=P*JVM7>((8/ M%0@%<ZC#&,03JHA,:%1LZ=_@P*,AY:FL0/O)G!LRQK^JA<AS8R.1=8;3D=.E M#DL1V6#KVI""-0$:"%-%5%)!32Y%6$4`(R.3!```@@V47FSK``@```Q-M``` M0```I`$@#`[X]P\(@!03#/XS^"[=#`%5%K$;Q$[`(#\$!/21@<L``"CHC@P8 M1$P`KAPGT?58V1)7D)@S:+K$$S.%3EP!8AKSV'*1'0.+Z`A01(`6@$1&_'WT M%X8/@4%N_(%8%+7%S0)!1X58Z6,L`#X'!I4=\,&/@'6;T&T(H+;$``!T3GP, MZ8<"KE4QI1%U&13EF\'H)@3`-1"EF,%[!_3Q:RSFJL%`8R(9;-3`/SH$T#&@ MVW)4!KH^3B.0@R!0Z@`@!M@9D.[%OU"GHX$3&R"6`=P!INT^34L)HV2#TD%( MY&#$`.8?`C@*MLC#Z68AY(Q@A*P%!`".@)EP9(`%`%I)L,N)@*L`D>IC=47/ M51#[G`*C/@Q8MX!QC$467!?".O#@4DY,&$!F@GX_J*5?`GY,$(I^F>2B``#W MY%,`##&10YH`$PY0X849#B(,#%*@$\V'N,P3$S<L%H9.'A\N4DX7PV3$#BX$ MO.=!?/,)`(!ZB$P8P"AVX:@C>N3991]M</S3GH_QS47?D"',01L7_^"HQ193 M2%'%#,#,T(XO`RGRP!"`Y`,"'?BTF0`=\[2Y`AWNM-E"'0;X$I2:;.8#@QPD MM)G#'1]`@0N)Y2R"#A:`I`-#+0#\0N(Y`P0SB#0`#*`.H.M<LT@U@_B#UP'W M2',/-H-HT^4P-C#B@00!A"(D(].L,,P=M$T#`!(]``"!'`/@\L\#L1`@W`[$ M:)G.+P#84-U`-@S@@9"##//'#N/4(<`BX-B0B`D4!$`+#-CQ((`<!MA@C`$6 M!!#`NQ,U\"X@`("02U"^,&2$(H0$`@`/#8#&@P)US,/82?<8$Q0=`;S'SPKF M:.1$J9^9`+#`/+Q)``\)U$$`+`"L(P$@O.#[Y@$HXQLR`8UH,$40B+Q%S14: M51$%(]`X@LTB/@RTB`-"AD<R/_.H,L@Q'IWC3R(^0!``.@/T0_(Z`F`!J0_Q MXM44$]C]8P.M"T.Q#"ZFHL0#`"P)`,M;W@#BPP4/*P`*W>_277)3`6#G%`\: M0#R,L?\,@X464D`!B#X('R!+`^@(*8L"M`B`G>%@0J'(`0H`0P<#4Z#$S3]M M;S'$.NX,([?>="QP][P&Z.W4,+0<X#<`M!L@RS_8B4+W[(<G3HL!EX<B]3!: M+$+,/^)\N0,[WBZRSB+C3,$\(]@,PQWR'WC`O(Z*F$'`(E80'X)3.)X&@0#2 M##!'&73($48;(+0``AQRO'&&_/33\08([Z,#`-.@AS*`X`UF``'_R)"&.:P! M!.ICG_O@Q[_ZW2]_^YO?F_X7P`$6\(`)7&`#'Y@&-X!@#6+(`QW*,(<+U6$. M83A#&71PH0!6D`QR2(,=#(A"%;(0!)`@@/]`$`8VL.$-8PC#"D'0AC*TX0UR MR`,(S`!%!<Z/@0ZL(04UB$,=&A`2"QBB&>10!@,V\8E1G&+^Z"="!P*@C0\L M(AG#0`8IHB$,<V"B$Z&8!P"XX7]GY",1C8A$)9:!#!NT8ANPN`8`E$$.^9,# K"-Q0AS:(X9$)`0$*R%"&,:2A#45,@1_?(,`R_+$.9T"#'M&8APM!`AX:`),# ` end -- Tom Reingold; The Rockefeller University; 1230 York Av; NY 10021 PHONE: (212) 570-7709 [office]; (212) 304-2504 [home] ARPANET: reintom@rockefeller.arpa BITNET: REINTOM@ROCKVAX UUCP: {seismo|ihnp4|yale|harvard|philabs|phri}!cmcl2!rna!rocky2!reintom