IMD 1.16: 7/06/2007 20:29:24 BYE5-INSLST'GRAPHICSLBR GRAPHICSLBR%GRAPHPQCBQSGREP LBR_ !"#$%&GREP1 LBR'()*+,-./0123456GREP1 LBR>789:GREP80-1LBR2;<=>?@ABCDEFGREP86 LBRGHIJKLMNOPQRSTUVGREP86 LBRWGRID2CONLBRXYZ[\]^_`abcdefgGRID2CONLBRFhijklGRTCIR-CLBRmnopqrstuvwxyz{|GRTCIR-CLBR]}~GUARD BQSHALFEED LBRHALLEY LBR0HAMLOG LBRFHANDY200LBRHANDY200LBRHANDY200LBRpHANOI PQSIMP-OVL LSTIMP244 BEL-PUBDOM 020TOPIC: BYE5 inserts currently available for CP/M-80 systems DATE : 04/20/86 FROM : Irv Hoff BYE5.ASM takes full advantage of the result codes returned by modems using 'AT' protocol. It uses the terse mode to recognize the speed of the incoming signal and automatically adjusts the computer I/O to that speed, without the user needing to type any CR's. This is of particular benefit for RCPM systems using the new 300/1200/2400 modems. (For those modems not supporting the 'AT' protocol, the caller will still need to type enough CR characters to establish his speed.) No external smartmodem inserts are needed, except for systems such as the Cermetek or Pen-tel which use their own protocol. The included smartmodem routines also allow answering on first ring, with optional echo-checking required by some modems for insured accuracy of command accectance. Occasionally some major feature is added to BYE which causes the name to be changed. BYE3 added automatic relocation of the program as an "RSX" under CCP. BYE5 permits using its hardware I/O and time clock functions by KMD which then needs no additonal overlays for I/O or time functions. (The name BYE4 had already been used.) KMD not only does not need any inserts but also uses 1k protocol for faster file transfers, especially for those having 2400 bps modems. It replaces XMODEM. Both IMP and MEX114 support the 1k protocol while re- taining the older XMODEM and Christensen protocols. (KMD also has batch mode available for all users.) BYE5 and KMD are so easy to bring up, it will pleasantly surprise the user. Put the appropriate insert below into BYE5, set the equates to suit (only 4-5 need be changed, if any, from the distribution version), set the equates on KMD to suit (you may not need to change any) and you should be up and running - often in less than a half-hour for installing both programs. Things have been tremendously simplified over earlier versions of BYE, BYEII, BYE2 and BYE3, although the programs havedrate generator) B5NS North Star Horizon w/HSIO4 and Advantage (8251) B5OS Osborne OS-1 (6850 ACIA) B5OV Osborne Vixen (8251) B5PH Philips "Happy Man" P2000C (SIO and CTC) B5R1 Radio Shack TRS-80 Model I (1602) B5R2 Radio Shack II,12,16 & 16B. (8251 and CTC) B5R3 Radio Shack TRS-80 Model III (1602) B5R4 Radio Shack TRS-80 Model IV (1685 and 19411) B5SY Sanyo 1000/1100/1200/1250 (8251, no baudrate generator) B5SB Intertec Superbrain (8251 and 19411 timer) B5TV TeleVideo 802/803/804 (SIO or 3801 and CTC) B5US US Robotics S-100 plug in modem board (8251) B5XE Xerox 820 (SIO and 8116) B5ZB Zorba (8251 and 8254-2) CPM 3 SYSTEMS B5EQ Insight EQ-4 (Z80 Dart and 8116 baudrate generator) B5LO Lobo Max-80 (Z80 SIO and 8116 baudrate generator) B5MH Morrow Hard Disk models B5OX Osborne Executive (Others will be added as they become available.) . (Z80 SIO) B5MM MicroMint SB180 (Hitachi HD64180) B5MT Memotech SDX-512 (Dart and CTC) B5NH North Star Horizon (8251, no bau gained in versatility for unusual applications and for keeping the SYSOP in- formed as to what is happening on his system. - Notes by Irv Hoff W6FFC REMEMBER: These are inserts, not overlays. They go into BYE5 at the area specifified by the ++++ char- acters, near the start of the program. These have all been renumbered and and renamed to six characters length to eliminate confusion with mainframe systems limited to six characters per filename. There is always a possibility of conflict with names selected for labels - if your assembler shows duplicate labels, it should be simple to select a different name in that event. Hardware specific inserts ------------------------- CP/M 2 SYSTEMS B5AA Apple II with PCPI and Super Serial Card (6551, generator) B5AB Apple II with ALS CP/M+ and Super Serial Card 6551, generator) B5AC Apple II with Novation Apple-Cat modem card B5AD Advanced Digital Super Quad & Super Six (Dart and 8116) B5AL Altos 5000/8000 (Z80 SIO and 8430 CTC timer) B5AM Ampro "Little Board" (Dart and CTC) B5AN Apple II with PCPI and Mtn CPS Serial Card (2651, generator) B5AP Apple II with Mountain CPS serial card (2651, generator) B5AS Apple II with Microsoft CP/M and Super Serial Card (6551, gen.) B5B2 Big Board II (SIO and CTC) B5CC CCS-2719 & Sierra Data Science (SIO and CTC) B5CM Cermetek Infomate 212a B5CP CompuPro Interfacer 3 or 4, System Support 1 systems (2651) B5DP Datapoint insert (8251A and CTC) B5EA Eagle II and Eagle III (SIO and CTC) B5EP Epson QX-10 (201 MPSC and 4618 RTC) B5EQ Insight Enterprises EQ-4 (Dart and 8116 baudrate generator) B5H8 Heath/Zenith H89 (8250 I/O at 2 MHz.) B5HZ Heath/Zenith -100 series (2661B at 4.9152 MHz.) B5KP KayPro (SIO and 8116 baudrate generator) B5MD Morrow MicroDecision computer (8251 and Intel 8253) B5MH Morrow Hard Disk, MD5, MD11, etc. (Z80 SIO) B5MM MicroMint SB180 (Hitachi HD64180) B5MT Memotech SDX-512 (Dart and CTC) B5NH North Star Horizon (8251, no bau A OQPALPHABETBAS ALPHABETCQMcAUTOST CQMv B OQPC OQPD OQPE OQPF OQPG OQPGRAPHICSDQCXH OQPI OQPJ OQPK OQPL OQPM OQPN OQPO OQPP OQPQ OQPR OQP S OQPT OQPU OQPV OQPW OQPX OQPY OQPZ OQP"  xd}\9ge&~lKAnV;3Qu BaG/'#jfSR"!vsmbUNF|cW(wiTI {yt_M hYLCp,zr[O+$EDq@81k04-߸ښi6ؑQoR%<1DÎ,|vd.ð#K/vQjD&ZTDW-pj6kDst vFUSCU vd",0f1 _ᚿ*pɐf :|Ϲ8]h|oBG 7!܄ЪM5oB]key;xـ[ꍆ|-.C |%|Ű&Cq% ΉT#ٸvA.OZP o {͟o3/F0ܪ` "ט`ESBP0*k93J(hǐ{ B2B2Ek. s`.-Zre@-Z-Zp%Yr$Vv[ , @K . )070WEy+0E˘*rLm˘)ZK170ssCusE2,4ntag a file. Removes "*" fr1000 REM: <--- MAIN CHARACTER LOOP 1010 CH$=INKEY$:IF LEN(CH$)<1 GOTO 1010 1020 CH=ASC(CH$) 1030 IF CH=27 GOTO 3000 1040 IF CH=3 GOTO 3000:REM: Goto ending routine 1050 IF CH<65 GOTO 1010 1060 IF CH>122 GOTO 1010 1070 IF CH<91 GOTO 2000 1080 IF CH>96 GOTO 1500 1090 GOTO 1000 1500 REM: Capitalize 1510 CH$=CHR$(CH-32) 2000 REM: <--- FILENAME/SCREEN 2010 FLNAME$=CH$+".OZP" 2020 PRINT CHR$(26); 2030 OPEN "R",#1,FLNAME$,1 2040 FIELD#1,1 AS X$ 2050 GET #1,1:SCWID%=ASC(X$):I=1 2060 FOR J=1440 TO 4384 STEP 128 2070 FOR K=0 TO SCWID%-1 2080 PRINT CHR$(12); 2090 I=I+1:GET #1,I:SC%=ASC(X$) 2100 IF EOF(1) GOTO 2140 211 +v!e^E "<Ȩx%^r^t0^6),M y2M;7+#>yy_3jTeWe_'/>G^SXTg](:sZ3<7'nlWKm8h#zp@ѨAHʡQ?a}FVצJ8)cLBU/7*xk}}F+Gu%fsK3lB9Ca:dxgɬaz3oR7R7g4*]#2Y2 FcTe26h=pX\W۸.mMF\ F/<P֐{oO:U7ܐF(FX+(ќis.Up)1y%-joUWa Tao)G~!3VZ+01x:;gNjExN/s/67,Yݰ9 =K mټLzVڲ]2RjCYþgzUd*ChaUu ,yhUOhXu'%[VB[ f C %[VB[ ,\2e7g'pc6?- r=KF /|+*׳d0=eBÆPzf?߳ym67eas.Zm]w0 POKE (J+K+60000!),SC% 2120 NEXT K:PRINT 2130 NEXT J 2140 CLOSE #1:PRINT CHR$(7);CHR$(27)+"S "; 2150 GOTO 1000 3000 REM: <--- ENDING 3010 PRINT CHR$(26):PRINT:PRINT:PRINT "Stop ? (Y or N)"; 3020 YN$=INKEY$:IF LEN(YN$)<1 GOTO 3020 3030 IF YN$<>"Y" AND YN$<>"y" THEN PRINT CHR$(26):GOTO 1000 3040 SYSTEM 3050 END  3020 YN$=INKEY$:IF LEN(YN$)<1 GOTO 3020 3030 IF YN$<>"Yv`ALPHABET.COM 2 !"#$%&'()*+,-./012345678<65=9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc.*>:H Pdefghijklmnopqrstuvwxyz{|}~-%o`7J^)?]XZBO\j6d:\.7z<zC -KnJ^^xagݬa_uyr oh0쟽ƞ +K sj@ϺYüuم746̬lxc톁-|p- ά2l^rӥ o03P(waz3oή =f ^ -\`Y7Yϗ,Yu͹\h5*ס9[9Ylѡ vo%]DCQo 9/GoQԹ1*h Un鐅ӫhPZSy9J6FU΍Q ΉvF@ 0u1 A/az.! Qb^,Pʲ!Le!-a, A/ԩ0PN!C:Sa4Lal#Ƶv636S' ֥v{^^$qa K7H4u&۳"0Hc0dVHcj4lvKu"VP Ao,<-aG! :pIH;v+a9F:VBc]?RF*zg#*GYM՞peNdaϚ Ԏ4;aGz pzbxe@v;{}VjϵgWa,4:zVXx*Mod=c{Ls6ꩬ+i#r~^Y%+IAQMYS`oO?v[-eDeFQg4<8||ub5̯.,_`NcT~PؗfRRzzȏYƿ4Kiz3_u/?[V<^Y&"M|@[C̚L~%^+\ YG+CtE"zT@u6sT5HO.C7+Ak2|1l**E>]jm6P,CY upPT^Ǿߡ~}C}}C.k;̈CQСjC}azW;)$RSG7Vn~c7!lܕW*G+``^yqTk88G7p v@Q9++qV`:=0sS_q0<0sS&n6A[۟vpx敯 MDpc$@8`+VK8`R RJC&H| l+Au' 8\+_㐌C(Nu'85nRSNxoyo[^,BO8z>I?&;p]B݄Nl6IP 7LP "7X)Up{jD_u$N'٣jgc,Rm, VXi%Q5&QWPbdY)կ 0YSAW@2k2zm)G@ @Tlc2Ւ2TKlZRfՒ2[T/x.. QOEUnd*+S v0֖2؏2k2z]5z=k2z 8i9 VI@~Z׳&w+)꣔{])M]On6j½,{>BSD]MPiO)՗}ZU9Xb"zT[ig2`I, hTR[G)2rw.&ߐ*-m_M-$ dr2Ĩj21kkMr]erQBtfFBԘ Κ}[$aRuJ,ΙS(ƮpOLGbj' A^mR)(ԛ]p6 .WĜ8# z7iR@hzc_9=ԔB:"B:G4ZhT `l*8P UCFA3/klYF#fhF#f 517P8'=};Ұ}; R)xk(vJZa -~.4u>6 HTZ=pD#xG=dx(ƴ8<}MO[^"#7GOF#hPYe,SEeEʶ!q:N^#" Ovl0<e W?Ue\(qñ<~8OZEQL"1CQHmc|]F \`VWRi8#"E" ^Me_.!=uWLCe:&[syXqq抩CeZ-m/j+5zL\|~P;u>?q5ZR) ޯ[>Qp4i4@QO).\.Mh'ʮEQI^XHBL2 [G⫷:0\p>^(Xs̵pMpG!tŸ)RK-?8<{1X=j_~4±7:Bl*l$1T.Bҋ1r7+f؟be| n9/%QS~-9q&2f9<˅XnW AmzT{ 6I.zWԾ+ 7l· YR3W~)>[@vz)s6PA!+BKH_yy;lZh;< mMxB[VC9#qjW%.^Yx9lԇ0قcc]ջ XJtˮ,a,UId,`,RuaIO0qlr1zW~[`ku;/P<UnÞB+e3Oǫ]?J؏maiy@Tr_< U X3D%Spz0Jy9ŸQ~j;X\*a?Yktfj߮ה-TxKU+cã_o/v6۬RvSeP|ws4tno}2OP!LTo\e@(BeK*B?H nnhFecA|t_z"TVF<ŠlQ:[. 3Rzmt} 3r3θZ(*%33"4*W*F}וSR[T4Bp\U{"+otz] }*!,W՞*o4V}M5 博#xՈj TR]w,O-Sfs5W@/%4W&RYhc`^9i"H\+a~._#Y}UWT?Eҭ6%T; *ҁi:('L: Z8g=?}:}kQqCҦ2T'h^1Ngiyg*zFxl[nf.PTqma-lÊ[*ks' VVaĈXM!9}MG#"}l"=jRI64tH[A]r Ao" r[!p6G5^,n϶qs.BQ}M "m* ¯סo&ؽEjݏ$Eqɨ@7c" E#lȊg]lȦwlbE]]mi#6uj?0칰üͪBqp'kҍ8g.7{@;QtpQ t E >k{8f u2 `L=XNj4:Dڪi[l_VOQTQ?LTsWz ۴JA/rkY; VYQ4*n6>**nʈh y-cȈDi<sD))v4Ak<1ϭezNb)$h HԱ[.M:82"E(D8n xڃW⭷ϩkWX)WvZ.n7]_ x?Y } م _dMYβUOw ͮhU : Ӛ S ,Hs ci|88XLOVп8%ҚXPdIV Z+w}f.x@&컎fu WdtvHww+z7t r[!szxlB_ cڴv}bZkux°i&8GdkNVl 4qTDZDZuduM: ,Mq)T';%e:שӃ8p]Tp(jُSN,ki1,DUz),m,kg~<,=Jo#9.8"DxW$ \}vq4k l1[ώ7uuHkǵ8UEQsǿ`S-g7JҽTmQ߶ۭgT=ʁV`shK ECC6AOS,Y([Sqz[w;T}kv|׎O퓉гc}2XckŚDŽJw>"nX]u8)V[=I ug%6c%ä^J4ۈ^JLuUR|Ľ]n,(c+&E{򸘬aD?:#))@K ҇qmV=)n0ܫ?jwg)U^vLi)p;>ǁVG/%(QqhI^J`WcBMmG^%xPH }n|m.ikb磞.\Z-O,Q#!ۍrFEG[៾FnAZ};DAJOS/a,%ƵJP-m>w(Nw6PV6B]Mzt'{Keuq/+{mTѻIQzOV%~ǐb5IV.q{gJZl7TRVz(N\s]elQW“v"n;{=V*+!uqC6j&w[sXq1V+~ю}đFR\v2HJli^tXbn}bq{;А(iR^; S1Xǔ ͙L`AV@sLTb`AzS,N[Mf&X2:}") W1Ճ!u9XLgtoi-pk&*L1 ,Hf\-%FDVDMYC ݠ;6@:%MayOj?j45'+LA uVFQ%bF_ j=4H |@N jT1asw-l"v:8f޾HUEwdT^4Yg_*sdE!}uLˬ6r`lmGuʧj;`IQyeRT4)*&yFFG5)r!!C*88d£CjOCݗ֣wz;ܪh6z4b!\\ (yP=n6xxq#% Cpݪexoi˻Ԇq^DJ92BJ ":o@=^jjӛ)Qʺ[XܘU%FejHT1pXVy\j L gҗvFԮN=E0q\ }d|2Ts`Gv!3r6a8.>S}vxmv>DT;{#!MDEF}JOlL)D=?@26ykABCDEFGHIJKLMNOPQRSTKhgsD(r$k"͈m[8{˿Hv{8\=%١n {[Pđ䫂6HZm F9" M`I|7_üϛoͯf;ony7ԏDyŴǼigHC(:ai_cNA m@S4i0:ŞI{"ֱyԩ+GWO Dױ/%}ڦduxkn^8 '[Il̑ݲ4p:^HC,0Vjg^< # /JF+aGZp2S#mS;9 9 2y#}uMf%^9 n"mpk6ƽ` ñ<p,OFU/{{u(`^jK,;&xA٥öa!;̯CwM0:ݱ<Hcew~ORNWy:85ߡv}4BfM-B.Z|-fa,1>1Jچ竬zj1_U^}C oRw~Aꀝ_uwR{2Ci=|9?mt-FOtŚ8_aqQs0J mjr]:l\HHh#VK ej@+ 0nw|Q@+ 䃓">6'5%uI X[y=r}^J+S#nmP-UyMǡ!=B]'&='#|g=}6.0Z?cmDy͍GEFKqt,!g"ell#*ꂏF}RB ҫ(SUVWXYZ[\]^}lj<{vr]H=.-_`abcdefghijklmnopqrstupYN>985)'vwxyz{|}~zxwtqniheX:710+* 8I=_6xx3/'xFg]o3#קGqU'Lod|5y{}*{tڋk5[Mv$SHV(nd~㳋ZGDqixY86z՗x]8?>Mcکli̾^s},]&.'O6fM]E1]8*IW*a[HB?$EBy'XX׎ k'ofax'" :H" y^MI65lm?1̥aNn$K)PrSkhl*y^&dSb\; ɦC^:%J%dS;YS9'$Lr:I{dYmc0y+P.nf'?|{vr]H=.-_`abcdefghijklmnov4GRAPHICS.DOC _ !"#$%&'() o*+,-./0123456789:;<=>?r Q @ABCDEFGHIJKLMNOPQRSTUVW S]XYZ[\]^_`abcdefghijklmnopqVrstuvwxyz{|}~N:^uFHB@LJ[A=93210,'&ip2(B[l_B;g/maOuŽ[l_B;gvB.OZPo Gv?O?S|viTPzvz]:64*(=`Cφ glYק =kZgl_|z6t>4*}6lШ`Cϖ 6lYh??t??t??h?`P`~ڿi?;t];`vءߴ|{vr]H=.-_`abcdefghijklmnovˏC.OZPo '6`D.7Q]YA=d^Sln-/\zd !*H . R`B \j.4s n&5!.S)䳕)n-ʠ! \ g\q> Ikw@BԵ ]C]]~lf!vhPJbJ -qOSv5TbtnwmE# ƷWtò*A(]ePH֐tK>":F:|f{0~pլA%(k,x.:pBSEepf h[lu,wt bic-Y:<(v B5${ }>[ iw t3˝1 [g[.lsc{Q2 _*c='"bqPc-Hv >D5 n"}TE橇JsxŮ> &f5EeP׾y)LN]eP׾y)LT;X.AG!# `>f9lT00`v-i ̯"gow~ءߴ|{vr]H=.-_`abcdefghijklmnov`E.OZPo .9K](]dB[N\l3V(sa  Qfa  BCA)0cmʜ`&6JsMf) 6qˡ`Am(0 PdLlr\9S`b۔؂9<SM6[ 7r7''')s,2mc0y+P.nf'?|{vr]H=.-_`abcdefghijklmnovF.OZPo ZNrkR\7 U愪Ԅk9D(ܠ*]:&!)AXEh8Gdž8072'T U揼cK3smꠙ'f'f^s5[лyY`0;fYmc0y+P.nf'?|{vr]H=.-_`abcdefghijklmnov G.OZPo "i\F|$u!4ںItJ`5Xll 'A2-:,5`Co$^:M-"wvp=.]EWtބP$SEe=x>`H)erzl!T``\܇.Ʒ|phU>D5P,k&"xL61ЮήYśxbW5\[qQL j`GfRthxP>|ŮȂ]t]MN1Юή!1^|RJ4PJMDA9:(CtI. .C07tmDK MDWlPA(J$rլ t˨&"x t7$ U$ 4>*acHq#A[e,P4Xz\&2hk ɲO-ZD%2W'kG]e).y$H&@(rgF)IEGpW粇Jhłk3rYb AW-8K,vU&hH^( *!R\HCxB("R\HLWlPA(x) A%T7(A[ʠʣ``{r?R2-P:6ʠ"%Ă9buAcx+v bП@1e@e uP6C%&ȣ:ŋZD:-\Px)<$}ʀ|coc3^x GdMT R^7hKvB=V!*AҀUw5]EހKHq#A2ΣJqK߁' j5TPb3^x WcZtA]7Qg&z2vI`Н"?[BhV`]#{mk!coc3^x"R\HL,ڒݰʠhZe\և]هP  7xQzkh=~z ǟlJஇ9'[C2$+=xŮql\x5H%VPƢyCthq&kZeP ZhVb/t  b6bjp fACtA%FL 4hM'Չ:8{hg&3:mvא=& )M5!Q&wd7 y e@h1epׄC(B qu\ԃ &`{r?Op ɳ8,"6οjZtNT)7 [P-B%QbEnBנx~B*ݰgS[<)uCEW ɳ8Ր>2أiVP1`ʠhZe\0|2DN1>iOhrgMv'Չ[baSv5C(Q UcqIlkw P?8_[]Q Njש*|AлO[< NA;eTBĜl"buZtN,t:s> Ikw Z}'أ>YeP L(aMeyj tJC2o"R\H :AվE!?[ ^S%` xBxN4Zs k<֓!P1sBMp= c%I_2 _*c7("% dY&v6“5g|E& Q Ly-"o,4`KͲ˝SsBM-9*A(E ". I".hc*!ΠMTO08zl]\ 4ߴX E7xa0Z::MEE buJ,O,.e)q)x:},w e(EҀK JG"oyj("V)~nQ5S>2؞1G JG "%I?DW űv "^pلPiwґZtNԙ3յ;E%\/(|>ElS1P>D e*yCG|-Ze(Ke7!/(|>D5D,M'RCP#ڝ| Jmuƫ˝SGfKg] / tO 1oZeP >D] ANhV8G b)%,%;E2M]eP "VB&,5e@>⅁xBH0P 1!*ab`^A 7 lBlOG]ルvl y)8N $Q bt 1GCB(hFcu2JW4\x%7#ITC@(ބW,{E IbJx@])#A(I)-B(U2J'D5k1fuc__ff-/!ʀ|e9'y@$ WI^(%"euc4C -i} JbaSvIeY:cMHqܷlJP\և١E!yt0ꌏZUp׃PTC n/\zBQ Ԯ bd1G 2Ӵb?XVլ Hpip٢MP "1P+fl@3D$b5ѐP:e@t29AzȊfDĤR^7'HyԮiTa3^X|QwUd.&`y˸hKvY,xTí߷?{ b;ㅅ`Epí߷?{JysLְ/,LFGwbU:D㸏HqנY,j x]'XQ0ѪVP+wP~V&Z %|qwc<L6[P`/oOǃe<^-C\8mvXU^ )3hH^(%j(vBSeP 61 7I "\׮CO[SouӸW+xh-}CO[<1*\dv"/:YDV!< e8GXpiYj9Rg y^ bn!)JrhqOB(A%4%=ڋ-nZO;AАP:C,ބvעo1Eՠn A%9ȓZ$c;E%hqm6Cw=Tzb1⦅Pѝ&bf5  ū$-Zikhq c!ob6 dV4CĽNKL இ4MT "&%E e'yt1V\He(ܢJ ]CCB(“a8[e,|$bJ8YxB(`A9[ ^գV51&fA%,2>D59& Bi]ch1puu 2Qn_reMl<7(A[ʠʣ`ۓ-R2Jy&eB4MaU݅P$*o]*t$2I' hZe\և*=&]P ?U' xz?M,Nj`Ue}2_ _*cѐP:Ji Rgy1cwJ'Ic1\Pb3^x Wch57(RIZZt-4dYA= ]Cg^LPz`5EzBM& ЬVP{4}b@wxZt DŽ  ,AH]# ZI6yuR b "&%BdEA3nn(ql]1"v]R7T>2(B"2أ e@U:hkYBf1X5%b&آPƢ!YV$lАP:J).y$HEW> &4OɝG~d٧H%5ijuݠ Zr"&I)ߣ>&%5e1H oZe,-y-hU%P 6tb=Z,C($kH~{kݭNr*O,D5TCztw!䛘lGJ;Zf^,ldVJ'($kH~b]݇PGfD,,l .ϐHiGC  Xok׈ } jtJy؞l$0yk!bnIqmn@(V5 "P 6uUccQ'c]GJ;C7 {GJ;J0esBjDCB(A;P1 `$Ŕ"|7XBd~p׃PsGwlڙf5~qAʰ-It 4Hh|ʀ|H . .M|$jhB&"^CX(vQ H*^$ eS;[P xA);#eBDl1G%pG".4 $Q >$zX5,teP m&oEʀ|e3Zp8› gi_ e *?1 bqH3DՠmO>v]eP  . \VIRA̱s?A(Y<1X:;xCEQJJ')~1Z2hk雐!bq0zpŔ,{1'Vg|zut(~֙UWFk[UWFk2SJifBX;zX5,Uj@d[tNP )qXD,ҚD,? Rg<Bi7D%ܧePeB3`5e=ykg#IPO19_2 _-)˞5лT7!N]ɔ ܱbP[L!*A>2oIec&n“ WЉ$CֈL,wȿYlaa7e/c`[N$~ϥ՘ge(= #_搯[_գV^hQBw .k_~sGKgWZZ:-ϭήFC2%W'k] !_y龋ϭ_-]=j-W:-ϭή2v.]|`|nhQ+m!noa|n}tvFP3R7ϭ_-]=jZȯt[[-]=jZn*QWt+^|`|nhQkJգj mS 㘸]|`|nhiЪR}[8:{3[ H9e.9YƙL"fT/KGxsGZG۫G7Wˀ~O2t"I *_Zڥθsqt7W[8Z:z괎F;KGWF;KGo/#Sڡ~f29ƂK"6m6ÙCஇXx b(&>ʠ|$jPH횸ҟI xBHEWXI-vEJ%7Σ x |$b 5,Jg8Kkb$ADN lBHe |$jH)eΣXl,=rbbY)ڝZe,C&t]}x Gf]JɉP0u56> Ikwqw_]Bp)5-ʠ h!Av"Y :SurBG|b Lz6C".] W:ciq7qPJ*cQ6Ir 2ȼ[PYQ  xlB(J<4h=p.ɩPڝbo"֔'UKCSB(JȊf1t4[P]sஇYZٷ1s 5TB,ug'Kg"[Q:Y:8AЉ$Ã29-Ct؞It=*5e اpl)Lfz2$*@'(t$2I=S, '#.]e#ITC%2G%Mo\oͰvsPtghU:N(.٦EP BI2JFx vwZԵ IZ#z u-)j|$jhD{w=d^Se#ITCАP:JAC *! ʫqB7yjgAʀ|eaSvtGzנ!yt`]ea!$"^($yrMː7QHV)ZMe=B-YJ)MUc ^|7`WiR&RC;)x.D5Thih8fG])Տ:X;AН&>+Cp2Z_:]|a}K/[_ /]| .uʃ_x龋/I"A녗.]|2~f2Z^/o:˷QG >[m,5;GY|B'D9Au,Cn@(V5 "P 6uUccQ'c]vEH.OZPo iƾYc6=m,z7zfˇfmziü?=ml^,,ų^2 f1 f,l;^6=ue,:co5k}?t(]E*/JW(}W:v6֧ѧOt>QzVTJGYS*gIt=*5e اpl)Lfz2$*@'(t$2I=S, '#vI.OZP o TiL; z;tJ^N/}߿o蘺aOӰ'`\46 @l^6Ko 6aPMahqln`-W:v6֧ѧOt>QzVTJGYS*gIt=*5e اpl)Lfz2$*@'(t$2I=S, '#sx2ЋC(ރMxB/bʲZ&)w'PjԃvbxlH.[ 6*q|p1"> %>"?#Q݅#RE% {42.{ >7Ζa$I!+CW&eyo\pƅ6o\x Yy?~UWFk/"2Z;vm @Goo<|ecY+]GGί"2Z;fg*+kkeY/#__y, ב/]A#W_YE~e3^[E~eZȟ?΅ \y ΅G΢ h#WΞYE2Z;;^[E~evvmm K;ȟٿ v. _ٿp 76PavȯΜYE~evfhjv6?W_Guym=rvbJ.OZPo U{ }_4i64/}/4MڥM&}i^hl4=IѤh>=*MOIѤQC>~G?=~G o`{?^7`/T=b(?W:v6֧ѧOt>QzVTJGYS*gIt=*5e اpl)Lfz2$*@'(t$2I=S, '#vK.OZP? o  !"#$%&'()*+,-./0123456789:;<=>XN2EKQdK1@#,WDU8vg;$\ S7U^kuxèPQ;Uv  D(1Q7T`V E=fa?m`yfn7a9[wL1lm7`IX+a%l+AQ.%)%K+)(bE؛DPĞDIثA* "v!a9(bk"Sev>,vU*JVjQ;fI J477 nv ; wGD `vwR.OZPo ~dyYdsC`0e6RAJ`*5H Y*(H@)P:f#d61!4%4e`ט SAk`טMMe`VSf`.`` Nmڔ (sla`l3_,NVY\A-ٛҾ1L&Gb5_moo r>>,vU*JVjQ;fI J477 nv ; wGD `vS.OZPo ޤٛ9`f1ȚfL0wf']f5Ye37f f'7g3de34o,P|6Ajm5`6(T/a | g'S\d *h:&UL5ËSAl>٤>OJ 9R&P0*(>)~&Pi3ԋCeM0E0 x`^ ffY`&` ffY`&` ff`&i82EKQdK1@#,WDU8vg;$\ S7U^kuxèPQ;Uv  D(1Q7T`V E=fa?vM.OZPo ?įI5QhMhMhM0ƋX@!Tҳw%@%`%HBEbI,8DDTRH,1 He"%H,8D*JܻA*C8D(J(((8$Dw5Ue%JJPf;IJMhJPb9TPIܔX5Rb )J,uS7U^kuxèPQ;Uv  D(1Q7T`V E=fa?vN.OZPo ,{8{ج.plkCcxk4g/?W}*_|UYSC>~Ksb?M/.a?XM/?؇ƞ9l8{-Cc}^ ؇~-=_{f>46kY>K`?ـrS~@S87 69 k9._f_ 6`/?=fa?q_<7gT@\MV)*8*m(S(yIiPڀ 6(`n4 5$5u$ ~qHާ6 A7ܳ6.y _'VvO.OZP9o  !"#$%&'()*+,-./012345678Sn3Jܶ=m/_ϭ"kDcnvr1En5X.gW@n#X˭RFwGV]>,vU*JVjQ;fI J477 nv ; wGD `h(0+@N(; wzV#J4 K)DWQrz(%h(J)@t96bh((kL#WGmCU4[))Q9m$mfOm~_"^߯K3̐+^?wKf(!%뇻:jJf(f6Vj %3llhaJZm6dszCΦ4lf9B-vP.OZP!o  tA79 ,Ko+kY-A˝wXT+0F50h[[f ,+hŴ{T [c;Uݨf0S/l_kZ̋y fsY`'9In`y9<a20́>>,vU*JVjQ;fI J477 nv ; wGD `(j G/1]_F0 ߛ_SlSddM0snv ; wGD `vnY.OZP"o  v)kGRAPHPQC.BAS8  !"#$%&'()*+,-./01234567Y U v#Rxd5ICV _d@d?}[O//>.> DnuIP!=H‘|7)%Aj$Dǥ2z5: Cd,6ލT͸Y~]nܴkW$Ru]҃$w*pE?pӮSn7KWJrHF۟7џ3E3ni&s8Diש7;IGA] TXEP !.\a&<6{2+SEd7l0= Zs Y`>A Z0 tG;AZX_9"[E17P8l0g*ZZk *Pka+dEk2̏͞ h 0OLb`sNK101O0o1]_F0 ߛ_SlSddM0snv ; wGD `vZ.OZP"o  !}zzz`f+X+`YR6+`uV+`sl=X#,)X{X+`K,+RX+`[R/٬fz[f̬tP k^zVzBлj>Wz|B01O0o1]_F0 ߛ_SlSddM0snv ; wGD `!qth}$sGRJ0MGA)a?rB8B@@(4tBq@MW|.%pt!`yJIG*A'i(%~QqfG)9jUJ|5.%QR¨o)G_Kjgį.%T4J/>j G/1]_F0 ߛ_SlSddM0snv ; wGD `vnY.OZP"o   GREP COMPLGREP CQ *nGREP DQC, GREP OBJ5Z? v;GREP.C^  !"#$%&'()*+,-./01o23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\](㷗/7SdHdM#4]R4BޠP:R0J[%*a >%>4}JdWq j vQ F܍/m+:785DSP۶s_㥏@i¥i!ִ&tI*#`ι7K3w(?~~D'<߻?Q F64%hV2@S }BR0J(ڷZ !V K#(HoT`~Hg@Q:oB;Y) YـCmJxi3XS7kRe_X Pfl@}`G-@.t78Eˊ4@8D.CTXBV$;VJjh6`gc/5(52wGS4j ml;#^`(ׂxP2WuL7LHЄh@%s5tCB#Y#! %s#WJLЄ25P&X[x0(+؀;3HȊ֔%deM+ء e-XBVAB82Wʵ`Jix~w ͞uI 4N^`ll듘T+|UOP=I dL`gcIB]n6Q/5 )&6`^޾ vB4j )&?hb;kjݷb;!YC^`gc5ŤFz.l'$k f\`(ׂ tCk$L7g8Rć_ vX9݈dߓmbr$mTKh5dNpKs)~F(`\hM/\uckkY7gVM/\ucki.An+Q3ݺKh_T oFkZHPPp>  N@`s?9``<0pH >@"#0x xc$`<<OH π d!@@y9p>>a$0 H!@>c$0 H!@|@  @À>a$0 H!@  @@9@|@  @>#0x0  p @@` <` `00F>cπ 08aF@dAL b   A"fp2(H6 |װ]YIR0J(7\ &n$l m˼|oMNHت } j+ޚUy+X`x`Q%)+(Dk(JJf)`xXTjQ& *CȊR뵕kGy4)(B?q, "hIk(R'AiiDTJBzH7K%),3I*R0J(VlBE*["|y [YF +hc$M& * AR0JYÄy2#W(M0^"tEᵤq)ۇI+UVusP`DkIR0J(%`Å`Tv$'SR-ͅ7w6QrR0J<~(l"XYAV?$'%77BCait.|VS!3ZM`.oh5Q_TFr>>(]Ο!OA0J7HStɚGh5ާ0MS~Wɮ= VVxoI7O t!`.#ϯwZM2 FT@X0Fr>zAz2 FT> `.>Hvɮ\ |?Rp;r7~HNFT i;P(/?yp$ K9kG<}Kw[xf;t7G(kN"YCKkG<}u|[ڭK< 0ݰ" Ҡ&vΡDBi%i55>Ah\ vΡ\ ."D?EJ%Ĥ RwT@ k +2#54!^Vl`k8IcRj'T;Ĥ ULcRm/X𠬩nۓH(Ret{ҟ ͞5v?'$ktÄ;#'n6Q@ss/=k$5t<A p N|L8@0@! 3? N@!1A<''>gp` C2xx3x! Aa< @@>< @!><0 Ǥu/؝ l̈ jBI,0GT(Yb›/?hLswf;W\h,P( v;BI,5g*XoDJ6`hnz\$;m;36s%7Q nI\BOlpuؒ u&W/NR=wMFS+e].M ͞h,tۻu$aaE>"D(`C o +Bà̈d -;ʵ`B[#cHZOֹ/m+_Oxξ36m0AMȾ3TI M/&-~B67`쩕ײnzKo\ \;#}gh@l`D̾3rB=r4h@`n]B1CiM I(d e 6b +e;m"d@VA +B`@/;kȭKrHsadEVJqr-9;#q菽ˑ"ͅpEso0Ⱦ3i;ʑ"ͅ[l{m)?<%^hk$|'R.) M!XoT!+:DN+"#ءD愴HBII@P$%)DާRC,Ek챿ok]ߜ v?i.kzfl^;|OfQ$;m;#^`(ׂg#u:us&X#Ew`KGGӮz5PMWv[@u |OfQsɩ ۗ?<{cy?4lLrr-X^>GGӮz5PMWv[@u |OfCait.|VS!3ZM`.oh5Q_TFr>vׅGREP.DOCJ  !"$#%'&)(*o+,/.-0132456789:;?=<>@BDCFAEGIH++++`r\p;vSq|VT]k+++k[8ſSqi0P֝Jɭ7=\yuGܺ-3_(6pзk[`r!$^IyH뢔`rolmVAU̫6sX`7c!<.'-ʌ&A*Œ&4͐8>2@,~Ė<#^#V#͢&̓6)))Y~0̿7G~`2@2@#~2@~?>&=2@#^#V#^#V#"@^#V"@:@ '*{@!:@@'"@*@#w"@*@~9'D'/Ϳ7͈?+"@*@+"@!6D"@6!^D"@*@~*@*@s#r#*@s#r#*@s#r#*@s#r#*@s#r#:@w#"@'*@*@s#r#*@s#r#*@s#r#*@s#r#*@s#r#:@w#"@'|E'}X27*@+~2@+V+^+"@V+^+"@V+^+"@V+^+"@V+^"@"@*@+~2@+V+^+"@V+^+"@V+^+"@V+^+"@V+^"@"@p';(ͯ''͋(!"@"K@2@<2@2@2@ͥ)(Â^ äg* . !9DM* s#r*s#r*s#r*##s#r*s#r̓|( ! ͻ̓++|d ! ~#fo##~#fon}?d ! ~#fo##~#fo#n}d ; ̓+*s#r! w#w! 6#6͐̓ ! ~#fo͐)~#fo`is#r͐n}-º `i^#Vr+s`i^#Vr+sn! s#rzʕ ͐>? >5 >c >; >d >H >f >Y >n& >h >v2 >y Ê ;Ò *^#Vr+sÒ * ^#Vr+sÒ *##^#Vr+sÒ *^#Vr+sÒ *{ յη|stx%ORlZt6.M`vo5ZLmKy=` #BZWɻmk1#uscdD\ Nyk1I|Y^bncTpցx3:Pfv9ZLm[{XǛ kj1y-0(d1L|Z?;WB ZLm 9Ma=GG@w^-&E{ L2-ꏀeZTڟLvXIR;:ƏC+$n[?_u/72&$\zJΫݶq/IQLꏢ^ ՎK=I\q= !"$#%* b͸{--?1w{ÖüH!K]jU 2͵ ^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2hZZk:h|/g}/o#|/g}/o#:h<2hqDM!xxGyO^#Vr+sÒ ! ͻ ! ~#fo͐)w#w*^#Vr+s ͐| ͐! ~#fo͐)w#w! ^#Vr+s*^#Vr+s! ^#Vr+sÇ ͐| ! ͻ\|1 !! \\|ͯ|g}o*##s#r! 6#6͐̓ ! ~#fo͐)~#fo`is#rz ! ͐#|® ͐ ͐! ! ! ^#Vr+s] !9No argumentsUnknown flagNo pattern i !9DM͐!  File %s: 0 Ê !9DM͐!M !- %s: cannot open d i ! a !4 a !? a !j a ! a ! a ! a ! a ! a !a !(a !Ia ![a !ta !a !a !a !a !Ja form: grep [options] regular_expression file_list options: -c just print count of matching lines -f don't print file name -n number matching lines -v print non-matching lines in pattern: ^ = beginning of line $ = end of line . = any character except newline :a = any alphabetic character :d = any digit :n = any alphanumeric : = any )v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2hZZ͉M|}ȯ|g}o)|/g}/o#z/W{/_!9~#fo! ! ! ! ! ! P!9~#A!9"w**w"j!z*"d!"f!Y"H>2^>2a>2`2c>2s2t>2r>2v!"@!"D!@"B!"F !F#x:~#!|2i~# :" 2i +}|~#:G:ix."2i+w# +6#!6#@A2n2?*j**|+`!#"0!#"2!>ڌo&͖=}  w~2ʸͼ56!+W ?_!~7z?ͧ:>͞@w#5.ww#w#w#w*>?@͌>w#͌5> w#@ͧ͵g 2q&0OxG͵j/ʆSx\͞.7:77!a{  ʨ ʨ0:?ŷO !y$ 7o&))T])))!y 2p_ :pwhite space character * = zero or more occurrances of previous character + = one or more occurrances - = previous character optional \ = escape (match following metacharacter literally) [] enclose character set (form: [abcde] or [a-e]) ËÊ Ý*!9DM͐!!ͅ!!ͅ!͈?GREP-E-%s Usage: grep [-cfnv] pattern [file ...]. grep ? for help i ëTä!9DM͐`is#r\ |>͐! *_* s#r`i^#Vr+sn! s#rz%͐|ʔ͐|ʔ͐|¤\ *_* ~#fon! s#rz͐+++|͐|͐|͐|͐͐! !!\ ! s#r* ^#Vr+s͐`\ * ~#fons+\ ͐|x!Î͐|‹! Î!s͐* s#rR\ ! s#r͐>^>>$> >.>>[> >:>8>\> !"!"!"͐͐`is#r"͐n}`i^#Vr+sn! s#6͐>al>ʓ>dx>ʞ>n„>n}ʏ!`i^#Vr+sn}©!`i^#Vr+sn! s!|! n&|!`i^#Vr+sn&! s! n&|! n&|!!`i^#Vr+sn&! s! n&|c! n&|cÉ! n&|ڃ! n&|ډ!`i^#Vr+sn! s! n}ʸ! n&|ھ!`i^#Vr+sn&! s! ^#Vr+sn&|g}o! s#r͐n}g! ~#fo###s#r! ~#fo++s#r! n! ~#fonѯgWd! n! ~#fonѯgWdØÄ! n! ^#Vr+sn}„Ø! ^#Vr+s!|͐|͐͝ |ͩ!͐|! ~#fo͐ ++s#r͐͐! s#r! ^#Vr+sn}͐|(͐`is#r͐͐`is#rzK!͐! s#r͐n}ʊ͐͐! s#rzʊ͐`is#rW! ^#Vr+sn}ʡÊ͐͐ ͐͐! s#rz͐`i^#Vr+sá!͐!=!M.͐! 9pmatch("%s") byte[%d] = 0%o, '%c', op = 0%o Bad op code %d Cannot happen -- match nñ É!!9DM͐! sʩ> >ʴÿ! ! ! ! ͐͐! "͐͐! ͐n} `i^#Vr+sn! s#6!͐R!!\ |ʱ*_! s#r͐\ ҩ! ^#Vr+sn&|g}o! s#r!|Ҙ͐! æ͐! M! ! 9Pattern = "%s" Illegal occurrance op.Unknown : typeNo : type\%o %c Tëä!9DM͐`is#r! 6#6͐n}^I`i^#Vr+s! 6#6͐\ ! s#r!`i^#Vr+sn! s#rzʁ͐|ʁ͐|`i^#Vr+sn! s#rz͐͐ ! ͐~͐|p\ ͐|p͐n}]p͐n}p* ~#fon! s#6* ~#fo6͐`i^#Vr+sn! s#6͐~͐f͐|ʢ͐͐ !% \ ͐! s#r!|͐͐ !8 ͐|͐͐ !H ͐͐s͐!9Class terminates badlyUnterminated classClass too largeEmpty classZs!9DM\ *_}!W*#r! ^#Vr+sz0͐ h`is#r!|͐͐͐ ͐k0-͐#|0-͐|͐ h`is#r!|͐ ͐k0-! ^#Vr+s͐sÂ͐6͐|]͐#|c͐͐c!g͐j!9|Ê Ý*!9DM͐!!v!y%sê!!9DM! n&ͧ|! n& ! n&&à*!9DM͐!͐s#rz !͐##w#w͐6͐~#fo7 ,"+!9DM͐O !͐1 ͐~#fo4 r +Ö#!9DM*m ! o Ó ~'Ö#!9DM͐* ! ͐ ý :+o+À+!9DM͐| ʹ À!͐+++| !ͷ À!͐##^#Vr+s|i!!͐͐~#foͺ `is#r!|œ>/>¨>c>´>>>ʒ> >ʬ> >> >$> >ʌ>>>>> >> >+>,>K`i^#Vr+sn&! ^#Vr+sn&`!͐*_|!‰"!Í#͐##~#fo`is#r͐͐͐~#fo/"͐"!Í#͐+?`is#r͐##~#fo|f#!͐͐͐2"͐##~#fo͐s#r͐~#fo͐s#r!!͐~#fo5"Í#͐##6#6͐͐s#r!Í#!9å#'n(Ý()!Y9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{u'`in}%F'! ! s#r! 6#6! s! s! s͐n}-5$! ^#Vr+s! 4͐n}0E$! 4͐n&͜#}b$! ͟#e$!! s#r! ^#Vr+sn`is{.­$! ͟#! s#r! 4! ^#Vr+sn`is`in&͢#}D$U%X%O'%Cm%Sʞ%'͐~#fo|%! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 -%! 6-%! 6! ~#fo! n&! ^#Vr+s~#fo! ͙#ѯgs#r&! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+s&! n}±%! 6#6! ^#Vr+s~#fo! s#r͐n}&͐|&! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s%͐6! ! s#r! n}„&! ^#Vr+s!|ڄ&͐͐! n}a&!0d&! !r&!9~#fo#|&!u#~#<ʷ>!4R6#6*! * |ʴ!ͯ"r! ͯ" R Can't open > or < file.$èw*6 )! 9!"6ɴ(*:B<*C 2B ́F  €> _*C~+#4N s> > !+:EºF2B_~ý   > G ʘG!* ͟> !+}  > _con:rdr:pun:lst: ==_~O7 !"# !  #¾i& ~º!h~#~#F6%pw6237!9Ly=S>wD<!gs 6#6 ~+|s#r{{ ڟ!+#^{!!Pw#w!g~<6 !|~r!N!nL}*eyb>w#%!=)${=Sbtx h&{'2&͐n}&͐͐! ^#Vr+sn&!&!9~#fo#|&!u'Ä&! n}'! ^#Vr+s!|'͐͐! !'!9~#fo#|'!u'&C'͐͐`in&!4'!9~#fo#|C'!u'r'͐͐`in&!c'!9~#fo#|r'!u'#!9Ç'~':)!9DM͐|ª'͐! ́'͐͐̈́'#|'!''!9DM͐͐ (͐^#Vr+s͐(͐0(͐7s!&e(͐ ͐͐ ͉͐'`is͐ ͐͐ )͐'`in&#&e(!9!9DM! n&|ͯڙ(! n&|ͩã(n(!9DM`iw#w͐~#fon&͠(}(͐ ?͐^#Vr+snѯg`is#rñ(͐(!9)n*!9DM! n&)|-)! n&4)! n&&F) +o+8,!9DM͐)͐>i)>ʐ)>u)>ʞ)>)>ʱ)>)>))! n&=)! n&!@)! n&!@)! n} )! !@)! n&!@)͐##^#Vr+s|N*!͐͐~#foC)|-*!͐##6#6͐͐s#r͐^#Vr+s! ns&!9DM! n& !~!nN#F{p+pH#x¯ ڽ+!9~ !~b!5> 6> *e w`i#Q᯾%,!$|!!9n&:ʟɯ2>[!9L):|!PwL#4!^w>2>2-:Ecx:-O”! DMi:- !Write error - Disk full $`i7.!9~=+SV+^+F+N "I> w+ w w##w w #~+:&~##K@~#.7K&*I++Kw#=a O! ~_#V!$r+sbk#|}o|g}o|g}o|g|!,|}!­­,ɯ|ʙ!|}!-z{!,zz{!-|!|g|}! -ɵz{!-||g}o).{ozg+|/g}/o~og~#fos#rN#F#xr~#~#[[`iDM!z>‚S\))Ҋ =‚ɯßz>|>MD!x<³z>ڸjS\>))#  =¸>>T'!9"*++"Lp !9*  *I  *++"L}2:G*++"L͂  *++"L"**++"L͛  !!9L͂ |ͯڙ*! n&|ͩ 7,ү*> 2h*P/:q2> *:h):R*=*=> *:qw#w#w:ho&552?#  + > _ .+ :noI+2n& !o l+ . &7:PO*R7:P)V>#,z>#,z2:P,"j!"l*T|*l»+5*R*j!ѷ+2?++!ö+*lö+*T+"T*R"R*l#"l*j! N#Fp+qx«+##6>2?ð+2?:no2n&7:P)"XV>,z> ,z2:P,"j!"l*T|”,*j!^#V*X#^#VҌ,r+s*l5*R"R*j"*lʼ,2?Ï,#"l*T+"T*j! N#Fp+qxf,##6>2?Ì,2?7*T|DM*R*P-><-~# x- ><+-~+ x+-|}C-Î-7:P,>Y-2?!^#V*R:Tʂ-=s-Â-*P@-*R!s#r ,ҟ->2?)~2#"j!!~#fo#^#Vp+q*j~#fo-s#r5R*+%"H%"F%"D " " "y 6"C+6+!^6 F+N+<!* !!9~#ʗ RO"k'k +}|+#~ʂu6!9F}2!9L"ͷ !9L"!!9L͂ *F͓ *F͓͓ *#"+F ÷ :G0 !9F*#"+!9F}*6!9F:G͟@ Y  !"A "!9*Q*++"*#"F"ͯy ! }2*ͯ"|ʠ *#"+F"*| !0}2*#"+F" "*| *#" "*#"+F"͓ *͓ !"* !9L++QL  !9L++QL!   !"A ` ! "A ` !"A !9L++QL"C *C *A ʹ  !9L++QL"E "G *G #"G +F|ʬ Ù *G +"G *E 4* *͓ *E *"G *E *G  *  Y c+ dH oQ uZ x s ͷ * !" *F"0C *9͓j *  s*#"+F" ( * " !9L"t !9L"v !9L+Q*t ͯʴ *v ! ͏ÿ *t +*v ͉͋}*t ͯ *v !( *t ͯ *v ! ͏ *v !("v *v |Œ !9L!9!T9L< !T9L>C !T9L" !9P"* !V9Lx "!T9Lʡ :G*##*#Q*#6*6#6!9LF*6.*|*6^!"!9L#F!9L͛!9L#F͓ͯ!9L#F͓ͯ*6$"!"!9L#FͯO*6!!9L##Qa*6[!9L#Q+!]!9! 9!ͯ"*|ʯ*##*(%Q*##L! 9"'!"*|*F!*6*Y^$**6L*#!9`}Y.^$%[**|+*͓ͯB*!*|b*6#6*""*F|ʖ**Q**Q*"**͹*L*Q**Q**Q**Q*"!9L#Q+**6#6*** ! 9L"! 9LF|ʇ! 9L! 9L*ʹ" ͯe! 9L#Q+Ä!9L|w* ~! 9L" Ç#* " "*!9L"!9LF|!9LFa!9LFz͓!9LF}!9L#Q+å*"!9L!9L)!9L0!9L*1!"1!9LLF|ʑ!9LFq!9LLF!9L#F͛ʁ!"1|ʘ !- *+"á *+"6-** !P9!9!9P"!V9L!V9Lx "** !P9!9L!9L4" *ͯ!:G* c* +" #|M!9L#Q+F *+"!*|b! !c!9L*ʊ!9L *+"c!9L ʡ!0ä!7!9L***! 9L|!"""! 9L"! 9L|! 9LFͯ! 9LL͓! 9! 9LLQ! 9L"! 9LF|]! 9! 9L3͓f<! 9! 9LLQ|! 9L*! 9L! 9L! 9Lʹ"|*! 9L+QÁ!! 9! 9L! 9L3|! 9! 9LLQ!*!9L+Q *4!9L"4!9L&Q*4F|m*4F!9L͹͓~*4#"4+Q*4F|ʢ*4*4#F}*4#"4+~"4****! 9L"!9LL"!"*F|*F!9L͹͓*!9L4! 9L͓0*F|Q! 9L#Q+!`}*#"+'*F|! 9L#Q+*#"+F}'*Ñ!9LL!9L͛ʢ!"1Ñ!9LLF|!"1Ñ!9LLF|!"1Ñ!9LLF!9L##Lͪ|!"1Ñ!9LLF!9L##Lͪͯ=!"1Ñ!U'!l'!9LF! 9LFÑY\L^.$[!@*1ʰ!9LL*1Q*1#"1"1*!9L"*F|C*#"+*F *F~͓*F@!'*F*F|@! "*H!9L|ʿv!9!9LLQN!9LF!'"H!'"H!'"H!'"H!'"H!'"H!'"H!'"H!'"H!'"H!'"HY^$.L\[]^!*!'*H!9L!9LFͯT!9LF͓ͯv!'!9L##Lá!9LF|¡!'!9L#F!(!9LL]! "H*!9L|=!9LF*!9L##L@&!9L"!9!9LLQ*@&::Y[!"*F*D*B!9L"B! 9L"F! 9L+Qʌ*B|™*#F!9L͓͛ʱ! 9L#Q+6-'*+F*#F*#"+*++F"*#"*F! 9L#Q+*}*#"+'!""""!"! 9L#Q+6!9L*Q! 9L*4*^!9LLF|ʍ!9LLF"^!9LL#Q+!9LLF2'!\"^! "^! "^! "^!"^! "^!9LLF"^YSNTBR*^"^!9L!͏*<*:!9L":*:"<*:F|l*:#":+V*:#*:F}*:+":#*<*:l*<! 9L}":"<*!9L"*!9L"*&}o"*F|*F*͹͓*#"+*F| *!""!9La7!9Lz͓]!9LAZ!9LZ͓͓ƒ!9L0ʀ!9L9͓͓!9****!9LFͯ!9LF!9L͓͛!9LF͓ͯ!9LF͓ͯ!""""!9!"!"!"!9LF|N!9LF!9L͹͓e!9LF͓͓q*͓ͯ!(%""D#͓͓ʱ*F#"F+*D}ͯʮñh*F6*D#ͯ! 9L*F͓͛!! 9L"B"D"F!9* ******!"!9LP!!!*)!9LLF|¤*#"+)!9LL!!9L*͛ʤ!!!!9!@*#"+)!9L#"ͯ!!!!9L*4"!!( *|R*)!9LL!D(ͯ" * |O!!F(*)!9LL z X*" !"!"!9!* H|S *ͯˆ*͓ʗ!9͗*"*+"< !9*)!9L!| *#"+*!9*)!9LL!* . *!9*)!9LL!* *#"+$Ý*|G *͓P S d**)!9LL*͵ * *#"!9L!""""""" !9*ͯʿ !9L !U(!9L!](!9L!9*| !!P9*|!!T9L͓ͯ6!*ͯ3!!T9L͓͓!*ͯ[!!R9LX!*͓͓ʈ!!a(!X9L*|~!!j'Á!!f GREP C @GREP DOCGREP OBJPTOOLS C C}TOOLS H  /* ------------------------------------------------------------------- * GREP.C: A generalized regular expression parser * * Published in Dr. Dobb's Journal, October 1984, page 50 * * Copyright (c) 1984 Allen Holub * Copyright (c) 1984 Software Engineering Consultants * P.O. Box 5679 * Berkeley, CA, 94705 * * All rights reserved. * * This program may be copied for personal, non-commercial use * only, provided that this copyright notice is included in all * copies and that this program is not modified in any way. * Copying for any other use without previously obtaining the * written per(*|ʤ!!h(!\9L*ͯ!!c(!Z9L!!!n( ͨ!"!"!"!"!"!"!"!9LF|ʳ"!9LF2'w"ã"!"ã"!"ã"!"ã"!"ã"!"ã"!"ã"!"ã"!!!ã"ã"Y$"-$"E'"C0"F9"HB"LK"NT"V]"Yf"!9L#Q+"*"*"*"!""*|"! 9L͗!|!9Lͪ""|_#!9L*"#! 9L!|͏""͓B#! 9L##Q++*"Q*"#""+! 9*"#""Q*"|\#è#"!9L*"ʄ#! 9L!|͏""͓ʠ#*"#""+! 9L*"Q*"|¶#!(ͨ*"""""""!9*#*#!"#*|ʍ$!9LL!D(ͯ"#ͯ#$!!F(!9LL !!9L*#4|I$!9!*#H͓ʂ$!9*#)!9L!9L*#4ͺ"*#"##$*#$!9LL*#)!9L!9L*#4ͺ"*#"#|$!9L!'Q*#"#"#!9! !D'|%!!D'&}o+++͓ͯ%!!9L##Q G%!96#6!%""%*"%##L"$%#͓%k%*$%""%M%*$%L!9L%mission of the author is prohibited. * *-------------------------------------------------------------------- */ #include "printf.c" #include "a:tools.h" #include "a:tools.c" /* * GREP * * Search a file for a pattern. * * The algorithm used here is essentially the algorithm in Software Tools in * Pascal (pp 145f.). Though the routines have been changed somewhat to put * them into good 'C'. See tools.c for details. * * This program is a healthy subset of the UNIX program of the same name. * The differenced are as follows: * * - the -s, -x, and -b options are not supported. * - the meta-characters b()+? are not supported. * * Usage is: * grep [-vclnhyef] [expression] files ... * * To compile with the Computer Innovations C86 compiler use: * * cc1 grep * cc2 grep * cc3 grep * cc4 grep * cc1 tools * cc2 tools * cc3 tools * cc4 tools * link grep tools,,,c86s2s.lib * * To compile with Aztec CII use: * * cc1 -x4000 grep.c * as grep.asm !9L*$%L%*"%##*$%!9LQ""%*"%*$%L!9L4Q*$%!9LQ*"%##*$%##LQ*$%##b%!9L &!&!9L"&%""%#ͯ$&!*"%*&%Q*"%##@&G%!9L++Q!%"<&*<&#͓!'i&*>&"<&S&*<&##L">&!9L '!9LL!9L*>&͛&!9LL*>&LQ*>&##L">&*<&L*<&!9L͛&*<&L!9LLQ!9*<&Q*<&##!9LQ!9L##*>&Q`&+#~)'!9n&}a{ oo&% omatch: can't happen char = %c, %x hex \0x%02xBOLEOLANYLITCHARESCAPECCLCCLENDNEGATENCCLCLOSURE**** unknown ****%-8s at: 0x%x, string = [%s]=, lchar = %c, next = 0x%x (c) Copyright 1984, Software Engineering Consultants rCan't open %s %-12s: %d %s%s:%03d:usage: grep [-cefhlnvy] [expression] Illegal expression   * cc1 -x4000 tools.c * as tools.asm * ln grep.o tools.o a:libc.lib */ #define CPM 1 /* Comment this out if you're compiling * in an MSDOS system. */ #define MAXLINE 128 /* Maximum size of an input line. */ #define MAX_EXPR 64 /* The maximum number of regular expressions * separated by newlines or | allowed. */ /* The following global flags are true if a switch was set in the * command line, false otherwise. */ int vflag, yflag, cflag, lflag, nflag, hflag, fflag; main(argc, argv) int argc; char **argv;{ int i, j, linenum, count, numfiles, exprc; int line[MAXLINE]; FILE *stream; TOKEN *exprv[MAX_EXPR]; char *fgets(); i = 1; if(argc < 2) abort(pr_usage(1)); if(*argv[i] == '-'){ /* expand the switches on the command line */ expand_sw(argv[i++]); if(i == argc) abort(pr_usage(1)); } /* Get the pattern string */ if((exprc = get_expr(exprv, MAX_EXPR, &argv[i++])) == 0) abort(pr_usage(2)); y] [expression] \n"); } /* ----------------------------------------------------------------------- */ abort(){ exit(); } /* ----------------------------------------------------------------------- */ expand_sw(str) char *str;{ /* Set global flags corresponding to specific * switches if those switches are set. */ vflag = 0; cflag = 0; lflag = 0; nflag = 0; hflag = 0; fflag = 0; yflag = 0; while(*str){ switch(toupper(*str)){ case '-': case 'E': break; case 'C': cflag = 1; break; case 'F': fflag = 1; break; case 'H': hflag = 1; break; case 'L': lflag = 1; break; case 'N': nflag = 1; break; case 'V': vflag = 1; break; case 'Y': yflag = 1; break; default: pr_usage(3); abort(); break; } str++; } } /* ----------------------------------------------------------------------- */ int do_or(lp, expr, max) char *lp; TOKEN **expr; int max;{ int found; TOKEN *pat; char *op; found = 0;  numfiles = argc - i; /* Get number of files left to process * on the command line. */ fprintf(stderr, "(c) Copyright 1984, Software Engineering Consultants\n"); do{ if(numfiles){ stream = fopen(argv[i], "r"); if(stream == NULL){ fprintf(stderr, "Can't open %s\n", argv[i]); continue; } } else stream = stdin; count = 0; linenum = 1; while(fgets(line, MAXLINE, stream)){ #ifdef CPM if(!fflag || yflag) stoupper(line); #else if(yflag) stoupper(line); #endif for(j = exprc; --j >= 0; ){ if(matchs(line, exprv[j], 0)){ count++; pr_match(linenum, line, argv[i], 1, numfiles); } else pr_match(linenum, line, argv[i], 0, numfiles); linenum++; cntrl_c(); } if(lflag && count) break; } pr_count(numfiles, argv[i], count); fclose(stream); }while(++i < argc); abort(); } /* ----------------------------------------------------------------------- */ pr_count(fcount, fname, count/* Extract regular expressions separated by 0R_SYMs from lp and * put them into expr. Extract only up to max expressions. If * yflag is true, map string to upper case first. */ if(yflag) stoupper(lp); while(op = in_string(OR_SYM, lp)){ if(found <= max && (pat = makepat(lp, OR_SYM))){ *expr++ = pat; found++; } lp = ++op; if(pat == 0) goto fatal_err; } if(found <= max && (pat = makepat(lp, OR_SYM))){ found++; *expr = pat; } if(pat == 0){ fatal_err: printf("Illegal expression\n"); exit(); } return(found); } /* ----------------------------------------------------------------------- */ get_expr(expr, max, defexpr) TOKEN *expr[]; int max; char **defexpr;{ FILE *stream; int count; char line[MAXLINE]; #ifdef DEBUG int i; #endif /* Get regular expressions separated by | or newlines either out of * a file or off the command line depending on whether the -f flag * is set. The expressions are converted into pattern templates ) int fcount, count; char *fname;{ /* Process the -c flag by printing out a count and, if more than * one file was listed on the command line, the file name too. */ if(!cflag) return; if(fcount > 1) printf("%-12s: ",fname); printf("%d\n",count); } /* ----------------------------------------------------------------------- */ pr_match(linenum, line, fname, match, numfiles) int linenum, match; char *line, *fname;{ /* If a match is found print the correct thing * as specified by the command line switches. */ char buf[80]; if(cflag) return; if((vflag && !match) || (!vflag && match)){ if(!hflag && ((numfiles > 1) || lflag)) printf("%s%s", fname, lflag ? "\n" : ":"); if(nflag) printf("%03d:", linenum); if(!lflag) printf("%s", line); } } /* ----------------------------------------------------------------------- */ pr_usage(num) int num;{ #ifdef DEBUG fprintf(stderr,"%d ",num); #endif fprintf(stderr,"usage: grep [-cefhlnv  * (see tools.c) and pointers to the templates are put into the array * expr[] (which works similar to argv). * * Return the number of expressions found (which can be used in a * similar fashion to argc). */ count = 0; if(fflag){ /* Then *defexpr is the file name and expressions should be * taken from that file. */ if((stream = fopen(*defexpr, "r")) == NULL){ fprintf(stderr, "Can't open %s\n", *defexpr); abort(); } while((max - count) && fgets(line, MAXLINE, stream)) count += do_or(line, &expr[count], max - count); fclose(stream); } else /* *defexpr is the expression itself. */ if(count += do_or(*defexpr, &expr[count], max - count)) *defexpr = " "; #ifdef DEBUG /* Print out all the regular expressions after they have been * converted into pattern templates (see tools.c). */ for(i = count; --i >= 0;){ pr_tok(expr[i]); printf("------------------------------------------------\n"); } #endif return(count); }  CLOSURE && pat->next){ /* * Process a closure: * First skip over the closure token to the * object to be repeated. This object can be a * character class. */ pat = pat->next; /* Now match as many occurrences of the closure * pattern as possible. */ bocl = lin; while( *lin && omatch(&lin, pat, boln)); /* 'Lin' now points to the character that made us * fail. Now go on to process the rest of the * string. A problem here is a character * following the closure which could have been in * the closure. * For example, in the pattern "[a-z]*t" (which * matches any lower-case word ending in a t), * the final 't' will be sucked up in the while * loop. So, if the match fails, we back up a * notch and try to match the rest of the string * again, repeating this process recursively * until we get back to the beginning of the * closure. The recursion goes, at most, two * levels deep. */ if(pat = pat-> /* ----------------------------------------------------------------------- */ cntrl_c(){ #ifdef CPM /* If any character was hit, and that character is a ^C, then abort. */ if(bdos(11,0) && ((bdos(1,0) & 0x7f) == 0x03)) abort(); #endif } #include "STDLIB.C" ter is a ^C, then abort. */ if(bdos(11,0) && ((bdos(1,0) & 0x7f) == 0x03)) abort(); #endi/* ------------------------------------------------------------------- * TOOLS.C: The expression parser used by grep. * * Published in Dr. Dobb's Journal, October 1984, p. 50 * * Copyright (c) 1984 Allen Holub * Copyright (c) 1984 Software Engineering Consultants * P.O. Box 5679 * Berkeley, CA, 94705 * * All rights reserved. * * This program may be copied for personal, non-commercial use * only, provided that this copyright notice is included in all * copies and that this program is not modified in any way. * Copying for any other use without previously obtaining the * written permissinext){ while( bocl <= lin){ if(rval = amatch(lin, pat, boln)) return(rval); /* success */ else --lin; } return(0); /* match failed */ } } else if( omatch(&lin, pat, boln) ) pat = pat->next; else return(0); } /* * Note that omatch() advances lin to point at the next character to * be matched. Consequently, when we reach the end of the template, * lin will be pointing at the character following the last character * matched. The exceptions are templates containing only a BOLN or * EOLN token. In these cases omatch doesn't advance. * * So, decrement lin to make it point at the end of the matched * string. Then, check to make sure that we haven't decremented past * the beginning of the string. * * A philosophical point should be mentioned here. Is $ a position or * a character? (Ie. does $ mean the EOL character itself or does it * mean the character at the end of the line.) I decided here to * make it mean the former, in order to mon of the author is prohibited. * *-------------------------------------------------------------------- */ /* * This module contains the various routines needed by grep * to match regular expressions. Routines are ordered * alphabetically. */ int amatch(lin, pat, boln) char *lin, *boln; TOKEN *pat;{ /* Scans through the pattern template looking for a match with lin. * Each element of lin is compared with the template until either * a mis-match is found or the end of the template is reached. In * the former case a 0 is returned; in the latter, a pointer into * lin (pointing to the last character in the matched pattern) is * returned. * * "lin" is a pointer to the lin being searched. * "pat" is a pointer to a template made by makepat(). * "boln" is a pointer into "lin" which points at the * character at the beginning of line. */ register char *bocl, *rval, *strstart; if(pat == 0) return(0); strstart = lin; while(pat){ if(pat->tok == ake the behavior of amatch() * consistent. If you give amatch the pattern ^$ (match all lines * consisting only of an end of line) then, since something has to be * returned, a pointer to the end of line character itself is returned. * * One final point. If you use a macro instead of a real subroutine * to define max(), then take the --lin out of the macro call to avoid * side-effects (lin being decremented twice). */ return(max(strstart, --lin)); } /* ----------------------------------------------------------------- */ delete(ch, str) int ch; register char *str;{ /* Delete the first occurrence of character from string moving * everything else over a notch to fill the hole. */ ch &= 0xff; while( *str && *str != ch) str++; /* != has precedence */ while( *str){ *str = *(str+1); str++; } } /* ----------------------------------------------------------------- */ int dodash(delim, src, dest, maxccl) int delim, maxccl;char **src, *dest;{ /* ExTOKEN *getpat(arg) char *arg;{ /* Translate arg into a TOKEN string */ return(makepat(arg, '\000')); } /* ----------------------------------------------------------------------- */ insert(ch,str) int ch; register char *str;{ /* Insert ch into str at the place pointed to by str. Move * everything else over a notch. */ register char *bp; bp = str; while(*str) str++; /* Find the end of string */ do{ /* Move the tail over one notch */ *(str+1) = *str; str--; }while(str >= bp); *bp = ch; /* Put the char in the hole. */ } /* ---------------------------------------------------------------------- */ char *in_string(delim, str) register int delim; register char *str;{ /* Return a pointer to delim if it is in the string, 0 if it is not. */ delim &= 0x7f; while(*str && *str != delim) str++; return(*str ? str : 0); } /* ---------------------------------------------------------------------- */ int isalphanum(c) int c;{ /* Return true if c is apand the set pointed to by *src into dest. * Stop at delim. Return 0 on error or size of character class on * success. Update *src to point at delim. A set can have one element * {x} or several elements ({abcdefghijklmnopqrstuvwxyz} and {a-z} are * equivalent). Note that the dash notation is expanded as sequential * numbers. This means (since we are using the ASCII character set) * that a-Z will contain the entire alphabet plus the symbols: [\]^_`. * The maximum number of characters in a character class is defined by * maxccl. */ register char *dstart; register int k, at_begin; char *sptr; dstart = dest; sptr = *src; at_begin = 1; while( *sptr && (*sptr != delim) && (dest - dstart < maxccl) ){ if( *sptr == ESCAPE){ *dest++ = esc(&sptr); sptr++; } else if( *sptr != '-') *dest++ = *sptr++; else if( at_begin || *(sptr+1) == delim) *dest++ = '-'; /* literal '-' */ else if( *(sptr-1) <= *(sptr+1) ){ sptr++; for(k = *(sn alphabetic character or digit, false * otherwise. */ return( ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') ); } /* --------------------------------------------------------------------- */ TOKEN *makepat(arg, delim) char *arg; int delim;{ /* Make a pattern template from the string pointed to by arg. * Stop when delim or '\000' or '\n' is found in arg. Return * a pointer to the pattern template. * * The pattern templates used here are somewhat different than * those used in the book; each token is a structure of the * form TOKEN (see tools.h). A token consists of an identifier, * a pointer to a string, a literal character and a pointer to * another token. This last is 0 if there is no subsequent * token. * * The one strangeness here is caused (again) by CLOSURE which * has to be put in front of the previous token. To make this * insertion a little easier, the 'next' field of the last * token in the cptr-2); ++k <= *sptr;) *dest++ = k; sptr++; } else return(0); at_begin = 0; } *dest++ = '\000'; *src = sptr; return(dest - dstart); } /* ----------------------------------------------------------------- */ int esc(s) char **s;{ /* Map escape sequences into their equivalent symbols. Returns * the correct ASCII character. If no escape prefix is present * then s is untouched and *s is returned, otherwise **s is * advanced to point at the escaped character and the * translated character is returned. */ register int rval; if(**s != ESCAPE) rval = **s; else{ (*s)++; switch(toupper(**s)){ case '\000': rval = ESCAPE; break; case 'S': rval = ' '; break; case 'N': rval = '\n'; break; case 'T': rval = '\t'; break; case 'B': rval = '\b'; break; case 'R': rval = '\r'; break; default: rval = **s; break; } } return(rval); } /* ---------------------------------------------------------------------- */  hain (the one pointed to by 'tail') is made * to point at the previous node. When we are finished, * tail->next is set to 0. */ TOKEN *head, *tail, *ntok; char buf[CLS_SIZE]; int error; /* Check for characters that aren't legal at the beginning of * a template. */ if(*arg == '\0' || *arg == delim || *arg == '\n' || *arg == CLOSURE) return(0); error = 0; head = 0; tail = 0; while( *arg && *arg != delim && *arg != '\n' && !error){ ntok = alloc(TOKSIZE); ntok->string = &(ntok->lchar); ntok->lchar = '\000'; ntok->next = 0; switch(*arg){ case ANY: ntok->tok = ANY; break; case BOL: if(head == 0) /* then this is the first symbol */ ntok->tok = BOL; else error = 1; break; case EOL: if( *(arg+1) == delim || *(arg+1) == '\000' || *(arg+1) == '\n') ntok->tok = EOL; else error = 1; break; case CCL: if( *(arg+1) == NEGATE){ ntok->tok = NCCL; arg += 2; l = amatch(line, pat, bptr)) == 0) line++; else{ rval = ret_endp ? rval : line; break; } } return(rval); } /* ---------------------------------------------------------------------- */ stoupper(str) char *str;{ /* Map the entire string pointed to by str to upper case. * Return str. */ char *rval; rval = str; while(*str){ if('a' <= *str && *str <= 'z') *str -= ('a' - 'A'); str++; } return(rval); } /* ---------------------------------------------------------------------- */ int max(x,y) int x,y;{ return( (x>y) ? x : y ); } /* ----------------------------------------------------------------------- */ int omatch(linp, pat, boln) char **linp, *boln; TOKEN *pat;{ /* Match one pattern element, pointed at by pat, with the character at * **linpat. Return non-zero on match. Otherwise, return 0. *Linp * is advanced to skip over the matched character; it is not advanced * on failure. The amount of the advance is 0 for patterns that mat } else{ ntok->tok = CCL; arg++; } error = dodash(CCLEND, &arg, buf, CLS_SIZE); if(error != 0){ ntok->string = alloc(error); strcpy(ntok->string, buf); error = 0; } break; case CLOSURE: if(head != 0) switch(tail->tok){ case BOL: case EOL: case CLOSURE: return(0); default: ntok->tok = CLOSURE; } break; default: ntok->tok = LITCHAR; ntok->lchar = esc(&arg); } if(error || ntok == 0){ unmakepat(head); return(0); } else if (head == 0){ /* This is the first node in the chain. */ ntok->next = 0; head = tail = ntok; } else if (ntok->tok != CLOSURE){ /* Insert at end of list (after tail) */ tail->next = ntok; ntok->next = tail; tail = ntok; } else if (head != tail){ /* More than one node in the chain. Insert the * CLOSURE node immediately in front of tail. */ (tail->next)->next = ntok; ntok->next = tailch * null strings, 1 otherwise. "boln" should point at the position that * will match a BOL token. */ register int advance; advance = -1; if(**linp) switch(pat->tok){ case LITCHAR: if(**linp == pat->lchar) advance = 1; break; case BOL: if(*linp == boln) advance = 0; break; case ANY: if(**linp != '\n') advance = 1; break; case EOL: if(**linp == '\n') advance = 0; break; case CCL: if(in_string(**linp, pat->string)) advance = 1; break; case NCCL: if(!in_string(**linp, pat->string)) advance = 1; break; default: printf("\nomatch: can't happen\n"); } if(advance >= 0) *linp += advance; return(++advance); } /* ------------------------------------------------------------------------ */ pr_line(ln) register char *ln;{ /* Print out ln; if a non-printing character is found, print out its * numerical value in the form "\0x". Again, this is a * debugging aid. I; } else{ /* Only one node in the chain. Insert the * CLOSURE node at the head of the linked list. */ ntok->next = head; tail->next = ntok; head = ntok; } arg++; } tail->next = 0; return(head); } /* --------------------------------------------------------------------- */ char *matchs(line, pat, ret_endp) char *line; TOKEN *pat; int ret_endp;{ /* Compares line and pattern. Line is a character string while * pat is a pattern template made by getpat(). * Returns: * 1. A zero if no match was found. * 2. A pointer to the last character satisfying the match * if ret_endp is non-zero. * 3. A pointer to the beginning of the matched string if * ret_endp is 0; * * For example: * matchs ("1234567890", getpat("4[0-9]*7"), 0); * will return a pointer to the '4', while * matchs ("1234567890", getpat("4[0-9]*7"), 1); * will return a pointer to the '7'. */ char *rval, *bptr; bptr = line; while(*line){ if((rva t lets you see what's really on the line. */ for( ; *ln; ln++){ if((' ' <= *ln) && (*ln <= '~')) putchar(*ln); else{ printf("\\0x%02x", *ln); if(*ln == '\n') putchar('\n'); } } } /* ------------------------------------------------------------------------ */ pr_tok(head) TOKEN *head;{ /* Print out the pattern template (linked list of TOKENs) pointed to by * head. This is a useful debugging aid. Note that pr_tok() just scans * along the linked list, terminating on a null pointer; so, you can't * use pr_tok from inside makepat() because tail->next points to the * previous node instead of being null. */ register char *str; for( ; head; head = head->next){ switch(head->tok){ case BOL: str = "BOL"; break; case EOL: str = "EOL"; break; case ANY: str = "ANY"; break; case LITCHAR: str = "LITCHAR"; break; case ESCAPE: str = "ESCAPE"; break; case CCL: str = "CCL"; break; case CCLEND: str = "CCLEND"; break; case */ #define BEL 0x07 /* ^G */ #define BS 0x08 /* ^H */ #define HT 0x09 /* ^I */ #define LF 0x0a /* ^J */ #define NL LF #define VT 0x0b /* ^K */ #define FF 0x0c /* ^L */ #define CR 0x0d /* ^M */ #define SO 0x0e /* ^N */ #define SI 0x0f /* ^O */ #define DLE 0x10 /* ^P */ #define DC1 0x11 /* ^Q */ #define DC2 0x12 /* ^R */ #define DC3 0x13 /* ^S */ #define DC4 0x14 /* ^T */ #define NAK 0x15 /* ^U */ #define SYN 0x16 /* ^V */ #define ETB 0x17 /* ^W */ #define CAN 0x18 /* ^X */ #define EM 0x19 /* ^Y */ #define SUB 0x1a /* ^Z */ #define CPMEOF SUB #define ESC 0x1b /* ^[ */ #define FS 0x1c /* ^\ */ #define GS 0x1d /* ^] */ #define RS 0x1e /* ^^ */ #define US 0x1f /* ^_ */ #define DEL 0x7f /* DEL */ #define TRUE 1 #define FALSE 0 #define TOKEN struct token #define FILE int #define stdin fin #define stdout fout #define stderr 0 #define EOF -1 /* Definitions of meta-characters used in pattern matching * routines. LITCHAR & NCCL are only used as token identifiers; * all the NEGATE: str = "NEGATE"; break; case NCCL: str = "NCCL"; break; case CLOSURE: str = "CLOSURE"; break; default: str = "**** unknown ****"; } printf("%-8s at: 0x%x, ", str, head); if(head->tok == CCL || head->tok == NCCL) printf("string = [%s]=, ",head->string); else if(head->tok == LITCHAR) printf("lchar = %c, ",head->lchar); printf("next = 0x%x\n",head->next); } putchar('\n'); } /* ------------------------------------------------------------------------ */ unmakepat(head) TOKEN *head;{ /* Free up the memory used for the token string */ register TOKEN *old_head; while(head) switch(head->tok){ case CCL: case NCCL: free(head->string); /* no break, fall through to default */ default: old_head = head; head = head->next; free(old_head); break; } } /* ------------------------------------------------------------------------ */  free(old_head); break; } } /* ----------------------------------others are also both token identifiers and the actual * symbol used in the regular expression. */ #define BOL '^' #define EOL '$' #define ANY '.' #define LITCHAR 'L' #define ESCAPE '\\' #define CCL '[' /* Character class: [...] */ #define CCLEND ']' #define NEGATE '^' #define NCCL '!' /* Negative character class [^...] */ #define CLOSURE '*' #define OR_SYM '|' #define CLS_SIZE 128 /* Largest permitted size for an expanded ** character class. (Ie. the class [a-z] ** will expand into 26 symbols; [a-z0-9] ** will expand into 36 symbols.) */ /* * Tokens are used to hold pattern templates. (see makepat() in * tools.h) */ struct token{ char tok; char lchar; char *string; struct token *next; }; #define TOKSIZE sizeof(TOKEN) /* * An absolute maximum for strings. */ #define MAXSTR 132 /* Maximum number of characters in a line. */ extern char *matchs(); extern int amatch(); extern char *in_string(); extern TOKEN *getpat(); /* ------------------------------------------------------------------- * TOOLS.H: Various #defines and typedefs for GREP * * Published in Dr. Dobb's Journal, October 1984, page 50 * * Copyright (c) 1984 Allen Holub * Copyright (c) 1984 Software Engineering Consultants * P.O. Box 5679 * Berkeley, CA, 94705 * * All rights reserved. * * This program may be copied for personal, non-commercial use * only, provided that this copyright notice is included in all * copies and that this program is not modified in any way. * Copying for any other use without previously obtaining the * written permission of the author is prohibited. * *-------------------------------------------------------------------- */ /* * #defines for non-printing ASCII characters */ #define NUL 0x00 /* ^@ */ #define NULL NUL #define SOH 0x01 /* ^A */ #define STX 0x02 /* ^B */ #define ETX 0x03 /* ^C */ #define EOT 0x04 /* ^D */ #define ENQ 0x05 /* ^E */ #define ACK 0x06 /* ^F   extern int esc(); extern int dodash(); extern TOKEN *makepat(); extern int unmakepat(); extern int insert(); extern int delete(); extern int isalphanum(); extern int stoupper(); extern int pr_tok(); extern int pr_line(); extern int max(); extern int omatch(); extern int fin, fout;  int stoupper(); extern int pr_tok(); extern int pr_line(); extern int max(); extergrep.c, tools.c, and tools.h were published in the October 84 issue of Dr. Dobb's Journal. Grep is a global regular expression print utility according to THE UNIX PROGRAMMERS MANUAL, although a more common expansion is generalized regular expression pattern matching utility. My purpose in uploading these files is to save others the trouble of typing them in (about 20 pages source code). The programs have been modified by me to compile with C/80, as explained below. See Dr. Dobb's for instructions in using the program. As a brief example, the command "grep -n pattern file1 file2 file3" will search the files for pattefile.$èw*6 )! 9!"6ɴ(*:B<*C 2B ́F  €> _*C~+#4N s> > !+:EºF2B_~ý   > G ʘG!* ͟> !+}  > _con:rdr:pun:lst: ==_~O7 !"# !  #¾i& ~º!h~#~#F6%pw6237!9Ly=S>wD<!gs 6#6 ~+|s#r{{ ڟ!+#^{!!Pw#w!g~<6 !|~r!N!nL}*eyb>w#%!=)${=Sbtx h&{ !~!nN#F{p+pH#x¯ ڽ+!9~ !~b!5> 6> *e w`i#Q᯾rn and list the line number(s) if found. The pattern can incorporate wild cards and other generalities. C/80 Version 3.0 from The Software Toolworks will not compile grep.c as listed because it has no: a) linker b) typedef statement c) FILE type d) #defined NULL e) stdin f) stdout g) stderr h) fgets i) stdio.h j) capability to call a function with a different number of arguments than defined. To compile grep.c with C/80: In TOOLS.H: 1. After #define NUL 0, add #define NULL NUL 2. Add #define EOF -1 3. Add #define TOKEN struct token 4. As explained in Section 8 of the C/80 Version 3.0 documentation add the following: #define FILE int #define stdin fin #define stdout fout #define stderr 0 extern int fin, fout; 5. In the typedef statement on page 58 delete the words "typedef" and "TOKEN". In TOOLS.C: 1. Delete the two #include directives 2. On page 61 add the argument "boln" to the omatch() call. The modi%,!$|!!9n&:ʟɯ2>[!9L):|!PwL#4!^w>2>2-:Ecx:-O”! DMi:- !Write error - Disk full $`i7.!9~=+SV+^+F+N "I> w+ w w##w w #~+:&~##K@~#.7K&*I++Kw#=a O! ~_#V!$r+sbk#|}o|g}o|g}o|g|!,|}!­­,ɯ|ʙ!|}!-z{!,zz{!-|!|g|}! -ɵz{!-||g}o).{ozg+|/g}/o~og~#fos#rN#F#xr~#~#[[`iDM!z>‚S\))Ҋ =‚ɯßz>|>MD!x<³z>ڸjS\>))#  =¸>>T'!9"*++"Lp !9*  *I  *++"L}2:G*++"L͂  *++"L"**++"L͛  !!9L͂ !9F}2!9L"ͷ !9L"!!9L͂ *F͓ *F͓͓ *#"+F ÷ :G0 !9Ffied line should read: while(*lin && omatch(&lin, pat, boln)) 3. On page 64 change the expression (dstart - dest < maxccl) to (dest - dstart < maxccl) In GREP.C: 1. Delete the line #include "a:stdio.h" 2. Change #include "b:tools.h" to #include "tools.h" 3. Add #include "printf.c" 4. Add #include "tools.c" 5. Add char *fgets(); 6. On page 77 change if(matchs(line, exprv[j])) to if(matchs(line, exprv[j], 0)) 7. On page 83 change bdos(11) to bdos(11,0) 8. At the end of grep.c add #include "STDLIB.C" 9. In STDLIB.C add the function fgets() from page 155 of K&R. Robert C. Briggs FOG Member #92 de "STDLIB.C" 9. In STDLIB.C add the function fgets() from page 155 of K&R. Robert C. Bri*+%"H%"F%"D " " "y 6"C+6+!^6 F+N+<!* !!9~#ʗ RO"k'k +}|+#~ʂu6#~#<ʷ>!4R6#6*! * |ʴ!ͯ"r! ͯ" R Can't open > or <  *#"+!9F}*6!9F:G͟@ Y  !"A "!9*Q*++"*#"F"ͯy ! }2*ͯ"|ʠ *#"+F"*| !0}2*#"+F" "*| *#" "*#"+F"͓ *͓ !"* !9L++QL  !9L++QL!   !"A ` ! "A ` !"A !9L++QL"C *C *A ʹ  !9L++QL"E "G *G #"G +F|ʬ Ù *G +"G *E 4* *͓ *E *"G *E *G  *  Y c+ dH oQ uZ x s ͷ * !" *F"0C *9͓j *  s*#"+F" ( * " !9L"t !9L"v !9L+Q*t ͯʴ *v ! ͏ÿ *t +*v ͉͋}*t ͯ *v !( *t ͯ *v ! ͏ *v !("v *v |Œ !9L!9!T9L< !T9L>C !T9L" !9P"* !V9Lx "!T9Lʡ :G|ʘ !- *+"á *+"6-** !P9!9!9P"!V9L!V9Lx "** !P9!9L!9L#F͓ͯ*6$"!"!9L#FͯO*6!!9L##Qa*6[!9L#Q+!]!9! 9!ͯ"*|ʯ*##*(%Q*##L! 9"'!"*|*F!*6*Y^$**6L*#!9`}Y.^$%[**|+*͓ͯB*!*|b*6#6*""*F|ʖ**Q**Q*"**͹*L*Q**Q**Q**Q*"!9L#Q+**6#6*** ! 9L"! 9LF|ʇ! 9L! 9L*ʹ" ͯe! 9L#Q+Ä!9L|w* ~! 9L" Ç#* " "*!9L"!9LF|!9LFa!9LFz͓!9LF}!9L#Q+å*"!9L!9L)!9L0!9L*1!"1!9LLF|ʑ!9LFq!9LLF!9L#F͛ʁ!"1Ñ!9LL!9L͛ʢ!"1Ñ!9LLF|!"1Ñ!9LLF|!"1Ñ!9LLF!9L##LͪL4" *ͯ!:G* c* +" #|M!9L#Q+F *+"!*|b! !c!9L*ʊ!9L *+"c!9L ʡ!0ä!7!9L***! 9L|!"""! 9L"! 9L|! 9LFͯ! 9LL͓! 9! 9LLQ! 9L"! 9LF|]! 9! 9L3͓f<! 9! 9LLQ|! 9L*! 9L! 9L! 9Lʹ"|*! 9L+QÁ!! 9! 9L! 9L3|! 9! 9LLQ!*!9L+Q *4!9L"4!9L&Q*4F|m*4F!9L͹͓~*4#"4+Q*4F|ʢ*4*4#F}*4#"4+~"4****! 9L"!9LL"!"*F|*F!9L͹͓*!9L4! 9L͓0*F|Q! 9L#Q+!`}*#"+'*F|! 9L#Q+*#"+F}'*|™*#F!9L͓͛ʱ! 9L#Q+6-'*+F*#F*#"+*++F"*#"*F! 9L#Q+*|!"1Ñ!9LLF!9L##Lͪͯ=!"1Ñ!U'!l'!9LF! 9LFÑY\L^.$[!@*1ʰ!9LL*1Q*1#"1"1*!9L"*F|C*#"+*F *F~͓*F@!'*F*F|@! "*H!9L|ʿv!9!9LLQN!9LF!'"H!'"H!'"H!'"H!'"H!'"H!'"H!'"H!'"H!'"H!'"HY^$.L\[]^!*!'*H!9L!9LFͯT!9LF͓ͯv!'!9L##Lá!9LF|¡!'!9L#F!(!9LL]! "H*!9L|=!9LF*!9L##L@&!9L"!9!9LLQ*@&::Y[!"*F*D*B!9L"B! 9L"F! 9L+Qʌ*B"D#͓͓ʱ*F#"F+*D}ͯʮñh*F6*D#ͯ! 9L*F͓͛!! 9L"B"D"F}*#"+'!""""!"! 9L#Q+6!9L*Q! 9L*4*^!9LLF|ʍ!9LLF"^!9LL#Q+!9LLF2'!\"^! "^! "^! "^!"^! "^!9LLF"^YSNTBR*^"^!9L!͏*<*:!9L":*:"<*:F|l*:#":+V*:#*:F}*:+":#*<*:l*<! 9L}":"<*!9L"*!9L"*&}o"*F|*F*͹͓*#"+*F| *!""!9La7!9Lz͓]!9LAZ!9LZ͓͓ƒ!9L0ʀ!9L9͓͓!9****!9LFͯ!9LF!9L͓͛!9LF͓ͯ!9LF͓ͯ!""""!9!"!"!"!9LF|N!9LF!9L͹͓e!9LF͓͓q*͓ͯ!(%"*##*#Q*#6*6#6!9LF*6.*|*6^!"!9L#F!9L͛!9L#F͓ͯ!9 !9* ******!"!9LP!!!*)!9LLF|¤*#"+)!9LL!!9L*͛ʤ!!!!9!@*#"+)!9L#"ͯ!!!!9L*4"!!( *|R*)!9LL!D(ͯ" * |O!!F(*)!9LL z X*" !"!"!9!* H|S *ͯˆ*͓ʗ!9͗*"*+"< !9*)!9L!| *#"+*!9*)!9LL!* . *!9*)!9LL!* *#"+$Ý*|G *͓P S d**)!9LL*͵ * *#"!9L!""""""" !9*ͯʿ !9L !U(!9L!](!9L!9*| !!P9*|!!T9L͓ͯ6!*ͯ3!!T9L͓͓!*ͯ[!!R9LX!*͓͓ʈ!!a(!X9L*|~!!j'Á!!f(*|ʤ!!h(!\9L*ͯ!!c(!Z9L!!!n( ͨ!"!"!"!"!"!"! GREP CQMyGREP DQCz*GREP HQPvGREP.COM 2 !"#$%&'()*+,-./<0123456789:;<=>?@ABCDEFGHIJK5KHLMNOPQRSTUVWXYZ[\]^_`abcdefghi="jklmnopqrstuvwxyz{|}~6%o*>: 4;7IO@- ]9.PB1rVhfa/' yq3[Y&nicUzxp"!9LF|ʳ"!9LF2'w"ã"!"ã"!"ã"!"ã"!"ã"!"ã"!"ã"!"ã"!!!ã"ã"Y$"-$"E'"C0"F9"HB"LK"NT"V]"Yf"!9L#Q+"*"*"*"!""*|"! 9L͗!|!9Lͪ""|_#!9L*"#! 9L!|͏""͓B#! 9L##Q++*"Q*"#""+! 9*"#""Q*"|\#è#"!9L*"ʄ#! 9L!|͏""͓ʠ#*"#""+! 9L*"Q*"|¶#!(ͨ*"""""""!9*#*#!"#*|ʍ$!9LL!D(ͯ"#ͯ#$!!F(!9LL !!9L*#4|I$!9!*#H͓ʂ$!9*#)!9L!9L*#4ͺ"*#"##$*#$!9LL*#)!9L!9L*#4ͺ"*#"#|$!9L!'Q*#"#"#!9! !D'|%!!D'&}o+++͓ͯ%!!9L##Q G%!96#6!%""%*"%##L"$%#͓%k%*$%""%M%*$%L!9L%!9L*$%L%*"%##*$%!9LQ""%*"%*$%L!9L4Q*$%!9LQ*"%##*$%##LQ*$%##b%!9L WRF)|^LA? mb`ZXSQ}utske_\,$ {wgMJ0+(!~vdTEC8# ǂhC{?ğ_z'^/Fn5z!--,{wOv_~ :~j?fC-8ԂC-8'Έo1_H~wt"=wMs'/nE9i=&<>[VBMcHx1_tF^=KL{~[bGu!Eq(x*÷9XO:#mwk%ږnB\{= 7 =uFN1v}KX3\gdUX/c|UwQ %:#bmi8Uskp=BT_Wݱbk9ruFN1v} _mK$X .l p1 ;hs}KH܈/rvcZ!r#狶%\.=>k;_/ĺ/ږp*󷈶E !c~w_Tc=˷DnmD'7ݜpp1U<'Rs?p/<>[Vb/ۮo܈/"Dž'Έ[ӾW w ߫v//c3htoYٱ{k%\y\gd N.p݄UtF^=96w-?gND3["7ȉHKtr;ޱx/&:Zc kD||;H[Eg$%:9[ՊXO:#%b KxU]Du1HDnmm;" [Vb=ȍ(AguNH&!&!9L"&%""%#ͯ$&!*"%*&%Q*"%##@&G%!9L++Q!%"<&*<&#͓!'i&*>&"<&S&*<&##L">&!9L '!9LL!9L*>&͛&!9LL*>&LQ*>&##L">&*<&L*<&!9L͛&*<&L!9LLQ!9*<&Q*<&##!9LQ!9L##*>&Q`&+#~)'!9n&}a{ oo&% omatch: can't happen char = %c, %x hex \0x%02xBOLEOLANYLITCHARESCAPECCLCCLENDNEGATENCCLCLOSURE**** unknown ****%-8s at: 0x%x, string = [%s]=, lchar = %c, next = 0x%x (c) Copyright 1984, Software Engineering Consultants rCan't open %s %-12s: %d %s%s:%03d:usage: grep [-cefhlnvy] [expression] Illegal expression  ;-|l,UNW$r"7 " W'=߲\gķDnEp B$X`ڎb|XO:#%VIxNODgcmׯĎǸ+Έo%,Kp):# /%Vk[En񙶻v,mٱ(Dg$%:9[D3["nA?ҖXO:#%ws*Xrw, QYr+b=HM$X$*b=ZAkU$-cIXF|Ot$D'{֪wFD?SkHX< [VB1>o+V֭b=xXBNg%܎o .En$iϷ6wDEtE'rYY+(DEr^Y~;w,pr-]!񷈃[EBLmD3[XBNg%܎o .En$iϷ6wDEXO:#%*WVON{e+$3qpHV{+tVuF| ȍ?9؎ymw- /zέ~\gķD*:# /h(Dn$Vk;W9rs#g 1"7 $D'{܈BX9mK$Du1ȍ?9XO:#%VIxN`QdǟΉTڮ_ wȍ3Y܈/vw q`Qdb}z_='>XE'r'+"nǷ/*{'>XXO:#%*8='\Ƀ5!/3Yb=UaQke"n.:# /%,:%rqpT+kB9_FUXbOcb=HM$vZ3#1_yxL'Έo?wJf ;ř]{@-~z{l~QGbhI"4n͡Er-]K-sXiϷ6w?[h-Ƿ'rhVɵk ϟO&:"a܈/s#܃-5Enco܈q7D +ǧŴwz5E%U[}aM':1.뾛.qKc\L'r9sՃ{nQ)Z 1;힗p;kEVϸbINp%:E.Ѓ%,K|o&r%&m/9[oEtKXq.NέO綊X²D.{q.:|}z?փ-U1|mR*=2y7s|z"9qpk-bGLzlbNreV[z0uFUVDn{[wE*v;;VwEރg[-=XuyN$}WTb=}p=c#-za\v0ܜݍWk \Hn׀ CV(2?*"]") a, ̗v2PE$kRDr; ) +Xf ٍ5`?,p"I('+O"EJivnL C Xf UDrJivnL Cy0[lAt~&dhvnL Q΃1:-c' {DgD`T!+4F@Nl40Cp%*"0U"5(' &ep?Pxy~Hc`^7j~&dӸ]wFA߮` L${5ܚ$gNT0e=MQ#M=H~2PE$O)")Le~+@\c ׫  *"y'Gh*"ص,PE$UDr1cT5~3,G[ȅø+i0j`T<[\ZpY'fY̌5@\5ր*"رegD=r0NUDr@-♴2?_PE$X#`NJ8=@Mɦq`0jd v0dlaO0V9-;r~[k᯶m%%K:q "k\H<@By7I_$E*e>pZߖ~*eFm2{'Ẕ'.9 `g@cl UDl!4E<@l߭~Hc`^7jd _8Z'޼e S-azPE$X#`NJ[clo2<r~[Nr==拵քbBHlE ;"kUDrcEgD5?`)E4F@\c "k*"q`x}4~h*"PE$UDr/]aT5F/b4.>," C Xf ߹PE$lEay:飀E<PE$w%.Hi\1k@\c T5{IT711HR j *"y%W_/jHRt1c`/>,}'[ȅ PE$\/@rg1}v![<<^t` <T>[d{jU^*8hu";q`W WE^li.h 2/t׋nPOV>[dLu";q16z6[ȼ|6B^t`߀r~TEnz킽lntRu";q16z6[lt=/F׋nPO>Ttw׋n4j dmC{lsȢ0[<4@\,h4@\cb TRH1c @-*"CJcTmFӰgL""<[<4@ `_xHTKj9QPE${!+Xf <1PE$cH)"=9d, {1؋Oc T5@\c l{jj*" qo2knb TRN 4,*"]TI"4cHnZr^*""k{jY*Q1PE$H)"9;?`Q-dދ1PE$cH)"(2>1PE$Hi*"AJ<:7Ra` TRHn6Bb TRH1aa T5S-a T5ja8}[-Z"k*"؋O;=chpcHnǐRDrls-Ea0b TRHn9؋BV˩0v )E$`l!sUDr vņ!+ @-*" ` @<[ucHnGUDr;$hUDrE$UDrE$8?A?h:Ւs@ [b T4F@ 1 1۷E|y< Tuz:c x FGRj<AJc T5^|کP@5@h{z ΀Eay#H1vvּja^(2|I"4:Ea05 *"CJ6{q0[k @HI7olG~;@H)"ja8GcTRNl54 x1v )]'}VCӰg06@J#iX3j9@ܮA$}l v ЩPL5@뤏1PE$gW]ch{W~n2ߞ-dΛ:-\Mɦ`4[;D5`0&1 QOj 4'`4}V&)$-KHi,$a`5Hi0 x&=Im"WΧhZ{ RD= 5HuoM~r!XJCt~jH^6ғH=H)"iX3=ԮAJ44 x&}k'`W=Tj SӰgғrb=ДS-=h'G\JO5.,U`вO޹N|:K%qHnR`!@L]T'4=pC,a8*@܎!뤏+VCӰgժ<~hn0dAYb3ܵ@Վ!.`latؚۚ5<@c{ϰT~eܬPE$w`_Ij<T5~@Ugx "]7OUDr1*ڭYï$5c`?p*vRnhM&`j;}sM*kb0j'X5H unJq01 k@\_g$aQo:z#nY`07gUָ`N1 k@<ܔ~U879D*"Wڭ&8RU;NjLU 4,v)aϤ?PcH:[lshLU;ָ"]=`ÐB~l5pdl54 xOUDr; ) A`po?PcH:jhLUZg m#c TRHn92?4@܎!v Ea"1/<?~5Hi uoiJHIQ6C釩]:RHn U'"iX3釩 :RHn4,絇S uj4,t5Hi uo:MހsnӰp ";=cZȅ# / 5Yj'zEi4V4,`_jX?wkc`9PE$w%)X&\{Nm"`F@ܩo#c"/ M8T5FvS-QPE$o(2;PE$)a6X:=chpcHn0j` $}l=&dӸ]0 B *"S-3 `"hI"4npN`)jlp>>PE$w%1nXf "]0UDrÆ!{q0[@FUDr B'0Χ&ԄS-]=`&%2x "]g6x%2w}OUDr vmoaFgG#?Un?S{S)-iOG~JcphgJ|]6?ipFOUDr ޯ$5c`'?QѶcnS@ kPE$^X^XބI_jg[ ˛M)E$7 xnS-d.J`/wB46G/$#lO17M<)kGn=&L‡7eڭ7W;ZX^Xބ7lJ)"? )]'} a8@܎!뤏4,kUDr)1PE$H)"iX3UDr 1v)PE$kv )E$`vGREP.DOCa  !"#$o%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`i'e՝}ZEhO|Se$easmnUVnIl+g p'¢22u(#5<쭾EEP|p}V#οyՇdi`I,Ӓ3' h79y+)sODXԮ.lOD2TFځ@Kӕ1Y&LM)Z\YLMWG1 D0Sɨcf1yD6*'at;(\vє|ap"dS ;qHbI=8J,!`юHG)YI,1pIZ5݁Eޟ8h8A˸QO6MIa4]€)3|(l{8>QѶj{+~H1vm)Hn'!v>춷P-ƐC/PC/ǰ }L:#6Q=sO?3w,X>s6Dyd[vV6T93^zakV4 s2%]g}Q7Mqp ʻs`[9ȁ=LL-l/<5u텹CR mCArw<5v0xHm3^J?2a H0Cf ȁK.Q=st lA=scM6>|aNO%^kyqtSbeN-Epj⟜ݥˏKzl/gPO+7eKDi݉Y \Ĝɗ+'|e*G&.lG&텍ƙ]B9l~+};gMbDߑʼn&]dlA.~ebQ2sd,VL/Ng6O^,]9~%~db~ޛ?>2TKT!s97[@9?yThm_F0U\;sz4_9_p9߉O5үL8ҹ9KxAjeʱx9m;15\\=/Vs9rDL @;ĩ+/lG&텍|wb!~+7^ 2Tą:瑉 38r٧"hصLGK##f_{5D0:F6++ǯҏL{G&jI_=*@y~s?- G=~ .צ∝=:ovrunߣhZ&.e?7b[n^|\+nZ`gŻ5XySDW7͖o>*>|ѻo>|t|VC"l8vdSqV*oH3fa,Ha?U[E8]#Lq+cFU/n>mK)lJD,SW 1(޽ b Nt LK^ N'NZhC0QGet&0E𳯞w8 (#lUP$ٔe)HU6Ytl0H3,0!9)O0yzNh| 7٘0SԀ%2nN;ުhGqe2L&vOfD*}A²bS'j8/L|܌!Һd)s *Z}HFQ\YL +㔬$X@ e)qJ8|iP|Emhkh>$ `2, $?)6~DD#RO^ Ǹyn[wO>>Gqik$D2aj+ ہ5ҌS5l5Һd)sd~-pO>>,kDB0]3$Rbuݶ // pI+)XMzn&42&0y(\lJd\e? Fq~FJB6%XudS.FU78s4e(\lJUeuA e {'cL ݓ^`:/#LGp"0T2nnZ8Q$X:̦C"L *#(9)SMD`2a{ҽՇD0eYbN hP , 0z{ҩՇD.Y:G \i2NY)*HbI< D{OoDG;wY )(S(t4o}{tI ^Yëf6Rf /iI+' @ܔR~s@뤟=gRsƩ"WsJs0GqI SIu -?{ž|Ӿ_">|0P٣棋7m2sv1 @Por*%`ΩO?cr~'喥9EZ }/ͩ^YT1S/oT1kC7S)MTLrNLmNEٵ17SRfCS+l/) ͢ioooooz7~òOnJF%3Y5Y5Y5FMvT2YX9QiSMڛ;7%WkdaWkdaWkdaWk6kܔJ]]]aTыW#@~\9/*#@} @~r7CqtʑqtʑM/vym6rZ?G6o)s9>100 ߤm6r&Lf 7eڭ\%I^1RFO0 DQD)Lqo;??$&I^)@@I0Q$ tYMUV~ug(2N'F )s(\pVqj')=g7V08H;|(:G \1 D>sdS[p 3EQ$ =PD)Lt-43M6aoVp3ϮKA|BI0ŀNDۨc;0y~2][w8$R 2`.DHlV.nQ$ Kwzo[0 D$ %Q@Pe VnΉ"+G(I.KIM6ջWw8~)s9:-<(\|#sRE N )s0pI0LC8ar. .{ws'[pIJ#sRE N )s07F(`|s'F% تUr>0 DU+']H!݋w8G%{S-JyB0 DJ()´U+'aPsvNb`$Q S)8Q8tŲSt#`K%I[ŹҵN7ٔvp"$Q S 0'Bh=ss pI0\D;Ou,^\G(` :c63DѕJ()r`VqabQvO$JafԱnʙI*|zQ$ <'و N2ŧy {KVaRasO.Y":G \,@i]DuT:}LǥH$DP]p> pت)v;~?r 8G=3 MNq`|ke af*Z/__V|it /f`.>~y/>쭢/;r&p',U?7̷/!U'_rG& &'$OSp"{&VS | ;KidB6_s5 aX#, 0_PD1/ Svp"XY)*K=0<$'vd9;86 c0S* v_rFXu#Ē V\%< xTaMW#E,H#xUf{BOLW,3N{)DᱛJ<ЭJ<.8|AwV$' O`G)gp"Lc vL{|d)s *Z}HFQ\YL +㔬$X@ e)qJ8|iP|Evt9GREP.HLP=  !"#$%&'()*+,-./0o123456789:;<#\`,HEu(p8vm4⾯SedIG&]ʋ`K%Y S&iy5#9Tz ,.dBs/zJP}r ,.dkH.TӵkκJ蔉fq8"PC z]p~\S 4y`%tA %Z Jo5LF }Tk?zhB %I/O2kqa~hm~H3f+O|ap"dו#p4]q2NvOlJ$*Q$ vOY)ȕ8%ap"Kas Dca A6|'Bd$Q Spp{F N7ٔc<_i'acf"0 DU6te@ﳯV$@6xH`5q'¢vi[EqV'|'Bd$Q S X#XH(c< pijqp|Gb ٞؑ䞰F[`HlLQr>` ,ua$#d w, ` !t ݊008pgXh;6Rdc?8gafz*Zl{JV|pIdK.dCl{lr)Q$ D޶Vq~'w{魢U'_r(\\Aaox|O[P|LjHt7 1nZ0 3Em4 U'_r(\8N; y٢Hrp"mhLÒ KvOؖ`J! U6' WB6x8;$d8aox|O[DǸyp3`$NDǸyP7]a U2L[0 3E݁{]e3afz*Z]F[ENQ$q!تm;afq MWʶ. zsJ4 9\UaB,[@UglӒN٘|st;FZ)sOX#͐c#t l.uLGY VB0H!s)0hi%tٺvW}T@&#F=x$ݺvW}NF)a,F(McHNuSedI1SJ)E`Ğ ~`VӕW>b4oߕ5 JXrٺ[oP#ra,I0J$K.d‚\9 ֵzWV >\9 L>NXr!cN-ݺ_oi+)- `F'H%2HP ]z0j(m]ܯSgE)+h7:ER ,A tF껶J[~Hi XȅvFt=Pox"K.d`fH=ra,䆙,{h)>՚K7~ra,0%2u,| |t3OXr!K] L7:a`Ʌ \z# & ,Fdֹk?HRȑ\9 ]`\빆ֵzdIѧZӕf`=c`Ʌ O 1$@ΚɐzHaF'HzO_& ,a >M][Oi$o]ݯ ڍNf}5]iXOE1BSV |rgdH=vY$ԧ\0i$o]۟뭂vY$EjMWq81 "I#\ȺR"ֵ~. 5}80B#ra, Ha.NMHRm~BM ;g!G(PVCi+.BdI1B#ra,][e\Ci )\9 !R&l][0V`& ,a&ΘkJOSV``Ʌ II00m-u!srGk+`#fkB.윅`4Ќyڀ\|~z  3E`[7nНF@Ɖ"|'w[o'Bq36V*nU KKf*l =Xю0K (XMKށ_9?y7r:4Pdp"H(f( Vp" ,S0]ю 8`H е$S"m", Ƚ N Mct ŬU,J()Bt9Q `L;g~Ktm3]0 t'B0t7UCЀppA'31{hv<$B8DE!p\tJ(޶VqiM,eR)V,g_˸QOȦIݡ(,DxHp2. chZ26* Nٞ[DSH0`LDMW$`EI:|.[LWp"dS (,+w!ie/Q|ZiȦ+8TFOD,LqJV8F(@"aE*Z0jh7@{'QV+It)y&Nb`xDǸy RS>.0'j,u<'B 0STc# %y>@Uc0vcs)ٔvAWLD޶Vq~V*"9L!MW9@j'p"dShoNx 3Esul\ 1z$ѣU%Ix(䎍`G CrO/)ت(>=WN8tc N7`@L< `zqS8'8y%*|0j# U)w pApp1N䎍HbI1yD6(9{hDJtLMWTK0]^$( q㓀lOU,C"LQo[E8^|ח/bhɗ1v Nq`ؤ$kJ:1BukwfRHi9Uvnt200SeF'Hukw3}8BM% Ni8K= R|kB:Ӽ%ORH.xw4b8a3uM~&șl{Zzy?, 0z{ҩՇD.Y:G \i2NY)*HbI< D{OoDG;wY )(S(-ݺ_oi+)- `F'H%2HP ]z0j(m]ܯSgE)+h7:ER ,A tF껶J[~Hi XȅvFt=Pox"K.d`fH=ra,䆙,{h)>՚K7~ra,0%2u,| |t3OXr!K] L7:a`Ʌ \z# & ,Fdֹk?HRȑ\9 ]`\빆ֵzdIѧZӕf`=c`Ʌ O 1$@ΚɐzHaF'HzO_& ,a >M][Oi$o]ݯ ڍNf}5]iXOE1BSV |rgdH=vY$ԧ\0i$o]۟뭂vY$EjMWq81 "I#\ȺR"ֵ~. 5}80B#ra, Ha.NMHRm~BM ;g!G(PVCi+.BdI1B#ra,][e\Ci )\9 !R&l][0V`& ,a&ΘkJOSV``Ʌ II00m-u!srGk+`#fkB.윅`4Ќyڀ\|~z m.|aK;[]^yAңƟ%5(ުِ #!%)ߑG-¯*OI džITiW3~M,Ǝ!AGBB yXϬ#/?@e"UkrKZiZ!omI_[XoS*ڧ9 TsWߵ"/Zirƴ+8$kJNSaMUce^WHKp5+,]C_4;tbI1黱l{WROS3¯fcM,q*ivM1p}Ͼˁi)&~g}{]K)-XMnJ6nȵ&e>/]H쾄L7ؓko6(0:cb?j6v*zEc]!wmW][3+;bo}fcܒv>B>.[ Us&ssSmtak-iv|]6Y1,ͬ4;49KVH՜s_U7gi5vn!A|(ߵ"/rKڹURRX⋆X9K}Uo~㾤x([;7Yy/ERECnI;7Yy/T4tblT澪no%®;¶+{bV^XYUR5s_U'/rK HI|QaMz[ 7vnZyXTsB>.Ĭl[(痏17l[;N@ U2wYf!q~( fU'f!` hw U:];˾TaM:I^X3"{]K)򢅟'ﳷjE#m1h6v-vՌ_%Q%E;[RNjl[Z fpfUHKjY*Zdk)E^}V]C߹NJP4;ċ_ @\!%X_ek)E^ĬgVrKbV gVl @/s_-ߵ"/Zy>{ƮY,Eۑq욍rKTsyajtJrpdoŢİvl[( #l*v>Ҿ[nb_so #lE; @\JrPL l95w-ȋfcܒFaWaۭ$%{bV^XYivn #lIh禴o,6VR咽4@kW2+%1ׯFyY5ԗĬ~05+AU U.%1Q JV[j1+6iUw/ #lIURR,%[5v>;¶wl{.f¬ؤ_|v>6PHK?+A5;4/51$@}y@BACEDFGHIJKLMNPORQSTUWVYXZ[\]^_I$=ꟛDz;;""<&zfeK1Ii]c)QG}q|w &R[oLICfqϬl$=x{ͰufV;"~Ucqճ!s:.~3l-p~?~ǎ:7xz@_4;7!Hi=3®k%ZRE+]jqaT[o%n@ IrVcwmo@.Mo<[L1!Q,\Q޺صL69R,ObNG6珄q )Y[/?`YqftBBXqи-R,= )y=B>q?NHHq&$e{'$ev˄l!x< t턄qQ7!(;HZ$u_\3+;UqQ7!ĠѸ?`iޯѸ?8*kL$ίk'$k{}˄HϷ##~%&H˱ |coEX'$_UcӸ0 2?AGA[e"yӃÿ ɛ^_OSVHެCm~>]h[e"!yF2y7`_NHހծ ɛ0iuHހa9aBvmLHHެL08maBvmLHHެLe^ ,8LHހծ ɛ0i^uHހe9aBvmLHHެL:$o97`kfBBfmXulY@򦗁MoTX'$oz//eMH3niM/OvB7*H7=87[&$oz//eMHHqQwԁomH4URE]Yi Hk_;@v&S& Hr,4-vBr_UcӸ0 2E'H~2YnY>@խV_`a[$o( ɛ;)õ[} N[ ɛ $ozHHӺ"|\=iBDƲw?|W7뙕=ve&?8Eͯunvͯ;B>?$ $@ : t"mwV8GJ7NHu]𵭎 KEr7vW#%mu{ P Pj'$ k^o=69R%vB'|&$׷t2:HHuߧ!jc?m^~qmhsgi٘j'$$MHHHHf87"|\gf)M^~5=$&?b{-J{M#|\'mMGcoEVެ<L$e{|n,{~۽Y3~a}coE11+Y1Khf)J|}/ߍe/]oP"oƗ/5j h"̙Ϳ7h;!oW Dߌ/_^1v T턔tuh)-R,x6wy=,er?wx~s7[z珔!ןXk'?aU,o{Zby'|\Ţ?|\R߾1X]-ڌb}g,x K omO[e>K j'$qw ) )O_`-Ru_`1mg_<͛G?Hzg_ qlHzHqQA?seɢ >W, _2E ֋dQǡr ,*K$o HYU, _ͪ,Y 1fW, sl-7+a}(? P Pj'$ozik_1o'$ozik_1o'$oz&YyGחԽ|iv޼Gf>A/@'?Tc='Ȼ fU7+]i2o/sl#l ɛ R(ͯ{-M/cYۄ䞁h⢸ؐ2˶+!W7;];!!¯SzN8U&{\}Cޝzi[$ozX;!y_[:vB@B z!X 7[Z}8Vg,5;)?nqݢ5;)C>?l!ןor?_ke{-x,ۮ?$&#VB>ۮGY5[5;<οqmvǎ?$e))uvݟ?|\g\[|Q}լr珄 ؄qQuErn,{o6v;f"1Y*@g,NH 7[&$i: ᭎q[e"Ej냎ֱɛwcKWط`$VМE RHހ/g,9=' {;Ze"!L fCunpx ="yrmoX ɛ^ڀHW [M/.N鬭ɛk{}KNHj̄F2fɛ^\=4g[$oV-k;!yӫ]0{ɴꐼEs ͙ɛk{}KNHj̄F2w:rDAAr"yR6`&$ozv&S\e9\Y(h_u"yrmoX ɛ^ڀH&l!y pM/. HʒEAGkyʵcm'$ozkfBBr#aWH_ఫuH m~>sMuHހͯu 7`kfBBf%duHހͯu XڀY #e^ XZkvBvmLHHެLs됼K_NHހծ ɛ-c}:$ojU L}EuU_`R;!!yJڀe yӳ3~qiVJ|}J턄F2͙y7{RJ'ۖ>w7լM/m~}vж{g yZq :vfY,cҾ#y\Խ>Dr_Uw~ˤSvU&7 u:"V3!m4׼Ef廱쥫L\NHLߍe/]" ]@r^YvB $)s%Z$&?b{-J{ܭ-Wt`qݟt~ۛϾx9RRw~HzHHqIQ=_`x,ۮGO&#Ʊݢc&#VB>ۮGX;7珄I sA]<.$ҜVHpxܹ ]<:NH>A :vfl}y!1|B7`qQt4 :rDAA~myj̄J7+v&S\Ao]07 4u//EGX;!yӋ î׷ uEA:ֶHެ\[:vBu vEfRыծ =d_됼 }Cޝv#Xa!M/{>8\GA8zomGuz?fc_)H6%@=)?7ڵ3y?Z={RZ`NH&FluX.&~5#yӋo6vȻ׶ Hެ\[:v#||4 ?$0j:ozG.kbkzktNGYmf]wGח=Qgywڦ)H6!M/{>8\GA8zomGחԝ:Ҹ*_vm!׵#yu&Hlw'm׷tNHެ/}eѮ?$ozH-k;; ;_{GBr2CXUoOM,R_;!yӳ{*Q YˋfcYvBr@ $׷tg;!e !ٽvE z҄wcKTHNHnRҫX* ɛ5 ~$vvPvPF+FP P ^} ~.e u Z -  3 p FFPs'NF ;t]H~^ t]7v<t]%FF<u]FFF<0r~9v]FFP&F~ar~zv]FFP&F~ar ~zw~0r~9v]FFF~t~ v]aFFP_&FFF$Fv<u"FnvD:Fw vD:FrFF:Fu N~3~u@3Ƀ~A;u]Ã~u F-FvvFFF<t~tFFvv}F=u]ËFFv<tvvTF=tFF܋FF<tF;Fr vv!F=tF]Nظ]v P` PF]Ë]Uv PPP]URPPlv4vv4vdžF$P&F=u]dž ~~ ;F| v4<~u? uFv# F v4t5G v4=u vU ~ 7 P&~uvtZ uPPOl3>Z ~@3T T FF;F}NFv4vt5\ Pv:F=u v4vvvF몋]Uv^ PP]Uvh PP]UF v<tv4z PF]Uv~ PP帊 PPP^]U FF>5 t v P\ ^FFF=u~*t~+t ~-t>\ ^t)6\ DF=t~t~t ~t~ uvv PPXPN\ F\ \ ;Fv6\ >\ D~*u~-u 6\ F\ 3\ F^\^$.[:\OfPPPvv=Fv<uwFFFv%,adn + PFF~45 v4FP<: v4D=<:u v4<>:FPPP*~~FP~tPFҁ~uhFFҹ 鍎PP:#5 uLF^F;\ s4FF$F= sv Px v Piø P]]UFFFv<^uFFvA\ FP1FFF=u~]u~\u9FFF=uvv P v*Po~-uY\ +F=vNv<]tFv<t>6\ DF6\ DvFFFv%*Puv*Pc/~]tvv& Pn\ +FF=rvv9 PP~uvvI P:vFF]Ë]U>\ ^r U P\ \ F]Uvvk PP vDPF+FP PPi  PF]UFFvP^ P!&=u P^ P1*F~tvFF~t>X t ~uN>X tGF>R u=>T t~tvF>V t v P ^ P P ]>R t#>T t~t vZv P ]UF^ v<t^Pv=t]Fڸ]Ë]UFF>5 ~ v PJ vv|:uvP.-AvFF~ |]v<uSv<.tv< sF>v<*u~ }FFv?vPvvFF뚸.Pvn F=u]F ~ |]v<uSv<.tv< sF>v<*u~ }FFv?vP=vvFF뚋]ÌС%>si2sa;r]؎>R  %uF<t-t(7AF<tu؀< t< ø4 P~ PQBZZ/>U t U U <t/t t<t!<uU XZRP u  U F P 9X[SP t SP[CÀ>U t U U ñ tñU U XZRPáR ZZ[SÌUNV]Z[R3Ҏ&/^. .=t ;t.T.d;uy ;tr <;tr<õõUFPyPOvyPG]Ë]UFPyP#yP]UFPv]UFF4vFhFFF<u~%tsqdžjƆnƆpƆov<-uFov<0unvP`<t  F~t~uF3v]Ë]UFfPvv 5 =uF]]Uv vvvF]]UPRPv+]]Uv]]UvFP]]U f~~ ~ }~ v ]ËF-46^6^F~u ]Ë6^DFv 6^D~u6^>tY~u~ u6^>^t+u)v^^06^D6^DF PvvF-]À~ uG6^3ұoFV6^^0t+v~tFFVn^~ tVF 6^L 3}6^|tw6^^ t u!E#^0PPz^ P!Pi=t ]F~tN^0F<uF6^D~ u-6^ >^3ұxڋȊD3FV~v FF6^ >^3ұ:ڋȊD3ӉFVVF^NPvvvu ]ËVF^N+ӉF~u:~vFFvPv=u ]ËF)F뽋VF]ñVFs^ D!6^D^ D#^0PP^ P!P^06^D6^DVFFf~t(^0FPulFFF<.uFPPjpFFF~lt~LuFFPF^C}x~C.iPSSSSSSSSSSSSSSSSSSSSSSSiSSSSSSS%SSSSSSh<}qq-h4ދh5lF FFFPhh4qP)lhT}*qq-hT؃hTlF FFFPht4qP)lhhD$<tqq-hdlFPRF~Eujhqhf4~Fujhqfjhqff)lqfhthhqq4ƈlLpudžjhh4vv<t'jt FFqqjlыqsqou*ll=~nt0 NF֋qq~<tF怾otll=~ FF FFF FFF'v]UFv4P<tF v  -0F͋F]Ë]UF;Fs'~ sF0F7v ]vFP6^F6^FD6^FDVF]Ë]UPvF~F-`F-56^^ PP ^ PPF~uF=6^6^D6^D^06^D6^D6^D 6^DF ]Ë]UFF~vn~v]ÊFPvF~F-`F-56^^ PPAF~uF3~r@v^ P#P6^D^ >^t!u 6^|u6^| t6^D6^L 6^D^06^D6^D6^DF6^F ]Ë]UJFFvb }0CB>b }.C0C;t,H;b 096d vV F>b u.CCb 9b }ۋ+F]NCZ^V C t.C0;6d sV FC;vECb y-C+F]= r 3ҹ RX0CÍG;d s)W 5r"V V 9vƇV 0Kyd V 1b ZURvb ud V 0&d rb  u r _b >b u5 ~w.b  n9 csb T0Q Fr ;YYd V d t=t mUva}w~a.EgPvF=uF]vF=uF]øPvbF=tPRPvF]vuF=uF]ø]Ë]Uv ]]UFfPvvU FFf~| ~ ~u]Ã~vv ]ËF-46^6^F~t~u]ËFF6^>^t+uv~ua6^|u6^>^t;u v]ËF;FvFF~t)v6^tv 6^FDFFF)F~r(v6^FF)F~tzFFу~tl^06^DP^0P6^F^0F6^DF;FvFF~t#v6^tvs 6^FDF)FF+FFFvtFF;Fsvv<tFF]Ë]Uv|tvvB=}]ËvDvPF PPF~t]Fv~t ;uu$F~tNv<uNvFDvDF]Ë]Uf~}~ ~]ËFF~'FN=tFFP2F]Ã~u+FN=tFFPP܋F]ËF-46^6^F~s]Ë6^^09Dt^0>^u6^>^t+uv~u6^|uT6^L6^^ tu!E#^0PP ^ P!P=t]Ë6^DF;FvFF~tj6^tvv6^FDFFF)F6^>ZXP u P XtZYQR ^t;u r6^>^t;u uO6^|tE^0PP6^^ tu!E#^ P!P=t]Ë6^D6^tvv6^FD6^DF]Ë]UvPhF PPWFvDvD~t]Ë]Uf~]ËF-46^~  6^<u]v,6^ ^PP=u]]UF-46^6^|u6^^0t+ƈF6^>^t ;utD6^|u$6^L^0D=u6^D6^D:Fv 6^DF6^>^t;u r66^>^tu 6^FD~sFF^0^0P6^aC6^>^t;u v36^|t6^t >^;us6^>^tu 6^D]Uf~F~uF]ËF-46^6^>^t;uv6^|u6^DDFPFPvq=t]Ëvt ~uFF]Ë]Uf~FNȋ]ËF-46^6^t LJ LJ d ÃUVvv^WVRQSP y.  =Њt9x4=wC  D D D X[YZ^_3DDDX[YZ^_ø- PkX DDDX[YZ^_WVRQSP yq.  =Њunyf=wC Hu?tȀ䀀 ĉDX[YZ^_ø- PX DX[YZ^_3DX[YZ^_VQS y.  ЊtP|K sN s ȋºtr NF t؃[Y^33[Y^ø- P4X [Y^Ì؎ VQP6 ƚ DXY^Ã.  WVP6 s|.  : u t ; u =Њt |<<X^_Ê : u ; u ; u ; ð|<<S Њu [S .  Њt[=[3S Њ[S .  Њ[PR3wZXPR3gZXWVRQSP6 . | =Њt6 Њu3 X[YZ^_;t1+ȃ4r +ʋЃ4sЯ џ џ џ  : u#  >^;us%6^|u6^t4v6^DF]øPFPv=t]ËF]Ë]Uf~FP]Ã~uFPP]ËF-46^6^t>^;us 6^|t6^DDF]øPFPv]]UPFPvx]]Uf~v]VFFN~t4vF=|#~t~ t FFF~ uËvF;FuFF]Ë]Uf~v]ËFFF<u$~ u v PvFPȸ]Ë]UPFP ]]UFF;F|,F^G.T.T.}.. . ..u Pm~t!NP PPvT~t#NPa PWPM)FFP0FFvF8vv P F]Ë]UNv~؎;ssFG]s]É. Z & ZZX& . & ZXP*Divide by Zero**Overflow**Error in Floating Point*vWILDEXP.C]  !"$#&%'()*+-,./012o3456879:;=<>?@ABCDEFHGIJKLNMOPQSRTUVWXYZ[\?,Z0ў7>!s#NX|:[71NWh'U uWIq{"NO NkxM1L>U m~&8]$rp[E\W&3.?d.cg\ 5ܪVQ'̑C2\n]* gOٺv YÚkZto*쀟%5DCUc®s'Q_p{ΈUX<&*F9Psimø͡5~KJ["CT"8b8BϏ 6Gf"ؘ1r#oD3UWG6\DlFg;v4N.circumflex at the beginning of an expression matches the beginning of a line.'$' A dollar-sign at the end of an expression matches the end of a line.'.' A period matches any character except "new-line".':a' A colon matches a class of characters described by the following':d' character. ":a" matches any alphabetic, ":d" matches digits,':n' ":n" matches alphanumerics, ": " matches spaces, tabs, and': ' other control characters, such as new-line.'*' An expression followed by an asterisk matches zero or more occurrances of that expression: "fo*" matches "f", "fo" "foo", etc.'+' An expression followed by a plus sign matches one or more occurrances of that expression: "fo+" matches "fo", etc.'-' An expression followed by a minus sign optionally matches the expression.'[]' A string enclosed in square brackets matches any character in that string, but no others. If the first character in the string is a circumflex, the expression matches any character except "new-line" and3%N,u61NW\X3Qmb/gu ۅ=?;z3OZmR۴l:Mg)]=pa S%'UE_7qraɛn{np.ڋ8MU嬾zt͊8.h3\n#꾏vi<1g"kY3Ṱ6 Kt. ۱;&&Ebtc}'ҊycjQ[j̭6XVxmZu[fŞ}{u|z]X2u' Kۅ%PWXbZXWⶐ۬سoO(? K4/K/b>UX.,.@LMLbg oe 5_ЊuխfwUV>a "'2ճ=;gjO{ <'0fATX'>e~D 4˘(QFw9^ݳ+J@ah W;]7bMqkxݎ|NЅ ~]tn}[;rVwaMqk;붻vp3Om&#Va]X|@NM3p>8*ݎ?i{͈UXMhBۭ k{N:\]^'ᾋ"Py!p6~,AE>'nΔhI"vrܸF,3TZ L)7Q̍T'` gʍk@?SH? :Sn 4wuәO*7yAgM.tE^ViOM=KЪ9tg|k@?Sl*a_nO6~,AE>WTfPUg?Şm4u?U'?Qٮ:1eevU6!ٖ TThڍi7B&v?YY3Fn-ܕ@UMݸD~6L[h+꫑"Lkc?O#.@Ζ=oDtV3(P4OAuәYYDn ԉ&꺟mh3:'̍T'4Fk4wlqϛ'8&u |PtD*Zi7.hgu?"LtuO*eL{u~&eFn#D6~?Yn< 2+YYDnB?MgnOdAgu?i2P'~&2Q+|D37'RȂ~&rܕ >@ en#9U5״!H"PUS+%g|O?uI#\#$a]X|@NM3p>8*ݎ?i{͈UXMhBۭ k{N:\]^'ᾋ"w^Oy ,o%8< ^d=ssNOZ2 p齴ܧ$CΉ_5wi{9=p=sdz>!ňki[]dEiK/HC5/dXӺgΉ#&|g r\P:5 _ִ~s/u?Ob5\&Nךֽ5-5od~XsٺܧtDy 'CUqΚu~g@Rƚ}t?{}xY0^^֕׮/뺎46Fnƚ.(ki[]eH;+iu]Gt#nƚ&''0D#XӶL^}Y?5ִ8}dz>%fQBASa'^ "PV%Y}9\N¢?~o' )~e?2iMΡKטp; , Uګ 05-fgB tjN|.kx>x+,i!=Kb<''$Wِ>Uk$ki =TT7:5^!P!: S)aĜ,[[b@!e!ީU@ ^ ~HvԨWaM*V觗+ r' =T/mz24xt4iKbv2=ʐ}J w? #5ZDLiӇu GRID2CONDQC>GRID2CONEQE?qv8GRID2CON.DOCk  o !"#%$&'()+*,-/.0213546798:<;=>?@ACBDEFGHIJLKMNOPRQTSUWVXYZ[\]^_`adbcgfijehuev!uYCLN42k<t]k Vj5si644 (Śwdh/֐ű<{ɜ\\(Wԛ&ܘLf5X/nhwki^)#-yd}]ٯ+kiu(SEiۿ4[ Yb54]<ҶEL9kZ]izr<#mNg!ƚ!o>qymuދ߯!T> YUX޷Psf;kZ=ѓHVF4魱%/M7Y =#mKt!zz)pڬiJ'>bUSKeִ SO, HXӺ Mi[R#.b\Ţ7=y:)5ִP8Ҷztȗ.<;stִ?b\PAGsg, =ff]'5ִ:KVhOQT~fo5;a,Sj@;fu*XjM{`iӯN52;C*J?wx1W觗5;%fYPvfP~f95ňkiW!YgHB:5rC*_D쯗eXӺ)]ɣ^R ( ~a\VȒkLUuiM 8'RœL\PK;Ν!Yog(%NkZ95P3S5ִ&''H>~]5id%irE'| \/HִA.^#(rk>~ !\sd#kHnkߐϬ>Fe,)wPD) pdz>iaĜE M3'PMƚWZf]|B(XӾo)|B(~534`J̲ A0.9߬j3> /%xZP8iP!Y0SKŚ S*m8)CyNxJ~ L͂vX6YR,MMS~UL ~*ZSXӲSrY13Ѭ%ki_PkS)Ω%| OB5-O(0ꇴWgM{z渊It\lG?\RX~g`H1vfOU7PLeJ(ִ%st4W觗09ާt!YӺx{.Dz_{|\׫ΐϬi2Vڙ?E3U 3a) 3TOI!Yc5!#]ם&'򯬱uK#_~%_~炚: d~MNOa%?bMUL-) L^!_GCӝYWR͚VtH_O0+xiӯsf=xAyd}]ٯJ5kڒ'p<> gO͢9ق2ObYzeAYɣʅj*)iq(Pqsf~258+dyBuA7'^ִMNOdz>!^!z~\r'Sb҅5m "-(>'R58Q4=SS;dJSi?Id5p}JD)%.VAXYFoz^)Β@LiB tj__~'i )^?{|eYz%g2=ߛ\uN4Y> įd5;}wxAz]'NNDB\}PbŚ AWz$K;Ρi1[Ӟ OͲ^O<J'Tj*vhfY'3K5-)դ?~<X'N.rQs"~(kߝav5-xgZGוʿwt@@ɔjS&YvevrCYw羻 pNtִ>aDmsϲu?9 ?\,m ~ @q=> LӫW1ֻQ&& uִ'5d5;EK.'^aw2=ʐbwxY69ՉΟP~͚tfwr1׫q=>˺OBkZO.'^aaeJrVHN0;s/}H/u2}]G{).ΡJ{'-xE;ִUL-A,gNO.j;H8Fxo,8^ϜL\v1ǻ?fIn#Hq9> R[tT#Hq9>M&A[3tc)3''$8Fxߚ$8FxQ?s2}rQL#8=߿5Ir1Nj铋\68=fR|R/gNO.js\A[3W58^ϜL\*c)wU"R/gNO.jsc)wo\%BAEEmd,8=w[32IR/gNO.j#1ǻ?fd8FxQ?s2}rQtT#Hq{fdQq ~d6!8=߿5+AEEmr%8Fx_oJdq ~d6q \I8FxQ?s2}rQ) )w]) )3''\A[3k#Hq9>D 8='f$q ~d6!q 8FxQ?s2}rQ,8=oSE*% ?ݗ$zZ§0}3oM2P.U}`Sƚf~J(U}??PuLUMAsJk0}3?%5_({5/ YcMs"~(u?w1;.Œ5ִ_7`ࡏs'+tS:q)\?)~|diqjCY1SbDm^3BP,눹iqȲ_ e\Y5B2P5*@^aJ)m.Yg<(YS>˚a4d+y"È9 0J99ޚ6(CYdk\//# k5-|(Cnr2}r tgE_p2P㴦J̲L S CGr)o5ִ:~C𔡬zkiuu?4w )CY"kpB?'Xk c]$^9MMͺshj*kFvȍlz3547698;:=<>@?ACBEDFtGIHKJMLNDPOQSRTUWVYXZ[]\^`_bacedgfihjlkmonqprtsvuxwoyz{<|}u~.@vKG?\9A^4|8O L3-E~%$ ,F/w'm5=]S6l;x2q U 17>!0*ZW MI+(:c_&NyBTYns[g)"iaJ#phR}{HQrbkCjVXz`dPf]-wE 0Y#zYCV"DVY],7AV@V>DVYocꂑյ 1z5z-!oY #6l;lM6vnL5mxv8M6nYl nF6d;6cnnCGg{{64k4ے6\o&p۽n6tocMF#ٍm݆Las86{m7mhhEpoo2v8݆nFHm6as86{޷]Y7b!o966~ocjh7bsmñpw:Ʈլ\oGvmlܷsm?5ڮncḍ}vtnc{Ԭvݷm6pn}m^Yɮݍ8F:nco:m6~5k4p#w}s߷ck5k4ٍ؍8݆Focչ.ihF8n6v=m5k?ḑuIʩYm{:nm"ѹrjhkv#}unCFjh{{Hv.ih{.mmp5k]$g7qw#x׺f:nns_Y;n.mw#ݗhh{knnfp?c=ލt_9whhٍtHǍ؍p_$FFٍtv%x8nCFFo澑vﶎYm龍}u۽:qFoc}v qfv#ݷ}v qhh{ᾍ?rqFocZ} qwݷ{ǻ.9mhhkv#mvF"Ѭץ7s%Ǎ؍8m]97b7p#w5.FoĮ7bpv#5k݆㺴KXx7pv#5k7ui;.mFhh7EK8kvYncHv_̐BVg='1zw6N 8w `u'` 8Gj'` 0=>ON@N=^N@ OȝP vN@;'OPN@uL `5k>j2&pM`Lp@t y &P x@ '0r@U'Md |=|WL` t@xL:[@:`uPu:`NthՁ:F(ӁDu ipm@NjcX@ `p4<=@By'Tpy; Hd<P: FPHxo;x+:_8v@;`bA;Hx;뀭;Clu@;;?X?,~?~0@?@?00Wh[?8gB) B@L!p&&!{@B`L(Fp@}B MP!@K0 O!p ܾ | (n^do{ n>mn#6{m`n÷@~wu0`Cjs` k`8Zk DI hk 02 05@9 0Nho4s  `mPn66 l `o@"@P @e`j5@D k5h pt pT PP*j=bk W.R xSSYl5@<<,V=nKag.v[ ~>twRnKag|m)L rR7ز =Ӆi?a9)L[0o)ڊ0}ݪ sɭY -h0|v[ ~>tR;ݖ´0ݿ8|o03LRnKagn|R3-i?ao|v[ ~>tgv[ ~>tm)L |YFqK;ھ1L-i?am)Lʙ afq>MRn-v.[[ݪ s0m3W|v[ ~>tm)Loxr~>th-iE1Lt|V -h0|v[ ]߷$L,·ymrR0|[h 0[&ڭ0onv.q𴩞Epܷ$i8E[ itVa DsU sh{\T=~aZ19*u sՋh{4;0^LSl"bDDD Lí,G03Ls9-i%"V"-'d=H6a<-PVWԻDĻmOZHa+WWw,m\Ew= KDrrQZ~^= KDrrџW+0zfɗxn?oR'گܫg<=~a|w[\.n *گ|l_%_"ݖ-^Dw{/ wo""=p9?L ]RV\,Y UNu sFhyE檠b KD|v[ ~>,#}cv[ ~>,۱R{nKyPMx' <@it`F&r>[_A.}@s 瀕瀣2zfs@s{<p:\r9 yqhzy8}nv~}7@ o77pP7o߀o߀߀A߀v2Y߀+n7p%n 7 7X n` ?7Pbn0 h>prs+cncD& 0bagnm03LsfLD03LR{ mzR vBnm[0okE|~ݢfyѶHa|0]N´0])Lhӓ´0o[th"YpR.uMO ~>tnQh[0]o{eIag~tmzR vBnm[0߿RѦ'i?aa(Y^-RȾR%´0>nKage;8~ nKage;v[ ~>t|Rnm)Hfq>ϽTRGm)L7KAœ6a<-HaPg4(j}=~an)L~ZՇvKWOarSWW0fajngef'n~ s՗h,;~iW0WDjKWOa>XarKe{R6y^=i?">)| sh´0]! mzRL- a}mt N ~>t 0gh0][th"pR3M03LR aN0O h 0cѷ o|z0]{X 38}F,\%0W7_Gm)L tsݏam)L lnKaglv[ ~>th-i?a~t5[thA 2m)L Ub0] 0>~t{0m)L ~t5[thA ubRGm)LL9mnKa, s,·yj@ ӻ2.Pd0TL& 210昀>&`P G|T#@HD~6\0~@̞@۞&=@=ʞ@kO?=/  4(z dz='='>wx='' xy%O O` ?O&FFEPD#D"K"[8*<`$8(GG W"WxKP@RLo'@` EH#Gqh&% "EO ''N F+?v/(j` P*#SRPU|)*wf H >cP} >@mX,n@}@}`}`/}@>t< L+>q9\>x}y`@ Xv=T<T9: ؐ !u%Ow$(JI%`dI$% lK0cwsS0Ujw#r y\[ oaVsaNǸ7Xa܏%cOA 3V sea򌆉/[ݸꯍh#l#l#th-i?a U-i?aUQR{eU-i?aT|v;|nKagnv[ ~>tei03LN-i?a|^D-`oz<ܿVs[ nKafc)˦mڶUk,\mp0fajS0>nKagˏv[ ~>,/m)?mg)yh0݁>Z Y)去ᄒ?RGׯWtGm)L M R0a8&)LDU-`9QXt/[uaӦʙC=sf- s,·yE[ Z,SE|v[ ~>,#mݖ´0v|0|i0-wZ ZӝUh^NX)"LRnKaV,0]+0MO ӥNIa6=)L׋hӓ,͢5,h0gh0KaMEZIaODk,mzRCwR#iԉ/fZrB;V/4Ff[N\CZSюiSLsn&U>,_U޽"|tUF,@WE,YE|#xLV+iV=~a5~0u4gj"ڲ =Ӆi?a=)L ||i?HafKa i3LA sHLI<<aTce]o=#?.[D[va'{03L i3L-i?a}ݖ´0mݖt'lO=L [ afq>ϭ%)LZݪ 0<ֽo Okyӊb=~a6hq'Dj rBw*{kD-]6´A"m¼vy!m$ u sUKe{xTM~a^WOaڏm\.+0`5v \ݍOa1njt,Kz~GYޯKVoBw'ľ[N\gnm0 3"r+R3X ՎR-m0] l?i?Hav[ hwFv[ mKۭ0z&g.u~,R./0[Œ}K(з.%ݏaTXF.[7 3@dIsRbfKUetajq}¼uCۊ0 3"LRb55Loj*ڭ{ m+zŒV[N=N==c` $L0^m+mfl ݦUt5t{ i,z6 XӮҖa~W0}X0W){aR}K]XtVtC&tVtVttn ;0Vp[=Yagb?Haݖ´f:իt[I][I÷A􁮊gn#K@WE,ط.лzP>oϭEO2FԻ~]M5'{wnpI m]:f}´=a4s+ڲ|m_-0f0/ ô퇩:]>~ϭEhݦ:#Dt6Й6mtEϜ{LZnh,wE+{D- V 20ۊ0 3"LR6ջXjn[T>z3#P>7o]Jlt20 ¼uCۊ03 O;.%ݏap:g]Z܆eta޺mEO{Cm)L@=#(ܺmEO }V>z3['Sʇm?Y20;\U´=avgD m0{}Z \="[7 3uCۊ0c@/z.ad sZFۯ!2I؏tjn:zMWc?қTӱtDr({Kfw%zRrG'˃w[\.dZQWOa_GׯWݽb#}]/)-w[.]S2[IWOa_nSM'}#o=lSf-'d W,rrqe_S G/̶Zc^"tMO =Œ[03LuOA -h0|v[ ӲqzhtVa %z va?<3 zô0-={iE1Lk a,·dF4<RHaE[ ZHaE[ R')LWPHa^D[ 6@ E[ 馉@ }#)Lh 0]֢-t)m{DRCRҚ+0z=)L;0^ i84-tkh[ *6_q3B03 ^Ĵ;̽zf&`{a Ӭhy*':Z_LN<sʢu sUP1͋hy%u |nmم`´0]i03LR{h03LR{ mzR vBnm[0okE|~ݢfyѶHa|0]N´0])Lhӓ´0o[th"YpR.uMO ~>tnQ0[Ffõ="хi+zt'Έ0nKazwoO-nMܦ堖^nՅ9XN+g72p'Έ0>nKamkhv=%RXa7m e4&{aR`{a;j=2^^VբD=H6a<ٮmx< ǽTR`HaVRn}Haԉ@ A)L[ 6@ E[ 馉@ }#)Lh 0]֢-t)m{DRCRnSأ]}OSӝ=03LR{`0-ݪ s3ܰ#t`/a ~tw#v[ ~>th-i?a`Ҏ~ nKage;v[ 3N؝a;>nKaΈ0KE-N؝a;>nKaΈ0 wR Y>߈jSZS~gTN؝a v[ sIk*گ\* 3"LWP-)hs3N؝a)IhKavgDnm0]R.[7 ӝ;#,/m)؄&NQs& &,sVa^Ѳs;m,Wh{a;vaӓ,/ڝa5fَe*qֲ?v)݇MO hwF鎀ݢGRv Y^RD,Xw=[0fb{X'@w[ϼcp'Έ0}A E!L0]hA h0]% eb[0;awFv[ 3` $L0Ꭰm+mwƢgnøsO$*6<s;m:JnjG:֑>=@}WwcIEw?rC[Ff}[fܻ}jv;mH\`;͋1Dgq'q[0哊,h[0]o{eIag~tmzR vBnm[0߿RѦ'i?aa(Y^-RȾR%´0>nKag.˧ Y>E{X ~>to)&Zc)LW&0>~t=)F03L~tYN ~>th-i?aY<)Lh03L >D{'i?a}ݖ´0Hw0nq:gݖ´0vqw-%VY>Xa]"Oa~_[i[0ﴽ\N *ڋ0}؁a0Wh|-R.m0gBڲs;m\}agnemtWN ~>th-Ra)Hfq>mGv.EF}i mKۭ0oe{=nՅ9Fu| XN+G7}g.A lnKaftd6 0O?w7Hajq ߷[uaˋHU8`9mZ^9߼ Gm)Lw%$i8M)Lޣo=;{t'nF%z^nՅy XN///#ۭ݅0ib}E{ SRѴ;at'Έ0]&K´0ݿA s!x n)L-:2:hsgÝ;#tiK´RFmfpj^` $L0Ul6<^*)LWh 0]+)Lh 0]D[ 鎠m-tE[ -tD[ mTR.kHa@ =")L!)&Zaϣi/˖~vSfaj~KM{7(+tio=C[M[|M{ǵ,,oDeb?Lf0/\mp0}&0/ہaô~ rC[FؿbyH:?Ypv av0,,- VY>hb?m | ݇H& zZꙞp̑wc-7etaַ=aWi#h˃0'm¼lYY2¼Z:Y\-\/X*AtZOaR">,w,};\%z ΏaZnh¬o+zt*Gu 3vT/t>-tĭG 3m.# f|g>]V fKj]5K߆r9]Nˬ[5-+V2W{TT+\SunAۃډѯz|-}xS:蹌?=ԼY5_6A?3poEݎU?3/}.^˫E_'&v꛳cMM]L?AkGqx Ð^3Ih 5zzﱓԬN;nk]8: 5_7gFFQ C>reA5-M E2fk֓k3JkZ5Κw;4 U.f#kmkH9F@ʉMߠUEoʶk<)!zV)k۩ᷴ5ߺ0fk뛵uI䗾7Y=׾k[i~T*6|-:i@C&Ms`AA_*Wnʴ\ l;ԟ45;+~kh[۲p{9vpm/uCᮣn}<ꆚQdn w=]~6ҵee(s~D+%`dد~_SUPPGjtw4QmG;O,%=}3@38\^eM%B_Mަ^)Ix$ڍ=Re닼$\FF7$1 ܌=k>w9]jg_5a1saBD=l1 !y{2:\cuŹo-˻֧ǡFDvqywroH]\}WXKuy.zvc.T\Qnc0& MO.5%%ݸ3j>ȩZo#q6dG.ׄ<s#~_5Ʊ MitiGܚ\WoD\qn2= ȗ,(f BhPt---<-b j G Źo-L-[(Z(zPpBBq APlBBU E- Z(XPhؤm8Z(f BhPt---<-b j G Źo-L-[(Z(zPpBBq APlBBU E- Z(XPhؤmrG0wo wS<1]QWOwʀwص$c%쀒ps\WaaP<(g§\CzrYZsW1ss<7o95} 'ū+\*Ŋb|j9xW*7ud(g/yY}eeU'V֌uLRsES+wZ\_UT3:ߍeշ-/Œ|.b2BYm]^$x<r$9*}0%We{:*_6zLy$=L>4{=$H6=v T6x /7bt>xnF߸1q.껼n4z#b'`Tb'=XU0`Tw@Q.(yӇ1Yݝu3Rr~7} y>8z[jn:yc."o^igwwMmx=֖lG*FtƿL}P|# a_f>9%oD>l;*/\xi/^ p# no4͜ߛ哽vwer3śӛ*cD< gx3{ P| _Dž)go@$uWx //z4͜ znm`0~ZuЁSZzPe`. ajGMnνSb_4gY"T7ʛPN;}<7k_DžoƨDg@_H[y? Prrp{#57 rqֽ/*(+ʏzO3Vy!]J.yM]]YY֔˼G}r #{OUPV8KZKw̒>|0&]Ik9@k(OJZz=x_LU\Qs#𾘪 2֌1κTȼ[5j۶7 zxֻh+h[ ןDp]KֵϬw'jRBkkGyəo|>zfq 5^ڨ~zb7'6 Ts{b'g(ybP=@5'VBuUXt. Zwz-Faܙfz>}ܕ3 cƱϜ1F[0/T4tB$ES>)<&z5 nTժfcyxCE3?ӀQ'O3qo['~C}F͘F^B͹- OfMcjF,Tor{@GOu}Ğy[{SExOb9<VUW3U]#V#z<"./<(vi\=cJ^VjW[ Ms<߲ST/Z7O7/ ~z{}e `豂 XlŚъaqUQeůxqU+*3 ;,ϼƖZ=&X1_$^`[/0lK]s{=(|ύLR-Q঱z5A/zߛFѸAVbv Fo_T{{Kp^a8SBĿ&{Bi쭕#i93$ N'y<+cg"?!~3 x\Y'yjU%8.o_Ky_ox~~Uc81k >o1$~FX-oA5sЖ)_ XW7׉mfMbr Jq3"`74y)gB12,7 .Z3 |0qn\{yvEN軝SU@1n70(|CpQWW P]=+K/_ƞ ^)zGWW P4#g>׽+NQ`iɿ= ˅uJ`u+^=; cKUgMI<ԬkxxֵFdd e #Wq=޲OܓmxFU2{)x]1*]\iOܓm|U |}ZIXGޔoq+A,%5W?QMPțm'~S9hbMs gntx[rNw"{YȜfH02Ok # ;1X+(>أNoCT5T|?n"WcE68~\+"U̯ ߏX을}gx{^V‘׋Eq saHۘĘH0&ø"Rߏ t#P00+$\aJ7ҏCUs͉{rdbcȯJ;{eZ^iرdih_`u[V#^=FoY0]LHrыPk8)9\j .$H޲g!S+qFT2JM̻G^֤op!IGI>>o T;?Rf It$SoSGRT2J4O|=fE|Rj✋ I:HEəkU告"ɇϰDd8'}Z_UB'h9[[78% y=I.޾_Zu$",MVL I:ًw&8-Iy=[FF#jj%#ɥѦJj}XZ_$\crhS%qLO+L2U'I,A}I9Ȧ & $,S/bj}LɋsJ68[n5.̤^+WG*|T6G*cE&RK&)j8Z_߾}I9HQSe+ &}|єiI%ˡAG^֤2˷)uZ^_/ C 8rmoʳBx3[я =ʳ,;Gk|Vw{|z׹7)|ɹuoo>j߱籯\W ]0ǧ<]%~u~kwat|⼂_?ŸnŻ7w}j*7'?_#ֵF,Π9qG[kȯe"x_`,qhDo Ni5B|厍7Ύf<Us)6lP?5ƣڗμ/I9e=}n9BqW ּkͫuoU ꌚ7j'c쌀ᵸ_ [nijx//SŔZ=&/I{ 9+0,zas|ae7޻5lU7^M%ۯGQu>~!2>8r?Ϣ873BdF<U4o(Y:vCÍ|7hSa}Y¨fs+M>Yjֻ±ޕp5ʢfE@Nu1J1^쏒Ey4=3d+#:vJk5ߨf׿7sJscmCr~7e"/_zHk׽#X2f4q]<8nޗogY#cu7c%>ֵ Rr_/wKz31Δof㨹N8oc=2zv^1V_.ͱc=2ܪbsnuckI8_6Ùbso+p {JG:cZ{9:s< _~e2pIdluU*~U&#Cԋ?C$́;Woñe͚!%㎣3<#ckR9bZ_ϒ_wBYS~^NO1[ )/eɿcѹR](JVAjWPEfyMn.4y= CG SN n] 7޹5bj-+|ǔ4u)w3oz˺NwxYľǔ /j 1foĿB98nSh,54KBΊn5WY_?x8wx7[9Z+__wiWW(Ff\n4ngԉų0b\-gkkϨݞmga*gzpI{BWw1׀wQmCW|܄Y6ʞMBo:hBy1"kc^4M~yٓ+ YjHw?9xaq`įܽ7w߽{ݛnPc\=B?f???eC`oR^$3fu8 Wz@WXTY+/_MNWYWhQcu|884bvQEūnbD;E޻ i:-8>oSJ[Qlh[|w KeBZvQ-s_K\<$ ioPVv[qUQv{E#Gz_&.w'*Law+"g{#mc}IK'cw~Mn|:AEū*o+^\:;==3*?9uouCՎ9s1G>w?OgL{x?ףdxbouRA9 v]k&yIO?ť!M? 3W|4Vn}&?Eϛ5i]rvnDuN?d1:*s+\֣coD?݈)-SeKf5j\Ȃf`VìF;?FEf5j`0aV c/`VìYM<-ћSnl`WW׽[X+Uu[E+y! iw}S*vĿ5ʳl:*y 嚿y!w@._9z{؟GdϳkP(y}׽ŝaQ \[ͺak͝^~:~Fq?|9y#Sݰrj鑏`4⣶=F(ԋwO(S:Kc1F_cC^sxg) |/‘cE8ԵW,΅̯4X|uo}|˳uZ~ؙ/9\x'\x\"Ewu@x⣷vڗؗWfb.%yljW׽ErS^`:BAyWG= G?_?} w_M ry}U8v/Nk+i|u_|ufG^c@.^|̀~ƫ+5/(ܾ?^cfHc8YަSdnr屶ߛSɜߊ Ui}P/jWr>XtCoq_B6/Y)#KxTbq9nKq1YW,?<8T\ }?QnbDfv\sP]2}q :&<*.RkKw7:q71c}1@wkm^nVUR kNJMpc@ Hy1Yw ?\#PWXQ xʹﵜ9.gZJu;[#?/"㬻y_L%Pe)W?B?UA~]Skcu7\!r⾄*ֻ?8ǣKqsѨ[o95_ A~ys,k˾\;FW.gJxG;G];o^>uG5W! W,~0Ft@Q!srnYw#fQ|;s䲍1:Ty=-Ft4~`R=oC4 ;uSh(ovlM1*00>ve;݃4.u]wVƏiZ6c .awu,""3f:Y))drOQ''cu' |}$ܼ/*h7 -lyfOM]]Hy'nwwOD,7:Z*x9x1G\5jERCDR+ngضe4QS+Ix$X!"`fr~ch?qx{HTyqwWrQ{*Xk0%]-+'u}?čܤzKF2|C%ڟ]8]8uȸ.A_Qn|+x$vG>;Ngy4.Nz׼\]Ynݖ-to^gozk e>ֶfO\7zs.3xU^NE8AwoWY[_X{OK9 \t1jG\-Zo݃Wf1T>w_Oo\/_OU^NfAw߽{:zi9߅^@kk0QL : 6jVGwһHVY5Gћj:v<u95]_}U_gW[7~FrForU5|cԜn~;ݺR놣x62^X9#wo-c#0-dr \rE0 PA4: 7=06m,䝱:)z+s]z}poc= s\]7M}60jރo6YEB4ͼNu2ۿ-i<J5,)-) k7@ԧR!ɻ3){fǭR=P;T0ꆷҺpy,oFuӢ9nwp~o"~󞪤˽39rm\PgnV}v7 ߞV9 q@yq58H=\Wyޙe^/dTǭRֽ*F KUҾۀ*? c,W)zHy6xVjUxI\^uoJQIE_粱 1ܺGT8n^>U i1䣆>6 YN80ܺGT8n^%U֞q58qRyVra3nw_B<#|:wRᦏGPR!c'R ˽S /1 Sj{tR6#mVj]64,ֵ.κV!de\k9({#.Oә&o<󳙰i.oTعr6ɽ\>wt:mϱwܖNMTU.{^*嚆g]{Oy'?E2Rι.Jx4n#N]MHL2]2:wxm7qZ"ܱf|cϿ>/o?ڿqū7|P;X>w1cvg\2wv:?eNwwANcg\ .w17&r|0h86WiGzA?\(Sb|oͨgW5 ߚ!Ȉoͨ`ogϟYξ{d ʎUPSVtwc=2j-Jx26ޘo(_ެiH.s+/.wPX9kj9(c!W@9)Vo]wc#E?aR4'*Ok[!3_f-x8y9uEiՒp2bTaF.1N#<= 8ʇȯ?xj*?7 23oc7Zw%zp)|xqc {)W0x6B63aҍXk0 jZ}}ޔs.ipwn9~CLcXuF+P|wnݻw]q El"[w;޽\Q{s\6o_N(oCӼ'9\&}hFoE0>z<1(4“A o3nn,Fo/ʣэֹwJMFOTwƝ\1κ[yKN]U~F7{!"S9Ly(`2^FK!wU׽~B-1?U]÷]ISO=qE9߃2xIf|\%Fr)DGgWzů?3 eOc$l/G-d.?b||k0lcLcO)2SFX%鳗ʥJ:rِ1쯘QyfPRpkUZ6YcdecfMXz1* Y<6>6Fs痊 kmy8qOVO7ҶD~|iZd_|Or7fl]7ʥ o}ߛw*|AcXk-RI]+Gp_چUK9f;r}idLAp ~YAvP˯-%?gt;_Ol~)E_{ 5MWfk Fh0_oT3ǔT61dU(k%z(=xOo(zn.{w.g|31]zC!A7<hį]^ïR_FȠ 2G c+]]e,es34zzzIzz e-^_y? j*YZ"|c߻Qo~@GO6Ù?oDUZGÏ^@7-x'/Y`;*n- ٠c^SjOimj'FJqSP~oo m}xkm,5{;7eyoC统͢YUZp/~w 1B~+v_^-:11x]W˫E_'&ͤك[@=5wߵswXpϚ}PLG*eXXf>Hysw`c'qZ5s#bPS&6z#I5s ~?k?K?wcek^tZƯNw͡nk]" fD+WKh<"N1%ݸy=ʢO{B:'ʷ毅벶Nok֓k3k|' g]Vqa'8ֺ˴Ҟw9ƫO_o~˗k5uaxZ7wm]X/<v'@""+Fkzw|97 3l7Unħdb`d8 7Ɓ{(Lj_yEKC9ђM,F)'Wd)v͋P9Q=~W/2f}OLyǨE6X`{u`;O|IC ؞`U=q\mׇuua?AׇuuBR^|cP92/ݹf锯.kį|;7f*_)]{Wqh^xvƛS7eH[h^ƛE|]o6]Ѽe7mzS)͋PPlKF"Tf9[b۹Ѽe7P%Qml4/esr[%ށv F"Tf.oF"Tf$.o wncͲ|]vmCP7eLh^ʌB)H3 s{9{2.Kז _{yl|iXdLG^19VB JgIGr:|E^Qa:$KT#pyBWy%%:{$Cb:xȒ$Ӌ,$R֔+~KNPz7~Xy+J'$\ZW%Yd~)&f䡇G Y];/㑪LEW =o|rHLG^%/)"kjӑqLh%Y z?Aty=c6{9#9HU^ScE+ '.qLf/gt$Hd*TdUW+oS~(T=xpkml%fTtQ׃$/8x8[ڵdw 2w.jHHd*ykZLD\L$: IG✌.d+1KM諒dŘ)^IES>C 7k>&)I4xaz|[q'M }HLRV\1qN }HLAU0EHLR߮^IES>CԠ|LS>ChݷIȷ Ӌ,EdqJ |( dF*'T&|${?&x#WfC G(^KE/Wt!1>$nT%Yq-u~|^х aAܫ&Y=&jaA9:IL‡V ֡OMG|%IR>fQ^da/bH;Aqk̈yI>)M.bP>x׃,N(A:͢PZ|tĔj5}"9HUV"+qBL5LF׵ʔz1E_d+uiyUӑt3}D& a4zPUԋ)xU!UILG^ӡNpd292$[G>)S+Yh53Ժٷ˔G%_ y8advL20CxL<+\FZ 7k 髰%د,Wed ,7ήޚv1j%~L!VL9km _%ˉVE8Y{Wsu9َ= 9]=|2:?n9W­a[1 _hq8ro݃ص7- {e&Ps|pߵtl[j*km,/q* +XW}tcgGuFu߅5~]SiկSi0 7R+ώ|L Mwu הw1w -xӷP""l*=Y&qN9-8D!F؉Lz %QomD$VRCJ E2Tq6Eɗ/bz8&>J78M-NB/կ _х8'KrHE4;|9Y^#UI'BRjr}=L˫Dm:$(1=RԦ#cq3H'6{9SΦ%*6],.$5.dIE=R!bfz,$\^<08>>Dԯ _%ej%8VHd*Tk+=qqD4-&bzR}|=cA=R! _L _L_DC/_kzECbV#>gJ]^8HQz#Y^,j>IZzp49h^$1Aqk̒I$6}.1E+I!`czE/Gǔ+I2"Ȓy)e dmr~E8Z$lQez8;25Tl#&N,N)5\/ $Jh1Aty=pv"ŦPMRiZL,.j2"%>&32LcG϶IW9=D$9E=R׮-)&qtޠ㏞$b<{V&kזϋD{IJMd©G2=DfiI%9cZ^׮-)&6I'd)%I|L8'Kr >&32zIF7=&KrHEW #LP\<5T5ȋ8Z_c74O)MECT5ȋ8Z_JYOT5ȋ8Z_09/GJ>_$Hɽjm$mu%zSf$$&|?^)6Uj$=1&Gdt1g'似zRQg''.}RKJLzIEHVIpM-9 qH#҃pE϶VaiyUdtI$]^#VA)yjZ^5^s2$r:|lNmMV$NCN/B%9|#d9b>xH]^RR/iI%$H|LfS/2*ж8%Yz%a%<q 5+b5dqzLfS/6{9+!yEUIJB0TM$%$Aty=">&)}|=Hґ8;&PcfZh!u{IVI<">&3bzL$[=՚I-Jy蓊&$>& T4!1E+ $Ӌ8'Kr z1-MV$&5qUTTf=*BEC/_t$>$&ֽ&jaB7MSrxȉD 1yb23{$%Ӌ̔9H4l]HK%֗引Z&qL>">&3REΏ+zMmqX uqJ9BMQT/UI$Y^5}G*׎peB|zў28Z_׎^YRS"4l]6KF/51=^D%{SS*JF{I1&>eyU*ҮlRHkY^5Q;%_$%Vx͒QKXL yb0L=^09/IE͆>BR)j2O$qNFTtR;8J9aqz˥WB% rT'*Q)WT"K /8<0z˫|i,N/I3!8%[+_%B9<0yM.Q'[+I*J:%[_$ (13=G#H>H*JL'YrL*cCp!Ӌ8=^j5qNFկBdqz礙GRdkNFdNE)&f䡇ɇ=^/$I4%I|)G$ Oȋ,N/x;'?RM.)WBbHz|HKH-d4!1E+I>HkUyEWɴ ,N/P*ME#YRjbHz|-YrL9T2J6h=^G>Vt$Ӌ8'?RM.)WBbHz|HKH-d4!I>HkU&gC]Tk+1 iI9Z[͓IEMˋ,N/Қr~E/ra.JzRQ% SR"{tEW%YRjbHz|)ZILZ+qHОxP!Q,Ex!7eIE3S:G'"S'4[PD!A$AqkRQB=RԦ#/j}Tty=Uy=T0B/&DpxPɌ8)ӫR O$Th.ფqJ51Amu%zSf$$IXLA#UY$_'CVR/}9-!\UHUV*ɗI*zPUԋ)xU!%=}|PI&}RVBV"IG|Td\ guNpVsyY_Q}21_dF+_ٟpB|QN5tЛEp'q~ҿK.f#v#{"i?J?zDջҿKN/#xgȊUj#Oߧa" Yi!~6 d~SVG܀l7BFbd1tsKuAԩz*p6=6#Gl#='+<6g_YlcKVO4F&/6~06Y]9ۨ?lBVw6!#8e6[>s[&צ5mdp|翼+}Tܴ\Q&(9MM֬HW0C6~>2I"}|, GC/CONICLBRGC/COVERBAS GC/DSKRDBAS GC/ENTRYBAS GC/INIT BAS%GC/NUCALBAS+GC/PRTHDBAS3GCNORTAMSDF6GCWORLD SDFNCGRTCIR-CBASGRTCIR-CINTGRTCIR10BQS 110 REM ------- Personalized Cover SBR ---------- LPRINTER WIDTH 80 PRINT CHR$(30);CHR$(31): PRINT: PRINT: PRINT: PRINT: PRINT: PRINT: PRINT PRINT: PRINT: PRINT TAB(9);"G R E A T C I R C L E": PRINT: PRINT: PRINT PRINT TAB(17);"BEARINGS";CHR$(29);CHR$(31): PRINT: PRINT: PRINT PRINT TAB(32);"AND";CHR$(30);CHR$(31): PRINT: PRINT: PRINT PRINT TAB(16);"DISTANCES": PRINT: PRINT: PRINT PRINT TAB(19);"FROM": PRINT: PRINT: PRINT PRINT TAB(10);"AMATEUR RADIO STATION": PRINT: PRINT: PRINT V5$=LEFT$(V9$,19-(v{?sl['l*U֑w2d:׷^lݼ,fuU(vv@ӏGznƈGZFlc-9m~1FC9{AVo+AVWg3{ '5vX&ΗUmLJUpYYƿ"k74Ks[9_EY~\/q_ƫ3'*c}`K` 9ژޯhlȷ,ݓd9MCydY΂g8+?PC6.ur6Ԭ߽ݺRYT~D+`mϬӦM\n_]f93o;\s ^Aՠ;Ǐu'tq"/nqmuOF֥.zj9cL= VAf=y,+ZR:HSa !K83:Pțv[1rGjO!65uW7_Hx/OJ:l WoCs7_N ^.қ^>Loz9n]_ӭ/ ;/uoWX]v^ޜbO_ \Ww*Dր٣ %#Y]9ۨ?lBVw6!#8e6[>s[&צ5mdp|翼+}Tܴ\Q&(9MM֬HW0C6~>2I"}|,INT(LEN(SIGN$)/2))):PRINT V5$;SIGN$;CHR$(29);CHR$(31): PRINT PRINT: PRINT: PRINT TAB(29);"LOCATED AT";CHR$(30);CHR$(31): PRINT: PRINT: PRINT V5$=LEFT$(V9$,19-(INT(LEN(PL1$)/2))):PRINT V5$;PL1$;CHR$(29);CHR$(31):PRINT: PRINT PRINT: PRINT TAB(28);"COORDINATES";CHR$(30): PRINT: PRINT: PRINT PRINT TAB(15);"Latitude: ";DEG1;" Degrees,";MIN1;" Minutes,";SEC1;" Seconds ";H1$ PRINT TAB(15);"Longitude:";DEG3;" Degrees,";MIN3;" Minutes,";SEC3;" Seconds ";H3$ PRINT: PRINT: PRINT: PRINT: PRINT: PRINT: PRINT PRINT TAB(40);"Prepared by Orbra W. Bliss, W9GEK/HC1BW" PRINT CHR$(12) RETURN REM ------- Read Data File ------------ OPEN Q4$ AS 1 :rem --- Source Data File IF Q2$="Y" THEN GOSUB 110 :rem --- Personalized Cover GOSUB 104 :rem --- Line Printer Heading 62 IF END #1 THEN 63 IF CONSTAT% THEN GOSUB 64 rem --- Interrupt routine READ#1; PL2$,ST2$,DEG2,MIN2,SEC2,H2$,DEG4,MIN4,SEC4,H4$ PLA$= PL2$+", "+ST2$ IF PLA$= PL1$ THEN GOTO 62 :rem --- Skip Starting Location CONSOLE PRINT FNCR$(6,8);"Now calculating for ";PLA$;" " LPRINTER WIDTH 80 LAT2= FNDMS(DEG2,MIN2,SEC2) LON2= FNDMS(DEG4,MIN4,SEC4) IF H2$="S" THEN LAT2= LAT2*(-1) IF H4$="W" THEN LON2= LON2*(-1) GOSUB 68 IL%=IL%+1 IF IL%>54 THEN IL%=0: IP%=IP%+1 IF IL%=0 THEN LPRINTER WIDTH 80:\ PRINT CHR$(12):GOSUB 104 :rem --- Printout, New Page LPRINTER WIDTH 80: PRINT TAB(5);PLA$;TAB(27);:PRINT USING V1$;\ BA;:PRINT V4$;" ";:PRINT USING V1$;BR;:PRINT V4$;\ TAB(48);Z$;:PRINT USING V$;STMI;:PRINT TAB(59);Z$;:\ PRINT USING V$;NAMI;:PRINT TAB(70);Z$;:PRINT USING V$;KM GOTO 62 63 PRINT CHR$(12) CLOSE 1: CONSOLE: PRINT CHR$(26) PRINT FNCR$(10,12);"THAT'S ALL!!!" GOTO 99.9 64 CONSOLE PRINT "PRESS 'C' TO CONTINUE, 'S' TO STOP" IF CHR$(CONCHAR%) = "C" THEN RETURN IF CHR$(CONCHAR%) = "S" THEN STOP GOTO 64 -------------------------------------------------------" V9$=" " D=1: M=57.29577951308254: N=1.570796326794896 DEF FNDMS(D,M,S)= D+(M/60)+(S/3600) DEF FNCR$(YPOS,XPOS)=CHR$(27)+"="+CHR$(YPOS+32)+CHR$(XPOS+32) DEF FNARC(X)= N-2*ATN(X/(1+SQR(1-X*X))) REM --- Great Circle Calculate Module derived from a \ FORTRAN program. From "The Giant Book of Computer \ Software", pages 199-207. Modified and Corrected \ by O. Bliss. NOTE that SOUTH Latitutes and WEST \ Longitutes are entered as negative numbers.\ 68 A1= LAT1/M: A2= LAT2/M: L1= LON1/M: L2= LON2/M PI= 3.141592653589794: FLAG=0 68.1 Q1= COS(A1) * ((TAN(A1) * COS(L2-L1)) - TAN(A2))/SIN(L2-L1) X1= 270 + (M * ATN(Q1)) IF (L2-L1) > 0 AND (L2-L1) <= PI OR \ (L2-L1) < 0 AND ABS(L2-L1) >= PI THEN X1= X1- 180 REM -- Reverse Calculation -- IF FLAG= 2 THEN 68.2 L3=L2: L4=L1: L2=L4: L1=L3 A3=A2: REM ----- GC/ENTRY.BAS ---- GREAT CIRCLE ENTRY USING DISK FILES ------ 500 CONSOLE PRINT CHR$(26) :rem ---- Erase Screen REM ----- Screen #1, Entry Menu ------- PRINT FNCR$(4,8);"GREAT CIRCLE DISTANCE AND HEADINGS" PRINT FNCR$(6,12);"Enter Originating Location" PRINT FNCR$(8,4);"Make entry of City & State using ONE comma." PRINT FNCR$(10,8);"City, State: ____________________" PRINT FNCR$(10,21);: INPUT LINE PL1$ PRINT FNCR$(14,4);"Enter name of source file: "; INPUT LINE Q4$ PRINT FNCR$(14,4);"Do you want a personalized cover? (Y or N): "; INPUT Q2$ IF Q2$="y" THEN Q2$="Y" IF Q2$<>"Y" THEN GOTO 502 PRINT FNCR$(16,8);"Enter the callsign of the station: "; INPUT LINE SIGN$ 502 PRINT FNCR$(14,4);" Enter coordinates for ";PL1$;" " PRINT FNCR$(16,0);"Latitude: Degrees ___, Minutes __, Seconds __, N/S _" PRINT FNCR$(18,0);"Longitude: Degrees ___, Minutes __, Seconds __, E/W _" PRINT FNCR$(16,18); INPUT DEG1 PRINT FNCR$(16,32); INPUT MA4=A1: A2=A4: A1=A3 Y1=X1: FLAG=2: GOTO 68.1 68.2 C1= ABS(L2-L1) IF C1> PI THEN C1= 2.0 * PI - C1 REM -- ARC COSINE Conversion --- Z= FNARC(SIN(A1)*SIN(A2)+COS(A1)*COS(A2)*COS(C1)) Z1= Z * M REM -- Module Output -- BA= Y1 + .05 BR= X1 + .05 INTM= 60 * Z1 NAMI= INTM + .05 KM= INTM * 1.8519 + .05 STMI= INTM * 1.1507765 + .05 RETURN REM --- GC/PRTHD.BAS --- 104 REM ------ Line Printer Heading -------- LPRINTER WIDTH 80: PRINT V8$ PRINT V2$;PL1$;TAB(72);V3$;IP%:PRINT V8$ PRINT TAB(28);"BEARING";TAB(39);"BEARING";\ TAB(49);"---------- DISTANCE ----------" PRINT TAB(5);"LOCATION";TAB(30);"TO";TAB(40);"FROM";\ TAB(48);"|ST. MILES |NAU. MILES|KILOMETERS" RETURN Akron, OH, 41,05,00,N, 81,31,00,W Albany, NY, 42,39,00,N, 73,45,00,W Anchorage, AL, 61,13,00,N,149,53,00,W Atlanta, GA, 33,48, 0,N, 84,24, 0,W Auburn, NY, 42,56,00,N, 76,34,00,W Binghamton,NY, 42,08,00,N, 75,54,00,W Boston, MA, 42,21,00,N, 71,04,00,WIN1 PRINT FNCR$(16,45); INPUT SEC1 PRINT FNCR$(16,54); INPUT H1$ PRINT FNCR$(18,18); INPUT DEG3 PRINT FNCR$(18,32); INPUT MIN3 PRINT FNCR$(18,45); INPUT SEC3 PRINT FNCR$(18,54); INPUT H3$ LAT1= FNDMS(DEG1,MIN1,SEC1) IF H1$="s" THEN H1$="S" LON1= FNDMS(DEG3,MIN3,SEC3) IF H3$="w" THEN H3$="W" IF H1$="S" AND D=1 THEN LAT1= LAT1*(-1) IF H3$="W" AND D=1 THEN LON1= LON1*(-1) PRINT FNCR$(8,4);" TO " PRINT FNCR$(14,4);" The" REM --- GC/INIT.BAS --- CONSTANTS AND FUNCTION DEFINES ----- V$="######.#": V1$="###.#" Z$="|" : IP%=1: V4$=" deg." V2$="GREAT CIRCLE BEARINGS AND DISTANCES FROM ": V3$="Page " V6$=" \ \###.# deg. ###.# deg.| #####.# | #####.# | #####.#" V7$="\ \ \ \ \ \ ##" V8$="------------------------ Buffalo, NY, 42,53,00,N, 78,53,00,W Cheyenne, WY, 41, 6, 0,N,104,48, 0,W Chicago, IL, 41,50,00,N, 87,38,00,W Cincinnati, OH, 39, 6, 0,N, 84,30, 0,W Cleveland, OH, 41,30, 0,N, 81,42, 0,W Dallas, TX, 32,48, 0,N, 96,48, 0,W Denver, CO, 39,42, 0,N,105, 0, 0,W Detroit, MI, 42,18, 0,N, 83, 0, 0,W Doylestown, OH, 40,26,54,N, 81,40,00,W Edinburg, TX, 26,10,48,N, 98,06,00,W Edmonton, Alberta, 53,30, 0,N,113,30, 0,W El Paso, TX, 31,48, 0,N,106,30, 0,W Elkhart, IN, 41,40,00,N, 85,58,32,W Fairport, NY, 43,00,31,N, 77,24,27,W Glendale, WI, 43,07,00,N, 87,57,00,W Goose Bay, Labrador, 51,18, 0,N, 60,24, 0,W Grand Rapids, MI, 42,58,00,N, 85,40,00,W Greenville, NC, 35,37,00,N, 77,23,00,W Halifax, Nova Scotia, 44,36, 0,N, 63,36, 0,W Hartford, CT, 41,48, 0,N, 72,42, 0,W Houghton, NY, 42,22,48,N, 78,09,45,W Indianapolis, IN, 39,48, 0,N, 86,12, 0,W Janesville, WI, 42,41,00,N, 89,01,00,W Juneau, AK, 58,18, 0,N,134,24, 0,W Kansas City, MO, 39, 6, 0,N, 94,36, 0,W Knoxville, TN, 36, 0, 0,N, 83,54, 0,W LittAnkara, Turkey, 39,54, 0,N, 32,54, 0,E Ascension Island,, 8, 0, 0,S, 14, 0, 0,W Asuncion, Paraguay, 25,18, 0,S, 57,42, 0,W Athens, Greece, 38, 0, 0,N, 23,42, 0,E Auckland, NZ, 36,09,00,S,174,08,00,E Baghdad, Iraq, 33, 0, 0,N, 44,30, 0,E Bamako, Mali, 13, 0, 0,N, 8, 0, 0,W Bangkok, Thailand, 13,48, 0,N,100,30, 0,E Beirut, Lebanon, 33,54, 0,N, 35,30, 0,E Belfast, North. Ire., 54,36, 0,N, 5,54, 0,W Belgrade, Yugoslavia, 44,54, 0,N, 20,30, 0,E Berlin, Germany, 52,30,00,N, 13,22,00,E Bermuda,, 32,18, 0,N, 64,42, 0,W Bern, Switzerland, 47, 0, 0,N, 7, 0, 0,E Bogota, Columbia, 5, 0, 0,N, 74, 0, 0,W Bombay, India, 19,11,00,N, 72,50,00,E Bonaire, Neth. Ant., 12,10,00,N, 68,15,00,W Bonn, W. Germany, 51, 0, 0,N, 6, 0, 0,E Brasilia, Brazil, 16, 0, 0,S, 48, 0, 0,W Brisbane, Australia, 27,26,00,S,153,10,00,E Brussels, Belguim, 50,54, 0,N, 4,24, 0,E Bucharest, Romania, 44,24, 0,N, 26, 6, 0,E Budapest, Hungary, 47,30, 0,N, 19, 6, 0,E Buenos Aires, Argent, 34,36, 0,S, 58,24, 0,W Byrd Station, Antle Rock, AK, 34,42, 0,N, 92,18, 0,W Los Angeles, CA, 34,03,00,N,118,15,00,W Madison, WI, 43,05,00,N, 89,22,00,W Mason, OH, 39,17,00,N, 84,19,00,W Memphis, TN, 35, 6, 0,N, 90, 6, 0,W Mexico, NY, 43,28,00,N, 76,14,00,W Miami, FL, 25,46,00,N, 80,12,00,W Milwaukee, WI, 43,05,00,N, 87,27,00,W Minneapolis, MN, 45, 0, 0,N, 93,18, 0,W Montreal, Canada, 45,27,00,N, 73,42,00,W Neenah, WI, 44,11,00,N, 88,28,00,W New Orleans, LA, 29,54, 0,N, 90, 6, 0,W New York, NY, 40,43,00,N, 74,00,00,W Nome, AL, 64,30,00,N,165,24,00,W Omaha, NB, 41,18, 0,N, 95,54, 0,W Phoenix, AZ, 33,30, 0,N,112, 6, 0,W Pittsburg, PA, 40,24, 0,N, 80, 0, 0,W Portland, ME, 43,42, 0,N, 70,18, 0,W Portland, OR, 45,30, 0,N,122,42, 0,W Providence, RI, 41,50,00,N, 71,24,00,W Rochester, NY, 43,10,00,N, 77,36,00,W San Diego, CA, 32,43,00,N,117,10,00,W San Francisco, CA, 37,48,00,N,122,25,00,W Seattle, WA, 47,36,00,N,122,20,00,W Slippery Rock, PA, 41,04,00,N, 80,03,00,W Spokane, WA, 47,36,12,N,117,25,18,W St. John's, Newfndln, 47,36, 0arc, 80, 0, 0,S,120, 0, 0,W Cairo, Egypt, 30,03,00,N, 31,15,00,E Canberra, Australia, 35,30, 0,S,149, 0, 0,E Cape Horn, So. Amer., 53,09,00,S, 70,55,00,W Cape Town, So.Africa, 33,56,00,S, 18,29,00,E Cape of Good Hope,SA, 34,18,00,S, 18,26,00,E Caracas, Venezuela, 10,30, 0,N, 67, 0, 0,W Casablanca, Morocco, 33, 0, 0,N, 8, 0, 0,W Christchurch, NZ, 43,36,00,S,172,42,00,E Christmas Island,, 10,30, 0,S,105,42, 0,E Copenhagen, Denmark, 55,42, 0,N, 12,36, 0,E Dacca, Bangladesh, 24, 0, 0,N, 90,30, 0,E Dakar, Senagal, 14,40,00,N, 17,26,00,W Darwin, Australia, 12,28,00,S,130,50,00,E Djakarta, Indonesia, 06,10,00,S,106,48,00,E Dunedin, NZ, 45,53,00,S,170,30,00,E ELWA, Liberia, 06,15,00,N, 10,47,00,W Falkland Islands,, 52, 0, 0,S, 60, 0, 0,W Freetown,SierraLeone, 08,30,00,N, 13,15,00,W Galapagos Is.,, 2, 0, 0,S, 92, 0, 0,W Gibraltar,, 36, 0, 0,N, 5,30, 0,W Glasgow, Scotland, 55,48, 0,N, 4,18, 0,W Greenwich, England, 51,28,40,N, 00,00,00,W Grenada,, 12, 0, 0,N, 61,48, 0,W Guadeloupe,, 16,15,00,,N, 52,42, 0,W St. John, New Brunsw, 45,18, 0,N, 66, 6, 0,W St. Louis, MO, 38,36, 0,N, 90,12, 0,W Syracuse, NY, 43,03,00,N, 76,09,00,W Toronto, Ontario, 43,42, 0,N, 79,24, 0,W Upland, IN, 40,28,36,N, 86,30,00,W Vancouver, B.C., 49,18, 0,N,123, 6, 0,W Wadsworth, OH, 41,00,00,N, 81,44,10,W Washington, DC, 38,54,00,N, 77,01,00,W Webster, NY, 43,13,00,N, 77,26,00,W Winnipeg, Manitoba, 49,54, 0,N, 97, 6, 0,W ,W El Paso, TX, 31,48, 0,N,106,30, 0,W Elkhart, IN, 41,40,00,N, 85,58,32,W Fairport, NY, 43,00,31,N, 77,24,27,W Glendale, WI, 43,07,00,N, 87,57,00,W Goose Bay, Labrador, 51,18, 0,N, 60,24, 0,W Grand Rapids, MI, 42,58,00,N, 85,40,00,W Greenville, NC, 35,37,00,N, 77,23,00,W Halifax, Nova Scotia, 44,36, 0,N, 63,36, 0,W Hartford, CT, 41,48, 0Abidjan, Ivory Coast, 5,30, 0,N, 4, 0, 0,W Accra, Ghana, 05,33,00,N, 00,13,00,W Addis Abba, Ethiopia, 09,00,00,N, 38,50,00,E Adelaide, Australia, 34,55,00,S,138,35,00,E Amman, Jordan, 32, 0, 0,N, 36, 0, 0,E Amsterdam, Neth., 52,24, 0,N, 4,54, 0,E N, 61,30,00,W Guam,, 13,27,00,N,144,45,00,E Guantanamo Bay, Cuba, 20, 0, 0,N, 75, 0, 0,W Guatemala City, Guat, 14,36, 0,N, 90,30, 0,W Guayaquil, Ecuador, 02,10,00,S, 79,50,00,W Havana, Cuba, 23, 6, 0,N, 82,24, 0,W Helsinki, Finland, 60,10,00,N, 24,58,00,E Hobart, Tasmania, 42,54, 0,S,147,18, 0,E Hong Kong,, 22,16,00,N,114,12,00,E Honolulu, HI, 22,00,00,N,157,00,00,W Jamaica,, 18, 0, 0,N, 76, 0, 0,W Jerusalem, Israel, 31,46,00,N, 35,13,00,E Jos, Nigeria, 09,55,00,N, 08,53,00,E Kaliningrad, USSR, 54,48,00,N, 20,36,00,E Kandahar,Afghanistan, 32, 0, 0,N, 65, 0, 0,E Kano, Nigeria, 12,00,00,N, 08,30,00,E Kekaha Kauai, Hawaii, 22,00,00,N,159,40,00,W Kiev, USSR, 50,30, 0,N, 31, 0, 0,E Kinshasa, Zaire, 04,18,00,S, 15,18,00,E La Paz, Bolivia, 16,30,00,S, 68,09,00,W Lagos, Nigeria, 06,27,00,N, 03,24,00,E Leningrad, USSR, 60, 0, 0,N, 30, 0, 0,E Lima, Peru, 12,03,00,S, 77,03,00,W Lisbon, Portugal, 38,42, 0,N, 9,12, 0,W Liverpool, England, 53,24,00,N, 03,04,00,W London, England, 51,30,00,N, 00,02,yo, Japan, 35,40,00,N,139,45,00,E Ukarumpa, New Guinea, 04,00,00,S,143,00,00,E Ulan Bator, Mongolia, 48, 0, 0,N,107, 0, 0,E Valpariso, Chile, 33,02,00,S, 71,39,00,W Vienna, Austria, 48,12, 0,N, 16,18, 0,E Vladivostok, USSR, 40,05,35,N,131,52,03,E Wake Island,, 19, 0, 0,N,167, 0, 0,E Warsaw, Poland, 52,12, 0,N, 21, 0, 0,E Wellington, NZ, 41,18,00,S,174,48,00,E Yaounde, Cameroon, 4, 0, 0,N, 12, 0, 0,E Akron, OH, 41,05,00,N, 81,31,00,W Albany, NY, 42,39,00,N, 73,45,00,W Anchorage, AL, 61,13,00,N,149,53,00,W Atlanta, GA, 33,48, 0,N, 84,24, 0,W Auburn, NY, 42,56,00,N, 76,34,00,W Binghamton,NY, 42,08,00,N, 75,54,00,W Boston, MA, 42,21,00,N, 71,04,00,W Buffalo, NY, 42,53,00,N, 78,53,00,W Cheyenne, WY, 41, 6, 0,N,104,48, 0,W Chicago, IL, 41,50,00,N, 87,38,00,W Cincinnati, OH, 39, 6, 0,N, 84,30, 0,W Cleveland, OH, 41,30, 0,N, 81,42, 0,W Dallas, TX, 32,48, 0,N, 96,48, 0,W Denver, CO, 39,42, 0,N,105, 0, 0,W Detroit, MI, 42,18, 0,N, 83, 0, 0,W Doylestown, OH, 41,02,58,N, 81,40,44,W Edinburg, TX00,W Madrid, Spain, 40,24, 0,N, 3,42, 0,W Mahe, Seychelles, 04,36,00,S, 55,28,00,E Managua, Nicaragua, 12, 0, 0,N, 86, 0, 0,W Manila, Philippines, 14,36,00,N,120,58,00,E McMurdo Sound,Antarc, 77,30, 0,S,167, 0, 0,E Melbourne, Australia, 37,50,00,S,145,00,00,E Mexico City, Mexico, 19,25,00,N, 99,10,00,W Minsk, USSR, 54, 0, 0,N, 27,30, 0,E Monrovia, Liberia, 06,05,42,N, 10,54,00,W Monte Carlo, Monaco, 43,45,00,N, 07,25,00,E Montevideo, Urguay, 34,53,00,S, 56,11,00,W Moscow, USSR, 55,45,00,N, 37,35,00,E Nairobi, Kenya, 1,30, 0,S, 37,30, 0,E Natal, Brazil, 6, 0, 0,S, 35,12, 0,W New Delhi, India, 28, 0, 0,N, 77, 0, 0,E Oslo, Norway, 60, 0, 0,N, 10,42, 0,E Palmer Sta.,Antarct, 65, 0, 0,S, 64, 0, 0,W Panama City, Panama, 09,00,00,N, 78,33,39,W Paris, France, 48,52,00,N, 02,20,00,E Peking, China, 39,55,00,N,116,25,00,E Perth, Australia, 32,00,00,S,115,50,00,E Pifo, Ecuador, 00,13,48,S, 78,21,00,W Pitcairn Island,, 25, 6, 0,S,130, 6, 0,W Port-Au-Prince,Haiti, 19,00,00,N, 71,00,00,W Prague, , 26,10,48,N, 98,06,00,W Edmonton, Alberta, 53,30, 0,N,113,30, 0,W El Paso, TX, 31,48, 0,N,106,30, 0,W Elkhart, IN, 41,40,00,N, 85,58,32,W Fairport, NY, 43,00,31,N, 77,24,27,W Glendale, WI, 43,07,00,N, 87,57,00,W Goose Bay, Labrador, 51,18, 0,N, 60,24, 0,W Grand Rapids, MI, 42,58,00,N, 85,40,00,W Greenville, NC, 35,37,00,N, 77,23,00,W Halifax, Nova Scotia, 44,36, 0,N, 63,36, 0,W Hartford, CT, 41,48, 0,N, 72,42, 0,W Houghton, NY, 42,22,48,N, 78,09,45,W Indianapolis, IN, 39,48, 0,N, 86,12, 0,W Janesville, WI, 42,41,00,N, 89,01,00,W Juneau, AK, 58,18, 0,N,134,24, 0,W Kansas City, MO, 39, 6, 0,N, 94,36, 0,W Knoxville, TN, 36, 0, 0,N, 83,54, 0,W Little Rock, AK, 34,42, 0,N, 92,18, 0,W Los Angeles, CA, 34,03,00,N,118,15,00,W Madison, WI, 43,05,00,N, 89,22,00,W Mason, OH, 39,17,00,N, 84,19,00,W Memphis, TN, 35, 6, 0,N, 90, 6, 0,W Mexico, NY, 43,28,00,N, 76,14,00,W Miami, FL, 25,46,00,N, 80,12,00,W Milwaukee, WI, 43,05,00,N, 87,27,00,W Minneapolis, MN, 45, 0, 0,N, 93,18, 0,W Montreal, CanadaCzech., 50, 6, 0,N, 14,24, 0,E Quito, Ecuador, 00,10,00,S, 78,29,23,W Recife, Brazil, 08,03,00,S, 34,54,00,W Reykjavik, Iceland, 64, 6, 0,N, 22, 0, 0,W Riga, Latvia, 57, 0, 0,N, 24, 0, 0,E Rio de Janeiro, Braz, 22,54,00,S, 43,10,00,W Rome, Italy, 41,54,00,N, 12,29,00,E Saigon, Veitnam, 10,48, 0,N,106,42, 0,E Saipan, Marianas, 16, 0, 0,N,146, 0, 0,E San Jose, Costa Rica, 09,56,00,N, 84,05,00,W San Juan, PuertoRico, 21,59,00,N, 80,08,00,W San Salvador, El Sal, 14, 0, 0,N, 89, 0, 0,W Santiago, Chile, 33,30, 0,S, 70,48, 0,W Seoul, Korea, 37,30, 0,N,127, 0, 0,E Shanghi, China, 31,10,00,N,121,30,00,E Singapore,, 01,23,00,N,103,48,00,E Sofia, Bulgaria, 42,42, 0,N, 23,18, 0,E Stockholm, Sweden, 59,18, 0,N, 18, 6, 0,E Surinam,, 6, 0, 0,S, 55, 0, 0,W Svalbard Island,, 78, 0, 0,N, 16, 0, 0,E Sydney, Australia, 33,51,04,S,151,12,25,E Taipei, Taiwan, 24,00,00,N,121,00,00,E Tegucigalpa,Honduras, 14, 0, 0,N, 87, 0, 0,W Tehran, Iran, 35,48, 0,N, 51,48, 0,E Tirana, Albania, 41,30, 0,W, 19,30, 0,E Tok, 45,27,00,N, 73,42,00,W Neenah, WI, 44,11,00,N, 88,28,00,W New Orleans, LA, 29,54, 0,N, 90, 6, 0,W New York, NY, 40,43,00,N, 74,00,00,W Nome, AL, 64,30,00,N,165,24,00,W Omaha, NB, 41,18, 0,N, 95,54, 0,W Phoenix, AZ, 33,30, 0,N,112, 6, 0,W Pittsburg, PA, 40,24, 0,N, 80, 0, 0,W Portland, ME, 43,42, 0,N, 70,18, 0,W Portland, OR, 45,30, 0,N,122,42, 0,W Providence, RI, 41,50,00,N, 71,24,00,W Rochester, NY, 43,10,00,N, 77,36,00,W San Diego, CA, 32,43,00,N,117,10,00,W San Francisco, CA, 37,48,00,N,122,25,00,W Seattle, WA, 47,36,00,N,122,20,00,W Slippery Rock, PA, 41,04,00,N, 80,03,00,W Spokane, WA, 47,36,12,N,117,25,18,W St. John's, Newfndln, 47,36, 0,N, 52,42, 0,W St. John, New Brunsw, 45,18, 0,N, 66, 6, 0,W St. Louis, MO, 38,36, 0,N, 90,12, 0,W Syracuse, NY, 43,03,00,N, 76,09,00,W Toronto, Ontario, 43,42, 0,N, 79,24, 0,W Upland, IN, 40,28,36,N, 86,30,00,W Vancouver, B.C., 49,18, 0,N,123, 6, 0,W Wadsworth, OH, 41,00,00,N, 81,44,10,W Washington, DC, 38,54,00,N, 77,01,00,W Webster, NY, 43,176\gpp$Now calculating for $,$ $d4Pof-$%&.()*'S7+--p+W7?..pA///67`//7vPof R$d4 PofJ,$Jdc0#d$ $dc1#d$0J$dc2#d;J$dc3#dFJ$dc4#d46\ R$d4@gR$d4 p p$THAT'S ALL!!!$d46 ^gPRESS 'C' TO CONTINUE, 'S' TO STOP$d4xRC73xRS7>65 6- 7! 8. 9.:p;5F5H87F6H87E< ;Gp87p879 87p87A9 7̀<78>7=?6@56@5?A<:p6mB87AB97 .B.9BC5E6E5F6FBFDC 0A.1<.E?@ABCDEFGHIJKLMNOPQRSY LDr`] AgkwχfWїȚaR=9v$.}0)LK|W~*|ӷO5#I+98WoiݞVed~@UqkV DIe: ____________________$d4 pp$dn;hpp$Enter name of source file: $dn;hpp$Do you want a personalized cover? (Y or N): $dn;1'y7gYY7t6pp$Enter the callsign of the station: $dn;hpp$ Enter coordinates for $$ $d4pp$Latitude: Degrees ___, Minutes __, Seconds __, N/S _$d4pp$Longitude: Degrees ___, Minutes __, Seconds __, E/W _$d4pp$dn;"'p p$dn;"'p-p$dn;"'p6p$dn;1'pp$dn;"'p p$dn;"'p-p$dn;"'p6p$dn;1' s7S!w7WS p 7ǀ pW p 7!!ppp$ TO $d4pp$ The$d4jY7Y < `w7h&"*#*$)%)&)'*()))*)+*>,", #,eLe=&9 ?ٗvXh͜aR(49fkn- نU>LkMn-_5&5[/pŦ^ 7fVw @fyLZc91OSdDž>q8nfu5?0}YC$iLdVWKAgUV8޳j)Y53DRFIN*ޅ:bpB}@a] Age O")H$'`\]h><>8nfuW)kxIA%9ǜڏYsy d!Zx")H$'Ӏ'qZκ{7xUC$id6n0W?mWe 3DRFIN_ŜӬ< WL ^5|IA%9|I嬻7~We 1DRFINm*Ǻm'H (4?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[,( '"o EQ`߻_CwkMI^ݲ9EL|$Kg({7y(WD֨._i)Pl?(9n_n~[|6qqC+n-fMy}t}o6Ӈx jjS^=]\*Zϲ`=̆,l~>]MAis5J y?U6|VY9)|[YVMsc L V*Ěg L#ETX3J")H$'ӀyAE+gK QiWq¼袕ףԚш!4Jr2 *0 (hIqY3Z1DRFIN#ET4f4g LG,+.Z8+Țі!4ZA2񎿦7~fc>}e}g/6kVa?hޣ2 &řKA< CkVa?GIeLs/%qV$f0{4Yf8RPgkCkV-JI&,Q4BkV#ʚՊ \Yaxf5g%<2&z]=/Snj J :yrkV;Qbݦ*`suA__L5(* 쯔_)yrka_/Kk朡f0c:";.E֌?qøuO>ެ Qi09 suŠt\qwú&ʚ!4Jr2 1gax?Y7^RW Qi!r{PͬqWqsü Zx<fo^Y33DRFIN)NV!.3|x΂xWpO 7PMsC=͚񦬙o")H$'Ӏ8ҵfc L0Wzx q*")H :+χ,: *4ni*_'ip7~ʚ!4Jr2 (NV!.3|x΂0")H+ T¡fxSlCe͖3cx `Y͚mpfgpƙ5ۖ!4Jr2 1g!rǛ£u| ~x`vIA%9|sJxff=fJU$i\_U~SJ _TS|},~HI1Pla\s')֜^ %~.Sbᛒ~(ZY?˺GT/͢xЀՇf9ۿ(iS1N~⠼ ;7X{:%}Ps\aWfQwp] vݚ[8vz,biNo~N$,ʫPI1NyC=KsϙXLS 4_sk%m8 TY< aӮq=aWfQwZI1Ny f&z26pr@@{d![Y+i#I"æ =[t-񬕴$Pgq`6æ sݝxJڈqȳ80ݢ9u_![Y+i#I"\ 2LlijVF@EŁy6e̝ijVF@EŁ1C&JZStZ's+i#I"8 %-)u7Jڈqȳ80p]ɌQF@EŁ i(iNEhd7Jڈqȳ80C&JZStZ'M'<s?a8EuN%m8 TY8 %-)6b*,p]I` EQ %~7y(gi.9kR/`? rO&+ "Ef:$,ʫPIl?tE;G 1w>͢຦%SNolq:[d?S%m8 TYa,8nfu91H (4m̓0WϘ}c *ǡ>Y)kN!4Jr2 *I+)~ZYsJ")H$'Ӏoc\cvCʚSIA%9|094b% YsZ1CC=+uAYs3CC9.e8_Ys1DR[4H5CAk8c >diXm=!{>5q}ħ+%ᗥ5% E %<5 ]9|q,؇p2L)(d/E~V[=YوA&(x`_KY0/`pbl)p_ˀO݋ j˶'k82޽,l Jd}^ףCe d}n Mtj AeY|. gp0dz)za -'/?^ pf #^XAzYV8_3x™5hX^XA]ά| k8?1T1cxm=^7>ެ g 3~ NK.1Pl}SۿE;Y3vϿᏗ<·,;wJڈqsUwoksc;)i#I"8i@Y x$Śg"'bNZI1NyWEw;%~=n6b*,oY06Љ@8 \2N{|6q?f$&L6b4Nwn MhfNN+i#I"z(DI b.=>8`"&JZ1N'w;N8ݢ9ﴒ6b*,chQk%m8 TYp&Zkc; t1NMY0E&JZ1N'w;NehfNN+i#I">L"Iq㳉1 &+*DIk#Ih]QRSTUVWXYZ[\]^_`abcdefghiojklmnopqrstuvwxyz{|}~~qhdUPOKG4) _lnmxfwƛǭ[֭[3bl޺mVV/ƏsKw6ZMe$@VVV+:2XSƸ=:32^-ykDwg{lt';&(zҾswF?ۨ>2doFC UⰭm:2ŘcG xRö)F#((=n~{j k݃ՁTr+K6E@PAqDv )vOL^6E\1bGhwU)Ţ")vSD}MHˊCGh/& m#ň!#J[25Y mS+F|R-@ʆܿ) "~& mkň!#J{_ _6Eb%ڭ^ۚ,))(Q㝍&8D[GeňQQ| =n"H1btGh(7p1m[8h"X1btGh(—{Db((Q=n"D1btGh(«=nⰭm `bcRb#Jl۲^v`u ʽA|M#FPQ /|C]/E1L^6E\1bGhwU)Ţ")vSD}MHˊCGh/& m#ň!#J[25Y mS:DcWwwprؾJWW;'|j}7%b~աxh0OC}'nu_4$Pgq`3 -^Ne3vgV'JZ$p89N(DIk#I@C8;-vn$Pgq`*L"Iqsdb%'CعVF@EŁyʫ0Q'KiqY$Ů~sZI1Nyt00y_twC'JZ$p8c(im8 h]R+i#I"4λF_twC'JZ$p8#K6b4Nwnd (>c;[+VTI1Nye90ѢƻqY+i#I",cD)¯sEI+9/!ZhX19/!ZNb8)~ KobJb΀bٹwÏ#3Pl)i#IYW6b*,3 gi.9k|;akN{']?ݠ7h_]Ǻ_Կ+F|R-@ʆܿ) "~& mkň!#J{_ _6Eb%ڭ^ۚ,))(Q;M#FGqD-<&#FGqD-&#FGqD-7p1m[xDb((Q=n"Z1btGh(7p1:#JuoaMl`dfxf93<`g93̗usxf^qDg#sX7gf9v5fophüv5fڭц9qhF%N}0f/xӆ9vk4L:͖[al {l^5f?C@ٜ4L:͖[쁪y0k=Pua[#F_qDvAw[V۫W9_[7\ i"`]1bGhwP~^e[Vj>bg颯ɧeC)bXWQݽJQ-sJ!zfbX?ix_X;Vjh=i" VGhk]N4 isL|R-Isň@qDv%i"H1b+(nҘBeRT\*&]N4 iZ;Vjh=i"bx8D[L]N4 iP;Z,Z//oi;#F_qDvy4^>L}M>-rMp1#JbTkOH[C=sw:9,^e*OS_#mS(FC%YN֊JXxyZi"Kňq8D[C=f::-7jmV}%u 7Ҩ)?d=bX?ix_#mS*F4gQ4DO5YϬX'OHtbGh\*J56EP1bGh ӡmw@i0at}Mus/⻳+ڦ)F.ۃWr=XH%ro=c[\_p' {wn oXqX.o@+ydc26и%_i&|SNn;q;a\swct曒J^=ܴ|ybO[`R4SFuyu~>ޢvÍ4-* rA r r~0DSa)LbbB%WӢ|=^ iPI ,&&1ENkmq`MILbbBSFoqyJjZ|5J` E澻~Eݡ(B5-JyJz)M;)o19sINvQ6/o"/xܴFIӴ_-Io[WbMii?f,&&T oZ7S"(X:CQ g~qJ뗋CQJ(g>8 _3NA^* rUeWYM*ieZ ) 3fsXE}[4x齒j7{%-'1kq5+ex Nb+i1kI spo7{%m&f'1+̍>=]=nJT\)y}}smSZ?GHIJKLMNOPQRSTUVWXYZ[v|8GC/CON1C.INT ? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP?$mSĊ8DE[KEze矐)cYqDv]y+?z}?i٫2'mS)Fe%}%oeu,k^*r0/S/ӲW)eNڦ8Vˊ#J[o)N#F_qDvw]PNZ7Lgՙ Y6EbЊ#J0k4YgnYŬڦ6M\޾nIJ޼yCڦ0KKƙ%F1KK昖Ayx/.L4. sޚcmnExy40uyn.Չ##5/Rgv4"Ɗ9ӈޤ7TqliD7fsL1!fsLc߽4̎Zq0m9 ח[YmIk#I@C8;-vn$Pgq`*L"Iqsdb%'CعVF@EŁyʫ0Q'Kiqv4GCDATA.SDFF  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEo?BqZgSfiHGL4d*6kɯm4T7fcs*u0z_KXyƀ9╴!s*{S M#H9M}_DÀM#Wll֒ԡuZm ]j n4H2k@iCF?8{/Q Nج%_//KwTMCu&UlN%a6e 1WlN%^EFڐi"2kɿ ؍{ 7{4GMClN%6t^|nCꀌLCSɿ ݄14`cӐ79]EǯC42kɿ A 0_a0`cHhl֒;??ߣT#PMȜJ]>%q#iLڰ9n 22 m9"CwӴ?؜al֒1 49Cߍ{ 7{t022 U##s*;J؜+6k?o}7-;n Ȭ%0{7[T#q@@ڐYKa_+CĦ!WYKanSN{ ͉jlZE}B5M#4cEC(VҀLC/B7}1W_]A)R4` S_ԡtŦ-ج%&{wD+ȜI+22ou+9⌍ͩ/Ͽ/ iat@f-sgkE9`i / ߠX6lH/f6l֒G(V8P2sf-;,,ǀjd9F9f:_PLxƦ-Q6kɯ}oPlVZC0-С: #P= #s*/9jWh"2 )2GdN%Ǵw^?C"Ul)>+6kɯM5LCu`ȜJ~]}wN_^@ڐ9YK~]s:]XFLڐ9JYK~?~Z٣!#P2_=tǀ~zZ2 m!"{_:~|YK~ݟ졻7T͙txTr F"#PT#s*S<|3/>TiH22kɟBf#{n(UL#T#s*S?.#6tSje4Tg9.GԦ+}BsiH3sDf-Spo鲇ǀbd44jdN%}OyF@56 0`s*S|~PH2 "q@f-Stxs졻xEF!]9i~7lO{:ٴ?v H322 ]#22kɟϿ _/Pz6 ]fcs*ԅqQҫ; dl:lOSסW_>hN422?Mԡ/^( Gl֒?-2c@qG逌 Ox6t=z/%c@Õ͙4W9i_.~A}?G#2 )2DdN%??_Ѝih82?orDܻwXFJ52 : s*ӽ曆^_kyH= sFYKt>MC׍b1ǩC'ڌ̙4¸L#j"؜J,t~9.a3ȜI̩W~_y ?9gl֒? _sӯ^\g@291<9YG4M72}s~I6g66? Kx k{@T#ኌZgCP|e9[??-{\9@Jج%1uǥ;,tP4t/s|3qƦz؜Jna\oG۾: %9zS-Î>-t@FLYKn}߅~b$%l6 Ljnc@ÆLC+22[~}.Fd֒[~3-ߠM4tج%~@H56t"6kɿ<|>H2 =fZ.ڴF##P2q@Twa_t>_ayaFFB>l<~ ]< ?iQ+Zwa//K=MCͩo>yƦҁaTwr@帄} ؜Iif66n;z J52t@f-:=6-&Ugt`֒0.졻9}y^(!"fdd֒^}ݳ0G4tMج%7-=t7 Jij҆ZwrCwCřjdi2k-}gBRdȜJn~o}_MCYK}=t7tLCÀZ;1LCCDFT[? }ZŸ00Gl(VYK~z~c+4tRج%?}ޣ/ai( lN%:~8>J52gt5qCf-܇qBJ=`H`l֒to i ՊLCڐYKA12HܐYKc|llڮ >r|~ܗjCR؜Iׁ8`s*e?}yCw%S̙8 s*{]#/>H52kɟ/(&ihKϦ#>7h2 z@TЧнp/h40ȜJ}&,wv"4 l֒=\Я@ܐiq nȬ%>,?z/%c@i`ذ9ͩݏ>L#yFFf-q#K҆LC[EFf-߄Зm$cs&@ܰ9뽿;_P4Á9Жf-jCqf؜IWSͩ 0~/c@>flJ&^YK>F'$7zlZo\FRӮeB'!H>PZi#,GeC1MC̼Q֒i9+65%%졻4ȜȬ%esy%O]QMCfl֒ {* 3z Ȭ%4~P= #ӐfYKi3:?gLC G(V|Ŧ|f-iF?op4'҆LC3Dd֒ZBwvA_|a6ZOKw?ޣ3MC+Cf-ﻟ:u=t74'hYKip 4 #!7d֒[OzP:fl:$YK>pŦb$؜Jc>goLC{8dzjd֒ÿN{M @x抯%M?q (Fz@f-8-7ٯQL q@f-cm@CEdZ/~oFCwCMCCdް9m^F+22{賏 &i!QͩؽW҃*6Jܰ9|ǯꗯ}B1MCqf-?L/?W8 |>J>:iwQI2 Z+0 wn2 =LYK>79:҆LCiCdN%؅A: #sFZǰ졻22 22_ߺk_KǀjeN8r&͉40̜J>ң+4t=6kɿW~ƟCM# SɿW_v_LC_KЗKP2 ͉!s*^jdVT#s*7_OС:M#qTe]w 8X2 ] ?}_}9bTS8N b>7ddWddN%=t7eC @Cہjl֒2^&ǸV<`sFD}`=>_ m4P俎}_PH2 iCT_p.{gL#<ʩ5.?O66 mIf-y JddpEFTK}7y 44$ddN%1vԡiz r~b%Ul^ج%8u Dڰ9as*yn/B7oLC+: 0ݻ[> 4uHҀ̩<؜QGq}!2 22kߏ~ǀ+22 Sߏn~\&i F9XIf-_oP$c91<9YG4M72}s~I6g66? Kx k{@T#ኌZgCI +\{z0h\{zTmFi 2m+>/b$+e%h3q`kI0d={~ح;|]\\NK΀2^o$/ܳaP5_Ϻi4,0X& Zh ڌPkP»0XN +ӢQh3B9נȻ0X. y  ld +d fY6l$Fx,O d0QoF=*6#ZƋ0ܳncLF/u a0@VeÐRQoQ e% . lx?ϫT@ +\(G ڌp ?vU}GpkI/ٗv2hFXȷ 6e6 dGF!ɧQA8el~^٪ cpRZHfb]\Nc$p%unu2֒nNAQkIg_R[$p;u"ɺ?QkIg_R[狅|Fe% tl&Fe% }In ֍XKup2֒ξ08Ngԇq +\7 qݨGfXKxV{ap\2Z@xK;p4 q4QA$Յ !/?!֒*ua8ghS#-˷oߪ082À3W]@[n;c!8C4ۖqyvGCPRNT37.BASd  !"#$%&'()*+,-./0123456789:o;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abct Re^"POmK2_6 NYR϶mTjZ|Z>PQM-"6?MQ% .aCU(ׅy~9|.wT>.̛x?$0x6 8gxwa#dza=XK(ׅF'TT :/3)Rfi/U!֒*uaSlU1wn5ݡ\ۭ >e$r]S4N-vQVG"WU iSOLdTxCEoTp{_Q2(M0,a#h3B߰A l€)6}ىA l€ CߠT&KvΖ T)S٭'SWSO]2{_Q20 +mF1s€0n>m9Dچ pXpvmPQs3d|2eb mdɶmpvaxzeMϟdnc0||>uF0| vnc00N6O6 8?1`{ _wvz=# 80Icʁȳa=Ɛ6dTx"L n?TLg+}Srߔ qY!m>r6# MYpcӖCo8;16B7ܛ0^7(չI/€{Sqc*ɔvk*ɔ}j'ӿ.(M 0ބAV79Dچ b, dͧ-h3BYpo9A۠Tfl# d6Dɒm0ޑA6 gaXmr:#mp 3qUG[n;lq2֒|%u9Hm y e% z..=n'QkIВœXʆ2֒D:6:5R-SNc\S,Ւ:D:6Ӌuj{K_g2$ ұX!OH9M¬SbPNc3e֩J D:6ӓU|,3(=?a!,E&20؄Ag) ^=qZv7׿{c!q2֒V&a.L­ex_wO* !֒*ua8N֩|zvzWa $PQ YqF @\0 b-I\Ou_q ;i?+? =ȎHR|N€/F=*6#\'z€b-I\Ou_q ;̯0oރ/ʍ$g0'YGF!ן>Gf0XK(ׅdfz_2H< <kI0|MSgVOj==VzO7XAvFgOz\{>Gf/aay $PQ ×:Vnp5aqڭʍJI$g_vT0Z@E. FSlx^oݪ%w SaMb-I\/#f*w}}+>b>{^Wx>_[n}z^7a$r]~u\z޿a1=+߭g7Wx>BUxKXK(ׅˈ_IB:>$r]Ϻ,xxGXK(ׅh:n$)> "?(֒*ua2x֍$gT" C% TS/֍$gTg]2$r]~Ϻ,0. $PQ OtjHR|JE~'XK(ׅhY7RQa02AE7}h!G~s;QW -/0H8C9oPQMuID~'vYMF mR4*Sax BˋF )f2A ~a$ BR7@A90H& $PQ s)S 8 dkI0|M7/ cxwzw~ڡ?0AITO~_0x u( ׍zTmF⌠y5_qf aCkI"uF!D/0Ię % e% tl:5R-[]b]$:_hI]a3 2$ ұIN||S.q }}H),U})gyzvsڤOXKqf 2֒D:6Sfv?b/]kw _2$0ܳa#YSLcx5]gw02!֒6^_hI]aN,R[e`XKxξGwEqɣ$qLٔ!֒6^_hI]aN,R[e`& $"(wZR×qjI=EJy_ULْ!֒6^TzX/e',d~D}SvdЙ8k );1`{ C_g_= $".L¬[][ -+%̆y $"tl.֩R FrВ$g6 &,a$AcÏ֩qjI\xV&BK D0)C% l"ijN+0 .oDqŁkNX|tv[<Ł =v[DqŁn>x oсŁ zNq!pQ"Q pҵǧN|5 =\}6ŁGy]{.yO~5 \}6ŁnGy];`v|곱f o~1ʡE @7 \׎N0,q;Q>~s rò!E @ z\׎U`'};.!x}Knt5e<\3!:pi[o_v {tmOX޿ӮkǣNe*AKRP+ή4cq,v< M׎z\޿khk/(zDI%7Qv| [oaאsל׌o)H}Kz͸!` 8Hc3wIvс̚.Gp"&p(]{r>Zs˾Vδ̛ٚӾKX=xNܵN5mxMkؾ`~^7a hZ'Gyk8'W&|o]1ael(X)wQ@Sй/&iϸ^SE^&`^R]$ o nVFZsl@N|x%^s:9[y :$E3N)"3u" o /:uan/0Ię 0ZƋ ұKT/}RBK D0%C% l"~NUzX( -+Lqf`Ž $"tl8NTdg r/R!RZRW$̆n'Ei_F0eFƗճ֎b-I`EΗ.ouauy p|%uI"lL؅!֒6^wNCG*[]Y0 ZRW$̆3Iqgᗭ$LK^WZ;$vR[]b]$:_hI]a3b-I`Ex'T> W.ouaf/0Ię b-I`EuܭzNu})ĝb>{^Wr~sֳ+(" &$r]Ϻ,xxGXK(ׅh:n$)> V,!)(X N־us"{UKXq\Ej` '^s:. o )xpQ}S|W=(RUMZD@)@VMMo<φ?;VxMPM]n Is>x; x ʬ] ֹ* o }W*x ^aMҞ8|`#7ᆼ5ܵow}SO~o(׌KXsCZFyk8_+a;ߺ^3Is ykk; [yщ׾vWd$W!o wsyk8/wG~o]}ٽf$W&|!7uUʙz/E K~MCF_~[+t[#=][}_}la)ҍ[#x"o]! "q]!) "s]!}o|gCڼ[bk:u]\C[ \DM*sGp"&p(]{r>Zs˾Vδ̛ٚӾKX=xNܵN5mxMkؾ`~^7a hZ'Gyk8'W&|o]1ael(X)wQ@Sй/&iϸ^SE^&`^R]$ o nVFZsl@N|x%^s:9[y :$E3N)"3u" o /:vzGUARD.BAS?  !"#$%&'()*+,-./012345678o9:;<=>'\Û] wD׵UH _9̹VƯ\ҹyS϶ϛMuQ iDkG54 ]{$Gkz7vBy\`8$]{L84F?s׾}殗}>v¼y\ԀH E;a{Dj(g: >sDj(us;a-p]N7 \ԀHW Ezv; yO~5%gCnGy]FA|곱5w \ԀH7Pu; |곱5]v?>D-HZw z.сlBZԣt{ z..jZ z.\`8tu ZP+F*;zsZwсlBZtmu\*xG/?HQ`'UE 6ƃtm= Mփྏo[oaڐ5(c/E 8`Ѝ5#4F?syk}m=^|Z"5 :Q>_8PC<֮O<~Pkwxp(>Z:~k.zszrkRo??.F.jP tI wF׵G̍W^cEkxQ`',> "#$%&'()*+,-./012345678o9:;<=>?@ABCDEFGHIuó֕Z]p/Sf͉p'\_}w7o|y΅6׌uxjت.Ea(6Fe]S -FÕZ66Z6#^_]=Ӻ׻q};nƇ;<q<6>>=էWZ7ѕn.gɵ厎^^~ҺO\.“k{ z9py`=_oIkՊO ^?]xwG'u\R,>!a(.mVlGJ ^ >-֕Z]諦L9zFx@9jqh ,`AUSηxAT!..傀2W2/\ X-q.ǿ06.&P&`j1RUS&B]b a 9\ (P&BYb ap;ͨt@p6FަUm[mav*,\.ȝ6C4SL9arM7C7DtZb ;m MORP33A AQMMORPAT AQM vMORP33A.ASML  !"#$%&'()*+,-./01234567o89:;<=>?@ABCDEFGHIJKuox9^`ۻ0ϯ?Ο?>>__<^]=^||yƿ9-~N{mzZ5 -9c>٢W'<\Ʀdw>5+|LXxS FSh~ocK*<~;'zWq\.x>+>٢@/W_iOtp]\kz;>ڎKs7٥?auZ8 piZKauڞK:ոKFrxAÅQmQl'r ؔ쮞 ?}3Z-ܶWLz2‹u/3@2¸gX[. &\:S7bn!< #1|0Hj,ƒߠ{`Φ4gX| p6bwQX88StFe,L=&/.0_LWEXx8VJqZ+.ߊVﴠ;| -a] iiV|[m 8/]i>;EŅvftC4)f& wt3>x䍡o7|0 рb ȝ6݌;3dgh~ lPѪpq..=jp>*8:6|BIus& N娵nCEqz\!*v]ܯ3a"aL6\{0C#L p0CMDI.fh3):)>!X${g)!x#ͨ.yD;-ii:FE h~Q,ڈ "jt7-a-N!,Ҝ(kC4&Ӝ0Ӻqrh -aE (݌[3Vf<34-|0Ӻtg鍺p6%,0Ӫq !ب*L@f|{3Dn\)aE (V @QQ-NnƇwfNN%,0ӺakʌwwO>NFi ѐ|TlT0ӺakÝ[Ci 6(ihU4'58yFAz >Oۤ~zJZa7";v?CsOaEGhQZJ-x5# |D0j@Y$;mSAW ꤵ6ǭ00Yc|K?E;*75׉{*vxMORPAT.ASMJ  !!͐ ~#fo͐-J!"X͐~#fo͐*X'#|Q&TI3H *X͐~#foa5|ʋ&͐~#fo|ʋ&! !u' ͐~#fo|±&*X*XH5s#r! ^#Vr+s'%*X͔+͖*X0H#|&!XTI3H!' {2X{2X͐L͐*p)͐͊J͐*,L͐*͐(M͐* !'5!9 Reorganizing: %s WORK-LBR.$$$Copying: %s CRC error in %s.%s: %sReorganized. !9DM͐G`is#rz'!͐͐J͐'!9!9DM͐*Xj(*X*X͐yK*X0(*X*X͐VL*X5(!*X*X?*X5"X! ~#fo*Xs#r'͐*X͐yK͐ª(͐*X͐VL͐ʯ(!*X͐k*X5"X͐!9DM*P}+)!GA!! G*X&*X}?͝)!M))!a)!b)!5͐͐!*X͡7*Enter -H for help. %s-%c %d/%c:>!9DM! 6! n&|ҿ)! n&`i! ~#fo! 4n&n&|g}os~)! s! s! s! ! !*`i+6*X}DU*LU*NU*RU* -u user/drive default. -x eXit program. CR also exits the programvRLU310.UPDO  !"#$%&'()*+o,-./0123456789:;<=>?@ABCDEFGHIJKLMNoBk\\]gq:{B Btznw/jy<\ kS n_bRx}ˤy%%WÛ|,x} nR!UnI Se)$ڢs2"6m 3A@j{`2X!B,5!e,5!x,5!,5!,5!,5!,5!,5!-5!-5!+-5!G-5!Q-5 Operator Operand(s) expected -A Add u/d:file -B Buffer size sectors -C Close library -D Delete member -E Extract u/d:member -L List directory -N Name change newname=oldmember -O Open u/d:library -R Reorganize -U User/Drive default u/d: -X eXit [User number (u/) and drive letter (d:) are optional] !9DM*s*s*s! ~#fo͐ ~#fo)* s#r*6**s#r! 6#6`i6#6͐BP-XoO5p–ILqOLHaV+,!%#7xy ̮mZFL) mf 0H%@ut8 ,AjzヌxǨ@}-\灐]wK 1(uF3:cxeܒ:c1fB)ւ$bP"g< mcp?B"nIzm>sb-XowKA3?1OnNӃ5A\ 7)"'7<2)$X2 ,"MI@XG 7[x_=(xR(!o~ Hk!Y n ,!%#` ܒPkgs)dpK$z8%dX&t,Ղ湷E*+ލ%o(»UA7)t-ḮHk!Yp˿/-x` %u=f 2BEL:') $p!ݹ7Ϲ%yYL %uƊw +N#~hN##\NxSڬNN NEXECL: Command line overflow $!pN!*w#¸N*:1N*N!N!a{ ѷ!bkO{ozg7*K*M~#4O*K7*M*K~#JO+w#QO*K!9~! -!9~o&a{_o7*K*M›O#ŒO!ɖg!9~!0:,!9~!A[,DISTRIBUTION OBJECT CODE LU V3 R1 P0 (C) 1985 GPN BRIEF SUMMARY OF LU310 OPERATORS -a add files to library. -b buffer size set. Normally, need never be used. -c close the open library. Normally need never be entered. -d delete files from library. -e extract file(s) from library. -h help table of these commands -l list directory of files. -n name a member. Renames, example: newname.typ=oldname.typ -o open a library. -r reorganize library, eliminate previously deleted files. Ax[8˴Bv0rMDR8?{|رHAYk]s3 AFX&+Sߺ02!Sjq$?/^|:~w:};${Ɠtzwz^<OOg<tƷZxp!]N>]}-w[Jtzw]|=]};/>=]}Z^4m-%jψꢱ+ 1|_Oא#_Oא#UTE_\3$$zEJkRZh,B !!%d bxO:sHH|c%R~ψ}Es!ꢟ!!%Rz)=яPEuϐ)EKbߏPEuϐΌM W93#C )+.m7T]spLnΏ3w_vCَ9]Hnkm7Ǚ/KHE0ޞ*_'/!bhH|!&k!EFH6tG1S)@mZ$T dIc0S\3Ui!ЊbhEيGE1ZQ~C 4>c}i|>5##34 4$b4(@Hy)ohb:@ #Ki ih_ z4xK+'!W~74AH0La%HhLKxb4ih? 0CmREMARKSC(m * ------------------------------------ * | LOG.CMD Master .cmd file for | * | ham radio loggi OHAMLOG DOC HAMLOG DBFLOG CMD!z8LOGENTRYCMD8D ---------- DOCUMENTATION FOR LOG.CMD ------------ loggin syste fo Amateu Radi writte b Orbr W Bliss W9GEK/HC1BW. Thi syste consist o thre file beside thi documentation. They are: LOG.CMD - This is the master command program LOGENTRY.CMD - A sub-command program for data entry. HAMLOG.DB - Th basi lo format File ma b kep unde othe name usin thi structur an accesse throug th system Thi lo mus exis o Driv B an ma b use o lef a structure i make n difference I ne fil i started th structure is copied from HAMLOG. Befor usin thi system mak backu copie o th file an the using WordSta i th "N mode modif LOGENTRY.CM b ng program | * | Written 6/84 by Orbra W. Bliss | * | Amateur Radio W9GEK / HC1BW | * ------------------------------------ * This Command file is set up to use data files on B: * Three files are needed: LOG.CMD * LOGENTRY.CMD * HAMLOG.DBF * ERASE RESET SET FORMAT TO SCREEN SET TALK OFF DO WHILE T STORE ' ' TO MFILE, MDATE ERASE @ 2,10 SAY 'HAM RADIO LOG PROGRAM' @ 6,10 SAY '0) Exit to CP/M' @ 8,10 SAY '1) Make log entries' @ 10,10 SAY '2) Search a file' @ 12,10 SAY '3) Change date' @ 22,10 SAY 'Data files should be in Drive B' @ 23,10 SAY 'To exit back to dBASE press ESC' @ 15,10 SAY 'Enter number of desired action' WAIT TO ACTION IF ACTION= '0' ERASE QUIT ENDIF IF ACTION= '1' ERASE @ 6,10 SAY '1) Make entries into an old file' @ 8,10 SAY '2) Start a new file' @ 11,10 SAY 'Enter number of desired action' WAIT TO  substituting your own call letters instead of HC1BW. A hav i se up th .CM file g o Driv A alon wit th D files Th .DB file ar kep o Driv B: I i possible o course t als pu th .CM file o B an the us "SE DEFAUL T B afte startin dBASEI o A: HAMLOG.DB furnishe th structur fo itsel an furthe file an th res is selected by menu. Start the process by entering "DO LOG" and follow the menus. believ tha thi syste ha wid applicatio fo bot genera loggin an specia use suc a contests I yo com u wit embellishments, please let me know. My addresses are at the end. Do anything with it, but please don't sell it !!!!!!!!!! Orbra W. Bliss HC1BW/W9GEK Radio Station HCJB, Casilla 691, Quito, ECUADOR Box 553000, Opa Locka, FL 33055 DATEClTIME:ESTClSTATIONC lNAMEClQTHClRPTC mMODEC mBANDCHOICE IF CHOICE= '1' ERASE LIST FILES ON B @ 15,5 SAY 'Enter name of data file to be used.' GET MFILE READ USE B:&MFILE DO LOGENTRY ENDIF choice 1 IF CHOICE= '2' ERASE @ 10,10 SAY 'What is the name of the new file?' GET MFILE READ STORE TRIM(MFILE) TO MFILE USE B:HAMLOG COPY STRUCTURE TO B:&MFILE USE B:&MFILE DO LOGENTRY ENDIF choice 2 ENDIF action 1 IF ACTION= '2' ERASE LIST FILES ON B @ 15,1 SAY 'What is the name of the file to be searched?' GET MFILE READ STORE TRIM(MFILE) TO MFILE USE B:&MFILE STORE 'X' TO CHOICE DO WHILE CHOICE .NOT. '0' GO TOP ERASE STORE ' ' TO MSEARCH @ 10,10 SAY 'Search for what group of characters ? 'GET MSEARCH READ STORE TRIM(MSEARCH) TO MSEARCH STORE "'" + MSEARCH + "'" TO MSEARCH1 @ 12,10 SAY 'In which fie* ------------------------------------ * | LOGENTRY.CMD | * | Entry routine to HAMLOG.DBF | * | a subroutine of HAMLOG.CMD | * | Written 6/84 by Orbra W. Bliss | * | Amateur Radio W9GEK / HC1BW | * ------------------------------------ * ERASE GO BOTTOM * -- initialize mband & mode here so that they stay the same until changed STORE ' ' TO MBAND STORE ' ' TO MMODE DO WHILE T * -- initialize variables to blank STORE ' ' TO MRPT STORE ' ' TO MTIME STORE ' ' TO MSTATION STORE ' ' TO MNAME STORE ' ' TO MQTH STORE ' ' TO MREMARKS ERASE * - Other Stations Insert Your Call Here ------- @ 2,21 SAY 'LOG OF HC1BW' @ 5,3 SAY 'THE DATE IS ' @ 5,15 SAY DATE() @ 5,30 SAY 'TIME ' GET MTIME @ 5,42 SAY 'E.S.T.' @ 7,14 SAY 'STATION ' GET MSTATION @ 9,17 SAY 'NAME ' GET MNld is it found:' @ 14,10 SAY '1) Date 6) RPT' @ 15,10 SAY '2) Time 7) Band' @ 16,10 SAY '3) Station 8) Mode' @ 17,10 SAY '4) Name 9) Remarks' @ 18,10 SAY '5) QTH 0) Return to menu' WAIT TO CHOICE DO CASE CASE CHOICE = '1' STORE 'DATE' TO MFIELD CASE CHOICE = '2' STORE 'TIME:EST' TO MFIELD CASE CHOICE = '3' STORE 'STATION' TO MFIELD CASE CHOICE = '4' STORE 'NAME' TO MFIELD CASE CHOICE = '5' STORE 'QTH' TO MFIELD CASE CHOICE = '6' STORE 'RPT' TO MFIELD CASE CHOICE = '7' STORE 'BAND' TO MFIELD CASE CHOICE = '8' STORE 'MODE' TO MFIELD CASE CHOICE = '9' STORE 'REMARKS' TO MFIELD ENDCASE ERASE @ 10,10 SAY 'Do you want it: 1) Listed on the screen' @ 11,27 SAY '2) Printed out' @ 12,27 SAY '3) WritteAME @ 11,18 SAY 'QTH ' GET MQTH @ 13,10 SAY 'RPT ' GET MRPT @ 13,25 SAY 'BAND ' GET MBAND @ 13,35 SAY 'MODE ' GET MMODE @ 15,3 SAY 'REMARKS' GET MREMARKS * -- read format file READ * -- check to see if ready to exit IF MSTATION=' ' * -- close file USE RETURN ENDIF * -- add a blank record to DBF file APPEND BLANK * -- substitute input variables for database variables * -- substitute date directly with memory date REPLACE DATE WITH DATE() REPLACE TIME:EST WITH MTIME, STATION WITH !(MSTATION) REPLACE NAME WITH !(MNAME), QTH WITH !(MQTH), RPT WITH MRPT REPLACE BAND WITH MBAND, MODE WITH !(MMODE), REMARKS WITH MREMARKS ENDDO RETURN Other Stations Insert Your Call Here ------- @ 2,21 SAY 'LOG OF HC1BW' @ 5,3 SAY 'THE DATE IS ' @ 5,15 SAY DATE() @ 5,30 SAY 'TIME ' GET MTIME @ 5,42 SAY 'E.S.T.' @ 7,14 SAY 'STATION ' GET MSTATION @ 9,17 SAY 'NAME ' GET MNn to a disk file' @ 13,27 SAY '4) None of the above' WAIT TO CHOICE DO CASE CASE CHOICE = '1' ERASE DISPLAY FOR &MSEARCH1 $&MFIELD WAIT CASE CHOICE = '2' ERASE SET PRINT ON SET MARGIN TO 5 DISPLAY FOR &MSEARCH1 $&MFIELD EJECT SET PRINT OFF CASE CHOICE = '3' ERASE SET ALTERNATE TO B:&MSEARCH SET ALTERNATE ON DISPLAY FOR &MSEARCH1 $&MFIELD SET ALTERNATE OFF CASE CHOICE = '4' STORE 0 TO CHOICE ENDCASE ENDDO choice not 0 ENDIF action 2 IF ACTION= '3' ERASE @ 8,10 SAY 'The date now being used is ' @ 8,37 SAY DATE() @ 10,10 SAY 'Enter the date to be used, mm/dd/yy ' GET MDATE READ SET DATE TO &MDATE ENDIF action 3 ENDDO while t SET TALK ON RETURN t>jԽ陫ݾbŁ cgU#׷*t:ǔ]ް]䠋C'Uۙ8.oB~[yK~;1 wݾvuV/ 7vCaNš[6Ws6(?o.scۏYENТ7yazeqx \X7|s$pt ևt)nj+k t~8Kby.e2paU sjB;a5njk VH}Og⦶8@?AQBCDFEGIHJKLNMPOQRTSU&VSXWY[Z ]\^_`abcVdfeghi6kjmlonq>sprtuvuwx2+zy{|~}:3MuqMJ;3{gngU˛*tqz%[avgy45LET8TrDoB~w+trЕj ;7<ϟ;v8 y<}e.;;oB~A~ZopZFar쓾U@5s3jšlazc=7|7t$e]iX1;]2<]ևJOKH"8K)H=,ZUC.PnMPU](?oEC@)/VuxbAljFIÑ@otyfnIV?ozN'sSU噹ɺ#'Y}}Ӟehr.otyfnIVh WTܢ7t4/u 9OϦb?5oxNDM{̍Q,z;yoĚg.I$c9]vk7ؚw7YRٟ?%kS[&Y jsg8<'2{< Y(?sjn඼7|s$bw$:&"vGN[+䠋swvgahi.s}Kd3|,*yvYHeʢbot?KH"KdM8< 7keQћa.$M8<E;2޾e=ND1OE-0I,94KALX'*s*DEN7YωeFa$'3Yu\wo3ɉXA]Qf/ sֳ!8&(zCW:lAHR֥FʋڙAVvqз~6o:{\).A(,wogO-gj2939:8SUg ;:MU ="IYv)/Vkܺ-t}psSۙA8a|TԺW%AҸ)鸉3e= e^vYW%4nZr7|ÜV$)k9Mr^:7̙b= u$0g{JQY׫7̙n.JG 0g H.R֑zÜ&8&( s[+$9ӝe$Lw]/G 7|CAIʺo)/VkgU"2;]FI1Ֆ=uDnL㛒enǍ%sqg6k~UzŚgh7ݾtš&y3*cڷ };3T]8dӼ4y򊔷fp~Fpp*+ ʛ- ҕB:+̄''ByK3We}ȵf98`j[}EN=o"&B"IY7V9 czqIF jFɿݧb}Kȍ.-yQsA+g)v#|BFahr-yQsձۼaGЪaz^K#7|7(uiђwZ0q] UVX̧Xqysc83ulڝ*f>Z3}ҷJY#/:'B5jgtB^ܬUcf5otf 7DuuD.'ngruAlGs5Q"N4.]MDNDP4JzOStxt$e]8#Gk֙MHR֥] E&\^]WAW1, 7yFT?nͳhADBoet-:vB^tYM>+IʺHyZÙA2޵)ap] O|o.C򛎒šp}o})o͛of7{K~ԾA{KлXbuwTk +3Wӷ.:{۷77 S$)̠XokSð]9*WTkqR˛MHR֥]4R^֛^2WJa7h-A#{S7MAY;αf)P7/kYθN3*cŁT[OFOA+%s:8Go` Jᄼ. ]鹩M: 4\3*cq;"g!\S$)̠Xk:{t 5l%Og`"tqpPLPO !qFN9]jW&(է$4#֓SEzצ$:ENzo˂|}&-zIʺ+JY?w8!(MmgOo+g0Qe'>aŁYOCSU}7S[h򳟛E?L'@~-p1ћbVCo[ ԽO|Ł[raukѹQ;93r]Wf eq뛇q󂭳,ܕ? +P~o3AVm7q=W~:!vfPejšYeN+?N: -]pz8K5C Խi熬'}S$)|֡to,ošCOߠf 3OThDahѠ-WA>?4oxNĞSz6YJYwc*Zż37j߄8zK B~MSkRhqxЬ31U. Iʺ_3(o:{t 5!}9GoO:&)5nk<$]3U.MU 47_vox]3p󂭳otI95qY ԭUK3|:X𜡂]o.e*xs!e&͖>}}3 y9t7/?l [7|gn3AgZGf!"IYvB~s,rXEY?Kj}+[C)3!oUmYf>ہ[u:!^ʞ^ kO+v kp_/Am=7Oy§Uleϰ#\>ngycZeC=U Pb[Q*tIJ]Aׇ\kiwjrsp8-z?KBˎpMaVboV *tq&MߍFkok'n<PZrgP~5QA=sU}7h.?qzצ$ZUu }RPtšϿoSY4tt|eSao^ՖoCbv]:Fs۟&7/x?w( mfͯPrM2?7U7| 7蛐߲uP.oruPšY'}:Jye'ehMmqϛVB& vf{MLC]AmiRݒaB89Nk˜8Y:S9\'}ྮon&;L\~n6n(>>)uWC>?f v7]OU#"Zsf7XzqILj (VD r:K 07[YXf\If!T,n}9ɁakyLV5[Vtf7%Ŋa3]VѮ@Fvn(Q>9 8A߰[2 ͓ lڷV>[ Խw}K:,=}A 3vb9Z<EŲ}sNK8_̪-kΚd8灭,,kouqмAaoJfvYfVh-yn.PdnjvYΐ[/ʢbYvGCwX`7!U|3ʢbͱ-ܖrXvo&7kbVaqbxYe,y})/Vk3 e)( w:7e3s۷7lš, PȠgySaN:E.4krNp7ɕoiR*on<ϟ;osae jV&ӢjtɁux] d NGIDG_sbU (gP3%y)(;GC'V~:Tob?[5] .q8h^зU>'"IYv)/V Eo)P8ުaJotI95I;by: Ng`"wZfйO)otI95 Rlr)uibus7Сw˄'BWN'uuUJU>AHR֥Fʋ &g&(t|}.gY5CnZi-?/Сg.h .Y~:teaMPZ7 s3\MJsʄ^ 5ӷt :. lg> tqP$)ҾqgU˄Ap5 [4yFn:W^gު-c&][4uqPЁvSoq%OЧ>Z.P`C>o>jlhx?e|h']Joylufrsc*ZE;9P 7 jޛ2 }o:J{;E,ܕ?qӹ_ GkYμǬWz<-wIfևing)I߸usS{KYt5tfM2[V|8AJo7y)uibޒN]}q8-c@ɂ?s&bA[аta|vr;!3׮Ygc.B5s&bA͒AQ`}pG8Ia3lAPL5IaMnsTB8tqnRX5 K;t)oQv8@o:]egBtnla,LޠMVz˷o+֡h:pIaߚJh}/zhѠf ,ۑ~O^If05 KvP 7:9?LECMhp]4/1_ zovt’Ng:9| qkE8`A8nbͳn ko]P@7t)⸉5Ϣ~&}+CfY}P39|u5&ۙAAt՜}X']>76Cۚ>4Jg E+P ?>etq(7M,y:ܕg]鹩 ĉۚ/.}r~29JouPpSMlo?Fס vE?YvYvp][VuuOoS ;a.班qS{v5M:u5YE&]Z}MT*t25on8x]|ͮonixٟ?A߰pآ>'?>;.Yfo\775l8k[3!O8f9}y*:74kްi<7O͚OCSU}7yܡ0\'pn 77k|p79[ey1 IaMvq8yMmruPm yrK)3]JMmrй(]2kbRf:eqjyp_N]}$kWznjK~s0N B'~ swX>gM2[47k}q#CTa v_*t:ǔ]79Y<9,5kbo.IfV _']rݨٍd?;йV3WxoIak:Wv3sLKޙy9e+۷p;37g&]QvcA]6!Y]:U[W~&yv]- u|}K~C jgO9^MC]:o7&]yu3<ϟ;]h$kYy y]}צwoa'\ ]Q Y&rruQ tvby@O,Ԗl'd}KW)e1@[.班卯oWcˬIf ԾUn鷋C&-z+P;=y:Y2nA'dsз[E].og&vA7oC^i:*zo98z-sqtx?w( 7!i^rk߲.4׼A͸8! t2&:(_92gkЄp?;U8ˡc*Ֆ=f68v:ux^&K)3]Mh86lI&+s&+1YgcNU}7wT:*]o9e k2[r}qN;l>~foba'\oIPLY;e+gM,G.ټ`}:( lz7|c0y._;Mm$tMY,ܕ?MU ߠLDBB~7 :VmY;xG"qLPw3k߸5.oB^}%zkX7.Ο'}K^Un?oFoPLY;e~vo$%_?foBIX[b*lћ*tq&pYև ;·TSo.NC:.NȂF៸Ԇ5C>섫Y|7|CHHHo7<ϟ;G&t %O߲-[p[+~Mus!GK~٢7YNTYf!\t(+?]Y\ jְh.o.,*XX4t?,vgUu]w=ufr8`Er4!OWwh:eG8o$ Du]A@ 2ht' tp?M8Q vOȓb*nkeQf$Ehq`_VѾӟ?vyvS$).}'}77!}tVAordÉ*aψy*:O^s7|C]/G 7|I|6<PoVzf!|;3CfaWpS{n{[To=}+kb9z+o&ƍkY;YТšb Kg)QvvGC` LÎ }Cr7'a9_' j䠋*qqBl.utrp4C@t:ǔ]:&6d!h>']-+08zCa;z9pS{5Ǭ7UaM7y.T}+ ~vo~njop_Ca̠j٢]a4ht:jJt]A5\aTq t,*v,:y e~Y]U p6jk1U s!G?%A.0q49~:osᷦ7yK~;1 wYGo.o.o-:ǔ]:9:xvdڄOoPMfMrJ~k*!_熬Go"[A@ ]M>< /oO븟vb+ ]2ڛtqRf[tݴ^ ߠ?/o'pA_J[tAQ`,x_ lAS$)Ҿyܡ0 O^*إ?NhO븟⦶3[5C-:ݾ)ARE893N=Ԍ u$"8%I#OFޙQѲ r>t &]2gk2ņ2/eY ߠ?/o{ >39392gk7op_ hBiMAHR֥ [.:ǔ]>:Îpx?w( q4oubaDux߾9^']jFERt!t4!\p(tIJ])ui772GkYQv+ i[oP8ybRnX3ENgF]WmY[LaiN]Ɵ y:9<!]3usOa&qqf[E8&MmC/}5IKʼ04tgoE8`gZgs*_ @76ul&MS?+&7|ÜINz2{9=?@BACDEFGHIJKLMNOPRQTSUWVZXY\^]_[`YҨe[Etq 220ŅV.[v/%ە#jXo~ 6e..7bn߲>*^:cvŅV^9]Y+5Fw.s[Nsxq";g!Sm"A?NNbjcT7v٭GNDC0yEѰxKh*s "'(+-Jj~NEǨ~o~2[;^7;,;J Д@r9f+n:N^q J9QnNsr[X:a<,]=GŅV^g_iW:g?f^\h%ܮܜ M W>WShQ@BxCS;N^=pD!Sij]16|l պRcl''CV;!ߜHC5\XDC5\Wj+ۛSiȹ+}hȹJHCV+5]=m+/.:hN9{1kB+Avohʵ- v]h;^˝:Z #NY[s/zE>vݜ M hVn9gݬve98y506.`raATD|ܰU>W|ܰU>Z&RclNNAG X3yEܙvGr{_j)PTL^Qn5PThVnșE}߹3=*-ʍS9ѳI>W}߹3=Ke[mCxCSwW ʍ2]N"GN`T:SyǨ~o~2[7=#[Y5ƿoqX 6>@ l @Fv+}Ǒx+r5gd{&_'~"!hND|ܰU>W|ܰU>Z&Rcl<93=7bsg>zn*-M}16m' r'BQ3yEq'ai K맛ŅV ~!k(L`ŅfCXBSɊ.ؔv PCi]N5pi Pq9/;PZN+J=%4])'tqY Bs^Q,RyeT $XxsЬESa:eP\rЬ-i,i*.iL\jv:N^1 ;X,NS9]\h-;I"ewB-#؇tqY?$9o(Wdq:JvJBfߕ49z tqY8Y;EtqYӰ PCXBRÂ]N5-JZ&tbNZ o]\d=`D"WjS.Z{iW:gq?ʨJN9{Ë 2mN9{Z+tܕٳw?ӮtΞsŅVv!HpiֳRcl']B4 M W>śS2A-67'~"e'sj8 œ`C8g3 M؇FxN4y\1u}}2aݬl Tޚs?'#ccƀ952nVovu |kNWը;ߌiݬs͸o߀yݬ@u75q/.2*hhzohJ0q-ޜvsǬË Ґ崅V<,]=GŅVI,AX jω&)g7'tjNk|vsc>Z :+7 iNX #'\a5_9 -,J9Ǭ}..tnWnN4 M W>õ95WaNb jP ]7'tjNh]=GŅV͉&)g7 I,AX jϜhlaNh]=GŅV͉&)g7 iW:g5~xqZbN[Xp'BQe[qߗc)PTL^Qn;2ܸKo;93=K3yEm;ѳI>Z&}_jД]Fv2]¿:0BEtH7 b >7;,;ݺY |^:16,r FC_m9ŅV.vGCC3 >'xCSkohJ=`5]]@kNT n55'xCiNTFPۨuԷ9g Д迂ȇhK#Kh`YkNTF@>D[)tohJg_j&_s743`B۱an֜ M~+X lkNTFEq_ʏ9ws-֜ M~+X@ ~[ mݜ3ۚ)k4R~nkNTF@.Fm&ךX.p^9]T綜B+;TvGCC3)'xCS?Wr| M W>WSZ)^.6gX.-v!4(4$IDKd)6j=+5~4/+piJ91k l΂7c)Qjɩ|loN[X:a<,]=GŅV^g_iNX>9{1k ەӮha r\$߹3.mKșpi|j}D|KkEËܖ^\h%iqА9i K'󙇥V+싣9J9ǬË ە) r :iKxCSm"u^];`gLU/s Md;}BCaFN9ohJ:aV]=GŅV ДAF@?Zs 1>tªٕsY\\h%ܮܜ MQ]_?5-,gNXٕsY\\h%ܮܜ MkN[X:a5zyX:aJ9Ǭ}..tnWnN\eis>vnkNչ-'^\ho9[ Y9p K'󙇥V+Jй]9|l Р\6K-A+wL(4oeNAoei2iW:gqL~xqW$#cNA$Pcltݓ;74%_^AN9{1kB+/+Z莓J9YZ9mNAG5ƥ4eαo5 rV.5ƥ4ev)C՟cRƲZ kNAGz4jo֜ș8[16.i,߮93=pȷظ9v93=pȷQcl\JXV;v)COjKij5rvNkNAG򭾨16.i,7Bew)C84 ԲǻD|!j jKij5.3\xלș8[ cRƲZewiW:g;f^\huќvscŅV Д`|c{9r3AR w M94`g |L~+7Up.VhVnz Р\l- iߕ9]Y+5Fɾ++Ǿ+ߜHVjnDwe ohJ0򱽂tyX:a5>9{1k ξ8ӮtΞڇZ :+7]Brr{[X:a<,]=GŅV^g_i K'󙇥V+싣 ,GY6TiNT~Ȯ*P V;ˀ^Zߌ-٫kiNQ6Hlj颟|&(7a MeNAGOgrܙEo}_j6D|D(|&(7|D(|L~+7RclS9s.VL^Qnz;w]2ޗc=93=7b3=7bomD|,a妷qwG&hVnz}5F{r-=74W=@ÂR~+TUѯSVcr-oh74RWxC4:9N?'[J97;,;JqDFUߥhyr M?9R鿂=Ѳ]]@ל Ms74@FvuWWZ h 4~Yd8 "M>16ھNNDC0yE )PTL^Qn;2ܸKf;93=*+ʍ3=*-ʍm' r]򙼢wG Xe[/5FD|ܰU>W|ܰU>Z&RclYș%L򙼢6ΝY$-Mo㾯hvE m''ДOL^Q Ȝ*5r "#Pcl+Zh89~DFšhiWd'ohJw^;~ M?xCӜ;9''!XZW" J9Q,ddw9]FÂr!,:4 "9[ Y֜98=ʙ#쨅`1B䷲Z&]s_05j585&]s_n0>5jM~4a9U#TN~+unvi|չ-'i.А9i8ܕsvRSAGGENDAS.BAS_ ! "#$%&')(*+-,.0/o132457698:;<=?>A@BCDFEGHIJKLMNOPQRTSUWVYXZ\[]^u̡B푆%zwvmm?tk>NS+;)͗v}ܾ@j׽\nq  (Ǔ׽:7ZU:7ZUOn_*_5y+>ܾU׶7'EWI^|!qRqXQ>ܾU$JjwHE\!'E'{bZ uB,:Cb~h}+Ǔ׽ ;$ևj.aB,}<}ݫP{-nV®Hqc)B'{misjIxesǓ׽kۛ.VB\y>ܾ׶7sH];,}<}ݻb}۬];,9s+JV"ڎ`84^\hpˮΠ`8xqY Br-5WF@i7qŅf J;giPGb"pc)qBYqN㜟5J4:ЬYEsgË Pn]Y-a}?/vMiuD|!߹c8i3=ppNN0聮|j{'q\0NN r5 M8Rcl;9șwah|@W/5q8n05 MKq4kqD|!ꋾM聮| c8ivD|!ߪG&|@WCq40C}8]5q8a9|1ę16 rV.}8]_NNa9ԫBgkRcl?9wș8[mGtk8οwr?-?9FQ/s[NcƋ l΂7cdoq44d=`44q/.ro;j!#cNcŅf ZE\vu8Ë ZҬU˵p^ )ޜ8Ë ܾM׶7WIxesb}<}ݛmob$<_mC_{'{kۛ='*muu{uX\,.k|}<}î<8l|\rY}<}N\eOЫ˚fާ}m{kǓ׽椼=eu}m{zfaY}<}hIWU kǓ׽Okۛ'}ff&XAOn_>A?OЫ0/Ǔ׽o k}sY;O,G_ޜE'E'{sE\vRaD'{LsE|#T}<}rK5hBY|bs3jAEAExr׶7W})8 IQO'{f^"a1R\ Jxr>T7R+z~_xVBǓiO/k |>M?6'Ev}ӛ6Y&]9nj>v7_㦟N[V吸-K?5@eYC*M}hs*p_OtIi0B_d*ko0sY}F1ӿ>rMS(c}(ȦK8T=&Ym4N1F&4(eUƨ@59}Jl dyb9n>>v.|ŭ'ӮgbŬ(k/T)e{UŮiAJ ^:ŬU}L,v ^H#@LGI\߫f +]F$U B3eO5$fQA3]'FUGI\߫@w/u~r;>J^U h |q9n+Q"ա84̚{Xد0kC\a5g^j |? A0k rc0k'a80kչ-;fZy}qА9i8ܕsYi{ohJ0qmn4zxQrcxqsr9[ YϜÜFËKNË vB0FǜF/.4ktBV >"ܮ\ ־ᜨޜF/.4k[X:!+j#%,]Pau{Q 9^\rcqohJ0qmﯵZN?_`|3K' ?ËܖӰ8fZ!Kcoq44d=4,874%_q/s[N1kJ- YDАL`i<Д`|_ r?{xQr_ǬB+'eoq44d=s_g^\r_=ʙ#쨅`9?ЬM4Q9//F^CioYD։cN/.4kW8yE,3`L-P.!'i|Ņfm[IVNoYD։cNX^\hD(zP˥NxАSN/.4kp1+4Ë tiTEs_B4*n_Wi|sxqi|q"U>W@WVK3yEm75C X3yE9?CV3=ЕoNkH8 ]jkNNkoѯ?=pX+4}R﵆w[^h=7v>J^U`jh |1Q㦟N{zeq٤W7,7_LZqOn䫁T"}A dyb8M?'ՠ7mLcbqOn}Ei} o'ӖU9$n o0sY6V'}L,v ^HkC}N7_^,k[ |n㦟NB}7_㦟NA+]3Қ |n=׽Nb3d$Wm$WispkOPe.>JbEV喘,cze]2^YlF*.>xze]2jM>a>qϦ}W%# f*F,%WN.@U+\3lP蒑\6g@U+᭹ fsîP;T1،.U0K8 U.*a嫁T"Pb3dW\Ы,_;cb\8$IssOn=x[}'Ӯgo0sY}ŮiAJ ^:Ŭ+W15x1#1ŮiAJ ^:Ŭ+Wh'FUo0sY}>.eUƨ@UƨUUq.ppC>xH&<}ēK@uC> oUpD(M:sJYe9Vj.eqMxZX99E}9}>N6U)6eq)7<لc8لc}9$Yo}v@aW=n.UQW6YV]AP;$6bBqBp3eEjĜP;$6Ȳ" R-*(MmBq`~_a%q,+®P{`RvC:On}|yamՇ";n$ D([1ߴȲ";,qX֌^;$nAJv|#f ˊ \ތ^;$nAJv|@aa17z5}-HoT3eEwX M()MmAQ;$nAJv|k5YV} n%)aA J;$nAJv|eAy7 ([1R@aa1+}([11YV} npE$nAJv| dYE7_^,+ G(n3T}_\!hLVQWqK4Y&>jIJ*cf 䴞>44&G>!Ix.?6kT-hLQ+26Y&?}Ċ-1]m*sI8f\n4S`? dc8$)p̸i$&~b㦟NIeM3b[,hBY|bsJ)ḴbŬ(9n,7$Ō4r3QǍcsi@jrK%혁,7]拵>  Q{bB=M?v oS>$3~nG?ޅoX'ӮgGY̆B`}(QAh<5x1k>Jb7@$Fqif $Vde(3cbqOn}Ecb㦟NI+]F꣬if}oB8 kYS?>f*1_R{c8>ڻ}~r;)|lbcԪ DG}4ǵ>#L hKzzc?LhY |qOn] ϤtOx~_a兙U/f-HRŬB,F<輏)٪b>f ˫V7x4cqŬ)" ǬB,F>Jd7YO<Y RWvcV!H9E}T%nRV)+.p/r'q[w@Hye8fb4uGX$˰ԩw?&29.p099qf S~6\M!O%+;1H 6ρf S~6J!O䨏a>|QOKm,Oڧ5$nAJH1H#y{ dGI܂LcƑF0Y3gS^YFNŬ} ONٟ)|?F]`rrZVD'Ӟ& 3%BIx.?6kT-hL49}Ċc@֧Xq%濫Ve" nj-s l,MNDqIqS$q%HNM@3ec8hA49._Goy4YnT _~(_Goh>gQ~6M ?^]~xqxGI>/a} >'I%q R2EGf l>Jd$34)|?bŌ4r /fS~rJ ^LU}L,6}<>9On=)|lo0sYT Ǎucb oAsv& 3%MEIx.?6kG WSOlxJ+]3)pO)5x13'W1T>a>\~6m֤)|?>LZ}L,v ^H# Rjb>'\bC_ sv5O|yamڇQ+>$˰ԩw?&ÄFuKbY1Z,*~x*cԪ*XG}U*@ >v U>7 dP]`BէB%j7_9n/(}7_si3飬if}Z)hV` hBY|b'1`L% UJYbћP'<Q'Fu)XVe d9qx*cԪ*8P$V!hzHQO,6F"# >vS㒘u8,MQG3c88E}HiWu>1d[2F_лotaBl~0$6YNu؅oXsi_DQ؅oX'ӮgGY̆)ŷ,v lS>Vyz}N6TbP%NI9}:ޅosik [r&Ym4N1F&4HIQ{b㦟NI>>vx[}si'3O͗f.K>ǻk7vL(kbyNfB,Fot`5U*,qXb%qXbŬ(+7@ѧB,qif ৏]ꦟNB,(Eo dYr؅oXsG>!ǵ>#L hKzzc?LhY |1qOn=)|lbŌ4r /f85ŌU}L,v ^H#@Lcb8M?v؅oX:M?>W/fS)5x1é9/fTucze+UfbU-HRŬB,FV'Ӯ C7_^,~X hbb.4uOx~'Ӯgo0sYT15x1#7H)5x1\bŌ4r Ą>W/fS)5x1S9/f8x[}9~r; //\1)p*i$oN$nwbV!HHDŽU%ҨyZM:͉l-H&o- Ӟ^Yf67_^,k |qOn] Ϥ 1=XѪ<=>f*1_Rc}V3@qPWczeq+^YlFL\N1m?&]'*UfbU}L,v RT1KQi$U0mze8fb4j>j%|bGd:>Ǥ# g`Mx*s%AGftɴ:ʸ\喨ꃨqI,2FmL L部qO,6Rއt}}ğzf +(?@ǧtD?A1jUii(QWqK4Y&jc8部%1Ǎ- dէ]`֧VO,6KFNB$~e8f\n4<`? d[O%"+rK72[H1rK}Ċ-1f \n" nj-Fr l.p0QuDzǒ?ǓÓ>갾HD8ޅoX'ӮgLJo'<i=On䫁T" 3%m>H>ޅoX'ӮgGY̆3[R͊T UJYbֱu 4Y^Y5rU%1AhLZ$fFnLZ>j 5}7_SqOn]-}ĢcLZcbqOn}Ec8i%ǵ>#L hKzzc?LhYAZXVe dOOPeZUEG}U*@I+ LZi7 d>vI+~ ]拵>M?E]5~~r;z~_x&}5loBY|bWA>?c'1`L% UJYb챏]`ҪOxriWKU]5~~r;z~_x&}5lmv/皪~r; R$3e8}7_9]`ڪ6w/և7v>v/n㦟NUU4i^ ͗f.K>HC7_si3飬ifCl噾*'jP%FGI)q dyzekbU}hBY7@IC>Jb4M,[ ^H#7Y& $VdehBYu2i.|Z㦟N".|?M?v=/<>ʚf6g)ֿ\P>OOT|ƀ 3/T)e>vIC>HJĺ02l/u}ݏI7:0gi%2iPOOPeZUEG}7ds>Pǜ6蓘t3eOb[؅oXrlW4pw/9n}Q4a[˚şWgXWP%Nb%1v7@W/f\GI B3e}IjbF2iOI}3$}I/'4Z_,7_9}I/'4Z_,$NC3eP>j%|bGd:>Ǥ# gOЫO$U6Y& W7 z5ii ?A1jUii(Q߈k5$fhBYs\ObbNcLxJAxa>vI?}xbqOn}Ecb㦟NIeM3q ; T|ƀ 3/T)e>HC} |qOn] Ϥ'<Շ>Tvbq o0sY6C}siWE\hisday$ = description of transaction day rem things% = todo list counter rem thing$ = todo items rem x$ = (see subroutine 11000) rem xpos% = horizontal cursor positioning rem ypos% = veritcle cursor positioning rem - program structure ************************** gosub 100 : rem - housekeeping 10 if s1=1 then 20 gosub 200 : rem - process goto 10 20 gosub 300 : rem - end of job %chain 100,10000,50,500 chain "HANDYSYS" 100 rem - housekeeping subroutine **************** dim thing$(255) dim alt$(255) dim l(9) dim al(9) dim p(9) dim ap(9) date$=today$ open "B:DOTHINGS.DAT" as 1 140 if end #1 then 160 read #1;d$,t$ if d$=date$ then 150 goto 140 150 things%=things%+1 p(things%)=len(thing$)+1 thing$=thing$+t$ l(things%)=len(t$) goto 140 160 gosub 400 : rem - screen if things%=0 then 170 for i%=1 to things% ypos%=36+i%:xpos%=45:gosub 15000 : rem - cursor print mid$(thing$,p(i%),l(i%)) next i% 170 return 200 rem - process subroutine ********************* cܾU%zsX|vCC=~r'T7{òp 稏ܾ_Sݜu:̋i=~r7E_S͗ ,NsXq /U׽IG_6a1CD{+އ>'ބG_6 z}׽?kuC}ɱ}4~<ŭB,}裩%"+bW3e}pC>>ѭIx.?6܈kA6EZɛKOqIȲ>8u<)p̦H#ys"qK)Ҩ47':$nAJ6@}9.[M:51Y>!$nAJ6@}V$nAJ6ŵȲ>8!%q R dYzЇ%q RIeqւl1@}$nAJ6,ZM$Ȳ>8Q-H&<-d dYzЇ-H&-hUnAJ6ŏȲ>8i-H&j* %H dYzЇ:.[M:[Ѫ܂l"13e}pCr\ %t7Vd_,SO$nAJ6ohUnAJ6%)f Ӈ>>.[Mx̱R8kAJ61J@է}pr\ %t7b* %H_f Ӈ>8~ >}Sat'<Շn==?6%|yaC}<5x1#sCrпuOnaC//\Mп>^YFNTr#FH@LiiP9niP9 12s 99s @lmi~:~U(<Շ>Tvbq o0sY6C}siWE\!mnd%=0:s2=0 210 ypos%=50:xpos%=78:gosub 14000 : rem - rubout gosub 15000:print chr$(7); input ">";line cmnd$ if cmnd$="" then 210 cmnd$=ucase$(cmnd$) gosub 14000 : rem - rubout if cmnd$="A" then cmnd%=1 if cmnd$="D" then cmnd%=2 if cmnd$="E" then let s1=1 if cmnd$="E" then goto 220 if cmnd$="F" then cmnd%=3 if cmnd$="P" then cmnd%=4 if cmnd$="R" then cmnd%=5 if cmnd%=0 then 210 on cmnd% gosub 600,700,800,900,1000 220 return 300 rem - end of job subroutine ****************** close 1 print chr$(26) return 400 rem - screen subroutine ********************** gosub 19000 : rem - day of week thisday$=day$+", "+month$+" "+str$(p2)+", "+str$(p3) print chr$(26) gosub 16000 : rem - tone on print tab(17);"THINGS TO DO TODAY" print tab(24-(len(thisday$)/2));thisday$ print print for i%=1 to 9:print tab(11);i%:next i% print print for i%=1 to 50:print "-";:next i%:print print "A total of 9, 28 character items may be displayed." print "(A)dd (D)elete (E)xit (F)uture (P)rint (R)ank" gosub 18os%=36+i%:xpos%=45:gosub 15000 : rem - cursor print mid$(thing$,p(i%),l(i%)) next i% 780 ypos%=52:xpos%=33:gosub 14000 : rem - cursor return 800 rem - future subroutine ************************ 810 ypos%=52:xpos%=33:gosub 15000 : rem - cursor input "Enter future date as MM/DD/YYYY >";line date$ if date$="" then gosub 14000 if date$="" then 810 if date$=chr$(27) then 830 gosub 10000 : rem - date check if e1=0 then 820 print chr$(7); gosub 14000 : rem - rubout goto 810 820 close 1 open "B:DOTHINGS.DAT" as 1 things%=0 things$="" for i%=1 to 9 p(i%)=0 l(i%)=0 next i% gosub 140 : rem - sub-housekeeping 830 ypos%=52:xpos%=33:gosub 14000 : rem - rubout return 900 rem - print subroutine *********************** 910 ypos%=52:xpos%=33:gosub 15000 : rem - cursor input "Ready printer and press - RETURN >";line q$ if q$=chr$(27) then 920 lprinter print print print tab(10);"ITEM NO.";tab(25);"DESCRIPTION" print for i%=1 to things% print tab(4);i%;tab(25);mid$(thing$,p(i%),l(i%)) print 000 : rem - tone off return 600 rem - add subroutine ************************* 610 ypos%=52:xpos%=33:gosub 15000 : rem - cursor input "Item description >";line q3$ if q3$="" then gosub 14000 if q3$="" then 610 if q3$=chr$(27) then gosub 14000 if q3$=chr$(27) then 640 if len(q3$)<29 then 620 gosub 16000 : rem - tone on print chr$(7); gosub 14000 : rem - rubout gosub 15000 : rem - cursor input "28 characters maximum - press RETURN >";line q$ gosub 18000 : rem - tone off gosub 14000 : rem rubout goto 610 620 if end #1 then 630 read #1;d$,t$ goto 620 630 print #1;date$,q3$ close 1 open "B:DOTHINGS.DAT" as 1 gosub 14000 : rem - rubout things%=things%+1 ypos%=36+things%:xpos%=45 gosub 15000 : rem - cursor print q3$ p(things%)=len(thing$)+1 l(things%)=len(q3$) thing$=thing$+q3$ 640 return 700 rem - delete subroutine ********************** alt%=0 alt$="" for i%=1 to 9 ap(i%)=0 al(i%)=0 next i% 710 ypos%=52:xpos%=33:gosub 15000 : rem - cursor input "Item number to delete >";linnext i% console 920 gosub 14000 : rem - rubout return 1000 rem - rank subroutine *********************** alt%=0 alt$="" for i%=1 to 9:al(i%)=0:ap(i%)=0:next i% for r%=1 to things% 1010 ypos%=52:xpos%=33:gosub 14000:gosub 15000 print "Enter number of priority ";r%; input " >";line q4$ if q4$="" then gosub 14000 if q4$="" then 1010 x$=q4$ gosub 11000 : rem - numeric check if e1=0 then 1020 print chr$(7); gosub 14000 : rem - rubout goto 1010 1020 ap(r%)=len(alt$)+1 alt$=alt$+mid$(thing$,p(val(q4$)),l(val(q4$))) al(r%)=l(val(q4$)) next r% thing$=alt$ for i%=1 to things% p(i%)=ap(i%) l(i%)=al(i%) next i% close 1 open "B:DOTHINGS.DAT" as 1 create "B:TRANS" as 2 1030 if end #1 then 1040 read #1;d$,t$ if d$=date$ then 1030 print #2;d$,t$ goto 1030 1040 for i%=1 to things% print #2;date$,mid$(thing$,p(i%),l(i%)) next i% delete 1 close 2 ok%=rename("B:DOTHINGS.DAT","B:TRANS") open "B:DOTHINGS.DAT" as 1 for i%=1 to things% ypos%=i%+36:xpos%=45:gosub 14000:gosub 15000 print me q2$ if q2$="" then gosub 14000 if q2$="" then 710 if q2$=chr$(27) then 780 x$=q2$ gosub 11000 : rem - numeric check if e1=0 then 720 715 print chr$(7); gosub 14000 : rem - rubout goto 710 720 if val(q2$)>things% then 715 delete$=mid$(thing$,p(val(q2$)),l(val(q2$))) close 1 open "B:DOTHINGS.DAT" as 1 create "B:TRANS" as 2 730 if end #1 then 750 read #1;d$,t$ if d$=date$ then 740 735 print #2;d$,t$ goto 730 740 if t$=delete$ then 730 goto 735 750 delete 1 close 2 ok%=rename("B:DOTHINGS.DAT","B:TRANS") open "B:DOTHINGS.DAT" as 1 for i%=1 to things% if delete$=mid$(thing$,p(i%),l(i%)) then 770 alt%=alt%+1 ap(alt%)=len(alt$)+1 alt$=alt$+mid$(thing$,p(i%),l(i%)) al(alt%)=l(i%) 770 next i% for i%=1 to things% ypos%=36+i%:xpos%=45:gosub 14000 : rem - rubout next i% thing$="" things%=0 for i%=1 to 9 p(i%)=0 l(i%)=0 next i% for i%=1 to alt% things%=things%+1 p(things%)=len(thing$)+1 thing$=thing$+mid$(alt$,ap(i%),al(i%)) l(things%)=al(i%) next i% for i%=1 to things% yp!id$(thing$,p(i%),l(i%)) next i% ypos%=52:xpos%=33:gosub 14000 return 10000 rem - date check subroutine ****************** 10010 rem 10020 rem - variables to check 10030 rem date$ = date being checked 10040 rem e1 = error switch 10050 rem i% = for/next loop counter 10060 rem p$ = substitute for date to be checked 10070 rem p1$ = month 10080 rem p2$ = day 10090 rem p3$ = year 10100 rem x = numeric counter 10110 rem 10120 e1=0 10130 p$=date$ 10140 if len(p$)>10 then 10340 10150 x=0 10160 for i%=1 to 10:x=x+match("#",p$,i%):next i% 10170 if x<>57 then 10340 10180 p1$=left$(p$,2):p2$=mid$(p$,4,2):p3$=right$(p$,4) 10190 if val(p1$)<1 then 10340 10200 if val(p1$)>12 then 10340 10210 if val(p2$)<1 then 10340 10220 if val(p3$)<1 then 10340 10230 if val(p1$)<>int(val(p1$)) then 10340 10240 if val(p2$)<>int(val(p2$)) then 10340 10250 if val(p3$)<>int(val(p3$)) then 10340 10260 if val(p1$)=9 and val(p2$)>30 then 10340 10270 if val(p1$)=4 and val(p2$)>30 1+2.3)+int(p3/4)-int(.75*(int(p3/100)+1)) 19020 d=f-(int(f/7)*7) if d=0 then let day$="Saturday" if d=1 then let day$="Sunday" if d=2 then let day$="Monday" if d=3 then let day$="Tuesday" if d=4 then let day$="Wednesday" if d=5 then let day$="Thursday" if d=6 then let day$="Friday" if p1=1 then month$="January" if p1=2 then month$="February" if p1=3 then month$="March" if p1=4 then month$="April" if p1=5 then month$="May" if p1=6 then month$="June" if p1=7 then month$="July" if p1=8 then month$="August" if p1=9 then month$="September" if p1=10 then month$="October" if p1=11 then month$="November" if p1=12 then month$="December" return vREMINDER.BAS\  "!$#%'&)(+*o-,.0/123547698;:<>=@?ABCDEthen 10340 10280 if val(p1$)=6 and val(p2$)>30 then 10340 10290 if val(p1$)=11 and val(p2$)>30 then 10340 10300 if val(p1$)=2 and val(p2$)>29 then 10340 10310 if val(p3$)/4=int(val(p3$)/4) then 10350 10320 if val(p1$)=2 and val(p2$)>28 then 10340 10330 goto 10350 10340 e1=1 10350 return 11000 rem - numeric check subroutine *************** 11010 rem 11020 rem - variables to check 11030 rem e1 = error switch 11040 rem i% = for/next loop counter 11050 rem x = numeric position counter 11060 rem y = decimal point locator 11070 rem z = numeric position match counter 11080 rem 11090 e1=0:x=0:y=0:z=0:y=match(".",x$,1) 11100 for i%=1 to len(x$):z=z+i%:next i% 11110 if y=0 then 11130 11120 z=z+1 11130 for i%=1 to len(x$):x=x+match("#",x$,i%):next i% 11140 if x=z then 11160 11150 e1=1 11160 return 14000 rem - rubout subroutine ******************** 14010 gosub 15000 14020 print chr$(27)+"T"; 14030 return 15000 rem - cursor subroutine ******************** 15010 rem 1GFHJIKLNMQOPRUTSVWXZ[YWV1 {Rey\z {} >C,B^8*(lZW+~_DE(2{ױ)zV!v/\0)?&?/*d`}BNGwS5R.bE9yu98U#"P ;Ye'>j]V!v'˃:yu&`&BNGNt>MTTwQ': NHu ;Y 8s~6seP'bo|`B ;YFNt>Mp#nbw:9; NHu ;YF1~ 8Z؝,A="p(OV!v'KVp`b%œӉhbwX=X`9N@>W3C,,?[؝,g"|f?vZ؝,|&&lbwNt&xURɫә?(~%N^0W~ ;YɫOnTmbwԃ<~>V!v'Kvj##+ư+f?U[ؽ x7ҏ 2яV YvWoSZͽ>'G {au"#NkFV#۽ {fVT,{|o޽E=5Չx8Y~#&,_&ytUF8a]_oQXT7K_yh[}?ݷj)QXT7K_yh[u*LB|^C^戄>{m5020 rem - varibles to check 15030 rem xpos% = horizontal cursor position (1-52, L to R) 15040 rem ypos% = verticl cursor position (1-24, T to B) 15050 rem 15060 print chr$(27)+"="+chr$(ypos%)+chr$(xpos%); 15070 return 16000 rem - tone on subroutine ******************* 16010 print chr$(27)+")"; 16020 return 18000 rem - tone off subroutine ****************** 18010 print chr$(27)+"("; 18020 return 19000 rem - day subroutine ************************ rem rem - variables to check rem d = number relation to day of week rem date$ = date from which to determine day rem day$ = arrived at day of week rem f = factor to determine d rem month$= literal month of year rem p1 = month of date rem p2 = day of date rem p3 = year of date rem p1$=left$(date$,2):p2$=mid$(date$,4,2) p3$=right$(date$,4) p1=val(p1$):p2=val(p2$):p3=val(p3$) if p1>2 then 19010 f=365*p3+p2+31*(p1-1)+int((p3-1)/4)-int(.75*int((p3-1)/100)+1) goto 19020 19010 f=365*p3+p2+31*(p1-1)-int(.4*p"jdo.D/V,?[}NHuh sD"riͽN {s*߆֯#Ҋuޢ!v/~p_ýh hN|a|1op_䈴½h !ďVtw[{>0sW#99"^[4 12:ʷUF8AtW#99"oh C{>0jdo*#èmuۮyz[#ȭ5OsDDZ=T*mVO`cRʨᗉ~kS=ȯGy\iu0t=b9yasrDknh V fO'=.1G7+'[=Qz!wrÒ\¾%}c8,??zߩ Tף4 V5b0g92yEb9yaЈ鮹Ң!v/"ZgdJRey\ʻFcު_3‘jdkַU|XW_ijV"$!Ov塈IS<d_lv[}?Uv}BJ3MPF^:D1 ,GaX*#,F|[=T*=ȭmK C#]sEC^8E'G}ApK̟e~<,A[}NHM {a@Dtڢ!v/ U( s H,9'/ 99"57YZ4S|B5)_s.>'G&K9V5T<[Xp[r5Y>7G$LY,эpljdmmب66plTNho}ۮO`[׶rTȟڷ ,Vjc2‘jdMmWjc>[7XֵF1MBpo5&oBҨD,UVwʥ{hԎJG/=ʭB|U 3/?/ތQJFE_tԎJ_eԎ7c{=GfԎz+kԎ>F)jNC^?6G$LYLm~ ݮ!v/\0)NHu-_CNA=?LOjh߻؝,;98&+f?U[j!v'KVps01AGoaDUt ;Yԉ~&é8Z>\CNgNjWbw<7d9{\CNg:Y^ 5dY,u:Q5j}>\o/_t8VkFX,T~ܯ׷~d] CW,J^4'ղ,(fV׌pۏ5jd[^V għI,vvPڵvųL`OSڵj]5#\Ătv*kFT~75-on.bA:7*m׌p Y_~j[.bA:;~XNe_~j.bA:7*/ e5-onkF,S,,SYW#.bA:;=p ҹQqoy}[w{fXNam ׷~7kFTE,HFFvmM5#\Ătv*E,HFFvmfXNa3·X΍ʏ7=jd[^V-kFL} ,*PAnu0lW,9'/ ,-b)>UO=>W*#8,[e=tG5j('G&Kؽ0 rC^='/ &.99"57YZ4S|B,{|xf?vi2#KJxN[+2AqW#99"7Y_~[e Td5ַtNؽ8U#*#}jd?lXNU҃,>'G&K9C>l龾R|NHwM|Q;?ُp#*#ȟFv[e!UJۃF (FT~W#|[=T*=srDo#]se,{,kpw\v *?zk?W>~nth [}X_?'G&KDN[}NH~EC^8{iͽ {s*G[U>B戄>ᗉ~m(t[]='/ K ú,>'G&Kb€ȉ~ Ws°mb9yasrDkn{ ,;?ٓp##a2d9r8?mbOqW#99"7YG18p52Q鐪@AW#[ai5?PyP)?[gdJRey\ʻFcj xT">*}Fј{kU_3‘jd+orPmVʭ2ۏS5*1Q>0[}?o ,V si~[U(_3Dø|W#[a}[=T*=ȭmK C#}}{a@Ds°t_d)>'G&,SYz`KE,Hg:ֲ5~5#\Ătv*q>\ĂtnT~)oy}[\~?oYs[;[r}}!v/ #&,_&z׷_?'G&Vn'@A~=>WZ[r]s!v/" }/Zۯ!Vn.b`:U#j5dYrN^`u3,8E'}6lZtj5dzN^bgsr̖b[kZj\5j\E'@A~=T*^:UJ%.5#ȭGF-_CNA=?LOjh߻؝,;98common today$,warm$ 10 rem - program PLANNING.BAS 20 rem - planning calendar rem - Copyright Peter C. Hawxhurst 1982 30 rem - revised 11/25/1982 40 rem 50 rem - program structure *********************** %chain 100,10000,50,500 dim xpoint%(31) dim ypoint%(31) m=val (left$(today$,2)) y=val(right$(today$,4)) date$=today$ gosub 1000 : rem - subscreen 70 gosub 370:rem - calculate 80 gosub 590:rem - headings 90 gosub 690:rem - plot gosub 1100 : rem - report 95 gosub 1200 : rem - input if s1=0 then 100 goto 180 100 if cmnd$="A" then gosub 1300 if cmnd$="D" then gosub 1400 if cmnd$="F" then gosub 1500 if cmnd$="N"VO`;UJۃzǕVY>?:ob|xs*?zk?Ww(+>'G&Kb€ȉ~4UBpo5&oBҨD,UVwʥ{hԎJG/=ʭ*5^='/ &.>'G&Kb€ȉ~a+龾ɲtNsrDZs{sߪ#ȭ&&(p#&,_&9yaخXrN^e99"7YN @"$!O?v]~=]ST:jrp ħR>d^W#[Oxu* {JPZ_wU=<:>'G{Wؽp*VW Z,9'/ ]|NHM {a@DUbYaE,HBJP&˭: 3ZBz 3Z+yT[}NHk{s*G[7Ybc戄>ᗉ^%a]#}}{a@D?Wi {T XrN^,-b€ȉ~X >M[ug*m5G7+ h?&A^g*]W=O?v-k>'B|5S!0#&,_&zzN^%䅡鮹Ң!v/"Z%&?7S=ȯGZr}3g3#&,_&0ޫ^79:JNw/ܽD|Tޣ1j5#FvnrlTmC ħѩvE,H;;tt]k7Yn؆"$!OcM_{_ ұQZrGy(bAT:deu *" then gosub 1600 print chr$(7) goto 95 180 chain "HANDYSYS" 370 rem - calculate subroutine ******************* for i%=1 to m:read m$:next i%:restore 380 d=1:n=0 390 if m>2 then 440 400 let f1=365*y+d+31*(m-1)+int((y-1)/4) 410 let f2=int(.75*int((y-1)/100)+1) 420 let f=f1-f2 430 goto 470 440 let f1=365*y+d+31*(m-1)-int(.4*m+2.3) 450 let f2=int(y/4)-int(.75*int(y/100)+1) 460 let f=f1+f2 470 let t=f-(int(f/7)*7) 480 if t=0 then let p=7 490 if t<>0 then let p=t 500 if m$="SEP" then let n=30 510 if m$="APR" then let n=30 520 if m$="JUN" then let n=30 530 if m$="NOV" then let n=30 540 if m$<>"FEB" then 570 let n=28 560 if y/4=int(y/4) then let n=29 570 if n=0 then let n=31 580 return 590 rem - headings subroutine ******************** if s2>0 then 620 ypos%=2:xpos%=1:gosub 15000 : rem - cursor print tab(28);m$;",";y goto 630 620 print tab(26);m$;",";y 630 s2=1 print 640 print tab(4);"SUN";tab(11);"MON";tab(18);"TUE"; 650 print tab(25);"WED";tab(32);"THU"; 660 print tab(39);"FRI";int chr$(7):gosub 14000:goto 1330 1340 gosub 14000:gosub 15000 input "Enter number of days for activity >";line length$ if length$="" then 1340 if length$=chr$(27) then 1370 x$=length$:gosub 11000 : rem - numeric check if e1=0 then 1350 print chr$(7):gosub 14000:goto 1340 1350 gosub 14000:gosub 15000 print "Description (";val(length$)*5; input "letters max ) >";item$ if len(item$)<=val(length$)*5 then 1360 print chr$(7):gosub 14000:goto 1350 1360 print #1;start$,item$,length$ 1370 close 1 gosub 14000 : rem - rubout gosub 1100 : rem - report return 1400 rem - delete subroutine ********************* ypos%=20:xpos%=44:gosub 14000:rem - rubout 1410 ypos%=22:xpos%=6:gosub 15000:rem - cursor input "Enter beginning day (DD) >";line begin$ if begin$="" then gosub 14000 if begin$="" then 1410 if begin$=chr$(27) then 1450 temp$=left$(date$,3)+begin$+right$(date$,5) date$=temp$ gosub 10000:rem - date check if e1=0 then 1420 print chr$(7):gosub 14000:goto 1410 1420 open "B:PLANNING.DAT" as 1tab(46);"SAT" 670 print 680 return 690 rem - plot subroutine ************************ point%=7 700 for i%=1 to n 710 print tab(p*7-3);" "; 720 print using "##";i%; xpoint%(i%)=p*7-3 ypoint%(i%)=point% 730 let p=p+1 740 if p>7 then print 750 if p>7 then print if p>7 then let point%=point%+2 760 if p>7 then let p=1 770 next i% 780 return 1000 rem - subscreen subroutine ****************** print chr$(26) ypos%=19:xpos%=4:gosub 15000:rem - cursor print chr$(27)+")"; for j%=1 to 46 print "-"; next j% print print " (A)dd (D)elete (E)xit (F)uture (N)ext" print chr$(27)+"("; return 1100 rem - report subroutine ********************* if end #1 then 1110 open "B:PLANNING.DAT" as 1 goto 1120 1110 create "B:PLANNING.DAT" as 1 goto 1150 1120 if end #1 then 1150 read #1;start$,item$,length$ if left$(start$,2)=left$(date$,2) then 1130 goto 1120 1130 if right$(start$,4)=right$(date$,4)then 1140 goto 1120 1140 ypos%=ypoint%(val(mid$(start$,4,2))) xpos%=xpoint%(val(mid$(start$,4,2 create "B:TRANS" as 2 1430 if end #1 then 1440 read #1;start$,item$,length$ if date$=start$ then let erase%=val(length$)*7 if date$=start$ then 1430 if val(right$(start$,4))val(right$(today$,4)) then 1435 if val(left$(start$,2))=49 then ypos%=ypos%+2 if xpos%>=49 then erase%=erase%-4 if xpos%>=49 then xpos%=4 next i% 1450 ypos%=22:xpos%=1:gosub 14000: rem - rubout return 1500 rem - future subroutine ********************* ypos%=20:xpos%=44:gosub 14000 : rem - rubout 1510 ypos%=22:xpos%=6:gosub 15000 : rem - cursor input "Enter future month (JAN, FEB...) >";line month$ if month$="" then gosub 14000 )))-4 gosub 15000 : rem - cursor print item$; xpos%=xpos%+len(item$):dot%=val(length$)*7-len(item$) for i%=1 to dot% gosub 15000:rem - cursor print "." xpos%=xpos%+1 if xpos%>=49 then ypos%=ypos%+2 if xpos%>=49 then dot%=dot%-4 if xpos%>=49 then xpos%=4 next i% goto 1120 1150 close 1 return 1200 rem - input subroutine ********************** 1210 ypos%=20:xpos%=44:gosub 15000:rem - cursor print chr$(7); input ">";line cmnd$ if cmnd$="" then gosub 14000 if cmnd$="" then 1210 cmnd$=ucase$(cmnd$) if cmnd$="E" then let s1=1 return 1300 rem - add subroutine ************************ open "B:PLANNING.DAT" as 1 1310 if end #1 then 1320 read #1;start$,item$,length$ goto 1310 1320 ypos%=20:xpos%=44:gosub 14000:rem - rubout 1330 ypos%=22:xpos%=6:gosub 15000:rem - cursor input "Enter starting day (DD) >";line begin$ if begin$="" then 1320 if begin$=chr$(27) then 1370 start$=left$(date$,3)+begin$+right$(date$,5) gosub 10000 : rem - date check if e1=0 then 1340 pr#if month$="" then 1510 if month$=chr$(27) then 1596 month$=ucase$(month$) month$=left$(month$,3) count%=0 1520 read m$ count%=count%+1 if m$=month$ then 1540 if m$="NONE" then 1530 goto 1520 1530 restore:print chr$(7):gosub 14000:goto 1510 1540 restore gosub 14000 :rem - cursor 1550 gosub 15000 : rem - cursor input "Enter future year (YYYY) >";line year$ if year$="" then gosub 14000 if year$="" then 1550 if year$=chr$(27) then 1596 x$=year$ gosub 11000 : rem - numeric check if e1=0 then 1560 print chr$(7):gosub 14000:goto 1550 1560 if len(year$)=4 then 1570 print chr$(7):gosub 14000:goto 1550 1570 m=count% y=val(year$) if count%>9 then 1580 date$="0"+str$(count%)+"/01/"+year$ goto 1590 1580 date$=str$(count%)+"/01/"+year$ 1590 gosub 14000:rem - rubout 1595 ypos%=1:xpos%=1:gosub 15000:rem-cursor for i%=1 to 16:print chr$(27)+"T":next i% ypos%=2:xpos%=1:gosub 15000:rem - cursor gosub 370: rem - calculate gosub 590: rem - headings gosub 690: rem - plot gosub 1100:rem - reportt=match(".",x$,1) 11100 for i%=1 to len(x$):z=z+i%:next i% 11110 if dpt=0 then 11130 11120 z=z+1 11130 for i%=1 to len(x$):x=x+match("#",x$,i%):next i% 11140 if x=z then 11160 11150 e1=1 11160 return 14000 rem - rubout subroutine ******************** 14010 gosub 15000 14020 print chr$(27)+"T"; 14030 return 15000 rem - cursor subroutine ******************** 15010 rem 15020 rem - varibles to check 15030 rem xpos% = horizontal cursor position (1-52, L to R) 15040 rem ypos% = verticl cursor position (1-24, T to B) 15050 rem 15060 print chr$(27)+"="+chr$(ypos%+31)+chr$(xpos%+31); 15070 return v_CALENDAR.BAS^  "!#$%&'()*o+-,./0132456879;:<>=?@BAECDGIFHKJMLNORQPSUWTVXY[\Z] 1596 return 1600 rem - next subroutine *********************** m=m+1 if m>12 then y=y+1 if m>12 then m=1 if m>9 then 1610 date$="0"+str$(m)+"/01/"+str$(y) goto 1620 1610 date$=str$(m)+"/01/"+str$(y) 1620 ypos%=20:xpos%=44:gosub 14000:rem - rubout gosub 1595:rem - future return rem - data statements **************************** data "JAN","FEB","MAR","APR" data "MAY","JUN","JUL","AUG" data "SEP","OCT","NOV" data "DEC","NONE" 10000 rem - date check subroutine ****************** 10010 rem 10020 rem - variables to check 10030 rem date$ = date being checked 10040 rem e1 = error switch 10050 rem i% = for/next loop counter 10060 rem p$ = substitute for date to be checked 10070 rem p1$ = month 10080 rem p2$ = day 10090 rem p3$ = year 10100 rem x = numeric counter 10110 rem 10120 e1=0 10130 p$=date$ 10140 if len(p$)>10 then 10340 10150 x=0 10160 for i%=1 to 10:x=x+match("#",p$,i%):next i% 10170 if x<>57 then 10340 10180 p1$=left$(p$,2):p2$=mid$(A,1['Fj Xx{xUuyHW̗Cz\,['F ϳFW 1>ٙgܪ?nub,dS981bub^`,ub6e-Yk:1RQX-t"~M ,gj/݊,Au"|TtHkx ^K#`v2-܌wfHE-R-u0^g)z?:1RQne_#҉d^c,E0։ZLD2_g 1u{CoHE~T|w+:24ubVnEb\93NTԐ *:8:1RQCn|k*d x9l|uku"|ԃi3;#ڀNTԖ Z7_ҴNa,O1)O{ʏlKRSHWA1wrJz*8j=;<JIO#]eu ;G^ ?ڥR8Bx³Z.M{x|j=$b@K<UW(к C1Uk x[Wq,݁p$,4,2):p3$=right$(p$,4) 10190 if val(p1$)<1 then 10340 10200 if val(p1$)>12 then 10340 10210 if val(p2$)<1 then 10340 10220 if val(p3$)<1 then 10340 10230 if val(p1$)<>int(val(p1$)) then 10340 10240 if val(p2$)<>int(val(p2$)) then 10340 10250 if val(p3$)<>int(val(p3$)) then 10340 10260 if val(p1$)=9 and val(p2$)>30 then 10340 10270 if val(p1$)=4 and val(p2$)>30 then 10340 10280 if val(p1$)=6 and val(p2$)>30 then 10340 10290 if val(p1$)=11 and val(p2$)>30 then 10340 10300 if val(p1$)=2 and val(p2$)>29 then 10340 10310 if val(p3$)/4=int(val(p3$)/4) then 10350 10320 if val(p1$)=2 and val(p2$)>28 then 10340 10330 goto 10350 10340 let e1=1 10350 return 11000 rem - numeric check subroutine *************** 11010 rem 11020 rem - variables to check 11030 rem e1 = error switch 11040 rem i% = for/next loop counter 11050 rem x = numeric position counter 11060 rem dpt = decimal point locator 11070 rem z = numeric position match counter 11080 rem 11090 e1=0:x=0:dpt=0:z=0:dp#YJo)R IuR?R89pRj]Ņ݁-%=Etkk\NVXJ"F y vzo}#\H}+[.0_a_~*ہKOv݁| J)G}Suy`:ZR1UvmpXuEIύaOv}=wr "8[ʳT1U xr #Wܺ]pM`.րn# h=MB9>e7^5ee6ҀSI>@PԺ4ek m-󿧸&KC9R6ҀS\|P(n# h=]>G^ʳZ.#/Bui@I>RKodk鯾Q(CXwn=J"v@@J"Fjx xnם束z|0Ve8PH&y)SQCfu ]s˫j~eLl=nkVgW˘Rek;~R끜;mV7ߛP5W;PXܡj(vy׬.19r֣;k=%]+bʺu$y`vn#9/%K[}Q>uR6 v;ZM>uR6sdkݡԺ} ׍iFnJK֍]l=J֝#/Zw(NV볔DtU<55kڵ:bk}#\H}[~,?BO:粟'1C::Fg'M{|pl}'n;s_|Y*jzϝC9ړ*݁oXj=I6RkTGWtQ>R4_Fep匶?>)&iOv7_97,sDt`K1/A.V]QϭϷ?w~?w~Y*jOb@P!ϝGb*.ldk鯰r?}j}1e?;:1U ݮ޺)7'^SxzL ?{S믦 oSx9/O{RZ95#]b؂A][9$bsNX1UA/a0 #[9g[LtHal=H"F*jv+:24,T\b۳4ӷ$b6WqɃE2sN_IHE-^n-@,ׇQ˙Z9I"F.&qwNxa0\RRtHsg3;޽<\z..$H;G^E-ZE Kw[E-Y~dpݸ=z}La粟sQ $H;^K}K6K|sQDV9"8pXuE|Zρv,s aIF+Oߟ[ρJ"v@8<Y>7:?iړݍWeϝCߞCyړϷ?wƞ݁₍]dkہ}n]i%y`v\Fv *S5NV95#]xMaڌA]Zo~@9պpہ{ U|g#ϥpہU|;,}%;z=6OY$bZR1UpXuE|ZwFߺ:7tר vHNOTEBOOK.BASZ  !"#$&%')(*+,o-./012345768:9;<=?>@ABCEDGFHIKJLNMOPRTQUSXWVYx$~MwsVJ++UV<q G<#jΓǍ#=l‘4 4iNU3`P`sMsP1FSU4ϯ5NT^ԍ;>D5NTu֛[.a)a_E݈&?&?zƉ6zs'L~Uc SqvgZ/>J#y%9@vǧJW_'J;>mꕭU+N]dw|:o|uݻ$}Nc4rϯn bNxdIk}&?#9@v't|r֑TJ >r|  v|]o:Jdw|k0I NTRX;^eku kq$a9@v7,q8Fv *S5NVKIHW^SmqA.V]Qoodk鯰r?SpϝCSF+O:ZPJ"F5pXu>ZqRSHW $tŭ1Up :Z@J"FpXuE6_uuoWAQ_9ceyS=匶?<+[^282_?$y)rj|:U`30VN匶?(k.[?,9F z|0V.G^,n=i*5*#+ga,q=匶?<+[,iw x(IIt`K1wrJz*8j,%#]7l4:bi}8`NYNo~n {?w~@*jOb<w,'1U xu6.[$t#/^wQ+ui 6b|[Y>4G^ʳZY>0_a_|s,s6:?*oG^ʳoui8`Θ|zlQwD2Zs|&x;~Ն"ȔSDawx9B(N įڰPBDcX;̑@0_eacX9G|-~AC|r^۰PR9:^}?  n~IUjrbris8AW k'L8xg!ACכQq*&y}^h7 &?TQqzo$pԎښl0*Խډǀ h Nw9l#X;9%y5X+>o?m#wr /GGeCPmcuwx8k:dJ|jMC?9gw޶mVJ#n\j B QdJg)"^c0ǡzr6qr>L\= 30IϑPhOV @L\#9 30qo?K%_&Lzp$C߲7r9:|M8Q#􍌖9i9ݶ |Նʪg)"㯲8]ρD_3!SUn͑Pb N$p9VbM?d#$Ɖ Ϩ^q8ЙK۶̱:_3!SUnq޶ϧ}mPhO*az;F~؎ /\IvC6Bb/wSuJx^r_"9•d5r:9콚PP vxIQx^r_"9/׫C. odבSX/-9Ͳzm広zɉ~\s s›e%uKKNx${^x^WYmXA()z"5s$LWYESlk?X, }L0r:Z ܄?s$L}/~=G]8a[0&^Wg;|M8Q?G{̱:S>mgYapҶ7Jk/:ӆ9Kۖ,+ޯM\~9O߫uaiek:dJ|R-i%'%rU;xO:]9<ɋMw Z<nzɉ~D˝c5GC6B0G|-~r-Ż,_eac")6p~s_3!SUn͑Pdw:;1s(PAv7 Y3>zl#dwh}Ԗ9Rdw s;G( _kgT8B GmPu-EM]ڶE+۶QN}x%D >=x%D%_3!SUnq޶ϧ}mPhO*az;F~#$['|nz m{f9‡mVxn޶OuC M\-P8z0Q11sdJ1w| Ϩ^q8[Ȅ%'%r͝}mEm޶_3!ZUn:1樷cW+N}sԅ~}&^3̑[~sԅ~}*a}/ u4~<0I0G]8ѷk|Gm0rPsb ƏquG߾̳QN}{5룶xοfX5'L8QN}{56xοfWb ~FH >=x<uG߾JkluG߾J̳QN}{5룶xοfC'403.k|Gm1r epos}Xu5C@)V iMhpos̳QN}56xοfC(ŪAv7zQN}5룶xοfCOV i.ۗk:,s䟾3̑y;Gn?N$pf(|F#2G5C2%>Y5P|޶ϧ}mPhOV @ގH1IMI~p$C߾%'%r=G]8aáou49˄I~g0r}9)ɪAv7 ^r_"9:xO:]9-ɪAv7s112Ϳ@9%y5X+>o?G\g˗;G5C2%>Y5w496 Et"5sDr>L\G3eM9Oѣ2G4SA30Iϑ6_:ek:dJ|jMC?9Rdw s;'L8sԅ&?}M\wP/9/kuI}_/ס2K%_&L89)ɪAv7 %D}޶jc j5C%> N 9\m0}˿fC'}m۬0ǕFr;~Նʪg)"^c0ǡzfmk:dJ|RAv7s_3!ZUn:1^r_>wr^۰PDD~9\zɉ~D˝z Ks-AdO/7}viU;/'+vSluMmu(2ǡzYaw(2G(Zѷ8Q?1sPAv7zX3>zl3G5C2%>Y5mˡ6v_o0 T)I=t_oC6+Wu;ǡzr;~Նʪg)"^c0GO 30q~0NԷIp|j-#9B(bnZ/>(xs!h18֗5RKsP8AvǧZ?$ozɛ0}#,w]v}]S>$0Geu1>GEb mQۢڢf|Ͼa=GOxuF_ٷgխz\s8-&^C|:*s,ξ>+Q ecVƬSxcnFrS.fo:'2GOb m#'bbp i`gdPG)4~< Q*#_3!SUn;~Նʪg)"^c0ǡz>jc j5C%>tb?Qoo'L_+|z8Q.}M\wP/9/kua۷k#9Kۯ#-&^9ek:dJ|R-i%'%rU;xO:]9Mw Z<n#⺰܇/GeM8Q?GY8*^M$pD~ZȿfC'403#%>Y5uwbp@bM?d#$N$pf(|F#siPPLOV i`g4ǡz>jc j5C%> N 9l _^q$C?G]8aáouQN$p5r eIe k zk:dJ|R-i%'z/w%d#ToI/N$PE{Q7r6>stP/9/uֻ|sN_ea(2v#`*bX9Y\/ȣ2~L&L,a[~09 }˵δap$C߲7r|9:|M9OgyT\֙6xFf uȔ_3!ZKN$G)8,^r_>29B'n:1 Q%shynnD/)9BO[?%qb?RЌ>;MshO[s6N w_Wzq#L9BDA9BpwP/9/u۾Y~yfuV_6v_oš;Gd11sdcܐm۰PDD~9\1$*d'2~~$dp76 HANDYSYSy2 2    `rB:CATEGORY.DATj6B:CATEGORY.DATkB:ACTPLANS.DATk@R$d4NOTE:$d4d4No action plan categories exist at present.$d4At least one (1) category must be added in$d4order for action planning to be initiated.$d4A total of 24 categories may be utilized.$d4Category descriptions should be limited to$d4twenty (20) characters each.$d4d4Please press - RETURN >n;h p@R$d4R)$dJACTION PLANNING NOTEBOOK$d4d4    6H1 7P-$d6;d4(A)dd (D)elete (E)xit (R)estart (S)can$d4R($d   R)$d  Planning Categories$d4R($d p76c   6 R7 6  s     6 $ 7 2  6 B:ACTPLANS.DATj    R)$dACTION PLANS FOR $dR($d $d4d4 ` &**>s7 6 6  ###cp#d $$d4 7 6 6 @    6  7 ,  6  B:ACTPLANS.DATj&**>7 b6 e6 J pppp.\p 6 T 7  p6 p7 6 ʀp 6 T 7 # \p6 7 6 p RT$d4R= R R$dhR($de@B:ACTPLANS.DATB:TRANSY  r p1$*d'2~~!p766HANDYSYSy    p`ZB:FONEBOOK.DATj6B:FONEBOOK.DATk&AAAAAAAAAAA,000-000-0000,?@p76pp76b^9666O6R$d4R)$dJFONEBOOK$d4JQuick Reference Phone Number Listing$d4d46:  7FJ|$d46-d4d46_1 7g-$d6Rd4(A)d7  6B:CATEGORY.DATj  ``& *>  $d4  7O  7] 6$@R$d  ) >n;h76dsAp 7Ap 7A76Dp 7eDp 7D76E7pE76Rp 71 Rp 7F6dRp 7[ eR7h6Sp 7} Sp 7 rS766d    Category description >n; h 7R$d4 76 R76 T76M R$dR)$d Input too long - press RETURN >n;hR($d B:CATEGORY.DATj`v&*>6f& ,?@ p  B:ACTPLANS.DATj   Action plan >n;h7ـR$d76R76[T276=  R$dR)$dInput too long - press RETURN >n;h6`Q&**>6=& ,,?@  rp    Category to delete >n; h 7R$d 76k R76 s  R)$dDeleting category from catd (C)ontinue (D)elete (E)xit (R)estart$d4R($dp76W 6р  7 $d46Ā 6  7I $d46 p7V6WB:FONEBOOK.DATj `& * *> $d   T $d4   767ـ 76z@R$d ,>n;h7"6sE78pE7E6A7TC7cD7rR7766p Name to add after >n;h7ӀR$d76sSearching...$d4B:FONEBOOK.DATjB:TRANSk`>&**>s7J6W&,,?6'&,,?Name to be added >n; h 7R$d 76a T 76R$dR)$dName too long - press RETURN >n;hR($d6a $'s$d phone number >n; h 7R$d 7+6& , ,?p6'p7K6R$dR)$d$d not foundegories file...$d4R($dB:CATEGORY.DATjB:TRANSk`m&*>s 7Wp 7c65&,?65p7z6  R$dR)$dCategory not found - press RETURN >n;hR($de@B:CATEGORY.DATB:TRANSYp76  R)$dDeleting action plans for category...$d4R($dB:ACTPLANS.DATjB:TRANSk`&**>s 76_&,,?6_e@B:ACTPLANS.DATB:TRANSY p    Number of item to delete >n;h7 R$d7 6R7 6 ^ np7 4R$dp7 A6XXB7 RR$dXXB7 a6B:ACTPLANS.DATjB:TRANSk` &**>s7 6 &,,?6 Xp7 ׀pXp7 6 6 p7 6 ;  R$dR)$dItem not found - press RETURN >n;hR($de@B:ACTPLANS.DATB:TRANSY  r ppppA7 6 D7 6     Category to scan >n; h 7 R$d 7 6 % - press RETURN >n;hR($de@B:FONEBOOK.DATB:TRANSYpB:FONEBOOK.DATj76<6 7/`& * *>6,@p6p7<6N p ppp Name to delete >n; h 7R$d 76U sB:FONEBOOK.DATjB:TRANSk`&**>s 7p 76Ȁ&,,?6p76UR$dR)$dName not found - press RETURN >n;hR($de@B:FONEBOOK.DATB:TRANSYRT$dR=R R$dme too long - press RETURN >n;hR($d6a1$*d'2~~Z._HANDYSYSy            R$d4R)$dJDECISION SUPPORT ANALYSIS$d4d4JCONSIDERATIONS$d"JA $B $C $D $E $F $G $dH $I$d4d4 6 7 <J $d46/d4d4J $d 61 7#-$d6R($d4R)$d4R=2R$R$dEnter decision consideration , $d| 7 ! ! !p 7 6 6 ! !7 ! p ! !7 ! !6 o6 WR=$ R?  R$d$d43 "A","B","C","D","E","F","G","H","I",d4d4 6i 7 JThi librar fil ha com t m i bit an piece hav foun mos o thi materia o th Skyhous RBB i Sa Jose an o AIM i th Chicag area a usin i o m Osborn wit no difficulity. A NOTE TO NOVICE USERS Al .BA file hav t b compile wit CBAS2.COM,an th .IN file ar th one use o the dis fo driv A hav followe th author' advic an se u th progra wit autostart Th Handysy progra wil no automaticall star a col boot use progra calle "AUTOMOD.COM whic i o th FO utilit disk,UTL.009 Th dis documen (DIS doc) will give you basic instructions. Enjoy..... Rob Mages Sept 28, 1983or NONE to end$d4R=4R+R$d[$dR=4RGR$d]$d4R($d 6ˀ 7 <R=2RAR$d $d4R=4R,R$d 6  7.$d6d4R=4R,R$dn; 1' s NONE7G  NONE7W6 R= $R%R$d $d4 !Tp ! Tp 6/ 6  7] 6̀ 7R=1 R!R$dRT$d6 < R=2R"R$d $ $ !: !:U$d4 6?  7= < R=3R"R$dRT$dR=3R"R$d $ $ !: !:U$d4R=5R!R$dRT$dR=5R"R$dSelect greater of importance between $d$ or $$d >n;1's 7!R$d  746H 6// 6S 7Z <6F6/ 6t 7R=1 R!R$dRT$d6gp76 6 7 6  7 76 ! !766  7<6/6-  74<6/R=2R!R$dRT$dR=2R"R$d$ $ vуHANOI.PAS<  !"#$%&'o()*+,-./0123456789:;? P).)DPɱ˲*%IPax!u\8[6 D@n ¾"je 4QS)IEn žMqKOpaϦ8}V+5'i85)@^)`;@ ? o)pl׉>;)sܮE[h@gT6pQ !!: !:U$ and$d4R=3R!R$dRT$dR=3R"R$d$ $ !: !:U$d have equal rank ...$d4R=5R!R$dRT$dR=5R"R$dSelect greater of importance between $d$ or $$d >n;1's 7vR$d 76Ӏp66p7pp6_R=5R(R$dPress - RETURN - to view ranking >n;hR$d4JConsiderations in order of importance$d4Jfrom highest to lowest are as follows$d4d4 6i 7 J !]!: !]!:U$d46\R=4R(R$dPress - RETURN - to return to menu >n;hA7!!pB7!!pC7-!!pD7K!!pE7i!!pF7!!pG7!!pH7À!!pI7 ! !p!! 6  7 O !!7 '! p !!7 L! !6 6 g  7 6 %|~h:.S5s) ;&NJ)™v=>R ʦ8iG:?6dS>ҙ j PId `c|8I+ >l˝Fq3_ !|t\88l u$wLĄ8&#p`rd-\72b )pLe )pL50|92|9޵/~~_|L8_L-XؠCȄx׾|~7 ˑ)A Ob 옰g&V3|92|9ޥOz7ۿK˟~?p`rd-}?}?pp&L)0d0aC 1vϔb  }/1!}80 ҟ eÁ vL_1!}80 ҟ9&9 &!,᰿>3A K?_RL-&2va la0a'h,LXA)\pWNΗ#S)RVc}_3A9т7Lh)&!ecj 8~ro>L8_L]7!AdmW& 29RLe64(/ xB4EOLsspLPCqV*19RL1AiA % gcrJC]2RМҐh̄!8_<h61AzidfB4(d1L0d0%>ЂvMч jHXz[J)5$,= hnss Fm0E3a=!=f&0|92p\dzB4:8x'&njiLXO=pm;&nLfzB4*xg~2pSLfzB4*xg~2pĄhtWL0>!L )ǻO7  8ޙ&nrLXOF+x?|b Ąhw/_0A 02! 'LXOFp1p• huw 'rۘMO|oL0>!ܔh~w} 'Vh~w/L0>!jDSpp` ) ˑ)62Be ׽cOF=Rj M F6:DŽzD'&/Gh:lssLc䘢! )f,Let˄„dfzB5g&81 xB4Z]ib-#l_Zh„MOZp)y҂=JxB4E2!(8ۚ~&xB40Eef0Ȅ!8;&H7qLe„8&Ą[h~6 =DcZh>0|92Eې[ FBmLX grd ~n F xv;&H7-^)dfB4(`D) avNIMS8K.ASM]  !"#$%&'()o*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ǻd7wdϻ~w~NkS,_?/rLL&3L[L8_LKLK)qƞiѥ>xe273ti3^">8ɴ qS8T|+QM3r=>θs ʛ:>θ^p&>x53WQg<]yq1|92EW&ըĄ4";x>}42e]? $A1N3pOqƁ)2W&&ELM&/GEZ2҄X %bτzž vL~`j=RLupp&oP-"2 \ ˑ vL0}RJx80A $0Awï㷯|5$辄$0 K#J1 ;};&! -^М5$[2aМ8Ԑzn -/ )g5$[xfB 19q=8&!&j=) ˑ)] F( k<Ś3l!0c-#L&Q -b`D)`D) a„!8ń%2DŽL0>aˎ k<Ś3R[ 'aDŽ5b͙ )pLXG4E?3|92EǼ vLnT LhAh&8@3E#JaS|p` xB4z2Ai%2X =܌)= =2Eǧ -̈́h&#lpS`D)Z93 JNx;&2taj= ˑ)]5$ ^ ]` mYZ93!8ۿ_0-O7-P R[ n`|ByS2a=M}ϷLX Z93 ᦘ̄5p=0Aj`a҂=JnW&!a|qL#JeLssLPCLX '& 2[&hX0wt}ڠדU3-ڼ0 ڲ@`ˈ (;|_<4l!2d0{&'c?7#J1c7⡙דU?\nr 2R) FB!&2Be F׉ 9DŽL0lz`j=Z 10|92MiؐDŽL07L-?7#JeLX 93a0 ~n FJ-2+ڜ2O&[F,]cb-#[&811 1|92Mi8lH12A ˄kLH10X˄8&) &/G& )&1A jH=e`D) % ZjLssLcLТ0MinHqc-#[&,&) W& 2A#JA+Z xh&`D)hceB 2@3[Fn`DŽ]3! 2[Fn`DŽEcab`-hh&# ˑ)nCr 80Rb0!ԐÞ &/G&SbH3npU52-JZ93aaB =Z9{&(4L*1KwLe FB˦0w[FHL(Y LXO-r xfrd^̄Ȅz9>1|92ݖP6 Y LhAPugB mPNīzb`rd9 jH=e`D)4S[& 2a>xerd9ŗ FB&S! vL~`j=|NsfPb=lta҂2vτ  & sdrdJF}qÄ?7DŽ8&2BeBle-#\&44R|pL0,Z3a5h?7#JAp`rJ>d&2Be &&kLHqct-Ԑz%[Ԑz 2A9Q2l!2pBeOJ>0! FqLSɇ jHp=L- FB-L8_L0P[`t|pLXEcab0w#J>2A VMѕ)eԐr0 KTsapX&!AVf\QW&1aLX)frdC53n0d0A* ˑ wi - w541|92UHLhA0Eɷ&!LhAדU?Z<'&/GXQg0|92pcgńXL7(4Z jHX;&hX`䘐[3Η#ϐ&DŽȄF jHp}>3 DŽ攆 SSuaj=ڔkcrdA9%m8& 2A /g&è* ˑiʵ>θardrJcʵ6& 2RXRԐz*<1R`LXG&/G&ܥ [&/G&/;ӷ_rwlwç__}Ӈ/drdUDo0lͷ ~τdk ]I F”TLXh-Η#q#J|[`D)z`ЂZerdrˇ?|ϻwO&/G&i2 vLߔ90R P&ըĄW7L8_LcSdB T=Η#h[FHL0>!Y1!Z?/LhNiHKf/ )pL50|92ըS@}qÄ{&HLo/s`zBopp&o 1A)s`OxS2F&&/G&!7bj F9(&/G7톻4x{&HLo` ڨҘpWNΗ#Ԑz n`L(Y Lfc'0d0A*M}Ђ vτulL0ڔkcrd]K32aYe]:ML8_LKLPZ`\lL&C~-0w4A3!W&`D)Lm^ZL%frdJ~ݠݧcerJ#E=0a0 n`ˈ ` % )pLXOJ~aJ~-LX S[FHLfc S/LS6̄̄Ȅ3 X3|92M%let>3aq93TrLcLPC) F)fj=p?oPCҧ?3aarJ`ˈ-옠 Z44l!2d0a=!5g&44Z <3|92A/xfrd-#[&nb )pLHqc҂p` 9 E=0! zX&xb6`D)YfP|XZ!Ǚ k<Ś3| ~n &Q J2DŽk`rdR5RP_<4VΗ#SC@}qÄ?7DŽ8&pe\J 25JPsfBSC8let˄8&ab• n`„Xr xfrd^pxbrd6 klc49&Q PM„|bj=&/Gθard-#[&nTLX )yτI{,RR~tOe'& Y LhAh|` 'LXOHW&nT2a'g|ݐ#J2a0 vL}?U#J!l n` 'c )Y`|BiF1a=!E? V둢L)yc`-l!2]1! ) vL(PML)u9!p``-|pL0ZAL)#JU& Y LhATgj=pZA69h&Q c0栙$P@Z93RRdBn&;&'Á % k<5gt8lSL-|L1-O7 Rk`rd jHн"4Ԑ=$P@nkh n`|꘰p[C2;DŽڕ鶆vؐ[ ' 5W&,&'^b„h& 4RZځ鶆v`Ӆ鶆!鶆62Be 5g&,&'̄3&8@3Zm yCazm )pL-t[C{fb`-la#Jϡ&֣L8_LF}qÄȄ[&(4L ~n n`|®rgU! nrP@r}eBRr}` % ZjLsspL- ˑ z3Η#l!2! xh&n&Q S&!P?0RtCʄC F$Z3Rhr xe/ Fdg5$.!„z7&/G&Qg0|92RBm ֜p5g&!P2!'&(-&Q S<T3aP~ W&Q FBLXW&ڒp`0jTnPC*^ (Ί FB [+ 5$^bec0ya/ jHp=TL0U4 oL8_Ln0Td\W0aΗ#S<&/G&Q S-0a?0R FB FB KL- jHp=TLXǤTؠUV&Q Ԑz?1!'&Q )&!PfBnOL- J &1 X0Ai$<*o0A kθard҂IaBa\D&If\&2Beh āTsL0 g&d[F.L) )pL@`DŽ?1RR0LPCÄ5bxf-#[&HLx;&N>3 V1Œ-Η#S{̨3np`D)L|bjq5g& uL@Ђ`cCʄۣ90R쬘ۣ2RDk&Q -X` FB `D)|`]#JagB̄Ä Ԑz{4O&'*za`-lQet3Afj=r}`UuCn& 2#J qLXOU09%g`-V둢3|929x7L8_L0$Ԑz0 wӇ?|ݷ?1! ];&ؾ7p>ۧ~~crJ>d&Q o?7`D)Ԣ_<|gP N swۿB3np`D)Ԣvτ„5B&(4L*1! ) SJL-ؠ[(2R5[#Jg"V[&/G,Q7L8_L0jQLPC9 J Bz`-#.Le„8&2Be-#l_[F.LXG#Η#S3np`D)H&2tarJ>d&2Bet-m>0pSnJ3pSnxB5g&!Aʕ?75$g*! n`|Biʄ5b͙ d&Le ]1xݐDŽ8&81-O7 J<05JT&'XsfPb`-r L8_LIE}qÄ#J8yffoLetM(LX -֜#J8yfoL0jQL÷{&82|92Xsf/ ~n qL0LPC[)2aafcBnL0%E&2taB x8&⡙#JXRsff„^`D)LKLca/ Cp ]DŽ!8m2 xqr`/ xh&!rL0Z`j=p_<|g Z93R0N3aN1[&ap XeB(cvLXO(K͙ ~n ~n 0Rt5L1!LXdga\+r xe\(I jHp=TL0&њ mN80$0!-&/G&Q S-0!0䄗cB IaB ˑ)Go7Q JXrԐzֿcBnOLPCLPC9)G}`ˈ-`-n0d0aac DŽ, Z4(&hpLȢE1!b-#.Le p]1 f2#J!G}etE;&Q 9+|Le-#lLHqc-#lLfc6l!]1uD49& 2Rbɖ jHp=T1aSAfB )Xk`rdJѣ>θard0-)2A 9`^/8Ov_?qDŽ8&2vaB`|v~o~ˎ FB0M ]`LXǒ⤘p|i3np5[&c0|928 ˑ nZIWÄd\"&/G&Q Ӓ"Ԑz 9Ňla0A vLzԨ[`rdfRB}qÄ[FHL(Y LXOt5LHqc-#[&c0|92Nq Η#Ԑz 9Ň(́ xh&2BbBT&h3@3Zu L8_L(7L8_Let˄[F,]0j[)2A3R` '\ +Z )Lm2&Qԁ CZ x8&Q SLet˄„5`ƚ3r L8_LA)n0%E&!uSl GbLab0Rh^̞ )pLcI;&pSQg0|92R`DŽ_y1 jHp"la0d05/a=FR`&'&⡙0MaO0Ncj=p Fz3 E5g&+(2 JNx;&2ta`S(fL?7`D)Y x8&=r L8_L p]3W&peBR0w- nk`rdrdn0t{&Q Jle6(ZVȄȤo0ԛyLX=Z93aafptLHqfft3ptL0h&2b 02#J.FW&Q ҩ2?7 Xc-#LWLsspLe-#;&,&'YΗ#N1KLHqc-#LLfc ^ 0]` mY0K&CrńRD}qÄ#Ja &|g Kcj)6=&9v5$( V jHp݉<(If x8&Q h_<|gBa FB `c`D)LuLX=ZOvLȆ$Ԑ5y&Q N#Ԑz_[Ԑz_`D)LvVLPC-ESp?75$OL- x8&98&֣]ac0LPCZTG߮(Ί x8&̄3$j1|92-&:v`\+(Ί jHp=TLX$Z3|92Pg0|92A ;Qg0LXGK ˑ)HD}qÄ5$L- F) jHp=T1!'&!PfBnL0ZLPCZ tp$D7L8_L0P[`!!`D)z#JAB<0a2|92I jHp#Ja`D)` jHp='h!LXGbL8_L-)>θard0-)2{&Q o[F,]oLXGbL8_LNq Η#` Ipruq Η#(ɷqf-#L&1aW&&}`rdIOq Η#(ɷqf-#L&~#JAm[F,]l҇ x8&2BeB„6/0LXMʄ! &}`„&[FH_lO옰=h,LPC-`D)9+VQn ˑ)2&/G&Q Ӓ"|goL0$߶#J-d&=Jla0a=!Letm2 ڼ0a)g”b vLX Z4&98&9v#JAm L÷{&2b_<4laeB| )L0RlzL&/G&/ǻOwï?&/G[8lH10A Ä|bJ?7?7?7 ~n3&a+S-d&(4(?7%21A f ~n FB#Jg'̄$<\`D)( Cp ):ק( <1RccBsJ>d&МҘ[&МҘۇ+r L8_LS3np0w;&g0;&,}vcOR2RR4xoL(9̄[FH_ Z0{&9h&Q S,2Ai`|®]_}y_ӇO_ l!0Ab»1 l!2Ab1da-#l&81M xv[F.LhnĄ! ~n Fc6 k11A ZL)c6?7`D)LvVLS7=|pLXǔ+Ӕ )f|g042aSp_6!Ia#JTsLPC/;p JvwLXOR|&2uv;&'L)_dbcR! Jva ϻr4L&caf#JaF&,&'L).LPCS?<3!W&0! _<4V1iJq_<4 c\Ę'&ְLem8&2Be=la0A n &a[F.LXǔg&/GɆ7!)T[()E#JaJQ3A OZ F”3M) jHp}c~tĘ'&1aLX$Z&/G&/Gq ()`ۯ{DŽc*s3 >28A Ob %'cB 2@3RBm k1Ai$0wc҂IaB ˑiG}qÄ & {DŽ!'<r L8_LS8 ˑ CԖefB[X& 4m2&-&p&i4aÐ4>lPZh&6LhAh&h3@3A d,LX r L8_LSsS@}qÄ[FHLȒ`ۅ )pL&caOr L8_LfPg0|92z\SܠSY vL}τ8&(-H3&E&'\E3AbB)2Aiz&' vL~88x??}b5#J! O k