IMD 1.16: 8/06/2007 13:52:11 ebmmug.009 eastbay micromate users' group utilities:compare-cpm22rsx-dial dirchk-findbad-grep-label-sd92 disk issued: october 4, 1984 CPM3 SYSGREP COM GREP HLP GREP DOCIDIAL DOC,DIAL COM=LIST COMLIST DOCLISTT COMLISTT DOC(COMPARE COM COMPARE TXT!DIRCHK COM "DIRCHK DOC#LINES COM$TELL ASM/%&'TELL COM (NCAT32 AQM{)*+,-./012345678NCAT32 COM49:;<NCAT32 DQC=>NCAT32 SQT?@SD-92 AQMABCYZ[\]^_`abcdeNEWCAT COMDELRUN COM FLABEL DOC GCPM22RSXDOCHIWCOUNT COM+MNOLABEL COMFPQRSTRMAC COMSD-92 AQMhfghijktuvwxySD-92 COMCPM22RSXASM}lmnopqrsSD-92 DQCSZ80 LIBFINDBAD DOC}~FINDBAD COM!NSWP COM\SD-92 IQF LSWEEP COM}GENCPM COMLINK CQMNSWP DQCRSXSEED MQC7SD9192 DQF -EBMMUG 009LUEBMDIR09TXT-EBMMUG BAKJKRw<{2KK-ny: | ) 8 v  F ; y 2 3 w grep searches a file for a given pattern. Execute by grep [flags] regular_expression file_listFlags are single characters preceeded by '-': -c Only a count of matching lines is printed -f Print file name for matching lines switch, see below -n Each line is preceeded by its line number -v Only print non-matching linesThe file_list is a list of files.If no files are given, input comes from the terminal -- there is no prompting.The file name is normally printed if there is a file given.The -f flag reverses this action (print name no file, not if more).The regular_expression defines the pattern to search for. Upper- andlower-case are always ignored. Blank lines never match.x An ordinary character (not mentioned below) matches that character.'\' The backslash quotes any character. "\$" matches a dollar-sign.'^' A circumflex at the beginning of an expression matches the beginning of a line.'$' A dollar-sign at the end of an expression matches the end of a line.'.' A period matches any character except "new-line".':a' A colon matches a class of characters described by the following':d' character. ":a" matches any alphabetic, ":d" matches digits,':n' ":n" matches alphanumerics, ": " matches spaces, tabs, and':~' other control characters, such as new-line.'*' An expression followed by an asterisk matches zero or more occurrances of that expression: "fo*" matches "f", "fo" "foo", etc.'+' An expression followed by a plus sign matches one or more occurrances of that expression: "fo+" matches "fo", etc.'-' An expression followed by a minus sign optionally matches the expression.'[]' A string enclosed in square brackets matches any character in that string, but no others. If the first character in the string is a circumflex, the expression matches any character except "new-line" and the characters in the string. For example, "[xyz]" matches "xx" and "zyx", while "[^xyz]" matches "abc" but not "axb". A range of characters may be specified by two characters separated by "-". Note that, [a-z] matches alphabetics, while [z-a] never matches.The concatenation of regular expressions is a regular expression.[These inadequate instructions are reproduced exactly as the authorintended. Use Control-S, then Control-C to stop program. Use ":~"to make spaces.]No argumentsUnknown flagNo patternr%s Pattern = "%s" Illegal occurrance op.Unknown : typeNo : type\%o %c Class terminates badlyUnterminated classClass too largeEmpty classPattern too complex. -GREP-E-%s, pattern is"%s" -GREP-E-Stopped at byte %d, '%c' ?GREP-E-Bad pattern %d %s %d pmatch("%s") byte[%d] = 0%o, '%c', op = 0%o Bad op code %d Cannot happen -- match ͦAF9!9!9~#fòH}! !h$!9~#fòHͷIH}ʹ!9~#fo~#fon&?̀HͷIHH}!9~#fo~#fon&}ͷIH}!͹:J!9~#foR"q!!9s#r!! 9s#r! 9^#V!9~#fòHҟ;! 94 #4! 9~#fo)!9~#fo~#fo!9s#rn&-̀HL!94 #4!9^4#V 4n&! 9s#r}!!Ϳ$!͹!i4 #4!s4 #4!k4 #4!m4 #4!o4 #4! !h$!Z!Z!Zʷ!Zʬ!Zʡ!Zʘp! 9~#fo)!9~#fo!s#r!q^#Vr+sÜ!9~#foLI}ʜ!9~#fo!! 9~#fo)!9~#fo!s#r!94 #4!q^#Vr+s/!9~#foLI}ʹ! !h$*q}!LA!!9~#fo!Tö*q}(|?ͩI*kOH"k!! 9s#r! 9^#V!9~#fòHҶ&! 94 #4! 9~#fo)!9~#fo~#fo!9s#r}ʳ! !9~#fo!ͧ-!9s#r!!9~#foRŒ!9~#fo!6$ó!9~#fo!9~#fo!T!9~#fo!ͧ0:J9!9!!9s#r!9~#fo~#fo}!9>w#>w! !9~#fo~#fo!9~#fo!N%:J9!9!9~#fo! 9s#r*s}X! !9~#fo!9~#fo!N%!w"u! 9^4#V 4n&!9s#r}*̀HͷIH} !9~#fo+̀HͷIHH}¼!9~#fo-̀HͷIH}6!w*uRͷIH}*un&!9s#r̀HͷIHH}!9~#fòHͷIHH}.!9~#fòHͷIHH}J!9~#fòHͷIHH}f!9~#fo ̀HͷIH}ʐ!!9~#fo!9~#fo!9~#fo! ͷ!!!!*u!9s#r!u^#Vr+s! 9~#foR*u*un&sð*u! 9~#fo*̀HͷI}!%! 9~#fo-̀HͷI}! "!"%s!9~#fo"u^*u! 9s#r!9~#fo!!!!!!! 9~#fo!9~#fo!ͳ! 9s#r! 9~#fon&}U! 9^4#V 4n&!9s#r!Ϳ$(! !O! !O! !O! !O!!9~#fo!9~#fo!9~#fo! ͷO!Z!Z!Z!Zz!,!9~#fo!9~#fo!9~#fo! ͷ! 9~#fon&}ʢ! 9^4#V 4n&!9s#r!!!9~#fo!Ϳ$!!Zz!Zʙ!Zu!Zh!Z[!ZNâ^!!!!*s}ʰ!w! 9s#r! 9^#V*uRҦ@)! 9^4#V 4n&H!9s#r! ̀H҇!6! 9~#fo!9~#fo!N%ã!;! 9~#fo!9~#fo!N%=!?!N%:J9!9!9~#fo! 9s#r!!9s#r! 9~#fon&^̀H! 94 #4!!9s#r!9~#fo!*u!9s#r!!! 9^4#V 4n&!9s#rH}\!9~#fo]̀HͽIH}ʳ!9~#fo\̀H! 9^4#V 4n&!9s#r}·!A! 9~#fo!9~#fo!9~#fo! ͷ!9~#fo!Ϳ$!ð!9~#fo-̀HͷIH}!9^#V*uR̀HͩIHH}!! 9~#fon&]̀HͽIHH}<! 9~#fon&}ͽIH}ʚ*un&!9s#r*u!s!9~#fo!! 9^4#V 4n&!9s#r!Ϳ$!ð!9~#fo!Ϳ$!(!9~#fo]̀H!X! 9~#fo!9~#fo!9~#fo! ͷ!9^#V*uR!9s#r!̀H.!k! 9~#fo!9~#fo!9~#fo! ͷ!9~#fo}`!{! 9~#fo!9~#fo!9~#fo! ͷ!9~#fo!9~#fos! 9~#fo-J9!w[uRڝ!!%!u^4#V 4!9~#fos:J9!9!LA!! 9~#fo! 9~#fo!9~#fo!9~#fo!v%!LA!! 9^#V!9~#foR!9~#fon&!9~#fo!9~#fo! 9~#fo!v%!!%:J9!9!!9s#r!!9s#r!w!9~#fo!!9~#fo! +}ʡ!w! !9~#fo!͋?! 9s#r}!s!94 #4!!9s#rH}*oLIHH}!9~#foLIH}*oHH}ʞ!94 #4*iLI}ʞ*kH}C!9~#foH}c!9~#fo!$!!9s#r*m}ʇ!! 9~#fo!9~#fo!N%!!w!9~#fo!N%v*i}*kH}ʿ!9~#foH}!9~#fo!$!!9~#fo!9~#fo!N%:J9!9!w!9s#r!9~#fon&}H'!94 #4!w!9~#fo!N}E!-J!-J9!9!9~#fo!9s#r*s̀Hґ!!9~#fo!9~#fo!N%!9~#fo! 9s#r! 9^4#V 4n&!9s#r̀Hʥ#*s̀H1! !9^#V!9~#foR!9~#fon&!9~#fon&!9~#fo!9~#fo!9~#fo! 9~#fo!9~#fo!N%!9~#fo*#!9^4#V 4n&!Ϳ$!9^4#V 4n&̀Hq!-Jâ#!w!9~#foRʍ!-Jâ#!9~#fon&}ʦ!-Jâ#!9^4#V 4n&}!-Jâ#!9^4#V 4n&! 9sn&0̀HIH}! 9n&9̀HͩIH} !-Jâ#!9^4#V 4n&!Ϳ$! 9sn&àHIH}S! 9n&z̀HͩIH}^!-Jâ#!9^4#V 4n&!Ϳ$! 9sn&àHIH}ʤ! 9n&z̀HIH}ʯâ#! 9n&0̀HIH}! 9n&9̀HͩIH}!-Jâ#!9^4#V 4n&! 9sn&}ͷIH} ! 9n& ̀HͩIH}+ !-Jâ#!9^4#V 4n&!Ϳ$! 9s! 9^4#V 4n&H!9s#r! 9~#fon&̀H!!! 9~#fo! 9s#r!9~#foR!9s#r! 9~#fo!9n&n&̀HIH} ! 9~#fo!9n&n&̀HIH} ;!#!! 9^4#V 4!9n&n&̀H#!;!!9^#Vr+s̀H;!h !9~#fòHͷI!9~#fòHÌHl!!-J!9~#fòHŸ!!9~#foR! 9~#fo! 9s#râ#! 9~#fo!9~#fo!N! 9s#r! 9^4#V 4n&̀H!!! 9~#fo}!!9s#râ#! 9~#fo!9~#fo!N!9s#r!!9~#foR1"!-J!9~#fo!9s#r!9~#fon&H}y"! 9~#fo!9~#fo!N! 9s#rH}ʒ"! 9~#fo!9s#rB"! 9^4#V 4n&̀Hʭ"Ò"!9^#V!9~#foR"! 9~#fo!9~#fo!N! 9s#r}"-J!9^#Vr+sí"!-J!*! 9~#fo!9~#fo!N%!:!%â#!Z1"!Z!!Zʢ!!Z. !Z. !Z!Za!Z!Z!Zʩ!Zʐ!Zt!Z=#â!9~#fo-JFile %s: %s: Cannot open. ?GREP-E-%s Usage: grep [-cfnv] pattern [file ...]. grep ? for help %s9!#!9~#fo!9~#fo!N%:J9!LA!#!9~#fo!9~#fo!9~#fo! v%:J9!LA!#!9~#fo!9~#fo!9~#fo! v%!LA!#!9~#fo!v%!!<:J9!9~#foÀHIH}$!9~#foZ̀HIH}%!9^#V! !9s#r!9~#fo-J9!LA!$!9~#fo!9~#fo!9~#fo! v%!!<:J9!_+!9!9~#fo!9~#fo! %:J9!9~#fo"t%!%! 9! 9~#fo!9~#fo! %:J9*t%!9~#fo!ͽ1:J9!9!@9~#fo"%!B9~#fo"%*%n&}\+*%n&%̀H4+!"%"%"%"%!"%! 9"%!%4^# 4Vn&-̀HO&!"%!%4 #4*%n&!>}ʯ&*%n&0R"%LI"%!%4^# 4Vn&!>}ʯ&! [%H*%n&0R"%v&*%n&.̀H&!"%!%4^# 4Vn&!>}&! [%H*%n&0R"%&*%n&!Ϳ$)!%~_w#~Ww~#foIcF*%!=D)!"%O'!"%O'! "%!%~_w#~Ww~#foI!9*%!9~#focF*%! ="%!sD)!%^4#V 4!%~_w#~Ww^#Vs*%!sD)*%n&!%s!%4^# 4Vn&!Ϳ$×(!%~_w#~WwcF*%!=þ(!"%'(!"%'(! "%!%~_w#~Ww*%!9~#focF*%! ="%!sþ(!%^4#V 4!%n&s!%^4#V 4*%n&s*%!sþ(!Z!(!Z(!Z(!Z'`(D)!%~_w#~Ww~#fo"%!"%D)!%^4#V 4*%n&s*%!sD)!Z(!Z'!Zʜ'!ZI'!Z@'!Z7'!Z'(*%}R)*%Y)! 9Y)"%!D?"%*%H}z)*%LIHH}ʔ)*%n&-̀HͷIH}ʾ)!>9~#fo!%^4#V 4n&!9^#V!J*%H})*%[%̀HͩIHH})*%̀HͽIH})*%**%*"%*%LIH}"**%[%̀HIH}k*!%^#Vr+s[%̀Hk*!>9~#fo*%}T*!0Z*! Z*!9^#V!J'*!%^4#V 4n&!%sn&}**%H}ʚ**%LIH}ʢ**!>9~#fo!%n&!9^#V!J!%^#Vr+sk**%H}**%[%̀HIH}1+!%^#Vr+s[%̀H1+!>9~#fo*%}+!0 +! +!9^#V!J*Q+!>9~#fo*%n&!9^#V!J!%4 #4%:J9!LA !9~#fo!ͽ1-J9!9~#fo"}+!9^#Vr+s}(|?ͩIH}+!9~#fo!>,"{+̀HͽIH}+!}+^4#V 4*{+sn& ̀H++Ì+*}+!s*{+̀HͷIH}#,!9^#V*}+RͷIH}.,!9,!9~#fo9,-J9!9~#fo!!-"<,!9~#fo~#foH}s,*<,-J!9~#fo~#fo}ʩ,*<, ̀H¦,!9~#fo!>,-J,*<, ̀H,!LA ! !ͽ1! -J*<,̀H,!9~#fo^#V!,Hs#r!"<,*<,̀HͷI}-!-*<,H--J9!9~#fo~#foH}D-!-J!9~#fo^#Vr+s}|ڂ-!9~#fo^4#V 4n&H-JÔ-!9~#fo!̓6-J:J9!9! 9~#fon&r̀HͽIH}-! 9~#fon&ẁHͽIHH}.! 9~#fon&àHͽIH}.!-J!LA"-!LA! [}@H[-R].A.!-> w#>w.*-~#foH}Z.].2.!LA! [}@H[-R~.!-J! 9~#fon&ẁH«.!! 9~#fo!A"-/! 9~#fon&àH/!! 9~#fo!A"-̀H.!! 9~#fo!A"-! 9~#fon&b̀H&/!!-cF*-! F/!-G!9!!9~#focF*-! F!9!!9~#fo*-! ͪB̀H~/Ñ/!9n&̀Hʑ/V/!-G!9!!9~#focF*-! F/!! 9~#fo!A"-*-̀H/!-J*-*-s#r*-!s#r*-!s#r*-^#V!Hs#r*-!9~#fon&r̀HͷI}^0!d0!d0^#V,Hs#r! 9~#fon&b̀H¡0*-^#V!,Hs#r*--J9!9!9~#fo~#foH}ʭ1!9~#fo~#foHH}1!9~#fo~#foͷHHH}1!9~#fo!!ͽ1!9~#fo!͍3!9~#fo~#fo!ͭA!9s#r!9~#fo!9~#fo!s#rs#r!9~#fo~#fo}ʢ1!9~#fo~#fo!7;!9~#fo-J!-J9!9~#fo ̀HͷIH}1!9~#fo~#foHLIH} 2!9~#fo! !ͽ1!9~#fo!9~#fo!'2-J9!9~#fo^#Vr+s}|ډ2!9~#fo^#V!@,Hs#r!9~#fo^4#V 4!9~#fosn&-Jä2!9~#fo!9~#fo!ͧ2-J:J9!9~#fo~#foLIH}2!9~#fo~#foHH} 3!9~#fo!9~#fo!1^#Vs#r!9~#fo~#foH}T3!9~#fo~#fo!9~#fos!9~#fo!͍3-J!9~#fo!͍3̀Hr3!-J!9~#fo!9~#fo!ͽ1-J9!9!9~#fo~#foH}ͷIH}3!9~#fo~#fo0H}ͽIH}3!-J!9~#fo~#foH}ʐ4!9~#fo~#fòHͷI!9s#r!9~#fo!s#r!9~#fo}ʄ4!9~#fo!9~#fo!!9~#fo~#fo!9~#fo~#fo! CÊ4!Ê4-JL6!9~#fo~#foLI}55!9~#fo!9~#fo!!!8s#rs#r!9~#fo~#fo},5!9~#fo^#V!,Hs#r!9~#fo!s#r!-J25!-JL6!9~#fo~#fo@H}L6!9~#fo~#fo}|}5!9~#fo!s#r!9~#fo^#V!R!9s#r!9~#fo!s#r!9~#fo^#V!Hs#r!9~#fo!9~#fo~#fos#r!9~#fo}C6!9~#fo!9~#fo!9~#fo!9~#fo~#fo!9~#fo~#fo! CI6!I6-J!9~#fo~#foH}p6!-Jv6!-J:J9!9~#fo~#foH}ͷIH}6!9~#fo~#fo0H}ͽIH}6!-J!9~#fo!~#foR¡7!9~#fo~#foH}57!9~#fo!9~#fo!y6^#Vs#rÞ7!9~#fo!!!8s#r!R‚7!9~#fo^#V!,Hs#rÞ7!9~#fo^#V!,Hs#r6!9~#fo!9~#fo~#fos#r!9~#fo!9~#fo!9~#fo! 9~#fo~#foH} 8!8!8!9~#fo~#fo!9~#fo~#fo! ͪBs#r!9~#fo^#Vr+s}|8!9~#fo~#fòHŒ8!9~#fo^#V!,Hs#rè8!9~#fo^#V! ,Hs#r!9~#fo!s#r!-J!9~#fo^4#V 4n&H-J9!9^#V!9~#fo$I"8!`9"8"8*8}D9*8}D9/9!8^#Vr+s9!8^4#V 4!s!9*8-J9!!9~#fo!R!͆I!"T9*N9"R9!*R9R9!J9!J9"R9"N9s#r!J9!s#r*R9~#fo"P99*P9"R9*P9~#fo"P99*P9*T9^#VRڐ:*P9*T9~#foR;:*R9*P9~#fos#r:*P9*T9~#foRs#r*P9!^#V$I[P9"P9*T9s#r*R9"N9![P9-J*P9[N9R¿:*T9!:"P9!*P9R¿:!-J9:J9!!9~#fo!R!͆I!$I"Z9))!E"V9̀H;!-J*V9"X9*Z9s#r![X9!7;*N9-J9!!9~#foR"\9*N9"^9*\9[^9ͅHͩIH}|;*^9^#V*\9ͅHIHLI};Ø;*^9~#fo"^9Q;*^9^#V*^9ͅHIH};*\9[^9ͅHͩIH};*^9^#V*\9ͅHIHH};;Ç;*\9!^#V$I[\9*^9^#VRc<*\9*^9~#fo^#V~#fos#r*\9*^9~#fo~#fos#r|<*\9*^9~#fos#r*^9!^#V$I[^9[\9R<*^9*\9^#V~#fos#r*^9*\9~#fos#r<*^9*\9s#r*^9"N9:J9!rF:J21474836489!9!9~#foI!9UG~#fo!9s#r!9~#foI!9+G! 9ͯIʆ=!9~#fo! 9cF!9~#fo! =!9s#r!9^4#V 4! 9~#fo ̀HͩI}ʽ=! 9^#V!a R=! 9^#V!0=s!9~#fo-J9!9! 9~#fo!9s#r!I! 9VH]>! 9G! 9! 9^4#V 4!-s!I! 9VH]>!=! 9~#fo!>!9~#fo-J! !9cF!9~#fo! =! 9s#r!s!9~#fo-J9!9! 9~#foIcF! 9~#fo!=-J9!9~#fo0̀HIH}>!9~#fo9̀HIH-J9!9!9~#fo!9s#r!9^4#V 4! 9^4#V 4n&sn&}9??!9~#fo-J9!9!!9s#r!9^4#V 4n&}ʀ?}?!94 #4Z?q?!9~#fo-J9!9~#fon&H}ʾ?!9~#fon&!9~#fòHͽIH}?!94 #4Í?!9~#fon&}?!9~#fo?!?-Jon&rͶRa}i! 9~#fon&wͶRaa}j! 9~#fon&aͶRa}j!!"i!! [%3[iRnjRj!i>  *i~#fo}kjnjCj!! [iRڏj!! 9~#fon&wͶ! 9~#fo!x"ik! 9~#fon&k!! 9~#fo!s"iͶk!9~#fo!x"i! 9~#fon&bͶ*9!9!@N:}@= Jy J)G(~ Jw#####< JJ99>2A!9!@:}@)G~(  J>F:A(p#2A6#^V"?E:A([?< J*? ]T6< *?6 J*? w#w#w#w[AJ9!9nf} =nfNF  ~= ~ > w# y JR JE:{@ J!@)RF J#?͠E^V "?nf"?S?!"?[?! Y!B[?R8,"?!? KB*? "?*?S?4 4*?} *? !? K?[? "?*?^V:*?++r+s+q*?-J9!9nf}  JR08}(0nf^V S?^#{ *?-JE:{@ J!@)RN J#?͠E^V "?nf"?S?!"?y *?R0[?!!? !BMD*?B0K?!"?*?"?[?"!BR 4 4 J*? "? >O*?}pD^V:*?++r+s+q*?-J (( ͗E@G:(6p>E.('ZE&{E(#* 6?͗Ew{E#6 >E#6 #~?  y =_.:;<>a{_N#^#V##>!O!!sr?J9!9[ER!9~#foR J J[ER J!9^#V*E"E-J9!9~#fo"E:J!9!~6#GoT]#(WF(6 (WF !9!X+ goB9!uF"J9!9~!@)R8G:{@8~(~ ~w~w~w#"J ~w~w~w!#!6~'?w~&w>wI+~+NGuGGJ!JI+~+NGyuG!Jx!IGy!JGѯ !JG#GJ!IBK͎H0 J!IBKH?!JG!J###Ow#yw#yw#ywJO#y#y#y!J~ ~###|!+J###!J{ozgJ###!J{ozgdHybH? FO+++zHRJ###!JJ~/#!J}/o|/gJ###!J{ozgJ###!JMDzz(!Rx(!BDM&I!RMD!x)0y)0ɯ ###}!#MDz(!Rx(!BDM>!jjB0 ?= jMDzTI!R|TI͆I!+~###!+!#!+}J|kb!+}J|kb(>!#~#fos#r!9~-JJ!J#!+}J|kb!+}J|kb(>!#~#f 12 months, but one thousand nine hundred years out of date. . .  format XAM edi th file an APPEN i ever tim yo wan it An i al you'r afte i insertin fe nea character i text i migh b simple t us th CONFI utilit t chang th definition o th numeri keypa t thos character yo wan t use. ================================================================= (c COPYRIGH 198 B EZR SHAPIRO N KAYPR USERS GROUP 213 N.W EVERET ST. PORTLAND O 97210 (503)-222-9050 AL RIGHT RESERVED N REPRODUCTIO B ANgrep searches a file for a given pattern. Execute by grep [flags] regular_expression file_list Flags are single characters preceeded by '-': -c Only a count of matching lines is printed -f Print file name for matching lines switch, see below -n Each line is preceeded by its line number -v Only print non-matching lines The file_list is a list of files. If no files are given, input comes from the terminal -- there is no prompting. The file name is normally printed if there is a file given. The -f flag reverses this action (print name no file, not if more). The regular_expression defines the pattern to search for. Upper- and lower-case are always ignored. Blank lines never match. x An ordinary character (not mentioned below) matches that character. '\' The backslash quotes any character. "\$" matches a dollar-sign. '^' A circumflex at the beginning of an expression matches the beginning of a line. '$' A dollar-sign at the end of an expression matches the end of a line. '.' A period matches any character except "new-line". ':a' A colon matches a class of characters described by the following ':d' character. ":a" matches any alphabetic, ":d" matches digits, ':n' ":n" matches alphanumerics, ": " matches spaces, tabs, and ':~' other control characters, such as new-line. '*' An expression followed by an asterisk matches zero or more occurrances of that expression: "fo*" matches "f", "fo" "foo", etc. '+' An expression followed by a plus sign matches one or more occurrances of that expression: "fo+" matches "fo", etc. '-' An expression followed by a minus sign optionally matches the expression. '[]' A string enclosed in square brackets matches any character in that string, but no others. If the first character in the string is a circumflex, the expression matches any character except "new-line" and the characters in the string. For example, "[xyz]" matches "xx" and "zyx", while "[^xyz]" matches "abc" but not "axb". A range of characters may be specified by two characters separated by "-". Note that, [a-z] matches alphabetics, while [z-a] never matches. The concatenation of regular expressions is a regular expression. [These inadequate instructions are reproduced exactly as the author intended. Use Control-S, then Control-C to stop program. Use ":~" to make spaces.] plus sign matches one or more occurrances of that expression: "fo+" matches "fo", etc. '-' An expression followed by a minus sign optionally matches the expression. '[]' A string enclosed in square brackets matches any character in that string, but no others. If the first character in the string is a circumflex, the expression matches any character except "new-line" and the characters in the string. For example, "[xyz]" matches "xx" and "zyx", while "[^xyz]" matches "abc" but.indent 5 .top 2 GREP Documentation Page -#- .end .indent 5 Notes on the undocumented program "grep". Elbert Branscomb 8/84 <<< ->> This "grep" is a fairly full blown, semi-orthodox version of the unix utility of the same name. It searches a text file for lines containing a string that matches a specified pattern (or for lines that don't match) and prints out the lines. It will search more than one file at a time, and will report which file it found the matches in. You can also invoke the command with a number of different "minus" flags to control its operation. >><< The basic command line format is: grep pattern filenames.... so that grep sat letter.txt program.doc <<< ->> would print out all lines in the files "letter.txt" and "program.doc" which contain the string "sat", including those with the words "landsat", "satisfied", etc. One important difference from the UNIX version is that this program ignores case. It is forced to do so because of CP/M's extremely regrettable behavior of converting all characters on the command line to upper case. The important thing about grep is that it allows you to look for a wide variety of "non-literal" patterns using a number of wild card and context specifiers. Grep recognizes a large subset of what the computer zombies call "regular expressions". This grep contains a help text which is sent to the terminal when you type the command: grep ? This text is shown below (between the two lines of "*" symbols): >><< ********************************************************************* <<< ->> grep searches a file for a given pattern. Execute by grep [flags] regular_expression file_list >><< Flags are single characters preceeded by '-': -c Only a count of matching lines is printed -f Print file name for matching lines switch, see below -n Each line is preceeded by its line number -v Only print non-matching lines The file_list is a list of files. If no files are given, input comes from the terminal -- there is no prompting. The file name is normally printed if there is a file given. The -f flag reverses this action (print name no file, not if more). .new The regular_expression defines the pattern to search for. Upper- and lower-case are always ignored. Blank lines never match. x An ordinary character (not mentioned below) matches that character. '\' The backslash quotes any character. "\$" matches a dollar-sign. '^' A circumflex at the beginning of an expression matches the beginning of a line. '$' A dollar-sign at the end of an expression matches the end of a line. '.' A period matches any character except "new-line". ':a' A colon matches a class of characters described by the following ':d' character. ":a" matches any alphabetic, ":d" matches digits, ':n' ":n" matches alphanumerics, ":~" matches spaces, tabs, and ':~' other control characters, such as new-line. '*' An expression followed by an asterisk matches zero or more occurrances of that expression: "fo*" matches "f", "fo" "foo", etc. '+' An expression followed by a plus sign matches one or more occurrances of that expression: "fo+" matches "fo", etc. '-' An expression followed by a minus sign optionally matches the expression. '[]' A string enclosed in square brackets matches any character in that string, but no others. If the first character in the string is a circumflex, the expression matches any character except "new-line" and the characters in the string. For example, "[xyz]" matches "xx" and "zyx", while "[^xyz]" matches "abc" but not "axb". A range of characters may be specified by two characters separated by "-". Note that, [a-z] matches alphabetics, while [z-a] never matches. The concatenation of regular expressions is a regular expression. [These inadequate instructions are reproduced exactly as the author intended. Use Control-S, then Control-C to stop program. Use ":~" to make spaces.] ********************************************************************* Some elaborations on these instructions follows. << ->> 1. Grep picks out the longest string within a given line that matches a given pattern. Contrary to what the instructions seem to imply about the ability of the special character ":~", to match a "new-line" symbol, I find that no pattern can be matched if it extends beyond the end of a (logical) line. This is in agreement with the unix grep. <<  ->> 2. Many of the special characters grep uses as magic symbols ".", "*" etc. are symbols you would sometime like to have grep interpret literally in a pattern. The backward slash "\" is used as a "quoting" device to indicate that the next symbol is to be taken literally. For example, the pattern: ab.cd .new would match "abpcd", "ab cd", "ab.cd", "ab{bd", etc, whereas the pattern: ab\.cd would match only "ab.cd". << ->> 3. The combination ".*" means any number of any symbols, so the pattern: ins.*lu.*s would match the word "insalubrious" as well as the string: "insulation is a lucrative business" if it was all on one line. It would also find the string "INSLUS". << ->> 4. The symbol "-" means that the symbol preceding it is optional in the pattern. For example the pattern: sig-n would match either "sign" or "sin", and find: sincerely, sign, design, sin, cosine, etc. << ->> 5. A pattern must be a string of contiguous "non-white" symbols, so spaces and tabs cannot be included literally. I don't believe this version of grep allows tabs to be distinguished from spaces in a pattern, but the symbol ":~" does match either of them. So the combination: :~+ would match any combination of one or more tabs and spaces. Very useful. (Note, TMAKER will not insert the ascii code for the "tab" in text, and chokes on its presence--except that when tmaker is saving the tab settings it does so by putting ascii tab characters in a new, otherwise invisible first line of the file. TMAKER does tabbing by inserting the correct number of "space" symbols, like a typewriter). 6. The switches can be strung together: grep -cv pattern filenames will count the number of lines that do not contain the pattern. The switch "n" is quite useful because you would often like to know where in a file the string was found, instead of just seeing the lines containing it. The "f" flag turns off reporting the name of the file in which the matches are found. 7. The "^" and "$" symbols only have their magic meaning when they appear as the first or last symbol, respectively, in the pattern. They force the rest of the pattern to be "anchored" at the corresponding position in a line. For example the pattern: ^\..+ calls for a string which starts at the beginning of the line and is of the form: "period followed by one or more of any character". It could be used to call out all TMAKER design commands. Note that we had to use the "\" symbol to "escape" or "quote", in other words to turn off the magic meaning of the first period ".", so that it would be searched for literally. 8. The "class" defining mechanism using square brackets works like this. The pattern: b[ai][dg][dg]er would find "bidder", "badger", "bagder" (sic) etc. Similarly, the pattern 198[0-4] would find all strings of the form "1980", "1981", "1982", "1983", and "1984". 9. Note that the pattern: :a+tt:a+ously would let you find any word that has two "t's" in the middle and ends in "ously". The useful thing about programs like "grep" is that you can put into the searching pattern (almost) any information you have and it will do the best it can. Patterns of the above kind could be used to search a dictionary for the correct spelling of some word you can only partly remember. And unlike looking up words in an ordinary dictionary, you don't have to know how to spell the first part of a word to find it.  would be searched for literally. 8. The "class" defining mechanism using square brackets works like this. The pattern: b[ai][dg][dg]er would find "bidder", "badger", "bagder" (sic) etc. Similarly, the pattern 198[0-4] would find all strings of the form "1980", "1981", "1982", "1983", and "1984". 9. Note that the pattern: :a+tt:a+ously would let you find any word that has two "t's" in the middle and ends in "ously". The useful thing about programs like "grep" is that you can put into the searching pattern (almost) any information you have and it will do the best it can. Patterns of the above kind could be used to search a dictionary for the correct spelling of some word you can only partly remember. And unlike looking up words  DIAL is an extension to any terminal program allowing 3 dialing options and then the automatic load and execution of the terminal program itself. Of course the program that is loaded does not have to be a terminal or 'modem' program. I have had occasion to load and run 'wash', 'osd' and other utilities after dialing. Features and functions: 1. Continual dialing of a number or list of numbers from a file until one answers. 2. Searching of a range of numbers for a carrier. 6. Z80 code. 7. Typing of files. 8. Directory with disk system reset. This program will only run on z80 based machines. As distributed DIAL will run as-is on an Osborne-1 double-density machine with a Hayes Smartmodem connected to the rs232 port. A patch-list follows which should allow other auto-dial modems to be used. Other patches are indicated for video control on non-Osbornes. I would appreciate hearing from anyone who gets this program up and running on other hardware combinations as this will allow me to update DIAL towards a more universal version. Patches: ------- 106h = screen/keyboard iobyte value (assigns CON: to screen/keyboard) 107h = modem (rs232) iobyte value (assigns CON: to rs232) 108h = 5 byte escape or 'off-line' string (must end with 0) 10dh = 10 byte disconnect string (must end with 0) 117h = 21 byte modem initialize string (must end with 0) 12ch = number of characters in (terminal) program name to load with X option. 12dh = 10 bytes for terminal program name (must end with a 0) 137h = 5 byte clear screen string (must end with a 0) 13ch = 4 byte delete cursor string (your terminal's hex sequence to delete from the cursor to the end of the line) (must end with a 0) 141h = 6 byte dial string (your modem's command string to dial the number that follows) The following is an assembly listing of the patch area which you could modify with the values you need and after assembling it overlay the .hex file onto dial.com using ddt. After modifying dial.com enter: A>SAVE 31 DIAL.COM org 0108h ; conin: db 10010100b ;Screen/keyboard iobyte value ; rdrin: db 10010101b ;Modem (rs232) iobyte value ; escstr: db '+++',0,0 ;escape or 'go off-line' string ; hngmsg: db 'AT H0',13,0,0,0,0 ;disconnect string ; dinit: db 'AT T S7=15 ' ;modem initialize string db 0,0,0,0,0,0,0,0,0,0 ; filrun: db 5,'MODEM',0,0,0,0,0 ;name of program to run ;1st byte MUST be length of name ; clrscr: db 26,0,0,0,0 ;clear screen string ; dellin: db 27,54h,0,0,0 ;delete from cursor to end-of-line string ; dile: db 'ATD ' ;dial code ; ;........ end As coded above, a Smartmodem with an Osborne will run dial as described. The program is pretty well self prompting but a brief explanation of the functions follows: 1: The repeat option prompts for the number to dial. The number is dialed until a carrier is detected or the user aborts with ^C. 2: The file dial option will dial numbers sequentially from a file. At the end of the file the program loops back to the start again. This continues until a carrier is detected. The file must be structured as follows: #231-9538;comments etc. ie a # sign followed by the number, followed by a ; (semicolon) followed by any comments. Comments may continue for as many lines as you like as the program ignores all up to the next # sign. Example: #231-9538;.......RCP/M 1 Toronto #231-1262;.......RCP/M 2 Toronto #232-2644;.......Heath Toronto #423-3265;.......ETI Toronto #223-2625;.......Pet UG Toronto #624-5431;.......PSI Word-Pro Toronto #499-7023;.......PC Canada Toronto #222-3626;.......Nightowl Toronto #226-9260;.......Willowdale RCP/M, Toronto I keep two files on my modem disk, 1: phn.lst Which is a list of all phone numbers I have for Bulletin Boards &/or RCP/M Systems. If I want a number from a file I just use the Type option and get it. 2: phn.dil Which has those more commonly called numbers in it. If I want to just dial until I get a carrier I run the File dial option with the phn.dil file as the specified file. 3: The search function prompts for area code and whether or not it is long distance and then searches that area for carriers. If one is found it is stored to a disk file structured as shown for number 2: above. 4: Type will type a file one 'page' at a time. 5: Directory displays the directory for the selected drive and resets the disk system. (Any disk action also relogs the drives) 6: "M" will allow you to temporarily change the name of the program to be loaded when a carrier is found. 7: "I" will allow the temporary change of the modem initialization string. 8: "X" will jump to the named program without waiting for a carrier. 9: "K" will delete a file from the specified drive. When a carrier is found for all but the search option a bell is sounded until a key is struck at which time the named program is loaded. Simon Ewins, 08/13/83 676 Oriole Parkway, Toronto, Ontario. Phone: 416-484-9427 -------- end -------- }o|g"+>2-͝*+:-tqF!"+|pE}p͝*+ͫ"+}o|gh"+}oiG!m!}$.*+?ì+++AT H0 AT T S7=15 MODEMTATD =T+U B+ B+ $ 5+ U '+>2(=>2)=T+2)=@ >2)=T!7~~#> ~!<~~#!9" 1 *.|g"g!:w !> 2`͍WDIAL.COM (c)1983 Simon J. EwinsW R: Repeat dial routine F: File dial routine S: Search dial routine D: Directory routine K: Kill a file T: Type a file X: Execute named program I: Modem initialize string M: Modify X program name H: Hang-up ^C=Quit to CP/M. Select? (R(8F(qS,Dʫ Kʹ T I+ X M Hw >D2`W Enter number to dial: !G>~#̀:a>F2`W Enter filename: #>i2b͍i#OW Dialing from fileW: !j]W !G/#(/;(w#>ẁ:a(O;Oç;O>S2`͍W Filename? >o2bi)OW Area code to search: >!G:GW Is this area code long distance? ( 2c~W Enter a 7 digit # to start search: !J>:J:cY !PQ >12G>2R > 2G2H2I͍W Number Search Routine Saving numbers to fileW: !j]W ̀:aC I?͘>#5OW Saved: !G~( 5O~#>;5O> 5O> 5O" AW > 2`W NOTHING?:cY !K!J~<:(wk>0w~<:(wk>0w~<:(wk>0w~<:(wk>0w~<:(wk>0w~<:(wk>0w~<:k>>5OAO> 2a> ~!A~( ͒~#> ͒:`S W W : Try #>2d2e:w(C(5N(1*d#"d8 :w:w(t2f:w:fC(D2a2aW CONNECT:`S( (#:w:`F ;O >~2a> ~͚WDisconnecting...... > ͒?!~(͒#?! ~(͒#?:`S!G>:G!Gix( 2i:`S  >O(W +++ Can't find file. +++D!!!  !!C !9 !0 !' !  !5  !K   !h !> ~͚]D:bi ;A++ Undefined error ++++ File not open ++++ Disk full ++++ Input File not found ++++ Attempted read passed eof ++++ Directory full ++++ Error in closing file ++++ File was already open. ++ It is now closed, please try again.>͒v W File name to kill? >2dW File name to type? >i2b͍i#O/ (~ m ( ̽ d O;OW Done. Press any key for menu: ͽ ;O:d<2dWPress any key for next page or ^C to abort: >2dͽ d > ~͚:w(:w* W Loading file: !-]W.COM......., *g. *g.>w*g.|w*gw# x W Temporary modem init string change. To make a permanent change see .DOC file. Current string: !]W Enter new initialization string: >N0>2!OW ++ ERROR - Entry too long.DW Temporary modem program change. To make a permanent change see .DOC file. Current program: !-]W Enter new program name (no extension): >N 2,>2-.!--O!~(͒#> ͒:w?!!64>2 @"@͍ 7:@6x7*@##~#6+ü4m:/7C=m:1:3 7*@4 bk6 ʝO K) Q7 KB7> K> K: > @ ʝ2@O 7@ p77W4Y4!C=:@O~ʠ7 #Ô7!ɷ #"?~(w/"@d2 ,ʾ7w+2D W Directory for which drive? >N xA2[~2[AGDW Drive : = %%W files with͍WK free -------------------------------------- >;0>2[#yG]:[<2[0( W | gW Press any key for menu....(7?7??W >2[!>~(~# 2:ͭ>;???????????xx2=*O9"=:=2=@ !@Ns#Fr͡9ͪ9q#p*@^#V+*2̓:ͭ>;"***">*z$ |c##~2#~2#~2#^#V#"#^#V#"È*.;^#"#~2#~2#^#"2*ڥW+}ʶz Üi`:)= ^###~))))!o&:/oկ2u"!"u(73>*DMɯ+`o&~s*#"*z"*| s>~#z>?2u""!"u(Ͷ3£(`o&~ss*#"*z"*| sn*|6DM* + 'z x>2x"`i"*s#r#! xR*"*|g}o""*#"*}|i*"**}o|g"}|}*"y}**^Õ*DM*"*"** yW DIRALPHA -- Pointer Error*~#~*z*^#V*z"*^#V!z*##" y*DM+) +) Nq#Nq*DM+) +) N#F^#V`i: # # ~O#~?O#2"x? #8 8D8~w  ~:]@byy: w:G~y>xʩ ~/W~wʢDʢ~wÁ!""x ~~w*#"*z"ü ü*DM>22$կ~#:!,|!| ~A:A5<2#~:}?R2#~:}2G~#:p02 2OxGTx22}~:„#~,ʏ!ҧ >?”:G:O>~.»#ÚÚ*>?##> QO~!=_.:;,<>ɾ|}YmGGoGøGG\GyͺQBQCQDQEQHQLQMbSPcPSWQIQR bBCbDEbHLbAFjIXDjIYdrNZqZrNCqPrPOrPELDIAL RELghijDIAL PRNDIAL MAC01237FKNPQRSTUVf IAL MACRELCRFPRNJ#)y<=B3 SSc=@1=U2TUTc9@A!13U#/uAVWX| !d^#Vbk$w#*h*l*n!*j>*d~4>*hͲK>V>*l*ps#r*t6*d6*f~ʉ>*jͲʟ>*n*rs#r*v6*f6*d~>*p| ~2x#*ps#r*t5*l*ps#r*t6*p6#6:x>2x*f~$>*r:xw#*rs#r*v5T*n*rs#r*v6>:x*d62x>*v~ʔÄ*f6*jª>:xw ><24"2*2m*ʻ n  ʩʘʞvhw# **w#5*6*2*~*~ ʔʔ #À*%y%Þ6 #6 #:4**+~* ** +:4>~> ~>~6:4*2z{>~G:4x "~ 5,>#~l pyG>GO:4> ~Fitdn: ld a,13 call pout## ld a,(conin) ld (iy),a ret ; ds 100h stack: ds 2 ; ; ;........ end  ld a,1 call bbline## cp 0 jp z,sa2Q !R~#o|g6:N!S~Nw#A!S:R]~#ʱ ʛ , ʈ ʍʍʑbb byb byG>GO> ~§b2>2'd }0~n}o|g }o|gy:> ~ɯ2y0~> ~> ~ ~~~~ ~ ~>^~@~*.f/*. zO*. O*.x2y22:_:_ Y X OGa{_HW:H/W:r# x:HAzLI+|H{ozgt7}o|gtq}o|g}o}|g}o}o|gtqß|g}otq}o|g}o|g}o|g#}/o|/gկ2-!"+ͯ*+}o|g"+>2-͝*+:-tqF!"+|pE}p͝*+ͫ"+}o|gh"+}oiG!m!}$.*+?LIST.COM AS OF 04/20/79 $ !9"1!m ^! ^0:0DM)) )o<$<\<ƒ9++OPEN FAILED++$|ʯʙ ƒ+Ã9++LINE # TOO BIG++$ ?*ï9++INVALID STARTING LINE #++$?*D|#\?!~#"D_ *>jjjjjjjjkhkk kk k k kHkYkHk_kckHkikmkskHk{kkkkHkkkKkkkkkkMkkkkkQkkkkkclhllll9lCl9l+l9l\l_lhlil`jlnlwlxl`yl{l Invalid Format Item -----LIST.COM----- by Ward Christensen OVERVIEW: Lists a file, with an optional starting line number. Doesn't quit until EOF or control-C. Prints an error message if too high a line number was specified. USAGE: LIST fn.ft To list the file LIST fn.ft nnnn To start at line nnnn LIST.COM does not abort when any key is pressed, as does TYPE. This was done to make it usable over phone lines where when using TYPE an unexpected glitch could stop a listing and you would have to start all over again. LIST.COM itself checks for control-C (to cancel) and control-S (to suspend output). DEPENDENCIES: NONE < <7>{_zW}o|g=<|g}o3 âAN  Page  1  1  == No file by that name on this disk == $== No file requested == $== No "*" or "?" please == $ LISTT Pgm v1.0 10/17/82 Do you want tear tabs to use roll paper? (Y/N): Number of spaces to augment left margin (0-99): Ignore FF (Y/N): Heading/date is: Start at page : Quit at page : HIGHEST PAGE IS: !9"1!V7!~!~:!#?#~ !\ #~?  :g2o|g"!\ $222*" "<͂# :ʿ Et2 \ d ʂ ʼ> ?:2:<26ҙ> ͧd:<26ҙ> ͊2 K4!3-j#:> t:¼2>^t@t) !A!7x> +> w͘>͘!#~ +4+ &!#~ >+n+ K2 !7-K!?-j* *}|!"* {zҺ* ´*"Æ*" !"* * }>*#" 9*r!>A2ɯ22: 8!~ DF>0 t:G:j!-!7!; £Ð ڐw#0ڻ:һxڐ Ð>!<~ +~ 0G> +~10G >  !77!7_Y2!77!7!M L:'w#x}' '!77!7! ʂp]w#x] ]!77!7! ʸ¦Ów#xړ Ó!77: U> ͧ:<26> ͧK!A!t7_Y2K!?"!77  ʿ ~# $~t#-~͘#7~ͧ#A!->-͊:G> ͊[>-t!-2 ʊ ʊ:<2͑ͧ_: {__: LISTT -- File utility program for printers -- 10/17/82 Irvin M. Hoff Los Altos Hills, CA 94022 "LISTT" is a printer utility program that lists any requested file on your printer. (The CRT also displays what is being printed). The name was selected so it would be easy to type, easy to remember and be illus- trative of its capabilities. Include the name of the file (and its extent) that is to be listed when asking for the program: A>LISTT HELLO.ASM A menu then appears asking several questions: Do you want tear tabs to use roll paper? (Y/N): (1) Number of spaces to augment left margin (0-99): (2) Ignore FF (Y/N): (3) Heading/date is: (4) Start at page : (5) Quit at page : (6)  1) A "Y" gives tear tabs for roll paper. Any other reply (including RET) defaults to fanfold with no tear tabs. 2) Ability to include 0-99 spaces at the left margin for those printers without adjustable margins. A RET de- faults to no spaces (normal left margin). Rejects any non-numeric characters except RET. 3) Responds to form feeds unless a 'Y' is typed. Outputs an appropriate number of line feeds enabling printers without form feed to paginate correctly. 4) Heading desired (such as current date, etc.) Up to 124 characters may be used. The name of the file plus cur- rent page number near the right margin are both automatic. A RET defaults to file name and page number. 5) Asks for starting page (defaults to page 1). 6) Asks for page to stop at (defaults to end of file). NOTE: There are two options which may be user-set. These are locations 0103 and 0104. They may be set with "DDT", "SID" or by editing and reassembling: 1) PAGCOL -- sets the column the Page number starts at. Some printers have 72 columns total, some 80, some 132, etc. (Byte 0103) 2) TTABN -- Sets the space between tear tabs for roll paper. Some printers have 72 columns, some 80, some 132, etc. (Byte 0104) Thus you can compensate for various printers and also print any portion of the file you wish. FEATURES: a) Shows on the CRT what is being printed. b) Optional fanfold or roll paper. Adds tear tabs if roll paper is selected. c) Can abort at any time with CTL-C, but finishes the cur- rent line first. d) Can change the location of the Page number for use with printers of 72 columns, 80 columns, 132 columns, etc. (Byte at location 0103, via DDT.) e) Can change the spacing between the tear tabs for use with printers of 72 columns, 80 columns, 132 columns, etc. (Byte at location 0104, via DDT.) f) Can indent up to 99 spaces to effectively provide an ad- justable left margin (many printers do not permit changing the margin). This allows you to easily center any printing. g) Can start on any page desired, saving paper (and time!) if you only wish to reproduce certain portions of a file. h) Can stop at any page desired, allowing the operator to do other things when only part of the file is needed. i) Shows the total number of pages in the file if you intion- ally (or otherwise) ask for a page number that is too high for the file. j) If a heading/date is longer than normal spacing for the page number, it is automatically moved further along. Up to 124 characters may be used for the heading/date. k) An option on the menu allows you to ignore form feed chars. It automatically paginates without form feeds in the text. l) Works equally well on printers without form feed since it inserts the correct number of line feeds to paginate. m) Visually prints control characters imbedded in the text other than CR, LF, form feed or tab. You can thus dis- cover any unknown characters that normally do not print. COMMENT: Line numbers can be added to any ASCII file with PIP.COM and the [N] option: A>PIP HELLO1.ASM=HELLO.ASM[N] Form feeds can be removed with PIP.COM and the [F] option. You can edit CTL-L (form feed char.) into the file to force a new page wherever desired. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  COMPARE.COM VER=01, LEV=00 $ !9"1>xw# 3 l!3\<ʺ<ʿOGb͊FILES UNEQUAL AFTER $  ͿLAST DATA READ FROM FILE 1: $ *-,~   &&_:<2 >(ͫͫ:2>) xs*v:xy*v\¤*vy<2x=o|g~*w,"!~0Y2EOF FILE 1, NOT FILE 2 $ o*:** <2=o|g~:YD8EOF FILE 2 BEFORE FILE 1 $ obFILES MATCH, LENGTH IS $  * sg~*w,"!~0Y2 ڴ0>12x++UNABLE TO OPEN FILE 2$N * BYTES $:YD8EOF FILE 2 BEFORE FILE 1 $ obFILES MATCH, LENGTH IS $  * sg~*w,"!~0Y2 ڴ0>12x++UNABLE TO OPEN FILE 2$N *   >(ͫͫ:2>) xs*v:xy*v\¤*vy<2x=o|g~*w,"!~0Y2EOF FILE 1, NOT FILE 2 $ o*:** <2=o|g~:YD8EOF FILE 2 BEFORE FILE 1 $ obFILES MATCH, LENGTH IS $  * sg~*w,"!~0Y2 ڴ0>12x++UNABLE TO OPEN FILE 2$N * BYTES $:YD8EOF FILE 2 BEFORE FILE 1 $ obFILES MATCH, LENGTH IS $  * sg~*w,"!~0Y2 ڴ0>12x++UNABLE TO OPEN FILE 2$N *  COMPARE.COM This program is included for your convenience, since you will undoubtedly discover several copies of the "same" program that are different lengths, thanks to CATALOG. It simply compares two input disk files for equality and lists the differences encountered. Addresses listed by COMPARE are relative to the begin- ning of the file. Lack of data on a file is indicated by "**" on the listing in place of the byte value. COMPARE may be executed only by specifying the un- ambiguous file names on the CP/M command line: COMPARE FILEONE.TYP FILETWO.TYP I hope you find CATALOG and COMPARE as useful as I have, and invite your comments, suggestions and problem re- ports. SRX Systems 2812 Westberry Dr. San Jose, CA 95132 (408) 926-9411 O1ZA:VV:Wk:X:W/:Y Number of files: $ Number of blocks: $ Number of actual directory entries: $ Number of blocks remaining on disk: $ Number of errors in the directory: $ =    |^#*.7?yOxGxJGyO-82M>d2L2P:MO:LW4x2Myx:Pʇy0_>2PÊ:LO 4y2L:L[:M0_\ Š 6?#ƒ>?2hͩͩʬôÛ *Nw#"N!~:=#!W4!Z_~s#r5 * Block is already assigned to: $ !Y4^#V *O 6?#ƒ>?2hͩͩʬôÛ *Nw#"N!~:=#!W4!Z_~s#r5 * Block is already assigned to: $ !Y4^#V *ODIRCHK [6/8/81] This program is used to verify a directory. The directory is checked to be sure that a group is used by only one file. This can happen when a disk reset is not performed after a new diskette is inserted. DIRCHK is also useful to see if groups of an accidently deleted file have already been allocated to another file. The directory and group numbers (in decimal) are displayed. Also groups used by multiple files are marked. !X4ͷ FILENAME EXT EX RC -------- BLOCKS ------------------------------ $!Z6# xU1Z !Z"N1Z!]> Š 6?#ƒ>?2hͩͩʬôÛ *Nw#"N!~:=#!W4!Z_~s#r5 * Block is already assigned to: $ !Y4^#V *OLINES.COM VER=02, LEV=00 $ !9"1\00>!  ~?l W >#^ : /!:' —  ʑ #‹  W ʢ #™ i`N#FogDM!>))덑o|g =¼ DM!>)) = ^#V) ^#V|g}o _{ozgO{ozgi`N#Fogo&og_{_z#W OK = Y -S {-_ ! s+p+q*  ͼ 2 <2 : ! ڗ  K ! 4Á ! 6: =! ڻ * & NK ! 4œ >3  03} Z; { ) # ;TELL program by Howard Moulton - Milford RCPM ;1-617-478-3693 voice ;1-617-478-4164 RCPM ;This is a small utility used to find out various ;locations of what and where various addresses are ;within the CP/M for which this utility operates. ;Quite useful if your writing software for CP/M, ;but need to find out the EXACT addresses that some ;CBOIS routines are operating when the occasion ;arises that the software CAN'T access it thru ;CP/M, like rewriting FORMAT programs and such ;utilities as those..... ;Any mods or changes or enhancements would be ;appreciated......Howard ; ; BDOS EQU 5 PRINT EQU 9 RDCON EQU 1 WRCON EQU 2 RESET EQU 13 SELDS EQU 14 SEAFF EQU 17 SEANF EQU 18 RESEC EQU 20 ; ; ORG 0100H LXI D,INTRO MVI C,PRINT CALL BDOS CALL CRLF JMP START INTRO DB 13,10,'This is a utility that tells you where' DB 13,10,'your CCP starts, what your BDOS entry add-' DB 13,10,'ress is, and where your CBIOS jump table' DB 13,10,'begins, as well as other useful info.' DB 13,10,'$' ; ;WE'LL USE CPM'S STACK SEEIN WE'RE SO SMALL, WE ;COULDN'T POSSIBLY OVERWRITE THE CCP, WHICH ;WOULD REQUIRE A WARM START.... START LHLD 1 ;GET WBOOT ADDR DCX H DCX H DCX H ;BUMP DOWN TO CBOOT ADDR. ;NOW STORE THE AQUIRED BEGINNING OF THE JUMP TABLE SHLD JMPTBL ;NOW GET THE CCP ADDRESS.... MOV A,H ;GET HI ADDR SUI 16H ;SUBTRACT 1600H MOV H,A SHLD CCPADD ;NOW GOT CCP ADDRESS ;NOW GET THE BDOS ENTRY ADDRESS... LXI D,806H ;GET OFFSET FOR BDOS ENTRY DAD D SHLD DOSENT ;NOW HAS BDOS ENTRY POINT ;NOW TELL THEM SOMETHING ABOUT THE ENVIRONMENT ;WE HAVE FOUND... ;FIRST, TELL WHERE CCP IS... LXI D,CCPMSG MVI C,PRINT CALL BDOS LHLD CCPADD ;GET CCP CALL SWAP ;SWAP THEM FOR NOW CALL SNDH ;NOW FOR THE BDOS ENTRY ADDRESS.... LXI D,DOSMSG ;POINT TO MESSAGE MVI C,PRINT ;AND PRINT... CALL BDOS ;IT OUT.. LHLD DOSENT ;GET DOS ENTRY ADD IN H CALL SWAP ;SWAP THEM FOR NOW CALL SNDH ;NOW FOR THE JUMP TABLE... LXI D,JMPMSG MVI C,PRINT CALL BDOS LHLD JMPTBL  CALL SWAP CALL SNDH ;LIST JUMP TABLE NOW... ;GIVE ADDRESS OF COLD START LXI D,J0 MVI C,PRINT CALL BDOS JMP N0 J0 DB 'Cold start routine:',9,9,9,'$' N0 LXI D,0 ;NO OFFSET CALL SETUP CALL SNDH ;NEXT IN JUMP TABLE... LXI D,J1 ;START LISTING JMP TABLE MVI C,PRINT CALL BDOS JMP N1 J1 DB 'Warmstart routine:',9,9,9,'$' N1 LXI D,3 CALL SETUP CALL SNDH ;NOW THE REST... LXI D,J2 MVI C,PRINT CALL BDOS JMP N2 J2 DB 'Console status routine:',9,9,9,'$' N2 LXI D,6 CALL SETUP CALL SNDH ;THE CONSOLE IN ROUTINE LXI D,J3 MVI C,PRINT CALL BDOS JMP N3 J3 DB 'Console Input routine (waits for char.):$' N3 LXI D,9 CALL SETUP CALL SNDH ;CONSOLE OUT ROUTINE... LXI D,J4 MVI C,PRINT CALL BDOS JMP N4 J4 DB 'Console out routine:',9,9,9,'$' N4 LXI D,0CH CALL SETUP CALL SNDH ;NOW THE LIST DEVICE... LXI D,J5 MVI C,PRINT CALL BDOS JMP N5 J5 DB 'List device out routine:',9,9,'$' N5 LXI D,0FH CALL SETUP CALL SNDH ;NEXT JMP... LXI D,J6 MVI C,PRINT  CALL BDOS JMP N6 J6 DB 'Punch out routine:',9,9,9,'$' N6 LXI D,12H CALL SETUP CALL SNDH ;NOW THE READER.. LXI D,J7 MVI C,PRINT CALL BDOS JMP N7 J7 DB 'Reader in routine:',9,9,9,'$' N7 LXI D,15H CALL SETUP CALL SNDH ;NOW THE HOME DISK LXI D,J8 MVI C,PRINT CALL BDOS JMP N8 J8 DB 'Home disk routine:',9,9,9,'$' N8 LXI D,18H CALL SETUP CALL SNDH ;SELECT DISK ROUTINE LXI D,J9 MVI C,PRINT CALL BDOS JMP N9 J9 DB 'Select disk routine:',9,9,9,'$' N9 LXI D,1BH CALL SETUP CALL SNDH ;SET TRACK ROUTINE... LXI D,J10 MVI C,PRINT CALL BDOS JMP N10 J10 DB 'The set track routine:',9,9,9,'$' N10 LXI D,1EH CALL SETUP CALL SNDH ;SET SEC... LXI D,J11 MVI C,PRINT CALL BDOS JMP N11 J11 DB 'Set the sector routine:',9,9,9,'$' N11 LXI D,21H CALL SETUP CALL SNDH ;THE DMA LXI D,J12 MVI C,PRINT CALL BDOS JMP N12 J12 DB 'Set the dma routine:',9,9,9,'$' N12 LXI D,24H CALL SETUP CALL SNDH ;READ THE DISK LXI D,J13 MVI C,PRINT CALL BDOS JMP N13 J13 DB 'Read disk routine:',9,9,9,'$' N13 LXI D,27H CALL SETUP CALL SNDH ;WRITE DISK .... LXI D,J14 MVI C,PRINT CALL BDOS JMP N14 J14 DB 'Write disk routine:',9,9,9,'$' N14 LXI D,2AH CALL SETUP CALL SNDH ;LIST STATUS LXI D,J15 MVI C,PRINT CALL BDOS JMP N15 J15 DB 'List status routine:',9,9,9,'$' N15 LXI D,2DH CALL SETUP CALL SNDH ;SECTOR TRANSLATE LXI D,J16 MVI C,PRINT CALL BDOS JMP N16 J16 DB 'Sector translate routine:',9,9,'$' N16 LXI D,30H CALL SETUP CALL SNDH ; RET ;POP OFF TO CPM ; ;SETUP DOES SETUP OF NEW ADDRESS - D+E = OFFSET ;FROM LOCATION JMPTBL, WHICH GETS INTO HL FROM HERE SETUP LHLD JMPTBL DAD D INX H MOV D,M INX H MOV E,M XCHG SHLD TMPADR RET ; ;SENDS ADDR IN ASCII TO CON SNDH LXI D,TMPADR MVI C,2 CALL CONV RET ;ROUTINE TO CONVERT BINARY TO ASCII ;Enters with d+e pointing to the byte or word to ;convert and the count in c... CONV LDAX D PUSH D ;SAVE THE ENTRY ADD PUSH B PUSH PSW ;SAVE THE LOWER HALF CALL BINH POP PSW ;GET LOWER HALF BACK CALL BINL POP B ;GET BACK COUNT POP D ;GET BACK POINT DCR C JZ HEX ;JMP IF NO MORE TO "HEX" INX D ;MOV D UP ONE JMP CONV BINH RAR ! RAR ! RAR ! RAR BINL ANI 15 ADI 48 CPI 58 JC AOUT ADI 7 AOUT MOV E,A MVI C,WRCON CALL BDOS RET HEX MVI E,'H' ;GET H IN E MVI C,WRCON CALL BDOS MVI E,'.' MVI C,WRCON CALL BDOS ;FALL INTO CRLF AND RET ; ;SEND CARRAGE + LF TO CON CRLF MVI E,10 MVI C,WRCON CALL BDOS MVI E,13 MVI C,WRCON CALL BDOS RET ; ; ;SWAP ROUTINE - SWAPS WHAT IS IN HL AND STORES @ TMPADR SWAP MOV E,H MOV D,L XCHG ;SWAP 'EM SHLD TMPADR RET ; CCPMSG DB 'Your CCP starts at:',9,9,9,'$' CCPADD DW 0 DOSMSG DB 'Your BDOS entry address is:',9,9,'$' DOSENT DW 0 JMPMSG DB 'Your CBIOS jump table begins at:',9,'$' JMPTBL DW 0 TMPADR DW 0 ur BDOS entry address is:',9,9,'$'e byte or word to ;convert and the count in c... CONV LDAX D PUSH D ;SAVE THE ENTRY ADD PUSH B PUSH PSW ;SAVE THE LOWER   Pö This is a utility that tells you where your CCP starts, what your BDOS entry add- ress is, and where your CBIOS jump table begins, as well as other useful info. $*+++"|g"}"f *}_ *_ *_  "Cold start routine: $6 LWarmstart routine: $` {Console status routine: $ øConsole Input routine (waits for char.):$  Console out routine: $  List device out routine: $' =Punch out routine: $Q gReader in routine: ${ ÑHome disk routine: $ ýSelect disk routine: $ The set track routine: $ Set the sector routine: $!. FSet the dma routine: $$Z pRead disk routine: $' ÛWrite disk routine: $* List status routine: $- Sector translate routine: $0*#V#^",0 B0:;_H.  \U"Your CCP starts at: $Your BDOS entry address is: $Your CBIOS jump table begins at: $  "Cold start routine: $6 LWarmstart routine: $` {Console status routine: $ øConsole Input routine (waits for char.):$  Console out routine: $  List device out routine: $' =Punch out routine: $Q gReader in routine: ${ ÑHome disk routine: $ ýSelect disk routine: $ The set track routine: $ Set the sector routine: $!. FSet the dma routine: $$Z pRead disk routine: $' ÛWrite disk routine: $* List status routine: $- Sector translate routine: $0vNCAT32.ASMn  o! "#$%&')(*+,-./0123456879:;<=?>@ABCDFEGIHJKLMNOPQRSTUVWXZY[\^]_`abcfegdjimlhk|]ZNYˆeu1*3Z*ϻ&ъXTףEIG.gx]d% ;òm?v ғ s9d**1s>ɣe=|ox]d%{2.Ni?Í'kd؉oKd}j(M'LuHzIQFVǷdWG=uOY̿div0:%R>ki!YBg2Nmϻ& oψ'#l#W$}nS^DϻwIRǷIߦu)~/26;.ϻEk3M'h:fddyvlskQg4;2QgIzd?IKd?ZQkl'0GK2?nGI=׈-6\ir\i\M} +#EoR?󮴡7yWJߤ0oAlηo,߮ݕK}~<.ou+jVj;1hw:I?&ZalaGD%F,GKIg=yDϻb+-vb4v2u? YO|-|KL(:2Z#jwI-KY]c0z&âwFV+2ɞ0Z.gwI{$OoP&t[>%Mo]ib #g2ɞ0Z.gwI<&ѽ4N(:VժZUjUUVժZUjUUVժZUjUUVժZUjUUVժzy|![SOk&Z j-[Nvwb6#iJcGW5TV>BGICu^rnua[e˥f|c䯮m7Ūly\'b575-mV{u.oD]rDM6>%IlkUv|V4};7q [n~]~E<>k+v7UQYmrU\+T|o.~j|{]av*f}ɭmkk>}>u+v'Kc7ᱴM\ϻ^e[,w o-~m1gaӯ~w~y*UrGӍZ~o>V]*fKxolE®zo_o4ujmm%tÞ~o>NɪUrGQWE~oϻ;fWm*wXuw6}ۚ*˷"<1Zb5֝f|XMl[/kݩ|"i}Dn1ll9O|wv/߶E~}]_Z^>mcv+k#vwmvmv75*;}+r-fMx'uvkfXϻ^rTNU<,%|.ƥGK}>~X:||mr4Y_mJ?aT[w俻%]rfW*Kbݻ }\o8&NwI:.w7hX[7WXf4\EiwUM|>^;+N~'}7.ǾwIke`%ں|ݤ{܊'iXu>mUrf&W۽+ڊv-WYu%6~|'6Cu4U&;۹Nwm۶u%W7vhhhnv7ik۹*ӴU:1yN~ͥu撷nķκ:1έʕ&?Ky]+;Uڕ|x{5%Εo[e'\Ex&N>kc䯮m7-u7lp.Q[-w oTNUYw71kŕiV_rWѩmZGNE,m߫_:9|vbo{ѮS9jW6]›*;|o4|^u˙ٝ|_(i?֩ܧ.ZŰֲXO*|~ o;YʷEh };|/N]UMܾ>φ{]/Z*M~|sk|ݗ:9};fmm_;owϻZWM~%\l}=yj"LdNlyX5hnft>/_(i?x#>Qva[eEmϺ~S]rfmm%?ź%Y{}5gMse.Z*w]›ݻMVU\[U; _\i窬Sݷ{iϻƺV>>+r-fMx'uvkfXKcM>y-Y_7j0|QҐVqMDD[ j-[||4w*\߷ϚʾgT>fYźY s\urk.h?oE|<ܚ.[q6vf}bt7}E^W6k/#ϻʦGo];sv7{Dz%O'|^uˉfN#{~$UaSeY\h]YeEvb.2yogur䮮nW}ۚ]rÅKd]og|޵%wu+u|#7-W7]TNU|5яoQ[۴TM~1.]r ew/ڊfǬ;ڏ:|޵6 }/Yulk.Mܾ>_?w%Wط3ϷNE[ķѮl7,Tj>nrMY_\boms5U>? % gH4O-M-WN>ϖˆ};<._iەc&X]oEҺN~z>mM?ϫnɚN6WQQҐVG}\aSe˕ca*+rv'7~ϻ~%ٷ.Q[}N~BX%vw4h*/ofW+~|æ,M3V/яkxUdMvuh_(i?x|ʕc햝G_|'|mm%gMswlkboe7b=հhob7ut]UdG$\e[52 _xsUVqefNNWݒ51՝~mrVq[NҲMǮ;W4>%kb;F\ F? % g4R.Zn1ORU/׮l7B.izwIY۝\ܷNٕ|J]Swov%ߩɷsbo[ú?vwo7|XٕXڶ>:vn|Jnz&W%ߩ甪G+N%||4v*f}ɭi>b>کGY1Nw\};hM>w6ګWՅnrk.i:vaV4o^?sJUoյsUv|/NU\|X7k羝]r^>krke&,v7}/_>ko~lmmϻjȸ.Fwۺ{+M_J|۝\Wݒ51՝~meg?}DՅVĢJ=J9y%5rZ*d**=0yى7>=Hw[o$-*LLsʉ7>ͱtd2%aGM4εIs\4(E|9֛g<\#/B#H4]'9?=<[o}]2rN]TQnz쓕=.Y\mUtȿd䗄D0'<.HȰh7>{,:G춋*w:A9;S,'`(.*?9I]?əa#ehaQ0):;;J:[z =䕋uN~fu[e'ʶY|,V3Skź{Kx~uճ/&ߏoQcv_EYx':M_]ɯu*tm7X~i0[oaSUUkjNz/4gQ3#o-?f7b SYiUm7]ih?oެSYU\ٷ3OVUǷuՋuwɯm7}}++|nj1&?]r"袋Om-jb,FB~}֗ǾݗWXw/ _EN7]o>[ѩmZGNE,m߫to_'NeeUثlk.Mbu?;ڹ#=໻/*;*;Zm'F;WeXM~v*__#[75`竢Z< {QtԤ80܉(>r.>tZ7S 2KJowog\h]T,rwwά/*;_"R^?-|rfBVGovo v~vW6=T|;o^u|sLUvk.h?{vT4|~vW6*;˷5Fb(4_X7X{UYxt:KZ毮ScxڹgEg7:}/|g-uW%xΰuKZUiXVsUf+f.Z>:%x΄K}^VsUf+f.\߶uGYkL儬Y~7_lk}^iyTh?|YEXe']e[j"v3l} Ց:ۉ7ϒo-Ց:q|W4nөg}m1ow_'\ow}};lk>vnfu)~Ku"m>ݿ\}ש\"voIO7_wnvvW6hk̺S6T>کXrݿ\ݥˬ;:v7lk:]T]T,F[]Kog滛tU^&Xow+ݗܷʶo:Yw*r# Ywm vޟNv|6/Kcᗫլ|״M~|EN~m?nөwbͳ0y/Z`]bߦrMY_m*fwIv}}v75K.2R,.MfWM}WwI.E^}M].E]R|K57|U:}\sߦJ,Vw|e+f+fܾͬ/ߋSG*;}M3Εv_rfh;U⛩NQ%R27v*owKfM:ߎ|s_N.Tjb滣Jd7_LqT/F[]fMo>+~_|mrvnVwIjY]›]"S\/Mn%-..E]R|3}Y_ͮv*urګ5>ֿrnV3Εv_rfh;UJdډ7ϒo-?3+Z~]Eourګv7lkڹ}YWM~w7u*nogY_mJmv]^sv7 M{v7SŸ侻hlkڹ]U.ҟ{v4~]a'վ&zR_hv}JS% _|E_E[Go`fW*Kbjִp|,F۽*/ߋvM>? oK&?(NlyT<xUB<ǔ?{ъXT'SQI>,a]~ǔ?*o%j =s$m&smu]y&@rW?0F`>*`Q%F,іz[>}Oh1l+|3E }NUs$9M3yb ?#)BVG[䚭a?#)Ύ0st<Hs .,:;BÆ? =DsJa'ռE*s$9`/LO9v~?#)THs ~#40y̑\Ytv_hy* }NU:u7+MNKc߫WKZXxiqVsDgѭN=5[ū~0G7m>nF鈰ԭ0Ts}=ȩz5=MsĮyz}Fz(:jEu|̑(b9v^H4Z*ދoI96[]d"Tz0GfbLhN)5[??:d?&Za'_tvD0yΒ]ҰΊ:{0Gwals|S7e_nUzDtQMBLG)vMz0GDyƜ:J>DsV= c;J>w-?d**ܩWhE,Ի8`QjCfAl"]9mn{9F,#1k݅MD5rad?u, `صgvp eBg){]~F% eB$4<#_3{i.2& sT<2^gL?#m2,`(,ة??ʅ2E]$}n#z0GDyVƜ,F2#ʄ΃9ge&R}fD& ΝvqQMBxd*^Dzt԰P&t4<eժ2Ϣ[ʄ"&^"&sփ9"̳`0`U=B`2zX&cb9bBy0GV<#<23ʅI+: nDgP&t]:--'.iBy0GwMϳzRKP&tQ2LsD1Hj9v~ߪQ2τ2`~y9Ug=LKLLbt}ԙf~TNG,Ydτ2%F,+X]d%=戉2jL<"< >^3L&ۘiJ*`Qs$9Ö́Kd]Rar.}%F,2zj }NUs$9jw~|mWY;ocD?Us&%]mzd`>*`QQ<+bguf #ˆ刕_.2&^Qg0Qtӄ2# U#eBЙw6IKGb9K:ad?"< >. %2.0b9"ك9̳[(1QY- yW^~KP&tQf`d*TY-`&.sal)3ad?L謴`ft[O^P&t֓X΃9rEsDUXyҪ2nL̻rL,"jwI˄a=#<+Ha[?3$y0GLyV eBgޕ eBgeQL񻤰Qes0- h<0F4G0ycɣ̑[,z0GBSuG+K;vn"ܬsNzK1Fvm晤]=Ց'MrW^2YUk3/z/Iы ;K}s$m&6I=DsՑ:HLl:tR& NO^dG6>=#i3ZFc7f0tFjH? =]yfV>YM>I&?YGziO s7s$m&́&o)`Eݤ0"D96[t9pYBgԟoPa?KU] Uz0GBSn(NE;ad~vTvn" BQj<&stI} nԹӄ2`>j.W6 ÃOsMfxQ2qI+>:)J춋?0stfu1΋NTw'Z cN9&=6V _<Qa)wIz0G7m>|pI+rG>#*9.Vfu)R}֣vyMy9˜SεIsDh<1sDc̳ZZ]y+bh?Y]m?ZZj cۭX4],v ${e3y%,",[fs)IL_9)өyW#XKĔKdXf #OJgX&F)05<[0z]TQF&sa&aNDM[`ꐙgwyعӒ}&^" ##VIQKQb>F,#& d eBg>+i'S1Q- sDTge˓b&yv`ꐙgw 1.ki:IQSGvd~˄2? ֒]Ғ}& %2.0b9bv';w:"%)\UsH9-gE3rW/"j.iB䙎0֓GbBVGhV~dtaZO+?#)T#jBVG<:dZ#^IKcBVG?G,gEu`ئ "&]TO:j:#w96"z0G&S c=6LUρzdtjH1ă9Ih~0G2yv"st~a_hy*WW?#vmJ?#vmD`ꐙgz@Ń9 c[MBG=nuJ:iԋ ;Ls&}sd9EHk3/z/z0Gwal+Ny0GBS9GVu3=z0G4x0GwalI.m:n9i:g.'^"]yf{QV.FO^dy0Gu̳:\a6(`=sT<=#_30G&zSĒ}&:w" sO?#)?I:Rgq'i=i~"u$]S'x0G3;ދ1yF%2J#^w<9:0ѼyV233,6G'[sT<n;z0GT5=˜?`ЭyvR? czv6ϻryLGNEQ3r, cNas|K*X4st~afsdy&ع6"d`L4Y3MH3ad$]SgF4;9b\oboЬg>[K#ꢪstf-9MYgagX&+{ŷd9#`~yHft_z 3XhuQ#st<+s|RND%?#&T)&S~VI`hB3_0Gu3={Q#n(9/2>*walI$tEoݤ\ <۴$J5$`ꐙgusdyf?:dt1."N¤ODȃ9 c[MB`ꐙgupsdyf?:dYz>O ;IOF&ixݓf?#f3Ewz0G濞g96[tsDz截#~sf(:jF߲^DԄQNDaI#z/boݓfϱsYBgwO !ԑr.-t/VG?3"R_̻rI;XB)G(:zsV$;?iz/z0G5 ͳs${<;&yVI]gфg;ӊH9S^tw&]dދv~(Eԃ9R'c2\ Ν_=DI#e'=LI(E#e_\?^tjMyfϱsuI.MEλ E!3s]y&2ŎRD>Ry0Gwal截ٹ6{(:jG)V)<^TKK>*`QW٢Y/.VyLp]ĩ̑u*tǷT,G*V̑|N&f]R\ʶYe'vWX۝\?n(5d5QgO?IMi]2p e՟9_DX(:$[7f3EwȰ`}=s$m&NHLl)\#%tvޟd9H`jgvPQe9v.VIa=#*9E5r^MDKMoy&"咭zKދ`d~L?]y&p.u3;"x0GtOڛx0GtOڛ`ꐙgz@]\#IMuoIf7[7&&]~0GTt?#c EY:=ă92<̑<Տ1nv3tn4`hB3`o?uZl&i d9H9̓̑`Ė;=Y sDTgQ&5]Լ+sW?iV3~|7ivKMEQ0A4H9?G?#gN{Olv.<yFz&<srhbt|IB?yU?#'MHBγ戉rsT<`jg%̑LzL<#_3[3QLbфg9yt[=q?>ITZalg-:D4bŢ"hu@3&<ދsd9EHyWnau֓,g:g.y0GDyVz: "ԡYx0G3 Crd-%R}ad1ݴgxK_0GTs_C] Uz0GBScLӖg.2FVV̑|FW|noW6V̑|v7h? nrWR5sDgBЙ#.oagB UYy0GT?<+b9? Vd"4ad9 caJsgEV/"jwI˄Hsʭxݩ}wTLbt #vn" BQ3)xiTsְak|ڸMRK>b%Md`ꐙgwP}0[NZYIQb]TQ.m Q<+bg9iWGFҬ`>RR:vmyk"n`صgv9psD&{~ԃ9E3?Y 9Ό߫fD _Q[Ts$Sg7z&yVTة̑Leݤ'ة̑`jg%̑Le׺TMz݅0Z9H #g^?#) XsMX7~;Weg׺j|sDgBЙ#Ȅ2# UYy0GT?<#sGԇu caJsgEV/"jSSOY`>*`QםwwI$L0zk&mA-U<M5a f$.鶏XIS?<:dT9▓VV}0uRmUtԃ9 c.|0G7mYsDadNƜrMz0G7m٭-}: "y9˜SjMy/}4\>n cNz0G7K=~?tT#XG.,hstf?>^tLsD1kMycs&z(.2Տ1R9$GayYb)ʪu cۭX? ԭsJ2ԑ'9#O0:Xad*']tA\#߰_Lyع-ʄJsDgP&t]y?yعӄ2E]҃9"̳`jg'(yv0Q`cȹF.ȟd5uaNDʄJ? z(.2!vQNGʹH;|%,2hN9DJ!3s]y&R=Ï*.2RD&KLY=I<0_UMϳ0 d }.2)wI`>|z0GB)VuE 99vn~TTZB)urVst/MEQc$PO':!g5O^5?":R>gs UMϳR0rR]d29b6Lg0G׷my0GfbL槓z0G5 ͳs${<;&yVI]gQsJ)B<#vm|z0GfbL槓z)׷my0GfbLg0G5 ͳs${*`Qdu)~Ȱ`L4$-XZg" }?X0wI`>|z0GB)Vyz/NY[(:j{EKt/M?LPrV䤗^ދ&SQiEu|E&KrV䤗^ދoI.2^j 'D^5?":R>J[ajzRx<"sD=Zb=#f3E&K-Lluԃ9Ih=#y0G5 ͳH<SJsĮ`صg"(݅MD>#X截YdQ{PJu"9V\YX"%M9]y&Od?:dX}݅MD>#vm|r`VH/I=J[۶<#f3E&KEs$g]߶фgz0G2M<#f3E&KtR~0GfbL̑:{PJ]γkUYy0G2yz]d";Ճ9̳"ػz0Gfb{Qt4I.2^b0G3;I.2^z0Gu̳;܃9bf Dz݅MD>:dXY=#vm[L]tA92gQ0Gu̳;܃9bf݅MD>#gaGL4A)tBU&)=?n]/խ)"Ӝj0GBS>=#!ODئNw1adRE{Qtԃ9bf/ة6D_`ꐙgzstƶz0G3E6D_Q2Lx0GwalI:EK_#3c:bL.0b9BC|K\Qg%-g"Vv샹Τi2fdvRxdI[" L(f-+6DDb>Xiv ߲2 +Q:j&st6Ius dS-ñ cNI]dw&!у9i3pl91O0Gwal{.2^z0G 3;03ibDsĮ<c8s ދFBGE`-+Ѻ=io9{st6Iu cN1hޕsM;CsDk\m`FR]d"`hB3Zb=#~0G4?Ysdyf?6 ׀?#*9XyWΌ#E`}=9v^ugփ9Ih@0GDyv?#c˯/Q#X9 cQڤs$9=DcX~R?L cQڤ>^)oQ;50WwIxc[0uMz0GBScɌ'/3"S. >=?$j]ێ:&=#)xM"oYDԌ'/q }NU Hi~4ՠJ+2/g,?Qg]Bg9)bOdT??h],'E&?#*9XCsD݅Dzфgz0G7mՏ1ό?wⰓn"|2Y^%[w6u˼+W>3"(A]dbtئNwt̟j#Jz|&!?${aG:+06A?IM3uLyC"fRE`*<#*9'hޕ?y0GLyVC"f"Q3z0GDyVՏ1 cg3<2XKL?~ZW<.=#vm"Jz0G3;(݅&5Ɯrb`9KtWc먵2̤hQ+?IQFV?yV]y&Y`صgv RstƶԴz0GTs86sa'߲ڈ6L%=#vmD`ꐙgz`եstƶz0GwalR&<#gux<>qIgu騙 MƮ<8sĮ<ڈ]#-截Y]db0@VKK>i2?K}f:j-L:3L:صg"(k3&sT<.=0$tԃ9 c2G+%>*rE#sĮ<AsĮ<]#-.myWNu_`jzݤ?(B:)xu?tE[WXƮ<AmDI]yf5%=:dXu݅&]۰I&92"Q截_yWNIy|gaNi6"Jz0Gu3=݅M"rc.(`ꐙgusdyf?:dt103v~K])/9CfDK3re~ˆ:E,gN9bfX~< 4c:KEg`,?[7vmE`ꐙgz@m55#n(DVtcoFrst<Ɯb,]Ҽ+K#QMBvQ<ÇρK'sD1_D?೜\?):sDă92<<5s#R )y 8I=?6ENc?a=#cy0GT5=όgﶋZ]m?0.u濞gbjC.wE=Kn}0G濞g9gT?<3f+gɰ %2Lv9yNw\>x<ZKtvHDFz`EVD:Kd< c!3Jc-d)h]ԃ92ќtdz0Gwal{.2^zNigfbLQMB3MD91s$m&Dzp;u!3JpH`螴7Zb=0ѽTH/=#XǘgSQ2?`صg"n.2^z0GwaljsDc̳sT<=#vmS]tA9yv@8u }NUyVH/i2? =TV>RF='-2a ;FDd/)DsOҎ*0Gu̳;܃9bf uT?0_0GT5=l<"3'~0G3=9E3`qJ0Mo7`1} wy.Vnu>s *`Q0GT5=ϊL$a#jL=?SvQNGə?>{Qt@"r>#&zHjǘg9x0G2.{EV+aKmUtMHz>K}(:j"!#dEF44-g"U夿ԭc6ދ]%$4JPρ[NnsdyfϱsWKM̟z0Gfb{sNzNLGK}Qֱk36stƶ>r"RsT<#&#L0G4`n3<ƜRstfqQa)9x0G7m٭ƜRstfx˪?!QX cN!у9IhAy0G濞g9g91:E~0GtOڛ`螴7݅rR]d2-'Mfjz0G4`hB3ݴg8޲OR6{GZZݓf?:d݅MD>#~0Gu3=kb&}ֺ=io9{sT<+A=n9i]ԃ9i3 cN93I{%,dvQsT<̥MF%Vi7%a$4NP]tA9 =h5LD%춋?#-u =sDz~0GVL0GT?<sT<+9~+|]T=ioĚ%t.*`ꐙgw p󘹴 ȿd*&$< ʃ9 c.|0G4-ՑdvQsT<+9"|]T=ioĚ%t.*`ꐙgwp󘹴 ȿd*&$< ʃ9 c.|0G4-ՑdvQsNz$t&{"d3lhi a`3Ds,^ǗdRmZ%nR|'_I/-t4UDȕH?D ;jݘ(Lq?,'-RLY=IѬgI3"'R/2sd9EH4}jh:#w':; 4! RGw&h1su2'tVPGʑhE3rW?#vm4.d=#Wޥs$g$4NPρ353hB~0G5 3sන1&d`o2 92<ع]S!ة̑ؒ\#%tH*lIrL"DEDMLG>j:#wu0,3R:UL>Uv.bZ}>Iw0Gfb^P:7 5A+B#92<ع.&h=vsdyf?Y 9p]3r]D`d39v^3FݲKM]R:0GVc7ieI?ǘgD&%鄵 d`=9v.e=36WӣQ9y_'3ͻb\<nII{ع,d]!BND&OG=#f3ZFcթϟ3\g䮖9nӃ92<̑tV-#uMyfϱsud",g41:y|:g.'' Y2{~HH3ZՑ:u =h5~S%LrW?#&q Qyd0#g)aEz0GDyVQMB c1i /91M~q1󟤱S-83Q2xqv0eG`Ьg& ${x9yv_M~q.Z̑<ع#'͞c粄B΃9b6[Լ+Si_^O2QMBLD%Ld,̞cz3?`C'5e `hB3{sQ ;H?x~a#XsDYn9 =sdyf?Y sDTgQ0~0GfꤞWPKd#d*w̑:{X:f(eLc?Hsʭ̑:{wMIRD>RyuMj]2kvQsDk\Yn9CfM~c&X#}v`jg'(.m фgĚWG&Β}vEQ2,k8vQsDk\Yn9CfM~c&X#}v`jg'(.m фgĚWG&Β}vEMy&عҲ"z0Gu̳;Ӄ9 c.|kZ]nŢstƶ[Q<{x"멓z_B=q?S4.S'ra &5<d*wu<rN=̃hN)zZoS˱yI=06aԹQ;R0G3M4LLLg  ZoSS-ΈeBKsRs0G&zEԺ }N1= /i| PQR&9v,FMs ~(&Ms ~(Yp(?#)BVG<Ӻ }N#u9]DE%L<D>0z7gK:ȑQ1su̿?[] UGgsʃ9rȆ.0b1e&ĔԭxpȆ|&ufW*Kx|\|4-u7Ww7W\ګhs$9߷Yn(`Q.2V̑#+ I Xsԅ.)~n }N-grMh盏Ū0GBS~EvZ[|h[, y ?#)'3lUYe[,w oUQY5,z0GBSpN:vvmVwIV_&h;U4j"oo?#)NE~G[, Ε&*f}.w o0GBSw.iK;Urf1xpE.V3 }N۹]ܷ-ukni|g}/\0GBS.Mn(;lkbtwSr\߶u^`>1.ン}Wknf}^*xpEm\9fW;9Y"w*\i7u*n.]vZ[Ѭ_a= }NUlk.֭:H)"m`2Lڤ`9_˞ZǷ—+ڦn(`Q"M9̑|۬sɵsUvor򝶩I?#) Xs$Dߤƃ[, 9=6)Ia3`>ZsUvor]] X(.̑꾝YwrviհyLh*`ꐙgwP}0]tA9 caJHsʭ,z0GBSySŸ侻hlk;1Uurrfw>`>i۟5ګv X&˕+%~u.  5f }NUE>S},V3Ti>k]ֿX/Hs 掶"Y"֗uJ}4vmm%o;Kn휵`>:]7>V\Ex&N~f&&?#)xnŪ,w o.Vv\'|ķ XU`>]w~X*G|;-| mZV%ti9-㟨V<Ivc| }N+Xv7 M~֗E۩v3WcܾJ>m.}},V3Ti>?#)x;Lo*`Qۚur.]m7|o.}Hs vvWw}Jŷbݽʶ[, %Y; 0GBS&Kc&J%Vmwow3moow[ŕ˷{0GBS},V3Ti>v}nֿ6᳾|/N<Ճ9¢h?o%+oN"S.i/bk.51?#)GYn(`Q`u7Us~w+o;W%XEٷ`>wIԻT_[ngo.ߦ *`QlkHs ~v/߶E6Lq&Ӱ՗ɏ_ ݶ^? }NvvUYrN~U *`Q_T\'ưȗ_ѿX5jbM~;We]w/᳾h"M?#)8fn(/]*ͮ7Jݬ.2s$9KZe[V?R֏j}0GBSp.}̑|mm%Ƿv7_.Vokκ|,5o;We9U<*`Qw|۝.vnfNE޺u nȓ<\&<߰*<)n(`Q`>]0w>m*;},V3Ti>V̑|[oknVݬ.2wIq }NoRm X(EX'NG5 0GBSp\>n%W67k*;˷VOsmuFUSHH*`у97-Whv7inv'7|}Wڹ*M6} }NUs$9/Ze+.fܾE֫lkEɳKc7ᱴMN~0GBSn }Noz|*iok }NUE`30g,?Qga_TtvFBG)gF&0G󀏨%$azǜc:z^]cb$Z*:;LD1Sn{t\X~i0sbͳ.9֛g]z<̉7Ϻt{[oi{ #':w" sO9:bQg9ɣ&OJEggNR/z/j݄S>=q?9:g]҃.js$9/Ze+.fܾE֫lkEɳKc7ᱴMN~ .COM CRC = 7EBF LU210 .LBR CRC = CCF7 PIP .COM CRC = 1FB0 RENAME .COM CRC = 0155 SQ-16 .COM CRC = 637A SSED2 .COM CRC = 3127 SWEEP38 .COM CRC = 4988 TYPE17 .COM CRC = 9F14 UNERA .COM CRC = D89A UNSQ19 .COM CRC = 12F7 WHATSNEW.COM CRC = B8FD X .COM CRC = 922A XFERTIME.COM CRC = A70D  0,0,509,509,0,0,128,256,269,285,224,0T 0,448,0,448,0,0,0,0,448,0,0,0U 499,273,511,273,415,0,387,398,312,483,487,0U9,509,0,0,128,256,269,285,224,0T 0,448,0,448,0,0,0,0,448,0,0,0U 499,273,511,273,415,0,387,398,312,483,487,0U"1 CATALOG MAINTENANCE PGM v3.2 - 09/07/82 Free Space (ENABLED) All Users (ENABLED) For help, reboot and type: NCAT ?:]? !. ",*#""":go|g|go"]""a"_"c |!w#w:l=w:\=2:>=2:A2y2-22͠ The DISK TO BE CATALOGED and the CATALOG SYSTEM DISK will alternately be inserted in Drive A: :A2-:A22͠ :: A scratch disk must remain in Drive A:1 !,""*!"(! " " >)2 2!2!" Mount DISK TO BE CATALOGED in Drive B: Ready? (Y/N) . _ __N. Y  :_""~2$ !\  !,͞ .FRE  * !86 #6 #÷\<ʒ=o&)))))! :$ڵʵ- 6.# 6 #6 #*#"õ*+}|  ,. *** File names buffer not big enough. MAKE LARGER *** (See NCAT.SET file for instructions.) $6*+""g,!ڼ#®*+"|¦ÔNwy#ÿ:,ʛ ++MISSING "-.nnn" FI LE ON DISK. (Put the volume number file on the disk, then run it again.) : Mount CATALOG SYSTEM DISK in Drive A: Ready? (Y/N) ,! ~22 #~22 #~22 Processing disk :N Mount CATALOG SYSTEM DISK in Drive A: Ready? (Y/N) . K K_N. Y  :_7ÏMAST CATK in Drive A: Ready? (Y/**}|!"*{z*h*"æ*"!"**}>*#"ɯ2t2*]""h<9 &. NO MAST.CAT FILE$eNEW CAT  :_7*a*c}|!"c*a{z*_<«*c"c} . DISK FULL: MASTOUT$!"c*_*c#"cɯ2H2\*]"a!"c<<<4 . NO DIR SPACE: MASTOUT$XMAST BAK CAT  :_  !   !  ͒(h! 2͒ hw#)N x… ++TOO MANY IGNORE NAMES FOR TABLE ++MISSING OR EMPTY MAST.CAT ++NO IGNORE NAMES IN MAST.CAT ++EOF READING FOR IGNORE NAMES. MAY BE MISSING ")" AFTER LAST NAME.͒ h N  :r :!#  ! ڴ   ! ʢ  !  ͆ a  ! a DEL: $ !  ͆  ! d ADD: $ !  ͆ ^ !  6.# 6, !   ~  ) # >h*c}4 "a>h( <2*~#"! * 6,#* 8 6.#8 :!{ ͒ A ,s .s s { w#8 ͒2!6 #s 6#{ 2! ! ʬ ! ~ Ÿ >0 h> h  ~ _# > _> _w# , >/w# # *"^#V#"%*"##~҇ ڇ 2'*%~n zx Z #W *(#"(:'*(=ʧ )  ++CAN'T READ FREE DISK SPACE    }0 >k /  z/W{/_y1 xy >+ **w#"*~_#~ # > _> _  %*"##~҇ ڇ 2'*%~n zx Z #W *(#"(:'*(=ʧ ) ????????????XXXXXXXX.YYY, . XXXXXXXX.YYY,XXXXXXXX.YYYXXXXXXXX.YYY,XXXXXXXX.YYYFRE CATALOGING YOUR DISK SYSTEM: Three programs are needed. They are usually all on the same disk: 1) MAST.CAT 2) NCAT.COM 3) XCAT.COM NCAT.DOC (not required but usually included) NCAT.SET (for setting file names buffer) You originate MAST.CAT (Master Catalog) yourself. Use your editor to open a file by that name. It must have at least ONE file name which will be in parenthesis. This is the "Ignore list". It contains names of files which you do not particularly want to display in the catalog listing since you have numerous copies of them. It might include such files as: ASM, ED, DDT, LOAD, PIP, STAT, SUBMIT, XSUB, etc. Example: (ASM.COM Note opening parenthesis at left ED.COM DDT.COM SUBMIT,COM) Note closing parenthesis at right (Hit any key to continue:)  If you want all files to show, use one name that is unlikely to ever appear such as: (DUMMY.ABC) All disks to be cataloged need a special "volume number" file. This uses a "-" as the first character in the file so the NCAT program can recognize this special file name. It can include both a name and a number for the user's reference, but the name will be ignored. A leading zero may be used. Example: A>SAVE 0 B:-.012 NCAT.COM is used next. It usually expects the master catalog disk to be placed in the A: drive and the disks to be cataloged into the B: drive one at a time. It reads the disk directory and puts each file name into memory and then alphabetizes the list. It then updates the MAST.CAT file with the new names or deletes those previously listed that are no longer on that disk. Double drive users type NCAT B: Thereafter when it asks if ready, place the next disk to be cataloged into drive B: and type "Y" or "RET" or "SPACE" for Yes. (Hit any key to continue:)  This does not allow the A: drive to be cataloged. Use the same procedure as for a single drive system: Single drive users type NCAT or NCAT A: You will alternately be asked to insert the disk to be cataloged and then the system catalog disk. An update of MAST.CAT is made with each new disk. When finished updating, use the XCAT.COM program. This creates a new file automatically, called MAST.LST (Master List) which is ready to print. You can also search through this listing rapidly for any file you know (or suspect) you have, using a program called FIND.COM. You can also use XCAT.COM to print the MAST.CAT file. At present the program allows 40 'IGNORE' file names in MAST.CAT and 256 file names. Either may be easily changed by editing the user option area in the source code, then reassembling. (Or  use NCAT.SET.) NCAT C: B: C: drive for disks to be cataloged B: drive for the MAST.CAT, NCAT.COM system disk (For 3 or more drives.) Read the NCAT.DOC file for more information.   ++ FATAL ERROR - "All Users" enabled, but user areas do not exist under the CP/M version currently running. Set the ALLUSR equate in the .ASM file FALSE and reassemble, or use CP/M version 2.0 or later. $^#V" ^#V#}2!~2 >04ͮ:\A<=2\:] ͮ*:Grͮeͮ~#rͮ:: O : O4ͳ :m_Pͮ  |g}o* M͂Z |i:0^#V" ^#V#}2!! nvDNCAT32.DOCT   o!#"$&%'()*+-,/.0132456789;:<>=?@ACBDEFGHIJKMLPNOSRQFI) +{l_t7o-oV~GOK>|3,AX969Cܳ]U87:=5*W4'P&Vv> viو 9wr&Dzm/`K{3Bs}>NҨ¹1m^gBl-)ϝn .*_.)T@tL|.r/,Pg9Ӈ\AlU$wA]SI k.৻䅺~z>:]]e|Vo/MtsNy)9w22*W4U;q:H|ҖB1L|Vc16\Ѽ)O1ͥ.'+7[!(i+;ZSSrrbD'J?:ueXdr<ZNRre2mF16[;]ȓ[ANGw"si)r9o<}5By|ćo!Uԃ"L͡rEJ*+*םrǏꗷ)Z+aMڔs?wqN9'=? Cx)կa@;9kSrEsbymSKFd>>[}·o '|OV>[}·o '|OV>|[][\Ʈ|-~Қҩ__[2ߵ|h+-s7S8Q.:. nFŇoVz'w}!|ת#s7ʡrf7Cr*i15o'82]VBt-; Ƙf*io# kT҂ k֚7G&\+#~Շo|fXLگ{4w^t)lIcOrmC"G=هoztE# -s\є9yoEG#>|KzEsQ.j{4,zEЩ/'=ʵ]fr[\+bl!qGSZk÷Ľ 9[>- uw^3V/߅8B]. 1>D6o}|f*ww!ToeߘV=kU$d֭>|3͐Y9E:ei grm3V2UPFUyڔBӇou>C^e2NPt>wmd!g9m'd.y|p濒s;κ >܇o%,ݕ?u<3߇m' ;A3V]U8CvR6} )lmL%-Ͱj|fXV#|Xrm3VrN t亳geSt}f۪.)W4_Qh]߇+?v18WrZ,;9x@9EL|mlh'XyʱQC]Iڜz,3dV1@rb#k3viو 1L |ת۪]3VyO@,+b}2w\%zݺ>|3`.>|[NC?wqNrՈBb{|5rsJmVImЩ+g-CK 8!_s ۟+m9+d·o9[F|V^wl]clio:7= qqjmnGΆ [92e^]?l}16ys?h]n䭼o=Wzi1f{ VAoW*r|8C7n34bZ=]U8?GirE÷J\edʾ/I/6g#gym(:~8CLJoe|WsRvS䤽7=bڜ*Qj΅.ߣy%S]&NW4Щs'm ԈV?cw{Ecrm]>fdhDwa K-W2E2v&_uXZy|:>|[5v|(JZIN]Ⱥ>̀-gO7G&Zyѡ߅8ם=wa"̀->K+kK dZU>'sw!;s& زKX+O:x+Fu$o'Zy|.y|Db<܎ yW4bKг EŇo)N.ʵ]܅8ם=2L+[FnɆLA÷U2eq|^g^)8ϛ{E_2> bs6>|[娨Uٝ!U6W4צ߫6="@L[݅8>|[휏\"PHhd9U6' vݐPD.dчomĵQ8@L[=(tRe,[Q>>7k]AycPcQXQeH6moyПZ?)@|pn[] Internal Error - No Line Number Q**~#H at lineif>/<(/<0=(}_|W!>LIB,SIGM.023 PAINT.FAS,CPMUG.035 PAINT.FEX,CPMUG.035 PAINT.PRN,CPMUG.035 PAINT&.FEX,CPMUG.035 PAINTER.FEX,CPMUG.035 PAINTER&.FEX,CPMUG.035 PARM.ASM,CPMUG.035 PARTA.PAS,PASCALZ.010 PARTB.PAS,PASCALZ.010 PARTC.PAS,PASCALZ.010 PARTS.BAS,CPMUG.037 PAS2CPM.ASM,SIGM.008 PASART.BAS,PNET.002 PASART2.BAS,PNET.002 PASCAL.ASM,SIGM.008 PASCAL.COM,SIGM.008 PASCAL.DOC,PNET.011 PASCAL.DOC,SIGM.008 PASCAL.HLP,SIGM.014 PASSWORD.AQM,PNET.011 PASSWORD.BAS,CPMUG.037 PASTOCPM.ASM,SIGM.008 PASYNTAX.DOC,CPMvNCAT32.SETW   !o#"$&%'()*+,-/.013245687:9=;><?@ABCDFEIHGJKLMPNQORTVSU.jzhnj ,XX鞻f`lMmxl_tO jpix鹇-e2WkW'O^;r >S9(m߸} H{#\oSc7&S!re8pip 1=}?FV}<_Ը3,3^ q(w8 0ӓq+sW{)g T8 j8[~jO'kWE fJ`LڏVf'i|0XJ41ܑF4^,AvsԹ~m0H;i0Kfo}EQh' c>#^ΰ̔J:ܓٶݸ򷝨YhB]QY_?ԧrN==_Q651ܑFs0XW(nS1KLmjL?Rb^ܑom`]ڹ4-QUuL?b__?ǯ?/ ?Z$m!m1sGTǞ|:xU |IrG6p{4i4Tǘ{ȧK" #.ܐcd_xYȧߖ"VK; o&}Ug #n~ W}\hЅǹ#n>F:\tBȧ?Z@>8p[}txѳܑOo7d_zC>z{t_]xt5sG=ׂuS-TοķU O҂tON?\{50_qq9? 箟26f O+A}{9Lvn3 ķ5sG-:+p LO' ϡS5&YCv]rnWO' :50IWp/gXf?Eiklod :U {zb8.`m&{H8vHҶz${gi.{zmj?s9D oLjUFEݖs?NR+w[* {*#VSOt{zA[3>FSgN,r re .ŷo {]XM&>iX -sY~dz{92S_U`sGW`_LGiX -V^w[)9g;f:1ye`~ԧ?cܑ5WyߣsYSHO s9%F9zn{^ATPATPATPATPATPAT4 p:<s * * * * * sRS-5IZ9JC}E804WPk$ |b줔qU;u nU䃆cnLO+'> N9)7@n3pTg1|x^nmp͕{Hw P{ -7ܨRpMM=sGX,+cy8NONT4^J5fǹ#n>F:\tBȧ?Z@>8p[}txѳܑOo7d_zC>z{t_]xt5sG=ׂuS-TοķU!, !, !' 6 $ v w#x ͈̀ !,  *|\ !dY! ~#"!, _Yž >!2>2!6 "!2"" " !"" !, :4 > > :<26ڱ !+6    : _: ͚ ! "<2*w#"~ #, ~ #6 > > > > :g :̎!6 K ::<26د2 !+6 Ϳ!6 \!.YT$$$++$ * ++NoذQG@kA۰Q|~[6JYmzj>^SMZ~o?eќZ>=*dUtTZEY$@IHI,!]%svSD-92.ASMb  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEoFGHIJKLMNOPQRSTUVWXYZ[\]^_`a_?<wwOR) u3 +;z?F u"ԆYdzG@QfAgQ;Bބ#+;4;Ѫ Ԇ0mʈx9wAi sp7 _/il\.Jaڣ M9Ѫ Ԇ۔/ CmC6=Ha0(Z+A;,o6;z!JY0:_kRϭ'~Ydzݪu4:_۔14!+!;ORަ c俵\~!]pwHgV[}'F킲^ CCoS5oC6v Pì}lw|@Ԇ>Ka+cF\x6) ϿCg: w֟b^;~wQG6(hOn#z;xjhF O v,wX;;V[%w.0Lg z2ta8m"搦!+W_f>d `ŌUUzб 6GYY#Ǭ}oO;{OXejHa~F ͇ͯ~VzLjwQ.ZaʞZFt6s0n7PHaU_}x&/wQvOaN!F{j>CN "|s"[Am:t6 Dt>qDs{go0?clBđ#twPŮ:gN CCp`=Ԇ'Ƭ;M!8H~iP=lDd%!|Aix>eO!m76"ntvi8*9oޱj#!|"782{>Sh#cvduӻ) }ggs0Ro>7 Ȼ;8*J#~0f!Hj^;) >akvHg(Ѫ .E5m+v.RqP;;˾4jwqaat6p^]P(wb)h _qÈ*(>{,MGlB}ϳPF#ڈz;) ^?i6 caoUzC=gCY C666j#Ra"BUlAi}{>0nSU0:C*vwdÇG!0?^cֻ]Rzìv#lD\l{ZrRH{|oVDz1;)o?W?yq%)?>)ڠ8Bi4Տ7 ]PE) > P^+=Ƽ PowGv=z;XCj=uPF=Њ%)ߛm}8 JaJpbjakvHg8b VV{؈F-!|!<cAmZ89m;O?~0?h=ԆjӠ8Bivï0 !|OakvHѸat⨸C砬vXB CCpoG?y^; ˾i|o=l6Z·F CCԆe4 w]Q+ <V|%)3.E5RcZՆ46'~rt<IzPowGv=R9bqv^ CLu5;{|{z6BmAH(!|aqv2 Ic3wP/kD~bR<,!|!Z#tU'hZ@coT6YvwHg) zQ4pL;* )-S>8bN CCj=FDw^!Xe}R$klFgc8,!|AmU>kvHg赲?y6=mQ]G^ CPԿYvQnf6*}k"Ԇ񮨇o;g) Pƻ>`|R6oga8nǾ !|q[h'tg{E=twE=!BU;) ;Yvo:@;e4 wq@ wՀc_4Ƭw0?ث+vXn]W)Ԇ)#*%|B/TRvݣx i=;ig0?r~aFiLZ-JlBM'ܼ) ;<J@".Z??z&^;) PU(qҺ("Z߱0n8F=Ԇ0?R!2"6AmBSH[񌠰7U3qd6_ʦ)N.*]xምv,!|!vjGNZB: vY CÎP*x<; )#_8"^+(B0?_"ƗpK]Dze UPvA Cz1;)o~󫟀b;dMQ#n vzݑ]DG3Vd5mO0R7oͯ~wP8f?ic{PԿY.ztz) >W*{Eu}$8)xko`ųͻjR| |ƍuw`wkTV cu.,!|aCi\Җ4YApLVm6U&!|aֻupTq?4 ZYa#nv7 vAia{wMiP׿+tަ1Vc0?rh}1NH*|;XCj=C{֡q) }g| wEHa0xo_]omPouMs@=dp]PIygyȆ`XewXe?}zȪMvXFh[`k?qGR Cmqv4ܡn&(č~R:g!׭465zr|?}ƫx N #O'`k?qvN;X\k [e=?&^;l8]wz:Xeg|Qc0ri GYY#zwPòzަ,!|Ai ! 6) }g| wE)o?ß󫟀BSԆ5V_'vj0*?>y΅F ~᏿Ovwn>Hgt6pC#;) >'|Ai8i6ikG.(9Ŀi#;sIapNE( QOǔw+v;d[赲?y񇔃؅Gru;(Q CCB|;h}E><?q)G) Jc*4E뭷ʆ:̌Lt'v@;>;( 4 뭲!eG?!;GD s8Ǯh' ]QyW0.VmzA CâCHS(v;C; O!m9BiN{cɅ0?8^븃0f1x i16M*_C]ÑjpG6Ȳ>~*C ;)o?÷'лaeO>]CXe Vm*xbxy#V_?j˥&8*mffyԆ>꧇e^ CCoS~ ꔡ[nI([j~T;wEp zo Vmp$)YRފfO&5GR})6{H1KSM|"Sެ];:̩_8t0ԆUpJ "2Gb,wJ;Җ#GDd|b)')rKc4D 8)~ĎwI[j~Tެ`{8C{lħOY*?"Wᖚӷ=wsY0z~xa^CKQ,tKWz= ;FwAd_][j~d"+p>[ph}pwR$K9R'a6COK񺺥+۞L66"(Œ,tKW^;'kwmP.س;" 1P Diskette Catalog Maintenance Utility, V2.5 Type "NEWCAT ?" for help. Type "NEWCAT B:" for two-drive systems. :]? !6:\=wA2  Catalog System Disk MUST remain in Drive A: 1P!P"! "8":>)2222 Mount DISK TO BE CATALOGED:# in Drive B: , Ready? (Y/N) _ LY  :_2\!]r??????????? À\<ʼ=o&))))) 6.# 6 #6 #:<2~6:=2OP!# þNwy#:P-ʭ ++MISSING "-NAME.nnn" FILE ON DISK. PUT THE NAME FILE ON THE DISK BEFORE RUNNING THIS DISK AGAIN. :] Reload CATALOG SYSTEM DISK, press RETURN]: Mount CATALOG SYSTEM DISK, press RETURN  MAST CAT:P-ʭ ++MISSIQ/P-NÈ**}|q!"*{zc*]*"/*"!"**}>*#"ɯ22!P""<  NO MASTIN FILE$NEW CATSK, press RETURNQP o**}|_!"*{zQ*0*" < DISK FULL: MASTOUT$!"**#"ɯ22!P"!"<¹  NO DIR SPACE: MASTOUT$MAST BAK CATSK, press RETm! ! K(j!ʋw#) x  ++TOO MANY IGNORE NAMES FOR TABLE ++MISSING OR EMPTY MAST.CAT ++NO IGNORE NAMES IN MAST.CAT ++EOF READING FOR IGNORE NAMES. MAY BE MISSING ")" AFTER LAST NAME.ʋ m::¨! \9 ! '! R 3!͌ DEL: $! R V!͌ mADD: $! R !͕6.#͕6,! ʟ~ ʠ) ’Â#‡m>*}¹">­<  CANNOT CLOSE MASTOUT$ w# !! MAST.CAT now has Entries. THIS UPDATE COMPLETE. ANOTHER DISK TO CATALOG (Y/N) _ Y : ʞ. w#•26 #6#>2*~#"!6,# 6.# :G  ,? .? ? G w# 26 #? 6#G 2!;~ ] >0 >   ~ ʥ _#• > _> _w# # ~_#~ # > _> _  NEWCAT USEAGE AND SYNTAX: SINGLE DRIVE USERS TYPE "NEWCAT" OR "NEWCAT A:", AND YOU WILL ALTERNATELY BE ASKED TO INSERT THE DISK TO BE CATALOGED AND THE CATALOG SYSTEM DISK. AN UPDATE OF THE MAST.CAT IS MADE WITH EACH NEW DISK. DOUBLE DRIVE USERS TYPE "NEWCAT B:". YOU MUST PLACE THE CATALOG SYSTEM DISK IN DRIVE A: ***AND LEAVE IT THERE UNTIL COMPLETELY FINISHED***. YOU WILL BE ASKED TO INSERT THE DISKS TO BE CATALOGED IN DRIVE B:, ONE AT A TIME. NOTE THAT, IN THIS FASHION, YOU CANNOT CATALOG THE CATALOG DISKETTE ITSELF. DO THIS SEPARATELY BY TYPING "NEWCAT A:" HIT ANY KEY TO PROCEED: GETTING STARTED: EACH DISKETTE MUST CONTAIN A FLAG FILE WHICH SPECIFIES THE DISK NAME AND/OR NUMBER. THE FIRST CHARACTER OF THE FILE NAME OF THE FLAG FILE MUST BE A "-". CREATE THE FLAG FILE, FOR EXAMPLE, BY "SAVE 0 -DISK.001". WHEN YOU FIRST START USING THE SYSTEM, YOU MUST CREATE A FILE NAMED "MAST.CAT", AND PLACE IN THIS FILE A LIST OF FILE NAMES TO IGNORE IN THE CATALOGING PROCESS. THIS LIST SHOULD HAVE 1 NAME PER LINE, AND SHOULD BE ENCLOSED IN PARENTHESIS, FOR EXAMPLE: (STAT.COM PIP.COM ED.COM) OUXXXXXXXX.YYY, . XXXXXXXX.YYY,XXXXXXXX.YYYXXXXXXXX.YYY,XXXXXXXX.YYY)@<LRUN Ver 1.0 Copyright (c) 1982 Gary P. Novosielski $!9" ͗*| Wfx ~#[![bxʓ {†~#o}oҏu33o!U"  ́q ¼![ ![ ![<!~4!~ > #*|*+E|9+!6[ 1 J^#V"#^#V" z/W{/_hXX!^#6#~ ʙ-°#JhJ~#»x2!N[!\JlJ * Correct syntax is: LRUN [-] Where is the optional library name (Note the preceding "-". ) If omitted, the default command library is used. is the name and parameters of the command being run from the library, just as if a separate .COM file were being run. $ !hH#=Xr͏6# 6 #_6#h;ȷ#r#~+:~@##ͩ~.#yʣ Ùͩ#*ʼ ©>? ¾#~.,; :=<>ȷ͘Can't run under CP/M 1.4͘Library not found$͘Name after "-" isn't a library$͘Command not in directory$͘No program in memory$͘Program too large to load$COMCOMMAND LBR   ...ABORTED.$ $ޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭ*>og)))))))y!,m*"2!"*}z+"*T] "!_*#",>2!"   BAD LOAD$$$$ SUBޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭޭ D  ޭޭޭޭޭޭޭޭޭޭޭntax is: LRUN [-] Where is the optional library name (Note the preceding "-". ) If omitted, the default command library is used. is the name and parameters of the command being run from the library, just as if a separate .COM file were being run. $ !hH#=Xr͏6# 6 #_6#h;ȷ#r#~+:~@##ͩ~.#yʣ Ùͩ#*ʼ ©>? ¾#~.,; :=<>ȷ͘Can't run under CP/M 1 LABEL.COM was written to produce our diskette labels. We have also found it useful for other repetative label tasks, such as return addresses, book collections, personal disk label forms, etc... This program was designed to print on one inch high labels, in any width. Printing label masters for use with copy machine acceptable labels is a nice way to go if you do not have tractor feed on your printer and do have access to a copy machine. The program will present three screens: The first screen will ask several questions about your label stock: - How many labels on each row? (i.e. one accross, three accross, etc..) - How many print positions on each label(including the spaces to the start of the next label). - Do you want to print a one page label "master" (Y), or are you using continous form stock (N). - If (N), how many labels do you want to print. The second screen allow input and correction to the label text. The last screen prompts you to setup the printer (lineup your form at the actual print line, the program will NOT advance form). When you hit "return" one line of labels will print and you will be asked if alignment is correct. If it is, hitting "return" will print the rest of the labels. Responding "N" will again print one line and wait for you to adjust printer. END ble labels is a nice way to go if you do noterall projects. Graphs single-path time line. 4. LABEL.COM Prints repetitive labels on either single sheet masters or continous forms. 5. BLCKFRI3.BAS Stockmarket simulation game. 6. OTHELLO.COM The classic board game. 7. LBANNER.BAS Every computer should be able to print big messages, now you can! 8. WORDSRCH.BAS Design hidden word puzzles using your own categories and words. Printout puzzle, answers, and locations too! NOTE: PROGRAMS ARE IN SEVERAL LANGUAGES, CHECK INDIVIDUAL DOCUMENTATION FOR CORRECT LANGUAGES TO USE. END GVOON"ccn"cnso"zgnr"{ow"1timate amqtq dmp a..the following . commands are T/Maker III embedded print commands ..ignore or remove if using another editor or word processor. .width 100 .length 100 .indent 5 CP/M 2.2 BIOS RSX Mike Griswold July 1984 Dr. Dobbs Journal Generated by Ted Daughters from same Documentation by Ed Miller 10/01/84 The following is a short outline for installing an RSX, specifically that as indicated above which when included with your 2.2 program will allow the 2.2 to run on CP/M + (3.0). The object of this documentation is to provide the step by step procedure to attach an RSX to your program. 1. PIP the following CP/M files on a disk from your CP/M Source disk: RMAC.COM GENCPM.COM LINK.COM Z80.LIB 2. PIP the CP/M 2.2 program which you wish to run under CP/M 3.0 to the same disk as 1. above. The program should be a copy of the .COM file. 3. PIP a copy of CPM22RSX.ASM to the same disk. 4. At the A> type RMAC CPM22RSX (the "CPM22RSX" file has the extension .ASM but this is not typed). The following is generated on your screen: CP/M RMAC ASSEM 1.1 07E0 021H USE FACTOR END OF ASSEMBLY You can disregard all of this. 5. After a short period you will have assembled the program and in the process will have generated the following files: CPM22RSX.PRN CPM22RSX.REL CPM22RSX.SYM 6. At this point you should type the following after the A> prompt. A>LINK CPM22RSX[OP] The following is generated on your screen: LINK 1.31 ABSOLUTE 0000 CODE SIZE 07E0(0100-08DF) DATA SIZE 0000 COMMON SIZE 0000 USE FACTOR 08 You can disregard this too. 7. Now you will have generated a file named CPM22RSX.PRL this must be RENAMEd to CPM22RSX.RSX thus: A>REN CPM22RSX.RSX=CPM22RSX.PRL 8. Next, at the A> prompt type: A>GENCOM FILENAME CPM22RSX Where "FILENAME" is the .COM file of the CP/M 2.2 program you wish to run under CP/M 3.0. After another short period the following is generated on your screen: GENCOM Completed. 9. At this point you will have generated a new .COM file FILENAME.COM with the original 2.2 file which now has the RSX file attached. This will now enable you to run the 2.2 file under 3.0 merely by running A>FILENAME -END-  The following is generated on your screen: LINK 1.31 ABSOLUTE 0000 CODE SIZE 07E0(0100-08DF) DATA SIZE 0000 COMMON SIZE 0000 USE FACTOR 08 You can disregard this too. 7. Now you will have generated a file named CPM22RSX.PRL this must be RENAMEd to CPM22RSX.RSX thus: A>REN CPM22RSX.RSX=CPM22RSX.PRL 8. Next, at the A> prompt type: A>GENCOM FILENAME CPM22RSX Where "FILENAME" is th/o#*/DM! Hȷ707 !?_))))":O*~ Q #C~,ʙ ʙ ʙE~t+ʙ-ʙ #ʦQ~,‡# >0æ~,tʐ~,¦# "y2O>fʳO2!"2 :'Xrwʀ: ~~#>26:>x+~x+>> >>#ͱ!>_>#ͱ:ð!:O͑:ðTOO MANY CHARECTERS. MAX IS 252!"2^#V"0>!*0**~ #":2!2(>! *0**6!"#":2 >2 -ASCII FIL~K#=#~#y̱͕2~ʀ2#~ʀ!5ʀj:ʕyʱ!P?2"ͪ2 ! ! "!  :!*~#.,-$*^+/&!\#~:O~# VOLUME 009 DESCRIPTION: CP/M UTILITIES NUMBER SIZE NAME COMMENTS 009.1 4K -EBMMUG .009 DISK NAME & CONTENTS OF EBMMUG.009 (OCT 4,'84) 009.2 2K COMPARE .COM COMPARES 2 DISK FILES, LISTS DIFFERENCES 009.3 2K COMPARE .TXT DOCUMENTATION FOR COMPARE 009.4 16K CPM22RSX.ASM SOURCE OF A CPM3 RSX FOR CPM2.2 PROGRAMS 009.5 4K CPM22RSX.DOC DOC FOR RSX (SEE DDJ JUL 84 P.36) 009.6 8K DIAL .COM PROG TO DIAL NUMBERS THROUGH A MODEM 009.7 6K DIAL .DOC DOCUMENTATION FOR DIAL 009.8 2K DIRCHK .COM VERIFIES DIRECTORY, DISPLAYS GROUPS USED 009.9 2K DIRCHK .DOC DOCUMENTATION FOR DIRCHK 009.10 2K EBMDIR09.TXT DIRECTORY OF THIS DISK 009.11 6K FINDBAD .COM FINDS BAD SECTORS, ASSIGNS TO FAKE FILE 009.12 4K FINDBAD .DOC DOCUMENTATION FOR FINDBAD 009.13 20K GENCPM .CQM CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER 009.14 20K GREP .COM SEARCHES FILE FOR STRING MATCH 009.15 10K GREP .DOC TMAKER DOC FILE ON GREP 009.16 4K GREP .HLP HELP FILE FOR GREP 009.17 10K LABEL .COM PRINTS 1" LABELS, MENU DRIVEN 009.18 2K LABEL .DOC DOCUMENTATION FOR LABEL 009.19 2K LINES .COM GIVES LINE- & BYTE-COUNT OF NAMED FILE 009.20 14K LINK .CQM CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER 009.21 2K LIST .COM LISTS A RBBS ETC. FILE FROM LINE N 009.22 2K LIST .DOC DOCUMENTATION FOR LIST 009.23 2K LISTT .COM A PRINTING LISTER WITH OPTIONS 009.24 6K LISTT .DOC DOCUMENTATION FOR LISTT 009.25 2K LRUN .COM RUNS A .COM FILE WITHIN A LIBRARY 009.26 16K LSWEEP .COM LIKE NSWP, BUT VIEWS ETC. .LBR FILES 009.27 32K NCAT32 .AQM NEW CATALOG SOURCE CODE, SQUEEZED 009.28 8K NCAT32 .COM CATALOGING PROG FOR DISK FILES 009.29 4K NCAT32 .DQC SQUEEZED DOCUMENTATION FOR NCAT32 009.30 4K NCAT32 .SQT MORE DOCUMENTATION FOR NCAT V3.2 009.31 4K NEWCAT .COM UTILITY USED TO CATALOG DISK CONTENTS 009.32 12K NSWP .COM NEWSWEEP: FILE MAINTENANCE PROG. 009.33 20K NSWP .DQC NEWSWEEP: DOCUMENTATION, SQUEEZED 009.34 14K RMAC .COM D.R.'S MACRO ASSEMBLER 009.35 8K RSXSEED .MQC SRC CODE FOR A CPM3 "SEED" RSX 009.36 62K SD-92 .AQM SD-92 SOURCE CODE, SQUEEZED 009.37 4K SD-92 .COM "SUPER DIRECTORY". GENERATES SORTED DIR 009.38 12K SD-92 .DQC SQUEEZED DOCUMENTATION FOR SD-92 009.39 2K SD-92 .IQF INFO ON SD-92 009.40 2K SD9192 .DQF MODS TO SD-92 FOR NON-CONTIGUOUS DRIVES 009.41 6K TELL .ASM SRC OF UTILITY TO SHOW ADDRESSES IN CPM3 009.42 2K TELL .COM UTILITY TO SHOW ADDR'S OF CCP, BIOS, ETC 009.43 6K WCOUNT .COM GIVES LINE- & WORD-COUNT OF A FILE 009.44 6K Z80 .LIB CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER DR'S ASSEMBLER UTILITY: Z80 MNEMONICS CAT32 .SQT MORE DOCUMENTATION FOR NCAT V3.2 009.31 4K NEWCAT .COM UTILITY USED TO CATALOG DISK CONTENTS 009.32 12K NSWP .COM NEWSWEEP: FILE MAINTENANCE PROG. 009.33 20K NSWP .DQC NEWSWEEP: DOCUMENTATION, SQUEEZED 009.34 14K RMAC .COS+ >2):4„ ͣ#v#: :5$:)%k %G I k :)%:)c %k %+:4„ :4, " :4 :4/ :4 :5 $*#5^#V*S"s#r*5*#5s#r+"5 |#v#*#5" 5:4 :4/ !"5:5> %AB,#*#5 :4:4 !;*M_!Q^#fkox Iͻ8ʗy0IͻGͰͻHIͻ(yIͰͻͻy0ͻIH'd ! ^#V#*"0}o|gF 9"":!`x=`y0l2!!4^4!4q/:4:4,; *5͉: 5ª|}$ªo͕Ͱ8Oͻy0H͕H͉: 5në:4:4,>C0:4M:4  ;C:4#:4 ! #! #{ozgBB**}j!]~ } #ymy>2(>2v3͖*5|EB"#5>%0,# ^#VÕJB*50MB*50!".*5} "#5^#V"5*. VOLUME 009 DESCRIPTION: CP/M UTILITIES NUMBER SIZE NAME COMMENTS 009.1 4K -EBMMUG .009 DISK NAME & CONTENTS OF VOLUME 009 (OCT 4,'84) 009.2 2K COMPARE .COM COMPARES 2 DISK FILES, LISTS DIFFERENCES 009.3 2K COMPARE .TXT DOCUMENTATION FOR COMPARE 009.4 16K CPM22RSX.ASM SOURCE OF A CPM3 RSX FOR CPM2.2 PROGRAMS 009.5 4K CPM22RSX.DOC DOC FOR RSX (SEE DDJ JUL 84 P.36) 009.6 8K DIAL .COM PROG TO DIAL NUMBERS THROUGH A MODEM 009.7 6K DIAL .DOC DOCUMENTATION FOR DIAL 009.8 2K DIRCHK .COM VERIFIES DIRECTORY, DISPLAYS GROUPS USED 009.9 2K DIRCHK .DOC DOCUMENTATION FOR DIRCHK 009.10 2K EBMDIR09.TXT DIRECTORY OF THIS DISK 009.11 6K FINDBAD .COM FINDS BAD SECTORS, ASSIGNS TO FAKE FILE 009.12 4K FINDBAD .DOC DOCUMENTATION FOR FINDBAD 009.13 20K GENCPM .CQM CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER 009.14 20K GREP .COM SEARCHES FILE FOR STRING MATCH 009.15 10K GREP .DOC TMAKER DOC FILE ON GREP 009.16 4K GREP .HLP HELP FILE FOR GREP 009.17 10K LABEL .COM PRINTS 1" LABELS, MENU DRIVEN 009.18 2K LABEL .DOC DOCUMENTATION FOR LABEL 009.19 2K LINES .COM GIVES LINE- & BYTE-COUNT OF NAMED FILE 009.20 14K LINK .CQM CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER 009.21 2K LIST .COM LISTS A RBBS ETC. FILE FROM LINE N 009.22 2K LIST .DOC DOCUMENTATION FOR LIST 009.23 2K LISTT .COM A PRINTING LISTER WITH OPTIONS 009.24 6K LISTT .DOC DOCUMENTATION FOR LISTT 009.25 2K LRUN .COM RUNS A .COM FILE WITHIN A LIBRARY 009.26 16K LSWEEP .COM LIKE NSWP, BUT VIEWS ETC. .LBR FILES 009.27 32K NCAT32 .AQM NEW CATALOG SOURCE CODE, SQUEEZED 009.28 8K NCAT32 .COM CATALOGING PROG FOR DISK FILES 009.29 4K NCAT32 .DQC SQUEEZED DOCUMENTATION FOR NCAT32 009.30 4K NCAT32 .SQT MORE DOCUMENTATION FOR NCAT V3.2 009.31 4K NEWCAT .COM UTILITY USED TO CATALOG DISK CONTENTS 009.32 12K NSWP .COM NEWSWEEP: FILE MAINTENANCE PROG. 009.33 20K NSWP .DQC NEWSWEEP: DOCUMENTATION, SQUEEZED 009.34 14K RMAC .CO*$Ó$U!4w_#~ ʸ A:4~~# ¼ > \ ?ʻ w# !ͼ ? !ͼ !)ͼ !ͼ :5͡ :6:6͡ :71ÓU!4w_#~ ʸ A:4~~# ¼ > \ ?ʻ w# !ͼ ? !ͼ !)ͼ !ͼ :5͡ :6:6͡ :71ÓU!4w_#~ ʸ A:4~~# ¼ > \ ?ʻ w# !ͼ ? !ͼ !)ͼ !ͼ :5͡ :6:6͡ :71ÓUaÍë1KïúÏíÓV $w_#~ ʸ A:4~~# ¼ > \ ?ʻ w# !ͼ ? !ͼ !)ͼ  !F#x]~#!g"!i2~# ]",2-+}|~#]G:xQ"42+w# 4+6#!s#r!6#h!"!@"!"!"22!>ڤ2ͭ<—͗:ڏ6:V!+͗O?_!~7y?͗:>M@w#.66A7w#A.> w#7M.7ȷ7?a{ ͗O{!y" h7?_bk)))))!y|}}|!,}|!-|}!+,z}!+,z}!#-|}!#-|z!-|z!-|z!-|z!-ɯ2||Kz|/g}/o#|͍ͫ|/g}/o#ɯ2||͍:|/g}/o#|/g}/o#:<2͓DM!xxGyOҥ)Ø|Ͷ`i|)øxͨz/W{/_ѯzW{_=yOxG2||ͫo;åí n *`is#r*! s#r`i~#fo! |r!;Susage: wcount "!s DM!"!s DM!  ! ~#fo~#fo! ""!s DMs#r!  ~#fo!|/g}/o#9|!Error on input file open "!s DM!"!s DM! s#r! s#r! s#r! s#r! ! ! !P"""!s DM s#r! ~#fo!|/g}/o#9|x ç ! ^#Vr+s! n!.}!— ,|< ! ~#fo|!ʭ -|1 ! ! ns! ! ns! n!i}! ,| ! n!g}! ,| ! s#r ! s#r! ^#Vr+sß < ! s#r! s#r! ~#fo! ~#fo |ʟ ! ! ~#fon! }! ,|ʇ ß ! ! ~#fon! }!¥ ,| ! Still have cr's "!s DM! ! ~#fon! }! ,| ! ! ~#fon! }! ,|& ! ^#Vr+sG ! ! ~#fon! }!D ,|g ! ! ~#fon! }!g ,|o Ä ! ^#Vr+s!|& ! ^#Vr+s! ^#Vr+sG !|+ ! ! ~#fo! ~#fo{ozgs#r! Lines(total/command/text) %u %u %u! ~#fo! ~#fo! ~#fo""""!s DM!/ < Words = %u! ~#fo""!s DM!] _ "!s DMt 1*`is#r*! s#r*! s#r! s#r! ~#fo! ~#fo!{ozg |^ ! `i~#fo"! DMq s#r! ~#fo!|/g}/o#9| ^ ! ~#fo! 9| ^ ! ~#fo! <|N ! ~#fo! ~#fo! ~#fos! ^#Vr+sÞ ! ~#fo! ^#Vr+s s! ~#fo!|/g}/o#9|ʣ ! ~#foì ! ~#foó è*! s#r*`is#r! ! ~#fo!""! DMͰ s#r! |!`i~#fo! ~#fos#r`i~#fos#r! ~#fo:*`is#r`i~#fo!9|b! DM4`i~#fo^#Vr+s|ʑ`i~#fo^#Vr+sn&! `i~#fo~#fo`i~#fo!"""! DM7s#r!$|!`i~#fo!! ~#fo'!{ozgs#r`i~#fo`i~#fos#r`i~#fo^#Vr+sn&Mzâ â*`is#r! s#r! `i^#Vr+sns}ʤ! n>%ʉÌ! s#r! `i~#fon&"! DMAs"! DM>|X! s#r! s#r! `i^#Vr+sn&"! DMAs"! DM>|U! ! ! ~#fo'! n&!0{ozgs#r! ^#Vr+sc`i^#Vr+s! n>dʉ>ss>c>u>xvt! ~#fo~#fo! |!-"! DMD! ~#fo! ~#fo~#fo|/g}/o#s#r! ^#Vr+s! ! ~#fo! ^#Vr+s~#fo"! DMG{ozgs#r!|p! s#r! ~#fo! ~#fo |p! "! DMD! ^#Vr+s5É! ! ^#Vr+s~#fos#r! ~#fon}ʿ! ^#Vr+sn&"! DMDÐÉ! ^#Vr+s~#fo"! DMDÉ! ! ~#fo! ^#Vr+s~#fo"! DMG{ozgs#r!|s! s#r! ~#fo! ~#fo |s! "! DMD! ^#Vr+s8É!  s#r! ~#fo!|! ~#fo~#fo! ~#fo,-ʻzW{_í!|g}o"! DMJ! ~#fo!{ozgs#rÁ! ! ~#fo!{ozgs#r!|c! s#r! ~#fo! ~#fo |c! "! DMD! ^#Vr+s(! ^#Vr+sÉ! n&"! DMDá! n&"! DMDaEN?2*H?:K:==?p:o&:o2&!o  . &:K?~?:N"!"*|***?_**+"*"*#"6}:`in!0|ʠ`in!9$è:`in&"! DMͥ|`in! `in&:   _ 2 *`is#r`i~#fo! |O`i~#fo!0"! DM!! `i~#fo! 0"! DMs#r`i~#fo! 6"! DM! ~#fo!è*`is#r`i~#fo! |`i~#fo!0"! DMͥ`i~#fo!7"! DMͥ:`in!A|"`in!Z$:! ~#fo!|! ~#fo~#fo! ~#fo,-ʻzW{_í!|g}o"! DMJ! ~#fo!{ozgs#rÁ! ! ~#fo!{ozgs#r!|c! s#r! ~#fo! ~#fo |c! "! DMD! ^#Vr+s(! ^#Vr+sÉ! n&"! DMDá! n&"! DMDaEN?2*H?:K:==?p:o&:o2&!o  . &:K?~?:N"!"*|***?_**+"*"*#"6}:`in!0|ʠ`in!9$è:`in&"! DMͥ|`in! `in&:   _ *##*ͻ>P>P>P>ṔA*?͙͐ͱ>Ṕ͐=NUMBER OF LABELS PER ROW͐͑͐yͰ! ͐yͱ>Pä ** >! >P ́͐ͱ>Ṕ͐=NUMBER OF PRINT POSITIONS PER LABEL͐͑͐yͰ! ͐yͱ>Ṕ͐ͱ>Ṕ͐=PRINT ONE MASTER SHEET (Y/N)͐͑͐2 ͐yͱ>Ṕ͐ͱ>PÔYØy* *&W͟* *&W͟ʹ>P>Ṕ͐=NUMBER OF LABELS TO PRINT͐͑͐yͰ! ͐yͱ>P>Ṕ,**͙͐ͱ>Ṕ͐ͱ>P ́yINPUT LABEL CONTENT (MAX !_* Ö POSITIONS)!͐ͱ>P!́͐ͱ>P"́͐=LINE ONE :͐yͰ! ͓͐yͱ>P#́͐=LINE TWO :͐yͰ!!͓͐yͱ>P$́͐=LINE THREE:͐yͰ!h!͓͐yͱ>P%́͐=LINE FOUR :͐yͰ!!͓͐yͱ>P&́͐=LINEFIVE :͐yͰ! "͓͐yͱ>P)>P)́*͙͐ͱ>P0́1: !! ͐ͱ>P1́2: !!!͐ͱ>P2́G3: !C!h!͐ͱ>P3́o4: !k!!͐ͱ>P4́×5: !! "͐ͱ>P5́͐ͱ>P6Yy* *&W͟* *&W͟ʹ>P6h>P7́6: !( PRINTING !* A LABELS!9͐ͱ>P8́͐ͱ>P9>P9́͐ͱ>P@>P@́͐=IF EVERYTHING IS CORRECT HIT 'RETURN', IF NOT ENTER LINE NUMBER OF BAD LINE͐͑͐2 ͐yͱ>PD1* *&Wͽ!>PD>PE,2* *+&WͽI>PEB>PFT3* *S&Wͽq>PFÊ>PG|4* *{&Wͽʙ>PG>PHä5* *&Wͽ>PH >PI6* *&Wͽ>PIf >PQÿ >PS>PŚ͐=NEW LINE ONE: ͐yͰ! ͓͐yͱ>PT>PV>PV́͐=NEW LINE TWO: ͐yͰ!!͓͐yͱ>PW>PY>PÝ͐=NEW LINE THREE: ͐yͰ!h!͓͐yͱ>P`>Pb>Pb́͐=NEW LINE FOUR: ͐yͰ!!͓͐yͱ>Pc>Pe>Pé͐=NEW LINE FIVE: ͐yͰ! "͓͐yͱ>Pf>Ph>Ph́͐=NEW NUMBER OF LABELS TO PRINT: ͐yͰ! ͐yͱ>Pi>Pq>Pq * * ! ͦ![">Pr * * !!ͦ!">Ps * * !h!ͦ!">PtI * *G !!ͦ!N#>Pus * *q ! "ͦ!#>Pv* * #>! >Pẃý * ͙͐ͱ>Px>Px́͐=WHEN PRINTER IS READY HIT RETURN͐͑͐2 ͐yͱ>Pý͐ͱ>Ṕj 'PRINTING ONE SET FOR ALIGNMENT CHECKING!B ͐ͱ>Pà * >! >P* * >! >P >Ṕ͐ͱ>Ṕ͐=IS ALIGNMENT CORRECT͐͑͐2 ͐yͱ>Ṕ͐ͱ>P# N' n* *" &W͟* *& &W͟ʹZ >P >P* * >! >P Yà y* *~ &W͟* * &W͟ʹʶ >P* >Ṕ͐ͱ>P* >! >Ṕ PRINTING ! * *   LABELS! ͐ͱ>P>P >Ṕ͐ͱ>Ṕ͐=DO YOU WANT TO PRINT LABELS AGAIN͐͑͐2 ͐yͱ>PÞ Yâ y* * &W͟* * &W͟ʹ >P >Pê>P>P * >! hu* ! >>P"* >! hu* >!<>>PR*Ṕ! ![">P!F,>PÀ*~́͐ͱ>PÙ*>! hu* õ!>>P*́!!!">P!,>P*́͐ͱ>P*>! hu* ,!*>>P @*>́!h!!">P!4,>Pn*ĺ͐ͱ>PÇ*>! hu* ã!>>P÷*́!!!N#>P!,>P*́͐ͱ>P*>! hu* !>>P.*,́! "!#>P!",>P\*Ź͐ͱ>P u*śÁ !͐ͱ>P!!,>P">P#>P#>P$Copyright (C) 1979, By Topaz programming. All rights reserved. From here on protected by End User License.  "s""""M"Q"w"**"*:wv*M**!**"!wffv>""}!6 #=²!"ͪ2!! !~#!zW{_}o|g}o|g"58bL*5"58̈́L!||LxŷL|/g}/o#y>pny>p>͓zz>7z’{&.T.F"ͽ!¯!!|>}TtYy>>"ͪ2!:_!6:!:O>_*"tv01'!6 :+?w#Kw?xU60#<62:n!:O>_*t"!|>+2}/o|/g#>-2N#F |,áy/Ox/G y0w#Ü*1Ϳs#r!#ERROR IN INPUT, RE-ENTER PLEAS:ͱ:OPyͱ!CP:Ͱ??!L#NUMBER TO LARGE/SMALy!uxu|) w">27?{_zW!5ʹyOxG#yO#xGґ* DMÑBK2 +->2`i"/! T])))0 ?_:|/g}/o#*/DM! Hȷ707 !?_))))":O*~ Q #C~,ʙ ʙ ʙE~t+ʙ-ʙ #ʦQ~,‡# >0æ~,tʐ~,¦# "y2O>fʳO2!"2 :'Xrwʀ: ~~#>26:>x+~x+>> >>#ͱ!>_>#ͱ:ð!:O͑:ðTOO MANY CHARECTERS. MAX IS 252!"2^#V"0>!*0**~ #":2!2(>! *0**6!"#":2 >2 -ASCII FIL~K#=#~#y̱͕2~ʀ2#~ʀ!5ʀj:ʕyʱ!P?2"ͪ2 ! ! "!  :!*~#.,-$*^+/&!\#~:O~#N# 6~ #6# ^"#:ME:ͱ**N2~2#~2#:!ʔ:O>[>]> :=2”>2yͱ¯:/2²^"#!P:ͱ WARNING ONL:OͱP!P:!P ERRO IN LINE*|0|0}0}0!>w~b!4#P* s#r#" * +V+^" y2 !:O!$ ~Ҝ> <£O> > 2>f^#V>!!::^#V#"~2#:!!"zKOFxby5#6b#wbb 5#6bO~h] #6#y*"||}|qM!y2*͓bFO #6 wÛzʴ  !$ 4 6!E 4 6y2">f!2#^#V!!#>:"O:#ʄ!A r#~#^#VN#!A ~#"^#=V#=**"__{ s+=r+=s+= !P$n> 7!D !=(%BAD CHANNEL NUMBEØP P P P P U Ï> G P P P P P P P P _( |±*:' ʸ2' í!Ù:' ( | *7>| 2' 2' *< |! "< __7: r \! (>2 : ‘ \! (_<2 !~ɀ&INPUT FILE REAPPPPPPPPPP}tM D.R.'S MACRO ASSEMBLER 009.35 8K RSXSEED .MQC SRC CODE FOR A CPM3 "SEED" RSX 009.36 62K SD-92 .AQM SD-92 SOURCE CODE, SQUEEZED 009.37 4K SD-92 .COM "SUPER DIRECTORY". GENERATES SORTED DIR 009.38 12K SD-92 .DQC SQUEEZED DOCUMENTATION FOR SD-92 009.39 2K SD-92 .IQF INFO ON SD-92 009.40 2K SD9192 .DQF MODS TO SD-92 FOR NON-CONTIGUOUS DRIVES 009.41 6K TELL .ASM SRC OF UTILITY TO SHOW ADDRESSES IN CPM3 009.42 2K TELL .COM UTILITY TO SHOW ADDR'S OF CCP, BIOS, ETC 009.43 6K WCOUNT .COM GIVES LINE- & WORD-COUNT OF A FILE 009.44 6K Z80 .LIB CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER DR'S ASSEMBLER UTILITY: Z80 MNEMONICS CAT32 .SQT MORE DOCUMENTATION FOR NCAT V3.2 009.31 4K NEWCAT .COM UTILITY USED TO CATALOG DISK CONTENTS 009.32 12K NSWP .COM NEWSWEEP: FILE MAINTENANCE PROG. 009.33 20K NSWP .DQC NEWSWEEP: DOCUMENTATION, SQUEEZED 009.34 14K RMAC .CO>623y"!v36*5"3$"32:4*W"#5GJ2:42942(524> 2S(0>24ɯ242T!4~@`65!^4#:(5O:4yD(w~$w:(50 |:(5D(A:(5?ʱ@ʱD(Aɷ͙| ;!Cͻ2(5:'5:)5:5:(5ͫ%:(5 !J24:(5 ʞ;{>24:'5ʋ:)5.:5‹;Ž*-5*%5++{Iz]~ T++]!]+?"%5:'52'5hͫ%2'5ä:(5*—:S —ʤË ¤24͙ʳ>|ʾ>:(5'2(5> :u3>+2P4(0!K46 >24>24:(52SR:4Z:'5:4=!EQM<8!LE:(5=I!NE>I!LTM>!GT:(5=M!GE2(5"4!44>24!(5:4ruͳ u͇:(5D(OʓQ˜>ßH©>2T2(5:SD(B¹>D> !452T!"4!4N#~#A07O!T/!~*4! ) "4 :(5 5!'':(5 :(5,;%:(5 !:(5; ,J242Z$ l ` / ‰ >24#!:(52S:4; ¡ :4/!:Z/!)!:4 :(5'#!R:(5'z 24É :(5' >24#!^ :(5 #! #!;!)!<!!Z~4z #!>!!Z~#!5z #!:Z#!G )!Rz >24>VG!>OG!>IG!>BG!0!P!w#w#["!"#5!U3w#w#p"!u3~#4^!v3~w!3ͷ"!3ͷ"!3ͷ"!3~w!3ͷ"!4~w!(4~wN#Fp+q!u3~#^!v3"!3#!3#!3#!3"!3#!4"!(4"5~wN#Fq#p>B0!4"%*%F# #2P"*#5##~G=#w#6#w]$*5!4n& {ozg"#5!5{#z$"5f$*5!4N#yʦ$ ~Ù$f$!U3"Q"/$:P"%*5!3{#z"#5%_!U3*#5~#~&%~#$"5ÿ$&%!%*A1SYMBOL TABLE OVERFLOW *#5###w*#5###~,#*#5_####&%s#r&%^#V&%##"%5F%wF%~#!4~l%6~=ͫ%ͫ%!4N#~ͫ% y%͢%͢%2P"*ÿ*:?*ÿ*:@*ÿ*~x/~# *> x/\ ?-$-w#+!\64 #+>GO#w %+>O # <+6 2+6L#6I#6B#w2|*\+>2*5!"B*!(5~2A*w͹*!1*>826*27*!"/5*"5!5"h*"*"*#"5"!5\, _#~ͨ+ ¶+:;*Aͨ+>:ͨ+Ͷ+>.ͨ+Ͷ+>-ͨ+*!1+!32*!1+:=* D,> D,:D*6,_!D* W,6 4ɯ2D*2*522521528*:\ -2;*2@*O:\ʋ,=Ì,y!<*w#w#w#w#>2+52,5:m$>-!~#$ª,~>-# ʱ,<*A-P-S-R-L-*,+,-,-+5~S-M-25L-15Q-8*1,-x#ñ,~A,-#ñ,#6 !1*!*!E**e !N*+-!j**%,r-6* ,,:=*ʂ-:>*…-2:?*ʨ-!***ѯ2:*29* ,,!3*60#60#60#>235!"*:5ͨ/-!"f*2Q*2e**E*+!1*z{:*5G.*B*-.!"B**\..*B*#"B*+~¤.:u32*5G.*\!F2+*f*-•.*!"f**h*ʹ*E*€.a.Ò.Ҫ.ʒ.6# ‹.͹**h**f*#"f*~!2*G:=*..xx/.x.1,..****w#"*!-*!"***j*!*-/~5/ʹ*9//͹*!2*1L/****w#"*!-*!"****/_!5*~ ͳ.27**/5}!1~ /ͳ.#/> ͳ.>#ͳ.ͅ/> ͳ.*/5~/ͳ.#/> ͳ.> ͳ.> ó.}26*!7*è/Oͳ.:K4 :5:=*yx/:8*!5I0:25!*5—0~0:K4 0!K4~ —0:350:P4+—0:,50ʗ0:Q4#0:L4 0:,5=ʗ0!K4~ ʇ0!4s!7*~!6*Ԩ/4:4!K4ʺ0G~ 0#x=ë0> 0> 024!K4>x6 #=0G!K4~ p%,**}0>ͳ.0*j*+:+5ʨ/0!s*6S#6Y#6M#w!*w:>*2=*!"*%,ʨ/26**j*կ ,,0:?*1::*Z1ͬ2L1͎2**}1}w1>B/a1}|Gd/:?*ʓ1**+![2*CP/M RMAC ASSEM 1.1 NO SOURCE FILE PRESENT NO DIRECTORY SPACE SOURCE FILE NAME ERROR INVALID PARAMETER: SOURCE FILE READ ERROR OUTPUT FILE WRITE ERROR CANNOT CLOSE FILES UNBALANCED MACRO LIB END OF ASSEMBLY : 5O!5 ~#fo: 5O!5 s#r:?*yʟ2š2ͬ2Ž2G:9*29*!:*4>6:9*L/29*2%#333/3 3333#332E3 3   MXList WAITING FOR PRINTER $PRINTER READY $ save counter mvi c,prtstr lxi d,call$msg ; print call message call bdos mvi c,vers call bdos ; try to get version # ; CALLVERS will intercept mov a,l sta curvers pop d dcr d ; decrement counter jnz loop mvi c,0 jmp bdos call$msg: db cr,lf,'**** CALLVERS **** $' curvers db 0 end ?D, 3EH ENDM SRLY MACRO ?D @CHK ?D DB 0FDH, 0CBH, ?D, 3EH ENDM RLD MACRO DB 0EDH, 6FH ENDM RRD MACRO DB 0EDH, 67H ENDM  ؈mȈ4.|f-˥&)F wE=@>JaxWÇ[j~TczWo}08)pLK~snJSE#m%X]QyW)&nJSE#m%Ɇ ߼+K~S$|"see<Aao )rKz@$ŗ}$|o͞LdaN9(=lwE=|ެ "FƷfۣ֟0+]dRi#yۣ֟loûـަ,PniocÎ59"<xWÇodH7[j~ҷLd FvHǒ\؈J B3e,uHA(7 Œd|oٞLd 9HvXlYIAh%) [Z"bo[j~ҷLd>8bTAY 4SVn̒f-yW")ͻj+=.|v6_T?r/~Y˾iDVR|'pKWެqi9yͻje4 "+)_I~KW*2w4:CGkee4 ~aO[j~TT?^+=l/I ;-ŗ}R$|"sJ1~O?C; zǗ}$=ޤO[j~TT?"^+=l/I ;-ŗ}+M;P!M#kee4 ~aO[j~TT?"^+=l/I ;-ŗ}RR󕦊G(Ɛ5ZYa{|7M_i)ᖚ4Ud8Bit64Տj˾iNKenJSE#FgcHSZYa{|7M_i)-5?_iql iq^+=l/I ;-HaP. VV(DznJߛ;=BGOȧn|z^+}HWxKWެqi9yc !MFvC񖚟4Ud8Bi4Տ(R1{)[j~fE#Bj?矠~YKADq;(##yï~'EV-5?_{"sJ#~D'4EGh9VxKWެqi۔[nZYHzh.|"5'v6z kg"񖚟YT?"Gz2v;Y?I1UxKWެqi'Émd赲KQ/[j~fE#zmd^yu8uU|͊G(kgbVV{)oJߛ;P!M#GVkebU-5?_{"sJ#~DwmkeZ-5?_{"sJ#~D#;赲Kq񖚟YT?]÷#;t6p'HaPhuxkڠ8JaK5m󕦊LEƓX#Z3G)^6 QAP #ct6cʝIgtKWjVsX3Rgq5IPn1U#k94(m'2a~99mɵIQ]|h.WvOF)ewm3̀u%O NKSpKW*2w4:iCPc8B{l7*v(K).eT|{2앻ئ!nUd;}bz)F }pcp [G)rKS5z|ʰ7E;):+D/=|qĚR뙖 O!m9"87ӧ 7xk_~LYHԫ[j~҇Gj=G!Ύ O!m9"8̯kpOx3zp?'Wo>$ERoJ&f8;fÇG!{|"WnJ&f8;fÇG!&Ŷ+ޓFvF #bi<6Q #E~ᖚ4Ud8Bi8Ǒݱ_4|͊GvgUDoSF0f;4'")X*}Hv+:;Gjʚ[j~fE#lަCi!]o‘; r+PnK~sP XljOjĻ>HA:7p | 7+\Y𮨇(Wެ 4SVn0R) Y F!+-5?_陌afNY/CnJ<:&8(YSi\RJfWYxKWz~&3ox~}DTAI14f+=#8Bg ]Tb$-5?_'2S:_f+=v n}'ET斚g2~X5PoJGSs3RECg|odVxT[) R>C#;'hN #PniF K^HqW-5?_L}hSj緷=` a^+b[oJ|^sVnJ|R)+DfF K^Ha [q蜯ö8Yb[j~9_5x~{KAhJa0RP5Υ0R)eВCEc:|)ǽ44Hc3})ǽf)͔-R)C%Ha{)ܼ/'47MqsҠCF #Ǐ0R)x]jZ0JaX&Δ4yVND&YyzUkXirL4VCs!2JbMbtR,u̇rLu̇Bdf1c:ۅ;ݱF BT7E"2-ٙ:!2>8bǬvXzuK@v^zXCo=֡'r+PnioDe[=K$ꖀlER)+R)-eg6SDg?3MpaV0R-U=JAٙb@QexuPl@vMRIn);S*ODf:H|fBQeoWþ)(; 怒lE&2!M#֩ ;uvۨO^ B3e喈̺UӭÜrpcUYw;~b)F;[9)Frpc[?)4Ô/-p>ww{T~Ha9Ęuǿi#;/*SHa0iP6ʆ} pL69m;a4ì}oOA vӭ~h#p[čn&CmqavkgbځüAC{!EŻ`Ҋ6AAm1ch) qO2Z߱CQf06ᨐ)h#;w`qͳ`#=.g> 8wat܇6UP2G(Ad^; mHgڰam`pL({) t0ݺU_:bf}x@O!m_Ǎ7RDVjøY{i8vP;'t>q|HAٙ0`pJc^' Cc-;)I [j~]p/8zo G1e)Df>]C!8C#3= ?8KAٙHdHÏÏRPv??#>#>#GD??H@#egz##???~3= ?x/egz##???~3= ?(L$2~$G|G|G^L$2~$G|G|GJAٙHdHÏÏ$RPv??#>#>#GD??H$egz##???~PIAٙHdHÏÏR)e6\nJOdv}ݣsFvPᘲF՘-%7%oRPg>N;D)hO2ZyİJ JnJZՇ՘_ɜX# F #A魲!0?'۱Ƭ;qF BYSIA>hI<+')hO2˲zV$,Rjd44eM J:CsVcNCsYV,rKDfh.eTR)iVAmu 뭲!eGT@p0RPrScFdzqtz@T@pӞ赃/4z֟N Z.%,Y>odN? t.8HA7CN9FvצAi'ݶL[Z -\ *KAY1P!NݶL)F I?b;x?NzlH/AY;0iP8HaiOdGV'PY>oRPrSRv:DV(#֟{(ޭӠX Z.%qF )@P[A1 bz-䖒,ȜXAn8)B!'2;P]Pq2)nh/e@:ݶL)hT?+!'07 E="y9VRR](?$Rj T%}x spGQfORr)9m{"sbuB#;m͂Rr)8!M6N  lTL"Ɯ$"cU6FTv6owGvRjij\Wyx.0ni.r"nԆQbt>1f1>`:xVa[0R) A!g赲F4Տ6YvwHgAmX VV{vg`0ZY[N;tڝU`#fq'SHm;VFqB!*<#Vv6VIa w82)jYiwަÎw<듷pVV(viʧݑ]ģMS}N'k~14u3 {_qjØn|zƱ{vpAmAm0>MY #ϡZY#i=Y6owGvx^ Ka6mq;Fo9~ PnDz䦤Wo{"Yaֻ]RǶaW줠+Ojcֻ]RǶIa0R8y^;>HaXSV%TN7bPuhV#OVn|zƱ{vZIAKuHAE]KA;ZSV%RPVО=z /:F@\vSJm= k;赲Ѧ) {q;2) m"(ŻҘWַ1q=m6 QAPFo90RMOD z-zJ#k0R[*ʈ̱ݭ4<RkeGo90o b'e@g"&0+v) C崓^*j$2^+=zi mTH*tKIPFdN6 ϟZY1o b'uI'|i<26a_KAhULU={1F BwE=|@>eO$uI{"T?Zjr""9`{ ;~xLY%"󮨇ȧ _U #%7%xN>?91DjTv )KA˥P5SɜX!eRzH~iPᘲFZbKtC{"slwk( ϟZY1e̛¬IAY1PAdc<2t{ Ccʿ^Qj 2G_k6^+F BwE=| 2ӻ~󮨇olSwRP}]^}!21<1<)(roȜXqÜxX r"3ox~UR;%/UD^+X%-ՅBdN6 )C^ *'2OP/vŹ?P/vŹ_WP/vŹ򩤷l'2ˆc؈vf9DHq---ՅCNdj0zpLY #T-y|KuUSBdG#s{LY%"R)XjZ̬wu7YãU赲CcRjɋ=OV\JZoDF G0+Cm}NRPQtl|AͯMՒ N!(cRPQth#;DnZ *T-yx@T)kdI? !} wQ z]jZSUD!'+ 'VV{̛¬Ia%/>R}]^}jO{)(rʶI^ r)uzGS7)()ig"Ya[98)}bRr))?H^ Z9-MAd: 4SVn,MHa [K~S$dl ;R(U&ƜNLaf-"Q #-CR>)h5$HAuUSNdN`a~A.Hzz$˩HMT9?a)4j)'2UR􎊤Dk {fBqTRP}])'2GPቑKA˥|;XCj= N۝HA(7EBdl ;Rzj/Ɯ 2UR)+DdH0R-MՈ%)2GTYSH[)*VcNT'DӰJ B3e喈TX"HA˥ԫg"#Ɯ^)jʉ̉a~N8rI #ETᖒ,"6yOdR:xj_a)4j)'2UR􎆪'"5Ԇ=UPB赲KAuQCm#'F.-OD'5;3z7:mw^ #Ғ =B2R|H9(sZtVIAhY"HA(4U#HQig O!m+v>PL Z9-SN*)͔["2S5boD #-CRsZzEd)'2'V 0HAhJazn 喆$im#+i8!:qdĻx'UCN9yx8r#'(vi砬Rr)8 ͪ+T^ 4SVn U=Ja [ʪz,{"c{Tϝ/pBdu!<Ѫ B2K~SHA1e"nA2ՉF Z.%凤^T9hIVcNKRL1~;1JAIӒD O!bo )KFdaiav:_KA;J"y&2 jK E,-CRLCOxjea)~oRjiIY~*X4:YIaH"y$io "sb%)RS^ *>u|DR;J"@dl6PI]$| T'RPQLd&av:6[_KA;JUCdlԆ=^J)G)I]$nizX Q#2  W՘Ӓ+)z)+DdH0R) .!]P'Ƭ;FqowGv; s1)SU-%7%el.dN6'Mف;1X =eRP-D u<+9ĘuRPV .poRPQ/9BfֻupG6؅Ov9Ng)u*nʑȨ}bsځ?YC R)喖&L z7ܔ?,MFdBuc'RR](9,Dfo2(T *uОb)!2X%N5M9 G{:LY%"7 B!'2mdt>1f1BJCcRr));Ia [zWS/$˾i"sb/IpS,UCN97<*)]WC#GFvRr))?,7ﮫY Fv=w .5]WCf-wE=|@>eOA #u5_o))iHl^AiCdO6 ǔ,(Ba!2'VP.|v6_kO,Pnioi##;)-GqҔTr"3αWx i=$ioD&Җչg"7Հ8v3H *Dfֻup aG-N]WC ǔҖw!MA;ڐJA1%"id8^afX%rKDfoFj(~R]|Adbxb c>z$SI=مFlê?1ߞ՘Ӓ\WazN JnJu5Yk0:xVݡ)XjZ̬wVѪ Ԇ IA5M9^vOVh#;vwd| TW5eD㨜;vc81zN Z 37<@iDfjc#:gX M82{ztׅlQCm#5Ft>ܔ?lZ[4|رT qͳ-wHA(4UY*uI//E&rKDfrU #uI^wY #`g|.0!Mq{)_얖KI3N؎uFoi}OdҎq{Y *KAY1Y zIUR)W8r))?͌GvOVcNRP' q5D&B9VqgM'ƼE JnJřȬ Jc[9ĘuCgJ;)h."sbat>1f1t{ c[!2^]H/'Ƭ;FVM\J*&V_DNyVPFgJ;t>1c,?TIBEa^CHS=eJ;)ȓf 2=^?HA˥&RjdtN. aTW5퉌㨴ct񬴻CԴ9i:FafNTxYi'HaPtnӠcCGD jMޞZR<4 gjjØev]g>Bi c=dަ,o7v۴c8w`"C;#p)ۡiniO2aoL O]@`YdzN J.ͰMy E="uIDۯׂC|x#2mdÎFw=VRP-D OHAY1P.-ՅCNdB֭bl3V03YT Z.%,yPQ/Rr)8|#2Gv~| +>Ho-%7%|Wd`#sT#[rIA˥b`zw<+"W)rʉ}'+)ۡ|P~X!rȥm[ȤZko8)RPV THA;ͷčAG)('U_x+8m`=JAKM"s҈J;UR)C|xRRqx'IU9B:1Bi砬xYi'y9VRM/%$suỏHٟF *KAMI*S=`֭WPoR)ޯjOT]8F)(ʤRRs4N#~c(N- yBDFqT8Z%4UvhrFCsKKuG7'2nB=_TT 9wLYDoU=t{S=D)h.2"8*G5Df֭Wǯp*JA;zkMd:ڰ*)jʈ̱ݭ4<R8)~x2"{4xVIAKMWHdN#HLYTW5eDfN984sPV{<+ TJT/JcJAKu,%YNj%2'V8z~A^N Z]KFdf)NyVE(R;Zb׈۫+_"+cHaפ,hOdvm:1K_sNJAY1P.Nh;4_Z #*lV$4D&'0znj3UV! F #;l1GlֲWX9qcSPFHmdKaX5xNn)'e7D u<+ !RP9Оt񬴻C0lDVK~g)(3NǔYdzRPrSRv8B0t:vPᘲeD&bhױ ǔ>h<'UAd|11őOGhm|ӏ'UH۔1+vRjd4V|GdO?㟔V!E0fzN *$U3DVȖvYiw)hTVM>{2'VܼAo]T[?+ԔTW"|F zvA)F Cv:vw`(bniTf$27IIaH-%7%emq c6m#~,Tuz YF9yx8ymd)(2ʉy:vwRPeF| YF9yx8)H?IAMI9_5Z[4m߳o]CillIAyQBdz^;)(J+Yk ;RR](9D&'owR)VU=JAIӪ{"mdk9*۔㯥j)^j[}LY%"Q #-ՅBdNNT 9DfU;)ur 2Ů6A)KaX}_mT 9iյ7"s F#;6ѧ;)h.r"O֫^;x(%YNS̉9 md'KM:r 2c{vTN7Ha0XrwP*SHA7=Aid쓌fO *S{4\J: {? ~ÎPwk>?)wR)ƥ4d eD 앻ü N #T)j@5`h.eT򩤿~b=fʭF Z -DzpLY *ʤrN;:q.TN7?? >KAtC?)(ʈ̉~IW7>N =L OM*-ՅCNd"+k<*Tuz'-7)ht>Q *$>I>~RU2"5z2"5{%%Y~C9Rg%RR](9RR](?쥠(M Z 9' )b\J:N *$>I>׏؄UHyVE#2"5z2"5  eDfWPgfz%%Y~C9URPeHAKuKAKu7)h.?DfGlB*<+t3"2F;F|i>$R͸Ob^ Z -L *KAKuHAuUSFdB( .RP9^ Z퓌fL OvT8ucn{)('u̱ݭ6@5o8b:RjdTTioD&_O 앻AʽgR)V$,h/e@g)hx'.5I"HaN!kgHro Q @ת"OZ5㶪c:۔[n%?)͔[)쓌:D M>nB!!= n}k)X OVM9׭鸞ӞmʘusZ]U]2R'N#R)ʆPv;pLY #%$T9BT)>*Sn{"2+jȚȬ JCT8,%7%߈ {?FsUCvKKu~v;sTN7B!#21<16v;sTN7n{"2*SF:O,Ldz{b^  "t;g5ojƬ[IAYqC{"3+t#z--ՅC"UCN{"ӎ-݌oGCSsĘuIA;:'Y5dD'N#x6=KAuUӞ)T5fzU_ddTTi$2'Vu':D&'F FNIAYqC{"}zgWRR](?$RP5䴗^QVM x@Ԉ/vHa076"jtg؈Ѕ;%UpWvޞGuӆ݃FU5쓌VEuF"ݑtYR)[r"3ܝT{">>A A Z T4TJT 9퉌 ӿ^QVM Q3RT م)N Prȥ>}^KAtC{"S}^Y #EV$R )怒dd>P~hZ Z]ϔHAKuKAKuIARR]hȥ0R$niO2zn{)('k"xRPgIA}{)hY1acRP' RCCdf[|߾ZSG"c{}ݿ>IA>U )怒dd^ *$՗&2ib}鸞ddJd^}^KA7쓌T)B!B!V3KA %$2?}5VHIAՐSBd //?JAKM7)o)':DiP줠b^ JIF%)_Y *KAKuۣOx_RzD Z L Zϴ^kJ>HA>}^KAKMɛF #J;X;+g9JaȪ%[VHdlݪujwc6e)(rV6y/UCN:#=z2t֭:i q=m&HaPi6^+=؇cwx{ZA{ .*C { Ka[nz2lDHzwXh՞#cŮ6 f {2'VXk;( ݪu۔ѧ$KM v l}zB:#= ^+N_z^ ʊ"i"+zB/R)[:۔k>cxc=dxfkwRV[ CuřL9Bj*6eqlTKIaCC*aUV{( a!*80=Ԇ{ oiT^sTO[nzTIBEHA4P.a 2Сx +5{)U=-pKISu^ JVcs3c(ïPa#b䦤RP9 N#plwk( ϟbRRqf"2wPJC*)ȓzi\ zQUOK5Y{e}k֟{l ӎh!2jzk3w֟{%-CU7TIBEHAISu$sb@Ԇ{%Ha+Xkugf0b{ )C64Ddzv0b0R$orʉP{ޭݯw4Uu$2G { ')RPV .YnVcNu?|@&YAi8\J*CgD!C4Ddzvtަ,yPQ/RP58thjnQ #ҥF JIFEuF"31ݺUÎ"OZȨpLQ{D1e)ؿ'"am6MqdDwb'%$Tyxpܵ ^?)*N?q;)(3ʤ>hj@dbxbXhgV$*<hjnƑȜXAT8^Ba!2'VH#!trT 9ƞ6ЮcucRjd457Hdbxb.(1etSQ2+wO0R-]*kӞ]8F;PGN?q'%$R9B:1zx~ ǔ4֭U^ =L O 䦤ȴ.(URPgIA}|ǁC;|ƣMS;*Sꪦ=9:^aJ#tb̺UY#UM{"sbuN?1zw]8F"-·g"/ ݣ)Ç,yR]"O S&rKDRTY#rKS5RTY#-·_ަ vIm"OM9uf6ev,-=YC;l')ȓu#-·oDq;|ü .̊]۔ݚ"OM9JAh)TIBYURPO2qU#2Y N°_,(#24V!EV$W;)('ո-"SBoSƬ[r'ո-)ؿ'"a~AoSFF BKQeTW5eD 0qÎ/ 4NZ Z ='F0 ǔʤrL Z D Z eR)g6e,ե҈̰=P;^ ;hR)('ủ9 Mnb;( VIAKu!D z}G0VcBdlӎ۔#UP킻nպURRS3w"c{N'VPIAhUHa0RTZ jÈ6 ;d6mR)喦jĥF *$m0Y`\J/D!NSG6ha)ȓu#HaPyFoSnպU QAiDfMxb( ݪuVvО0RPO2*4+̭sz2fzwPBa/UCNaƄ^c)G'4bwݪu0R) rCTОӎ۔4t֭g㑱nP:^!-bB =ի/RP1m3 =;+V[agƼ .̊TW5ի/Ri;4t֭BZmء)Ka0RsR}DBGhR)KRNd9-SHAKuǑ|qĚRnb'yP1$["aftCixZR)!+$i[#RVm9aRPt~HAKuKA˥F~ni.2)rʥ!PvȥP~h!Psȥ,Nh)hhF)?Ia0Rz}lw!ţU:OFlk1Z0Rl񖈌}]R6eD cWR-}CHA7CN9S)~aѧ$ƜwԴ:Wf-~h)YSxK7CN9S)~aѧ$Ɯwܔ>?}A JVzURP}]^}nr)h5洺֫?IAE$Q Z.%{"sbΞ,D z]j׍F|_\J:LT)ǣU䫢,&"+'-՞D&':^.X߱<\:"*hĮOTW5ի/DFm~Dx wp w줠rLdnΞ^}RT5a~H[DqT1zN Z 凳T%ݿ_itdկeufX%%YNɻmȤ:OT 9Rr))?ܿKA; Y;:{J JVzUD qfFlk1Zѧ$UCN9̰=ze MJF)hxGD 'H9t֟a(.5hLʡ_采^!R)VcNɻmȤ:OFO X;U^uCdv+td㟤0R)?RTYnqذc)K*N0kثcF;<HA(t)b&[Z e=Tj ,(<,(f<|F #GlNzX;t۔}10ytڝU0RJA˥WDfWma[TIB)G)h"O׍\J:IAE$4~rjO{)ȓyLzwxợTW5PvX̉JKAtC{)h.)ؿ'"O"OfMQ# Y`tRR~hm;8aT{)rJL=/4XZ qZa{xvަ 2ώwB44f-KQe㟤0R"bAUVYQ 0R) VUHafߡ)G;)0Vcr+TUHA(T(%YNIUoRP5Ka [Jzh.R; 4SVn$U=4)rKS5"꡹HA; 4SVnLՈ"}X2!2]wm5o~--Յ^ )Q=,D&5Ԇ_`{xn}'j|+f-G)͔["2S5RTYCR)f)'2'VRjiuWuAdb^;):a=V!RPO2q[&Df M9ͯP~KAՐS"f"_jÈnlGFg;[!;)'21<1jܖsN6yOd"+6e40R-]*kLʡbH;eBj*tRP-8^+Eew q=mj)CLY%"s)HAMIaeLfWb8$9Q *$z(Q JY ʳRP' V[at>1fݱF BA *$ׂj)ȓu5ݪu66owGvR)+Dd)Su]5-%7%eɬ ?b[&?JAE$T4JAuUӞ8CbmHAE$5E=DfWGoS5ojO96*X9D,e"!ǣU;XCj=KAE]7"c#·_KAh5.D#Ԇ=]kg ?Z z}Gp!2w6_pHX;ܔj\Vuj:gQF3z4IAE$T4N*)V_rKuUSNd֭U8E JnJc5.o$5l;4ӛTIBPN쓌j\Y )xަ jp'yP0JAMIae^ǯQ *$z(Q *$zCCdt֭Baf8?#C<(PniF\*k"O*d+rKDfF\*k0R) VnRkgv+ clަ8 uQaֻuX UHZjX;nmB~HA(t)biSNd c$iȤ:th;XCj=KAE]3VR􎖩x&2 B>HAMI3YFvwdciQ JnJ:??{:mw>bg},b[*>6*|:e*>kaQߤ䦤YFvwdciQ JnJ:>|~&2Au|6Y #2nKFdC Vۯ-S^+ {( vI JnJomowGv=f;䦤g"ݑtYGo#0R,S햊c^6*k)uzGTDdlԆ=PF JnJo"2;{:mw>JAMIOowGv=f;xHLOTW5Df*Xc_dd4VL̉V!owGv=zr<3q5F@ߦ)RY Z.%R)z[* "s_Ѧ)wh贳줠,(#2Gj=G(#q;ׂzg)h. )h5攔S"2UxbX^;AVcNk "T?"֣w+MQ #`jwGv=R9BGD C앻 i0|;qSְjÈ@d֭UN #`kg`EPP ǔA #%$RkmP;*S)ht><\Jo^ #TᖖB!RPV t^w44~Ha0(x^AmAmvh## zhc8Ja6A!`i8;Ѧ)^q+vPFBoSa^ a6eZmAm0f;Cm4=Ha䦤amHA4"HaP;tZ=zrH14~"O*dKd N!#RY =D&'U6*X9D,e"!ǣU;XCj=KAKuǑ|;1(UM9Y V)rKRP}],%YNLdF?sR|[<+>Ld8ֳTIBHA(44u5 2uE&QݑGHSȝTIBK3HAT)͔["2CS_W)C=\WR)ho怒"Oy&UMg)͔["2c_Ha0 uQ)c)쓌nꪜF"sSW4bWJ#tȳT8,yzΉCP`pT?*g;;)묲ڇ{JA z}GSRN a6[ciA GoSR)^!}ަÎ0RPO2r,(#҈qSa{) {Oxj;G 6N۝=zrl\A #AWP:6ev|MS8w,jO96*X9D,e"!ǣU;XCj=KAE]3VR;QCm#5|1z%uI ~-K5Ԇ=]ÇcWRP]Քu`a~*90RPO2r,(#kgꪦȬ[p F JIF7uUN#eDRPgIAYQ&yzΥ0RRӥXoR\dvKuUSNd:{u`a~+DN*x(ťXoW Q㤥0R)[JIF7uUN#~vcpSW4Bix۔䦤M 2)hO2rdd4VL;҈̰=1t{6(-Յ^ )eURG<2c)()iHʩY|?Q3wzbE zTM #EV%Pn)Q J&怒j)HA(T\wTc5>KAhIzh.R)喦jDRCs^wTc5>KAhIUE #%$eBd6۔#:ᑱ jZ Z 函T 9%RP1zYŮ6]pw7<3zN #E=|KW{)͔["2IUR)+Dd.E5R)u<+kmd8`ֻuʊqmdj)ϊԆ=NFZmءg0<Rh#;vwd+⑥0O3sa'kwh#;vPFg:gA #t3^W-R^#=B"ZY>S$)m^+4EEtbIIAՐS.N}U$鸞"O*^xd{O(,k)赠U#2ŮFv~vc`{x"O*a$2ڡ)E%%YNK~s] Dkv qb]dwmd줠䦤aj\Wc[gIA4"KM 4GxFv a>]:jY{e}˰=v1qP'-rKD&Q #RV#)C^#cצ~l|^+=؇cʝd9u5Ǒ!2١jRR]h9D':vwܼLY%"U|ʐW(Ha6nCHSuЭZJYzi7P]cCmU0X Ƕ!s#CmMGc'( dn }U$n 営U=JAMICUO=+6e5{DT68BBa!2v3ñ^IabKIM r)M7cJd]cNu=t !{fϝܔ?bP~Xc,?1ji7af.z)h?<<۾gw@8_4BinUPm!붘?Ƕفwku ўPT̩Ulc`#xVwR;&՞<:i g:(UlMS^ JIF붞F"idCַ;۾gG6(;)uO\JZ?RPV KA;c~"2/kCYBMqlzAJ #6ܔ-d # QAj*۾g'-×)ȓz!\ zїalA #ET[JnJug2s#CmUV)KA˥P$ժF BA *$ׂ"O@dt֭0IAh0RLu5'U6\ȜXa>]CcCiDnHAMIö8c[gOYw,@T,5-DBg a>]ZTF B%)(rZȤZ (ՆB2RJ *r)XjZ ~dk)赠F"s 6nl5R(.5MUUD&rp?)t6HAhYlHASASU#ܼO /=vSൂr-KAhɪzHa0({x^;i q=m4rH1xK(TWHd /=z6z$˩m^ r"v+vOk)uzGM96*'RRq\Jj@dzbHRP' "-C%2'յ7)u*(~'2k^|8iPZN ʳߤ*'P~(YGtdTIBBLdNz"a~ꪦFzsKyV۽4~)͔["2CS_WF #V d;üvXcR)!r))?;TIBKI!ȾC^u#y'OVAi!M١wz{Ha0Rx\P at񬴻nպUG60j8;0uGpCZm!R)T4TIB:/)(rDg?3MpaV0Rl<"O Y;:i F\0RhniqO/i q=m4u#HaPj*̛¬zPQ|@ZYCAi~Ԇ0ЭZ MA #nntjOT_W{KAuzPƼ .̊nպURP' DҘ:e)jW_㨴c Cj*̛¬IATmD&*gXgVA{̛¬Ia0R_`{8~bOckGt^+DCmX Cg=MpaV+wdMpaV"*{A #\ʬ.)i򬜈r>[^;lljKAhHd])M;T%X ͅ8~bQ~-\.\'v:kY/v-:4[Z 91o b'%YNrȜXa6bfN *꒒&ʉ<rTg"8*&8)M>L|k6eaW0RW_VcNrĘ7YC66\XKAhK5F #Q)Cj*tC|k(u81֡ QZ!>F BmURR]|ȉL O]ü .̊Y JUM۔[n¬Z r)uzGSe(G"sҘ7<pbCJ #`kSnպUfe /:#cNDZ{vP6,O &0+v@=;mbVancx֮Co]T@m#YP:^=;VIA˥e(F *$^oV9)vmT1o bqT 9R c3 DY` Gg 6MTRPrSP]uKqdc+vRr))?<qY=;af0R|R]h9L'Ƽ .̊O ǶaUV{)nhOdnc+vRjdtni$2C O ('2_0+&0+v) =;)h5tni$2waF2--ՅÙ8C"*gk0o b'rKDf[գF BG"c{ZY|*{"kG=MpaV줠PsȉLdծڨ[n搦Rr)8Q J&⨰v+vp!\ *QQ/DfW7YѧZB!2琦7YLY%"SW(Pnih.eTRL>oi5/!L Oy\;acSʅfʭF B}YIAE]R%2#cRЌD?Yk%rKD~__VR)喦Oue%%YNSUoDF cNuh#ol ǔ_KAՐS.{=4#OVZ B3e喈T#)Cο0R-J Jr*ȜX!1+)ʉ̱ݭaܔ?,Ixda{ #ΎZ z-hƦZbװ=VRPrSRvhղzOt6puh#c1KA˥P4<<G6Uy'(:RO2:Rr))9U *$>򩤿0$HaPlx~AqH>8$W`qԆwG\5FsSR8$֡ QCy }9_5xKIDfj#t;:)ȓWqZ r)hxGDy(9);)ȓr#9¼ .̊T%zbL>^QsFdlbL>PT%ݯ?'2Ř|^Z wDd>jҘC1D8Vun-N﨨oDUBIAKu'2|->c^;saKAՐS.N([}m(Э8i.9`紓BLdФ1ko^]H;)E|xi/UMTW50$HaMUVa;>ji6Cp| ْjmRV[c0Rq[շrKתQ W(yP DfN98;EҠIAISd@dNFvA!TB!KIš SAEǑԆmd`{o|LY%"sՀGHA(Q JnJu<_dv-9zwܼ{v^i KAKMf@dt֭±{vR)+DdU=Ja0$Ha'Fg m߳CPMm߳C:xV!rpz.(} Zaǝ 7Nzc vX;\ԿY.*E spt ? jrc noovf ; skip if no overflow lhld unatrk inx h shld unatrk ; bump track xra a sta unasec ; reset sector count noovf: xra a sta rsflag ; don't pre-read jr rwoper ; perform write ; alloc: xra a ; requires pre-read sta unacnt inr a sta rsflag ; force pre-read ; rwoper: xra a sta erflag ; no errors yet lda psh ; get physical shift factor ora a ; set flags mov b,a lda seksec ; logical sector lxi h,hstbuf ; addr of buffer lxi d,128 jrz noblk ; no blocking xchg ; shuffle registers shift: xchg rrc jrnc sh1 dad d ; bump buffer address sh1: xchg dad  h ; double offset ani 07fh ; zero high bit djnz shift xchg ; HL=buffer addr noblk: sta sekhst shld sekbuf lxi h,hstact ; buffer active flag mov a,m mvi m,1 ; set buffer active ora a ; was it already jrz filhst ; fill buffer if not lda sekdsk lxi h,hstdsk ; same disk ? cmp m jrnz nomatch lda sektrk lxi h,hsttrk ; same track ? cmp m jrnz nomatch lda sekhst ; same buffer ? lxi h,hstsec cmp m jrz match ; nomatch:lda hstwrt ; buffer changed? ora a cnz writehst ; clear buffer ; filhst: lda sekdsk sta hstdsk lhld sektrk shld hsttrk lda sekhst sta hstsec lda rsflag ; need to read ? ora a cnz readhst ; yes xra a sta hstwrt ; no pending write ; match: lhld dmaadr xchg lhld sekbuf lda readop ; which way to move ? ora a jrnz rwmove ; skip if read mvi a,1 sta hstwrt ; mark buffer changed xchg ; HL=dma DE=buffer ; rwmove: lxi b,128 ; byte count ldir ; block move lda wrtype ; write type cpi 1 ; to directory ? jrnz exit ; done lda erflag ; check for errors ora a jrnz exit ; don't write dir if so xra a sta hstwrt ; show buffer written call writehst ; write buffer exit: lda erflag ret ; ; Disk read. Call CP/M 3.0 BIOS to fill the buffer ; with one physical sector. ; readhst: call rw$init ; init CP/M 3.0 BIOS mvi a,13 ; read function number call xbios ; read sector sta erflag ret ; ; Disk write. Call CP/M 3.0 BIOS to write one ; physical sector from buffer ; writehst: call rw$init ; init CP/M 3.0 BIOS mvi a,14 ; write function number call xbios ; write sector sta erflag ret ; ; Translate sector. Set CP/M 3.0 track, sector, ; DMA buffer and DMA bank. ; rw$init: lda hstsec ; physical sector number mov l,a mvi h,0 shld bcreg ; sector number in BC lhld xlat ; address of xlat table shld dereg ; xlat address in DE mvi a,16 ; sectrn function number call xbios ; get skewed sector number mov a,l sta actsec ; actual sector shld bcreg ; sector number in BC mvi a,11 ; setsec function number call xbios ; set CP/M 3.0 sector lhld hsttrk ; physical track shld bcreg ; track number in BC mvi a,10 ; settrk function number call xbios lxi h,hstbuf ; sector buffer shld bcreg ; buffer address in BC mvi a,12 ; setdma function number call xbios mvi a,1 ; DMA bank number sta areg ; bank number in A mvi a,28 ; setbnk function number call xbios ; set DMA bank ret ; ; Print message at HL until null. ; prmsg: mov a,m ora a rz mov c,m push h call xconout pop h inx h jmp prmsg ; ; disk i/o buffer ; hstbuf: ds max$sector$size ; ; variable storage area ; sekdsk: ds 1 ; logical disk number sektrk: ds 2 ; logical track number seksec: ds 1 ; logical sector number ; hstdsk: ds 1 ; physical disk number hsttrk: ds 2 ; physical track number hstsec: ds 1 ; physical sector number ; actsec: ds 1 ; skewed physical sector sekhst: ds 1 ; temp physical sector hstact: ds 1 ; buffer active flag hstwrt: ds 1 ; buffer changed flag ; unacnt: ds 1 ; unallocated sector count unadsk: ds 1 ; unalloc disk number unatrk: ds 2 ; unalloc track number unasec: ds 1 ; unalloc sector number sekbuf: ds 2 ; logical sector address in buffer ; spt: ds 1 ; cp/m sectors per track xlat: ds  2 ; xlat address bsm: ds 1 ; block shift mask psh: ds 1 ; physical shift factor ; erflag: ds 1 ; error reporting rsflag: ds 1 ; force sector read readop: ds 1 ; 1 if read operation rwflag: ds 1 ; physical read flag wrtype: ds 1 ; write operation type dmaadr: ds 2 ; last dma address oldaddr:ds 2 ; address of old BIOS ; end on Th variou file ar a follows: DATE.MQ (Squeeze sourc cod fo th DAT function) EXCLOCK.CO (Th compiled ready-to-ru program) EXCLOCK.DQ (Squeeze documentatio file) EXCLOCK.MQ (Squeeze assembl ϝ/Z!rʳ_?))rʥ57oRP' _0y zFvGz뢒KIa_fsReÅ̉vݵ;t>1f1Fܔ?l395:xVa[9ĘuRP9 HARBd:?)t6?vݵ_KA57oR)喖&$io2"jVvx iH*)ʥbi!26*ݯׂ7"s 6nl5R(.5MUUD&rp?)t6HAhYlHASASU#ܼO /=vSൂr-KAhɪzHܼ-]*k"O*dKdT<5i/Hgf-KQeRr)8մ̼QjTIBEHAՐSNdMpx VY\J*CV)QQ/D椏ǔѮ1oHA(UHdGU+XͼVxYi$ =vx;.Z.^ z-)7)hT~\JjoD&;vcqTIAE$TԋܔFn)rʪz'21cX!\ *K^7f-G)M9>Ja [z,{"c{t6 E;<ǑT 9RPT%YJdNqTA!TB!KIa$+ǑSwTԋf-G)쓌Vc^|%2'Vi^V>!"Oc_4t!0HAC3yxc:Q㟤0R) F8g SyVځO<+"nk[e=Ka5s𘃚7pܳc?3FiʧsPn)Q՗n[J.ͰMy ET%}{ ۃ;1搦)4S^ Z}oDZF9V`J(-OKIm62"+sa;T *$^Ldy̺chX Q OR)/y햒}9Vx&2YaW4!2tsV 4SVndU=Ja [ʪzD>eH/EQKAI9V{"sbNsV'B!'21<1Q Z =9B砬=Ya8g ^]H;k)bxUX0ox~82bX *ְj^Z?!HAKu'v8r6rTtSkmPjX;f'vRRK^W_nbDY)͔["2YUȧ I(j)rKYURb--ՅC"%_`{:xV9VR;Z}+Wַ CRR~L; VV{8[Q6UsgsʪzH[Z.%%^AiDv`J;)());\b<'dӼ d Vm[ij*SKI'"w#F| k)/yԷT:"sbbNOb^ Z ȜXx;dTZg"nw;>n{)h. "nw;CHAtC{"slwky+vQ *ʤ('2_0+vRV_:̬eǰ^[):Y Q B3e喈LVգ㟤0R) /(,xbXcݡO lE C;h͂'vjy;) zi[J.ͰMKAE]҇44㟤0R) ; ;XͼVU+DNyV1t<+i0Rd0-eU=JAMI++VA8gQE z]jjnʑ<<߁?Yc_4LY%"U(|^ CDQ{l|itg) S4MY #RvQ%+='kwGgKbofm~ҷg" ݡݑF ,y9akHaLA=0Vg e4)>A=0VؖjؠJa|xߌXC97g+|3fKaܔg+rnj@~@3C>e(~]5rn) >A=0Va)|,( !|fDE3 ՀrBVp]5rnA Cm#2L0TnQ}H򥹥SFdbxbgͽ\JoDVm;sW)h5t]5\J:Xo q-RP}])#21<1zN rʉL7)۩[Z eD&*RP9PFdzb3u:襠mr*)#2'VXk;"HaGfj$jO{"cW0RURMT s u=C\r=YkOJ *o̬Sw^QQ%,uI{"3.׭~-͸}{_LǩYRkAq,.5URMDf^Y2lw=RY #EQ%|KuUӞ)"-ՅBdbxbu2:gqͳ^ *$"WDfkBja)KLgOVH9FM怒ׂf(3Lj6owGvRZ}~Odf)(ߞ.ior;)赠fr$2mdik)Kz~^ahnQ Z xٓUŽTg"zRPe YF9ǟHaxڬnn(#2MSI #=+6ec.Jax---·_Q+Gڡ)c)ȓVE>mLGzRr)|FdNGu7Gڡ)5KAKu+tڝU줠.6ev 'X_KA;z-TN7'2kmҘ7YC;?KAE$*iKd<4^SVM 燇ǪuJ>ޯ0R)e|"OZ6MhqfRRvʪ<|F #j޳ӭ0R|R' eMR|%2ڡb'UO۟LoVmaۣ׭鸞rȬ J'bXަÎ.Zj]p/mRVE>mRR~=Yaf^ Z eRRӪȧ)"Ϸʈ: 3cfN *^Aix*FUO̬[G/NhUӖ+[FZ #Ūȧ[*$ID7Ehvψ/v qjwVwRP9ОȬ J'%.5|~H*i- eDfWP?)6ev ۔ݚRR~=㿘ަ) Q Z eRPV t&2nB:UO۟0$Hapn]Ht6#;)flEDݑF #A&0+vXkwP;{!bwc:G6xNKaЧĈ`{ cf6"bGR)&)R](?,D jØ7YRԴY1 rڣW)hhF)ÃF #E׫[*ý4RPQta*յo{)hhF)͔[)?Ia}c;K[e=Ka0^ #!|zXN Jqڣ Mu<+0R|/!S=tg)rKIURØ,rܔ?TC DzlH/ :vP2zN Z퓌fL!\ Z9%S1R)i'쓌N#9¶8c֭WRPVОt<;ޱWJ Z퓌NT{"c#F # Q)Z )%a\D(44DަbטnKAuTIBhjnD Z.%g)ȓj"iP^;삚7IA{TW5%a\DzrTN7'2ŮӆRf4Dڨ>hjnD z]jjqT5a~A<RH#G+)F UHwv+OR)ssS쓌eD Z 函T 9%RN =L OwGvut3+NC采)h5洺֫ 2]LjCg qfJF)()iX:!2GBj=FmiZ祠$)i$2IzE *wT ɖ )R\@j=3wIa [ RP' LYHAMI١q!2kg#8ƏRP' C9RP]մ'2'VPZ;a֭W8E *$)aò-fEfWqݑ]Q *$z(Q JIFyD *$)aCR)ui<|F #%{*X>#UЭzHq5RO21!2'VЮc)cW줠PsX̉R:v]8F)nh/-ՅBdN !tr'M͘ ;pLkmb'%7%Ldf)(|UTIB!2kgUR)喆)ȓu5^/b 4SVn M}] R)hoLfj/yni/՞Rr)|maHٟF *${ݔ\JDfW찝"O׍\J:u &0+vGoSVwkQ #E,|K˥& ,NHmq|TIB)G)ɒ47-yPr.jHa0Rd?)肻CoSHddu̼nBa/UCNssSDkBӞץf 4'VI!9mR)_Rr)81[r)ȓzf<|F #AJ#2Pv ;6" 9mYiw;a{xC #E5ᖖKI3IٟGoS;KIb:, 0R_bi^wtγX ʳRP' F #Հ|PZ;e md"Z?IAE$T|4yxh}EЭZ jh#;vwd'SAÃZ B3e喈Հ|PוF Z.%{" ;e[ߡ]4 Y'v VAi|^ Z 5a*Xc_PrȈ̉Ԇ wa{'-SUPN;8iY Dfצʮ;X}Ҙb퉌owGvRPg'2<=*eyF{"sS,(#2w]6T?xX 2)ȓYSHdNkgURr))?ܿ;:M# _X *${Ha0R )=c)CiV[Ϙ#c*X6uBj=Z #%$d1Rjd,c5&RPL4JAY1P.ƜF)THAT4DpZrЭZ jόy܃TW5ի/RP]tꪦ:dUNd|nպU^ ;6e)F uBj=o􀨂SA #%YNT'Rj)i$2#+5;3fzN *$bHD&I!ץdU.y')F E?1MpaV"zw'PYsIm`=R)R](?,D &0+vRjo(#2QiǰJ *}^ *ʈI^{)(+:vk)uzGKuiRRЌDd>j<|F #Q)?) vH΃FkrnjOT_W{:KA7ܔ?$a^KA˥M #E59'd eRP>w۽T,5-R􎊯F *KAtCR􎊯9HQ|M7TW5)ꪦ44㟤0R)P?r))?TIBꪦ\ #9--?KAE$4~)jʥ0$HA(T!H˪o);S1=Ydzv{ܣ𫷽f-z8 PniFy)j[T d{Ow:vw赻?Հ_ 4SVnLՈz8 PnC6HlUS?fg*C=?"9:,;p{T~LY%"S!0R-MՈz8 E]VM|pEX=U~LY%"3Uwy)y׷>9R)+Dd0R"bAHzӭ0F C4Ks yR\|lp]5 M׫&X.F Ka0(B:iP ew `}md$A=lÒ,$AS1+_)r\jb,斦&"6UUcFuPƬ;Ɔ4U5 w8t؈9 v,MUMD8ZBr1αWEo&"Xb_]ag}8ozK9IAMICYkFOFN J}u:^a['KM ῵!:\g"d9%K9T=vַTd9K9uVqV3eRji&"v UH쎡4KA #X.-%YNRND&'hRR](;Rr))?}+DoYF.gʤ䦤XʉȬ Aanc^ ʳ"s{(ƜjH1Kᖒ,՘I~APh#;DTj)'2qͳ )Rri;FO}yt39UPmѪ(%YNc5IAkIK~Q0+'(c4ՏIA|#2Q4;Fʽ,/I.mbPv׮a{^N Z.%凷"*vvJ;)h5Fd/Fd6vR)riRrS?{2kmBPqİ>S8)RP4Vb4UQRr)|,b,[*RZ['2=*f7)u*h,'"zeStڳg%{)J'2WEYJAKuKAYqC{)h<,-ՅC.[Z44LYòz,yP=( (y')Fe3!Gchx`#ްUpH{ܣ𫷽F\k}KMIaY yP=( (Ųzᖲ3!lLua#5>1X?a[q/egWsHSr(C=Wo{)c5Rv7"LY%"3KSMR)0R"j|cɅfݱF {)ʆ "-egϜ}\#=U~HA(T/+)jRv{ӎP bfo);=>/rKD~__VR)aXVϷR4ð>Rv9}wm/PnihfhaRv{|?=U~LY%"34u3 [)S]VϷP d+Pnih.eTR eY=Rvɳr:X E B3e喈\ʬ0RPv{ܣ𫷽F&-egѱYcmʿ{ܣWo{)S]-FoSm?; @CHK MACRO USED FOR CHECKING 8 BIT DISPLACMENTS ; @CHK MACRO ?DD ;; USED FOR CHECKING RANGE OF 8-BIT DISP.S IF (?DD GT 7FH) AND (?DD LT 0FF80H) 'DISPLACEMENT RANGE ERROR - Z80 LIB' ENDIF ENDM LDX MACRO ?R,?D @CHK ?D DB 0DDH,?R*8+46H,?D ENDM LDY MACRO ?R,?D @CHK ?D DB 0FDH,?R*8+46H,?D ENDM STX MACRO ?R,?D @CHK ?D DB 0DDH,70H+?R,?D ENDM STY MACRO ?R,?D @CHK ?D DB 0FDH,70H+?R,?D ENDM MVIX MACRO ?N,?D @CHK ?D DB 0DDH,36H,?D,?N ENDM MVIY MACRO ?N,?D @CHK ?D DB 0FDH,36H,?D,?N ENDM LDAI MACRO DB 0EDH,57H ENDM LDAR MACRO DB 0EDH,5FH ENDM STAI MACRO DB 0EDH,47H ENDM STAR MACRO DB 0EDH,4FH ENDM LXIX MACRO ?NNNN DB 0DDH,21H DW ?NNNN ENDM LXIY MACRO ?NNNN DB 0FDH,21H DW ?NNNN ENDM LDED MACRO ?NNNN DB 0EDH,5BH DW ?NNNN ENDM LBCD MACRO ?NNNN DB 0EDH,4BH DW ?NNNN ENDM LSPD MACRO ?NNNN DB 0EDH,07BH DW ?NNNN ENDM LIXD MACRO ?NNNN DB 0DDH,2AH DW ?NNNN ENDM LIYD MACRO ?NNNN DB 0FDH,2AH DW ?NNNN ENDM SBCD MACRO ?NNNN DB 0EDH,43H DW ?NNNN ENDM SDED MACRO ?NNNN DB 0EDH,53H DW ?NNNN ENDM SSPD MACRO ?NNNN DB 0EDH,73H DW ?NNNN ENDM SIXD MACRO ?NNNN DB 0DDH,22H DW ?NNNN ENDM SIYD MACRO ?NNNN DB 0FDH,22H DW ?NNNN ENDM SPIX MACRO DB 0DDH,0F9H ENDM SPIY MACRO DB 0FDH,0F9H ENDM PUSHIX MACRO DB 0DDH,0E5H ENDM PUSHIY MACRO DB 0FDH,0E5H ENDM POPIX MACRO DB 0DDH,0E1H ENDM POPIY MACRO DB 0FDH,0E1H ENDM EXAF MACRO DB 08H ENDM EXX MACRO DB 0D9H ENDM XTIX MACRO DB 0DDH,0E3H ENDM XTIY MACRO DB 0FDH,0E3H ENDM LDI MACRO DB 0EDH,0A0H ENDM LDIR MACRO DB 0EDH,0B0H ENDM LDD MACRO DB 0EDH,0A8H ENDM LDDR MACRO DB 0EDH,0B8H ENDM CCI MACRO DB 0EDH,0A1H ENDM CCIR MACRO DB 0EDH,0B1H ENDM CCD MACRO DB 0EDH,0A9H ENDM CCDR MACRO DB 0EDH,0B9H ENDM ADDX MACRO ?D @CHK ?D DB 0DDH,86H,?D ENDM ADDY MACRO ?D @CHK ?D DB 0FDH,86H,?D ENDM ADCX MACRO ?D @CHK ?D DB 0DDH,8EH,?D ENDM ADCY MACRO ?D @CHK ?D DB 0FDH,8EH,?D ENDM SUBX MACRO ?D @CHK ?D DB 0DDH,96H,?D ENDM SUBY MACRO ?D @CHK ?D DB 0FDH,96H,?D ENDM SBCX MACRO ?D @CHK ?D DB 0DDH,9EH,?D ENDM SBCY MACRO ?D @CHK ?D DB 0FDH,9EH,?D ENDM ANDX MACRO ?D @CHK ?D DB 0DDH,0A6H,?D ENDM ANDY MACRO ?D @CHK ?D DB 0FDH,0A6H,?D ENDM XORX MACRO ?D @CHK ?D DB 0DDH,0AEH,?D ENDM XORY MACRO ?D @CHK ?D DB 0FDH,0AEH,?D ENDM ORX MACRO ?D @CHK ?D DB 0DDH,0B6H,?D ENDM ORY MACRO ?D @CHK ?D DB 0FDH,0B6H,?D ENDM CMPX MACRO ?D @CHK ?D DB 0DDH,0BEH,?D ENDM CMPY MACRO ?D @CHK ?D DB 0FDH,0BEH,?D ENDM INRX MACRO ?D @CHK ?D DB 0DDH,34H,?D ENDM INRY MACRO ?D @CHK ?D DB 0FDH,34H,?D ENDM DCRX MACRO ?D @CHK ?D DB 0DDH,035H,?D ENDM DCRY MACRO ?D @CHK ?D DB 0FDH,35H,?D ENDM NEG MACRO DB 0EDH,44H ENDM IM0 MACRO DB 0EDH,46H ENDM IM1 MACRO DB 0EDH,56H ENDM IM2 MACRO DB 0EDH,5EH ENDM BC EQU 0 DE EQU 2 HL EQU 4 IX EQU 4 IY EQU 4 DADC MACRO ?R DB 0EDH,?R*8+4AH ENDM DSBC MACRO ?R DB 0EDH,?R*8+42H ENDM DADX MACRO ?R DB 0DDH,?R*8+09H ENDM DADY MACRO ?R DB 0FDH,?R*8+09H ENDM INXIX MACRO DB 0DDH,23H ENDM INXIY MACRO DB 0FDH,23H ENDM DCXIX MACRO DB 0DDH,2BH ENDM DCXIY MACRO DB 0FDH,2BH ENDM BIT MACRO ?N,?R DB 0CBH,?N*8+?R+40H ENDM SETB MACRO ?N,?R DB 0CBH,?N*8+?R+0C0H ENDM RES MACRO ?N,?R DB 0CBH,?N*8+?R+80H ENDM BITX MACRO ?N,?D @CHK ?D DB 0DDH,0CBH,?D,?N*8+46H ENDM BITY MACRO ?N,?D @CHK ?D DB 0FDH,0CBH,?D,?N*8+46H ENDM SETX MACRO ?N,?D @CHK ?D DB 0DDH,0CBH,?D,?N*8+0C6H ENDM SETY MACRO ?N,?D @CHK ?D DB 0FDH,0CBH,?D,?N*8+0C6H ENDM RESX MACRO ?N,?D @CHK ?D DB 0DDH,0CBH,?D,?N*8+86H ENDM RESY MACRO ?N,?D @CHK ?D DB 0FDH,0CBH,?D,?N*8+86H ENDM JR MACRO ?N DB 18H,?N-$-1 ENDM JRC MACRO ?N DB 38H,?N-$-1 ENDM JRNC MACRO ?N DB 30H,?N-$-1 ENDM JRZ MACRO ?N DB 28H,?N-$-1 ENDM JRNZ MACRO ?N DB 20H,?N-$-1 ENDM DJNZ MACRO ?N DB 10H,?N-$-1 ENDM PCIX MACRO DB 0DDH,0E9H ENDM PCIY MACRO DB 0FDH,0E9H ENDM RETI MACRO DB 0EDH,4DH ENDM RETN MACRO DB 0EDH,45H ENDM INP MACRO ?R DB 0EDH,?R*8+40H ENDM OUTP MACRO ?R DB 0EDH,?R*8+41H ENDM INI MACRO DB 0EDH,0A2H ENDM INIR MACRO DB 0EDH,0B2H ENDM IND MACRO DB 0EDH,0AAH ENDM INDR MACRO DB 0EDH,0BAH ENDM OUTI MACRO DB 0EDH,0A3H ENDM OUTIR MACRO DB 0EDH,0B3H ENDM OUTD MACRO DB 0EDH,0ABH ENDM OUTDR MACRO DB 0EDH,0BBH ENDM RLCR MACRO ?R DB 0CBH, 00H + ?R ENDM RLCX MACRO ?D @CHK ?D DB 0DDH, 0CBH, ?D, 06H ENDM RLCY MACRO ?D @CHK ?D DB 0FDH, 0CBH, ?D, 06H ENDM RALR MACRO ?R DB 0CBH, 10H+?R ENDM RALX MACRO ?D @CHK ?D DB 0DDH, 0CBH, ?D, 16H ENDM RALY MACRO ?D @CHK ?D DB 0FDH, 0CBH, ?D, 16H ENDM RRCR MACRO ?R DB 0CBH, 08H + ?R ENDM RRCX MACRO ?D @CHK ?D DB 0DDH, 0CBH, ?D, 0EH ENDM RRCY MACRO ?D @CHK ?D DB 0FDH, 0CBH, ?D, 0EH ENDM RARR MACRO ?R DB 0CBH, 18H + ?R ENDM RARX MACRO ?D @CHK ?D DB 0DDH, 0CBH, ?D, 1EH ENDM RARY MACRO ?D @CHK ?D DB 0FDH, 0CBH, ?D, 1EH ENDM SLAR MACRO ?R DB 0CBH, 20H + ?R ENDM SLAX MACRO ?D @CHK ?D DB 0DDH, 0CBH, ?D, 26H ENDM SLAY MACRO ?D @CHK ?D DB 0FDH, 0CBH, ?D, 26H ENDM SRAR MACRO ?R DB 0CBH, 28H+?R ENDM SRAX MACRO ?D @CHK ?D DB 0DDH, 0CBH, ?D, 2EH ENDM SRAY MACRO ?D @CHK ?D DB 0FDH, 0CBH, ?D, 2EH ENDM SRLR MACRO ?R DB 0CBH, 38H + ?R ENDM SRLX MACRO ?D @CHK ?D DB 0DDH, 0CBH, ?D, 3EH ENDM SRLY MACRO ?D @CHK ?D DB 0FDH, 0CBH, ?D, 3EH ENDM RLD MACRO DB 0EDH, 6FH ENDM RRD MACRO DB 0EDH, 67H ENDM   INSTRUCTIONS FOR FINDBAD PROGRAM, by Dan Drasin (415) 655-0113, January 28, 1983 DESCRIPTION The FINDBAD program "locks out" bad disk sectors by creating a fictitious filename: "[UNUSED].BAD", and assigning the bad sectors(s) to that "file". Therefore, those bad sectors can no longer be written over accidentally, because they are already part of a "file". The bad sector remains assigned to its original file as well, so that it does not "disappear" from the original file. CAUTIONS If you have used FINDBAD on a disk, don't use it as a destination disk for COPYing, because the COPY function erases all data on the destination disk, including the [UNUSED].BAD file. You may, however, PIP files to such a disk. If you must "copy" the contents of an entire disk onto another which has had its bad sectors locked out by FINDBAD, use the following PIP command: B:=A:*.* (The *.* means "all files"). This will NOT copy the operating system, so if the destination disk contains ".COM" files (programs) it must be SYSGENned. If you back up your original disks onto backup disks using COPY function, don't use FINDBAD on the backup disks. If a backup disk sector goes bad, and all attempts at re-formatting fail, retire the disk from backup service. Use FINDBAD to fix it, and thereafter use it only as an original disk. HOW TO USE FINDBAD Place the defective disk in drive B and the FINDBAD program in drive A. Reset or warm boot if necesssary. When the "A>" comes up, type FINDBAD B: (Carriage Return). That's all. The program will proceed to test the "B" disk's system tracks, then the directory area, then the data tracks. When it encounters a bad sector, it will attempt to re-read that sector many times, so be patient if it seems as if something got stuck or nothing's happening. isk contains ".COM" files (programs) it must be SYSGENned. If you back up your original disks onto backup disks using COPY function, don't use FINDBAD on the backup disks. If a backup disk sector goes bad, and all attempts at re-formatting fail, retire the disk from backup service. Use FINDBAD to fix it, and thereafter use it only as an original disk. HOW TO USE FINDBAD Place the defective disk in drive B and the FINDBAD program in drive A. Reset or warm boot if necesssary. When the "A>" comes up, type FINDBAD B: (Carriage Return). That's all. The program will proceed to test the "B" disk's system tracks, then the directory area, then the data tracks. When it encounters a bad sector, it will attempt to re-read that sector many times, so be patient ifɀCPM22RSX1dg FINDBAD - ver 5.4 Bad sector lockout program Universal version Type CTL-C to abort $ ͥ@|5ͭ> ʹ*|ʕ͋Ú  *" "w"o"z " |2*.":\O*ʹ!"**DM ;:ºg" Bad block: $ x.y.ͭ*:<_"*#"* q#:p#" i:2!d" :W!yP)=K:GcU}2*DMڐxʅ`i͐" e͐" !:<22|ʻک|».:22}2:G* !w#:w##Ý Drive specifier out of range$ +++ Warning...System tracks bad +++ $BÝ Bad directory area, try reformatting$oÝ Can't create [UNUSED].BAD$ ڔ |ċ{0ʹ> ʹ> _*.*.   Test aborted by control-C $*dDM6# x }o|g}/o|/g#~#%7Ɛ'@'ô:W:Wi&"^ Yɷ|g}o:{%*.:^#"^#"~#2~#2^#"^#"^"> _[UNUSED]BAD  TesNo$ bad blocks found $d total sectors read $yBIOS2.21çç69<?BE1>6CO]; BIOS ver 2.21 ACTIVE ! "Ͱ*"3-!"!`Ͳ *"22!"22 :e22222y22> ;|^#V"! ^#V"+~2###~2 ~2!!CCi`y2>2<2ò2y2 :<2:2:2:2:(8=2:! +:! ":! 4~!8 *#"222<22:G:!( 0)2"!~6(":! :! :!($:e:2*":2:Y2**: >2: : 2e:q> ;2q>;2:o&"*">;}2"> ;*"> ;!"> ;>2>;~N<#ò$I$I $ @I D @A"I$H$D AI$  I IBB$I$I $ @I D @A"I$H$D AI$  I IBBkNSWP is copyright (c) 1983 by Dave Rand 10232-160 Street Edmonton, Alberta (403) 484-4114!9"1=*."7.2.2. 2.2.2. 0ڱ2.-!]. `>?!" .".!^#6#6!M ͼr@Drive :.AQ:.<>*Q>? =__o&S2.@:!.]@ !" .#"+."-.w!=.͊}+h#" .!e2*.+" .#͈".!"."/."1.1=:.2:.d* .#}»@ No files.XL'SʪÀ9*.͈dG!!5~ȸ###^#V:._:.__1*-.@K in #@ files. *+.@K free. u uBXSDTUVPEkL'CM A RcFWY%?Q *.#".* .,Ҁ!".9À*.|+".€9* .".À@ Which drive? @:!AڀQҀ :.GA2.9rw9*+.@K remaining on drive AQ>:Q9x2.rÀ@ Which flags (1-4,R,S,A)? @!o. 6#L!!~ʀ#">.*>.#">.ʊ!o. ʄ#w_>_> 1234zzzzRSA@ Delete file? Y€*.;À͈]2\ `6`__^_:e!@ R/O. Delete? Y:e2e\\_* .*.{ozg))))xV~# xL* .+" .*.,+".@ Erase Tagged or Untagged files (T/U)? TʤU€T>ʬ2 .@ Do you wish to be prompted (Y/N/A)? ʀAʀNY>¯24.!".͈4~G: .f@ Deleting ---> :4.W@ Delete (Y/N/A)? AzYfʃ;h#* .#}z+,!".À!".Ü ~6ʩ#*1."1.*/."/.*/.@K (*1.@K).*.͈4͌u@ Tagged files = *.͈ͩu4~6#*1.~"1.*/.~"/.@ New drive/user/mask? @!!~ʀ#">.:\`:.<=2.:;.y#~*>y:.2.:] ‘!]^ 6?`!\. `992.~ʸV#ª2.@ Illegal drive code.Àͥ:.2;.:.29.~0ں:AںQҺA29.#~:ȷ*:0:'G#~:33036302;.x 2;.>2;.! !!^#6#p#~iwV@ Copy to drive/user? @!!~ʀ r#:D.::.G:;.ʧ:9.G:.@ Can't copy to same drive and user.À*.͈2H.I. `~2:.@ Copy to (filespec)? @!!~ʀ#">.*>.ͥ:] > !I.] ~#4 :\=29.!I.]NT ͙!]I. 怶w#\ !\n. `:.G:9.ʅ  r À@ Squeeze, Unsqueeze or Reverse (S,U,R)? 2.S U R€> 2D.9:.2:. a!͈4~+Fƒ x2:.:D.O :.G:9.O ::.G:;.O @ Skipping, same drive & user --> à :D.s ʊ @ Copying --> Þ @ SQ/USQ --> Þ @ Setting --> @ to :D.) !o. ~ #» !w. ~  ~ # e ~Q#  1 2 3 4 R/W R/O SYS ARC :9.AQ:;.< ::.o& G >:Q:.e @ with CRC.:D.z ʴ } z 6ʜ #* ., 9ñ @ --- Aborted ---ÀH. `~6`2:.d!I.o. ~ww# H.!I. `} !͈4~3 @ Retagging --> > Q4͌#* ., À"@(~#a QS @)~ Q#j ".͵ *."".*. v,­ *.:.U$ R$ *.:.Rʽ U !0͂#*. 0!H.n. 6`!w.~ 6Q#6Q#6Q@(!o.j >.Qj @)s*.!H.͘'}0!0D C @ Not a SQ file.">."B.:;.2;.!\n.6 `s!"| _h *B.,}0@ ERROR - Checksum error in file nngo͵ @ Premature EOF on file... aborted.À0*:9.G:.::.G:;.ȸ!H.n. `2n.!"@.sd*."5.:.–H.l"5.*7.,ܺCͺ}0 |g}o{))))))),*.*7.~y|±}ڳ.&],H.͇"5. ||¥ͺÖ͏ʀl&͇"5.l:.@ Verifying --> R!z.{.6`n..!]~ ʀ ~ µ6?#­@ !/€".À@ Tag what? @!!">.!]~ ʀ@ !/€@ Tagging --> ͈> Q4͌#* .,J͈]N/> ~?\#Q*.͈ ~2:.@ New name, or *? @!!">.!l#~ ʀ ?#¡:;.¶::.w*.͈. r*.* .#" .e2*.+" .".,ڀ!".À:.29.\2\ `d:e9:e2e:u2u\:;._::.F__!mI. `2H.H.*.͊}ʒ@ Destination file exists! rÀ:;.ʢG::.::.___\__!m `::.__!\H. `2H.>?2T.*.H.͊}ʽ" .H.R!mI. `H.!)))))*. T.`H..ý@ Directory full.À<¨!=!o `*7.,@ OUT OF MEMORY?<¨i`@ Old name? @!!">.!.:. ʀ:;.2 .@ New name? @!!">.!n.:o. ʀ9!͈.¢@ Renaming -->  ~2:.@ to !mG:2#* .,R9>. r~ F: .?G># ɯ/o.m> ?~#=:;.::.:.AQ n&} 5 >:QyJ> Qͧ>.QͧJ*.#@. #~#> Q@K : ʢ*ʢ#yQ~Q#§9>2=.92=.<23.@Press ^X to abort, L to advance a line, cr to advance a page. >2<.*.͈ v,!nD*."".!0D D9!"L*.""."bnu>-_ ‚:3.<23.:<.O:=.O:3.G:OLʹlʹ23.O:3.=23.O0ÀO iiX!T.U.6`H.2H. `~2:.d*.""." .H.<@ Can't open file!À__:9._:;._ :._::.^*."&."$."(.R"n.<:w.ʻ:w.2w."!w.E.`6$#6$#6$ ""<@ Destination disk directory full.À!z.{.6`dH.<@ Can't close file!ÀRn."Rn.<=m"!n.~.`!E..`n.<=!E.w.`:Q.G:w.2w.:y.2y.n.*(.*$.G,xw#"$.*$.*&.,R:.,n.Y*$.,*&."$.*&.*$.~}yC#|N}P.],n.V͏%* .*".,ʂ~#"".d*.""." . :.H.¼* ." .—n*".* .,n= ,*".H.͏*"." .n͏ʀl&͇*"." .ü* .!==~V# `~##~#~  x$>[I* .".+|*.|ȯ|g}o".„#".* .+}o|g".!".*.".*.*.".*.*.}o|g".á*.#".*.,oÛ*.͈".*.͈". ~O## *.*.Fwx# |}!".".#".* ." .Q͟h*.".#".* .+" .|E*.͈*.`*.#".*.͈".*.͈". #•*.~ F. x:.?G># ɷ!"-.* .#}!=*-."-. x',?,$?d,2?} =?yRR> Q=G ] |S{0Q }0*0#*0~.Ҙg xʩ|-“#Ï}o|g:*.ʽ)=õ"+.:._.*:GxG|g}o ý^)))))#~&o))))o$#:*.ZK<}>o}}o}}o}#~#`a{_:._<ʀ0`:02*."0L L* .9ͩ9L*>.!\w=L!\*>.:. O0O:77:.Lx,yH,py2;.ͷr#*b6?dwQͷyh#6 r.¢ͷʢ#*’6?ÔwͷʩØ#6 ¢#6«">. =_.:;<> !.!yg)>g>!or$s%# :.~#, *@.O!. ~W$^"@. @ ~#Q@ _{dldr_!u! ~#G~d#z))))= NSWEEP - Version 2.07 07/17/1984 (c) Dave Rand, 1983, 1984 Edmonton, Alberta $ A - Retag files : Q - Squeeze/Unsqueeze tagged files B - Back one file : R - Rename file(s) C - Copy file : S - Check remaining space D - Delete file : T - Tag file for mass E - Erase T/U files : U - Untag file F - Find file : V - View file L - Log new disk/user : W - Wildcard tag of files M - Mass file copy : Y - Set file status P - Print file : ? - Display this help X - Exit to CP/M : cr, sp - Forward one file $"x#"z#!9""c#v]#>2t#2w#c#"~#*x#n͝"Gp#Œ"<"c#"#]#c">*z#"|#|ʓ"c#s#r#c#s#r#*|#+h"1>*x#*~#a{_USQ section (C) 1983, 1984 by Dave Rand (403) 484-4114!9"":w#"=2w#:v#####>==2w#:v#2v#:u#O:t#.#nŒ"O>=2t#yO*z#=###^#Vz#y2u#z>Z#{/|}nŒ"nŒ"go>2+"B,!9",1,*B,}o>͍+"+">,"@,&+2+W+#>Ð'vͨ+#>Ð'}2++|#c+?$!+$#456$~6 $G+~+#6$>+<+6$6$#4~#>+~6+:+2++#:+Q$>+<+*>,^#V#N#zl$#V$>Ð'~*@,w#s#r#q#"+>2+#^#V#N#~#2<,{$:+G*@,#ͮ+ڶ$####Ÿ$y2=,$*+y2=, }O|GT]+++:<,w#s#r#:=,w*+####"+:+<2+„$:+!*%45 %%%#%!*p27,28,l*g2+2+<27,29, '>29,! ,,ͻ+&29,!,:5,͍+::,Nw:6,/< 'G:;, '4x26,&!$,,+!,:5,͍+~2:,:6,&w:9,#%! ,,+#%>26,:*!5,4!'>28,#%~!,͍+~2;,&! ,̈́,2+*+))>͍+ ,",!",!,͒+~w6#w#w#w͒+̈́,!+̈́,*+* ,ͨ+>Ґ'*,* ,:+ʡ'"D,!9",1,!v(*+(!͡+"+*D,#~ ')#'>.)x͍+~ ')#')*+())*+~)#z(2+2+>2+c+v(c+(!+Y(#45v(~6J(G+~(=(v(>(<(v(v(#4~(>(~6(:+2+((:+ʑ(>(<(>́+###(:+ʰ(G:+¨()>2+*+|>(*,((́+F#^#V:+O{_zW:+ ()2+(y2+})|:8,I):+*+*+G:+Os#r#}0) z:)`)%)"+"+y2+!+4~`)2+!+~w:*=Gp)>':8,~):7,¤&!*p:8,#%28,27,#%́+:+w#*++2,,+!"," ,,!,e- ,!,͒+:+!$,͍+4!+5:8,)*+6:+O})7zW{_~*A+~+}* *~)*s#r*+/w#6#"+}!+4>́+###!I*͗)*+>+w+,կ++ä,**x!+4#4#4#4++*o&))*>,4#4#4ɯGO*>,w#w#w#q# ,+!+w#w#w#w#!+++!"+c+oc+gnk+*+͍+"+!+4#4#4*>,G͍+x͍+xo$շ#•+}o|g|}##~+~+~H + +x ~#+x ~++yxX+G]T~w+”,kb ,xG-"L-"N-Hi&)))#"T-!W-^-Aw#,!W-"P-!^-"R-*N-A#,C-A*L-~w#,!T-5,#5G-*P-A~w#-y2V-*R-DM*P-*N-#:V-=2V--?,*P-*R-"P-"R-,7H-*P-xH "-!- "-i`)))#"-A!-6#„-A*-+~w-kbA+~w›-Һ-*-!-Aw#°-!-5Œ-#455Ì-4#4#4++*o&))*>,4#4#4ɯGO*>,w#w#w#q# ,+!+w#w#w#w#!+++!"+c+oc+gnk+*+͍+"+!+4#4#4*>,G͍+x͍+xo$շ#•+}o|g|}##~+~+~H + +x ~#+x ~++yxX+G]T~w+”,kb ,xG-"L-"N-Hi&)))#"T-!W-^-Aw#,!W-"P-!^-"R-*N-A#,C-A*L-~w#,!T-5,#5G-*Հ_0RLvY}L?Հ_0Rոo);S1F BYSI14eᖲ3%Mӡjh.R)+DdRfM%3d>m/beV t?!٢𫷽Fշ?fg:̌6rw{=U~be-egm/Xꏷmp{Tm/XϷm/Xn); z{)rKCs)bh.-egJ<+CuHAhK5F t{T~1ڝA1:SFHA(T(R=lqLpHĸaïR)+Dd0R-MՈz8 EQMrKٙl#8?zKAhpA #Ų-fuKٙݑzr{Wo{)ɥL= R]^+=4 4SVnLՈ/$HA(eRPvp/rKD>ɥ 4SVnU=Ja [*zmvK(4U#B t_9gj> ')͔["2S5>)0R-}'~LY%"eR)+Dd0R-IUROPniF|'E"eg^ B3e喈TOD #җ}R$RPv^ B3e喈̗}R$R)PniF|'E"egf-eF B/HLOo{)͔["2_IHa(_m[BeWR)+Ddjė}R$R)喾"3? 4SVn|'E"rKDHzB #RVգYUo[BedRPvTϝ/keGf-edR)喾L tKAhO2)͔["2YUR)営U=JmvK(4U#쓭~{OdVCVmЭZ zR)+Ddjė}HA(elLf-/d+rKDf[գF BG)&orKS5>IL=l\=ݑ]Df-e$R)喾D tKAhO)͔["2IUR)喦OueEkÉ?CzpbmvKٙ{)͔["2SUȧ :HA(TW(E]PniF|'龾'2kgbݪuj/rKDfF|'F B/3ݯ 4SVn|'f-G)rKuTz-ױLoDҟGVxkeGf-:VF B_jPniF|'~'2 U#+k s Q)͔["2S5>Ja [O)(;ӽ'2 U#+FKVR)+DdU=J!Ÿ|KW{" ;[eCj j.ŻuK!/W(W )CŸoPTYqX Մ\}E9a7(2i0R|/PT@pzlH/xYw {2zhǮR)?B,[j~]p/8zo Gp4ʆRH!E5[j~]p/*8C*SHA(W(E^-e+zLY%"W(PnQ[V,rKDQ #RT(EMRg)-e+zH~MRg)͔["2ERգrKYURdUMRg)͔["2YUR)営U=Jm=KAhV(Pn)Q[V,rKD&Q #T#)Cοxu8uh#C}NRLUMRg)͔["2SUȧ :HA(TW(E]-e+zLY%"SW(Pn)ՀjPգCUoY jɯc50T(PniUգ&o)[ѳf-UUR).U=u.Zݑ4T6yKي 4SVn\zHQ5SvKW{" ;zPᘲF #A;zH~iPᘲR-mz|xKي>rP?)zj[nm߳|xKيowGv=w#RnպU8}N:n-e+z+03zFvMه|ަ,rKDf[գR) r=-14Te cwPɋ=riP0\')rK۪lE㨠{-RTMRg"۔ѧ^;4E١)Cj*)͔["2۪0R$KيCavB^lo)[3=2赲c^;OAmi8qjߡ)G삚7Ia [I9xKي̬[{sYcR)+Ddue%HA(T(E4SRي>zo JBxHR'"YjLn)[)X-e+ E2xKيH:Ss3&d[&-e+ rKD&Q #ҥF-e+z&2AHqd;V=HAhUHa [T(ŶVxKيLo]TPvpB.Ag: wR)+Dd.U=J!Y>Ϸ|'2^( 뭲!R)?HazlH/ܡ * 8R)?B BmURT|R"2UV)=;)͔["20Ru5Rg"ӵk=YRt=()%lEƞ6_h'|]V_o)[3Y5oW|ƳjlED/۫kSVMsUN-e+@d+wY^IÒRDfcO MYiw'vh[Vګ`}owGv="^A{t=sx׷)8*QiN,žlEDfcO*(mLa;)[VDn '} 2Q;[e=#*‰x}Kي>ӭvR$[VLda^YBʡ_(Œ\W-e+z&2 mdOR_5T8,|[VLdfU>DNyVx#ZYqlEO *S{,[}lEDfӎz0αWR}:qzt>U]W-e+z&2*XFvZ{X砬R: FNI֫lED&YB\ѧ^;t<]Htg)sRYk;(S=|1T8,,-e+@dbxbtցrwRո-[V(B {6(X-e+@dV!E0tmQK3l~]÷#;kǟ7 >N #RRգy[VR$u{Kي~LY%"T(PnRTY#|ᖲ} 2kmbUp GY*S⦮ilELgR^n)["v J#})KA0Jy'v!EoSFH+)͔["2)oD&0 8RƼzKي>:U_+vذc)Ր5-5?_v;pLQ"6X #)>u81֡ QZ!>F BmURR]|ȉL O]ü .̊Y JUM۔[le you are "on". - 4 - NSWP 2 - A disk maintenance utility Invoking NSWP To make effective use of NSWP, you must know the various options available to you when you invoke NSWP. Here are some of the options: A>NSWP This format simply loads NSWP, and scans the default drive and user for filenames. Once inside NSWP, you may change to a different drive and/or user, but when you exit you will be returned to the drive/user that you called NSWP from. A>NSWP *.COM This format loads NSWP and scans the current drive and user for all filenames with the extension '.COM'. Note that NSWP can find system files as well, so no additional information need be given. A>NSWP B:*.COM * The presence of the second asterisk indicates to NSWP that you wish to scan all user areas of the indicated disk drive. In this case, all '.COM files on all user areas on d543: SD-92 07/27/8MAXUSR TBL>!9"O1O!~Dw# Fcw# R }2h  Ԗ 2\2X2B!~#w\ xʌyʘ2X2B͖ 2[<2!\~³:[<ú>2w!F#~$¿+~# ¿ !} # 6DA: !\>w:>2X2BUff #0f f2X2B>20 o:Xg2X2B͵ X X !~ʇ #{>? ͵ K :¥>2>2:¸>2>2:>2>2: ̖ :̛ :̏ :\=6 _!%~G2W!X6 xi !]~$ ! 6?#>?2h !\^͖ [##~2F#~2E##^#V"C#^#Vz*.;^#~2F#~2E#^"Cé"I:h0ک:\=_.͖ !~w+— ‘**C#ڿW+}zºöi`:F)="K*I#)Q"`"Y*{zұ :X_ Ԗ >?!hw#w#w!"G"d"f )\͖ <=! o:N~'} o:X'#*Y w#`o&ͺo|gͺo|gr#s#"Y*G#"G! *{z'6 Memor)ú͵ *G}{2_*`!Q s#r# +}*G"]+}a*]|g}oa}o"M#"P*M{ozg"R*M"T>  L*R*T *R*M{ozgLL*]*P#{z *M: ! 5͖ <”͖ < 6 Ope6 Writ͖ <ʅ:ڻ!4͖ <5͖ : =2͖ 6 Appen!~#!5!5͖ <:=22":&>2:& X ͵ *G"!""!Q""Y*G1*`" "*G+"G|p*Y> p##"YO*Y^#V#"Y*  "  :ͳ*f"f*d#"d|}*G|{OV#^:E_zW/_zW{_ɯ2V2V:_2_2_>0 0 x0+:V>0 :_ 2V T])))GĿ *~N >. N q V#^>k *d+"d| ɯ2_*d|2:ĵ X :\@ ک͖  X :X X *fX : *d  y22_o&1"* >w#0!d4͵ :O:\@ Ԗ >: *9ʠ*9ʠ:ʈʈ*9ʠÉ:Ÿ*9à* "*d|ʹ!5::*d| :~ q :W!X4:Bw!~6 !~6 *6#= ͖ Œ͖ !~6i !5X :G G X M X :\@ ^ ͖ X 4:€ q >!\4ڀ :K  ͖  ͖ K :X ڰ / ҡ Gy x0 > > : > H G: *: ͵ ͖ Œ!>p#"=2x_:̖ { D :D :2͵ X X ͵ :b q >!\4b ͵  ͖ Ė :h0ڂ -͖ É :̛ ::[_̖ *O:h0ګ -͖ *}ʹ >D2. _>FNpq#= :h 1OK >2 2 $կ ~#: ,] !] ~ A A <2 #~:^ ?3 2 #~:^  G~#:Q 0  OxG5 x  2 ^ ~:e #~,p !҈  >?u : G: O>͢ ~.œ #͢ { { *´ >?ö #¢ #ú >  ~ ! =_.:;,<>ɾa{ !Q"2*+"|] q *> ] ##" *|2_!:ĵ ]3X CX *TX *^#V#"!C !:ĵ :ʓ ʓ X Ù jX :\@ ͖ >: N >. N ͳ>k ͵ :\i :6# 9i͖ i͖ ͵ !~N!N 0*|)  ++ Not a LIBRARY file ++ i͖ :X_ Ԗ ͖  > ##S^#~#^#Vz"*#":2!æ*}+"9i͖ ͵ !~ʶ ¦Çq !:>* > #N >. N ##^#V*"!{_j)))))>k *#":=2Ŀ «:2͵ ë~#:!Y# L>* >* ** Library Directory for ** Lbr Members inLBRDrive/Use [more] $ $ Erro - >> No detectable file(s) on>> No file(s) on: Drive space used:k : files:k free) *** There are member files in library(s A468DFLNPRSVSD DIR O>͢ ~.œ #͢ { { *´ >?ö #¢ #ú >  ~ ! =_.:;,<>ɾa{ !Q"v(SD-92.DOCZ  !"#$%&'()*+,-./01234567o89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY~oVq?gcOHhu}hV:|O< AC0hGQxJdaF{vFxD#b$0QGV7YpZyr fMQdF «^{Ca{yGp3^XQV7F28CO^4P;%E#S"x-l6 ]iQ"pij瀇챠Dޑy_,>^^_AXP^fこZ f$?(d:LPCoV;ٲyJPQt ip>Ê A𒼴j~{ d\HBfq!Ea4.K`K;h*]Ȑ}GXx)T OI.^pb! Ʉ(BcW9 y @?{2ty9ёK / $(|3, EO(k0hÇ%ݟ kvp|:hį q 3 D75C@aKݷ~Z8Q E$| eB$y lTOa Z9x6˄NS5gBɄ FH&~XPvH0QlHaXaEnD ֙n?ox]*p9l`dBEhā EÓ; ??|¨B5n{~ۜe6A2!Â"C@"lDO}zQS?V7: kxj~{^ kٻS54Da͐L8*kN BaTi$t ?^gյS54Da$iNSBlj  01R;BoVLy :TZ Ʉ'w -[m=¿ﭶ뷿qJ(lS:NdɄD<)8뷒 `»o80QD@`)!Ҏ@U\ u`14Ϟ72h~j~/g//./ٻ<%]F 5Aw!aAaV9@2Mghw%p_^^\^/xd АfHD(bVלިx`u6%:N ?/̖U꿜_n$Sv5W,7 a?<%]ZBlj nHW7?/łPئ3,<ڡ7V%nr[A f1kFptF˜=BL贏vmJ>cBK,adL(lSFB$/H:|ku?rҌ1{XA2Mghw\zO8'Ԫx2x$x(T+[LF <%]wx} (l;n/p[ܾFE[g N&]$ ۔|vL"B?,(b͒H&;M4;HfCqpi PYXDXk ǧ75C@qpAoTg϶3 CoHW QGr[*>\]=W$~.6 z?p-<_n[]sJ~"A2MghyGF p'Baϭ&dͫ@|ƚ-C$8;<\<_/x]*>\<_ S V Ex>H&$ƅZ㌎aaAq e6 F8~4R": ֙ ۔|氂#y\B?,(B;=@ljlj~{ xу) 6H&X?MA2aVKlこGB zŌ?\|#ko -[=l`èac XdH&|NL8Q$:NN#$S߿@'a nXxT ~8 ,XA#8xJx%"t:*`ᆡO§yG08fDܰN#-'>#A;HVB'a c6 Ʉ}rkfɐL8Q~p{v=>lx˓嗳{<˓3|?@2.73L8V{#H&|N G*x*F4$iЏUrcP0h$$] Iֲp"$ +QD}@+_Bj$/5F%V[/Ȁg,Q=A#F]xBb+;dWUlz,FuɄ)*6 DF8&cPxI=u?>`)aA HBn8n%偓4pqZTÔf{?Gx(8nxx2łk kE$ȣH&:  j8,6z0H&PQCA@4Q4%0^LF*T[uA"7W,E $8$tր)FlFrpv5KcaP83ܞ6pJth8kN B GM#WX$tր):x`:#&8Qj 0f> E[-GH# ,yGϿq \Hfk0j0.!q4Aєk)*ܠtW:z*Xl;5K^@х5(FW2( ҩQW5V[#Nل$f;Ѐ֜c pdjuLlK +X?M̨,[m8~9ℎ: kxeBHhLkN Y@Ս@lj|v_] /wg(wlusA2O̠lbL #q2f)aA8x|C  dBljq_.n֜T25ģ @kth eOFHtm(=~f#t P> Ja ΁ #ɠ<%hYꦰ,Y{AD1j=hOnv\zO(i3q"[Wf1%EolOnkN 0%4bȾ#8 >]`GXly~k ߞy|}\n2΃$ ]0k_@r[8&NP^,Y{ADqvwFD#w3$SNjG$8Cx c#8 n$a)!I .( +py:r/0攰 ղV'F: kxkdM4rǣ kvL"B?Z,(Ʉ‘F8C;H&to?|8b)$zU$oX􂠂U$h䎩y A#Q?/L"thGf)aAh A27wA{vVt,BF##`1hct` ͖Hn$z5 Ϟ#GH(/iydBo[݄~XP|}dBoaACo*BiF) nt Lu<tL,_`CCE/8n$!M4 IXC]GE )B'a T #YKwq9E$9EHO D^^ ƬTZ݈B2$6At%C2aPw 8`1sXP"£4cA+ k Ʉs;:Xa]P"0(Taj.HP^f(l/` d$`C@XPZ4: k|O.T ?4#N‰d("q $92a)SuɄ(B6 Ʉ '&HՍ(ި$ ۔|^gi\DJ.dmut?!Mg3lvOHZL8"D.K; /H&D#wLSO`F*Ʉ3.:Tqs~; O^A2l(/ ɄP@bƓ;x'Qئ3$t e \u9xox^oxd T) ku#u<$5<9%FLy &q{tQئVq!ҨSNN#8%ZyBoD#w<`k(TL ā攰 Lg*XL5&B?AUɄI9֙"A2bԈ Be 5($.../.VP| {9% b ˽CF(Β9UɄQCA@ O/ Ʉ7l,tڞ?z5"ҤQ8v1 ȃGN3:N 5KFR(F1`r3_g[nYU8] <8 8 Y`Q G0Q䁂pX_ FO"N k($:] "!4j Ӂ$sXaACddMIקVMP8";H&xJ/)z5<("Q9g,/AL"#c&[nX\p/Uc pvw ZqVpA%^/tQp9 9jʐL_^/tDK,0j061hqX%bBcF# y3,h!pXa͒x.}XB|Ƃ ÊޜA  u yQDEHvv5#cF]Z< }yGK,22DB?,(BF 68Pbdj5QXIvL_$ZW:#  S$ X^//:*JO{ y3%p } '1 w:j'/X 0jxGրN#%l 5(P(PgHE #J$#G/Af#l6a 'گr=֜8ő&0AFnjDăDޑ "!4fLA9C><%puY{hHswoHJSx((4Q(VЀkGAxe{Q4< "yJ3XboEoo///9x8Oh;,f!tG2_ ƫUxl)*7UɄQcQԓ$E$Ԫ(("$:r#`Bų ) A2:j4 vz238" *("ʠaw 4(E+?rzjO/__?P' C% 'd@VϽQDvÂ(@<plNSTHvA$Z}g6:L@7o@FE9%Ї AT ;n?\=dBoTT ?>@>!k  \xf$]@n \u>v 6 ) 3` G d+ ۔|>tTA10ydQܜz6 ^hVnp,﷯0&R0j!B2aA+ cƚSjן#yAfC$OaL:gWO/c'vLxjן#A>ݛӷ@2ac 8Bx?$]Xtϓr*pbWPpsd eL1j!dVnpٳ-(H1E]EN#| Qh$H&M4'Lwʊ 3ܰ}}`t~ Eɸ| ?{(0H4"h8NQ_$& TŌv ?oE#=;?ݢӈq(ڲէ>:]\z6ps ,k #hO77KF?c1 8`AaA㌠ި`1ᗛVnp=B?^gfx>mfs/7~<4bcO7'˿n|rt>  F3 3oﯮ^$.>\=7M(ZlN-,f lN ,f\^j׵lN ,f)6Sbjn6nB9V$d1Rjd,c5&RPL4JAY1P.ƜF)THA> ;n?\=dBoTT ?>@>!k  \xf$]@n \u>v 6 ) 3` G d+ ۔|>tTA10ydQܜz6 ^hVnp,﷯0&R0j!B2aA+ cƚSjן#yAfC$OaL:gWO/c'vLxjן#A>ݛӷ@2ac 8Bx?$]Xtϓr*pbWPpsd eL1j!dVnpٳ-(H1E]EN#| Qh$H&M4'Lwʊ 3ܰ}}`t~ Eɸ| ?{(0H4"h8NQ_$& TŌv ?oE#=;?ݢӈq(ڲէ>:]\z6ps ,k #hO77KF?c1 8`AaA㌠that we have a number of files "tagged", what do we do with them? Well the Mass copy function is one of those that acts on many files. Its purpose is to copy the tagged file(s) from one drive/user area to another drive/user area. 12. B0: CDP1 . 40K : M Copy to drive/user? A14: V Copying --> B0: BRUN .COM to A14: with verify Verifying --> file ok. The 'V' is optional, and it indicates that you wish to have the file verified after it is written. As you can see, the files have been sent to drive A, user 14. If you wish the tagged files to reside in the same user area as the source files after the copy, do not specify a user area in the Mass command. This will cause NSWP to put the file in the same user area as the source file. NSWP will not allow you to copy a file to the same drive and user area as the source. The copy is simply not made. - 13 - NSWP 2 - A disk maintenance utility After the mass v/SD-92.INFP  !"#$%&'()*+,-./o0123456789:;<=>?@ABCDEFGHIJKLMNO9ͮxfoғG|޻6 ?ݽtpSN/̶0jpy^;byUVi[Z&$i`2hUkGw#:w@aeڋiG R24pF-*1*KLF|@#D="4|z oרP*8C%F|7l1j9 ١'ߪ UwQPP< f[j~ nZP{|3?(9!Ϳӿbv}s|_ӇEN9}zuNd95010y'aHnzEblp;}HpǏ7Zi8Id8+@#\ h`>4̀ 0ZL5"?*jGsNÿ 0Ȩh< ݑi~xèV0y<4ܯc }1H zS$vpXXڐӀS[r|sM]@p#kt)16`o `3kG8.c׎i/ČC#4`$OpcE+9aaoT/'Uhy`HN4.jiQf9aM]1"Gil Zk&J Fj:1X'(CI#vGsxq4nDa oǏovtW&|[AXa}{hi @B Qs:m vi tm+F@++̶X_u]/ VBiwᦘj$iѓG@pVY/١0$tUNb!-ΣV4U&9aY ijܬ?k@AvQVn֟_A-b* 9aOaC%qŃu\|n聾0>*B]OB:Py)N'gHd8+@#\ h`>4̀ 0ZL5"?*jGsNÿ 0Ȩh< ݑi~xèV0y<4ܯc }1H zS$vpXXڐӀS[r|sv3SD9192.DIFN  !"#$%&'()*+,-./0123456o789:;<=>?@ABCDEFGHIJKLM]V9*k1\_T~UUU5)P֪HEG< |bKcFD 543 q lsUwIm_ ( '4":w/30c°E˓V9?<3 A{HRBW00 gbx*8^ł"J EAlP8CdXq:F=H`@vLChcA)8d1%20VF:5 ,x !Y8bE - ؠUqM9Di+i"`#R&w,5&Jrq#%'B\REUVzvl^zC*F`TOFVãVVǜ,LUFx66Q[&9Bii{|8;5Ix66q!T,1L8SUU7 @ݝVu5iQZ+?{{ݼ|6x\nZZգEW#r/g_^0{]y^~q3nUU;6/=Wv;O*`vmqA?|ҪԪ׃&N$%fqa>$G\w8TPB*#(0U&Etr*;LHNl $ Ee+H#&UF%eUSL8^xop! e,8mLd6c"', cl# gRR~rעZo~U/Sx4c29,C&,5Q+?}' : Ir$ qFiUj5V7tp}jL Q8ӐVf3zae1Ze7}n(6FLCZZ+xxVV HCX%HYe2a`1bKcFD 543 q lsUwIm_ ( '4":w/30c°E˓V9?<3 A{HRBW00 gbx*8^ł"J EAlP8CdXq:F=H`@vLChcA)8d1%20VF:5 ,x !Y8bE - ؠUqM9Di+i"`#R&w,5&Jrq#%'B\REUVzvl^zC*F`TOFVãVVǜ,LUFx66Q[&9Bii{|8;5Ix66q!T,1L8SUU7 @ݝVu5iQZ+?{{ݼ|6x\nZZգEW#r/g_^0{]y^~q3nUU;6/=Wv;O*`vmqA?|ҪԪ׃&N$%fqa>$G\w8TPB*#(0U&Etr*;LHNl $VOLUME 009 DESCRIPTION: CP/M UTILITIES NUMBER SIZE NAME COMMENTS 009.1 4K -EBMMUG .009 THIS DISK TITLE & CONTENTS OF EBMMUG VOL. 009 009.2 2K COMPARE .COM COMPARES 2 DISK FILES, LISTS DIFFERENCES 009.3 2K COMPARE .TXT DOCUMENTATION FOR COMPARE 009.4 16K CPM22RSX.ASM SOURCE OF A CPM3 RSX FOR CPM2.2 PROGRAMS 009.5 4K CPM22RSX.DOC DOC FOR RSX (SEE DDJ JUL 84 P.36) 009.6 8K DIAL .COM PROG TO DIAL NUMBERS THROUGH A MODEM 009.7 6K DIAL .DOC DOCUMENTATION FOR DIAL 009.8 2K DIRCHK .COM VERIFIES DIRECTORY, DISPLAYS GROUPS USED 009.9 2K DIRCHK .DOC DOCUMENTATION FOR DIRCHK 009.10 2K EBMDIR09.TXT DIRECTORY OF THIS DISK 009.11 6K FINDBAD .COM FINDS BAD SECTORS, ASSIGNS TO FAKE FILE 009.12 4K FINDBAD .DOC DOCUMENTATION FOR FINDBAD 009.13 20K GENCPM .CQM CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER 009.14 20K GREP .COM SEARCHES FILE FOR STRING MATCH 009.15 10K GREP .DOC TMAKER DOC FILE ON GREP 009.16 4K GREP .HLP HELP FILE FOR GREP 009.17 10K LABEL .COM PRINTS 1" LABELS, MENU DRIVEN 009.18 2K LABEL .DOC DOCUMENTATION FOR LABEL 009.19 2K LINES .COM GIVES LINE- & BYTE-COUNT OF NAMED FILE 009.20 14K LINK .CQM CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER 009.21 2K LIST .COM LISTS A RBBS ETC. FILE FROM LINE N 009.22 2K LIST .DOC DOCUMENTATION FOR LIST 009.23 2K LISTT .COM A PRINTING LISTER WITH OPTIONS 009.24 6K LISTT .DOC DOCUMENTATION FOR LISTT 009.25 2K LRUN .COM RUNS A .COM FILE WITHIN A LIBRARY 009.26 16K LSWEEP .COM LIKE NSWP, BUT VIEWS ETC. .LBR FILES 009.27 32K NCAT32 .AQM NEW CATALOG SOURCE CODE, SQUEEZED 009.28 8K NCAT32 .COM CATALOGING PROG FOR DISK FILES 009.29 4K NCAT32 .DQC SQUEEZED DOCUMENTATION FOR NCAT32 009.30 4K NCAT32 .SQT MORE DOCUMENTATION FOR NCAT V3.2 009.31 4K NEWCAT .COM UTILITY USED TO CATALOG DISK CONTENTS 009.32 12K NSWP .COM NEWSWEEP: FILE MAINTENANCE PROG. 009.33 20K NSWP .DQC NEWSWEEP: DOCUMENTATION, SQUEEZED 009.34 14K RMAC .COM D.R.' VOLUME 009 DESCRIPTION: CP/M UTILITIES NUMBER SIZE NAME COMMENTS 009.1 4K -EBMMUG .009 THIS DISK TITLE & CONTENTS OF EBMMUG VOL. 009 009.2 2K COMPARE .COM COMPARES 2 DISK FILES, LISTS DIFFERENCES 009.3 2K COMPARE .TXT DOCUMENTATION FOR COMPARE 009.4 16K CPM22RSX.ASM SOURCE OF A CPM3 RSX FOR CPM2.2 PROGRAMS 009.5 4K CPM22RSX.DOC DOC FOR RSX (SEE DDJ JUL 84 P.36) 009.6 8K DIAL .COM PROG TO DIAL NUMBERS THROUGH A MODEM 009.7 6K DIAL .DOC DOCUMENTATION FOR DIAL 009.8 2K DIRCHK .COM VERIFIES DIRECTORY, DISPLAYS GROUPS USED 009.9 2K DIRCHK .DOC DOCUMENTATION FOR DIRCHK 009.10 2K EBMDIR09.TXT DIRECTORY OF THIS DISK 009.11 6K FINDBAD .COM FINDS BAD SECTORS, ASSIGNS TO FAKE FILE 009.12 4K FINDBAD .DOC DOCUMENTATION FOR FINDBAD 009.13 20K GENCPM .CQM CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER 009.14 20K GREP .COM SEARCHES FILE FOR STRING MATCH 009.15 10K GREP .DOC TMAKER DOC FILE ON GREP 009.16 4K GREP .HLP HELP FILE FOR GREP 009.17 10K LABEL .COM PRINTS 1" LABELS, MENU DRIVEN 009.18 2K LABEL .DOC DOCUMENTATION FOR LABEL 009.19 2K LINES .COM GIVES LINE- & BYTE-COUNT OF NAMED FILE 009.20 14K LINK .CQM CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER 009.21 2K LIST .COM LISTS A RBBS ETC. FILE FROM LINE N 009.22 2K LIST .DOC DOCUMENTATION FOR LIST 009.23 2K LISTT .COM A PRINTING LISTER WITH OPTIONS 009.24 6K LISTT .DOC DOCUMENTATION FOR LISTT 009.25 2K LRUN .COM RUNS A .COM FILE WITHIN A LIBRARY 009.26 16K LSWEEP .COM LIKE NSWP, BUT VIEWS ETC. .LBR FILES 009.27 32K NCAT32 .AQM NEW CATALOG SOURCE CODE, SQUEEZED 009.28 8K NCAT32 .COM CATALOGING PROG FOR DISK FILES 009.29 4K NCAT32 .DQC SQUEEZED DOCUMENTATION FOR NCAT32 009.30 4K NCAT32 .SQT MORE DOCUMENTATION FOR NCAT V3.2 009.31 4K NEWCAT .COM UTILITY USED TO CATALOG DISK CONTENTS 009.32 12K NSWP .COM NEWSWEEP: FILE MAINTENANCE PROG. 009.33 20K NSWP .DQC NEWSWEEP: DOCUMENTATION, SQUEEZED 009.34 14K RMAC .COM Files: 44 space used: 378k (8k free) -EBMMUG .009 4k : FINDBAD .DOC 4k : LISTT .COM 2k : RMAC .COM 14k COMPARE .COM 2k : GENCPM .CQM 20k : LISTT .DOC 6k : RSXSEED .MQC 8k COMPARE .TXT 2k : GREP .COM 20k : LRUN .COM 2k : SD-92 .AQM 62k CPM22RSX.ASM 16k : GREP .DOC 10k : LSWEEP .COM 16k : SD-92 .COM 4k CPM22RSX.DOC 4k : GREP .HLP 4k : NCAT32 .AQM 32k : SD-92 .DQC 12k DIAL .COM 8k : LABEL .COM 10k : NCAT32 .COM 8k : SD-92 .IQF 2k DIAL .DOC 6k : LABEL .DOC 2k : NCAT32 .DQC 4k : SD9192 .DQF 2k DIRCHK .COM 2k : LINES .COM 2k : NCAT32 .SQT 4k : TELL .ASM 6k DIRCHK .DOC 2k : LINK .CQM 14k : NEWCAT .COM 4k : TELL .COM 2k EBMDIR09.TXT 2k : LIST .COM 2k : NSWP .COM 12k : WCOUNT .COM 6k FINDBAD .COM 6k : LIST .DOC 2k : NSWP .DQC 20k : Z80 .LIB 6k 8 ;b͸{J?J?w{ÖüH!K]jU 2͵ ^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2hZZk:h|/g}/o#|/g}/o#:h<2hqDM!xxGyO҃)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2hZZ͉M|}ȯ|g}o)|/g}/o#z/W{/_!9~#fo! ! ! ! ! ! P!9~#A!9"w**w"j!z*"d!"f!Y"H>2^>2a>2`2c>2s2t>2r>2v!"@!"D!@"B!"F !F#x:~#!|2i~# :" 2i +}|~#:G:ix."2i+w# +6#!6#@A2n2?*j**|+`"d!"f!!>ڌo&͖=}  w~2ʸͼ56!+W ?_!~7z?ͧ:>͞@w#5.ww#w#w#w*>?@͌>w#͌5> w#@ͧ͵g 2q&0OxG͵j/ʆSx\͞.7:77!a{  ʨ ʨ0:?ŷO !y$ 7o&))T])))!y 2p_ :p6)))Y~0̿7G~`2@2@#~2@~?>&=2@#^#V#^#V#"@^#V"@:@ '*{@!:@@'"@*@#w"@*@~9'D'/Ϳ7͈?+"@*@+"@!6D"@6!^D"@*@~*@*@s#r#*@s#r#*@s#r#*@s#r#*@s#r#:@w#"@'*@*@s#r#*@s#r#*@s#r#*@s#r#*@s#r#:@w#"@'|E'}X27*@+~2@+V+^+"@V+^+"@V+^+"@V+^+"@V+^"@"@*@+~2@+V+^+"@V+^+"@V+^+"@V+^+"@V+^"@"@p';(ͯ''͋(!"@"K@2@<2@2@2@ͥ)()(*¾(2@2@(S*(#)2@2@)l*ç)<;00?;   Á!9DM! ! ͻ#| ! ;! ! !: !I !!!R ! |I !n *:$6͐|Ҳ ! ! ! ! ! !* !I !x ! !  ! ^#Vr+sz ! ^#Vr+s~#fo|  *! õ Wildexp overflow LSWEEP Derived from: LDIR & LTYPE Joe Vogler 84-22-01 Ver:%d.%02d %s %s %s Requires CP/M 2.0 or better Correct syntax is: LSWEEP []... where , , etc. are unambiguous library names. Filetype .LBR is assumed if not specified. Ambiguous names are allowed. ----->Avoid using wildcards in the extension. ----->If using wildcards, always use .LBR In either case, user/drive prefixes are OK. e.g. 'A>LSWEEP 4/D:*.LBR' is ok. %s not found on disk.  0!H  !U  !p  !  !  !  COMMANDS: ? - Displays this menu. E - Extracts (and unsqueezes) a member. V - Views a (viewable) file. X - Exits this program. Any other input skips to the next member & P; î#Z#1]1S;0ø&!9DMk:$}Y M #|Y *!% *:$6͐ |„ ! ͐ #|ʒ ͐!> ͐* !.͐ #| !T* !* *s#rz*!Y # !M>$M<$!k ! Can't close library: %s Bad library name: %s.LBR Library: %s has %d entries, %d free: ß0ÿ1A! æ c!9DM!; 6!, 6#6͐,|ʰ*@$*@Ds#r!0 s#r!2 s#rM<$M>$!( s#r!( ^#Vr+szڥ*@D^#V! r+sn}—!M@D`ḯM@D~#fo͉*1s#r*1~#foM@D~#fo)|ʆ!É!s#rM1`i͐2#*!͇M@D ~#fo!4 s#rM@D~#fo!6 s#r͐*͍͊!: s!: n}?EVXxÆ͐J!: n&!͇!: n&`i͓>qA>\>aM>>Y>+G*3!: n&͐6͐4`i*͖>–>ʥ>a¢>ʮ!; 6*3!: n&͐6͐4`i*͙#|!; 6J*3!: n&͐6͐4`i*͙#|(!; 6J`i!.͜!͇!; 6J*@D^#V{ _zWr+s!2 ^#Vr+s!( ^#Vr+sÉ!, w#wåÉÉ!2 ^#Vr+sâ!0 ^#Vr+s!͇ö!2 ^#Vr+sÿ!>9 %s * %2d. %-12s %3dk > %c Can't type %s files. çc!9DM͐ |v!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|p!͐|v!è͐!.`is#rzʢ͐##n}Q¢!qè!aè!9.com.cqm.crl.frm.fqm.dbf.dqf.ndx.nqx.cql.lbr.lqr.obj.oqj.arc.aqc.rel.rql;S;0ëj!0]1(1û; <[2Ï34A!P;!Z9DM! w#w! w#w!͐! s#rzƒ͐!!ì͐>V“>ʢ>EŸ>ʶ+͐!<!! #|! 6#6!W͐! ! ͐! ##|! 6#6W! !<!(!ì<!͐͐&͐>E`>o>Vl>#T! w#w͐͐!`i͐)+|ʭ!6!ì! w#w͐|͐`in! s#rz͐͐,! ^#Vr+sõ! ^#Vr+sw![͐/͐2W! w#w͐͐I!`i͐)+|a!c!ì! w#w͐|;͐`in! s#rz;͐|ʧ͐##|³! 6#6W! ~#fo|g}os#r!͐|-! ^#Vr+s!-5> >>>"! ^#Vr+s-W! w#w-! ^#Vr+si! ^#Vr+s+!WW͐|“͐#|y!Á!͐/͐2͐8*:$6͐ì!9Cannot open %s Viewing file--> %s To Drive? (CR for default) ** BAD DRIVE PREFIX ** Extracting file--> %s Invalid mode!Error reading this entry - aborting Done. Error reading this entry - aborting %c ** ABORTED ** , Done. S;0û;s&$ëj!0]11Á$[2A!P;Ï34!E9DM! w#w! w#w! w#w!͐ ͩ! s#r͐#|-͐!ͬ!* w#w*6c#6!͐͐ͯ! `i͐Ͳ|ʀ! 6c#6É! `i͐Ͳ! s#r! ! s#r͐! `i͐͵s! ^#Vr+sn}§͐>V>>E>|! !ͬ͸! ͬ! ͻ#|3!.;! 6#6É! ! ͐! #|k!Gͬ! 6#6É! !\ͬ! `i͐Ͳ! s#r͐|ڰ͐|! !rͬÉ*6#6*6#6! w#w͐͐S͐))*! `i͐Ͳs#r͐))*##! `i͐Ͳs#r! ^#Vr+s! w#w! `i͐! s#rzʉ͐|‰͐|g}o|ͣʤ!ç!! s#r͐>E¿>>V>Ã͐͐Æ͐|͐##|! 6#6É! ~#fo|g}os#r!ͬ͐|€! ^#Vr+s!|ڀ> U>d>a>ru! ^#Vr+sÀÉ! w#wÀÆÆ[͐*:$6͐|͐#|½!ͬ!ͬ͐͐͐!9Cannot open %s Viewing file--> %s To Drive? (Return for default) ** BAD DRIVE PREFIX ** Can't create file! Extracting file--> %sInvalid %s decode tree size %c ** ABORTED ** , Done. ñ0!ͮ!!ͮCtrl-X to cancel, SPACE advances 1 line, CR advances %d lines 00<;!9DM͐ ͐͐͐ !F For help, type LDIR alone.!9DM͐n}ʠ! n! ^#Vr+sn}! ^#Vr+sk!í45!9DM͐`is#r͐n}J͐n&ͪ͐ n&<͐`is#r͐ ! s#r͐n} ͐P`i^#Vr+sn&ͪ! ^#Vr+sn&9<! ^#Vr+sÿ!P!9!9DM`i6 #6`i^#Vr+sz͐n͐ nѯgW! s#rzʩ͐ n}?ʩ͐! ^#Vr+s! ^#Vr+sh!!9!9DM! w#w`i6#6͐| ! ~#fo͐n&|g}os`i^#Vr+s`i6#6͐|Ҏ ͐ |V ! ~#fo͐n} V Î ! ~#fo! ^#Vr+s! ~#fo͐ns`i^#Vr+s' ! ~#fo n} ʻ ! ~#fo! ^#Vr+s6.`i6 #6͐| !! ~#fo͐n} !! ~#fo! ^#Vr+s! ~#fo͐ns`i^#Vr+s ! ~#fo͐6͐8!!9G!õ!>">!>">!>U">!>">">H#>">H#H#!Q#͐ n&|R"͐ n&|R"͐ #n}:R"!Q#U"K#͐ n&|"͐ n&|"͐ #n}/"͐ ##n&|"͐ ##n&|"͐ ###n}:"!Q#"K#͐ n&+|E#͐ #n&|E#͐ #n&|E#͐ ##n}/E#͐ ###n&|E#͐ ###n&|E#͐ ####n}:E#!Q#H#K#K#!Q#!9!9DM`iw#w͐n}ʟ#! ^#Vr+sn! n}“#͐å#`i^#Vr+sh#!å#!9!9DM! ^#Vr+sn`is{#`in}*#`in}?#!#ö#!#!9# !$#run out of memory $ $s#r*@$*@Ds#rM@Dn} (M>$| (*>$^#Vr+s*@D^#V! r+s'M&*:$6!9 no directorytoo many directory entriesa bad directoryt(n5!9DM͐q(|ړ(!͐n}(! ^#Vr+sn}*(?(.(/((!Ó(!(1!f9DM͐`i(! s#r! s#r͐`in}N)͐`in} @)! ~#fo! ^#Vr+s͐`ins! ^#Vr+s(! ~#fo͐6b)!9q)ÿ1!9DM͐n}ʥ)͐͐n&n)s! ^#Vr+sy))?; =.;=Ü-n51#/!9DM!ͪ)!n s͐{~#fo! s#r͐y~#fo! s#r`i6#6!l w#w!ͭ)! s#rz#*!Ï-!o 6#6͐o͐x,! ~#fo͐o)~#fon}!·*͐o+|…*! ~#fo͐)!-s#r! ^#Vr+s!l ^#Vr+s)!D ! ~#fo͐o)~#fo#s#rj,! ~#fo͐o)~#foͰ)| +! ~#fo`i^#Vr+s)! ~#fo͐o)~#fos#rj,! ~#fo͐o)~#fo! ͳ)!. !B s#r! ~#fo͐o)~#fo#n!/ s{:’+! ~#fo͐o)~#fon!. s!0 !B s#r!. n&!ͪ)!- 6! !- n}ʭ+!ð+!ͪ)!, s!, n}+Y,!- 6!, n& ?͐BͶ)! ~#fo͐)!. ͹)#ͭ)s#rz,!Ï-͐8|0,!Ï-!. ! ~#fo`i^#Vr+s)~#foͼ)Ø+!n n&!ͪ)!o ^#Vr+s,*!o w#w͐o͐lm-!q 6#6͐q͐_-!n n&! ~#fo͐q)~#fo͐o)!D ~#foͿ)|Q-͐q`i^#Vr+s,Q-͐q!s  s#r͐s͐N-! ~#fo͐s)! ~#fo͐s#)~#fos#r!s ^#Vr+s-é,!q ^#Vr+sÙ,!o ^#Vr+sÀ,͐y͐s#r͐{͐s#r!Ï-!u9*.*!9DM! w#w`i6#6͐|.! ~#fo͐n} -.! ~#fo! ^#Vr+s! ~#fo͐n&|g}os`i^#Vr+só-! ~#fo n} I.! ~#fo! ^#Vr+s6.`i6 #6͐|ҹ.! ~#fo͐n} v.ù.! ~#fo! ^#Vr+s! ~#fo͐n&|g}os`i^#Vr+sP.! ~#fo͐6͐.!9!9DM! ^#Vr+sn`is{/`in}* /`in}?/!/.!/!9!9DM! ~#fo#n}:ʅ/! ~#fo#n}:‚/! ~#fon&! n&|/! ~#fo##s#rÂ/!÷0/! ~#fo#n}:/! ~#fon&! n&/! ~#fo##s#r/!÷0! ^#Vr+sn`is{ʞ0`in}?0! ^#Vr+sn`is{0`in}.0/0!÷0Û0`in}*w0͐n`is{L0! ^#Vr+s`in}.I0L0$0͐n`is{t0! ^#Vr+s`in}.q0t0L0Û0`in! ^#Vr+sn}•0/Û0!÷0/͐n}±0!÷0÷0!÷0!90[=!9DM͐n}0! ^#Vr+sn&000[=ë5!9DM*0! 0!9DM͐`is#r! ^#Vr+s! ^#Vr+sns{M1'1͐T1!9!9DM͐`is#r͐n}ʇ1! ^#Vr+so1! ^#Vr+s͐ns! ^#Vr+sn}‡1͐ö1!91ä9!9DM! n&1|1! n&1! n&&1Ê=!9DM͐͐1s#rz$2!͐͐s#r͐##6#6͐6͐~#fog2[=?;=!9DM͐3͐>Š2>ʱ2>–2>ʿ2>¢2>2>®2>23! n&^2! n&!a2! n&!a2! n} 2! !a2! n&!a2͐##^#Vr+s|o3! ͐͐~#fod2|N3!͐##6#6͐͐s#r͐^#Vr+s! ns&Û3=À>û;!9DM͐ڴ3!4͐n&|g}o|3!4͐##~#fo|3!4͐##~#fo `is#r͐͐͐~#fo͒3͐94!4͐+?`is#r͐##~#fo|4!͕͐͐͐3͐##~#fo͐s#r͐~#fo͐s#r!!͐~#fo͘34͐##6#6͐͐s#r!4!95Ï3P;!9DM͐5!͐4͐~#fo4:59!9DM! n&75|a5! n& h5! n&&!9DM`iw#w! ^#Vr+sn}ʛ5`i^#Vr+s|5͐â5!9ú5:ê::ÿ1!Y9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{ʕ9`in}%f9! ! s#r! 6#6! s! s! s͐n}-J6! ^#Vr+s! 4͐n}0Z6! 4͐n&ͱ5}w6! ʹ5z6!! s#r! ^#Vr+sn`is{.6! ʹ5! s#r! 4! ^#Vr+sn`is`in&ͷ5}D6U/7X87OA7Cʇ7Sʸ71979͐~#fo|/7! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 G7! 6G7! 6! ~#fo! n&! ^#Vr+s~#fo! ͮ5ѯgs#r08! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+s08! n}7! 6#6! ^#Vr+s~#fo! s#r͐n}08͐|08! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s7͐6! ! s#r! n}ž8! ^#Vr+s!|ڞ8͐͐! n}{8!0~8! !8!9~#fo#|›8!Û9L8͐n}8͐͐! ^#Vr+sn&!8!9~#fo#|8!Û9Þ8! n}.9! ^#Vr+s!|.9͐͐! !9!9~#fo#|+9!Û98c9!Û9͐͐`in&!T9!9~#fo#|c9!Û9Ò9͐͐`in&!9!9~#fo#|’9!Û95!Û9!9!9DM! n&|ͯ9! n&|ͩ!9DM! n&|ͯ9! n&|ͩ::!9DM͐͐ V:͐^#Vr+s͐C:͐0K:͐7s!&á:͐ ͐͐ ͉͐:`is͐ ͐͐ )͐:`in&#&á:!9!9DM! n&|ͯ:! n&|ͩ:ê:!9DM`iw#w͐~#fon&:},;͐ ?͐^#Vr+snѯg`is#r:͐3;!9 7:PO*R#7,b;> 2h*P/:q2> ʲ;:h):Rʞ;=ʞ;=> ²;:qw#w#w:ho&552?;>7:P,>;2?!^#V*R:T<=;<*P;;*R!s#r7:P)V>گ2?<<2?7*+++:PG_*RDM! _ ~= Ó=#?S;7*P͍=:q2\5¾=> 2?!*P͐=7:P)"XV>z>z> z>z2:P,"j!"l*T|(>*j!^#V*X#^#V >r+s*l5*R"R*j"*lP>2?#>#"l*T+"T*j! N#Fp+qx=##6>2? >2?7*T|DM*R*Pگ>><>~# x£> ><>~+ x¿>|} ,>>2?)~2#"j!!~#fo#^#Vp+q*j~#fo?s#r5 !\/:q25!> 2?+͙ {܀ !v$GENCPM.COM 2 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST<>-=UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|)6`d9:% o}~J5^Aic@.XI N?nj+K#Y7 x*mGRH8y/0,OF1Ek&VMBe[;('! aTS3$"s\QC thgWLzwfbu] D{_4~}|lUPrqZ4dxgH탋-Yn4-K[/~)suW.niuuU}Vfr-w0\ rॕ|8`LQgpN4&z,E?rDqhLXk YѸXDqhLX#7QN׉DZI a7qo xWĻ¿-?,PrO a˖+O@kH[C+}VV~XXu!݉K lY4&"Q,gŮñ-bfr!ML%Ym]ubպzI<ԪZrNk Yq<=.+Zp1?cDqh̺bMܰ_b~deKDCh̺x>z\3=VkHDqX==١|9-P9Ƭ+ K[CU.'Z8xz66'nXC+v7,RJŶ|Yq\(%ٲHzֆaA) RJE(-1geݳ"jeQX[84jf,WdŜ5uϊn*:8".mu::=/>+&mVkplbΚ˺gEZ7gˢ鱔P_lGĭ|Yr*+QkݜU,b,==V|Y-Z-|OOv5:3-\=+ƞPYQkݜU,-\=+ƞPYCb1[e71'ֺ9Xo dEk.CbcOb,vn*EMY[[CLQhY1-6$bZbYܜ55'[% !ŚZD,Uؖ/>+١!,z1geݳ"jeQX*݄.1SV&ȻϮ/DQL]mk=e1Z"o}5d [*ݳb}|\DDcPb.򷆚u8vpek׬.k=t|yQ֋]c[v1c W"ד?+dâ%'eq03,eeᏭX6l1Pgm܌lIHPX/mg}!KXCdzVTXn>j y7?T\Ϭd:rQkX ϻ ba1Sn%&JxWl˯DQYsYoqkXYsYebΚ˺gL>j:KdYWYh~L%==١|9-P9Fvh+^DF֜D9- k(tpqE\z]gekN첊/'lY7xYLl|NJK="cE;t5ĶؙmW%.fۮKbQ3m3ۮKB]uKbQ3au[W]$Ō[̶zIU+g8j=;&/m ]urGdwBRqpqE\z]_R-b̬~]aA)q Ih* MRo Ihz_`Uih*}{qN.T қz7Jza~_;{IGb {iC{C䀯]ꋲy$棞Bb>o^\yчu}>oBc>էl'%nzP' s`vz_`: s^|'IB|X ?ӽ&vwz_` Ih* I腍1㘜_}U:{GHza<5㘜O}Uů$+Qq)@_չ Wz_`~FGI_}U%IB/ll19kz_`Xi^K_qLN%4ViX~vh/8[}QyBj/wBfB艩;vTvh/1ʵmNf.V^QBvk919]U~o.!| $5| f蘜lodsdnè78䔯 OX_`5>A>^ c?˧PP;ݨjR3v]| ~0ԗAޏy)e; !B~r.7Ui`&˟]f|{_gU0 'Y 9K!yPu)eO3U!+Oc':3[U/R~JoOr'duuz3;<*u]VO#䀏~iB=zd2k!1h/8 HBJ ek3c2ȧu#,n\nUnc+k{,~י #ޔjUncav(5ժƚocGXf1]6#׿P&yRzyrkR_#ocvX~)-=u Џ0 H@ۘ9^jjUl30j7āP+}ِzwkc]-$cK\k|Y|_a66ȯ-cV:_gWXsC3Vvͅ'[̆pk49࣯ | ~UNY ~b?G7ɯ0ubUe9Y( fq8Y}<϶^H=4 wOcܪ}9ŕzi@*69n ͸H=4&wOˌܪv7Jy|I$n)#KR_I$nK00@3 I@&S=2#ͅҗy|I$n)#K̔X0' MϪS{ z\]9%`NOߤ/o׍0CM `N'wtJ?D)eY( lEdSgq# M{ʤyW0aFS繺 Vtr&ѦBw6IlmMT2 _&SmP$;ݔMh ʝlP&7(Ul ~CWNuWfMG ]0 ]-&HWK􄮁Ԯ`G^}DaNJ<L6@:ͨd-Fɂw6IdCj0@MM{a:j wҔԮ*G^}JbxP,(HY~cD'/^ qd-Fɂw6a:I?˺q O|˻t?i"879ɝ\bP;36(e!bNW̸oh:ŧFgt':CGdCS>˯27 V駘-X N}X$ `w֗Aޏ9'`~0ԗAޏ9vF?ɣ/; 'F?ɣeNWn֗r"#*D us=> J\zqs= %s==b'G'`â9Y(`ܓcie9\(}` ק~`zIzx7+vtE )1cFoܭnL<"nHxD 4<&ϩGhxv<֘a#ϩ6e6TwQeG(ӠͣyIݰG(Ӡͣ42 `ꆍ?"d6(XpUQvNdOH?Ro?"̆xè1pd}%5N719壄u;y,17 VI;¼GuzE"#K'a^z7JcY'Ԩ:Zgt22@?wɣ1DJ-nCS>Q=' ySg[Jo=h} xBNqj!Uώg)tDj1~Z'!cя]~h`Uy]Ffd<5Yh3+>K,|I}:&ǃs`ҧ>of D#.}iX4`&Ŷ|z1T/ΐSd7WŎ*O> y.ڕd'QMx(5:~R~BcLMOHGO1lJ?BN1&5g?1j1u2Oj1xpxx԰☜ADNq:ƺZHYDB4Y$Rhчtu*of6pyNPB|P)a[jAG5Ya;3L6jDˤ'X x2O` ͸?tq7& cyh 1 y B/x ƍADL2<2tO]No2||+ldNW6yW y,D+Ll|iP;`ë=);B3f}iO6^7&֙>RFo2/@ZYorkq5i9Ki@*69n?5:x.H4 w< qYT$v -DGU# 5i@*69~ܭ85:xn5g$ngM{&#Fjt;ӀTmr<<S^aǂʧ;3d~Mݠܮ;]Wrc.f6Twʇٖw3 p*@f>ƫ>b0;|UO)2s2׿PZ|J9q)n"y` afCu|mۼ>4h:@^R7laAG5i "e :1IS7` ;7Oy_\!|I&}@zs 50XϭFLcm(2x D#.` ޏ"10B1;ǁRƫӌ' X3 pkшKfqcy<J7~L>4}$U|j2[)cY٧c}vMYѕIsop)WMo l))2:!|Iڃߜ"16[irGw-P49f ḨMJ$qm|"r)/-cۅf6(lPP.C /dRpΨzi@*6yW˝S{$ЋLPq1[ˉ,Fj"ӀTmr<<3@/2 H@&R/Tn3'/,$ЋLPqq^\ygFN)_YI$n/?gFj"ӀTmrǖa?`vF6|]4V(U-g2i5@/2 I@&xU~)2\N}dQ5P$n)H_Y_1ffvX^dwގȓR0@4 w|)*3@4 wcʫ৙ 4 w7υT~ 䯘ic20$_e{;&s èqΉ9̆i&vގ\BiH9$3@/2 H@&W>ifCBy_%*ۑ\(@Cb>I$nc <׿*?ÔW2\N}dQ5P$n)Hf6(aǂa.nSȎ/JN'/2LymJ"ʲ8IboJO.!# "ӀTm9|H4 wc1r,f$ޟ$1zi@*69n#>r ^dO &İc;>_;^L^' 7>#QYwd<5d^|XH n>ÿ$1>mBd)Lpc,Aϧˣwn[M #3Zҕ nWİwSvQ]aJQgu蝛ICLpy|8`Bd/ va|,C }>9i 6H@vİBd/T2ey,TVَq>lO'K\΃nl@6T h`6 &nҀPl@հl@[Ƹ6 &nt,؀*^DgQi7q8ohNCQx"r>O'y;D2H|<SN-cSH|*ؠLc)T9#L5VKd#6)dCkr mN! ABǂS?_&"vXޮ~dv݆PO'z3=,(}9[D_~UBb>gi-_|V\E|rLlT\73=(gE';/[+ak';lN̬56Z凬b~deKty1ldM׉FѾTXPl|9/г:1h"ڗ KDDcQQ̖ŌeŰ՘(Z[z/Q/DF'1,n{,(q5Ե/5TκgŶD~xصQјzCU.'Z֓z6Q\7edM׉Fˍ*VkH?ng|p;,[-P_')+ZC{V̬56Zpյk A)m $T"ӓʗaјuŰa "(!Ya=+ZC{V̬56Zh̺bMܰ_~1367c"(5TκgZcFEcn%$ksks67c"(f-7*QqV;cks3+b8ZC{V̬56ZnT4f]1&nX¯kR*Z򿑘[ŵF1pr=+f-7*(!Jh̺|CkkbMܰD"*擔Tf,WdpµYYklܨp!kXPJ[CRʺÉ⺞['(!ߩϻYkl܉hX('a7q~M+b>I)]r^̬56Zpյk |qXPJ[Cb>I)Pl Ƭ+ K!5;7,'Vty1h1a7q~E܌lΗbfr1a7q~E[ŵ9Q\\m3keF1/ZcFEcn%kF˝qxbv7,1WĻ/wdeK̬56ZnTdİ%`vn.[АWEkYkl\1l5&r"[ t ՝A[~H4h:@^R7lRiQuxO7znuC3` O ͸#[2{N0n "eҔ@)@P:HWs> _& mO`=45~q |A+IdCuL-c$@=tPutЖ  _&S;pfhͅҀU<`tJ;&mmGB4$ҠUXA:ȆN-c/4 ~G䜺wLW5a$ܑ\(}<@H6܃8n^0b"N. D#.uįvX:hr< h I:h؁F4 wOQiAm|{,ҽ3@ Qi Z,f}Z6"{giو=r'Aى cVFt!@ Ad+4kEգGI0 c=̘AVգHBM ;y46n$F Hj:HWqpV*?;- d _&>]-ҀU<`rTAL6Nh+uįc ⠑/֗A^v%1⠑:9{G4 ~;Z (PT ALKP)OaԘ7Kb>A#urQ _&;C=)m:HWɱ|؍ j飓x^ݨ:HWɱFw#o!Jx uA#P_y!×u2Ab> _&Ff?7Ab>N,Ү#FPl0h? 34Zxw3AL+!󥆮S܉~*CS+arR$@6Pi@*0y~򒺡px5Gx8 ܆TFxxzeY- G ߢlB1ɑ @v:HWqNOql$KEك IA6(߽Eqo՗A^v3Ab>A#urHGxj!>uįc|P _&I6~ _&I6 )58hL} _ nq|FfmALZ Pi@*09n^m8^ك %5( 4 ~'/BE a-?Fb>A#urm:HWqxW˝!ԞT2Hx8 |*KJ+*~ _&O8h2 ܮi#1uįqK#uroo#1~Z'Oi{a#D7-g!DCQ0v3!Bƻ `j_:HW8p%֓}> _&%h' __R4/K:i#1uį)]-j{Rj] c vFKш+R5D.f4Fӊ7u7J'.űS@4J~z)5D7ujG+E pP!6ȝ+*ZW66ᝈ<"| >utPutЖ4 ~7_ꅍ4 ~;PK0X f܌;r _QvҹZIm^ҀU<`ɚtsXEգ:L:HWɱ|34 ~'Ɨa$ܱOWlnhͅR>eY(M'@+AL/NGx䵓5W`!&;T3~uįNd:w_XP=δ4 ~'tutJ%B]D$HOg,?4M6uB4hU("73^ qFd<͌F >4 ~//jQuxOa^:`Fc[F\ _& O6T~uį$^ظ}a5ʐALn0Dxh`FEB4*x/J#2Bf D#ng >4 ~5ǁWw>ՠͣ42 &셍~#KPj`|wyGPzh y ш+R5D.f4Fӊ7u7JcıS@4JN"LшJr5hk=#K_CA6TwJm:H|* ?!umX1IO0|x2-D#.u4kCF\頕JC ;ŇAyTc "^&=41ƫ@^R7lx k!o!q41 /A>ƫ@^R7lǁN0^ y шKcm`<ш+R9a*M:Ȇ&-cB~q# 5 H@&S" >頕y`͠-OgP D^P74lzmܪnh #&:0t+[ͻ `gSjBuQi\]jUWNw;dgrB<+9}o0+{VsopIy`ҧ>o&r3c$_˨ o"/qN66MnU74\mҶ/ayLwS:M6=S7MfD!5Ȣ$'t >h) ^" ^FF:ՕI`J7M6u?p9EF/OqYTk7x!ALFy>4hPg!D?:ӏ"<4 ~//jQuxOa^:`Fc[FwP>hO`F?hĥDH~E"!D6ҀU<`r_Ie,.uį8&;}a#  2\N}dQ=Y:cp9E&$[q}j6Iw H@&SkAL~S@4*x/CG#҈ш+hbWFd< F\ UXAiDCxhĥҀU<`rdoCY _&IKPt _&yTc "^&=wG!z'7u,G'(IϡH$9$ALdm;4Kxx R忤ҀU<`o ;}a#  2\N}dQ=Y:cp9E&$[q}jHi@*69n@>x.Hi@*69^ҀU<`7!;C@BF:HW /xЇAiDƣxhŭ@B<qFd<͌F\D+U"/^ qe+tVa}!r3W:hk\T1iT7;5oo.ƱS@4Jcy zhM]hA[A7a^J/HP$eY č$Ԩ4 wcz頕JP)e,:H6jDˤ'u8xKꆍmx kQ-D#.u8ڸ("g@4RiXyIݰm8t}y шKcmx3^ qV*d]?G#}2mFG$nKP9HҀTmr<<#LQg(ռHҀTmr<<#LQgH~Tİ,>9SZ,Zϒ~u!hS$bgIGZP#a$1]n wo+8é2l |d]~E6x#K );oT)DnfDJшrewԋ+?! _&!{H>}K6"%%u(^ydXϔЖ]F ۬qso69n ͸cZy7ގ\Bz# | h"A# <ҀTmr<ÀsFPlDJ & ?zÕ?è8S*e$~i@*69O!rW>V*L96x8 |){H>l-cNlDJm)et!ya2An@6V3e少i@*6kc\('M/5C3V^F #׿P>l@Hy_FrZH=4 wO0`7ulDJ & i@*09Ta)d r7#_R=e$}j飇0j 6䔯 B^ ?zÕoèqg@NОa# HPqp [U/1Ryn@2L Qݰ*al)_5~8g!"_=%-h4Q\'n~*[wxu-İՓK-W%DqjF'1, K$5ZI y7?T\|ObXU\q#&3=_bH? "EsMd&*]W7Qaly3nb\M-2~;$+vU)HlhnB]-$nѧQW yJw>ϧlhjWFQs.9l0> I腍=(Zi'-("8R>E3V>y36|5qGBi.7Tyc}EO#Ҳ" K?R>[ގ\Bov)G? ~)GG+%DvX8j' I49&s MW{Ȇ|m! W|T']|٠}ۨH#׿yZy5;r7dsOC"֓HVRJ6j0VFͭ#\iM4\(']Qj_yZ*o ͸c =#׿P"$é֫ۨB~;$+pꅍCq ]ۨu$1&s ֫+6J=ܟ j']{| ֕ގi:oVDͅ\# F+}t9XOʻSW{PsHcZyM7JqwA?*l U-@G$LJ0/"E9` zacRBza#|5R|5_~(vL7JvUjJ} <; ~ @G$E}w_- }u_D HΗz߭5ҀTܺq-V} ò/ٮWٮo)pF)A O]_@u<19]]1\(F4O|y֧~͸;$+zai/5w g7l#v|m{$Go՗A>=t/HEd&7?܃z#3?܃A7Qf1]#׿P2T7{Жґ3=yp3gZItFyƖTjoǃ:udC 2f䷑ F+[9?BccySǴm4\(bdCu\}7f}i@*n]5 ktiυWJeGh Fv8GhpS/lchd. SQ>zC#u4OzDmD|=7Fxq[{cti/{cti  uCP'kҀԓ3HĽq,]@Aקn(?B -ݎ yh H<@ ]@AXf ݎbd& ~WBD>MHz;QȽ14ۧvIoGt;7Fxq H<C+#RH9Nvsyە\1yrP}N.-cM14GZ(1lHcrZ%Ɣtaީ/]@AO]O)54 ~kti?yt}z(Isӱ(mн$ 7*o}O== )/~㶍fx%T߮Yje>"mн$ 's7*o՗"۳?-׎fRlo̬#_ggCGL׬>-p3]ێaB}2yvx&_)ۓp2>vCpn;M01@8 0;0` ü1@8 0;0` ü1@8 0;0` ü1@8 0;0` C$q9>/;Ѻv'W;;t]+GET7My]sQ*>}wymojMm^WRT~T۽\G[׾;¼ʢھ;¼so=_ȶVUr~ֵח7;cwe8;ڳ;{}r~sOn|y0n[̶uau[W].f`s[̶zI]|ŖKbQ|ñ-Bt0?[żot~}jHi@*69n@>x.Hi@*69^Ҁ54 ~kti?yt}z(Isӱ(mн$ 7*o}O== )/~㶍fx%T߮Yje>"mн$ 's7*o՗"۳?-׎fRlo̬#_ggCGL׬>-p3]ێaB}2yvx&_)ۓp2>vCpn;M01@8 0;0` ü1@8 0;0` ü1@8 0;0` ü1@8 0;0` C$q9>/;Ѻv'W;;t]+GET7My]sQ*>}wjc#:gX M82{ztׅlQCm#5Ft>ܔ?lZ[4|رT qͳ-wHA(4UY*uI//E&rKDfrU #uI^wY #`g|.0!Mq{)_얖KI3N؎uFoi}OdҎq{Y *KAY1Y zIUR)W8r))?͌GvOVcNRP' q5D&B9VqgM'ƼE JnJřȬ Jc[9ĘuCgJ;)h."sbat>1f1t{ c[!2^]H/'Ƭ;FVM\J*&V_DNyVPFgJ;t>1c,?TIBEa^CHS=eJ;)ȓf 2?@ABCDEFGHIJKLMNOPQRSTU-=VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~>`:o%a)J5^AYF rpbM~n9].w7tju{yI+xvkZT@|'hNQ[?qlfzcOE#S UBsg_XVPG1/(" }i\WH;3*eK,&$ 4mC8 dL! RD0֛lrjŬX>9Xk;kfn\ho>yFﻞV KIqwg><3@vz~6]l3'~$8s>r\lhwXL|iN1i+IW2iU"HT KKl)0bb:t SJZ b{i(*f63JSp,_\ [m^k4$.9-W.ּًb֎ +d/VX*Dbt\ώ,S\NuilTv|Vbe-bET15Ͻ]Ld/^rA$]湹B9ų84O~.לT L4ghLF,"= J&pi5iUs6WIOu8M@zEb@da$TI"R~3ʤfzP%tHv3f\%͊) ;ӜPs<5?0;:w&^nGc6(iHׁt6HA:M =  ] ) =9 qUA|&bL%d v55'>yiQS#u D*h^oml^Gfz%H="O@Lwd7 F i[tA D@i:aIPiO;lc$*+&jV$ CI~1$OiCR9ٍ2v; tHV*'R7,zK2tHV*'Բ^`[_*t''ʊ+!KOh'T`‘ aI"ꉭvrt=1T`mDw~ %~[k_;l?I$X=3j U*+&jV] !/~ت n?g|Zߓ.i _Ed=pyzrU O3 M0 X-I4O"|z;(Ko٘hTC56U-?TS^6cB|C"f %:<2kci6ok<9 j9N^ٵ%`W7\/fܪyBs6-S66"/֓*d,~ZD`VZ}PM9-M}Ք͘<[`(i;NcKqwK E&=@}DT""#*']<|]+Γh^ߓ.i >AEIZq5-EKE`}@0@Ճk'.Ȋx$tr )^$ р Y'Γ+&dvnJR!d wS!WiIw:.vqwKqw1. z(N']6 _'tyJ$e?aI4yJ$g$' -]*Z8)b $H&UIHZ?$f@lM1k`䫰] BMIQKL%晤ElM'v9lhREM8$49T%}orce3&'TQS 딣$n\n X߫bl&AE'UHIIu oFwTHZWP.r*Z&)})nlȨ}QML*hr_gol}̙‰"2$`i̧~9Qߚ'e䗭| %q iS&uxE $5}I|J>hr_&>CI}[Rxc hr࡚M}Ք͘'`^:kghr<7]$A㋃ĵϺ49;w_! c.}"f]HL"t'8$R7,'x3m(xup<|t1m.T4U@0D}^F;>VrW -EbX,)+"eؗzgorce3&4|ɚOMպ'#b;H>_x>l_= zDl5%ZvjFV~\9-Xozg`|{ ܑ»\#ŗ\#ŗ\<ڡyn,:B^|ŧ:pAt@z_aʵ%x~B@K/X']'K^1ԩSGB@9]i%c ]wQ_aiB@-{Ê8(X#j23/*V9H>:ZH,r 5B^3xjZj +j_ų3ϞMCh!/aT=Kr1߸Ck8{6g zK<ٜ(b1?E"eHYA$)E "/a8=ۀ lq12b\Sq0S#/Pg w+&#7h)ԦMhG x(ܤ/E:^ MUfqm%K͗h0%E|+'],j ekM"k6$f( $ؘҰz)v9aiP+4ORPC^M'tD\a .6Fp|*\ahK֒uAؕߓ.i &Zo -u])!Xy,`饴uxS.&3XO/-w8+Z0RhRN|swX&}͘aQٌ /KE-*[*jdK dDTԂɬZ0Ac)mr4`T[z gW-`9U&J`y*_ @`‘nz-P%lv; Ul v;4 ;!4PN0 A' 8aLi订' ?a r8*8aF*At + qa8acpaD45SP3|O؃qT(xBz'AP+|OT8ekFr|~NcNP [ /T LiX3 5WoSpiB:~\9-XԁusnPOxC:h1LqӷvHxi|΍zrxPKް4FwOzbA0h;OuH#`=ABpl"3G"}8blyazgƼ e"3 "1]@=1Fc5FO=9M0B^,=-m5ONP}:V1Lqѓ9 ݖd4;m5թ"ōհ29Fn5=htFr)yn+}\m/YT6cBH*[  r#CPsqwʇ/k[&݀hR9(nMD'& N1fR,& Ks7Rnr8jٌXʇ o/?Z'C?)Smv1!U[U<U<:tiNz VBAKrqh ?a -t!0q|7l`>`[7 @tM#1@xW nT@U}倮#ijEl(T 왭yfHxi0C`2J:!=5q +kĞ7 #ߓ.i N`6(tSi%v*d!.tYPŽ@%Þٚ\ + r%w.Ʒ5w.v}`bٴn; LtY%-ٴtTI;@aGNw`EgΎ@% #%.r6̓w᪀Ž@%ٚ\KK4u:0d1ͦNOHr@ yv>WBgV[#PI' COHr@nȸGK ?a -JTBeB!M>E|j OS$ -i+(XA,= ´`MAvu2tMZ `$"+4LA6 j2DpU@ QxS )/qٝvky b g.kxQ/ GJQtIcpiBL#d.*[ L;=t-/*V9H>jJ(9DpE\mXNMFׂ.0]םsc 7RA*qQWUDMȂ5`Q'#unې?%I(g.`/U&+Y1gE{wY^c \f>F@ ,ntPv1!I"5"d/2$pXzOb=7 ucT8$0x܋1J;A:AHr~v /y)*$ \;N{"xZ`KyD\ /B^|- 87 C<Χ4"q'APss8f6v; /FO؃ֈxG`GՔov_롚5*b2d'#3B's?a!a)}!$:OeLNnc%x)*#t2v9-xjN~¦AB/qCKW.K)#.K)̷5Ox B^|Za3Td|>|\h='߈=EH#(`c#-ôW:p<44Za=]Ks1^|NХNP|^:lt .i66 4*a'8$R7,'띁q_^ݑs?a!I帱FQs?aPs,`9ji/b -ՐX+ߖ`-u|΍ంk)¥0vQH^K;{lXG)N6z^/¥=6nl n}[&BR..bJ!UMM }:_-aK"ً:_`6P5IVK'"< @sQQf$'] B&8;zqW),]Z$I4,*J$>ߓ.i ^dE%yM Ύs|U|yݎgy!n,Y 9]6cBL-//t2n2D\Ƨ4Ep7R9D5L*c.r2v>`O;c*(^Tr‘.}ud;cū1Ǹ*) B0F}0La*b3f>VߚB6ю祰gP6 ',<,41wdx! %x j &7yX%h8a1t)]lől^T%I4.8W6lj 5B3WKa),.jKpXdUǦ:B3ҷ}O y}j苄I9ַyvoo &i k]9D왭ybCuZv]9D왭yn] cj>VsB+y-$),jV\-{W-NY\5By+4xwapxO_e.\ y&kKh5WC^<njWDKh5WC^\DaxqZ% *'Zpv;Q$,dh5Wo[V6jVh wDKh5WC^Z|'˰xķ̲Jp}{X!-p`mӳk/r_mzۼH}+#l g5PmT@eq5=s՝9J굚R_USC귳4H}Ζ- lOb>g˖kl6K'1ReKssg fI$Fslzl6Kg?By}3g̚yޜ@ fIVBfZў&f~a+!f:7wl/d̚59lϾ)ͣͤ_537Զ%ޞjz,p}{X!-p`mӳk/r_mzۼH}+#l g5PmT@eq5=s՝9J굚R_USC귳4H}Ζ- lOb>g˖kl6K'1ReKssg fI$Fslzl6KgvCNSWP.DOCj  !"#$%&'()*+,o-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi~? >>>>>>>>~o/8F,5#T$܏j/͆pkl ~oNN'OHVgUjg5E6V+쮎5Z:g߃N߾ǻ󻓓>>>>>j?|~uE Z#*K>_V9{vjo 娥v,j1 xG:bdM+v-p tN؂q_pr<8̄:Ӷ5`NNn9jZ&FH0883 m-wKRRL,`3 bLd $m-w'oLx0ΡөGmkl8y{ܯAk2Yc;BeI}rR;rq0AeI=8XD=gBӶUʒ0L$TGe]qx|33Ϗgoo^>{qflƧ/[)qBmqrڠLG #ҔLG'% >x쮎{,ȲDJ=8G:H 4,b=Op?~vx?}8*pcjgXEȍVlG C:-T O?8G:QWxt>~Oi;u২9E+8gqѴ|="V 8?}dL8^8SۑlgBVF% b\gx{8޲Nɰa^>{W"odu#p&%]k+D8dMKr|l?CZDgXE$FE2VZG8ӷ/qxqrze[6EjۣN߾ݟqoOO6@m_FlT:_ߝ}ww''wZawX\alb;eD,S!8,SZpcj <I)l6X$ЈHnRd-{3:FP(:+ =Hn c{$1kI $ubZ3P𝩎 hLJT*`ŚЙꨠHS[$RǩǺgqOQhۥZ3 Xe$iuL1։E-MF:AK0ɰSFA#:^T,&_Lkrjb-8#h0Eik)iLu,S!8,d:* TI:my؈I N}!+8ur9>ő0`Uc,n8uπqo?=|j97Q't&r(`)xS9kfC5̀X,QX0cLh$:FS5w8`f8LQhZ<C\??{ggۃf6d! 8u8-&.ϙ0uE[#bAJ f$rgFĚqB)ơP ЈV4BNB (XFZ*@8uç!lLN>ʐ9x,a# Sec*"1౻'2i0GSeȌh2,jX`*g3 C- 8Z7DSVK]St#pAu >>j9<>{ܯAk2Yc;BeI}Z67BKcwuC DXcc IXj2,j1EiGR8Cx׊Xt:3P(ӼdMK3u/*+E%zEh$LjK Zєt;7%ae/ OGZw:+kF#8҇̀P$cQ;P$`5&5:*NퟪXbLu 0-&ꤑ/*9fW(&Aj 醢0)Ap&4v,j [ dJ!0P|]fB!ep;ZjdNpu# 86F4A,\?;|~tX(nՖXp$!/0g؂ERSXS-:%xkFEڒeâvLJJTj $Ji^-,1wFDj(,.]mɲaQ;ђ $Ÿc3!QS1,]Wc$F "5#8p&D@0|||||||||jw8>>s(nL؎PYp|V+}cwu@kn4Աlr?V1n.g6&VN,j`6FY'+zX2YZ!v7~~R$Hp 3A',8^0a8i#) [:c8 5&F-@uhD#iɍ#:)~zhM.;XW&"MC,%ʆcS@ug`]K&^+0kI XSFKL(Q6:lVt&%*8^Dm?x{ǷC]fqh4X΄HQl:7IdMKpg}`Nb6=z౻:Lَ 8uj cn HgXq k".3&%TG&q btJ s#m[c k5Rcwu)L$𢘢&~"mi[x{?8#p6P %4:g0C-Zc{Dn. AL-yH(*vgu*_8pV7bMj x{G#|]*Zx{kE[-l $rP|5Q%ʆVG5a2V]id*Z#p h$L$8LbUY |D&D(D2gd/>0'8 3<~ GV3=ڿxa?YcwukEg, ΄F9H]SF#z Y!hM":N=#p&G]St#pkEg, ΄FALr uxBLd"9:iw'|]+0 zfC k։ 8"m(:6RHG/*َ툀g$^Ϋ^+КN[6LHLA,8H"kZ ~b 6a#t3&2֔t˺8d]VP,baQ; Gn_'o~|G<}s ģQq}zۣѣpgՁCpD38CRq6ՉFLJ ZMrulšD1b։ ɸ8ۣ̄ hXΆg@8 $B6k"nNpb;0O1LבsTXp6^+-A#L$LY2 34xQaL;%#DRK(BTPmR>>>>WvW>?^q:p"d% =ςx{~s7N~<ӓ'?zݽc![f|vw˳Ҫe3Қ"eC>=$r#OD1>='ӓpg3<~ GVn#xoG\ ƣG+ VwtGF\xa?nקg8=z='8uF\%xa?vn`0'8|?)MVG35b)MhV{L;|NF\ 8}3| >g΁(:QvWwOON|xu͆pklq'?/J8Hkl%6I3α}Q^Oֽ zE`3 TH"5qm%48nq[%4{qSF3`sen5bp(8cJĄFag!qh4Fp45s<~B#v9>,$ +UlA#VЂFx,-(nVG8.qKI3mH"`C#cwu9h$n ~sXF#Vx,nJgqȔ9}+O33܄s|ոXH>݈h\L,0`m|]8Z G4 (ZuNV-:m[c")aMhu#vѸX`lt7Łs:dp&Ա~3L 3M m ?z?^5=քꨀn2|t7I;8./pC:V&p6 :m[c{tbM LbQ"4"B3Fe֤ϫ 8 ~5 EN8 zd LԱX3H8S\uڶƖb&[&*0Q-};b$ >x쮶b;B͆#W["mH"G:2V~V 0Ldj2$7Z@Q9GCg׋ctڶƖ1>='ӓpg \f2IۣG3\l=ѣ?Ycwu *:m[c LZLDvH7b4Q[,]S ^-xQ3Ă޲F#I33߈-Lh$:h$ Zњ?r&9U&p6 3nF>;t{0Q,Ӷ5*X3 .3I lgBWc$7h XZ-HgXԺFLf;+82~{x|t4oLX"aGF_L1 Hڀ37fR?|)`HVtƢP"&p&t5FFO1=0p7ԏ_SP(ZhfZHJXTNG\d+ܝ>)IoNG\+`||p:9=}>WvW>?^q:p"d% = W;}3<S"&4 OxLM3<~vxW'Op|ԋ`H2K"=I4׊t0Iֳ^*gjLK(Q6:_āUaMK3 HP$(Q6:a&8iiZid%ʆVG1౻:^ERH ZDmԋ`F+8R%ʆVGlLpZcGh$"9)vqp6lx3E8JǢA-Lk".3D`ŚFy|#  δeCOΆk".Lr,ְI4 XFA %b*aLJ#zu#D/8~v}pdx쮞7b)!p&XgB#f׊2Ep&r,ְEQd"Cp&4M5 #Al "uTaњ : 8IV(؈;3pxrcu LQ΄eCLdh|#D:S9x{XXp&TGk6gQ$ 8IdMKFS҅ = d:, .~HI k†4="0EC(dGx{GkIJ`pt{mLh$0abp&4h9pۣ1%kZIL%kZBmklۋhM5:*`= %3 IKecg5-9h$rQ6v p&TGkj $ KecgBuakmۣD.౻:T:F ִmH l>@SNG\d+ܝ>ncZ`MK34=܏>= W;}>j9<>{ܯAk2Yc;BeI}hM΄(vMڀ3D3C)΂8q}z0pwgi5-Јo_p}rvx>s(nL؎PYp|cwF+К0)dMK0 ڠDʙbQdfĢ֤ԣbp&%PJg3\l=pgi5-Јo_-kZogL i OξO>౻:i[HJdMK0)aw4A-J Q)XL3-Dִ4X38u0`J#32I"NFVb,{pNYZr`@ ΄lm 38Ҷ5mog|g+QtN<=.% 2Ƿ3N ~_V-q(%' $r4h >xdr+?9 >>>~Zawu|r9q7hX&klG,I>WsQKXԂ54c 8PȱXâ68dz茅cfЉaQ%E5+T#sl,|~2f@SmǢb!(5(JVFc=Eâv3Ep6hMgB#hASFzEâv >x쮮{X]`W&D2"I VY:8s ] nd@7T۱6Lpԩ-"PM38Rb1H39q#pvMiKp 8fH"71N'xޠ  NtN)wL-pNFv@kl"MC,E+rOa7C# \Z,&lbAwfe*3zhMɔ7Vp6t¤a ޱF3Ԧb'w3-ggrw=پCkz`MX?|Hd0CK:p6T.0h$:lĊwA,6[âvqXu+N> fCjk贝*SLpԩ-]SXp&PMpYKm2k43mMeCh$â5!HcHcTW 'vHtP Y'E 1|j'8>>s(nL؎PYp|_J*lA|]XL 6I  ҙXf@SmǢvj;0]G;>H*LQ; 6LJL7ȁa ΄ERL,P!v7fO10../`l ׊ERš0Em'E83%@e4}.V,S}GX$2#ʐE VT+/*Dִ4HΆH8v")aM`3 T`lA7%Se3 b4>?0=zX ξ}0PA#'x |~r 89q}zO+`x~OV!xH(Q6:_pprw߂H^\ =Xqprw,FQ^?H"|]foXԚ4Cl09p6^+qfCs&4)BDa&;>>WvW8y>?^q:p"d% A)q$N L`38Hxq Iqt*#jRg3貱Xap/F0S$r$3)0Pc I ܤ8.u9x'#x{"Ԯ):pvz茅aLJ=p&G7ȍ,P55AFNfZa Xԃ3o$Xڮ)BidE 1FTG0ԮL%ʆF*nY܌ m-c'#OpxN KlAp~Op}x 4_V'x |~2Y4NFVb,N= u6h$, %bgjDmLpZcG(n`΄N8,ZShġ(8kEglH8Sg:m[c X@)B /i[,]80f@# :mb Zh΄Ë3..f[xvNF0.]Ӷ5Y4 hDl I`8^kN,jgtm\g܏>= W;}3< Y4ph 4e3 TH"ׇO?+zXebMS7OLX3\~:^ѣyZ&ɲ*h$΄j D5O8*#F+К V Svb*XS2]F# `Ś/0׊Xgq؈gNmJE|}Q^`l'^TWb4Y"h-m(:OOo_~ >xbpIɱ/*93kI k ޸*(Q6:b)PȱXâh$?[6)ā3`Lx Ӷ5̠M a ~؊sN.H"n gZJ ="p𜩇F2|| s<>{ܯAk2Yc;BeI}e&_2  P4bV`9OֽDЈ[Pt4Й H\EHX$%D-z` 3Ӷ5 %h~ >x쮞7@pc\l/hE%zE3`Ra45OL+ 8"@C-9{Q^ԎWIΆtHv,jg6d! !jSGkER ~Mp/*+*#gB#*ݢ; $")欄R5I 5,jQliuy^+(QǸtF#>Y&%*h$I XSbҀ30^TWTFyDcu/*+*3-huCL(XaQeCO8p&RVE%zEegL=L$8iԣIV8J1.n/h-m(:aRB#8L$DHJj݋J [`RB#8j݋J I XSE%zEx- â3_΀ng 9kX_liu0Zu MDz!4dF6LuNR4 L0kI=X}Q^IHaûE#wqš%c] No/׊Xeae8`NSe +mmaZ d:¤:0`ҠQ8 x{^LgZXp&hAI8{Q^QalԎ\ 5)ch2IIu",],V|]fB#^TWcQ8u(NecKG2SY9L4L=#`Sd`0u(;6^TW~Kbp&*h$c:CEQp7΄F9[(QLxs|mkl8q}z0pwgx\f2d'w^~ >-1p~~Op&}xXqoBm_Ifp#p`dZQVnN5!#CE$G 8$3_H㌣l@`xN`3{?U am 4M#g»,]FaN<Ά&/i2K$3wJE-*# kYHp^;m[5Bd؞5*g ä/HJ(:.D΄)M qv-v{p1b07)ac1>WvW8>?^q:p"d% j$IJAJLhX:hlV, .ʚfšj$4$&pgu8t\MJ=>mAx 980I kZ6FM,Quuccwu)`"цI,vp ⰡD-8FX&1ų?9}3, Z8\,ف3LBh:m[cs8t5Fz8bc>ϗcjQ"q`I KV8uŤ:-Ldyԃ͆uєFdqȔ&EN΄]mɲaQ{4ȭ8^G0{`S J`xSuYMr mjY '#,Y+YZp&lQǢx{G+C-m(" aMdi;%b* fco ΄ u,j{tbZjGLpIcRd_TH"7| 8RQ֕E >x쮞7" ͨ`l?i0Eig4D M$+|+Z൫@W|r\fq")!S0[₟Ѵ3-06dj$4dFr#EWc$˩ǢF0>gl(:Q;aC֊f>TfgÐVd!\?~ņ EOze.B?^赢5=.b8xPW=I 8?ڢ3)5x] ΄Al5,jG0INa) 933Ptv >kj4OfH^+ 3S+ %bA#0rf c1VZPAgaF+ q4F8ƖD%x0)3.co/ 9p&l3L X(NF+s dٰu׏mal~ >LՉpM ],FckX0IE8ϙfDp?̄N$ qXY45rXZyEkXBD:T[e\?~EgRBXFX2Y, a^08S}9rlDi X&fpu420a3=`ɚ7 SAS(#8,J N=DT S?֔σ;3:6L0kl@cLjqqzǻwr;娥vT`8Ƣ5XetAtaH"H 飿 >A-{ܟ~|߂?^q845rޢ!5ja;3ύ-瑸F<ŨqPJ3{X]ԔzH;%jɲg??өG#e/*7VΈ4d"-zi $BS(naERDgBu6~׏m1245%TGPaqX(%NmWc$8?7ZњV$P$Rǩ+ J ="-83=;ϙz{ܝ}ЈV#I;=0x{Ցg3-XBGG{$0(JFp&i[g8^G Q`Z'hF96?g4AL;%z98m4E-_MT`Ic8韟ǻw+F6 86L8?-2\#tj#YqX(&8ښXu!5҈,n"*$Gc]CѡBQ:Q4,vSalq2KKn  YdcK")N:QF%Krbp7 9ԣӶ5 5IL)8^Zԃ!J L(nzB"9YI V88F+8i E 1 c 8ZpV4(貱3_ȱXâE||V+qgv5F#L_O?mDtEâ֍8HJ(LO]-&_wu_w?Й H\EHX$%D-z` 3Ӷ5 %h~ >x쮞7@pc\l/hE%zE3`Ra45OL+ 8"@C-9{Q^etAtaH"H 飿 >A-{ܟ~|߂?^q845rޢ!5ja;3ύ-瑸F<ŨqPJ3{X]ԔzH;%jɲg??өG#e/*7VΈ4d"-zi $BS(naERDgBu6~׏m1245%TGPaqX(%NmWc$8?7ZњV$P$Rǩ+ J ="-83=;ϙz{ܝ}ЈV#I;=0x{Ցg3-XBGG{$0(JFp&i[g8^G Q`Z'hF96?g4AL;%z98m4E-_MT`Ic8韟ǻw+F6 86L8?-2\#tj#YqX(&8ښXu!5҈,n"*$Gc]CѡBQ:Q4,vSalq2KKn  YdcK")N:QF%Krbp7 9ԣӶ5 5IL)8^Zԃ!J L(nzB"9YI V88F+8i E 1 c 8ZpV4(貱3_ȱXâE||V+qgv5F#L_O?mDtEâ֍8HJ(LO]-&_wvI!RSXSEED.MACX  !"#$%&'()*+,-./01234o56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW~^Տ6`V|y/)\'_Ⱥ ^=v%7J)6'U%e j6``Rl|~Ö셀}?qׯRl)cp{'4Aȸ nv-22d_ I-=^!8(?! ap!Jт=oW)߮є=d$dȆ 7`LZB2'㷫oW3`aS%x㠳oȡ[ oW)둰Bx`okKkpBoo,KkpB]ţ)`VV'X'DBKQd$̾,56{;ܥRl=G l*7 nXT B7קW18JCyt:u})Yٺщ[YϐP0+B9W?n J'M1?;]n#d!2ԮDFfo!# <*_ht=A!ʈLLf7p2J6Ŗbtuϻ,ိء` [lrǙ慯7כ&zsz?A! 'J)LzǙ慍`00x%Gɪo,=*S &ˁL%Eyr+##dY/^ؾ~bxrjCGZEN6xFKg,AFHZJ-8hAKc2e!'`t"2v#:G #aIՉSv:7BR>vp)r̭xpxd,h=Cs\7R j)d;DFpCJ]m7rn䱤}p#C7rا"9Bã)28f,m%AR>vju"!zl9_T s T ޠL)rɬ2f3ZH:tur\;V'FRaf3ZHȺ7)a:-0^6d$T-,xH0t9ɭn ZH:O<6 `,:,V'.E.is3[涒` ZHBs\L層%s܌6EXۯ_}0 7]N$dS>317t:lɹdXnJG՛V'М-9"Sy,)rɜ77cMKם^v As 2hARȢՉKYr-a ZHBs\\2ecm%AU%x?CFn{щ0*9E.OHP~0B7uTUȺDw)rɬLm%j YUK!ءՉlLLmY}0BQZHȦȵXn[SWKn{|`t9canC*iO;Ͳ71'/RL斩ZFȦO-M=h=c0xARL}EZ :s#3 o{&o)rΓ[ݢ B*Sŋ!#j)uGoR䧖6mO'v#`ˁR';KZGx6xv(LP䡗PU'sD^H(OKf\x127qa="BXҼ%2IKKnۤ n{x,rs K2XZ SE`ֻ9ɭNKт:R=;T?BBSL}%s܌6Egڌ9 ~-d$<"̙6bn+ $%lɹnḼ 2h=c;T ޤO;ߌ喹x:L!#ˁPC)Hv]V~Vn}% #ˁP<*)˾{܌ǤRGP`³ # 1SlNWmވ`oNW)?SLK5&*D{ЋK!Sl)6=gcaju"!bc~Depx?CF9۷gH3Yms6  ^7oߎy/#d)6n/#48B[]\2gܸB, t!8dt:lɹd۷#s[Ipj'*CR`*gbnTKx:a %Mۍ275C* UK!R`*gbnTKx8d8QP\2d(sS1BP ^(E$ܪz!!`Ik UK!btu AKx Hm s ֛`nXpOz  RAFKLdRe$8$ņ#w*^H(ÛG!#a="8/jL%q3'T5 ``p݇)rɜis r$6ЅzDB%R`*gbnTKx8QP|𖕹$P<)r|ciۍrԞ!#a=’ %Mۍ27G'*vҒ"7&cR{a=B|'[, KZ̟[S/$$;.E.3mn\wz[nUo2ZHBs\LL-ji"#'*òJKf\x12j@z3%Mۍ275UK!0k(S䧖;'V :I1E.E$ܴdo'XGRȦb;]Qp'dV] 2}-w|ݾãl vju"!zl9_Ts\LL-ji"#'*òJKf\x12j@z3%Mۍ275UK!0k(S䧖;'V :I1E.E$ܴdo'XGRȦb;]QpS MACRO ASSEMBLER 009.35 8K RSXSEED .MQC SRC CODE FOR A CPM3 "SEED" RSX 009.36 62K SD-92 .AQM SD-92 SOURCE CODE, SQUEEZED 009.37 4K SD-92 .COM "SUPER DIRECTORY". GENERATES SORTED DIR 009.38 12K SD-92 .DQC SQUEEZED DOCUMENTATION FOR SD-92 009.39 2K SD-92 .IQF INFO ON SD-92 009.40 2K SD9192 .DQF MODS TO SD-92 FOR NON-CONTIGUOUS DRIVES 009.41 6K TELL .ASM SRC OF UTILITY TO SHOW ADDRESSES IN CPM3 009.42 2K TELL .COM UTILITY TO SHOW ADDR'S OF CCP, BIOS, ETC 009.43 6K WCOUNT .COM GIVES LINE- & WORD-COUNT OF A FILE 009.44 6K Z80 .LIB CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER DR'S ASSEMBLER UTILITY: Z80 MNEMONICS .SQT MORE DOCUMENTATION FOR NCAT V3.2 009.31 4K NEWCAT .COM UTILITY USED TO CATALOG DISK CONTENTS 009.32 12K NSWP .COM NEWSWEEP: FILE MAINTENANCE PROG. 009.33 20K NSWP .DQC NEWSWEEP: DOCUMENTATION, SQUEEZED 009.34 14K RMAC .COM D.R.' D.R.'S MACRO ASSEMBLER 009.35 8K RSXSEED .MQC SRC CODE FOR A CPM3 "SEED" RSX 009.36 62K SD-92 .AQM SD-92 SOURCE CODE, SQUEEZED 009.37 4K SD-92 .COM "SUPER DIRECTORY". GENERATES SORTED DIR 009.38 12K SD-92 .DQC SQUEEZED DOCUMENTATION FOR SD-92 009.39 2K SD-92 .IQF INFO ON SD-92 009.40 2K SD9192 .DQF MODS TO SD-92 FOR NON-CONTIGUOUS DRIVES 009.41 6K TELL .ASM SRC OF UTILITY TO SHOW ADDRESSES IN CPM3 009.42 2K TELL .COM UTILITY TO SHOW ADDR'S OF CCP, BIOS, ETC 009.43 6K WCOUNT .COM GIVES LINE- & WORD-COUNT OF A FILE 009.44 6K Z80 .LIB CP/M FILE-PROPRIETARY, MUST BE SUPPLIED BY USER DR'S ASSEMBLER UTILITY: Z80 MNEMONICS OCK BOARD .TXT DIRECTORY OF THIS DISK 006.23 200K GLOBALS .DAT MICRO MUMPS VERSION 4.02 - GLOBALS DATA '