IMD 1.16: 28/05/2007 16:47:36 -FOG/UTL023   åååååååååå  åååååååååå  åååååååååå  -FOG/UTL023APPEND AQM APPEND COM APPEND DOCAUTOMODDAQM AUTOMODDCOM CAT2 COMCATFILBOAQMåCATFILBOCOMCATFILBODOCDISK DOC+,FINDBAD DOC. FNDBD541COMIF AQM4 IF COMIFSKIP DOC !"#$%&'åLISTCAT COM LISTCAT DOC SKIP AQM()SKIP COM*CRCKLISTCRC-ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååvÿAUTOMODD.ASM]ßÿ öÿõÿòÿ­ÿ»ÿºÿ«ÿ¾ÿ°ÿ¼ÿ¬ÿÄÿ¶ÿ ²ÿÓÿ³ÿ!"±ÿ·ÿÏÿ$#&%('Øÿ)*¯ÿ+½ÿ,ªÿ.-¹ÿ/0Îÿ§ÿ©ÿ21oÿ´ÿ4¸ÿ537698:Õÿ¨ÿµÿ<;Íÿ=>Çÿ@žÿ�ÿ?CABD–ÿÐÿ›ÿ¦ÿ—ÿ�ÿEšÿÌÿŒÿGF�åÿHÉÿüÿûÿIKJ‘ÿÑÿÊÿÂÿÔÿ‹ÿ×ÿÖÿÆÿ“ÿÜÿ¥ÿLÀÿMÅÿON®ÿËÿŠÿÒÿPÛÿ™ÿ†ÿQœÿRSTU‰ÿˆÿW’ÿZXY[V\ÁÿÝÿÚÿ”ÿôÿÞÿùÿåÿ€ÿÿþçÿ…ÿñÿÃÿÈÿ¡ÿøÿóÿ ‚¡Ö(†`¨©U¢"jj”NÑI�ÆÚ9M ©†šZ%*‚¡¦¶äÞø¯öŽuj—Ÿ—v)]\KM¨†šZ%*‚¡æiSP¢YbÙ)ËÎË|Z0ß% Í—¥eÙ²Ú rYµjBE0ÔœMЇ”|êèî(éîijXº¸Ö95¤  "jj•¨†fiU²@‰¶U°ìˆ•åzŸÊjÇJ»“fIù³VºVº¨AE0Ôè †•P\;^K »?ñíNhw¤i~²ìè¤�Ú:*‚¡†”|êèî(éîÔ95J "j�baÒ=�^ÉýŒÎÚ¾<›˜8»”eÒ½8öŸè«?2ÏKÝzܸ¤k–šå+"i¯šå¾oòÍìø1ß@0ÌW—rô,çÆ‹Ô´`Ò£±vRûøn¿s–�—ßÏÆ÷¹!ÈÑS$ökÕ7YF‹úý}#3´¿/þ’ëÆÔÉ�kŒÍÿ„¨ÿ|?ßç† GO¡þÑâìR–öç(_ç-úÍí]G�{‚=û=ßõ}“Ê‹{ rÔ+¢~?RA'ÍÕÃZÿVD0†Z[—ê)üu£=û¾Œ7]½Èê5–â(_�=ßdÑIsõAìfG1©Þ‘óTÿ¦‚¸IHü%Ç×ÅÄ_rÝÈQ¾žóTÿ"!=•×»˜¨ÿÜ^Ô?ZŽ�íÎs‚œyrDLÊ{‹>ýÍ<Ï#a­ŸË‚¨¿— AXëçp&bR½#ÇÖ3ÏóAzn«"a­ŸË‚¨¿— AXëçp&bR½#…·G�`„µ~&¿rÜË1Y‰ ~Ìx{ˆ˜øÙ¿ñ×�çKÇ›®Ž` µ¶.ïÎg—²¬^c9Ê×£þÑÒþLBâ9ñc¾á ¾Ÿ�ïsãûÜäè)R£”U{i^oï¿qv)ËZçµ¹þ¾¯ ¾Ÿ�ïsãûÜø>79zŠû�ûâìRßèçnÎSý› 3–Ñ+RNí£Ö‚/òE¾È‹… æ«krôìgãûÜø>7^ÜÜ×›ÿ QÿÍhÑoÔïï÷ð‚ïgãûÜäè)*h|ˆÛæ›nÜçÃfO1šUL{ÑÂwý~ŠdÕ^þ×›ÿé\ðýl|Ÿßç†`ÄêS µ@\clþ'Dý7Ýšù£¥EwG·–åµ;4y(´ÐîÐΊä/øneÁ÷n ±ú”b�’ÍòYOS;þÚîìâÚ»ñc¾¡þjæH™Å}K…¿Eom„´y ¬¯2ù.âÇ̪̊˜¼SúõFVdV3ZÞ�'öŠâ&!yçë 19Ê×óî<¥_O�›×è¡þ‹` µ¶.n»®µŠ³KY”OuRa©Y>ºõ¸iõh­ˆ äÌ”YÜ71©ÞÝzÜ,ÓVq6Cg«ìNc¿5šœè7Å7³‹4;®�‹ ß•óîgôõCL¬¯§g³´:‚AÖWq¼ ‚�žÊá÷= 1)œÍ¢ÏS„ùjF‹k¿G7 É^ûØA¾™�ÛSÁ jm]ÞýŒ¾~Ä5ÆæâÇS5ó?Q¿M�ŒíÆ�§þ*ÂKyËhk–ïþT¶DÓ"þ¬ŸcµÞBº`Áw+ ¾w[ ˆÕ§ZZtwtkY^»C3%�²¢7TûS¿ÖÙS�µ;,+vN†E‰f(,)[¶à»•ß»-ÄêSŠn ,K¬bU¢Ù­Y¾Ãr=ÍXR ÝQ¶{ÁX.�ý»¡ÚŸîNV™ïµ¯‚ïV|ï¶@«O)ê×:%�°ìXhwùËNù´^yžî²š–<–”-›íNVÚYÑ¿ªýß­,øÞm� VŸRÔ¯uö¬×i=ÍîOeµ;|·²à{·ß»- ‚=Ej]clþ'Z)gá�ùª†=ûÙø>7¾Ï�ﻟÑ×a}ÇË é©Î|uML Çþ“w?+Â|5£Åµß#ˆ›„d¯}ì‚`„õU_îBz*‡«_§W+1Q¿M�Žý'~<õW q“�ìµ�] ‚¡ÖÖe¼ùûÕ})ûOüxê¯Y½Æ¢ìèôj•Ñ2é^ûOtzµBrfÔ¯Ó«U¹¥˜TïˆúmzD·7î2�ÊšˆI¹µ¬Ú‹s6‚ø13éžN¯ÄÄÏþÍô™t/Ž�è«Ýzܸ ˆ§UÖDLºf�Vùþ+ç›föRLþ† ~ÌLº§Ó+1±¾žrجßLºÝzܸ¤kvùfv¾ifŽ`¾if/…µ~sãµ¶.®16ÿõûû†j\c6¹ã†Z[Wðýl|Ÿßç† GO±p�` µ¶.öSÿÈvç¹/ó?y÷3úú‘óTÿF?æBz*Þæ~LWÒÜ$ñcº:‚AÖWq¼ ‚�žÊáÌW—b²Ýyî óÕÒóTÿF�¼ûYF‹k¿G7 É^ûØÁ ¼;žõRX_Åñ¥ˆ‰úmz¤8OõoÔ)ÄMB²×>vAg«ì"&”ì¢A¾+çöÔ1±¾žr¦ÞÞ@g«|Ø7ùf¡mû>ñ´ÊÚ¾‰˜°Y¿¡mû¾¸é/mÛ÷‰§U>_n"&®ýýÌXvDÏhÙcÙ‘%‚|³¸Ÿ"&ºõ¸qÿ@ÒS9|Ò=�^•[ŠÉ¹~¨Õ~!=•�«_§W«rkbâýÜE ­ÙKa­ŸÉ™ˆIõŽÌøF?w£[�‹ ÎVù°o"&lÖohÛ¾/nú‹ ß,ß4³» ˆ§UÖö Á |ÓÌî"~Ì^Žˆ‰n=nF˹~tFõ÷rDLÎõ£sÊe‰ êïe1ñ�~î¦\–rÜ‹1Ñ­Ç�ûGÖÏA¾ÿÊ!­ÙK1Q«ümä´ÿ"é½™)b2Ó5;‚ø1{9"&Dý7ã>¦þ9ÚC0†Z[—¯§Æ�³KYôéê-¾ÑÏÝåëß4³?ÖW™|_ŠÉ;¥_odEf5í¾×ž˜¨Uþ6²Ç²#Kq¶Ê‚|³œ§ú·Õ ‚Ûî{í ë«8^AHOåðûÞRLН×þjæ«-®ýAÜ$${ícùfvÞÏz‰`ÎSýÛêÂZ?ŽO±i¿E1ñ³sžêßTB0†Z[Öú7ö|#m]5Ÿþu£½Œ©“õ�ÒÜ$qíݬڋ›„x!9Ùk—bR½#_ó±ø‘¾/ó<� ¤§røÚçb¢þs{Qÿhé»ñ2träÌ“#b²‘”‹úÏí¥k|£Ÿ»Bz*‡÷¯:“sýPÿªýBz*:_.Љn=n\£ÿ‘ òM3;ê÷ã¾"£åë©qÄ�™™Uq“�¼óõ†˜åëywžÒ¯§ÆÍkôPÿE0Âú*Ž—AÒS9œùª†˜“�œöß"ìz?«AÜ$${ícƒp{jÈ7³³×Ö‰‰³Y¾æcñ#÷ÏÁ j�Òòî<¥_O�g³ŒVºz�å(_�§õ×è¡þKÁHŠ™Õ"]³gÕ^Þ�‡§k–Yµ—¯§ÆE0ï|½!¤§²ñ]ÄDýjÄ_7ÚK×ìâ7râ¯í!é©l|1Q¿oºzºfG¿‘“ñ¦«#é©l¼Ì⾉‰úÕÈa3ó<Ÿ®)³¸oâ7rrØœç!Òš½&d#'‡Íy  ‚°Ö�Î7a­Ç ‚¸IHü‡M1ñwä°™yžG0B6r2Þtua­�oÂZ?Žq“�ø;Æ«‹‰¿#ãMWO%ƒ d#'þºÑ‚°Ö�Î7a­Ç ‚¸IHüþ:1ñwÄ_7ÚK%ƒ ä̬ȬŠÉ»óDk*tÝ+"H{3A¾ÿÊ9¾þõ†˜ü�r¾žÁ ˆ›„äÝyÄäÝy2ó®kï H{3SÄäÝyrßk/Zä»rª­�wÄäoAX_Åñ2Bz*‡ß÷ÖĤð�~îæÝyŠÜ÷Â|5£Åµß#ˆ›„d¯}ì‚ ßÌÎí©�`ޝ½!n’¯§Æ“¯SERTED, (36 CHARACTERS MAXIMUM) OR FOR NO COMMAND. If COMMAND LINE has N characters, where N > 6, first use SETUP.COM to establish (N - 6) dummy characters in FUNCTION KEY 0 (zero). This will avoid disastrous overlay of FUNCTION and ARROW §ÆÍÌ»®½ƒ íÍL“¯§ÆÍ}¯½hE�ïÊ©¶vÞ“¿!a}ÇË é©~ßû\LŠsýÈ×Sã¹ï…ùjF‹k¿G7 É^ûØA¾™�ÛSÁ T[;ï93ÞB6râ¯í!ˆcvˆˆÉýOÚ*ãMW�Vùþ+ç›f¶†˜ü Á ÙÈÉxÓÕDý½lâ7r2Þtu1oºz*¥ÜÁ é©l|_ÕÖmbâ¯í¥Rºfý%Â7Íl Q/›ˆI¹%‚ø�œøëF{bòîú~öoüu£½TB0B6rrØœç‰Éa3ó<ŸrY®-"驾\[D�3O‚�žÊáKEY information but, also, will render FUNCTION KEY 0 unusable. COMMAND ?: $ **** COMMAND INSERTION COMPLETE **** $1¼ ÍÍþÊ:þ`úšÖ ÖAú¤þú¯ ÍÉOÅ*Åí°ÁÍÅ ^#Vë^#V{=2×>2ØÍ=:€ þÃÊï 2ÍÃ: âÍ ßÍ:k”´¸obrÿ“¶Š³Y´"kýL~Ä1;‚|ÿ•ó·qÿ#&CÖú™ü"ˆcv‚|WÎý�³‚AøÛ¸ÿ¿‘“Ãæ<A¾™Òš½&&§å¿½ÝháþÇÙLÞÁPkë¢Ó«Õ}žÇ�öfõfþ'ìz?«×SF0ýë†N¤öÑÄno¨ö§­¢«æÓ¿n´—1urü%Ç×åøh ø;Æ«ËñÑ@ðwøëäøh ø;›r|4Þ�GŽ�Â×SãÊñÑ@0Þrôì"&…¿n´çcß—ñ¦«gýe�°"³*GÏ.bâl–wJ¿ÞȊ̪A0þºÑžœ¯ìãMW—ó•àÆ2 ÖÂ2 Ã*O !á~þ`ú!Ö # ¯>2ØÍ= RÍÃ!"Ù!"Û!€ "Ý*ÝDMÍÎ*ÛDMÍÈ*ÙDMÍË:ط€ÍÑ·Ê’ ÍÃ:ÍÔ·Ê’ bÍÃ::×*ٽ¦*Û#"Û!ÿÿ#"Ù*Ý€€'z¼Â¾{½ÊÄ"ÝÃOÉ ^#Vë^#V{=2×>2$Êï 2ÍÃ: âÍ ßÍ:á°9Ï“ó•Á ¨_§W+9z4>ðAŽ�ƃpß[Êѳ\ãË5¾\ãÅ×k•R ¾Èù"_ä‹|‘/òE¾Èy±p�pß[“£g?ßçÆ÷¹ñ¥¾ñnãÅQ¾žwçÉ}¯½‚/õ�8ßÏÆ÷¹ñbáá¾§!GÏ~6¾Ï�ïsãK}ãÜÆ‹û^{”ãìR–¿�Øïúû�´?¾ÑÏÝAŽž"GùzÁ—úÆ?œ�ïgãûÜx±p�pßû\Žžýl|ŸßçÆ—úÆ?¸�Gùz¾ž7÷½ö ¾Ô7þál|?ßçÆ‹… ƒ ÇçÃç~LWG�û„…¬i‘d#'‡ÍyàÆ2 WRONG!$ lDISK READ ERRORm $ lERROR: CP/M NOT PRESENT ON SOURCE DISKm $ lDISK WRITE ERRORm $ÍÔ·Ê’ bÍÃ::×*ٽ¦*Û#"Û!ÿÿ#"Ù*Ý€€'z¼Â¾{½ÊÄ"ÝÃOÉ ^#Vë^#V{=2×>2$Êï 2ÍÃ: âÍ ßÍ:Ã~ AUTOMOD REV. 1.1 PROGRAM TO INSERT A USER SELECTABLE COMMAND LINE INTO CP/M ON DISK, TO BE EXECUTED ON ALL COLD STARTS FOR OSBORNE CP/M 2.2A-00F ENTER CP/M SOURCE DRIVE (A or B): ?$ ENTER COMMAND LINE TO BE INå  ååååÍCAT2.ASM 1/20/80 $Ñ Í!9"²1²ÍeÍ !1ÍÙÚ#!/Í ÍA!?ÍÙÚ#!1? ͬÊ;!?1 Í¡Ã5ÍsMAST CATá ]Í¡ÅÕå\ÍáÑÁ<ÀÍ++NO MAST.CAT++$ÍÌþÊ»þ) ÍÌþÊ»þ ­ÉÍ++EARLY EOF++$ÅÕå!(͸áÑÁÉÍç#ØÍçØÉÍÌþ.Êþ,Êþ7Èw#ÂçÍÌå·É6 #·ɯ2M^ÅÕåÍáÑÁÅÕå ÍáÑÁ·Â3#ÂÉÅÕåÍáÑÁÃ#:MþÌ~:M<2MÍÌþÊ»þ Êl_ÅÕåÍáÑÁÃPÍÌÅÕå,ÍáÑÁÉÅÕå ‘ÍáÑÁ¯2MÉ $~# x±Â¡É¾À# x±Â¬É^#V#N#Fx±Â#~‡G#å~#fo>ÕåÅÕåÍáÑÁÑÅÕåÍáÑÁ·áÂü}Æ€o|ÎgëÂÎá+~+åw+++ø#~ë„g}‘o|˜g~ëþÈ +p+qÉÑ Í*²ùÉ´\ . . å ‘ÍáÑÁ¯2MÉ $~# x±Â¡É¾À# x±Â¬É^#V#N#Fx±Â#~‡G#å~#fo>ÕåÅÕåÍáÑÁÑÅÕåÍáÑÁ·áÂü}Æ€o|ÎgëÂÎá+~+å  vÿ½CATFILBO.ASMF  ßÿºÿöÿ«ÿ¶ÿ¾ÿòÿõÿ°ÿ¬ÿ­ÿ±ÿ³ÿ»ÿ¹ÿ²ÿ¼ÿ¯ÿÄÿªÿ·ÿÓÿ ¸ÿ!"Øÿ#½ÿ%$'&Ñÿ()Ïÿ+*,§ÿ.-©ÿ¥ÿ/®ÿµÿ0¨ÿ1¦ÿ2´ÿÔÿÖÿ354678×ÿžÿŒÿ:�ÿÎÿ9‹ÿÐÿ;�ÿ=<>?ÛÿÒÿËÿšÿ@Íÿ“ÿ‘ÿÅÿ™ÿAÈ“Œm_À7ø~^÷ÙvtŒ¿ûü_s_œ×º®èh@ F“A{^®0'fSƒÑ_&}4Ã\æÄ˜M F“¯éÒÞGwè"_Àòÿ3IíIx¹ŽÌw7›ÓñT˜³É¥˜?:óõzW÷Çõ€IM;fæÄ˜Íòÿ/ó¥5� ïé­ß¬óô 0ÉŒ&Gvd–ÿŸx“äSy^þ+Ï|ã¶z߯ü©0'È“åÿ'ó5ÿz¸î>¡¥_À—K9óGß¼·Õûú‹ó¿ò§òèxY�Š#÷ù?ó_@.ÅüÑIf49²gíyç ×—oq´æ ˜OåIxù¯0…BED’ÿC˜ÿ–ÿÕÿÝÿ—ÿ�ÿ¿ÿ›ÿÇÿÆÿÊÿÈÿoÿÿþåÿˆÿ¯×ºNhéÓuâï{ú?¥/N½¾Â;è#¼Q êúàûÅíf£#8ÂËc”ýx˜£»Ùu'ö'§~|BKŸíMže·߸Zi}ºNÇyÝ'þ&ì'þ¾õ·ënFùVõô^{ìÎë>[ƒñwÛ€ï`Òëx÷™.ímއ9.åžÞúÍ:Þ}´æ´9]Ixù¯0…]Ix¹À0)—’Zží€iä¤;*"²E5¨ëG?yJ{ÛÝQQ0'È“-U|_EGß³uø­JÞ¿r øjy¶§Ôë’ùí·œ·ëŽ�Ù÷Å-ß:‚óuÔò”'ÉŸIŽ`>Õª³̧ò¤æóŸ¬S‡4kÀ$&9"€ù7'æÄ˜M-OyS‡4kÀ”z]2ßÝ^íqlÌ>ÿçÿ¹/n9S«ÌÝøÒ]Ä$I¹”ÔòlÏ|)ï­ôíö›÷ŠŽ>ÑmÓÈIwTDÌÝø¾-U¿8õúzï¿�ôZ4`ï–ª'åR’î"óùOšÌ—�þ�~Bx¾¼îÙÿé}«zz¯¿ý„v1gº(Qï½b€/àLï¥dOW/óßÒ`üH¾)=“=]eðL´¨œ«§õ¾€òÒÙΞ®rΰDñÂsΗù]V'WBô¾¥³}s%šÓð%lÕÇë ï �×=-•KŸøûB~µo…,o]Ý»Ïë|y÷ͶºfZG7_Øêü;@¡¥÷ÎÕž-UÏ|�.«ÓÐÿzï¿o¦©ÿ øæßAÆ ‡kÀ|þ“uæ´ßn¯ö86f÷Z€¹êb²¥êÖñ³H5×-gjø&åRR˳0�œtGE¦‘Ó&¼ Æßmn®Æ:vã;àKÙ¹ü �Åñ0çõþqçu“ã8¹¹æßø~q[½Ï?àû+*?¡¥cw^wÈñîc?¯ûÄþÃï‹#¼ü({ ðõºCŽwßRò”�ã+ºü¾8¡¥“Ž -í!Oß\ºCaøÆ©×çuŸÐ½üjžÑßÜ“[üݧs^7à[xùÕ<£#8>‹cá½O=øfО„—ëÈ7h?¯ûJ³Ñœ=×̉ÙŸðòÌWÅõ€IM{® ˜c6Ç×`j0¶É = /ט³©Áè/ò­FKŸ¦Þæú À¤�¦maæÄlj0z˜|�åÒ§ëÊgÓ0'å  åååá")1Í MAST.CAT translator program, V1.0 Reads MAST.CAT, writes TEMP.CAT. Strips off IGNORE names. Changes all PERIODS to COMMAS for SUPERSORT. ÃÆMAST CATÍ– °Ãø Í2ͯ Ãû Í1ÍPÃÃ6*Âë*Ä}“|šÚ!"Äë*Â{•zœÒ*ÀëÍŸÍ·Â €å*Ä"ÄÃÝ*Ä"€Í!"Äë*Àë*Â}´>È*Ä#"Äɯ2«2¿!P"Â"ÄŸÍ<Ân ]ÍÃ( NO MASTIN FILE$ØTEMP CATS to COMMAS for SUPEUPT.Ãõ*”ë*–}“|šÚ !"–ë*”{•zœÒÿ*’ëÍqÍ·ÂÞ€*–"–ð êÍñÃ( DISK FULL: MASTOUT$å€Í!"–ë*’ëñ*–#"–ɯ2}2‘!P"”!"–qÍqÍ<Âg OÍÃ( NO DIR SPACE: MASTOUT$ÍÉÊ+þ(ÂKÍÉÊmþ)Ê€ÃrÍÉÊmþ €ÍÉÊžþ.˜>,Í›Ë>Í›*–}æ¯"”>õÍ›ñ£qÍ<Âç ÐÍÃç CANNOT CLOSE MASTOUT$Í FUNCTION COMPLETE åÃ(ã~åõ_Íñá#~·Â#ãÉÍ ÉÍÑ ÍÃÍ++MISSING OR EMPTY MAST.CATÍ++NO IGNORE NAMES IN MAST.CATÍ++EOF READING FOR IGNORE NAMES. MAY BE MISSING ")" AFTER LAST NAME.  åÿoÿ‰ÿÔÿEGFˆÿH¸ÿIüÿJÀÿKL®ÿM‡ÿNÌÿÛÿ¦ÿÖÿ×ÿ¿ÿOPÉÿ…ÿQÊÿRTÒÿÇÿSŽÿËÿVUÝÿÐÿWûÿ¨ÿÆÿåÿúÿYX•ÿƒÿÙÿáÿÁÿÿþ÷ÿÕÿ½î׫ѣ”§|_%oõ¥]  >y �×% ÙßÀúX×çÝ%Ÿ#Àî÷C"âOéS €°¸K]Lµ±ê´‹;0lÕÆªô`qC™¨6V¥-,Î]kÕÆªtê€Å™ÆUµ±*}Ú€ÅUmSµ±j¬XœóÙª�Ucg^6ÕÆª±Ô‹«÷wª�U§[å]y!¶Ú�aѧ 1 «jc•+/ÄV€„9Ôª�UÄ0¬÷,\«Ž�aÑ'bÖ{¸<àZuDZ†EŸÖª#ת#ÆdXôi­:â^:uÀ•ðU«2,úD Ãzï4…<àZn2,úD Ãz/](äÝj_eXôiÔ£û¦¥è&ó:;>¬—Ï[èlÕÆ*·Ú×Þ³G—൪ÚXåVûÚ[böÈ?\7Bµ±Ê­öµ·ÄìÑ~XÝ®µ¡ÚXU\mŸ¡ÚX• kW·kmF@W^tÙœ=¨êK\n( {KL@í«J†µßµ‡Ò°·ÄÔÕr/37”†½%& ŒÄÜW¥íi˜MÏå^‡Êg]j_U2¬�ø®]õ%P—ƒ½\®8 ©ú(#1÷U@¹íza5 ŒÄ¼FÀª#ê1}J°êÛɰèSÚÀª#ì‚ ‹>�~ºâp»½¾Íé ]åÞoèdÁk YÑ Xu„�–aѧӋXu„=&âO§[ïK’Ú÷ÕÒŠY5ØÅ´– ü—RåV¯P&¡Q|fÊ$t`Øõ~HRž.ÜF€2 �È#@™„ »ÞI_³Ó…{£ÂP&¡Q»P9aüð8{çl§NŸöiƺØÃNº$wHÃË¿÷ñÊ$äVûÚ[böènXnõꬺåZî•Ϥè¼ÿ°Î_en¦êRŠÅþìw>YQW§ó³&}¼óÔÕr¯ºÌ]ݵ^·qÅúÏöBöxýÎ'+Té«óÊK±~HoÑuÙ�6ý;ú�OVDŒ€±ëì¡=�¿³°\>tÑ»çÛí³ž¡oœ.z‡Êä�¶Çß {Ç‘gÇæo/þ�Ó¿èçíOúÙÉìÉægvÿ?Šif.asmZ öÿ ßÿòÿõÿšÿ‹ÿ "!�ÿÄÿ¼ÿ#%$�ÿ–ÿ&‘ÿžÿŒÿ('*)¾ÿ+,«ÿ°ÿ-.¬ÿ/¯ÿœÿ0±ÿ1“ÿ23­ÿºÿ»ÿ½ÿ4™ÿ5²ÿ³ÿ6Šÿ7—ÿ8¶ÿ›ÿ’ÿØÿ9�ÿ¹ÿÏÿ:Óÿ·ÿ;Îÿªÿµÿ<Åÿ=Ñÿ¥ÿ>†ÿ?©ÿ˜ÿ@�ÿÍÿ´ÿ”ÿACBD§ýÜæg=�¿½ç�d’T€º r¹MŠ;¿éoN;Û P›iê*E2Iªóûûy›ÓÅ¿¿9�¡wÏ·Ûg€º ºæ6@m¦SPµ�ÐP—á@ùÜu9Øë’+HqO_þδ =?[rúÌÀÈ€Q$îý½=�Ÿý~<öŸÅI®wÏ0ŠÄÂMÃìEÈÎËOç_�kÛå‡ÒªèŽ?+ê[`*“Ú'P¦³å¤8œg‡[gLJ=ÙüìM(ÿ�’ắW)&¡Ceò@Ûãïì[8ÓP¦³T^ŠÉ¿v…}RÎogLJ=ÙüŒ ¨Ëp -w‘âúɲóòì=30@¹r¯‘u  $ÅýÛ|öÓYðM(w§Úvù´÷·>ùo®³ãÏŠºÂ~öœö[y²O”ÿNÕÄÊZŠCQ®oáL=�¿Ceò@Ûãï$Ê)UÛ.?”R4¼÷wÑÿ•žì„ÓC2`L†ë¾^­ºìµåVÛgª^7 åšHqeÿ™ý¼ýЕɔÿRªºOj—FÀÚvù´UÑVÔ·ÀºÂ~öœö[y²OÔe8ЖsRÜÓÅ¿¿ghöù;?ë Pµo¯1)n³+áå“ÚcXïþ9?K(Û‰$U¼þgÁéagÁ 4E|vÒïd=üd@™ÎRy)–�ÓÙ3t…ýì/8=ìì—ÜÉ´j!E“qÒßïy÷�|ž'” u57 åºIq¨Lho€ìM›ù­ß?{ùúÊ%wrùñMŠÛr—žÃùí·ò³f¿xgÎþ‚ (¿“q°]«×ZŠ;ßïý�ºà“ÚüÖ4Ì^þ¹`ÔÕÜ4”«OŠCeò@Û¨ÁÞ´I‘ßúý³—ÿ¡/ ÜÅÊ%wrùñMŠ>ú,wùá9œß~+?kö‹wæì/È€ò'NÆÁv­^k)î|{¼÷7¿õ³Üå‡çp~wŒ€ºš›†r-Hq¨Lh5Ø›6)ò[¿öò?ô”Kîäòã).'ýo/Ïïìå3³# üNÆÁø°'›Ÿê2hË]¤XìÏæPûÄRy)–�ÓÙ»OVÔ3t¼@åʽF=’âi=oóÙO¿•'û)e«HREûÏ3£=�¿oÞsøFÀXMÌ¡¬­Šëñw¨Lh{ü�}|ÞÞýŸ¶²gþP±ÎÚávëyü*“úöCýþÙ»'ó¿ýdY` N½ÀÚ%CY[µO,•—b8�=CÓÿìP™<ÐÎŽÔe8Ж»HñHóÙ3ô¨ÁÞ´I‘ßšÏÑÛO§ôY “¤”ÿNÕ}R»DŠóøÙï‡ý¦¡—�}ÀåŽ?+ê‡.úý³I�/:T&ô”+÷m#v­^kÀ¨«¹i(×´‡Êä�vPƒ½i“"¿õûg/ÿC_@¹äN.?ž–"}–ÿíåù�½|fv”ßÉ8Ø®Õk u57 å:&Å¡2y =¨ÁÞ´I‘ßúý³—ÿ¡/ \r'—“â¿~úò@ßÞyžTþ»S/Ïïìå3³# üNÆÁv­^kÀ¨«¹i(W'Å¡2y í5Ø›6)ò[¿öò?ô”KîäòãNŠ.Ðùé|ûa¿Ù/Þ™³¿”ßÉ8Ø®Õk u57 åjHq¨Lh€ìM›ù­ß?{ùúÊ%wrùqCŠ—ó;{÷÷_VæIïX/ùûrz¸ ü)®ì¤oœ½³+á}ù.÷ø<”?¹S2¬›“Pù€ª×MC¹nR<õ¿¹~ÿìP™<оyÏ! ü—RµK†²–¢šýåÃ)§‡*“ú’“aݬ€rå^#7’âÊNšþûgWÂûò]îñy(r§dX�“Pù€ª×MC¹:)žúß\¿v¨Lhß¼çPþK©Ú%CYKÑ Íþòá”ÓÕÉ}ɀɰ:+ \¹×ÈIqe'Mÿý³+á}ù.÷ø<”?¹S2¬¦�™‘U¯›†r5å¿”ª]2”5`2¬¦P®ÜkdŒåOî” «¨zÝ4”«(ÿ¥Tí’¡¬“a5¬€NÆÁv­^kÀ¨«¹i(×RŠCeò@»Ô`oÚå’;¹üx)Å’ý÷Óì7ûÅ;sö½³ëÀÚØ P~'ã`»V¯5`ÔÕÜ4”ëEŠCeò@û¨ÁÞ´Ê] \r'—/¥¸<¿³w_øûrzØ;Ó0»Ü PþÄÉ8Ø®Õk u57 åšH1 *“Úg/ÿC_@ ö¦ P.¹“Ë�'RÜèIW¶ìPÔÿþìWfïz-”ßÉ8Ø®Õk hl×ÕöY×ãïùßùöñ!ýýx^ÒÇ;?ó/z²ó'*š¡çñ7ý÷Ïö8ýÍiÏãï÷¼»ä³oÜû€Š{Úa?ërå^£ËPþäNɰ^U¯›†r½Ê)U»d(kÀdX/V@¹r¯Q9”?¹S2¬% êuÓP®% ü—RµK†²L†µ´Ê•{�|#@ù“;%ÃêT½nÊÕ(ÿ¥Tí’¡¬“aõYåʽF… üÉ�’a-ª^7 åZ”ÿRªvÉPրɰ¬€rå^£ôPþäNɰ¦U¯›†rMÊ)U»d(kÀdXÓV@¹r¯ÑØPþäNɰŽª^7 å:(ÿ¥Tí’¡¬“a³íº7­€ª×MÄfå*Åú!ý=�¿Ãíöéâ3@¹ò¢K],Glæ¥.¦X2NgÏ�-Þ\/BÓ0�œ’ ËýjT9”Ê+Þ¢ßùdE] œÎÏU—ù«íÿþÙ3ô§“�ô;Ÿ¬P¶±JÑþóÌhÏÐΕ€Ð8Ø®ÕkmTÜf{ÿygú{þwöíáÞ_�ÛþË@ú{Óÿl�Óß7–€Šóøû=ï.ùì÷>PP®¼h(“\í#ªû«¡8T>íyü} I*rí#úƽOÔ>±µIqýïlöç™ÑÎÂâ“å¿Sí# Û–bfïàóÈi?M®}D߸÷S¤ÔÕr¯|®öÕýÕ¸Wu„íퟶè,œéü¬o�õ<þþ÷ÏO' Lgë"Å^üŒýçãïåßçðn„‘˜V@¹ò"Ó¸æjQÝ_ E÷Ðì{=�¿ýa÷�ì?K@¹ò¢K],ç¶äRS,§³³‡fßëåßçðÊ)E Ã*E"„Ùóøû=yç_›y©‹Ye •Éí”�‰ÍÊÕ*“PP&¡QÊš†Ù¤�Çä LB£SF€nK.u1+ LB#2I*·%θæP&¡Ñ)#ÀXÝ'µK¬Šëñw¨Lh{ü�}|ÞÞýŸö›=”þ bvtvüYQÏãï'›œôw ÿmNûi/òìñ:°Ågd@]ÍMC¹šR*“Ú& {Ó&E~ë÷Ï^þ‡¾ (ýoïžt Ÿ (ÿEµ�0l[ŠIè[ð¼°ƒÓÃö8ý)R¶Lg©¼×ãïz¬wOæïÔ8¿³w¿v4Ÿ€ºìuɤØüí”> Aî�'{|ò@Ï;Ù P®¼È]ë\í#ªû«¡xZŒÏßÙñ¡‡¿gèg?›���µOlmR\Y8ïz? üwª}„aÛ€ò_J–ûUŠCQ®Ïë§ü=þ0Ö>°m«b–9=lþöèaïàóØóøû’TäÚGô�{Ÿ ¨(W^t©‹åjq©‹)îé-°eŸßÏå¿”Ú#1¥¸ûp¯Ãy’kq©‹YeŒÖO  –ý÷åô°Éµ�è÷>y(“Ðè”`Œ€±óŸý~ØïyüÍÂyrúßÞqäÙ±¡çñ÷“Íóãuè‚OhgÇŸ½dÀØ›çu¸õ<þe³?ÏŒö>�=�¿Sú,ôÍ{ûý³ù­çñwè‚O(`ìùßùÍßžìüsýÐEïàóØóø;{;é›÷öûgó[ßïýdÀh«;Õ*K{Ó¨Ú·WP¶±F@Ó>¨}„U1 ³Ù<蘭žÿ�¹N�ó;{H/'ýýV~Ö7–€Š•‡-Ó=CW¶ë[`}~sÚa?ëùßù*z‹Gó–í¦ßùhÞ²Ý4 "@YÚ›6)~ïý€²�U$©"ûóÌhOvþ€ÐåÇ�UÑVÔ7îýÎ�ŸÎPPn»^åòã›·å.?<óyÒüíå(§‡Þ_@ùïd«;Pn»^åòã¥/çwöîï ûï§3×áÖY8³÷Êv€.?î i«\yÑ�aK1;þ¬¨I?{y €rå^c…¼ÇÈ…¬wÿœŸ¥”ßÉåÇ]ºøRLB®³‡ŽfŸßß/Oé÷íL³Étùq7V°ÊÒÞ´ª^7­UGÜ«:ÂStÞXùá±ÙÏ[ôîÉü€råEõþ.·V¡è²rž¿oÜûýò”> ®–{åskÕ÷ªûS$©¢÷Òß)}úæ=‡ýþ ]~|³*¾ÿ7¿uåaËtó·Ÿå.?<‡ó ¨«å^ùÜZuDú^Zñ�›ý̦Ïòêr°×–¥I1;þ¬¨o�uÊR¤ŒÜIhúÿ¢g‰…cgÇŸõ-°N­ýršýv®‰…cŸ·�þþ÷Wúò@É€ºìår§¹wºG÷“¤–’T#@—ß i«Ü¥ÔEŠüíyäoúûéÜ[d[¤”}'’TqeçßìÏ3£€Ú'–ÊK± œÎž¡é¿v P¦³å¤˜…3�½;( üÉ�\~|+¤¥8þ¥ç'§‡=¹çõ"ÐO”ÿް €º Úr@íKå5Ø›.€Ú'–Êj°7]¤˜Òg¡ß?›ßú/+óPþ;ÙÆêN•"ûóÌhßïý€-K{Ó&Eöç™Ñžìüe+ Ë�»tñ­ŠŸ½<ÐN“‹ß�uðŸµ+S~!wûÏïìEè§Ùd@¹ò"ó²åVÂW­Ê•Um3·V¡hÿgÑõ/ÞùÓÉPƒ½i“âúßÙYX|@Ùw"IÙŸgF{²óT½:‘¤ŠìÏ3£}{¼÷Ê6VÀèòã†UÑVÔ·Àú/+ó¤oÜû€Š€rÛõ*—ߤXOîy½<¿³wŸé³Üå‡çp~å¿“m¬îTRÊ6Vwª«�÷þfžŒ€.?^°*¾ÿ7¿õ‚qÒÿöò™Ù‘ (W^ä|¶«œ.:œgggÆ>�½ø·çìM@í[›MÆIo½û³°üo§udæ6)šÿöœ½Ùœ¶ ¨«¹i­:" ¨ÁÞ´I±þ¿ù­Ë‡-Óý>'o/þí9{PþäN.?^(¤u´åL)ÖçÝwòyž¿³3cŸÎ^üÛsö& Ë� i«.Ã�ˆÜ&Åú!ý]>l™î㤿9mPWsÓZuÄ {Ó&Åúÿæ·.¶ë÷9y{ñoÏÙ›€ò'wrùñBa P—á@[ÎtùñBaÌ*w)EH1 @¹íz•Ë�—RÜßzÉß—ÓÃ\g�ç5Ÿý—•y(¿“m¬wö(·]¯rùqWHK1;þ¬¨o�uèüt¾€òßÉ6VwªÙŸgFûöxïï�i˜ý—•y² ,íM lcIªÈþ<3Ú“�÷ÎY™';F@—O¬ŠÙñgE} ¬zÒGNg‡[?]yØ2ÝŸNv¨¨«¹i­:BŠeàtö ½`œô÷[ù {Ó(r'ÛXïìAŠöŸgF{²óï[`ýГ^0Núu57­UGÜK P®ÜkÔ#@ù“;ÙÆzgR´ÿ<3Ú“�ß뇞4}–P®ÜkÔ#@ùïd«;ËÊÃ~ïàóØåÖ�”}'’T‘ýyf´';@ù/¥lcu§J‘ýyf´o�÷~Àèòãi«¢ ËÊÃ~ÓgùûÆ¿·xûX?½|fv$*êj¹W>·V‘¾—ÔÕr/3·V1v/ ¨ËÁ^.w@—OÒÖ¾š›¥L)þÙ•‡-Ç:;> P®Ük”b$ÅìXÔ;¸·”ÿN.?ž.ŒIq²ÿÌ~Þ^>3;ê2ˆÈm€º Úr)þÙ•‡-Ó�(Wî5J1’bv,êÜ[Ê'—OƤ8Ùf?o/Ÿ™å.¥)faYyØïtïàóØc€ò'w²�Õ�*EûÏvÿ{ÿAPPEND.ASMK ßÿ šÿöÿõÿòÿ–ÿ�ÿ‹ÿžÿŒÿ�ÿ! “ÿ‘ÿ™ÿ"�ÿ#%$&Šÿ(')*Óÿ’ÿ+œÿ,¬ÿ.-›ÿ/¾ÿºÿ0Äÿ»ÿ1¶ÿ¯ÿ235476¼ÿÏÿ«ÿ—ÿÑÿ89˜ÿ:;†ÿ�ÿÍÿ³ÿÆÿ<´ÿÎÿ>=A?CB•ÿ@ªÿÅÿ·ÿ²ÿ½ÿ±ÿ§ÿ¥ÿ…ÿ­ÿ‰ÿ‡3£}{¼÷ºüxº0fÕ>±” ¨}b©< LgËÊŸÜÉåÇÓ…´‡¢~Cß–ë¢ÿ+}8=”¥½i“bæý‡uö0v’ë÷ÏNé³(ÛX# Ë��Y]XVöûƽ?O*ÿíçíg7�~@E@]-÷ÊçÖª#Ò÷Ò÷N¨«å^fn­:bì^úÞiu9ØËåN—b} l~ÖÞ§‡ó(ÿ¥”Ë�§ i)v˜ÇÏvð÷÷û,?Þa`|—€0ºüxiUtÇŸõ‚³ŸÍÀNúX߸÷åÊ‹†2É­UGjŸØÚ¤8ÿ;›ýyf´³°ø€òßÉ6VwªÙŸgFûöxïoÿEŽÿHGJFIDÃÿÁÿ®ÿÉÿËÿØÿÌÿoÿÒÿ”ÿ¨ÿåÿÊÿÖÿîÿ×ÿÿþ°ÿµÿˆÿúÿÛÿ§ŽGºùÔ êE•¿Ïæ/à„×G–ˆß­~¥Ç¶ó×ÎñÂís¼>ö�dg Ú_•¿¬"�åùjŒ‹1OÐÍ'\‚Uä±4­nà@@KŒ›ü¤ý áõ‘¥ÊßÛ-¸1¿2Þåx1?r¿>�…… ãf@yö{Äå(ˆßµ²ìUþnŸãõ2y‡~gãE–hË÷½RM|9ö�”/ñ¥±·i`\\ž •¿/qr¿±ó2’Yðx¦°HM  .�åî0._?0/v‰7PÍ�1OL6]Tù;y,Aîêx¤›Ox–»£-¼¡ò÷µlSÚíaûXZ°ùšéš�±îçg»Ÿó­?°�**_ Yª¹ êx¤›O �å9ÈciRQñ¾´ìYò÷»&“JS}¨¤�Þ²„uÓŸ­**~¿*Î§Ó¹Š›+¾ÐMUüD�¼>ªx½`>y=£&g*n®8x}ìê59SQqòXúãä±ì�]wÞuMõ¡’VqòXz‰1¹ÑÝ}Ä®3u]S}¨¤UTÜþ+(*Þ_;X»¢¢Âî�Ë^Í�Ç£Š·ñ!/Qñà÷þ†Š·}„UÅûkkWT|…Ûå ½|¨x¦Æ\ÅWlvoô?ŒË×{d¯-#Q¸mù¾Wª‰/Çþñ ¢Ò^>–=îwQÅWúvoTQù½¿±ìäñp÷UTèŠÃÌÍ æ“×3jr¦âõqÁ¬â¶ôLEÅOµo4õ=£&g*õŒšœù韪XwBò NoY†*žÜPùuíf›iœ;ÐQ“Ø~' Ïtú�ì`æ¥Ï´ôÜý§þ+Û6Tí¿Úc×.uW.Brô±“ˆFÁ�g%ŠàF�´w„™!ñ_e•_ëµq±” ”t¬×/ÌÿÊB·ºy"WÿUÛ­ºÿê¨Z)ãÜ�ÄC¶.Ñ.ÔÖ!9"V1VÃ~#  É!\$ Í ÃO» ͵ Ãû Í  à ͖ þ8Ê{ æÄ‚yæ0°Ãø Í2ÿXû ÃÆ*Kë*M}“|šÚ¯!"Më*K{•zœÒ¡*IëÍ$!ͷ›*E#"E€*M"MÃf*M"K€Í!"Më*Ië*K}´>È*M#"Mɯ202D!"K"M$ÕÍ<ÑÂý ïÍà NO INP FILE$$å$Í!l Í Ã> É!\$ ÍÃO» ͵ Ãû Í  à ͖ þ8ÿXĂõ*:ë*<}“|šÚž!"<ë*:{•zœÒ�*8ëÍ!ͷŠ*4#"4€*<"<ÃU*<":€Í!"<ë*8ë*:}´>È*<#"<ɯ223!":"<ÕÍ<ÑÂ%>2X!"<Í<Â% õÍà NO DIR SPåACE: OUTP$!":*<}´È+"<*4}´È+"4Éîõ*:ë*<}“|šÚž!"<ë*:{•zœÒ�*8ëÍ"Í·Âr*4#"4€*<"<Ã= ~Íñà DISK FULL: OUTP$€Í!"<ë*8ëñ*<#"<É#ÍÍÍAþ¹Í ¯GÍRþÊÞ¸GÂØþ ÊÆÍ(ÃÆ*<}æÂê":>õÍ(ñÂÞÍ<Âå  Íà CANNOT CLOSE OUTP$*VùÉÉîõ*:ë*<}“|šÚž!"<ë*:{•zœÒ�*8ëÍDISK FULL: OUTP$€Í!"<ë*8ëñ*<#"<É#ÍÍÍAþ¹Í ¯GÍRþÊÞ¸GÂØþ ÊÆÍ(ÃÆ*<}æÂê":>õÍ(ñÂÞÍ<  å the bad blocks so CP/M will not use them. Originally written by Gene Cotton, published in "Interface Age", September 1980 issue, page 80. NOTE -- Ron Fowler Westland, Mich 7 April, 1981 This proågram has been re-written to allow it to work with (hopefully) all CP/M 2.x systems, and most 1.4 CP/M systems. It has been tested on several different disk systems, including Northstar, Micropolis, DJ2D, and Keith Petersen's 10 MByte haård disk system. I have tested it personally on my "modified" Northstar, under several different formats (including >16K per extent), and have had no difficulties. If you have have difficulties getting this program to run, AND if yåou are using CP/M 2.x, AND if you know your CBIOS to be bug-free, leave me a message on the CBBS mentioned below ...I am interested in making this program as "universal" as possible. I can't help with any version of CP/M 1.4, other than "st FINDBAD.HEX ver. 5.4 (revised 05/21/81) NON-DESTRUCTIVE DISK TEST PROGRAM FINDBAD will find all bad blocks on a disk and build a file named [UNUSED].BAD to allocate them, thus "locking out"andard" versions (whatever that means), because there are just too many heavily modified versions available. One possible problem you may find is with the system tracks of your diskettes...if they are of a different density than the data tra  cks, then see the note regarding the "SYSTST" equate. ------------------------------------------------------------- NOTE: If you have any difficulties with this program, please contact the "TECHNICAL CBBS" in Dearborn, Michigan - phone 313-846-CKS 104 FF F ;PUT [UNUSED.BAD] IN USER 15 105 31 . ;DONE WITH CHANGES -^C A>SAVE XX FINDBAD.COM ------------------------------------------------------------- USING THE PROGRAM Before using this program to "recl6127 (110, 300, 450 or 600 baud). ------------------------------------------------------------- SYSTST and BADUSR options: Many double-density disk systems have single-density system tracks. If this is true with your system, you can aim" a diskette, it is recommended that the diskette be reformatted. If this is not possible, at least assure yourself that any existing files on the diskette do not contain unreadable sectors. If you have changed disks since the last warm-bo change the program to skip the system tracks. To do this, set the byte at 103H to a 0 if you don't want the system tracks tested, otherwise leave it 1. This is also necessary if you have a "blocked" disk system; that is, when the same ot, you must warm-boot again before running this program. To use the program, insert both the disk containing the program FINDBAD.COM and the diskette to be checked into the disk drives. It is possible that the diskette containing the  physical disk is separated into logical disks by use of the SYSTRK word in the disk parameter block. If you are a CP/M 2.x user, you may assign the user number where [UNUSED.BAD] will be created by changing the byte at 104H to the desire program is the one to be checked. Assume that the program is on drive "A" and the suspected bad disk is on drive "B". In response to the CP/M prompt "A>", type in FINDBAD B:. This will load the file FINDBAD.COM from drive "A" and test the d user number. If you want it in the default user, then leave it 0FFH. CP/M 1.4 users can ignore this byte altogether. Note that these changes can be done with DDT as follows: A>DDT FINDBAD.COM -S103 103 01 0 ;DON'T TEST SYSTEM TRA diskette on drive "B" for unreadable sectors. The only allowable parameter after the program name is a drive specification (of the form "N:") for up to four (A to D) disk drives. If no drive is specified, the currently logged in    drive is assumed to contain the diskette to check. The program first checks the CP/M System tracks (0 and 1), and any errors here prohibit the disk from being used on drive "A", since all "warm boots" occur using the system tracks frest that if the diskette has more than 32 "bad blocks", perhaps it should be sent to the "big disk drive in the sky" for the rest it deserves. The nifty part of all this is that if any "bad blocks" do occur, they are allocated to [UNUSED].om the "A" drive. The program next checks the first two data blocks (groups to some of us) containing the directory of the diskette. If errors occur here, the program terminates and control returns to CP/M (no other data blocks are checked sBAD and no longer will be available to CP/M for future allocation...bad sectors are logically locked out on the diskette! AD and no longer will be available to CP/M for future allocation...bad sectors are logically locked out on the diskette! ince errors in the directory render the disk useless). Finally, all the remaining data blocks are checked. Any sectors which are unreadable cause the data block which contains them to be stored temporarily as a "bad block". At the åend of this phase, the message "XX bad blocks found" is displayed (where XX is replaced by the number of bad blocks, or "No" if no read errors occur). If bad blocks occur, the filname [UNUSED].BAD is created, the list of "bad blocks" is placÃ1eÍh FINDBAD - ver 5.41 Bad sector lockout program Universal version Type CTL-C to abort $Ñ ÍͦÍÍAÊ}Í6Í®> ͵ç*þ|µÊ–ÍŒÛ Íê ÍÃ*" "x"p"{ "À Í|µ2ÅÂå*."À:\O·ÂôÍ*͵ÍÂ!"ñÁÉ*ë*DM Í¿:´·Â»g"ÉÃÅÍÔ Bad block: $Ñ ÍÁxÍ/yÍ/Í®* :¶<_" *þ#"þ* q#å:¹·Ê p#" ÉÆÍÉÆÍþÿÀÃj¯:Ôæ2ÔÆÍÉ!e" :·ÍX!€y·ÊQ)=ÂLå:µGÍdÂV}2Âáë* åÍDMáÚ‘x±Ê†`iåÕëÍ‘ë" ÑáÃfëÍ‘ë" !å:<22ÒÍá€ÿ|µÊ¼Úª€|µÂ¼.€:€22Ò}2Õ:ÂG* ë!Öw#:¹·Êäw#ÂÕÕÍ$ÑÉôÞ Drive specTHIS FILE IS FOR PEOPLE WITH LARGE MAST.CAT FILES WHO WANT TO USE AN EXTERNAL SORT PROGRAM SUCH AS SUPERSORT RATHER THAN THE INTERNAL SORT IN CROSSREF. IT HAS THE SINGLE FUNCTION OF READING MAST.CAT AND CREATING FROM IT A FILE 'TEMP.CAT' WHICH IS IN Tifier out of range$ +++ Warning...System tracks bad +++ $CÞ Bad directory area, try reformatting$pÞ Can't create [UNUSED].BAD$ÅÕåöÿÿÿ Ú• ë|µÄŒ{Æ0͵áÑÁÉ> ͵> ÅÕå_ÍáÑÁÉ*.Í·È*. ÍþÀâ Íà Test aborted by control-C $HE FORMAT FOR SORTING VIA SUPERSORT. THE 'IGNORE' NAMES ARE DELETED AND ALL PERIODS ARE CHANGED INTO COMMAS AS PROPER SUPERSORT FIELD DELIMITERS. é*eÍDMë6# x±Â É}“o|šgÉ}/o|/g#É~#Â&ÉõÍ8ñæÆ�'Î@'õ:¼ÍX:½ÍXi&"ÃÉÒ_ ÂZÉ·|g}oÉ:Å·Ê|³Í&É*.:^#ë"³ë^#ë"ºë~#2µ~#2¶^#ë"¸ë^#ë"¼ë^ë"ÀÉ> ÅÕå_ÍáÑÁÉ[UNUSED]BADÀâ Íà TesNo$ bad blocks found $********** ; AUXBUF EQU 201DH ; CP/M AUX CMND BFR ST ADR (BYTE CNT = 1st) ; ORG 100H JMP START ; MSG1 DB 1AH,' AUTOMOD REV. 1.1',0DH,0AH DB ' PROGRAM TO INSERT A USER SELECTABLE COMMAND LINE',0DH,0AH DB 'INTO CP/M ON DISK, TO Bÿe total sectors read $T HLT CMC STC CMA DAA RAR RAL RRC RLC NOP CPI ORI XRI ANI SBI IN SUI OUT ACI ADI CALLJMP LDA STA LHLDSHLDMOV ADD ADC SUB SBB ANE EXECUTED ON ALL COLD STARTS',0DH,0AH,0AH DB ' FOR OSBORNE CP/M 2.2A-00F',0DH,0AH,0AH,0AH DB 'ENTER CP/M SOURCE DRIVE (A or B): ?',8,8,8,'$' MSG2 DB 0DH,0AH,0AH,'ENTER COMMAND LINE TO BE INSERTED,',0DH,0AH DB '(36 CHARACTERS MAXIMUM) OR   FOR NO COMMAND.',0DH,0AH,0AH ; db 'If COMMAND LINE has N characters, where N > 6,',0dh,0ah db 'first use SETUP.COM to establish (N - 6) dummy',0dh,0ah db 'characters in FUNCTION KEY 0 (zero). This will',0dh,0ah db 'avoid disastrous overÇï0$€xÃðI¿ðJ!ñðLPHA0&˜1p=`!UðLp!ðO´0‚HðP° ðh0ððQHJ0=ðR¸#0"0gðS°0(B„ñ„ðTP #0"€ðXDð0"ðU@0Ÿp«`[¥ðUp‘ðW`q«ðX ¿ðY ñðZ€€0 ENTER DATE: Z91+YES xð] ‚¿ópù°0ð^ˆðlay of FUNCTION and ARROW',0dh,0ah db 'KEY information but, also, will render FUNCTION',0dh,0ah db 'KEY 0 unusable.',0dh,0ah,0ah ; DB ' COMMAND ?: $' MSG3 DB 0DH,0AH,0AH,0AH,'**** COMMAND INSERTION COMPLETE ****',0DH,0AH,0AH DB '$' ; ;**** PRÁP @ 0jÀ 0v€YES 1 , xUðc`ãðdXAEðà PÀðXBððPB0&ð€, 0 x¥ðg@0j0ewPH!0˜�PH!0˜�@0‘p�`¯ïðgpaðk`óg€1+5+YES xïðn�Á0’°0v ðoP !0`ðXCð0ðp° 0j0ðq`ã€1+xgðt@00INT HEADER AND REQUEST DRIVE ID START LXI SP,STACK ; LOCAL STACK ; MVI C,9 LXI D,MSG1 ; HEADER MSG/DRIVE ID REQ TO CONS CALL 0005 ; RETRY1 MVI C,1 ; INPUT 'DRIVE ID' CALL 0005 CPI 03 ; ^C ? JZ EXIT ; YES: ABORT CPI 60H JM UPPER SUIeðu° 00‚ðv° 00ðw°0‚H„ ñ„ðxXA0ðy´0‚HðzP "0`ðXCð0ð{PHB0˜g`³€1+ 59+Nx«ð~P 4B0€ðXDð0 ð´„ð€Žb0 £€ñ„€65+M xðƒ`q«ð„¸#0"0gð…°0(B„ ñ„ð†´„ð‡ñ„ðˆXA 0ð‰P # 20H ; MAKE UPPER CASE UPPER SUI 41H ; CONV A or B TO 0 or 1 JM CHERROR ; IF NOT 0 or 1 CPI 2 JM DRIVEOK ; CHERROR MVI C,9 LXI D,ERR1 ; 'WRONG' MSG TO CONS CALL 0005 JMP RETRY1 ; DRIVEOK MOV C,A PUSH B ; SAVE DRIVE # ; ;**** MOVE PA 0"€ðXDð0"€Z9 2+1+€€ë à 0+x<×Cd6kŽkª=×@ë!>¥d§P|"c8Wº%6E¡e¤@ó>¥D×8P "O "c8R×%C«%C™C€6k@"<×Cv@ë<¥@�k42R«k@"CŠ6>™@ë"`¡'jZ>¹@0MAST.CAT P )Ÿ¹d %i@"dé<éCù/@ç!l%DÖ$Ã÷NO 1 02001 00MASTER CATALOG AS OF PAGE ÆÊE“F%E™F'E�F)E¥F+E« i0þE%F“E'F™E)F�E+F¥E-F«i1&00Ph¨˜p�x€3¡LISTCA!ÿÿÍDØ$$kìEŸ@Â"@ê#@Â"@ê#@ê#@>%@°"$?XÔ$EÔ$JÖ$M�"FÖ$@�" QÃ]„%A§%Bž?éEž2F¯@´kÆ>§Dëd¥O#XëPþ"c8C¨?í@#Cº%?í>ë8%Ch6'Cë%C«%C­%C™%C›6kŽkª=ë@>#>í6=Ã@æ$Qà ZxAæ$ZÜ$A²#ZdAG$$=Ø$@e#kn#RØ$QÔ$@>#Ý#EÔ$\¼2Z0S­#\Ð0S­#`Ô$U h¼  2G¼2h„CAJÖ$L¯#@ˆ#$in#kŽ%Cé6EÔ$\¼2Z0SÐ#$k7G¼26ks$=Ø$@á#kn#DØ$<Ã@�"@æ$ QÃ]„%A§%Bž?ék–E™J›=¿S$>¿% C„6kŽkªRë@>#'C„e›F½P>$c½X½C¨6>½@$E›F™@6$>ékp%kŽ%W6c6¤6Ó4I5¢5�5T5M455ÍÝ ¯2 2 2 2 2 2 ?™?¥áV#^#{æ2× ë))|æ2Õ )|æ2Ö ëÍô"1áV#^#ë"Fë~#2Ú ~#2Û å:Ú Ò¤ æ>2Ü !"Ø áÍô"JáÍê 2Ý Íê 2Þ å*1"7*F"9Íð á *Ø #"Ø Í! á Ñ Íz :Û Òç æ~2Ü áÍê 2Ý Íê 2ß Íê 2Þ å*1"7*F"9Íð Ãç :ß *7wÍ! Ãç Ã× ÃPÍô~áÉ:Ü æO!D ^ 2 2 2 <2 2 ÍH ! ^#Vëé7aÕ¯ ÅÂu½ŸˆŸW: ·ÂP<2 : 2 > 2æ Ã/ <2 Ã[! 4Í* Ã/ ! 4Í* þ Â/ >*2æ Ã/ : ·Â‚: 2 Í Ã/ : þ-Ê•> 2æ ÍP !ç 5ÍH : þ-Ê/ > 2æ Ã/ : ·Â/ : ·Â/ > 2æ Ã/ : ·Â/ : 2 Ã/ : ·Êã: ·Âé: 2 : ·Âø> 2æ ÃûÍ* ! 4Ã#Vë"M:Ü æÊ' *7:Þ ¾Ê! Íi  Ãh Íi Êh :Ü æÊ9 :Þ *7¾Êh :Ý *7¾*Méc Z ` N Â! !"9Ãc Êc Ãh Â! á###åÉ*7#"7*9+"9|µÉ:× ·ÊÊ O*J "9:Ö ·Â• >+w:Õ ·Ê¥ =2Õ >0ú *Ø |µÊ¸  ëÍD"Ø {ö0*9+"9w!× 5ÈÕ *Ø ë*Jr#sÉá#~æ?2Ä#V#^#ë"FëÍô"¤á"¦:Ä/ : ·Ê : ·Â : 2 : ·Â% > 2æ Ã( Í* ! 4Ã/ Íd ÍP !ç 5Âͱ ; ͉ ÃP! 5Â_ *  ~#~#" : 2æ !þÂq Éþ0ò� Ö)O:··:æ Èþ,Š  Éþ.ÀÉ–  Éþ9ž ÉþRò¨ Ö:OÉ® ÉÉ: ·À: æ@Âû : þòÙ : þòÙ : þòÙ : ! ¾Êã òé : æ È !è N* ÍšáÃP!è N*O å*£ ^#Vë"X##"Z*XV#^zÚ:z³Ê:s+r*FÍbÒ:¯Ã<>2®!"•á~2£æW#^#ë"Q"\ëV#^#åcj"b"dá~æ€2²~æW#~æG—�²W~#åæà_:Q³gj"¶*XV#^!½s#r:£æʹáV#^#ë"nëÍô"lë*nDMë Íš:£æÊé!�q>F#ëp#ë=ÂÉá~æ_#V#ë"yë^#V#åë"}:®¸Ê«*XV#^*FÍbÒ« ~þ0 >*w#  áÃP! 5* ~#" 2æ þ1ø2 ÉÍ G: ·xÀ:­þxÊH þ0ÂH > 2æ É: 2 xÉ: O<2 * :æ wÉyþÊr þ Êr þÀ: æ@È: ·À:æ þ À>*2æ É: =úœ : ʱ : ð : þ-À: =ø: ʱ : ==O* : wÉ: =øÊÍ : =ÃÐ : =O* :ÃwÉáãV#^#åCë))|æ2 )|æ2 xæ2 á~Ò *ZV#^s+r*XV#^*FÍbÒ¦:Ä2¡*¦"¨!"j!¡5úƒ*¨~2pæW#^#ë"´ëV#^#"¨Íú"²ÍÂ&:£æÊŽ*XV#^*´ÍZë*¤ë*nDM*´x¼Ú‡y½Ú‡DM*lëÍ�*´ë*j"j:pÒ¦ÍÊŽ:£æ@ÂÆÍ>e.Y"^*¶"`!bÍ]Ã)Í>|µÂå*Q>´´eo"^!`Í]ÍTÃ)ë:²·Â*QÍbÚ>°´eo"^!` : /<2 ~#æW^#åÍú" áÍô" áÍô" * ~2ç 2è ##~2 æW#^#" Kë))): |ÒM /<2 yæ2 ! ¾Âj : ! –Êà Ãq : ! –æG: °2ë : îG: °2ê : °2ì : G:é æþ°2é Í(* ëÍ@!ó " ëÍ9!é å!À " !ÃPÍI: =ÊÝ : 2 O* ~þ-Êß >+2 áãåÉXèQÑ(?«?�?“Í]Ã)*ª"^jc"d:²!QV#¶_ë"f!`Í]!hë*�ës#r!«" !!^åÃP*XV#^*½ÍZë*jÍZÉë!¼"½ëÉå*½ë*¤"½*£V#^ë"�*½ër+sá—w#w###É*•#"•*XV#^s+r:Ä·Â *•ë*\Íb æ*�ë*£r#s:£æÊî*•\Uë"•*£V#^ë"�!•ër+s!ä" !!qåÃP*�ë*£r#s:£Ò?*XV#^*FÍb  Ò >2®*Xr#sÃP*XV#^*´"Ÿ"Më*FëÍbØ*XV#^*¤ë*²¾Àå*Ÿ+"Ÿ|µá#Â:*Më*Xr#sÉ--''-Rˆ XEèP|°Y ####^#V+++++ë#~·ÂÞ!WùÕÍ&2ÑÃê*¥å*Uå*£åë^#V#ë"£ë^#V#ë"Uë^#VO*£ N#Fx±ÊzæWë É>͇O ø¯zW{_Ã*£3~#Â0É*£s#rÉ*£##s#rÉ*£3w#ÂQÉ|/g}/o#Éz¼À{½ÉV#^###z³Ê|~#Í2Ãn> Í2> Í2É2¶!YÍh:¶=O!m Ín*¥Ín*¿ë*£ N#fir#s!ÇåÃPˆ ðhè2Tá##åÃPáá"£á"Uá"¥ɯ2+ *£ ^#VëO þÊ#åë#~#"¥·ÊP2¯*7^#V#"7Õ*¥V#^#"¥zæþÂ>ÍúÑëÍ�ÃIO*£ Ñs#r:¯= áå~æ>O!c ^#Vëé­2!ð!-#N"-#•gDË1ÁL&ÛF1j�§`¨dDUÃë£eD€$fD ã !!ÉB ?H/'--Rß/k– &d >J/kìk ÍzæWë"ÈëV#^#å"9Íú"7:PæÊ¥!"È*È)Ñ>V#^Íë"»ë~æ2¬#å:PæÂæÍ :­=Êà*È+"È|µÂÈ>2­ÃaÍ :­=úÊþÍ :­þò¯ÃDß/>É]ë/AkŠ2>p66>Í6>²,6DÍ@ dè'ÿÿESTCOI.N€€ð€ðð ð°ÿ(Fë>É='%kú1@>0>ÉBœIëKÉ%kú1?ëku1>ë>ëCá/Cû6kk1@kú1ku1'>É%C�Cû6kk1>É&BœDË0=@„0kIË06>É&=@>2­Ãa*9V#^#"9zþÁÂ"SÍ-ͬÉÍúëÍ-͉É*»DM*7É>͇á##ÍôV#^ë"7áV#^~2¹#å>Í*7|Úd|µÂháÃpÍZáÚ†:¹æÊ ÃŒ^#VëÃŒ##^#VëåÃP> Ãíá~æ¾#~·ÂÃ#^#V#N#F#åë#~æÆ_q#pÃP2·#~2Ã#åÃPá~#2O~#·ÊÞV#^#ë"ÅëÍô"7áÍô"9áV#^>Íë"»ë~æ'%Cû6EÏ0ZÍ0M¦0KÍ06@=Ë0@kŠ2>p66>Ë06 <@2@ûÿ ?Í<Í@2kŠ26@(** RUN-TIME ERR:REDUNDANT OPEN DATA UNAVAILABLESUBSCRIPT FAULT INPUT/OUTPUT NON-NUMERIC DATAPERFORM OVERLAP CALL PARAMETERS ILLEGAL READ ILLEGAL WRITE ILL2¬#å*Å|µÂ(:OæÊ(*9V*»DM*7ͬÃa*»DMë*9ë*7͉:­=Âa"7*Å|µÊa*7:OæÂVë*ÅDMë ͬá:¬OæG:­¸Ê|yæÊ‚##åÃPyæÊv^#VÕÃP>2­ëx±Â–ëɾ# Ê�ëÚ§>è¯2­É>2­x±Â·É~# ºÊ±ßáå##~æàþÀáÊÔÍ“)Ã×ÍiDåÃPáå#~#^#V#ë"7ë^#V#ë"9ëæÊ V#^#zÚEGAL REWRITE REWRITE; NO READREDUNDANT CLOSE OBJ. CODE ERROR FEATURE UNIMPL. GO TO (NOT SET)FILE LOCKED READ BEYOND EOF DELETE; NO READ ILLEGAL DELETE ILLEGAL START áåV#~æÀ_ë)))U\!Ä^#VëéÔÓ#2ÞìGþ$UUUpUUUhDà U6cD;UU¸C�V#^#ãåzæðz³Â ÑåÃP:Ç2M:MÖú:2M!ÎO ^#Vë ^#V*9ÍbÂÃe:Çþòe<2Ç=O!Î Ñs#r#ë*£N#Fëq#p*7åÃP>͇á#~#æ?Ê–V#^#Oz·ÂŠ³ÊŠ¹Ê’Ú’yO åÃP=O ^#VÕÃPáå#~#N#F#ë*£q#pæ2MÊõ:T‡Âõáå:MO^p#Vq#ë"7ë^p#Vp#ë"9ëáåÍháåë*7ës#r#ë*9ës#r:MÆOá å  ÃP:Ç=úS2MO!Î "9^#Vë"7 ^#VáåÍbÊa:MÖúS2MO!Î ^#Vë ^#VáåÍbÂ.Ãeá~#^#æWåÃP*7#~ æÊ�V#^+r#s#z³Ê�*7##^#Vë"7ÑÃ^Ñå*9##^#V*£s#r:Ç=2ÇÃP¯2I2Lá~2OV#^#{æ2Hë)))ëzæ2SÊÝþÂØ>2LÃÝ>2L:HþÊ÷þÂò>2IÃ÷>2IÍô"7á:O¹æ¨ :¹æ8! O ^#Vëé‹ ( 4 ‹ N [ *7ë*»~Ã< *7~#"7þ+Ê‹ þ-Ê‹ þ Ê‹ Ãø*7ë*»+~Ãc *7~#"7*»+"»þ0úøþ:ú‹ þAúøþSú‹ þ{Ê‹ þ}Ê‹ Ãø*»DM*7x±Êa~# þ0úøþ:òøÓ }<æG*7~#Oæþ òøyæÊÎ þ òøñ þ úøÊaþ ÊaþÊaÃøá#å~æ‡!ù O ^#VëÑ> é!‡#2‡æÂÍô"9Ã^#V#åë"9:IO:L�O!- ^#Vëé?NU°U°UNU*7V#^*9r#sÃP:SO*9 "9*7V#^zæÆ+2Eþ-ëÂtÍZ"7:Hþʆ*9:Ew*7|µÊ™ë! ÍD"7{ö0*9+"9w:S=ÊP2SÆ>+2E:SþÊË:HO*7 ~2EÍÞ:Eþ-ÂEëÍZëÃE!"°ë*7~#"7þ{Êþ}ÊÍMúÖÍUŠIèyRùýù<~Fî®>Þûmc½³«,íM lcŒ€ñÞ}I,ô`LM�V`Eœv={¿”š€ñÞ}I,ô`Êu³Ê$TÊÕYe*åjZe*åjXe*åz±Ê$TÊ5±Ê$Tʵ´Ê$TÊÕg•I¨8”kÁ*“Pp(×´U&¡àP®cV™„ €°öÕýÕ°*V¹÷Û:YðšðBVÔ·Àú=ï.ùì÷>P&¡´MÆIoV@™„F§�¤j’û¬}ÄP&¡B®�+ä €2kÕ>¢º¿÷=åÞé©+Úùpºø¬Ã­OO½wOMúÖ ÍMú>͇>0Ã>0!E6-æÊEG:HOx!9 ^#V*°G|ÜZÂ7"°ë!H5ÂåÉþ0ú þ:É> ͇>2­Éá#~#æ2¯^#V#ë"¨ëV#^#ë"ÊëV#^#åë"M*£ ^#Vë^#V*M)"M~æ2HV#^#zæWë"ªëV#^#"MÍú"7*MV#^zzW{_ë"Ìë~#"M*7æÊåÍJÃ:H·Ê>+2EÍÞ:Eþ-ÂëÍZæ# â5d�×õ|²¢~ØeÖ+^ݵ^·ñ6,út `”‘˜ÚWK{(xMrŸµ�Ê$TÈr…\Pf­ÚGT÷Wã¾§Ü;=uEû/NŸu¸õé©÷îÉü/`T¼†ìñºžOVÔû ÌZc…ûÀ«»Öë6Þ†EŸNŒ€2SûjiÅï£Iî³ö#@™„ ¹B®�+ʬUûˆêþjÜ÷”{§§®hÿåÃéâ³·>=õÞ=™ÿŒ€Š×�=^×óÉŠúaÿ”Yk¬�Úá±ÙÏ[ôîÉü€råEõþ.·V¡è²rž¿oÜûýò”> ®–{åskÕ÷ªëÃV#^*Ì+|Ú8ë*ªÍóCÚ8|Ú8ë*Ê"Ê:¯=Ê=2¯*MÜ>͇*Êë*¨r#sÃP:H=Ê�=2H~#åGæOxæ‡G‡‡€�!dÍóCÚ8O ëÚ8áÃM~Gæ! ÍóCÚ8Ox Ú8ëæþ §ëÍZëÉá#~#åæ2¬þÂaá:®þÊvÂá~2¸æW#^#ë"»ëÍô"7áÍô"9!"Á*»|µÊõ¯2ºÃ2á~#æW^#ë"»is program was written because the abstract for volume 40 states that 40.1 works only under CP/M version 1.4, and that the source code cannot be provided. This version overcomes both of these difficulties. (Note: 40.1 "1.4 only" meant "not 1.3". ë~#2ºæW^#å*»ÍZë|Ú "ÁÃ2:ºÒ2ÍZë*7"7:¸æÊO*»ë*Á"Á*7VÍ€ÃP:ºÒa Í€ÍlÃPÍl Í€ÃP*»DM*9ë*7Í�ë"9É*ÁDM*9Íš"9Éx±È ~#Ã�x±È r#Úá#~#2¹Íô"7áV#^#å{æ<2¬>Íë"»>2­:¹æÊÿ*»DM*7 ~#þ ÊðþAúøþZÊðòøx±ÂÛÃa¯2­Ãa:it does work with 2.2 ) PROCESSOR: ASM DEPENDENCIES: NONE NOTES: Set "DUP" to true, to define a version which will write "/.SUB" out to disk to facilitate re-executing the same commands. To re-execute them, REN $$$.SUB=/.SUB then   ^C. Alternatively, PIP $$$.SUB=/.SUB You might wish to name the version of this program assembled with DUP true, as ".COM (but this will "screw up" the Master CATalog system which reauires its "-name.xxx" to be the first file found) æ0ÊE"Íù%!$ÑëåÕÍ &:"!þÂ$"zæWÃ("ÍúëáÍ&ã##Í &ã:"!þÂPüÿ Í&ÃPáåÃPáå#~æ2(!N#Íù%ÕëÍ&þPòõ%þÊv"þ0Âõ%yæ ÂÕ"~æÊÕ"áåÍÝ%á Í"&Íš%Ê®"åþ0ÊÀ":(!=ÂÀ"áá####Í&ÕÃPã:(!·####ʼ"##ãÃPáã:(!·ãÊ+%ã##ãÃ+%:"!þÊì"áå"Í &++Í&áÍ"&Íš%2%!åÍÄ%:%! A program for quickie, use once and throw away submits. The command syntax is: A>/ [[;] ... ] ·Â #á~ö€wî"þÂÀ"áåÍ&~ö@wÑá:(!þÊ£"åÕ!)!4ÃÀ"á~æú2*!~#~2+!~æ2&!#å"0!Íù%Õë".!Í&G!*!~æÊ&$~æÂô#Ã#á####å:&!·ÊPÍ&ëãÃPáåÃPáå#~æþÊ %xþ Ê›#þ0 Âõ%+~æw#N##~æÂÔ#yþ$½#Í &++Í&áÍ8&Í"&Íš%·Âj$ÍÄ%Ãe#áåÍÝ%áÍ8&Í"&Íš%·Êe#:&!·Âz#Ãj$áå#xþ0 Âõ%#6 ; boot equ 0 ;for a warm start bdos equ 5 ;cp/m entry point chcnt equ 080h ;character count cibuf equ 081h ;console input buffer tpa equ 100h ;transient program area ; dup equ 0 ; org tpa ; slant: lxi h,chcnt mov a,l add m inr a #~+++æÂ$~Òõ%·wÃ$ÍÝ%áÍ8& Í"&Ãã#áå#xþ0Âõ%##~+++æÂH$~Òõ%·wÃK$ÍÝ%áÍ"&Íš%·Êà$:&!·Êò$xÖ#ÊÕ$=ÊÕ$ãã:&!·Ê+%ãÍ&ëãÃ+%á#~æ2&!~æþ‘$=2'!#åÍù%ëåÍ&þʪ$þ0Âõ%~æ=Êõ%áåÍÝ%á".!:'!GÍ"&Íš%2%!·Êà$:&!·Êò$ã##Í&ëãÃPã##ã:&!·ÊPã##ãÃPãã*.!Ã+%á#mov l,a mvi m,0 ;zero the byte after the end of the command line. ; lxi d,cibuf ;de is the source pointer. lxi h,subbuf+1;hl is the destination pointer. ; nxtcmd: ldax d cpi ' ' jnz xfer ;skip over leading blanks. inx d jmp nxtcmd ; xfer#",!åÃPáæð&oG:+!ë*£^#VëÍ'2Ãe#å^#~³Ê<%VáÃX%áåÍ&æ==_*,!Í&z³Êw%áë"’%##Í&ë"”%*¿å!�%åÃPá"¿ÃPá~·ÂP!)!~6·ÂPÃõ%`:~þ èp%å CÍ &á{²ÊÁ%åÅÍúÁxæö0w#xæö0wáx·É:"!þ À"Í &ÕÍ&ëÑ|µÈÃ&:"!þÈ"å##Í&ëÍ &áÃ&xÇÍ&ë#~+‡ !* !éë#^#Vëéá~#æW^#åë"¿ÃPá#~æ2$!~æ0ʤ!O#Íù%åëåÍ&þ@Êõ%·Âõ%~æ±wá~æw#~+æþÊx!Í"&Íš%Â+%#:"!þʆ!6+6+V+^!$!N*£ s#rÃP #ÃA!+~æÊž!=³!@##Íù%åëåÍ& ·Êõ%þ@Êõ%~æ?G±wá#~+æþÊæ!Í"&Íš%Â+%###~æÏwÃPáåÍ &zþÂE"{ëæp2"!É^#V#ÉV#^#És#r#Ér#s#É###~æðÉå*U:"!þÂ0&##Í&áÕPÉå*0!##Í &áå Í&áÉá~#æW~#_æ2H>Í{2I~2¯æW#^~#æ2S>Í{2LÍô"1áÍô"J:IÒ '*1¯:HO ë*J:SO ë~æþ ʳ&>+õ&>-~æö0:H=Êõ&2H+:S=Ê'2S~æö0:H=Êõ&2H:S=Ê'2S÷&ë:S=Ê'2S  >0w+Ãö&ÃP>+2E:¯Gx2¯:IþÂ4'*1~#"1þ-ÂG'2EÃG'þÂG'*1:HO ~Ã)'*1:HO +ë:LÚs(*J:LþÂf'#:SO +"9:¯·òˆ'<2¯>0w+:S=2SÃo'Í*(Í;(G:¯·Ê�'=2¯È':S·Ê³'p"7+:S=2Sˆ':H·ÊÍ'Í*(Í;(þ0ʳ'>2­ó':LO!Ú' ^#Vëéè'ï'PPú'(*9#Ãó'*7+:EwÃP*9Ã(mp loop quit: finis outp EXIT LHLD STACK SPHL RET DS 50 ;STACK STACK DW 0 buffers EQU $ end pi eof jz quit cmp b mov b,a jnz cont cpi 0dh jz loop ; don't duplicate any carriage returns cont: put outp j*7~þ0Â(>{Ã(Æw:Eþ-ÂP~þ{Â$(>}Ã&(Æ wÃP:H·Â4(>0É=2HÉþ{ÂC(>0Éþ}ÂM(>0Ãk(þ0úf(þ:øÖþ0úf(þ:øÖ þ:úk(>͇G>-2ExÉ:SæO*J "9> w¯2¹:¯·Oòš(¯Íà( ú’(Í*(Í;( ú§(Ú(Íà(:S·Âš(:H·ÊË(Í*(Í;(þ0ʱ(>2­ñ(:Eþ-ÂÝ( *9~æð°wÃPæG:¹î2¹Êû(xG~°w+Ãü(p:S=åAPPEND.ASM This is a simple program which is sometimes useful. It copies a to the END of . If file2 does not exist a simple copy operation is performed. It also does a fixup on a problem sometimes seen, multiple carriage returns are reduåced to one. Unfortunately it needs MAC so if you don't have it get the COM file for APPEND if you can. Jack Riley (303) 499-9169 RCPM. Useage: APPEND file1 file2 å SHLD STACK LXI SP,STACK file infile,inp,,1,,BSIZE file append,outp,,2,,BSIZE xra a mov b,a loop: get inp cpi eof jz quit cmp b mov b,a jnz cont cpi 0dh jz loop ; don't duplicate any carriage returns cont: put outp jå  2SÉ`FãåÕ*<|þ̰E#"<<ÑñõæwñáÉõÅÕåÍÑÕͷ¬FÑဠëÁñ=¸E!É;>!†:øEõ::·ÊB:†:·úøCãåÕ*þ:|=ÌÝE#"þ:ÿ:ÑñwáÉ:È:<Ê Dú›FåÕ*>|þÍí0z{2)Ò¤)¯2­")*)~æ2 )##Íò0" )ëÍò0" )!)¯w#ÂÉ)*)Íí0ÕÍû0")]ë")j")ÑzæÂ*Õ* )ë*)~þ-Â*!)oÃ._!()¶w! ÍDë{2%):)·ú(._}*1)wÃÐ-:%)³!&)¶wÃÐ-:%)·Ê¡-:)=úP._*1):%)wá-!&)4á-¯2)Ãð+ !3)"-)"/):)!)®2){2)2#):)·Êž.Íl0!)5^*-)w·Ê}.!#)sÃ}.!#)5^*-)¯w> 2)2#)“2):)·ÊØ.Íœ0!)5^*/)w·Ê·.!#)s÷.:#)þ Âì.!&)4> 2)Ãð+!#)5^*/)¯w> “2)G4¯Ä 1Ñ:)2)ÕzæÂ1*: )þÊ1** )ë*)~þ-Â.*!)4¯Ä 1ÑzæÊ‘**)Íí0ÕÍû0")2)ñõæÂo*!)F6!)~�wòe*#6ÿ!)~�òn*¯wñæ‘*!)F6!)~�wò‡*#6ÿ!)~�ò�*¯w!3)"1)> 2!)2)* )")*)"):)2 )¿** )&^#VëéÓ*Ë*Ë*ï/t-^.:)î2)!)~#¾ÂI+!)~#†GÊ&+Íœ0OÍl0�!%)†6Êû*!()4þ ú+!)> –€2,)¯2):,)þ!ò¡/¯2%)2"):%)·Â^/:)G:,)2)> 2)úP/Í×/ÍÉ/å‘!%)–6òK/Æ 4áwÃ3/:%)·Â/!")4Ã/!)^4*1):")w:)G:,)2)> 2)¯2%)úš/Í×/ÍÉ/å�!%)†6Íå/áwÀ/!,)4Ã/:)2!)> 2)!!)5úð+^*1)å~*)+")Ñwì/*)+")ë*-)~É*)+")ë*/)NÉþ øÖ !%)4É:)·Ê0Íl0·Ê0!()Ö !%)4!)^ú+s*1)wÃÜ*!&)_:%)³¶wÃÜ*:%)·Êð+!)^úA+s*1)6Ãð+!&)¶wÃð+!)~#¶Ê¡+Íœ0GÍl0�!%)–N6!')qòn+Æ !%)4·Êv+!()4!)^ú‰+5*1)wÃI+G:')·Ê“+> Ox2')©!&)¶wÃI+:%)·Êð+:)2): )þÊY- !$)6*1) :)G +y¸úð+^:$)·ÊÝ+{Ö /<Ãì+¯³ÊÆ+Ö /<å!$)4áwÃÆ+: )þÊY-¯2%)*)~4*)-ú0")ë!3)wÃï/!&)¶wÃï/* )")*)"):)2):)2 )*)~æÊB0>2)~æÊ|,~æÊ|,##~æÊ|,>2%)~æÊ|,! )4Ã|,:)·Êy0=2)¯É:)·È=2)*)+")ë* )~Ö0ú—0þ ø>Ç:)·Ê©0=2)¯É:)·È=2)*)+")ë* )~Ö0ú—0þ ò—0É:)·Ê×0=2)¯É:)=2)O!!)¾>øG*1) ~ÉV#^#ÉÍí0åÍúÑÉ{ægëæÊr,~æÂ),~æÊ,! )4*)~æÊ|,!)4Ã|,##~æÊ7,ë!%)4ë~æÊC,ë!)4ë~æÊO,ë! )4ëÍí0åÍû0|2)}2 )áÍò0"): )!)w#6Ã|,~æÊ|,!)4:)2!)> 2): )·Âš,!):)–2)¯w:)·ÂÀ,:)·>+ʬ,>-G:&)·> ·,x*)ë*)w:%)·ÊÓ,ÍÊ0þòÓ,¯2%)! )5úý,ÍÊ0!%)†6þ úë,4Ö *)+")ë*)Æ0wÃÓ,!))))ëzæoÉþ Èþ+Èá>Çá~æW#^#>Íë"7ëÍô"9ë*7ë͉1þ ÊPGz³Ê21p#Ã21á~æW#~2¹_#>Íë"7ëÍô"9ë*7ë:¹æÊx1C>Í'2Ã{1Ín:¹æÊP*9Ã-1Õå:Ç1=ú¨12Ç1Â�1> áÑÉ*Ä1~#"Ä1áÑÉ!È1"Ä1++ë Í Í:Ç1·Ã•1È1Pþ ÄFPþÄfPÕ!JQÍõ ëÑé!qNÃKBAD MODE (BUILD).Íù ÍÔPÁÉ!.5~!!)¾ú-_*1)~!%)†6!&)¶w:&)·Ê(->2­*)å~æÊH-~æÊH-: )þÊH-á"):)“2)§)É:()·Âd-<Ãn-:)·>Ên-¯2­Ã(- !3)¯w#Âz-:)!)®2):)2)):)2*):)2+)>!2!):)·ÊW.!!)5~2)¯2%)Íl02")·Ê¡-:))2):*)2):+)2):)·Ê4.Íœ0_:")o&ÍóC:%)…G¯!)5úû-^*1)~€Â._QV#ÍÅPÍçPÁÉ!*QV#ÍÅPÍÕå_ÍáÑÉÃÉõåXO> +¾Â92Â02yÅæyÄg2Ááx·ÊW2^#åÅÍÁáÂH2 ÍñOæyÄg2É·þ?Ê2·Èõ Íñ=Âq2É ÃÍù *BQ"BQÍ QÁÉÍù CÍù ÂBOÁÉÍ¢På!4QãÍõ #ãr#s#ÅåÍÔPáÁÂTOáQ>23Q*BQ">QÁÉ!øÍõ ë##ͯPÍQ  ͉Q͉Q!ÆO":Q>23Q͉Q!4Q":@Që ͉Q >23Q͉QÁÉCOBLIBÍåQÍù CÍzQBÍzQÍÞPÁÉ*>23QÍQÃïOÍ¢PÍõ ÍÔP PÁÉÍù *EQ"EQÁÉÍ¢PͯPÍQÍçP>23QÁÉÍ¢PͯPÍQÍQÃ0PG:DQ·xÈõ ÍvQ¯2DQÍšPñþÀ*EQ+"EQÉ*EQ|µÈÕ}ÒxP+>2DQë*BQz/W{/_!>åÒ4Í{=*à2|µÊ8DMÍ:*�2ÁÅq#p¯2Ý2ÁÃw;F+N¯2Ý2Í:*�2,,ë*™2O½GÂ(8¼Â(8áër+s¯2Ý2*™2DMÍ:ÃÄ7BKë*’2:a3·Ê•8ÅÕ ÍƒB·Ê8þÊ.7*’2#~æðÊ.7Ã172a3ÑÁ*’2###~þ >Ê¢8*’2ÕÍ"CÑþØþÒ.7õbk€:”2·Â³8p# ³8ñG:”2·ÊÄ8xÉÍV8þØÊ=7Ã47õ:—2½Â9:˜2¼Â9ÅÕ>2a3*‰2^#Vr+s*‹2ÍV8·Ê 9:n3þãáõyOxG}o|gñ=Âû3·|W}_Éåhb)Ò&4 )Ò+4 )Ò04 )Ò54 )Ò:4 )Ò?4 )ÒD4 )ÒI4 DMáÉ>͈>:”2·Êl4ÍIA¯ÍÒ8 x±Â\4Í;AÃ89¯·õ*’2YN#F#^#V*‡2s#r*‰2^#VxºÂ“4y»Êž4p+qPY*‹2ÍÆ8*�2DMñõ«4*_3ë*‡2~#fo>2a3ÍÕ<ʺ5x±ÊË4ÃÍ4ñõ+w#ö4>͈>*’2PN#F###^#V#:—2»Âý4:˜2ºÂý4ë*‹2ë### 9*’2~æ Â17ÑÁ*‹2ñw#ÉBKë*’2̓B·ÈþÊ.7*’2#~æðÊ.7Ã17€Ã?9>2a3Å*’2^ Á:]3w#:^3w*’2~æ°w*k3ù*’2' :a3w6 :n3w*’2É:n3þ ÈÍo:DMÅÕ*‹2ë*‡2s#rÑ:n3æþʬ9z³Â¬9*�2|·Âê9>½Úê9*‰2#x¾+»9y¾Êâ9PY:†2þÄð9ÑÕ*‹2ÍV8·Êâ9:n3þÂâ9*’2~æ Â17Á*‰2q#pÉÍð9Ãâ9:a3·È*‰2^#V*‹2¯2q#p#s#rÍ¢<*�2ë*_3~·Â39#z³Â5*’2"V#^+r#s*]3ÍAÃØ4>͈>:”2·> Êm4Í-AÃ89> ͈>Í¢<Ã39z2m3þÂi5å#4Âh5+4á>͈>:m3þÂ~5ÍRA~·Ê47*•2+ë*’2" r#sÃ=9>͈>Í-A*•2#"•2Ã89¯Íˆ>Í-A:”2·Â˜5> ÍÒ8> ÍÒ8Í;AÃ89>͈>Í(;Ã89>͈>Í(;Í¢<Ã39>à 6> ÃÍ5z2m3>͈>Í(;:m3þÂÿ5x±Ê47Ã=9ëa3Ã9 *]3ëÍï3y·G>O! åBK:›2_Íï3á å:�2ÆOSÍ4*—2 Ñå*Ÿ2~»ÂG:#~+ºÊm::Ý2·Âa:Õ^#V*—2Í9>2Ý2Ñ*Ÿ2s#r*—2BKëÍ’8ÑÉ*�2ÅDM!xª²Ê‹:ÅÕHÍ4A ÑÁyª²Ê™:ÅÕÍ4 ÑÁx«³Ê©:ÅÕHSÍ4 ÑÁSÍ4·y_xO>WG{_)ã}·òÈ:æoëá #ÉÍu=^#Vz³Â;#^#Vr+s##N#Fx±Êú:ÕåÍ:ÍD7áÑÚþ:r+s##4*™2ër+sÃ=9>͈>Í(;Í-AÃ89¯Íˆ>*’2b¡2:�2G¾Ú:7Â;6#Â*6Ã:7Í(;Í-A*’2`ë*™2ës#r#¡2:�2Gw#ÂX6Ã89å###~æ€>Ây6~æ>€Ây6ö@#w#¯w)w#‡6áåÍZA_á###~æ?w+++{·È0Éåxæ0þÊ"7> ͈>Ñ!'~·!`ëÊØ6åP N#FáåÕ̓BÑá·ÊØ60Éå#~+æ0Ê"7þÊ 7ÕåÍ"Cáå^N#Fq#páÑÂ;#4¯2\3ë"™2ÉÕåBKÍ:*�2##N#FáÑp+q##Ãã:>2Ý22\3*b3DMÊÓ;ÅÍu=N#F`i"d3:n3·Êö;x±Ê<`i"™2Í:ÕÍD7 <ÑÁ:n3þÊ“7þÊ77*�2N#F*’2Vq#p:n3þÈ:\3·Ã—;*�2Í9:Ý2·Âª;*Ÿ2^#V*—2Í9*™2+DM*]3ëÍï3·yG>OÅÍo:Á :‘2O Ã9*™2$Âè;Íu=^#Vë"™2$%|µÌ=7DMÍ:Ãp;*’2`^#V̓BÃ"7ë!`ë̓BÑ!àëå̓BáåÍ Cá·_È0É0$#"!ÃS9!¡2:�2O¾À# ÂK7É:�2Æ_€Íï3y2›2PY€Íï3z³Êu7 *�2 ë€?Íï3`i"]3*›2ëÍï3z³PYÈÉ*�2ë¯w#˜7^w#Vw#Õå^#VÕÍu=:™2¾#Â!8:š2¾Â!8Ñr+s¯2\3Íu=ë*™2Áë~s#~r¯2Ý22\3###~»#Âó7~ºÂó7ÁÅp+q##^#Vr+sz³Ê8ë"à2!ÃA< ë ÁN#Fx±ÂR;:n3þÂ9<:m3=Ê47ÁÍ{=*3DM>2m3Ãw;þÂ47Í{=åÍÍ:DMÍ:!¡2:�2O~# ÂQ<áës#r#ë*d3ës#r¯2Ý2*à2DMx±ÊŠ<Í:*™2ë:�2O s#r¯2Ý2ÁÍu=ë*™2ës#r¯2\3BKÍ:Ãp;*�2DM*_3ë*‡2~#foÍÕ<Ê= x±Â²<:”2·ÂÍ<ÍÕ<ÂÇ<ë*‡2s#rÉ:—2½Âú<:˜2¼Âú<ÅÕ*‰2^#Vr+s*‹2ÍÆ8ÑÁ*‹2:”2·~#  ÀþÊ=7þ ÊÕ<þ À¯É>  x±Â=ÃÍ<¡2&o:�2õÃZ=õeo€Ç Ú3=@ Ò:=àñ ÚA= ÒH=xü ÚO=Ä ÒV=ÿ Ú]=q Òd=ñ=Â+="b3É*�2 É!"3"à2"Þ2"g3!¡2:�2ÆOÅÖGO! 3>ÿw#Ÿ=!â2¯w# ©= Å!"i3DMÍ:*g3|µÂÊ=*]3"g3|·:›2Â×=½Ú×=}2f3*—2ëÕ:�2O·Âð= Âã=ÃI>ÑÕÍD7ÑÕÚ>! 3ÍG7B ·ÂBëဠ>Ã8B=åÕÍÑá>€=wåÍÑá€>¾ÊAB# Â-B€+w Â8Bë4ëDMÑ!,q#p! O~ÒXB<·GyO!(q#p¯ÉÕÍÑÍ<>ȯÉÍ<>ȯÉÍ*Cå!Ùÿ~æ0þ ÂC##~æÊCy2CæxOÆo&~·ÂC*CqՀ̀€¯ ÂÃB*C:C¾ÊãBÑÕÍ·ÊÉBÑá>ÉáÑåÍÑÕÍ·ÂßB€Í*ÒI>w# Â>*i3"3ë*Þ2Ã?>!â2ÍG7ÚI>w# Â!>*i3"à2og"Þ2µÊ�>ë*3z¼ÂI>{½Ê�>áÁÑÕÊR>Åë*�2 ÁÅ~¸+Âh>~¹Ú€>*g3+"g3!f35*i3#"i3ÂÞ=÷=Õ*3ÁÁÁÉ2n3"’2ë!9"k3!~æ2†2V#^ë"�2!^#Vë"_3!?"‹2€"—2€"�2öþ^#Vë"™2!Ðÿ~2a3+~·Ê @æ@>w2a3Êl?*’2#~æ0Ê¥?ÖÂC~æÑÈÕÍ·ÊþBÑ>ÉáÍ·È>ÉÍ*Cà yxGyæOÕå4~¸Ê…CÅ6€ÍÁáåÅ~æ ÊfC%ëÍÁÑÕÅ!4p!(ëÕÍ<Ñ„CÍÁáÑÕåÅÍÁáH"CqàÿëáÉå`ëÍá(ëͯÉá##F#N#å~æðþðÂÊC##x·ÂîCyþ=ÒîCOæøGyæO~æþ�w#~æ€wÃP>ÃØCÅ2D|µÊDë|µÊH?*‹2w#Â?Â?*�26#:�2w#:Ž2w#ë*’2# ~2�2ÍU7CÅÕ*—2Í9ÑÁÂ6?ÃÌ?*‹26#:�2w#:Ž2w¯}#w ÂZ?*‹2Í9ÃŒ?*‹2ÍÆ8*’2#~æ0Ê¥?þʬ?*‹2~·Â.7*‹2úÿëë~#~#>Ãò?¯*‹2Ãò?*‹2~þÂ.7]T €w# ¾?ÍÆ8!ÿÿ"™2:n3·Âí?*’2`:�2ÆG¯w#Âç?>*‹2ë*’2P 6#p#pDDM!>)ë)ëÒD ÚD= D:DÁÉëB|¨G|µÈ|ëÅÍ/DñëÉ|/G}/O!>õ·ÃJDõå ÒIDñ7>á{_zW}o|gñ=Â@D|·g}oÉ'ï'PPú'(*9#Ãó'*7+:EwÃP*9Ã(*7~þ0Â(>{Ã(Æw:Eþ-ÂP~þ{Â$(>}Ã&(Æ wÃP:H·Â4(>0É=2HÉþ{ÂC(>0Éþ}ÂM(>0Ãk(þ0úf(þ:øÖþ0úf(þ:øÖ þ:úk(>͇G>-2ExÉ#p#s#r#6#p#w:n3þ È*’2P"‰2"Ÿ2"‡2"•2~2”2þÊO@Ò»@:n3þÐ*’2~#næg"�2É!ÿÿ"b3*�2###~2�2ÍU7{Æ2‘2:n3þÈ*’2$N#F÷ÿ~æ_*£~#fo å#*’2 Fá:�2�ú.7O¡2~#£@y·Ê·@¯ ±@Í=É*’2"~#ng"•2µÊ17ë*‹2+~+ng"]3:n3æÊA|ºÚî@Âû@}»Òû@:n3æÂ47ë"]3ëÍvEwÃP*9Ã(*7~þ0Â(>{Ã(Æw:Eþ-ÂP~þ{Â$(>}Ã&(Æ wÃP:H·Â4(>0É=2HÉþ{ÂC(>0Éþ}ÂM(>0Ãk(þ0úf(þ:øÖþ0úf(þ:øÖ þ:úk(>͇G>-2ExÉ:EwÃP*9Ã(*7~þ0Â(>{Ã(Æw:Eþ-ÂP~þ{Â$(>}Ã&(Æ wÃP:H·Â4(>0É=2HÉþ{ÂC(>0Éþ}ÂM(>0Ãk(þ0úf(þ:øÖþ0úf(þ:øÖ þ:úk(>͇G>-2ExÉ9ÍRA:n3æÂA~·ÈÃ77~·ÀÃ47|ºÚ!AÀ}»Ð:n3·Â=7ë"]3ÉÍIAÍÒ8 x±Â0Aë*‡2s#rë>2a3É*�2DM*_3ë*‡2~#foÉë!$þ:>ÂzAÖ@þÚyA>Éw#þ.ÊšAw#Â~Aþ.Ê¡Aþ ‹AáA6 #šAw#£A¯w#®AëÕÍÑ!£ÿ~O%ëæÂxByæ€ÊfBÕÍ<>ÈÑ!~þ€+++ÂòA4ÃÖADM!8Õå! ·Âå  åUP.COM .032 .036 .043 .073 FOR.COM .021 (etc.) This program does NOT make any additional file, it merely prints the MAST.CAT file to the normal printer output. å Irvin M. Hoff Los Altos Hills, CA 94022 4 July 82LISTCAT.COM -- WRITTEN BY DAVID ALTEKRUSE (W6RAW) IN COBOL, THEN COMPILED TO AN ABSOLUTE FILE. WORKS DIRECTLY FROM "MAST.CAT" FILE TO PRINT A CATALOG LISTING. ASKS FOR THE CURRENT DATE, PAGINATES. CAN ACCEPT ANY LENGTH MAST.CAT FILE, NOT LIMITED IN åANY MANNER BY MEMORY AMOUNT OR NUMBER OF ENTRIES IN THE MAST.CAT FILE. CAN USE NAME AND NUMBER BOTH FOR "VOLUMNE NUMBER" FILE, PRINTS UP TO 12 CHARACTERS FOR EACH DISK HAVING THE SAME FILE. EXAMPLE: BASCOM53.COM BASIC.041 BASIC.043 BASåIC.068 BASIC.123 BAUD3.ASM .058 BYE.ASM .064 CATALOG.DOC CATALOG.033 CATALOG.070 DUMP.ASM UTILITY.046 UTILITY.047 UTILITY.055 UTILITY.059 UTILITY.087 UTILITY.096 DUUP.DOC .044 DUå  Ã4 Ver:1.0 Copyright (c) 1982 Gary P. Novosielski !91õå!€~ÿ2·à yÖØ+~#þ É#~·Ê þAÂ}2²ÃlþCˆ2³ÃlþD“2´ÃlþEž2µÃlþM©2¶ÃlþP´2¸ÃlþU¿2¹Ãlþ0ÂÊ2ºÃlþ1ÂÕ2»Ãlþ2Âà2¼Ãl2þ Í½Í ÍÃOp˜ù'ylIræñ×ÝPƒ«¾ˆ�$z}A‚�ÿº£nu.s„ _g/b#‰^m)Aÿ­söRÿíc[\~Ï„ þî‰ÄF¥·HÄÝ eŸšëÁŸóF³ã­Îå¶„"„òwò–>~îs£Ù‹ñ:öwÜû„Kø}‰ÄF¥¦·�N‚Ž}Mæ_'oéãç>7š½.¡/‘b#‰RS%èòmñŽz0¡/‘b#‰R-ôwòŽz0¡/‘ÿb#‰R›P‚þNÞoú0¡/ŸÄFY^%ȧÏãïHŽˆ3¡/Q.b#‰,À%˜¹ôì¶ôd|B_"wˆ�$²¼ Awƒñõ!ô%*Yl$QúWtion "" not valid.$...CANCELED$:´·Äß:²·ÄßÚ�:¹·?ÄßÒ�:º·ÄðÚ�:»·Ä Ú�:¼·Ä.Ú�:³·ÄGÚ�:µ·ÄˆÚ�:¸·Ä9Ú�:¶·?Ä9Ò�:··ÄœÚ�áùɽÍ<ʵ!Ì5úµ+6½Í<ʵÃ�À ÍÃëError accessing .SUB file.$¯ÖÉ!]>? ¾È# ÂæÃÛÍ is a string of single-character options with no intervening or trailing blanks. The option list must be separated from the preceding parameters by at least one blank, and mustarameters supplied, or the status of files on the disks when the jobstream is submitted. THE //IF COMMAND: Syntax: (Square brackets indicate optional parameters) //IF [parm1 [parm2]] [:options] where:  always begin with a colon (:) to identify it as the option list, and prevent it from being confused with parm1 or parm2 if one or both are omitted. The entire option list may also be omitted, in which case the idis a standard CP/M file reference either entered literally, or supplied by Submit parameter substitution. The syntax is the normal D:FILENAME.EXT form. If either Filename or Extension are not entered Page entifying colon should not be entered. The ordering of the options within the list is not significant. The option list is really a set of tests to be performed upon the first parameter, parm1. (Parm1 is assumed to be the 1. 82-06-10 The //IF command DOCUMENTATION FOR //IF.COM AND //SKIP.COM they default to blanks. If the Drive is not entered, the current drive is assumed. If the name or extension co name of a file, but may in fact be any text at all, as long as it conforms to the syntax for a valid file reference.) If the tests are passed, the //IF command does nothing at all, and the next line in the submit file is processed normally. ntain question mark (?) or asterisk (*) characters, the file reference is said to be ambiguous. Otherwise it is unambiguous. is an optional second filespec used by some of the options described below. The defaul If however, any of the specified option tests fails, the //IF command modifies the submit control file (A:$$$.SUB) to Page 2. 82-06-10 The //IF command DOCUMENTATION FOR //IF.COM AND //SKIP.COM    skip over the next command in the file. Command processing then continues with the line after the one which was skipped, if any. If two mutually exclusive options are included in the option list, the following line will never1 exists in the directory but contains no data. If Parm1 is ambiguous the test fails. Page 3. 82-06-10 The //IF command DOCUMENTATION FOR //IF.COM AND //SKIP.COM D Drive sub be executed. Explanation of option characters: A Ambiguous: True if parm1 is an ambiguous file reference. False otherwise. The A option does not test to see if a file or files exists. For example the stitution: This option is not really a test, and cannot fail as such. It causes whatever drive has been entered in parm2 to be moved into parm1 before any testing is done on parm1. For example if parm1 were A:TEST.FIL parameter *.ASM will pass the A test regardless of whether there are any .ASM files on the disk. U Unambiguous: True if parm1 is an unambiguous file reference. False otherwise. P Present: True if at least one fi and parm2 were B: all the remaining options would treat parm1 as if it had been B:TEST.FIL. If parm2 is blank, or does not contain a drive spec, parm1 is modified to remove any explicit drive spec. Parm1 then refele exists which matches the specification given in parm1. Parm1 may be ambiguous (unless of course the U option appears in the list) M Missing: True if there exists no file which matches the specification girs to the default drive. Note again that the order of the options makes no difference to the program. The D option is always performed before any other tests, even if it occurs at the end of the option list. ven in parm1. Parm1 may be ambiguous. C Contents: True if the file referenced by parm1 exists and contains at least one record (sector). If Parm1 is ambiguous the test fails. E Empty: True if the file referenced by parm The following three options are matching tests. They match portions of parm1 against the corresponding portions of parm2. 0 Matches the drivespec portions of parm1 and parm2. Tests true if the same drive is referred to   by both. Note that if one of the drives is explicit and the other is defaulted, the test will pass or not depending upon whether the explicit drive is in fact the current default drive. If both parm1 and parm2 are entered following the word //IF on the command line. If the remainder of the line (after Submit parameter substitution) is blank, the test fails. If any non-blank character appears on the line, the test  missing, this test will pass, since both parameters refer by default to the current drive. 1 Matches the filename portion of parm1 and parm2. Tests true if the filenames match or are both missing. If either passes. For example the line //IF $1 tests to see if parameter number $1 was defined on the Submit command line. If it was not, the line after substitution becomes just "//IF ", and the test fails.  or both of the filenames are ambiguous, the Page 4. 82-06-10 The //IF command DOCUMENTATION FOR //IF.COM AND //SKIP.COM ambiguous characters are considered to match the corresError Messages: The following error messages indicate fatal errors in processing. The remainder of the submit file is not processed, and control returns to the console. Option "X" not valid....CANCELED Page 5. 82-ponding portion of the other name. For example if parm2 is * this test will always pass. Note that only the first 8 characters of the names are tested. 2 Matches the extension (filetype) portion of parm1 and parm2. Same06-10 The //IF command DOCUMENTATION FOR //IF.COM AND //SKIP.COM A character appears in the option list which is not one of those defined above. Error accessing .SUB file....CANCELED  as option 1 except that only the three characters after the period of each parameter are tested. No option list: If the option list is omitted entirely, the //IF command merely tests to see if anything was  The file A:$$$.SUB could not be found, or could not be closed, by the //IF program. This error can also occur if //IF is run from the console rather than within a submit file, or if //IF is the last line in a submit file;    i.e. there is no next line to skip when a test fails. Page 6. 82-06-10 The //IF command DOCUMENTATION FOR //IF.COM AND //SKIP.Che argument is 0, //SKIP does nothing at all. Error Messages: The following error messages indicate fatal errors in processing. The remainder of the submit file is not processed, and control returns to the console. OM THE //SKIP COMMAND: The skip command is used to unconditionally skip over any number of lines within a Submit file. Normally it is used as the line immediately following an //IF command. In this way the testing capabilities of / Page 7. 82-06-10 The //SKIP command DOCUMENTATION FOR //IF.COM AND //SKIP.COM Error accessing .SUB file....CANCELED The file A:$$$.SUB could not be found, or could not be closed, by/IF can be extended to apply to more than one line of the file. //SKIP can also be used to implement IF...THEN...ELSE structures within Submit files. Syntax: (Square brackets indicate optional parameter.) //SKIP [number] where:  the //SKIP program. This error can also occur if //SKIP is typed directly from the console rather than within a submit file. //SKIP argument not numeric....CANCELLED The parameter contains characters other than is a decimal integer in the range 0-127 which indicates the number of lines in the submit file to be skipped. If omitted, the number 1 is assumed. The number must be separated from the //SKIP command by a 0 to 9. //SKIP argument exceeds file size....CANCELLED An attempt was made to skip over more lines than there are remaining in the A:$$$.SUB file. Page 8. 82-06-10 t least one space, and may not have any trailing spaces. //Skip operates by evaluating the argument and, if it is greater than zero, modifying the file A:$$$.SUB to cause the system to ignore the indicated number of lines. If t The //SKIP command DOCUMENTATION FOR //IF.COM AND //SKIP.COM USAGE EXAMPLES: Example 1: The following Submit file will assemble and load a source file. The file name is indicated as the first p  arameter. If the second parameter is EDIT, the file will first be edited. Some error checking is done. Note the use of lines beginning with a semicolon to supply messages to the operator. CP/M treats such lines as comments. The line n0 and 2 options are extra insurance that the drive and filetype are blank Line 6: If the test is passed the file is edited with a filetype of .ASM Line 7: The file is tested to see if it contains data. This helps insure that theumbers are for reference purposes, and are not part of the file. [1] //IF $1 :U2 [2] //SKIP 2 [3] ;PARAMETER 1 NOT VALID [4] ERA A:$$$$$$.SUB [5] //IF EDIT $2 :U012 [6] ED $1.ASM [7] //IF $1.ASM :C [8] ASM $1 [9]  editor terminated normally. Line 8: If the test is passed, the file is assembled. Line 9: The .HEX file is tested for contents to help insure that the assembler terminated normally Line 10: If the .HEX file is present, //IF $1.HEX :C [10] LOAD $1 Notes: Line 1: Tests that parameter 1 is unambiguous and has a filetype of all blanks. Parameter 2 is missing, and is treated as blanks for the comparison. Line 2: If the test is pass the file is LOADed to produce a .COM file. Page 10. 82-06-10 Usage Examples DOCUMENTATION FOR //IF.COM AND //SKIP.COM Example 2: The followed, lines 3 and 4 are skipped. Line 3: The operator is informed of an error condition Page 9. 82-06-10 Usage Examples DOCUMENTATION FOR //IF.COM AND //SKIP.COM Line 4: The submiing is a skeleton example of how //IF and //SKIP can be used to form an IF....THEN....ELSE structure. <--------------------------------------> <--------- prior submit lines ---------> <--------------------------------------> //It file is aborted by erasing A:$$$.SUB. Since $ is a special character to SUBMIT, each one must be represented by two in the source file. Line 5: The second parameter is tested to see if it is equal to the word "EDIT". The F : //SKIP m <--------------------------------------> <---- m-1 lines to be executed---------> <---- if test is FALSE ----------------> <--------------------------------------> //SKIP n <------------!  --------------------------> <---- n lines to be executed ----------> <---- if test is TRUE------------------> <--------------------------------------> <---- remainder of submit file to -----> <---- be executed unconditionally -----> <----slightly unorthodox. Page 12. 82-06-10 Usage Examples DOCUMENTATION FOR //IF.COM AND //SKIP.COM PROGRAM NOTES: ----------------------------------> Notes: The //IF condition tests whatever combination of options is desired. If the conditions are not met, the //SKIP immediately below is not executed. Instead, control passes throu The program is written for the 8080 processor and should execute properly on 8080, 8085, and Z-80 processors. It has been tested under CP/M80 version 2.2, but should operate properly with 2.1, 2.0 and 1.4 also. There is a minor diffgh to the lines to be executed if the test is false, in effect the ELSE section. The last line of the ELSE section is another //SKIP which skips past the THEN section Page 11. 82-06-10 Usage Examples erence in the operation of the C option depending on the version used. If the operating system identifies itself as version 2.0 or above (as determined by a call to Function 12) the C option will use Function 35, "Compute File Size" DOCUMENTATION FOR //IF.COM AND //SKIP.COM (those lines to be executed if the test is true) and executes the remainder of the file. If the //IF test is true, the first //SKIP statement skips over the ELSE section. The  in order to determine if the file contains any records. If the version test shows that the operating system is pre-version-2, the C option test merely tries to read the first record of the file. The only time this would make a dvalue m is chosen so that the last line skipped over is the second //SKIP statement. It takes some time to get used to seeing a structure where the ELSE comes between the IF and the THEN, but the structure is no less valid for being ifference is on a Random file which happens to have no records in the first extent. The sequential read would fail, but the Compute File Size function would properly report the existence of records in the file. While sequential files wi"  ll test correctly on any version, files which have been created randomly should not be tested for contents on CP/M 1.4 or earlier. I would appreciate being informed of any bugs found in either program, or suggestions for expansion or åimprovement. Gary P. Novosielski 21 W. Pierrepont Avenue Rutherford, NJ 07070 Page 13. 82-06-10 Program Notes nt Avenue Ruåherford, NJ 07070 Page 13. 82-06-10 Program Notes nt Avenue RuCATFILBODOCLISTCAT COM IFSKIP DOC€ !"#$%&APPEND DOCååååå#  vÿ<åskip.asmV öÿßÿòÿõÿšÿ! #"%$‹ÿ&'Äÿ‘ÿ³ÿ¬ÿ(�ÿ¾ÿºÿ)¼ÿ»ÿ�ÿ*+½ÿ-,žÿ–ÿ­ÿ./¶ÿ°ÿ²ÿªÿ0±ÿ“ÿ¯ÿ1Œÿ«ÿØÿ243657ŠÿÏÿÓÿœÿ8¹ÿ·ÿ:9;›ÿ<™ÿ©ÿ=>Îÿ’ÿ?Åÿ@—ÿÑÿA˜ÿ�ÿ§ÿCB�ÿ‰ÿD¸ÿEÛÿGU­Þ†cX©y˜3ë~þ¤ÔçÑ ¾cs†7äúñsÚê”s½QUü}}æÒœ×�1[%9)õ©©:ô:k³öåúÁÕ¶æ ¿ez”䤎×3l"UèS…ΰyŒ+s‚¤¥°H™a³FU'#xsi.™Ÿc5öÅðµ:ÇDªú‡ø" ÷,ÓEáØ,Íõàç#’pÏ2]T¼Ù,3üâsÚê¤ac_m*ÑÔzØü }êmD¯æÄ§-ï­øæ¼~Œy_y`Îðèb÷G½O×™KsYti_¥‡ã½¢/eiac_}ýó¨Ô¸AÅ#šZ�¨ÔÛ¬w�ì•ãi.Í$`É%)ÁÐ?K½Íêâó4çäÌ‚h ’}Ñâ‡2뛨ÔÛ¬F¨žï Ù+=ÆóÝœAð&e75õ³ÔÛ¬þ!>OsiÎ6êø“RŸšªcªó�jõ5ç»9Ã$ûÓu¤Œ>U)Gõ6¢ê${¥Çx®³Ž9ñý$û¢Å�èâÚ»‹²›«ïhÖê;#5�JG©·Ys=5‘2gž…ˆ·?){§*õ6Í/½Ã|D %¬“òRG\«·á(Ø …™_Á£óÒ;\t—� æxAðè¼ô×Ý%„ æÒü ræÿÕe\$ѵ͂§û£Ûœí‚Q¦W”àÊ‚§û£Ûœø´å½Í‚§û£ÛœOt· RÊ/]èS…Îq}}óPÓœí‚Q¦W”àZ$ÑeÎ<ÔòÚ®û‹$ºÌùDw»0çõcÌý΀9ŸèÎÍ¥ùâÚÁ >" Åp›/®½»øˆ$¯o¾¸önÃG$aªT”Y:­M¥ÕˆÔW‹1žu}H_\{ü­Â4óŵwb>" SÁm¾¸öî‘„©Ö7—æº º¬·²®—zð›Ks†çƒè똫ïhÖê;#5�R_-±9óPËåvc.ÍyýóÉnÎð‹ÑƒŸ®#eô©šè;¿¾U<¢©Õ1aÈFôj.Í™g!þ[LJýmš)kõ�‘šGõñyšè?A²/Züˆ.®½»(_¿©Õɰ «©¯Ô۬ŵ›ó´ûù“òGÍê¥óøêõ›Z�H}æúO�ì‹?¢‹k/(ÕÛ,ð¢NàÕ¬Ôꚣ?4Ä1|s^AÎ ƒ-HöE‹Ê5?F5kõ6 ×Yê«æxÌ•úøws¶QÇŸ”úñ�O⹎9Ã$ûÓuæÏi«Cµ&2 ÛÖÇ•Ѩ½Íæ»9ƒ,à’”YÜ,—9ï�B…æÌyï =h³(…x#*lsÞ;…wÁœ÷ÎÐÓ�6‹*ÏîoD…�`Î{§P×׌¯oªR¯”øe8^TïpÀWð^Ñ×ÿi㌵°±sÞ;/½ÃõGw óàú!>m¹ÜnHyÅs8j‰Íyÿ7A@ÊÞ© ¨aVÁ7"5�êâó4'>m ‚-¾0ÐhJ0U�û*þVC\šVaæ °ä’”`èŸõÅÍA}¨ÐLYšVaæÒœø´år«ïÉbAʾoDªÔW׃ ¨Yû9�ž‡9ó,Ä›“òuªZ}g¤ÌÙFR߈Tõ šª‰šõ¥KSLj^Íy˜KL¨ž²›šúŽY@ «0sv�N¨žR}u}HûâY׃ ¨YÁñ­¦¦}‡¹4ÉþtÄœ×�1ÿý‰nsÞ;…ç8¾£†ÕjjÚˆ^ë${¥Çx¾ æ¼w �‚¹4�2=JrÊÿx=Ã&R5j…>Uè ›Ç¸2çõcÌ¢Ûœ÷N!E Ý5¯gØDªÐ§ �aóWï‚9ï�B£`.Í»?ê}ºb=øé:ˆ9¯cþûÝæ¼w )Rè6¨áx=Ã&R5×[ÍÙÔ*=Ƴ´ñ¥ó]0ç½ShÌ¥ù¿?Ñ 1g�¼I™OM^g Íæ15ÍœW�3½¤5K}µú�ýs‰OR¶¨9×+õ6«ï‘š‡9óPË|»!e‹´QSõ¡Bç8.5؈õæÒœø´år«ïÉb!*¦<´Y_ºV 6 f�œÓéy˜óú1&¸¢�”Új@¥¾J�‡¦ }híI< 0sfÝÏŸ”?ªáx=Ã&RÕwLm"µŽ9ã†|B?þ»^Rö`jÛšýC|Ô¬Q½›Ÿ¶\nŤ|bmVs¦‡s¬J}õ¡iÎð<àúñsÚê”÷‡UͯÔÛ¬øûúÌŸÐ�ÿ®bÎÓkÙK¨ž¬T}߈ÔUè ›Ç¸2çõcÌ¢Ûœ÷N!ú!æ¼w �P= .�ì‚9ï�›íf»ÙnÌy‚d_´øYÛ(šªGsiÎðÅÆ_è?4‘„�æÒœOt@·p]Ök§Ks�ì‹?šóÞ)&å}Œý³~ˆ9ï�B#TÏ‚‚ $»`Î{çf»Ùn¶sÞ€ Ù-~Ö6ЦêÑ\šment exceeds file size.$Ñ ÍfÍ1 ÍÃ...CANCELED$…oŒ•gÉ~þ À#ÃC|ºÀ}»É}“o|šgÉþ0Øþ:?ÉDM ) )É$$$ SUBÒòåfÍÑ<Ê´:uo&ÍQÚò}2u¯2tfÍ<Ê´áùÉÍError accessing .SUB file.$Í//SKIP argument not numeric.$Í//SKIP arguåååå%  åspec1 filspec2 to merge filspec1 to the end of filspec2. Further information is contained in APPEND.DOC. Note that CP/M's PIP may be used for the same function. Also, see COMBINE on FOG/UTL.003. AUTOMODD is a double-density compatible version åof AUTOMOD found on FOG/UTL.009. This will setup a command line to be executed upon each cold and/or warm start. Refer to AUTOMOD.DOC on FOG/UTL.009 for instructions. CAT2 is part of the CATALOG system found on FOG/UTL.002. It may be used tåo display all MAST.CAT master catalog entries in the alphabetized format filename diskname1, diskname2, ... identifying each of several disks containing the same file. To use, place CAT2.COM and MAST.CAT in drive A. At the A> prompt, type å CAT2 Also, see CROSSREF on FOG/UTL.002 and XCAT36 on FOG/UTL.012. CATFILBO will read the master catalog MAST.CAT file, strip all "ignore" names, and copy all of the remaining information to a file called TEMP.CAT with comma delimited fiel DISK.DOC FOG/UTL.023 First Osborne Group (FOG) Utilities Disk APPEND will concatenate one text file onto the end of another. Place APPEND.COM in drive A. At the A> prompt, type APPEND filds. The result is compatible with SuperSort, MailMerge, BASIC, etc. Place CATFILBO.COM and MAST.CAT in drive A. At the A> prompt, type CATFILBO Refer to CATFILBO.DOC. FNDBD541 is an update of FINDBAD found on FOG/UTL.005&  . Its function is to locate and isolate bad disk sectors. This version is modified to skip system tracks (which may be necessary with double- density disks) and to allocate bad blocks to the file [UNUSED].BAD in USER 15. To run, place the disk åto be tested in drive B and FNDBD541.COM in drive A. At the A> prompt, type FNDBD541 B: Also, see FINDBAD.DOC. The above files were received from the Denver Osborne Group (DOG). IF and SKIP permit conditional execution of lines in a SUBåMIT file. Refer to IFSKIP.DOC for detailed instructions. LISTCAT will print a catalog of your disk library maintained by the CATALOG system found on FOG/UTL.002 and .012. Place your MAST.CAT catalog file in drive A and LISTCAT.COM in drive B. å At the A> prompt, type B:LISTCAT Make sure your printer is turned on. Refer to LISTCAT.DOC. Also, see CROSSREF on FOG/UTL.002 and CAT2 on this disk. Squeezed assembly language .AQM files may be unsqueezed using utilities found on FOG/UåTL.003, .004, and .014. Jim Woolley FOG Disk Librarian May 1983 å'   --> FILE: -FOG/UTL.023 CRC = 00 00 --> FILE: APPEND .AQM CRC = 29 54 --> FILE: APPEND .COM CRC = 97 C7 --> FILE: APPEND .DOC CRC = C4 71 --> FILE: AUTOMODD.AQM CRC = A5 68 --> FILE: AUTOMODD.COM CRC = F5 27 --> FILE: CATå2 .COM CRC = 9A 34 --> FILE: CATFILBO.AQM CRC = D4 35 --> FILE: CATFILBO.COM CRC = 6B 16 --> FILE: CATFILBO.DOC CRC = 62 99 --> FILE: DISK .DOC CRC = FB DF --> FILE: FINDBAD .DOC CRC = 59 80 --> FILE: FNDBD541.COM CRC =å E7 CF --> FILE: IF .AQM CRC = 11 53 --> FILE: IF .COM CRC = 0E 56 --> FILE: IFSKIP .DOC CRC = 2D 12 --> FILE: LISTCAT .COM CRC = 62 6D --> FILE: LISTCAT .DOC CRC = D2 B3 --> FILE: SKIP .AQM CRC = 5C 2B --> FIåLE: SKIP .COM CRC = DA 01 ---------------------> SUM OF CRCS = 51 68  --> FILE: LISTCAT .COM CRC = 62 6D --> FILE: LISTCAT .DOC CRC = D2 B3 --> FILE: SKIP .AQM CRC = 5C 2B --> FIååå