c"-BAMDUA 045$BOXINBOXARC8WkECHO LBR9{GRID LBRJbLSQ LBRa =N20 LBRqSETDRU LBRSFILE31 LBRP}UNARC11 LBR ؖ ΎECHO DOCECHOFF COM or of course, you can just do a RESET and reboot. Logic Associates sells a manual for SUPERMIT and has some other handy CP/M programs at reasonable prices. Write for information to: Logic Associates 1433 West Thome Chicago, Illinois 60660 (312) 274-0531 Mike Andrews CFOG P.O. Box 1678 Chicago, IL 60690 10/30/86   GRID BQS"n-GRID DQC#' v&HGRID.BASX  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLoMNOPQRSTUVW)E3$dp}Bv%'I EN&L}H"+kOc ה[ sN)ZۿW^S+Ѣp`;"%E,4aDȄ& ~(Ʉ @D"EJ78çOH1` caFDXx읐g& ~}O1+-Hikb$AI,oz<>dc7bw~ʄ @D"EmTѪh[Wy ɗOy ,]JQ7 IU &q̡ _Hv(\6&~(I 9~3\ɜl>J0,iH'FHIYi7)ݎR z@ !aB%n]ΡJ!%EmTѪhw["EY,0'ˆH60y!yӓ$=EXOW$ I3H0c=@OgeC&di| wf=2ϱ'08$1Kp,[ sL *shz|@<7L:~~wCQ౓ r_1၈D:v =l7H v u𗔢HSHXB)?kH8gjTNg szgj6LmFQL>0{@ IcD ;\rՉOa1_O5a 5dQUd-W'JF@ġ+_S mVc?p8ÿn0zN%'P,+1RqV؟j'mڈN 08|ɑKN<~JLӸw+'3ɗ`=!aBSח2l h^Nِ>=|꣍~hӤswA:|˴ɑ Ka6Άlž[!9(ԐEFVHH0=˞A&di| z|@<7L:~hcj]g2fTcoV6ΆlvR[l04${ ]2{xi5SG_FwI!z"=@r䒓$k {]2{j"JmB[wJF@ġ+_PP0`=R.6L0GN tT9C"!K*BHΈ oXOL^$w \shO\NYSFv֓7 !9#2 =( .qI^o.)9+Zhj"Jm svR-*8(*+ѾPC1. QeFVBrɐ0!!! !9#"30`nKɃ85Hjۘ{Rۨ2{ 5dRۨGJm "fTwR脹s $.'%' 1M.OiJq^k;̑B$X^ސ)蝐ߑKN6`nw.ONk)T ]2{>! >t29֣7p l WC D0٘{#SS?OE`O=ű!MS:);!#lwBvX%w8ɱn))P)($^IN4(T{0s/Y qfr䒓tMaQjUW}o,b\jٹYlM( $䒓  jȂ&coD|SsFh[!FqvFt>#2FqvFt>SzGw sFh[!FoVƣ Q[s҉=GmT^aqmTYWGJm¨2|N)bO >])9Jm s-ԐEKm·L(CmTiwpW%'ԋ CR7/)@Rp&n7x0 #3 ,*|Ȣ`z̢OPCQj*aHȒ4D8#ZHg4t}MaϑER!( s0 CNL'8֪F> 'T{\9™ >Q"tRY\_b8$Dr W1InMQj^QjUnGQj1Oі$ shgWNOwQAMS-~t A30b94'.'OmnK1]aOwgh[!Hw[|瘎fA YHdR4Lf`,OwQQn(t^t|]Ar W1I%:S/:bR!N関>M( $EvGRID.DOCU o !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST>Z^] u{cL9WɥO>msE u{Q>=̈́tqܟ\sP npFUChÁ\ uk+z+m:88Q#fkp(nkЩjn08Cq\O>nGP'Pw6qLg'k|Z^<(~yt;|BZ1ؠK<$1(;yI`r 6tFn }Bj,2zBLeXT4H)`gz΄ކ1O[ 8F'- 0alL~իKPgӞIdj<6Dl3"ku0grqVCG88R/Z09+)7GqO>nfh1A [NC,&W`q&uDt#u>n[ׂcc| uuh|B^s|B~yur n0CM O.5GqO>1zXh P\ YaO.א^K'g'eY| mcW%,@IF8z~l y'0[s8Ap ax'Pϟݟ\qw_7|B='i&&4F64譴!?:<|  3m38S-R!fk5߂2fk ೰O[ 3niz ,:p&LN:l- u{R\P3*Ykh09鰑Rp tǢ3u궷Y"a}Q,h)3imlX VsdeP (.'I9$h)3b"0:H)br_0O\).|BO>O>;Wר}BSjwrrOۧO!u$F8CO>cP7IuB hm0Sa^HOgr#9HA@#9HP'VpHm85@-2uC$>DR",U (u;E#?/Oo I%,'gY-5l YO>n!,|B^s|BݞDc;8Fgc(B1HQIB܁|BFyN }V=h:at EEXg[  4Dp YDJe &3mD@3at69|B=t 4ZYVga"VyO$D'tDpV0$-a'p&P7:cgva#8-h4Ǚ's΄3-"b"A8:И:b'"Tf@Ў^7ej- _!!,|B=QPha,P1nm`g)`7zΆIG6eFJ 4@Bd-EY,zF$"6ny |BW1nmm6 :Cqrlr:GlD|BݮVm$L2L'PϿ:glr:b 9d& | t'PϿ/OɓO7|B=gCȈ6lgB@,}Ơ3>k[w|B=<'O.>=y8E^OfB@m8L`guF`' DvrhLE[0:l'zF`&8Fg3H P?6Ed=#any |B=^:&K!LCl  6YD p&p&Pϋa>khKQGOgZ>zcdl  H3 A$_L>_Jm"8+DHDU Og'ǻ ~iX'p G O>^'ԭO>O>Oۻjzu'1Epw_-'>Og'ǻ ~~_;|'Y z+aB5Lw5l40H` |8Vp&&nO3ABd-EY,H 9}yOB":}: |BݞRZpcLZ)Y7lCl*=Al:O[atvCq Z9}yO-2>n_7cwL aHD'SC bl Y G-'m5L>ׂ`L'EO|B8̈́bEg 18&'$"S26xl s&:<'h0$8FgeP$h ON:DyNH38SYL.Q6'-P}'(xtFׂN Q,<^Lp }B)3agBhÁlEo !BC[lw>zGqʼY"&9΄`-譴!`#ghl$S>?ۆ0: ,aM 8B2z+mH:P 2ɔCAD..i&G9ځ3! AOQl#Q6H`E<:L-b3iy C4@DgD/IQlw>JB6-jnƠs1('TuaP7I | F=KOأv`pVgE$'"FgBPg1Ȕ!kpG9&'<pVFv!fk젇2WGk+e sp k EX,{ ΄3uBl|B h0Q e΄8LMNH%[Sf0[8K5gBX,ph ΄"%2fkt GgeP23F GyNc?^,['AhbiN3at69&b6P}Gbt$y,IY)0|'?.>n}'|'|BWիk>no)b5j?'T?: LZ: 8&'[ґgLCOVRn΄(X5 BzF,'TxfLN`39"RI/'T6tFn%L ¢E+Dv& :@ؘ&l3,+lJv8R/Z Y1[ kq݌:r5tȶz `0: LnN3A:RPDpVaF$f fkI` AOgrs>ӞE Ϗ`TfP}EE<AB0[ 3g ;V ΄IY"6R u'p&8k09sľH`goLna :C3uI`+8&',}DtN7Nbo%4k'Tgu3/ qRȡgr(f83>,b,(D L>ΰӍ tqNBY1[Cgh'T/AXseN´Á#pVgBi䠡C@>( gD":Z%P6䈰Θ9Pa"ϕ|B8ubQ `q&uDJQ(\'TɺJ "Vp&&$Qzܟ\f կ22 ١L<=obmg շHphR:( FR0grPP}OUB`+X cN.O>=<< )BIpV &p&YL'x,> гXDcJC8:Cd'aB'T "3uM7˲ܼSqO>n}'r>n.x?_}YpM '?|'P~<Ӌ^<}O>'P%'|'|'|B?p'|'K8O~3lEt#a&-&']\AVZ$h K-CG88R/Z09+)7GqO>nfh1A [NC, LSQ DOCLSQF COMLSQF FOR1LSQW BAS?NBS3 DATRNDTEST5DAT À y(i) yc(i)', x ' dy(i)',a1) 180 format(1x,i3,1p4e15.7,a1) 190 formatP ,=LSQF1/R }+?Command error?File not found?Can't enter file~/#+!+,!+,!++Á,COMSCN,"U&,e,:4,G:3,O*.[,# M,e, [,D,2,*+++"%*U&:%2%*%t/:r+ ʁ,2%2%2%2%2%2%2%2%<2%2%,ů2% .a&-V& ,>2%!%-> 2V&2^&2U&y,2%,:%2% .g&:%-d&-V&:U&2% 2%$-:%@2%!%-y=7 . 7-U&L- 7!%-:%!%-!%:%|-%d&> =r--:%‘-:%‘-:%2% _2͊0+0A0*%##:%2%GU& ~--w# - #- w#-:%!^&~ .w#-S/:7>..x ./Ox=yO.[A@2U&S/x <. V&ʘ./C.Th./T7/Y7..L‚./S7/T7>..R7/D7R7>..> ک.6 #=.y.2%S/^&x../.y/y/L.2%/O.N.2%.O.2%.R/2%.C/2%2%.M!/2%.I,/2%.X9/>2%.ZE/2%.P7:%<2%./[q/0q/Am/:q/V/O!~6Gʣ/#~ Œ/~/q+x+#ʝ/~Ò/2%/2%:%¶/!0>*/ p+> /:q+!r+"+o>g6 #> w~# / / 0#"+_*++~ #t/#"++~7ȷ> /> /n'!"l'!%:%T0l&!"j&!%:%ʅ0~0ͧ0< ,ͧ0<,!"n)p)!%~0y0 w#°0w%0p):%-:%<0j1> |1> |1>|1*l'n'%T1n'%0:%-:%0>1*j&l&%T1l&%0|}_1ƀ)`ió1> |1> |1> |1:%-:%§2 =³1!l&>!%ó1:%-:%/*j&|=1#"j&k&w:%<02*n)|+2#"n)o)0p)>%=T2!=02!>P2_!% y2 w2 |1~€2Ñ27ȷ!2+@@¸2> /!2+!0DISK FULL!2:>’3@3w#2%.ʽ3!ڽ3w#–32%.3!ҫ336 #½3:%.3w#3p2232222:2=!42264!2"2>22*2~14764#"2ɆADD ADIANA ģANA ŦANA ANICALL/CM?CMøCMP ¾CMP CPIDAD )DAD +DCX =DCR MVI A.MVI LORA ȵORA ̶ORA PCHPOP PUSH RARARERLßSBB SBB ȞSBISUB SUI"SHLD2STASUB XCHǯXRA XRA īXRA ŮXRA XRI>oͫG>ͫG>ͫG>gͫGͥU*aT͈>:$7*aT2>9*aT=©6>>ͫG:G>ͫG>>ͫG:G>ͫG6>ͫG͈>:(A6>ͫG>{ͫG>ͫG>zͫG>ͫG>*"]>2e=2!b?**udDM!"*"x7w# x7"!"N*aT:=*aT>2Z7>9>ͫG*aT:6:=ʆ7>9>GͫG*aT>2͈>>ͫG>xͫG6:=a7*aTW?>ͫG*aT>2=9>6!"7ͳA͑!:7*" ""ß%@2 :7ͳAoG>H8{%xͳA>ͫG>2s:,+8:ʟ% ͳA2sgo9"S>(-h͑!:sK8f*$8:,38v\:s8&hn%͈>:(s8A62(GC͜:%8c]kͷO!8nG*+V+^+aT:%»8c]kͷO!8n/P̓?=g˜8* 2(1X,'Too Many Parameters !!!')9*: 9 (">/ͫG><ͫGW9*a(1X,'Least Squares Polynomial'/' Double Precision'/' (c) 9/ 8/1986 R. H. Sherman'/' 50 points maximum'/)(' Is Data input from Keyborad (K) or File (F) ?')(11A1)(1X,'Input Degree of Polynomial to be fit = ')(I1)(' Data filename'/' 12345678901'/)('+Input drive ID - 0, 1, 2 :')(10A8)(I2)(2F12.0)(/1X,10A8)(1X,I3,' data points read'/)('+Input number of data points = ')(1X,'Enter Data:'/)('+ x(',I2,') = ')('+ y(',I2,') = ')(1X,'Data:')(1X,I3,1X,1P2G13.6)(/1X,'Matrix Coefficients:')(1X,I3,1X,1P6G14.6/18X,6G14.6)(/1X,'Inverse Matrix Coefficients:')(/1X,'Fitted Coefficients and std. deviations:')(1X,I3,2X,1PG20.10,2X,E15.7)(/' i x(i) y(i) yc(i)',' dy(i)')(1X,I3,1P4E15.7)(/1X,'Wvar, Standard Deviation of the fit = ',1P2E16.7)(1X,'Create an output file - Y/N ? ')(' Run another case - Y/N ?')B2IB!1,4!1,4!.,G!>ͻ+4*G}2!K "G*G}2!1,4!.,K!>+4!K͜ 7!1,4!.,!>ͻ+4K!ͽ?W!.,!>+4!"a!,*)))"K"*!>+*"*!>+4*#>3>_*+"Ei!1,!>+4s!1,E!>ͻ+4å!1,4]!.,E!>ͻ+4!1,4!"!1,!>ͻ+4a!.,*)))K"*!>+4!1,!>ͻ+4a!.,*)))"*!>+4*#*E{z!1,4]!.,C!>ͻ+4*C#"C*E*C{ozg}?2!1,4å!"*" *)))"* !Pt+* "!ͳ:ͩ)*&!""*)))"* !Pt+* "*")))K"* ++*"$$*!*#(*&*"#*E{z8* )))"*!Pt+* "*)))"* !Pt+* )*&* #*C{z*#*C{z!"*)))"!ͳ:ͩ)*&!" *)))"* )))""*K"$*+"&&*$!*+'*#(*&* #*E{z"*#*C{z!1,4!1,!"!>ͻ+*)))"K"*!>+*"*!>+*#*E{z4!1,4!"$!1,!>ͻ+*)))"*!>+!" *)))"* !Pt+* "*!>+* #*C{z;4*#*C{z*a!CWB!1,4!"$!1,!>ͻ+!" *)))"* !Pt+*) "*!>+* #*C{z4*#*C{z!"*)))"!ͳ:ͩ)*&!" *)))""* !Pt+*) "* ))))*+'*#(*&* #*C{z7*#*C{z!ͳ:ͩ)!.&!"*)))""*K"C* *&*k"$*)*(U**$&*)))k")*+'!.#(!.&*#*E{z*E*C{ozg}=2e!ͳ:ͩ)!3&Ç*E*C{ozg"!.)*=&!3&!3%!;&!"*)))""*!Pt+*) )!3+'!6&!6%*&*#*C{z*G}2i!1,!>+4f!1,4!"!1,!>ͻ+*)))""*!>+*"*!>+4*#*C{z$!1,4!"!1,!>ͻ+*)))"K"*!>+*"*!>+*"$*$!>+*k"&*&!>+4*#*E{z!1,;3!>+4=!1,4!.,>!>ͻ+4*>}2q!Y ">*>}2ʋ͏#b!1,4!.,@!>ͻ+4*@}2!Y "@*@}2¥!͢3͵*  b>22W>e?*a|aT:%F:*"](1X,'***** SINGULAR MATRIX *****')"">! t;!"!"*)))"*!Pt+** "! ͳ:ͩ)*&**{ozg}2*)))"*!Pt+** "! ͳ:ͩ)*&*#*~#fo{zo*#*~#fo{zi!"*"*)))"*!Pt+**)2‚*#*~#fo{z&5! 1,4!* s#r!"*)))"*!Pt+"*"!*"#)!&*)))"%**%*)*#&**%*"'!)*'&*!* )!&*!* ")*)))"+*!Pt+*+* )*)&*)))"*!Pt+** "!)*&*#*~#fo{z*)))"*!Pt+**"!͠)*K&!-&!"*)))"*!Pt+**")!-+'*&*)))"*!Pt+** ")!-+'*&*#*~#fo{z!"**{ozg}2T *)))"*!Pt+**)U*!-&!"*)))"*!Pt+"**"!*)))"#**#*)!-+'*!#(*!&*)))"*!Pt+"** "!*)))"#**#* )!-+'*!#(*!&*#*~#fo{z*#*~#fo{zA*#*~#fo{z !* s#rger Quant" !" * +* " * ͩ%* w* #> > referencIllegal State" " `i" * ~#fo+}2 «!* ~#fo)))* )* +'! &* ~#fo++}2 ˜!* ~#fo++" !" * ~#fo* {ozg" * )))* )! #(* +'! &* #* {zM!* )! #(! &* )! &oFunction Call "!"!!/"ͳ:ͩ)!!&*!~#fo}2!!!!)!"!*!)!!+'!!&*!#*!~#fo{z!!!)unDuplicate Statement Labe(' Data filename'/' 12345678901'/)(11A1)('+Input drive ID - 0, 1, 2 :')(I1)(/1X,10A8,A1)(/1X,'Fitted Coefficients and std. deviations:',A1)(1X,I3,2X,1PG20.10,2X,E15.7,A1)(/' i x(i) y(i) yc(i)',' dy(i)',A1)(1X,I3,1P4E15.7,A1)(/1X,'Wvar, Standard Deviation of the fit = ',1P2E16.7,A1)h> 2?":I=2@"#O"!%1,4q"!%.,4"!%>+4!4"͜ w"!%1,4"!%.,A"!%>ͻ+4A"4"!%ͽ?*G}2@"3$"!%1,!%>+?"!%>+4"!%1,?"!%>+4!"C""!%1,C"!%>ͻ+*C")))"E""G"*G"!%>+*E""I"*I"!%>+?"!%>+4*C"#*C{zM$"!%1,?"!%>+4!"C"A#!%1,C"!%>ͻ+*C")))"E"K"G"*G"!%>+*E""I"*I"!%>+*E""K"*K"!%>+*E"k"M"*M"!%>+?"!%>+4*C"#*E{z$T#!%1,;3!%>+?"!%>+4>2I sOG:%"%*%~2%*%~z=Ɓ2%*%~a?!%/2%%:%og!}2%:%)+&!C~>@w&>&&H&&0)!'+'&'=%!Cw&SA&ͳ:ͩ)E&&͠)͵&!C)ʱ&:C::C/F+N+=&!C'!C>q#p#= '!C+'"C&&&*C)W::CW:!CN#F*U)qh'Gܚ(͘)x Q'H'(!Ct)`'j0 TeB׳]h!I.k &ͳ:ͩ)ï'&͠)!C+'SA!Cq#~++w+q':DNn"~`35zr1{r1h!I):yO2C)()::Cʵ&;(/<͵&9::CO͏+G2C!Cl):C2Cx!CC(ͣ(r(4͘):C(!C~++w:!C4#‹(4ʵ'+6!CC# £(ɯ# °(Ͱ((/!COyw#(G:C(!CVwz# (x(W:!C)(xr(!CwW:r(~w# )&ͳ:ͩ)0)&͠)!C#(&ͳ:ͩ)L)&͠)͵&!C(y2C!CC~q+b)qڃ)NsY+x)n) W~w+)Æ)!CÊ)/+é)ͳ:!Cw#¯):)}))))͏+!CF#^#V#N7:)}C~#)G++Ny:C)!Cͳ:>8**SA:F*:4*!C6͜+g>P;|]+!> *akͳ:U**U*:!C~+>w:͓*> 2C!PA"C!US"C!E "Cͤ**B6 B*B6 T@BC~#š*!C ~B#©*͓*> 2C!ST"C!OP"C! "Cͤ*@B!C~Gx*ƀV:w͏+w+ɷ&:W::x{ҿ:!C6͜+wg+z+ >P;|I:{>2Cy9/))Ҋ+ =‚+!C~7w?##wy7O*C*C"C"Ca!+!+!+!+!"hC͆;͚;~#fo"PC͚;"&C*PC"*C:C,͘-+5+>2rC2sC<2TCG,>2rC6,2rC<6,>2rC2sC2TC~#fo"C!C"-C~#+U,!"VC!9##"+:sCy,go"XC"ZC"^C"\Cõ,!XC>t;*XC~#,go"XC*ZC~#,go"ZC*\C~#fo"\C*^C~#foµ,"^C2tC2C2C2C2cC2HCgo"`C"*Ca:*VC|,^6*`C"uC(ʴ5SA21C22C2/C20C<2C:rC>ï39]0- -> 6w -:JC/<0-0-6=)-2JC:hC7:iC/ 76=A-9:JCf-f- ͚4=Z-2JC:hCx->6=q-:jCG͚46x-!jCCw# Ž-:rC-*1CDM*/C"C*-C *&C-`i"1C"&C*/CDM*/D"C*&C*-C -`i"/Cü-:iC*C+}|&.:rC.*C"/C>ͯ3*-C->ͯ3*/C"C*-C-w#=-**C+"*C|-<G.>G!3C60#9!JC4:qC0w:M."fC~:ځ. w+q.w!3C|–.}–.!JC4#"MC|/W}/_*fC"fC>2HC:hCڝ1&8:ICG:C.x2GC?.:C.2LCL4:C.0͚4!GC5 /<.:GC / /'4.E:HC/D͚4:JC!C2JC)/+0/-/<2JC͚4:JC_! ;{0G͚4}0G͚4:hCڝ1&8:ICG!JC:Cwq/?.2LC:IC2GC:JC/2LC!GCwL4:JC//*fC"dC!"fC'4!JC4¤/*dC"fC'4ô/:hCڝ1&8:JC.!IC/<.Fw!RC~w2bC!C~w<2cC]/2C2RC2IC2cC>2bC ͚40*`C*VCDM*C͎0+|0"C"`C 7*`C*VCF͚4*`C#"`C*C+"C|#@0 7*1CDM!bC5ʄ0*/C+}|ډ0*-C ~2C`i"1C>z0> z0]0ʗ0 !bC4Î0:UCI0:hC=ʹ0==ʹ0=ʹ00:IC0SA!nC0SA0#0:C7:hC0j9K97>2,C:hC1SA!IC:KC1:SC1:OCw~/2qC&8:JC?.:JC2GC2LCL4!kC~-2/W+~/_>2C2JC! ;}0o!JC4{1!3C:JCG2GC2LC2fCs#2!3C"MCL4V+^1L3C2͎0 C2>00T2:T202C>ɯ2IC2KC2SCL3-r2>2Cw2+z2L37*1C+"1C!bC43:C.¢2>2KC2JC3:C0Eʲ2D·2L3+2-2>2,CL3y2SC*1C+"1C!bC4322Ox 2SA> G2:,Cx3/<2JCG!IC~wÞ092:qC33 : :ͅ- ::C!Cw#w83ͅ-!IC:JCw3͎0 L3:RC<2bCL31Fo3T1>2jC͎0s37!jC~ʇ3>T>Fw> #w#w#w>2hC2iCK-> é3> é3>O}2CO!::CMAMA=_^#V ^#V33*ZC|3SA*XC|3SA*+!CjCw#4!jCC3:C!,Cwʅ5:rC>ï3!GC584:dC*4!fC504*MCF#"MCÚ4!RC~!C!GC2dCj442GC/4:C-Ě4!LC54.͚4'4s4SA ͚4!dC5‹4j4*/C*1C{zڻ4#"1C*-C+p!bC5ÿ4SA:cC:C 75!tC~44SA *fC"uC*C"{C 7!"bC*`C*VC:rC#5~'5͎0w#5#~'5"`C 7~':5G͚4*`C#"`C##5*`C#"`C#~')5 7:tC=a5!C4!"`C52tC 7*{C+"{C| 7*uC"`C!tC4 7!,C6:rC©5:TC©5*1Cz¢5*-C6 "/C8:,C21C22C:rC5*-D"/CP6!"1C 7!C~5w5**C+"*C|5:C€5*C| 7+"C:OC2IC2C2JC2,Cgo"jC"lC"nC"pC:RC!bCw:rC-64*}C:iCG:hC*&CjCB6nC~#B6"&C)6:TCʯ3*-D"/Cɯ2,Cgo"jC*`C*VC~# o6-†6,C o6"`C2CG06 Ҩ6*jCT])))_d6*jC|³6#x:,C6o>g"jC|x!qC~w+ 66!qC~w+6!C66kC!jCw#76 ^6"C)7, 7/ʀ5)M5'4P77:jC2C 7|G7SA!"C2UCG!7b7# y xQ7SAyO!7:rCt7!7 ^#V"}Cyґ7*`C"fC!"bC^6›7SA}2RC2OCy ڻ7:C.7^6*jC}2OC*`C+"`C5SAXH(AILEFGD804-X2U3X2X2X2X28804K-1|3.R//.:iCG*&CjC:hC8nCw#8"&C*C| 75!qC~ʾ8x2,Cw:hC=T8==T8=W8+>2C>wf8j9:mC8K9>2C7:͖9!,C~wg889j8£8!CjC39j8!jCC3!JC4/G6!jC~#±8f8f82,C!jCw#8!JC4>ï3*C*1C"1C*-DDMyx 7SA */C"1C 7 ͚4*C+"C|8 7:iCG:RC2JC!,C>w!JC5636Å-!jC~/G#~/G97; 6;7>{_zW}o|g=-;|g}o_;CZQR; o-yOzW{_xGb;`iN#F#q#p#=w;2"C"wC"yC`i"#C2%C:%Cү;!wC_;:"C*#C;_~#fo:%C<2%CW:"C;h: 3fͥU*a*: eDMæe:eͧͳA:f*g|f"]1DFORTDAT>>i>@>>MA >SASASASA!;:C_~_<:C_!;^#V!;:C_~!<:C_^#Vz #w##<ͧ<>wnB%>|=}="<">B͖F< >6b?z::(>0Ͱ<*-C*/C&\>w#S>ͧ?7Ͱ<*-C>2/C͝?? Ͱ<2<:/C:/C>SA> ?*-C~H?#=¦>> H?F<w:<7Ͱ<2/C2< ??>?*/C&*-Cw"/C >}>SA:<?ɷF<?n<6n<4?5!;/Ɓ_#>WR<͝?2<>w7nWɇk?>H?n<6_<~2Ca:F ͗@ͬ@2?:?*?> ͗@> ×@*>B"@|E@}H@"?">BMA:?̤@:/C*-C=> ͗@~+ʉ@1y@> ͗@É@> ͗@~0‰@> ͗@#~#͗@=Ë@_>2?5@@@@@@@@MA2/CB @*/C&*-Cw"/C }@SA:/C*-C=> B~+&A1A> B&A> B~ &A0&A> B#~#B=(A **** at address ** SA!4A͝A~"~eA>#O!A ~B#~B:B<2BҊAҚA!9A͝AͧA͚A@B!HA~B#ÝA|ʹA}ʹA> BͽAƐ':'BIDF0MPIRFWITEXDOMLDZLGSQIBTLOBDEISBEINOVCNGLGSSNA2IODTBIRCEFFNDFUNOM??DFUNO2B2B!=B">B*+ 2B!:B!!""BUB!HB*>B> B> BP BP :B_*B~ B#~"XB_*B~ C#~"B VB!WB^#6 #> BwBw͖'mnnn+n܄ program lspoly c Double Precision Least squares Polynomial c with input and output files c 9/08/1986 c (c) Robert H. Sherman c 1931 Camino Manzana, Los Alamos, New Mexico 87544 c byte fnmi(11), fnmo(11), iopn implicit double precision(a-h,o-z) dimension x(50),y(50),dy(50),yc(50),xtitle(10) dimension a(10,10),b(10,10),c(10),r(10),sdc(10) common xtitle,x,y,dy,yc,c,sdc,wvar,sd,n,np,ipath,iopn c iopn=0 write(1,300) write(1,310) read(1,320)ipath if (ipath .eq. 1hk) ipath=1hK if (ipath .eq. 1hK ) go to 20 write (1,350) read (1,320) fnmi call upper (fnmi) write (1,360) read (1,340) id call open (10,fnmi,id) read(10,365)xtitle do 10 i=1,51 10 read (10,380,end=15) x(i),y(i) 15 np=i-1 write(1,381)xtitle write(1,382)np go to 40 20 write(1,390) read(1,370)np write(1,400) do 30 i=1,np write(1,410)i read(1,380)x(i) write(1,420)i 30 read(1,380)y(i) 40 write(1,330) read(1,370)n n=n+1 if (np .ge. n ) go to 45 write(1,421) 421 format(1x,'Too Many Parameters !!!') go to 40 45 do 60 i=1,n do 60 j=i,n a(i,j)=0. do 50 k=1,np 50 a(i,j)=a(i,j)+pwr(x(k),i+j-2) 60 a(j,i)=a(i,j) do 70 i=1,n r(i)=0. do 70 j=1,np 70 r(i)=r(i)+y(j)*pwr(x(j),i-1) write(1,430) write(1,440)(i,x(i),y(i),i=1,np) write(1,450) do 80 i=1,n 80 write(1,460)i,r(i),(a(i,j),j=1,n) c call matinv(n,a,b,ierr) c write(1,470) do 90 i=1,n 90 write(1,460)i,(b(i,j),j=1,n) do 100 i=1,n c(i)=0. do 100 j=1,n 100 c(i)=c(i)+b(i,j)*r(j) sumd=0. do 110 i=1,np yc(i)=poly(x(i),n,c) dy(i)=yc(i)-y(i) 110 sumd=sumd+dy(i)*dy(i) if (np .gt. n) go to 112 wvar=0. go to 113 112 wvar=sumd/(np-n) 113 sd=dsqrt(wvar) do 120 i=1,n 120 sdc(i)=dsqrt(wvar*b(i,i)) if (ipath .ne. 1hK ) write(1,381)xtitle write(1,480) do 130 i=1,n 130 write(1,490)i,c(i),sdc(i) write(1,500) do 140 i=1,np 140 write(1,510)i,x(i),y(i),yc(i),dy(i) write(1,520)wvar,sd c write(1,530) read(1,320)iprint if (iprint .eq. 1hy ) iprint=1hY if (iprint .eq. 1hY ) call output c write(1,540) read(1,320)iagain if (iagain .eq. 1hy) iagain=1hY if (iagain .eq. 1hY ) go to 40 endfile 6 stop c 300 format(1x,'Least Squares Polynomial'/' Double Precision'/ 1 ' (c) 9/ 8/1986 R. H. Sherman'/' 50 points maximum'/) 310 format(' Is Data input from Keyborad (K) or File (F) ?') 320 format (11a1) 330 format(1x,'Input Degree of Polynomial to be fit = ') 340 format (i1) 350 format (' Data filename'/' 12345678901'/) 360 format ('+Input drive ID - 0, 1, 2 :') 365 format(10a8) 370 format (i2) 380 format (2f12.0) 381 format(/1x,10a8) 382 format(1x,i3,' data points read'/) 390 format('+Input number of data points = ') 400 format(1x,'Enter Data:'/) 410 format('+ x(',i2,') = ') 420 format('+ y(',i2,') = ') 430 format(1x,'Data:') 440 format(1x,i3,1x,1p2g13.6) 450 format(/1x,'Matrix Coefficients:') 460 format(1x,i3,1x,1p6g14.6/18x,6g14.6) 470 format(/1x,'Inverse Matrix Coefficients:') 480 format(/1x,'Fitted Coefficients and std. deviations:') 490 format(1x,i3,2x,1pg20.10,2x,e15.7) 500 format(/' i x(i) y(i) yc(i)', x ' dy(i)') 510 format(1x,i3,1p4e15.7) 520 format(/1x,'Wvar, Standard Deviation of the fit = ',1p2e16.7) 530 format(1x,'Create an output file - Y/N ? ') 540 format(' Run another case - Y/N ?') c end subroutine matinv(n,a,b,ierr) c c Invert matrix c implicit double precision(a-h,o-z) dimension a(10,10),b(10,10) c do 10 i=1,n do 10 j=1,n b(i,j)=0. if ( i .ne. j ) go to 10 b(i,j)=1. 10 continue do 70 j=1,n do 20 i=j,n 20 if ( a(i,j) .ne. 0. ) go to 30 write(1,200) ierr=-1 return 30 do 40 k=1,n s=a(j,k) a(j,k)=a(i,k) a(i,k)=s s=b(j,k) b(j,k)=b(k,j) 40 b(i,k)=s t=1/a(j,j) do 50 k=1,n a(j,k)=t*a(j,k) 50 b(j,k)=t*b(j,k) do 70 i=1,n if ( i .eq. j ) go to 70 t=-a(i,j) do 60 k=1,n a(i,k)=a(i,k)+t*a(j,k) 60 b(i,k)=b(i,k)+t*b(j,k) 70 continue ierr=1 return c 200 format(1x,'***** SINGULAR MATRIX *****') c end subroutine upper (x) c c comvert filename to upper case c byte x(11), cupper do 10 i=1,11 10 x(i)=cupper(x(i)) return end function poly(x,n,c) c c evaluate polynomial (double precision) c implicit double precision(a-h,o-z) dimension c(10) if (n .eq. 1) go to 30 poly=c(n)*x if ( n .eq. 2 ) go to 20 nm2=n-2 do 10 i=1,nm2 j=n-i 10 poly=(poly+c(j))*x 20 poly=poly+c(1) return 30 poly=c(1) return end function pwr(x,n) c c x**n by multiplication (for double precision) c implicit double precision(a-h,o-z) pwr=1. if (n .eq. 0 ) return do 10 i=1,n 10 pwr=pwr*x return end subroutine output c byte fnmo(11),lf,iopn implicit double precision(a-h,o-z) dimension x(50),y(50),dy(50),yc(50),xtitle(10),c(10),sdc(10) common xtitle,x,y,dy,yc,c,sdc,wvar,sd,n,np,ipath,iopn c lf=x'0A' if (iopn .eq. 1 ) go to 10 write (1,100) read (1,110) fnmo call upper (fnmo) write (1,120) read (1,130) id call open (6,fnmo,id) 10 if (ipath.eq. 1hK ) go to 20 write(6,140)xtitle,lf 20 write(6,150)lf do 30 i=1,n 30 write(6,160)i,c(i),sdc(i),lf write(6,170)lf do 40 i=1,np 40 write(6,180)i,x(i),y(i),yc(i),dy(i),lf write(6,190)wvar,sd,lf iopn=1 return c 100 format (' Data filename'/' 12345678901'/) 110 format (11a1) 120 format ('+Input drive ID - 0, 1, 2 :') 130 format (i1) 140 format(/1x,10a8,a1) 150 format(/1x,'Fitted Coefficients and std. deviations:',a1) 160 format(1x,i3,2x,1pg20.10,2x,e15.7,a1) 170 format(/' i x(i) y(i) yc(i)', x ' dy(i)',a1) 180 format(1x,i3,1p4e15.7,a1) 190 format(/1x,'Wvar, Standard Deviation of the fit = ',1p2e16.7,a1) end  dy(i)',a1) 180 format(1x,i3,1p4e15.7,a1) 190 formatad LSQW.BAS 9/9/1986bn Weighted Least Squares Data Reduction using Gaussian Elimination4bx Tested with NBS Test PolynomialMb Robert H. Shermanb 1931 Camino Manzana, Los Alamos, New Mexico 87544b AH,OZ : INbMX2 : EF : MD : xbPR$" +#.#####^^^^" : PR1$"##" : PR2$" +#.#######^^^^"@cPR3$" +#.###^^^^" : PR4$" +#.######^^^^" : PR5$" +#.####^^^^"xc X(MX),Y(MX),XP(MX),WT(MX),DEV(MX),YC(MX),PCTD(MX)cWVOLD : SDOLDcQMD : A(Q,Q),R(Q),V(Q),AINV(Q,Q),SDV(Q)cQMD : P(Q)c ()"9/9/1986"/d "Weighted Least Squares Polynomial, Y= a + b*X + c*X^2 + ..."Md "(c) 1986 R.H. Sherman"d "Currently set to accept ";MX;" data pairs." : d "Create a Data File? Y/N =N ";QCR$d QCR$"Y" QCR$"y"  e" d : "*.DAT" : x : : "Input Date :";DT$e, T/e6J : "*.DAT" : fe@ "Input Data Filename FNM (.DAT) :",XFNM$ : eJ "i",#,XFNM$".DAT"eT #,HDR$ : HDR$e^ "Input Data Order : X,Y ( Y/N/Other=Y ) ";QD$fh "Are Weights included - (Y/N/Other=N) ";QW$ : QW$"y" QW$"Y"-fr QD$"n" QD$"N"ff| "Do you wish to scale the X's ( Y/N =N )";QSX$f "Do you wish to scale the Y's ( Y/N =N )";QSY$f QSX$"y" QSX$"Y"f QSY$"y" QSY$"Y"g QSX$"Y" "X Scale Factor =",SCFTRX7g QSY$"Y" "Y Scale Factor (Y=Y/scf)=",SCFTRYAgJJVg QW$ "Y" g QD$"N" #,X(J),Y(J) : #,Y(J),X(J)gWT(J) : g QD$"N" #,X(J),Y(J),WT(J) : #,Y(J),X(J),WT(J)g X(J)EF JJ : &0h JMX "** No More Data Allowed **" : &Rh QSX$"Y" X(J)X(J)SCFTRXvh QSY$"Y" Y(J)Y(J)SCFTRYh () &h h&NPJ h0 #h: NP "**FATAL ERROR** No Data Entered" : hD NP;" data points entered")iN "Degree of polynomial to be fitted ";D _iX D "**ERROR** Degree must be => 0" : NzibD(D) : DNP vil "**ERROR** Not enough data": NivD2Di DMD "**ERROR** degree too high": NiNDj I NP : XP(I) : I1j I D2 : I N k*  );HDR$;" ";DT$ : k4 :  );"X POWER COEFFICIENT SD OF COEFFICIENT" : "l> J N : " ";J, : PR2$;V(J); : ); : PR2$;SDV(J) : : 9lH QP$"Y" fGlR J Nl\  );J;) : PR2$;V(J); : ); : PR2$;SDV(J) : : lf J NPlp PR1$;J; : PR$;(WT(J));(X(J)),(Y(J)),(YC(J)),lz PR3$;(DEV(J)) m QP$"Y" Om  ); : PR1$;J; : PR4$;WT(J);X(J),Y(J),YC(J),DEV(J)Umm : "Weighted Variance, SD ="; : PR5$;WVAR,SDm ); : PR5$;WVOLD,SDOLDmSDOLDSD : WVOLDWVARm QP$"Y" n :  );"Weighted Variance, SD ="; : PR5$;WVAR,SD+n : : Pn : "Hit To Continue";QC$qn : "Continuation Options"n" 1 - Determine Specific Points"n" 2 - Fit another polynomial to the same data"n" 3 - Fit another set of data"o" 4 - TERMINATE program",o" 5 - Unity Weights"Oo$" 6 - Weights as 1/(Dev)**2"qo." 7 - Set Specific Weights"o8" 8 - Plot Errors"oB" 81 - Plot Percent Errors"oL" 9 - Reprint Data"oV" 10 - Output Fitted Parameters"p`" 11 - Restart Program"$pj" 99 - Return to CP/M"Qpt"What Next";Q : Q(Q) : Q cp~ Q rup Q p Q p Q QQ p Q  p Q p Q p Q ,q Q T : Nq Q !q Qc 2q Q  for YES ";QQ$q  QQ$""  : hq : "Enter ";EF;" to leave this mode"q : "X=";XV : XVEF q(YV : KN  ,r2YVYVXVV(K) : : "y= "; : PR2$;YV6r< erF Matrix Inversion by Gaussian EliminationorPLDrZ I L : J L : IJ B(I,J) : B(I,J)rd J,Irn : "Coefficient Matrix" sx I L : J L : (A(I,J)), : J : : I.s : I L : I,R(I) : I\s J L : IJ L : A(I,J) ds I|s "Singular Matrix"s Js K L : SA(J,K) : A(J,K)A(I,K) : A(I,K)SsSB(J,K) : B(J,K)B(I,K) : B(I,K)S : KsTA(J,J)/t K L : A(J,K)TA(J,K) : B(J,K)TB(J,K) : KMt L1 L : L1J htTA(L1,J) : K LtA(L1,K)A(L1,K)TA(J,K)tB(L1,K)B(L1,K)TB(J,K) : Kt L1,Jt : "|A|'"t I L : J L : (B(I,J)), : J : : Iu"Ku, I L : V(I) : J L : V(I)V(I)B(I,J)R(J) : J : Iju6 I L : I,V(I) : Iu@ "Press any character to continue ...",CH$uJuT "Printed Output ( Y/N =N )";QP$ : QP$"y" QP$"Y"u^uh vr Set all weights to unity/v| I NP : WT(I) : I : Rv Set weights to inverse of SDzv I NP : WT(I)DEV(I) : IvWMAXWT() : I NP : WT(I)WMAX WMAXWT(I)v Iv WMAXH w I NP : WT(I)WT(I)HWMAX : I : w Input individual weightsNw "Input Index of Weight to be set : ";IWw "Input Value for weight, W(";IW;") = "; : WT(IW) : w Create Least Squares Data File for Program LSQw R.H. Sherman 5/14/84)x : "Create a WEIGHTED Data File for Least Squares Regression Analysis"ex  ); : "Input File Name Xfnm(.DAT) ";XFNM$ : x "O",#,XFNM$".DAT"x "HEADER : ";HDR$ : #,HDR$x "Input Data as X,Y,Wt triplets"x& "Input 999,999 when done"x0I"y: "i= ";I; : " x,y,w = ",X(I),Y(I),WT(I)DyD X(I) Y(I) XVyNII : :yX N I : N;);X(N););Y(N););WT(N) : Nyb "Data OK? (Y/N) =Y ";Q$ : Q$"Y" Q$"y" Q$"" zl "Index of Data to be Corrected, i=",J:zv" Input Data as X,Y,Wt " : X(J),Y(J),WT(J) : Xhz N I : #, X(N),Y(N),WT(N) : Nqz #z "Finished with Data Input and File ( ";XFNM$;".DAT ) Written to Disk"zzzLONG(XFNM$) : T$""{ I LONG : C$(XFNM$,I,)3{ C$"a" C$"z" C$((C$) )U{T$T$C$ : I : XFNM$T$ : v{ ())"ERROR PLOT" : {EMINOL : EMAX EMIN :INITIAL VALUES{ I NP : Q PCTD(I)DEV(I) : PCTD(I)dDEV(I)Y(I) | PCTD(I)EMAX EMAXPCTD(I),| PCTD(I)EMIN EMINPCTD(I)4|  I| (EMIN)EMAX EMAX(EMIN) : EMINEMAX : MAKE ERROR LIMITS SYMMETRICAL FOR GRAPHING| MASK$"* | *"|*F$"###. +#.#######^^^^ +#.#######^^^^ +#.#####^^^^"X}4M1$((EMIN)):M2$((EMAX)):L(M1$)(M2$):LL: L(MASK$) L(MASK$)L : L}>M1$( (M1$))M1$(L)M2$: M1$ :MIN AND MAX VALUES}H  ) ((MASK$),"*")}R I NP~\M$MASK$:(M$,((PCTD(I)EMIN)((MASK$))(EMAXEMIN)),)"+"~f  ) M$%~p IA~z  ) ((MASK$),"*")O~ M1$ : v~ "Hit any key to continue ... ";~PL$ : PL$""  : ~ Output Fitted Parameters~ HDR$~ XFN$ "Input Filename for PARAMETER OUTPUT FNM (.PAR) :",XFNM$ : , "O",#,XFNM$".PAR": #,HDR$w I N : #, PR2$;V(I) : I,V(I) : I : # :  Compute Standard Deviation of fit and of fitted parameters J NP : YC(J) : JQ : J NP : QQY(J) : : XMQNP : T : GV J NP : YC(J) : KN  : YC(J)YC(J)X(J)V(K) : l DEV(J)Y(J)YC(J) TTWT(J)(DEV(J)) : GG(Y(J)XM) : $ WVART(NPD)Ȁ. G Td : L ؀8 SD(WVAR)B I N : SDV(I)SD(B(I,I)) : I L Y(J)XM) : $ WVART(NPD)Date: 9/11/1986 This library contains the source code for two least squares programs for fitting polynomials to data. There are some serious defects in most of the similar programs previously available in the library. The solution of the least squares problem requires the inversion of a matrix which is generally ill-conditioned. There are many terms whose absolute values are large, but whose sums are nearly zero. Therefore it is vitally important that every precaution be taken to see that the simple arithmetic is performed in a manner to preserve as much accuracy as is possible. For example, X(i)^n is usually performed by exp(n*log(X(i))) which is not as accurate as X(i)*X(i)*... since we are dealing with integer values of n. The codes presented here use double precision arithmetic. The programs may be tested by means of data generated from known polynomials of the type suggested several years ago in a paper from the National Bureau of Standards. Two such sets of data are included. NBS1.DAT is a set of numbers generated from a simple polynomial together with weights (unity). For data set RNDNRM5.DAT each value of Y(i) was perturbed by the addition of a value taken from a set of random normal deviates with mean of zero and a standard distribution of 1 ( and divided by 10000 to give s.d.=1.e-4). If a least squares code performs well it should reproduce the coefficients of the polynomial from which the data were generated with high accuracy. In the case of RNDNRM5.DAT the "standard deviation of the fit" should be close to the value of the built in "error". Both codes contained here pass these tests. LSQW.BAS is designed on a core culled from various other codes, but with modifications for accuracy and incorporating features which I find useful in my work. The console messages should be self explanitory. Code is included to permit the construction of a data file. If generated by an editor the format is: 1) a single title line 2) multiple data lines in the form X(i),Y(i),Weight(i) The code will sense an end-of-file condition and count the number of data items in the file. LSQF.FOR and LSQF.COM are the source and object codes for a somewhat faster and slightly more accurate least squares polynomial fit, but without many of the bells and whistles of LSQW.BAS. The format for the data file is: 2F12.0, preceeded by a single title line (10A8). The code will detect and end-of-filecondition for counting the number of data entries. If one chooses to use to use keyboard entry, the format is F12.0 ( which will permit properly justified exponential format. A file name may be in either case as conversion to upper case is included. Filename entry is a string of 11 legal filename characters as follows: 12345678901 filenameext ---> filename.ext It is hoped that you will find these programs useful. If you have any comments, corrections, upgrades, etc. I would be pleased to hear from you. Robert H. Sherman 1931 Camino Manzana Los Alamos, New Mexico 87544 . I would be pleased to hear from you. Robert H. Sherman 1931 NBS Polynomial w/ Random Normal Deviations, sd=1.e-4, # coef. = 6 (n=5) 1. 1001.110967 1.0 2. 1002.499328 1.0 3. 1004.275362 1.0 4. 1006.598470 1.0 5. 1009.687510 1.0 6. 1013.833462 1.0 7. 1019.411643 1.0 8. 1026.892810 1.0 9. 1036.856039 1.0 10. 1050.000125 1.0 11. 1067.156176 1.0 12. 1089.299114 1.0 13. 1117.560222 1.0 14. 1153.238404 1.0 15. 1197.812762 1.0 16. 1252.953558 1.0 17. 1320.536805 1.0 18. 1402.652900 1.0 19. 1501.620917 1.0 20. 1620.000039 1.0 21. 1760.601070 1.0 22. 1926.499168 1.0 23. 2121.045490 1.0 24. 2347.878322 1.0 25. 2610.937562 1.0 26. 2914.473447 1.0 27. 3263.061727 1.0 28. 3661.612898 1.0 29. 4115.385777 1.0 30. 4629.999974 1.0 31. 5211.446124 1.0 32. 5866.099171 1.0 33. 6600.730250 1.0 34. 7422.518440 1.0 35. 8339.062440 1.0 36. 9358.393736 1.0 37. 10488.986748 1.0 38. 11739.772797 1.0 39. 13120.150752 1.0 40. 14639.999874 1.0  10488.986748 1.0 38. 11739.772797 1.0 39. 13120.150752 1.0 40. NBS Polynomial with 4 Coefficients, n=3 (weights no included) 1. 0.0 2. -5.0 3. -20. 4. -51. 5. -104. 6. -185. 7. -300. 8. -455. 9. -656. 10. -909.  VN20 AQM@7N20 COMBN20 DOCa9 vgN20.ASMa  !"#$%&'()*+,-./0123456789:;<=>?@ABCDoEFGHIJKLMNOPQRSTUVWXYZ[\]^_`.F}bB>]Gp3".Gľ3ůZnL)LkGC7w鈣ӝX? &&E,?٢CPe/ E,>}ſV_HA%Zq!8-Z0Aǂ+Ll8:[ 6ܠcؕ^[SދVbUq$`,bBѮCU n|!O#P0 qAK_u ~8U+}uB4hl 謠K'VGX0/1MG<{)*tU-hn,A{SMǸ6J4qr q%DAx{@U Ʈ="8LYJ [ j Ee!jAoƖX0/qn&c\mb%:4ؙP>\6vC\c/8"bgAIʡø13i>εxC4:SjcTMQ`mʽC-Z#SZBuXPu3'6!X^qNwƖ^/(\@cRHh06/ۧ#O<v";.8MC}/8[osbH>\68 hw@SJ;S8#qdn,7ujxu% [bh+T8RzpT-7NwUmڡnK94E".jkZXU1n+bü07O#J16ǂޢn"q 'bFU-3[yCLdDKvOXJ;SXO˟J'oܠXOǗDoco>XC-ZPՂ,тľ3UhPՂ,тܘRbߙK*4[dzF 5糀NvGS>T`Ɩ8F3-AnZn}D;tc qw@o hW{D3-AGZFnՠ}|Q\KPՂWORbߙ "rK}g ?}D|&#q\/57cFX&&rDLYРU {xr'11q$$-Tgk&#Tgk#U@uѸt*}ĹVߥ3 z^ Ƶ&VQ9 }CuveBA ^¹vm:4Z 11,pݎzd{(}C (mBz㌘x 5\Cv5Qp)0(?'$O`d%̒>OCv5ILySH-@b4Ĉ]MaԼێVr;hbX,o!oAbFu%1,rb~j&fA I@&BPlnBp^@tR!¨yt͝ ÍAa\mb%cuƖİXB,!0=|@`Ү6{/p ݾ.m'3b~(o/m'&j :S0( >8_l]M%48.+bH)V3hGyB ׯ`Vgj(Í1f_dO i?xF ׯ`Vgj'&j f* ;o*Am eƅCv5UBqL _!Ƹqc7Xnqm@LmLQ5*hARbߙЍEσ%%q$7^W5 ЍE۠hkMDJ<;Au bbȒ  h+ĐS [o6@ ׯ ҬDq-sTQh+E;tc0YOaDy.hn,~ [ ڡ 1\RvD7hB;tcĐY}L MYJ<XjFX&&>tsE rw|$()# 1ohn,ЍEc\mb%:l]M'pAL Iz @4w*T rqmhbȮ0jF>_eDsB尖eƅCv5UB Vģ*OtȳTgk &,ɯ +T 1f8r =+ȓd4evƢ1LSmgQg ڡ& BvƢBL . 9 r(%<ˠoi5Qu'U:]1qc-ZopBB,D)Ѹq-jTgk &,ɯ Dd=Y>:\X41DZLQ`-7XRB ׻FUն˖d [Ȕ%rco1՞8ͱ-78#j8p%2P9 bl]MQPN zE 6 1c79%Bw/zS7Đ]Maܵ_'}J Qݤ[hUnN?s 1q$Qݤ[bX,ojQ0][H@ԅ11LwW0"(Kn-@ӂVpU!e 2Y{(p]9Ċ< 2evƢ:r "h}lP9AvƢa2eNQPN j C!I[Hz $Y/ΉztlL'=1q:ۋtwO0][ț1\/zHGy{qgnfݟa@4w*Th+İXB,!ͳ b擊&)|܎<4;+0&NGy{qg'bX,o!krbXNala2eNݳe2'bH,l-Eh%Ub-bۍӝQYbXN!o^CgKbFY}L< z͵ K}g σ7XEISbXN!ofgĐY[țd #3M'NGy\OĐY=WĻe>I1y_L^CaZdlz{ELȿV4T'bH)?CCOo1>C[퉉WU.Tgk &42 bHV0[ykЍEU[t8%I5[b^^m 5\CgL1$+Mx:Xˍ)%)>7fK ׋V+r.!ͳ &bvC7 Um,'fK ׋V+bm 5\CgL1$+UZ;ޢA=ATǹMi=I\̚mg͖=Wċj>CgL1$+힤h|d#(mBgM63bHV0X*RbߙZnL)LN[hn,5idψ!Y|@0)Ƶ&VC3kҶɞC%> s U@<{SESqƍ]x2kҶɞ53bHV0s%ڡj4G7XMN }|2kҶɞCbKsyZJ}RbߙЍE5idψ!Yײ7OcgvƵ&V~O|߯`lv _~=kҶɞCYeo:ݙI:b\mb%:I>~%{gĐ`U5idψ!Y1ݼp5idψ!Yfo*. ЍE7h\li2kҶɞC,;xI /ڡnbK|=z=kҶɞC,;^~9ߞoWxtЍE7hs%^5idψ!YfKJ}0m!z֤m=kgĐ`>((QՂtZPӬI&{l!ͳ zl<`/&/!Yfv1$+忷m>C^{{'n/oϷ1$+__Ϛ-{ul ĐYi=J``C6Xfd_!B ~@yD%1QG!&ڡ(o *2&Tgk &鮅 6҉U*bH+HVrhFa\mb%d @̽WİXB,(ByccKTK! FİXB,<<c1LwW0[ʡޢ2B_OF0)-@b4ε+Xv @^TKGXgTgk &$O`D m.tĐ $(OP႘1\^b) TváF>RU:z\r*C6} ͝ C+7 .xEoanb!MaL aED]tw#b&nDü4JpU_0"~Ci iVV{b[ub)LblpGI.Tgk ~=/+ ^PEǮ<C !~=)-^g;{/:xgQCv5y<'N4OP<1LwWu If=1dWSX5[bHVp^by y3"eCF $U\#U>x 1,71f1BgKb=_CaD m'&K9.#J NK9JILNPd#({AU ڡ&fD ieVQü0GQ 1Ft5ڡ&&J9qcZPH9,1[XΖQYK94X JTk đX o8>*Ap,X0/QJbd:Au bד;({Q **Cۦж)1mJ mCg$ *}戵`^C졟Ge]#> sZnGb>ip^?xELTgk |71ηpK!%ߠu j=Kbȓ)̶3b^#d:[1f| Z|mq7e# :I::Au bH,tI m'&εU\{5;tC7\rj.aDq!Fcl>C6eNAε+Xby y3 cbH,UN ) gĐY[țx՟:[11,njDc*Qī 5\CgD+TcSXtO z2~rs/hlvƢaq;mgpa ^tl Я'#'wQ0Ɩhn,Sțx8Au bH,tI ~ri iAS8*C"1\/zXOVhtTfY anʌ*szCW'pAL )KbH,tI IŠWpaV (,q6Uϖ"ߟ:[11y_L^CĤJ^1$+#t:1$+H&{lQ'!yDp|ĠLݠP9 I8Au bڏ2 _kQhRKQ9 bjs! 1794DC7F9M y(tVA06M  ;o*Vn1\G@%(2s8M +HEY!42HIK9b\mb%=LDƖX:4֩Z4q4*A[4[HIٳTgk &&m!ͳ %1,n73b(6ޢJ4t !N'pA z2@̽Jt ~=AB z21,n6wr RHp3Xyga 7Cg r G:b="-A9-_CaE m'&nJlXJ;S`%^}ʪTgk &Ή!-1$wpCr;8^~!BL)3.k ^ygnZn0v^t}ʪTgk &Ή!;8nGĐvCr[Hlnʌ !&nc8co>b%^Mw|U'pAL C2ĐGbH1$wp;;x;8 <};x{;8>H n?#>n_'ޝ|J #1$w޿#BL|~ 5\C2[tBanbhЍE2YTgk &dO&nߞ:[11$x Ńb];ޢ2Bl]M'pAL DAm0v]glZ>>07!&d#((?' 5\C2, 5\C2P&)|܎<4;+0&NGy{qg'bX,o!krbXNala2eNݳe2'bH,l-E4N.COM Ver. 2.0 (c) Norman H. Strassner 2/20/84!9"1!~C^!~^@ !L"vHʍBʲhʍbʲ! 0 z!$ 0 ԧÔAҳ !. 010ùyy"x!L"v*v^#V#"v*t"t #~#~x@o&"tͪ> *t6 *tXH zB *t|i} Vci>^ }@  No Char. a{_Binary numbers contain only ones and zeroes String contains non-hexadecimal digit(s) Number must be less than 65536. Error in input. type N alone for help using N.COM N.COM Ver 2.0 By Norman H. Strassner Accepts a decimal, hexadecimal or binary number, as well as ASCII characters, and displays its equivalence in all four forms. Append number with an H if hex, or B if binary. (no appendage required if entry is decimal number) Prefix ASCII control characters (^@ - ^Z) with a carrot "^" Prefix normal ASCII characters (SPACE - TILDE"~") with an "@" Examples: A> N 10 DECIMAL number, no appendage A> N 0A HEX number, append "H" A> N 00001010B BINARY number, append "B" A> N ^J CONTROL CHARACTER, use "^" All would yield the same result: ͪ 10 000AH 00000000 00001010B ^J* ^#V#!)$*vs#r#"v ? |6{0 |_}h t0v7 ɷ*t|͈> }ڔ>0×>1 Ê> à---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 㯆# > > _ d' @ @; n20.asm/n.com ; ; ; ;decimal/hexadecimal/binary number conversion program ;by norman h. strassner ;version 1.0 august 29, 1983 ;version 2.0 june 22, 1984 ; a terrible bug in the source code was found. ; some lines of source code must have inadvertently ; been deleted from the file. ; the result -- program did not work. ; this code is complete, and has one improvement ; - displays the ascii equivelent of ; - the number, if valid ascii character ; - exists ; ; instead of just fixing the code, i also ; added routines that would handle the inputing and displaying ; of ascii characters, making this program much more versitile ; ;contributed to the public domain for non-profit use ;as a small thanks to all hackers everywhere ;address comments to: norman h. strassner ; 1950 n. normandie ave. ; los angeles, ca 90027 ; (213-661-5000 voice) ; or ; compuserve ppn 72135,1051 ;this program accepts a decimal or hexadecimal or binary ;number from the cp/m command line and converts it to ;the two other forms of that number, and displays all three ;forms on the screen (presently set for 80 column display). ;entry can be in one of three forms: ;(from the command line) ; a>n ddddd ======> decimal entry ; a>n hhhhh ======> hex entry ; a>n bbbbbbbbbbbbbbbbb ======> binary entry ;where the d's are decimal digits, the h's are hexadecimal digits, ; and the b's are binary 1's or 0's. ;(notice the h and b appendages for hex and binary numbers) ;(decimal inputs are without any appendage) ;regardless of input, n.com will present the following two line display: ;---- decimal ---- hexidecimal -------- binary ----- -- ascii -- ; xxxxx xxxxh xxxxxxxx xxxxxxxxb character ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  xxxxh xxxxxxxx xxxxxxxxb character ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ uREAD ME VSSETDRU COM/SETDRU DOC0h fGGn5| Do you want SETDRU integrated with the program (y or n)? To which program do you want to apply SETDRU? Cannot open What is the name of the program to be created? $$$Cannot create file File Error writing file.Cannot rename output file. Installation successful. Copyright 1983-4 Michael M Rubenstein SETDRU 1.3 -- set drive and user for specified files in a program Up to 8 (ambiguous) file names may be specified. An input file will match the first matching file name. If it is ambiguous, the redirection (drive and user) will be used only if the file cannot be found on the drive specified by the program. If unambiguous, the file will always be redirected. An output file will match the first unambiguous (only) matching file name. It will always be redirected. Nonmatching files will not be affected May be installed as a separate program which loads the desired program or as a modification to the desired program. See SETDRU.DOC for more information. Specify drive letters in the normal manner (B:FILE.TYP). You will be prompted for user number. User number? !9 !VG "(*(|!!"&!!J@9͜ I !l@9*&##!K@9! <*&:\u|:\u_ #}*&#6*(|u!H@9 |j!H@9ͺ *&!k@9͂- ͇Ê!͸ Ç*&# }Ê!!&@9͜ I ʡ!@9!&@9!$<!-@9!!<!$@9r !$@9 |! !"***  ʹ **#"*!͸ **| !!\͜ I H** ?ùH!"**&** - ##!]! <*&** - :\u|ʔ:\uØ_ #}*&** - # }*&".*&###͂"*** *.".**"**. !$@9͍|! *(|ʿ!9".!@"*** lM*.".**"*'*. !H@9 ",|il6!9"0*.*0) ʶÐ*0"0s*0 *0!&@9͍|ʳ! Ã*,I !$@9R !@9r !4@9!@9!<!4@96!$@9 | !0 !K͸ *R!2"R*R͂zB 4 *R##"R *R͂͸ ) "R!9͂͸ ! ! ̈́!ts !!o Ø q q q Yu Ny G !9͂͸ ! ! ̈́:u| !:u6!!9͂ !9͂t| !9͂_ #}!9͂#t| !Ü !͸ ! ! ̈́:u|E :u6! "T n *T zx *T !9͂  ʟ !9͂! ͳ | !9͂! ͳ 0̈́!9͂t| !9͂t| ! ̈́!9͂#͇+ẗ́ø N#F#x ~#~# `i!" !" !9͂tG !" !9͂#͇T 2 -8 +!9͂t0 w !9͂t9 zʣ *  - !9͂#͇+t" T * * - ɯþ zO|OMD!x< z> jS\>)) # = OOc zW|}!+zz,c' | DM!z>< S\))D =< |ʀgoo&o&{ͥo&! W! W!9͂t|ʶ !9͂#͇+tWÏ o # o&o&o& o&o&:!9͂!$!< " !9͂! ͠"  !9͂t,|q * #" ø !9͂!9͂#͇+ts} ® !9͂t zʸ !!9͂t,| !9͂ " ( !!9͂* ͇!9!9͂!9͂#!n͇!9!9͂tI C!9͂#͇F! !9͂ !n͇!9͂tI !9͂+͇#|!9͂t!9͂#͇+6 !9͂#͇+6?!9͂#͇+!9͂#͇+ts} <>,;:=[]. *ñn!9͂t|4!9͂#͇!9͂!9͂+͇#|r!9͂#͇+!9͂#͇+t}<&}a{oo&!9͂"*t|(*#"ê*"!9͂"*t|*t*t`z *#"*#"*tI %*!9͂͏ø!{!0:,y_xs# F+|/g}/o|}!rr,ɯ~og|!,~#fos#r{ozgí, ***SETDRU1***Copyright 1983 Michael M Rubenstein1*!h! l :2k 2g :_*"* " *"*$"$*7"7*?"?*N"N*b"b*o"o*t"t*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"*&"&*)")*/"/*5"5*="=*H"H*S"S*Z"Z*^"^*d"d! !1*k<k!(k :g_!Z"!y(9 (0()  ((! " # ( 72is1!~(E2j ##:i( ~? 2j -#i:j(͒({}%{ yOڒ?ʒs1 ͒2g~2h_! ^͒+~͒y(:h :g_͒{ f eí ***SETDRU2***Copywrite 1983 Michael M Rubenstein1!h*" +*"*"*"*"*"*"*"*"*"*("(*.".*2"2*5"5*:":*E"E*N"N*Y"Y*m"m*v"v*~"~*"*"*"*"*"*"*"*"*"*"*"*"*"*"*"!!K1!"!y(9ʛ(0()ʛʛ((!ʛ"ʛ#ʛ(ʛ72ҡs1!~(E2 ##:( ~? 2 -#i:(({}%{ yO?s1 2~2_!  ^+~y(: :_{ QSETDRU.DOC Page 1 Copyright 1983 Michael M Rubenstein Permission is granted to distribute this software and documentation provided no fee is charged and the copyright notice is retained. Credit where credit is due. SETDRU was written in C and Z80 assembly language. It was compiled with the Software Toolworks C80 compiler and Microsoft M80 assembler. CP/M and CP/M Plus are trademarks of Digital Research. WordStar, MailMerge, and SpellStar are trademarks of Micropro International Corporation. Microsoft, Multiplan are trademarks of Microsoft Corporation. The Word Plus is a trademark of Oasis Systems. Perfect Writer is a trademark of Perfect Software. Z80 is a registered trademark of Zilog, Inc. What is it? Ok, you got a hard disk for your CP/M system. It's great having all that disk space, but then there are the problems. The directories get pretty big; even with a sorted listing (as from SD) it's pretty hard to keep track of what you've got. So, you start putting things in different user areas. CP/M sure doesn't make that easy though. Fortunately, there are a number of programs (SWEEP for example) which make it easy to move things around. Now that things are in different user areas, you can keep track of them, but there's another problem -- you end up with lot's of copies of some of those programs because CP/M doesn't let you access a program from more than one user area. So you search around and find some program which will let you access a program from any user area (and from any disk, so you don't always have to specify the disk). ZCPR by Richard Conn works nicely. That helps with a lot of your programs, but not with all. What's the problem? Well, a lot of the programs you want to use need overlays. Many -- too many -- don't allow you to specify where those overlays will be. So you need copies, of the overlays at least, on each user number. Others need data files or swap files. A system can get pretty cluttered just with WordStar overlays. SETDRU allows you to use most (unfortunately, not all) programs with some of the files used by the program redirected to standard drive and user areas. When combined with something like ZCPR it allows a single copy of a program to be accessible from any drive and user area. SETDRU.DOC Page 2 What's it need? SETDRU requires CP/M 2.2 Z80 processor. It will run with a minimum of memory. SETDRU will probably not be very useful unless the system contains a hard disk. I have reports that SETDRU also works under CP/M Plus. An 8080 version of SETDRU is being prepared by another person and should be available soon. How does it work? SETDRU installs a "filter" in high memory which monitors file accesses and modifies them, if necessary, to use standard drive and user areas. This filter is a temporary thing; it will disappear as soon as the program terminates. When you apply SETDRU to a program, you tell it which files need to be redirected to another drive and user number. SETDRU may be installed as a modification to the program (integrated) or as a separate program which loads and executes the desired program. Advantages of integrating SETDRU with the program: 1. There's one less file to keep track of. 2. In many cases, because of the allocation unit of CP/M, no extra disk space is required. Advantages of separating SETDRU from the program: 1. This technique may be used with programs, such as WordStar, which verify the program on disk. (WordStar does this when you try to use MailMerge or run a program.) 2. Since the program is unchanged, installation procedures are not affected. Also, some programs may modify themselves. This is only possible with separate installation. 3. If you haven't installed a system to make programs accessible to any user area, you only have a small program (about 1k) to make multiple copies of in different user areas. When won't it work? There are several things a program might do which will make it impossible to use SETDRU with it. SETDRU cannot handle programs which: 1. Require the CCP to remain resident (e.g. EX or SYNONYM). SETDRU.DOC Page 3 2. Use the BDOS entry address (at location 6) to determine addresses in the BDOS. 3. Modify the device field in the FCB after the file is opened. (This should never happen, but, of course, it does. This is the problem with applying SETDRU to MultiPlan.) There are, undoubtedly, other situations which will make SETDRU unusable. SETDRU makes some assumptions as to what is intended. These assumptions are usually valid, but may not always give the desired result. Installing SETDRU. When SETDRU is run, a summary of the instructions is displayed and you will be asked a series of questions. At any point in the procedure, you may terminate without installation by typing control C (^C). Upper or lower case may be used. The first question is Do you want SETDRU integrated with the program (y or n)? Respond "y" or "n" (and press return). SETDRU will then ask for the name of the program to which it is to be applied. The file type (usually .COM, but it may be different for special situations) must be specified. If SETDRU is to be integrated with the program, a copy must be accessible. The drive must be specified if it is not on the default drive. Make sure you have another copy (several others!!!) as backup in case you have to reinstall SETDRU or you find it won't work. If SETDRU is not to be integrated, the program need not be available. The drive specified is the drive from which the program is to be loaded when invoked. In this case, you will be asked for the user number from which the program is to be loaded. SETDRU then asks What is the name of the program to be created? Enter the name you wish to use to invoke the program. Again, the file type (usually .COM) must be specified. The drive on which the output is to go may also be specified. Note that this name may be the same as the name of the program to which SETDRU is applied. This is fairly normal when integrating and may occasionally be useful when not integrating. You will then be asked for a list of up to 8 files which are to be redirected. If you don't need to use all of them, just press return to terminate. SETDRU.DOC Page 4 If the drive is specified, it is the drive where the program will look for the file at run time. The user number is the user number where the program will look. If not specified, the current (AT INSTALLATION TIME) drive and/or user number is used. Now comes the hard part -- deciding on the file redirection. The order in which the files are specified is important. File names may be ambiguous (using "?" or "*") or unambiguous. When a the program attempts to open, search for, create, rename, or delete a file, the list of files will be scanned. For an open or search, the file will match the first ambiguous or unambiguous name on the list. If the name on the list is ambiguous, an attempt will be made to open the file on the drive specified by the program. If this fails, the open will be attempted on the drive and user specified in the list. If the name on the list is unambiguous, the file will always be redirected. For the other operations, only unambiguous names in the list may match. If there is a match, the file will be redirected. In any case, if there is no match, the file will not be affected. Examples. The rules for redirection look more complicated than they really are. For most practical purposes, you may just assume that an input file matching an ambiguous name will be redirected only if it cannot be otherwise found, and that an input or output file which matches an unambiguous name will always be redirected. There are a few things to watch out for. Remember that most programs do not create files with the name you finally see. It's common to use the same name with a file type of .$$$, but other schemes are sometimes used. You will have to specify the name actually used for creation of the file. Also, it's possible to really confuse a program if the order of the files in the list is not correct. For example, if you have the names foo.* foo.bar in the list, the program may write foo.bar to a redirected drive and user number, but then read a copy on the current drive (or the drive specified by the program) and the current user. It's almost always best to put unambiguous file names first in the list. Example 1: CAT (public domain catalog program). This is a simple case. The program uses a file called MAST.CAT, SETDRU.DOC Page 5 normally on the current drive and user. There is no reason not to use an integrated installation. If you wish to keep MAST.CAT on drive A: user 0, the file list consists of A:MAST.CAT user 0 Example 2: Perfect Writer This is only a little more complicated. If you use an integrated installation, you will have to use a plain copy of the program if you wish to modify Perfect Writer, so a separate installation of SETDRU should be considered. Let's assume we decided to use an integrated installation and put up with a little more work to modify the program. Perfect Writer uses a file PW.SWP as a virtual memory work area. It may use a file PW.HLP for help. Again assuming both files are on drive A: user 0, the list A:PW.SWP user 0 A:PW.HLP user 0 will work. Example 3: WordStar When a program is run is or SpellStar is invoked, WordStar must load another program and run it. Before doing this, WordStar checks to make sure that a valid version of WordStar is available. It will not recognize a copy which has been integrated with SETDRU, so a separate installation is called for. In order to keep WordStar accessible, one could include in the file list the WS.COM, but one probably has other .COM files that one might wish to run, so *.COM should be included. WS.COM need be included only if it is not on the same drive as the other .COM files. WordStar also uses overlays. Just which overlays, depend on the options used with WordStar, so it's probably best not to specify the unambiguous names. Let's assume that WS.COM and the overlays are on drive B: user 15, but that other .COM files that one might run are on drive A: user 0. The list B:WS.COM user 15 B:*.OVR user 15 A:*.COM user 0 would be appropriate. Note that this would not work properly if *.COM were before WS.COM. The program generated by SETDRU could have the name WS.COM if it were put elsewhere than drive B: user 15, but that could get confusing. It should have a different name, or one could reinstall WordStar with a SETDRU.DOC Page 6 different name. Example 4: The Word Plus This final example is rather complex. The Word Plus is a spelling checker which is implemented as a collection of programs with a master program controlling them. The programs use various files with file types .TXT and .CMP. The master program, TW.COM, may modify itself under certain options. Furthermore, logical updates to the main dictionary are actually put in a file UPDICT.CMP. When this file is updated, a new version is created as UPDICT.$$$ and then renamed. One could make this even more complex, as special dictionaries can be updated by the program also. We'll assume that any special dictionaries will be accessible though. If all these files are on drive b: user 4, an appropriate file list would be TW.COM user 4 UPDICT.CMP user 4 UPDICT.$$$ user 4 *.CMP user 4 *.COM user 4 Removing installation of SETDRU. Sometimes it will be necessary to remove SETDRU from a program. This is only a problem if SETDRU has been integrated with the program, as if it is separate, all that's required is to delete the separate program generated by setdru. To do this, the program UNSETDRU is provided. It is invoked with the command unsetdru where is the name of the program from which SETDRU is to be removed. The file type (usually .COM) must be specified. Make sure you have a backup before doing this. For the hacker. The source code of SETDRU and UNSETDRU have been released. The installation program source code won't be that useful without quite a bit of work since it uses a private run time system. It should be possible to modify it for your flavor of C, or to rewrite it in whatever language you prefer -- it's not a very complicated program. SETDRU.DOC Page 7 The filters themselves SDRU1 and SDRU2 (which are used when not integrated or integrated respectively) are much more interesting. These are coded for Microsoft's M80 assembler using Z80 mnemonics. The principles involved are quite simple, though the implementation is a bit tricky in places. The filter intercepts all BDOS calls. For certain file calls (open, make, etc.) the table of file names is searched for a match. In some cases (make, delete, rename) only unambiguous names in the list may be matched. If no match is found, control is simply passed to the BDOS to process the request. If a match is found, the request is modified to the desired drive and user and tried (for open and search, the request is first tried unmodified and only modified if not found). Assuming the modified request is satisfied, the drive in the fcb is then changed to 17 plus the address (relative to the start of the table) at which the match occurred. This is an otherwise illegal drive specification which will be detected on other operations. On any other file operation, the drive is checked and if illegal is modified to the desired drive and the user number is changed to the desired value. Of course, these must be changed back before returning to the program. There are some details to take care of to install the filter. If integrated (SDRU2), the required program must first be loaded. Otherwise (SDRU1), the program must be moved down to the start of the TPA (0100H). In either case, the filter must be moved up to just below the BDOS. Moving it is easy enough, but there are a number of locations which must be relocated. This is done in a very simple manner. When modifying either of the filters, care must be taken to preserve the relocation. Because relatively few people will have any need to modify the installation program and because it is written using a nonstandard run time library, a relocatable version (SETDRU.REL) is provided containing all needed routines except the filters themselves. There are a few things which must not be changed if this installation program is to be used. The start of each filter must contain Bytes Usage ------- --------------------------------------------------- 0- 2 A jump to the executable code. 3- 4 The length of the filter. 5- 6 The length of the program to be loaded will be put here by the installation program. This is only used by SDRU2. It is not set or used for SDRU1. 7- 19 The drive, user number, and name of the program to which SETDRU is being applied. This is only SETDRU.DOC Page 8 significant for SDRU1, though it is set for SDRU2 also. 20-123 The table of file names to be redirected. Each entry contains the drive (A=1, B=2, ...), the user number, and the file name (as it appears in an FCB). Asterisks are expanded to question marks. 123-135 Identification for the filter. This is only significant for SDRU2, where it must be "***SETDRU2***" for unsetdru to work. Note that the only parts of SETDRU which is dependent on the Z80 are the filters themselves (SDRU1 and SDRU2). The installation program and run time system will run on an 8080. After modifying either of the filters, a new version may be linked with the command l80 setdru/n,setdru,sdru1,sdru2/e I'm not sure what modifications anyone would want to make for general use, but it might be necessary to change some things for specific programs. The following variations have been found useful in the predecessors to SETDRU. These are not so much recommendations as suggestions for things to look at. SETDRU will not work with Multiplan. The problem is that Multiplan contains code to 1. Open the overlay file on the current drive and user number. 2. Get the current drive. 3. Change the FCB (while it's open!!) for the current drive. Horrible isn't it? Well, it doesn't do much good to complain about turkeys writing programs; we're stuck with them. If the filter is modified so that the first call to BDOS function 25 (get current drive) lies and actually returns the drive the overlay file is on (and the help file; they must be on the same drive), Multiplan will work fine with SETDRU (I think. This has not actually been tested, but it works in another such filter.) The filter might also be modified to correct deficiencies in the program or operating system. For example, on a CP/M lookalike which supposedly supported incremental backups through an archive attribute, I found that the system would allow the archive attribute to be set by the rename BDOS call. Unfortunately, WordStar renames the temporary (.$$$) file with the same attributes as the original file. This resulted in modifications made by WordStar not being detected for backups. It was a simple matter to always clear the archive bit on a rename. (Again, this was not actually done with SETDRU, but with another, similar filter -- still, it should work here too.) SETDRU.DOC Page 9  I have been exploring this program quite a lot and find it very useful when working with a hard disk. It functions in a way similiar to the PUBLIC feature of Z-System. Pete Campbell noticed that PUBLIC was not working properly with SuperCalc, and I confirmed this. We put SCS2.HLP and SCS2.OVR in our public directory but the .COM file still would not be able to find these from a directory other than the current logged one. I then put both the two overlay files in A0: and installed SETDRU on SC2.COM, redirecting its internal searches to user 0. (Like most programs that don't understand user areas, it's at least smart enough to search in drive A: of the logged user area.) It now works like a charm, and one is now able to run SuperCalc from any directory on a hard disk. Thanks to Michael Rubenstein for this excellent program. - Rick Charnes, 2/10/87  V-10OCT86 SFILE DQCSFILE31 AQM$SFILE31 COMlSFILE31 HQS3SFILE COM1lv{SFILE.DOCQ  ! #"%$&'()*+,.-/0o132457698:<;=>?A@BDCEGHFJIMNLKOPN*'QCNeБB )*`]]ۤ+5vCqS~@'A %r-XiLp|.i4XǔB p )_>/ߞu>/ﶿV%MA %VσZC v9::f\!}Bcd9fm3h&HcyA %֘ǎUAB )tMo^m75*}jB]&PvW )O]LkăƧ% _#4cι٦}^)־|{>e"?` r7mzw;-\5Z4-<GwB ]ӛw Q>Z({a?8cqh!Mk__>%_}1hy|瑼i2kvh߾M=ml{>sn)C:[)ޔkG4| ŷ1'_!B Cu 둦%<Ʒiߋ\^y]iicq@9C̏dƧH!EoQ_weQ_JQ[wj]}qbJ{+RT*u}ݨZW_ܹx}*]jRKoI~kg(7)*%kY|8\\(y]C}>iZ?||2RP=oQOJZ97cȵȵ54&?,cRtp4ZGKI?|?\0Nx3-/=c8Hq.o+ J-wB]OQK>)?MN-Fo>\(}{:Vj"EgcqPxhRxt5-i6eJ-wc:^SO )*}5;jkU)*P((|aẝ O0|VJ׾OHQ)R(.7V4F ).C}m|>ar-ÏG1l:<=IPB1޾_>c:C)宜G)juaV ){2 i|~PB iizKI?|)&ءPz&t<AZAy1F{u 7Hqmx{vp y]C:c#Cxk:k< AjL4ڃQGG:Ϸ)EqN}:p78qc )fh߾ϧk'p7aHQ[Jup[T}>qmՑB[4ļ͟"K#{}P)I/`FA {H!Ep*nߝǶу>%%U.=^U%UXH!e.rwj]}qbJ{+RT*u}ݨZW_ܹx}*]jRKoI~kg(7)*%kY|8\\(y]C}>iZ?||vSFILE31.ASMb ! "#%$&'(*)+,-./0123457689:<;=>?@oABDCEFGHIKJMLNOPQSRTUVWXZY[\^]_a`a.;L]0e={\v&[_;yz۴0i~/ 0F#db[)\v&br{A?G.~2=7_l{y #`|ɎlX3̷_(Y;@gm9rySxNaz`:/ *zOayTԢmmLE9ڱZG_[_J IIGڵ̷_){Yywi]yi.~ex},gҙ~˶RZwk֙r(02mEqn@gwy|nJM-n@,^F)MHcZx ~A0٬{;N^FU:e)gRqK=kem]\dG)gJnlmU;PWX369C8{^Zw=sӅͳtKzsl+ٸuJ7_\Ԣ_x7{a[)rn0X3ŏ=,K@`6]t{_o/z'V dUZ9M;XgGWlg[)>۽nF\v&r[t+zsy?\v&~ҹ $9z̶Rg-3fYdS-3yge=,y|nڙwcGIerֻ,vetfދEIsEvxoea.;`r]((ŏaG/8tQU/]kVL\#`d4-20ɘ(C_3ach u@SVnrg90X)7¤T%ELxl+,;J9^{ˮ\N=ȫZHp?ka௲~9dU:)glV˕4V̎tљwm 0yge[)ŏ١_gݳ igJV˾c2S\|WgY`^^v0F+";ʅwM qy֎-Psޛ;4.r mVʪwRgy/`pm{|w@1<+*eQ9#J\hAf_JȎoVJYTȶ¶ R]|ǹȎμg^҂q^dv.x/ͳGP.`dg?7ڔ{%ZTy]e[)eQEvt,J.jGQ6i tMG0R6Nƴ>ȶҢgE٤-Pn}V딲NށJX4{iZf6V:+:m{4(2+ `.`n})4/02wy#'RvӺgs )J.3en*--iwHT.VCGvz'x7ge?BJ_8ߝ;vwuf2,*gF\v~!JŢu.f3q-~Xt&`eWd[i!:Ϯv~nMrZɫ#]௲~9L6ژgy+bi&$dk⬲\W:Ey..2{빮"G./҅(J6io0k/cFHީYvwg=Z\tTT(TཥITgh;'oQ3Mz{=6~V[_N5yoSma#CmlV딁v7`:6>wȉ66ώvnyFix.^RE86䬲\W/.&J. ?$dkܴ _.ԿG?rlr﹟m.& ]L7~D<ґIr6ޔv0FHӺgs Ǚؐ[tf[ƕSm79k;^x7-rVW&gI?6 #&!n۶o<w«0FHs?+eQEvtME就 #qJcs?+2Evtˋ\+}Q6J.ɘgyژgy+\^d, VJYTr}<>7F ˦3`\BI5rE\^4Ovz7TZdצ;evzٽMy]"M /Щ~RƏSqn^F{ԿJ.erng* 7tJgmمܴ&^7d^{vIoz]1s[_,7#G]ΓÑ˻0^7Hyr8ryxLj'oi~#G]ΓÑ˻*O|]G13rݫH>G}cL]`:]J>32>j/}R]mKѥ Zم(`C:}R绬PRti pw:Oϗ]mUt鷔A௲~a^/F58OL#w/EF]hEvij#>w})`UY }ǦJ:~R6Xâ^O.?2"wXe߱iSէSI#r]uʕJK ;hm)8TafI/JK >r]ut#s>87yuP<:e:ИKqnVM?~hL;s?Tn@6aJnZ8fv~hLʦ-;{va[ =GjI5!̷_׃~*:ӛTC enڳ#wQ.gYl+e䝲N|y~:_B`p~hLoOܹ 1 8s?r\| >hw=uqm;#CmRyo;y4u+oO#w_\ϵ Z!ׯ/c{il(ূC9-zZ~d w7ݍlH#COsƕfoKwݏ&Se9LחY^vY\hf ~d w7ݍlH#-u>\qRSen/GNהUte?d9,Q|`(eQ =?2S-w\dGlf~:O{:#+/FiYES{ɡ+#w/E˾c=oTat;)9ld]rnY }Ǧ0Q8n~jϾ?^~:?rWRtiم˾c1pCx?2uʭ/,:kjg-{׀ 6ZS.B.zmsVY+il뽽ݏ&Se3gEw6o_?4'wG . ]*w^?g?L#vz6Z‹i0T6?HgVJi}oJuʫ\* ?k0= G|ʎ`|f/uO?黋IrGv-'w7RGhJ b^cCn@ggr܏t/uOr_ dž*'CM*;8d_ dž*' ` ?k0=~:whF?ɝ/TOߛ|}r?2tf! |a@g#2-ٔVWo)bq?k,*;6-3wVJu&mF 8柵Pp#wV4Z/ׯ#wѺ^/]zK諟#tdpקlE.JeW=˥U:#3Q0h;Nb6Tz0T},n+vλ*wK^ݏ'U-3# 颴]R|-oY28dy NYMzxH9Y#݊3x~*jndo LCn&SF/阽iNLrf \F]v0И>ja:ݸlZe/IHKcl+u6_ƹPߧΧeQލnw[;R2?Ґ.J-λr?kش;s+~Z/|ʎ39YGE) 8CV~?;qR?k$~:wh>~[qJabk?s!ҩ]|gG;娼ώ#2Oy*j1a^(2Oe?jHHsT>K  49ʦ&m~(S#l(m:z/3i/6i C k x2tQtSdxa^??7~*: /aHac}##wq?k,*]|Tr?gj#>rWJp_ y~bqEݸpwlZ#`ƛ΀ֲ]q4#n ٮ+^~iZ?2!]|笲\Wڳa2Ux&SՋeUh\p_ ໧Οp?rZ,z*uŭ/4;]WudG#+;(2N]ZuP Y=pLjd\W\tg \pkI#+2N]ZXٯ­/b]8໛|T̶\<;聳/ ˽4dr%0FHKc8uie0BlW?Gn,h/cc;GE>+Odmi(gK+ga?rm/? O? O? Oֲz#wӏt46O~±!ar?sN딲rMggr܏t< 7#ূ6_&m~vٱ"}ݏ&o=X?rH'? M?;~z|S]m 6@_ex1KCw6]ڜ|g#_ eR<?Pf^V=6〟ڳ]ڳ_..O?RuGf[̶҅Nzy#{thSY&Ժ#-uV۪rxK~udG# wԝMƭ/<`/j;";;k.ùt?OOOhs]X{c{w?|\s]|Gp~ UbFב#`4tnށRw6]pz_~P|PP5zqZazc=`/Mչ0~}s")M4U5ώ?;~|m#8|Gp~|Gp^*17:?b :#`J.l*-J^,ULYƹu6_#`jS{냩h[o"; =p, ٱ"`/ }| G?3e?կ?;^|0X)wuie¶R]|=^,U@..ѻqVe[)`u6_9) Ods( ٱdmx(ূCdi2_e=|>LsMYϕ fG?3ek/~*?9ܶ"8>e?;^t46Y9)W S!Y9)W Sa|>ՐT0 /0 Z/0 /0 Z/~*ؿ?k/~*}H֋ O)gڋ )zqSa~iOI6??R9'~*8LS׀?sN>u~X5gڋ_MOh}NUbFב#`},}ξ4 Sm/GN٤-PJ*:π OK gڋ =/ώ?Rώ?>0FwKcԥ[g6O;fY_]O'?rW~4اl~*:?sNTpگ:f}ٱ"gگhGH?#ߍ~a;]W?'B.W_MOGH?7J[ʦA0S`t0Fdies=!gYw/A@tb{nZf;;kw6Bw6BE?M!wGT^F|~|ɛTI5!_؊4S.!yAtS:eѶ/ R?I;w#mu+w??ր#@y7.td~dߕˉY=s.֣Y«m~4IuGn\| Tt#wp\,NcXו^]Z/zK_hCx)HH3M9%ͫʀZ/ $W{+_:2#`6_~udG#&Kn E#`_OO uWOX'Ԟt8s.໧c?2y76ϫ -ߡ1IȎ0F:^œBKwGtۊJ^FYyo6/pHz26VM?G@u/O6ӟ&sZáiHHKiHCOCֲL#vu~:pgt?d=pu!l73?=u$pv3cS{Eddi-Y.8dF(:u_.E;^,-?L֊6w??dI?:-#8#UnnrE;^,-_G3{n:?dyzoM^]#&wJiTtX~duiӺG?M~v&G`7+0i;w#Oֽ>->'OO w?1I#r/=z7? 't]mfsym G_#CU[˽{7̀_Hȱ:hqS*{lW?g?.xX'-@r\tgc}Z<^ X'r/=z7:#`MVOl+4Y){% }#8-WHcu\ə6Յו\F4Oyo+~E9{lb[)w0;} bQ2mEqw}9{3m­/\tgctnԝM]Gv09sO셍~ͫ/ ע]xTt#mul+e h/Tӟn2B?2Ksׁw]n3cE_~?ueG+p ͗ƫ;tqS9?Lp x7ugӥFב#`LJn0jtWg?24˫n ;64-lg9[Q|ʎSnֲIUG:^/Z/tT~:3Uiy0FdX2hEYtn(&.0e~WvAiݳ ;R'w?|R~:/MWzug-6_w`|f? MzԞt;6vλ*w-eU ,#"Aީ#3˽ITӧSm|&!HHީ#C_G32Fuʫc)u;{vZȝwgOj]: U늋lمT*.Fב#`tʽmźQA#`Rpd*;,) Za?2\y72s,*9,וZON gr܏tug-`i tTS<7l]MOC;LCns]F?k#M]|ʎ9NF/~?IT쇃ѧ.ySeGOeg~?IT`~:3龟pQgO^8dҫ ~}l9?2 f=pT wudG\z 9|x3`pPM/ɟ2ڋ#C9N~{vc{hg`+l:13[Wz13mEq^~ilcEsx8Ul~?&6rѝו,ڴp[|v{'өfލ\WwrŽ,.Z|ɟԲHŢxotڸRiia de}Zm%WP~MLϤGR.(-(t?2湽+ۭOٯPGf.tdJK >e(QM#Ʀse Mh!m̷_h g-A03׏LY\Wƛ twCL7w?rWW*--7Иj?Gжn~vC_ݏ&`yzo m g-{0U}.;?)־,Wn6.tۊY^uԞ`j jqS{k/W|tԞpN,:7-}3FXjS=ٱ"}kw?|.M t?rW^6OYNRiimjp>{il~_h;qn6OٯEv.mN)M6??]mdצ;\~vB5&?%pL#eB~M/~dߕ/#mdK|wfGsٙ0Иj?~vC_ݏ&N)M)ֲS2]m8wԝMFiYES{ )Nݏ&?%~v8%l~*:;x/l+_d TcEώ_)cg-{0I`G]W\Cm!c~v`~v`~~@΀ d:-;P~4 mMgGEyEX3y??SaTtNO k x?U}.;/cGNeh[Y^|w?ZfGVeesYvEXcIr);d(EX Z\W~ =P%P yߔ})4^N;âW_,.\;fn}ἷz{]g.J LjS՟齙[_(`t0F]m\tg㬗ץ2m)w(uu)wp716_GNYtPP|aĘ辰yrn7eQi~v~u跴[-~d.cqcu>ƢW_,bYͭ~hL erQ7ۭ[Ty?g/e?z#4`G]W7J#8/GV:7_EGi_~?-Ҷ/ `t0F]m\tg㬗ץ2`ѫ/w(uu)wp715cS{J?2Զ7z{]-n˵~[ tUPM?!*w6B;ת''wcZ;aw|Gp^ [նl,e|Gp^ frT&.ί#Vn3G*^F)-<SLjdnR|#;FEXcnX3w(uu)wp71|g#_|g# t&9dm+sH'J*:πֲ kJ*:πί#+/ʢv\I#ϻ#CY,*-M t&FNp#+)ҸNUtweQiqngwJҶn W]Gv02uJymZfnB>u>\tg~PWxCxiZ!wrGj[_,n9 =* wbqQn};r)`<?ɝ*-J (6. j ݏ&2?2r\e~?ueG+p J/ۻ S{Ă^ؑ;ξCuʫsVY+?kً\\;fZwke~Muʫc)u;{vZȝwgOj`~j~8tWY^ׯ#W1V]\dGYS:dyS)4JYTrpd~:wh>~[qJ|f? S:dOCE=S|c~?c|&!Hȣ`8CV~j~:\l^Gr+mEɫBXOX'nɫ .~j~:\<$,GqJst+Mؿ`O1Ԟty1Iqr?-(?2wEv.mtouc =pzhEmZ"; touOٯ;Gl8wu%6-3;6nV|c ώ?;^TrH?;^TpH֋0F f7rS-Jy/]w[{p{ 39BF(4xzwE#ƫҲbNK뙭юMmbl./2~`G;6-3>彰k=^(k#"}x/?kًH-~( o mM,z{i>eq:]Xtn2Js 4vqލq:-0 /GHa 44o:0 ?GNEiY2n7|Gp~~:ީ]Osƻ~j~:\\GNŭF8)y1Ie/~j~},|cS?kًs]eL?g>?2wEv.mtouc =pzhEmZ"; touOٯ;Gl8wu%6-3;6nV|c :s*Ϊe;CW.'~hL;s?2(~XrSfFב#`tʽ4έ(νȦE+YiN? W&?-2۲>-J-|cGl8¾2?;~|yʎ`t0F@24I7(/ kW#"CYy]e|&!Hȣ`t+g-{&SuL~K ŃP I-wepק&miP) !颞)y1IFX>~[Q0x!?g?.6/# 9ʕJK ~\,JfyU|cGNEy7ՅSV?g?.xtou@g`8CV9LLoN]~_'՘~j~:\<$8dy t*@wOI5udGTqJi.fr߲Mer]YS:dS)|g#_ e F(?rƤX]c4@mW?kًǨ٤-P-^a?uȦ< `0~j~}a~ `~v`~*pwlZJ :#`62mEqn@9eg&99LLo6g-E%к^/〟 OCQmGjc[)n˵~~:?rZ,ڸ.M ù^o?g 셍ywlZԥ[gxvmPM?G«,eSAܝ1NN*O Sj?&lX?໛Q6Hc (6OO?2.ɡ,M?&sX{?2\06?3.9~*:$cN??&OOEO 0;l~(û~ww'?}wٝsx]OO#{1ˢ4݁ו,ڴ̀O:SGcE,3e#jTzH#CY }PZVyX{Sa eru若Ҳ3gڋ_iH[Ut<i辰y.QV֋_3GEN٤-PJ*n]W 7KC_{?n ̀ ' d5C<[dE拲I[UteK2M~}B5GQOS./ *ޛyin97yuS<W_9| G?2uJ93Ol/ 4.`pPM/ar9=u>*0#`d&ԥ[g J鋥Ma TCRJix?2/0 mrV.d^a~y䬀 )Tk `~hL?;^XS!sj?~w?zW]Gv0>96׃^?rW^6O~ k/Gn{a[)uK{˲_{TrH#GЦwc[)X{S!Z/Hȣwxlm4o:6_?g?<^}:6_e?IoϏLv^WrQmE/n |a@?g?Wƛl4F槂ׇ?rWmM-CZ/~*ؿ?hom ূ?7ƛr[| ^Tz#}m)w8$k/G3uu%QK2~vC_9 ~4-~4dv/{&{eZ~Q0#`QA9kFX| |<л-^0rtS^«l%nrU6Orש+` ONn9LoR s?2T彥I5!~Yej ɏt󁗿'UWzua N;t*-_*LY'@|?2r\BH-2~jϾ?DO'\Nܘ6j)-Uy~6^NѶ/ R%v_%`t0FHaJymZx/lW>bћlr/M b J#;PWhuw6B׀ll⋀l;aP)Jy]"M 7~?c?2<~};aJ拲~JymZ#1֩cy?2y7nﰍ5W]Gv0)(9r/Ieh[q}`&e\ƹGWm欍¶R(ugӥrMy]eT-6iU{ˍ09{zs{欍c0cfl~*:OX'X{5M$5#;F{i[QF2e>hLsuhY+`4:1TtH:ftouώ_䍱NrLJ :#`¾ו,ڴF@cn>os:/u*q/uONǁGITcPM?G+p ek\| ݝ7:I>9'GhSRVn۾)mww.#\F~ ƹ-é ou|;_\\ݏc$_m/^J.3PY UlKZmv2nZx>~[F=Rw$4tƶR"̀:;iȤ_-ԝw#;FF#ݒ@!Gv)e/ `Fv#` ݣpa}u8spo֒΄?ߞTyv]pzq'Saie..}u8s.r_ dž*'`M7XŽ\3"r{:_p]8d_ dž*'` cMgҹXE2=gҙ8d_:`|f? KayX^g.qVY+^>~[Q0_:`a0or8&yJ/W3wÙ;tFב#`a}u8s 2ܛ3a'Uަ]8\^IThuC_Ù;\sٙpVY+-ËC`|f/cC KPLNt_lktf^cCn@C_ /]8d_ džPLN'&3}\W?"̞r] gr܏t/ 0>s]<,38,/qr?-(/ 0V7ez<͗vqÙ;FgҹXG.yl\v&y.-˕ו^]1.qr?-t+r u/8rccVL\{!ek-˕ו^]1.qr?-(/ 0:C_ܡg_N1:y*uE]7/}u8s?gpsYKa39YGEuXE.;TzqÙ;\p\FgҹXExLCns]F΄Yk^^pX_Lvʎ9ЙsVY+J2(r)bQ/X~BYTΛ:9W3wN,s],#"K?" כ柿k^^p)?徿t+^>~[d\W_3y)5//X_ܡgW3wÙ;t>t*@ǨCi}&v~EvMZSN?t1?WnoȎI[Bu5ݿ7G*-Q6i [_hNcZ鯲~re@V?1G*-Q6i [_hNsƴ>_eB";&mr r)s?t]cZ鯲~re@V딻?tјgyl_\dG٤-Pn}U:Cόi}&v~EvMZSf?twcZ鯲~re@V?tKƴ>_eB";&mr r)/OcZ鯲~re@V'?5G*-Q6i [_hNFHCR\dGgn}VԕLuE]Zgg?7ڔu%6-3`dQWشoK+FR//6O_8ZT6-l+0#wޝ}Y eQy l움p2l)8X#{tx]"M˜.EnZf%^u<'M1d7lƴ>MĘg 3lL6EcZ&`fL3t7l^2lƴ>MԘg/Sp.XIʑn?{hLG]^HS\HRˑn?b=Yϑn?"짳H 10G^j9ry?"Mjι_Nir8&C!g_pu/Lzځ#.XŐؓSpx/j]|Ƭe^ut*Jš ,#"S:d S š Щ>š p#pw_lZC `&Sp˞ @gYhlÙ;\prr+(M eQɋC39YGEt*@g`8CVipܽJ-mB+=̋C39YGE) 8pw.8ry0oNYeyq44a}u8s \^tf[ƎlוZ3/]F?gp;Йו^]yq'z6XeFj일Ss/<6jxq0yd0q̎Mgf &cT%`c)9J/Ȁ]\0Olr]KixiwGVzŚ.GSy)s??2OWl}h׼m 8swwGqȝ??2wʭ/3)ޣnlEhs06nVו,cV??Wލʢו^]e*uEv\W~C;\^o6?]"`!|ӮȰɫ eQ SiGNsW4-\iQ(TCR}RP,-l(&KҢ0~r/{G6nlEhs06nVו,cV??Wލʢו^]w l l:   :\=Ҙ!* _!~ʘ2 ! ژ!] 6?#>?2h- !\^Ͱ##~2 #~2 ##^#V" #^#V" :\ l* #)O" " *{z: _ Ͱ>?!hw#w#w!" - I\Ͱ<ʶ =! o~G} o: G#*  w#yo&D o|gD o|gr#s#" * #" ! *{zG͘Memory*. *.ʿʿʿʿ! # !95# (ARC > ##A^#~#^#Vz" !*#"M) ) N#F^#V_~W #ƒ^#V#N#F_~W #®:  G: 0x|Lx> 4 > 4 2 >04 0x0": >04 : > 4 2 4 ^#~))))! o&: /o1Mè* +" |~* > ͓~##" R* +" |d* > ͓d##" tl l: ¿>!\4ڿÕ1 l l2 _ l*{ l* l* Ͱİ: 0-Ͱ:  *Mð l Ð EͰɯ2 : ~W #?\`J>2 * ^#V#" !ʇ2 :\E '6#™ EͰEͰ !i~<: ~ /* |8t* }+"  EͰ !i~ʆ:  =2*#"55!* 6 #C6#L!*~#ʄ.l[2~.x#~ʄ#x!^#V#N{z_yW"7!)͆!~*7!ڵրwzE$Ͱ*f+"f!!e4:<2o&i~ =2 EͰ ~#'* " !O" " R: ! 4: w! 6: ¨>!\4ڨ^!~YÕ* ^#V#" *#"B*#"> 4 :\ l>:4 > 4 J >.4 @ V#^: _zW/_zW{_>k4 >2 * |RJ >.4 @ ##^#V* " !{_j)))))>k4 ! J !FJ >.4 @ >2 =4 l!B!O" t#*#"B=*#"> 4 :\ l>:4 > 4 =!V O ~#fo: 2 O  ~#* |v2 B4: _ Ͱ: _ ͰiͰð2 )D * |g}o0}o" #" * {ozg" * " > q * * * * {ozg ʡ m * * #{z` * M  * }2 * !O s#r# +} * " +}0J M) ) Nq#Nq*#^#V.  >FNpq#= : : 0 -ͰV ~4 #@ ~4 #J ɷh Ah [h _: ڈ / y Gy4 x04  l!L 5   SuperFILE 3.1 (also searches lbr / arc) - ^X to abort SuperFILE v3.1 A FILE search program (also searches lbr / arc) - ^X to abort (Use FILE.COM to skip lbr/arc checks) Examples to search all drive and user areas: A>SFILE *.AQM A>SFILE IMP*.* Examples to search a single drive and all user areas: A>SFILE B:BYE5??.* A>SFILE D:KMD*.* p x x x x x x x x x x x x FLOPPY BASE ASSEM WSTAR COMM EMPTY BASIC SCALC DBASE2 RBBS MEXPLUS GAMES NEWSOFT ZCPR3 DEVELOP XFER +++ Drive Error in LBR Checking : User # Finished after area Lbr / Arc searched = Files that matched = # of files checked = +++ Needs CP/M 2.0 or Newer to RUNLL  > >  ͢| } @ >. *_}o| , 0 ë ^#V#!Y ))))o P q s#r#!V4 !V6# ,® >2Vñ m ͅ m ͅ m ͅ « Vʫ ! XN!~  vSFILE31.HISW   !#"$o%'&()*,+.-/021345678:9;<=?>@ABCDEFGHIJKLMNOPQRSTUV\ܫn:MLϜ'7w*sÛw.~_4b s>H\l:[_֣GkJY 7ؿ9~0Wl/}CE y˜+{xuzΏ"Y +u\?W+r˶H6{urn@L(5-Po'H\1e6VG+ŵ01=*$K7zYs*zvBu;O:Wl} XtUr|$#^\J7Ѫ7pEJMG4Tj9h=1݉i`Ս^oE抡ݵ>zbz\]W)ue:*C抡u~ɷo e'W+Gqf/Օ!7["J4\bS3onb3}eb+*CzMZ5u L("NVo`ס]oPݹFaXq'lP#2'\1/ ʭeV;DYW+Gqf/A!ίR.>2uN'&w9sN۟+_fz]ɹa7pEtPTݓzbz9!?yOk[:RNw"t7 zBіt|m_ pO.W _ |`:oT$i72xrgb_`RT}l+#qŸbsf/Cl(o=n.5(oL= >,{LLk|X֜L~BV\1tR;Sn-Q>153h_nwT5W _ iXu󼃼^[!?xʬNC7!=bNZ/g 5x +]1s}Zt:C7!4*$Vk7ۧ\1/K/껥+#qŸblf+\ө@x`DOuHE y˜+?g/h};?FpŸB= r"EB4W _c݀O[ vF -24MAY86 UNARC11 MQGPUNARC11 COM^UNARC11 DQC3p0UNARC11 FORUNARC11 UQDUNARC11 DQF$UNARC11RCOM UNARC11RIQFvLUNARC11.MSGR  !"#o$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQW#^,E~i7~: p 7*c^G(DzȗN#pp <Q~8+ʹ,r >:%X `*I0v>"'«*cQq '*lzNx9B (p)!rU]5Ae dG9a)ByB Qqƚu>:q#\:rvHh[R@5yŹC|iG|in#c1ghnnNン/F``|`O(r#-\1#4*HB {RDdGe,YR-`}X"'BeB0ggTH,!Mqƚ9E.2_WȻE:h3|$,ӯʹnp3퀛iL)2X/W]S/c=aڝ<`[Gjq3\ *tQd'zꚲ<00K|ؿ5N@Y~x<_E4C[Wl|<kSiWa|:y=}Y,SΒ *cۈZ7hUה%% ,ӓ;ypmWN"Uה%+L7LW(˫+Ŵv 3 *kjlq_dzꚲii\^OOW'{१]@[3[WcKV"8Uהe7>.00N^]y ]>2vƣ2]s{,R"'BŁg a !MMX\@D?(2>5Co Tr5e9Dh3h - $31[h"y-ؒ6^`*h"!THH挶d Qj EAo͖#Ȗ$J5u5"`W6Rh`\d?c\uMY|jYR=ȏJ=ޚ-GEol]]8"Z!++ՂW8q";Kr-F d!J5LO֩2P6"G QYSCR 'xc]2E-oZe!y\@+de,r˧wE.eKPMK)o),P7ik &}tJGh"z\uMW8Wp>b\uMq.׽5u*$HnKF!h"*cYU6g EK'BŁL"6KSDeM M"_lZ(="Z޴ƏR[8(򵋑|lkzr?>.p>jAzbh" jPr5~r?2ΒAr[l)BBŁd(r<ݾ|@X/W]S<pJ5^/~07) Νׁ\04LMVm H;$JMUX`i Ml<`\uMY!!E.#||+j E(,`<(Ղ3dZEm"W<8e">UהxԠ@8gr$`>zkfjDrlUNARC A:SAVE.ARC *.* ; List all files in archive SAVE on drive A A>UNARC SAVE ; Same as above A>UNARC SAVE *.DOC ; List just .DOC files A>UNARC SAVE READ.ME ; Typeout the file READ.ME A>UNARC SAVE A: ; Extract all files to drive A A>UNARC SAVE B:*.DOC ; Extract .DOC files to drive B A>UNARC SAVE C:READ.ME ; Extract file READ.ME to drive C Copyright (C) 1986 by Robert A. Freed. All Rights Reserved.><  s1ͳ! v i(Ts b C8 !$ *|  (8= ͝:1ɯ22   8:!2>/   > !l bk6? !e !!](M;A (! w=2!\: 8͵] (2 : ###~<2:! !x :!G1 G\>ͪ><< !$~5 #+w7*,"~ͺ\ x {jaj8!w<4zw\$*}8"}!!|4 !$!! (!8 >_ . x8> w~#?(# !(U(T=! _A2+ ѻe_!|}90yOq%w$, 8( !?((#2! >?:G: .o& ~!2wO#:w: :(80wW 6ͺͲ(a Ϳ(_ { YͲͲ2:0L| ( 8 ͧ ͎ 0͹ :*,R !. x# ͥ!6 ^`O(zW | ٯo? 87&0$$~$F /͎  !uT](M O!>U((8! !!  go"4g/!E> ! "z "5S26`C7 ů(< | 8^ #~x ~ `i^~8 rW+~s_##~+(#~x %( $~rW+~s_# *7d#"7^+s#r#w}- |%7( ( 64T])!45#~#F!?(F<825|=!66 +w+~(6GG!,c!"7!X 7lgxG ob ,L}Z8 90)))))lo& T])))))))))))|g^~D) ^#Vz eˤ^~(#r+s_!68+~g25gjjjj*1.ckCdddDG >yͧ (Oo|&$fo:3*1oR(DM*.B".0*0+"0 :(3bk 6#} (   !ͺͲ=ʻ<!=8  x (8 0 Ϳ!4(:  !X-O Z*|#"y $! .! !X  e + ] ͆ :(   = X'!X[Y e [V  ͆ 6 > > _      (w#>. (*.:0?lg:=_/_T*"Y 6k# !Q:8 ( ( 8 a e `i)jJ)j)j)jJ)j)j x( >e=RB0_ 6%#:(_ 6 #*()))| 8O!* 6 #?P0h**|a( 8p > )))_ 6:#? w# [,H SroO z'`w#   ^#V#~#f_W_ 7͢ 0w#0| ٱ(w#z(ͪ |8e.)8,^#V#N#Fw# q#a{Z80 CPU required UNARC aborted!$CP/M version 2 or higher requiredNot enough memoryAmbiguous archive file nameCannot find archive fileInvalid archive file formatUnexpected end of archive fileNo matching file(s) in archiveInvalid archive file driveInvalid output driveArchive File = FILENAME.ARCOutput Drive = A:Cannot extract file (need newer version of UNARC?)Overwrite existing output file (y/n)? Disk fullDirectory fullCannot close output fileIncompatible crunched file formatTypeout line limit exceededWarning: Extracted file has incorrect CRClength???JanFebMarAprMayJunJulAugSepOctNovDecUnpacked Packed SqueezedCrunchedUnknown!Name Length Disk Stowage Ver Stored Saved Date Time CRC ============ ======= ==== ======== === ======= ===== ========= ====== ==== ==== ======= ==== ======= === Total vIUNARC11.DOCi  !"#$%&'()*+,o-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh$sϏs<:o8.9zWs:r)'s %ʊA),qr^4㫷?{w 79.s)'\,2.8~~ {]e`jNu,Þ՜r)(MaJ#{hEUɳaQ+t$kX ۡwhjacE։z-6QJ8X dUܙ 8~~~쩑+8ađ@B8C@43,6 `|EVzhGqά鋜rZ*,MS^ vâ ɒcb:wW2P:$ՕTXNH0iT$a_]->N-jqvEB@ϯwx &4 PűTH(ׇ~,2Y$4 M'5 HEGhufMNJ[b rjj"D=[,0A0SEᆥ7yF@Ȓ/ !eyqSN9xz_r:%`0 ՙ5M-M;ln88?9[SXCܰlȡg#*ݳ)N-QVNp׋~&imK9K(ڻ0apTԢh-9GMZ3#L0si9@,K5M;lb,X9.(Gò t},G-5Ձ#aG f)Ax+FJD@1YTsT3ptѬvp$Gԕ nrL-r)wdw8;|9t}XfKg"D=oQf,0㫷rN-.Ԣh 2r7L rEhufM8l0x[/Ä`l03+*F3k:-,Ē߱{cfF Q]Qxt҇N]+;yb90.CVS0,Ēa2aӧOcpcpԢ !`pm0! w ,a/> J*9ZE N*`|E%W,! ՙ5LXr*KM-GPMd&2r)r)r)>Haۛ9vgfFx6||w)oϰӜwSNg$&J>sV 9G8Fu( m0X̚z?"MAWT&8?_ h&`pwz~{s x6?9d !'79΢8VgtD`JZQF*ђuB84xZBqgl8~~eL#9orY$ܝޜbc:C N%K'֡E,2U,'݋1uh|NvN&m]uQĽQ=\D:_ c91AT`2V2r~KІa+/v[l#8gqatK_u&ݟGZ& қ| Z`6p$ܨa91-r%@>ZrNHr|5V2y ?VAÅxݟ9ia+<&~-x30`i3U,'8@ ?ϗ(ZiSNeGp A=A88juҰ"(GKΉz a ,!-QVl'l$xZŒGVfM@@rV!H#N[p$sVgtD0JvNVK+q!M͊@} :QEȒgâA=v6p$8ju[4R`l@>ZrN/H1|gQj Ul#rZu_o  ՙ5} qpHVԂdlQb4 0!+\TP A M_`|0L&l0#O09p$,1r*GKΉzh MN:40~O#AZ\O cK9Kb9 Bՙ5VDbñZr0dE։R F8Lha<-QV>GQW)nGB0La)qmHXά(Ä芭)&%TJG&pa!a 09F5lPXu!M$SLv8 ?O8~~zSN9SN9SN9SN9SN9}@ρz??7š9!r>}r[\yN绿)H>sVgtVWR`iԟHaD'̌D) ~T?GhufMF8xPyBލyN9abz?)'^\9p\׸3^ k[$ؚj⏯bN']N 9p}X04 Zjo9%^_>rsJؽz?b &4 Ɩ(+=ԣZY9abz?=v NM'݋8_ I v/>sc]cM#Hh>'^t}X8]9v ؚ0!I VT++:'^t}X8]c_5I VT++ǜ{atWlMa4 vqwVT++Haۛ9vgfFmSN9|rzX}O?t9qBf[\9Fu(`P(Bg}TO$CNa<-QV.x4Sx d 3nGK΁8q,~ !9ȓ5Lught0t`Hְw0 aq EB9 0k:1Y1HEo:A%ʊ$XZYrh`,AG&&xi i.T؁'dq 8G0hWXӉnq}XH'k`PSKNQ=yF@F*҄*-QV& GqEN _FcM'&n&, V8 T,eƢI "%!cPa64 䶐al;p$٠C@p#iR zT0Y>ZxUNJ*U4HpTW4k:1-(Hr0YFhC@n * Sga<yb9#a:/ri gU,V;!c308"9ac~s{SNk[$b~s{X9t0g[q)J8eTqjVT&^I'<~Ow߁ӧx?_/noǷ_?s;~<-֣ū/o q6כ/?77k_8 #̄W~~<ۜ濮// ^c)T|Wxĝ=ϏxGN;txݿ>>}ә ؽoxz|=o9Y f H8Y]q,~mH;=9z?hufMGNS6p$܊{8'_ɞ D)/o+r"!c3Xz3%y0t&śT#Y8Z&xEN'.q,~^gjlٻ;0.l5DcMan)r`hGHX :8%_q THά[t3aIU䴉 AA$~y.gV<< Vp$̟CǨBȩ K.وF3/ϟ0g(ڻV@WT?a/r`:@87R"6yB88[S*r>sٻ;1pqA2<rX 8M'dT! Ɩ(+B@ `80?{w+NooN$gȩ_gQ`,A*ybQ+N;KX15$鄜V&H0Jg/uCGLXBQ"Taɞh +rG+P0Yc E,S+_8'KLhƖ(+BN 9K0ac&nijOWD1K c4Kb)Vr:yI~0}U4 @~q Y ~KІ$rHRq4[S*XQ=lAW% NVm0~UXԛ@~GuTrGٻ;4 79qwz~{slvhA] [c'39] >a6QJ%V ;$+ X@І+,'&w)r)r)r ׇ~~<.no=sNCN9tr+` &trbr Lh}I9C|%P*հ AaQe'h\̟H ;rZ-pՎ`XNLnM9K8N,9rt'TqnԢ t^; -8 -x;ZDc+EN&paae@ 79~^i$_x`|!hȉ E:80N[\9G ˠN#R3C`tQkspt6zr*ʊp! Z#ZY6QJG2A<8giG\)PQ+Gu 7R&TaNhՓ-N@dNN Dߨlq2/jqrn9YO8sqT+N;_=GSI bt;SNr_Ϟ?Ň_||rzਨ(ڻA>}ә ؽox{r)H0K]8? N!! arp"k6z3traDt3AK,rD+rhV;%ʊ9t 33͊ JAF@˿9G2A 6p$L'x &X2u]cHЁǁQhEȢaې?B-r:N. n@WlMaQVV QŅxlbm@WX MAr|!K]„JX ʑ,,Q#l$38a%GvEHȉıb99p$[SXCGE=Zp$Z&0" *42Z/F.d+8<]1+bk SŅ4?].r,#YF1֋sfF Xhu%*AT9q$L*sl$#7 mHȉؚT$6pr\b}:?^b91paJ Eȉ|=v$loXԣI )Em?+ݡ_gQ9NHFS.C<8-QV* ı6RaԂ#T UTqVV.xp$temQ;aLZ z,8FD jeE8sBlàj'q,~aZgQ I%kXC}nrLa#*T++O#eN9$芭),#YâLXR-Sa?3Y3/hV;rH(ZO<8C10~h, Ёǁ$6,u#Q=\!T, 1Ut„!F  ՙ5fO+q,~& 9q$8 tFB@4+ L$nuC+˜r)x𷸹>Ǔ_||rii 4 mH(<;h? }TO$x[LiIf TF*&3x/e6$ +{@"x9GhWXӉ.jAWOׇ~)_/no9崶%ʊA)7~SN I~ňdSVKfEařt0szG'tx >}x3 x{<}if__z| 0/* ?/b=Zz>os:Eq&~q{3ߢg#*6Q<8-QVb/i$ڐQB7 *x0?ۿ33ghwriO7w8_o9sN9=+YV} #1ZY gX\': fi㍱*(ɳxp$ܝޜ{6?9Fm ,9N%K'άaI䑓xЕ8&_M-tE -F4DUl-Q!+EN9Txe+gw8ӛg"ktdQoF%C7n*ׇ~XaB iRW&R91uȂ MOSS 7R&Hpr ;ܜ=v/"1ZYa|qNeٰ8p$s +T1Zmv0G8?0psHe݈_ '^zb|DmQű~ +ViR zhGq ՙ50LW/:X3zE !F 9a¢=)'^\/ӡD U[Y,XZx&q:rPENؽx" Cq2 ,%&Kja"'^\|JbX;8VgtC2tlXԣI n&{e, U[YL+KbXC0huer9Q"{qP4"79 SES r`Qm a: ˿`GYPWaQY$ZXrdWv/8"] *,Z? }z<ӧr)r)UNARC is CP/M 2.x+ utility which lists, types and extracts files in MS-DOS/PC-DOS archives (*.ARC files). For Z80's only. UNARC11 has new command syntax for typeout (suggested by Irv Hoff's ADIR change to UNARC10), to solve problem when used with a CCP replacement like ZCPR. Also, help display is simpler, COM file is smaller (4k), and configured version for RCPM's is supplied. (Retain UNARC10.INF and UNARC10.Z80 from old UNARC10.LBR.) UNARC11.LBR is 34k, 267 records. vMUNARC11.UPDP  !"#$%&'()*+o,-./0123456789:;<=>?@ABCDEFGHIJKLMNOw=pv/Wm. us|09a8BӀnWAM'`q˭zܻo>zm.Wc.`K(8ݗX뚂`7.\.%yŰ'K.l"'Bt˕ C_PP=w.}09aBL >"i` WwT1C8;R0Vո:88CDΨx\VᄐMd. ӌ󉽆 tv*,(3{ \:DB%o&'lnRzDBD8;xw!rqp\*^B `c5> P"gm8;'T'Tqfջ/o\re=﯏\?se Ɵ pv/˗{4N k"@uBz2hCeL4=rR0VոG=Ж W;"h%^DI3& XB6xJEC"rN4Hl~mp.tƉF` 8PƟ4 Ɖ@_%NX=M=ETтNR0V0K./6O/x\>^?rk.l"iJz`@>  7hD5V+$Ξw߮DfnAh`q5绔)@{a.wET.p/a]t~Ac5>䲫5ܐ-YVgW_p燻G,ot8o {ARՋ\#Ϟw߮@"{` `@lh-ppwxn sO:/!,o5/ ^Qo M6XO7s+$''!,o kJ Ǘ͇WNt1$~l' Rrq"ܓ)8a6{`W=!R1[6T>*<Ύ%\9D8z49_]t~A:5ar l*# 7O ݐ\8A" 5 П$:AdCx^;š 7} Jֳ$qE`r3քIB !,o$:DBԃ}09a_@Jpz8_{A 7lp;Ҍ@n$: W_/='!,o*KITq#XDAui 6<_l>__nwO\erK.Hh/%1$*YVmHh]BcJ!ByK%p o^ywq!ra=uܘ  tQEDHȆ\S`WA l) %0׳7.FiȆ!HRԧo,dH#po`-cXq" w:̨D֥5L.M_ИRf Ǟ*Z YȰz{z7^K.K.}aD㰤P V86[ԢI Xv+UNARC11.DIF]  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFoGHIJKLMNOPQRSTUVWXYZ[\ۗy˿X<}8kT?i5K:-OQw3p~ĽY5V!Xұly'ܛ5^3><'BM fWGV! q/bM<#p ܣ^^V'cnqUBqƱ'aXZt4] 35)t L#s" Z|E,Q E ،;BXXpyh7Q2oyz@=7Q2o2H:Vs$ʉ/'Z͡gB,7ѷf$ibY`R`! hEm1ZXUBciˉV!Xұ, ^l 3LeVxpFzŗ/'h%˖hˑϖ(OaiBMsbIDz_wU妹+Y%vi"[BT@N YZ`IDz_g>}9D,X<]e>}9D,XօSV袙fZ*DŊ%ˢ<"Tz@heԽZj%e%#Bc9‘a[&h ç/'Z`IDz(\<&h29#Bc3& s%4D,XSD L4#Bc,4N G6iˉV! 4K:E)6E}ˑV!Xұlz@=7Q2o2澜hbiv%kd.7͎!+%ԎL@DM_Z*r}9*K:E)6Ene\i%ˆhy`jir,D-|rUt,)Sl*odzdrUt,y恩9Zy%\Ėf>}9*r<ǒ}4 ]-vd* Z\^'UBcD~zLX&ְ!N_"樬dVs9{?ߌ&.@ςkuYg˦\06Iz$l/1'7ÇU9"hzg>> ѷFC\( ^l pU>̇{UC$YcY`ƨzrZ3#Bh)+V&,$8!&B0=? si ,ri Reiy8_jQY~,$=jG&8*kfz6#UV&MUV&MXjQY~,0K  UV&,M_|= Yq䞊Z`9 ʄ]~ivZ`e:4R,ʒ7e'Q;2dQY3#гiBLX&ְ!~VcfFfFZ`?l͈!`,V!z߿~ݓVs\/Gfbe"ݑ kȊ*"[:gVs q*C9Xҏn Bp0TE VZ;\GƆ_D>Y06Iz$,DV8͘0`,_HV\Z`.#cCt' ,U_HVE CgfqfCܐ\V8AP0Sq}OZ͑~,V,ʒ7ƆWbVBV|Pqb3Zݾ|*D}tX2y"z@0=8n!'iw*V!yҨ,(|clh|%f,dG+!6cxX}ﴚ#>Y|X2aI(,s^T U͘^9[Du>blJEE"' fLheV/ ~,>?s16DƆ=8f|%f,b3*+vGlš+GɊCh#B1ƆȉWA^8U GG^뻻'=u/LA `"8=!#ECą ' n_>kԽz2GDp".{B %G, aߋ QNZ>~wﵚQYEzZݾ|*Kd H/!]!f uo=7,Vb]n+t,{oZZ$+V=RG?& ǎ +a}䜨G'ZcF [d+8e)p@hj3Mm7XCOMCMDEXEOBJOV?REL?RLINTSYSBADLBRARC?Q?UNARC 1.1 24 May 86 Archive File Extractor for Z80 CP/M Systems Usage: UNARC arcfile [d:][afn] Examples: B>UNARC A:SAVE.ARC *.* ; List all files in archive SAVE on drive A A>UNARC SAVE ; Same as above A>UNARC SAVE *.DOC ; List just .DOC files A>UNARC SAVE READ.ME ; Typeout the file READ.ME A>UNARC SAVE A: ; Extract all files to drive A A>UNARC SAVE B:*.DOC ; Extract .DOC files to drive B A>UNARC SAVE C:READ.ME ; Extract file READ.ME to drive C Copyright (C) 1986 by Robert A. Freed. All Rights Reserved.><  s1ͳ! v i(Ts b C8 !$ *|  (8= ͝:1ɯ22   8:!2>/   > !l bk6? !e !!](M;A (! w=2!\: 8͵] (2 : ###~<2:! !x :!G1 G\>ͪ><< !$~5 #+w7*,"~ͺ\ x {jaj8!w<4zw\$*}8"}!!|4 !$!! (!8 >_ . x8> w~#?(# !(U(T=! _A2+ ѻe_!|}90yOq%w$, 8( !?((#2! >?:G: .o& ~!2wO#:w: :(80wW 6ͺͲ(a Ϳ(_ { YͲͲ2:0L| ( 8 ͧ ͎ 0͹ :*,R !. x# ͥ!6 ^`O(zW | ٯo? 87&0$$~$F /͎  !uT](M O!>U((8! !!  go"4g/!E> ! "z "5S26`C7 ů(< | 8^ #~x ~ `i^~8 rW+~s_##~+(#~x %( $~rW+~s_# *7d#"7^+s#r#w}- |%7( ( 64T])!45#~#F!?(F<825|=!66 +w+~(6GG!,c!"7!X 7lgxG ob ,L}Z8 90)))))lo& T])))))))))))|g^~D) ^#Vz eˤ^~(#r+s_!68+~g25gjjjj*1.ckCdddDG >yͧ (Oo|&$fo:3*1oR(DM*.B".0*0+"0 :(3bk 6#} (   !ͺͲ=ʻ<!=8  x (8 0 Ϳ!4(:  !X-O Z*|#"y $! .! !X  e + ] ͆ :(   = X'!X[Y e [V  ͆ 6 > > _      (w#>. (*.:0?lg:=_/_T*"Y 6k# !Q:8 ( ( 8 a e `i)jJ)j)j)jJ)j)j x( >e=RB0_ 6%#:(_ 6 #*()))| 8O!* 6 #?P0h**|a( 8p > )))_ 6:#? w# [,H SroO z'`w#   ^#V#~#f_W_ 7͢ 0w#0| ٱ(w#z(ͪ |8e.)8,^#V#N#Fw# q#a{Z80 CPU required UNARC aborted!$CP/M version 2 or higher requiredNot enough memoryAmbiguous archive file nameCannot find archive fileInvalid archive file formatUnexpected end of archive fileNo matching file(s) in archiveInvalid archive file driveInvalid output driveArchive File = FILENAME.ARCOutput Drive = A:Cannot extract file (need newer version of UNARC?)Overwrite existing output file (y/n)? Disk fullDirectory fullCannot close output fileIncompatible crunched file formatTypeout line limit exceededWarning: Extracted file has incorrect CRClength???JanFebMarAprMayJunJulAugSepOctNovDecUnpacked Packed SqueezedCrunchedUnknown!Name Length Disk Stowage Ver Stored Saved Date Time CRC ============ ======= ==== ======== === ======= ===== ========= ====== ==== ==== ======= ==== ======= === Total vUNARC11R.INFR  !"o#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ83pX4|*vg)րZ=˺Ʊîoq$XaYw8|cB x0/e.cbƄ5zG.@tF0z{PɛwxZ>x.s˺Ʊ;k8,nGW D7k,zSBhAnpB'5yIg ޶Y,i,evC{ sD8,nB+Y{>ZG#jD-GH(ag  zxjT#{1˺ƱOO9v`2H xb(|npB V, AQ^yT†zo ZE'| IM4m+a<ը.PA['Ԟ,FH"^7X$q`VpB/=U4 WwX$\u7]r= Aq<Qͩ]֑Cnk8m*PX22_:mH!QslzXL׍n9u(DJRvOPY! 4D9*Xߜ R;`eA%qؠQOdTyzo (B ˺1XqAN`UEX\PYT̗Bt4|4! 5n!\/%q+d Q\{xk^9k,@+B`GˌM3a;-yzO(3濯cDǛ$9G*-BAMDUA.045 Thi librar volum contain a assortmen o excellen CP/ utilities i man case complet wit sourc code mos o the writte quit recently However yo wil nee Librar Utilit progra t extrac th individua file fro th *.LB files I yo don' alread hav one NULU.CO version ca b foun o -BAMDUA.041 -BAMDUA.035 an -BAMDUA.027 LU3.CO ca b foun o -BAMDUA.03 an LSWEEP.CO i o -BAMDUA.022. SETDRU .LBR 26K Thi ca b lif-save fo har dis users Fo program lik Wordsta an spellin checker tha don' understan use area bu nee overlay an auxiliar file tha ma no alway b i you curren area Interrupt program' interna call tha searc fo th overlay the redirect the t th use are yo specify Runnin Correc-I decentl o har dis withou thi i practicall impossible Goo als fo SuperCal. BOXINBOX.ARC 12K Pu you compute detectiv ha o an tes you knowledg o CP/ utilitie t se i yo ca fin you wa ou o thi maz o CP/ boxes Hint you'l firs nee anothe utilit o thi disk an probabl som others Bes fo Christmas bu goo anytime... LSQ .LBR 36K A approac t solvin th famou "leas square problem" fo fittin polynomial t data i muc mor precis manne tha previousl existin programs Writte Sept 1986. SFILE31 .LBR 42K Th lates versio o thi excellen series Searche throug al th file o you disk includin librarie (*.LBR) t fin th file(s yo specify prot-catalogin program. ECHO .LBR 4K Create b Ro Lipscom o Chicag FO i Octobe 1986 Whe yo ru SUBMI files thi wil tur of an o outpu sen t th screen Keep you consol outpu clea an nea i yo prefe i tha way. N20 .LBR 16K Doe excellen an importan job convert decimal hex ascii an binar number t eac form rea lifesave i yo don' hav char i fron o you. UNARC11 .LBR 34K I CP/ w hav *.LB files i M-DO the us *.ARC's Eac put group o relate file int on singl fil fo convenienc an spac- saving Thi progra allow CP/ user t "brea apart M-DO *.AR program t tak loo a what' inside. GRID .LBR 10K Nic BASI program draw ver beautifu gri patter o you scree o printer siz an shap accordin t yo specificatio o th comman line Nic t watch Add nic "artsy displa t sometime dra CP/ repertoire DATA.LBRԳ v a `BOXINBOXCOD   rbvv; ufeLXIN"EUڳ%igxB̗4xQD#1eRxF!K_?2 yUqK;ix->C^6?AFJ0N6c;0>TtW'(e5TX &XwP'Sb.8B>|@텕g,+󝥊~mnU 7te)>pP$xs1 9~U뷙D=2kARVKj:h1<qԓh#~K9grJ;PzQn Һvݛ$hlhVpZdbNDE#G#ǖLI[[_mnʦ`+:!\̴X)[5)VۄaQ"sB*vV,]1] p7 @">rU N('J 64({zEc6>3- Fd% PBxDl㣼9hՂvjjׂ4~i<W#'m ǸD靅Apa-^ݣ9 Ըmdp?f錓vNag5`}O(X/Ļ&wbbayDoƭ_VlD" &ɽ˖U6ܭzn>֭{ěҔގ#p@h#ya֓K=y YkRP3p*7~&ac%Pba5!A0vN Hx3_Wr+2q3NViv ۸d_O7u ^0h;э6 H>""'BLiEbKEYS.LQR v vrlKEYS.LBRa o !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ_WGKLMNOPQRSTUVWXYZ[\]^_}|wugfb[OM=74- `dzH 1nރfh.dZdV[dRa5Rm5p{{j$S#j$Sd ed|@Tޕ#3+(w|KE+%G o+(w|GE+%G (zQp2(ޅlV=X+>g]u8#>xk~8Z]aKZn=ټ>3#Q1P~!y:>67!+y>r%ͩdQ%>&208d!ʟ<ʁ{P~!8y:>6k!Uy>r%ͩdʁ{ͮdʗb~!ƨ6ʒ!yREAD.MEԽ xv  Y&r ԙCD7t)CD8l9P̛0tXb4nP&| 3s )p%9@L7A͛v 蠙0FsЩS9sDAf ;1*/;b>#25eFL]9iuiN La)xN3e%#NR8rTOOLS.LZRԀ" v"vTOOLS.LBR# @ y Y(A@2y6bpJ(JdxqidR$ʤ#,$.C1pd#f`r^2i\-D Q{BVV YvB D)p1\Cdr٭{`4W 5YE"f EYJ{RPwCT//( ήx-"5_)IT@S@@XD.0,a_Yti 'TW3CPq|0#12 *^GWjQ4/Kn݊ӓ4 AX\` ΃, oWtpnE:fV:x"!0^ @ sp2 hዧ"2 ^Ea O` 'FPb$%L+}j_P%߀HWڂjt/ӯKP{R=1 ރ x_VtaQA !YV 0 n`X)hh IL&yR!9Acf9FJ! 0ŘidIix]P*u"wz ) y n@yIڛnǖY8 0؜d$ oakcPÞ !`P*YHTrpyЙPIT|,) 0IMYS09%Y1I)18^30 Pp Ƒ09y T!Q Y!y*V@ß*"&)sUQ L@*ĕ Яꎃ"9%@#2j&*8 x&[|Z!kFjgozp 0_"RvPZY*[`+3L;3iѦ:%@Pjh2 P! 0(X K2 0/ M~ GV+< ِ!p0 6Py p`<*f p gP:`G`/ w ;P! `/5>@`| p,ss /* wP@ °  P+`- 1 3@5`79b0dPf)L8bk"`A|pJȍF `% EF =f4xqxD^Z>d0 bp`Y|k_2-c3ַop k帛+8{ldk=Ox=|)Nѽ+0*;۱  ߼!1WP pݚ 5{ڷE"ȷ1Y@KB+oCXdec|  @qs I\0Qdc\@-hqx ,r*IzA $ s,01r V 5|'o\d+rڸgs;k:/Ф5 AN xQc[;qھ@9 ` V<3/BLX" *a0ǀ\L*b ! B P5X" p5 c0 +<!A8cY2?P]0:;o0cA'1!p ,/YϰS}e- 5Ԝ2 З 08 zvțP`<6SfT $i=  '"|v8M-ҝ-<>0 aR||e.38ܞ Pq|E- 0SՕ]}R %+CY_1|nPr??Q+k%N`. i"leE68؍Sa͉n14Sԍb3 -m0+ l`QuYal(u`e@i'0c@in(E͸ܾLp7ЗؒO=@ݞL4t ͂xP! n C*:A5-"$d=RL0Tp'~R ]P^' d. D.|`081aAq`zp2(...1"n1㸪s}4ch6`* 0J!4q0-`˵T. LzA"`~t74Z0{ 0-vHn,#1 .@"߻q^];~~|Q}m,;p|ΠimZR HE5?Sf MzL.ߞ;6B,@MQrɪ@57ǭY4r`"-'4R2 0 0G!Z/֐ *˔2 ˪O@4r"#Gx伡62u5:& :o+OC:#2/Y%?U15;- 5!i pCO64@u %/fN!F (d1_L~ܾm^ca!.a#, !H?00@*`159@*_2@I R c`B9c OVN6y2B/&0"ȱ 4ѣn1{O.3.c͹i/eO0Pi? -Oe|\ Rq=Ӽ0BQ@Bi#ӝx`w7@ *} 6B242!UY@"BR:Z6״$6oZF2״LU5uQNIx/'8.p8"5ȧ=e0.״Ly25 0 *ʂ&ʁZD x1$K5}Ҡ 9ʎ,_/_B;0?=8 <@<ȟ<c9{40#T=O1׷p.$Wi 0*|@ArO-q zscb=FƁ>4x@1OTP ӫ2h\\P堞dz fNp7K"e$ ^пC5 =|J p$X>fW BKZKZ2%kc W c))3ۖm^"L*%0i=G/ 0B4f$&+Km/#GP4n#/K02u F  FO _0 % O =ݫ?UR&

p@'u * P1g؎5y/2ƈ߿=FM2'>x. ^b!m`"@5۳$p'}*L]w:T%k ͎^K1t*"&5 Vp.!qP"q IJS(4lط^# Uk#"65a!1f,1Y9IM.bl̬u )L Ua%)ֆ0",P3g4| PW4 X=H+2h P̣")#)Uh <: 7[8;K!PZB \{ \`V)6ЂK뒚8 iu#p*) )a /f* 0 B#)ib`?~ e=o g  \*0*b# ` ;+|hIp S\^ * `0zq 0W{(@/ > h* 1: %@+[ @ 0(@aHY@+ ``p0# 0 * *  #Y| p`,Lr *0j %*a` al?m 0BqZݒ7d@@xFV4V-Fԙ5,|ZxA"RQLVN#R9$y?NU1MPEjiL -A :L eyӬ>T-@ sM B} zjW|1Dh3FPǐO붍!- -=GDo L!-2A˲~&wضt-nVΩα( G50 p< q3-0, |<}q<1 * 𲮋<|*:-L.0j0QB頯2S3 BҌ!@ ;>5W$z`] >xv=563+LridKA$ys41 ^g:_TseS]d RE-dGA FrGisG1eBrGO+|Q QsP. C B9 À `0u