IMD 1.16: 1/06/2007 9:56:27 FOGCPM.164 ååååååååååååååå--FOGCPM164BIOS2RSXAQM< BIOS2RSXRSX BIOSFIX COM BIOSFIX MACCCP101 NOT CCP105 MQC€ !CCP105 MQC€"#$%&'()*+,-./01CCP105 MQC€23456789:;<=>?@ACCP105 MQC.BCDEFG-03-00 87 ©-CPM164 DOCª«¬CD310 DOC+HIJKLMCD311 AQMvNOPQRSTUVWXYZ[\CPM2 COM]^_`CPM2 DOC abCPM2DEL COMcCPM3SCB DOCGdefghijklSAPP12 AQMUmnopqrstuvwSAPP12 COMxyzSAPP12 DOC){|}~€SID11 RSX�SIDRSX11DOC ‚ƒ„…STAT30 ASM&†‡ˆ‰ŠSTAT30 COM‹STAT30 DOCŒ�ŽSYN ASM_��‘’“”•–—˜™šSYN COM›SYN DOC-œ�žŸ ¡WRITECCPCOM¢WRITECCPDOC£WRITECCPMQC$¤¥¦§¨åThis is the disk name. EW„EY¤E[ÄE]äE_Fa$FcDFedFg„Fi¤FkÄFmäFoGq$GsDGudGw„Gy¤G{ÄG}äGôÿ�$HƒDH…dH‡„H‰¤H‹ÄH�äH�I‘$I“DI•dI—„I™¤I›ÄI�äIŸJ¡$J£DJ¥dJ§„J©¤J«ÄJ­äJ¯K±$K³DKµdK·„K¹¤K»ÄK½äK¿LÁ$LÃDLÅdLÇ„LɤLËÄLÍäLÏMÑ$MÓDMÕdM×ôÿÙ¤MÛÄMÝäMßNá$NãDNådNç„Né¤NëÄNíäNïOñôÿóôÿõôÿÿÿÿÿ¯Oÿÿÿÿÿÿÿÿÿÿ/PEPõÿ…P õÿ ÅP åPõÿÿÿÿ@QÿÿÿÿÿÿÿÿÿõÿõÿRÿ/R#ER%eR'õÿ)¥R+ÅR-åR/S1%S3ES5eS7…S9¥S;ÅS=åS?TA%TCETEeTG…TIõÿKÅTÿïTOõÿQ%USEUUeååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååvÿ…ÏBIOS2RSX.ASMRöÿ ßÿšÿ‹ÿŒÿžÿõÿòÿ�ÿ�ÿ–ÿ“ÿ‘ÿÄÿ›ÿœÿ—ÿ’ÿŠÿ�ÿ�ÿ™ÿ”ÿ !"#$%‡ÿ˜ÿˆÿ‰ÿÅÿÓÿ•ÿÏÿ&'()*+,-ÑÿÎÿ†ÿ¬ÿÍÿ½ÿ°ÿ¼ÿ¶ÿ./01234¯ÿ…ÿ²ÿÐÿ»ÿ«ÿ56789:;<ÌÿÀÿÊÿ¾ÿÇÿ=>?@ABCDEFG·ÿÛÿØÿÂÿ³ÿŽÿÉÿµÿ­ÿ¨ÿÕÿÒÿHIJKLMNOPQËÿ§ÿÆÿºÿ©ÿoÿ×ÿÖÿÃÿúÿùÿåÿãÿÞÿÔÿÈÿÁÿ¸ÿ¥ÿÿþÕ;H’ÌøÍû§¯_èåá…^?ÞžéOÏûïªw�¿üÑÊ/¼>Ñ—´3ýoHzйyW½«ø>’ÒŸžÿ–N)gZC<§Æôþéëzyx¡§Õ$-™éõãí™t^×Ä»Š-zÿôõ ýðpx úÒd!å'JB+‡-†I)Çcê–I¹K ÞU,9ö=•#YiÔxɱï©©07n´Å@'¦5Äc°I¼«ø9g².³eúøúFI©Å´<‘ ¦÷O_¿Ðwzýx{~ð®zWéûÓÊ�R¡-ĉd0} ô-.Ëo”þçP,“I=3¥B2˜þ8ç'úåo¼«DIuæüã¿N¶„'ïªw•¾Ä–¶Ä�þŽþ8ç'zü»_þ†$R˜ ÅBVè—û/?Q0H†ºÍ*dô¿Üé?½«D?g�d­q# ¶Ò½~{{¦n9Óã ýÓ™ƒ¦X¨ÌÓÂáŸÉJ£À2‡¢ÞU"L©´ÔMR,$Äd0uË9•#­!ƒM””Â\J*GšKãà]%:sÐ ½<¼PÜèýÓ×/DßGRJJ…;«Zx¢-ZC<›”d˜xW‰,0�BáBI‚­dôþéëú”g%.çb™¸-³P‰B¶d&‰ÞU¢a¥e&LëxÒÔ-“r—èãëÅ�ŒÞ?}ýBŸò¬ôúñöüà]Å?þÛdKxò®z‡®|ô®zWñ}$%þýl””d0Å’ŸhXh' L�W.�‹ÐÙòÌÞU|éˆsn´0) I$LÙ‘UH¹K ¤é3“ ï*N)gZ˜fåöà]õn²Ã¯•»ÄðkMŸùþýŒ—Ÿþà�w=€?ãÞ†wyÿ~ÆÝ†wÕ»ê]ÅŸžÿ–ÖÀ[:�J˜»Ì�½«Þ¡-¸_ï×ûõ~½_ïÞq‘ðtÁmZ±Ä(Þ>ÈmÁmZ�J·yZ½C;áT*|šb›3S*”SaïÖÀç Ú w Òøœâ¬4Å6gö.ðÏ|A[pß¶T <Å3Ó–íè]‰e™ö Ú‚»wh ~óúñöüòðòøïÐܯ÷ëÝ»ê]Å÷ÁôþéëúááN¯oÏt›§•Ä–Ì””z\7Ø» ‰d9DZéYï¬JéQ…Bœ%֢%ݽ«øøúF!Î’ +Y`Z£p‘d9?Q*´XÙ¹ÑÄS OÞUh$üDÝJ‰B S·œ¹QK�»ä§ïªw‡Ó£\p›VÜ�J' -1Šw‡‹Ê·iÅÝ»C�%• nÓŠ»w‡Kœår›Vܽ;ä¤rÁmZq÷î`ó!Îr¹M+îÞl>¤rÁmZq÷·iÅÝ;ܦwïp›VܽÃmZq÷·iÅÝ;ܦwïp›Vܽ;䤢r¹M+îÞUï*žÓ±ÄB«Ú‘½«Þi:–X.h z¸æíú›×�·g:s —‡—GúùýûÇ?üýo®=\óv½{W½«x�¹Ñ£xW½[b” ÖYV=•Œ^¿½=S·œ))¥BkˆÇÀªWR;3õu&ö묨DIíÌÔ×™TLØ;¬³4ï°Î:°x‡Ü [ *@¥¤$#)É`ÚRP!I“Œçã ½C ó·ÏXb”Ç;Pé6O+¥�Jô‡`0 R`e¡-’41Éq>Ú²½ƒŠaKAÅ;tË©$*¥’$YNŸ™^?Þžél!Ù’Y½C¹á¨¤vf’ÁôþéëúááN¯oÏt›§Õ;èÈ 1·_[k•È„rì&)º{‡|Hh×Ãi‰QPIYh^I"MñÌt›§•Ä–ÌÞ!–ëãOù¨´< S�sKÈ-ï–åþÓÅ;Lñ »NÞAÅhÞ!•†wH倿Zè@¥ï#)%¥>Ø$•ã•–Yèñ§¿ü@ÿB/?ýÁ;ÜÊg,1Êý'ï¼C>$Œëi ’΋J’Y˜ Ÿè6O+Yk�U½ƒŽÜðèò!a\5K,¨¤q.�â¶y‡n9c “½«ÞUú3SÜw’HÊLi£÷O_¿Ð™ƒ¦X¨ÌÓÂ�’RàßϬÂ�ÎÉèõÛÛ³w•h›K— =¾<}l¤ñJ�e…^^¼«Þ-1Êãýâ¦x†];PéõÛÛ3msé’b¡2O ïÐׄÇ Ò™ƒ¦X¨[Îô£w¸•ÏXb”ÇŸ€Ji£¯$ƒ õX$•™½ÃW,Þa�+šwXãŠáÖ¸bÕ“wȇ„q½ß_^PiËv¤÷O_¿�•Fgšb¡—‡ïX¼[b”ÇŸ.Þa�+ R`•˜^¿½=S·œIÅ„½ÃW4ï°ÆÃ;¬qŪ'ïp›V>P©[O‹wÕ»Š?[˜h‰Q¼«Þ�–å‚$´ë’¢® *½~¼=ÓjÁ&´äØwïp›V>Pé6O+I¤×ooÏÞUï–u].h î@¥×�·gÚæÒ%Åâ�>^ÐÜ�J?SàcRáàÝÒ/h'Ü�J¯ïø˜T8x×8ðñ‚v¨ôíï)ð1©pðnäÀÇ Ú w Ò¯~G��I…ƒwÕ»Š_ʼn©%ݼ«Þ�8ñ¹†Ê)P©î;¥�V.-•#�Bö1Ì;ôò§�„‡ *µyZi™·�I¤–t÷‡`0ï b*§ @¥eÞ6t I„‹wP1 ëTZæmã@©X—tfï b˜‹õ"@¥Ï"YαS�sï bPÞ%ì@¥Ï"I°¾S�sï bPÞ%ìÿõè‹wÕ»Šg’`}ð®z§,öKÕ¥7(ïvï0Å3òµ•$Xß©ÌÓÂ�$Ò¯~ç¦xƸ.ÞAGnPÞ%ìÞ!°xW½«ø9§c¡Û<­$¶d¦X¨ðAhµ#ÓçÒ,<=}I))æÆÍ»Š-ZC<›”d˜PlB§Á…Ž,’Ê‘d0Yk�UY)nÞU¼~¼=ÓmžV[2 ‰õÁ»êšâñÞUï*^?Þžé�ó´Òw[2{W½ë‹\p›Vœ–¨Ôcn´Ä(ÄE“w§E.¸M+NKŒT:Y˜h‰Qˆ‹„'ïp›Vz,*@¥‹ÆÌ¤b2«w¸M+=–T€J=�™)•uïp›Vz,q R�Ecfг¬³x‡Û´â�“ P)'г¬³x‡Û´â`ó!ÎT²ù@�Ï©3ÅYÖY¼ÃmZq°ù� PÉæ5>§Î”Ê:‹w¸M+Fœ¨4âÄÔ’î4Øšw¸M+”sÓ¨¤œ¹ µ�ÎìnÓ e‘°•”3w! Öwïp›V(‹r*)gîBÊ]bð·i…²´É€JÊBm2²Ö«z‡Û´"°5 R`kd¤Ü%ïp›VœB*�B&#å.1x‡Û´â�“Š P)'R1™Õ;ܦÊ]‚ ’r—H‚Í&)ïªwÏœ¹ µ¤ûÑ{`&£Ív¦oŸ~E[ ´†x 6©w2LhJÇ!4+S’ïªwʹé~Áϰk*þýÌ*ܨ…tf*ó´pð*å½éîT K|*) ½Sà#¥B¯oÏŸ^½ÃtN°ëß•^?Þži›K— •yZ8x‡n9ã°¤¨@¥÷O_¿ÐwRÎÜÅ;Lñ »ïƒ!•úà¾Óýêw¿½{‡ð@%åÌ]ˆCˆÁ;Lñ ¾N@¥# Yk�U)ntÈ&$¶dö©0¼ÃÏh×É;ú8z¹á�M€Jjg¦C6!k-°ªwȇ„q}|*ÅmS’Hm]ÈZ ¬êš54ï0Å3ø:•6–>ÈZ ¬Jq£¶.Þ!•†w˜âí:y‡CGï #7´u*Yk�U)nÔÖÅ;Lñ »N@¥¾N¤Ü%¥•I°¾{ƒ®âR9`x‡T@¥5¦"$‘–ûN:Ò&4™îÞ!•†w˜âv�¼ƒŠaÑ ¨¤vfZrì;éH›Ðdº{‡|Hh×Ç RÜ6e!‰´êðÍšw˜âv�¼ƒŠaÕTR;3­ãIS·L:Ò&´Y—¼C>$Œk[P)°Ì¡Ð·O¿"k-°ªw,ÞUï*¾�¤´ÙÎôíÓ¯hÄÜ”d0Y ¬ÊJq#LÖe¶ì]Å·O¯DßÓû§¯_臇;}ûô+JJ)QþBsiTblÞU,Oôþéëzyx¡5Äc°I¼«Þµu\À¿ŸñkïÐN¸•J$ V4›¤X¼CSü¨¤=˜ôA§šz‡¦x*µ¸K O´ÌÛÆÁ»¶.4Å PéÛ§WïÐ/@¥÷çðMñTúùwÿà]õ®â™…ÚdÞUMv©ºô†6™µà¦xF¾v R›ŒÊ<-H"ýêwÞaŠgŒëâtä†6™µà‹wÕ»ŠïÁŠf&å.1èÑ3w‰AÉS‰B¬h6áFO,ÞUüÙ’Ð\$e:1í%žHÓ:ž4uˤÜ%*ó´pxð®âûHJ§v¥-&SʱÉ”d0­!ƒM$aVQï*d0½~¼=“Dj‘d0I°¢Ù$Åò@ô'¦5Äc°I½«°ÞY•d0ýíï~þNbKfj)p—üD©E’Á)P<ï*$XÑl’by ú>X™Ö�Á&¥SÊ™Ž,$ƒéb9zW‘Ùg!L-éNºó‰–Y( éˆsnÔmV¦½«¦ïªwÊ]‚•ËÏÈ×T ,s(¤Ü%J…~õ;ï0Å3Æuñ�Å»ê]Å3 )w‰�Ê<-¼«Þ)‹r¿`Šgص{ƒò®Ü½C`ñ®zWñ'¶F2˜”3wáF~!å.1£�}.æ]õ®âÏ! “DÚRP!å.1PÜh.–sì&ÜhɱïÞUï�›aÑ ¨td¡%Ǿ“Ž´ M¦»wH%À€JÖn³ �-ÏìT s±^¨4Ë9v ÜchÔã\Ä;äfPÞ›î@%e¡y¥³å™•¶¼ƒŠa.Öt*Ñ)$IåHÉ ÍÅrŽÝ„›wÈÍ ¼KØ�J´äØwï b˜‹IؽCnå]¹{Ã\L¹{W½ëcŸ‹]�›a.Ö‹•¬<Ñ\,çØI¹K êb0P‰R!Iiɱï?z‡ÛgXα•tO+¥�JïÐz€•æb½ý–æb½ý•½ƒŠa.Ö‹x‡Ü Ê{ÓÝ;äC¸ÎÅšîÞ¡O+& ’òÞt§ßÒ\¬éN?z‡[ù Ë9v ’îi¥´Q‰âr3(ïvï� ã:“°{‡>­˜€JÊ»„�~Ks1 ;ýènå3,çØ�Jº§•ÒF%ŠwÈÍ ¼+wï� ã:SîÞ¡O+& ’ò®Üé·4Sîô£w¸•ϰœc*éžVJ•(Þ!•€ ¨4Å3“D*|Rîƒw˜âv�¼C>$Œ«®T²ÖÅ�tïЧPI¹K ô?¤«Ð�ÞáÖQbCGÚÄ;ïpèã Ò¯~÷ÛeÞ6d­ïJ\ò~�ŠAy*ÞAGnPÞ—yóù�0®Cź Ò2o².éÌ´e;z‡)ža×É;Lç„éúTRZæmã@Ö%�Ù;Ä`0 ÒÉ”’�åÀÖž~ô·ÏØR*@¥-åL˼m(mT¢x‡Ü Ê{ÓÝ;äC¸•¦;*©ML-éN?z‡>­˜¼Ã­|F‰“IÞ!7ƒò.a÷ù�0®CEÂŽJj“ë;ýèú´bò·ò%N&}x‡Ü ÊûP*©ML˼mèGï� ã:T”»wèÓŠÉ;Ü>c2éûê]‰“Iï�›a¨œ‚•–yÛ8PVŽÜ~ô1Ì;ôò§�„‡ *õÌh™·�ƒwÞm)• r3(ïMwï b*Mwï�GnPÞ%ìÞAGn*vï�›Ay*ÞAÅ0T”»wÈÍtËv*æF)°5¢½C ó½|F`kC¨ôÄêÁ`ÞAÅ0TNA€J%ÒÊ¥¥r¤SHÂÞUï&“>.È#7´É¬ïpèãèòÈ Êû2oÞ!7C`kq*�FêƒNöDiŠg¦½C ó·òá4Å3•tO+¥�[óÓ9Á®�ÞAÅ0TNA€J“…�–yÛ8PVŽÜ¼Ã¡�#€J#ÿ¶MFÔø·Ë¼m¼«Þ…ÓÏ|A>$,×Ç—_€JË“0õ8ñλŠÜRPiɱï4Å3{NÓùþÓÅ;Lñ »NÞAÅhÞ!•†wH倿Zè@¥ï#)%¥>Ø$•ã•–YèñåúzùéÞáV>#œ¦óý'ï¼Cn†S�§•�J§�„IžVö}Mx*I¤–w‰á‰~ô·ò|HTj±°wÈÍÀaËv*õÁ}§-âbPïƒÁ¼Ã­|’•Z,¿:…$L-Jiô‡`0ï b*§ @%ñD˼mè’ïÐ-gœB*¨t I˜–yÛ8xLJ$äfà°e;z‡Àâ]õ®â[Ò�[{ z·œéýÓ×/ôÃÃ�^?ÞžI"m)g’Á´ÌÛÆÁ»ŠS’A±0­ãIS·LÊ]bxð®zØÚP¹x‡n9#œ~�J R*IèýÓ×/ôÃÃ�^?Þž½ÃtN°ëã@¥ÀÖh›K— •yZ8x‡n9ã°¤¨@¥ÀÖH¹K ÞAÅÀaËvô�Å»ê]Å·¤;�B~ z·œéýÓ×/ôÃÃ�^?ÞžI"�B¦XØ»Šu•”»Ä@ež” ½¾{‡Þ�JÊ"a§m.]R,TæiáàºåŒÃ’¢z‡|Hס²Ì*)w‰�–yÛ8x¹aé��@¥eÞ6d­V¥TèõÝ;Lç»>¾•”¥MFÛ\º¤X¨ÌÓÂÁ;tˇ%EõÓ9Á®�@¥o_~¦ÅÊNežÞAÅ`��@¥ÅÊNež” ýì¦s‚]_~*)ËRvÚæÒ%ÅBežÞ¡[Î8,)*PIYèÛ—Ÿi±²{‡Àâ]õ®âSHEhbU;2™Ð¯~Gs‘”©Ì9?xW½[Ã¤Ç ¦x†]'ïƒÁ¼Cøì¦xF¿NÞa�u`x‡n9ãÐc‰³x‡5®Þ!•†w¸M+Ö0éÑ»ê]EKºSúi™·�ƒwÕ»¡²ÌÛM1Ùá×Ê]bøµ¦Ïì]õ®âl!Ù’™Tb°#“6ïªwÊ{Óý‚¦x*åxLÝ2µ¤;•yZ8x§¼KØ/hŠ RŽÇÔ-“ë;•yZ8x§¼+÷ šâ¨”ã1uˤÜ%*ó´pð®z7Tšî4Å#PiOšºejIw*ó´pðn¨HØ/hŠ Ò:ž4uË$ÁúNežÞ å~AS<•Öñ¤©[&å.1P™§…ƒwÕ;ë¢Ü/hŠG ’î|âFëxÒÔ-“r—¼SÞ‡ÊMñTžVZÇ“¦n™”»ÄàÝP±.4Å#Pi™·�™¤3Ó–íèÝP9¹ )�J˼m¨+Gn´e;zW½›‹õ"4Å#Pi.–sì&ÜH¹K Ôç"ÞÍÅšî4Å#Pi.–sìÔ’îTæiáàÝ\LÂ~AS¼•æb9ÇN¬ïTæiáàÝ\L¹_Ð�@¥¹Xα“r—¨ÌÓÂÁ;å}™· šâ¨”ã1uˤÜ%²Ö«R*´ÌÛÆÁ»ê�®rAS<•ú:‘r—”V$ÁúîÝ!›\Ð/@¥C6!k-°ªw‹N4Å#Piɱï¤#mB“éîݪウx*­ãIS·L:Ò&´Y—¼«Þqز/hŠG ‡^c�TŽÞݲ/hŠG ÒCgRî¶æ]`kq½ )�J�”6 l�âÊÁ$Åâ]8mÙŽ4Å#PiOšºe l�¶lGïNAžV¾ )�J§�„)®LR,$O+{×&³.hŠ R6j“‘µXÕ»˜›µ.MñT²Ö«RÜ(æF¯oÏÞUï¶T.h îÛ6€J[ *$ib’â|´e;^IY(ÊÑšwÞ�KóÎ;ï¼û÷ü�ÿîÞ!•†w˜âv�¼ƒŠaÑ åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå?ÃaÃÿBIOS2.21ÃÃÃÃÃÃÃÃÃÃÃÃÃÃà BIOS ver 2.21 ACTIVE õåÕÅ:>·Ê“¯2>ͱ*"<-~# Â!"!HÍyþ ¡ÁÑáñ!"ÉÁÑáñà *<"ï2(2'!€":É2Ê2Êà :(·Äï2(2'2)22Éi`"ÉèèÃÃ!Ã$Ã'Ã*Ã-ÃÒÃ3ÃêÄÃ{ÉÕÃEÃ�y22Ì> Í¿|µÈ^#Vë"1! ^#Vë"u~20###~23 ~24!kÉi`":Éi`Éy2 É>27<29Ãÿ¯27y29þ»:3<2):2*:2+: 2-:)·Êÿ=2):!*¾Âÿ:!+¾Âÿ: !-¾Âÿ4~!0¾Úø*+#"+¯2-¯26ï2)<26¯25:4·G: !€Ê,ëëÒ#ë)æÂë2&".!'~6·Êa:!!¾ÂZ:!"¾ÂZ:&!$¾Ê~:(·ÄÃ:2!*"":&2$:6·Ä·¯2(*:ë*.:7·Â’>2(ë€~# •:9þ³:5·Â³¯2(ÍÃ:5ÉÍÏ> Í¿25ÉÍÏ>Í¿25É:$o&"Ì*1"Î>Í¿}2%"Ì> Í¿*""Ì> Í¿!"Ì> Í¿>2Ë>Í¿É~·ÈNåÍ$á#Ãÿ€ �A € B@‰$‚$’I$’I"B€@HˆH’I$D‘$I‰"$$@"HD‘$H’I$D‰€ $BD$A$"BHIBååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååà Í}þ00!Í™BIOSFIX requires CP/M Plus ǧ1Í.ù~,¶ +Í™Banked version of CP/M Plus required Ç.h>!wüÍ™SCB BIOS jump table now fixed Çá~#å·È_Íò:s ǧ1Í.ù~,¶ +Í™Banked version of CP/M Plus required Ç.h>!wüÍ™SCB BIOSBUDGET CAL  óCURRENCYCAL  ôDIFEQ CAL  ö€FNMAX CAL  ø€FNPLOT CAL  úFNZPM CAL  ü€GROWTH CAL  þ€iGSA15A20CAL  €#åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå .z80 ;For CP/M Plus Banked version only. ; ;A short patch program to fix the System Control Block BIOS jump ;vectors. This will cause all BIOS Warm boot, console I/O, and ;List output routines to be entered with bank 1 (TPA bank) in ;context. It will then be safe to implement RSXs that modify ;the BIOS jump vector to live below common base. BIOSFIX should ;be executed after a cold boot, but not within a submit file because ;CP/Ms GET RSX (which is attached to submit) modifies these same ;vectors, then restores them to their original values on completion. ;So you will have to remember to run BIOSFIX by hand at each cold ;boot. Refer to CPM3SCB.DOC for details of the SCB BIOS jump vectors. ;This short code sequence could also be implemented in an RSX that ;modifies the BIOS vectors. ; ;Jim Lopushinsky ;June 25, 1986 ;Meadowlark RCP/M 403-435-6579 ; ;To assemble and link: ; M80 =BIOSFIX ; L80 BIOSFIX,BIOSFIX/N/E bdos equ 5 main: ld c,12 call bdos ;get cpm version ld a,l  cp 30h jr nc,cpm3_ok call ilprt db 'BIOSFIX requires CP/M Plus',13,10,0 rst 0 cpm3_ok: ld de,scbpb ld c,49 call bdos ;get SCB address ld l,0f9h ;point to common memory base ld a,(hl) inc l or (hl) ;is it zero? jr nz,bank_ok call ilprt db 'Banked version of CP/M Plus required',13,10,0 rst 0 bank_ok: ld de,6 ;distance between vectors ld l,68h ;offset to WBOOT vector ld b,5 ;5 vectors ld a,21h ;just a LD HL, inst set_loop: ld (hl),a ;modify the JP to LD HL, add hl,de ;on to next vector djnz set_loop ;loop for all vectors call ilprt db 'SCB BIOS jump table now fixed',13,10,0 rst 0 ilprt: pop hl ld a,(hl) inc hl push hl or a ret z ld e,a ld c,2 call bdos jr ilprt scbpb: db 3ah ;location of SCB address db 0 ;get operation end main åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå INSTALL NOTES FOR CCP+ After using CCP101+, and finally getting it installed, I've created this file in order to save others the time it took me to figure it all out. To install CCP+ on your system, perform the following steps: 1) Recompile CCP101.ASM with MAC; rename the result from CCP101.HEX to CCP.HEX. Place MAKECCP.SUB, LOADER.PRL, CCP.HEX, SUBMIT and SID on the same disk. Type: SUBMIT MAKECCP This will create CCP.COM on the disk. Place this file and WRITECCP.COM on a _copy_ of a bootable system disk. Run WRITECCP to install CCP.COM on your system tracks. Modify the ROOT.DIR file to set up your named directory entries. You may have a maximum of 64 drive/user area partitions defined. To enable the named directories after bootup, type: SETDIR (note: ROOT.DIR must be in the default drive/user) DIRNAME ON Note: This CCP replacement eliminates all resident commands, such as ERA, TYPE, REN etc. Use ERASE.COM, RENAME.COM, DIR.COM, and TYPE.COM on your original distribution disks to replace these. You may want to use some of the excellent public-domain utilities, such as SD (instead of DIR.COM) and TYPEL (instead of TYPE), as I did for my system. This should get you started, but be sure to read ALL the doc files in this collection for more information before you attempt this mod. Jim Switz 15 Sept 85 ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååvÿцCCP105.MACo öÿßÿšÿõÿòÿ‹ÿ�ÿ�ÿ‘ÿ–ÿžÿŒÿÄÿ›ÿ“ÿœÿ !"#$%&’ÿ¼ÿ™ÿ�ÿÓÿ³ÿ—ÿŠÿ»ÿºÿ'()*+,-./01234�ÿ¾ÿ¬ÿ·ÿ˜ÿ­ÿ¯ÿ±ÿ«ÿ×ÿÖÿ°ÿ½ÿ56789:;<=>?@ABCÎÿ‰ÿ¶ÿ†ÿÏÿ¹ÿÑÿ²ÿÅÿ‡ÿØÿªÿ”ÿˆÿ•ÿÍÿDEFGHIJKLMNOPQoÿÌÿÒÿ©ÿ¥ÿ…ÿÔÿ§ÿÝÿ´ÿÉÿËÿ¸ÿÀÿÊÿ¦ÿµÿÛÿûÿÇÿÐÿÈÿÆÿRSTUVùÿÂÿ®ÿWXYZ[\]¤ÿ¢ÿ¨ÿÞÿ^_`abcdefgŽÿúÿ„ÿ‚ÿøÿÁÿðÿÙÿôÿÕÿ÷ÿóÿïÿhijklmnÜÿÃÿñÿƒÿíÿéÿèÿîÿ¡ÿ ÿìÿëÿåÿÿþApØtÖ£õ(;ÂÂYƒ…Ž}"¬´Â‰–ÊŽ°,WèLÄòrXÞ®/Áaê=“DX–«ù°¼¸œ–(5ÖJÇ>ÊŽ°,W :±]Þ®çÃòârZ¢Ô‚ÖJÇ>ÊŽ0Ù‰rêk¥3y¯Õ…à 8<'å­6xtqö8…£³gO|ÿ„ÏðÜ^SÄI¿ð¨(9iͥƤ]´f�ºÂ‹ÙíAp¨l"�•Ò–ûËËéz¸hKÁApxNÊ[mðèâìñ€xtôãìý�ïŸðžÛkŠ8éxßÙÜav½§ˆ1*{L?zO k§<¡Ô‚€"Ù+ƒ÷VvhM´ÙI« ê .´Ž•=&Ô {O k§<á–W‚@yûá ïuŸ"*’½2xoe‡ZGŒÊ–WX;åiw�Óäuƒe¹Œ¾ÇÜQ¾óXi…�]²£²Çô£÷¤Ð×”ñ¾#CǤÐae¡õ‚€Ô8!T½Á­¥+,÷—•MäœÝ*›È£3W˶²‰üî§Ékt1RÆ×«ézhVË“õæ �‰ø—yÛ–HÓ;I�‰HÓ;I+­°÷¤n<ê{#8\N_ßΖ þe>ŽmƒÎD¼œ¾¾�-q¢µÄc—zò¸õDX–«ù°¼¸œ–Xi%8D’Î&¿»àÉoÏp&{§$.µ'ÁApxNÊ[mðèâì)ý8{÷ãû'|†K*ô1E\-OÖ›3¤¿é�¤sçÌ‚"ޝWÓõ€ÎDÁà/ó¶=,‘þ¦w’Pj¬’[ ®¥ÕÆ_ žÛkŠXhE8é%'­YRc²åÔ)f]ÎD¬•Îä½Vˆåå°¼]£Ñ÷X+]“J§è³3^p(´"”�3¨ aÖEáLÄd'Ê©StI›ÊŽ0*{LèÉ©Üaîœ5‚ƒà𜔷ÚàÑÅÙ{8{úãìû�ïŸðNc¤ˆãëaù�‰8¾¾�-ñØ)ë&‰ [Aε`ÁáÙ“�‚C«]$…Þ:E�‰HFªS¬µ5Ò <+‡élDÿ¸…££É‚‹Q‘÷¨+œ�zI–ÚH¥’Îw‚/ÇËÃt6"ŒÜÂÑQœCH:;iµA]aÖE¡ ThuŠçIp9»œ½F€ñ�[8:¢9„¤]$…¹£|‡ËÙk$#Õ)ÖÚ)x9¶ûÆ?náèñh!iI¡¢¤³“„d¤:ÅZ[#ÏÆM»Ÿã·pôø~!iI¡'‰I»ˆd¤:ÅZ[#ÏÆÍz|½Aÿ¸…£ÇŸsI»H =I4t-q9{�µ¶F’B2R�b­­‘‚gãf9{�ã·pôèæ’v‘z’¸œ½ÆZ[#Iy$#Õ)ÖÚ)øzµ ¿éáè1v¼;&=�ïš›¯7Îïæø;Τ²f�‘’-¬$%Ú¶öúÕ»wó]sál|7Çßñò¶Ýœ<›�åf¿Är»Þ†v€­½~õîç|לA81VâaØÏ�”Ò I0´líõ«÷çó]óÂYy>Ç߱ܯgûvÄËý0b»ÿ >oFÁаµ×¯>�ÍwÍ„c%–Úx�  ;»èpr*I0¤®ÙÚëW�“naA}?)¬Ä¨ì1 †aëûI•'»ÆAðî˜ÐJÁ0±>5[{ýêéûùÂÙáýÇÙçÙf¼Äóvúa†Ûɧßy’­¿Cê%;Á�"äæè©`(§m ëÍõ$jaIž$FëïПzIÚ =IÁ0±Žš­½~õôé|áìðtŽ¿ãìól3^ây;ý0Ãíäè÷åì5VÉ-v‚¡œ¶-¼hÊùÛåì5„�IBk\–ö˜p9{íÑV˜9%y8j¶öúÕÓ§ó„2‘S¸œ½Æ*¹…`Á@&Ú ”åJ°`hÈÍã'ÁPNÛ®'Q{€° ‰¹WŠŒÄ¨ì1 †v€m´þÎôÅ®™Bðî˜ÐJÁÐp(›ÛÙ¸\ß^BXik$J�ºWØ{RhúbB ½;&Á‚ÁV�s-X0´L›­½~õî¬ÛAø@Ã~†½'…¦/&¤ Jž‚­Ðh‰e¹,R×líõ«§gÝ‚$–å {O M_LH  d¢­‚ÑËr%X0´lå®™„™;&´+­°÷‚ƒ­ çZ°`h˜6[{ýêéÙ|áI,Ëöžš¾˜� +á]³µ×¯ž>ívVâ;üsçÌ‚0Råú$±ÿQjLÎK¬•^(W†ë;ngK_ú¢F[¡ÔèI¢Ô˜œ—X+½P®ÀÞ“BÓR‚¡`{(wÍ ÌÜ1aY®°÷¤ÐôÅ„”à};ÜΖW‚¡`k¯_½;ëvÍÂŒ$ÊŽð0ìgØ{RhúbBJ0œ¬K8”a¥­‘(5ê^aTö˜Ð»c íÓf{(wáI< ûFëïÂõ‹fßÃì-„/}Q£­Pjô$QjLÎK¬•^(W`´þM_LH †v€isv~>çÉ-PvNâ=aÑ{‰I/¬Á¨ì1 Þ·Ã0{{%yx×líõ«§O»Ež$Fª\Ÿ$ö?"N¬ íÛC¹k¦aæŽ £õwhúbB +­°÷‚ád]¡«ýÉzƒ›=–·ËaöV0´L›­½~õXÍw>�IJ\a´þN0´lå®™„™;&´+­°÷‚¡œ¶-xJÑßO‰²Ä¨ì1 †v€al”¿~÷B­­‘(5.g¯±êM–V|÷N0”Ӷ寂'B[a´Š²Ôê�+ÈcÒ.R û%8Áð `ý¢1Zi-!<ôE�¶B£1ZEYjuŠÆäC;À6Zå¢Ú5ó‚wÇ„Ñ*ÊR«S4® ”n’]ŒŠ¼l´ÒZ^ †‰•ð³ÙÚëWOŸÎwVâOÔžÎñwÌ�³«ä‚áAÁ‹f½/çÓ“5„‡¾¨ÑVh´*\²\aÖEáL íó¶ù~6+m�D©1éì¤Õu…¹sÖ`ÖEáL,(y¶B£%–åJ°`HºÔ|?êB­­‘(5&��´Ú ®0ë¢p&  d¢­‚ÑËr%Xp.÷ÏGÜÌG,÷——Óõ€íÉzÄóýWË}9Îf'낃àËýóòr¸ íÃØ”—C{²!¬´5¥Fk$)ãf]ÎDLÖNúª"%Úeóó|Z2 Ù¡®°ÐÇ$Ú¦M)ڶøk¦aæŽ ³. g"&k w�‰ÌBv‚ád]Â0 †­€p©� ³. g"&k­‘ëä2  ¶‚œkÁ‚ᡆa_^aj".4ÖJgò­¼¼Þ—óéÉú œ¡­ÐhÌ�³«ÞdiµÁìR +á¨ÙÚëWO?ÍwΟæø;Î>Ï6ã%ž·Ó3ÜNŽ~Ï:EôÒ)¹  ÌËÆè¬S„ðÐ5Ú �V…KxïT�^:% [!báî(ë¤ <ù-à󣋳O‚õVà‚$:|IJ@ÀçGgŸC;ÀÖ^¿zÌó]ã ¼ ¥±Vz¡\�Šd¯ f >?º8û$Ú¶öúÕcœïOþ6à󣋳O‚A0�‰¶Â€…»£¬“6ðäo>?º8û$X0x’pÔlíõ«§Ÿº„Ù¸Árß8ÛL—ô^¢ïô=J[�`Hróó—`È.%¸žDí‚$J[jƒ•Ò>�‚!»” VÒô@ˆÖ×É�¢´¡6‚!EˆÔÖ~£õur§ø k.Þ†!7¿Cv)Áõ$j/xyr"g°¯ûî^ÚâJ°` m¥-Ht&âä”rw'X0´ c�¬'‚¡ 7GgŸC9m[¸žDí‚"Ù+ƒÒ$Úæm�¬'¯ž †v×lçí ,HbaM/É †ÕílÓs€0sÇ„•V˜œ$%†±„y VÚ‰Rc§{åC;À´ÙÎÛ�`(§m ]×J„h}�Ü)vºW^0´ŒÍÍÕ @ðT;å$)ÁPNÛ² «ý ¦çaA kzI^0”Ó¶…Ž®k%B´¾Nî kzI^°—GW‚¡`lnþ|#ÊiÛBÖ‚¡`lnðC9m[ÈZ°` m¥-H°`(§m «òv9ÌÞ„Áú:¹S”aî•"#1*{L‚¡`Úlogãr}{¹ƒ° ‰½'…¦/&¤ƒ`°¢Ñke�<ƒ'¿|ŽGgŸ ­ÀÁ“ß>Ç£‹³O‚áAÁËÆèZÉÞ+k�½'…¦/&¤ÐVh%Z�/IiD ø�.Î>  d¢­1 Ñke�<,²K VËÍúö Ö×É�bïI¡é‹ )ø�.΂�®•콺‚'ÿð9]œ} +ág³µ×¯ßw;’¼ÄJ+ŒVQ–Z�¢qa´¾NîT0<(xÑ­2„‡¾¨ÑVh4F«(K­NѸ‚0Z_'w*Úæm³�V¹¨v$1ZEYjuŠÆ„.FEÞ †v×t‚a¿„$¼hŒV•Má¡/j´š>%Á0¾†alæ­`h˜·�ÒZFu ¡ÖÖH”£²Ç„Šd¯ Eœœ¢ÒZ.H VZˤu}%ÊiÛ‚ÒZ.H„ItÉHu*¼hŒV•Má¡/j´:‰d¢`h˜6ÛÜ«èïv$1÷J‘‘•=&ÁP®`;owÁ»‚Ðy”n’ÉHuúQ0<(X¿h”Ö2i] †“u ó ÔÚ‰RcïI¡é‹ )¬”.Pi-$C;À´Ùöž”é‹„I̽Rd$öž”`(W°�·;€à]Aè †rÚ¶ ü5@˜šSlK\Î^ßx¼·)a­¬‘(;² �+È 6:ZeŠ+ÁÐ0mnþñ×”ûõ Ö×É�¢ìý©—T`­tQKÁ‚kUÔòñ Ú†±9;¦sÁPNÛ.÷Ïgå \êcB]Už¤ÇÃQsxD©ñ0m´gåA0ì—0ò+­ÐŨÈ{ÔzÊÚD̺(œ‰˜¬!Á°º�Íaz¼;&¬’[xÔ½tùN0<(xÙ-‹>I+yøÙlíõ«§ï»„2‘SxÙ'iëD˜uQ81YCX%·l´,ú$í•`(§m ÆM{²Â’˜uQ8C9m[(—çí‡)@ȉœÂ‰•â?ã'´ïç‚aµ_Áô ,ÉK­MĬ‹Â™ˆUr ÁPNÛÖ/šrþöq=@(;Êwøh"f]ÎDLÖ�àpñäßÁaNŠPj¬•Îä=f]ÎDLÖ�à xØ——Õ` mÊr%X0\kN0¤[{ýêñS·k„c%öžš¾˜�ÂJ+LÚEÔǤ’;Ū7YZm [Aε`Á�"l}?©’[ìÁ+Ñ÷“ÂJ¬’[†Á5[{ýêñ}·ƒ° ‰¾ŸVbïI¡é‹ )ÁàL„3:ë‚'‰V¢Ô©r}’‚!EØÚëW�ï»]ã 8Ñ»cB+ 2ÑV¡,W‚ÃÄJx×líõ«§ï»I^b¤ÊõIbí„…Ž$˜—�N±.t$Á�"¸fk¯_½ÿÕí ,Hb¤ÊõIbí„…Ž$R„­½~õþ{·kEž$Fª\Ÿ$ÖnAXèH‚uŠu¡#] †rÚ¶0+§ëöd=BX�ÄÊ*/ÑJ*Ð̺(œ‰˜¬!Á°7ð ,IöÊ ÔX–«å¸A[¡Ñ²³f�²#E‚¡`›òr8/VÚ‰RcÖEáLÄóò ÊiÛB9;,Ÿ„²£|‡•V•=&ô5et&bí”'̺(œ‰˜¬!ÁÐ0m¶ç'í¸ù¼w>�Äs›HžÖ„•U^âäT’`(Wpƒ7aÐxOعcB‡•M$Okú(X0Ø Êr%X0<(X¿hÎ7ŸW#„‡¾¨ÑVXÙDò´&¬y2R0´ÌÛ¦¼ÎË„•¶F¢Ô˜uQ8ñ¼<†v€i³�·;€ð�$öžš¾˜� 'ëæ-@À•¶F¢Ô•=&´Ï˃`Ø/a;owaC^b¥öžj…QÙcB_S 'ëæ-@Xik$J�•Md\A‚¡`Úlçí ,Hbe•—89•„ºÂÊ&2® Áð `ý¢–Ïg«±„ð¥/j´Fe� µÂÞ“BÓRèkʶ²C;À¼m¶Ñ*Õ‚$F«(K­NѸ‚ÐŨÈ{ÁÐàšN0ì—�Â�ѹˆá¡/j´-1i) †ñ5 c3oC;À¼m*›È¸‚ ÔÚ‰RceW*’½¡ˆ“STZËIÁJk™“Öõ•`(§m Jk¹ $Ñ$#Õ©`xPð¢1: <ôE�¶B'‘L å´mÁg]ÔÁzŒVQ–Z�¢qýžuQ8? †ë�ÒZæ¤u-ÊiÛBîîjç=@8&e«S´ÖÎû{­"EŒVQ–Z� †v€yÛ(­eTÇjm�D©1ZEYjuŠQÙc í®ÙÎÛ�`8Y—àC;À¶²‰¢õw»f Á»cB+Ñ̺(œ‰•=&Áp².aÞ„Z[#QjŒVQ–Z�bïI †v×lçíN0<Ô`è¾÷¤B­t&ï1*{L?zO sçÌ‚ Jž‚­Àh‰9ׂCŠàš#Áð À¼l<ÉJžÖ$®µ'Ø“¬äiMW‚!EØÊÓšªä»ÆAð²‰äiMX%· )‚k¶öúÕ»Üí ,H¢¤¢ÆÊ&¨ì1 †ak¯_=Nº]ã x’èûIa%V6Fe�I0¤[ßOª<Ù5‚wÇ„V †¡KÍ6±Ê“„Iì=©QÙcB_S )Â6MT•'»¦Kê^¢•h ¶‡%ž—Á�"l{¯¼;Þ5]‚àLDïŽ ­€ð�.Ξ †¡KÍý<{ßAð$±¯Ñ“S¹C]Uždƒ‰ÌBvžãÑÅÙSÁ�"l=9¥«j×t žümxŽGgOCŠàšm´þÎôÅ‚$Fª\Ÿ$Fe� <Ç£‹³§‚Áš žüžãÑÅÙSÁ�"t�ƒ'¿…çxtqöT0¤©9‚'¿…çxtqöT0¤[ONUi±kºOþ6<Ç£‹³§‚£ÎE]]Á“ Ïñèâì©`H\³í=)Ó;xò·á9]œ= )ÂÖ^¿zwÖíÁ“DÙöžš¾˜�Ïñèâì©`HºÔœ †a›‹Xåɮ鄗¤4öžÔ�¨ì1a¥TLH †¡KͶ÷Ê»ã„Iì=©QÙc€ð�.Ξ †a›&ªÊ“]Ó%u/ÑJ´ÛÃÏË@xŽGgOCv)A.êJžÖÁIIE-QjÔ5,÷——ÓõpÑ–Ø{kX®.o¼`xò-De� =9•;Ì�³æB0d—¤‰Rä"@Pä"VVy‰ÉN”S§è)K­—Mš(}O~ Ïñèâì©à‰‹i¢®àÉ¿…çxtqöT0d—ØT+ O~ Ïñèâì©`ˆ¸91Ç.Ùˆåþòrº.ÚÃò¦9zÚ�5gžãÑÅÙSÁð  MTÔ†àÉoá9]œ=œ&Jß]Á“ Ïñèâì©`HºÔLúª )B¤&MT.jÁ�"Lš£÷‚!»” 뢒¼ÄJ+M”`Á�"t©Éʸ‚ ¬´5¥ÆòrXÞ®±ÊÁ‚ÁVpߥ4Q‚CŠ0m¶÷QÚAÀI”á}G”pr* à󣋳ǃ`p& `î(ßa¥ÞwD '§’Ð“Ä­ÑæÙKRzðùÑÅÙãA0d—˜—�'™‹Á“ľÆòrXÞ®±Êt&¢“’ŠZ  ”<@@[¡Ñï»”&J°`È.%ð$s‚'‰}�åå°¼]c•'èLD'%µ,ÈD[@@£%Þw)M”`Á@&Ú ž’O%X0<Ô0.—¯O6á¤Â{BE²W†bƒ²#ƒVztI)­ Jž‚­Ðh‰e¹,R„.5Û‚ £ÚAX�ĂР)t1*ò^0DÊÐ%Ái¢ž^ †Z×0É‚Áš Û.í‚$/±Ò Ϫª  ^6i¢¢6Oþ6<Ç£‹³§‚!EˆÔ<} .FèR º–XP1!%âƒy i¢Â4QG‚§‰ŠÚÐ<ù‡ð�.Ξ †Á5ÛØûšòBTö˜~ôžúš²­,Å�á9]œ= Z�ƒ'¿…çxtqöT0<Ôð²‰:uAªSt g Ú �ƨì1ýè=)Ïñèâì©`x¨�”º¶žüžãÑÅÙSÁ‚�L´@0ZbY® [Aε`ÁAp¸x‚ƒà0'Eh+”=&ô5eÔ {O M_LH¡5˜uQ81YC‚ƒàaù|¶Ë+ÁP®ào†¼ÄJ+¬l"ã Bkð¼<†ëÍz_^¾ôE�¶ÂAÙcB_SÆÆÊ&2® ÁPNÛÊùÛC;]¿…Pv”ï°Ò ©˜PŒq’œ¹ó‚¡`Þ6¹ˆUž@¨µ5¥Æ¬‹Â™ˆ½'%Ú\³�·;Á0Œ%8Áðe«Æ[ß{á¡/j´öžþ'ô5e[YŠ‚¡`Úl{OÊôÅ%O¸ ‰¹WŠŒÄÞ“Âÿ$Ø[ß{u%NÖ%8Áа�·»Æ„º—Ø{RhúbB ­Á¬‹Â™ˆ½'%NÖ%Ì[€Pkk$J�Y…3£²Ç$Ú\³�·;Á0Œ%8Áðe«Æ[Õ1„‡¾¨ÑVh裲Ç$Ú¦Í6÷*ú»JžpAs¯‰QÙcì­�êøJ0œ¬Kp‚¡`;ow�u/1*{Lh f]ÎDŒÊ“`h˜6Û\Ä*Ov$1ë¢p&bïI †a,Á ^�¹��Ë+Áа½��Ëõíå®™B˜¹cBC÷Ø{RhúbBJ0¤[{ýêéY·k„I,Ëöžš¾˜� )ÂÖ^¿zwÖíaFÃ~†½'…¦/&¤Ϧ—ãíl\^ †v€i³=?iÇádöváIŒÊVJx^Ã0–0ò­ Ëq—áàòJ�e¹ZŽ´�QÙcB_S «ÛÙ¦çaæŽ ÝcTö˜PôÒå;ÁPNÛfc;ÌÞ„%Ê ÝcTö˜Ãj¿‚é9@Pä¥V„†î1*{L‚¡`[Þ.‡ÙÛ]3…0sÇ„Vb¥ö^0¤[{ýê±êv�ƒ0#‰e¹Â¨ì15èLDE²W¥Æ²\-Ç�`P$ OXpVË“õ‡“Ù[�ÄÜ+EFbTö˜Áaµ‘Ñw‚“6 ßO®Cv)�Mµ’‚!Nàfv{À‚Š )üG'íIß] †ak¯_½{×íš#НÖÓËÂJ[#Qj¬l"yZJ7I$ÊiÛB¹¿\M—#@8ñh%^”ûË/f·Ô /VËö£`XŽX¿K’½2h+4 's'X0Ø r® †v€alÊËá¼<@¨µ5¥Æ¬‹Â™ˆçåA°` ä Ø �–X–+Á‚¡î}“ ¼;&¬l"yZfI0¤‘šÊ&2® µ¶F¢ÔXÙDÆ$R„.5Û‚ £ÚAX�ĂР)t1*ò^0¤“æè áäT’G©1ë¢vŠCv)AÖE :wLxOXéÞD”aAÅ„ÔGÁPë&Y0(’`^E²Wm…FK¬to¢`¨{ßÁ$ †H"„Z[#QjŒÊfI0<Ô`t­de .ž°à 8ŒFªS¬µ5+­0éì¤5 ,÷——ÓõpÑ–Ø{kX®~\ÞxôäTî0wΚ ÁAp.êJžÖt%R„HMš¨*OƒVpVU<ù-<Ç£‹³§‚!EØÆÞ×”w�ƒàI¢Ôè;}�ÖcTö˜~ôžúš2„çxtqöT°` mŒ–X–+Á‚¡œ¶-x’±÷ ÌHâyyÀÞ“BÓRh+ô5e[YŠ‚¡`Úl‡q$1*{L˜u$ÁÐP6S€ÖH�¥`Á`+ȹ,V·³9J€0sÇ„•M$Ok¬#  d¢­‚ÑËr%X0´”Í™`Ø/a 6ä%VZa¤ÊõIbTö˜Âõ‹f½ß ãù0{ áK_Ôh+ŒÊúš²­,EÁ0Œ% #@Xik$J�½'…YG íÓf;Œ;€° ‰½'%NÖ% #@˜¸|‡RcTö˜0ëH‚a¿„)@�ä%öžfI0<(X¿hŒ–‘ªèï |é‹m…½'…¾¦l+KQ°`°ä\  퇲9ž½ŸCøÓáÏø;Ë“ç#ÎÆé²œãþü|6nž5¸Îw‚áÉ·ð§òÏø;¶ãúÃfŽûsÜLíˆÛ÷89•äw‚¡`ÚlËÛå0{»ƒð�$æ^)2£²Ç$NÖ%LÂ4>ô^bTö˜C;À¼™„9þ޹WŠŒÄ¨ì1á+< ímsªä(5ÖŠŽÉHŒ}�lv’ГS¹Cmл‚0*{L‚%OÁVh´Ä²\  )Â$7[ONéªÚAX�DONåuUy’èLĬ{#!<Ç£‹³§‚!EèR³õäT•; ’X%·ðžãÑÅÙSÁp­8xò[xŽGgOCа�½¯)ï¡Jn�FcTö˜~ôžúš2„çxtqöT°` mŒ–X–+Á‚‡‹',8­Ö5J�Öøš²Ä¨ì1¡'§r‡¹sÖ óèkʶ²ÑÔUåIz¿ÏQjsÁÁ”á¬<‚ËÕò|st%NÖ%¡/jôäTîPW•')†±„ ”d$&2 Ùa¢J †v€iS„–ÌBv˜¨’h NÃêv6‡y ¼;&œ·‚¡œ¶-¬šãfV lÈK”�õ•=&$#Õ)Ú ™…ì0Q%ññL0¬ö+˜·A‘—ZÎ[Á°_ Hò+­�LD]¡t“D‚áË .›Ù²œ�ë—¾¨ÑVè$’‰¨+”n’H0<(xÑ ãùl5–¾ôE�¶ÂH•ë“Ĩì1 †rs€pâQv„QÙcBÙæ^)2£õwÂõ‹f½ß”·Ëaö—¾¨ÑVh´ÄÜ+EFb´þNð0žÏVcy%Ú¦Í | ‰¹WŠŒÄ¨ì1 †a,¡.>ô^bìëd³“„žœÊVÉ-×\6åjy¾9‚ð¥/j´Þº¤ÈÅSôÙCeg=Fe�Iðz¿)o—Ãìí•`hØã®™„U/1*{LèkÊh�Ôx^¯÷›a<fo¯Ãêv6‡C fî˜PväI0¬ngs˜·-¬—¤¼`Á`+0ZBε`Á�]J�;Êwt ÊŽòVZáx�S ã�^0”Ó¶ó²Ù¯ÆõùI;B˜JIE-QjÔ5”ae  ”<[aY® †rÚ¶°_�ëó“v„0•’ŠZ¢Ô¨k2(;ÂÊ&,ÈD[„²\   Ö/šÊ&Òw¾ôE�¶B]“A}'VûÌ[€ ÈK­eGžÃj¿‚C @ÑÂzIÊ †a,aB­­‘(5öžfI0´L›í0î‚$öžfI0œ¬KF€Pkk$J�QÙc¬# †ý¦A’—Ø{R˜u$ÁðPÃúEãUîÈD}Q£­°÷¤ÐôÅ„úš²­,EÁÐ0m¶½'eúbaAs¯‰½'…¦/&¤Ã~ S€`=Z‰/Ié�‚áAÁ‹&ת’Gú¢F[aî•"#±÷¤Ðz|IJ †×û%LÃêv6‡C ¼;&”y «ÛÙæ-@E ë%)/R„­½~õî¬Û5‚'‰½'…¦/&¤Pj|IJ  ¶£%ä\  Ù¥¹£|Gסì(ßa¥ÒuN}$Œ?zÁPNÛÌËf¿×ç'ía*%µD©Q×dPv„•M„Ûޓ³�`Á@É@°–åJ°`(§m ûÕ¸>?iGS)©¨%J�º&ƒ²#¬l"Üöžží 2ÑV¡,W‚C;À´Ùöž”é‹„I̽Rd$öžš¾˜� )ÂÖ^¿zwÖíA‘—Zæ^)2{O M_LH †ëMe“¾;‚ðÐ5Ú õ�`XíW0o‚"/µ"”y «ý %@E ë%)/äZUò 81i]c¥º–•=&Á‚ÃÅ“‡9)B[ae¡®É õ¨ïÐIì=)<W6黣+Á0Œ% #@¨µ5¥ÆÞ“BÓRh ž—ÁÐ0mŽ‚'‰V¢Ôø’”Æíѳ£�`hØã®™„™;&ì=)4}1!…Öàyy 'ë† L\¾C©1*{L˜u$Á‚ÃÅ“‡9)B[ae¡®É õ¨ïÐI̽Rd$öž ‚+›Hß] †Õ~ó (òR+BÙ‘'Á°Ú¯àPP´°^’ò‚ƒ­Àh‰9×ðä·ð�.Ξ  )ÂÖ“SºªvÍ$Cðî˜Ð“S¹C]Už$:1‘YÈÂs<º8{*R„­'§ª´Ø5]‚àÝ1¡'§r‡Ur žãÑÅÙSÁ‚�L´@0ZbY®àÉ·ð�.Ξ  ÃXÂ0„Z[#Qjì=)4}1!%X0Ø r® †Á5[ßOªä; ’èûIa%VÉ-ƒVà—�ÑÒ÷OÂC_Ôh+¼'ìÜ1™‰"ƒ) UZ‘`hpÍÖ^¿züÔí L?Íñwì=)4}1!…•V˜´‹¤CŠ0iœ`H\³µ×¯ßw; ’èûIa%öž”`Ð &A+´{O M_LH †ak¯_=¾ïv�ƒàÝ1¡•Xi…¾ŸV 6Zú~âI^  d¢­BY® †v€i³Æ@X�Äóò€½'…¦/&¤ [�Ñs® ­àûYmO,÷——Óõ€ç'툛ϫq&8Þ|^­§—ã•`ÆóÜ”ûK¼ Ãx~€›Ùío [Á)ùZ%Á‚aÏp³Z¶x#X0�‰¶€€§äk• †aöž”`È5líõ«wgÝ‚w¡ó˜{¥ÈHì=©�‚A‘€ð«äX+]“J§èI  d¢­‚ÑËr%Xp¸x"Áárÿ|Äó“vÄÍçÕˆ'ëÍÏËƒà ørÿ|Ü|^�W‚a¹,§{l#áäC;À¼m6ŸWëéå¡ÖÖH”+›åiM˜¬—‚¡œ¶-L‡aÞNBÖEÝKB2R�¢‹Q‘÷‚¡`›ó“vÜ|^�jm�D©±²‰äiMh ž—ÁÐP6OÂSœœJò(5ú˜ÃC —ûçc  }LXÙD(Ok,X0Ø Œ–˜s-Xp¸x‚ƒà°$Ña²åÔ)F«(K­NÑS–Z ‚ÓD)rñJ0¤‘šI_U¡ÖÖH”'}U‘ Ù¥žd,@ð$Qv„±p‚!»”À“L½W‚!EÈÍã™`È.%¸žDí‚"Ñ¡§,µ Z� Ф`ÁáâÉ¿‚ÉIÖÖʉJ÷ÒÛT+y%j]C—CŠàšm—v‚Áš ] uï;è’`Ð œ`P$á¥`È.%ÈÚhÁð À¦ZIÁ‚ÃÅ“‡RµS„ò^£—Êš…ÇíÂhEX;eå)N¬g]ÔW‚¡î}‘CÝûº$¬É0œuQ] †H&‚áAÁË&ë¢~ )‚k¶‘v‚Á™?«N0¤¹q‚!EpͶK;ÁàL„ŸU'r Y0X“¡K‚Áš ‘—MÖE}$8ë¢~¼ µ®¡K‚¡Ö5D Ф`ÁáâɇIìkô²¯*”“veGØÚ‰rê *&¤Á‚=É4QW‚!EèR³-¨p1ª„I,¨˜�B£"ïCŠ©9: .FèR ÔÚ‰RcAÅ„zé”DEY«(Rj¶]Ú k2tI0¤±Ùvi'R„mš¨*O^=}¿k"A¨{‰V¢5¸\be)EÁ`M†. †�šm—v‚Áš ] )Bl¶]Ú„I,¨˜�ÂDf!;ÁP÷¾ƒHÁ»cBmÐK—ïCŠ©™ôU%²K <ÉX8€àI¢ìcáCv)�'™z¯CŠ�›§OCv)Áõ$j”3Q¨ÈE¬¬ò *&¤ÐS–ZáÖ“ô‚áÉ·€}�•V˜´‹¤ÐÓßôd¤u ¹¸ Z� 5¼lÒD)rQß †ìR›j%CœÀͨ”V¨ÈEkXî//§ëá¢=,oš£§ÍÑYs&j ¥®­œ&J‘‹úîJ0Ôº†.„I,¨˜�ÂDf!;Á�"lÓDUyòêé»]Ó%ÞZ‰•V˜´‹¤ƒ")X0�‰¶FK,Ë•`ÁáâÉ¿‚ÃE¹¿Dg"^¬–-f]ÎD”§5açLL¤‡Ù¸ÁÛ®¦F|1.÷8]XNÛÛýt—‚ƒàv?>ì¯ [�Ñs® †ìRO2M@ð$±¯±Ò ÓDaAÅ„*rQ°` mŒ–X–+Á‚¡`Þ6›Õ $í"ºy/X0Ø r® †v€m»ŸÓaXîšy aæŽ “v]ŒŠ¼ íó¶Ùöçç³q³ƒð�$†ý 'ÎÖnAh ÎÃ0–0-y�Ú�`hh›³òlæ-ÖÚéQj¬:E­Á¤]$…ËÙkÁ°º�ÍaÞ„™;&Ô½tùN°` ä Ø �–X–+Á‚!Eئ‰ªòäÕÓ÷»¦K¼;&LÚEt1*ò^0¤±ÙÚëWG¿º„IœDíqâ&ÁÐP6O?„§Ÿpr*É£ÔXèc å´márÿ|,Â¥>&Mç;Z¡5xö3ŒÊ“`hØÞΖÃìí®™B˜¹cB'1éì¤Õßc¥ÖŠŽ­î=–«—˜uQ;i'6Yy*²K |¤* x’©r}’ 'Vû #@Pä¥V„çå]ŒŠ¼,l9ׂC;À¼m¶‡ýùùlÜì | ‰‡a?Éó„µ[ZƒsÁ‚�’'€`+4ZbY® †¡k¶öúÕѯnaA'Q{œ8OX»  d¢­‚ÑËr%X0¼Þ/a*ÚÚf*Úf«fÞ„IìkôÒå;|è½Ä %}�²#< û™`h˜7S€0oñw< «ÛÙæ-@Xõ¾CE²W¥Æ3t¥®QWè¥Ëw‚ád] Ì[ü�ÎÎæ‚au;›Ã¼«Þw¨HöÊ ‹Q‘÷Xi…I»HJ0<ùšß5ÂŒ$&}�“SI˜µñ::’`x½_ÂT0´líõ«£³ù®q^�Ò¨«Ê“ôøëlŽÏð×Ó9Zƒ³ò Ú¶öúÕÑÑ|×LC;ÀÖ^¿:zœïš©`hØÚëWGOç»f*&VÂÏfk¯_=}:ßAØ�—˜;g VÉ-Âõ‹¦œOOÖ³qáK_Ôh+Ì�³«äèI  ¶B,Üe�´�'¿|ŽGgŸ †\³µ×¯s·ƒ° ‰¤”V˜u$L~ð9]œ} ¹†³Š:€PnÚg%’RZ}€€Ïñèâì“`xP`^6å|z²ž�F×Ô ×h´ì¬Yà‚¤GEž$|ŽGgŸCŠàš­½~õ»„I$¥´Â¬#aá'ŸãÑÅÙ'Á`MÊMû¬DRJ«�ð9]œ}  Ì˦œOOÖ³qÁèšô�FEž$º…³>Ç£‹³O‚áÉ·pJuƒ÷„Š ,Ú¶öúÕcžïá)�µÒ å T${e0ëH‚¡`k¯_=Æù®q‚—óéÉz6n®ƒ"?›­½~õôi·ƒð‚”ÆÜ9k°Jn!X0�‰¶e¹,ÚÊæÓ/€�´‹¨�I%wŠUo²´Ú†/+˜DíÂC_Ô(5&í")”³.êD’0i±êM–VÁ‚ƒ­ ç�‰89¥ÜÝ +]O®Ã0žà=@Pþ«ÞdiµÁJ+œœÖŠ<‰’¼<9%—å•`Æóœ„Ãç]–ö˜°Jn!X0�‰¶e¹Bg"NN)ww‚‡‹'ÿ$8ûÛÍêvƒå|ºÄ“5þiúgÁAðþvSΧË+ÁY}%ÚÆf Ã~†ÉÞ‘ÇÜ9…Öà(8ûÛÍêvƒå|ºÄ“5þiü³à ¸Ü_ †v€²yY¯¡îeÝK¬z“¥ÕF0<Ôp=‰Ú ‡Õòd½ÁÙfy²þ€Ó þiÿ,8^-׳ÍòJ0´”Í/€P+k$z©¬Y`Õ›,­6‚ᡆëIÔ^°`°ä\ ‡ãÛ“õˆûs¿À£‹³O‚a| ÃØÌ[€pö3LöŽ<ÊŽÐŨÈ{´‡Q0´”ÍÑ@X�LÖV½ÉÒj#ÊiÛÂõ$j/ÚæmS^íÉz„Pkk$J�‰ÌBv‚¡`Úlçí ,Hb"³��`8Y—0oB­­‘(5f]ÎDôRY³ å´ma: óv jm�D©‘LD]aÖEáLD/•5 Áа�·»æ Ô½DIª°ÆI­ÐI$ƒ`°ä\wÖK­Nƒ­ çZ°`È.%(ËÕøz°²ÊK”ê+­°,WH×’Œ·Ú`­ôB¹B0d—¼læ'³Í~ùÊŽ F�ÖHRÆ%쬗Z�bA¹sÆú¢ O¾Ôµ´Ú¸”NQöÊPD]U89EÙ–åj|½ d¢­  `ε` ms®;ë¥V§‚ÃC å²=ÎD”½2Ø×èÐÐ=&kHpÊùX¾ÅóýËýz¶oGIÁ0Œ%L‚‹½—(5JÕöžš¾˜� )ÂÖ^¿zwÖíÁ“DÙöžš¾˜� Ëq#XpfãoWx^pºp¿×8œÌÞâùI; ‚÷«q}~ÒŽW‚¡àP6gUuVuø;ŽJi……Ž„R£'Ù`‰¿cÕ›,­6‚ƒ­ çZ°`hÆæü¤‡“Ù[µ¶F¢Ô•=&Ì:’`Á@É@°-±,W‚CŠ©IUåÉ«#µ¶F¢Ô•=&Ì:’`Á@&ÚJ°`h˜·ÍÓG Óa€yÛ #@¨µ5¥Ær‰Öàyy íÛy»kÎÂKRË%V–R,lFK̹,R„.5G�‚ÁÅ]j"„Z[#Qj¤kIF †aÛ¥]s&¬ÉÐ%Á�"l»´k΃5º$R„m—vÍ™`Á@&Ú -±,W‚Ãêv6‡C)V·³9 £`hÆf5�Íþ²_jm�D©±vÞßk±²”¢`(§m ³q3\NÂŒ$ÊŽp¸œ¢ÔX;ï﵊XYJQ0¬ö+FÁ°Ú¯àP †ÕílÃ(X×dªÇ+Áаµ×¯ÞýœïšOeGHJi……Ž$ÊiÛÂõ$jèšr/ eGXõ&K« Zƒ¥`hØÚëWï~v»æ ‚'‰¤”VXèH(5¾$¥Ãɺ„ Hò+­°îN½Í.!)¥•`xP°~ÑMJAxè‹m…FK¬»So³KHJi%Ú¦Í ,HbÝ�z›]BRJ+Ì:’`Ø/a*¼hŒ&¥‚­ð%)Ý ÑÖÝ©·Ù%$¥´ å ~kŽ]²kçý½Vñ£`xP°~Ñ-ëûá¡/j´-Ñšc—lÄÚy¯U å´maA²vÞ †v€CÙ}üÏpKJi……Ž´k°ÄßñènuM+›h'X0Ø r® †v€al*›(Z¡ÖÖH”ÏËFe� ³Ž$X0Pòl…FK,Ë•`Á�"DjÒDUyòêB­­‘(5ž—ŒÊfI°` mŒ–X–+Á‚áA�®ÉT�Á™ˆNJ*j‰ÎhÙ‘B]“Á{+;4t�µóþ^«(Xp¸xò‚ƒà0'Eh+4Z¢ÃÚy¯UDRJ« ÄH’Ta aÝ�z›]BRJ+t&b­¬‘h¥à ØhYßÇ+ÁÐ0Œ�Õ…_†rG‚áAÁ‹¦V²ð ÁÐ0ŒMTÇ…_†rïÂM­dá‚¡`›¿)üBp­dáW‚¡œ¶-ÔÊx©B­¬‘HJi…yï$X0Ø r® †‡ŒÎ:E€àLDE^:%±,W‚%OÁVh´Ä²\  ÊK8,ÈD[ .ž°à 8ÌIÚ uM}ŸÉûªO‚ƒ`£I©+Á0Œ%´A’—¨HöÊ`Ö‘°Rº@]“,l9ׂC;À´Ù–·ËaövaAs¯‰QÙc,(y¶B£%–åJ°`H\³�Öß™¾Ø  d¢­‚ÑËr%X0¬ngs˜·Á»cBE²W³Ž$²K <¥èï‚§DY¢ì£õw‚¡œ¶-̆ñ|¸œ„I”áp9E©ñûÙ\0¬ö+˜·A‘—Z*’½2˜u$Áp².¡3’¨HöÊ`Ö‘°Jn�•ÒꚌ`XíW0ŒÁ%»0è¥Ëw‚a9n [Aε`Ááâ ‚ÃJY#ñPhúbB ­Á©à ¸£ëZÉ+Á°º�Íaz¼;&´R0,ÇÕÞ †år aÖÙJbg;™$Bk¤Æ:¹L‚a\—‚¡œ¶-tt]«#€P+k$vvÑ¡±“I"Á°Ú¯`zy©¡é‹ )Á]×êèJ0LלU@°^'' “¾Gc'“D‚a: 0mnÎnBÖæ˜”D©q:+ONÃC º—¹s 8±VÖH´òB°` mÊr%Xp¸xòà°êN½Í.!)¥ä½[� ®ïcáW‚aÏp³rÞßk¯ðë�`« ¿¸ Ãx~€›Áú;<ù±ÇQ)­¾ÞŽê¸ð‹+Á0Œç¸91Ç.ÙˆQÙcúz#øo ¿¸ Ãx~€›7ß 5˜uQ8¿Þ ¶i ÒF°àšÂ/®C¤j7XXsñõF°` m¥-HÁ‚ÁV�s-X°Ïº¨¯Ãêv6‡y+V·³9 £`hÆFi-�+H°Ïº¨�®C;À´ÙãN0”+ØÎÛ�`xP°~Ñø¬‹Z‘ å nðF0<(xÑø¬‹Z‘ 'ëæ­`8Y—0Œ‚áA�Ϻ¨�û¬‹Z‘¼ «ý †Q0¬ö+˜·‚a9n VZËÉ+Á°º�ÍaÞ †ÕílÃ(Úæm£´–Æ$Ú†±QZKã zu$ÚrsôS0´lçí®¹ÁÁPNÛ }LY0¬ö+FÁÐ0o¥µ4® ÁÐ0i¾ VZKSècº íÓf;Œ;Á°_‚  ^4jA2jC‚ád]Â0 †r7áF0<(xÑ,HÖ‚¡`;ow� 'ëæ­`ˆæ%(­¥)ô1 †v€i³Æ�`8Y—0Œ‚¡\ÁM¸  ^4 ’µ`x½_‚  Ô‚dÔ†/HÖW‚¡`Þ6JkY;ïC;À¤ù.Xi-ëBÓ•`h˜6ÛaÜ †“u Ã(öKp‚áAÁ‹F-HÆ^0´lçí®q‚ád]¼ ñÁ¼¥µ¬ }L‚¡`Úl‡q'NÖ% £`Ø/Á †/µ {Áðz¿'¨ɨ V ’±¿ íÓf;Œ;Áp².aC;À¤q‚¡`Þ6JkÕ±`˜®8«:Áа�·»Æ †“u óV0´¸f"¦ëΪ³N0,—SÁ°\NÃr9 ËåT0´lçí®q‚ád]‚¬$£6t%VûÌ[Á°7‚™h+€P–µ`Á ’µóþJ0´ cSßÇÂ/ ÔÚ‰Rcí¼¿×*bAÞ» †rÚ¶P+㥵²F⛕óþ^«xõF0´šï¡vÞßkÑzüŽ“SI w-ÚæmS;ï﵊jm�D©±vÞßk±²”¢àú>&]_ †ÕílóV0¬ngs8”‚¡`lΪØ„IÌÚx�­©{‰÷Vvº—H¹Ó‚¡ lÞ †rÚ¶p=‰Ú †Õ~‡R0¬ö+˜·‚¡œ¶-ôÙyY›cR¥Æ¾®IavžC¹‚£§Áz´ËåGÁð àESßGmÂC_Ôh+ŒÚ�`hØÎÛ]3ÞÖÎû{­"æÎ)Áp².aÞ †ø`^B}“®‚3“Ö5VZa¡aí¼¿×*bîœò‚áAA}µ9\ßGm®C;ÀvÞîš¼�0IÎÜ¡î%ÊŽP‘—¨+”aí¼¿×*be)EÁp².aÞ †ø`^B}µ\ßGmŽ®C9m[È*UAöÊ`_£¡{LÖ�`XŽÁ‚ÁV�s-Xpîîjçý•`h˜6ÛûŽ(íÃɺ'–ã^†v€i³UZËÚy¿ å nðF0<(xÑ­´–µ`h˜·�ÒZFu,ڦͶp×QïÃ0–àC¹‚í¼Ý †ecˆbí¼ íÓf[¸ëÞ«�`Æœ`8Y—0oC¹‚í¼Ý †å¸�u)ØÅÚy%ڦͶvÞßkw‚¡\Á Þ†rÚ¶ð¢Y�¬�÷‚¡`Þ6JkY;ïC;À06µóþ^«(Ú&ÍwÁªvÞ']_ †v€i³Æ�`(W°�·;Áð `ý¢™¸X;ïC¹‚¼  ^4F+­e-NÖ% £`8Y—0oC|0/AÕÎû¤kÁF+­e}%X0Ø èºv&  íó¶QZ˨ŽC;À´Ùî:ªã�`(W°�·;Áð `]6’¼ì½ í®ÙÎÛ�`hØî:ªã]3,ÉËÞ«+Áp².aÞ †v€i³-ÜuïÕN0 c N0”+ØÎÛ�`XŽX—‚¡À5Ûy» 'ëœ`hØîº÷j×L 2ÑV‚ÃrÜž¸X;ï¯Ãj¿‚y+Ú†±™¸X~!¾¬ VÆK%xâb]øÅ•`Æóܬœ÷÷ZE•Òê¦9zÚ�57_o 2ÑV¡,W‚‡‹'ÿ.8å´mñ0ìgèLDE²Wï­ìðVÉ-ÐK'{�ºÂª7YZmÁåaØÏ®C9m[¸žDí Qv„Uo²´Ú†ý¦aFòGNäÊŽðVÉ-ÃrÜ.žü‡à 8ÌÊé7óËýååt=`{²Á³rºnOÖã•`Á`+ȹ,ÊiÛB¹+â�`Á�"¸fk¯_=æù†¼ÄZé…r*’½2˜u$¬´B£Í³—¤´`8Y—àÃɺ'¼h†±=¹'&}�“SIh=¾$¥”|è‹Z0¤®ÙÚëW�q¾ƒ°!/±³‹'§’°Ò ÏÎÏç‚ád]‚ Ëq/Â’d¯ Ú ï �"4Z¢ÔH×”{I(;ë 2ÑV°pw”uÒF°`Á‚ÁVh´ÄÂÝQÖIÁ‚ád]ÂÖ^¿zÌó„ y‰µÒ å T${e0ëHXi…F›g/IiÁp².ak¯_=æùN0<(xÑ c{r N*Lú'§’Ðz|IJ7(;2øÐµ`8Y—°µ×¯ã|aC^bgNN%a¥ž�ŸÏÃrÜÀ €°$Ù+ƒ¶Â{B§�–(5Ò5å^ÊÎzÁðä[Ⱥ(œ‰8¡ìzO¨+T${e0ëH‚�L´4Zbáî(ë¤�`,xÛ“Ë+Áp².¡KÁßÙõ1)Œ”la%)Áë}¹o÷ë+Á‚�L´@(Ë•`Áа]�—‡]3o!ÌÜ1¡‹Q‘÷¨+̺(œ‰‚‡‹',8­Ö5J�Y›cR¥Æ¾®IavžÐ™ˆ¹£|‡•Vè)k1ë¢p& ‚¯Ç×›r>]^ †v€i³�·;€° ‰¹sJ0”Ó¶…>;O!ksLJ¢ÔØ×5)ÌΓ`hØÎÛ]3u/ÑJœ¸|'X0Ø r® †r7½'­Ä¬‹Â™ˆ‘’-¬$õQ0”Ó¶…M9;¾./!xwLøh"f]ÎD´ÖŠ<)X0�‰¶e¹,NÖ%Ì[€0é‹km�$%öK˜„ÑDÔf]ÎDLÖÐGÁð `ý¢Y�¯7å|º„�´®±Ò ­H°àpñD‚ÃìÎÖ¨�I¡5VZ—p’œ¹ó‚ƒàÙÛ“Õ¡�^ †v€yÛlWçåaáI̺(œ‰èbTä½àÙÉêЮß^ †v€íê¼<ìšy aæŽ ÝcÖEáLD£"ïC;Àvýz³¾œîšy Á™ˆkº–˜uQ8ÑŨÈ{ÁÐ0m¶óv>�ÄÜ9%öK˜„ÑDÔf]ÎDLÖÐGÁ°7ð (’½2h+ŒÚ�`(Wpƒ7áÄ£•èp’œ¹û(¼hfoW‡výV0”+ø6ä%VZ¡tÌ�S(µ¾ Ëqë x övuh×o¯Ãɺ„y }Qc­­‘¤ÂÙÉêЮß„©‰˜´®±Ò ­H°`Á`+ȹ,8\<ùÁAp˜¹cÂG1ë¢p&¢5˜¬!œœbVä¤5 tû¢8Ååì5ê µ!¬Ý‚Pp�k¥%e‰²#|4³. g"ºJ’BºÎÉNZm°ÖÖHÁAp9;¾./¯C;ÀØ´‚¡`hæañwœ·‚ád]Â0„aÄZ[#=J�†®%æÎ)t•$…t�“+œ´Ú†v€i³Æ@ø@­ å nþzN †ÕílÓs€àÝ1a•Ü †Õíló 81wNa­­‘¤C9m[xÑ\îŸ�›“ö B¡� ³. g"&k£¾7¨ ¡Ñ2w(5ÞÙ”ÓoáÑD¤ëœ\á¤ÕmQP´NR:EWIRH×9¹ÂI«�`XíW0o‚"/µ"Ì�SXkk$)Á°Ú¯`zœ‰X%·ð‚a9nà@° £aÔý$ÒuN®pÒjãC;ÀvÞîš3€ ¨N.ÒuN®pÒjƒ÷Vvhú”Ãø†±™·!wNa­­‘¤ÐFÁÐ0o›íaØÏ^í ,H¢Ô5ê 7«©`ÆæaIžÔ1áÖnAXi…�&bÖEáL ímsä:€ðh"f]ÎDœÐÂ�N¢®*O�&s´—³×áùÑÅÙS'V·³9Ì[€àÝ1¡—NIÔ>šˆY…3]ŒJ°àpñäŸÁárÿ|ÄÇõ€åþòrº°=Y�x²ÞìqµÜoÆr3¸š~Á—ûç�ëáJ0œ¬K˜·áÐ5ÊŽ< †“u àÖÖHR^0´L›í0î‚$zÝ«L˜;§C;ÀvÞîš)@¨{‰Ö`$/C¹‚›¿Þ„ y‰•VH×9¹ÂI«�`ø¢`ý¢Yï7ãëò—¾¨ÑVh´DºÎÉNZmC;ÀvÞîš³aaIur™Ð¥„t�“+œ´Úx¼·²Ãr)x½ßŒ¯ËË+Á°_ Œ&¢®0ë¢p&~ _¬_4—ûç�ëBÒºÆJ+,´"Áа�·»æl˜CXõ–KtÉDÔf]ÎDÁp².aÞ †v€í¼Ý5S€05š>%t•$…²#,—‚¡ mÞ †v€í¼Ý5gåÓ9„U/Ñá—ËZã%:‰ºª&¬’[†!5Gg@¸ïHW.4yGgO�`H"5†®åÿÎ…‰jm�D©q9{�Æáèâì© ãkÆfÞ„Iå¯1Ù;òh%ZƒÃ(R„In¾„Df!;xò·áèâì© )Z¡ÐÇ„V¢5Rc�\&GgO�`h›)@¨µ5¥Æ‰ó„ºÂåìµ`(§m ³q³œ½3’Ø×(;ëq9{-Vû #@P”õ1)t1*òu…Y…3“5$RjŽ~u¡ÖÖH”]ŒŠ¼G]¡¡k‰Y…3“5áèâì© )‚k¶öúÕÓ£nO~ GgO�`H¶‘v�ƒ'ÿŽ.Ξ:Á`M†HðäÂÑÅÙS'R×líõ«§�ÝžüŽ.Ξ:Á�"l#í¼;&4t-ñÑD̺(œ‰˜¬!t1*GgO�`°&C$€à¥Su…�&bÖEáL€ptqöÔ †v€­½~õôh¾kF3wL˜uQ8ÑŨÈ{¬´BC×¥-H0<ùÊr…Ö#]Sî%EÁаµ×¯ž>ÎwÍ Ú¶öúÕ#ÍwÍaæŽ eG8qž°v  ¯÷K˜„*¹�¤”V^0,Ç�`Á†®åÿÎ…‰W‚!Nàf=¾Þ”—ëáÂrö�++­ÐеĬ‹Â™Ž.Ξ:Á‚�L´@(Ë•`ÁáâÉÿ‡r¿~>.7¸Ùãíj5.±œÎFÁAðm9��W‚aºàgÕ †rïŽæ‚a9n ÁP®àça.–ãÖ%†Ùínð ”Ú“’(5öuM ³ó$–ãF°`°ä\ .žüwÁAp(çcùÏ÷Kœ�å~=`¹¿¼œ®lOÖ£à ¸œ¿}\W‚¡`›³Ãôp4 å´márÿ|VÂ¥>&ÔUåIz®,÷——Óõ€íÉzÜ ‚¡`h¶öúÕÓÇùN0œ¬KˆáÄ£‹Q‘÷xì’�Ã0–Ã/šõþq=„/}Q£­Ðh%̺(œ‰‚¡œ¶-ŒËåë“ @p&b­t&ï‘”ÒJðz¿—Ë+ÁÐ0maA ]KÌ�S‚¡\ÁÍÅ @°­Ä¨%n/vÃëÍz¿ö_ú¢F[¡Ñ£–‚aK˜·az/ÑVµ¼Þ¯†ýæJ0´lWçåa×Ì[3wLhè­¤km�$%ÚÊæè@8z‡“SI¥ÆB“`h˜·Íj9Ï˯{•I0¬ngsF€àÝ1a$/C9m[¸Ü?K€p©� +«¼Ä£w89•äÑ©±N.“`hÆf5�Íþ²_jm�D©±vÞßk±²”¢`h(›£3€pt†“SI¥ÆB“`(§m —ûçc  }L(;ÂÚy¯UDk¤Æ:¹L‚aµ_Á0E^jE8Œ‚¡`Úlçí ,Hbí¼¿×*b"³�nWËÙx^^=¾Û †v€yÛœk¬Äy+x}Û–—ÂøÇ-|}v$öK˜I^b¥�µóþ^«(ÚÍ ÔÎû{­"&2 Ù¡5x _¼hÖûÕt6ƒð¥/j´�µóþ^«(Úæm³]¿Þ¬/§; ’hèZ¢•T`­­‘¤ŸŸ¬‡Ùxyr%Ú¦ÍvÞî‚$VVy‰¹sJ0”+¸ 7Áz´kçý½V#%[XIê£`8Y—0o¤/j¬µ5’”`ø¢`ý¢9?Y³ñòBÒºÆÞH›ðMxƒ•îM¼Þ¯¦³Ù•`XŽÁ‚ÃÅ“‡r>–oñ|¿Äayò|ÄÙj,ñd�åþòrº°=Y�‚ƒàrþvX>¿ «ÛÙ† xwL8Œ‚áõ~ S€ð¥÷¾$¥C;ÀvwÍ äDN¡Ô©r}’Ø{R‚ád]Â0 †v€í0îš)@ȉœB©1Råú$1*{L‚ád]Â0„Z[#Qj¬l"4® ÁPNÛfoOV‡v ü�­Q“ÂD.Z³ÀIræÎ£3¥›xÁÐ0o›íê¼<ì ,H¢•T ‹Q‘÷‚aµ_Á0E^jE8Œ‚au;›Ã0 †v€Có ”:iƒÛ«½—8!¬to"Þ[Ùae•—ø'§’¼àóõPîÛýúJ0´L›í¼Ý„$1wN †r7W7áÄ£•˜uÒæ£`ø¢àESîÛýú|=@øÒ5Ú ³NÚ†ý¦A’—Xi…d"ê ³. g"&kH0|Qð¢×C¹o÷k}Q£­ÐI$C¹‚¼Ö£•èp’œ¹Ã�‚á‹‚ ™˜uÒF0”+ø¬G+Ñ¡tü(¾(xÑ�‰Y'mÃɺ„y \|è½ÄZ[#I †ø°~çë¡Ü·û5„¤u�•VXhE‚ÇõPîÛýú ÌIÚ ³NÚ Ñ+Ý›ˆ÷VvÖ`e•—ø'§’¼`XíW0ŒA‘—Z£`x½_ |é½D‡/IiÁаÆ]3Ur 4{O }MY0X“aB­­‘(5Fe� ³ŽŸ]œ=CаÆ]3Ur 4£²Ç„¾¦ Ÿ]œ=C¤ Ãjm�D©±÷¤0ëHðùÑÅÙãA0´ÌÛf»:/; ’h%Xkk$)Á«élSîÛýúJ0œ¬KF€Pkk$J�QÙc¬# †v€i³Æ@X�D+Ãêv6‡é9@ðî˜PôÒå;ÁPNÛVÓål_WaNŠÐVXkïí$Fe�éGïI¡¯)£5˜uQ81YC‚¡`Þ6ÛÕyyØAX�D+©ÀZ[#I †v€i³�·;€° ‰²#Ì�S‚×·—å|,ß^ †r7g7aݤlFåÌ‚0w”ïÃe³ÞoÖ·—‚¡\ÁÍÕ @X÷)›Q9³ Ìå;ÁðEÁºlÖûÍúöR0”Ó¶…òù0–!ksLJ¢ÔxëI¡é‹ )´'Ö8u*Vû #@Pä¥V„Ã(V·³9 £`h˜6ÛaÜ„IÔ)bïI¡é‹ )Á°_ X�²#E¨ ¡KŠ\<ý(¾(X¿hÆõPîÛý‚5Ç.Ùˆ¶ÂÞ“BÓRèkʶ²QÞÛL‚¡`Ú‚$ÊŽ°÷¤ÐôÅ„”`8Y—0.>ô^¢`hØã®™„™;&”aïI¡é‹ )ô5eÁðEAùvX>?ÎD\ht&bî(ßaTö˜Ð×” OþAprGù+­°ÖÞÛI"ŒÊúš²à x½ß¬o/¯C¹‚›é @”=&TÎ,sGùN0|QP6ãz(÷í~-ÊÜüqe� •3 ÂÜQ¾ _¬Ëf\å¾Ý¯Ãj¿‚aŠ¼ÔŠpÃêv6‡a 'ë† ÔÚ‰RcTö˜Ð×”C;À´Ùã ,HbTö˜Ð×”Ã~ S€ ÉK¬´Â¨ì1¡¯) †/ Ö/šq=”ûv¿†ðÐ5Ú eg=Z�ž²6£²Ç„¾¦,Ú¦ÍvÞîÂ’h裲D޹sJ0Ìnðþl\|è½ íÛaÜ5S€0sÇ„QÙcB_S 'ëæ-@XhÔǤ0*{L˜;§—o‡åó£+ÁÐ0m¶óv$ÑеÄÜ9%ÊÜ\Ý „�V¢Ã¬“6ÃëÍúö²œ�å[­Ö5öFÚ„Y'm°Ò½‰‚ád]¼ �ú˜f�´ «ý † (òR+Âa,l9ׂCv)A9;Ü„ÜQ¾CÙFe�éGïI|~tqöx,ÈD[A(Ë•`ÁðEÁj:Û”ûv¿†05³6ÒšžðÞÊy‰ºÂ¬‹Â™ˆÉ,l9ׂ—ó·Ãí•`h˜6ÛûŽ(í ,Hâ}G”pr* >?º8{<k28€`=Z‰žäGøüèâìñ IxN©nPvdÐhn¯0w”ï>?º8{<º†HM—B­­‘(5f]ÎDì=)€€Ï�.΂¡`Úl wÝ{µƒ° ‰…»ÆÞ“Âÿ„.%}O à󣋳ǃ`(W°�·;€poeg *gô>?º8{<†ecͱK6BP${eðÞÊËérù=I´-!à󣋳ǃ`8Y—0oB­­‘(5f]ÎDŒÊ@ÀçGg�ÁÐ0m¶…»ŽêxaA w�QÙc€€Ï�.΂ád]‚.>ô^“oŸ]œ=C¹‚í¼Ý„{+;kP9³ �ðùÑÅÙãA0DÊÐ%xò[ÀçGg�Á@שé<ù-à󣋳ǃ`P$a]Eï­ì°œ.—ŸÑ¬•®I¡—N|~tqöx,Øšc—l¼ íÃØL\Œ=„Z[#Qj<1Ç.ÙˆQÙcúÑ{RXø…`È.%¨•ñR„ZY#±ð ÁðPCε")XðÄÅØ_ †aâ#>oÆîÏqVð|¹¿Ä? ÆÍÿ4þYp|¹>+W‚¡`Þ6ÛYy8Lgã‚$Îʺy/ÚÚfž$zÝ«L¨«Ê“ íC3ž$FòuUy’‚¡ lÂ#NN%y” }L‚™h+€P–+Á‚ÃÅ“ÿ‡Ëýóÿ4oÿŒ›=þiÿŒçû%¶ãúÃfŽ'küSùgÁAðåþùX^ †º÷L²`H&Í™`HÑ*ÁPë&Y0DÊÐ%Á�"¸fÛ¥�`°&C—ƒ")Xp¸xòÁárÿ|Ä? ãŸq³Ç?ÍÛ?ãízsÒâú¶mÁ—ûçãæ¤=» íesf$±ÐÇ„’Ta�“Z ¾Ü?�®C;À´ÙãN0´lçí®™ †ý¦‚¡`Ú”aI²W™…ìPWXècBkp*–ã^„%É^´:‰d¢`8Y—0oÃɺ„a 'ë¥`xPp¹>  ¶‚œkÁ‚ÃÅ“ÿ‡Ù¸ÁÃÉf†?›Ox²ÆýùùlÜàÙáý­ÁYyÏÆÍyûáJ0x’ð³ÙÚëWOßw;ÁàI§fk¯_=}ßíƒ")Xp¸xòO‚ƒàP¶ãt‰‡“Í 6Ÿðd�ûóóÙ¸Á³Ãû¹à ¸\ž·¦W‚A‘‡ŸÍÖ^¿zú¾Û E>5[{ýêéûn'IÁ‚�L´@(Ë•`ÁáâɇãgåŸ7#N7¸??÷$ñd�:üYpüaÜÌÊÕ`h˜·ÍvVÓÙ¸ ’8+Xkk$)ÁÐÐ6€àI¢ìuUy’‚¡`Úlçí ,H¢ì'§’ÃrÜ.žüÁApX-OÖ,—M{.8.—íù•`h˜6gÃ\0”Ó¶…r¿ÞßnC;À´9›ÎÃC å~½¿Ý ¶‚œkÁ‚ÃÅ“‡Ò¥„ËÙkÁA°ò×W‚!EÈÍ»3ÁðPÃõ$j/X°àpñäŸÁaµÆòJ0´š3€à¥Sï­ìðLpù|Ëvu‚¡`Úlçí ,Hbîœ ³Ûܜ݄¬Í1)‰•ÒNgåÉ J�kœ: Ëq%@P${eÐV¨{‰ºBåÌ‚C¹‚£3€`ú‚”ͨœYæŽò�`XŽX—A‘ì•A[¡î%ê •3  «ÛÙ¦çÁ»cB+C;À´9„ZQí¡ÔXôIÚ:�âÿ�ÎÃt`ÚL¿> †é0À´™„}/¦ÃÓæþõ“`˜L›)@ø×£3ÁÐph¦‚aµ_Áô (òR+BÓR‚ád]¼“¾¨±ÖÖHR‚a: 0mÁňÖ`î•"#1Ú…•‚¡àÐLC¹‚£w¡è½Ä a"ïQvÎàÑ;Áð  lÊçÃX¶+Iëm…úîB0<(—Ë×'€ eGêÞzBg�”ÒJ°`°ä\ .žüOÁApX-OÖ^*[c픕§‚¡\ÁãQ¬G+Ñhól’œ¹Cg".”«;›? †eSîWÓåøá¡/j´N’3w¨mž-”«;›C¹‚í¼Ý„¬‹Ú)Â{+;”N-Hbîœ  Ö/šõþrº)çú¢F[¡ÑX8™;Áå~5]Ž�W‚ád]Â0„I_Ôèu¯2a­­‘¤Ãɺ„ Lú¢Æ¬{#I †v€isƒ7‚¡\ÁvÞî‚“H&¢®P:µ ‰^*k¸•¤ kœ¤ˆ“Sœ$gîvÃɺ„y &}Q£tjAkm�$%¬_4ååjÙî÷+}Q£­°ÐŠPj̺¨�"Á°Ú¯`ÞE^jE(;ò$Vû #@€Z[#IyÁPNÛ.÷ÏÇ ú˜P:µ ‰^*k(5zÝ«LX8™;¬to¢`h˜6€0ÅßÑKeÍM_LH †å¸¼Þ_N7åü ÌIÚ �ÆÂÉÜa¥{C;À´¹ÁÁåþrºß_„sk"’‰¨+”N-H¢—Êš…`(W°�·;€àá=¡“H&~ 'ëæ-@˜ôE�µ¶F’  Ö/šr9]ŽïÃj¿‚a.Ù…A/]¾ «ý † (Êú˜£`8Y—p“¾¨ÑKeÍM_LH †v€²9;?Ÿk¬ÄDf!;ÁÐ0m¶óv$±²ÊKÌ�S¨+4t-ÑKeÍB0ÌnpÈDÔ&ëåGÁð `]6ååjº� <ôE�¶ÂB+B/•5 �RcÖEí †å¸,X0Ø r®;ë¥V§‚ÁÿñÉoÏž!–ûËËézÀöd=âüd¶Ù/?ãj¹/ÇÙìdýÏ÷K,W?.qÕÞÎðÙ³ÿüä7ÁAp€m¹ÃR×§Ê.:‰G¿¾¿ÃÉ)^ÚÜ9J8\à[RžÌDé|×àÑ÷w�Ÿpvñ— œ“1v!8@©{%œ&ݹ÷ŠÚ௟ggï§)¡²‹Nz\’'uLñBpðÉ?¬Hym\B£Í³¬‹‚T¶.aï �‰­—ÊNziµA]¡ì¬G¯+yï `=Ö¤ +%Eô“6 teGè&ú˜°Ôõ©²‹N¢ÑÒfBë±pÖHg EÁî­ìPvÖ£3}?ñô7=‰Y×–ü…à 8ÀÜz©Õ)n�ƺ7h�$)68é%-)î®Áà9)oµÁ£‹3|†3ª%Rxôëû;Ľ² k\BE‰œ'ÁAp7�õxï<Þ++%¬¬ò­ÁÚ÷5ÎÛ³ŽÔ ìÈ`çLĬ#E´FjtÞS1I§‚brfÑ»] n:'±ö=EýlÞ¶˜u$´­É©�qBIߣó˜uQ�‘˜¬!!8k-é × '%)ìô=RUÙlÉÈtŠ÷ÊJI¦AÙY�Ö›‰Š\J§X+—¥Í.ὕ�î¥à€O~s¨\­¿C­Ðaå¼ÄΩˆÑú» ĵF/•6 ¤ªÒJ¢õµ!” kla_’à€O~“ae¡·/ ·ÎD”]ï1Z‡¾&Š;œPv½'´­77“½£tŠR£à€O~s9S-Ý$�bå¼Ä{+;tX%]×§¸U´p*&ò~w�'Ø{B‡çÓÙ>ž½EåŠhýÝ…à€O~›fÙ»”N<ÁÎJe)¢•xoe‡Å)VI×õiƒÎD´­77¥Ö8q�D—’à€O~›ôeG¦AÙVI×õ)žÌ0»ÜÑM¼@<Áh#§¨ï f—;²f�ú˜:ÑMô1 øä·rõãŸ^œÝxÜFÍ�ÄdïeGVù]ƒ^ã Fmn$Þ}��¾G+ñ^«;�÷Vv‚>ùmXžÜx<&å­6¨+Ì.wt�'عc£Ÿßߢ®°Jº®OŸU6f—;²fq!8øä·Mg=vÖK­NÑu¢‚Œôøæ¯}Óà›¿ÖNJRæMƒoþjúbBê VZaÖEáLðÉo¾Ÿxie/­6 :Ñu¢‚Œô(;¬‹Â™ˆ7Ý J� {Lè0Y/QW(8à“ßjEÇV÷³. g¢Gg"ÊŽ¬BÓRþBpðÉo›Ž›œJBEY«èÑôÅ„E<{öþèBp"UÆ_á}G+›­GE.¢5 ð䛢¬UÄ£+ÌÚHg�GÙ&ç%f]ÎD4}1!%8À“oвV¯0k#�5eG˜œ—˜uQ8�™‹‹ Áž|S”µŠxv…Öã}GŠ09/1ë¢p&¢Qh=ú˜"J-8À“oвV�®Ðz¼ïH¾‘ÊŸœ¤øs¯‰Y…3Qp€'‹h=Nz›ä…à‚€à0·^juŠ•M„•V…“W‚ƒà°7„Y…3“5„5)\Žåìäň“SI˜ôÂf—PQÖ*^‚À¹U^¢§,µÂ¬�tÖx”aî•"#1ë¢p&¢é‹ )Ü=›œJÚ ‚ÀŒ²6=e©fm¤³Æ£ì“ó³. g" ›Îªˆž²Ô ³6ÒYãQv„Y…3'TiE˜œ—(8À“o[’ùb'8'ÊŽ°²ÊKœœJB]¡COYj…Ö£CÓ§Ôà=açŽIpx£ÈåŽ"ÊŽ�L|ƒºBÙvÖK­Nqkú”že]ÎD�N‘à`´D/µ¢¸»€MGXÙDèÝ1y”ar^âû3̺(œ‰˜¬!!8S|“uQ8Ÿ%kè vΣì+«¼ÄÉ©$œ�5 ”áäTfÝÙÎDthú”žIR…5Nj…½—è*I eG˜œ—øF‘Kopr*éBpŸüÛI…}?ñÒÊ^RĬ‹Â™ˆÉBë±ÐÑV–"NNQv„É(Z©nï;2¸°ÇdPv„º®µ’½±òt× ìÈ ì¬GC÷˜;g€cRÞjƒ÷6%œÖ½Dk¤FÙvÖK­NÑ%mxoe‡²#Ô†€7ÉÜQ|ƒ•ÒvÖK­N/ÁWNJRæ gRY³@]¡Ñ景]&t&¢ÑæYÖF*�0wN¹,IyÁApÜtÖcg½Ôê•î¥5„Öcv)QÄ{+;thè>�âBKI³. g"Zƒ²#ÁËË¡=Y�8髊Ô⦳•î¥5„÷6%¬“;Å…+È㽕ÊŽpÒW)ÜÖÚ{;I§‚:ÚêÔšZé1k#ÉH¿kPvdP‘앹 žnÏÏÇ%ÀøÇ-<ž��Í®z‰“¾ªHaí¼Ä²\ý˜m¦å[ÁÓaY–«ñõÆ?náÝÙÙÙ à{L8髊½{‹ºB¥u!x½,/‡"ŒÜÂû3À'¿AÀu_LH¡®0ë¢p&z´;ë¥V§‚×ËåXÎÆ?na½,/‡¾ÂG¸î‹ )Ô*ÊZE�Ö`g½Ôê'}U‘¼ËÙÉ‹`üãf'/ÆòrhOÖ#¾Â÷pf_ê Éåe­"Zƒ�õR«SœôUEJðüp{~>;y1ÂøÇ-¬—˱œá¿âr,g'/FÄ€›ŽpÒW©�Þ¾$Áëål,7ûå Æ?na;?ÜžŸÏN^Œ?Ž¿ï^a@OYj…Y÷F¢®°²‰ÏOf›#€ñ�[¸ùë @À[c¯1û³.j'í$vÖK­N1wN žŸÌ6�ã·pó_oN“$eœ$$ç-)”;+/Ëýr8ÿ¸…ùáöü|\œÆ¨È{Ô*ÊZÅgg‚—å~9ŒÜÂüp{~>._-ÇrvòbÄ€Óy�ºBEY«øìHð²Ü/‡G€ñ�[˜nÏÏÇå«Ç]Žåìäň§1*òu…вVñÙ£`Áó“Ùf¿ü|%Xp[á¶ÔEáLÄDf!;üýw<Ãÿú_1½tJz¼ÿqƒ7¨Þ\Ýìðï †Á5ÛòrhOÖã.HbÖEáL¼ñ˜È,d'´ð%)�‰ÌBv Šd¯Ìv E^<¥ºÁº7R0¤®Ù–—C{²ñí‚`È5Üà @@_»Lƒ" /C®áæêF0(’ðR°à/8À¤¯*Rh=æDNQD©Ñô)yÁ‚!EˆÔÌ·ççã®´5¥ÆÎz©Õ)Núª"%R„Inæ‡ÛóóÙÉ‹ž˜h³“„Þ¾$Á�]JP¶ËÃí9@À2‘Sh%J�/Ii/X°àeGù¥FO„¶Â7’Šújn½Ôêôú":ùéÚzéÁl…[º¶^úþ�à ÈÅÊ&Bk¤Æè¤ÃI_U¤ÐK§¤5 te­â³#¬µ5Rp€¿ †ìR‚ãf~2ÛLÚE쬗Z�⤯*R‚Pä"f]ÎD4}1!…•Ò*ÊZÅgG :ñ^YIh%J�вVñÙ  )‚k¶Ër¿ŽvøäoV$s‡²#LÎK̺(œ‰7M_LH  )ÂvYî—ÃÙ®q°î%Z‰ÖH�ur™ÐIT”µŠÏÎ  È“DßO¼´²—Vt&")¥VÉ-| ‚áZ+p$ÑáKRZ0¤Ûóvúav{Ø5*ò$Ñ÷/­ì¥ÕæYçêš E¬’[†a;—Ëýr×8¨È“DRJ+¬’[,Xp[á¶²ÊËg¹s ÿoþz³Ã¿,RDèRS^íÉz|ukm�D©±²ÊKÌ�S.KR‚!EpÍvÞî.H¢ìœÄÜ9å²$%²K Nfó“Ù¦œO—PB]¡ì;ë¥V§Ï¤²‹)k˜;§\–¤üGÁðPƒyÙÌg›#€€F×ÔàB_\\l…ÛG1wNáï¿ãÍ_ovøw‚ƒ5º°ÖÖH”=em"æÎ)—%)Á�"¸f;ow$ÑJÁ�]J'³ùÉlSΧKh=Z‰;ë¥V§Ï¤²‹)k˜;§\–¤> †æe3Ÿm]Sƒ }qq!Xp€¬ëSLÖ:‰Š²VñÙ#J�вVñÙQ,R„.5Ër¿!`ÝKT”µŠÏo<ºy�ÖH�^÷**ZX/I †!R³,÷ËáÖ½DEY«øìèÆ£‹Q‘÷h�ÔÉKT´°^’ )Â$7˱œ�¼!`Ò.¢·/ u…e­¢`HÑ*5ÊŽ0ëúT°àY×§¨ÈKÔæ"&kµ‘ÉDÔÊŽPQÖ*>;Âd Á‚!EèRS^íÉz|õÖÚ‰R£"/QW˜uQ81YC‚!EˆÔ,Ëýr8‚€µ¶F¢“˜¬!”ë^¢•è¤`È.%(/‡rº˜µÉNZã$¡ì³. g"&kÈ À“DßO¼´²—V¬’[Á�"¸æH0¤Ûóvúav{Ø5z’èû‰—VöÒjó¬suM†"VÉ-ÃC óÙæ©`ÁàïJžÐV¸Uä%ö5J�%©Â'µBëÑô)›wøw‚Ïg›Ç+Á‚!»”àd¶¾½—'%4}AÊæ�‚á¡“›ùló  Ñ5 žÏ6�GW‚Áš ]xJuƒ^£•xyòa¾Á ¡CÓ¤lFßO¼´²—VÁ�"¸fÛ¥@ÀI4t-1wN¹,I †ìR‚“Ùúör\ž”Ðô)›? †¹™Ï6�GO©n0i}‡N¢¡k‰¹sÊeIJ0änðæÕ@@‡oj¥kRoP’*¬qR«�‚á¡“›ùló  Ñ5 †'ßžR-Xp©œñÉIBÓR(5N¬qê4 uï;è@@ïŽ km�$…RãE^>ÓÕ³¬‹Â™ø,YCo.Cv)Át³?xìROh=}�Öà06¨ÈKÔæ"¢õè$nçíN°à¶Â-f]ÎD4}1!…÷ÎHŠh=®÷´u¯0Y/q‡'X0¤®Ù.Ëýr8ÛAÀI̺(œ‰húbB +­�ŒT§è$*ÊZÅg�‚!Eˆ� )‚kH0ø~ `v)÷ÉIÂh«Š™LˆŠþÆ(|†¹ˆF †H@À¬•¢,q¢{�:ŬM´Òj#œ‰ðî)@ÀÂÝ:öI?{÷“Öõ3§to¢àùlóó r ïÞ?[/ËËa•3 Â{+;k°³^juŠÑI7qžÐÛ—ôQ0<(ÈÍ|¶ùÐèš\hŒI)­0:“I0¤±q‚!EpÍ»O‚Á÷ˆ³K¹ON*ÊZE4}1!…•V¨{…ÑI'²K –c9†%@ÀìRî““„.FEÞ£®PvN¢¢¬UDk¤Æy+R×l»´¸ ‰Y÷F¢®PvN¢¢¬U Z�èIb•ÜÂ7h=ÊÎzt]–ö˜PQÖ*~  ÌËf>Û¼xJ¾A¯ÑôÅ„Z�TU”¥=¦tŠÇ.Ù(ž| h´`<Ÿm>]  µ®¡Ks"gÐK—ïxò-'r s1YC‚CŠÐ¥æ à‚$:ŒºŸ$zö’” )¶¼Ú“õ¸kº_’Ò˜uQ81YC˜uodƒÎD4}BIª°ÆIB+ ðä[­¬‘øÆh‰•îM|#X0¤]jæãrykm�D©‘”Ò òÞ-H0¤¹9hM´ÙIBÓ§ôL’*¬qÒj#²K VËÍzz9 †ìR‚rÙž àÉ7OI)­ªäA°`H\s$R„í|\.÷Ë]ãxòm¢ÈÝ¡î%VJXYå%&:¦„7¶º,j˜Ï6ß ð÷‚Pò„'Xð|¶yw%Xp€'ß²®OQQÖ*þi›‹hÔ3ÓR¯ŽvF©QQÖ*>; ‚C ï ÉHRxoe‡²#ôýÄK+{iµAEY«ˆ.)rñkm�¤ˆRãäç­`‚A0¤‘še¹_G0i1’—Ö8iµA£"ïCŠ0ÉÍr,g'/F˜´‹èíKB]¡¢¬U )Z£FÙf]Ÿ  ëúy‰ºÂ\Äd ¡6R#™ˆºBÙ*ÊZÅgG˜¬¡ X0Ôº†.\�ĉËwXkk$)”yùLWϲ. gâ³d †!R³,÷ËáÖÚ‰Nb²†Pj¬{‰V¢“‚!»” ¼Êé `Ö&;i�“„²#̺(œ‰˜¬!/Xp€'ßÛ�!<¥ºA£ aádî( †ìR‚åXN‡a pAkm�$…R£¡k‰Š²V¥ÆÜQ¾ Ödè@ÀZ[#Qj¬¬òsç”Ë’Zƒ^*k‚¡î}]èÝ1atÒMœ'ôRY³ÀZ[#I º†HM—Ö½DEY«ˆµ¶F’Bk¤Æa )B—šòrhOÖã«GXkk$:‰•U^bîœrY’BWIRø×ÿU0d—”—«Ùfù  —ÊšNæî£`¨u ‘.HbtÒMœ'ôRY³ÀZ[#IáÄå;Áð Àäf>Û¼�®©A©NÑеDmH0<ùð”êï +Ý›ˆV ÀV¸­toâÿNp€'ß²®OQvNb²†PjT”µŠÏŽ‚`ÁCÀ¿’‘¤ðÞÊeGèû‰—VöÒjƒŠ²V]Räâ)ÖÚI¥ÆÉ)c#:Qv„oy‰ºBÙf]ÎÄd ½ÁZ[#)¢Ô89Åy{!‚` uï;è@@ïŽ ß(òu…Y…31YCo]C¤¦Kë^b¥{±p2wÖ,ž%kèY­­‘¤Ð©Ñ«Œµ‘J0DÊÐ%€€µ¶FâÄå;”'§’0ëÞH¬�’¨+T”µŠ‚!EˆÔ,Ëýr8‚€I»ˆ‘¼´ÆI« ºy/R„In–c9;y1BÀ¤]Do_ê e­¢`HÑ*5ÊŽ0ëúT°àO¾e]Ÿ¢"/QW˜‹ˆÉBm¤F2u…вVñÙ&kH°`¨u ]¸ ‰µ¶F’B©ñ�"/QW˜uQ8“5ôF0¤‘še¹_G°ÖÖH”eG˜¬!¼'|è½ÄŠdî(¢›èc Ù¥ååPN7³6ÙIkœ$”a²†¼`Á‚<ùæI¢ï'^ZÙK« VÉ-‚`Á�"¸æH0¤Ûóvúav{Ø5N0<Ô0ŸmŽŽ ð÷‚Pò„‚Ïg›£³+Áž|ˉœÂ\DLÖ�àO¾ÕʉoŒ–XéÞÄ7‚<ùæI")¥U•Ü"ðäÛD‘»CÝK¬”.°²ÊKLtL olu#X0<Ô0Ÿm>AÀ¨É£w¡óhˆ"EìHQƒ^ã=ݤ„Þ:œœJB­PÞkÁ‚ü½`ÁóÙæèèJ°àð÷‚Ïg›§W‚€¬ëST”µŠÏŽPjÌELÖP,R„.5Ër¿Ž `Ò.¢×½Ê„µ¶F’ )B¤¦¼Ú“õ“v#yi�“VÁ�"Lr3;y1–—C{²î½}I‚!E« `Ô(;¬ëSk‚ᡆùló ‚ü½à”<¡­p{ä%æÎ)üýw¼énðŸÿUÄÜ9…¿ÿŽ’Ta�“Zíðï žÏ6GW‚!EèRS^íÉz|ukm�D©±²ÊKÌ�S.KR‚!EpͶK;€€ ’h¥`È5Üt7�Á›îæ£`x¨Á¼læ³Í/€€F×$¬ÉÐ%€€µ¶F¢Ôè)k1wN¹,I †Á5Û.í.H¢ìœDm]òZ0änðæÕ@@‡’Ta�“Z} 5˜ÜÌg›_�®©A¯q¡±s&&Â7Š}rê f]ÎDÁ‚€"O}?ñÒÊ^Zm°JnÑ 3=I$¥°Jn!X0\k à‚$:|IJ †a{ÞN?Ìn»ÆA@Ež$ú~⥕½´Ú`•ÜB0X“Á\�D£ÍKRZ0¤Ûù¸\î—»ÆA@OI)­°Jn!Xp¨•5s1YC˜�ò(5ú¬ˆŒ`Á‚!»” \¶ç½tJ¢6X)ò&kH0¤®Ù.Ëýr8ÛAÀIÌEDÓR¨+T”µŠè$*ÊZÅg�‚Á÷X/ËËaöìf—rŸœ$4}1!…ºÂä¼DEY«(œ‰ðî)@ÀBÇ>i|÷^0¤“Ƭ{‰ÖH�вV³î�$…Ig'­6‚!R† @ÀZѳHYQAFb¥ÖJפÐK§¤`Hr³^.Çr“ve­"fÝIJð|¶9::º )‚k&$1ë¢p&¢é‹ )Á`MК¬¨ #Qj4t-1ë¢p&¢é‹ )ÁàL„wOF�…Ž}Òøî½`H&�X÷³î�$…—ïC¤  `Ö½‘(5º–¨(kÑôÅ„”`H\“.H¢•‚!×ðpІðÞÊ]J¨+”ÃC ¹™Ï6ßžR-²K –c9†%@@£kjÐk\h\�ÄZ[#I¡Ô¨(kCŠàšm—v$qr* ³î�D]¡ìœDEY«(´СéSz–¬¡�‚áAÁËf>ÛAÀSò Fmn$FëëäNQvÚ“`°&C—Ý ×Xkk$J�²#LÖÐ�Çè¤ uï;˜d€€ÞfÝIÊ †º÷t  wÇ„²s£“km�$…•VèÐSÖ& †Á5€€ ’˜uQ8ÑôÅ„”`È5�ôÖ,a´ +? †ìR‚ܬ–›C;]¿…€§ätÉ. FëëäN1ëÔÆ †Á5€€ ’˜uQ8ÑôÅ„”`È.%X-7ëÛK€€µ²F¢•‚!»”`µÜÚéú-¬•5úÚe Ù¥«åæÐN×o!`­¬‘èÐ×.“`¨u ]¸ ‰ÑI‡µ¶F’B©±³^je³K˜‹ˆÉ )BnÎZmv’Ðô)=“¤ kœ´Ú†ìR‚Õr³ž^Žke�DÙz©¬Y†ìR‚rÙžt&bÖE�HÊŽ0YC‚¡Ö5L2@ÀIԽ¬{#Iyœ¸|'j˜Ï6GGG£FC׳. g"&k­ÁÎz©Õ©`Á‚ü½à”<áß <Ÿm~] ²®O11YC(5*ÊZÅgG‚CŠÐ¥¦¼Ú“õ(R„HͲÜ/‡#Á�"Lr³ËÙÉ‹Q0¤h•`Áþ^°`ÁóÙæû•`Á‚Ø ·FK—Ëýò¼�~Øáß  )‚k¶óq¹Ü/w$‘”Ò «ä‚A+p�”ÒÊ  ÌËf>Û=…pJuƒ^cÔæFbîœYÊŽ°³^juŠÑI7qž ÖdE‰Y…3M_LH¡“x†A°`H\³]–ûåp¶ƒ° ‰²#̺(œ‰húbBJ0X“Ák²¢‚ŒD+ƒ3Þ=…Ž}Òøî½`H¶Ër¿Îv�ƒP÷­Ä‰Ëw‚[á¶²ÊËg¹sê™®žå"¢õX+k¤›$jЙˆFK¼ÁÔ o®nvøw‚CŠàší²Ü/‡£WG;¸ ‰•U^âäTê ÝcÖEáLD/•5 Á�k¸Á›WG³L˜;§P+ôµËôQ0<(ÈÍ|¶ùþ à)Õ z�Q›‰Þ&k­ÁÎz©Õ©`È5Ü\ÝÌ:ióQ0<(xÙÌg›ïßžRÝ ×µ¹‘èÝ1a²†Ð쬗Z� à^YI8髊zé”´f�N¢¢¬U<Ãí¤/j�Éy‰Úê^î †ìR‚Õíf~2ÛïŽ ;ë¥V§8qù¥ÆÊ&BkP¹"Z'Xpø{Á‚ç³Í÷ïWð `>Ûüú%Xp€¿€’'ü;Á@‘'‰Y…3“5Ïg›£§W(R„.5g$ÑáKRZ0¤ÛòrhOÖã®éTäIbÖEáLÄd †�—Gï ð÷‚Ïg›_¿®Ál…[ßO¼´²—V¬’[ '¹Ã¿,R×lÏÛé‡ÙíaaA}?ñÒÊ^Zm°Jn!´î�GÙf]ÎDLÖ:ÚÊRü(¼læ³ÍÑ{€`tM z�½—X+�É{4Z.¥SÁðä[8%/XpÈ.å>9I˜;Êw¾/PW˜‹˜¬¡ X0¤]jÊË¡=Y�ÏŽ `­­‘(5V}J˜uQ81YC8髊”`È.%(/‡Ùí%@ÀìRî““„VÞxÌå;ß‚!EØÎËËav{¹k"A@ïŽ ­,8x’8\NÑŨÈ{”s“5 †!RS^íÉz|vë^⤯*R7]ŒŠ¼Gk¤Æa Ù¥„07Ãå  '‰²#Œ…C£"ïƒààIâ0¢Ôø’”Fg"f—V½ÉÒjƒGg¸¥h%ú~⥕½´Ú`²†vA°`È.%(—í¹`È.%¨•.j °VÖHtX+]ÔR0¤‘š3€€ÖD›�$”�“(;ÂI_U¤ÐzLÚEŠ‚!EÈÍÑ@Àª7YZmÐôÅ„� †ìR‚ëIÔ  KIßc²†pB8!¤h%EÁ�]J0Æóár °î%…ÉËw(5Fª\Ÿ$»Ô“`HºÔ”—C{²!`­­‘(5ºÇ¬‹Â™ˆÉ )‚k¶]Ú¬Hæ³î� Ödè@ÀZ[#Qj¬¬òsç”`È.%p1vÉÌ.å>9Ixß‘"|è½|V;/Ÿ‘‰Ï¬ ×Z�¸ ‰_’Ò‚!EØvi×8€€’Ta�“„^*k(Xp°n Ýcî(ßù¾À¿þŽ:EÌå;ß;ü;Á‚!EèRS^íÉz|v¡ÖÖH”³. g"&k'}U‘B·pÖ†ìR‚òr˜Ý^„ìRŸœ$Ìå;ßèÎÁ�"t©ÙÎËËav{¹ƒ° ‰µ¢c«{�¹£|çûB0h (ò$1;¥NƒŸdèR äŽò�ï ”¡wáÖhÌ�3 ÂÉ)öžÔî£`Áe§t¿èÐSªÐ-œ5A°`x¨Á¼læ'³Í~ùBÔèδZ‰÷ÎcîœYPDÁðä[°&;Oh%Þ;�…޶²±Ò }?ñÒÊ^ZmÓoÁ-œ5¸õ6¥SÔ5)'µÚ] N“×xOxoSº—‚áÉ· ;ëÑÐ=“òV´Fj”ag½ÔêôBpø{Á‚ žÏ6GŸ® ð÷‚Ïg›£÷W‚ƒàY…3“5„FßcÖF:kIûÌS–ZyÁ�]Jד¨=@@Oeç$Μ¢§,µò‚!ED„HͲÜ/‡3¸ ‰Š²VñÙÙ�G£"ïÑ©qCv)!ÌÆÍp9èI¢ìcáÐŨÈ{Áp­8€€ ’èð%)-R„íü¼<”Ë]ã àKRßdõ+K)¢®Pv„çåA0¤ˆˆ©™Ÿ—€€µ¶Fâ0¢“ØY/µ:½ñx^CŠˆ¹9úÔ\�ÄIÔM_LHa¥Þ++ =ýMOFZ—Cv)!\O¢öï••„•M„•ÒNúª"%RDD æ  '‰EŸ¤}æ)K­0ëÞHœ¸|‡R£6$RDDÈÍcî.Hâ$j�Fa¥z’Òš}’ö™§,µò‚!»”®'Q{€€ž$ÊÎI,œ9EOYjåQ°`Áe»Ÿ�ó“ÙæJ°`H!R3?/km�D'±³^juzãñ¼< [8kCŠˆ¹9:ë.Hâ$j�¦/&¤°Ò +›sÒÞš…`È.%D„ëIÔ `NÚV6Qƒ²#ƒŠd¯Œ`x¨a6ŒçÃå  "O‡Ë)ºy�—ïPjŒT¹>IÁ‚C Ï­‰èLD]“ù‘9IØY/µ:ÅÊ&BmPv„o6ãåê Fëï.C —${eü¾ ¥Ï“[ âlÜ ­°²‰�®­—C|òïËq6nÐVXÙDøÐ{‰Y‘“C,x¿×ó“ÙæJ0¤]jæëéå“v½îU&ÔÒµ$ã­6XÙD7�+H0¤‘šùyyxu“v]Œ u…çå×® g•¥CŠ0ÉÍÑ@À¤]Do_ê ËÕ%W�`HÑ*XècB+CŠàšmïI™¾ØAÀIì=)4}1!%\Œàš›é @ÀÂÝöÆþMOèLÄZY#Ý$‘`H¶óóòp;—»ÆAÀÂÝvÖK­N±²‰°7öozB©±÷¤ÐôÅ„”`HÁ5[{ýê]îvpA%5V6Fe�I0¤ÛùyyØ5Ö½Dk¤Æóò ®µpA¾$¥Cа�Ÿ—‡r¹k|IJ㛬Þ`e)EÔÊŽð¼<,‚`¸¯Éx¬l"tççå¡AÙWZ�Îû¾ (J�B—¹xŠI»H±Ag"Z‰Ö£ó¾/(¢Ô8!ÔeG(©¨1*{L‚!†€‚ïWãz3^®®Cv)Á~5®Ç×'³ Ü×d�®­—Ö,°²‰P0(’ð  "Ù+ƒ÷VvH×ÖKkXÙD¨k2CŠ�›£w@Àh£¹‘H×Ö˽ÆI,Ü=«l"œDíÑôÅ„”`H"5óóò°pw„¾W„^Ú”°ÖÖHŠè$ž—Á�]Jp=‰ÚÌŠœ$¬l"Á�"¸æ `ožy’ø’”Æ*¹…`Ð œ`P$ † îk2+›�Äóò€¶B+Ñ%E.ž"][/ý…`¸$Ù+ã¯ð)�Ur œ�¼·²ÃYŸ3y�‚!"¾ ¥±Jn�Ëq6nÐVXÙD5ys#Ñ%E.ž"][/ Þ¯Æõøúd¶¹ )"¸fk¯_½ËÝ.H¢¤¢ÆÊ&¨ì1 †a;?/»ÆAÀº—h�Ôx^CŠ©™Ÿ—‡GXkk$>ô^bí¼Dã  )Â$7�ïzû’PWx^°v^¢q †ìR‚²]nÏæDN¡î%ž—Á�"Djæçå `­­‘(5έ—Z�beáyy )BnΪ  ®É`eá$j�YG Ù¥ד¨=@@]“AÙV6‘`Ð @@O«ä¾Áh#V6Òµõò£`P$ àKR«äèI¢­ÐJŒ6"][/ † n”3>9Ihú‚”Í襲f�NâvÞîЩqb�S§ :Q‘ì• �]ê ­ÁalЙˆókm�´f�½—è*I eGhúbB ·÷�ÍZ/Þw¤­D2’Etrw!‚`x"ÑztÞ÷E”�“(;Bkê^¢—Š\��óè’"OqBd0w”ï( †€•Vè$&r^¢CoÍ"š¾ e3æÎ)—%)t&¢ìœDmÒ)ÊŽC@y¯±�nÙ@0º¦½Fº¶]Räâ©`È.%˜nö€�µ9&%QjœXãÔ©` kˆÔt Ô½D—s_ôÉI­Ð©±K‚!EˆÔ�IÆc´ +O7û“÷Wàû  †¹™nö'Ÿƒ‹ºÔD.Ft(ɆÓÍþä½àéfòé ‘®!RÓ%€P÷]Î}‘œÔ '.ß <ÝìOÆ×'›+ÁPëº$Qv„oz/ÑU’Ô¬µ5’”`P$ƒ`‚!`©Í1)‰ÎgkÑô)—мq7(5N¬qêC@E²Wæ ËérùÏÛéœ�´&Úì$y—ËýR0ÁÓÍþp¾ŸÀÍÙ @@ßO¤rY¢óÙZÔUåI E2@Àº7m…ÎgkñÞy4Z¢é R6ãVj�IßïC®áè  $/QjôDh+´ï�Ç­Ô;»èvhú‚”Í‚!ç îŽÐ»‚Гñ„Îce•—(ÉKÁ H Á‚!†€¥K¹ON’ÇÜQ¾ó}�ºÂ¬‹Â™ˆÉB/•5 ¬µ5’"J�“Sœ·�`¨HöÊX³@Ù9‰GïžM¬ÄÜQ¾ó}�Öà0 †€‚!à¦#¬´*œD]¡ì³. g"&k½TÖ,ÐztÞ÷E”'$ÊÎItÉ^Š89E‡‡a?{vt†Ù¥t!‚àòr˜Ý^^ k2t ÔÚ‰NâäTfÝ)R„I³íÒ ,H¢é‹ )ÔNN%yÁ�"Dj΂5VZ—ìKÂÜQ¾ó}!xv{Ùî÷«+Á`M†.„Z[#ÑI4t-1wN¹,I †Á5Û.í‚$Z)\Œà.F¬�’Ö¥tŠRcî(ßù¾  Lnf·—íêBvJ�¢5Rcî(ßù¾ÀËÙá£`°&C§T75ÊŽ0;¥NÏn/ÛÕã¦Ô8€ ÈyOÅ$æŽò�ï ÁÌK˜Ý^¶ûý D�•VHFZE襲f!IÎDŒÚÐ…`Á‚C K]ÔN‘G/•5 t·óv‡÷Vv襲f�Nâvw¨HöÊX³ ËérùÏÛé‡+œ�´Òßô. †€åt¹üŒçíôÃ.ÇÙ¸A[a´UEŠŒ A0\’ì•ñxoe‡-;Ft&â¼ÅZ[#Iy¬µ5Òš>ô^¢6„µóR0”aádî¬Y<óRY³Àí}G­ÄÂÉÜ‘ß]† –ÚH¥S²f�^*kh=:‰Ûy»»@ÜtÖ£—ÊšEƒ}�R£•7+«¼ �6Ï\ª;gú‚”Í Z�’¼¤ˆ•VHÓ»då)J�²s�Äí0î.CÀRµSÖkƒÖ£Ñ³ó„žŒ·ÒÓ…`‚ËËÕl³üp%êÞw0É‚ËËÕôÃú R×l»´ ’˜µ‘J§dͽTÖ,C®áæ¯7Á¥ºshú‚”͸­•5ÒMí> †¹)/W³Í#B0º¦ç-’‰±²Ê˽F/•5 �…“¹£(²K nËél…»#ô½"ìëšfçI0¤“ÆïŽ +­Ð¡§|!R×l#í‚$jÙ‘B/•5‹�¹sJ0d—Ü–ÓÙ wGè{EØ×5)ÌΓ`È5L‚—Êš…ÇÂÉÜ} Ödè@Üöut’ƒ5"€Z[#Iy” ]K´½TÖ,üN0<(xÙ”—«é‡5„Ó¾FÙÑ)Næ®Á¨ÑеÄÜ9å²$%´y’˜�R§X%·\^®f›Ç+¨u “,IŠd¯ :4úYádî  A0ÜtÖcî(ßy”=Ú eGè|¶sç”Ë’ZƒŠÖKR‚!à�»AëQv„�õR«ÓgåÎë‹�Öëì¤Õsç”Ë’”`¸Õ ­¼ñè’$eœ¤Ý…`‚!ॎ¶²äÑhÙY³ÀI/±JnáC —${eü¾—{«´*œ|ƒ^*kXkk$E”'§8Œˆ›ŽpÑKeÍB0ìœGmÒ)ÊŽÐKeÍâY"³�:Ñ¡éSz&IÖ8I½TÖ,.C\^åts%êÞw  wÇ„µ¶F’B©ÑKeÍ™…ìCŠàšm¤@ÀI̽Rd$z©¬Y`"³��`H&�h�—.%´FjÔ½ÂDf!;̺7’”`°&C$€€µ¶F¢“(;B/•5‹�•U^bîœrY’ uï;„.ôî˜Ðë^eB/•5 ¬´B‡ž²6Q0Ð5Djº0»”ûä$á}GŠPv„Y…3ñÆ£éSBëÑIÁ�]J0†y; t�O~‹Ôt `ÝKŒä¥5NZm°ÖÖHRh�Ô8Œ‚¡Ö5t `ÝKôºW™ÐKeÍkm�$…ÖH�óVpy9”›Ç+Á�"¸fÛ¥@ÀIôºW™0wN¹,I ­À4}J(IÖ8©ÕGÁð àeS^åæ)<¥ºÁ…ÆœÈìkÁ�"l#íÐèšLÚE´¥FÙFòÒ'­6‚Áš ]Ø×ÑIº¸ Ödˆ/.p¢e‡^呼ÄZ[#Iy” ]KÌ�S‚Áš €€Y÷F¢ì]Œ1wN¹,I †Á5€€ ’(;'1ëÞHÁ�k˜�¼ËË¡=Y�0ëbb ELd²C©5&mÂܔ—C¹y„€F×ÔàBcÔ茖)Ì�S.KR‚áÉ·€§T7è5Zyã‘®­Di ÂZQád¯(� ./‡róô ¯µpAš>%Á�"l#íÐô)=“¤ kœ$Œä¥5NZmÐKeÍB0Ôº†.\�ĉËwXkk$)”#yi�“V›�“SI˜uo¤`H¶]Ú5€€}�$´¥FÙºÇDf!;Á H Á‚C [­ïŒ›Cû*rN’Îw‚¡Ö5t .Hb,ÖÚI '.ß †!RsôøzÊR+ôö% ­À@Àä¼DOYjõQ0<(xÙ”åj|}Ðèšô¹ˆÎhÙ‘ Ù¥e»Ÿ�ó“ÙF0¤]jæ‡Ûóóq pAkm�$…Rcg½Ôê'}U‘ uï;è )B—šòrhOÖ#@ÀI¬µ5’J�Öd]X³À¬‹Â™ˆÉ uï;è’`È.%˜˲\�¯7³K “v‘"ÖJ/”+CŠàš.H^\­ @À'{ñä[—ðØ¥žC­kè’`¨u ]€€9‘3è¥Ëw‚A‘\–«ñõã^kz’ø’”Æ*¹…`P$áÉ·  Á  ž�¯7ëéåx‘ª Ü”å Ÿüíøzs#x¾ž^ŽW‘ª ÜÌOf›ýò3ÓÍ�àù¸\]Dª&p»æÌuÍͬŸxie/­6h´ÄJ÷&Þ4g‚ççåá R5�³æf~2Ûì—ŸoÏÏËÃíl\^A¤j7x# R5�›aº¹ù6®ÜŸãüd¶Ù/?ãå~¸mGOþ»àðäÀ“¿ Oþ»àðd-X0�‰¶‚�sÝY/µ:,Xp¸xòßÁárœÍ¦Æ™à XpáUr‹+Æóœ ž•‡Õá `ÏðÔuÍ™àÕyy¸Æó¿À™`€a<ÿ ¬–³ñ¼< ¶£%æ\ œ&*õ@¤jgÍ >ù—›æ¬9œ&ªÊ“+€HÕΚ³æ¦Ü_^N×¶‡åMsÖœ5gÍ™`€H•‡Ç#Á‚�’'€`+,Ë•`Á·³qyv9ûpÃx~€ÜÞzRx¶ûz#Xi-•¿¾‚a?iÇõôr¼‚a<ŸÁwÁç'í¸ù¼¯`Ïgðø^p»ŸÓaX^Á0žÏàQðj9ÏËà ãù žþ\^íÉz¼‚a<ŸÁÑÓïsÁ‚ÁVh´ÄœëÎz©Õ©`Á³Í´|‹0þq _ 2ÑVÐh‰9×�õR«SÁ‚ÁV˜sÝY/µ:,x¶™–oqü㎞ž�Í 2ÑV0纳^ju*X0ŒëAðÿƒ�sÝY/µ:,Xp¸xòßÁárœÍ¦Æ™à XpáUr‹+Æóœ ž•‡Õá `ÏðÔuÍ™àÕyy¸Æó¿Àÿ K]ÔN‘G/•5 t·óv‡÷Vv襲f�Nâvw¨HöÊX³ ËérùÏÏ ÿÿÿÿ ±ðÿ³ðÿÿÿÿ·€ ¹ðÿ»À ½à ¿ Á Ã@ ÿÿÿÇ€ É  ÿÏ ÿÿÿÏ Ñ Ó@ Õ` ×€ Ù  ÛÀ Ýà ÿÿÿÿ/ÿOåðÿçðÿé ëÀíàÿÿ/ÿOÿoÿ�ÿÿÿûÀýàÿñÿÿOa� ¡ Á á!Aa�ÿ¯Áÿïÿÿÿ!!#ñÿ%aÿ�)¡+Á-á/1!ÿÿÿ5a7�9¡;Á=á?A!CAEñÿG�ÿ¯KÁMáOQ!SAUaProgram: CD+ Version: 1.0 Date: September 23 1985 Operating System: CP/M+ Extenstions to Operating System: CCP replacement V1.02 or higher Source Code: 8080 assembler Memory Requirements: 2K BASIC PHILOSOPHY: CD+ is a change directory program that will move the user to another directory using names instead of the standard CP/M drive-user combination. Upon entry to a new directory, a chain command can be optionally executed. CD+ will also display an alphabetically sorted (horizontally) list of all the directory names for user reference. This program is aimed for CP/M+ using the modified CCP replacement by Jim Lopushinsky. This CCP replacement uses a directory name RSX (called DIR.RSX) which contains a list of all current directory names and their associated user-areas (very similiar to the memory based named directory facility of ZCPR3). Since CD+ uses an externally referenced directory name list, it is ALWAYS in sync with the currently active name list (ie: CD+ never needs modification). Also, the CCP, not CD+, takes care of password protected directories (ie: the password is not part of CD+, so security worries about CD+ are eliminated). If you are NOT running CP/M+ or you have NOT implemented the CCP replacement, this program will be of little use. Under these conditions the program will generate an appropriate error message and then returns to CP/M+. ACKNOWLEGEMENTS: CP+ is written in 8080 code, partly because of my tastes, but mainly so that all can use. It is bascially new code, but based upon the original CD program for CP/M V2.2 (CD7.ASM) and it's V2.2 prececessor's program flow and minor subroutines are retained. The sort algorithm code was lifted from the Super Directory program (SD100.ASM) but the algorithm itself is a mathematical derivative (it's a shell sort). 300 BAUD OPTIMIZATION: CP+ is optimized for 300 baud remote access. It prints out as little as pos- sible. All lines are truncated (no trailing blanks), and there are several doors available to the user such that only needed information is displayed (see PROGRAM USAGE). All output can be interrupted by the user. Aborting is done via ^C or ^K, and output can be suspended by ^S (and resumed by hitting any key). PROGRAM ID: The program name, and current version number can be displayed by typing the COMfile. PROGRAM USAGE: There are four basic method of using CD+: 1) "CD+" By entering the program name alone (null command tail), CD+ will give a brief usage message along with a horizontally, alphabetically sorted list of all directory names. Directory names prefixed by the "PWTAG" character (default is a "*", but can be altered, see USER CUSTOMIZATION) are password protected directories, not open to the general public. 2) "CD+ " By entering the program name followed by a directory name, CD+ will check to see if a valid directory name is given. If not, an error message is generated, and a list (as described in (1)) is displayed for user information. If a valid directory name is given, the user is moved to that directory and the program chain command is executed (default is "SD", Super Directory program, but can be altered, see USER CUSTOMIZATION). 3) "CD+ :" By entering the program name followed by a directory named TERMINATED BY A COLON, CD+ will act as in (2), with the exception that the chain command is NOT executed. 4) "CD+ ?" By entering the program name followed by a single question mark, the directory list (as described in (1)) is displayed for user information. USER CUSTOMIZATION: There are several bytes of user customization that are available. These can changed either at assembly time, or by DDTing (SIDing, etc.) the COMfile: NAMES: (org 012EH) : range 1 - 255 : default = 5 This variable states the number of names to be displayed per line. No dynamic error checking of this value is done, so refrain from setting to a bad value (like 0). BLANKS: (org 012FH) : range 1 - 255 : default = 2 This variable states the number of blanks to insert between directory names on the same line. Again, no error checking is done, so be nice. PWTAG: (org 0130H) : range " " - "~" : deault = "*" This variable is the ASCII value of the character which is prefixed to a directory name to show that it is password protected. If you prefer to have have password protected directories remain hidden, set to the blank character (" "). If this is done, the USAGE MESSAGE no longer refers to the password tag character. Again, no error checking is done, so please refrain from setting to a non-printable character. CLRFLG: (org 0131H) : range 0(FALSE) or 1(TRUE) : default = 0(FALSE) This flag states whether or not to clear the screen before the USAGE MESSAGE is displayed. Note: any non-zero value is considered to be a TRUE. CLRSCN: (org 0132H) : range 8 ASCII characters : default = 0(NUL) This is the string that will clear the user's terminal screen. It can be up to eight characters, but MUST be NUL (binary 0) terminated. CHNCMD: (org 0139H) : range 80 ASCII characters : default = "SD",NUL This is the string that will be the command which is chained to upon program termination. The string MUST be NUL (binary 0) terminated. A NUL in the first character location effectively removes the chain command. Stuart Rose, Mississauga CP/M Plus RCP/M Misssissauge, Ontario Canada. (416)-624-4935 ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååvÿ¹;CD+11.ASMd ßÿ öÿ  šÿ‹ÿžÿ�ÿõÿòÿ�ÿ‘ÿ–ÿÄÿŒÿ! #"›ÿœÿ$’ÿ�ÿ“ÿ&%—ÿ')(+*,Šÿ.-¾ÿ/10³ÿ2Óÿ3˜ÿ¼ÿ4²ÿ65�ÿ™ÿ±ÿ«ÿ7¬ÿ»ÿ89ºÿ­ÿ†ÿ;:<ˆÿ¯ÿ·ÿ‰ÿ=>°ÿØÿ?‡ÿ@AÅÿB½ÿCÕÿÏÿ¸ÿDoÿ•ÿEµÿFªÿ¹ÿHGÑÿ¶ÿ…ÿI”ÿÒÿüÿJ×ÿÖÿ©ÿ¨ÿ´ÿKLÀÿÔÿÎÿ§ÿMNŽÿPORQ¥ÿÐÿÝÿSÂÿTÉÿU¡ÿúÿuÿVÍÿÌÿÊÿWXÁÿÃÿ¿ÿÛÿYûÿZ[Çÿ\Ëÿ_]Èÿ^aøÿcb÷ÿ`¢ÿÆÿÜÿ¤ÿàÿÞÿåÿÿþðÿèÿôÿÙÿNó'ΜI˜ø˜·ÎL‘´íeó•/[sZÀSNÈŠ�9ÛŠ‹8÷c=–Þ\oN1‚¼8)9#Î$œ5‚#�"Êú!U?‰?ñîlfŸ®Wl,G�ٛüìmÿ³OW¹p&ö�þA_úêÑÓ]×ÂÖ<¢WÄ.{’JÕ—¶ý¯l¾ê=Í‹�ÞЛÃjÞë ·Š[õwßÿÙö$R<�ËÊ×¶³PìÓØäß}vZ}^o¸O÷ûìÓíÍá/k©ÊY¾lÓ?ÜTS�é½Á4ŸÓHzs`¾Ï>ÅÌVùpYÊ~$i^o0±³U9þ3%/oO#òeËó}YFôóªåõæðîL·òeõíd^×k¹Þ³Ëþì;设èìŸä5½¡ßMïÄ·)ºõSÊ÷æÀNoHUk:Óó}żjyzw&«o'óº^Ëõž]ög‰”’ûz}¥š^éÍ!gúKõÉ?«Oìô½Á4ŸÓÄÒ?è®ka{Ýÿ7ïõŠnåëKÛþW6¿7vzCª:ïDè·nýtÞ‰oS´¦3=OÒ›Ãh8S>MاW4¤Ï´\ïÙeöéKÛþWv2¯”×LËõž]ö§wgJ^·7‡Üzë$‰ô)yÕòô™OÛnn5½"£XÕjO¡·íÅNoP-û¼«îÿ›÷½9¬F±ÕkR-l½á> i6ØÖ—¶ý¯l¾¬¾�ÌË&’$½¹ÞœbyqRrFœI¢zs½9e‡äE±íS©*yÍ#ñ·ÎL_Úö¿²ù#•¼n:íS¾lÍiO9i‡µ¦:;½Ao°Þœæs'm[ÖûÛiõ)_¶¶�å™îÿ›÷‘ã‹#�"Êú!U?‰?’D1Óô†ä5ŸÓzsÚ¶¬÷·Óê;èKÛþW6_õžæu·i-÷³O©¾¢[Å‹S#éSòzCòâÅ©é ÷õ攼R}¶w™ÝgŸ^ÑÌžÞ`úý­>­É?•¼¾´íeóUïižDÙ!y�v«×îëÍiá¤äuWöå{¥*ϯ¿Øé zƒé÷¶úô¥mÿ+›¯zOóá_Ùö)UñÈä,I„”7òЛӭŸªQl«š}^¯(g:Ë—òÉ>¥¼¾´íeóUïi^ÿpëÌHzs½9‘æuõ¥mÿ+›¯zOÓvzC ŸÞ¾iMu¦¿¬¥ŽTòòᲬÉ>•ª7˜þrž·~ZSµCoNo°ªy„“Øi]õ6_·~ú‡[g¦7˜þpo«O_Úö¿²ùÊñõ7ÕTgb§7è Ö›Ó_ÎóÖo¼7×›¨÷¥mÿ+›?¹ÞÓ¸=®x�&êýÃMuò_ÎóÖ�Û½¹Þœjy6®x�&êdÿzÏûR©ZJª¯7×›i^W_Úö¿²ùª÷4%/æóiÂ>åøºúËZªFp3ÎÍȃÞ`Uó'±Óºêm¾nýzsú‡[g¦7˜þpo«O_Úö¿²ùÊñõ7ÕTgb§7è ¦¿œç­ßxo®7PïKÛþW6r½§q{¼7×›SvýAo0ýáÞVŸ¾´íeó•¼þáÖ™} }ª3½Á4ŸÓôо¢7˜ØeO"Q<Õßzszƒi>§iÛ²ÞßN«OwÝv?¾Þ�d^ÿݦ’×r½g—ýiÙåÙÿìÓ—¶ý¯ìdþЛÓ<ÂIÕìS-O“ja«äõÓ—¶ý¯l¾ÖË/áSÙzƒi¹Þ³ËþTªÞ`zwÏìõæäùþÙI¢ì`¢Þ?ÜT'ÿåïºòõ†ä•¼®¸ùÒ¶ÿ•Í×ã/¦¿œç­‰h÷ýƒÞ`½9Íé™ù4¢»íêýí3#éÍõæÄ¨†ëª¿œç­ŸÞMëAì´®òCa+ôwfºk©3±Ót×U”»¦O_Úö¿²ùª÷4OÒ›S•*å®éÓ—¶ý¯l¾ê=Mì´®:mÛÊ×̪íûL·Êö.[§yg¦[?½ÁjoN_òËzùºë*Ê]Ó§/mû_Ù|Õ{š'£/mû_Ù|Õ{šþR}ò/Õ™J^W>ÕÙj½9qÃ��°Ù¸¸™G8‰;7#ÅNëª/ùe½|•ºòu×U”»¦O_Úö¿²ùª÷4O"Úõž]öכӲ˳ÿÙ§/mû_Ùɼî6½;›Ù§ëåÃPޝ+nh1³L47ú‡»ïÿlëz½ÁzsʧíŸþáîû?Û*y½Áô¥mÿ+›¯zO#i^üjÙ–·­7ܧ/mû_ÙɼÞp_oNw›–ë=»ìOË.ÏþgŸ¶�7U éû¬äí‰3ËDë]åÖ['i7âf¤þáîû?Û$½¹Þœ²ƒ©†gζJ^_Úö¿²ùª÷4¯Å¶ÖTM׋mëªëå—û§:SÎÛ¬jMÕ¼’ïÍ)ô¶u×gûæV“¥7ØVޝm“¯÷væR�©lE"ÙTg$½¹~§y„“’WîzûTªæ�ÈñE¿{óàÚyÚ¶=Rì!ýƒRÕ wUòÊ]oŸJ+ÏF“{s‘ã‹ãžæs(û•:’DÓâŸJ^o0ýå3%¯jìƒrá“?ïºjÛyëó*yÍ#ò/­koNÛΛ*‰˜õ %œ zƒÉ—ýô—ó¼õSòÊïrŠ›xÉ¿»MÙRVÏ�r|°]Ól¸U·~½9ÑÖÎltë'R —bZlûRïºòÅÞé=«zƒi—ð¥jÊ—­±ëKù¼m«O9—ðÙö½9¥ª±ëKù¼m«Oë­³ðÎÌD*ÿÒº*o¶*ÕÏrÏ>½¢7˜nø†²UòzƒÉ—ýzsÚ%|©šRU<\l+’¶ý¯l¾FÄ#œ£¢H˜øtäA׋Tìëå/Å>åw95\Jª3½¢m“{sbïôLo0ý峃JýMwvS=(_¶Þ`먱Ž"éÍõæáÝO¼âíЛSœïËrÐ4yŸ¼¿áìjN x*Úzñæ´€§½9M“÷Éû; ïAäúîN…¤7§ù­÷»$½9�àVÎTŒœLÅØ¸u2·÷cKo®7790Ó[o1‚¼8Œj΀ӲËlßSÛ>•ªž9Û½ñ‚1`TCpœ–]fûžÚFI>•ªÕ(¶öÖ[@AF5Dà4âxÔ©®«þáîû?ÛË$z›gy•æ0ª!ŽæGš¬#êÁiÄñæ#eõSÉëÙÄÓ?Ü}ÿg»·Ñ AÀ¨†8Š>ÒdQÿN#Ž=R9[WýÃÝ÷¶{Ë2£0ª!ŽH�4YGÔ?‚ӈ㑎ÔPv:V껫ÞÍéî¾ÿ³ÝÁ £âˆãH“uDý#8�8ÇH­©šòfŸþáîû?۽ͳ<‚J`TC8ÒdQÿN#Ž`¤(¶_úïªwsú‡»ïÿl÷6çÁ¨†8ši²Ž¨§Ç›ŽÔ÷NwfÚöÂ]õwßÿÙîmžåTŠÃ¨†8Ši²Ž¨§Ç‹�Td>výÃÝ÷¶{›gy•‚Q qБ&ëˆúGpq¼€Fʇ9ÿÒ Mÿp÷ýŸíÞ"AF5Äqc¥NŸ­öLÿp÷ýŸíÞzcFɼ,gÕó,� ÒpZv:ïæëæÊ~ú‡»ïÿl÷ÆŒ’yÙ±Á¨†˜gy•NÞþR¿»ùº¹²Ÿþáîû?Û½Q#³²Â¨†˜gy•–ýbõS ß>å×ÂÖ_êÛeÕ?ìû?Û½ÍiÓ ™F5Ä<Ë#¨à4§<•ÕorÉOΧÕôwßÿÙî-¤Á¨†8¢ò�§3\_ZVÓ_ÎóÖOÞ–»ï+[ÿp÷ýŸíÞzceˆxF5Dà”+eµ[•¿«·Þ²<– Œj΀S®”ÕnÕÛ¡õÖÛ(¨†ˆ <.:à”»ÞTòò|ÿììm4BŽÃ¨†eâAqRTà˜±Ðá4!ÇÅž‹(ö¿²{c��¨†eâAqRTÔXæt8±ÎGu¿o›÷½E¦Ì( +ŒjˆQ&'EE�uNŸåo¸>E¦Œra>o[÷ûÌûÞ²4F5Ä(Š“¢8GEÑáôö­>Y}Zv™í{ên»ºß·ÍûÞ¦ µ/ŒjˆQ&'EE�=B‡S@sOÓ;‘ÎðÔ·Åt¿o›÷@l,G�è-&=$`TCŒ2ñ 8)*jìA:œšÓxŠ9˜­ºß·Í{މ�å½Mj,qŒjˆQ&'EE��•§€æ4ž¦w"�á©ÐÛÖý¾mÞ±±A¢7×Ûœœ!ÍÀ¨†ˆ¢‚8�FÈq}iÛÿD0Yù²õ—êËjJu _osr†Ì’…Q Ep��ãúÒ¶ÿ‰4`²òeë/Õ—ÕT·¼Þæ´iŒ F5DÔœ8�FÈqÍìiN x*ŠmŸJU ÏœíÞæt†4£bl¬tÀi4BŽënªúËyÞúiDŒ±“D�ìÍõ–a¦D&F5ÄXNç�HgxªÞÓ´Z�½¡7'2Ñ0ª!Æp:ïD:ÃSËõž]ö§Õêì ý8½¡ì²4pZv™í{Ê¿»Ÿ×`ÛÆ{ë \ç‚x–áe'®ð\ôŠü»û©äõ—Ïzë�42Ž/‡H�8D‚Ä!$GÿÇI“õ·ÎL_Úö¿²ùÊ—­9-à)'Å8ê _1‚¼8§£¨£ÃÉÑ�ŒÁé(êè0çÖÞðå0§MƒdÖÞzsÔrËb‰yš³Ä³ä)i@Ì(à 2¢.�Êë-ÃLƒñq|9Œpªá™³­’×—¶ý¯l¾ê=Ík±­5Uëm”`2âãøràTÃ3g[%¯Üzë$/oËÝ÷¥:S½§ùÞh1³Lô8¾Žb�§åzÏ.ûÓ»3ýÃÝ÷¶{›;½AW¢·9=3ŸFÆñåp� òÈpú‡›ªþrž·~=Ûgª÷™Øé ºÊ°Doø<ŽÛqœ¶ù§’×?ÜTõ—ó¼õÓÝv{sÔfzë�§Fãør ‚ À)_¶xqjʇõ©TQAEoD<›a¦ãør`eˆxpÊòX‚¢NëõOõž¦Rõ†äµ¦j½ÑbFX‰èq|9DNËõž]ö§üzg<®ØXŽ ÑKœGd¢Çñå8­VgoPÉ+ô¶õ¥mÿ+›¯zOëmÊP#2ÑãørˆœÎ;‘ÎðÔ—¶ý¯l¾ê=­·)�‰ðÆñ±8ÝïÛæ½J^_Úö¿²ùª÷4¥*Ï÷ÏÎÞ2ä˜f:Ž��(Àé~ß6ïUòúý­>Õ{š’W½§iMþõ–a™f˜é8>6¢§ž9Û*yÕ{šï-ÃLç™ì8>6¢§zOÓ_Âúl÷F:Ž��(ÀÉ—ýD¹;ÝÜj½qŒãc# pòe?QîN7·ZoÑãøØˆœ|ÙO”»ÓÍ­Ö[4CÇÇFàäË~¢Ü�nnµÞ²Á)m_Q€Ó³s)ûn¾ü+ûά·ÞâY†—Ç:‘@?DNþRLo0ýw]myùwÿI½á»â4Àõ?¬âYfp½a�HˆÓñ,3'o/\T­®òïþ“zs½Íébyã8) óÜ6�äÁé쟤7˜æ´€§¢Øö©TÕðÌÙî ÿ]WŒFÈqÀõ†³PÀÀé ýSÎtW­výSŒ±“Dõ†I{p½�ëÇ(‰äN¥,þ ÜýD±íS©½¹ÞæD|D„Áœà±Ñ€Ó¿ÚÝzƒÉÿÛ¬rï ÿ’ÀÊñ àzÃ:‘@?Ì ^|ž�ë =K68•ºò•òb›üPÂõë­7¬ ‘/N� *§¥¤úôŠxqjʇõ©TQAEo8) óQ€ÓWt«xqj��ãʇõ©ÔÞðßuÅh„œþ»®zƒi4BŽ÷†²/ÀéV¾¾´íeóUïi²úv2Ͻ7pÕcÈ�3Ì48Õ²X?ü°~ˆ�ò˜pâÛr�¿ÓRR}¶õо´Uïiz7·Zo½ab_0€SªéÝ53ÕðÌÙVÉëKÛþW6_õžæ{ƒ–i†™®·Þ0ñ3Žq: ÅäùþÙ©zOÓšüÓRR}¶õŠ"ÁÞ°N$ÐfJijpZJªO¯è ¦e—Ù¾§ê=Mkò¯· A&ÓÆñßuEt0›a¦€ÓÌž®¾´íeóUïi½�ë2r&8ÍÊÓ]WÕ{šï KèD')&Ï÷ÏN}i«ÞÓ´”TŸíÞ°N$DfJd¢ÅIœá” ÏEá¢5ù§¥¤úl÷†ï~ˆ®7,eApÚæ_Ù¦¥¤úl÷®sA† “i€Ói{ó'ÏÊä]Âúé¥Ózë-!g‚ãøïº"Næe'_öÓLõž¦5ù×[o " X磜8N3{ʧíŸrüg*yq“O«Õ{7½á_Žt8]åÖ['õ®c`‰3ÑAÀ‰oËAo°*?¶BgÖ›ë ëDý™2£,¬â$Îpúïú‡ë}¦7˜Bo[>\–5Ù§zOë '%aô8¥š^ºk:fzƒé/a}¶{s½ÅÐbÒ³ã8 Ìa 8ùIiÑj÷Ku&ö�žÉ/÷·Þð/ Q€“ÕO%¯¿œç­ŸÖT�{oà:–8œø¶È…­Ðß™õ†I8Òàt•[o�Ľ7pC49“žœø¶ô†IÈ2£€ÓÕ»9î½�«Ü€NЧZë-šœ�IÏŽ#Õ Ð'¾-ÍÊÓ{HÏä—ûÛA~RZ”^oà:ÄÐbÒ³€Ói{ó'ÏÊä]Âúé¥ÓzëmN@'hã8 Ìa 8­¥LÒ}ʧíŸþáîû?Û½á_ޏNì´~ÿÝŸ¨Ó`ëÒ¸Ž!Cf‰'¾-½á_Žb�'vZ¿ÿîOÔi°ué \Ç�!³Äƒ€ë­7–8/ÃLÇq ˜ÃpšÙÓUèmëKÛþW6_õž¦ÿYoø—„£ñ#Àé/k©z¶ÏTï+›{oà:† y>ŸF'¾-½á_Žt8åÖ['éÙ>S½¯lî½�ë¢ÉY–8p½á_²Ì(àônNÏö™ê}esï \ÇMβÄy€ë ÿ’8•­®«ží3ÕûÊæÞ¸Ž!šœe‰ó'¾-½!Õ Ð§Z;(ž‹ÂEKIõÙî ©nŒN¹ð\.úKXŸíÞÀu.`‰ó2Ìp½õ–!ÏçÓÈ8NJs(È#N¶¦3ÕûLo0ýÃMU9Ï[¿ÞàßÅœž™O#€ëÇé-šœe‰óÆq ˜Ã(à4³§7˜V«³7ô†²/À‰ÛŠâÞ¸Ž�%ÎD§Z;È…­Ðß™õ†“’À2Ì”ÈDÉÛ:ïD:ó7üç‚QÀõ®£L$ÃL'¾-½aJŽæ0 8Õ²ØA³R>Õ{Zoˆg°ÄyD&pò¯lÓ_Âú”/[ë}¶zëÍõæjakµwäåßÝOÿ`ÿ¤Tgzƒ©ÞÓäûS>Ù§;»©ú§7˜ÞÍ­Ö›ë ëDý�a¦D< §¥¤úôŠr×›J^kò¯7¬ ‘ë|TœÄNKIõé…Þ¶|¸,k²OõžÖNJÂè!ÃL‰L4œföTÃ3g[%¯¸ûþ϶×+úû'õæzË0Ó9=À8ÎBs˜NV?•¼ê=Mkò¯7üKBàz×1Œ2‘ 3œø¶”»Ÿê=M>\–5Ù×R�pÊ…ç¢åú§åzÏ.ûÓ»3ýÃÝ÷¶{Ã×sò”Æð§¿œËݦ«zOë \Ç0e²s:à4+ï]�÷ýCoXB? 8ùK1-%Õg»7¬ ‘C†™™h8åÂsÑrýÓîmõéKÛþW6_õžÖ¾û!¸Þ°”Ài›e›–’ê³Ý¸Îf:§œÞæ«ÚÄÓšüS½§õæzslÓ¬<½!yåï>hµwäõ·ÎLo0…Þ¶¨ŒnýôíD±Þ\oS&;§�c�H Xç£â$ÎpZJªO¯(ô¶åÃeY“}ª÷´ÞHåÖ‰¤ÀãG‘)3ʪ@*ç4+©Î”ê+ú,Ãõ)2e” óyÛ½aý.Xâ<" 8Íì)=¯Õêì ½á,ŒÀõæz›’c°Äyã8 Ìa 8Íìéêî¾ÿ³Ýü»ˆNËzSªúËyÞúiMÕzCª N¹ð\.Êïrj)©>Û½!Õ D§\x. ½¢¥¤úl÷†ïßœrá¹è+쪿„õÙî \õ¦ä,qà´–²(åUÍ>å¬7×&þa†À1NtBµ°µ”TŸ×+ŠLåÂ|Þvo'%az8?œží3ÕûL_Úö¿²ùª÷4±ÓÄÍ87ˆ�å½9¤::à” ÏEᢥ¤úl#pLl,G�è­7¬ßÅœž™O#€SòzƒmÓÕ?ÜTõ—ó¼õãÞþ%!  � ¸ÞÀu sÚtNÏNµ,Ö[o8)I�ÇŸâAš¹'¾-�áúÒ俜筟¼-wßWvoHuB�ǧ+�[rÊ…ç¢pÑRR}¶{ë ëDBä0§gæÓœÞý'©T½Áô7UýåÛ½!Õ D§\x. -%Õg»7p� ¦äóip:moþäY™¼KX?½tZo½ÍiÓ9=3Ž“’0=DNÏö™ê}¦7˜þᦪ¿œç­_o8) óÜÎ�f§¯è ¦¸©ö†“’­æõŠr¦!}ŸUî½á_Žt¸ÞÀu 2m�œø¶ô«ªEËõž]ö§Ó¼¿3ë ÿ]W�4^pZí)ô¶5©¶ØÃ}zƒ‰3ËDëîÖi·úÞðåpIÛþW6_õžæµl˧ û”ãë &nŽQ½aý.h1³L4àzÃ×4–ìp½á¿ë R‚ÆË®7|9q£¸ûþ϶Üw X{×ÃÑr½g—ýiÙåÙÿìÓ—¶ý¯ìdþè0çÖCTo2K<8Žÿ®+H / ¸Þðå0çÖCàzË�iÓxô8þ»®ˆÓcñ,àä‡ÂÖL_Úö¿²ùª÷4­É¿Þðßu)Aãe×¾æ¼Ázˆ\oà:Ì#¼`p½õ6�ð‚Ùq¬Ãú!žeæ§mþ•mzƒÉ¿ûOê ~VŽqý8Øö8ÆéÖOÛ^¸«^ÑLÿ¿ôæzsoH^»„/UÓ²S}^o0}–O5½TªÞÍ­F"Ò§e§ú¼¨ÇN߸­zOó½¹ûïâ½nýôóªåéK~Y/_·òµ\ïÙež¤7×[œ“ˆgÇqRæ‡(Àé_ín½ÁTïi¯©šþÖg»·Þ°N$ÐQ€Ó¿Úݪ÷4ý%¬¯7øaý�a¦óLp½õ†“’ÀX"œjyzƒi½þ©ÞÓTªÞ`ZSµÞàßÏf˜)àzë ëDý�a¦D< ×[oqzÌ 3Çú]LjD&pšÙÓLç�HgxªÞÓ´Z�½¡7œ…‚ѸÞp ˜ÃpzüÅôÓ»3ýÃÝ÷¶{ÿ$DN_©Æ½7ìcãÄ·¥7üw]AcÉΧZ;È…­7˜Þ�éî¾ÿ³ÝR�pÊ…ç¢pÑRR}¶{Ã÷oŒN¹ð\ôvÕ_Âúl÷Ö[†™Îé¼qœ…æ0œfötUïiú‡»ïÿl÷†³P<0€“¿ÓLÿp÷ýŸíÞ°~D<›a¦€SòzCòzƒi½þ©ÞÓTªÞ�¼ÖT�{oø—„,�%¸Þp ˜CpÚæ_Ù¦7˜þáîû?Û½�«C†L0ñ,àTËb½á_Žt8ñm9è Võ•zôôø‹éí›ÖTgÊ­·Nò½eÈÏŽã¯Ç@cÉΧZ;È…­ôzCª N¹ð\.ZJªÏvoøþ�QÀ)ž‹¾Â®úKXŸíÞÀU�!ÃLçtàtÚÞüɳ2y—°~zé´ÞzÃú]LjD&pÊ…ç¢B±-›xûêî¾ÿ³í{ÃY(=0€ë '%�9d˜)‘‰'q†ë >Ìapº•¯Õò�{oà:K6ÃL§Zë '%!rˆœø¶ô†³P<0€ë ßý\o½ÑX²f:Ž%ô耓¿ÓLõž¦5ù§¥¤úl÷†uX?d˜é<“œrá¹(\TïiúKX_oHutÀõ?¬2ÌtžÉ®7Lüà �cœü¥˜Òë ë°~ȰL3Ìpš•TgzE�¿˜ÖëŸê=M©jMþqï ß?:à” ÏE_aWåøâ¬l;¢˜få©TÓ+š•‘½á,0:àzÃ.ˆ®7pÕcÈszÀ©–Åúqp ˜¸Þ🠂€ë \õ2Äœpªe±ÞpR˜C–Çœø¶䇢ôzƒD<›a¦€ë-CÌéƱ”tÀi›e›Þ`ª÷4­É?-%Õg»7¤º1œ–ð©„O·–7ØV½§©T½!y­©ZoX¿‹ 3 Ƨm÷ìÓy'ÒžÜ{Ã÷o0€ë ÿ¹`¸ÞÀõ#:˜Í€ßÍìéª{MÕzW=†è`v4pªåi½þ©ÞÓTªÖT­7œ”æ�å±§õú§zOS©ZSµÞàßÏf˜)àz‹fG3Ʊ~£“ œjYì %|*áÓUÞØÊ­·Nò½á,ŒÀõFcÉŽfŒã¤$0‡#®7üw]AcÉÎ×¾cp½�«�%;š ¸ÞÀu.ˆÓcf˜)àä‡ÂÖLÕ&žê=­·Þ¢ƒÙ 1Ž“’Àæ<Ài ŸJøtU�½¦j½á¿ë Kv¸ÞpR˜Á ¸Þðßu�%;\o8) óCà”jzwMÇLo0Õ{šxMÕô—°>Û½á¤$0V†ˆ§mÞžÖëŸê=M¥jMÕ”_ï¬7øwAijf ¸ÞÀu.ˆÓcf˜)àzs½9æv _ªæ{s½9½!yù0·KøR5±ÓºjfOWõž¦ü.§Þ`ò|ÿìT„”'^œšÖäŸnýtŠ)½Þœ^ÑLó'Õ{šÖ䉲ƒé/•bûÙ§zOSòÊ0S"͉³þáîû?Û^©jµ:{á7'vzƒÞ`ʧíŸþáîû?ÛÊ­·NR¾lÕR'/×{vÙß§/mû_ÙÉüA·~òöôJoN´˜Y&Z)¯åzÏ.û³�DÙÁTïiJ^¹õÖIZî÷Ù§”W5û”3eS$¨m³äŸíÞœ’W-OþRìÓ+ºëZØJOžm¶è »„³Ao0y¾vªÞÓ´&ÿHzs½E³f:Ž%ô耓¿Ó¶Yò϶ï K茮·Þ¢³fÊyûâN©¦§åzÏ.ûS~½3މ�å½Á¿ ZÌ+ 8?6–#Hô†“’0=DNÏö™ê}¦7˜Öä_o½aýî"€“ÕO%¯5ùǽ7”}Á®7pC†™ò‚YÀ‰oKo½Áë‡ 9f†™NþRLõž¦5ù§¥¤úl÷ÖNJÂè!ÃL‰L´8‰3œV«³7¨ä• óyÛ±¬¡gåËÖr½g—ýéÝÙÈÞF32Ìt\'%az8Òà”[o�¤>½ÁäÃ’íÞ�êè€ëÇÁ÷oŒ®7pÕcÍÈ0SÀõÖNJÂüÀpòöôÓîmõ©ÞÓ´Z�½¡·Þ°ë‡ 9f†™NKIõéýáÞVŸê=M¹0Ÿ·ÝR�pÊ…ç¢åú§åzÏ.ûÓ»3ýÃÝ÷¶{ÃII=d˜)‘‰†Ójuö•¼ra>o»·Þ¦äf:Žõ»ˆN3{ºúÒ¶ÿ•ÍW½§éî¾ÿ³ÝR�@pÊ…ç¢pÑRR}¶{CÙ àdõSÉ«ÞÓ¸÷®cˆ&g3ÌpâÛrЬ¼wUïi½á_ŽÜàTËbÕ{ZÀËõž]ö'oËÝ÷•ͽ7pC49›a¦€ß–ƒÞ�)½Þp ¦pªe±ƒÎB1½ÁôwßÿÙî ©N€8åÂsQ¸h)©>Û½!Õ�9à” ÏEá¢?ÜÛêÓjuöý%¬Ïvoøþ�QÀ)ž‹¾Â®úKXŸíÞÀU�aJŽ‘a¦€Ói{ó'ÏÊä]Âúé¥Ózë-šœÍ0Óq¬ßÅ”¡Fd¢§™=]Ucë¼é ÏÞðŸ æ€ë \õG–‰¦ÅŒN“Ì•õë g¡€9̧If‹ª±{ƒS†‘‰\o½e™hZÌÈ8NJÂè�ÆÄ‰L4œÎ;‘ÎðÔr½g—ýiµ:{Co½aÖrÌ 3œ–’êÓ+ʧíŸþán•¼ê=­·Þ°~wÀifOÕ&žþáîû?Û½á_ŽÜàTïi/×{vÙŸ¼-wßW6÷ÞÀU�aJŽAcâ€S-‹õ†T'œø¶” ÏEËõÞ>¥×[oSr ÇúÝ D§™=]-×{vÙŸþáîû?Û½!Õ D§\x. -%Õg»7”}ÁNV?•¼–ë=»ì�{oà:†lY};™ïÍõçeyÁì8´í!pŒëÍõæ”’×.áKÕô—s¹Û¼Æ¦/mû_Ùɼê=ÍkD¾lù²ßÈÞ\oó)-ÃLDZëÀifOù´ýS½§õ†ÿ®+¦L2++àtÞI¦ôt«J>ïíõ†‰˜!pŒë ëDý�a¦D< §™=å®7Õ{šÖäŸî÷mó¾7|÷Cpºß§|ÚOõž¦’Ï{{½!Õ Ð§\x.Z®Z®÷ì²?½;Ó?Ü}ÿg»KèÐ')¦ôzÃ:¬8¢§™=yûKýTïi½á¿ëŠ)€ÌÊ 8�w’)=ݪ’Ï{{½aâfãzÃ:‘@?d˜)ÏÂifO¹ëMõž¦5ù§û}Û¼ï ßýœî÷ÉÛ_ê§zOSÉç½½Þ�êè€S.<-×?-×{vÙŸÞ�éî¾ÿ³Ý–² 8mó¯lS>mÿTïiZJªÏvo½aâfãäÙwÑRR}¶}o8) £‡ 3%2Ñpªá™³­’×?Ü}ÿgÛëýå\î¶ÞæSÚœÎÇúÝ D§™=]ýÃÝ÷¶{Ã.˜NþžÆ½7ìz �cœjYLÛ^¸«Øé ¢ÅcÊÛë ©N€8ñm9(ž‹ÂEKIõÙî ©N 8åÂsQ¸h)©>Û½áû7F§\x.ú »ê/a}¶{W=†ù”6§ó§ÓöæOž•É»„õÓK§õ†m�c\o®7§ì�¼v _ª&vZWyö]46Õ{šWªzƒ©ÞÓ´&ÿ4"_¶|Ùodo®·xLZ†™ŽcÖ€ÓÌžòiû§zOë ÿ]WL™dVVÀ鼓LééV•|ÞÛë ÿ0Cà×Ö‰ú!ÃL‰xN3{Ê]oª÷4­É?ÝïÛæ}oøî‡àt¿Où´Ÿê=M%Ÿ÷özÃútÀÉ_Š)½Þ°ëŽhÀifOÞþR?Õ{ZoøïºbÊ ³²Nç�dJO·ªäóÞ^o˜ø‡ǸްN$ÐfJijpšÙSîzS½§iMþé~ß6ï{Ãw?D§û}òö—ú©ÞÓTòyo¯7,eApÚæ_Ù¦|Úþ©ÞÓ´”TŸíÞzÃII=d˜)‘‰'q†S Ïœm•¼þáîû?Û^¯È³ïÒ[<&mNç�cýî"€ÓÌž®òiû§zOÓ?Ü}ÿg»7øw‘ Ni€Ó²Þß”ªž�KÙwóå_Ùwf½á,0‡)à4³§+o©Ÿê=Mÿp÷ýŸíÞàß�@pòì»(_¶òiû×Öï"œÒ§™=½Á”OÛ?Õ{šþáîû?Û½á,L àäÙwQ¾lyûKýzCª N¹ð\.ZJªÏvoHuÀ)ž‹ÂEKIõÙî ß¿1 8åÂsÑWØU ë³Ý¸ê1ÄcÒætàtÚÞüɳ2y—°~zé´Þ°í!pŒëÍõæ”’×.áKÕÄN몿TŠí§[UÃ3g[©ŠN(ÕWt«J>ïí)_¶Þ`ª÷4­É¿ÞœFäË–/û�$éÍõ6e�YYÇ1ñ3ŽqZ§ž9ÛJU‘`oøþ D§¿TŠí§ü.§r×›8ëEiD²q]*Ëù¸Ó+ºT6ê¸ÙÖ‰ú! pJ5½t×tÌôÓ_ÂúzÃII=d˜)‘‰'q†Ójuö•¼ìþƒê=M©jMþõãÄY¦dVÖq|÷Cp:ï$ÓL%Ÿ÷ö”ãˇç™ê¬7|ÿÆ(à” ÏE_aWý%¬ÏvoàªÇg™’YY§ÓöæOž•É»„õÓK§õ^0‹À1®7×›S¤èê/çrwò¥tse?¥¼ÎûþAùÖO9—»M»„/U;ˆÊ¨äõw{¥ªÜ¡7÷lâéýƒý“”ª>ÓˆT—ð�Ô­Ÿ†U#ÞÍ­6R)¯«ó¾8è˜í¢üzgb§uíÍåLÞžJ•M¤×›ëmNžÒÞ8ˆC ÀÍìéêî&é s† À2gâAÀ�w’ɇ۔ޑW¸,¶õ_o½a>¥a ¸°’ÒÓ�ÝTýÓ³‰×x™€zi†è½�4C ‘Þ™ó0Ú82aNžÒ^oà³½¹ÞœÞ�¼’×åÖ´®WùõRJ¸•ꚪiÙ©>í¾T�DÙÁ´¦jzE9Ó²S}öõæ”/ëZØ^o0í¾TMÿ]W]¯+o;™WÉ+2*ÿî³Óêó$Ê&ÿvª3MYâÙÞœr¦®«ží3Õûì#éÍõFJÐxÙqPËÒ ŽqÚöÂ]u¿o›÷šóJõщÞH AÇ”Ìa 8Íìéêî¾ÿ³­W´ìT_o ó0€S ×UÔÉê7¹ä'û·S�qï �” ñ‚YÀ‰oËAlSòúJµÞ0g4–ìpªe±ƒ–�êSz½�4C tÀ)ž‹ÂEo0-%Õg»7pLi %h p:moþäY™¼KX?½tZo¤�ÌŽƒZ–N pŒ�Pòª…­7˜¶½pWÝïÛæ}oà³ãzs½9Íìéêî¾ÿ³­WôÓ_ª/«‘ˆÅ›×—¶ýO¤“IijîêuUÃuíÍ)åU‹þáîû?ÛÚv?>Io®·è`v>Ž%ô耓¿Ó¶Yò϶ï KèD×–Ð\o8) ÁC++pòCa‹mbßútõwßÿÙî '%a~˜“3¤ÀéúIÊ—­ôzÃ×£rp½áÖ pòöÂE´xÌÞ°”£€Ó6ÿÊ6m›%ÿlûÞ°”Àõ†¥, ®7l{ãzs½9-áÓÕ?Ü}ÿg[¯è ¦¿T_V#‹7¯/mûŸH&“ˆ5mÿôöOòÊ—Ý›Ó$ãçÊÝŸR]ÂwPÊëêxq%/«Ï¶}áC¿XýFô«bßô¼òeëÖòÛ½9ýÃÝ÷¶IDš×ñæ*[Ç  äeõÙ¶O#n®ì7ò e—Ù¾§’×Í•ýì#éÍõFcÉÎDZ„~pò—bÚ6KþÙö½a ý€àzÃú£€ëÇÁú´xLÀÉ_Šé ¦¸ûþÏvoøïº ÑÁìpšÙÓÕ?Ü}ÿg»7üK52++àô¥O¡·-jdVV�8^|$÷Þb2¤Ùù8þcˆfç€ß–ÞÀu 1Òìpbßô”/[·–7ØÖ?Ü}ÿg»7üK3Jæe9N_úzÛº¹²ŸFo>’{oà:†y„ÌN|[zÿ$0£d^vl€Ó—>…Þ¶n®ì§Ç 0’{oà:†y„ÌN|[zÃRÐâ1§Z;hfOo0ýÃÝ÷¶õŠ–ðõ†³P<0€Ó¬˜×`Û”/[£r¼7œ”„ùaNÎ�Y²pZ§7˜þáîû?Û½á¿ëŠÑ9¸Þ°”£€Ó6ÿÊ6m›%ÿlûÞ°”Àõ†¥, ®7l{ãzs½9e‡äµKøR5±Óºj Ÿ®j¸®z¶ÏTï³OþíTgZJªÏ>½¢_tB¯è Ö›Ó_ª/«‘ôæz£±dãã8 Ìa 8-áÓ•;Õ™^ÑL©¾¬Öþ%!  � 8Yý&—üdÿvª3î½aCà'¾-½á¿ë Kv8Õ²ØA~(l½ÁôwßÿÙî ©N€8åÂsQ¸è/a}¶{×¹€Æ’�NKøTmâéî¾ÿ³Ý›ëÍ);$¯]—ª‰�ÖU©ÛOo0ýÃÝ÷¶•ªÞ`b´m–ü³­W.‹íÿzëÍõÆ2gâÁqÌi¤8bŽ÷—J±ý¼Ö¶­ÿz# ÓxsŽq©êê…Ëb[ÿõÖæ4Rt$NâÜx™yo`2¤ˆ +½7ð‚ÙÞzÃçA·N%Üòïþ“ä—û[oñ,30ŽÏcl€SY?ùwÿIZJªÏ¶fżÛÖ›ë-ÃL‰xv�ÇåT­/mû_Ù|Õ{šÖäŸü»ûy ¶­·Þ`õëm¬ æô€S-‹õãà,0p½á?׸ê1dˆ9=àTËb½á¤$0‡,�%8ñm9ÈEéõÿ.ˆx6ÃL�±útõwßÿÙî '%a~˜“3¤ÀéúIÊ—­ôzÃ×£rååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååÉ€É€Æ CPM2 1(Í|µ(ë*íR0 - ͯ2,<,Ã] Common base is above CPM2 RSX. Not loaded.$þFB‘L°. Æó €Øo0™ ¦Ap’pžÃÃCPM2 yþ<(_!45(à#45(4!"yþ 8Ï !v6ÿ#6ÿÃþ {2w¹þ8µ íS|­þ ©Í #|µ+È:‡·Èå:wOÍ‘á:c·È*tÉ· %:·(*d"í[#s#r!6+6+6>ÿ2É= :·À*"d`í°x*d#s#r!í°*C".!H3í°!`Kí°!lW í°>ÿ2!"1Í "†É]:· 1Ð !$ Í >ÿ2ÃÍs >ÿ2v2€ÅÍ0Á|µÈy2v¯2c^#VíSf pí°*†¼*p0&åN#F>Ík íCh*t"jˆíStí°=2cá^#VíSl!fÉÃxÃ8 Ã�Ã; Ã@ ÃE Ãæ Ãí ÃBÃJ ÃÒ ÃØ ÃÞ Ãà ˆÿÿÿÿÿ~#·ÈåOÍ!áô [CPM2 RSX active]íCxÉíCzÉíC|ÉÍs *x|µ(:m·ÊE¡2„:lÍk ÃEi`ÉË8Ë= ùÉõ:‡· ñÉñã"� áísÐ 1Ð õ¯ÍfñÍõ>Ífñí{Ð ÉÍs ÃZÍs Ã]¯ÉÍs Ãi>2…y2…¯2~Ís íKxx±(:l· (Í3íKzÍ6íK|Í9:‡·>Äi:…O:~·Ê?Ã<*:v½ f*€íKxíB [íKz*‚íB P:‡·>Äf!:„·(G€ý€í[|:~· ëí°·(¯É:‡·>ÄfíK€Í3íK‚Í6Í9Ã?:v2íKxíC€Í3íKzíC‚Í6Í9Í<·À‡€@@ "!„€�€’@H H ’‘ @H‚$$’I  €‰"I„„ $$ ‰ ‰A"$�D�� "I "$D’@åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå Jim Lopushinsky March 22, 1984 CPM2 is a CP/M Plus system utility that allows execution of CP/M 2.2 programs which directly access the BIOS disk system. This is the first CP/M Plus utility that I wrote (about 1 year ago). Its purpose is to allow execution of things like UNERA, FINDBAD, NCAT, DU, SORTDIR, and other CP/M 2.2 utilities that would blow up the CP/M Plus system. CPM2 has an attached RSX that is relocated just below the Loader. It intercepts all BDOS and direct BIOS calls, and performs sector deblocking for CP/M 2.2 programs. BDOS function 12 returns 22, so any CP/M + programs that check the version number will not run. In a banked system, the RSX must load into common memory, so there must be enough common memory below the BDOS base (about 3k) to hold both the CP/M loader RSX and the CPM2 RSX. Physical sectors of up to 1k are deblocked. On each disk select, the allocation vector is copied to common memory (maximum size = 512 bytes), so that CP/M 2.2 programs that calculate disk space work. This version requires a Z80 processor. To delete the CPM2 RSX, use CPM2DEL. Enjoy!! Direct any comments to the SYSOP at the Meadowlark RCPM (403) 484-5981 @ 300/1200 baud. åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå<ÃÃÀpð"°À àžåååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå Jim Lopushinsky June 24, 1986 Here is a complete description of the fields in the CP/M 3.1 System Control Block, as far as I can determine. The undocumented fields were discovered while dissambling the CCP, Resident BDOS, and Banked BDOS. Digital Research documents the SCB as 100 decimal bytes, but in fact it is 152 or 98 hex bytes long. The SCB occupies the last 152 bytes of the resident portion of the BDOS (just before the BIOS). It begins at xx68h, where xx is the last page in the BDOS; therefore, offset 62h-63h (top of TPA address) is at xxFEh, just before JMP BOOT bios entry. The address of the SCB can also be determined as follows: LXI D,SCBPB MVI C,49 CALL BDOS ;page address of SCB in reg H | | SCBPB: DB 3AH ;this is where SCB address is DB 0 ;get operation To access a field in the SCB, use the above code sequence, then load register L with the field offset as determined from the table below. HL then contains the address of the field. To accomodate RSXs that modify the BIOS character I/O jump vectors (GET and PUT RSXs), a second jump vector for WBOOT, CONST, CONIN, CONOUT, and LIST are included in the SCB. Only the banked BDOS uses these vectors. Each entry consists of 2 3-byte entries which are normally jumps. An RSX can change the first JMP to an LXI H,addr, where addr is the redirected address of the particular routine in bank 1. The second JMP always points to a Resident BDOS bank switch routine which switches to bank 1, calls the routine as loaded in HL, and on return, switches back to bank 0 and returns to the banked BDOS. The banked BDOS always calls these 5 BIOS routines via the SCB jump table. This feature can be used by BYE RSXs for safely redirecting console I/O in RCP/M  systems. OFFSET TYPE Description 68H inst. Warm boot jump vector for the banked BDOS. Normally a jump to the BIOS WBOOT vector, but can be changed to LXI H,wboot-addr to redirect Warm boots to a routine in bank 1. 6BH inst. Jump instruction to resident BDOS bank switch routine for redirected WBOOT. 6EH inst. Console status jump vector for the banked BDOS. Normally a jump to the BIOS CONST vector, but can be changed to LXI H,const-addr to redirect console status to a routine in bank 1. 71H inst. Jump instruction to resident BDOS bank switch routine for redirected CONST. 74H inst. Console input jump vector for the banked BDOS. Normally a jump to the BIOS CONIN vector, but can be changed to LXI H,conin-addr to redirect console input to a routine in bank 1. 77H inst. Jump instruction to resident BDOS bank switch routine for redirected CONIN. 7AH inst. Console output jump vector for the banked BDOS. Normally a jump to the BIOS CONOUT vector, but can be changed to LXI H,conout-addr to redirect console output to a routine in bank 1. 7DH inst. Jump instruction to resident BDOS bank switch routine for redirected CONOUT. 80H inst. List output jump vector for the banked BDOS. Normally a jump to the BIOS LIST vector, but can be changed to LXI H,list-addr to redirect list output to a routine in bank 1. 83H inst. Jump instruction to resident BDOS bank switch routine for redirected LIST. 86H-8FH Unknown. 90H word Bit mapped vector of drives with open files. 92H word Bit mapped vector of drives accessed. 94H-97H Unknown. 98H word BDOS entry point address. 9AH-A0H Used by directory hashing routines. Use Unknown. A1H byte CP/M version. Contains 31H. A2H-A5H 4 bytes for user use. CCP+ as written by me uses offsets A4H and A5H as follows: A4H byte Bit mapped: 0-4 Submit user number+1. 0 = use current user. 5 reserved. 6 $$$.SUB needs to be erased by the CCP. 7 Directory name display flag. 1 = on. A5H byte Bit mapped: 0-4 Load function user number+1. 0= current user. 5 reserved. 6 PRL file load 7 Library member load. A6H-AAH Unknown. ABH byte Submit file drive. ACH word Program return code. AEH byte Base page of RSX containing the 2nd of multiple commands (next to be executed). AFH byte CCP drive. B0H byte CCP user number. B1H word If non-zero, address of 2nd of multiple commands. B3H byte Bit mapped CCP flags: 0 Submit flag 1 RSX flag 2-5 Unknown 6 Set CCP drive/user to current drive/user. 7 Chain flag. Next command is taken from default DMA buffer (80H). B4H byte Bit mapped CCP flags: 0-1 Display command source drive/user. 2 Unknown 3-4 File type search order: 00 .COM only 01 .COM, then .SUB 10 .SUB, then .COM 11 .PRL, then .COM 5 Reset disk system 6 Reset page mode to default 7 CCP is executing (used by ^W recall) B5H byte Bit mapped CCP flags: 0 Unknown 1 Cold start flag (0=cold) 2-7 Unknown B6H byte Console width B7H byte Current console column position B8H byte Console page length B9H Unknown BAH word If non-zero, address of redirected console input characters. BCH word If non-zero, address of next line of redirected console input characters. BEH word Bit mapped console input physical devices. C0H word Bit mapped console output physical devices. C2H word Bit mapped auxiliary input physical devices. C4H word Bit mapped auxiliary output physical devices. C6H word Bit mapped list output physical devices. C8H byte Console page mode (0 = page pause). C9H byte Default page mode. CAH byte Ctrl-H mode (backspace). CBH byte Rub/Del mode. CCH-CEH Used by console routines. Use unknown. CFH word Console mode. D1H word Address of 128 byte buffer in common memory. This buffer is used only during BDOS function calls by the system, so it can be used freely between BDOS calls as a scratch buffer. Also used by the BIOS during warm boot. D3H byte Ouput delimiter. D4H byte List echo flag (non-zero = echo console output). D5H byte Scroll flag (used by console routines). D6H word Address of System Control Block. D8H word Current DMA address. DAH byte Current drive. DBH word Current FCB address (in common memory). DDH byte FCB error flag. DEH byte Same drive flag. DFH byte Current BDOS function number. E0H byte Current user number. E1H word Last directory slot number accessed (first = 0) E3H word Address of FCB for function 18 (search next). E5H byte Function 17, 18 search type (0 = ? in drive code, 0FH = normal search). E6H byte Multi-sector count. E7H byte BDOS error mode. E8H 4 bytes Drive search chain. ECH byte Temporary file drive. EDH byte Error drive. EEH-EFH Unknown. F0H byte Drive door open flag. F1-F2H Unknown. F3H byte Bit mapped BDOS flags: 0-5 Unknown. 6 Single allocation vectors. 7 Expanded error messages. F4H word Date (days since Jan 0, 1978). F6H byte Hour (BCD). F7H byte Minute (BCD). F8H byte Second (BCD). F9H word Common memory base address (non-banked = 0). FBH inst. Error message jump instruction to a routine in the banked BDOS. FEH word Current top of TPA (points to entry in lowest RSX). If anyone has information on any of the "Unknown" fields, please let me know. Jim Lopushinsky Meadowlark RCP/M+ 403-435-6579 (300/1200 baud) ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååvÿ‚žSAPP12.ASMY öÿ ßÿòÿõÿšÿ! Äÿ‹ÿ"�ÿ#¬ÿ$³ÿ¾ÿ»ÿ&%'�ÿ(­ÿ*)·ÿžÿ–ÿ+Œÿ‘ÿ,¼ÿ°ÿ-«ÿ.œÿ¶ÿ²ÿ/ºÿ›ÿ¯ÿ01“ÿ2±ÿ™ÿ3Óÿ½ÿ4Šÿ6587©ÿ§ÿÅÿ9�ÿ:Îÿ;¸ÿ”ÿ<—ÿ=ªÿ>’ÿ˜ÿ¨ÿÍÿ?µÿ¹ÿ�ÿ´ÿ†ÿ@AÏÿB¥ÿCØÿDˆÿFEG‰ÿHÑÿIoÿJÒÿLKÊÿÐÿÂÿÌÿ®ÿMüÿ‡ÿÀÿNOÔÿ¦ÿPËÿÇÿQ…ÿRÛÿSÁÿÖÿTûÿ×ÿÉÿÈÿÝÿUÆÿVŽÿÕÿXWåÿÜÿÙÿÿþÃÿ•ÿi5‚ ÝÑ +?býǼÚBs\qˆ'È,ÛÇ·…žT¯�aêOŽ\ü䇟 NÄ ®Úr'âoeá‚g«Ûi›ÿ¸Áß‹Cþ~wîºs©ˈá´… žý­ŠýVĉ þ­,\ðìoe§…CзÍÿŠ<ùì ‚ûÁ¸àéÇòç>ðtÄV §´ß?¯êŒ }?ôcûtÈŸ{!p/dᆊÄV §´pF ¸ÃöÏŸ'®ª,Ÿn»“7ÿ+<ñ±S±uoá‚gÃÔG>d§Õ'oþ·ì¿Æç8vº¼Ý ò·>xˆq‚«¶ÜĉøŽ+má‚g««剉¸}-\ðlu<cè.…¯… ž û@;­>xöl =©ìÅåG] ݉›Û»… žýD;„ëF <{ä ;íWz/dì䇸åúBöqíƒ<ü=±l¶pÁ³ÕÑDœˆ\µå&NÄVP+ûá?¬n§…ÿ°úþ Á/ž=jt�ó鈱«`˜ºúDœˆu�Þ¢dY­¡›.PÛè´ÏÝÙÿ÷Úo—çHìIéPBoAl|÷G� hGÃÊ«/LýÉ‘‹Ÿüðoí{“Í7uâD¬Tr‹¤´ŠgˆØ-’Ò/ÆáKìIéV èKìIi]½±[$¥!Ô6»ERzüÅáKœˆÝ")Jè-ˆ�ïþˆÿþ|¼µïM6ßÔ‰±P‹’›Èêjá4Ùiÿ>�ã寣úÿLœˆ\µå&NV;Êîû_óПŽ8'â´ú€'È+pç^Ü ž9Ÿ�÷1ÏbèNœˆµPÄn‘”¾ãJÛiõ¿jt=±l?Þq¥?îã�+Æaô!NÄZ�X7–¬ dY°n´ÓêüdzÝO��¸âЉ­ ä{û ;­>yÛ�gl‡~ïa¥¡;q"¶R �nêvÚæ!vyƒ÷ÎcÄÖ2^`§Õ'¯°ñŒíÐï=¬4t'¶R �nåb§½‡•Þǵòð÷Û_/U'»ERº~+m§m¡'•½¸ü¨Ûð™ØJU3ºMÄ®^di§m?OÜÇw’©» ÞB=,ì´\‡¼Ãc»ž ï‰ñ�ĉØJU³pSì´€“wÅxºnÿÇŽ Îyó¬±Ãoݱ•ªf|Sˆ]o'±õ$±_¡-îÒN«çÑgGç¼³(ÆÓuĉزzºÁ`vÚêñèNÞü¯Ø ÚYãé:bc„�í´“¼h’jÂ`ÄVªšÑM±ÓNÞYŒñtÝþ�ÅÐ}‡>ÿ;Ib‡ßº'b+UÍÓM!¶RÕ,oÈN«ÿk ÎýN’زß0t·ÓâÓ塟óð÷ wÿk\ ݉-ë¡ï7 Ý¥ðuZyú±ü¹ÿc1t'¶Äákµ£¤½ƒÜËô!NÄ–YV¬í´€“·;à òW: ±[(ô„^Œí´Åéò�ýœ£¸âЉý~á­v”´ácû?ß6ž|�=±•Zht«!ùü¶N 8yGÏàõìã�û¶û([ÈÍ¡”0§Õù�g‡¼Ÿ'b+µÐè¦þ¡ÉNÛ<ÏŽžÁëÙüo—ÿxvè¿ ±u�Œ_EM˜�¶ø·ûüŸ.xºnÅ!ž ÿ±lƒ¹a†\FìW(ˆq"NûžY|òiòYqˆ'È,Ûø_óПŽ8¿‡oÉ-’Ò¡„Þ‚Øøîö½Éfbã»?¾goûñ¦î´ð'þût¼C¿hã#vÓk\áð%NÄã/ß’%FþVzAÄ®^dDì¦÷ ïñ‡/ŒØ-’Ò¡„Þ‚Øøî�p†â�Ûý1Q ûñ¦NœˆÇ_¾°’[$¥C ½±ñÝÇã�Ïm?ÞÔ‰­ÔB£ÌN ]óÂvèmþ¸ñÌâ“Oã�±å$±5ºxí´€“·¿^ªNÜÿ±]Y—Ïåæ8ÀŽØz’زo£�VŸ¼ùólŽs$¶¬‡žnêÄÖ“Ä~…¶z1±å$±ñ«Øi¿×KÕ‰û?Vâ òËöô9§#vø­{²Ó¾œó0úlþFìIé·*ÞIÚiñ0zϪÊöCÄn‘”~«â�¤�¶øwìä…�|®ª,Ÿ�'ø£¸Áí3±õ$±qø¶ß‚زzºÝŸ›í´€“Wu}ÀÿémU׈ÍÿögÔLœˆ-'‰-+@ñ6Úi'op�ñôysœ ±ÃoÝ“�6ìƒx.OŸwÈÄÖ“Ä– xí´úäÍŸgsœ ±e=ôtƒÙißótèÅ�'ø£¸ýõRu"q"þVÅ[ÕJn‘”ÆÕ+´vZ}ò×OŸ7žà�"±%F›%Øi‹áòlþ÷1Œ]ãÙÿš‰]½ÈÈN>öéÙ9ž�g‡~ŒØMïÞxü-ì´UܧqÈC?FœˆÝ")ý Ûiñ¿ùól<³¸Ä®^dd§-N—÷ÎcÝþýÆ3‹Änz¿ð~…÷­^;íþ¢ã‰ÝôZ©^ÁN øqã™ÅÛŽý+þ{ùÇCœˆÓŽÇ!âDŒÇߢd¥º½Áì´ÍÜzRÙ‘ò#+øÀ¡Û{Xé�±[$¥Çß°ˆ]½ÈÈN[œ.ïœÇºýû}‡|ˆÝô~á=.¼oõÚi¿ð©fqÅ!ž ÿ±lŸÆ!âDœðÿâÆ3‹ûÇ}‡|ˆ±R½BÉr’ØXA¿vZÀÉ‹´³(ÆÓuÄ–õÐøöaõÉN‹Dqa#^UY>Ýæ‡LlŒ°±�¶ù�ÛŸQó6Ì]Gl=Il¬ „_bËIbãðm¿…�¶ý¯}ÿ§ýž>ÇátÄÆmݱõ$±qø¶ß‚ØJU3ºMvÚâtyÜžø/x™ØÕ‹,‰Ýô~á�ÃWV��VþÃæ÷ƒ'þĉزzº}X}²Óâ!ž ÿ±lÃ'«ÿþÜ6žîäÅ ÚY#±õ$±±‚~í´úä/gb¿BAœˆñ+¼oõ–Ü")Jè-ì´íyöóij¿ñÌâžÿHl|÷G5÷=³¸'Æ?®šoí{“Í7ub7)�…zX'âqá}«·äIéPBoa§mÿ˳Ÿ'žýû}‡|öÄøGbã»?ª¹ãqÈgOŒ\5?ÞÚ÷&›oêÄnR õ° NĉW¯Ð–¬'‰ý mõb;í{‚?Š{mç|ˆ­T5ßo±•ªæö&‰-'‰ý mq—Ä®·€Ø¸­ûNìIéWh‹÷Kl¥ªù~›ì´Ê?úˆ›ÿ½ßVuÍ{í¯Ý‰­T5£›$¶.�eÐBk§Õ'ow‚üGb¿BAœˆq+ô-YÖCO7u;m¸­:q"nåWVPÉz’Ø!±[$¥Ã/êvÚIîE{n^5ö«Æ[©jF7ÅNÛt½lØá±ùsèvèv^ñ€'qxˆÝB¡Õ…'&b7½ðn¥|aĉØ6 þ­ˆ-ë¡ñ 6BlŒ°±�v’{ÑNrÕ\ر•ªftSì´íç €{FͧÏû(»z‘±›Þ/¼[yV ;­ ;<¶ÿóžQóéóª;üÖ=Ùi¡èóæã þ(nð_û¼�á€"±Ãoݱ•ªftSì´€“W�¬ª,Ÿ…ó5Ÿ^<â¾­ˆ�¾¡Õ›';mó·…žTv¤üÈmÕ÷ñÇm¡'•…•ÿ±•ªfᆈ~랈­T5£›b§m?OÜx‚?Šü×>ïc8 HìêEˆÝô~áÝÊû³Ùi›®— ;<¶ÿ{¸<ñ'¶œ$vh§mÁ3Ç�Ap/YUY>Ýþb·HJ‡_,Ôí´xˆ'È,ÛÓçX¶ù_á b‡ßº'b+UÍè¦Øi'ïcˆ]ÞàsŽs�OÜÿ±�<ý|yˆ�Ûº';­‚tQ¾EÅsžÁlâ?çËŽØ-ú#Ü�vÚi}V:`?_žýûÁÿO?–?‰Ýô»•÷g²ÓŸsÞ.Ï1ïÓ!îG¸o+þÛÿyÅž|ˆ½Â‡ÍV;JZ,Hø·"NÄÞ°ÙߪX,Hø·"vÓëVÞŸÈN‹ÿþc^ñ€'ŸÍŸC·�<Ä^á‹Ãf«%í·* þ­ˆqs(å +Y©…¾ß`²Ó~¯—ª÷¬ª,ŸŽ¸9”0 •¬ÔB+7uá‰ÉN«ÌÀ³3®ðÄGMìð[÷DlÜô…ws(a"NÄÍ¡”ïHÉJ-´rSž˜ì´Ê <+jb‡ßº'bã¦/¼›Cy±„ˆq+ïÏ T²Ä6~;-àä þkŸ÷ìcO?_žŽØá·nl§ û žËÓç2±å$±C;mu�\c<}Þà¿ö™Øá·îÉNöA<—§Ï;dbCÏzòDìIiý|Ç‚�V_U9ÎA&6TAžˆÝô¶nåWV��VþÃæwÁ À3÷G$ö+ĉ8§ÕÌ›?ÏŠCÀyl‡~ƒ¹;ÛÜî�ùˆÄn‘”%ôÄÆwÔÌ·ýxS'NÄiõçA¸ÊÉìOÜî�™8[N;$vø­{"¶ž$¶þ¾B;NlY=ÝîÏÍÄÖ“ÄÖº@ø%6ô¬'OvZÔ‹Ûͣϙزzº]Çátå‰q[)Ð +YbT7&6ú†þÀæ‰ØÐ³ž|'6ô¬'CzœØJU3º)ÄFßÐØ<[©j¾ß±¡ 2¤Ç‰­Ÿï¾ª ߉Ýô~áý­ á‚gb‡ßº'b‡ßº1±q[÷�ØJU3ºÝ‰]½È-±›Þ/¼ÛJ�^±›^õx;'â´ÅçÙàïÅ!¿sÞoU<ïçÜmþWu6øœû±#îã�+ž.8½8ôcÛý1'âoU<—Üô~[õx;[©…F7±u�ü­ô8‚ˆ U�';-àäUÍpóçÙYãéºÓíÿØüyVuƆ¾ú±ýĆ*ÈØN[|žîìÈŠCÇátĆ*Èw;-êÅÍŸgûë¥êÄý«*˧+OlèYO¾Ûiå™GŸÍŸC·¿ùól—çXž8ëñ°h§’¡g=ùNl¥ªù~Sˆ-1ª[©jVnˆØJU3ºÝ‰­ T7&vø­{"vø­ª ߉�ÛºïÄVªšÑíNìêEn‰Ýô~á­Çâ�ˆ-'‰­¿¯ÐŽ[©jF·‰Ø­‚ˆ­T5ã"¶RÕŒn’Ø­‚ˆ­T5 7Dl9Il­ß¢#6FؘØMï·õW�·ŒØá·î‰Øz’ØZ¿E Fl9Il­ß¢v1±ëí ¶œ$¶ÖoQ!¶RÕŒn±õóÝ’ØJU³¼!b+UÍ膉­ïwOÄVªš§"¶ž$¶ÖoQ»˜ØM¯ÛJ�^âDüÕãíT2TAžì´-xæ~¯ ›?Ïvy€å‰ U�';-êÅ�Çæ¡/OüÕãí+YN[ëá—Øá·î‰Øz’ØZ¿ÄÖ“ÄÖú-j0b×Û @l9Ilý ­ü[©jF7Ilý|·@l¥ªÝ&bëûݘØM­qX ±@l9Il­ß¢ö!bCdLlèYOÆÄÆ»ÞNbËIbkýµb×Û @ì&òW_a„8'bµ�%Ëzèé¦n§ ÷¢U'NÄja%ëIb‡Än‘”¿X¨Ûi'¹íý¹yÕ\جoHlY�oåBlŒ°±�v’{ÑNrÕÜr!¶RÕŒnŠ�¶ézÙ°ÃcxrYÃÙþÏû±~á $¶~ýQý#±›ÞÖjGˆÝB¡aêÄnz¿­!Ô6Ž[ÈMÄ¿uOÄVªšÑM!v …þxá�Änz¿ð†PÛ8Bìð[÷Dl¥ªÝb·Pè�þHì¦÷ oµ�#Ä¿uOvZ}òžQóéóö×KÕ‰›ÿ•Ø#7[©jVnˆØ¸­{²Óê“÷1€'—5œÍÿ~¼°ÚQ>[©…Vn/ü‘ظ­{"¶R ­Ü>^ø#±q[÷Dl¥Z¹}¼ðGâD ¡¶q¤d9IìÐNîE®š #vø­{"v½�Ä–“ÄÆ¯Bìð[÷Dìz;ˆ =ëɱ[$¥õó Ć*È“�VþÃ^û<€n¹¿ ±›ÞÖjaÄ~…‚8'âð‹…zÉaOÄÆ{"6Fر1žˆ�öDlY�o÷çfbc„�‰ý q"NÄi¡8ôyçírú±Ò.Åxºn‡nÿ~óß°ÿc»<@âDJè-J®“´ÚQÒNÞYãéº}Äÿr»<@b+UÍè¦Øi'oð9Ç9È';üÖ=Ùi¡èóæû3jÞYãé:b׋IZí(ißÓå?žÍÿvy€Ä®^dd§EñìÓ³âߟrˆýÂ[í(iá8ÝmãÉרoÃÜåírú1bCÏzòd§ û æîl{+½ø«T'v;db+UÍ ÙiÛÏ9ÎA>q󿱕Zèö6b§mÿ¾ûÁ³ÿ5ïãÚÄn‘”¾ãJª OÄnR ‡z ;mû÷y诇8'â´x=ˆg'¹ª²!NÄoU¼“,¹z‘‘�¶Ï7˜c,#¶RÕŒn±_ô[©jžnˆØJU3ºIb¿è%¶RÕ,oˆØ¯P'âD¬ŸïX(Y©jF7i§ÕWUŽs�‡¿ßòjG™ä^´“„‹bëç»b+UÍò†ˆ­T5£ÛDl}¿[©jžnˆØ¯P'âDœÏyÞ9ž™8ãðm¿EÉX{„8,k�7•ŒµGˆAÅ[2Ö!þVzA%cmñ+´Å]–ŒµGˆ_¡­^\2Ö!›%”ŒµaÄúZù-k�k] ü–ŒµGˆµ~‹¬d¬=B¬õ[ÔFJÆÚ#ÄZ¿Eíâ’±ö±ÖoQûPÉX{„X_¡/k�'â´xè€Û0ÇùòäWþ�8cè^"ÖPQ2Ö!¾ë©d¬ #¾K¥d¬ #êJÉXFŒµR2Ö!ƯR2Ö!FR½d¬ #FV2Ö†·�ºd¬=B¬áÐÅÛX2Ö!†ôT2Ö†Ùi¡Ï²nfp»Ïá‘7ø¯}&†´R2Ö†Ùi¡Ï²nfp»ä?îå܉q‚«¶Üĉ8íû_óПÍÿ3®jî�GÜ{Xé�ÿ5ýévô0ïWz×>ÈÃßïêå‰Ó"\qè€>Ym0ƒ`·s<{9‹gógü¯cŸûyâ)Oœˆë÷°Ò%ëùVºÛiõÉ{+½�käáÔB··'Ôí´xˆ'È{+½Á ‚û¸öAþžØ²ßîa¥¡»ÓÞÃJoÃçË“O\ø@b7)�ï¸ÒvÚ¦ëeÃæï¸ÒĉøVº—ŒïV·ÓÞÃJïãÚyø{bô €’ñÝêvZ´ñŒ]»|"ñ½}@ÉxÜêvÚ{»ñŒ ]>‘ ¯(�[ÝN‹…�glèò‰Ä“|@ÉxÜêvÚInà>=Äi�ýÿtóçنϲnfp»ä?n½T�X~‹Ï¡Û§vûú³s·àß�íÜmþ<Äiâ?çËÍñÚånóçÙ{XéÍÿŠÿæ8÷8çáïËïêÿòlCüÇâ|Ùí§ëˆÓæÏ³u‰ŠÍ³ <+ñ,Ûü¯øoþ�?¶ƒxæ�Uÿ5¯8tÀí€ç骮y‡¼ÝçÅ ækw¶ÿ÷sŽ—å‰ñ+´Åû-Y©j–·ÖNûž|�ýv'ÈÜ¡ßI[©jžnwb¿BAœˆÓ¾g7žíx‚|Äm¡'•íN�ÿXž8¿Â%+µÐè#¶.�_á ²Ó¾g÷o8qÎÃß;ü¾FvZtÑÈÂùi¼Î ˆ­ äñ·€ì´E÷3þÁªÀ?–Cì¦÷ ïvj|þ"âDœv<ùlþ÷1Ä.ow‚üÇý{ígüƒ9qUàË'bKŒ,Ô;-àäU�Üîsx作; ±Ãïkd§Eâ…zíòŽžÁë!¶.�Ÿ¿¨ývÚç~Á?Øx‚?Šü×>[bdY°n´Óê“÷Ú°£gðzº}ü‘غ@~þ"¬í´ãqÈC?¶ùß¹ßk?ƒàÌùˆÄ–YV€âm´ÓÞÁ?[ÈÏ_T¼�Ä–YV-´ÄÖòói¡%NÄíÔøüE%KŒüüEí·°Ó¢¾l¯ý ‚°Ý ò;bW/2²Ó†ýæÏ¡[ø@b7½ðFRV­�V‡†Ûÿ™Ø¸}�ì´pá^û9è3±u�üüEí· ¶ÄȲ`ÝHlY=Ýž¿ëFb· dÅN+ÿ1±îE{íg±n9Änz¿ðFRV­�V‡†Ûÿ™Ø#Ë P¼�ÄnÈŠ�Vþc9÷¢½ösŽÀ-‡ØMïÞHʪµÓjàаÃcû?[bdY´Ð[ÖCO·ç/ÒBKìV�¬Øiå?–#p/Úk?w'ØrˆÝô~á�¤¬Z;­ ;<¶ÿ3±ÃïkÅN«ü£Ïæû3jÞîù�ÄVªšÑM!¶¬‡žn*ì´Hãþ�í2±[²b§Õ'ÈÜro×�·b7½­¿UUk¶ÓjàаÃcûÿÑ'>Àÿ)±å$±Ÿ¿¨x‰~랈­'‰ýüEÅÛh§½_/6Ç9»þ"#bëùù‹´ÐÚißÓ�¼Ý ò7ø¯}&þVU­¹äú‹Œˆ­ äW7K°Óâ¿ÿ˜·!¸ñÌ"±›^¿ã$¼vZèÄÇ/÷iò!NÄHʪ-¹þ"#;í{Ôè:ÄÓmC«º>'¿ãB=,J–Yx›%û âDœpã™Åò»í ‚«þnó¿�7žU]�÷é�?÷ïÏ6|–uC0ƒÛ� ÿ±ÈÃßo½T�HìIéú=¬´�ö=³¸Ý ò‰­ dám–@ìW(ˆqZ�C>û÷g>˺!˜ÁíN�ÿ¸�ø_®êúxœXž8�¿Å¤‹’[$¥ßñðvÚ°ò¶Ð“Ê^\~Ô½‡•&¶R �n°ÙiÇã�Ï>®}�‡¿ßþz©:‘Ø-’Òõ{Xi;íxòÙîù�ÄÖ²ð6K ö+ĉ8mç¾ç|¶;Aþãm»“7Ç9Þ¶;Aþãm±‚Vu}¹;Á>®}�‡¿ßþz©:‘Ø-’Òõ{Xi;­>y[èIe/.?êv'È$NÄ–õÐÓmÒÅý¹Ùiõ òWu}®}�‡¿ßþz©:‘Ø-’Òõ{XiâDl¥Ý`vZ¬ UÍ=pûë¥êDbë½ÀN{Ÿ{àö×KÕ‰;ô‹ˆ­ÔB£Ûȇí´údUÜǵòð÷Û_/U'»ERº~+m§Õ'/VЪæHìW(ˆq"N+p‡'ÿU]�‰ñ¤‹ûssÉX[ �:„'NÄiGÏq˜UàÙ.ÿq;;Ç3'bY°n,kÃì´ò‚\qè€Û_/U'Ë P¼�%cí;­üdž`7Ç9n½T�H,+€Ú’±6ÌN+ÿ±!˜ÁíN�ÿ¸ýõRu"q"žt�ucÉXf§…>˺!˜Á‡¸ýõRu"ñ¤‹âm,k�Øi¡Ï²nfpsœàö×KՉē.´Ð–ŒµavZ賬‚Üîù�Û_/U''bÔZhKÆÚ0;­ž§G܆ϲnfp»ä?k¡qÒEÉXf§-ÎeÃ6|–uC0ƒÛ� ÿ‘xÒj‹’ñÝêvÚûõñ8qç £Ï>Àyì¶C?äa÷ƒ'þÄ“.Æß¢d|·º�ö~}'îßï}úm˜ÇÎmŸ~ÁçÎ`÷[-œÒ†}ÏÜ�n»<À�ã™w,ž9ƒeÄ®^€…šð%Öj-\ðì Ã!¾?7—ŒµÕ‰±…/&.WœˆÝ")ý _èüGbëIbßÛWØiõ ò·¿^ªNÜ¡ß{Kl¥Ý`0;­>¹;Á>®}�‡¿ßþz©:‘Ø-’Òõ{Xi;­>y[èIe/.?êv'È$NÄ–õÐÓmÒÅý¹Ùiõ òWu}2%> Í|µÊ7^#Vë"ò! ~#foí°:˜ þÀ>2~>2 ÉÍÉ Read, $:ñ· ÍÉ(Pre-sorted) ÍÉWrite, >2ö*"™ !"ô* #ÍÚÍÚ"é! "° í[ô*Íâë0 *™ #"™ !ÍS:ö· Í,· &Í8· 3*° €"° *é+"é|µ º!€"° ÉÍÉ+ Read error + Ã7ÍÉ+ Write error + Ã7"ôDM*òë Í)D}2› É!"ëÍ¿~þå(6å#û6å#6å#ûí[ *ë#åÍâá8Òɯ2ñÍÉSort, *ë#"! "ùå! "÷å*ÍÚ"}´ ÁÑÉë*ë#}“o|šg"÷!"û"ù-ÁÅ x± ú"ýëÁáåÅ""ÿëëÁÅÕåæÅõ~æGñ�Á # x± ë>0<>2ñáÑÁÅÅFwx#Á x± ò*|/W}/_*û0#"û*ÿë*ý{•ozœg"ÿ§áá*ù#"ù"ûë*÷}“|šÚ»*ÑÕë*ýëÃó!"ëÍ¿ ~Ö08!þ 02í#~þ$ #~þ$ #:íw+6$+6$+6$*ë#ë* #ëåÍâá8¿É))))) Éã~#ã·Èå_ÍáÃÉ·|g}oÉ}“o|šgÉ ú"ýëÁáåÅ""ÿëëÁÅÕåæÅõ~æGñ�Á # x± ë2!2!Ãi`É>2­ <2¯ د2­ y2¯ þ : <2¤ :˜ 2¥ :™ 2¦ :› 2¨ :¤ ·(5=2¤ :˜ !¥ ¾ (:™ ¾ ":› !¨ ¾ 4~!¾8 *¦ #"¦ ¯2¨ ¯2¬ ¯2¤ <2¬ ¯2« :·G:› !˜€( ëë0ë)æõë2¡ "© !¢ ~6·(":˜ !œ ¾ :™ !� ¾ :¡ !Ÿ ¾($:£ ·ÄK:˜ 2œ *™ "� :¡ 2Ÿ :¬ ·Ä?¯2£ *° ë*© :­ · >2£ ë€í°:¯ þ :« · ¯2£ ÍK:« ÉÍW> Í2« ÉÍW>Í2« É*� "#> Í:Ÿ o&"#*ò"%>Í}2  "#> Í!˜"#> Í>2">Íɯ2¤ <2¬ ¯2« :·G:› !˜€( ëë0ë)æõë2¡ "© !¢ ~6·(":˜ !œ ¾ :™ !� ¾ :¡ !Ÿ ¾($:£ ·ÄK:˜ 2œ *™ "� :¡ 2Ÿ :¬ ·Ä?¯2£ *° ë*© :­ · >2£ ë€í°:¯ þ :« · ¯2£ ÍK:« ÉÍW> Í2« ÉÍW>Í2« É*� "#> Í:Ÿ o&"#*ò"%>Í}2  "#> Í!˜"#> Í>2">Íɯ2¤ <2¬ ¯2« :·G:› !˜€( ëë0ë)æõë2¡ "© !¢ ~6·(":˜ !œ ¾ :™ !� ¾ :¡ !Ÿ ¾($:£ ·ÄK:˜ 2œ *™ "� :¡ 2Ÿ :¬ ·Ä?¯2£ *° ë*© :­ · >2£ ë€í°:¯ þ :« · ¯2£ ÍK:« ÉÍW> Í2« ÉÍW>Í2« É*� "#> Í:Ÿ o&"#*ò"%>Í}2  "#> Í!˜"#> Í>2">Íɯ2¤ <2¬ ¯2« :·G:› !˜€( ëë0ë)æõë2¡ "© !¢ ~6·(":˜ !œ ¾ :™ !� ¾ :¡ !Ÿ ¾($:£ ·ÄK:˜ 2œ *™ "� :¡ 2Ÿ :¬ ·Ä?¯2£ *° ë*© :­ · >2£ ë€í°:¯ þ :« · ¯2£ ÍK:« ÉÍW> Í2« ÉÍW>Í2« É*� "#> Í:Ÿ o&"#*ò"%>Í}2  "#> Í!˜"#> Í>2">Íɯ2¤ <2¬ ¯2« :·G:› !˜€( ëë0ë)æõë2¡ "© !¢ ~6·(":˜ !œ ¾ :™ !� ¾ :¡ !Ÿ ¾($:£ ·ÄK:˜ 2œ *™ "� :¡ 2Ÿ :¬ ·Ä?¯2£ *° ë*© :­ · >2£ ë€í°:¯ þ :« · ¯2£ ÍK:« ÉÍW> Í2« ÉÍW>Í2« É*� "#> Í:Ÿ o&"#*ò"%>Í}2  "#> Í!˜"#> Í>2">Íɯ2¤ <2¬ ¯2ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååDocumentation for SAPP v 1.2 Sort & Pack Directory for CP/M Plus 10/23/85 This program works with CP/M 3.x and may also work for MP/M, although it has not been tested on the latter. It will NOT work for CP/M 1.4 or 2.x. This version for CP/M Plus is a collage of the routines from SAP44.ASM which was for CP/M 1.4 and 2.x and from CPM22E.ASM, a CP/M 2.2 Bios emulator RSX for CP/M 3.x. Many thanks to those people who worked on the code for those programs. Some labels were changed, some routines moved for clarity, some compacting of the two sets of code was done including utilization of Z80 code in SAP routines to keep the program size down, etc. This utility reads the disk directory tracks, sorts the entries alphabetically and then rewrites them them back to the disk. All unused or erased areas on the directory tracks are reformatted with continuous 'E5' characters. This completely removes previous file names from the directory which have been deactivated. Files of zero length, with the exception of files beginning with "-", may be also be deleted. This is an assembly-time option, supportting disk labeling for the catalog program MCAT. Normally, zero length files are not deleted. Sorting the directory in this manner offers many advantages. Some of them are: 1) Allows standard 'DIR' to show an alphabetized listing. 2) Eliminates potential problems with "UNERASE" programs, (eg, U3-102 for CP/M Plus), by removing programs with a similar name that have been previously deactivated. 3) Speeds up access via 'SD' and other special programs. 4) Assists on working directly on the disk with 'DU', etc. 5) Removes files from the disk directory that somebody else could recover. (The data is still out there somewhere, but its old location is no longer in the directory). TO USE: A>SAPP B: B: in this case indicate the desired disk to be sorted and repacked. If a disk is not specified, then the logged on drive will be sorted. If your system utilizes a search path for files, then with SAPP set as a system file, you could also use the following format to sort and pack the the B drive. B>SAPP to sort the B drive if your system uses a search path. CONDITIONS FOR USE AND ODDITIES: Very few user selectable options are available. Set them as appropriate for your system and make the change in SETUP if desired. On my CP/M Plus system, a Morrow MD-11, the hard disk has the capacity of 2048 directory entries. This is a value of 07FFH for the DRM value. Because of this directory capability, and available memory, I am unable to sort and pack the entire directory because the buffer in SAPP would exceed available memory. As a solution to this, I stuff an arbitrary smaller value into the DRM value in the SETUP routine only when doing the hard disk. With normally about 400-500 active entries, there may be so many more that were erased, so to sort less than the maximum is no problem for me. If your disks have a capacity less than 2048 entries, or if you have more memory available, then you can remark out that re-stuffing of the DRM. See my suggestions below, too. To calculate the maximum space needed for the SAPP buffer, divide the (DRM value +1) by 4 and multiply by 128 (bytes). The result is the total number of bytes used by the buffer in SAPP. Another oddity for the Morrow is that for each unused directory entry on the hard disk, such as when newly formatted, the RC (record count) byte is set to 00H, with the other 31 bytes being E5's. This is one of the user options. Set it to 0E5H if your system doesn't do this. For floppies on the Morrow MD-11, it has all E5's. I don't know how the Morrow would like all E5's for empty entries on its hard disk so I will stay with their "norm". This program should be usable on other CP/M Plus systems, but you will have to do the final testing. I suggest using a floppy drive for such tests. (I trashed my hard disk twice before I decided to use the floppy for further tests.) The source should be assembled with MAC and Z80.LIB must be available else you may have to include your own macros. SUGGESTIONS: To eliminate the problems associated with directory capacity and available RAM, it would be nice if this program would read the directory to a file (on an alternative, user selectable, drive), sort that file, and then write the sorted file back to the appropriate directory, and then allow the sorted file to either be deleted, or to remain for future use and reference when using utilities such as DU. I am not that energetic, nor do I think I am capable to writing the added code from scratch to do this. Just give me pieces of this and that routine and I shall stick them together, or let me do some minor changes or improvements..... I am still trying to learn. This version is just a start, and at present it suits my needs. Hopefully others may be able to improve upon it, and if so, please dump the upgraded versions back onto CompuServe, if possible. In the public domain.... George F. Reding [72436,45] 6,45] åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå�ÃÃÿSIDRSX11yþ éíSJÍ *J#~·È2I#~Í%þ?ÊVþ!Ê­É>?Í8Í> #í[J ÃåÍ> á#ÍôÚA:I·ÊAÝ!¬Ý6!ÿÿMÍq 'å·íR|µá(ͶÝ5 Ý6ÅÕåÍ> áÑÁ# x± ÑÃFåÍ> áå#ÍùíSòáÚAO :I‘ÚAÊA<2I ÍôÚA:I·ÊAO!Mí[òí°ÃFMý!IÝ!LÝ6ý5 ÝËN(Zý43~#æþ"(=ÝËF(Ýþ,(ÍäØÝËN ÝË·‡‡‡OÄÝËŽ�ÛÝËN(·ÝËŽy·ÉÝËFÝËÆ(ä݈Þx2I·Éý~2µÕ¾(# x±($ôÅåý5(#¾  x±(îáÁÑÕ:µýwØáÁÑ=áÁѯ:µýwÉÅÕå|ÍÌáå}ÍÌ> Í8áÑÁÉõæðÍ×ñæÆ0þ:8ÆÃ8Í%Ö0Øþ 8 ÖØþ87É·Éë!"#!#þ,(ÍäØío#ío+î7Éí[#>�þÉæþaØþ{Ðæ_Éþ0Øþ:ЯÉ_à 㯆#ãÈÍ8õ€@„!€„@I €DA ’ ˆB"€!H SIDRSX.DOC ---------- Documentation for SID.RSX v1.1 E. Meyer - 06/86 SID.RSX is an extension that adds to the usefulness of the CP/M Plus debugger program, SID. It is attached to your copy of SID.COM using the GENCOM utility, as follows: A>gencom sid.com sid.rsx Once this has been done, SID will continue to operate as usual, except that there are now new commands available, features I have sorely missed in the past: you can search through memory for a string of bytes, and you can change a string of bytes all at once. Both commands accept any mixture of hex and ASCII data. The new commands ("?" and "!") use characters not previously recognized by SID as commands, and are typed in at the SID prompt ("#") just like the built-in ones. In the event of a syntax error, they will return the usual cryptic error message ("?").  STRING FORMAT The "string" arguments for these commands can be an arbitrary sequence of hex and/or ASCII data. ASCII data is case sensitive, and must be enclosed in double quotes ("), except that no closing quote is needed if no hex data follows. To include a quote (") you must specify it as hex 22. Hex data (digits 0-F) may be upper or lower case, one or two digits. Commas (,) to separate bytes are optional; when omitted, each pair of digits will be treated as a byte. Examples: "String" OR "String 8D,0A OR 8d0a OR 8dA OR 8d,a String input that violates this format (about the only way to do this is to use invalid hex digits) will cause an error. 1. STRING SEARCH - "?" This command finds a string of bytes in memory. Examples: #?21,6,0 find bytes 21,06,00 hex #?"DIGITAL find ASCII string "DIGITAL" #?"Error"0d0a find string "Error" followed by hex 0D,0A  In each case, if any occurrences are found in memory, the starting addresses will be displayed in hex. (If not found at all, nothing will display.) Example: #?"DIGITAL 0160 E908 F35E F72E # SID.RSX is smart enough not to report its own copy of the search string as a match every time. But one peculiarity remains... for a pure ASCII search (no hex bytes) there will always be a match found, in the string buffer in SID itself (and/or the BDOS) used by the BDOS 10 call that got the command from the console. (On my system, I always get a match at E908 and F72E, as shown above.) 2. STRING CHANGE - "!" This command changes a string of bytes in memory. You must specify a starting address (1-4 hex digits), then a comma (,), then the string of new values. Example: #!2a7c,":"1a Change two bytes at 2A7C to 3A,1A Nothing displays if the command is successful. Example: #d8b0,8bf 08B0: 00 00 00 00 00 00 00 00 .......... #!8b0,22"Hi"22 #d8b0,8bf 08B0: 22 48 69 22 00 00 00 00 "Hi"...... # Not only does this give you a way of entering ASCII strings directly; it is also faster than using the SID "S" command to enter a sequence of hex bytes. NOTES: Don't attach the RSX to SID more than once (which GENCOM will let you do); multiple copies waste memory. Keep a backup of plain SID.COM somewhere. Otherwise, if you ever need to remove SID.RSX from SID, you can do it as follows: A>SID SID.COM CP/M 3 SID Version 3.0 NEXT MSIZE PC END 2400 2400 0100 ???? ;(NEXT is 2080 if no RSX) #m200,2400,100 ;get rid of the RSX header #wsid.com,100,207f ;chop off the RSX at end #g0 --- Eric Meyer, 427 N. Washington, Bloomington IN 47401 --- 07f ;chop off the RSX at end #g0 --- Eric Meyer, ;--------------------------------------------------- ; ; STAT30 RSX PROGRAM, Ver. 1 ; Written by David Krasner ; and Martin Murray ; April 1984 ; ; System Solutions ; P.O. Box 35972 ; Dallas, Texas 75235 ; ; (214) 351-6117 ; ; Released to the Public Domain on 4/9/84 ;--------------------------------------------------- ; --- BDOS Function Equates --- curdsk equ 25 ;get default disk getadd equ 31 ;get DPB address getalo equ 27 ;get the Allocation Vector getfre equ 46 ;get number of free sectors scbf equ 49 ;get the SCB sdmaf equ 26 ;set DMA ;--------------------------------------------------- ; --- RSX prefix --- serial: db 0,0,0,0,0,0 ;cpm compatable start: jmp test ;start of program next: db jmp ;jump instruction to next dw 0 ; module in line (BDOS?) prev: dw 0 ;previous module remove: db 0 ;remove flag = remain bank: db 0 ;bank flag = both types rsxnm: db 'STAT30 ' ;rsx name (8 chars.) loader: db 0 ;loader flag = normal rsx db 0,0 ;reserved area ;--------------------------------------------------- ;program test for interception test: mov a,c ;put function in C cpi getalo ;is it function 27? jnz next ;no--pass to next in line ; --- Mainline --- ;save user's stack lxi h,0 ;save user's dad sp ; stack address shld savstk ; and set up lxi sp,stak ; RSX's stack ;save user's dma lxi h,scbpb+1 ;point to SET in scbpb mvi m,0 ;set for get operation dcx h ;point to OFFSET in scbpb mvi m,3ch ;offset for current DMA xchg ;put scbpb addr. in DE mvi c,scbf ;function 49 call next ;get current dma from BDOS shld savdma ;save user's dma address lxi d,dma ;RSX's dma set push d ;save dma for later use mvi c,sdmaf ; via function 26 call next ;set RSX's dma (BDOS) ;get the required parameters from the DPB mvi c,getadd ;function 31 call next ;get DPB address from BDOS inx h ;point to BSH inx h mov a,m ;get BSH sta bsh ;save it inx h ;point to DSM inx h inx h mov e,m ;move DSM into DE inx h mov d,m xchg ;now into HL shld dsm ;save it ;get the number of free sectors mvi c,curdsk ;get default drive call next ;BDOS function 25 mov e,a ;put in E mvi c,getfre ;get disk free space call next ;BDOS function 46 pop h ;get back dma address ; (dma contains the amount ; of free space in sectors) ;calculate free blocks mov e,m ;get LSB into E inx h mov d,m ;get MSB into D inx h mov a,m ;get HSB into A push psw ; and save it xchg ;free sectors to HL call blocker ;number of blocks xchg ;save block count in DE pop psw ;get HSB back mov b,a ;put it in B loop: mov a,b ;put HSB into A ora a ;is it zero? jz create ;yes--jump dcr b ;decrement HSB lxi h,8000h ;10000h records for every ; count here, so do it call blocker ; twice and make it blocks xchg dad d ;add to previous block dad d ; count as true value xchg jmp loop create: lhld dsm ;get DSM and increment inx h ; to a physical value lxi b,alv ;point to ALV with BC nxtbyt: push b ;save ALV pointer mvi c,8 ;set bit counter nxtbit: mov b,a ;save A mov a,e ;is the free block ora d ; count zero? stc ;set C flag jz notfree ;jump--free block zero cmc ;reset C flag dcx d ;decrement free block count notfree: mov a,b ;restore A ral ;rotate it with carry dcx h ;decrement DSM count mov b,a ;save ALV byte mov a,l ;is the DSM ora h ; count zero? mov a,b ;restore ALV byte jz fill ;jump--DSM zero dcr c ;decrement bit counter jnz nxtbit ;continue bit making pop b ;get ALV pointer stax b ;save ALV byte inx b ;increment ALV pointer jmp nxtbyt ;continue byte making fill: dcr c ;decrement bit counter jz exit ;finish creating A.L. table ral ;move the significant bits jmp fill ;continue ; --- Exit to User Program --- exit: pop b ;restore ALV pointer stax b ;save ALV byte lhld savdma ;get user's dma address xchg ; back and restore it mvi c,sdmaf ; via function 26 call next lhld savstk ;get user's stack address sphl ; back and restore it lxi h,alv ;point to ALV address ret ; --- Support Routines --- blocker: lda bsh ;load bsh as counter hlrotr: push psw ;save counter sub a ;clear C flag mov a,h ;load MSB rar ;rotate it mov h,a ;put it back mov a,l ;load LSB rar ;rotate it with carry mov l,a ;put it back pop psw ;get counter back dcr a ;decrement it rz ;return if done jmp hlrotr ; else continue ; --- Data Area --- bsh: db 0 ;block shift factor dsm: dw 0 ;disk size maximum savdma: dw 0 ;user's DMA address savstk: dw 0 ;user's stack address ds 10 ;5 level stack for RSX stak: ;common data area for work and allocation block scbpb: dma: alv: ds 256 y of the "Unknown" fields, please let me know. Jim Lopushinsky Meadowlark RCP/M+ 403-435-6579 (300/1200 baud) ROMN48 FONè³k ’7ROMN54 FONˆpX ¤nvROMN60 FONQ½k ¸eROMN72 FONµK ¼@ûɀɀêSTAT30  ÃSTAT30 now present Copyright 1984 by System Solutions P.O. Box 35972, Dallas, Texas 75235 $ÃÃSTAT30 yþ !9"Þ1ê!ë6+6<ë1Í "ÜêÕÍ Í ##~2Ù###^#Vë"ÚÍ _.Í á^#V#~õëÍÈëñGx·Ê†!€ÍÈëëÃs*Ú#êÅG{²7Ê™?x+G}´xÊ­ Â�ÁÃ� ʵíÁ*ÜëÍ *Þù!êÉ:Ùõ—|g}oñ=ÈÃË€�$’ABˆ"ˆA" € DOCUMENTATION FOR STAT30, Ver. 1 by David Krasner and Martin Murray (as of 4/9/84) STAT30 is an RSX (Resident System eXtension) designed for banked memory systems running CP/M Plus. Its purpose is to correct the problem many CP/M 2.2 and earlier version programs have when running under CP/M Plus -- incorrect free space remaining reports. This problem is caused by the fact that when a function call 27 is made to the BDOS, requesting the address of the allocation vector, the BDOS returns pointing to an address in Bank 0 (the first bank) of memory, a bank that is essentially inaccessible to programs running in the TPA. The 2.2 program continues to run, thinking it is actually analyzing the true ALV, and produces erroneous results (153k free on a disk that you know only has 2k free!). Once loaded, STAT30 remains in memory until a system reset. It intercepts each call to the BDOS from the calling program, and determines if the call is a request for the address of the allocation vector (27). If not, it passes the command on to the BDOS (or the next RSX). Otherwise, it makes a call to the BDOS asking for the number of free sectors remaining on the default disk (function call 46). Finally, it creates a section of memory designed just like CP/M's allocation vector, indicating the proper number of used and free blocks. It then returns to the calling program pointing to this fake allocation vector. Please note: if your program needs to know the exact location of the free/used blocks, this RSX will only confuse it. But then, that program probably cannot be run on a banked CP/M Plus system, anyway. Most programs tested have responded very favorably to this RSX and have produced accurate results. However, a list of programs that DO NOT benefit from the help that STAT30 provides is below: NCAT.COM  If anyone else picks up this documentation and program, please add any other programs known to not work with STAT30 to the list above. Hmmn...perhaps even a list of programs that it DOES work with would be in order... If you would like more information, please contact: David Krasner or Martin Murray Write: SYSTEM SOLUTIONS P. O. Box 35972 Dallas, Tx. 75235 or Call: (214) 351-6117  P. O. Box 35972 Dallas, Tx. 75235 or ROMNF10 FON Œï è ROMNF11 FONãzÿ é¿!ROMNF12 FONCð ëÌ$ROMNF14 FON-Eð í|2ROMNFB6 FONEf ï{ROMNFB7 FON¯h ðROMNFB8 FON£j ñÜROMNFB9 FONªl òîROMNFB10FONEQ÷ óA ROMNFB11FONNS÷ õ>#ROMNFB12FONdU÷ ÷ &ROMNFB14FONX÷ ùp4; SYNonym Create a synonym for a command line ; REQUIRES CPM PLUS OPERATING SYSTEM. ; THIS VERSION IS OSBORNE EXEC SPECIFIC. ; ; Copyright 1986 by Gordon Wilk ; 6707 Springpark Ave ; Los Angeles CA 90056 ; Released for private non-commercial uses without fee ; ; USAGE: SYN ; NEW COMMAND: enter the name by which the command ; is to be called. Do not add .COM ; TO MEAN (command line) ; > enter the command line which is to be executed ; ; the command line may, optionally, include parameters ; in the form &n where n may be a single digit 1-9. ; Parm 0 is the cammand name, really.. ; ; EXAMPLE SYN ; NEW COMMAND: cc ; TO MEAN (command line) ; * > c &1!rmac &1!link &1,&2,clibrary ; The new command CC FOO BAR will compile the C program ; called FOO, assemble it and link it to BAR and the C ; library. ; ; The command line syntax differs from that of SUBMIT ; 1. The < marker for program input is not supported. ; 2. The parameter marker is & not $  ; && works the same way $$ does in SUBMIT ; The & marker may be changed by reassemblng ; ; If the command exists it may be modified using the CPM+ line ; editing facilities. ; ; EXAMPLE OF MODIFICATION ; SYN ; NEW COMMAND cc ; ; This command exists. Modify it? Y ; ; <-- --> DEL Del/BS BOL/EOL DONE ; ^A ^F ^G ^H ^B ; ; OLD command to edit ; * > c &1!rmac &1!link &1,&2,clibrary ; ; The CPM3 editing controls will be displayed along with the old ; command line. the cursor will be placed at the end of the line ; which may be changed. If you answer anything other then "Y" to ; the "Modify?" question SYN will ask for another command name. ; ; If the command named is not a SYN file you will be told and the ; program will request another name. ; ; Nine parameters of up to 14 characters each are allowable ; identfied as &1 &2 ... &9. ; Parameters entered in SYN may contain argument calls. ; The "meaning" comman d line may be up to 128 characters long ; ; Parm 0 is the name of the new command as an 8 character ; blank padded string ; ; * THESE LINES WILL CAUSE HARMLESS ERROR MESSAGES WHEN ; ASSMEBLED WITH MAC ; ;------------------------------------------------------ ; VERSION ; 0.1 Original version ; 1.00 First release version ; 2.00 FOG release 9/86 ; ;================================================================ ; EQUATES ;================================================================ ; ; BDOS LOCATIONS BOOT EQU 00 ;warmboot BDOS EQU 05 ;BDOS call MEMTOP EQU BDOS+1 ;top of memory ; ; ASCII CONTROLS LF EQU 0Ah CR EQU 0Dh TAB EQU 09 BELL EQU 07 ; ; MEMORY LOCATIONS FCB EQU 05CH ;adr of default fcb fcbEX EQU FCB+0CH fcbCR EQU FCB+32 DBUFF EQU 080H ;adr of default dma bufMX EQU DBUFF bufNC EQU DBUFF+1 bufDAT EQU DBUFF+2 ; ; BDOS CALLS OPEN EQU 15 CLOSE EQU 16 READ EQU 20 WRITE EQU 21 MAKE EQU 22 CHAIN EQU 47 PARSE EQU 152 ; ; *** THE NEXT ITEM IS SPECIFIC TO THE OSBORNE EXEC *** MltIO EQU 0F8E6h ;SCB multi-sector count ; ; ARGUMENT MARK CHARACTER ARGMARK EQU '&' ;May be changed ;================================================================ ; MACROS ;================================================================ ; ;Print the $ terminated string at MSG PRINT MACRO MSG LXI D,MSG CALL PSTR ENDM ; ;Get a string of length LENGTH from the console to BUFFR REPLY MACRO BUFFR,LENGTH LXI H,BUFFR MVI M,LENGTH XCHG CALL GETS ENDM ; ;BDOS file calls FILE MACRO FUNC,PNTR IF NOT NUL PNTR LXI D,PNTR ENDIF MVI C,FUNC CALL BDOS ENDM ; ;Set for multi-sector read/write SECTORS MACRO NUMBER MVI A,NUMBER STA MLTIO ;;SCB.Multi-sector count ENDM ; ;Move LENGTH bytes from SRC to DEST BLKMOVE MACRO SRC,DEST,LENGTH LXI H,SRC LXI D,DEST LXI B,LENGTH DB 0EDH,0B0H ;z80 LDIR ENDM ; DJNZ MACRO JUMPTO DB 10H,JUMPTO-$-1 ;z80 DJNZ ENDM ;================================================================  ; MAIN ;================================================================ ORG 100H LHLD MEMTOP ;Stack at top of memory DCX H SPHL ; Ask for new command name and get a reply. ; Add '.COM' to the name in the dma buffer. ; START: PRINT ASK$NEW ;What is new command? REPLY DBUFF,8 ; into 80H JZ BOOT ;IF no entry, just quit ;ELSE move LXI B,5 ; 5 chars XCHG ; to 1st byte after name LXI H,QCOM ; from ".COM " DB 0EDH,0B0H ;z80 LDIR ; File name is in dma buffer. Check to see if it exists. ; If it does, ask to modify or start over. ; FILE PARSE,PFCB ;Parse into FCB BLKMOVE FCB+1,PARMS,8 ;and place in parm0 FILE OPEN,FCB ;See if it exists INR A ;IF it does JNZ FILEX ; ask about modification ;ELSE new command PRINT ASK$COM ;What command ? REPLY COMmx,128 ; into buffer space of new program JZ BOOT ;IF none abort FILE MAKE,FCB ;ELSE create and JMP DO$WR ; write the new file ;---------------------------------------------------------------- FILEX: ;MODIFY FILE ; The command file exists. ; Ask whether to modify, if not, go get another name. ; PRINT ASK$MOD ; Modify it? CALL YESNO ;IF reply=NO JNZ START ; ask for new name ; ELSE read old file CALL RD$COM ;get command and SUB A ;Set cr to first STA fcbCR ; record for re-write ; ; Show the old line and accept edit to COMLIN PRINT SHO$OLD ;OLD command to modify msg LXI D,COMmx CALL GETEDIT ;Edit it ;; jmp do$wr fall through to DO$WR ;----------------------------------------------------------------- ; Now write 4 logical sectors, 512 bytes, into the new file. ; This includes both the new program and data area. ; DO$WR: PRINT CRLF LXI D,NEWPRO ;Set buffer to new program area CALL SETBUFF SECTORS 4 ;write FILE WRITE,FCB ; 4 secs FILE CLOSE,FCB ; close JMP BOOT ; and quit ;================================================================ ; SUBROUTINES ;================================================================ ;Read an existing file and verify that it was created by SYN RD$COM: LXI D,NEWPRO ;Overlay the NEWPRO code CALL SETBUFF ; with the file read SECTORS 4 ;4 sector FILE READ,FCB ; read ; Parm0 must be filename ; Check the first char only LDA PARMS ;char 1 of parm0 LXI H,FCB+1 ;->char 1 of filename CMP M RZ ;IF match OK return PRINT NOT$SYN ;ELSE not a SYN file BLKMOVE QSYN,DBUFF,4 ; restart program MVI C,CHAIN ; from scratch jmp BDOS ; by chaining ;---------------------------------------------------------------- ;GETEDIT edits string @(DE) ;GETS gets string to (DE) ;RETURN: DE = A = LENGTH and flags set ; HL-> EOS null termination ; GETEDIT: PUSH D ;save buffer adr CALL SETBUFF ;set DMA adr there MOV D,A ;set DE=0 for edit MOV E,A JMP GETS$2 ; GETS: PUSH D ;save buffer adr GETS$2: MVI C,10 ;get string (DE) CALL BDOS POP H ;HL->buffer INX H ;HL->count MOV A,M ;A = LENGTH MOV E,A ; MVI D,0 ;DE=length DAD D ;HL->last c!har in string INX H ;HL->EOS MOV M,D ;NULL terminate ORA A ; and set flags RET ;---------------------------------------------------------------- ;Return with Z flag set if reply = Y ; unset if not YESNO: LXI D,YNBUFF ; Line input MVI C,10 CALL BDOS LDA YNBUFF+2 ANI 05Fh ;upper case CPI 'Y' RET YNBUFF: DB 1,0,0,0 ;---------------------------------------------------------------- ; The routines below return directly from BDOS; saves a byte ;---------------------------------------------------------------- ;Console display string PSTR: MVI C,09 ;display string pointed jmp BDOS ;to by DE ;---------------------------------------------------------------- ;Set buffer address SETBUFF: MVI C,26 ;Set DMA buffer jmp BDOS ; to (DE) ;================================================================ ; DATA for SYN ;================================================================ ASK$NEW: DB CR,LF,LF,'NEW COMMAND: $' SHO$OLD: DB CR,LF,LF,27,41 ;Terminal control: DIM DB TAB,'<-- --> DEL Del/BS BOL/EOL DONE',CR,LF DB TAB,'^A ^F ^G ^H ^B ' DB 27,40 ;Terminal control: BRIGHT DB CR,LF,LF,'OLD command to edit' CRLF: DB CR,LF,'$' ASK$COM: DB CR,LF,'TO MEAN (command line)',CR,LF,'>$' ASK$MOD: DB CR,LF,'This command exists. Modify it? (Y/N): $' NOT$SYN: DB LF,LF,'** Not a SYNonym file **',BELL,'$' QCOM: DB '.COM',0 QSYN: DB 'SYN',0 PFCB: ;Parse control block DW DBUFF+2 ;Name starts at 2nd byte DW FCB ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;============================================================= ; This is the NEW FILE to be created ;============================================================= ; Move the command line data from COMLIN to the ; default dma buffer and chain to it. ; OFFSET adjusts addresses to their runtime locations ; because MAC does not have .phase/.dephase ; NEWPRO EQU $ OFFSET EQU $-100H LHLD MEMTOP ;set up stack DCX H SPHL ; CALL GETARG ;Get args into parm list ;Move the command LXI H,COMLIN-OFFSET ; from LXI D,DBUFF ; to CALL MOVE ;Do it STAX D ;Terminate with 0 MVI C,CHAIN ;CHAIN to program JMP BDOS ;====================================================== ; SUBROUTINES ;====================================================== ;GETARG moves arguments from the command line to the ; appropriate PARM slots. ; GETARG EQU $-OFFSET LXI D,DBUFF+1 ;Source LXI H,PARMS-OFFSET+16 ;Destination step over parm0 LXI B,16 ;Parm increment FNDARG EQU $-OFFSET ;Find an argument LDAX D INX D CPI ' ' ;IF a space JZ FNDARG ; keep looking RC ;ELSE IF < space; quit ;ELSE we have found an arg PUSH H ;Save adr of parm slot ARGLOOP EQU $-OFFSET ;Move chars until end of argument MOV M,A ;move char to parms INX H ;increment destination LDAX D ;Get next char INX D ;Increment source CPI ' '+1 ;IF > space (more to copy) JNC ARGLOOP ; loop POP H ;ELSE restore HL->parm slot  ORA A ;IF null RZ ; quit DAD B ;ELSE HL = HL+16 next slot JMP FNDARG ; loop ;---------------------------------------------------------------- ;MOVE is a recursive macro processor ; HL-> source string ; DE-> destination in the command line buffer ; Characters are moved (HL) to (DE). If an ARGMARK is encountered ; HL is saved, the address of the stored argument placed in HL and ; MOVE is called recursively to move from the stored argument ;Stops at a NULL byte in source. ;Return: A=0 DE->EOS. ; MOVE EQU $-OFFSET MOV A,M ;A = char INX H ;point to next char ORA A ;IF 0 then end of string RZ ; so return CPI ARGMARK ;ELSE IF not an argument marker JNZ MOVE2 ; move the character MOV A,M ;ELSE get next char INX H ; and pt to one after that CPI '0' ;IF < '0' not an arg number JC MOVE2 ; move it CPI '9'+1 ;OR IF > '9' not an arg number JNC MOVE2 ; move it ;ELSE it is an ASCII digit SUI '0' ; ASCII to binary ; A=Argument number which multiplied by 16 is list index. ; Save HL and replace it with the argument address. ADD A ADD A ADD A ADD A ; X16 for length of arg PUSH H ;Save adr of next char MVI B,0 MOV C,A ;BC = adr list offset LXI H,PARMS-OFFSET ;HL = base of arg list DAD B ;HL = adr in arg list CALL MOVE ;Move RECURSIVEly from arg list POP H ;Restore source adr JMP MOVE ;and start over ; MOVE2 EQU $-OFFSET STAX D ;Move to destination INX D ;Point to next chr in dest JMP MOVE ;Loop for next char ;=============================================================== ; DATA for NEWPRO ;=============================================================== PARMS: DS 10*16 ;parameter space COMmx: DB 128 ;max chars accepted COMnc: DB 0 ;nr of chars entered COMLIN: DS 128 ;command line buffer END 100H ace COMmx: DB 128 ;max chars accepted COMnc: DB 0 ;nr of charCPM3SCB DOC d€#SAPP12 AQM m€*SAPP12 COM x SAPP12 DOC {€"*+ùÍþ!€6ëÍÙÊë!ðí°ù˜Í!]eí°\Í<Â\ŽÍþ!6€ëÍÙÊ\ÍÃ{ªÍþÍêÂÍŸ—2|ÍþÍЋÍþýÍ>2æø\Í\ÍÃýÍ>2æø\Í:e!]¾ÈÔÍþ!õ€í°/ÃÕÍW_ÃÚÕ Íá#~_#r·Éú Í:üæ_þYÉ Ãà NEW COMMAND: $ ) <-- --> DEL Del/BS BOL/EOL DONE ^A ^F ^G ^H ^B ( OLD command to edit $ TO MEAN (command line) >$ This command exists. Modify it? (Y/N): $ ** Not a SYNonym file **$.COMSYN‚\*+ùÍ! €Í9/Ã�!xþ Ê Øåw#þ!Ò)á·È à ~#·Èþ&Âc~#þ0Úcþ:ÒcÖ0‡‡‡‡åO!h Í9áÃ9Ã9€CPM3SCB DOC d€#SAPP12 AQM m€*SAPP12 COM x SAPP12 DOC {€..Documentation for SYN.COM SYNonym A COMMAND LINE BUILDER Gordon Wilk 6707 Springpark Ave Los Angeles CA 90056 (213) 645-6419 SYN.COM allows the user to define a command line (a string of up to 128 characters to be executed by the Console Command Processor) and name the line. SYN.COM then builds a COM file which when called form the CPM > prompt will cause the system to execute the defined command line. It is inspired by a CPM 2.2 public domain program called SYNONYM and ZCPR's ALIAS facility. The SYNONYM program did not provide SUBMIT-like arguments and ALIAS, of course is available only on a ZCPR system. CPM+ with its multiple command line facility makes this sort of program even more useful than it was in CPM 2.2. SYN.COM differs from Larry Steeger's EX.COM in 3 important respects. (1) It runs on the Osborne Exec (EX.COM seems to work only with CPM2.2). (2) SYN can only handle one line per cammand file (though SYNonyms may be nested). (3) SYNonym files are called directly; no processor like SUB.COM or EX.COM is needed when the command is executed. * * * A COMMAND LINE is what you type in at the ">" prompt. In CPM+ it may cantain multiple commands seperated by "!". Because it may be up to 128 characters, contain unmemorable options and multiple commands, you may wish there was a way to write such a command line once and be able to call it with a simple name whenever needed. SYN provides that facility. When you execute SYN.COM (by typing SYN at the ">" prompt) it will first ask for a "NEW COMMAND". This is the short (8 or less character) name you wish to use in the future to call (execute) your long command line. The name my be any valid CPM filename with an optional drive prefix. If you omit the drive prefix, SYN.COM will look for the commaand file, and later create it, on the default drive. The name must not include the .COM suffix. If no COM file by this name is found, the program will then ask for "Meaning (command line)" and display a ">" prompt. At this point you type in your long command line. When you press , the COM file will be created and you will be returned to the system. You may then execute the command line by typing the short SYNonym name. If a COM file by the specified name already exists, the program will say so and ask if you want to edit it. If you reply "N", you will be asked for another name. If you answer "Y" to signify your desire to edit the command, it will be displayed with the cursor after the last character. You have the full CPM+ line edit commands at your disposal. The key controls are displayed in case you don't remember them. If you have given the name of a non-SYNonym file, the program will so inform you when it tries to read the file. The long command line may contain parameters in the manner of a SUBMIT file. There is a difference: I have used "&" rather than "$" as the argument marker. The dollar sign is too frequently used as a marker by MAC, RMAC, etc. If you want to use the "$", change the equate in the ASM file and reassemble. There may be up to 9 parameters indicated as &1 - &9. Parameter 0 is the new command name. Each parameter may be up to 14 chars long. With this change, the rules for SUB file syntax may be followed. SYNonyms may be nested. That is, a SYNonym command line may contain other SYNonyms. This can partailly substitute for the fact that only 128 characters may be used in a single SYNonym. Arg- uments are passed to the nested SYNonyms based on position: SYNynym Meaning TEST Do1 &1 ! Do2 &2 Do1 Dir &1 Do2 Dir &1 "TEST A: B:" will execute "Dir A:" followed by "Dir B:". "B:" is the second argument of TEST but is passed to the first argument of "Do2". CONTROL C (^C), a null name, or null meaning will abort entry or editing. SOME USES Multiple command lines with many parameters are often converted to SUBMIT files; but they rarely run over 126 cha#racters: C &1 -m ! RMAC &1 $PZSZ ! LINK &1,STDLIB $SZ ! ERA &1.REL will compile, assemble and link a file without creating extra files. It could have been named "CC" nd then used by typing "CC FOOBAR" to compile, assemble and link program FOOBAR. Some CPM commands have many options which are hard to remember: A command named "PRINT" could be defined to execute PIP LST:=&1[FZT8P80] for printing files at 8 lines per inch. You might prefer the MSDOS syntax to CPM's. Define "COPY" as PIP &2=&1 . Assuming you have a program called SETKEY, the line SETKEY WS ! WS ! SETKEY CPM will call WS with the appropriate keysetting and return to the CPM setting on exit. Obviously EXECST files can be created with SYN. COMPARISON WITH SUBMIT FACILITY SYN much faster. Its speed is due both to its small size and the fact that it makes fewer disk accesses per command. SYN is a self contained file builder and line editor. To use SUBMIT, you must first use an editor to write the SUB file. SYN takes only 1k of disk space and is only needed when creating SYNonyms. The created SYNonyms are stand-alone files, each only 1k in size. SUBMIT.COM is 6k and must be available whenever a SUB file is called. SYN is less wordy and leaves a cleaner screen. SYN is limited to a single 128 character line. SUB files are virtually unlimited in size. The ability to nest SYNonyms is a partial substitute for a multi-line processor. SUB files can, with the "<" character, provide input into a program, SYNonyms cannot. titute for a multi-line processor. SUB files can, with the "<" character, provide input into a BIOSFIX MAC €CCP101 NOT CCP105 MQC ×CD310 DOC H€CD311 AQM N;CPM2 COM ]€ CPM2 DOC a€CPM2DEL COM c€CPM3SCB DOC d€#SAPP12 AQM m€*SAPP12 COM x SAPP12 DOC {€1TP!ßí°<!í°úÍHË!Íu!>ÍO7ÍHÃ2F:2Gà Ã>·ÈG"Äz<2Æ{2ÇxJý!Ãí°G>]ÍP·ÈüåíSø!Mí°í°í[øÍ<ÑÊÅÿÕÅÍí[øÍÁÑ!€ë·(å= °É€ÍHÃ9n]ÍHMÍH:ô·Ê9¯É2 PÛö€ÓÍõÛæÓñÉ WRITECCP will write CCP.COM to drive A, track1, sector 1 $ System tracks aok $. $ Error reading $ Unable to open $ Error writing system tracks $ Error: cpmldr.com is too long $ CCP COMReservedReservedBIOSFIX MAC €CCP101 NOT CCP105 MQC ×CD310 DOC H€CD311 AQM N;CPM2 COM ]€ CPM2 DOC a€CPM2DEL COM c€CPM3SCB DOC d€#SAPP12 AQM m€*SAPP12 COM x SAPP12 DOC {€ The WRITECCP program takes the CCP.COM file created by CCP+, and writes it to the system tracks of any boot disk. To use, have WRITECCP.COM and CCP.COM on the disk to be modified, and type: WRITECCP Simple as that. WRITECCP was created by George Peace (sysop of FOG system #10). I've added this short note by way of explanation. Jim Switz 15 Sept. 85 Note: CCP+ and WRITECCP are designed only for CP/M 3 systems; I've used it on my Osborne Executive, and it seems to work just fine. CP+ and WRITECCP are designed only for CP/M 3 systems; I've used it on my Osborne EBIOSFIX MAC €CCP101 NOT CCP105 MQC ×CD310 DOC H€CD311 AQM N;CPM2 COM ]€ CPM2 DOC a€CPM2DEL COM c€CPM3SCB DOC d€#SAPP12 AQM m€*SAPP12 COM x SAPP12 DOC {€vÿ´ÙWRITECCP.MACN öÿßÿšÿõÿòÿ�ÿ‹ÿ�ÿ›ÿŒÿžÿ“ÿœÿ–ÿ‘ÿÄÿ—ÿÏÿ’ÿÓÿŠÿ�ÿ™ÿ�ÿÎÿ !"#$%&'ˆÿ˜ÿŽÿÅÿ”ÿØÿ()*+,-./01‰ÿÍÿ†ÿËÿ×ÿÖÿÔÿÊÿ•ÿ23456789:;<¼ÿÂÿÒÿÑÿÇÿÛÿÌÿ‡ÿÜÿoÿÈÿ…ÿºÿÐÿÉÿ¯ÿÝÿ=>?@AÀÿ¾ÿ²ÿBCDEFGHúÿÆÿ°ÿ­ÿ¬ÿ«ÿûÿÕÿ¶ÿIJKLM¨ÿåÿÞÿÃÿÁÿ¸ÿªÿ§ÿ¦ÿÿþ þÞKÀÍéÑÅÕ•c©ÑÈc øí_ýÛßÿö{ûÇï¯pu:¢uÂo)ÏVnH¸�Qîµä˜ÐÑJŽj¦·ˆÿ2ì1àBTqT_ÖBMñàŠjMw ^½úùöÕ_þ@S´Nî‚шæb¾ÔŠÞ•ÂßßâÃãOŠ™ð î·ßßÝ? ¿ýúnöc\b½�fV»pñ”U Ó Ã0Üváâé&Q:Í0 ï†.\<Ý„î�N3 C¼íÂÅÓ�- è4Ã0ÜÞváâÝM¢ tšaÞ ]¸xwcK:Í0 Ãm.þ¦$ª@§†aˆ]¸ø›�¨�föaèÂ%tŸ¨�f†û¡ —rè4à îÐi†Aø(�f†gß………u£ tšav=Ði†ÛA8�ù1�f¸ý!¼�átšáÏ‹×tšáYXXøHæéè4ÇÜÚR4àšë{zí鯖$|$óîè4ÃýmhKÑ€k®gìéµw7¶$áQoè4ÃýÒÚR4àšëG½!á�£ÞÐi†ç/ -E®¹ž1�áë%àªG½!aaá`ÑÙ’‡°MÁb¾@ÃÍÐ#‹ù", ÉÃ’§¬žUh˜¨¢®¨³Ã¬ž„!yð4õ2Ò =+5ZÑ* ÉCO“Î.«'h¸:±“#aH¾8h8ê aÄ>× šbÕúÆéˆÑQ†äaÉS LÕ¿ ”whXj1¤jÅFG÷`Â�$}ÄR1 /EÃ’‡‡¥hH�S„†� “¢®¸ ½wÂ�<Äéáö á‘ {A]1zï„!yxXІþ8Eaáöù‹pƒQ}Y yÌê WMIA¸}þ",¼ /Û^6:Š)Ýሦ¸ HÕÜ�ðR4$ Ó KÑð²=íÐ0)êŠKÑ€k®½wÂKÑÐ�N3,ECzÚÆê±Ô£÷NXXx Ç3$yÚÆph˜Èpñ°„0F)„x$axÙ`ñnv%�¦¸Ü¡'aáWŒ„ÀÁ#Œ)¡:Ü¢3Ô#ʦMÑ—pnáʦ. )\1n@`.æ ~nà!P6uXçq!÷fLJáõþ(Ü 'ØÌ¡)ú1bôÞQ ®= 7€Gšp™ YÀˆ¦øŒëœš‹ùò(,|pÅèù ÉCœž24ÅuN ÍÅ|>¸btu",+Æzg½Ô#šâÁ#apdð aÕ cJèµ’°0$ˆxCø eSЮ Còðp°è½{œz‚†� ý1zï„!yˆ“hx$Ã@ÙÔa�Ç…œ0”š!4Œþ7§¹t' ÉÃÃÁåÇ) Cò'hx$Cs1_°ÎãBN’‡‡ƒ™»4\ÕáZ¡Ým$ É', Ƀ§éÁ:­yy„†›¡)®%‘0$yÒ�*@Cݨ¢uµ$†S‚Åk†R3D€†ëúºªáªsõ°éž: ¦Ž0XtVêý1zï„áeƒ¯Ó½nT¡¡nT‘œS', ÉÃ2½Ù–Z ?a lê:гÎÕ„…�OªÛJͰ4\æqÃO(›º€Ž¢†m< Ã6‡Khâ a lê0ë\MX’‡<2?FhÈÐ�£÷NrL ¯AX’OÓƒuZóò ³«†k^„!yÈ“£è…!Ç”`ñ:еŽê÷Ûw¸Üa lê„…aÓ – ÐÐQ0u„�²©Ã¬s5aØtOÂ�<ô4í·ïFk&ôcÄè½CS†è=ô4yúž¦ž„…AD€†�ËŠ^+¡:$çÔ Ã‹ƒ¯“óIuƒ†U ½VÂ;2aað”!4Ü_{­$ /ê×i‰ÞQôаê„äœ:aaP @Ã-†€KÌü„�²© è(z,UX4Œ)¡×Jè(úR�VErN]>9w†äÁÓt°1¡áÁ#$çÔáCU\kéQ8.êì 9¦c8 ÃËô±@ÃX=Æ”Ðk%aá%zݨž…!yð4éFu GhXB˜ Çp†k\Ô™°ð½£èÏÂ�ÝC‡†AGÚRÌ„1ÅR±j}ãtn0–�ñ&º—DÉòÛÏÿÖÍŠÖ˜ÎèV­o¾’S,+®%–€ºYÑ“°ðÁÖñ ~� áoxpÅW­6âÃðºê£ðÁÖx¿ÀÐð7<¸b„«V‹ø0¼®ú(|0§ãü@ÃßðàŠ:¯]ñax]õQXXØ:­y9ƒ?ÀÐp3‡¦˜g種y��áx¿Ààû4Ä. ~�ë¿ýõ_ÿöêÕO<””ðàŠ¾zõóí«¿ü�¦è]¹!ü}Bs1_ö eS‡ûUüƒïÓût}öZi dz0øß§!vað \ÿvŒF4ó%`ÔËu|Ÿ†Ø§ëû«°ðZãHgðÞ4Ì:ŽZ±Æ‘pU‡#…�„Á/p}{^ín£3ø„Á/0ø> ±O×>]ß_……E?†ãYüƒïÓûtýæœ:t}©G|Ö�êŽgað ¾OCìÓõj\¡)êFß_……6†ãüƒïÓûtýæœ:<¸b¥1Ü£ÍÅ| ×ið}bŸ®ï¯ÂÂÉ»1Ïà|Ÿ†Ø§ë7çÔ�1ocòîmÖK@SŤõx¿À—ið}bŸ®ï¯Â ¬—€%` C]q‹n ¸ÅÈ£)Z't: 70Ń+F¸¿yÆ@ÙÔaáƒmÑ�á, ~�.±^„½wgð aôÞ ,P>ƒ_`‡†�²©>˜¹Ëühh.æ‹0øh8×bxýý* ~�!whhw MT�N3¼s°-º1@ÃDõhMqÔÂyCëäHX8çí, ~�aº¾zõ?ÿéÕ_þ¸ ƒ?À0 Ó0 Ó0 Ó0 Ó0 Ó0 Ó0 Ó0 Ó0 Ó0 Ó0 Ó0 ÂÂ¥+1�áó?zŪ†¹Çz$´^‚0ø®¥@î†ü_)�»!…†Úñ@)M¸–”Ð:á\ç@^>ÿ©atjEë„á.�ÂðùO ÍÅ| x(Ö1èHÖK= Ê;Ði†÷Ð0Xt†ºbù®Å€øÍÅ| ˜´…å[ Ó �òþ´·÷Â�ò Ó �òíÓ>ÜÞ Ê÷@§åOûp{/(?�f”ïŸöáö^Ø\Ì—è4C ¼ Ê?€N3ÊÏOûp{ eS‡;š‹ù‚»p üè4C üãinï…åw@§å/Oûp{/(ÿè4C üîinï…å}:Í(ÿùinï…ÍÅ|Ù�N3Ê?„…å}:Í(ïÃÓ>ÜÞCÃ@ÙÔáŽæb¾à­p ¼ß�f”÷ýinï…åýÐi†@y¿}Ú‡Û{á@y¿:Í(ïžöáö^8PÞŸ�N3ÊûýÓ>ÜÞ ›‹ùr tš!PÞwaá@™ª:Í(ïÏOûp{/,¼¨Z  tš!PÞÒǼ¨ʸ£¹ ÂÉ»@è4C | Ð0ocòe¼Es„sÞe Ó �ò€†9o(ãŽvÁ]Xg(�f”÷ á¡“# å›×�JAxe Ó �ò¾4 as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Disk 2 of 2. CCP105+. Also on the disk are some stand-alone utilities for CPM+. Filename Description -03-00 .87 This is the release date of the disk. -CPM164 .DOC This is the description of the disk contents. BIOS2RSX.AQM D212 8K ver. 1.05+ [CCP 48 of 62] BIOS2RSX.RSX E983 2K ver. 1.05+ [CCP 49 of 62] BIOSFIX .COM 0637 1K ver. 1.05+ [CCP 50 of 62] BIOSFIX .MAC E04A 2K ver. 1.05+ [CCP 51 of 62] CCP101 .NOT 1D57 2K ver. 1.05+ [CCP 52 of 62] CCP105 .MQC 25E7 54K ver. 1.05+ [CCP 53 of 62] CD310 .DOC 251A 6K ver. 1.05+ [CCP 54 of 62] CD311 .AQM F251 15K ver. 1.05+ [CCP 55 of 62] CPM2 .COM 9E55 4K ver. 1.05+ [CCP 56 of 62] CPM2 .DOC 5B78 2K ver. 1.05+ [CCP 57 of 62] CPM2DEL .COM 6923 1K ver. 1.05+ [CCP 58 of 62] CPM3SCB .DOC 975C 9K ver. 1.05+ [CCP 59 of 62] WRITECCP.COM C5E0 1K ver. 1.05+ [CCP 60 of 62] WRITECCP.DOC 3AA5 1K ver. 1.05+ [CCP 61 of 62] WRITECCP.MQC 4E9D 5K ver. 1.05+ [CCP 62 of 62] SID11 .RSX 06A8 1K ver. 1.1 [SID RSX 1 of 2] Add a memory string search to SID. SIDRSX11.DOC 24E3 4K ver. 1.1  [SID RSX 2 of 2] STAT30 .COM 3531 1K ver. 3.0 [STAT 1 of 3] Helps correct free space remaining which was incorrectly reported by some older CPM 2.2 programs. STAT30 .DOC F263 3K ver. 3.0 [STAT 2 of 3] STAT30 .ASM A7CB 5K ver. 3.0 [STAT 3 of 3] SYN .COM DE40 1K [SYN 1 of 3] A command line SUBMIT-like program that works with CPM+. (It is similar to EX in some ways.) Will also work on CPM 2.2 systems. SYN .DOC 9891 6K [SYN 2 of 3] SYN .ASM 9935 12K [SYN 3 of 3] SAPP12 .COM 0101 3K ver. 1.2 [SORT & PACK 1 of 3] This sorts and packs a CPM+ directory SAPP12 .DOC 328B 6K ver. 1.2 [SORT & PACK 2 of 3] SAPP12 .AQM 4DED 11K ver. 1.2 [SORT & PACK 3 of 3]  [SYN 1 of 3] A command line SUBMIT-like program that works with CPM+. (It is similar to EX in some ways.) Will also work on CPM 2.2 syståå&ååååå'ååååå