IMD 1.16: 31/05/2007 20:04:23 FOGCPM.115 ååååååååååååååå--FOGCPM115BSORT COMBSORT DOC BSORT AQM€ BSORT AQM[ !"#$%&-07-00 86 «EZFILE BAS€'()*+,-./0123456EZFILE BAS,789:;<-CPM115 DOC¬­®¯EZFILE DOC=>?QQSORT COM@@ABCDEFGQQSORT LIBHIJQQSORT PAS KLMNSHELL COM6OPQRSTUSHELL LIBVSHELL PASWXYSORTC BAS Z[\]SORTFILECOM^_`SORTFILEDOC abSORTKYBDBAScdeSORTV COM fgSORTV DOChiSORTV-12ASMdjklmnopqrstuvSSORT COMlwxyz{|}~€�‚ƒ„SSORT DOC/…†‡ˆ‰ŠLEXLATE CSM‹Œ�SORTORDRASMWŽ��‘’“”•–—˜SSORT CQ u™š›œ�žŸ ¡¢£¤¥¦§SSORT OVL¨SSORT SH ©SSORT SYMªåååååååååååååååååååååååååååååååååThis is the disk name. åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå!¼"ã!Þ"áùÍAÍ2W:\_ÍøͺÍ]:X_ÍøÍ7 XÍ:W_ÍøÃ> l!XÍ ¯2|2x2d2C2à\Í$ Òo!C4§ Í« XÍ$ Ò‚!C4Ò Í« :C·Âï!ü"ë*ÍÉ %"?>?2h!"D}Í\ÍþÿÂÃþ Í« Ãïæ‡‡‡‡‡‚_!}~_*D"Dþ€Âï\ÍþÿÂï2h*D|µÊï)Ú)Ú)Ú)Ú)Ú)Ú)Ò ~ Í« Ãï"Aë*?ÍÉ ·ò7Í Í« Ãï*Aü"L\Í<ÂVþ Í« ÃïXÍXÍ<Âs Í« Ãï: Í« Í  }üÍØ Ús Í© Ús}2/<2V¯2"P Í« Í  :}·Ê™Íö Ú™ÍJ Ú™ÉÍ» :i·ÂÒ>+¾ÂÙÃÉ/OÿÃßx/Gy/O*A "A|µÊï:Íï Òþ” Í« Ãï}¼Ê ¤ Í« Ãï`i""!""*ë:Í™ Úïë*ÍÉ ·ò<|/g}/o#"=*L:+O "H:)·È:,O*L "JÉ*ë*ÍÉ ·øÊ ë!ÍÉ ·õôdñò ü/*ë*PÍÉ ·Êñú"%*Në*ÍÉ ·Êúú "#!9"á*ãù*#ë*%ÍÉ ·úÑ*å*;å*9"Ãß*9å*å*;"!9"ã*áù!à4Ã]*N"Ã]*P"Ã]ÍËÃ!à5ø!9"á*ãùá"á"!9"ã*áùÃ]:+O*"NëÍT "R "1*"PëÍT "T "5*Në*PÍ ëÍT ë*L:Í :)·Ê‹:,O*R "3*T "7*Pë*NÍÉ ·òb*NëÍT "R*PëÍT "T:*Rë*TÍ( *1ë:-*HëÍ® ·Êoõ:/·ÊÞñÊòâÃñò*N#"N:O:)·Êý*3 "3*1 "1ëþ*5ë:-*HëÍ® ·Ê�õ:/·Ê,ñú0Ê0Ëñú‹*P+"Pë*ëÍÉ ·úb:VÿO:)·ÊW*7 "7*5 "5ëà *N"9*P";É:)·ÊÌ*Jë*3:.Í® ·õ:0·Ê–ñÊòâÃñúâÃ:)·Ê*Jë*7:.Í® ·õ:0·ÊÄñÊ0ú0Ëñò0Ë:+O*"NëÍT "R "1*"PëÍT "T "5*Në*PÍ ëÍT ë*L:Í :)·Ê':,O*R "3*T "7*Pë*NÍÉ ·òû*NëÍT "R*PëÍT "T:*Rë*TÍ( *1ë:-*HÍ® ·Êõ:/·Êyñú}Ê}îñú®*N#"Në*ÍÉ ·úû:O:)·Ê£*3 "3*1 "1ëÃZ*5ë:-*HÍ® ·Ê6õ:/·ÊÑñÊ'òÕÃ'ñò'*P+"P:VÿO:)·Êð*7 "7*5 "5ëò*N"9*P";É:)·Êg*3ë*J:.Í® ·õ:0·Ê/ñú}Ê}îñò}î:)·Ê¿*7ë*J:.Í® ·õ:0·Ê]ñÊ'òÕÃ'ñúÕÃ'*"PëÍT "T:+O "5:)·Ê�:,O*T "7*P"N#"Pë*ÍÉ ·ø*T"R:O "T*5"1 "5:)·ÊË*7"3 "7*1ë*5:-Í® ·Êõõ:/·Âëñú#Ã�ñú�Ê�Ã#:)·ÊÜ*3ë*7:.Í® ·õ:0·Âñú#Ã�ñú�Ê�Ã#*Të*L:Í :O*RT] Í *ë*N+"NÍÉ ·úË:VÿO*R "R*1 "1:)·Ês*3 "3*1ë*H:-Í® ·Ê�õ:/·Â“ñú0ÃÛñúÛÊÛÃ0:)·Ê„*3ë*J:.Í® ·õ:0·ÂÁñú0ÃÛñúÛÊÛÃ0*Lë:*RÍ Ã�*Lë:O*R Í Ã�h Í« ï»Â :W_à ÍÉxþÊ ëy¾Ê! # 7ÉB·ÉþÒH  þ!ÚH Ã= þ ÚH þ[ÒH Â6 ¯É7É!'F#N#V#^:ghÍu ØiÍu ØzþÊ| jÍu ØkÍu ØÃ| }þØ|•Éy�Ø<2-o|•Øx=2+z·Èo{•Ø<2.o|•Øz=2,{�Ú¬ y’Ú¬ 7ɯÉGÊÄ ¾ÚÁ ÂÆ #ð >ɯÉ>ÿÉz¼ÚÞ Âã {½ÚÞ Âã !¯ÉÃæ ÿë}“o|šgx7É·Ê õ/<_ÿÒ Ãü ñ_·É7É:!·Â 7Éûë þÊD þÊD à !/ÃG !04!"4à !"4:!·Êš Ã Í :"þÂo y2'ÃO þÂ{ y2(ÃO þ‡ y2)ÃO þ“ :)·Ê€ y2*ÃO :"þÉ| ÍÉþÒ³ þµ 7ÉW. }ÅÕÍ… ÑÁÚ³ Ö0ú³ þ Ò³ …oº É·Âß 7ÉÅë The file names are, according to CP/M conventions [d:]name.typ where the brackets [] mean that the contents are optional. After the program is initiated, you will be asked for the record length. Respond with a suitable number between 1 and 255, the upper limit. This length must be that which is in the disk record. If each record terminates with carriage return and line feed, as would be the case of a list of words prepared under the CP/M editor, then the record length must be the fixed word length plus two. BSORT reads the disk file without change, complete, to an internal array in the form [1:number of records][1:record size] CHAR where CHAR is an eight bit byte. Next you will be asked for sort parameters, by means of which you may designate one or two sort fields. Your response must take the form s1l s1h [a| |d] [s2l s2h [a| |d]] where "snl" are the position numbers of the first characters of the sort substrings and the "snh" are the position numbers of the last characters of the sort substrings. The symbol "|" indicates alternate choices. The sort substrings may not overlap. The letters "a" and "d", which may be either upper or lower case, indicate the direction of the sort, whether ascending or descending according to numerical byte value. When omitted, default is to ascending. The program makes many checks on the appropriateness of the entered data and requests re-entry when not satisfied. It also checks that the requested file will fit into available storage. Typical dialog: BSORT B:FILE.DAT OUT.DAT Enter record length: 9 Enter sort parameters: 9 9 d 1 8 This dialog requests that file "FILE.DAT" from the "B" disk be sorted and the sorted file be written out to file "OUT.DAT" on the default disk. It consists of 9-byte records, and is to be sorted in descending order on the ninth character, under which it will be in ascending order on bytes 1 to 8. Entry of record length and the sort parameters has few constraints of format. For record length, the first set of contiguous ASCII digits is taken; all other input is ignored: Enter record length: #swX R14,tg 9 8 (etc) This response will be interpreted as "14". Sort parameters will be sought in the following five patterns: n n {a|d} n n {a|d} n n {a|d} n n n n n n {a|d} n n {a|d} n n Only the ten digits and the letters "A", "a", "D" and "d" are recognized, hence any other characters may be present but will be ignored. I.e. all other characters, including blanks, will act as separators for the parameters. The program may be aborted in the entry portion by typing control-C. rd length: 9 Enter sort parameters: 9 9 d 1 8 This dialog requests that file "FILE.DAT" from the "B" disk be sorted andescending order on the ninth character, under which it will be in ascending order on bytes 1 to 8. Entry of record length and the sort parameters has few constraints of format. For record length, the first set of contiguous ASCII digits is taken; all other input is ignored: Enter record length: #swX R14,tg 9 8 (etc) This response will be interpreted as "14". Sort parameters will be sought in the following five patterns: n n {a|d} n n {a|d} n n {a|d} n n n n n n {a|d} n n {a|d} n n Only the ten digits and the letters "A", "a", "D" and "d" are recognized, hence any other characters may be present but will be ignored. I.e. all other characters, including blanks, will act as separators for the parameters. The program may vÿd§BSORT.ASM\öÿ ßÿõÿòÿšÿ‹ÿ�ÿÄÿ¾ÿ‘ÿ³ÿ�ÿ !"#$%&žÿ»ÿŒÿ–ÿ­ÿ¬ÿ¯ÿ¼ÿœÿ·ÿŠÿ²ÿ›ÿ'()*+,-./012345½ÿÎÿ°ÿ“ÿÏÿ¶ÿÅÿ™ÿºÿÓÿ±ÿ�ÿ«ÿ’ÿ—ÿµÿÍÿ¹ÿ�ÿ6789:;<=>?@¨ÿ˜ÿÑÿ©ÿ§ÿ†ÿªÿÕÿ¤ÿ¢ÿ”ÿ¸ÿ®ÿ‰ÿABCDEFGHˆÿ¥ÿ´ÿÌÿÇÿÆÿÂÿIJKLMNOPQÒÿËÿÊÿ‡ÿoÿØÿÃÿÈÿRSTUVWXYZ[•ÿÉÿÔÿûÿŽÿ…ÿ×ÿÖÿÀÿÁÿÛÿùÿ¦ÿÐÿÝÿ„ÿ‚ÿìÿåÿÿþÖ“Ü“ú±9$þZQ�¦ÜÓvš4ŠrO{µ�æþFØÖq{oò냦ñ×_¿®Ç_¿ÌÖã¯_Æt¹§ú†V7”v¾Iü ]™\kåiüõׯt켢ϳa»K^”§¥‰{J™ÒÖÄk“ìéƒÉµVž.÷´º¡«Jóß¼dÚ$½°%ÒE—¤y¡¸¤ý=]º,÷*˨IÌ@‰&}P”{­ŒOt}2¥½R:÷×–(zÊâRHŒ"£¦yrɧ¹¾§DSˆ9­¦*£ÜÓøë¯?ÜÛJ™}žeyôtm¯Õ@:R·÷´Œ†O>úß+ÓäÉ”ºLÝÛB½ç™hüëâ‡hüõ˘ÎêbºÄÜÓxv#l…íî�g´5ñÚ$û5�ÊI±[SžQ“L§j $£„êêŸ=ÝÔ“žLìtî%-ãt?d a+l1*'ÅŽ~Éý¶Ó´Ì§Š|²W¥_b§·�¦e>U䓽ú«°¶DÊ(ZæSE>Ù«Œ£è_OÃâÙ'{u£ï·ÿ¢$£.ë’)åžêêŸý�°%Úu™2ô!ŸNé¢(É^Ô@ËhȨ&š�¦Ê_ë%~ ,MÛÄ${¥•É„-‘>˜Ø](¡&ú,N y2�×7ÂV•{]aØA-U¢3ª«ö´M®5±óZ“â³ñlÖvkâµIöM~�{áQ9)v a+lK¥)÷ZŸL)ÓIó’ #ÜÍÑ®GåÎÕŸ{‰�2ÊtÒ¼£lCŠQénWÂws´ëªÜ¹ú`·&^›dO™Nša”mHQ•îv%Œ²jƒ°�û\çÉ4ÿ£FíBÀ|3ß�…m™¼+Ô2馚†<{F;G½.vuú °FéÎxj:c”×4äÙ ùnQFµ £tR £Ü9Ôiù©t·Â¶TšµLº©¦!Ï^HGÊý¶Ó´Ì§J!u(Ïé°¹ßvš–ùTÑ�g/ä»ýEaô“[¬ÖNµ ®|MËO¶PÉ@Ë|ª(ñ5ռв3ú Œ0jæ›ùî$lÓHú (‹F £v! rÅn¾¶.ËòkO±ÓÛNÓ�g/”d4¨eÒMµ0Bê�žÓ�0úÉ-Vk'ŒÚ…W¾¦å'a{er­(vzÛiZæS%ŒÚ…€«bçŠÛz3E±ÓÛN #ÜÍ‘®Ós=F;G½®Ã¤\ £v!`”NJa[¨LG£hPˤ›jòìE!u¨ÓòSén…ÑOn±Z;aÔ.¸ò5-? ãØWx{˜ïk”îŒ'©®þÙWו°¶�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ô(<ßÌwã…°�û\çÉ4ÿ£¢÷ÄäÉeª²5• ´ML²WZ™lMÍA5/ôžL;•ÝÛB½ç™è4[Œg4þúeLÇÄw‰¹§Óoo„­°í㻢Øém§i™Oùd¯HGŠ�ÞvšÎõèFýín=>¶9$&i´2ÔÄÎka„»9ÒuyN`—&î…îæh×é9ÝVGaÔ.”ýäv%lK¥©éŒQ^ÓŸ¼úQÿ™Œj¢hs¯•!iv#Œ»ÂÁ £Ü9”çºlî·�F¹sHÏuØØém§…QîÒóê°Ë|ªHý¨•×Â(wnTì΀M.ÑhZN“ëLåΡ܅[À^b燌2�4/4Uïj*lëƒj^(÷ÛNÓ2Ÿ*òÉ^ #ÜÍ‘®Ës=lî·�¦s=FíB@Ý~:o„qÜÔ˜|š�…îæh×nTì΀͔¦ä�¦å4¹Æ|S F¸›#]Ÿ7ó¾|FíB@õ°ëËWáɧÙx!l©>¨æ…b§·�¦e>U䓽F¸›#]§çzØØém§é\�„Q»P·ŸÎa75&Ÿf'a„»9Úµ»3`3¥)¹D£i9M®…1ßè…îæH×çͤ/_…Q»P=ìúòUØ O>ÍN aë.ÑhÊ—¤*S䓽Êhˆä£¦æ ša„ÔÁ�ŠÝY“ÂÁ ã¸ù7š;aKu2mºi¢e:šäZQòžäÓä2UÂws´kW61&¹§K’)J†Á¨,FÙ†®¹r%Œ»º}`u¤t%ŒÐ†£tRþn ØQ:)é’dJµ éü|>6ë.Ú$�FZh»O^™÷´Œ†´Úo£IÌ=e:šäZ £lCŠÞåü#`“÷$Ÿ&—©¢½ÚGs/l©>¨æ…²ü�Šâ’r¿í4-ó©F;‡[Ï>Ÿ[ÀÒ¿þò/Ò‘rŸuFÑ>ÑÍ�âRåΡ<¯îKDÉtJêG­¼Î„îæh×3ÀR¡2¥)S�ކšØy-Œ² )Îe½Ù #ÜÍ‘®ËÑðTµMŒ¢„.Ýr© -£F;G½.wiï\ KDCnT££¹§Ü/£Ù':�^µ £tR £¿�£^—EÝžË,�Lî¯)÷4äF5:š{ZFCËÜdZánŽt]žë`‰Hý¨•×7T(ÝŸÑl=^Ÿ(ú,ŒÚ…€Q:)KD¹§ÓÍiM³ï>Ÿ)÷4¾ù^u5Çì|n…qÜ|ÄäÓì³0ÂÝéú¼©úò–ÈGMËØù�²Hèr-ŒÚ…€êa×—¯Â8öÜhRì„'ŸfŸÂp›9>–úIJßÓŸ¼RƒèrOuõÏžÆ7ßSôÓû? [7 Fe ¹Q�Žæž”׿žþ½¢¸¤eì åž.Ýr©ÌŸ×¤Ê [¢k¥)S�ކšØy}CôùD—{­2Ú*CÊks# —¦p€¥Ç“0\šÂ–¿†KS8ÀÒãa¸4…,=Ž+ —¦p€¥ÇÏ'aô·s¤ëñ€¥í´Ë(.—™Ò¤#5±óš.÷Z Ã¥)Raô“[¬Ö°” ]ºåRº$™¢dŒÊ2aô·s¤ë™0ÂÝíº=œ…‘º©0úÉ-ܺ,eªÑÑP;¯…ÑOn±Z;a„6¤8—õfXJš¦ÛwÓD+a¤.E*Œ² )Îe½Ù £®æ˜}™µ€¥s7�’6Ióòa71ù4û°Däãš®#E/ŒþvŽz]u»¹ÛÁÒ«Ò”ûe4ûDçÑSôÂws¤ëò\�KD^ý¨Iý¨•ר]¥“Ru5Çì|nK›Hûh)¯M®2úpPžÎg:¨…qÜ|ÄäÓì3`éUiòêGMÊks/<ù4û~!Œ»ÂÁ– •)MêG­¼¦Ë½VÂ(wåyuX"Ò‘þ¨L¶”ª¡kå~ÛiZæSEYþG%ŒÐ†ç²ÞìK¾Û_”¡¸¤L5:šLýänÝ–šƒj^h ©ýVß cR8a?Â�&Űä£>äþšÊ(aÛwS�o§÷t¹§ñé ]îµÊh« eªÑÑ#u)ZÀÒãIÇ“O³„‘º-`éñ{akL>Í~FêR´€¥Ç/Â8Ö˜|šý ŒÔ¥hK�ãß ãXcòiöƒ0R—¢,=~> ãXcòiöƒ0R—¢,=þö{akL>Í~FêR´€¥Çñé‹0Ž›“O³ß O>Í~X#ÜÍ‘®û‡Ð—¯°´ï¦:ßNïI�0jª‡]_¾ ãØWp£I±ž|šýv!l)$™¦L5:Ú'÷tHÞMU–‘>$žÆ§/t¹×*[Ó‡|:¥æ šš&Za”mH1úÇü,l©>¨æ…ô!ѤÊ(Ê3R>v×Ú«}4÷¸«ÛWa„6¤è]QÎ?v¯öÑÜSòžäÓä2U¨]HççóI“ÂÁ ãXaòiö«0ÂÝéú\~ìËWX2j�¦e>U4M̵2¤‰§½ÚGs/ŒÚ…€êa×—¯Â8öÜhRì„'Ÿf¿.„m�L›nšhEÉ0•e—¤Õ~Mbîɨ&š�2Mr­(1*FhCŠÑ?æga„»9Òµ+„‘º©0Ê6¤pW»JØÒd«<å~ÛiZæS%ŒþvŽz=©Va„»9Òuy®G¨]¥“RóM'Œãæ#&Ÿf_„îæH×çMÕ—¯°´Ì§Š|Ô´5*S^ £v! zØõå«0Ž}7š;a;Ù*O±ÓÛNÓ2Ÿ*áɧٗ…0úÛ9êuº «Ý vPS¥-󩢸¤,Ù+òÉ^ #ÜÍ‘®Ós=FíBÀ(�”Âèoç¨×u±r»ì>yQäÕZæS%Œp7GºNÏõHµ £tR c¾)à„qÜ|ÄäÓì«0ÂÝéz“–}ù KY~í“)ùHCnT££¹§l›4Jµ Õî/_…qì+¸Ñ¤Ø O>;.„-¹ì…–Ñ�QM4M•¿Öa„»9ÒuQ‡¾|FíB@õ°ëËWaÔ.+—Ö“ `�Jj¢ÏâTQî·�F¸›#]דM9ÿ›i“ûk2*ÛFŸ)a„»9FkWV«ý6šÄÜÓ¥[.•FíB@Y»Í¨¬úQ›¤Ñä»ýEakL>;V›{J®“Ü #¤î#À6±óZóÍF€gššCb’F+#ŒÚ…€br5ÞŒ À6Ñ¿+£IGºä>1÷Â8Ö˜|š}¬6±»L•0úÉ-Ü:£Ü9aµ¶Ô$Ó¦›&Z‘þ3jâ~;U{åµ0êÞ c¾)à„Qîú"¬6“OãÙBØ’Ë^h eÑhÚ&&Ù+­Lv#Œ»ÂÁ–ŒÊ”¦mb’½ÒÊP;¯…Qî6£â¼I…îæHו+úòUµ Õî/_…Q»P¬\ZO6€5*¨‰>‹SE¹ßvZ!u¨'›rþ°¾Û_”¡¸¤æ�˜¤ÑÊddT2cR88a?bòi<¬�”ûm§×¤Í=%×Iî…Q»P¤•+zÀ• kj¢WFSâÊt4вh4m³Ï„q¬1ù4žV›{J®“Ü £v! þT¹¢lsPÍ m“ì•V&ƱÆäÓxØ${¡ä:ɽ0ŠÕ€U~ ¸¤ùf¾ [aûH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ô(l…ç›ùî´¶…JÊý¶Ó´Ì§Št¤Ä˜ä~MM4F5š–ùTQ–ÿQ­i™ûdJÍA5/Ù�°½2¹ÖÊÓåžêZÝPÚù&ñ4þúëW:v^ÑçÙ�°-Ô{ž©�f_ãhüõ˘ÎêbºÄÜÓ÷7– • ”ûm§i™OéH‰1ɽ0jŠÔ…û‡°¥ú šJü@Û˜eùezOM4F5š–ùTQ–ÿQQ“L›nšèÉ=垦I¦)S�ŽF“ÂÁ ã¸ùˆÉ§ñIýín=»°´ï2MFíã»"—ô§±û3]îµÊ„îæ­g€¥fªCMì¼VFxòi<^#­ïЖšCb(÷´Ì§Ju_¡,ååšV“ó_„qÜ|ÄäÓø3`ÉGaÌ7w–šØy-Œc_aòi<ž|Ÿ¨{ÀRÖ]´IMq¹$—™0úÉ-êµF;Çh=;Ÿ[ÀÒ>÷]FY~í…qì+L>�¿ž|^£ŸÜ­G€¥k¥Iˆ5q¿�ª½òZuïX"Ò‘²î¢MÒhaô“[ŒÖNýän] £îKYwÑ&i4Åå’:ßej Ë½V™0úÉ-굞|¿Æ|s‡`Iˆ5q¿�ª½òZ¡ )Fÿ˜Ÿ…‘º#ÀRÖ]´I-Œ² )Fÿ˜Ÿ…-ÕÕ¼�>$š–ùTQ–ÿQQžÑ¾›ê|;U—dTÍ@Så¯õAØ%~ &™6Ý4ÑŠºíVJü@ÓøAºÄΙ0úÉ-ܺ,5Õ¼�>$šôAEyF ÕD3cR8a?Â�&Űä£>äþšÊ(a„Ô¡«�0jÒùíø$Œã¦ÆäÓøa„»9Òu:¿íËWaÔ.T»¾|Ʊ¯àF“b'<ù4þa!Œ~r ·€¥æ š2jŸä~PFu_¡Æñ#&ŸÆ¿F¸›#]¡/_›\¢Ñ´Ï®…Q»P=ìúòUǾ‚MŠ�ðäÓø· aô“[´ë`)ÓÑ(úCu®¼F?¹EX×€%¢$£‡j$Œ² )ÜC5FÙ†õC5F¸›£]�KájDßh,Œ² )\¸ £lCŠ:\�„íÜç:O¦ù%Æ$÷”ûAýHM2mºi¢óè…-‘{š?Ó!É(£²Œ¾‘+ ÷¹rEßÑŸÂՈܟ‹°ÚÐïhþX„ÕFØÒOÿýF®˜Ÿéw4,Âj#l…Ú�Â…«`ÃՈ⒜0îêö€%")] #¤EXm„Q»Ð?„ñIÇn4)v€�ïÊ,§ñƒ0îêöU¡ )\1rå °Ô$Ó¦›&ZQè;JW¨]HççóI“ÂÁ–šƒj^(˯½0Ž&ŸÆ¿–¶1Ëuþ®Ö_„ÑOnáÖ-`©‰ûíTí•×”/É«ëDçïJuï„ÑOnÑ®�0úÉ-Ü:£î�0úÉ-ÂÚ c¾¹C+<ù4þu!Œ² )\1? [7 Fe™Ê(.)‹FS¦Mî¯3Ê=iµßF“˜{JŒJ„Ú�Â]í*À’Vûm4‰¹'£šhÊt4J!u¨&“ó°4Î4eÑhŠËe¦´0úÛ9Fë™0úÉ-êµFêRŒ„Q¶!ŧ«]5,%Ã`T–Q\RòAoŸö ÿ,Œ�:T®è?–òŒôAE �ü@Y4ú/˜NÅGa„Ô¡šLÎ'ÀÒÉ”E£).—™ÒÂè'·¨×N¡ )ÜÕ®FêRŒ„Q¶!ŧ«]u,%Ã`T–Q\RòAoŸºÅû³0ŠÕNØ ÛGz¤Gz¤Gz¤Gz¤Gz¤Gz¤Gz¤Gz¤Gz¤Gz¤Gz¤Gz¤Gz¤Ga+\¹b7ß-„m•�ë[Pò´}&)yÊž)ñ%Oæ™t¤äéÏÿ¶ Ÿ~ž [�çVØ‚h~¦Œ¾ÑVØ‚h×®6ÂôÓï·´øFFØ‚hÊ•°ýôûù™2ú…¶ÂôÓïwíj#lA?ý}›}þ½MŒÎu=™üú ÿ#l�õ‡.7j |IÛÄè„IF>Ò¿²}2�þ‹ÔTí•×ÿ¶ Ÿ~¿ åJØ‚~úûüL od„-è§¿ïÚÕFØ Å7Ê„-è§¿¯B¹¶ÀüL _È[`×®6 ê|¦“æEØ«P®„-@4?Óè;2ôWÊè;Ú [€h×®6 Ÿ~Ÿé¤y!“_´¶ýôû?Ðâe Z…r%lúé÷™Nššª¥¶Â Ÿ~¿¥Å72 :Ï…-pž [ÐO?Ï…-è§ßŸçÂDç¹°Å$¶ÂmHQ‡«`©¢o®FÔtÆ(¯i›�ë”§7ú…*a?âaSî\ý °ýôž¢W¤¦j¯¼Æ]ݾ #ÜÍÑ®Ë0ï;�(Ëÿ¨hšïs-ŒÚ…€t~>Ÿ[†yOßÑŸ*úŽÞþ,ŒIáà„Q=”-ªòJu…²�»°]¦(÷™2:�ž²hôš²}2�Ò61:×yô¨&ªòJÇ ›rçêO€Õ‡<£mbt®ó詉ûíTi5£îQ¹bç»MŒÎu=MÕRHÌ l©>¨æ…²ü�Šâ’¦ñƒ2´MŒÎu½p¹sÅl¼FhCŠ:\�K}£p5¢©ZjaÜÕí«0BRT%`©¤oôP�hª–Zµ éü|>–JúŽ*aL 'ŒãG”;WÌN€¥è§÷½"5U{åõš–¹Ï³ƒ„qìQî\1û°ä#eûd:%5U{åµ0Ê6¤(ûJØÒÃv« m£s�G#ŒÐ†UX*è…«™üú …qW·¯ÂmHQ?T#ÀÒ}£‡jD&¿>haÔ.¤óóùXz£ï¨ƤppÂ8~D¹sÅì3`)úé=E¯HMÕ^y½¦eîóì a{ŸK*¿«þLßÑŸÞ¾+þ,ŒIáà„qìQîÚ9`)ÓIóB—Î-£¡C~} ,”p¹ “…0BRÔájXªÖäÕšÆÊÐ%v~FõP¶h…Ú�bó0 €¥rM^} n»U†.±óƒ0ª‡²E+ŒÐ†›0jKÅš2¥É«®F´Œ†ùõ�²|PÂ(Û�¢W#aû ŪÜ–ŒÊt4ж&^›dO™Nšár×ÎÂmH± £°T¬É«4�”¡Kìü Œê¡lÑ #´!EýP�KokòêuÛ­2t‰�„Q=”-Za„6¤Ø<Œ`©\“W¨Ûn•¡Kì¢h MãÊòA £lCŠú¡ «r·F¸›£]ÏKFe:E[¯M²§L'Í‹0R—¢¬„Q¶!Ũt·+a„6¤¨Jw»FYµAánŽv]îÂ-`)÷�Q{å5e:i^hªÞÕTóM�^ǾBåŠÝ|Xښب,#¯~Ô´MŒÎu½°¶T™Ø¨,£n»U†¶‰ÑÂåγÓB¡ )ª°TPž‘Wh?(C—ØùAeRÔájXaûŠP¹b7ßV¸Ü¹böy!l©2±QYFÓøAÚ&F #´!EU–JÊ3òêuÛ­2t‰�„Q¶!EýP�+Œc_¡rÅn¾¬p¹sÅìû…°¥*1:×yô”\'¹_S—åþš úåí(ñ•ôWÚQîi;MEq)l‰¨ _hG‰¨¤¿~£•mU£ów5½¿FíB@åŠÝ°Â8öÊ�+fcÀ [á‡M¹sõ§…°¥B5ñ]ºÄÎÅ%yõ£¦L5:�žt¤‹¢mbt®óèÕ Œp7G».wá°ÔTóBSõ®¦ÂHë=`IEÀR¦“æ…Ô~«ï×”E£©‰ûíTi5#ÜÍÑ®g€¥,yW´5ñÚ${ÊtÒ¼#u)Ê °Â(Û�¢*Ýí °ÂmH1*Ýí °t­4]b燌2�4/Â(«6°Â¨&ZÀ £lCŠú¡–ª‘0ªI…°Â(Û�¢W#ÀR¸ #ÜÍÑ®g€%£2�¢­‰×&ÙS¦“æE©KQV€FÙ†£ÒÝ®+ŒÐ†UénW€FYµ€Ʊ¯P¹b7ß–ŒÒ�ñk"yõ£¦L5:�^Ø W®Ø¹…°-Ôw‰1‰¿V”“Ü“+(÷:’þi›�ë<úŒôAÑT-5Å%}8äÍ�šèu’ûLØ©©Ú+¯3úpÈ›m�jÔ (¡mþ5©©Ú+¯×”ø�ôA‘ɯššèu’ûLØéCÌ}8äÍ�†H>êa{er­•§Ë=Õ7´º¡´óMâiüõׯt켢ϳa[¨÷ìÂWí<¬(\�ÈÑ/ߨ _¨¤_¾ÑC5"'l‘N„-ˆÊ+W‘{*ž)ñ¹§òÙ []µó°"÷T<ÓÖ¨F *#÷´{¶ J'ÂôÓï úÝâ�…-ˆ&©¶ ºjçaEî©|¦!ªŒ|Ô´5ªQƒ"÷´{¶ J'ÂôÓïKúnñ�ÆÂD“TØb’ [a['Ó¦›&ZQ2 Fe™Ê„R‡j29�KãLS�¦mb’½ÒÊP\.3¥…ÑßÎ1ZÏ„ÑOnQ¯�0BRÔájXj:c”×®FÂ(Û�¢*K…0îêöUµ óMzW–šdÚtÓD+J†Á¨,FÙ†®.K7î©xFêRŒ„Q¶!…{+Æ€¥÷T?Ý.®ž…+WÌÆ a[TóBù’–¹Ï³ƒ„Ú�¢*K¥0îêöU¡ )ª°T£v! �ŸÏ'ÀRAßQ)ŒIáà„q¬P¹bö°´Ì}žÔ léa;$ZQ2 Fe™Ê(.É=Ï”ø�ÜSù,ŒÐ†UX*„qW·¯Â¨]˜oÒ»BeR¸º,ݸ§âY¡ )ª°T ã®n_…Q»0ߤw…0Ê6¤pu XºqOå³°¥òC²FHаÚ#´!…« ÀÒ�{*ž…qW·¯ÂmHáê°tãžÊgaÔ.”W®¶DW‡|ªÈ=Ï´5ªQƒÊÈ=íž×¤ts#ŒÐ†î­–nÜSñüÔ/6ϸ«ÛWáʳ±[#¤eÆ€gš²h4M•¿Öa„6¤øtµ«Æ€¥÷´{~ê›gaÜÕí«0jê¾*‹+aL 'ŒãGT®˜}Xjªy¡“(‹FSÖ]2mr-\¹b6-„Q=”-ªòJ!u(ËÕÛ°ÔTóBCnT£óè…1)œ0ŽQ¹b6®KIÖ(?äþZÕ¤BU^–•5ʹ¿Æñ#*WÌNÂ8V¨\1§€%÷T<ÓÖ¨F *#÷´{^Ó?xaû •+f'áʳq½F5©P•WÂ8V¨\1;–ÜSñLCTù¨ikT£Eîi÷¼¦n+\¹b6NÂmHQ€¥Ü7Fí•×Tc¾¹C+Œ² )ªB!u(Âj#ŒþvŽÑz&Œ~r‹zí„R‡ÊýgÀžü@Y4ú/˜NÇ�¨\1¯ë£0BR¸·âØn;$ZÑ�{*žŸnWÏk:ù�²h4eÚäþZ©K1FÙ†î­8 W®˜�W a„6¤poŰÝvH´¢÷TŸK%}G•0&…ƒƱGåŠÙgÀ’�”í“é”ÔTí•×Âöa;$ZQ2 Fe™Êh yõ£¦&ɳè…R‡¾« `iŸû.£"¬6Âèoç­gçs+Œ~r‹zí„R‡ÊýgÀ6Õ¼Ð2:ù�²h´0&…ƒÆñ#*WÌN+Àú(ŒÐ†î­< #u)FÂ(Û�½•'áʳÓj!ŒÐ†î­ #u)F€%£†®Q” ƒQYF—{*Âj#Œ² )Ü[9Æ]ݾ ãØW¨\1;9áÊ³Ï a„6¤¨ a”mH± £°äÕ W#ZFC&¿>hÚ&Fç:�^¡ )ªReRlF°äÕz¨F´Œ†¦j©i›�ëÄL [¢‡¼9ÐÉG}#l¯L®µòt¹§ú†V7”v¾I<�¿þú•Ž�Wôyv#l õžgj ñ—Å3ý2¦³º˜.1÷ôåFØ ["*è…«¹5QIßè¡‘[íèý©ø]ùgšÜ® : [aë¦×Ñäú°_[\µó°¢p5"G¿|£‚~¡’~ùFÕˆœ°E:¶ *¯\Eî©x¦ÄäžÊg+lAtÕÎÊÜSñLCTù¨i§Óø�ÜÓîYØ‚(�[ÐO¿/èw‹o4¶ š¤VØ‚èª�‡¹§ò™–q:�2rO»ga ¢t"lA?ý¾¤ïßh,lA4I…-&©°¶T'Ó¦›&ZQ2 Fe™Ê„R‡j29�KãLS�¦¸\fJ £¿�c´ž £ŸÜ¢^;a„6¤¨ÃÕ°ÔtÆ(¯)\�È £lCŠª,¸«ÛWaÔ.Ì7é]!Œ² )\]–nÜSñ,ŒÔ¥–nÜSñüÔ/6ÏÂ(Û�½ca„6¤¨ª‘0Ê6¤¨JÀR)Œ»º}FíBÀ|“ÞÂ(Û�ÂÕ%`éÆ=•ÏÂH]Š‘0Ê6¤poå°tãžÊç§~±yFhCŠª,¸«ÛWa„6¤¨JÀR)ŒÔ¥HKÅïJaÔ.”mÑÀRvÈ—šL~}ÐkšÜ® : ã®n_…Q»0ߤw`)£²Œâ’ÜÓîYwuû ÀÒ>¾+rO»gÒ‘Ê’¥¢í4i”0BR¸«]%Œ�:aµFíB@ÙOnW–vÉ‹¢&1Šâ’N~ ,MYwÉ´Éýµ0BêP¹¢ÿ XÊ3ÒeE¯þ"ŒIáà„qüˆÊ�fcÀ’�©C5™œO€¥¸\fJ £¿�c´ž £ŸÜ¢^;a„6¤pu!ŒÔ¥ £lC ÷VœK7î©x~º]\= #´!…«Ka¤.ÅHeR¸·òXºqOåóÓíâêY¸r£Ùx!l©>¨æ…š¸ßN•ΣFhCŠª,•¸«ÛWa„6¤¨ ÀR!ŒÚ…@éü|>–ŠïJaL 'Œc…Ê�fŸKËÜçÙA –¶C¢%Ã`T–©Œâ’ÜSñL‰È=•ÏÂmHQ€¥Bwuû*ŒÚ…€ù&½+„Q¶!…« ÀÒ�{*ž…Ú�¢*K¥0îêöUµ óMzW£lC W—€¥÷T> [*?$[ZMÕ^y�ч\(÷CÞ¨Œ Jü@¥0BêP„ÕF¡ )\]–nÜSñ,Œ»º}FhC W—€¥÷T> £v! ¼r•°¥«C>U䞊g¢ÊÈGMË8�ÆäžvÏ”ûƨ½òšŠa„6¤poŰt㞊ç§~Ñ? ã®n_…+7š�ÝB!u(«0,M•¿ÖÊ¢Ñ4FhCŠOW»j XºqO»ç§~±yFíB@ÝWeq%ŒIáà„qüˆÊ�fß–šƒj^èäʢѕÍÆ£…0ª‡²EU^ #¤e¹z–†Ü¨FçÑ cR88a?¢r£Ù¸F5©P•W€¥Ae�òCqìQ¹Ñlœ ãø•ÍÆ©0Ž}…Ê�f'áÊ�fãz!ŒjR¡*¯„qìQ¹Ñì$\¹Ñlœ.„Ú�¢*K…0æ›;´Â(Û�¢*„-ÕÕ¼P·Ý*C—Øù�rOM’)ò‘¦‰¹V¤¦j¯¼Æ]ݾ #´!EýP�Koô�ª9aÔ.¤óóù$ŒIáà„qìQ¹Ñì3`©Ûn•¡i¾Ïõš|¤ib®©©Ú+¯…-=l‡D+J†Á¨,SÙš”nn„R‡"¬6Âèoç­gÂè'·¨×N!u¨\ÑƤpp€¥“(‹F ãø•ÍÆ+À’�ÂmHáÞŠ`éÆ=ÏO·‹«ga¤.ÅHeR¸·â$\¹Ñl¼Z#´!…{+ÆÂH]Š‘0Ê6¤poÅXwuû*Œc_¡r£ÙØ Wn4;-„íÕ!Ÿ*rOå3-ãt?däžvÏ4¨Æ¨$ST®IéæF¡ )Ü[9,ݸ§òù©_lž…qW·¯Â•ÍNn!Œ�:”U #´!ŧ«]5FíB@ÝWeq%ŒIáà„qüˆÊ�f?–šƒj^h �ü@Y4Z¸r£Ùi´FõP¶¨Ê+a„Ô¡,WocaL 'ŒãGTn4;Õ¨&ªòJÇ�¨Üh6ƱBåF³S*Œc_¡r£Ù°äžÊgú幧ݳpåF³S½F5©P•WÂ8V¨Üh6®ÜhvJÂmHQ•€¥A5Fí•×T #­ïÐ £lCŠªFHú"¬6Âèoç­gçs+Œ~r‹zí„R‡ÊýgÀÒÉ”E£ÿ"ŒIáà„qüˆÊ�f§`ÉGa„6¤poåI©K1FÙ†î­< Wn4;­ÂmHáÞʱ0R—b$Œ² )Ü[9Æ]ݾ ãØW¨ÜhvrÂV¸r£Ùç…0BRT Œ² )6aÔ–¼ú@ájDËhÈä×MÛÄè\çÑ #´!EU £lCŠÍÃ(–¼ú@Õˆ–ÑÐT-5m£s�G/Œbµ®ÜhöýB!u¨\Ñ,�ü@Y4ú/˜NÇ�¨Üh6–|FhC ÷Vœ„qW·¯ÂmHñéjW�„R‡² 'aÔ.Ô}UW˜NÕCÙ¢*¯„R‡²\½�„1)œ0ŽQ¹Ñì{'ŒjR¡*¯„qìQ¹Ñlœ ãø•ÍÆ©0Ž}…Ê�f'áÊ�fß»…0ªI…ª¼ƱBåF³q*Œc_¡r£ÙIØ Wn4ûa!Œ�:T®è? cR88a?¢r£Ùi$ŒÐ†î­< ã®n_…Ú�âÓÕ®: #¤eN¨]¨ûª,®„1)œ0ª‡²EU^ #¤e¹z; cR88a?¢r£ÙNÕ¤BU^ ãø•ÍÆÂ8V¨ÜhvJ…qì+Tn4 Wn4ûÁ-„QM*Tå•0Ž=*7š�Raû •ÍÆÂVØ>Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò£°.ÛI±+Âvî3et=eÑhZFCÙ>™Ni›�ë<úìFØ^™\kåérOõ Ñê†ÒÎ7‰§ñ×/3:«‹ésOãß®iiâž>ùNè=N»½¢Ï–èO¥JLsÈý5%~ 2�ûë?Ó6¹Vôe|#l õžgj ñiñyFã¯_ÆtVÓ%æž¾Ü[aë¦×Ñäú°_[a‹ó¤ ßй˜ôt¢Ý„ªÑŸ’? [¤a "šŸ)yúÍ3ýBÉÓoè;? [Ñ®]m„-è§¿'ô–ß(yúͳ¶ Ÿþ~ž”Ó¹˜ôôúŽÆ4ú}7¦Ý„ÂÕèOÉŸ…-@?ýþª�‡%š~¡ä)¶ ŸþžN„-@”<åô;?Óâ%Où³¶Ñ -¾Q.lA?ý}’Za úéïÉÓË3-¾QòAo…-ˆè<¶˜¤ÂVØÎ}®ódšÿQQQ%~ dŒÊ2•Ý#´!E®F€ W#ŠKj:c”×´MŒÎu½0Ê6¤¨JÀÒo„qW·¯Â¨]˜oÒ»BeR¸º,%Ã`T–Q\Ròô›gúFÉS¸= #¤ÕdrvœiʢїËLiaô·sŒÖ3aô“[Ôk'ŒÔ¥ £lC ÷VŽ› ƒQYFqIÉS¸=?íþY!u¨\ÑƤppÂ8~DÙÎÆÂ©C5™œO€=ù�²h4Åå2SZýäõÚ #´!…«Ka¤.ÅHeR¸·òØdŒÊ2ŠKJžÂÕèù©[¼? —íl¼¶sßµW^ÓoÖÔÄý61Št¤‡j´¦LiÊiñ�~CßÑX¡ )ª°ôúŽÆÂ(Û�¢*K9-¾Ñoè; c¾¹C Xú ýnñ�ÆÂ(Û�¢*K¿¶õA5/¤‰¦ßÐ/ßè¡ ã®n_…Ú�¢~¨F€¥‡jDqIÛÄh�G/ŒÚ…€t~>ŸûP�è;ú�0&…ƒFѰËÜçÙA ôá <é¯ôP�„íÃvH´¢dŒÊ2• #´!…«KÀÆé@7ÉÓož…Q¶!…« Àzõ�n’§üY!u(Âj#ŒþvŽÑz&Œ~r‹zí„‘º#a”mHáê°äÕJž~ó,l¶C¢eÑhÊ´Éý5%Ã`T–©L¡ )Ü[9Fن’§üùi¿ðÏÂH]Š‘0Ê6¤poå°”<ýæùi¿ðÏ©CåŠþ³0&…ƒÆñ#ÊvvFhC ÷Vž„Q¶!…{+N€¥ä)~êïÏÂH]Š‘0Ê6¤poå °”<ýæù©[¼? —íì´¶uÜo£(yúÍ3}Èõ�’§ßÐw4~¦o”<åÏÂmHáÞŠ±0îêöU¡ )Ü[9FHÊ*Œ…Q»P÷UY\ cR88a?¢lg?–šƒj^èäÊ¢ÑÂe;û¼FõP¶¨Ê+a„Ô¡,WocÀRsPÍ ¹Q�ΣƤppÂ8n>¢lgß £šT¨Ê+a{”íìWÀÒ!yW¤# ‘²¸W´�ï*Ʊ¯P¶³1`)¾Ð‡ƒ2ŠrMy¶¦ëH:’W?jú�pÙξ_£šT¨Ê+a{”íl XŠ/”d”gÂ8~DÙÎÆ€%r­£0Ž}…²�ý*\¶³¶TMô5q¿MŒ¢e4”<ýæ™?PòôúŽÆÏ©CåŠþ³0&…ƒÆñ#Êvö°ä#�ü@MÜo£„Ú�½'aÜÕí«0BR¸·ò$Œ�:”U8 £v! î«²¸Ƥpp¨ÊUy%Œ�:”åêí$ŒIáà„qÜ|DÙÎ~+ŒjR¡*¯„qìQ¶³_…qì+”íl,\¶³ß.„QM*Tå•0Ž=Êv6Æñ#Êv6Ʊ¯P¶³_…­pÙÎ~]Û>¾+Jž~óL:RBY²T´�&�ZPòAoiñ�’§ß< #´!…«KaÜÕí+KK÷ÂmHá®v`IGa„Ô¡«�0jÊ~r».ÛÙ—…°í㻢ä)¦nKÑ+ÚN“F‘Ž´�Y®óè)§ßÑX!u(Âj#ŒþvŽÑz&Œ~r‹zí„Ú�ÂÕ`)yÊŸ…ÑOn‘®[À‘Ž”®Ö´4q/Œ~r‹Õ:#u)F€¥ä)§ßÑøYµ e?¹] ÛT5Fí•×”¯©9¨æ…’ë$÷™¦p5FhCŠ:\�Káj$Œ»º}FhCŠª,åÂHë;´€¥œ¾[|£±0Ê6¤¨ aÔ.¤óóùXÊé; W#aL 'Œc�²XJ4…«ÑšÊ7Š’§p5z¦Å7J>è­°MUcÔ^yMÉ0•e*£ÄÔÄý61Š’ë$÷©C_„Õ°äÕu¢ówEF5Ñ 4UþZ„ÑßÎ1ZÏÎçVýäõÚ #´!…« a¤.ÅHeR¸º,yõ�’a0*Ë(.)yÊŸ…Ú�½ca¤.ÅHeR¸·b Xòê�3MY4š’a0*Ë„R‡ÊýgaL 'ŒãG”íì«0BR¸·â$ŒÔ¥ £lC ÷VœK^} “(‹FS2 Fe™pÙξ.„m÷ÛÄ(J>è-}£äé7Ïô!×Jžòga„6¤poÅXwuû*ŒÐ†Ÿ®vÕX!u(«0FíB@ÝWeq%ŒIáà„qüˆ²Ÿ„Ëv<[£z([Tå•0BêP–«·±0&…ƒÆqóe; £šT¨Ê+a{”íì `éE©-isŸûkJü@MÜo“ûkaû e;þ°´Œ�h;MEËh(Ñ”{Jžrú�Ÿ…Ëv<^£šT¨Ê+a{”íøa?¢lÇ?ãØW(ÛÙa+\¶ãÓBØ–ª‰~ &î·‰Q´Œ†’zKß(yúÍ3%~ ä)FH*WôŸ…1)œ0ŽQ¶ã™0BR¸·â$Œ»º}FhCŠOW»ê$Œ�:”U8 £v! î«²¸Ƥpp¨ÊUy%Œ�:”åêí$ŒIáà„qÜ|DÙŽ? £šT¨Ê+a{”íì‹0Ž}…²ÿ \¶ãÏ aT“ Uy%Œc�²ÿ ŒãG”íøaû e;û"l…ËvüýBØöñ]QòAoé%O¿y¦ÜëHÙ4jJ4%Oájô,ŒÐ†îjW ã®n_…R‡"¬6ÂmHáêBµ e?¹] ãØW(ÛÙX¸lÇ?,„mß%ô–¾Qòô›gÊ½Ž”M£¦DSò”Óïhü,ŒÐ†îjW ã®n_…R‡"¬6Âèoç­gÂè'·¨×N¡ )\]#u)F¨](ûÉíJǾBÙÎÆÂVØ>Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò#=Ò£°v£I±[ÛBéÎxÒ‘êꟽ0ÂÝéÚ�úòUµ Õî/_…qì+¼=ÌwÂVØ•¯iùi!l]–åמµLº©¦!Ï^h -“L+C¹ßvš?Pìô¶Ó7–¨ï2M‡ä]Ñ ²Ü¨�†<{!ßí/ÊPîiµ¦Ä4¨eÒM5 yöB¾Û_”¶D¹§il�GOuZ~*Ýí�°½2¹ÖÊÓåžêZÝPÚù&ñ4þúeLÇÄw‰¹§Ó—aܰ×JÓ•‰Â¨û +a7áÊ×t,Œ�:Ôiù©t·€õJ 4¨eÒM5 yö"Œ~r‹ÕÚ ãØWpåkzvåk:^#­ ¬ë¾«è�¿ÿ–.ª‰{E³ïÆ?»ò5=-„ÑßÎQ¯ËUH?6SSÕhòìEµ £tR £Xí„­pݺbrµ¶…Ê”¦&1æžò%5‡Ä$�V†rO5åm�Ê”×”{2ñÅ%5‡Ä$�VFØ}8ÄLQ2 FeååžÒÕš¦Ê_ëåžFkRÓLQ¦45‰1÷7–¨Pº3ž¶1Ëu=ùnQ†rO£a{er­•§Ë=Õ7´º¡´óMâiüõË˜Ž‰ïsO§Ï7¶Pïy¦š}]Ìf4þúeLÇÄw‰¹§Ó—aô“[¸õ€5ñM•¿ÖaÔÕ3¶9¨æ…þ¨L¤©ò×ú ŒãGÔ­+N¸«ÛWüô{kâJ†Á¨,£ÜS„ÑOnáÖ5Û“4ZÊbw}ÐÂèoçH×3v³\çÑS;¯…ëÖã…0æ›)ÛÄÎkaÔ}…€Í3Ò‡<£\ÿEÇ�¨[W|`ïU&Œ´.0`›ØyMq¹$?c¾¹C Àzõ£¦­2û\k5ã¸ùˆºuÅ€ÝG£„ëÖ§…0Ê]�Ÿ~o³üÚ'SòQÓ2v~F±Ú ×­+>/„ÑOn1Z§ì6f¹Î£'ßí/ÊcR88v;?¬É¨Lijcî…Q¬vÂV¸n?�7 aKõA5/´Ì§Š|²W´Œ†¦ê:™RsHLÒhe²5�ë%Ã`T–Qî)]Ý[º2¹ÖÊÓåžêZÝPÚù&ñ4þúeFgu1]bîé×aK…zÏ35Ðì‡Åç�¿~ÓY]L—˜{úþF!uwH;˜ü] £®æø°>Ò>Eú�xúž“¿«LÇM�ºýtÞœ;MqIÓ|ŸëLýí£õx XÚtû‹2—Ô“4Z™Œt¤æ šaÌ7wH»ÌM¦©9$&i´2©»C XÚw™¦‹"ýw—iâ_„QWsÌNã°Â8Ö¨ÛOçÍ °ä£¦¤iÔV'—©Ʊ¯P·ŸÎ›Ï€®ÛOçÍx�Ÿ~o…1ßÜ!,yõ£¦æ�˜¤ÑÊ#¤î)`…QWsÌN³°t™&þEÇšP·ŸÎ›`©‰^›8¥æ�˜¤ÑÊ×í§óæóBu5Çì‡Q XzÆqS£n?�7'ÀR2Í"u>iµÕÉeª„‘ÖF€¥&v^ ã¸ùˆºýtÞŒKFéÎxZFC^ý¨…qW88ÀR–_ûdJñEÅjÀ ×í§óæ´ÀO¿·Â(w5KY~í“)m�Ê”oÅ¥0ŠÕ€%¢Î'M£¶:¹L5‡Ä$�VFØ ×Ÿ*Wô a[TóBY4š¶‰IöJ+“ÝÐ*i´ML²WZŠ^Ñå^+Zš¸§ÊýøFØ^™\kåérOõ ­n(í|“xý2¦câ»ÄÜÓi|#l õžgj ñçÅç_iüõË˜Ž‰ïsO§/7ÂVØ^+MÛÄ${¥•É(÷dÔužie2a„»9ÚuåŠ~ ØdŒÊ2Ú&&Ù+­L&Œ~r‹ÑºÆ|s‡VýäõºÆ|s‡VýäéºÆ|s‡Výä«u/Œ�:aµF?¹E»v¶9¨æ…¶‰IöJ+“Ñ/ߨ«�0úÉ-Âz$ŒÚ…€OUØæ š2‰¿V—´MÌ~,Œ¢`c§).išïs� £ŸÜ"¬kaÔ.|ª À6Õ¼Ð61û“0ŠZýän�6ÏH”Q”ÐÉ”E£É$þZýEu5ÇLÇ�øT€õQýäa� £v!àSU¶9¨æ…¶‰ÙFQ £ŸÜ"¬W¨]øTÂ(jaû ŸŠBøSU,„ÑOnáÖAu5ÇXE ÀþBcaô“[¸u+Œòa„ Œbµ`›Ä˜{Ê”¦|I¥"¬6ŸŠb!lëdÚtÓD+ʢєi“ûkš*­%~ æ šÒµF?¹…[×€gZåÃ#a5ëÕu¢ówESå¯õAóM'ŒrçPVa Ø©ò×ú@qIãLS�¦¬»dÚäþZýäaí„ÑOnáÖ-`‹°Ú£|!£¨ج»dÚäþš¦Ñ_+Cú�x2ª‰fF?¹…[�[¹¢ #­ 8a”;‡j29�—ËLiŠKʢєu—L›Ü_Sîɨ&šAýän�¶rEÿY“ÂÁ £øÀÆ2JwƯ)úé=E¯(ë.™6¹¿¶mò®èäʢєu—L›Ü_ £ŸÜ"¬�0úÉ-ÜzØÊý÷Â(FÂ(jÖ«ëDçÊ_ëƒ0æ›NåΡ¬ÂIýäaí„ÑOnáÖ­0ʇ‚0Š€�F­ éCâ©«�0úÉ-Ü:FZpÂ(wÕdr>6.—™Ò¶>¨æ…–ÑP�¦e®¦Åwe¦ÉVýän½låŠþ{a”#Œ[¹¢ ãXãSQ6¾£ŸÜ­kÀV®èOÂ(FH[¹¢ÿ,Œc�OE Øø"ŒrW°ñ]™i²F±Ú *Ê…0î Øø²&£2¥©IŒ¹F±Ú [ắÊâj!lë¸ß&F‘þÉÄÅ%5‡Ä$�V†â’ÔºdJSå¯õáFØê:Ï´2¥+Jü@m Cò®(£²Le—¤Šô‡H&~È(.©9$&i´2kaKdÔužieÈ‘>(jbçõ Q¡tg<}7^ÓlM¿Sîɨë<ÓÊ�£$£6Ð/”®Ö$l‰Ú@ß(]­© ôWJWdT¶U�ÎßÕôþFØ^™\kåérOõ ­n(í|“xý2¦câ»ÄÜÓé·7Âè'·­`›Øy-Œù¦ÀH¸î«²¸r a¤u�‘0ŽQ÷UY\­Þ`Õºd*Œ�º;¤Â¨û ½0Ž5ê¾*‹«×l诔®„qÜ|DÝWeqv°m _(] c¾¹C Xõ‡.™Ri™aÌ7wh…qì+Ô}UWN¸î«²¸zÝ-„ÑßÎáÖca«�pÝWeqµz[ã®ppÂ(V;ắÊâ*ìÂèoçpëïÆÂ(V;a+œÎÏçÓBØÖɴ馉V4äË¥2Ê7Šâ’r¯Õµ2åžÒ%~ 6ÜU�¦ä’Åi§•°%¢!_.•Q¾Q”{jà Q™_ûdJéŠ~¡6¬)]Ñ7jÚÒý•Ú@r}¶Dô»ñšfôݘrOîFØ^™\kåérOõ ­n(í|“xý2£³º˜.1÷4þr#l õžgj ñçÅç�¿~Ó1ñ]bîéôõFýän�Bu_¡…0Ž5Òùy XJWô µAÇÍG¤óó °”®è¯Ôaô“[¸õ ¨û Â8ÖHçç1`)]Ñ/Ôa7‘ÎÏ'ÀRº¢¿R„îæh×3ÀRº¢oÔaܰdT¦45‰1÷¤#eùµO¦¤þÐ%Sa«�p:?�Âèoç­Ç€¥,¿öÉ”ÒýBmƱ¯�ÎÏŸ…Óùù´F;Çh=;Ÿ[ÀR–_ûdJéŠþJmÆ]ݾB8�Ÿ?/„-¥‘²î¢MÒè[¢tEÛ˜{�ûkÒ‘–q:�rMÍ!1I£•ÉÖdÔ>É}‰�×”{=œëÍNØ%~ õ£6I£Õ@¾Û_”¡&úwe´HGºä>1÷”{ªoˆêĘ{Ê”¦|)l‰:ŸuM£²lÙMפ¦™"£2¥o„í•ɵVž.÷TßÐê†ÒÎ7‰§ñ×/c:&¾KÌ=�~½¶…zÏ35ÐìËb6£ñ×/c:&¾KÌ=�¾Ü#¤£‡s½ÙöZijbçµ0&…ƒÆqó¯«Ýf6~]í6³ÙBå®`³üÚ'Sú£2‘¦Ê_ë垢¡Øia«�ðëj·™�ÂwsŒÖ®øn X­öÛhsO™ŽF ã®n_…1ßp€mbç5ýŽÆÂè'·H×°¤#¥ÂèoçX­g€��ÞvššØy-Œ´¾C+üºÚmf§…0æ›;´€õêGMÍ!1I£•FZHÛÄÎka?âuµÛ̾ì2÷yvPƒ0úÉ-ܺF]Í1û%ŒºšcöÙµÂ8nj¼®v›ÙIضɻ¢eìü@ ùu®…_W»ÍìóBóÍF€ue=Ÿ“ïöe(vzÛia”;w‡‘0æ›+À6±óšb§·�Æ|s‡°É 0•e—äÕ�ššCb’F+#Œ´.�¶‰�×”ûm§…qüˆ×Õn3û°ËÜçÙA Âè'·pë^u5Çìó¬ƱÆëj·™}Øeîóì aÔճϮƱÆëj·™}¶W¹º­ðëj·™}¿F?¹…[§Â(w£‡s½ÙÖ¨}’ûÜ_Sî·�¦&v^ £z([´€Í’wEMgŒòšLü@É0•eÂè'·pë`c§·�¦&v^ #ÜÍ1Z»°F5ñ]Š�Þvš’a0*Ë„Q»PL®Æ›QØ&úwe4¹²žÏÉwû‹2”hÕ¤#]rŸ˜{aT“ )`�jâ»2” ƒQY&Œc�×Õn3›vkâeªö™0úÉ-êuF±Ú°—Ü'æž|·¿(C¹§ZØ Ï7é]±¶¯JS2 FeÅ%%Æ$÷¤¦j¯¼¦¹>Pîõ#]çïÊSî)]ÝP¡tg¼°%¢dŒÊ2ŠKRSµW^Sî© 7DΘäž.I¦(£²ŒòŒ2�(÷–ˆ¦±It=¹bäÊÕšŠ°Ú¬IÕD3ÐTùk} <£©Ê2Ò‡ÄÓé‡ßÞ["rÃ`T–Q\’+žògÊ3ºÎß•§Ë=¹b~¦ßÑü±«Í�°%¢¹Ô�”gÔTó¢J®“Ügš.±óCv#Œê¡l‘ #´!… W#À6Õ¼P¸ #­ïÐ £v! �ŸÏ'aL 'Œc�ù&��KájD¿|£¹ð|“ÎÆ a„»9Òõ|s×—¯°Fm£Ñ”ûAýH±Ó¨]¨v}ù X¢¸¤Kìü� ãØWp£I±žoÒÙi!ŒÐ†î¡¶9¨æ…ª‘0ªI…TÕCÙ"FíB@:?ŸO˜NÇóM:6¹D£…QM*¤€Íý ~¤ø²¦9ýò�ª‘0BêP„ÕFµ ýCŸ„q¬áF“bØø®Ìr?ã®n_…Ú�Âó³0R—"F±Ú [áþa</„mßMu¾�ÞÓ—ï.¹&ßí/ÊPîiE—{úòÝ%×ä»ýEÊ=¹5¥;ãs-l‰¾|wÉ5ùnQ†rOá†J¥©IŒ¹§e4ß•YNã‡5©i¦È¨Léa{er­•§Ë=Õ7´º¡´óMâiüõË˜Ž‰ïsO§ïo„îæh×3ÀþQ™HFeÝT“Q×y¦•F;Gºžv ±»L%à ŒþvŽÑú `/¹¦&v^ ÷ãñØ-„‘º-`³C¾ÔÔšª¥Fá›%{EËhhßMu¾�æÊ㸩Ñ?ŒÇã‘0R—"îÆãñh!Œ´.0l;¯…qÜ|Dÿ0�`¯•&¯~Ôtɵ0î Øæ šZFCñ]™å4~FÝWh…Q¬vl“sO™Ò”/©¥¿ÒLØ ÷a|ZÛ¾›ê|;½§ño¿»äš|·¿(C¹§tE—{úòÝ%×ä»ýEÊ=¹5m§I“ûkaK4þíw—\“QY7Õ”{jà Q�sO™Ò´Œ†â»2Ëiü°&5Í•)}#l õžgj Óiq:Ñøë—�ÕÅt‰¹§Ó7Âws´ë`›©J •uSMF]ç™VFýí£õÀ^rMMì¼îÂøäÂH]аÙ!_jšª¥Fá›%{EËhhßMu¾�æÊ㸩Ñ?„ñiX}È3ÚwS�o§¹2tÉ5}£™0R—"l2 ´ï¦:ßNó&ñƒ0Š€mcî)÷CÞ$Zeß•YNãáþ!ŒO£…0ÒºÀ°M켦K®3a7Ñ?„ñɶ‰^ç¾S˜°ñeMFeJS“s/Œbµ¶ÂÕî/_–®L®íU–%׊t¤&ú,N½ç �ÒI¹¦dŒÊ2Ê=¥+aTe‹°eò®h¯²,¹V” ƒQY&Œp7Gº®ë"œ[”ø�ÂYýíõºª'›ÑÃVµ £tRVÕ¤B X£šø® íU–%×Jýíõºª'›Ñö̯}2¥&׊t¤&ú,N•0jF餬0ŠÕ€¶ÂEêŠÂýc!l • 4äÙ -󩢸$}¿UÚ–ù�j ©ò×ú@F5Ñ éH‰1É=¹âFØ^™\kåérOõ ­n(í|“xý2£³º˜.1÷ôùFØê=ÏÔ@³/‹Ï3ý2¦³º˜.1÷ôý�°¥¹ÏužLó?*a„»9FëÙùüeÖÂÒwãÓa„»9Úµ+K‰1É=]’L #u)F€FõP¶h+Œp7G»ž–>*)S�ކšØy-Œ² )вÞì+l©PÉ@Ó·ÂEêÂ?ýÞ [*•¦´w” ƒQY&Œp7Çh=>},eZmis¯•F5©ÐV©K1¬0ª‡²E XaÜÕí+Kiï(C¹§tEËhh”NJaô·sÔër—öÎ¥°Â¨]¥“°Â– • ”P¦�0ÂÝéº<×#À’£²ŒÎõHýíõºX¹´\½Á’0jF餬0êjŽ`©9¨æ…²®iT–-»)5q¿�*�G/Œãæ#Št Xjªy¡egôAa„6¤(Êz³,Å—55±óš„1ßÜ¡¬0Ê6¤(Êz³¬0Ž}…"u°d”e4äÕ�š2Õèh„‹t¼@]Í1¬0ŽQ¤'À’òÅ%-ó©Ʊ¯n4)v€¥ì»é@>j:$Û­òÂEzZ[*T2P÷Û©ÒJÕ¤B X*T¦£Q”é¤yF±Ú°ÂV¸H+Wô a[¨d mb’½ÒÊd´4qOMôYœ*Jü@™ŽFQî)ër�\¦Š–Ñìo„í•ɵVž.÷TßÐê†ÒÎ7‰§ñ×/c:&¾KÌ=�~½¶…zÏ35Ðø´8ÍhüõË˜Ž‰ïsO§/7Âws¤ëz²)ça›è³8Uté–Ke„Rw‡°Mì¼ƤppÂ8~D‘Vçù°>Rî·�F¹s=œëͰM켦¸¤ÎoMlT–©�šCb’F+“ c¾¹C Øq¦©9$&i´2ÂEZ�©»C Xõc²Ï½¢æ�˜¤ÑÊcRÌ1;ÍZÀ6Ñ¿+£IGšÆÊP“dJÕCÙ"l–¼+2ñ%Ã`T– £¿�c´Ø&v^S\RÒ4j«“ËTQsHLÒhe2aô“[ÔkØæ�˜¤ÑÊ�ŽtQ¤U¦Õ Œp7Gº®Š¾n‹všgšâ’â 5‡Ä$�V&FíB@ݺbrØ<£\SÒ4j«“ËTýEýän]Ö¨&¾+CÍ!1I£•F5©� 㸩Q¤ÕgÀÆá"­N aÌ7wH»�¹×¤#yõ£¦æ�˜¤ÑÊ#ÜÍÑ®Gçz³ƒí¶C¢5±óZi] ÆqóEZ�û¢Ô–´¹Ïýµ0Ž}…"­Îó `}¤}4J¸H«Ï aÔÕ?'?6Éå‡Ü_ÿEÇ�(ÒêWÀÞ«lM>RÒèÉ}9$&i´2™0&…ƒÆñ#Š´:Ï7Â8öŠ´vkb£²Œ¼úQSsHLÒhe„‹´úºFíBÀëj·€5JwÆÓ%÷‰¹§ÜS½¦n;$ZÑ¥[.•FH6£â¼I»ML²WZjbçµ0êjŽ™0Ž›�(Òj<F?¹…[×Â(w•+ú±0Ž}…"­¾i5ž-„QWsŒ…qÜ|D‘Vã±0úÉ-ܺF¹s¨\ÑŸ„qì+iõE¸H«ñx!Œºšã$Œãæ#Š´.Òj|Z£ŸÜ­ka”;‡Êýgaû EZ}.Òjüy!Œºšã³0Ž›�(Òjü½0BêP¹¢ÿ,ŒIáà„qüˆ"­Æ'á"­Æß/„ÑOnáÖµ0Ê�CåŠþ{aû EZ}.Òê<ß,„R‡Í¨8oRÀ&Ó) Ñ«¿£®æ86Ñ4UI¦é$Œbµ`›Ä˜{Ê”¦|I>ja+\¬\ZO6 a[¨d &ú,NéHMôYœ*ºtË¥2TO6£‡ó�0ÂÝ麞lFgaô·sÔ뢞lFgaÔ.ŒÒI)Œbµ¶ÂÅäj¼ a[Gÿ®Œ&WÖó9 ªÉ÷É”Lü@‰¦?�ê?¯iªüµ>�[“Ž4þîr¯ùnQFØRî)ÜP©45‰1÷´Œ†â»2Ëiüp#l븽7ùõAÓøë—]¡Õ ¥�o#l õžgj ñiqšÑøë—1ß%æžNßߣ®æø°ÍA5/”åTÂ8nj»ÍØVu5Ç °Â8n>¢ØmÆ#À »ÍØ-„Qîj6˯}2%mbw™*a«+\ì6ãÑBýäéÚ¶‰�×Âèoçë`�Ê”&£²nªÉ¨ë<ÓÊ£¿�cµÏ»ï¦:ßNse„‹Ýf\/„ÑOnáÖ°ûnªóíôž.÷4ž £z([Œ+Œê¡l‘Vµ ýÃx<¬£GZ‘Ž„QM*¤€F5©0¬0Ž5ŠÝfìß•YNãa„ÔÝaX¯~Ô4ä×¹Fù0ÇçY Ø&úwe4éH—Ü'æ^ÇÅn3v€õQSBC~�kaÔÕã`…qÜÔ(v›±¬�šòë\ Ã¥)`…ÑOnְ˜oî0¬W?ja¤u�°Mì¼ÆqóÅn3®ÛD¯sß)a«+l…ËÚmFÅBØ®~Ô&i4%ž\YÏçä»ýEúS¦þÐ)ß(ŠKòë\g¦¥‰{J(Ó&÷×7–håµ2ô!×J†Á¨,£¸¤L›Ü_Sî)]Ý•¼+ú�ë�jÚÆÜëÜ_ ["Iý¨MÒh5�+ëùœ|·¿(C™6¹¿^SâJW´�¹×¹¿&ɨ}’ûÜ_ ["?P\RsHLÒhe2ú�ë5±óšrOîFØ•Úäþš¾Q¨ëúææ¦¾¶W&×ZyºÜS}C«J;ß$žÆ_¿Œé˜ø.1÷tú|#Œ�º;¤€½VššØy-ŒIáà„qÜ|DYoF³±pYoF³ÙBå®`³üÚ'Sú£2‘¦Ê_ë垢¡Øia«�pYoF³ñBÕCÙbØØém§)Ó&÷×M~�{aÜÕí«0æ›°M켦ßÑXýäéÚ–t¤Týí«õ °±ÓÛNS;¯…Ëz3š�ÂHë)`›Øy-ŒãG”õf4û°ËÜçÙA ˜oîÐÖ«55‡Ä$�VFýänÝ £®æ˜}žµÂ8Ö(ëÍhvl~í£Q¨«9fŸ]+Œã¦FYoF³“°m“wEËØù�òë\ —õf4û¼Æ|s‡`]YÏçä»ýEŠ�ÞvZåÎÝa$Œù¦À °M켦Øém§…‘ÖRÀ6±óšr¿í´0ŽQÖ›Ñì{À.sŸg5c¾¹C X¯~Ô”ûm§©9$&i´2Âè'·pë^u5Çìó¬ƱFYoF³ï»Ì}žÔ ŒºšcöÙµÂ8nj”õf4û°ËÜçÙA Â8öÊz3š}¶W¹º­pYoF³ï¨&F€5ª‰ïÊPìô¶ÓM~�{aô“[¸õ °±ÓÛNS;¯…1)`µÊ4-£¡?*iªüµ>ãøe½ÍfÂ(wî#aô“[¸u ØÜo;MMì¼&£öIîs-Œ»º}F±Ú°ñeMMbÌ=•)-l…˶hÃBØ–‡|©© dò냦è]rM‹o ò÷|PÔºÜÓéFØ^™\kåérOõ Ñê†ÒÎ7‰§ñ×_¿Ò±óŠ>Ïn„á6°ÍT%†šÄ˜{aô“[¸u+ŒÂÂè'·h×Nýän„Q¸Býäaí„Q¬vÂV¸ì'·«…°ÝDÿ]|Wfšl·¹¿¦}|Wkšª¥&Éä×}#l u�gZrtH2jbç5Å%]îµÊÖô �~øíšÒ%Ã`T–Q\R;Ó(Jü l‰Ú@É0•e—4¨Lç>Ñyô7ÂöÊäZ+O—{ªohuCiç›ÄÓøë—�ÕÅt‰¹§ñ—a[¨÷°ËÜçÙA Âè'·­`›Øy-\^ ¹j¼F?¹E½î›%ïŠ.÷ZÑÒÄ=µA!uwH»�ïŠ.÷ZÑÒĽ0úÉ-úµ,Qº"© Âè'·pë°ûø®èr¯-MÜS-Œrçî�–èOK÷Ô†?“Ž”®„1ßÜ!Æ|s‡Vi]`$Œãæ#Ê+W�…Q¬vÂVøªØ¹â aKW&׊c’{Ò‘†<{¡e>U´4qO®¸¶ter­•§ñ×/3:«‹ésOã_o„-ê=ÏÔ@ã_ßÿ@ã¯_ÆtL|—˜{:}¹¶4÷¹Î“iþG%Œp7Çh=;Ÿ¿ÌZXún|ú"Œp7G»v`)1&¹§K’)a¤.ۨÊ-`)1&¹§m̽VF¡ )вÞìK™jt4ÔÄÎkaÌ7wh…Q=”-Za„»9Fëñé `ÓÞQ2 Feå¾1j¯¼¾*\X[ªªy¡&v^S\R¦MFFí“ÜçþZÕ¤B XºVššØy-Œ´¾C Xjbçµ0úÉ-Ü:ƤpX ã¸ùˆ«b XÚG£„QM*´€%£2�¢L'Í‹0ŠÕ€]æ>Ïj¾*Æ aK¥Ò”öŽ’a0*Ë„QM*´ÂwsŒÖãÓa¤.ÅHÕCÙ¢FõP¶HKMì¼Æ]ݾ £¿�£^—»´w.FíBÀ(�”–®L®eªÑÑ#ÜÍ‘®Ós=,ÅNo;Mçz$ŒþvŽz}UÌwåê –2õ‡Ny�'Sú`r­„Q»0J'¥0êjŽ™0ŽqU¸XŠ/kj¢×¹ï”°%w‰FÓE5I—)ŠKòì…¶&^¦jŸ #ÜÍѮݨØ�Kî�¦å4¹Î„ÑOnáÖ½0&Å_f­0úÉ-úµ,}0¹V´Lòig”0Ž}7š;ÀÒº\ [aûH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ôH�ÂVØV‰n”•WnW·HK|ÿEØ ÛÕºD«lMÓ\+“L3Jü@™Ž&¹V´Œ†æå¤ØÝÛ+“k­<]¡Õ ¥�oO㯿~¥cç}žÝÛB½ç™höëâô�¿~ÓY]L—˜{úþFØ Û:ú,NíU–%×*¶Âu±ÀêíãÏ€­còäZ‘Qº3^8œX½=`<lȽ¢¥Rƒp]á¼@:B]¬Ãyýóß~>oæ}ùº@:ÂÏ>iµÕÉeª¨9$&i´2”{Êý¶Ó´Ì§Š|²W7ûYø¼™ôåëé??ø¤iÔV'—©¢æ�˜¤ÑÊPî)vzÛiZæSE>Ù«›¿ý,|ÞT}ùº@:ÂÏs¿í4-ó©"5m�Ê”×7ûYx“–}ùº@:ÂÏ›HCnT££¹§l›4Š–ÑPìô¶Ó´Ì§êæo? uèË×Ò~^y­ ÕD3ÐTùk}XÐß~®\Ñ—¯ ¤#ü¼òZʢѴML²WZ™lAûYØ�úòu�t„Ÿ+¯M²§!Ïšèuî;5Üüígáþ!ôåëé?OÞ•YNãÊ=í»©Î·Óû›¿ý,œÎoûòu�t„ŸÓü=]îé�ÊÄ›¿ý,\„¾|] áçs>U”åT䣦}7Õùvª(.ɨ&š�¦Ê_ëÃÍß~>—ûòu�t„ŸÏùTÑ41×Ê�>$ž’÷$Ÿ&—©¢½ÚGsó·Ÿ…ç›»¾|] ággLrO¹Ô�;MqI—Øùáæo? [aK¥Ž&¹VÂV¸*úº-Ê¥#ü<Ÿ>ÿÃoýò5~†Ý*³ÏµVm“ì•V&¶Â®¹rµ@z…lbLrO—$S” ƒQY&\„Õf�t„,ÕD3ÐTùk} ïèr¯U&ìÂÕh�ô 3XJŒIîi?(C—ØùAØ=T£Ò+Ì`)1&¹§n»U†.±óƒp®F ¤W˜ÁRÓ£¼¦iü  ]bçáú¡-�^aKMgŒòšºíVºÄΣ‡s½Ù-�Ž0ƒm‰I­LF¹§K·\*#¼çMº@: v›˜d¯´2ä»ýEá·¾X ½Â –Þè;*„˾Z ½Â –JúŽ*áÊýx�t„,eÑhÚ&&Ù+­L&\¹¢?-�Ž0ƒ®\Ñ^ a+\¹¢ÿ~�t„¬p5™œÇ ¤#Ì`Ç™¦,MYwÉ´¡¸\fJ W“Éù´@: öäʢєu—LŠËe¦´pY…ñé3Øq¦)‹FSÖ]2mhªüµ>—U8-�Ž0ƒ=ù�²h4eÝ%Ó†¦Ê_ëƒpY®ÞÆ ¤#Ì`Ç™¦,MCnT£óè×4ûæÖ4þ– —åêí´@: öäÊ¢Ñ4äF5:�^ؽãÒ+Ì`éÆ=ÏOýbó,ìÞŠÓéf°t㞊ç§ÛÅÕ³°{+Ç ¤W˜ÁÒ�{*ŸŸúÅæYؽ•§Ò+Ì`éÆ=•ÏO·‹«gáMµ ¤W˜Á’W(\�h ™üú i›�ëM.SE{µ�æ^xô�ùy�ô 3XÚE�L)÷ÛNÓ2Ÿ*Êò?*úŽ.÷ZeÂnTìÎ ¤%ưî�¦å4¹Î„Ïe½Ù-�^a[ªFG“Qî)÷ÛNÓ2Ÿ*᢬7»Ò+Ì`KÕèh22*¨‰�ן®vÕx�ô 3Ø�Úo£IÌ=e:šäZ­éÆOÇç§~±yþtµ«N ¤W˜ÁîÔ~Mbî)ÓÑ$×jM7®x:>?Ý.®ž…ÝÕ®Z ½Â –’a0*Ë(.I«ý–Œj¢(ÓÑ$×J¸*H¯0ƒ¥B¸*H¯0ƒ¥RØÕÅéf°t㞊gaW— ¤W˜ÁÒ�{*Ÿ…û"¬6 ¤#Ì`É«ëDçïŠâ’аÚ×iù©t· JG˜ÁfÉ»¢A-“nªiȳòÝþ¢Œpæý«·|�Ý&Fç:�ž²ü�Цñƒ24Í÷¹¶Âé¹-�–øü[XŠ�ÞvšÎõH8=§›VoHÏõèw3Xòì…|²WÂéyu·Àêíé¹ýn|‚¥¦3FyMêG­¼NÏu±Àêíé¹ýîó –šÎåõ?½úQÿÓ¨&š�|·¿(#l…-Õ“M9 +=œÏ«BØ ×“Íèá¼@:B=Ù„ÕV¸žlÊùÇÒcXßí/ÊPÓ£¼¦æ�˜¤ÑÊdÂõdæ›Ò§¾‡m‰I­ ]ºåRárôp^`õö€z²)çaµÚo£IÌ=]ºåRZFCCž½Ð�Õèhî…ëÉ&¬6 Z½=àoßÕ“M9ÿ(l…-•:i^(ñmcîµ2™°•»OiµÀêíãß>~+\•»OiµÀêíãß>ž`…‘–•»Oi;Š�2ÊtÒ¼�Ê�«?-�^a[ê¤y!·ÂHKTåîSZÁÒÖÄk“ì)ÓIó"\•;WZ ½Â –.I¦„Ë]¸] -1†¥¦3FyM™NšÔV„«ÒÝ®H¯0ƒ¥­‰×&ÙS¦“æ…¶1÷ZáQénW ¤W˜ÁÒ%v~È(ÓIóBÛ˜{­Œ°¶&¯óÚšÿsBç‡M½›O6´z{p»U)l…«z²=œ´z{ÀWحɽ&©‰>‹SEK÷té–Ke„‹z²=œ´z{ÀxKF%5ÑgqªHGºtË¥2Âå*¤ŸX½=`ü=l¦¦ªÑ4äÙ‹ð¤ZmX½=`ülÜ*OCž½Ð2Ÿ*á:LÊÕ«·Œ ÛLc¦hȳZæS%\u{.w Z½=`ü+l¦Óh™›LSlšÎåEqIçzD¹§!7ªÑÑÜ —EÝnîv Z½=`ü6S‰iäÕ�šbÓtÆ(ß(ŠK:×#átV»Õ«·Œ¿Âjª´¢e>UÂÅÊ¥åêmA«·œf°F%yõ£¦!Ï^Ȩ&šAøª˜ïÊÕÛ‚Vo8�a?˜\+òêGMCž½�QM4ƒp]¬ÜnµÀêí§lcT¢-ó©¢Ä4äF5:š{R^›{ábW§Ÿ°z{ÀéX£tg<5�1Êkòì…|·¿(#\îÒÞ¹tA«·œ~ ›)Miï(£²LØ —çz´Àêí³êvî·�¦? j™tSýg:×#.Ïéf�ÕÛÊs=úÝ vȳòÝþ¢Œpy^Ý-°z{@y®G¿Ÿ`›Îå5©µòZ¸<—ãVo(Ïõèwãϰ—{­2Ê=M“LS¦ ýiŸÜ_ÔŸ…ËsêX½= <×£ß� «~ÔÊkJ¦ÓØ$:�žÞU££.Ïu±Àêíå¹ýîó ¶éŒQ^ÿÓ«õ?�j¢Èwû‹2ÂVøía¾[`õö€ÙO¿oa�úî£&£tg<éHuÕ �ÒI¹Àêí³Ùì‡6�”¤¼6÷–ªbòZ¸žV›TéøyTNŠ�¾;Ýœ¨*&¯…ëiµIvÅéf°£$S—”E£)1&¹Æj“Vø?ýòÿA Â8öÊz3š}¶W¹º­pcXßí/ÊPÓ£¼¦æ�˜¤ÑÊdÂõdæ›Ò§¾‡m‰I­ ]ºåRárôp^`õö€z²)çaµÚo£IÌ=]ºåRZFCCž½Ð�Õèhî…ëÉ&¬6 Z½=àoßÕ“M9ÿ(l…-•:i^(ñmcîµ2™°•»OiµÀêíãß>~+\•»OiµÀêíãß>ž`…‘–•»Oi;Š�2ÊtÒ¼�Ê�«?-�^a[ê¤y!·ÂHKTåîSZÁÒÖÄk“ì)ÓIó"\•;WZ ½Â –.I¦„Ë]¸] -1†¥¦3FyM™NšÔV„«ÒÝ®H¯0ƒ¥­‰×&ÙS¦“æ…¶1÷ZáQénW ¤W˜ÁÒ%v~È(ÓIóBÛ˜{­Œ°¶&¯óÚšÿsBç‡M½›O6´z{p»U)l…«z²=œ´z{ÀWحɽ&©‰>‹SEK÷té–Ke„‹z²=œ´z{ÀxKF%5ÑgqªHGºtË¥2Âå*¤ŸX½=`ü=l¦¦ªÑ4äÙ‹ð¤ZmX½=`ülÜ*OCž½Ð2Ÿ*á:LÊÕ«·Œ ÛLc¦hȳZæS%\u{.w Z½=`ü+l¦Óh™›LSlšÎåEqIçzD¹§!7ªÑÑÜ —EÝnîv Z½=`ü6S‰iäÕ�šbÓtÆ(ß(ŠK:×#átV»Õ«·Œ¿Âjª´¢e>UÂÅÊ¥åêmA«·œf°F%yõ£¦!Ï^Ȩ&šAøª˜ïÊÕÛ‚Vo8�a?˜\+òêGMCž½�QM4ƒp]¬ÜnµÀêí§lcT¢-ó©¢Ä4äF510 REM EZFILE.BAS 20 PRINT CHR$(26) 30 PRINT " EZFILE" 40 PRINT:PRINT " A DATA MANAGEMENT PROGRAMME" 50 PRINT:PRINT:PRINT:PRINT " 1. CHANGE a record." 60 PRINT:PRINT " 2. ADD new records." 70 PRINT:PRINT " 3. CREATE a new data file." 80 PRINT:PRINT:PRINT "Chose 1 - 3" 90 PRINT:INPUT AN$ 100 IF AN$= "1" THEN 150 110 IF AN$= "2" THEN 370 120 IF AN$= "3" THEN 900 130 IF AN$= "" THEN PRINT CHR$(7):GOTO 10 140 IF AN$ <> "3" THEN PRINT CHR$(7):GOTO 10 150 PRINT CHR$(26) 160 PRINT:PRINT "Please enter the name of the DATA file" 170 INPUT "you wish to edit: ";FILE$ 180 IF FILE$= "" GOTO 150 190 : 200 OPEN "O",1,"B:COPY.DAT" 210 OPEN "I",2,FILE$:GOTO 250 220 : 230 PRINT CHR$(26):PRINT CHR$(7) 240 PRINT "ERROR" 250 PRINT:PRINT "Now enter the number of fields" 260 INPUT "in this DATA file (3-10): ";YYY$ 270 IF YYY$= "3" THEN 3360 280 IF YYY$= "4" THEN 3590 290 IF YYY$= "5" THEN 3870 300 IF YYY$= "6" THEN 4200 310 IF  YYY$= "7" THEN 4440 320 IF YYY$= "8" THEN 4730 330 IF YYY$= "9" THEN 5070 340 IF YYY$= "10" THEN 5460 350 IF YYY$ <> "10" THEN 230 360 : 370 PRINT CHR$(26) 380 PRINT "Please enter the name of the Data file you" 390 INPUT "are adding to: "; FILE$ 400 IF FILE$= "" THEN 370 410 : 420 OPEN "O",1,"B:COPY.DAT" 430 OPEN "I",2,FILE$ 440 : 450 PRINT:PRINT:PRINT "Now enter the number of fields" 460 INPUT "in this DATA File: "; YYY$ 470 IF YYY$= "3" THEN 640 480 IF YYY$= "4" THEN 2400 490 IF YYY$= "5" THEN 2520 500 IF YYY$= "6" THEN 2650 510 IF YYY$= "7" THEN 2770 520 IF YYY$= "8" THEN 2900 530 IF YYY$= "9" THEN 3040 540 IF YYY$= "10" THEN 3190 550 IF YYY$ <> "10" THEN PRINT CHR$(26) 560 PRINT "You must enter from 3 to 10 fields.":GOTO 450 570 : 580 OPEN "O",1,"B:COPY.DAT" 590 OPEN "I",2,FILE$ 600 : 610 REM THE FOLLOWING WHILE LOOP IS SKIPPED IF THE OPEN STATMENT 620 REM FOR XXX.DAT CAUSED AN ERROR 53 (FILE NOT FOUND ON DISK) 630 : 640 WHILE NOT EOF(2) 650 INPUT# 2,FIRST$,SECOND$,THIRD$ 660 WRITE# 1,FIRST$;SECOND$;THIRD$ 670 WEND 680 : 690 GOSUB 6430 700 PRINT CHR$(26) 710 GOSUB 6470 720 : 730 WRITE#1,AAA$;BBB$;CCC$ 740 GOTO 700 750 GOTO 6580 760 : 770 PRINT:PRINT:PRINT "Do you wish to continue?" 780 PRINT:PRINT:INPUT ANW$ 790 IF ANW$= "YES" THEN PRINT CHR$(26):GOTO 50 800 IF ANW$= "Yes" THEN PRINT CHR$(26):GOTO 50 810 IF ANW$= "yes" THEN PRINT CHR$(26):GOTO 50 820 IF ANW$= "Y" THEN PRINT CHR$(26):GOTO 50 830 IF ANW$= "y" THEN PRINT CHR$(26):GOTO 50 840 PRINT CHR$(26) 850 PRINT:PRINT:PRINT:PRINT 860 PRINT "Very well, until next time..." 870 PRINT:PRINT:PRINT 880 END 890 : 900 PRINT CHR$(26) 910 PRINT:PRINT " YOU ARE OPENING A NEW DATA FILE" 920 PRINT:PRINT:PRINT "Enter new file name as 'B:XXXXXXXX.DAT'" 930 PRINT:PRINT:INPUT DAT$ 940 IF DAT$= "" THEN GOTO 770 950 : 960 OPEN "O",#1,DAT$ 970 PRINT CHR$(26) 980 PRINT" *** INSTRUCTIONS ***" 990 PRINT:PRINT "Your New Data File must contain from 3 to 10 fields." 1000 PRINT:PRINT "Select 3 to 10: "; 1010 INPUT NO$ 1020 IF NO$= "3" THEN GOTO 1130 1030 IF NO$= "4" THEN GOTO 1180 1040 IF NO$= "5" THEN GOTO 1260 1050 IF NO$= "6" THEN GOTO 1370 1060 IF NO$= "7" THEN GOTO 1440 1070 IF NO$= "8" THEN GOTO 1540 1080 IF NO$= "9" THEN GOTO 1670 1090 IF NO$= "10" THEN GOTO 1830 1100 IF NO$ <> "10" THEN PRINT CHR$(26):GOTO 1110 1110 PRINT CHR$(7):PRINT:PRINT "You must select from 3 to 10 fields to coninue.":GOTO 1000 1120 : 1130 GOSUB 6320 1140 GOSUB 6140 1150 WRITE#1,ONE$;TWO$;THREE$:GOTO 1140 1160 GOTO 2000 1170 : 1180 GOSUB 6320 1190 PRINT:INPUT "Enter name of fourth field: ",FOURTH$ 1200 GOSUB 6140 1210 PRINT:PRINT FOURTH$": "; 1220 INPUT FOUR$ 1230 WRITE #1,ONE$;TWO$;THREE$;FOUR$:GOTO 1200 1240 GOTO 2000 1250 : 1260 GOSUB 6320 1270 PRINT:INPUT "Enter name of fourth field: ",FOURTH$ 1280 PRINT:INPUT "Enter name of fifth field: ",FIFTH$ 1290 GOSUB 6140 1300 PRINT:PRINT FOURTH$": "; 1310 INPUT FOUR$ 1320 PRINT:PRINT FIFTH$": "; 1330 INPUT FIVE$ 1340 WRITE #1,ONE$;TWO$;THREE$;FOUR$;FIVE$:GOTO 1290 1350 GOTO 2000 1360 : 1370 GOSUB 6320 1380 GOSUB 6390 1390 GOSUB 6140 1400 GOSUB 6240 1410 WRITE #1,ONE$;TWO$;THREE$;FOUR$;FIVE$;SIX$:GOTO 1390 1420 GOTO 2000 1430 : 1440 GOSUB 6320 1450 GOSUB 6390 1460 PRINT:INPUT "Enter name of seventh field: ",SEVENTH$ 1470 GOSUB 6140 1480 GOSUB 6240 1490 PRINT:PRINT SEVENTH$": "; 1500 INPUT SEVEN$ 1510 WRITE #1,ONE$;TWO$;THREE$;FOUR$;FIVE$;SIX$;SEVEN$:GOTO 1470 1520 GOTO 2000 1530 : 1540 GOSUB 6320 1550 GOSUB 6390 1560 PRINT:INPUT "Enter name of seventh field: ",SEVENTH$ 1570 PRINT:INPUT "Enter name of eighth field: ",EIGHTH$ 1580 GOSUB 6140 1590 GOSUB 6240 1600 PRINT:PRINT SEVENTH$": "; 1610 INPUT SEVEN$ 1620 PRINT:PRINT EIGHTH$": "; 1630 INPUT EIGHT$ 1640 WRITE #1,ONE$;TWO$;THREE$;FOUR$;FIVE$;SIX$;SEVEN$;EIGHT$:GOTO 1580 1650 GOTO 2000 1660 : 1670 GOSUB 6320 1680 GOSUB 6390 1690 PRINT:INPUT "Enter name of seventh field: ",SEVENTH$ 1700 PRINT:INPUT "Enter name of eighth field: ",EIGHTH$ 1710 PRINT:INPUT "Enter name of ninth field: ",NINTH$ 1720 GOSUB 6140 1730 GOSUB 6240 1740 PRINT:PRINT SEVENTH$": "; 1750 INPUT SEVEN$ 1760 PRINT:PRINT EIGHTH$": "; 1770 INPUT EIGHT$ 1780 PRINT:PRINT NINTH$": "; 1790 INPUT NINE$ 1800 WRITE #1,ONE$;TWO$;THREE$;FOUR$;FIVE$;SIX$;SEVEN$;EIGHT$;NINE$:GOTO 1720 1810 GOTO 2000 1820 : 1830 GOSUB 6320 1840 GOSUB 6390 1850 PRINT:INPUT "Enter name of seventh field: ",SEVENTH$ 1860 PRINT:INPUT "Enter name of eighth field: ",EIGHTH$ 1870 PRINT:INPUT "Enter name of ninth field: ",NINTH$ 1880 PRINT:INPUT "Enter name of tenth field: ",TENTH$ 1890 GOSUB 6140 1900 GOSUB 6240 1910 PRINT:PRINT SEVENTH$": "; 1920 INPUT SEVEN$ 1930 PRINT:PRINT EIGHTH$": "; 1940 INPUT EIGHT$ 1950 PRINT:PRINT NINTH$": "; 1960 INPUT NINE$ 1970 PRINT:PRINT TENTH$": "; 1980 INPUT TEN$ 1990 WRITE #1,ONE$;TWO$;THREE$;FOUR$;FIVE$;SIX$;SEVEN$;EIGHT$;NINE$;TEN$:GOTO 1890 2000 CLOSE #1 2010 PRINT CHR$(26) 2020 PRINT "Your new data file "DAT$" has been saved."   2030 PRINT "Please note the fields used:" 2040 PRINT 2050 PRINT " 1. "FIRST$ 2060 PRINT " 2. "SECOND$ 2070 PRINT " 3. "THIRD$ 2080 PRINT " 4. "FOURTH$ 2090 PRINT " 5. "FIFTH$ 2100 PRINT " 6. "SIXTH$ 2110 PRINT " 7. "SEVENTH$ 2120 PRINT " 8. "EIGHTH$ 2130 PRINT " 9. "NINTH$ 2140 PRINT " 10. "TENTH$ 2150 : 2160 PRINT:PRINT "Do you wish a printout"; 2170 INPUT V$ 2180 IF V$= "YES" THEN 2240 2190 IF V$= "Yes" THEN 2240 2200 IF V$= "yes" THEN 2240 2210 IF V$= "Y" THEN 2240 2220 IF V$= "y" THEN 2240 2230 IF V$= <> "y" THEN 770 2240 PRINT CHR$(7) 2250 PRINT:PRINT "Press RETURN when printer is ready."; 2260 INPUT U$ 2270 LPRINT; DAT$ 2280 LPRINT:LPRINT "1. "FIRST$ 2290 LPRINT "2. "SECOND$ 2300 LPRINT "3. "THIRD$ 2310 LPRINT "4. "FOURTH$ 2320 LPRINT "5. "FIFTH$ 2330 LPRINT "6. "SIXTH$ 2340 LPRINT "7. "SEVENTH$ 2350 LPRINT "8. "EIGHTH$ 2360 LPRINT "9. "NINTH$ 2370 LPRINT "10. "TENTH$ 2380 GOTO 770 2390 : 2400 WHILE NOT EOF(2) 2410 INPUT# 2,FIRST$,SECOND$,THIRD$,FOURTH$ 2420 WRITE# 1,FIRST$;SECOND$;THIRD$;FOURTH$ 2430 WEND 2440 GOSUB 6430 2450 PRINT CHR$(26) 2460 GOSUB 6470 2470 PRINT:INPUT "Enter data for 4th field: ",DDD$ 2480 WRITE#1,AAA$;BBB$;CCC$;DDD$ 2490 GOTO 2450 2500 GOTO 6580 2510 : 2520 WHILE NOT EOF(2) 2530 INPUT# 2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$ 2540 WRITE# 1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$ 2550 WEND 2560 GOSUB 6430 2570 PRINT CHR$(26) 2580 GOSUB 6470 2590 PRINT:INPUT "Enter data for 4th field: ",DDD$ 2600 PRINT:INPUT "Enter data for 5th field: ",EEE$ 2610 WRITE#1,AAA$;BBB$;CCC$;DDD$;EEE$ 2620 GOTO 2570 2630 GOTO 6580 2640 : 2650 WHILE NOT EOF(2) 2660 INPUT# 2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$ 2670 WRITE# 1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$ 2680 WEND 2690 GOSUB 6430 2700 PRINT CHR$(26) 2710 GOSUB 6470 2720 GOSUB 6530 2730 WRITE#1,AAA$;BBB$;CCC$;DDD$;EEE$;FFF$ 2740 GOTO 2700 2750 GOTO 6580 2760 : 2770 WHILE NOT EOF(2) 2780 INPUT# 2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$ 2790 WRITE# 1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$ 2800 WEND 2810 GOSUB 6430 2820 PRINT CHR$(26) 2830 GOSUB 6470 2840 GOSUB 6530 2850 PRINT:INPUT "Enter data for 7th field: ",GGG$ 2860 WRITE#1,AAA$;BBB$;CCC$;DDD$;EEE$;FFF$;GGG$ 2870 GOTO 2820 2880 GOTO 6580 2890 : 2900 WHILE NOT EOF(2) 2910 INPUT# 2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$ 2920 WRITE# 1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$ 2930 WEND 2940 GOSUB 6430 2950 PRINT CHR$(26) 2960 GOSUB 6470 2970 GOSUB 6530 2980 PRINT:INPUT "Enter data for 7th field: ",GGG$ 2990 PRINT:INPUT "Enter data for 8th field: ",HHH$ 3000 WRITE#1,AAA$;BBB$;CCC$;DDD$;EEE$;FFF$;GGG$;HHH$ 3010 GOTO 2950 3020 GOTO 6580 3030 : 3040 WHILE NOT EOF(2) 3050 INPUT# 2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$,NINTH$ 3060 WRITE# 1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH$ 3070 WEND 3080 GOSUB 6430 3090 PRINT CHR$(26) 3100 GOSUB 6470 3110 GOSUB 6530 3120 PRINT:INPUT "Enter data for 7th field: ",GGG$ 3130 PRINT:INPUT "Enter data for 8th field: ",HHH$ 3140 PRINT:INPUT "Enter data for 9th field: ",III$ 3150 WRITE#1,AAA$;BBB$;CCC$;DDD$;EEE$;FFF$;GGG$;HHH$;III$ 3160 GOTO 3090 3170 GOTO 6580 3180 : 3190 WHILE NOT EOF(2) 3200 INPUT# 2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$,NINTH$,TENTH$ 3210 WRITE# 1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH$;TENTH$ 3220 WEND 3230 GOSUB 6430 3240 PRINT CHR$(26) 3250 GOSUB 6470 3260 GOSUB 6530 3270 PRINT:INPUT "Enter data for 7th field: ",GGG$ 3280 PRINT:INPUT "Enter data for 8th field: ",HHH$ 3290 PRINT:INPUT "Enter data for 9th field: ",III$ 3300 PRINT:INPUT "Enter data for 10th field: ",JJJ$ 3310 WRITE#1,AAA$;BBB$;CCC$;DDD$;EEE$;FFF$;GGG$;HHH$;III$;JJJ$ 3320 GOTO 3240 3330 GOTO 6580 3340 : 3350 REM * * * CORRECTIONS * * * 3360 PRINT CHR$(26) 3370 INPUT "Enter the 1st field DATA: ";ONE$ 3380 IF EOF (2) THEN 3430 3390 INPUT #2,FIRST$,SECOND$,THIRD$ 3400 IF ONE$= FIRST$ THEN 3450 3410 WRITE #1,FIRST$;SECOND$;THIRD$ 3420 GOTO 3380 3430 GOSUB 6070 3440 GOTO 160 3450 GOSUB 6640 3460 WRITE #1,FIRST$;SECOND$;THIRD$ 3470 IF EOF (2) THEN 3510 3480 INPUT #2,FIRST$,SECOND$,THIRD$ 3490 WRITE #1,FIRST$;SECOND$;THIRD$ 3500 GOTO 3470 3510 GOSUB 6020 3520 IF EOF (1) THEN 3560 3530 INPUT #1,FIRST$,SECOND$,THIRD$ 3540 WRITE #2,FIRST$;SECOND$;THIRD$ 3550 GOTO 3520 3560 CLOSE 1,2 3570 GOTO 5890 3580 : 3590 PRINT CHR$(26) 3600 INPUT "Enter the 1st field DATA: ";ONE$ 3610 IF EOF (2) THEN 3660 3620 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$ 3630 IF ONE$= FIRST$ THEN 3680 3640 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$ 3650 GOTO 3610 3660 GOSUB 6070 3670 GOTO 160 3680 GOSUB 6640 3690 PRINT:PRINT "The 4th field reads:  "FOURTH$ 3700 PRINT:PRINT "Enter RETURN or correct as follows:" 3710 INPUT DD$ 3720 IF DD$= "" GOTO 3740 3730 LET FOURTH$= DD$ 3740 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$ 3750 IF EOF (2) THEN 3790 3760 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$ 3770 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$ 3780 GOTO 3750 3790 GOSUB 6020 3800 IF EOF (1) THEN 3840 3810 INPUT #1,FIRST$,SECOND$,THIRD$,FOURTH$ 3820 WRITE #2,FIRST$;SECOND$;THIRD$;FOURTH$ 3830 GOTO 3800 3840 CLOSE 1,2 3850 GOTO 5890 3860 : 3870 PRINT CHR$(26) 3880 INPUT "Enter the 1st field DATA: ";ONE$ 3890 IF EOF (2) THEN 3940 3900 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$ 3910 IF ONE$= FIRST$ THEN 3960 3920 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$ 3930 GOTO 3890 3940 GOSUB 6070 3950 GOTO 160 3960 GOSUB 6640 3970 PRINT:PRINT "The 4th field reads: "FOURTH$ 3980 PRINT:PRINT "Enter RETURN or correct as follows:" 3990 INPUT DD$ 4000 IF DD$= "" GOTO 4020 4010 LET FOURTH$= DD$ 4020 PRINT:PRINT "The 5th field reads: "FIFTH$ 4030 PRINT:PRINT "Enter RETURN or correct as follows:" 4040 INPUT EE$ 4050 IF EE$= "" GOTO 4070 4060 LET FIFTH$= EE$ 4070 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$ 4080 IF EOF (2) THEN 4120 4090 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$ 4100 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$ 4110 GOTO 4080 4120 GOSUB 6020 4130 IF EOF (1) THEN 4170 4140 INPUT #1,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$ 4150 WRITE #2,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$ 4160 GOTO 4130 4170 CLOSE 1,2 4180 GOTO 5890 4190 : 4200 PRINT CHR$(26) 4210 INPUT "Enter the 1st field DATA: ";ONE$ 4220 IF EOF (2) THEN 4270 4230 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$ 4240 IF ONE$= FIRST$ THEN 4290 4250 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$ 4260 GOTO 4220 4270 GOSUB 6070 4280 GOTO 160 4290 GOSUB 6640 4300 GOSUB 6770 4310 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$ 4320 IF EOF (2) THEN 4360 4330 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$ 4340 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$ 4350 GOTO 4320 4360 GOSUB 6020 4370 IF EOF (1) THEN 4410 4380 INPUT #1,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$ 4390 WRITE #2,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$ 4400 GOTO 4370 4410 CLOSE 1,2 4420 GOTO 5890 4430 : 4440 PRINT CHR$(26) 4450 INPUT "Enter the 1st field DATA: ";ONE$ 4460 IF EOF (2) THEN 4510 4470 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$ 4480 IF ONE$= FIRST$ THEN 4530 4490 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$ 4500 GOTO 4460 4510 GOSUB 6070 4520 GOTO 160 4530 GOSUB 6640 4540 GOSUB 6770 4550 PRINT:PRINT "The 7th field reads: "SEVENTH$ 4560 PRINT:PRINT "Enter RETURN or correct as follows:" 4570 INPUT GG$ 4580 IF GG$= "" GOTO 4600 4590 LET SEVENTH$= GG$ 4600 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$ 4610 IF EOF (2) THEN 4650 4620 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$ 4630 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$ 4640 GOTO 4610 4650 GOSUB 6020 4660 IF EOF (1) THEN 4700 4670 INPUT #1,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$ 4680 WRITE #2,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$ 4690 GOTO 4660 4700 CLOSE 1,2 4710 GOTO 5890 4720 : 4730 PRINT CHR$(26) 4740 INPUT "Enter the 1st field DATA: ";ONE$ 4750 IF EOF (2) THEN 4800 4760 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$ 4770 IF ONE$= FIRST$ THEN 4820 4780 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$ 4790 GOTO 4750 4800 GOSUB 6070 4810 GOTO 160 4820 GOSUB 6640 4830 GOSUB 6770 4840 PRINT:PRINT "The 7th field reads: "SEVENTH$ 4850 PRINT:PRINT "Enter RETURN or correct as follows:" 4860 INPUT GG$ 4870 IF GG$= "" GOTO 4890 4880 LET SEVENTH$= GG$ 4890 PRINT:PRINT "The 8th field reads: "EIGHTH$ 4900 PRINT:PRINT "Enter RETURN or correct as follows:" 4910 INPUT HH$ 4920 IF HH$= "" GOTO 4940 4930 LET EIGHTH$= HH$ 4940 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$ 4950 IF EOF (2) THEN 4990 4960 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$ 4970 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$ 4980 GOTO 4950 4990 GOSUB 6020 5000 IF EOF (1) THEN 5040 5010 INPUT #1,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$ 5020 WRITE #2,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$ 5030 GOTO 5000 5040 CLOSE 1,2 5050 GOTO 5890 5060 : 5070 PRINT CHR$(26) 5080 INPUT "Enter the 1st field DATA: ";ONE$ 5090 IF EOF (2) THEN 5140 5100 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$,NINTH$ 5110 IF ONE$= FIRST$ THEN 5160 5120 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH 5130 GOTO 5090 5140 GOSUB 6070 5150 GOTO 160 5160 GOSUB 6640 5170 GOSUB 6770 5180 PRINT:PRINT "The 7th field reads: "SEVENTH$ 5190 PRINT:PRINT "Enter RETURN or correct as follows:" 5200 INPUT GG$ 5210 IF GG$= "" GOTO 5230 5220 LET SEVENTH$= GG$ 5230 PRINT:PRINT "The 8th field reads: "EIGHTH$ 5240 PRINT:PRINT "Enter RETURN or correct as follows:" 5250 INPUT HH$ 5260 IF HH$= "" GOTO 5280 5270 LET EIGHTH$= HH$ 5280 PRINT:PRINT "The 9th field reads: "NINTH$ 5290 PRINT:PRINT "Enter RETURN or correct as follows:" 5300 INPUT II$ 5310 IF II$= "" THEN 5330 5320 LET NINTH$= II$ 5330 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH$ 5340 IF EOF (2) THEN 5380 5350 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$,NINTH$ 5360 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH$ 5370 GOTO 5340 5380 GOSUB 6020 5390 IF EOF (1) THEN 5430 5400 INPUT #1,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$,NINTH$ 5410 WRITE #2,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH$ 5420 GOTO 5390 5430 CLOSE 1,2 5440 GOTO 5890 5450 : 5460 PRINT CHR$(26) 5470 INPUT "Enter the 1st field DATA: ";ONE$ 5480 IF EOF (2) THEN 5530 5490 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$,NINTH$,TENTH$ 5500 IF ONE$= FIRST$ THEN 5550 5510 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH$;TENTH$ 5520 GOTO 5480 5530 GOSUB 6070 5540 GOTO 160 5550 GOSUB 6640 5560 GOSUB 6770 5570 PRINT:PRINT "The 7th field reads: "SEVENTH$ 5580 PRINT:PRINT "Enter RETURN or correct as follows:" 5590 PRINT:INPUT GG$ 5600 IF GG$= "" GOTO 5620 5610 LET SEVENTH$= GG$ 5620 PRINT:PRINT "The 8th field reads: "EIGHTH$ 5630 PRINT:PRINT "Enter RETURN or correct as follows:" 5640 PRINT:INPUT HH$ 5650 IF HH$= "" GOTO 5670 5660 LET EIGHTH$= HH$ 5670 PRINT:PRINT "The 9th field reads: "NINTH$ 5680 PRINT:PRINT "Enter RETURN or correct as follows:" 5690 PRINT:INPUT II$ 5700 IF II$= "" THEN 5720 5710 LET NINTH$= II$ 5720 PRINT:PRINT "The 10th field reads: "TENTH$ 5730 PRINT:PRINT "Enter RETURN or correct as follows:" 5740 PRINT:INPUT JJ$ 5750 IF JJ$= "" THEN 5770 5760 LET TENTH$= JJ$ 5770 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH$;TENTH$ 5780 IF EOF (2) THEN 5820 5790 INPUT #2,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$,NINTH$,TENTH$ 5800 WRITE #1,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH$;TENTH$ 5810 GOTO 5780 5820 GOSUB 6020 5830 IF EOF (1) THEN 5870 5840 INPUT #1,FIRST$,SECOND$,THIRD$,FOURTH$,FIFTH$,SIXTH$,SEVENTH$,EIGHTH$,NINTH$,TENTH$ 5850 WRITE #2,FIRST$;SECOND$;THIRD$;FOURTH$;FIFTH$;SIXTH$;SEVENTH$;EIGHTH$;NINTH$;TENTH$ 5860 GOTO 5830 5870 CLOSE 1,2 5880 : 5890 PRINT CHR$(26) 5900 PRINT "Do you have another correction for "FILE$ 5910 PRINT:INPUT XX$ 5920 IF XX$= "YES" THEN 200 5930 IF XX$= "yes" THEN 200 5940 IF XX$= "Yes" THEN 200 5950 IF XX$= "Y" THEN 200 5960 IF XX$= "y" THEN 200 5970 GOTO 6600 5980 CLOSE 5990 END 6000 : 6010 REM *** SUB-ROUTINES *** 6020 CLOSE 1,2 6030 OPEN "I",1,"B:COPY.DAT" 6040 OPEN "O",2,FILE$ 6050 RETURN 6060 : 6070 PRINT CHR$(26):PRINT CHR$(7) 6080 PRINT:PRINT "I cannot locate the record for "ONE$ 6090 PRINT "in "FILE$"." 6100 PRINT:PRINT "Check your file name." 6110 CLOSE 1,2 6120 RETURN 6130 : 6140 PRINT CHR$(26) 6150 PRINT:PRINT FIRST$": "; 6160 INPUT ONE$ 6170 IF ONE$= "" GOTO 2000 6180 PRINT:PRINT SECOND$": "; 6190 INPUT TWO$ 6200 PRINT:PRINT THIRD$": "; 6210 INPUT THREE$ 6220 RETURN 6230 : 6240 PRINT:PRINT FOURTH$": "; 6250 INPUT FOUR$ 6260 PRINT:PRINT FIFTH$": "; 6270 INPUT FIVE$ 6280 PRINT:PRINT SIXTH$": "; 6290 INPUT SIX$ 6300 RETURN 6310 : 6320 PRINT CHR$(26) 6330 PRINT:INPUT "Enter name of 1st field: ",FIRST$ 6340 IF FIRST$= "" THEN 2000 6350 PRINT:INPUT "Enter name of 2nd field: ",SECOND$ 6360 PRINT:INPUT "Enter name of 3rd field: ",THIRD$ 6370 RETURN 6380 : 6390 PRINT:INPUT "Enter name for 4th field: ",FOURTH$ 6400 PRINT:INPUT "Enter name for 5th field: ",FIFTH$ 6410 PRINT:INPUT "Enter name for 6th field: ",SIXTH$ 6420 RETURN 6430 CLOSE 2 6440 KILL FILE$ 6450 RETURN 6460 : 6470 PRINT:INPUT "Enter DATA for 1st field: ",AAA$ 6480 IF AAA$= "" THEN GOTO 6580 6490 PRINT:INPUT "Enter DATA for 2nd field: ",BBB$ 6500 PRINT:INPUT "Enter DATA for 3rd field: ",CCC$ 6510 RETURN 6520 : 6530 PRINT:INPUT "Enter DATA for 4th field: ",DDD$ 6540 PRINT:INPUT "Enter DATA for 5th field: ",EEE$ 6550 PRINT:INPUT "Enter DATA for 6th field: ",FFF$ 6560 RETURN 6570 : 6580 CLOSE 1 6590 NAME "B:COPY.DAT" AS FILE$ 6600 PRINT CHR$(26) 6610 PRINT "Your new DATA has been added to "FILE$"." 6620 GOTO 770 6630 : 6640 PRINT:PRINT "The 2nd field for the record of "FIRST$ 6650 PRINT "reads: "SECOND$ 6660 PRINT:PRINT "Enter RETURN or correct as follows: " 6670 INPUT BB$ 6680 IF BB$= "" GOTO 6700 6690 LET SECOND$= BB$ 6700 PRINT:PRINT "The 3rd field reads: "THIRD$ 6710 PRINT:PRINT "Enter RETURN or correct as follows:" 6720 INPUT CC$ 6730 IF CC$= "" THEN RETURN 6740 LET THIRD$= CC$ 6750 RETURN 6760 : 6770 PRINT:PRINT "The 4th field reads: "FOURTH$ 6780 PRINT:PRINT "Enter RETURN or correct as follows:" 6790 INPUT DD$ 6800 IF DD$= "" GOTO 6820 6810 LET FOURTH$= DD$ 6820 PRINT:PRINT "The 5th field reads: "FIFTH$ 6830 PRINT:PRINT "Enter RETURN or correct as follows:" 6840 INPUT EE$ 6850 IF EE$= "" GOTO 6870 6860 LET FIFTH$= EE$ 6870 PRINT:PRINT "The 6th field reads: "SIXTH$ 6880 PRINT:PRINT "Enter RETURN or correct as follows:" 6890 INPUT FF$ 6900 IF FF$= "" THEN RETURN 6910 LET SIXTH$= FF$ 6920 RETURN T:PRINT "Enter RETURN or correct as follows:" 6890 INPUT FF$ 6900 IF FF$= "" THEN RETURN 6910 LET SIXTH$= FF$ 6920 Ror the record of "FIRST$ 6650 PRINT "reads: "SECOND$ 6660 PRINT:PRINT "Enter RETURN or correct as follows: " 6670 INPUT BB$ 6680 IF BB$= "" GOTO 6700 6690 LET SECOND$= BB$ 6700 PRINT:PRINT "The 3rd field reads: "THIRD$ 6710 PRINT:PRINT "Enter RETURN or correct as follows:" 6720 INPUT CC$ 6730 IF CC$= "" THEN RETURN 6740 LET THIRD$= CC$ 6750 RETURN 6760 : 6770 PRINT:PRINT "The 4th field reads: "FOURTH$ 6780 PRINT:PRINT "Enter RETURN or correct as follows:" 6790 INPUT DD$ 6800 IF DD$= "" GThe following software is copyrighted Nov. 1, 1984 by: James W. Felter 2707 Rosebery Avenue West Vancouver, British Columbia CANADA V7V 3A3 Tel. (604) 926-3917 Comments and suggestions most welcome. Programme name: EZFILE Version : 1 Purposeó º 1® Tï creatå sequentiaì fileó witè froí threå tï teî � fields. 2® Tï adä tï sequentiaì fileó witè froí threå tï teî � fields. 3® Tï changå recordó iî sequentiaì fileó witè froí � threå tï teî fields. Equipment : Written for the Osborne 01 (DD). Instructions : Thió ió aî easù programmå tï run¬ witè thå instructionó appearinç � oî thå screeî throughouô thå programme® Iæ yoõ answeò á questioî � incorrectly¬ á belì wilì sounä anä yoõ wilì bå prompteä witè thå � questioî again® Yoõ MUSÔ answeò eacè questioî tï exiô thå programmå � properly® Afteò yoõ havå entereä ALÌ recordó foò thå currenô sessioî anä wheî � yoõ arå prompteä foò thå FIRSÔ field¬ enteò ÉÅÕ¯ËN« T]ËF(###Íf8;Íf86+++þ (ˆ#w+> ¿ÑÁÉ###Íf8þ(G+++ˆþ ËÆËŽ#Np+yÑÁþ É++Nwy+ËÆËÎï!± ÃuRead beyond EOÆÝåÝ!PYÝ9ÝÝÝÝÝåG¯!ݾþ AÝfÝnÿ¸(ËîøÿÝ ÕåÝ~Ý^³(ËæÝVÝfÝnÁůÍçáÑáåË^ åáѯݾ®z³()¯¼ ,ÝFþÌš ÌÌZ ÌÛ ÌÌÊüÿÝ Óëár+sÝáÑÁùáÅÕÉÝFýåÝfÝnÿãͺ8(|·(ÍŽ0Ën({²(Í* ãÍŽ8 Í* ãw+òáÉã6 +ûáÉÍ* þT( þF(þ (ñÃêÍÈ ÍÈ åÝfÝnÿp¯GáÉÍ* þEÈþ Èþ,ÈͺØîÉÕåÝå¯OG ͺ8xÍŽ8s¯¹(ÍÌÃü Í* þ (]þ (Yþ (Uþ (Qþ (Mþ#(1þ_(-þ$()þ{8 þ[8þ:8ÃÇþa8ñæßþA8í þ0ÚÇW¯¹ÒÇzW>¹( ¯¹(Í* Õ3 ŽÍ* Ãå ¯¹Êù ÝfüÝnûåÝ~ùÝ!Ý9Ý G¯_Ý~¾(¯�(B¯WÝ>“_¯_æ¯{¹(Ý+#ܯ>»(#¯> ¾+ Ù¯gkÑ9ùÝáÝ~ù�ÝfÝnÿwáÑüÿÝ ÉÃêÃê¯OåÝfÝnÿÝFý+ã ãͺ8ÍŽ8Í* þ (þ ( ã x¹ÚOw+Ýã¯G #qáÉÝFý Í<¸(¼Âêå!ÍWáìåÝfÝnÿqá¯GÉÍ<åÝfÝnÿp+qá¯GÉÕå!DãÍ* þ (ùþ- þ+ Í* þ:0%Ö08!ãÍ™ãê�ÍÌþ:0Ö00⯸ÁÑÈx/Gy/O¯É¯¼ eÁÑ!ÍWÍÊþ ù!£T]·íjèíjèíZèíjè_íZÉÕåÝfÝnÿÝVþÝ^ýãͺÚ« ###Íf++Fwx+0ËÎãw+z³ áüÿÝ áÑz³ ÇÃL !ðÃuType error on inpuôError in number, try again ŠÕåþÿë9ëÍ* þ (ùþ-(þ+Ì* ÅÄ* 3Í* þ0Úêþ:ÒêÍ* õ3ÍÌþ.(7þe(;þE(7þ08þ:8ä> õëåÍ»DMáå#4 ËûÝfÝnÿr+s+p+qáùááÑÉË@ ÕµËH ÍÍ* õ3ÍÌþ-(þ+ �Í* õ3‰ÕýÝåýååë9åÝáÝ4 ëá~+åþ.(:þe(DþE(@þ (8Ý5ͬáå#~Ö0! 6+w¯+w+w+w Ýåýãý ͵ýáͼ¾Ý6Ý6ÿ´¯á=á¯O~þ- Oþ+ +~Ö0Úóþ ÒóG+~þ (Ö0Úóþ ÒóÕWx‡‡€‡‚ÑGxËA(íDGÝ~ݦ€úu(GÅͬÁù íDGÅÍšÁùýáÝá!9ùáÑÁ¯ÉáãÍ»ÉáãÍ»ëÉ! Õë!Óí¸ÑÃì! Õë í¸ÑÝ4êóÝ4êóͼÝ4àPÁÑáõåÕõÝåýåÅ!9åÝáë¯Ýw ! Í£ÊóÝ~Ý® ÝwÝ~<Ý– êóÝwÝ˾ÝË ¾!ûÿ9ùå¯w#ü+åýáÕÅ!ë +¾8 ö+ü#ͨ·ÁÑõýåá+·Í»ñ8ýËüÆ!͹Ä! Ñw#ú!9ùÝË~ÊxÝËþÃxÁÑáõåÕõÝåýåÅ!9åÝáë¯Ýw >€Ý® Ýw ÁÑáõåÕõÝåýåÅ!9åÝáë¯Ýw !Í£(@! Í£ÊxÝË~( Ý˾! Í“ÝË ~( ÝË ¾!Í“Ý~Ý– (GOòû¯‘þ8ËyÊx!ë í¸ÃxËyG(!4êó+~Í®ð! 4êó+~Í®ð!4êó+~Í®! 4êó+~Í®! ëå Í›ÑËÊx! Í“ÝËþÃxÝåýãý ͵ýáÝåѯݾ ÀÑýáÝá!9ùë¯é¯ÅŽ#ùÁɯÅž#ùÁɯÝwýËÿ~(Ý4ýËÿ¾ýåá+ͤ ý6ÉýËÿv ýåá+·Í»ý5êóêÝ5ÀýËÿþɯÝùÑýáݾ ÚTÝá! 9ù!ååë¯7éº(¼ ë SxDM!=È)Ë#Ë0÷ ô|ªõËz(z/W{/_Ë|(|/g}/o#¯¼ ½ ñ¯É-# ñë¬zðBKëgoË(Ë0Ë|ÂrË#Ëx± ìñyðë¯goíRÉÝåÍÏÝåÝF¸ ÍÚËÆ###goÍ/ Í Íá#ÝáÑùëéÝåÍÏÝåÝF¸ ÍÚˆ###¯¸ÂàgoÍ/ÕÝ!Ý9Ý PYÉøÿë ëÕÝ ÝFÝfÝnÅåËV ýåå¯goͨÒná| }ýáËÖÝ~Ý^³(ËæÝVÝfÝnÁÅ>ÍçáÁÑÉáåËf(öäz³È¯ÝFÝ+Ì´Ì-ÌŒÌQÌîÞüÿÝ ë åÕÝFÝng)))ÝVÝ^Nyþ (#ãÍã(ïìáÑ ÈÍùÝFþÝ~�Ý+Ý+Ý+ÝNÍõÝ+øÈG ÍûÉÝ+Ý+ÕݾÝ~å8ë ë ‘AOÍøÑØÈG ÍûÉTRUEFALSEÝFýÝ~�Ý+Ý+Ý+ÝN ¯¸( ÅÝ+ÝNÍõÁy�(GÝ+ûÝ+øÈG ÍûÉÕÝVÿÝ^þÝåÁÝ!úÿÝ9ÝùåÅÝ Ëz(Ý6-Ý+¯goGíRëÝwÝ+O'ÍÇèÍÇdÍÇ ÍÇEÍÏGÝ Ý#Ý~þ-   ¹ Ý60 Ý+Aá~ã�8 ( W Í úÝNÍÝ+öÝáÝ+Ý+Ý+ë!9ùëѯɯíR0û¸ ¹È>0€ÝwÝ+ ¯GÉåüÿÝ ë ëÝfÝnÝNÝ++ãÍã|µ ðz³ Þá䯼 ½ ͯÉÍW>Ð+++ËÎ###ÉÑÅÍFÁ###ÍÑ8^ͧÍ*+++ËÆËŽËÖ˞˦¯ëéýåͨ0 ###Í+++ýáÉýáýåågoͨ0 á| }ýáÉ!tÃuToo many open output fileó!”ÃuBad output file namåý#}ý¾( ý#ý#ô¯É|ý#ý¾(}ý#ä¯ÉýåÁ¯7ÉÍÊ0ûå!9¯G åANÍ"+ù Í"ÁáÍ’ÍÊþ ùÅãÁã}ãr+sPYÁOùëÑÅ>ÉÙx±Ä4ÍÊ0ûý#ýfýný#ý#|µ###ÄìÃå!ýÅÍWáåèÍ`dÍ` Í`Í`!,ÍWÁá¯É/¯ íR0ûÃÍÐÒh`iÍÚØÃhååÍÚÒháPYÍÐáØÃh¯å¼ Õ*­ÿ~+¾Ú^#~þ ÊÑáÃËFáÊÃý¯¼ÊËNÂýÃgi#9åAÍÊþ ùNÍ"+ù Í"áÑ#ù¯ëéÅÕåÝåýåõÙÅÕåÙÅåÕ`iå###Í‚áË^(?åªëÍÑÕ"Íáå!5~< #5 #5áå'ëÍÑ"ÍÁÅx±Ê¬¯Ñáº(¼ ë S_xDM!=()ë8 )ë0õ 0òï)ëó+}´Æ ¯E˸Ë$õË}($ñ0Ë#Ë#0Ë"Ë"LáåÕ$Ñq#s#rÑááÑ!(FÅÕ!#6!*ëÍÑÕ!Íáå!4 #4 #4ÑÕ!§ëÍÑÕ!Íá%Áp· ÛÿåÍfá 6àÿ++w+Øÿ·(ËÞÃÁËžÃÁ<Ýã!åÅ9åÝãÑùշȯÙGOåÙ2¯íRѯíRÚcÉÝåÑýåý#ëýfýn|µ(åíRá0 ###ͯýwýwý#ý#ݯýáÝùÁëÑÝáÁù`i»ÙGOÙéÅÕåÝåýåõÙÅÕåÙõ6#å 6 #û6#ûÍ (û8#ÖAGÍ 0> þ:(å*¬ÿ55*+Fáxþ8 á!¼ÍWñ7ÃÁwá Í 8(ùþ.(w#ñàH (é#úñ·ÃÁÍÊþa8þ{0æ_þ ÉÅÕåÝåýåõÙÅÕåÙõå+++Ëf###%(6ÿëáÍW·ÊMÃ@ëÍñÃÁÅÕåÝåýåõÙÅÕåÙy%4Â_õåØÿËfÊ ###åÍ‚§ëÍÑÕ"Íáå!5~< #5~< #5áå'ëÍÑÕ"ÍÑÕ! 6!'ëÍÑÕ!44~þ0#4 #4ÑÕ!Íáå!4 #4 #4ÑÕ! 6ÑÕ!§ëÍÑÕ!Íá%6ûÿ6áñÃÁ)~6<(3ÚÿÍ‚å'ëÍáåëÍ· "áå§ëÍáëÍ· áñ^##wÃÁ!„þ !Žþ !¥þÿ !®ÃuDisk erroòError in extending filåDisk fulìDirectory fulìBad filename ŠÅÕåÝåýåõÙÅÕåÙ*¬ÿå^#~áþ 84þ ÃÁ#6øÅÕåÝåýåõÙÅÕåÙ*¬ÿ6Oë Í Í" ÍÃÁÅÕåÝåýåõÙÅÕåÙõ*¬ÿ6#~þP( 4^qñ·ÃÁ5 Í"ñ7ÃÁ~·ÈõæOÍñø#ñÅÕåÝåýåõÙÅÕåÙ%~#¾? Põå~ÆÒÅÚÿÍ‚ÑÕÍáåÚÿëÍ· áå�ëÍáåÚÿëÍ· áñ· áñ7á6ñ·õ<+w_##ñ~ÃÁÅÕåÝåýåõÙÅÕåÙ Í·ÊÁ>ÿÃÁÅÕåÝåýåõÙÅÕåÙÍÃÁÅÕåÝåýåõÙÅÕåÙYÍÃÁÅÕåÝåýåõÙÅÕåÙõÍ‚ëÍþÿÊiñáÑÁÙñýáÝááÑÁÅÕåÝåýåõÙÅÕåÙõå%6ÿ#6ÿáÍ‚ëÍÆÁxÃÁÅÕåÝåýåõÙÅÕåÙå€Íá$^ÍÅÕåÝåýåõÙÅÕåÙõÍ‚ëÍñáÑÁÙñýáÝááÑÁÉ|ªúø¯íR?É|ªúù¯7íRÉ|ªúø¯7íR?É|ªúù¯íRÉb¯Ë$ɯ7ÉÑáù¯É|ªõËz(z/W{/_Ë|(|/g}/o#¯º (³(!= ñ¬ò4ë¯goíR¯W_É= DMË(ËgoË*Ñ7ɯëËt <)øë<·íR87ËËË!ËË*Ë= èñë!ò}íB¯É ¯ÉË|( ÍØgoíR¯ÉÍëÉ~/Æw#~/ÎøÉ¯¶+üÉ·Å~w+úÁÉ·Åüÿ #~wúÁɯ¼(#~+ÉÕ*¬ÿ^W#~!ÑÉOGÅÝåÁ F+Ná ngÉOGÅÝåÁ F+Ná F+n`ÉOGÅÝåÁ F+N+~=(Û¯çOGÅÝåÁ F+N+~á =(¯rW+sºÉ¯íRÝåÑɯíRýåÑÉf åÍÝnïÝfð)ë!ãÿÍ1¨Ý^÷ÝV:r+000000þ|ÂÍSÍ gýnÿ}þ|ÂÍS!2åͪÃ>SÍ Ýn÷ÝføåÍ[$ÍuT0Å3ÝnûÝfüåÍ[%gýnÿ}þ|ÂÿSÍ ÃîSÃ(SÝnõÝföåÍ[$ÝwÝågÝnÿãW^ãåÍ0ÒcTgÝn)ëðËÿ^ÇÿnùÝfúW_¯íRÂOTÝnýÝfþÝtúÝuùPROCEDURE QQSORT( left, right : INTEGER ); { + WRITTEN BY: Richard C. Singleton + DATE WRITTEN: Sept 17, 1968 + + This procedure sorts the elements of array A[1..n] into ascending order. The method used is similar to QUICKERSORT by R.S. Scowen, which in turn is similar to an algorithm given by Hibbard and to Hoare's QUICKSORT. + + Modified 6 Oct 1980 for Pascal/Z. +} { GLOBAL TYPE Index = 1..N; Scalar = VAR A : array [Index] of Scalar; } VAR t, tt: Scalar; ii, ij, k, L, m : integer; IL, IU : array [0..20] of integer;{Permit sorting up to 2**(K+1)-1 elements} i, j, ix : integer; alldone, d : BOOLEAN; BEGIN {$C-,M-,F-} i := left; j := right; m := 0; ii := i; alldone := FALSE; REPEAT If ((j-i) > 10) OR ( (i = ii) and (i < j) ) then BEGIN ij := (i+j) DIV 2; t := A[ij]; k := i; L := j; If (A[i] > t) then begin A[ij] := A[i]; A[i] := t; t := A[ij] end; If (A[j] < t) then begin A[ij] := A[j]; A[j] := t; t := A[ij]; If (A[i] > t) then begin A[ij] := A[i]; A[i] := t; t := A[ij] end; end; d := FALSE; REPEAT REPEAT L := L - 1; UNTIL A[L] <= t; REPEAT k := k + 1; UNTIL A[k] >= t; If (k <= L) then begin tt := A[L]; A[L] := A[k]; A[k] := tt; end Else d := TRUE; UNTIL d; If (L-i) > (j-k) then begin IL[m] := i; IU[m] := L; i := k end Else begin IL[m] := k; IU[m] := j; j := L end; m := m + 1; END Else BEGIN For ix := (i+1) to j do begin t := A[ix]; k := ix - 1; If A[k] > t then begin REPEAT A[k+1] := A[k]; k := k - 1; UNTIL A[k] <= t; A[k+1] := t; end; end;{For ix} m := m - 1; If m >= 0 then begin i := IL[m]; j := IU[m]; end Else alldone := TRUE; END; UNTIL alldone; END;{of QQSORT} {$C+,M+,F+} [i] := t; t := A[ij] end; end; d := FALSE; REPEAT REPEAT L := L - 1; UNTIL A[L] <= t; REPEAT k := k + 1; UNTIL A[k] >= t; If (k <= L) then begin tt := A[L]; A[L] := A[k]; A[k] := tt; end Else d := TRUE; UNTIL d; If (L-i) > (j-k) then begin IL[m] := i; IU[m] := L; i := k end Else begin IL[m] := k; IU[m] := j; j := L end; m := m + 1; END Else BEGIN For ix := (i+1) to j do begin t := A[ix]; k := ix - 1; If A[k] > t then begin REPEAT A[k+1] := A[k]; k := k - 1; UNTIL A[k] <= t; A[k+1] := t; end; end;{For ix} m := m - 1; If m >= 0 then begin i := IL[m]; j := IU[m]; end Else alldone := TRUE; END; UNTIL alldon{++++++++++++++++++++++++++++++++++++++++++++++++++++++++} {+ PROGRAM TITLE: Quick sort with minimal storage +} {+ Test Program +} {+ +} {+ WRITTEN BY: Raymond E. Penley +} {+ DATE WRITTEN: October 5, 1980 +} {+ +} {+ A program to show the speed of the quick sort +} {+ with minimal storage algorithm. +} {+ +} {+ Average sorting times in seconds * +} {+ No. of items Shellsort Quicksort QQuicksort +} {+ 1000 15 8 7 +} {+ 2000 34 20 14 +} {+ 5000 112 50 37 +} {+ 10,000 213 106 78 +} {+ +} {+ * Z80 CPU operating at 2 mcps +} {+ +} {++++++++++++++++++++++++++++++++++++++++++++++++++++++++} PROGRAM QuickerQuickSortTest; CONST Max_N = 10000; TYPE index = 0..Max_N; Scalar = INTEGER; VAR cix : char; N, i, ix : Scalar; A : ARRAY [index] OF Scalar; Procedure Show; var i: index; begin for i:=1 to N do begin write(A[i]); if i mod 8 = 0 then writeln; end; writeln; end; PROCEDURE QQSORT( left, right : INTEGER ); { + WRITTEN BY: Richard C. Singleton + DATE WRITTEN: Sept 17, 1968 + + This procedure sorts the elements of array A[1..n] into ascending order. The method used is similar to QUICKERSORT by R.S. Scowen, which in turn is similar to an algorithm given by Hibbard and to Hoare's QUICKSORT. + + Modified 6 Oct 1980 for Pascal/Z. +} { GLOBAL TYPE Index = 1..N; Scalar = VAR A : array [Index] of Scalar; } VAR t, tt: Scalar; ii, ij, k, L, m : integer; IL, IU : array [0..20] of integer;{Permit sorting up to 2**(K+1)-1 elements} i, j, ix : integer; alldone, d : BOOLEAN; BEGIN {$C-,M-,F-} i := left; j := right; m := 0; ii := i; alldone := FALSE; REPEAT If ((j-i) > 10) OR ( (i = ii) and (i < j) ) then BEGIN ij := (i+j) DIV 2; t := A[ij]; k := i; L := j; If (A[i] > t) then begin A[ij] := A[i]; A[i] := t; t := A[ij] end; If (A[j] < t) then begin A[ij] := A[j]; A[j] := t; t := A[ij]; If (A[i] > t) then begin A[ij] := A[i]; A[i] := t; t := A[ij] end; end; d := FALSE; REPEAT REPEAT L := L - 1; UNTIL A[L] <= t; REPEAT k := k + 1; UNTIL A[k] >= t; If (k <= L) then begin tt := A[L]; A[L] := A[k]; A[k] := tt; end Else d := TRUE; UNTIL d; If (L-i) > (j-k) then begin IL[m] := i; IU[m] := L; i := k end Else begin IL[m] := k; IU[m] := j; j := L end; m := m + 1; END Else BEGIN For ix := (i+1) to j do begin t := A[ix]; k := ix - 1; If A[k] > t then begin REPEAT A[k+1] := A[k]; k := k - 1; UNTIL A[k] <= t; A[k+1] := t; end; end;{For ix} m := m - 1; If m >= 0 then begin i := IL[m]; j := IU[m]; end Else alldone := TRUE; END; UNTIL alldone; END;{of QQSORT} {$C+,M+,F+} BEGIN (* MAIN *) repeat writeln; writeln('Enter number of items to sort'); writeln(' 10 <= n <= 10,000'); write('?'); readln(N); until (N >= 10) and (N <= Max_N); writeln; writeln('Please stand by while I set up.'); {$C-,M-,F- [ctrl-c OFF]} ix := 113; FOR i := 1 TO N DO BEGIN ix := (131*ix+1) mod 221; A[i] := ix; if (i mod 1000 = 0) then write(i); END; writeln; A[0] := -maxint; {$C+,M+,F+ [ctrl-c ON]} writeln('Ready'); WRITE('Press return when ready to start'); readln(cix); writeln( CHR(7), 'START'); {} QQSORT( 1, N ); {} WRITELN( CHR(7), 'DONE!!!' ); writeln; write('Print the array (Y/N)?'); readln(cix); If (cix='Y') or (cix='y') then Show; END. *+ùÃÍ*+w!¯Ù*¥ÿååÝáýáù¯w#ü#w!€¾( F##NÍ‘ù Í‘Ãi^#Vëé!{!! !ï!Š!ï !«!Æ!ÞÍÆÃ}String too lonçCall by reference precision erroòIndex or value out of rangåAttempted divide by zerïMultiply overflo÷Stack overflo÷ -- statement Floating point overflow/underflo÷ ŠÿÿÍ™ÝwÝ6ÿÝåýnúýfûãV+^ãåÍ?Ò¶ÝnÿÝfÕ'ÍêÑ)ë!ùÿͧå! ãV+^ÕÍÝnÿÝfÍïÚmW_¯íR–ÍíÍM(ÍjþÊ}Í�¯áã4# 4ê·ÃFÑÑÍí!ÿöÿÍ™ÝnÝf ÝtúÝuùÝnùÝfúW_¯íRÊcÝnùÝfúÍuÝtúÝuùÝnÝf Ý^ùÝVú¯íRÝtüÝuûÝwþÝ6ýÝåá++åÝnûÝfüãV+^ãåÍ?Ò^ÝnýÝfþÝtÝuÿÝwøÝnÿÝfÝ^ùÝVúÕ'ÍêÑ)ëÝf Ýn ¯íRV+^ÝnÿÝfÕ'ÍêÑ)ÕëÝf Ýn ¯íRV+^áÍ?Ò�Ý6øÃ<ÝnÿÝfÕ'ÍêÑ)ëÝf Ýn ¯íRV+^Ýr÷ÝsöÝnÿÝfÕ'ÍêÑ)ëÝf Ýn ¯íRÝ^ÿÝVåÝnùÝfúÕ'ÍêÑ)ëÝf Ýn ¯íRV+^ár+sÝnÿÝfÝ^ùÝVúÕ'ÍêÑ)ëÝf Ýn ¯íRÝ^öÝV÷r+sÝnÿÝfÝ^ùÝVú¯íRÝtÝuÿÝnÿÝfÍ^ÚQݾøÒ;áã4# 4ê_Ã!ÑÑÃØ! ÿ!ر9ùÙ!¯Ù!Îÿ9¯¯íRÚcÍítros ot smeti fo rebmun retnE!åÅ!ãÿ9ùë!ˆí°!Íí000,01 =< n =< 01 !åÅ!îÿ9ùë!Äí°Íí!åÅ!?eå3Íýåáûÿ åÕÍ€ÍM(ÍjþÊ}Í�¯ýnúýfû Í?Ò€ýnúýfû'ÍIÒ€Íí .pu tes I elihw yb dnats esaelP!åÅ!áÿ9ùë!Rí°#Ííýwýý6üqýwÿý6þýåá+åýnúýfûãV+^ãåÍ?Ò ýnüýfýƒÍ~#ÝÍïýtýýuüýnþýfÿÕ'ÍêÑ)ë!ùÿͧý^üýVýr+sýnþýfÿèÍïW_¯íRÂ! åýnþýfÿåÍáã4# 4ê!èÑÑÍíý6ù€ý6øydaeR!åÅ!ûÿ9ùë!2í° Íí!trats ot ydaer nehw nruter sserP !å Å!àÿ9ùë!V í°$ÍýåÕÍ€!å!ãÅeå3TRATS!åÅ!ûÿ9ùë!°í°Ííýåáùÿ åýnúýfûåÍÄ!å!ãÅeå3!!!ENOD!åÅ!ùÿ9ùë!õí°ÍíÍí?)N/Y( yarra eht tnirP!åÅ!êÿ9ùë!!í°ÍýåÕÍ€gýn}þY|Êvgýn}þy|ÂyÍ.ÈÍ/É<Í/Íý8Í™ö|·ÈÍ)Ô™¯É|· Í9ú¦.ÉþÊ}-ÌfÍ9þÊ}þ À> ÉÅÕ¯ËNÂT]ËF(###ÍÕ8;ÍÕ86+++þ (ˆ#w+> ¿ÑÁÉ###ÍÕ8þ(G+++ˆþ ËÆËŽ#Np+yÑÁþ É++Nwy+ËÆËÎï! ÃuRead beyond EOÆÝåÝ!PYÝ9ÝÝÝÝÝåG¯!ݾþ AÝfÝnÿ¸(ËîøÿÝ ÕåÝ~Ý^³(ËæÝVÝfÝnÁůÍVáÑáåË^ åáѯݾ z³()¯¼ ,ÝFþÌ Ìt ÌÉÌJ ÌŽ Ì9 üÿÝ Óëár+sÝáÑÁùáÅÕÉÝFýåÝfÝnÿãÍ)8(|·(Íý0Ën({²(Í™ãÍý8 Í™ãw+òáÉã6 +ûáÉÍ™þT( þF(þ (ñÃY Í7 Í7 åÝfÝnÿp¯GáÉÍ™þEÈþ Èþ,ÈÍ)ØîÉÕåÝå¯OG Í)8xÍý8s¯¹(Í;Ãk Í™þ (]þ (Yþ (Uþ (Qþ (Mþ#(1þ_(-þ$()þ{8 þ[8þ:8Ã6 þa8ñæßþA8í þ0Ú6 W¯¹Ò6 zW>¹( ¯¹(Í™Õ3 ŽÍ™ÃT ¯¹Êh ÝfüÝnûåÝ~ùÝ!Ý9Ý G¯_Ý~¾(¯�(B¯WÝ>“_¯_æ¯{¹(Ý+#ܯ>»(#¯> ¾+ Ù¯gkÑ9ùÝáÝ~ù�ÝfÝnÿwáÑüÿÝ ÉÃY ÃY ¯OåÝfÝnÿÝFý+ã ãÍ)8Íý8Í™þ (þ ( ã x¹ÚOw+Ýã¯G #qáÉÝFý Í« ¸(¼ÂY å!r ÍÆáìåÝfÝnÿqá¯GÉÍ« åÝfÝnÿp+qá¯GÉÕå!DãÍ™þ (ùþ- þ+ Í™þ:0%Ö08!ãÍ ãêð Í;þ:0Ö00⯸ÁÑÈx/Gy/O¯É¯¼ eÁÑ!r ÍÆÍ9þ ù!£T]·íjèíjèíZèíjè_íZÉÕåÝfÝnÿÝVþÝ^ýãÍ)Ú###ÍÕ++Fwx+0ËÎãw+z³ áüÿÝ áÑz³ Çû!_ ÃuType error on inpuôError in number, try again ŠÕåþÿë9ëÍ™þ (ùþ-(þ+Ì™ÅÄ™3Í™þ0ÚY þ:ÒY Í™õ3Í;þ.(7þe(;þE(7þ08þ:8ä> õëåÍ* DMáå#4 ËûÝfÝnÿr+s+p+qáùááÑÉË@ ÕµËH ÍÍ™õ3Í;þ-(þ+ �Í™õ3‰ÕýÝåýååë9åÝáÝ4 ëá~+åþ.(:þe(DþE(@þ (8Ý5Í áå#~Ö0! 6+w¯+w+w+w Ýåýãý Í$ýáÍ+¾Ý6Ý6ÿ´¯á=á¯O~þ- Oþ+ +~Ö0Úbþ ÒbG+~þ (Ö0Úbþ ÒbÕWx‡‡€‡‚ÑGxËA(íDGÝ~ݦ€úä (GÅÍ Áù íDGÅÍ ÁùýáÝá!9ùáÑÁ¯ÉáãÍ* ÉáãÍ* ëÉ! Õë!B í¸ÑÃ[ ! Õë í¸ÑÝ4êbÝ4êbÍ+Ý4àPÁÑáõåÕõÝåýåÅ!9åÝáë¯Ýw ! ÍÊbÝ~Ý® ÝwÝ~<Ý– êbÝwÝ˾ÝË ¾!ûÿ9ùå¯w#ü+åýáÕÅ!ë +¾8 ö+ü#Í·ÁÑõýåá+·Í*ñ8ýËüÆ!Í(Ä! Ñw#ú!9ùÝË~ÊçÝËþÃçÁÑáõåÕõÝåýåÅ!9åÝáë¯Ýw >€Ý® Ýw ÁÑáõåÕõÝåýåÅ!9åÝáë¯Ýw !Í(@! ÍÊçÝË~( Ý˾! ÍÝË ~( ÝË ¾!ÍÝ~Ý– (GOòj¯‘þ8ËyÊç!ë í¸ÃçËyG(!4êb+~Íð! 4êb+~Íð!4êb+~Í! 4êb+~Í! ëå Í ÑËÊç! ÍÝËþÃçÝåýãý Í$ýáÝåѯݾ ÀÑýáÝá!9ùë¯é¯ÅŽ#ùÁɯÅž#ùÁɯÝwýËÿ~(Ý4ýËÿ¾ýåá+Í ý6ÉýËÿv ýåá+·Í*ý5êbêÝ5ÀýËÿþɯÝùÑýáݾ ÚTÝá! 9ù!ååë¯7éº(¼ ë SxDM!=È)Ë#Ë0÷ ô|ªõËz(z/W{/_Ë|(|/g}/o#¯¼ ½ ñ¯É-# ñë¬zðBKëgoË(Ë0Ë|ÂrË#Ëx± ìñyðë¯goíRÉÝåÍ>ÝåÝF¸ ÍIËÆ###goÍž Ív Ívá#ÝáÑùëéÝåÍ>ÝåÝF¸ ÍIˆ###¯¸ÂOgoÍžÕÝ!Ý9Ý PYÉøÿë ëÕÝ ÝFÝfÝnÅåËV ýåå¯goÍÒÝá| }ýáËÖÝ~Ý^³(ËæÝVÝfÝnÁÅ>ÍVáÁÑÉáåËf(öäz³È¯ÝFÝ+Ì#ÌœÌûÌÀÌ]ÞüÿÝ ë åÕÝFÝng)))ÝVÝ^Nyþ (#ãÍvã(ïìáÑ ÈÍvùÝFþÝ~�Ý+Ý+Ý+ÝNÍvõÝ+øÈG ÍvûÉÝ+Ý+ÕݾÝ~T8ë ë ‘AOÍvøÑØÈG ÍvûÉTRUEFALSEÝFýÝ~�Ý+Ý+Ý+ÝN ¯¸( ÅÝ+ÝNÍvõÁy�(GÝ+ûÝ+øÈG ÍvûÉÕÝVÿÝ^þÝåÁÝ!úÿÝ9ÝùåÅÝ Ëz(Ý6-Ý+¯goGíRëÝwÝ+O'Í6èÍ6dÍ6 Í6EÍ>GÝ Ý#Ý~þ-   ¹ Ý60 Ý+Aá~ã�8 ( W Ív úÝNÍvÝ+öÝáÝ+Ý+Ý+ë!9ùëѯɯíR0û¸ ¹È>0€ÝwÝ+ ¯GÉåüÿÝ ë ëÝfÝnÝNÝ++ãÍ‚ã|µ ðz³ Þáï¼ ½ Í�¯ÉÍÆ>Ð+++ËÎ###ÉÑÅ͵Á###Í@8^ÍÍ™+++ËÆËŽËÖ˞˦¯ëéýåÍ0 ###ÍŒ+++ýáÉýáýåågoÍ0 á| }ýáÉ!ãÃuToo many open output fileó!ÃuBad output file namåý#}ý¾( ý#ý#ô¯É|ý#ý¾(}ý#ä¯ÉýåÁ¯7ÉÍ90ûå!9¯G åANÍ‘+ù Í‘ÁáÍÍ9þ ùÅãÁã}ãr+sPYÁOùëÑÅ>ÉÙx±Ä£Í90ûý#ýfýný#ý#|µ###ÄŒìÃå!ýÅÍÆáåèÍÏdÍÏ ÍÏÍÏ!,ÍÆÁá¯É/¯ íR0ûÃ�Í?Òh`iÍIØÃhååÍIÒháPYÍ?áØÃh¯å¼ Õ*­ÿ~+¾Úo^#~þ ÊoÑáÃsËFáÊsÃl¯¼ÊsËNÂlÃsgi#9åAÍ9þ ùNÍ‘+ù Í‘áÑ#ù¯ëéÅÕåÝåýåõÙÅÕåÙÅåÕ`iå###ÍñáË^(?åªëÍÑÕ"Íáå!5~< #5 #5áå'ëÍÑ"ÍÁÅx±Ê¯Ñáº(¼ ë S_xDM!=()ë8 )ë0õ 0òï)ëó+}´Æ ¯E˸Ë$õË}($ñ0Ë#Ë#0Ë"Ë"LáåÕ$Ñq#s#rÑááÑ!(FÅÕ!#6!*ëÍÑÕ!Íáå!4 #4 #4ÑÕ!§ëÍÑÕ!Íá%Áp· ÛÿåÍÕá 6àÿ++w+Øÿ·(ËÞÃ0ËžÃ0<Ýã!åÅ9åÝãÑùշȯÙGOåÙ2¯íRѯíRÚcÉÝåÑýåý#ëýfýn|µ(åíRá0 ###ÍŒ¯ýwýwý#ý#ݯýáÝùÁëÑÝáÁù`i»ÙGOÙéÅÕåÝåýåõÙÅÕåÙõ6#å 6 #û6#ûÍ|(û8#ÖAGÍ|0> þ:(å*¬ÿ55*+Fáxþ8 á!+ÍÆñ7Ã0wá Í|8(ùþ.(w#ñàH (é#úñ·Ã0Í9þa8þ{0æ_þ ÉÅÕåÝåýåõÙÅÕåÙõå+++Ëf###%(6ÿëáÍÆ·Ê¼ïëÍñÃ0ÅÕåÝåýåõÙÅÕåÙy%4ÂÎõåØÿËfÊ�###åÍñ§ëÍÑÕ"Íáå!5~< #5~< #5áå'ëÍÑÕ"ÍÑÕ! 6!'ëÍÑÕ!44~þ0#4 #4ÑÕ!Íáå!4 #4 #4ÑÕ! 6ÑÕ!§ëÍÑÕ!Íá%6ûÿ6áñÃ0)~6<(3ÚÿÍñå'ëÍáåëÍ· "áå§ëÍáëÍ· áñ^##wÃ0!óþ !ýþ !þÿ !ÃuDisk erroòError in extending filåDisk fulìDirectory fulìBad filename ŠÅÕåÝåýåõÙÅÕåÙ*¬ÿå^#~áþ 84þ Ã0#6øÅÕåÝåýåõÙÅÕåÙ*¬ÿ6Oë Í Í‘ Í�Ã0ÅÕåÝåýåõÙÅÕåÙõ*¬ÿ6#~þP( 4^qñ·Ã05 Í‘ñ7Ã0~·ÈõæOÍ�ñø#ñÅÕåÝåýåõÙÅÕåÙ%~#¾? Põå~ÆÒ4ÚÿÍñÑÕÍáåÚÿëÍ· áå�ëÍáåÚÿëÍ· áñ· áñ7á6ñ·õ<+w_##ñ~Ã0ÅÕåÝåýåõÙÅÕåÙ Í·Ê0>ÿÃ0ÅÕåÝåýåõÙÅÕåÙÍÃ0ÅÕåÝåýåõÙÅÕåÙYÍÃ0ÅÕåÝåýåõÙÅÕåÙõÍñëÍþÿÊØñáÑÁÙñýáÝááÑÁÅÕåÝåýåõÙÅÕåÙõå%6ÿ#6ÿáÍñëÍÆÁxÃ0ÅÕåÝåýåõÙÅÕåÙå€Íá$^ÍÅÕåÝåýåõÙÅÕåÙõÍñëÍñáÑÁÙñýáÝááÑÁÉ|ªúg¯íR?É|ªúh¯7íRÉ|ªúg¯7íR?É|ªúh¯íRÉb¯Ë$ɯ7ÉÑáù¯É|ªõËz(z/W{/_Ë|(|/g}/o#¯º (³(!= ñ¬ò£ë¯goíR¯W_É= DMË(ËgoË*Ñ7ɯëËt <)øë<·íR87ËËË!ËË*Ë= èñë!òìíB¯É ¯ÉË|( ÍuØgoíR¯ÉÍuëÉ~/Æw#~/ÎøÉ¯¶+üÉ·Å~w+úÁÉ·Åüÿ #~wúÁɯ¼(#~+ÉÕ*¬ÿ^W#~!ÑÉOGÅÝåÁ F+Ná ngÉOGÅÝåÁ F+Ná F+n`ÉOGÅÝåÁ F+N+~=(Û¯çOGÅÝåÁ F+N+~á =(¯rW+sºÉ¯íRÝåÑɯíRýåÑÉ 'NMLIST,NMTLIS.NOP NOT ORA °ORG ORI ö OUT Ó OUTD «OUTDR or in extending filåDisk fulìDirectory fulìBad filename ŠÅÕåÝåýåõÙÅÕåÙ*¬ÿå^#~áþ 84þ Ã0#6øÅÕåÝåýåõÙÅÕåÙ*¬ÿ6Oë Í Í‘ Í�Ã0ÅÕåÝåýåõÙÅÕåÙõ*¬ÿ6#~þP( 4^qñ·Ã05 Í‘ñ7Ã0~·ÈõæOÍ�ñø#ñÅÕåÝåýåõÙÅÕåÙ%~#¾? Põå~ÆÒ4ÚÿÍñÑÕPROCEDURE Shellsort(VAR A : ScalarTyp; n : INDEX); { The array A[1..n] is sorted in ascending order. The method is that of D.A. Shell, (A high-speed sorting procedure, Comm. ACM 2 (1959), 30-32) with subsequences chosen as suggested by T.N. Hibberd. } VAR i, j, k, m : integer; done : BOOLEAN; temp : SCALAR; begin (*$C-,M-,F-*) m := n; While m <> 0 do begin m := m DIV 2; k := n - m; for j:=1 to k do begin i := j; done := FALSE; repeat if A[i+m] >= A[i] then done := TRUE else begin temp := A[i]; A[i] := A[i+m]; A[i+m] := temp; i := i - m; end; until (i<1) OR ( done ); end{for j}; end{While}; end;{Shellsort}{$C+,M+,F+} åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå{++++++++++++++++++++++++++++++++++++++++++++++++++++++++} {+ PROGRAM TITLE: Shell Sort Test +} {+ +} {+ WRITTEN BY: Raymond E. Penley +} {+ DATE WRITTEN: 5 October 1980 +} {+ +} {+ SUMMARY: +} {+ This program demonstrates the Shell sort +} {+ algorithm. +} {+ +} {+ Average sorting times in seconds * +} {+ No. of items Shellsort Quicksort QQuicksort +} {+ 1000 15 8 7 +} {+ 2000 34 20 14 +} {+ 5000 112 50 37 +} {+ 10,000 213 106 78 +} {+ +} {+ * Z80 CPU operating at 2 mcps +} {+ +} {++++++++++++++++++++++++++++++++++++++++++++++++++++++++} PROGRAM Shellsorttest; CONST Max_N = 10000; TYPE INDEX = 0..Max_N; SCALAR = INTEGER; ScalarTyp = ARRAY [ INDEX ] OF SCALAR; VAR cix : char; {Global temp for char inputs} A : ScalarTyp; N, {The number of numbers to be sorted.} i, ix : INTEGER; {Global indexer} Procedure Show; var i: index; begin for i:=1 to N do begin write(A[i]); if i mod 8 = 0 then writeln; end; writeln; end; PROCEDURE Shellsort(VAR A : ScalarTyp; n : INDEX); { The array A[1..n] is sorted in ascending order. The method is that of D.A. Shell, (A high-speed sorting procedure, Comm. ACM 2 (1959), 30-32) with subsequences chosen as suggested by T.N. Hibberd. } VAR i, j, k, m : integer; done : BOOLEAN; temp : SCALAR; begin (*$C-,M-,F-*) m := n; While m <> 0 do begin m := m DIV 2; k := n - m; for j:=1 to k do begin i := j; done := FALSE; repeat if A[i+m] >= A[i] then done := TRUE else begin temp := A[i]; A[i] := A[i+m]; A[i+m] := temp; i := i - m; end; until (i<1) OR ( done ); end{for j}; end{While}; end;{Shellsort}{$C+,M+,F+} BEGIN (* Main program SHELLSORT*) Repeat writeln; writeln('Enter number of items to sort'); writeln(' 10 <= n <= 10,000'); write('?'); readln(N); Until (N >= 10) and (N <= Max_N); writeln; writeln('Please stand by while I set up.'); ix := 113; {$C-,M-,F- [ctrl-c OFF]} FOR i := 1 TO N DO BEGIN ix := (131*ix+1) mod 221; A[i] := ix; if (i mod 1000 = 0) then write(i); END; writeln; A[0] := -maxint; {$C+,M+,F+ [ctrl-c ON]} writeln('Ready'); WRITE('Press return when ready to start'); readln(cix); writeln( CHR(7), 'START'); {} Shellsort(A, N ); {} WRITELN( CHR(7), 'DONE!!!' ); writeln; write('Print the array (Y/N)?'); readln(cix); If (cix='Y') or (cix='y') then Show; END.  begin temp := A[i]; A[i] := A[i+m]; A[i+m] := temp; i := i - m; end; until (i<1) OR ( done ); end{for j}; end{While}; end;{Shellsort}{$C+,M+,F+} BEGIN (* Main program SHELLSORT*) Repeat writeln; writeln('En10 'SORTC - A VARIABLE LENGTH, VARIABLE COLMN, AND UNLIMITED 20 'FILE SIZE, SORT PROGRAM - MERGE.BAS IS CALLED TO MERGE 30 'STRINGS CREATED BY THIS SORT. 40 ' IMPROVEMENTS: 50 ' VARIABLE COLUMNS FOR SORT BY INPUT STATEMENT 60 ' RESORT OPTION AFTER MATRIX IS LOADED AND AFTER 70 ' FIRST SORT IS COMPLETED. 80 ' ADDITIONAL FILES OPTIONAL BEFOR TERMINATION. 90 GOSUB 660 100 RESET 110 CLEAR 2500 120 DEFINT I-N,A,B 130 FCNT=100 140 STR=200 150 DIM A$(500) 160 ' 170 PRINT 180 PRINT "Enter file names in upper case-letters." 190 PRINT "FILE NAMES NEED NOT BE EMBEDDED IN QUOTES." 200 PRINT 210 INPUT "WHAT IS THE NAME OF THE ORIGINAL FILE";OLD$ 220 INPUT "WHAT NAME DO YOU WANT FOR THE NEW FILE";NW$ 230 ' 240 OPEN "I",#2,OLD$:I=0 250 ' 260 IF EOF(2) THEN 320 270 I=I+1 280 LINE INPUT #2,A$(I) 290 IF I>STR-1 THEN GOTO 320 300 GOTO 260 310 ' 320 N=I:S=I 330 PRINT: PRINT " ";N;" RECORDS READ." 340 ' 350 ' THIS STARTS THE ACTUAL SORT 360 ' 370 GOSUB 660 'CLEAR SCREEN 380 F$="0 1 2 3 4 5 6 7" 390 G$="1234567890123456789012345678901234567890123456789012345678901234567890" 400 IF A<>B THEN GOTO 430 410 PRINT F$:PRINT G$:PRINT A$(8):PRINT 420 INPUT "ENTER SORT PARMS A,B (A=STARTING COL B=LENGTH OF FIELD)";A,B 430 PRINT: PRINT "STARTING SORT ON COL'S ";A;" THRU ";A+B-1 440 J4=N 450 J4=J4\2 460 IF J4=0 THEN 620 'DONE 470 J2=N-J4 480 J=1 490 I=J 500 J3=I+J4 510 ' 520 ' SORTING COLUMNS ARE DETERMINED BY A,B IN MID$() COMMAND 530 ' THESE VALUES ARE A= STARTING COLUMN B= NUMBER OF COLUMNS. 540 ' 550 IF MID$(A$(I),A,B) <= MID$(A$(J3),A,B) THEN 590 560 SWAP A$(I),A$(J3) 570 I=I-J4 580 IF I>=1 THEN 500 590 J=J+1 600 IF J>J2 THEN 450 610 GOTO 490 620 PRINT "STRING SORT COMPLETED " 630 GOSUB 680 'WRITE SORTED FILE TO DISK STRINGS 640 IF EOF(2) THEN GOTO 830 650 GOTO 260 660 PRINT CHR$(27);"* " 670 RETURN 680 ' HERE TO DO MULTI STRING SORT (LARGE FILES) 690 ' 700 N=S:NT=NT+N 710 FCNT=FCNT+1 720 ' 730 NFIL$=MID$(STR$(FCNT),2,3)+".MFL" 'INCREMENTS NUMBER 740 OPEN "O",#3,NFIL$ 750 FOR I=1 TO S 'WRITE LOOP 760 PRINT #3,A$(I) 770 NEXT I 780 CLOSE #3 790 FOR I=1 TO STR:A$(I)="":NEXT I:I=0 800 PRINT "STRING ";FCNT-100;" SAVED ";S;" RECORDS" 810 IF EOF(2) THEN IF FCNT=101 THEN GOTO 830 820 RETURN 830 PRINT "STRINGS COMPLETED " 840 PRINT "RECORDS READ = ";NT 850 PRINT "FILES GENERATED = ";FCNT-100 860 N=FCNT 870 CLOSE #1,#2,#3 880 ' STRING MERGE 890 ' 900 MFIL1$="101.MFL" 910 MFIL2$="102.MFL" 920 MFIL3$="N101.MFL" 930 MF=1 940 CH=102 'THERE ARE AT LEAST TWO STRINGS 950 ' 960 OPEN "I",#1,MFIL1$ '1 ST MERGE FILE 970 OPEN "I",#2,MFIL2$ '2 ND MERGE FILE 980 OPEN "O",#3,MFIL3$ '1 ST MERGE OUTPUT FILE 990 ' START MERGE 1000 ' 1010 IF EOF(1) THEN GOTO 1030 1020 LINE INPUT #1,A$ 1030 IF EOF(2) THEN GOTO 1050 1040 LINE INPUT #2,B$ 1050 IF EOF(1) THEN IF EOF(2) THEN CLOSE #3:END 1060 IF MID$(A$,A,B)>MID$(B$,A,B) THEN GOTO 1110 1070 PRINT #3,A$:RC=RC+1 1080 IF EOF(1) THEN GOTO 1150 1090 LINE INPUT #1,A$ 1100 GOTO 1060 1110 PRINT #3,B$:RC=RC+1 1120 IF EOF(2) THEN GOTO 1200 1130 LINE INPUT #2,B$ 1140 GOTO 1060 1150 CLOSE #1 1160 PRINT #3,B$:RC=RC+1 1170 IF EOF(2) THEN CLOSE #3:CLOSE #2:GOTO 1250 1180 LINE INPUT #2,B$ 1190 GOTO 1160 1200 CLOSE #2 1210 PRINT #3,A$:RC=RC+1 1220 IF EOF(1) THEN CLOSE #3:CLOSE #1:GOTO 1250 1230 LINE INPUT #1,A$ 1240 GOTO 1210 1250 PRINT "MERGE ";MF;" COMPLETE " 1260 KILL "101.MFL" 1270 KILL MFIL2$ 1280 NAME "N101.MFL" AS "101.MFL" 1290 IF CH=N THEN GOTO 1350 1300 RC=0 1310 CH=VAL(MID$(MFIL2$,1,3))+1 1320 MF=CH 1330 MID$(MFIL2$,1,3)=MID$(STR$(CH),2,3) 1340 GOTO 960 1350 PRINT "FINAL MERGE COMPLETED " 1360 PRINT "RECORDS PROCESSED = ";RC 1370 CLOSE 1380 NAME "101.MFL" AS NW$ 1390 PRINT "NEW FILE NAME = ";NW$ 1400 END  " 1360 PRINT "RECORDS PROCESSED = ";RC 1370 CLOSE 1380 NAME "101.MFL" AS NW$ 1390 PRI30 NFIL$=MID$(STR$(FCNT),2,3)+".MFL" 'INCREMENTS NUMBER 740 OPEN "O",#3,NFIL$ 750 FOR I=1 TO S 'WRITE LOOP 760 PRINT #3,A$(I1 !]~þ nÊ‚þ?Ê‚â!eÕÍ=ÑÊ{! Ímò!"Ì"Î"Ð"|"}\Í·'ú‚>2ÖÍ£ʳþ ÂgÍ£ʳþ Ê�þʳ*Ì#"ÌÃVë_~#~#~LÂ*Ð#"Ð*Îë*ÌÍmò§ʧë"Î!"ÌÃV:Î<2Î*Ð}þÚr\Í!"Ì"|"}>2Ö!"ÔÍ£Ê[þÊ[þ Êâþ Ê*Ôw#"Ô:Ì<2ÌÃâ NO. TO BIG$:Ì2ÒÎ!ÒÍbF~æ€ :Ìg:Îo‚*Ôx·ÊI6 #ÂA+6 #6 #6"Ô¯2ÌÃâ*Ô"à#6:Î<2Î:Ðo&Í“:Ð=2ÐÂk!Èe¯Í!"|"}\Í!"|"~\Í!>_2Ø~2Ì~þÊ%Gþ Âëå#~þ ÊÄþ xëáÂë> Í¿ÂV> Í¿ÂV> ë##Ã÷þ ÂÍ¿ÂV#~Í4G:ÌÍ4¸Ê> Í¿ÂV> Í¿ÂVx2ÌxÍ¿ÂV#÷Í¿ÂV>2ØÍ¿ÂVFÂBAD SORT!$SORT COMPLETED.$\ SORRY DISK IS FULL.$x SORRY FILE IS TOO SMALL.$kb"Ü:ÎO "ÞÕå*àëáÍmÑð:ÎG~§È~Í4OÍ4¹ÊËÒðÃèÂÖ*ÞëÖ#~Í4OÍ4¹ÊËÒðÊÏ#Ãè*Þë*Ü:ÎGNwy#Âû"Ò*Î"ÌÕÒ!ÌÍb*ÌåÍmáÑú.ëÖ͈ÓþaØþ{ÐÖ É¾ØÀÈ#Ã=åÕÅõ~#þ ÊZ_Í•ÃL͈ñÁÑáɧžwÈ#ÃcåÅGÍwxÁáÉ}“o|šgÒƒ¯=É}´ÈæÀ<ÉõÅÕ|Íš}ÍšÑÁñÉGæðÆ�'Î@'_͵xæÆ�'Î@'_ÅåÍáÁÉåÕÅõ:ØþÂLñ:Ú<Êßòßo&6,ÂÙ\Í·Â#\Í·òõ Íô͈ñÁÑáÉO¯yÃWONT CLOSE FILE ERROR.$õ1Íô͈ñÃCANT WRITE FILE ERROR.$ÁÃþÊf<2ØúsÂË\ÍÂH!€}2Ø6,úm:Øo&2Úñw¯ÃÍôÃÕ Í• Í•ÑÉõåÕÅÍÁÑáñÉ:Öþʼ<ÊÞòù2Ö&oö~É€Í>€2Ö!"|"~\Í·úñ\Í·Âï>€Ã²¯Éû Í7É ERROR - MISSING FILE ON DISK $G¾È~#xÃCAN NOT FIND FILE!$CAN NOT OPEN FILE$SORRY CAN NOT USE . EXTENSION!$SORTFILE - VER 1.1 BY TOM HARROLD 2643 SOUTH BASCOM AVE. #32 CAMPBELL, CA. 95008 PHONE - 408-371-3197 USE- SORTFILE FILENAME.EXT (CR) THIS WILL SORT ANY KIND OF ASCII FILE. THE RESULTS WILL BE IN A RENAMED EXT. CALLED .SRT... UP TO 255 LINES BY 80 CHARACTERS CAN BE SORTED. NOTE- THE RESULT FILE WILL BE BIGGER THAN THE ORGINAL FILE. $ 408-371-3197 USE- SORTFILE FILENAME.EXT (CR) THIS WILL SORT ANY KIND OF ASCII FILE. THE RESULTS WILL BE IN A RENAMED EXT. CALLED .SRT... UP TO 255 LINES BY 80 CHARACTERS CAN BE SORTED. NOTE- THE RESULT FILE WILL BE BIGGER THAN THE ORGINAL FILE. SRT8-371-3197 USE- SOR???COMASMCOBFORHEXINTLIBMACOBJPASPCOPRLRELSRCSUB$$$ÍôÃÕ Í• Í•ÑÉõåÕÅÍÁÑáñÉ:Öþʼ<ÊÞòù2Ö&oö~É€Í>€2Ö!"|"~\Í·úñ\Í·Âï>€Ã²¯Éû Í7É ERROR - MISSING FILE ON DISK $G¾È~#xÃCAN NOT FIND FILE!$CAN NOT OPEN FILE$SORRY CAN NOT USE . EXTENSION!$SORTFILE - VER 1.1 BY TOM HARROLD 2643 SOUTH BASCOM AVE. #32 CAMPBELL, CA. 95008 PHONE - 408-371-3197 USE- SORTFILE FILENAME.EXT (CR) THIS WILL SORT ANY KIND OF ASCII FILE. THE RESULTS WILL BE IN A RENAMED EXT. CALLED .SRT... UP TO 255 LINES BY 80 CHARACTERS CAN BE SORTED. NOTE- THE RESULT FILE WILL BE BIGGER THAN THE ORGINAL FILE. $ 408-371-3197 USE- SORTFILE FILENAME.EXT (CR) THIS WILL SORT ANY KIND OF ASCII FILE. THE RESULTS WILL BE IN A RENAMED EXT. CALLED .SRT... UP TO 255 LINES BY 80 CHARACTERS CAN BE SORTED. NOTE- THE RESULT FILE WILL BE BIGGER THAN THE ORGINAL FILE. SRT8-371-3197 USE- SOR???COMASMCOBFORHEXINTLIBMACOBJSORTFILE DEC. 3, 1984 BY TOM HARROLD I made sortfile as simple as I can. I wanted to sort a Wordstar file containing a list of movies on video tapes. It was a neat project for me to do when I had > 100 video tapes. Have you ever try to find the tape that has 2001 A Space Odyssey movie well, let me tell you it takes a long time to find it without an inventory list. a list that gives you the tape number and in what box number its in, is'nt that nice! Sortfile.com will sort in alphabetical order form A to Z. No other options like sort Z to A available. Sortfile was intented to sort a ascii file size of 255 lines at 80 characters per line. the sorting starts at the begining of a line until the end of line. Of course a carriage return and a line feed means end of a line. To use sortfile type the following: SORTFILE YOURFILE YOU MAY TYPE: SORTFILE THIS WILL GIVE YOU A BRIEF MESSAGE OF HOW TO USE SORTFILE. The final sorted file will be your filename with .SRT extention.  for example: A>SORTFILE TOM.TXT A>DIR TOM.* TOM TXT : TOM SRT One feature that I put in the program is the following example. I made one attempted to write it. but I found using an example to show what it does, is better. act ape apple cat bat hat hate This is a small list of words in a sorted file. Note the blank lines separating groups determine by the first character in each line. Be my guest, go ahead and try it, you can't break it. end. TOM HARROLD r form A to Z. No other options like sort Z to A available. Sortfile was intented to sort a ascii file size of 255 lines at 80 characters per line. the sorting starts at the begining of a line until the end of line. Of course a carriage return and a line feed means end of a line. To use sortfile type the following: SORTFILE YOURFILE YOU MAY TYPE: SORTFILE THIS WILL GIVE YOU A BRIEF MESSAGE OF HOW TO USE SORTFILE. The final sorted file will be your filename with .SRT extention. 3 REM SORTKYBD.BAS MBASIC 5.2 CP/M ver 4/12/81 5 REM SORT LISTS KEYED IN TO PROGRAM & DISPLAY ON CRT. 6 E$=CHR$(27):CLR$=E$+"E":PRINT CLR$:PRINT:PRINT 7 PRINT " ";E$;"p";" SORT PROGRAM FOR LISTS KEYED IN. ";E$;"q" 9 PRINT:PRINT 10 REM ******CHARACTER STRING / NUMBER SORT****** 20 REM ******FROM CP/M USERS GROUP 5.22****** 30 REM EDITED BY KEITH PETERSEN, W8SDZ 40 CLEAR 500 50 DIM N(150),C$(150) 60 PRINT:PRINT "TYPE C FOR CHARACTER (alphabetic) STRING SORT, .... or" 65 PRINT 70 PRINT "TYPE N FOR NUMBER SORT. (Numeric items only). "; 80 INPUT W$ 90 N=0 100 PRINT 110 IF W$="N" THEN 480 112 IF W$="n" THEN 480 115 IF W$="C" THEN 140 117 IF W$="c" THEN 140 120 GOTO 60 130 REM **********CHARACTER STRING SORT ROUTINE*********** 140 GOSUB 770 150 INPUT S$ 160 PRINT 163 PRINT "BEGIN ENTERING ALPHABETIC ITEMS. ENTER ";S$; 164 PRINT "TO END YOUR LIST AND BEGIN THE SORTING.":PRINT 170 N=N+1 180 INPUT C$(N) 190 IF C$(N)<>S$ THEN 170 200 N=N-1 210 PRINT 220 L=INT(N/2)+1 230 N1=N 240 IF L=1 THEN 280 250 L=L-1 260 A$=C$(L) 270 GOTO 320 280 A$=C$(N1) 290 C$(N1)=C$(1) 300 N1=N1-1 310 IF N1=1 THEN 430 320 J=L 330 I=J 340 J=2*J 350 IF J=N1 THEN 390 360 IF J>N1 THEN 420 370 IF C$(J)>=C$(J+1) THEN 390 380 J=J+1 390 IF A$>=C$(J) THEN 420 400 C$(I)=C$(J) 410 GOTO 330 420 C$(I)=A$:GOTO 240 430 C$(1)=A$ 440 FOR I=1 TO N 450 PRINT C$(I):NEXT I 460 PRINT CLR$:GOTO 60 470 REM *************NUMBER SORTING ROUTINE************* 480 GOSUB 770 483 PRINT:PRINT:PRINT "...item must be numeric, it can be +, -, or period." 490 INPUT S:PRINT 500 N=N+1 510 INPUT N(N) 520 IF N(N)<>S THEN 500 530 N=N-1 540 PRINT 550 L=INT(N/2)+1 560 N1=N 570 IF L=1 THEN 600 580 L=L-1 590 A=N(L):GOTO 630 600 A=N(N1):N(N1)=N(1) 610 N1=N1-1 620 IF N1=1 THEN 730 630 J=L 640 I=J 650 J=2*J 660 IF J=N1 THEN 690 670 IF J>N1 THEN 720 680 IF N(J)N(J) THEN 720 700 N(I)=N(J) 710 GOTO 640 720 N(I)=A:GOTO 570 730 N(1)=A 740 FOR I=1 TO N:PRINT N(I):NEXT 750 PRINT CLR$:GOTO 60 760 REM **********SUBROUTINE TO INPUT STOP CODE********** 770 PRINT:PRINT "Please enter a 'stop-code'; ...an item not it your " 775 PRINT 780 PRINT "list which will indicate you are finished entering. "; 790 RETURN 800 END  ...an item not it your " 775 PRINT 780 PRINT "list which will indicate you are finished entering. "; 790 RETURN 800 END  750 PRINT CLR$:GOTO 60 760 REM **********SUBROUTINE TO INPUT STOP CODE********** 770 PRINT:PRINT "Please enter a 'stop-code'T "...item must be numeric, it can be +, -, or period." 490 INPUT S:PRINT 500 N=N+1 510 INPUT N(N) 520 IF N(N)<>S THEN 500 530 N=N-1 540 PRINT 550 L=INT(N/2)+1 560 N1=N 570 IF L=1 THEN 600 580 L=L-1 590 A=N(L):GOTO 630 600 A=N(N1):N(N1)=N(1) 610 N1=N1-1 620 IF N1=1 THEN 730 630 J=L 640 I=J 650 J=2*J 660 IF J=N1 THEN 690 670 IF J>N1 THEN 720 680 IF N(J)N(J) THEN 720 700 N(I)=N(J) 710 GOTO 640 720 N(I)=A:GOTO 570 730 N(1)=A 740 FOR I=1 TO N:PRINT N(I):NEXT1ËÍSORTV rev 1.3 $Ñ ÍÍ:ÍRÍËÍõÍ¥Í3ÍL++DONE++$!�~·Èþ@#Â=^~#·ÂIÉ:]þ Ê�:mþ Êtþ@Êt!lË ÍïÉ!\Ë ÍïÉÍL++Error - Command format requires an input name, and an output name.$ÅÕå\ÍáÑÁ<ÀÍL++Input file not found$! ÍØÍ”Ãø"دw#w#^:=¼ÊvÕå!UÍúáÑþ7ÈwG·Ê/¸Â/#xþ  Õå!UÍúáÑ·È*Ø##^ÅÕåÍáÑÁ~#þ ÂHÍL ++NO SKIP CHAR FOUND++$ÍL++File won't fit in memory$å*Øë*\s#rë"\áɯ2×!Ú"\*Ú~#¶+ÈÍËÜÍ!Ò·:×·Â¥Éå^#V^ ·Êè#¾ÂÙë#¾ÂßëÃÓ#¾Âöþ ÂèáÉ~þ Êô¾Ãô>2×N#F+ w# w +ë*\q#p{z ëÉ"\^#Vë|µ7È~#¶+À7É!"W¯2h2|!Ë\ ÍïÅÕå\ÍáÑÁÅÕå\ÍáÑÁ<ÊÓ*ÚÍ­Òo>å!UÍ_á!UÍÂÅÕå€ÍáÑÁÅÕå\ÍáÑÁÍL++DONE++$å##~å!UÍ_á~þ ¯> å!UÍ_áá^#Vë|µÀ7ÉÍL++Can't make output file$~# x±ÂïÉ^#V#N#Fx±ÂI#~‡G#å~#fo>ÕåÅÕåÍáÑÁÑÅÕåÍáÑÁ·áÂ>}Æ€o|ÎgëÂá+~+w+++Ãú#~ë„g}‘o|˜g~ëþÈ +p+qÉ^#V#N#FÕë wëÑ#~¸Â½‡G#å~#foÕåÅÕåÍáÑÁÑÅÕåÍáÑÁ·áÂ-}Æ€o|ÎgëÂ{á++6+6ÅÕå€ÍáÑÁÉ+p+qÉ^#V#N#F#x±Èy‡x2×N#F+ w# w +ë*\q#p{z ëÉ"\^#Vë|µ7È~#¶+À7É!"W¯2h2|!Ë\ ÍïÅÕå\ÍáÑÁÅÕå\ÍáÑÁ<ÊÓ*ÚÍ­Òo>å!UÍ_á!UÍÂÅÕå€ÍáÑÁÅÕå\ÍáÑÁÍL++DONE++$å##~å!UÍ_á~þ ¯> å!UÍ_áá^#Vë|µÀ7ÉÍL++Can't make output file$~# x±ÂïÉ^#V#N#Fx±ÂI#~‡G#å~#fo>ÕåÅÕåÍáÑÁÑÅÕåÍáÑÁ·áÂ>}Æ€o|ÎgëÂá+~+w+++Ãú#~ë„g}‘o|˜g~ëþÈ +p+qÉ^#V#N#FÕë wëÑ#~¸Â½‡G#å~#foÕåÅÕåÍáÑÁÑÅÕåÍáÑÁ·áÂ-}Æ€o|ÎgëÂ{á++6+6ÅÕå€ÍáÑÁÉ+p+qÉ^#V#N#F#x±Èy‡xNEEDS MAC TO ASSEMBLE<--- ; ;01/03/81 Change stack init. By Keith Petersen, W8SDZ ; ;11/15/80 Add @ command (WLC) ; ;10/24/80 Originally written by Ward Christensen ; ;FORMAT: ; SORTV INPUT-NAME OUTPUT-NAME ; or SORTV NAME ; ;if the second format is used, the file is read into ;memory, sorted, erased, created, and written back. ; ; THE SORT WILL BE BASED ON THE FIRST CHARACTERS ; IN THE FILE, UNLESS THE COMMAND IS FOLLOWED BY ; AN "@" SIGN, THEN A STRING (1 OR MORE CHARACTERS) ; TO SKIP. ; ;EX: SORTV NAMES.SUB @. ; ;WILL SORT NAMES.SUB BY FILETYPE, SINCE IT SKIPS PAST ;THE "." BEFORE DOING THE COMPARE. ; EOF EQU 1AH CR EQU 0DH LF EQU 0AH ; ;(FROM EQU10.LIB...) ; MF SET 0 ;SHOW MOVE NOT REQUESTED CF SET 0 ;SHOW COMP NOT REQUESTED ; ;DEFINE SOME MACROS TO MAKE THINGS EASIER ; ;DEFINE DATA MOVE MACRO: MOVE from,to,length ; from may be addr, or quoted string ; MOVE MACRO ?F,?T,?L MCSUB ?F,?T,?L ;;HANDLE ARGS CALL MOVER MF SET -1 ;;SHOW EXPANSION ENDM ; ;COMPARE MACRO COMP MACRO ?F,?T,?L MCSUB ?F,?T,?L ;;HANDLE ARGS CALL COMPR CF SET -1 ;;SHOW EXPANSION ENDM ; ;MCSUB - HANDLES MOVE, COMPARE ARGUMENTS MCSUB MACRO ?F,?T,?L IF NOT NUL ?F IRPC ?C,?F ?Q SET '&?C&?C' ;;TEST FOR QUOTE EXITM ENDM IF ?Q EQ '''' LOCAL ?B,?Z CALL ?Z ?B DB ?F ?Z POP H ;GET FROM LXI B,?Z-?B ;GET LEN ELSE LXI H,?F ENDIF ENDIF IF NOT NUL ?T LXI D,?T ENDIF IF NOT NUL ?L LXI B,?L ENDIF ENDM ; ;DEFINE CP/M MACRO - CPM FNC,PARM [,NOSAVE] ; CPM MACRO ?F,?P,?N IF NUL ?N PUSH B PUSH D PUSH H ENDIF IF NOT NUL ?F MVI C,?F ENDIF IF NOT NUL ?P LXI D,?P ENDIF CALL BDOS IF NUL ?N POP H POP D POP B ENDIF ENDM ; RDB MACRO ?F PUSH D PUSH H LXI H,?F CALL RDBYTE POP H POP D ENDM ; WRB MACRO ?F PUSH H LXI H,?F CALL WRBYTE POP H ENDM ; EFCB MACRO ?B,?P,?F DW ?B DW 0 DB ?P DW ?F ENDM ; ORG 100H ; ;INIT LOCAL STACK ; LXI SP,STACK ; CALL START DB 'SORTV rev 1.2' DB CR,LF,'$' ; START POP D ;GET ID MVI C,PRINT CALL BDOS ;PRINT ID ; ;START OF PROGRAM EXECUTION ; CALL SVSKIP ;SAVE SKIP INFO CALL CKNAMES ;SEE THAT 2 NAMES ARE THERE CALL OPENIN ;OPEN INPUT FILE CALL READN ;READ THE NAMES CALL SORTN ;SORT THE NAMES CALL WRITEN ;WRITE THE NAMES CALL ERXIT DB '++DONE++$' ; ;====> SUBROUTINES ; ---------------- ; ;====> SAVE "SKIP TO" INFORMATION ; SVSKIP LXI H,81H ; SVSKL MOV A,M ORA A RZ ;NO 'SKIP TO' CPI '@' ;SKIP DELIMITER? INX H JNZ SVSKL LXI D,SKIPC ;CHARS TO SKIP ; SVSKL2 MOV A,M STAX D INX H INX D ORA A JNZ SVSKL2 RET ; ;====> CHECK THAT 2 NAMES WERE SUPPLIED ; CKNAMES LDA FCB+1 CPI ' ' JZ NONAME LDA FCB2+1 CPI ' ' JZ SAMENAM CPI '@' ;SKIP PARM? JZ SAMENAM MOVE FCB2,OUTNAME,12 RET ; ;OUTPUT NAME = INPUT NAME ; SAMENAM MOVE FCB,OUTNAME,12 RET ; NONAME CALL ERXIT DB '++Error - ',CR,LF DB 'Command format requires an ' DB 'input name, and an output name.$' ; ;====> OPEN THE INPUT FILE ; OPENIN CPM OPEN,FCB INR A RNZ ;SUCCESSFUL? RETURN CALL ERXIT DB '++Input file not found$' ; ;====> READ IN THE NAMES ; READN LXI H,BUFF ;TO FIRST NAME ; READNL CALL READL ;READ ONE LINE RC ;GOT EOF, RETURN CALL CHAIN ;CHAIN THINGS TOGETHER JMP READNL ; ;====> READ ONE LINE ; READL SHLD CURR ;SAVE CURR LINE PTR XRA A ;GET 0 MOV M,A ;INIT FORWARD INX H ; POINTER MOV M,A ; TO INX H ; 0 LXI D,SKIPC ;TO CK SKIP CHARS PRESENT ; READLLP LDA BDOS+2 ;ARE WE DCR A ; OVER- CMP H ; FLOW- JZ OFLO ; ING? RDB EXTFCB ;READ A BYTE CPI EOF ;SET CARRY STC ; AND RETURN RZ ; IF EOF MOV M,A ;STORE CHAR ;TEST FOR SKIP CHAR FOUND MOV B,A ;SAVE FOR COMPARE LDAX D ORA A ;NO MORE SKIP CHARS? JZ READLNS ;NO MORE CMP B ;A SKIP CHAR? JNZ READLNS ;NO, KEEP TRYIN. INX D ;TO NEXT SKIP CHAR ; READLNS INX H ;POINT TO NEXT MOV A,B ;GET CHAR CPI CR ;END OF LINE? JNZ READLLP ; NO, LOOP. RDB EXTFCB ;GOBBLE UP LF LDAX D ;GET SKIP CHAR END ORA A ;TEST IT AND SET "NO EOF" RZ ;ERROR - NO SKIP CHAR LHLD CURR INX H ;SKIP INX H ; POINTER ; ERPLP MOV E,M CPM WRCON MOV A,M INX H CPI CR JNZ ERPLP CALL ERXIT DB LF,'++NO SKIP CHAR FOUND++$' ; OFLO CALL ERXIT DB '++File won''t fit in memory$' ; ;====> CHAIN RECORDS TOGETHER ; CHAIN PUSH H ;SAVE POINTER LHLD CURR ;GET CURRENT XCHG ; TO DE LHLD PREV ;PREV TO HL MOV M,E ;MOVE CURR INX H ; TO MOV M,D ; PREV XCHG ;THEN MOVE SHLD PREV ; PREV TO CURR POP H RET ; ;====> SORT THE NAMES ; SORTN XRA A ;SHOW NO STA SWAPS ; SWAPS LXI H,PTR ;POINT PREV SHLD PREV ; TO PTR LHLD PTR ;POINT TO FIRST ; ;HANDLE WIERD CASE OF ONLY ONE NAME ; MOV A,M ;GET POINTER INX H ;POINT TO NEXT ORA M ;OR TOGETHER DCX H ;BACK UP RZ ;RETURN IF ONLY ONE ; SORTL CALL CMPR ;COMPARE ENTRIES CC SWAP ;SWAP IF WRONG ORDER CALL NEXT ;POINT TO NEXT JNC SORTL ;LOOP IF MORE LDA SWAPS ;ANY ORA A ; SWAPS? JNZ SORTN ;YES, LOOP RET ;NO, RETURN ; ;----> COMPARE TWO NAMES ; CMPR PUSH H ;SAVE POINTER MOV E,M ;GET NEXT INX H ; POINTER MOV D,M ; TO DE INX D ;ALIGN POINTERS ; ;SKIP IF NECESS ; LXI B,SKIPC ; TSTSKIP LDAX B ORA A JZ COMPL ;NO SKIP INX B ; SKIP1 INX H CMP M JNZ SKIP1 XCHG ;SWAP ; SKIP2 INX H CMP M JNZ SKIP2 XCHG ;PUT THINGS BACK JMP TSTSKIP ; COMPL INX D ;TO NEXT INX H ;TO NEXT LDAX D ;GET ONE CMP M ;COMPARE JNZ COMPNE ;NO COMPARE CPI CR ;END? JNZ COMPL ; NO, LOOP ; COMPH POP H ;RESTORE POINTER RET ;THEY ARE EQUAL ; ;COMPARE NOT EQUAL - SEE IF END OF ELEMENT, ;AND IF SO, CALL THEM EQUAL ; COMPNE MOV A,M CPI CR JZ COMPH LDAX D CMP M JMP COMPH ;CARRY SET AS APPROP ; ;----> SWAP ENTRIES ; ;LOGIC: PTR points to some entry, which points ;to another entry. They are not in order. Thus: ;point PTR to the second, point the second to ;the first, and point the first to what the ;second USED to point to. ; SWAP MVI A,1 STA SWAPS ;SHOW WE SWAPPED ;BC=NEXT MOV C,M INX H MOV B,M DCX H ;CHAIN CURRENT TO NEXT ONES CHAIN LDAX B MOV M,A INX B INX H LDAX B MOV M,A DCX B DCX H ;SAVE CURRENT POINTER IN DE XCHG ;GET POINTER TO PREV LHLD PREV ;POINT PREV TO NEXT MOV M,C INX H MOV M,B ;STORE CURR IN NEXT MOV A,E STAX B INX B MOV A,D STAX B DCX B ;RESTORE CURRENT POINTER XCHG RET ;CURRENT POINTER IN DE ; ;----> GET NEXT ENTRY, CARRY IF NOT 2 MORE ; NEXT SHLD PREV ;SAVE POINTER MOV E,M INX H MOV D,M XCHG ;HL= NEXT MOV A,H ;CARRY ON ORA L ; IF HL STC ; = RZ ; 0 MOV A,M ;GET INX H ;SEE IF THERE ORA M ; IS DCX H ; ANOTHER RNZ ;THERE IS ANOTHER STC ;SHOW NOT 2 TO SWAP RET ; ;====> WRITE THE NAMES ; WRITEN LXI H,0 ;INIT SHLD EXTFCB+2 ; EFCB XRA A ;INIT STA FCBEXT ; THE STA FCBRNO ; FCB MOVE OUTNAME,FCB,12 ;RESTORE NAME CPM ERASE,FCB CPM MAKE,FCB INR A ;MAKE OK? JZ BADOUT ; NO, ERROR LHLD PTR ;GET FIRST ; WNLP CALL WRITEL ;WRITE ONE LINE JNC WNLP ;LOOP IF MORE MVI A,EOF ;WRITE EOF WRB EXTFCB ; CHAR LXI H,EXTFCB ;FLUSH CALL FLUSH ; BUFFERS CPM STDMA,80H ;RESET DMA CPM CLOSE,FCB ;CLOSE, CALL ERXIT ; AND EXIT DB '++DONE++$' ; WRITEL PUSH H ;SAVE POINTER INX H ; WRLP INX H ;TO NEXT CHAR MOV A,M ;GET CHAR WRB EXTFCB ;WRITE IT MOV A,M ;SEE IF END CPI CR ; OF LINE JNZ WRLP ;NO, LOOP MVI A,LF ;OTHERWISE WRB EXTFCB ; WRITE LF POP H ;GET POINTER MOV E,M ;GET INX H ; FORWARD MOV D,M ; POINTER XCHG ;PUT IT IN HL MOV A,H ;IS POINTER ORA L ; ZERO? RNZ ;NO, RETURN STC ;CARRY SHOWS END RET ; BADOUT CALL ERXIT DB '++Can''t make output file$' ; ;FOLLOWING FROM 'EQU10.LIB'----> ; ;MOVE, COMPARE SUBROUTINES ; IF MF ;MACRO EXPANSION FLAG SET? MOVER MOV A,M STAX D INX H INX D DCX B MOV A,B ORA C JNZ MOVER RET ENDIF ; IF CF ;MACRO EXPANSION FLAG SET? COMPR LDAX D CMP M RNZ INX D INX H DCX B MOV A,B ORA C JNZ COMPR RET ENDIF ; ; FROM EQU10.LIB: AS OF 07/19/80 ; ;RDBYTE, HL POINTS TO EXTENDED FCB: ; ; 2 BYTE BUFFER ADDR ; 2 BYTE "BYTES LEFT" (INIT TO 0) ; 1 BYTE BUFFER SIZE (IN PAGES) ; 2 BYTE FCB ADDRESS ; RDBYTE MOV E,M INX H MOV D,M ;GET BUFFER ADDR INX H MOV C,M INX H MOV B,M ;BC = BYTES LEFT MOV A,B ;GET COUNT ORA C JNZ RDBNORD ;NO READ ; INX H ;TO BUFFER SIZE MOV A,M ;GET COUNT ADD A ;MULTIPLY BY 2 MOV B,A ;SECTOR COUNT IN B INX H ;TO FCB PUSH H ;SAVE FCB POINTER MOV A,M ;GET.. INX H ;..FCB.. MOV H,M ;..ADDR.. MOV L,A ;..TO HL ; RDBLP MVI A,1AH ;GET EOF CHAR STAX D ;SAVE IN CASE EOF PUSH D ;SAVE DMA ADDR PUSH H ;SAVE FCB ADDR CPM STDMA ;SET DMA ADDR POP D ;GET FCB CPM READ ORA A POP H ;HL=DMA, DE=FCB JNZ RDBRET ;GOT EOF MOV A,L ADI 80H ;TO NEXT BUFF MOV L,A MOV A,H ACI 0 MOV H,A XCHG ;DMA TO DE, FCB TO HL DCR B ;MORE SECTORS? JNZ RDBLP ;YES, MORE ; RDBRET POP H ;GET FCB POINTER DCX H ;TO LENGTH MOV A,M ;GET LENGTH DCX H ;TO COUNT MOV M,A ;SET PAGE COUNT DCX H ;TO LO COUNT DCX H ;TO HI FCB DCX H ;TO EFCB START JMP RDBYTE ;LOOP THRU AGAIN ; RDBNORD INX H ;TO LENGTH MOV A,M ;GET LENGTH (PAGES) XCHG ;BUFF TO HL ADD H MOV H,A ;HL = END OF BUFF MOV A,L SUB C MOV L,A MOV A,H SBB B MOV H,A ;HL = DATA POINTER MOV A,M ;GET BYTE XCHG ;EFCB BACK TO HL CPI 1AH ;EOF? RZ ;YES, LEAVE POINTERS DCX B ;DECR COUNT DCX H ;BACK TO "BYTES LEFT" MOV M,B DCX H MOV M,C ;STORE BACK COUNT RET ; ;SAMPLE EFCB: ; ;EFCB DW BUFF ;BUFFER ADDR ; DW 0 ;BYTES LEFT (OR TO WRITE) ; DB 20 ;BUFFER SIZE (IN PAGES) ; DW FCB ;FCB ADDRESS ; ; ;WRBYTE, HL POINTS TO EXTENDED FCB: ; ; 2 BYTE BUFFER ADDR ; 2 BYTE "BYTES LEFT" (INIT TO 0) ; 1 BYTE BUFFER SIZE (IN PAGES) ; 2 BYTE FCB ADDRESS ; WRBYTE MOV E,M INX H MOV D,M ;DE=BUF ADDR INX H MOV C,M INX H MOV B,M ;BC=BYTES IN BUFF PUSH D ;SAVE FCB XCHG DAD B ;TO NEXT BYTE MOV M,A ;STORE IT INX B ;ONE MORE XCHG POP D ; ;SEE IF BUFFER IS FULL ; INX H ;GET MOV A,M ; SIZE CMP B ;FULL? JNZ WRBNOWR ;NO WRITE ; ADD A ;MULTIPLY BY 2 MOV B,A ;SECTOR COUNT IN B INX H ;TO FCB PUSH H ;SAVE FCB POINTER MOV A,M ;GET.. INX H ;..FCB.. MOV H,M ;..ADDR.. MOV L,A ;..TO HL ; WRBLP PUSH D ;SAVE DMA ADDR PUSH H ;SAVE FCB ADDR CPM STDMA ;SET DMA ADDR POP D ;GET FCB CPM WRITE ORA A POP H ;HL=DMA, DE=FCB JNZ WRBERR ;GOT ERR MOV A,L ADI 80H ;TO NEXT BUFF MOV L,A MOV A,H ACI 0 MOV H,A XCHG ;DMA TO DE, FCB TO HL DCR B ;MORE SECTORS? JNZ WRBLP ;YES, MORE ; WRBRET POP H ;GET FCB POINTER DCX H ;TO LENGTH DCX H ;TO COUNT MVI M,0 ;SET 0 TO WRITE DCX H ;TO LO COUNT MVI M,0 CPM STDMA,80H RET ; WRBNOWR DCX H ;TO LENGTH MOV M,B ;SET NEW LENGTH DCX H MOV M,C RET ; ;FLUSH THE EFCB BUFFERS ; FLUSH MOV E,M INX H MOV D,M ;DE=BUF ADDR INX H MOV C,M INX H MOV B,M ;BC=BYTES IN BUFF INX H ;TO COUNT MOV A,B ORA C RZ ;NOTHING TO WRITE MOV A,C ;GET LOW COUNT ADD A ;SHIFT HIGH TO CARRY MOV A,B ;GET LOW COUNTAL RAL ;MULT BY 2, + CARRY INR A ;FUDGE FOR PARTIAL SECT MOV B,A ;SAVE SECTOR COUNT INX H ;TO FCB MOV A,M INX H MOV H,M MOV L,A ;HL=FCB ; FLUSHL CPM STDMA XCHG CPM WRITE XCHG ORA A JNZ WRBERR PUSH H LXI H,80H DAD D XCHG POP H DCR B JNZ FLUSHL XCHG CPM CLOSE INR A RNZ CALL ERXIT DB '++OUTPUT FILE CLOSE ERROR ++$' ; WRBERR CALL ERXIT DB '++OUTPUT FILE WRITE ERROR++$' ; ;EXIT WITH ERROR MESSAGE ; MSGEXIT EQU $ ;EXIT W/"INFORMATIONAL" MSG ; ERXIT POP D ;GET MSG MVI C,PRINT CALL BDOS ; ;EXIT, RESTORING STACK AND RETURN ; EXIT JMP 0 ; ;====> START OF WORK AREA ; EXTFCB EFCB DKBUF,4,FCB PREV DW PTR ;POINTER TO PREV POINTER SKIPC DB 0 ;SKIP CHARS END DS 8 ;VARIABLE SKIP CHARS ; DS 100 ;STACK AREA STACK EQU $ ; OUTNAME DS 12 ;OUTPUT FILENAME SWAPS DS 1 CURR DS 2 PTR DS 2 ;POINTER TO FIRST NAME ORG ($+255) AND 0FF00H ;TO PAGE DKBUF DS 256*4 ;4 PAGES OF BUFFER BUFF EQU $ ;NAMES READ IN HERE ; ;BDOS/CBIOS EQUATES (VERSION 10) ; RDCON EQU 1 WRCON EQU 2 PRINT EQU 9 RDCONBF EQU 10 CONST EQU 11 OPEN EQU 15 CLOSE EQU 16 SRCHF EQU 17 SRCHN EQU 18 ERASE EQU 19 READ EQU 20 WRITE EQU 21 MAKE EQU 22 REN EQU 23 STDMA EQU 26 BDOS EQU 5 FCB EQU 5CH FCB2 EQU 6CH FCBEXT EQU FCB+12 FCBRNO EQU FCB+32 ; END INR A RNZ CALL ERXIT DB '++OUTPUT FILE CLOSE ERROR ++$' ; WRBERR CALL ERXIT DB '++OUTPUT FILE WRITE ERROR++$' ; ;EXIT WITH ERROR MESSAGE ; MSGEXIT EQU $ ;EXIT W/"INFORMATIONAL" MSG ; ERXIT POP D ;GET MSG MVI C,PRINT CALL BDOS ; ;EXIT, RESTORING STACK AND RETURN ; EXIT JMP 0 ; ;====> START OF WORK AREA ; EXTFCB EFCB DKBUF,4,FCB PREV DW PTR ;POINTER TO PREV POINTER SKIPC DB 0 ;SKIP CHARS END DS 8 ;VARIABLE SKIP CHARS ; DS 100 ;STACK AREA STACK EQU $ ; OUTNAME DS 12 ;OUTPU*ùà ÃÍb͸Ã{8¸ú6\pÃwÃ{ÖÃàÃÅüÃHÃÃ!ÃKÃ]ÃjÃUø Í2͵ Ãá^#V#å*~#foÉá^#å*~#foÉá^#V#å*nÉá^#å*nÉá^#V#åë ~#foÉá^#åë& ~#foÉ!È+É!È#É!Ø+É!Ø#É!ð+É!ø+ÉÈÉÈÉØÉØÉðÉøÉ}»À|ºÉëz¼À{½Éë|ºÀ}»Éë|ªòìz·ð7Éë|ªòó|·ð7ÉzõÍZëÍZëÍ)ñ·ð|/g}/o#É|µÈÕå͉ÑÍk|/g}/o#Ñɯ2hÍZëÍZÍk:hÐ|/g}/o#É|·ð/g}/o#:h<2hÉÅÍqÁÉDM!x±ÈxGyOÒƒë)ëÃv|µÈÅÍ”`iÁÉ|·ú )ÖëxõÍÝÚ·Õz/W{/_ѯzW{_ñ=ÈõyOxGæ¯2hÍZëÍZë͉ÃM|ºØÀ}»Éëȯ|g}oÃæëÈ)Ãô|/g}/o#Éz/W{/_É!9~#foÉ!à !à ! à ! à !à !à P!9Å~#ÂAÁÉ!9"w*Ì÷ùÃ*wùÉá"j!zå*"d!è"f!ÜY"H>Û2^>Ó2a>É2`2cÍ>¯2s2t>2r>2v!Ì"@!"D!@"B!"F Í·ÊÉÍ!€ùF#x·ÂÜÃ:~#Âܯ!ù|¯2i~#þ Êó·Ê:þ" 2ià +}|~#·Ê:ÅG:i·xÁÊ.þ"¯2i+w#þ Â+6#ÃóÕ!Þ6#Â@ÍA¯2n2?*jé*ë*Íú|µÈ+¯Ã`É"d!è"f!!ÿÿÉ>õÍÅÚŒo&åÍ–áñ=þÂ}à Í ÍÅÚw~Í2æʸåÍÅͼëÍÁáÍ56þÿ!À+ÉWÖØþ ?ØÕ_!Þ~æ7ÑzÈ?ÉÅͧåþ:>Â÷ÍžÖ@w#ÍÍ5þ.Âͯww#w#w#wÑÁÉÅþ*>?Ê@ÍŒÚ>w#ÂÁÍŒØÃ5> w#Â@ÁÉÅåͧ͵ÒgÕ ÿÍÑ2qáÁÃ&ÕÖ0Ox‡‡‡€€�G͵Òjþ/ʆÑÃSáxÃ\Ížþ.7Èþ:7Èþ7Èþ!ÉþaØþ{ÐÖ Éþ ʨþ ʨÉþ0Øþ:?ÉÅ·OÂæ Þ!šæyÂÕÁÉÕ$Ñ ÂÌ7ÁÉÍÅÚãÖo&))T])))ë!šyÁÉÅåÕõ ÿÍ2pñõæ_ ÍñÑáÁÉÅåÕõ:pà K LdL      dMM         $  @OdOOP$$R@%maiî(miî)gtexô1putó2endexô3topofmeí4optionó5usagå6fopeî7exiô8fputó9Å!òÿ9ùDM! åÍP&ÑÍ3"ZpÍ3åÍ3ÑÍú þ"ôo88! s#r! ~#foå! åÍï ÑÑ! ~#fo+++|µÊ !$ åÍ+Ñ?<`is#r`i~#foå! ~#fo##~#foåÍ|&ÑÑ#|µÂb !% åÍP&Ñ! ~#fo##~#foåÍP&Ñ!ÿÿåÍ3Ñ!å!1 åÍËÑÑ! ¯w#w`i~#foåÍfÑë! s#r*ðoåÍ¡Ñ! ^#Vr+s! ~#foå! ~#foåÍJÑÑ! ~#foåÍ÷Ñ! ~#foåÍkÑ! ~#fo|µÂw `i~#foåÍÆ&Ñ!å!R åÍËÑÑ! 6#6! ~#foå! ~#foÑÍìÒÐ ! ~#foå! ~#fo+åÍ)&ÑÑë! s#r! ~#foå! ~#foåÍÑÑ! ^#Vr+s! ~#foå! ~#foåÍJÑÑ! ~#foå! ~#foå! ~#foÑÍú#åÍ;ÑÑ! ~#foåÍkÑ! ~#foå! ~#foåÍ ÑÑ! å~#foëás#rÃü !å!m åÍËÑÑ!8å! ~#foåÍ®ÑÑ88`is#r`i~#foå!8åÍ|&ÑÑ#|µÂ% !“ åÍP&Ñ!8åÍP&Ñ!ÿÿåÍ3Ñ? [-c] [-k] where is: a comma separated list of column numbers or ranges specifing the sort key columns e.g. -k3-5,7-9,1-2,12 specifies that the primary sort key is columns 3 thru 5 the next secondary sort key is columns 7 thru 9 the next secondary sort key is columns 1 thru 2 the last secondary sort key is columns 12 thru end of line. The leftmost column is numbered 1. The default sort key is the entire line. -c selects the n'th collating sequence from the "magic" file %s. Where sequences are numbered from zero. Å!9ùDM!Zp~#foå! ~#foÑåÍ÷*Ñ"Tp!Zp~#foå! ~#foÑåÍ÷*Ñ"Vp!"Lp*Lpå*öoÑÍìÒ•#*Lp)øo~#fo"Np! ~#foå*Tpå*NpåÍ)&ÑÑÑ"Hp! ~#foå*Vpå*NpåÍ)&ÑÑÑ"Jp*Lp) p~#fo"Np! ~#foå*Tpå*NpåÍ)&ÑÑÑ"Pp! ~#foå*Vpå*NpåÍ)&ÑÑÑ"Rp!Zp~#foå*HpÑn&åÍ%Ñ}2Xp}þÿ‹"*Hp#"Hpå*PpÑÍóÒˆ"Ë"ÃT"!Zp~#foå*JpÑn&åÍ%Ñ}2Yp}þÿÂÂ"*Jp#"Jpå*RpÑÍóÒ¿"ÃÂ"Ë"*Hpå*PpÑÍóÒã"*Jpå*RpÑÍóÚã"!ÿÿÁÉ*Jpå*RpÑÍóÒ#*Hpå*PpÑÍóÚ#!ÁÉ*Hpå*PpÑÍóÒ##*Jpå*RpÑÍóÒ##Ë#*Xpå*YpÑ}»Êz#*Xp}þÿÂ>#>2Xp*Yp}þÿÂL#>2Yp*Xpå*YpÑ}»Â^#!ÁÉ*Xpå*YpѯgWÍúÒu#!ÿÿÃx#!ÁÉ*Hp#"Hp*Jp#"JpÃT"*Lp#"Lpü!*Xp}þÿ£#>2Xp*Yp}þÿ±#>2Yp*Xpå*YpÑ}»ÂÃ#!ÁÉ*Xpå*YpѯgWÍúÒÚ#!ÿÿÃÝ#!ÁÉÁÉÅ!üÿ9ùDM!åÍÿ$å͇3ÑÑë! s#rzÒ$Íÿ$å!´$å!åÍÞ+ÑÑÑÍ3!å! ~#fo)å! ~#foåÍï3ÑÑÑ|ÒO$Íÿ$å!È$å!åÍÞ+ÑÑÑÍ3!%ë`is#r`iå~#foëás#r!å`i~#foå! ~#foåÍ:4ÑÑÑ++|µÊž$Íÿ$å!å$å!åÍÞ+ÑÑÑÍ3! ~#foåÍI3Ñë!9ùëÁÉCan't find file %s Error in seeking on file %s Error in reading file %s Å!%ÁÉÁÉSSORT.OVLxxxxxxxxxÑáåÕ)%&n&Éÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿ !#%')+-/13579;=?ÿÿÿÿÿÿ "$&(*,.02468:<>@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ!9ùDMÍ�åÍ�ÑÍÚH&Í�ÃL&Í�ÁÉÁÉÅ!9ùDMÍ�n}·Êz&! ^#Vr+sën&åÍã4ÑÃX&ÁÉÅ!9ùDMÍ�å!åÍ�å͇3ÑÑëás#rzÒ¦&!ÿÿÁÉÍ�##¯w#wÍ�6Í�~#foÁÉÁÉÅ!9ùDMÍ�üÿÚÞ&!ÁÉÍ�åÍ™)ÑÍ�~#foåÍ5ÑÁÉÁÉÅ!9ùDMÍ�åÍ�åÍ5Ñëás#rzÒ'!ÿÿÁÉÍ�åÍ�ëás#rÍ�##6#6Í�6Í�~#foÁÉÁÉÅ!9ùDM! n&åÍ8-Ñ|µÊ{'! n& Â'! n&&ÁÉÁÉÅ!ûÿ9ùDM`i¯w#w! 6#6Í� në! s{þ Ê»'! n}þ ÂÉ'! ^#Vr+sß'! n}þ-Âè'! 6ÿ#6ÿ! ^#Vr+s! ^#Vr+sënë! sÕÍB(Ñ|µÊ)(Í� Í?å! nѯgÐÿë`is#rÃè'Í�åÍ�ÑÍ?Ã9(ë!9ùëÁÉÅ!9ùDM! n&Ðÿ|ͯÚm(! n&Æÿ|Í©ÁÉÁÉÅ!9ùDMÍ�ûÿÚ)Í�>½Â”(>¼Ê»(>½Â (>¼ÊÉ(>½Â¬(>¼ÊÜ(>½Â¸(>¼Êï(Ã)! n&åÍã4ÑÁÉ! n&å!åÍN5ÑÑÁÉ! n&å!åÍN5ÑÑÁÉ! n}þ Â)! å!åÍN5ÑÑ! n&å!åÍN5ÑÑÁÉÍ�##^#Vr+së|µÂy)!åÍ�åÍ�~#foåÍ_5ÑÑÑøÿ|µÊX)!ÿÿÁÉÍ�##6ÿ#6Í�åÍ�ëás#rÍ�^#Vr+sÕ! nëásë&ÁÉÁÉÅ!þÿ9ùDMÍ�üÿÚ²)!Ãî*Í�n&|¢g}£o|µÂÑ)!Ãî*Í�##~#foü|µÂê)!Ãî*Í�##~#fo€ëÍËÍúë`is#rÍ�åÍ�åÍ�~#foåÍ_5ÑÑÑåÍ�ÑÍåÊ7*!ÿÿÃî*Í�+€Í?ë`is#rÍ�##~#fo|µÊÇ*!€åÍ�åÍ�åÍ�ÑåÍ6ÑÑÑÍ�##å~#foåÍ�Ñëás#rÍ�å~#foåÍ�ÑÍúëás#r!å!ÿÿåÍ�~#foåÍï3ÑÑÑÃî*Í�##6#6Í�åÍ�ëás#r!Ãî*ë!9ùëÁÉÅ!þÿ9ùDM`i¯w#w! ^#Vr+sën}·Ê$+`i^#Vr+sÃ+Í�Ã++ë!9ùëÁÉÅ!þÿ9ùDMÍ�ë`is#r! ^#Vr+sÕ! ^#Vr+sënëás{·Êl+ÃF+Í�Ãs+ë!9ùëÁÉÅ!þÿ9ùDMÍ�ë`is#rÍ�n}·Ê¦+! ^#Vr+sÃŽ+! ^#Vr+sÕÍ�nëás! ^#Vr+sën}·Â¦+Í�ÃÕ+ë!9ùëÁÉÅ!9ùDMÍ�å!g-å! åͶ-ÑÑÑÁÉÁÉÅ!þÿ9ùDMÍ�|µÂ,Íd6ÃÁ,Í�+++|µÂ,,!åÍN5ÑÃÁ,Í�##^#Vr+së|µÂª,!åÍ�åÍ�~#foåÍ:4ÑÑÑë`is#r!ÿÿ|Ò},Í�##^#Vr+sëÃÁ,Í�##åÍ�€Í?+ëás#rÍ�åÍ�ëás#rÍ�^#Vr+sën&ÃÁ,ë!9ùëÁÉÅ!9ùDMÍ�|µÂé,! n&åÍ™6ÑÁÉÍ�ùÿÒ-Í�##~#foü|µÂ -!ÿÿÁÉÍ�^#Vr+sÕ! nëásÍ�##^#Vr+s!ÁÉÁÉÅ!9ùDM! n&¿ÿ|ͯÚc-! n&¥ÿ|Í©ÁÉÁÉÅ!9ùDMÍ�öÿ|µÂ•-Í�å! åÍq(ÑÑ#|µÂ•-!ÿÿÁÉÍ�åÍ�åÍq(ÑÑ#|µÂ¯-!ÿÿÁÉ!ÁÉÁÉÅ!Yÿ9ùDM!« ^#Vr+së~#foë! s#rÍ�«ë!¥ s#r! ^#Vr+sënë`is{·Ê‘1`in}þ%Âb1! ë!œ s#r!£ 6#6!  s!ž s!Ÿ sÍ�n}þ-ÂF.! ^#Vr+s!Ÿ 4Í�n}þ0ÂV.!  4Í�n&åÍB(Ñ}·Ês.! åÍB2ÑÃv.!ë!¡ s#r! ^#Vr+sënë`is{þ.¾.! åÍB2Ñë!£ s#r!ž 4! ^#Vr+sënë`is`in&åÍŸ2Ñ}þDÊï.þUÊ+/þXÊ4/þOÊ=/þCʃ/þSÊ´/þÊ-1Ã31Í�¥~#fo|Ò+/!œ ^#Vr+së6-Í�¥åÍ�¥~#foÍúëás#r!¡ ^#Vr+s! 6 ÃC/! 6ÃC/! 6!¡ å~#foå! n&å!¥ ^#Vr+së~#foå!œ åÍ 1ÑÑÑѯgÍúëás#rÃ,0!œ ^#Vr+sÕ!¥ ^#Vr+së~#foëás!¡ ^#Vr+sÃ,0!ž n}·ÂÇ/!£ 6È#6!¥ ^#Vr+së~#foë! s#rÍ�n}·Ê,0Í�£|µÊ,0!œ ^#Vr+sÕ! ^#Vr+sënëás!£ ^#Vr+s!¡ ^#Vr+sÃâ/Í�œ6! ë!œ s#r!Ÿ n}·Âš0!¡ ^#Vr+s!ÿÿ|Úš0Í�­åÍ�¯å!  n}·Êw0!0Ãz0! å!ˆ0å!9~#foéÑÑÑ#|µÂ—0!ÿÿ×1ÃH0Í�œn}·ÊÞ0Í�­åÍ�¯å!œ ^#Vr+sën&å!Ì0å!9~#foéÑÑÑ#|µÂÛ0!ÿÿ×1Ú0!Ÿ n}·Ê*1!¡ ^#Vr+s!ÿÿ|Ú*1Í�­åÍ�¯å! å!1å!9~#foéÑÑÑ#|µÂ'1!ÿÿ×1Ãè0Ã_1!×1Í�­åÍ�¯å`in&å!P1å!9~#foéÑÑÑ#|µÂ_1!ÿÿ×1ÃŽ1Í�­åÍ�¯å`in&å!1å!9~#foéÑÑÑ#|µÂŽ1!ÿÿ×1Ãå-!×1ë!§9ùëÁÉÅ!ÿÿ9ùDMÍ�åÍ� ÑÍìÒî1Í�^#Vr+sÕÍ�öÿÚÛ1Í�0Ãã1Í�7ëás!&Ã92Í� åÍ�åÍ� Ñ͉åÍ�åÍ 1ÑÑÑë`isÍ� åÍ�åÍ� ÑÍ)åÍ�åÍ 1ÑÑÑ`in&#&Ã92ë!9ùëÁÉÅ!þÿ9ùDM`i¯w#wÍ�~#fon&åÍB(Ñ}·Ê�2Í� Í?åÍ�^#Vr+sënѯgÐÿë`is#rÃP2Í�Ö2ë!9ùëÁÉÅ!9ùDM! n&åÍÓ2Ñ|µÊÆ2! n&àÿÃÍ2! n&&ÁÉÁÉÅ!9ùDM! n&Ÿÿ|ͯÚþ2! n&…ÿ|Í©ÁÉÁÉ*É*:þÃ+ÀÌ÷Éà Í Ååå!jÿ9å6ˆ ëÍ Íá#F#Ñx·ÊD3~#Ã73¯áÁÉÍ Í)ÒZ3>2?Ã6!ÉÍ Åë!\Í/:qÍ2ÍÍ5!ÁþÿÀ> 2?+ÉÍ7¯Í,Ò–3> Ã2hë*PëÅÍ/:qÍ2ÍþÿÁ> Êæ3:hÍ):R·ÊÒ3=ÊÒ3=> Âæ3:q‚w#¯w#w:ho&Í5ÉÍ52?ÃÍ7Å:PÍ,>Ò42?ÁÃå!^#V*R:T·Ê.4=Â4Ã.4*PÕåͨ6ÑÑë*Rã!Ñs#rëÁÉÍ7:PÍ)V>ÚÝ4zæ>ÊÝ4ÅzÍ2:PÍ,"j!"l*T|µ*lÂu4Í5ÁÉ*RëÍ*jë!ÕÍѷʦ42?þÊ 4þÊ 4!ÿÿÃp4*lÃp4*T+"T*R€"R*l#"l*j! N#Fp+qx±Âe4##6>2?Ãj42?ÃÍ Åþ Â÷4 Í> _Í Í·Â5ÁÉÍþÊ ÁÉÃ#Í7*PÅåÍ`3Ñ:qÍ2\ÍÍ5þÿÁÂ@5> 2?Ã!å*På͇3ÑÑÉÍ7Å:PO*RëÍÁÉÍ7:PÍ)"XV>Ú 6zæ> Ê 6ÅzÍ2:PÍ,"j!"l*T|µÂ»5*j!^#VÕ*X#^#VãëÍÝáÒ³5r+s*lÍ5ÁÉ*RåëÍá€"R*jë"Í*l·Êã52?ö5#"l*T+"T*j! N#Fp+qx±Â�5##6>2?ó52?ÃÍ7*T|µÈÅDM*Rë*PÍÝÚB6><ê66í°ÁÉ~# x±Â66ÁÉ ë ë><êR6í¸ÁÉ~+ x±ÂR6ÁÉ|ºÀ}»É:n·oÊs6¯2n&ÉÅÍÁþÊ þ!ÿÿÈoþ –6Å ÍÁ. &É:noåÍ2ná&ÉÍ Í,Ò¹6>2?ÃÅåÍÍ)~Í2#"jÑ!!å~#foå#ÍÁá^#Vp+q*jå~#foÍÝÒô6ãs#rëÑÍ5ÁÉ÷÷÷÷÷÷ÁÉ*É*:þÃ+ÀÌ÷Éà Í Ååå!jÿ9å6ˆ ëÍ Íá#F#Ñx·ÊD3~#Ã73¯áÁÉÍ Í)ÒZ3>2?Ã6!ÉÍ Åë!\Í/:qÍ2ÍÍ5!ÁþÿÀ> 2?+ÉÍ7¯Í,Ò–3> Ã2hë*PëÅÍ/:qÍ2ÍþÿÁ> Êæ3:hÍ):R·ÊÒ3=ÊÒ3=> Âæ3:q‚w#¯w#w:ho&Í5ÉÍ52?ÃÍ7Å:PÍ,>Ò42?ÁÃå!^#V*R:T·Ê.4=Â4Ã.4*PÕåͨ6ÑÑë*Rã!Ñs#rëÁÉÍ7:PÍ)V>ÚÝ4zæ>ÊÝ4ÅzÍ2:PÍ,"j!"l*T|µ*lÂu4Í5ÁÉ*RëÍ*jë!ÕÍѷʦ42?þÊ 4þÊ 4!ÿÿÃp4*lÃp4*T+"T*R€"R*l#"l*j! N#Fp+qx±Âe4##6>2?Ãj42?ÃÍ Åþ Â÷4 Í> _Í ÍSSORT.DOC SSORT is a merge sort utility. That is, the limitations on the size of the file to be sorted is one of disk space rather than memory space. As configured, it allows up to 20 (recompile for more) sort keys to be specified. SSORT has one built-in sort precedence order and has a command line option for overlaying an arbitrary number of others (one at a time) from a file called "SSORT.OVL". This is useful, for instance, to select a descending sort. This file (SSORT.DOC) contains information to patch the SSORT system to install your favorite collating sequences. The ones supplied are: Lexicographical, Reverse Lexicographical, ASCII, Reverse ASCII. As configured, the built-in collating sequence in SSORT treats all punctuation and non-printing characters as non-existent (not even consuming a column). This means that A!@#$%^&*()B will sort adjacent to AB, for example. It also treats 'A' and 'a' as distinct but adjacent. That is, a lexicographcal sort. This is not REALLY lexicographical on a string basis. To get that, 'A' and 'a' should have exactly the same sort percedence, but that would mean that several occurrences of the same string whose only difference was case would sort to a scrambled order within the equivalent strings, for instance. AAAAA aaaaa aaaaa AAAAA AAAAA aaaaa The drawback to the implemented version is that: SSORT.C SSORT.CSM ssort.c is the results for the example data, since 's' is above 'S' in the collating sequence. What is really wanted is "case blindness" on a string (not a character) basis, but I haven't figured out how to do that yet. Nor have I missed it much. The rules for the precedence orders for characters are contained in a table in the lexlate() function which is in LEXLATE.CSM. The file called SSORT.OVL may contain an arbitrary number of collating sequences (actually only as many as 16384), any one of which may be overlayed at execution time by using the "-c" option (see below). As configured, -c0 is reverse lecicographical, -c1 is ASCII, -c2 is reverse ASCII. Usage: ssort [-c] [-k] where -c indicates: Use the 'th collating sequence in SSORT.OVL. where is: A comma separated list of column numbers or ranges specifing the sort key positions. e.g. ssort messy.dat neat.dat -c3 -k3-5,7-9,1-2,12 specifies that: 1) The input file is MESSY.DAT. 2) The output file is NEAT.DAT. 3) The collating sequence to be used is number 3 in SSORT.OVL note that the first sequence in SSORT.OVL is number 0. 4) The primary sort key is columns 3 thru 5. 5) The first secondary sort key is columns 7 thru 9. 6) The next secondary sort key is columns 1 thru 2. 7) The last secondary sort key is columns 12 thru end of line. A sort key of 1 column may be specified as 3-3 for example. A sort key which goes to end of line need NOT be the last one. The leftmost column is numbered 1. The default sort key is the entire line. Files in SSORT.LBR SSORT.DQC - This file in squeezed format 'SSORT.SH - MicroShell batch file to build SSORT.COM (similar to SUBMIT) If you have MicroShell, I probably don't have to tell you not to use it, since ASM gets confused when run from a shell file. Just treat it as build instructions. SSORT.CQ - BDS C source for lexsort in a squeezed format LEXLATE.CQM - BDS C '.CSM' (assembly language) file for the sort precedence routine. SSORT.OBJ - SSORT.COM renamed so you can't execute on a RBBS SSORT.SYM - The symbol table from the L2 linker for LEXSORT.COM SSORT.OVL - A file of collating sequences (mentioned above) SORTORDR.AQM - ASM assembly language file (in squeezed format) to generate a customized SSORT.OVL instructions for use are contained within it. PATCH DATA: 1) For those users would a different "built-in" precedence order but do not have BDS C, the combination of LEXLATE.CSM and LEXSORT.SYM show where the table ends up in memory and hence in LEXSORT.COM. This is the address of LEXLATE + 0EH. As configured, the magic address is (251b + 000e = 2529). The rules are that this is a 256 byte table corresponding to the 256 ASCII codes. A code of 255 is used to indicate that the character should be ignored entirely. Any other value is the sort precedence for the corresponding ASCII character. Make sure that 0 translates to itself so that C will be able to recognize end of string. 2) If you wish to change the name SSORT.OVL, it is located at (24ff + 8 = 2507). This is the address of the function collate_name() + 8, see entry COLLATE_ in file SSORT.SYM (in case someone has re-compiled SSORT since I worte this documentation file. This address may be patched to contain a specific drive and/or user reference according to BDS C rules i.e. uu/d:nnnnnnnn.ttt. The file name must be no longer than 19 characters and must be followed by a zero byte to terminate the string. 3) If you wish to delete/re-arrange/add-to the collating sequences in SSORT.OVL, see the instructions in SORTORDR.AQM HISTORY: SSORT.C is a modification to LEXSORT.C. LEXSORT.C is a modification of SORT3.C. SORT3.C is Leor Zolman's translation of Ratfor code, published in "Software Tools", into BDS C. Both LEXSORT and SSORT modifications were done by Harvey Moran. If you have any comments about SSORT (good or bad), I can be reached through the BHEC RBBS (Baltimore Heath Electronic Center Remote Bulletin Board Service). The phone number is (301) 661-2175. This system operates at 300 and 1200 baud, 24 hrs a day, but 6:00-8:00 am Eastern Time is reserved for system maintenance. I am one of the SYSOP's on this system. Harvey Moran 2/26/84 be patched to contain a specific drive and/or user reference according to BDS C rules i.e. uu/d:nnnnnnnn.ttt. The file name must be no longer than 19 characters and must be followed ; LEXLATE.CSM ; Lexical Character order translate ; ******************************************************************* ; Returns a lexical order number of the character argument ; ******************************************************************* ; '\0' translates to itself ; ' ' translates to the lowest lexical order ; ; The Other Ordering is: ; ; 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz ; ; ALL other bytes in the range 0 thru 255 ; translate to a non-existence mark (0xff) ; ; The equivalent C code if statics and static initialization ; were available would be: ; ; char ; lexlate(c) ; char c; ; { ; static char xlate[] = {THE_ORDER_SEQUENCE_256_BYTES}; ; ; return (xlate[c]); ; } ; ; Alternatively, if external initialization were available: ; ; char xlate[] = {THE_ORDER_SEQUENCE_256_BYTES}; ; #define lexlate(c) (xlate[c & 0xff]) ; ; ******************************************************************* ; maclib bds X equ 0ffh ; Non-Existence Mark FUNCTION lexlate pop d ; DE = return address pop h ; HL = argument push h ; argument = HL push d ; return address = DE lxi d,xlate ; DE = &xlate[0] mvi h,0 ; HL = offset into xlate dad d ; hl = &xlate[argument] mov l,m mvi h,0 ; hl = xlate[argument] ret ; xlate: db 0,X,X,X,X,X,X,X ; ^@^A^B^C^D^E^F^G db X,X,X,X,X,X,X,X ; ^H^I^J^K^L^M^N^O db X,X,X,X,X,X,X,X ; ^P^Q^R^S^T^U^V^W db X,X,X,X,X,X,X,X ; ^X^Y^Z^[^\^]^^^_ db 1,X,X,X,X,X,X,X ; "#$%&' db X,X,X,X,X,X,X,X ; ()*+,-./ db 2,3,4,5,6,7,8,9 ; 01234567 db 10,11,X,X,X,X,X,X ; 89:;<=>? ; note: state 12 not used (WAS previously inadvertently assigned to :) db X,13,15,17,19,21,23,25 ; @ABCDEFG db 27,29,31,33,35,37,39,41 ; HIJKLMNO db 43,45,47,49,51,53,55,57 ; PQRSTUVW db 59,61,63,X,X,X,X,X ; XYZ[\]^_ db X,14,16,18,20,22,24,26 ; `abcdefg db 28,30,32,34,36,38,40,42 ; hijklmno db 44,46,48,50,52,54,56,58 ; pqrstuvw db 60,62,64,X,X,X,X,X ; xyz{|}~ ; ; Same Stuff with MSB SET ;  db X,X,X,X,X,X,X,X ; ^@^A^B^C^D^E^F^G db X,X,X,X,X,X,X,X ; ^H^I^J^K^L^M^N^O db X,X,X,X,X,X,X,X ; ^P^Q^R^S^T^U^V^W db X,X,X,X,X,X,X,X ; ^X^Y^Z^[^\^]^^^_ db X,X,X,X,X,X,X,X ; "#$%&' db X,X,X,X,X,X,X,X ; ()*+,-./ db X,X,X,X,X,X,X,X ; 01234567 db X,X,X,X,X,X,X,X ; 89:;<=>? db X,X,X,X,X,X,X,X ; @ABCDEFG db X,X,X,X,X,X,X,X ; HIJKLMNO db X,X,X,X,X,X,X,X ; PQRSTUVW db X,X,X,X,X,X,X,X ; XYZ[\]^_ db X,X,X,X,X,X,X,X ; `abcdefg db X,X,X,X,X,X,X,X ; hijklmno db X,X,X,X,X,X,X,X ; pqrstuvw db X,X,X,X,X,X,X,X ; xyz{|}~ endfunc ,X,X ; 89:;<=>? ; note: state 12 not used (WAS previously inadvertently assigned to :) db X,13,15,17,19,21,23,25 ; @ABCDEFG db 27,29,31,33,35,37,39,41 ; HIJKLMNO db 43,45,47,49,51,53,55,57 ; PQRSTUVW db 59,61,63,X,X,X,X,X ; XYZ[\]^_ db X,14,16,18,20,22,24,26 ; `abcdefg db 28,30,32,34,36,38,40,42 ; hijklmno db 44,46,48,50,52,54,56,58 ; pqrstuvw db 60,62,64,X,X,X,X,X ; xyz{|}~ ; ; Same Stuff with MSB SET ;  ; ============================================================ ; File: SORTORDR.ASM - Harvey Moran 2/26/84 ; ============================================================ ; Use the following instructions to generate ; the collating sequence file for SSORT.COM ; ; ASM SORTORDR.ddZ ; LOAD SORTORDR ; REN SSORT.OVL=SORTORDR.COM ; ; ============================================================ ; ============================================================ ; Collating Sequences ; Number Description ; ------ ------------ ; 0 REVerse Lexicographical ; 1 ASCII ; 2 REVerse ASCII ; ============================================================ ; org 100h ; IGNORE equ 255 X equ IGNORE ; synonym ; ; REVerse Lexicographical order collating sequence ; db 0,X,X,X,X,X,X,X ; ^@^A^B^C^D^E^F^G db X,X,X,X,X,X,X,X ; ^H^I^J^K^L^M^N^O db X,X,X,X,X,X,X,X ; ^P^Q^R^S^T^U^V^W db X,X,X,X,X,X,X,X ; ^X^Y^Z^[^\^]^^^_ db 1,X,X,X,X,X,X,X ; "#$%&' db X,X,X,X,X,X,X,X ; ()*+,-./ db 63,62,61,60,59,58,57,56 ; 01234567 db 55,54,X,X,X,X,X,X ; 89:;<=>? db X,53,51,49,47,45,43,41 ; @ABCDEFG db 39,37,35,33,31,29,27,25 ; HIJKLMNO db 23,21,19,17,15,13,11,9 ; PQRSTUVW db 7,5,3,X,X,X,X,X ; XYZ[\]^_ db X,52,50,48,46,44,42,40 ; `abcdefg db 38,36,34,32,30,28,26,24 ; hijklmno db 22,20,18,16,14,12,10,8 ; pqrstuvw db 6,4,2,X,X,X,X,X ; xyz{|}~ ; Msb set byte indices db X,X,X,X,X,X,X,X ; ^@^A^B^C^D^E^F^G db X,X,X,X,X,X,X,X ; ^H^I^J^K^L^M^N^O db X,X,X,X,X,X,X,X ; ^P^Q^R^S^T^U^V^W db X,X,X,X,X,X,X,X ; ^X^Y^Z^[^\^]^^^_ db X,X,X,X,X,X,X,X ; "#$%&' db X,X,X,X,X,X,X,X ; ()*+,-./ db X,X,X,X,X,X,X,X ; 01234567 db X,X,X,X,X,X,X,X ; 89:;<=>? db X,X,X,X,X,X,X,X ; @ABCDEFG db X,X,X,X,X,X,X,X ; HIJKLMNO db X,X,X,X,X,X,X,X ; PQRSTUVW db X,X,X,X,X,X,X,X ; XYZ[\]^_ db X,X,X,X,X,X,X,X ; `abcdefg db X,X,X,X,X,X,X,X ; hijklmno db X,X,X,X,X,X,X,X ; pqrstuvw db X,X,X,X,X,X,X,X ; xyz{|}~ ; ; ; ASCII collating sequence ; db 0 ; 00 ^@ -- DON'T TOUCH -- so C can find end of string db 1 ; 01 ^A db 2 ; 02 ^B db 3 ; 03 ^C db 4 ; 04 ^D db 5 ; 05 ^E db 6 ; 06 ^F db 7 ; 07 ^G db 8 ; 08 ^H db 9 ; 09 ^I (tab) db 10 ; 0A ^J (linefeed) db 11 ; 0B ^K db 12 ; 0C ^L (formfeed) db 13 ; 0D ^M (carriage return) db 14 ; 0E ^N db 15 ; 0F ^O db 16 ; 10 ^P db 17 ; 11 ^Q db 18 ; 12 ^R db 19 ; 13 ^S db 20 ; 14 ^T db 21 ; 15 ^U db 22 ; 16 ^V db 23 ; 17 ^W db 24 ; 18 ^X db 25 ; 19 ^Y db 26 ; 1A ^Z db 27 ; 1B ^[ (ESCape) db 28 ; 1C ^\ db 29 ; 1D ^] db 30 ; 1E ^^ db 31 ; 1F ^_ db 32 ; 20 (space) db 33 ; 21 ! db 34 ; 22 " db 35 ; 23 # db 36 ; 24 $ db 37 ; 25 % db 38 ; 26 & db 39 ; 27 ' (single quote) db 40 ; 28 ( db 41 ; 29 ) db 42 ; 2A * db 43 ; 2B + db 44 ; 2C , (comma) db 45 ; 2D - db 46 ; 2E . db 47 ; 2F / db 48 ; 30 0 db 49 ; 31 1  db 50 ; 32 2 db 51 ; 33 3 db 52 ; 34 4 db 53 ; 35 5 db 54 ; 36 6 db 55 ; 37 7 db 56 ; 38 8 db 57 ; 39 9 db 58 ; 3A : db 59 ; 3B ; db 60 ; 3C < db 61 ; 3D = db 62 ; 3E > db 63 ; 3F ? db 64 ; 40 @ db 65 ; 41 A db 66 ; 42 B db 67 ; 43 C db 68 ; 44 D db 69 ; 45 E db 70 ; 46 F db 71 ; 47 G db 72 ; 48 H db 73 ; 49 I db 74 ; 4A J db 75 ; 4B K db 76 ; 4C L db 77 ; 4D M db 78 ; 4E N db 79 ; 4F O db 80 ; 50 P db 81 ; 51 Q db 82 ; 52 R db 83 ; 53 S db 84 ; 54 T db 85 ; 55 U db 86 ; 56 V db 87 ; 57 W db 88 ; 58 X db 89 ; 59 Y db 90 ; 5A Z db 91 ; 5B [ db 92 ; 5C \ db 93 ; 5D ] db 94 ; 5E ^ db 95 ; 5F _ (underscore) db 96 ; 60 (back quote) db 97 ; 61 a db 98 ; 62 b db 99 ; 63 c db 100 ; 64 d db 101 ; 65 e db 102 ; 66 f db 103 ; 67 g db 104 ; 68 h db 105 ; 69 i db 106 ; 6A j db 107 ; 6B k db 108 ;  6C l db 109 ; 6D m db 110 ; 6E n db 111 ; 6F o db 112 ; 70 p db 113 ; 71 q db 114 ; 72 r db 115 ; 73 s db 116 ; 74 t db 117 ; 75 u db 118 ; 76 v db 119 ; 77 w db 120 ; 78 x db 121 ; 79 y db 122 ; 7A z db 123 ; 7B { db 124 ; 7C | db 125 ; 7D } db 126 ; 7E ~ db 127 ; 7F db 128 ; 80 db 129 ; 81 db 130 ; 82 db 131 ; 83 db 132 ; 84 db 133 ; 85 db 134 ; 86 db 135 ; 87 db 136 ; 88 db 137 ; 89 db 137 ; 8A db 139 ; 8B db 140 ; 8C db 141 ; 8D db 142 ; 8E db 143 ; 8F db 144 ; 90 db 145 ; 91 db 146 ; 92 db 147 ; 93 db 148 ; 94 db 149 ; 95 db 150 ; 96 db 151 ; 97 db 152 ; 98 db 153 ; 99 db 154 ; 9A db 155 ; 9B db 156 ; 9C db 157 ; 9D db 158 ; 9E db 159 ; 9F db 160 ; A0 db 161 ; A1 db 162 ; A2 db 163 ; A3 db 164 ; A4 db 165 ; A5 db 166 ; A6 db 167 ; A7 db 168 ; A8 db 169 ; A9 db 170 ; AA db 171 ; AB db 172 ; AC db 173 ; AD db 174 ; AE db 175 ; AF db 176 ; B0 db 177 ; B1 db 178 ; B2 db 179 ; B3 db 180 ; B4 db 181 ; B5 db 182 ; B6 db 183 ; B7 db 184 ; B8 db 185 ; B9 db 186 ; BA db 187 ; BB db 188 ; BC db 189 ; BD db 190 ; BE db 191 ; BF db 192 ; C0 db 193 ; C1 db 194 ; C2 db 195 ; C3 db 196 ; C4 db 197 ; C5 db 198 ; C6 db 199 ; C7 db 200 ; C8 db 201 ; C9 db 202 ; CA db 203 ; CB db 204 ; CC db 205 ; CD db 206 ; CE db 207 ; CF db 208 ; D0 db 209 ; D1 db 210 ; D2 db 211 ; D3 db 212 ; D4 db 213 ; D5 db 214 ; D6 db 215 ; D7 db 216 ; D8 db 217 ; D9 db 218 ; DA db 219 ; DB db 220 ; DC db 221 ; DD db 222 ; DE db 223 ; DF db 224 ; E0 db 225 ; E1 db 226 ; E2 db 227 ; E3 db 228 ; E4 db 229 ; E5 db 230 ; E6 db 231 ; E7 db 232 ; E8 db 233 ; E9 db 234 ; EA db 235 ; EB db 236 ; EC db 237 ; ED db 238 ; EE db 239 ; EF db 240 ; F0 db 241 ; F1 db 242 ;  F2 db 243 ; F3 db 244 ; F4 db 245 ; F5 db 246 ; F6 db 247 ; F7 db 248 ; F8 db 249 ; F9 db 250 ; FA db 251 ; FB db 252 ; FC db 253 ; FD db 254 ; FE db IGNORE ; FF ; ; Reverse ASCII collating sequence ; db 0 ; 00 ^@ -- DON'T TOUCH -- so C can find end of string db 127 ; 01 ^A db 126 ; 02 ^B db 125 ; 03 ^C db 124 ; 04 ^D db 123 ; 05 ^E db 122 ; 06 ^F db 121 ; 07 ^G db 120 ; 08 ^H db 119 ; 09 ^I (tab) db 118 ; 0A ^J (linefeed) db 117 ; 0B ^K db 116 ; 0C ^L (formfeed) db 115 ; 0D ^M (carriage return) db 114 ; 0E ^N db 113 ; 0F ^O db 112 ; 10 ^P db 111 ; 11 ^Q db 110 ; 12 ^R db 109 ; 13 ^S db 108 ; 14 ^T db 107 ; 15 ^U db 106 ; 16 ^V db 105 ; 17 ^W db 104 ; 18 ^X db 103 ; 19 ^Y db 102 ; 1A ^Z db 101 ; 1B ^[ (ESCape) db 100 ; 1C ^\ db 99 ; 1D ^] db 98 ; 1E ^^ db 97 ; 1F ^_ db 96 ; 20 (space) db 95 ; 21 ! db 94 ; 22 " db 93 ; 23 # db 92 ; 24 $ db 91 ; 25 % db 90 ; 26 & db 89 ; 27 ' (single quote) db 88 ; 28 ( db 87 ; 29 ) db 86 ; 2A * db 85 ; 2B + db 84 ; 2C , (comma) db 83 ; 2D - db 82 ; 2E . db 81 ; 2F / db 80 ; 30 0 db 79 ; 31 1 db 78 ; 32 2 db 77 ; 33 3 db 76 ; 34 4 db 75 ; 35 5 db 74 ; 36 6 db 73 ; 37 7 db 72 ; 38 8 db 71 ; 39 9 db 70 ; 3A : db 69 ; 3B ; db 68 ; 3C < db 67 ; 3D = db 66 ; 3E > db 65 ; 3F ? db 64 ; 40 @ db 63 ; 41 A db 62 ; 42 B db 61 ; 43 C db 60 ; 44 D db 59 ; 45 E db 58 ; 46 F db 57 ; 47 G db 56 ; 48 H db 55 ; 49 I db 54 ; 4A J db 53 ; 4B K db 52 ; 4C L db 51 ; 4D M db 50 ; 4E N db 49 ; 4F O db 48 ; 50 P db 47 ; 51 Q db 46 ; 52 R db 45 ; 53 S db 44 ; 54 T db 43 ; 55 U db 42 ; 56 V db 41 ; 57 W db 40 ; 58 X db 39 ; 59 Y db 38 ; 5A Z db 37 ; 5B [ db 36 ; 5C \ db 35 ; 5D ] db 34 ; 5E ^ db 33 ; 5F _ (unders!core) db 32 ; 60 (back quote) db 31 ; 61 a db 30 ; 62 b db 29 ; 63 c db 28 ; 64 d db 27 ; 65 e db 26 ; 66 f db 25 ; 67 g db 24 ; 68 h db 23 ; 69 i db 22 ; 6A j db 21 ; 6B k db 20 ; 6C l db 19 ; 6D m db 18 ; 6E n db 17 ; 6F o db 16 ; 70 p db 15 ; 71 q db 14 ; 72 r db 13 ; 73 s db 12 ; 74 t db 11 ; 75 u db 10 ; 76 v db 9 ; 77 w db 8 ; 78 x db 7 ; 79 y db 6 ; 7A z db 5 ; 7B { db 4 ; 7C | db 3 ; 7D } db 2 ; 7E ~ db 1 ; 7F (DELete or RUBout) db IGNORE ; 80 db IGNORE ; 81 db IGNORE ; 82 db IGNORE ; 83 db IGNORE ; 84 db IGNORE ; 85 db IGNORE ; 86 db IGNORE ; 87 db IGNORE ; 88 db IGNORE ; 89 db IGNORE ; 8A db IGNORE ; 8B db IGNORE ; 8C db IGNORE ; 8D db IGNORE ; 8E db IGNORE ; 8F db IGNORE ; 90 db IGNORE ; 91 db IGNORE ; 92 db IGNORE ; 93 db IGNORE ; 94 db IGNORE ; 95 db IGNORE ; 96 db IGNORE ; 97 db IGNORE ; 98 db IGNORE ; 99 db IGNORE ; 9A db IGNORE ; 9B db IGNORE ; 9C db IGNORE ; 9D db IGNORE ; 9E db IGNORE ; 9F db IGNORE ; A0 db IGNORE ; A1 db IGNORE ; A2 db IGNORE ; A3 db IGNORE ; A4 db IGNORE ; A5 db IGNORE ; A6 db IGNORE ; A7 db IGNORE ; A8 db IGNORE ; A9 db IGNORE ; AA db IGNORE ; AB db IGNORE ; AC db IGNORE ; AD db IGNORE ; AE db IGNORE ; AF db IGNORE ; B0 db IGNORE ; B1 db IGNORE ; B2 db IGNORE ; B3 db IGNORE ; B4 db IGNORE ; B5 db IGNORE ; B6 db IGNORE ; B7 db IGNORE ; B8 db IGNORE ; B9 db IGNORE ; BA db IGNORE ; BB db IGNORE ; BC db IGNORE ; BD db IGNORE ; BE db IGNORE ; BF db IGNORE ; C0 db IGNORE ; C1 db IGNORE ; C2 db IGNORE ; C3 db IGNORE ; C4 db IGNORE ; C5 db IGNORE ; C6 db IGNORE ; C7 db IGNORE ; C8 db IGNORE ; C9 db IGNORE ; CA db IGNORE ; CB db IGNORE ; CC db IGNORE ; CD db IGNORE ; CE db IGNORE ; CF db IGNORE ; D0 db IGNORE ; D1 db IGNORE ; D2 db IGNORE ; D3 db IGNORE ; D4 db IGNORE ; D5 db IGNORE ; D6 db IGNORE ; D7 db IGNORE ; D8 db IGNORE ; D9 db IGNORE ; DA db IGNORE ; DB db IGNORE ; DC db IGNORE ; DD db IGNORE ; DE db IGNORE ; DF db IGNORE ; E0 db IGNORE ; E1 db IGNORE ; E2 db IGNORE ; E3 db IGNORE ; E4 db IGNORE ; E5 db IGNORE ; E6 db IGNORE ; E7 db IGNORE ; E8 db IGNORE ; E9 db IGNORE ; EA db IGNORE ; EB db IGNORE ; EC db IGNORE ; ED db IGNORE ; EE db IGNORE ; EF db IGNORE ; F0 db IGNORE ; F1 db IGNORE ; F2 db IGNORE ; F3 db IGNORE ; F4 db IGNORE ; F5 db IGNORE ; F6 db IGNORE ; F7 db IGNORE ; F8 db IGNORE ; F9 db IGNORE ; FA db IGNORE ; FB db IGNORE ; FC db IGNORE ; FD db IGNORE ; FE db IGNORE ; FF  IGNORE ; C7 db IGNORE ; C8 db IGNORE ; C9 db IGNORE ; CA db IGNORE ; CB db IGNORE ; CC db IGNORE ; CD db IGNORE ; CE db IGNORE ; CF db IGNORE ; D0 db IGNORvÿx6SSORT.Cgßÿ šÿ–ÿõÿòÿ‹ÿ‘ÿ�ÿŒÿ“ÿöÿ™ÿ�ÿžÿ !"#$%&�ÿÕÿœÿÄÿÖÿŠÿ×ÿ›ÿ’ÿ—ÿÓÿ'()*+,-./012345ÑÿÂÿÐÿ˜ÿºÿÎÿ�ÿ¤ÿ¢ÿoÿÝÿ6789:;<=>?@ABCDEFGH­ÿÒÿ³ÿÔÿ°ÿ£ÿ¾ÿ«ÿÏÿ‡ÿ‰ÿÍÿ¬ÿ…ÿ”ÿ¶ÿˆÿØÿ•ÿ†ÿ„ÿ‚ÿ²ÿ±ÿÜÿ ÿIJKLMNOPQRST¼ÿûÿÙÿ¹ÿÃÿ»ÿ¸ÿÚÿÅÿ¯ÿÁÿªÿùÿ÷ÿ½ÿ§ÿÌÿ·ÿÞÿUVWXYŽÿÈÿÇÿZ[\]^_`©ÿÊÿÆÿËÿÉÿÛÿ¥ÿ®ÿabcdef¨ÿ´ÿ¦ÿøÿÀÿµÿƒÿñÿïÿåÿ¡ÿÿþ“\ ä8;ÛÛ:½À6ÎÈQ¡ÒöÙÞÖ¡ÈqBÆrÔ˜�ޤ@ŽÃž-Ø"¡‹-¦'d,G�°3û~¶·uˆ«ž‹™Ž•EB».éŽ5I�1S5T„%G…‚ê Et.)ÖSXú­&]‚‰6]šr±A`G#)�ã°'èÔ®’EÑ'=¥Q»[´5AE¨žR¡ ú¤°3û~¶·uˆ«d¡#\ÔS2R Gì@'dp•l…”e&f†“¢°3û~¶·u8Úù¶ÛÇÚµX )6ÔŽ¤@.r¼åÈ�.È"˜ØagöýloëpôâƒÈ¥@ŽÃžµ»EÑ'=¥¡Ö…â¨-®Èb¦8jÛTHºEmÓ”šj„ëˆPëBqÔV ä¸"CHmKíLI=ѹ¤XOŸ-ýV“.¨©ѹ¤è9°£¦I�¯cmðÔR`MWd©m©ý\>~ü|8ààÛÙÞÎçÃـן߾› x±·³sp8{~!‹æmakVR ÷m«¤@îÃüèh˜ G@££‚¦‚¬Mæv@—.È"°#±Ë’!‹p=*Œ»FGI³ž†ÚUR ÷¼3û¾sp8ýœ}—¹ŸI�ÜÛtBø+»¤hT'rïNáèØF£àèØ%ER —9>Û4¥ptl£QxÃ:°£OxkØÑ',·/ÞØh.莭ú´’¹ÈqÕ“!¼±Ñ(\Ð-[õ l?H�\ ä8@».ÁR–LRÔ±UˆEtu§¡ënAÆ"˜¤§d¥@›QÁ�õª'Øh.èY´¬8j;’¹§Ñt$r8:¶Ñ(tdíí¨M š’µIaûâÇöŸ‡ß·ÿ2Ì·O‡ù©È¥@›QÁ�ÉBõI}�9TOë¬Vìlñ0;;û·ÑÛƒC)�Cõ„X«¬Vìl�ÇÙÁáèíÁ¡È¥@޵?ì ™á.™[Øh.èlQDWwÚ? zSãÏR ÇaOl¬‚¥"ê6™[Øh.èlQDWwÚ¿Cõ¦Æ_¤@ŽÃž éX–ЍÛdna£Q¸ [°E]Ýi Ì¡zSãT ä"8ì .YX*¢n“¹…�Fá‚nÁEtu§-æ§P½©AºE p¬I äR Çl4 t‹0G]Ýité ‚ͨàÀÔ"YüØþ� è8u™£‘Èq�ÂÝâªç¢Ç4’…Š Ý"8ÖMÔâqï ‚ê .Y…¨i$r)�ã°'8 ª‹V¡ˆ®î4ØB×Ý‚ µ˜�¤@ŽÃžÐRHµS°Ñ(\Ð-ØBõÒŠ Á±¦‘È¥@ŽË.sÔ‘VIqÔÐQÑ)�K�Üï̾ïÎF/ÎPD­k‹PëBqÔptì’¢¦ÂUÏE�–™Ž5Y¨ž¤@î‹>™T(2ˆ¦%ÃzŠ TO(údR¡ÈÀ’‡=[Q”)°.\Ý’•¹W=AGÅQ#¨¨’s·¸||··5c=…�¡è“I…"cGÀaOØ™}ß98œ�^œ=H�Üg&žpK-.ß=îmÍ,’s(údR¡ÈX,j›¥‚lÿc@Ú>p´ý—p©�œ�R ÷ÊPR××Hެ…ê“Æ¢VHíM*H+¨ˆët=€T1.lF¦V äþ‚n˜\‹"jËVY�VlÈÝ"\¾{ÜÛš¡è“I…"c°[Q[nÉP+r¯z‚‹Wd¢iÉ DÕ'… ºp¬ W==úd¡#H+s‹ TOR ÷6£‚S‹ ºE`r-š©¶V` #l�ªpÅÎaAP=AÓ±‚‹Wd•È}4-°†ê 6… TŸ“kGR —9Þ’ájLì>àloëðÇè·ø9Úá!š¤ü§a>ŸüyòÇ)�£è“ž’E—Zú r?¯°EÛ!š.©¬[Òj@Ò-ŠØu¤T„­Y¡£¬ W·¬§hɑ⨥@îÄ;+“4ÅÚ¢¥Â%“Gm‘t‹"¶ÇšìH äþ´Âm_V„"vY2M5 é¬ W·„Úb€£c—5•Èý� m‹˜)ŽÚ6TDr.^á‚n˜\ KŽ ÅQÛ‘È¥@޳½­Ã£(bבV!:¯>H�Ûë…ÈýY4jò@fJ&v8‹A]%C8ŒÑY)�K�Üï$«ð[L->àtŽ3Êu 2˜ÿå�S)�K�Ü¿ˆú„Œ¢ÁÄg1¨«d‡1:‹­ƒÃ×{[PßÞžá·Ø¡hð�躤¥@îÏ(Ãé€ù_þ8•¹Èýg›¦ô6…7¬;ú„7±V�}’¹ÈýCb�“d8-Yôé„° ÒèRK cEF'WBõlÁ™!¥nÑÕEÖR ÷Ž5áŠUÕ¶_ïm¡HÎm/n·uêEÔ'¤G�¤o¯ÒíH äR ÷[ô[͆,\T1 e{›¥‚ÔTD2±Ö-Toˆ ¸# Õé©ê¥@îc€ê �!°#,ˆõ6Eí‡=[d&NMêÀ¬é–Z„hØ‘•¹_ðtJªOuÑÜ–°ÜeŽÌ€�¬"�²(’Æ‚À]æ¨#­¨EˆF äÞPrî¶�F!°#‹Æñá`çãÏÑ‹J äÞo;ŠF äR ÷/b—±#¼Âë‹R ÷þàSQÀF£F¶éô�£#lG)�{ðÉ�ÂF£¤@î›hF£Q%rï>l4jT`›Nÿrt„í(rï>Žõl4J äR ŸH!…O¬ W·„7‹ÖGý')¤xj)°&œ]¾{Ü{ÄÆÚhNÈXŽóѶq:9ýÛä�¿b½éöõF )žZ ¬ ¯?¿}7ÃÑ1a’#†`I�µŠP=ÁѱKŠj](Ž!¨´p„Ô¶†¬E>‘â©¥Àšðbogçàpöüxð0C�KŠž;j*)¤˜äxj)°&¼�}ûüùÄOr�N G--ê)2ÃZÅZáª'�–kj‘O¤�â©¥Àšðmoo`­¼Ÿäø¶·ç(iä)žZ ¬ ·ö^¬•÷“·ö^P[B>‘â©¥Àšp¸uyð¬•÷“ÛóG¢ÁîùD )žZ ¬ —ï÷¶f8:ÁûIGÇ.)j*¨xA*‚§:‚ê EŸL*ä)¤xj)°&üi¶õmïl†¹÷“S>!˜ZkÖS¤¢ˆµVˆ�!ŠOXÝ"ŸH!ÅSK�5ááàûÎåã §GGÞOr¸¨§dkÂá*iÑRr¸bÕ#ŸHñÔR`Mxüöùõ~÷ÞOr<¤cèº[�A ˆi,êÈP‹ÀŽ,ò‰O-Ö„‡ƒï·€GGGÞOr<¤cèº[�A p¬É¢±¤¢AË…ª�O¤xj)°&<̶ÞÍö¶ÞζÐ<~ûüúl{^ùIއtŒ'ÄÖŠLG-'EìÈBEtd¦„|"ÅSK�5áñàavvù�N�¼ŸäxHÇxÍŽtê–Ï ùDЧ–kÂÎÞ»�‡[˜ÿð~’ÃvÉ9² 'ÉÕ„Oc¸8E³H–pZ!àáàûÇÃ-ä)žZ ¬ ³½3\ï]{?Éa•a=…"Ó±NŠ£FÑ'“ EùDЧ–kÂëË�¬2u¡ð¼¨ƒR<µX¬jÉüUЧ–kBÈjU «U!…EŸ têhùxð0;»üÇl5@§ŽN—�³³Ḛ̈‹ùѪ”âõåÎ ‹:2vùøíóë3ìb¾*ý$G�AE<~ûüú SÒd’ÛÎj“�°¨C C-;²È'R¼¾Ü™!gØ-f[ïf{[og[ØÅ|UúIÕeì™2!ØhbF&)ŽùDŠZ[žjjáXgÊ,¾<ÜÂ.æ«Ú±&[JÁZAQ—•RÔÚòTS‹.+:V¥÷“]:Æb@Ñ'cÁ]b EÇ ‹:2È'RH1É¥@Ž�ý^_ÎvÞÂ’£BqÔ°u–E£p’ §…#‹mô¦“ùDЧ–kÂÃÁ÷×—³�·g8=’â©¥Àšðúr¶óö V™ºPxL®µRHñúr¶óö wR¬žuÝ&×ÚR €µÂ³UFÑ-¾¿¾œí¼=[•R¬ž­ŠYÝòáàûëËÙÎÛ³U)p� L®µ¥R<µX^œîì½8Ø‘BŠ'-¼>8;ÜÙ{q°#…“\ äx}pv‹ä,B4(b—%ÓTR ŸHa•© …;)€Z[žjjÁnJ)€Z[žjjq1À•Rµ¶<ÕÔâx>àø´”¨µå©¦Žô3p¤ŸoJ)€¢OÅ|@qZJÜã¼”â‰tËA )ž8´ðvöíó;)Š>Ø,´¨C ³<=:Z•R<‘n9H!Å$ÿµ~�|"Å$ÿµþ¬ÿû_¶/ßÍÏÑC4IWXË_k�|"Å$ÿ…Þ�Ü4V}‡Ëdz˳Ã3¨>)þ¼<ƒNaAP=açàìSÉy¬ÿýò‰“üÖo!ŸHQôÉ w¬u(½ŸäPt¬� %X•Œ²HA‘�êÙâ$N GÈ'RLr¬ßå)&ù¯õkä)¤èë&™i1 ™éI%ÀZ!™iQJ}2È“™ž,W¥wRHáY+t¬›jÀTѱjªR )üëË�rÖ� Èc­;*½Ÿäèk°Îj…¤[ÄZeµ‚U†Rg‘O¤ð¯/wfÈU—vTJákmyª©EÏÓ~€ãn€‹W¥þÛÞÞºhèYѱ*¥�Âgµ²ÍÙå»Ç½Çª”Â;Ö‹:` Ò-«¦*½Ÿä°*… èXaQ‡@ÉPB>‘ÂwéXѱÂ*f1tÔ5¶Aº¥cÕTØÆŸ�ŽJ)¼ê²ÀŽ0Æ¢�Œ]­J)|ÌGm›WÉL‹ÉLOªÒOrd&d-ŠØuI·p¬ 1SµE>‘Âs@ƒd¦~�ñî¤ð@mÓ”šÍ¦*¥ðÀ½žu`GcQ‡@Æ.ç«R Ï BÌH7ÉLO–óÕÖ�U�1ÛÚÚÛB…;)<�ÕÊ6›I_+ÄŒ46U)…²ZÙ&™éÉr¾ªJ)<@ǬšíyUJá�{)ž8àO³­o{g3)|Èje›Í7š²Ö¬§`ÍŠ“Cˆ¦KŠ£†©õ¾Þ °ª%cªRŠ'Ò-)|ÏÓc•ÞOr\jVœB4]R5b€©µýàó‰¾�¸“Â]4ô¬èXaŒ©¢cÕ°ì¨*¥ðÀo5�v¬ÉV¥÷Rx çi¿»[Já�.]vMÏÓ~€ê²ÀŽªR dŠŽU£º,°£ª”¡p±V�ê²ÀŽªR ÜãªgGhÐECÏŠŽªR  -5¬;ªJï'9‚!B�AõÖY­Øud�O¤xâ€?Ͷ¾í�ͤð!«•m6ßhÊZ³ž¢#3%ÄŒLRõ¾Þ °ª%cªRŠ'Ò-)|ˆ \¼Âó.^á zžö%\¼Âî³­w³½­·³-T¸Ã$GGfJÈ'RxÀq‡1:Ö�‹WØÅÃlëÝloëíl Û˜èyÚW¥˜ÆŒtãâÕÇ]Uz?É3ÒìÈ"ŸHá�ž§ýîn)…ºtØ5=OûªË;ªJ)<Б™Rã¸Ã6\¼Â.æT—vT•Rx .ÖªQ]ØQUúIE¦c� ®¶=’nQ¸h �!ŸHá�©¡.ž4.^ pÜU¥¸—ÂOr)ní½�"fŠ£¶M–Š餒`­�g©(¥Š>äéd¹*¥¸“³Và7¥¾è“AnK)¤ð6˜\kGϺî“k-0Ƽ”ÂÛhT`r­=[eTÝòh…1ŽJ)¼�F&×ÚѳU1+¢[­0Æ�Óßÿö{)…Ñ cŒy ÆäY*Jìî2*ÜIáh�§“%¯0ãzû¯^AE¯È4édÉ«å|Ua<Æuq� wRx¬_NI=ѹ¤XOŸ-ýV“.¨I*ró*�,yµ<]UU)…Çúeˆ n0—¸ÁäY*JìîÞ Â$‡¡.žb¦8j‹`b‡t²\!ŸHá±þ’N–7+Œ‘N–7»óU)…Çúež¥ÛcÌK)<Ö/ï¥ð4ÈÓÉ’W�q½}�W¯ ¢‹Wdšt²äÕr¾ª0ãúâî¤ðX¿´#�,y…]œ–Rx¬_†hÐàc•`Ûò”U“Û ¯^áoðpðýõålçíY‰ÝÝT¸“ÂcýÅF£“kíèÙ*£Šè–7+ŒqTJá±þrÕ³#4`Ûò”U“Û î¤ðXµÑ¨ÀäZ;z¶Ê¨"ºåÍ ùó£R �õW� L®µ£g«Œ*¢[Þ¬°;F“ÛÝ]lãúèº*¥ðX½—Âcý…46˜\kGÏVUD·¼Ya{Œy…78B%…Çú«�F&×ÚѳUFÑ-oV㨔ÂcýÅF£“kíèÙª˜Ñ-oVãÇéïû½”Âcý…äã1®·¯QáN �õ×Ý][Já±þj£Q�ɵvôlUÌŠè–7+ŒqTJá±þzÕ³#4`Ûò”U“Û î¤ðX � L®µ£g«bVD·¼Y!c~TJá±6˜\kGÏVŬˆny³ÂîMnww±�ë£ëª”Âc-î¥ðXå€��F&×ÚѳU1+¢[Þ¬°=Ƽ¡’Âc-l4*0¹ÖŽž­ŠYÝòf…1~œþþ·ßK)<Ö_9 AnñkŒëá•k±0”.J)<Ö_wwm)…Çúë½ë/ä,�ä¿Æ¸®QIá±þº0”.J)<Ö_ÈY’Âcýuw×–Rx¬¿ØhT`r­=ëº L®µ»»¥ë/÷Rx¬_†hÐàcp‰¼Až¥¢Äîî *Lrêâ !fŠ£¶&vH'Ëò‰ë/édy³Âédy³;_•Rx¬_æY*°=Ƽ”Âcýò^ ÜKáC4hÀã¨ã l4*0¹ÖŽžuÝ&×Ú»»ŒJ p@� L®µ£g«Œ*¢[ò Ÿ`£Q�ɵvôlUÌŠè–¼B%…ÇúemÓ”šÍåÎÎìÝÁÎö¶ñ¯³ÃÙÇÙ‹Ë×—//÷7U)ŽR|ÜÚ{!E(\¬Uu¨¤^_îÌ�ÇEJ)î¤ðY­ŠæÅLJÙÞëqQ‡ª”‡àjÛ7qQ‡ª”‡ÂEKM\Ô¡*¥¸—B )&¹ÈñÏš‹‹øgÍÅ…�F!Dƒ¢O&#Š k²R ŸH!ÅÇ­½RüVsqÑhÇšl%PkËSM-´cM¶”âN _kËSM-xÀÍw²ÜÙ{÷ñp »˜¯d2>q¬Ô'Ë�½w·°‹ùª”³V(b—%ÓT¥Rxw²œ¯0Ƽ”Â×'Ëù chÇšl)…Ï0Ƽ”Â_õì 2|Â*)<À ÜÉ2[áÓõÉ2[¡ò“Q»[ÌAŽ:Ò ¬¡z¶°õÂ’B>‘Âcý2ÛÞ.½ŸäÈb«Rqá½Ï'Rx€œ%ÜIá±~ÉÃ�,³¶1/¥ðX¿¼ÁõÉ2[•Rx¬_f|âXc Ç:Sfy³*ý$GÆ'QÁ±&ïó‰ë—W=;BÆÜ Â�ë/!4àÝÝEì²dÇ:SfÉ«Ÿ8ÖÞà¨ïÂcýµ”Âcý%Dƒ7ÛÛ%nð \âf{•ë¯Рˆ]–LãXgÊ,oV2>q¬+¼ã•k±0”.J)<Ö_8 ã nPáÎOrÄZ!DÓ’A–ØxŸO¤xâÐRÀÛÙ·Ïï¤ðXÍ kšÍÙ¿|üxùøîþ~o÷õ{»¯÷õf�Â{ÿʱ^ÔaéXgÊ,yµðʱ^ÔaéXgÊ,oV«ª”â‰tËA �õWE]†1ëL™%¯J)<Ö_ëL™%¯0†c�)³¼Y•Rx¬¿:Ö™2Ë›ÆPÔe¥ë¯÷Rx¬¿ÜKá�ŒQŸ,³Uéý$GOŸD‘EËŠ£Æ>ŸHáE]†1ëL™%¯J)<àXgÊ,y…1ëL™åͪ”ÂŽu¦Ìòf…1uY)…8 AÃØ†;Yf« oÐÔ'Ël…mp… wRx¬_º“e†]ÌWÃ�,³U)…Çúe}²Ì°‹ù c0¶1/¥ðX¿t'Ël…1»˜—Rx¬_ÞKár–p'…Çú¥;YfØÅ|…1»˜—Rx¬_Ö'Ë »˜¯0F}²ÌV¥ë—õÉ2[a Æ6æ¥ë—÷Rx ÛÝ-¥ðÀ½÷^Š{ï½RH1É¥@Ž�ŠŽÕÄZeµ‚¢cÇš,‚‰ëEµŠP=aQ‡@†ZÄZeµB`G˜ò i)�O¤�âãÖÞ )2EǪ‰µ ì*)€×—;3ä±V�])Å�žµ—RHáC4hÀc^‚ñf íX“-Á»»¨p'…BV+Û¼r¬uX:Ö™2K^­ÄZvU)…BV«¢¹Þ?ºkØU¥ŸäPd:ÖITOp¬ ùD ÜKq/…RLr)�ã�¢cõïHAѱ‚cMÁĪ',êÈP ÖY­Ø2O¸¥v@Ò­Èá�Ì¥‚ zêÀZE8Ö‹:H�|"…¬•SEǪaØQ%ðúrg†œu`G¥wRøZ[žjjáÙGº”B ¯k²㨔»E†1楾�¸“ÂРq¤1F˜’²Í+ÇzQ‡¥[d«¬;ª*ŒÇxü¼³ƒJ �õË…¡tQJáGcXeéæ•c½¨ÃÒ-²UUJáÇzQ‡¥[dØ…#�mÌWãzÿ躔ÂÚ±&»»[JáÇ:Sf©k²+ŒáY)…Ü"ÃîŽté'9Z3\ïëë‹Zá‚(Ããç�$Ò-b€U†õùD ÜãªgGhàÞ éÒ±¢c…m<|ß¹|œUxõ Ú±&‹7x8øþñp U)…7¤j£Ñ8ÒUéý$‡!U�#p@5áŠU�ÀŽ�O¤¸—B )&¹Èñ�.»xH„E]M2·ì}:a=…­Càc\ëk$Ý"f¤Á !)�ȵÊj…NP=ÁÖYæ˜Z,êÈH�|"…·ö^HÑ¥‹À®Ñ⢕ŸäèÒAQ—!°#ôé„õ¶��q­¯‘O¤X+èR àõåÎ y\Ô¡”âN ÿúrg†‘â^ )¤˜äR Ç¥ŠéЍOÈ(°V4%ƒ“äj‚kqpöâò†2C–´JŠ£FR°ÊdÊ R ‡GÒ- ©Úh$d‘µ"ÁJ ä)¤(úd�KÁ*¦Æ*“)3@WREŸ r«L¦L)ÀZA—RÜIáY+8ÒSÕ—RHá9 �Æ¡Â�È­2™2»»ãzûº”ÂV™L™ÝÝR hŒ±­K)

‘BŠ�[{/¤˜êâIãâÕÇ]%ÀZÁq7ÀÅ«RŠ;)ní½�"dµ²�ÀqQ‡J  è“AnK)€×—;3äu(¥¸“Â}2(J)¤ðW=;Bƒcävw•à€Y­Š¦ÀqQ‡ ã1f[[{[¨p'…ÇúeÈje›Í̘h5;B¬UV«}½`UKÆT¥ë—t̪ٞW¥ë—÷RÜK!…“\ äx 3¥èÈL ¬»å|5�XvKØ‘]!jkØI�|"…·ö^HÑ‘™R£;²b­»J àõåÎ y¬U`WJq'…/úd�‡))ÛT¥RxÖ <€uàÙ—ÍèPJ!…w‹ cÌK)¼㨔‡hЀ1ƼãÍ:°#[‚ww+`’cJ QkB0±¥¢G`GÈ'Rx€„))Û¼r¬uXºE¶À:°[òªÂ¯1?ïì Â�ë—:ìî–Rx¬_:Ö™2KVÃ-²R �õK·È°;ÆÃÁ÷�ËÇYé'9¥‚‰±Cˆ.™)YÇš�O¤ðX¿¼—ÂÿVsqÑèP•ÞOrté‚Àš'‡žR†|"…¿êÙè€O8B…;)<à²9Æp¬3e–óU)…BV+Û¼r¬uXºl¾kØU¥_¿”Â!«UÑ\ï]ˆµ ìªR °ÃesLðpð}çòq†]ÌK?ÉQÄ.«!°#°néùD p@ƒ0%e›WŽõ¢K—ÍWXvKÖaUa<Æãç�T¸“ÂcýұΔYÎWñΔYê°*¥ðX¿Ôa{»”Âcýò^ ê)e�U)…—B 菱äR Çõ”²ÈLÌâ4)‚c½¨ÃұΔYÎW+¨ˆÌÄŒ 2— kô”2)�O¤�âãÖÞ ) õ”²F‡J  Ö–§šZèPJq'…¯µå©¦<ঔB ¢AÆó c\áÍ:”`Œqƒ wRxàc0vÁ¥à€7xðêŠØeÉ4Žu¦Ìòf5À±Î”YÞ`óU…O8B%…ÇúåÍîn)…8 A»,™Æ±Î”Yòj€c�)³¼YUx3Æ*)<Ö/†ÒE)…uÆp¬3e–¼*¥ð€c�)³äÆp¬3e–7«R 8Ö™2Ë›ÆPÔe¥¸—â^ )&¹ÈñŸµUp|A04­]2p¼0ÉÜℌå¨ÐqA™‚ê“Âãç�°Er6J�*]�F²H°Ê°žB‘éX'ÍH ä)¤(úd�K¦¤lcp\Ô¡’(úd�ÛR àõåÎ 9ÇEJ)î¤ð¬ŠXk5 (¥ðEŸ ò"S¦”居 c<|ß¹|œ•Rø"ScØR Ï šcLI ÇEª ã1^||˜í½Æý ŒÇ˜í½F%… ©Úh4�ŸwvªR ßFÜIáhÐäE¦Ìî.Æ(*ŒÇ¸Þ×רp'…Çú%4(2e>ÙÝ9^½BÞ™2Û§Æc\ï›kTRx¬¿äÍöv‘)ƒmÌ+Œq½¯¯K)<Ö/†ÒE)…Çúå½à€¿P ’Âcýra(]”Rx÷¸êÙ±Öj{¯^¡)ÆSREÃqQ‡ªÂ¯1f{¯ñê üãÅLJÙÞkT¥ž�ñâãÃlï5*)ní½�¢¶iJ�­¤Š>ä¶”âN 2ÃZ…ƪ–Œ°Ù×ïí¾þlÓ”>ìëÍ[•Rø�ÕÊ6›}em4 oXvô ob­;ú„åvñ¦ˆÎ%Åz K¿Õ¤ ú´Ârûâ��Fá‚náØªO«}½¤ðÞª–Œ©J)|Èje›ÍUO†ðÆF£pA·plÕ'°ý°¯7¬jɘª”‡¬V¶Ù ¡ˆ]—`)K&)jáØ*Ä€"ººÓÐu· c LÒS²ûz3Àª–Œ©J)|Èje›�ͨàÀz Õl4 t‹"ººÓv_ï+MGûz3Àª–Œ©J)|Èje›ÍöÅ�í?¿oÿe˜oŸóÓ}½¯lF& Õ'µ¯7¬jɘª”‡¬V¶Ù`ýïª'd†»dna£Q¸ [°E]Ýi ü€êM�?ïëÍ«Z2¦*¥ð!«•m6ª'h:V°TDÝ&s �ÂÝ‚-ŠèêN[àw¨ÞÔøË¾Þ °ª%cªR ²ZÙf£z‚¦cKEÔm2·°Ñ(\Ð-Ø¢ˆ®î´æP½©qº¯7¬jɘª”‡¬V¶Ù¨žà’U°TDÝ&s �ÂÝ‚-ŠèêN[ÌO¡zSƒt‹àXÓh_o)¼·ª%cªR ²ZÙf³¯{‚£ ºhŠèêNƒ-tÝ-ÈP‹ùh_oXÕ’1U)…Y­l³9ì -…T;�ÂÝ‚-TO ­ØkíëÍ«Z2¦*¥ð!«•m6ûz»x£?Á’£BY¨ž ¯U�":—ë),ýV“.ÁĪ'ìoº4åb³¯7¬jɘª”‡̰V¡±ª%cl;Â{;¿ôd–~«Id‘ A×Ý‚ µ&v8'Gûz3Háý‹½��ƒÃÙóãÁì*!…§cVMUJq/…RLr)�ãEì²d>àEì²dê*Â*ÃzjKRµÑ8Ðour¶çà€ÀÆ*°•¹à蘋äÜ-l—œ#3 ÌÁ��U`‹O§d¤@>‘B )¤8ܺ‘Â÷8/¥x"Ýr�B >r¤ŸcXeéæ•c½¨ÃÒeóUUJáÏGŽôó Æ°Ê8ÒÍ+ÇzQ‡¥ËNWU)…Ñ Áùèc•8]à l4*0¹ÖŽžuÝ&×Ú»»ç£ T¸“$Âç#Œa£Q�ɵvôl•QEtËóÑŪô“!P*zØh.èùD œ�Ãesì¢cÝœ�Ü€ó‘#ýÌU)…ÎG7À.;Å.:ÖÍùÈ 89ÒÏ7U)…ÎGÃF£“kíèÙª˜Ñ-ÏG«R œ�ŽçÃesì¢cÝœ�Ü€ó‘#ýÌU)…ÎGǧÃe§ØEǺ9¹ç#Gúù¦*¥ð@qç×/'9B4 Tô(úd�EËŠ£k$\Ð-ò‰ë—W=;Bƒæ|TÌÇŽŽ]RÔ8Ö‹:,ÏG¼ª*ŒÇ¸|÷¸·5C%…Çú 4ØÝ=1>á|tá|t<¯ðêšóÑ ÞŒq>:>­PáNŠ'-¼�}ûüN �õ—̰V¡ÙÌßâõålç-vfgg8üyðøa_¿·ûú½Ý×›A ïý+ÇzQ‡¥Ëæ«6KÙæ|ÄÛ.›WU)…ÇúKfX«ÐlÞÛ}ýÞîë}½ðʱ^Ôaé²ÓÕ›¥‚ls>ºÙvÙiU•R<‘n9Há±þbHÕF£ÙžW¥ë/÷Rx¬_r@ƒæ|tƒO8ŸVxõ ÍùˆñfŒóÑñ¼B…;)ž8´ðvöíó;)<Ö_2ÃZ…f3{|‹×—³�·x·5;8œmáðçÁã‡}ýÞîë÷v_o)¼÷¯ëE–.›¯Ø,d›óo»l^U¥ë/™a­B³yo÷õ{»¯÷õfÀ+ÇzQ‡¥ËNWl– ²ÍùèfÛe§UUJñDºå …Çú‹!U�f^•Rx¬¿ÜKá±~É šóãÎGÇó ¯^¡9ÝàÎGǧ*)<Ö_†ÒE)…Çú%48süã|Tœ¢Â�ë/Ðà|TÌ1ãòÝãÞÖ &9™ŽuRÔ"j\¾{ÜÛš¡pÉZÄ€¢OùD �õ×óQ1ÇG¥ë/Ðà|Tœb<Æå»Ç½­*Lr(2뤨EÔ¸|÷¸·5Cá’µˆEŸ ò‰ë¯ç£âc•Rx¬¿p@ƒóQ1ÇxŒóQqŠ wR*NQáN �õ×̰V¡Ù<|ü8{‹‡Ë³‡ƒÃ?±3;;ÃáσÇûú½Ý×ïí¾Þ Rxï_9Ö‹:,]6_ °Y*È6ç#ÞvÙ¼ªJ)<Ö_3ÃZ…fóÞîë÷v_ïëÍ€WŽõ¢K—�®Ø,d›óÑͶËN«ª”Âcýõ^ �õr–p'…ÇúkfX«Ðl>~œ½ÅÃåÙÃÁዟx·5;8œmáðçÁã‡}ýÞîë÷v_o)¼÷¯ëE–.›¯Ø,d›óo»l^U¥믙a­B³yo÷õ{»¯÷õfÀ+ÇzQ‡¥ËNWl– ²ÍùèfÛe§UUJá±þz/Åé–ƒë/†Tm4šæ|TÌñç£â´Â`{Ž˜W¥ë/÷Rx¬_îîž�¸”Âcýrw÷|tSJá±~y�«ž¡ÁU)…&¹@Ò-b€�Fá‚n˜\‹+V=è·:9\ЭP[‚¦c… ºE`r­@>‘Â÷RøI.…GŽ×¬“ƒ![;…¤@ºE 8ØÙ��Fá‚n˜\k¥ðÈ'Rxhp>*æ�qùîqok† “ŠLÇ:)j5TO¸|÷¸·5Cá’µˆEŸ ò‰8sŒqTJá9 Áù¨8ÅxŒËw�{[3T˜äPd:ÖIQ‹¨¡zÂå»Ç½­ —¬E (úd�O¤ðÀù¨8ÅG¥žœ�Š9Æcœ�ŠST¸“â‰CKogß>¿“™a­B³y}ùx°ƒÙ??ìàpïþ~o÷õ{»¯7ƒÞ¿r¬uXºl¾`³T�mÎG¼í²yU•Rx 3¬Uh6ïí¾~o÷õ¾Þ xåX/ê°tÙéj€ÍRA¶9Ýl»ì´ªJ)žH·¤ð€!U�æ¨*¥ðÀ½OZ x;ûöù�žœ�Š9Þà|Tœ¢Â�È kšÍëËǃìÌÎÎpøóàñþ~o÷õ{»¯7ƒÞ¿r¬uXºl¾`³T�mÎG¼í²yU•Rx 3¬Uh6ïí¾~o÷õ¾Þ xåX/ê°tÙéj€ÍRA¶9Ýl»ì´ªJ)

*æxƒóQqZá?°=ÇÌ«RŠ{)¤�â‰CKogß>¿“Âf© ÛèJŠ;)äY)…g­J)¤xj)°&\>~ü|ˆ#)žZ ¬ ßÎöv>Îp$…ç€MÇŒtóbogçàpöüxð0pùøñóaUá ŽPáN „̰V¡±ª%cl^$}­X·ìïí¾Þ x±·³sp8{~Î*¼Á*ÜIá��Ö*4VµdÌ€Í̘hÀ–è‚õQ#°#¼·ûz3àÅÞÎÎÁáìùñàaV•Rx€ŽY5U)…î¥ðÆptì’¢R ŸawŒ×Ÿß¾›•Rxh`(µM� 8­ðkŒST¸“Â!3¬Uh¬jɘ›™1Ñ€5 ¥–õ�á½Ý×›/övvgÏ�³ª”Ât̪©J)

ìàÝÖìàp¶…ß�öõ{»ÿÿ¡Í;¤Í££W!E¦¾Êý¥# ¡¤ ¾Êé¥# ¬¤¾ÊÎ¥# ·¤æÀþ@Ê´¥þ€Ê¥¥zæÇÖÊ–¥=Ê�¥=Ê|¥zæÀÊJ¥zæÊ?¥Ö¾~o÷õ¾Þ xåX/ê°tÙéj€ÍRA¶9Ýl»ì´ªJ)žH·¤ð€!U�æ¨*¥ðÀ½OZ x;ûöù�žœ�Š9Þà|Tœ¢Â�È kšÍëËǃìÌÎÎpøóàñþ~o÷õ{»¯7ƒÞ¿r¬uXºl¾`³T�mÎG¼í²yU•Rx 3¬Uh6ïí¾~o÷õ¾Þ xåX/ê°tÙéj€ÍRA¶9Ýl»ì´ªJ)

*æxƒóQqZá?°=ÇÌ«RŠ{)¤�â‰CKogß>¿“Âf© ÛèJŠ;)=<;:9876ÿÿÿÿÿÿÿ531/-+)'%#! ÿÿÿÿÿÿ420.,*(&$"  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰‰‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSORTORDRASMWŽ��‘’“”•–—˜SSORT CQ u™š›œ�žŸ ¡¢£¤¥¦§SSORT $$$åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå: Build SSORT.COM - Select-a-SORT : : cc is BDS C vers 1.5 : ll is L2 which comes with BDS C or via BDS C users group : : MicroShell users: Don't actually use this shell : file since ASM gets confused when activated from : within a shell file. Just treat it as build instructions. : Harvey Moran 2/26/84 : cc ssort -o -e 3800 casm lexlate asm lexlate.ddz ddt f100,1000,0 iLEXLATE.HEX r g0 save 4 lexlate.crl ll ssort lexlate -WA ou have MicroShell, I probably don't have to tell you notŠ SORTFILEDOC abSORTKYBDBAScdeSORTV COM fgSORTV DOChiSORTV-12ASMdjklmnopqrstuvSSORT COMlwxyz{|}~€�‚ƒ„SSORT DOC/…†‡ˆ‰ŠLEXLATE CSM‹Œ�SORTORDRASMWŽ��‘’“”•–—˜SSORT CQ u™š›œ�žŸ ¡¢£¤¥¦§SSORT OVL¨SSORT $$$åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå%08B8 MAIN 0CEF OPTIONS 116B FCLOUT 11A1 QUICK 14F7 PTEXT 1566 GTEXT 164A MAKFIL 16AE GNAME 1718 ITOA 1804 GOPEN 190A GREMOV 19CB FPUTS 1A3B MERGE 1BBD REHEAP 1CEF FGETS 1E2B USAGE 217A COMPAR 23E1 GET_COLL 24FF COLLATE_ 251B LEXLATE 2629 MIN 2650 PUTS 267C FOPEN 26C6 FCLOSE 26F8 FCREAT 2754 TOLOWER 2788 ATOI 2842 ISDIGIT 2871 PUTC 2999 FFLUSH 2AF7 STRLEN 2B34 STRCPY 2B7C STRCAT 2BDE FPRINTF 2BFE GETC 2CCA UNGETC 2D38 ISUPPER 2D67 _FPUTC 2DB6 _SPR 31A0 _USPR 3242 _GV2 329F TOUPPER 32D3 ISLOWER 3302 ENDEXT 3306 TOPOFMEM 3315 EXIT 3318 GETS 3349 FABORT 3360 UNLINK 3387 OPEN 33EF SEEK 343A READ 34E3 PUTCHAR 3512 CLOSE 3515 CREAT 354E BDOS 355F WRITE 3613 MOVMEM 3664 GETCHAR 3699 UNGETCH 36A8 CFSIZE Link statistics: Number of functions: 61 Code ends at: 0x36FA Externals begin at: 0x3800 Externals end at: 0x705C End of current TPA: 0xB106 Jump table bytes saved: 0x1B9 Link space remaining: 5K ÷÷÷÷ùGÂùHÇùIÃ÷÷÷›÷÷÷÷ùÅù¾øÆ÷ùÅùÈøÉ¾øÆ÷ùÅùÈøÉ¾øÿÆ÷›ùJ¾ø This is the release date of the disk. SORTFILEDOC €aSORTKYBDBAS €c SORTV COM €f€SORTV DOC €h€SORTV-12ASM €j2SSORT COM €w6SSORT DOC €…€LEXLATE CSM €‹€ SORTORDRASM €Ž€+SSORT CQ €™€:SSORT OVL €¨SSORT SH €©SSORT SYM €ªååååååååååååååååååååååååååååååååSHELL .LIB 60 32 768 6 SHELL .PAS 6C 7F 2816 22 SORTC .BAS 1E D3 4096 32 SORTFILE.COM F7 DD 2176 17 SORTFILE.DOC D5 66 1536 12 SORTKYBD.BAS 02 68 2560 20 SORTV .COM C6 7E 1152 9 SORTV .DOC 31 70 1920 15 SORTV-12.ASM 43 9E 12800 100 SSORT .COM 7B 95 13824 108 SSORT .DOC 60 E7 6016 47 LEXLATE .CSM EB AF 2688 21 SORTORDR Fog Library Disk FOG-CPM.115 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. 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. SORT programs. Filename Description -07-00 .86 This is the release date of the disk. -CPM115 .DOC This is the description of the disk contents. BSORT .COM 0D74 4K [BSORT 1 of 3] Combination sort for fixed length records. Squeezed ASseMbler source is included. BSORT .DOC 9862 4K [BSORT 2 of 3] BSORT .AQM 433D 28K [BSORT 3 of 3] EZFILE .BAS 6EC1 22K [EZFILE 1 of 2] MBasic program that creates, adds to, and changes sequential files. EZFILE .DOC 3742 3K [EZFILE 2 of 2] QQSORT .COM 1D1D 8K [QQSORT 1 of 3] Quick sort program. Pascal/Z source code is included. QQSORT .LIB 7996 3K [QQSORT 2 of 3] QQSORT .PAS 5B5C 4K [QQSORT 3 of 3] SHELL .COM 7304 7K [SHELL 1 of 3] Shell sort program. Pascal/Z source code is included. SHELL .LIB 6032 1K [SHELL 2 of 3] SHELL .PAS 6C7F 3K [SHELL 3 of 3] SORTC .BAS 1ED3 4K Variable length, variable column sort in Mbasic. SORTFILE.COM F7DD 3K [SORTFILE 1 of 2] Sorts an ASCII file in ascending order. SORTFILE.DOC D566 2K [SORTFILE 2 of 2] SORTKYBD.BAS 0268 3K Sorts keyboard input to screen listing. SORTV .COM C67E 2K [SORTV 1 of 3] Sort for variable length records terminated with CR/LF pair. MAC source code is included. SORTV .DOC 3170 2K ver. 1.2 [SORTV 2 of 3] SORTV-12.ASM 439E 13K ver. 1.2 [SORTV 3 of 3] SSORT .COM 7B95 14K [SSORT 1 of 8] A merge sort utility with up to 20 sorting keys. Allows you to use different collating sequences. Squeezed BDS 'C' source code included. SSORT .DOC 60E7 6K [SSORT 2 of 8] LEXLATE .CSM EBAF 3K [SSORT 3 of 8] SORTORDR.ASM 639E 11K [SSORT 4 of 8] SSORT .CQ 0FE4 15K [SSORT 5 of 8] SSORT .OVL C4E0 1K [SSORT 6 of 8] SSORT .SH FC44 1K & [SSORT 7 of 8] SSORT .SYM B053 1K [SSORT 8 of 8] Pascal/Z source code is included. QQSORT .LIB 7996 3K [QQSORT 2 of 3] QQSORT .PAS 5B5C 4K [QQSORT 3 of 3] SHELL .COM 7304 7K [SHELL 1 of 3] Shell sort program. Pascal/Z source code is included. SHELL .LIB 6032 1K [SHELL 2 of 3] SHELL .PAS 6C7F 3K [SHELL 3 of 3] SORTC .BAS 1ED3 4K Variable length, variable column sort in Måååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå'ååååå