IMD 1.16: 1/06/2007 13:34:26 FOGCPM.203 B29-C128COMv B29-EXECCOMvB29-OS1 COMv !"#$%&'()*+,-.B29-README /0B29INST COM31234567B29INST WS 89:B29V304 WS ;<=>?@ABCDEFGHIJB29V304 WS {KLMNOPQRSTUVWXYZ--FOGCPM203-03-09 89 C-128 DOC[SODU87 DOCY\]^_`abcdefgSODU DOC!hijklSODU-KP COMWmnopqrstuvwSODU-MD3COMWxyz{|}~SODU-OS COMWSODU-OS INFKLEAN TXTKLEAN COMrKLEAN PASZ-CPM203 DOCNosey Aren't YOU ? Version 3.04 Copyright 1985 by Gary Conway IRV OFF->G0G0$IRV ON->G4>$STP ON->$STP OFF-> $RC->$GRC->$LP->8LS->CLS->$PICA->$ELITE->4$COMPR->15$CLOCK->CURSOR-> x=D yNo!9";1\:2:2)9:2:2: 213Co:*5͖0>2:!";";: :*9:* !# ~|oy„2:*9:*9: A2:͇«ó2: ::_::;0::; :&:0_  2:>2;͗:i ]/.ͪ17)97>2;7)97 +Q A̸ B/CxDE"EFXHILM̤NPXʬ7RHSG#T9%Uk%V*W8,Y`-?/ ̜. ̜.(͈0 (> ͏7 )97͗:   !+| 2: ::_>2?> 222222!";>2:*M;";!"M;*K;~2m3#~2l3>2:J2*;"M;2:!";> 222222>2:*K;~2m3#~2l3*M;";!"M;J2*;"M;C  Tagged Files= K$  r!]"K;>0232323$~O-#/:3w#:3w#:3w-!3~0€#~0€#~0€͈0 No Files . . . !]"K;::0ڦ-_ʰòO;|ʲ+͈0 That drive is not on line today BUB Hit < RETURN > >+͈0< Welcome from Infinity Design Concepts > ͈0  ͈0 :3͏:3͏:3͏͈0 Files (Current Selected User) ͈0Drive ::A͏:?«>*͏û>0͏û&::ʣo$ͅ!;A7!;A͈0  3*K;~$̈́ - - Louisville, Kentucky - - By Gary Conway Universal B29 Vers. 3.04 (c) 1985,86 A + Retag Files Q + Unsqueeze Tagged B - Back One File H - Hex Dump to Screen C - Copy Single File R + Rename File D - Delete Current File S - Space on Disk E + Erase Tagged Files T + Tag Files F - Find File U + Untag Files L - Log New Drive/User V - View ASCII File on Screen M + Mass File Copy W + Wildcard Tag Files N + Move Tagged Files Y + Set File Attributes P + Print Tagged w/pg. ? - THIS MENU X - Exit Outta Here cr,sp - Forward One File $!$~-t #~- #~- #~- +͈0 You have been playing where you shouldn't You now need a new copy of B29 ì7a{_͈0 USQ to Drive/User -> :ʜ.:(;͇œ.:*;2:! "!L ͪ 6#\44@ͨ  \8 !;' - ͈0 Unsqueezing -> ͈̈́0 to :);͏&:*;ʴ oͺ$ù >0͏͈0:(S;~ >)͏:(;2R;ͷ62^;2r;R;R8< !K?4ͯ w# y R Kͣ1by2S R > 2S 3͈̈́0 - Not a Squeezed File - !PK"I;*I;"I;ͭ 8 Z ~ ͏~.ʓ #~ Z;#~ ͏~ ˜  R;    R;?4::_ ::_  R;R;?4::_ "w;"y;!9" 6 v0 >2s;2v;6 "{;*w;G w#ž T 6 "};0 u >*y;";|ʥ 6 s#r#6 s#r#*;+z 1>*w;*{;!9" :v; =2v;:u; >==2v;:u;2u;:t;O:s; G ž O>=2s;yO*y; ##^#Vz y2t;z>- {/|}G ž G ž go*;*;0 [ ~#";:;ʤ !C";";— ͒(:;ʗ *;0 l ";*;0 G >!C";";!G";!"3*K;"M;!]"K;~ ~# $*K; >*w͈0 Retagging --> ̈́*K;^#~Ď*M;"K;3ÄÜ.*K;"K;3*K;]}B|W"K;*K;~2̈́3*;"K;~mI*K;"K;\44͈0 Copy to Filespec ->  :ʜ.k:*;2::(;2R;͇œ.:-;͋!-;S; ͖072^;2r;͈0  Copying --> ͈̈́0 to i!S;ͯm4Ü.:!-; > a!(;>a:0;@::AڬPQҬ2);@2(;: ʹ::ʌ;ʌ ʌ0ڹ6ҹ2,;&2*;>12+;:0ڹ:ҹ2+;02*;: ::2(;@2);::2*;: !" ;"";!#~:Y;Y.] * ;|!,;#~ . 5;#~ ::2(;@2);:0F7F2,;&2*;>12+;:2,;02*;>02+;" ;"";+#wb:);͏&:*;ʀoͺ$Å>0͏>:͏*K;S; ~# —2r;2^;:(;2R;+#~ ͏ ³7#~͏  !~ w#!Ö0  *#:e2e\\7!m>  a4͈0 New Name or * ->  :ʜ.:*M)!-;~ʜ.m͖0!5;~ʱu͖0ü> 2u2v2w2l2x2l*K;m ͖0\Ü.͈0 That filename already exists! Ü. *#:e2e\\~͏#Aɯ2;*K;"M;͈0 Old name: :ʜ.!͖0͈0 New name: :ʜ.I-!S-. ͖0!. <!S- <!]"K;$~R- #~_ ?*K;~':; ͈0 -No Matches-  >2;4)2ll”͈0 Renaming -> ͈̈́0 to ̓!m ~͏#y7 k\*K;m ͖03!m A͈0 Already Exists, Passing! ͈0 .Invalid Syntax. Try again W!.m ͖0 ]!m~? w# ";";x2:~?2*ʐ.; #>#*;~*g?ʀ#~*?#~?*#~ _#~ {{~{#~?ʊ#~#~.; #~.™*;Yͣ1";ͣ1*;A͖0;>2:͈0 Move Tagged Files to New User Area. Enter USER NUMBER (ONLY) --> :ʜ.3!"!<ͪ6#͈0 Moving -> 4:\@͏::u!oͺ$z>0͏ͅ!]͈ͯ0 To User &:*;ʢoͺ$ç>0͏:*;2: \ ͈0 Dest. File Exists, Cont? (y/n) ->  Y ͈0 (Aborting)͑4:\2; ::2\\ʇ! W\ ͖0:;2\ !\R;͖0R;<R87!\R; ͖0:j2jR;!h::2:*;"M;*M;"K;Ü.>2:͈0 Erase Tagged Files ? (y/n)  Yœ. 3!{"ͪ>2:*K;"M;I-͈0 Find What File -> l,3:;*K;~0ďC#~0ďC#~͏7C::A͏*K;~ >1͏~&C0͏ͅC*K; ~2;:;͏ #y7 Cͅ*K;~͏Cͅ#A͟$C>.͏> ͏:2+4+ͨ *#ʜ.+!";!3*;|͜}͜";CG Zw͜C#}ʵŠCÊ͈0 ~# >.͏}:+=2+g:2+͈0 [ CR - Next Screen A - Abort SPACE - Next Line ]  Aʉ g Q>2+g͈04͈0 End of File . . .Hit < RETURN > . +Ä_ͯͯ һ0ý7͏\!"";";2l32m3! """"͈0 New drive/user/mask ?  :ʜ.2::);A2:͇::O X{_zWK% ::_:*;2:_ >2?:*Œ>2?2j]/.ͪ1!]"K;$~ʛ~!";";";>2l32m3*K;~$ñ+͈0  No Files on <::A͏:j ::&oͺ$%>0͏%>*͏͈0:> Dad !!!! New drive/user/mask ?  :2:2j*͈0 Verify ? [ ]ʁ ͏Yž2:>2:*K;"M;͈0 Copy Tagged Files to Drive/User -->  :ʜ.k:(;2:͇œ.:*;2:!"!ͪ6#@4:\2::(;2R;͈͋0 Copying --> ͈̈́0 to ig4 7?U͈0 ]=>> Copying A B O R T E D <<=[ ͈0 Not to Worry Though, Last Copy is Complete!!"::_ *M;"K;!";";>2l32m3Ü.ä͈0 How Many Copies [99 max] --> !:ʜ.,:::0! W:0o";2:͈0 Select Printer Pitch: [0] No String [1] 10cpi [2] 12cpi [3] 17cpi Select [ ]ʱ͏ 0123Ü.!"!!"!!"!ͅ!>2:H::-*;+";|ʜ.!"!(ͪ6#@̈́!";o3:Q;4 ͨ *#ʜ.+!"8;2+G ˜2ʘ ʭ: j!*;#";h:_:+ʐ <2+4!Ø!";:+8<2+Ã>2+v͐ Ã͈0 Now Printing --> ͈0 - Any Key to Abort - *;}QN!!7b>W*;ͣ1+*;#";?!-N;> !;!<=\{/_z/Wm  7?ڈ!"!ͅ!͐   3> -PRINT A B O R T E D-$:2+4ͨ *#ʜ.+ w!4!!";!4!*;E!";?!G !wWN!> j!#}<  ?! ?!?!?!~#\ ^ >.j!}P :+=2+:2+ "͐ 4!4!w!4!!j!"$"$! "!ͅ!*8;#"8;ͺ$4!> j!!"$"$ Page $!!"!ͅ!*K;###~ j! >.j!*K; #~j! 4!4!4!!!"!ͅ!:+.!=2+4!!͐ >> j!> j!> j!TN!UN!zW!z[!0:f!j!_!!~$j!#z!*!~$j!#È! End of File $ Filename = $ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F$ 7?" !"!ͅ!4!͐ 3Ü.*K;"M;͈0 Delete (y/n)?  Yp"3Ü. {"*K;6 ͈0 Deleting -> ̈́4*#:e"76492\<">2:8  ͈0 (File is R/O) Delete (y/n)?  Y #7*#:e2e\\ç"\ }2: ͈0 Which Drive ?  2$A2;͇G# :;_:;$::0ڽ#:;_.!~w+¨# ¢#*":;#"@;!":;*:ԕ$+|# ##*:;͈0 Block Size = ::͜͟$͈0 Total Space = *D;}-$ͺ$2$>0͏͟$::W":;3$ *:;*D;ͣ1ͺ$͈0K Bytes Unused = *:;ͺ$͟$͋$33Ä::_*:;#":;͈0 KBytes Used on *: = $$$$$$/ "F;$*F;y1$xy͏y͏ͤ0*:#":*:}lg":)%<%_*:ͣ1">;::<2:W"D;*K;~*ʜ.6*\%*K;^#~ĎÜ.͈0 ͈̈́0 *K;~*}%#œ%6 \%#ʜ%>2:*K;^#~Ď>2:Ü.LBR*K; !%# ´%2;*;@"I;";";!~2;%:;=2;&!` ~&#&~ Ą&+ %%͒&>"aͥ&2;7)97 S̟&X|&Vc*HZ*P)E`)A(?̥&/̥& ( (B'(&>2;Ü.͒&"&Ö0*I;"I;2G#)+͈0 [- Library Sweep Mode -] File : C:\@͏ͅ*K;͈ͯ0 V - View File. H - Hex Dump File. P - Print File. E - Extract File. A - Extract ALL Files. S - Space on Disk. X - Exit to NORMAL Mode. ? - This Menu. CR - Forward One File. B - Back One File. 3(*;*;0 ("(3*&"(*;~*(";3(3*;"(3*;A7A##^#V|^(h(Cͺ$͟$͈0 0 K!{_j)))))*; N#~):;*:|ʵ(+":2;|ʮ(<>2;<*; ^#V#":͈0 Extract ALL Files. (y/n) ?  Y(N)(8):)2O;*;":*;";~/)r)*;)*:";)͈0 Extract to dr/usr -> ḱ(8):)2O;\4:(;2R;2:͇) ::_:*;2:͈0 Extracting 6(͈0 to i*; S;͖0ͷ(ͳ**́4:O;)+33(ͷ(́(H6(*K;*;+++"K; "K;!3* ͳ**w*:2+:Q;^) (Library File) : $ͷ(́(ͪ**w*J*a)J*:Q;+:Q;a)!;' ʚ*2;7ͨ *#*ͷ(!G Ý*! "+"l" "+:2+4ͨ *#*; ~2}#~2~2!\*;v3o3:Q;Iͪ*ʜ.ͧ%+{+͈0 [ CR - Next Screen A - Abort SPACE - Next Line ]  A+ + r+> ͏͊+N+͈0N+:+G3͊+‚+G ²+ʲ+W ¨+xz͏z Š+͈0 End of File . .Hit . +3Ä !;' ,7*#ͨ !G ,! "+"l" "!~4,.2,##,>>2:*K;"M;I-͈0 Tag using any CP/M wildcards ->  !~9-::ʳ, ,ʳ,͈0 *=* Invalid Command Line *=* 9-!S- 3!]"K;$*K;~9-R- ,#~_ ?,,,*K;~,::~*,͈0 Tagging --> ̈́*K;6*^#~Ď,*M;"K;::Ü.!S- >?a $͈0 Enter one-> R/O R/W SYS DIR ->  :ʜ.!O."!-ͪ6#@4*#:!eR-#S-D.Ü.:W-Oœ.~w*K; w.~w*K; w.~w*K; w.~w*K; w͈0 ͈̈́0 Setting To -> >[͏!A>]͏\\!"*M;"K;!";";Ü.I-!]>?a! #~:ʋ.;ʋ. z.#~ ] >:;3$*K;~ʺ.ʤ.̈́3!]"K;~ʤ.ð.!]"K;*K;6 #6 #~/6 w2;*K;~N#w#q#:;w*K;> a$~.92/:39;/:39P/:3<23>023:39P/:3<23>023:3<23 }2:͟0h.y/!]>?a!]; ͖0::2\!":!^"I;:: _:?°/ \//\/! W//~*I;͖0*I;"I;*:#"::?0 0<_ë/*:|®06# %0ɷ|g}o*.>2;";:^#":^#":~#2:~#2:^#":^#":^"::͖0~#͏È0~#–0::50z002:*:#":!^":!":*:-0":}00!]"K;*I;++";2>a*:#}o|g":!":":- x1":":":~GB1# x(1À1Ҁ1>2:Fwx# xJ1*:|/W}/_*:Ҁ1#":*:*:{ozg":&1*:#":":*:}|0*:*:1}o|g::$2:!]"K;$!";*K;~22ʺ1~1*K; 1# 1 2*K;~2m3#~2l3D2*K;~1*K;192ú1!]"K;*K;>a*K;"M;:m3^2!o>W";!:l3w2:m3w2b3ô2:l3g*:: 3$3ͣ1|$3$3!";"b3";"g/ "F;23*F;y1L3xyYS3YS3*:#":s*M;60*K; 3ʚ3O~¢3#3>Ü3>2Q;{3 HEX-DUMP TABLE RELRQLCOMCQMOBJOQJHEXHQXDTADQAOVROQROVLOQLDBFDQFDATDQT001͈0  $Q44?4647]*K;  ~# +4::2\*K;~_2: !] > a!S;> a::2R; 7?4*#87ͷ6R;R8<7!"$;::®4͈0 with CRC.!;"I;>2;*I; ::_2;:;<2;͒(5:;5*I; "I;:;@4!;"I;;:;%5:;2;5 ::_R;87*I; "I;:;=2;:;h5:;5:;%5!; ::̥5î4 ::_R;!8<7::5x*$;~#oo>5>5g))))))_T x®5͈0 Verifying ..*$;"&;::::2:2:!R;\ ͖07::_ \8<7>25ͮ4P6:;W!;ͥ5"&;P6/6:;:;2;*$;*&;0 ʘ6͈0CRC error, better check file ! ä6͈0File ok.::::2:2:25 >2^;2r;R;ʣ7R;:[;ң7͈0 File Exists on Destination and is R/O . . Copy Anyway ? (y/n) -->  Ya7͈0 A B O R T I N G Copy ! ͈0 Copy Continuing . . . R;:[;2[;R;R;R; :1_ *;  >ɯ!ha ×: :\_:R;::_::\!R; #~G 887 ERROR :That file does not exist on source disk! $ ERROR :No directory space on destination! $ ERROR :Not enough space left on destination disk! $ ERROR : File is R/O or Write protect tab on dest.$ ERROR : You don't want to copy to the same drive and user!$>">2H;> $_"/9{ w9!w9"|9#|9a9>Á99m9_>2H;{Á9m9m92;> $2;"ʄ9> $2;"ʔ9> $2;"ʤ9> $2;"ʴ9> $2;"9> ;!;0w#0w# 9͡:: :;͏:;͏>:͏:;͏:;͏:H;t:e:: :;͏:;͏>/͏:;͏:;͏>/͏:;͏:;͏͗:: : =8> $=8K $ am$ pm$> >L͈0C4ʤ9> $2;"ʴ9> $2;"9> ;!;0w#0w# 9͡:: :;͏:;͏>:͏:;͏:;͏:H;t:e:: :;͏:;͏>/͏:;͏:;͏͗:: : \!R; #~G 887 ERROR :That file does not exist on source disk! $ ERROR :No directory space on destination! $ ERROR :Not enough space left on destination disk! $ ERROR : File is R/O or Write protect tab on dest.$ ERROR : You don't Nosey Aren't YOU ? Version 3.04 Copyright 1985 by Gary Conway IRV OFF->k$IRV ON->j$STP ON->$STP OFF-> $RC->$GRC->$LP->8LS->CLS->$PICA->$ELITE->$COMPR->$CLOCK->CURSOR-> x=D yNo!9";1\:2:2)9:2:2: 213Co:*5͖0>2:!";";: :*9:* !# ~|oy„2:*9:*9: A2:͇«ó2: ::_::;0::; :&:0_  2:>2;͗:i ]/.ͪ17)97>2;7)97 +Q A̸ B/CxDE"EFXHILM̤NPXʬ7RHSG#T9%Uk%V*W8,Y`-?/ ̜. ̜.(͈0 (> ͏7 )97͗:   !+| 2: ::_>2?> 222222!";>2:*M;";!"M;*K;~2m3#~2l3>2:J2*;"M;2:!";> 222222>2:*K;~2m3#~2l3*M;";!"M;J2*;"M;C  Tagged Files= K$  r!]"K;>0232323$~O-#/:3w#:3w#:3w-!3~0€#~0€#~0€͈0 No Files . . . !]"K;::0ڦ-_ʰòO;|ʲ+͈0 That drive is not on line today BUB Hit < RETURN > >+͈0< Welcome from Infinity Design Concepts > ͈0  ͈0 :3͏:3͏:3͏͈0 Files (Current Selected User) ͈0Drive ::A͏:?«>*͏û>0͏û&::ʣo$ͅ!;A7!;A͈0  3*K;~$̈́ - - Louisville, Kentucky - - By Gary Conway Universal B29 Vers. 3.04 (c) 1985,86 A + Retag Files Q + Unsqueeze Tagged B - Back One File H - Hex Dump to Screen C - Copy Single File R + Rename File D - Delete Current File S - Space on Disk E + Erase Tagged Files T + Tag Files F - Find File U + Untag Files L - Log New Drive/User V - View ASCII File on Screen M + Mass File Copy W + Wildcard Tag Files N + Move Tagged Files Y + Set File Attributes P + Print Tagged w/pg. ? - THIS MENU X - Exit Outta Here cr,sp - Forward One File $!$~-t #~- #~- #~- +͈0 You have been playing where you shouldn't You now need a new copy of B29 ì7a{_͈0 USQ to Drive/User -> :ʜ.:(;͇œ.:*;2:! "!L ͪ 6#\44@ͨ  \8 !;' - ͈0 Unsqueezing -> ͈̈́0 to :);͏&:*;ʴ oͺ$ù >0͏͈0:(S;~ >)͏:(;2R;ͷ62^;2r;R;R8< !K?4ͯ w# y R Kͣ1by2S R > 2S 3͈̈́0 - Not a Squeezed File - !PK"I;*I;"I;ͭ 8 Z ~ ͏~.ʓ #~ Z;#~ ͏~ ˜  R;    R;?4::_ ::_  R;R;?4::_ "w;"y;!9" 6 v0 >2s;2v;6 "{;*w;G w#ž T 6 "};0 u >*y;";|ʥ 6 s#r#6 s#r#*;+z 1>*w;*{;!9" :v; =2v;:u; >==2v;:u;2u;:t;O:s; G ž O>=2s;yO*y; ##^#Vz y2t;z>- {/|}G ž G ž go*;*;0 [ ~#";:;ʤ !C";";— ͒(:;ʗ *;0 l ";*;0 G >!C";";!G";!"3*K;"M;!]"K;~ ~# $*K; >*w͈0 Retagging --> ̈́*K;^#~Ď*M;"K;3ÄÜ.*K;"K;3*K;]}B|W"K;*K;~2̈́3*;"K;~mI*K;"K;\44͈0 Copy to Filespec ->  :ʜ.k:*;2::(;2R;͇œ.:-;͋!-;S; ͖072^;2r;͈0  Copying --> ͈̈́0 to i!S;ͯm4Ü.:!-; > a!(;>a:0;@::AڬPQҬ2);@2(;: ʹ::ʌ;ʌ ʌ0ڹ6ҹ2,;&2*;>12+;:0ڹ:ҹ2+;02*;: ::2(;@2);::2*;: !" ;"";!#~:Y;Y.] * ;|!,;#~ . 5;#~ ::2(;@2);:0F7F2,;&2*;>12+;:2,;02*;>02+;" ;"";+#wb:);͏&:*;ʀoͺ$Å>0͏>:͏*K;S; ~# —2r;2^;:(;2R;+#~ ͏ ³7#~͏  !~ w#!Ö0  *#:e2e\\7!m>  a4͈0 New Name or * ->  :ʜ.:*M)!-;~ʜ.m͖0!5;~ʱu͖0ü> 2u2v2w2l2x2l*K;m ͖0\Ü.͈0 That filename already exists! Ü. *#:e2e\\~͏#Aɯ2;*K;"M;͈0 Old name: :ʜ.!͖0͈0 New name: :ʜ.I-!S-. ͖0!. <!S- <!]"K;$~R- #~_ ?*K;~':; ͈0 -No Matches-  >2;4)2ll”͈0 Renaming -> ͈̈́0 to ̓!m ~͏#y7 k\*K;m ͖03!m A͈0 Already Exists, Passing! ͈0 .Invalid Syntax. Try again W!.m ͖0 ]!m~? w# ";";x2:~?2*ʐ.; #>#*;~*g?ʀ#~*?#~?*#~ _#~ {{~{#~?ʊ#~#~.; #~.™*;Yͣ1";ͣ1*;A͖0;>2:͈0 Move Tagged Files to New User Area. Enter USER NUMBER (ONLY) --> :ʜ.3!"!<ͪ6#͈0 Moving -> 4:\@͏::u!oͺ$z>0͏ͅ!]͈ͯ0 To User &:*;ʢoͺ$ç>0͏:*;2: \ ͈0 Dest. File Exists, Cont? (y/n) ->  Y ͈0 (Aborting)͑4:\2; ::2\\ʇ! W\ ͖0:;2\ !\R;͖0R;<R87!\R; ͖0:j2jR;!h::2:*;"M;*M;"K;Ü.>2:͈0 Erase Tagged Files ? (y/n)  Yœ. 3!{"ͪ>2:*K;"M;I-͈0 Find What File -> l,3:;*K;~0ďC#~0ďC#~͏7C::A͏*K;~ >1͏~&C0͏ͅC*K; ~2;:;͏ #y7 Cͅ*K;~͏Cͅ#A͟$C>.͏> ͏:2+4+ͨ *#ʜ.+!";!3*;|͜}͜";CG Zw͜C#}ʵŠCÊ͈0 ~# >.͏}:+=2+g:2+͈0 [ CR - Next Screen A - Abort SPACE - Next Line ]  Aʉ g Q>2+g͈04͈0 End of File . . .Hit < RETURN > . +Ä_ͯͯ һ0ý7͏\!"";";2l32m3! """"͈0 New drive/user/mask ?  :ʜ.2::);A2:͇::O X{_zWK% ::_:*;2:_ >2?:*Œ>2?2j]/.ͪ1!]"K;$~ʛ~!";";";>2l32m3*K;~$ñ+͈0  No Files on <::A͏:j ::&oͺ$%>0͏%>*͏͈0:> Dad !!!! New drive/user/mask ?  :2:2j*͈0 Verify ? [ ]ʁ ͏Yž2:>2:*K;"M;͈0 Copy Tagged Files to Drive/User -->  :ʜ.k:(;2:͇œ.:*;2:!"!ͪ6#@4:\2::(;2R;͈͋0 Copying --> ͈̈́0 to ig4 7?U͈0 ]=>> Copying A B O R T E D <<=[ ͈0 Not to Worry Though, Last Copy is Complete!!"::_ *M;"K;!";";>2l32m3Ü.ä͈0 How Many Copies [99 max] --> !:ʜ.,:::0! W:0o";2:͈0 Select Printer Pitch: [0] No String [1] 10cpi [2] 12cpi [3] 17cpi Select [ ]ʱ͏ 0123Ü.!"!!"!!"!ͅ!>2:H::-*;+";|ʜ.!"!(ͪ6#@̈́!";o3:Q;4 ͨ *#ʜ.+!"8;2+G ˜2ʘ ʭ: j!*;#";h:_:+ʐ <2+4!Ø!";:+8<2+Ã>2+v͐ Ã͈0 Now Printing --> ͈0 - Any Key to Abort - *;}QN!!7b>W*;ͣ1+*;#";?!-N;> !;!<=\{/_z/Wm  7?ڈ!"!ͅ!͐   3> -PRINT A B O R T E D-$:2+4ͨ *#ʜ.+ w!4!!";!4!*;E!";?!G !wWN!> j!#}<  ?! ?!?!?!~#\ ^ >.j!}P :+=2+:2+ "͐ 4!4!w!4!!j!"$"$! "!ͅ!*8;#"8;ͺ$4!> j!!"$"$ Page $!!"!ͅ!*K;###~ j! >.j!*K; #~j! 4!4!4!!!"!ͅ!:+.!=2+4!!͐ >> j!> j!> j!TN!UN!zW!z[!0:f!j!_!!~$j!#z!*!~$j!#È! End of File $ Filename = $ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F$ 7?" !"!ͅ!4!͐ 3Ü.*K;"M;͈0 Delete (y/n)?  Yp"3Ü. {"*K;6 ͈0 Deleting -> ̈́4*#:e"76492\<">2:8  ͈0 (File is R/O) Delete (y/n)?  Y #7*#:e2e\\ç"\ }2: ͈0 Which Drive ?  2$A2;͇G# :;_:;$::0ڽ#:;_.!~w+¨# ¢#*":;#"@;!":;*:ԕ$+|# ##*:;͈0 Block Size = ::͜͟$͈0 Total Space = *D;}-$ͺ$2$>0͏͟$::W":;3$ *:;*D;ͣ1ͺ$͈0K Bytes Unused = *:;ͺ$͟$͋$33Ä::_*:;#":;͈0 KBytes Used on *: = $$$$$$/ "F;$*F;y1$xy͏y͏ͤ0*:#":*:}lg":)%<%_*:ͣ1">;::<2:W"D;*K;~*ʜ.6*\%*K;^#~ĎÜ.͈0 ͈̈́0 *K;~*}%#œ%6 \%#ʜ%>2:*K;^#~Ď>2:Ü.LBR*K; !%# ´%2;*;@"I;";";!~2;%:;=2;&!` ~&#&~ Ą&+ %%͒&>"aͥ&2;7)97 S̟&X|&Vc*HZ*P)E`)A(?̥&/̥& ( (B'(&>2;Ü.͒&"&Ö0*I;"I;2G#)+͈0 [- Library Sweep Mode -] File : C:\@͏ͅ*K;͈ͯ0 V - View File. H - Hex Dump File. P - Print File. E - Extract File. A - Extract ALL Files. S - Space on Disk. X - Exit to NORMAL Mode. ? - This Menu. CR - Forward One File. B - Back One File. 3(*;*;0 ("(3*&"(*;~*(";3(3*;"(3*;A7A##^#V|^(h(Cͺ$͟$͈0 0 K!{_j)))))*; N#~):;*:|ʵ(+":2;|ʮ(<>2;<*; ^#V#":͈0 Extract ALL Files. (y/n) ?  Y(N)(8):)2O;*;":*;";~/)r)*;)*:";)͈0 Extract to dr/usr -> ḱ(8):)2O;\4:(;2R;2:͇) ::_:*;2:͈0 Extracting 6(͈0 to i*; S;͖0ͷ(ͳ**́4:O;)+33(ͷ(́(H6(*K;*;+++"K; "K;!3* ͳ**w*:2+:Q;^) (Library File) : $ͷ(́(ͪ**w*J*a)J*:Q;+:Q;a)!;' ʚ*2;7ͨ *#*ͷ(!G Ý*! "+"l" "+:2+4ͨ *#*; ~2}#~2~2!\*;v3o3:Q;Iͪ*ʜ.ͧ%+{+͈0 [ CR - Next Screen A - Abort SPACE - Next Line ]  A+ + r+> ͏͊+N+͈0N+:+G3͊+‚+G ²+ʲ+W ¨+xz͏z Š+͈0 End of File . .Hit . +3Ä !;' ,7*#ͨ !G ,! "+"l" "!~4,.2,##,>>2:*K;"M;I-͈0 Tag using any CP/M wildcards ->  !~9-::ʳ, ,ʳ,͈0 *=* Invalid Command Line *=* 9-!S- 3!]"K;$*K;~9-R- ,#~_ ?,,,*K;~,::~*,͈0 Tagging --> ̈́*K;6*^#~Ď,*M;"K;::Ü.!S- >?a $͈0 Enter one-> R/O R/W SYS DIR ->  :ʜ.!O."!-ͪ6#@4*#:!eR-#S-D.Ü.:W-Oœ.~w*K; w.~w*K; w.~w*K; w.~w*K; w͈0 ͈̈́0 Setting To -> >[͏!A>]͏\\!"*M;"K;!";";Ü.I-!]>?a! #~:ʋ.;ʋ. z.#~ ] >:;3$*K;~ʺ.ʤ.̈́3!]"K;~ʤ.ð.!]"K;*K;6 #6 #~/6 w2;*K;~N#w#q#:;w*K;> a$~.92/:39;/:39P/:3<23>023:39P/:3<23>023:3<23 }2:͟0h.y/!]>?a!]; ͖0::2\!":!^"I;:: _:?°/ \//\/! W//~*I;͖0*I;"I;*:#"::?0 0<_ë/*:|®06# %0ɷ|g}o*.>2;";:^#":^#":~#2:~#2:^#":^#":^"::͖0~#͏È0~#–0::50z002:*:#":!^":!":*:-0":}00!]"K;*I;++";2>a*:#}o|g":!":":- x1":":":~GB1# x(1À1Ҁ1>2:Fwx# xJ1*:|/W}/_*:Ҁ1#":*:*:{ozg":&1*:#":":*:}|0*:*:1}o|g::$2:!]"K;$!";*K;~22ʺ1~1*K; 1# 1 2*K;~2m3#~2l3D2*K;~1*K;192ú1!]"K;*K;>a*K;"M;:m3^2!o>W";!:l3w2:m3w2b3ô2:l3g*:: 3$3ͣ1|$3$3!";"b3";"g/ "F;23*F;y1L3xyYS3YS3*:#":s*M;60*K; 3ʚ3O~¢3#3>Ü3>2Q;{3 HEX-DUMP TABLE RELRQLCOMCQMOBJOQJHEXHQXDTADQAOVROQROVLOQLDBFDQFDATDQT001͈0  $Q44?4647]*K;  ~# +4::2\*K;~_2: !] > a!S;> a::2R; 7?4*#87ͷ6R;R8<7!"$;::®4͈0 with CRC.!;"I;>2;*I; ::_2;:;<2;͒(5:;5*I; "I;:;@ 4!;"I;;:;%5:;2;5 ::_R;87*I; "I;:;=2;:;h5:;5:;%5!; ::̥5î4 ::_R;!8<7::5x*$;~#oo>5>5g))))))_T x®5͈0 Verifying ..*$;"&;::::2:2:!R;\ ͖07::_ \8<7>25ͮ4P6:;W!;ͥ5"&;P6/6:;:;2;*$;*&;0 ʘ6͈0CRC error, better check file ! ä6͈0File ok.::::2:2:25 >2^;2r;R;ʣ7R;:[;ң7͈0 File Exists on Destination and is R/O . . Copy Anyway ? (y/n) -->  Ya7͈0 A B O R T I N G Copy ! ͈0 Copy Continuing . . . R;:[;2[;R;R;R; :1_ *;  >ɯ!ha ×: :\_:R;::_::\!R; #~G 887 ERROR :That file does not exist on source disk! $ ERROR :No directory space on destination! $ ERROR :Not enough space left on destination disk! $ ERROR : File is R/O or Write protect tab on dest.$ ERROR : You don't want to copy to the same drive and user!$>">2H;> $_"/9{ w9!w9"|9#|9a9>Á99m9_>2H;{Á9m9m92;> $2;"ʄ9> $2;"ʔ9> $2;"ʤ9> $2;"ʴ9> $2;"9> ;!;0w#0w# 9͡:: :;͏:;͏>:͏:;͏:;͏:H;t:e:: :;͏:;͏>/͏:;͏:;͏>/͏:;͏:;͏͗:: : =8> $=8K $ am$ pm$> >L͈0C4ʤ9> $2;"ʴ9> $2;"9> ;!;0w#0w# 9͡:: :;͏:;͏>:͏:;͏:;͏:H;t:e:: :;͏:;͏>/͏:;͏:;͏͗:: : \!R; #~G 887 ERROR :That file does not exist on source disk! $ ERROR :No directory space on destination! $ ERROR :Not enough space left on destination disk! $ ERROR : File is R/O or Write protect tab on dest.$ ERROR : You don't Nosey Aren't YOU ? Version 3.04 Copyright 1985 by Gary Conway IRV OFF->$IRV ON->$STP ON->$STP OFF-> $RC->$GRC->$LP->8LS->CLS->$PICA->$ELITE->$COMPR->$CLOCK->CURSOR-> x=D yNo!9";1\:2:2)9:2:2: 213Co:*5͖0>2:!";";: :*9:* !# ~|oy„2:*9:*9: A2:͇«ó2: ::_::;0::; :&:0_  2:>2;͗:i ]/.ͪ17)97>2;7)97 +Q A̸ B/CxDE"EFXHILM̤NPXʬ7RHSG#T9%Uk%V*W8,Y`-?/ ̜. ̜.(͈0 (> ͏7 )97͗:   !+| 2: ::_>2?> 222222!";>2:*M;";!"M;*K;~2m3#~2l3>2:J2*;"M;2:!";> 222222>2:*K;~2m3#~2l3*M;";!"M;J2*;"M;C  Tagged Files= K$  r!]"K;>0232323$~O-#/:3w#:3w#:3w-!3~0€#~0€#~0€͈0 No Files . . . !]"K;::0ڦ-_ʰòO;|ʲ+͈0 That drive is not on line today BUB Hit < RETURN > >+͈0< Welcome from Infinity Design Concepts > ͈0  ͈0 :3͏:3͏:3͏͈0 Files (Current Selected User) ͈0Drive ::A͏:?«>*͏û>0͏û&::ʣo$ͅ!;A7!;A͈0  3*K;~$̈́ - - Louisville, Kentucky - - By Gary Conway Universal B29 Vers. 3.04 (c) 1985,86 A + Retag Files Q + Unsqueeze Tagged B - Back One File H - Hex Dump to Screen C - Copy Single File R + Rename File D - Delete Current File S - Space on Disk E + Erase Tagged Files T + Tag Files F - Find File U + Untag Files L - Log New Drive/User V - View ASCII File on Screen M + Mass File Copy W + Wildcard Tag Files N + Move Tagged Files Y + Set File Attributes P + Print Tagged w/pg. ? - THIS MENU X - Exit Outta Here cr,sp - Forward One File $!$~-t #~- #~- #~- +͈0 You have been playing where you shouldn't You now need a new copy of B29 ì7a{_͈0 USQ to Drive/User -> :ʜ.:(;͇œ.:*;2:! "!L ͪ 6#\44@ͨ  \8 !;' - ͈0 Unsqueezing -> ͈̈́0 to :);͏&:*;ʴ oͺ$ù >0͏͈0:(S;~ >)͏:(;2R;ͷ62^;2r;R;R8< !K?4ͯ w# y R Kͣ1by2S R > 2S 3͈̈́0 - Not a Squeezed File - !PK"I;*I;"I;ͭ 8 Z ~ ͏~.ʓ #~ Z;#~ ͏~ ˜  R;    R;?4::_ ::_  R;R;?4::_ "w;"y;!9" 6 v0 >2s;2v;6 "{;*w;G w#ž T 6 "};0 u >*y;";|ʥ 6 s#r#6 s#r#*;+z 1>*w;*{;!9" :v; =2v;:u; >==2v;:u;2u;:t;O:s; G ž O> =2s;yO*y; ##^#Vz y2t;z>- {/|}G ž G ž go*;*;0 [ ~#";:;ʤ !C";";— ͒(:;ʗ *;0 l ";*;0 G >!C";";!G";!"3*K;"M;!]"K;~ ~# $*K; >*w͈0 Retagging --> ̈́*K;^#~Ď*M;"K;3ÄÜ.*K;"K;3*K;]}B|W"K;*K;~2̈́3*;"K;~mI*K;"K;\44͈0 Copy to Filespec ->  :ʜ.k:*;2::(;2R;͇œ.:-;͋!-;S; ͖072^;2r;͈0  Copying --> ͈̈́0 to i!S;ͯm4Ü.:!-; > a!(;>a:0;@::AڬPQҬ2);@2(;: ʹ::ʌ;ʌ ʌ0ڹ6ҹ2,;&2*;>12+;:0ڹ:ҹ2+;02*;: ::2(;@2);::2*;: !" ;"";!#~:Y;Y.] * ;|!,;#~ . 5;#~ ::2(;@2);:0F7F2,;&2*;>12+;:2,;02*;>02+;" ;"";+#wb:);͏&:*;ʀoͺ$Å>0͏>:͏*K;S; ~# —2r;2^;:(;2R;+#~ ͏ ³7#~͏  !~ w#!Ö0  *#:e2e\\7!m>  a4͈0 New Name or * ->  :ʜ.:*M)!-;~ʜ.m͖0!5;~ʱu͖0ü> 2u2v2w2l2x2l*K;m ͖0\Ü.͈0 That filename already exists! Ü. *#:e2e\\~͏#Aɯ2;*K;"M;͈0 Old name: :ʜ.!͖0͈0 New name: :ʜ.I-!S-. ͖0!. <!S- <!]"K;$~R- #~_ ?*K;~':; ͈0 -No Matches-  >2;4)2ll”͈0 Renaming -> ͈̈́0 to ̓!m ~͏#y7 k\*K;m ͖03!m A͈0 Already Exists, Passing! ͈0 .Invalid Syntax. Try again W!.m ͖0 ]!m~? w# ";";x2:~?2*ʐ.; #>#*;~*g?ʀ#~*?#~?*#~ _#~ {{~{#~?ʊ#~#~.; #~.™*;Yͣ1";ͣ1*;A͖0;>2:͈0 Move Tagged Files to New User Area. Enter USER NUMBER (ONLY) --> :ʜ.3!"!<ͪ6#͈0 Moving -> 4:\@͏::u!oͺ$z>0͏ͅ!]͈ͯ0 To User &:*;ʢoͺ$ç>0͏:*;2: \ ͈0 Dest. File Exists, Cont? (y/n) ->  Y ͈0 (Aborting)͑4:\2; ::2\\ʇ! W\ ͖0:;2\ !\R;͖0R;<R87!\R; ͖0:j2jR;!h::2:*;"M;*M;"K;Ü.>2:͈0 Erase Tagged Files ? (y/n)  Yœ. 3!{"ͪ>2:*K;"M;I-͈0 Find What File -> l,3:;*K;~0ďC#~0ďC#~͏7C::A͏*K;~ >1͏~&C0͏ͅC*K; ~2;:;͏ #y7 Cͅ*K;~͏Cͅ#A͟$C>.͏> ͏:2+4+ͨ *#ʜ.+!";!3*;|͜}͜";CG Zw͜C#}ʵŠCÊ͈0 ~# >.͏}:+=2+g:2+͈0 [ CR - Next Screen A - Abort SPACE - Next Line ]  Aʉ g Q>2+g͈04͈0 End of File . . .Hit < RETURN > . +Ä_ͯͯ һ0ý7͏\!"";";2l32m3! """"͈0 New drive/user/mask ?  :ʜ.2::);A2:͇::O X{_zWK% ::_:*;2:_ >2?:*Œ>2?2j]/.ͪ1!]"K;$~ʛ~!";";";>2l32m3*K;~$ñ+͈0  No Files on <::A͏:j ::&oͺ$%>0͏%>*͏͈0:> Dad !!!! New drive/user/mask ?  :2:2j*͈0 Verify ? [ ]ʁ ͏Yž2:>2:*K;"M;͈0 Copy Tagged Files to Drive/User -->  :ʜ.k:(;2:͇œ.:*;2:!"!ͪ6#@4:\2::(;2R;͈͋0 Copying --> ͈̈́0 to ig4 7?U͈0 ]=>> Copying A B O R T E D <<=[ ͈0 Not to Worry Though, Last Copy is Complete!!"::_ *M;"K;!";";>2l32m3Ü.ä͈0 How Many Copies [99 max] --> !:ʜ.,:::0! W:0o";2:͈0 Select Printer Pitch: [0] No String [1] 10cpi [2] 12cpi [3] 17cpi Select [ ]ʱ͏ 0123Ü.!"!!"!!"!ͅ!>2:H::-*;+";|ʜ.!"!(ͪ6#@̈́!";o3:Q;4 ͨ *#ʜ.+!"8;2+G ˜2ʘ ʭ: j!*;#";h:_:+ʐ <2+4!Ø!";:+8<2+Ã>2+v͐ Ã͈0 Now Printing --> ͈0 - Any Key to Abort - *;}QN!!7b>W*;ͣ1+*;#";?!-N;> !;!<=\{/_z/Wm  7?ڈ!"!ͅ!͐   3> -PRINT A B O R T E D-$:2+4ͨ *#ʜ.+ w!4!!";!4!*;E!";?!G !wWN!> j!#}<  ?! ?!?!?!~#\ ^ >.j!}P :+=2+:2+ "͐ 4!4!w!4!!j!"$"$! "!ͅ!*8;#"8;ͺ$4!> j!!"$"$ Page $!!"!ͅ!*K;###~ j! >.j!*K; #~ j! 4!4!4!!!"!ͅ!:+.!=2+4!!͐ >> j!> j!> j!TN!UN!zW!z[!0:f!j!_!!~$j!#z!*!~$j!#È! End of File $ Filename = $ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F$ 7?" !"!ͅ!4!͐ 3Ü.*K;"M;͈0 Delete (y/n)?  Yp"3Ü. {"*K;6 ͈0 Deleting -> ̈́4*#:e"76492\<">2:8  ͈0 (File is R/O) Delete (y/n)?  Y #7*#:e2e\\ç"\ }2: ͈0 Which Drive ?  2$A2;͇G# :;_:;$::0ڽ#:;_.!~w+¨# ¢#*":;#"@;!":;*:ԕ$+|# ##*:;͈0 Block Size = ::͜͟$͈0 Total Space = *D;}-$ͺ$2$>0͏͟$::W":;3$ *:;*D;ͣ1ͺ$͈0K Bytes Unused = *:;ͺ$͟$͋$33Ä::_*:;#":;͈0 KBytes Used on *: = $$$$$$/ "F;$*F;y1$xy͏y͏ͤ0*:#":*:}lg":)%<%_*:ͣ1">;::<2:W"D;*K;~*ʜ.6*\%*K;^#~ĎÜ.͈0 ͈̈́0 *K;~*}%#œ%6 \%#ʜ%>2:*K;^#~Ď>2:Ü.LBR*K; !%# ´%2;*;@"I;";";!~2;%:;=2;&!` ~&#&~ Ą&+ %%͒&>"aͥ&2;7)97 S̟&X|&Vc*HZ*P)E`)A(?̥&/̥& ( (B'(&>2;Ü.͒&"&Ö0*I;"I;2G#)+͈0 [- Library Sweep Mode -] File : C:\@͏ͅ*K;͈ͯ0 V - View File. H - Hex Dump File. P - Print File. E - Extract File. A - Extract ALL Files. S - Space on Disk. X - Exit to NORMAL Mode. ? - This Menu. CR - Forward One File. B - Back One File. 3(*;*;0 ("(3*&"(*;~*(";3(3*;"(3*;A7A##^#V|^(h(Cͺ$͟$͈0 0 K!{_j)))))*; N#~):;*:|ʵ(+":2;|ʮ(<>2;<*; ^#V#":͈0 Extract ALL Files. (y/n) ?  Y(N)(8):)2O;*;":*;";~/)r)*;)*:";)͈0 Extract to dr/usr -> ḱ(8):)2O;\4:(;2R;2:͇) ::_:*;2:͈0 Extracting 6(͈0 to i*; S;͖0ͷ(ͳ**́4:O;)+33(ͷ(́(H6(*K;*;+++"K; "K;!3* ͳ**w*:2+:Q;^) (Library File) : $ͷ(́(ͪ**w*J*a)J*:Q;+:Q;a)!;' ʚ*2;7ͨ *#*ͷ(!G Ý*! "+"l" "+:2+4ͨ *#*; ~2}#~2~2!\*;v3o3:Q;Iͪ*ʜ.ͧ%+{+͈0 [ CR - Next Screen A - Abort SPACE - Next Line ]  A+ + r+> ͏͊+N+͈0N+:+G3͊+‚+G ²+ʲ+W ¨+xz͏z Š+͈0 End of File . .Hit . +3Ä !;' ,7*#ͨ !G ,! "+"l" "!~4,.2,##,>>2:*K;"M;I-͈0 Tag using any CP/M wildcards ->  !~9-::ʳ, ,ʳ,͈0 *=* Invalid Command Line *=* 9-!S- 3!]"K;$*K;~9-R- ,#~_ ?,,,*K;~,::~*,͈0 Tagging --> ̈́*K;6*^#~Ď,*M;"K;::Ü.!S- >?a $͈0 Enter one-> R/O R/W SYS DIR ->  :ʜ.!O."!-ͪ6#@4*#:!eR-#S-D.Ü.:W-Oœ.~w*K; w.~w*K; w.~w*K; w.~w*K; w͈0 ͈̈́0 Setting To -> >[͏!A>]͏\\!"*M;"K;!";";Ü.I-!]>?a! #~:ʋ.;ʋ. z.#~ ] >:;3$*K;~ʺ.ʤ.̈́3!]"K;~ʤ.ð.!]"K;*K;6 #6 #~/6 w2;*K;~N#w#q#:;w*K;> a$~.92/:39;/:39P/:3<23>023:39P/:3<23>023:3<23 }2:͟0h.y/!]>?a!]; ͖0::2\!":!^"I;:: _:?°/ \//\/! W//~*I;͖0*I;"I;*:#"::?0 0<_ë/*:|®06# %0ɷ|g}o*.>2;";:^#":^#":~#2:~#2:^#":^#":^"::͖0~#͏È0~#–0::50z002:*:#":!^":!":*:-0":}00!]"K;*I;++";2>a*:#}o|g":!":":- x1":":":~GB1# x(1À1Ҁ1>2:Fwx# xJ1*:|/W}/_*:Ҁ1#":*:*:{ozg":&1*:#":":*:}|0*:*:1}o|g::$2:!]"K;$!";*K;~22ʺ1~1*K; 1# 1 2*K;~2m3#~2l3D2*K;~1*K;192ú1!]"K;*K;>a*K;"M;:m3^2!o>W";!:l3w2:m3w2b3ô2:l3g*:: 3$3ͣ1|$3$3!";"b3";"g/ "F;23*F;y1L3xyYS3YS3*:#":s*M;60*K; 3ʚ3O~¢3#3>Ü3>2Q;{3 HEX-DUMP TABLE RELRQLCOMCQMOBJOQJHEXHQXDTADQAOVROQROVLOQLDBFDQFDATDQT001͈0  $Q44?4647]*K;  ~# +4::2\*K;~_2: !] > a!S;> a::2R; 7?4*#87ͷ6R;R8<7!"$;::®4͈0 with CRC.!;"I;>2;*I; ::_2;:;<2;͒(5:;5*I; "I;:;@ 4!;"I;;:;%5:;2;5 ::_R;87*I; "I;:;=2;:;h5:;5:;%5!; ::̥5î4 ::_R;!8<7::5x*$;~#oo>5>5g))))))_T x®5͈0 Verifying ..*$;"&;::::2:2:!R;\ ͖07::_ \8<7>25ͮ4P6:;W!;ͥ5"&;P6/6:;:;2;*$;*&;0 ʘ6͈0CRC error, better check file ! ä6͈0File ok.::::2:2:25 >2^;2r;R;ʣ7R;:[;ң7͈0 File Exists on Destination and is R/O . . Copy Anyway ? (y/n) -->  Ya7͈0 A B O R T I N G Copy ! ͈0 Copy Continuing . . . R;:[;2[;R;R;R; :1_ *;  >ɯ!ha ×: :\_:R;::_::\!R; #~G 887 ERROR :That file does not exist on source disk! $ ERROR :No directory space on destination! $ ERROR :Not enough space left on destination disk! $ ERROR : File is R/O or Write protect tab on dest.$ ERROR : You don't want to copy to the same drive and user!$>">2H;> $_"/9{ w9!w9"|9#|9a9>Á99m9_>2H;{Á9m9m92;> $2;"ʄ9> $2;"ʔ9> $2;"ʤ9> $2;"ʴ9> $2;"9> ;!;0w#0w# 9͡:: :;͏:;͏>:͏:;͏:;͏:H;t:e:: :;͏:;͏>/͏:;͏:;͏>/͏:;͏:;͏͗:: : =8> $=8K $ am$ pm$> >L͈0C4ʤ9> $2;"ʴ9> $2;"9> ;!;0w#0w# 9͡:: :;͏:;͏>:͏:;͏:;͏:H;t:e:: :;͏:;͏>/͏:;͏:;͏͗:: : \!R; #~G 887 ERROR :That file does not exist on source disk! $ ERROR :No directory space on destination! $ ERROR :Not enough space left on destination disk! $ ERROR : File is R/O or Write protect tab on dest.$ ERROR : You don't  B29.COM Written by Gary Conway Infinity Design Concepts Lou, Ky. ******************************************************************************* This program may not be used in any commercial way whatsoever without the expressed written permission of the author. ******************************************************************************* Copyright (c) 1985,86 - I M P O R T A N T - NOTE: The KAYPRO configuration is the ONLY machine that needs the REMEMBER CURSOR POSITION, STATUS LINE PRESERVATION, CLOCK, CUSTOM CURSOR codes. These codes MUST be NULLed out with the installation program B29INST.COM for all except Kaypro 4-84 machines. NEW: Version 3.1 of B29 is the first version to support Library files. That is, there is a Library File Sweep Mode available. For more information, see B29V31.WS. It allows Print, View, Extract operations on files within libraries. NOTE: There are enough differences between B29 and Nsweep that you will not get full benefit of the program unless you read the B29Vxx.WS file. For example the Library Sweep Mode and printing multiple copies of files. These operations and how to invoke them are not obvious. ******************************************** * * *- R E A D T H E B29Vxx.WS F I L E -* * * ******************************************** There are several versions of B29 in this library. I will provide a brief description of each below and mainly the differences. You MUST make sure that the program is installed for your machine before you use it or it may crash. B29-OS1.COM - Osborne 1 configured B29-EXEC.COM - Osborne Executive configured B29-C128.COM - Commodore 128 configured Any of the above versions can be reinstalled to work on any machine For instructions on how to install B29.COM READ THE B29Vxx.WS FILE ! !9"~1 [ Which Drive has B29.COM ? -> [ ]>J͔2@2\]!u jÀ~# yjB29 COM\2h2|͔< +$ͩõ\Ϳͩ\Ϳ:P3Õ[ -WARNING- This program only works with B29 v.3.03 and higher b[ * * * File Not Found on [:Tc_[:] * * * Abort (y/n) -> [ ]>͔Yb[ B29 Installation Program Version 3.0 Written by Gary Conway Infinity Design Concepts Copyright (c) 1985,86 11/22/86 [0] .. Custom Cursor [1] .. Clear Screen Code [2] .. Inverse Video Code [3] .. Reduced Intensity Code [4] .. Status Line Preservation Code [5] .. Remember Cursor Position [6] .. Lines Per Screen [7] .. Lines Per Printed Page [8] .. Printer Strings [9] .. Clock Enable [X] .. EXIT INSTALL (with option to Abort) Change Which Parameter [ ]͔͝T0X!1v23ʮ4 5 6728ʄ9[ Â[ This Feature Works on Kaypro 4-84 and Newer Ma chines ONLY All others should disable the custom cursor Custom cursor Enable/Disable Cursor Is Currently -> :‰[EnabledÕ[Disabled[ Change ? (y/n)>͔Y•:>2>2[ Clock Enable/Disable Clock Is Currently -> :[Enabled"[Disabled[ Change ? (y/n)>͔Y•:R>2>2͝ ʂ̢ʂ ̢ʂ2#ͪ:#T[ Printer Pitch Codes Current 10 cpi Code = :]> T:]> T:][ Change (y/n) ->>͔Y¡ͧ>3T[ Enter New 10 cpi Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔Y„:2:2:2[ Current 12 cpi Code = :]> T:]> T:][ Change (y/n) ->>͔Y¹ > T> Tͧ>3T[ Enter New 12 cpi Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔Y¡:2:2:2[ Current 17 cpi Code = :]> T:]> T: ][ Change (y/n) ->>͔Y•ͧ>3T[ Enter New 17 cpi Code ->Z2> TZ2> TZ2 [ The New Codes Are ->:]> T:]> T: ][ Correct ? (y/n) >͔Y¹:2:2: 2 Õ>[ Status Line Codes Current Status Line ON Code = :]> T:]> T:][ Change (y/n) ->>͔Y ͧ>3T[ Enter New ON Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔Y :2:2:2[ Current Status Line OFF Code = :]> T:]> T:][ Change (y/n) ->>͔Y•ͧ>3T[ Enter New Status Line OFF Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔Y :2:2:2Õ[ Remember Cursor Position/ Go to Codes Current Remember Cursor Position Code = :]> T:]> T:][ Change (y/n) ->>͔YF ͧ>3T[ Enter New Remember Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔Y :2:2:2[ Current Go To Remebered Position Code = :]> T:]> T:][ Change (y/n) ->>͔Y•ͧ>3T[ Enter New Go To Remembered Position Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔YF :2:2:2Õ[ Current Clear Screen Codes = :]> T:]> T:][ Change (y/n) -> >͔Y•[ If your CLS code is 1AH or ^Z, then enter ^Z Enter Clear Screen Code -> Z2> TZ2> TZ2[ Clear Screen Codes Now Set To -> :]> T:]> T:][ Is This Correct ? ->>͔YvÕ[ Reduced Intensity Video Codes Current Reduced ON Code = :]> T:]> T:][ Change (y/n) ->>͔Yͧ>3T[ Enter New Reduced ON Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔Y®:2:2:2[ Current Reduced OFF Code = :]> T:]> T:][ Change (y/n) ->>͔Y•ͧ>3T[ Enter New Reduced OFF Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔Y:2:2:2Õ[ Current Lines Per Screen (VIEW/HEXDUMP) = :!o[ Change (y/n) -> >͔Y•[ Enter in DECIMAL Enter Lines Per Screen -> >2!>2"ͻ:#i:#2[ Lines Per Screen is Now -> :!T:"T[ Is This Correct ? ->>͔YÕ[ Inverse Video Codes Current Inverse ON Code = :]> T:]> T:][ Change (y/n) ->>͔Yͧ>3T[ Enter New Inverse ON Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔Y:2:2:2[ Current Inverse OFF Code = :]> T:]> T:][ Change (y/n) ->>͔Y•ͧ>3T[ Enter New Inverse OFF Code ->Z2> TZ2> TZ2[ The New Codes Are ->:]> T:]> T:][ Correct ? (y/n) >͔Y:2:2:2Õ[ Current Lines Per Page = :!o[ Change (y/n) -> >͔Y•[ Enter in DECIMAL Enter Lines Per Page -> >2!>2"ͻ:#Ci2:#2[ Lines Per Page is Now -> :!T:"T[ Is This Correct ? ->>͔Y2Õ[ Save Changes or Abort [s/a] -> [ ]>͔AbSʯ![ Aborting Changes.*~[NUL[ -Writing Changes To Disk- \2h2|͔<+$ͩ>*T\%1! "~T# No Disk Spaceäͩ>*T\%\v~#T[[ Number too large, Hit .>a{_ʝ:# @2#>^T:!0! }2#:"0_:#2#/ "*y1xyTyT[ESC!<=Nosey Aren't YOU ? Version 3.00 Copyright 1985 by Gary Conway IRV OFF->C0C1$IRV ON->B0B1$STP ON->B7$STP OFF->C7 $RC->B6$GRC->C6$LP->8LS->CLS->$PICA->N$ELITE->E$COMPR->Q$CLOCK->CURSOR->[NUL[ -Writing Changes To Disk- \2h2|͔<+$ͩ>*T\%1! "~T# No Disk Spaceäͩ>*T\%\v~#T[[ Number too large, Hit .>a{_ʝ:# @2#>^T:!0! }2#:"0_:#2#/ "*y1xyTB29INST.DOC Installation program for B29.COM by Gary Conway Copyright (c) 1985,86 This and all associated files are copyrighted and given freely into the public domain. They may not be used in any way for commercial purposes without the expressed written consent of the author. FIRST: Rename the B29xxx.COM to B29.COM as that is the only filename that B29INST will recognize. SECOND: If your machine has video codes that you wish to install, get them handy. If you are going to install printer strings, then you should get them as well. You are allowed to install three printer strings. The installation program suggests the three standard character pitches, but it makes no difference what the strings are because B29 simply issues them to the printer at print time. One of them could, for example, be for double wide characters. THIRD: If you are not using a Kaypro 4-84, you MUST put NULL's in for the STATUS LINE PRESERVATION, REMEMBER CURSOR POSITION codes as these codes are only used on the Kaypro when using the built-in clock. You must also disable the CUSTOM CURSOR and CLOCK. FOURTH: Run B29INST.COM. The installation program will ask which drive has the B29.COM file to be installed. It then checks to see that it is a valid version, if it is, then the installation program presents a menu. ALL of the selections must be gone through to be sure that they are properly installed for your machine. NOTE: The older versions of B29INST.COM (below 3.0) will not allow changing the strings selectively, that is, B29INST did not read B29.COM to find what the current settings are so that you could change them. The older versions had default settings built-in, but you could change them. If you wanted to change just one of the strings, you would have to set all of them to the codes you wanted because B29INST didn't know what you had set before. All of the versions of B29INST.COM are compatible otherwise. * EOF FOURTH: Run B29INST.COM. The installation program will ask which drive has the B29.COM file to be installed. It then checks to see that it is a valid version, if it is, then the installation program presents a menu. ALL of the selections must be gone through to be sure that they are properly installed for your machine. NOTE: The older versions of B29INST.COM (below 3.0) will not allow changing the strings selectively, that is, B29INST did not read B29.COM to find what the current settings are so that you could change them. The older versions had default settings built-in, but you could change them. If you wanted to change just one of the .PN .FO Page # .PC 5 .MT 3 .MB 3  ============================================================================ BBBB 222 9999 B B 2 2 9 9 B B 2 9 9 BBBB 2 99999 B B 2 9 B B 2 9 BBBB 22222 9999 ============================================================================ B29.COM Version 3.04 Written by Gary Conway Infinity Design Concepts (c) 1985,86 MEMBER : KKUG - Kentuckiana Kaypro Users Group IEEE - Institute of Electrical and Electronics Engineers, INC. PCCL - Portable Computer Club of Louisville   FORWARD Thi prograi n Newswee work-alik an mus paus her t giv credi wher credi i due Anyon wh ha use Newswee t an degre a al ha surel realize al o th wor an effor tha ha gon int th creatio o thi excellen program Mr Ran ha certainl don fin jo i th developmen o Newsweep Th layou alon an i particula th ide o taggin file fo mas operation i on o th fines features Th layou o B2 i ver simila an mus offe heart thank-yo t Dav Rand who hav neve eve spoke t an t th creator/ o SWEEP th original ɠ hav bee religou use o Newswee fo som tim an bein on wh canno leav wel enoug alone firs wante t ad rea tim cloc featur an pagebreak i printin t Newsweep Afte som tim o playing ɠ decide t writ m ow versio o swee progra addin som features Th mai feature tha hav adde ar liste below:  <1> Pagebreaks and expanded TAB's when printing files. <2> Print tagged files. <3> Printing of .COM files. <4> Prints filename on printout. <5> Printer strings. <6> Printing multiple copies. <7> Clean abort of print. <8> A HEX dump facility for viewing .COM files (DDT type Dump). <9> An easier to use Set file attribute function. <10> If the user tries to View a .COM file, it will simply give a HEX dump to the screen, the same goes for printing a .COM file <11> Real time display. <12> Moving files from one user area to another (without copying). <13> Library File Sweep Mode (View,Print,Extract).  Yo wil notic th lac o squeez facility Th reaso fo thi i quit simple A present don' kno ho t squeez files Tha i o m agend o thing t learn Whe do wil incorporat thi int th progra also Thi progra i writte wit th standar CP/ assembler An comment o suggestion wil gladl b accepte a wel a $10.0 donatio i yo enjo usin th program Thi progra i copyrighte an i give freel int th publi domain however n par o thi progra i permitte t b use i conjunctio wit an sal whatsoever withou prio writte consen fro th author.  CP/M 3.0 and MP/M B2 versio 3.x i th firs versio t b compatibl wit CP/ 3. an MP/M. Sort to Disk Option GONE ! Versio 3. ha los th sor t dis option I becam proble o man machine wit har disk t kee al o th director informatio i concurren RA͠ wit B2 it buffer an CP/͠ itself I wa almos impossibl t us o bulleti boar syste wit har driv alon wit th RA residen bulleti boar softwar BY etc ) If fo example yo hav har dis wit 100 director entries thi wil requir 32 o RA t hol th entir directory couple wit th fac tha B2 use 14ˠ an ha a 8 genera purpos buffer thi account fo 54 o 64 RA syste an coul easil clobbe CP/M I orde t mak th progra a universa a possible, I reluctantly decided to remove the sort to disk option. Send Comments To: Infinity Design Concepts Gary Conway 1052 Parkway Drive Louisville, Kentucky 40217 (502)634-0054 - OR - E-MAIL c/o The SoftStone RCP/M (FOG #24) Louisville, Kentucky (502)241-4109 Leave Message to My Attention OR to the SYSOP  ERRORS CAUGHT BY B29 1 BDO erro o X selec - Whe selectin ne drive B29 check firs t se i th driv i indee o  lin befor actuall makin th driv selection Thi i don wit BIO cal a oppose t BDOӠ cal t avoi䠠 th堠 inheren BDOӠ checkin procedure. 2COP٠ tsam drive/use -  Thi i somethin tha mos peopl  and filename would not wish to do and B29 will not allow this. 3AN٠operatio o a R/ fil - I th use trie t cop ove o delet anR/Ϡfilethuse i advised o thi conditio an i aske whethe or not to proceed with the operation. 4 Ndirector spac lef - I cop operatio i attempte t disk tha ha n director spacavailable the  user is advised of this and the copy is aborted. 5 Nspac lef o destd - I cop operatio i attempte t dr. that has no space left or if the drive runs out of space before the copy is complete, the copy is aborted. G E N E R A L 1. Upper or lower case may be used throughout the program. 2. Carriage return aborts any operation or question. 3. Any operation or prompt may be aborted by simply hitting . 4. Any attempt to VIEW,PRINT or DUMP Squeezed files, will cause the file to be unsqueezed first. 5. Viewing an .LBR file will envoke Library File Sweep Mode. Th listin belo show whic function operat o singl file an whic functions operate on severa files.  SINGLE OPERATIONS MASS OPERATIONS  1. Single file copy 1. Wildcard tag 2. Hexdump file 2. Mass copy 3. View file 3. Erase tagged files 4. Rename file 4. Move files to new user 5. Tag file 5. Print tagged files 6. Untag file 6. Unsqueeze files 7. Delete file 7. Rename files 8. Find file  ----------------- ACKNOWLEDGEMENTS: ɠ woul lik t than severa folk fo thei undyin participatio i th ever-importan beta-testin stage a wel a actin a source o idea an bouncin board fo m ow ideas woul lik t than Jerr Taylo (Mr Find-a-bu himself) an Cur Edward fo idea a wel a testin o th ol OZZY woul lik t exten heart remot thank t Stev Sander fo hi ide o puttin th installatio parameter a th star o th program whic ultimatel le t th creatio o th B29INST.CO program a wel a hi supplyin th sourc t Unsqueezin files woul als lik t expres m appreciatio t Ernes Dryde (SYSO FOG#23 fo hi ai i th implementatio o CP/͠ 3. an fo hi ai i debuggin th 3. versio also. INVOKING B29 There are several ways to call B29. A0>B29 * logs all users on the default drive A0>B29 B logs drive B in the current user A0>B29 B3 logs drive B in user 3 A0>B29 B12 logs drive B in user 12 A0>B29 B*  logs drive B all files in all users A0>B29 B7* logs drive B user 7 and displays all files in all users A0>B29 B12;*.COM logs B, user 12 and all .COM files A0>B29 B*;*.COM logs all users and all .COM files Th botto lin i tha yo ma us jus abou an comman lin tha makes sense to you. All CP/M wildcards are also valid. I a invali driv designatio i given the th defaul driv an use ar logge in Afte B2 begin executio an i ha rea an sorte th dis directory th use i aske i h wishe t writ th sorte director bac t th disk I th use choose t d this the th dis director wil b writte bac t th dis i sorte an packe fashion Th packin featur remove al delete filename fro th directory Thi i th onl poin i th progra wher th use ma writ th sorte director bac t th disk On migh as wh no d i ever tim tha yo lo i ne disk Thi wa poin o som though an discussio an th resultan decisio t offe thi onl onc wa mad i a effor t kee thi selectio i th real o option rathe tha nuisance I i no tha ofte tha on wishe t sor an pac th dis directory Onc th director i sorte t disk the ther i n wa t recove an ERAse file wit UNERA.CO o othe suc programs Also afte th dis director i sorted whe th use use th DI comman i CP/M h wil se sorte directory. Th sor forma i USE AREA FILENAME FIL EXTENSION Thi forma i no quit th sam a NSWEEP Th resul i tha al file wil b show i ascendin use area wit th filename subsorte withi eac use area Th potentia proble her i i th use log AL user an ha th sam fil i tw o mor use area an wishe t FIN th file Th FIN comman wil only find the first occurence.  --------------------  RETAG FILES  command Thi optio wil reta file tha wer previouls tagge befor an mas operation.  -------------------  FORWARD ONE FILE  command Thi comman wil mov t th nex fil i th list Carriag retur will move one file only, while the space bar will move forward continously.  -------------------  BACK ONE FILE  command Thi optio move th curso bac on fil i th directory Whe a th beginning of the directory, the cursor is returned to the last file.  -------------------  COPY SINGLE FILE  command Thi optio wil cop singl fil t an drive/user I onl th driv o driv an use code ar given the th fil i copie wit th sam name I a attemp i mad t cop t th sam driv an use a th origina file, then the copy is simply not made. Valid entries are: B B3 B12 B3: B3;MICKEY B12:MICKEY.MSE o an combinatio thereof N wildcard ar permitte here I n filenam i given the th fil i copie t th destinatio drive/use wit th filenam unchanged Th "Verify option i selected wil rerea th destinatio fil an chec th CR valu wit th valu o th origina file and report any mismatch.  -----------------  DELETE CURRENT FILE  command Thi optio wil delet th curren file I th fil ha bee se t R/O the anothe messag i give an th use i aske i h stil wishe t delet th file I h does h mus answe wit 'Y o 'y an th fil wil b deleted otherwis ther i n deletion carriag retur alon a an o th prompt wil abor th delet operation Th fil wil b delete fro th dis director a wel a fro th director i RA tha B2 uses Th fil numbe tha ha bee assigne t tha fil wil n longe b displaye o th scree an th remainin file wil no b renumbered Thi wa don purposel s tha i fil i delete an the late yo as yoursel wha yo ha jus deleted yo wil hav som ide becaus o th missin fil number. If you must renumber, just log the drive in again.  --------------------  ERASE TAGGED FILES  command Thi optio wil onl delet th tagge files wherea Newswee woul delet eithe tagge o untagge files Afte grea dea o though an discussion decide no t includ th optio t delet tagge o untagge files becaus thi seem to dangerou an personall hav onl use th deletio o tagge files I th fil i R/O th use wil b prompte a with DELETE.  --------------------  FIND FILE  command Ente an filespe o wildcar filespe an th progra wil locat th firs fil tha complies Thi ma b a brie a singl characte o a complex as wildcards will allow.  WS???.COM ?-GETS.* B*.* B29*.C?? DD etc... -------------------- LOG NEW DRIVE/USER/MASK  command Thi optio allow loggin i o ne driv o use o mask Th minimu requiremen i th driv code Th driv cod i checke t se i tha driv i o line I i is processin continues however i i i not messag i displaye an th use i prompte t lo i ne drive/user Th use ma wis t giv th use numbe o '* fo al user o mas suc a *.com whic wil lo i al .CO files Yo ca als omi th driv an jus giv th use an B2 wil lo yo int tha use o the previously selected drive.  B B: (or ;) B0;*.COM  B12;WS??.COM B*:WS*.* etc... --------------------  MENU  or command Th men i displaye initiall whe B2 i calle an eac tim ne driv i logged T displa th men a an othe time hi th questio mar key Thi ma b don wit o withou th shif key I othe words the menu is called by '?' or '/'. Total disk space is also shown.  ---------------------  TAG FILES  command Thi optio tag file fo mas operation copyin o settin fil attributes etc Th scree wil sho th numbe o K-byte tha hav bee tagge includin th currentl tagge file I invers vide i active the thes wil b show i invers video Afte taggin th curren file th curren fil pointe i incremente t th nex file.  ----------------------  UNTAG FILES   command Thi comman i th opposit o th TA comman i tha i untag th curren fil (i tagged an subtract th fil siz fro th numbe o tagged bytes and displays the new total.  ----------------------  WILDCARD TAG  command Thi comman allow taggin o an o al file usin CP/͠ wildcards Any wildcards or even an unambigous filename may be used. See FIND command.  ---------------------- MASS COPY  command Thi comman wil allo copyin o al tagge file t an driv an o use desired T abor an copy simpl hi an ke durin th cop operatio an whe th curren fil i finishe copying th copyin proces wil b aborte wit messag t tha effect Th remainin file tha hav no bee copied wil stil b tagged Th file tha hav bee copied ar pu int a "alread copied state signifie b "# i plac o "*" B2 know whic file ar currentl tagge (* o "hav bee tagged"(# an ca us thi fo RETAGGING Al file tha ar se t "#" wil b retagge whe usinth (A)reta commandThi optio als allow CRC(se SINGL COPY)  -------------------- VIEW FILE  command Th vie comman wil prin th curren fil onscreen A thi poin B2 will check to see if this is a squeezed file and unsqueeze if necessary. I yo tr t vie .CO file normall yo woul se garbag o th screen howeve B29 wil catc thi an d HEXDUM insteadI th use trie t VIE Squeeze file th fil wil b unsqueeze first. Th fil wil b presente on scree a time T vie th nex screen simpl hi fo th nex line hi -SPAC BAR- T abor hi "A o "a" Whe finished th scree wil b cleare an yo wil b returne t th comman mode. LIBRARY FILE SWEEP MODE B2 allow viewing printin an extractin file fro libraries Thi mod i invoke b positionin th curso o th .LB fil an the usin th 'V command B2 wil intercep th vie comman an initiat th Librar Fil Swee Mode Thi mod o operatio i ver simila t th Norma Swee Mode Th scree wil clea an lis o command i shown Ther i n taggin allowe here Al operation dea wit singl file wit th exceptio o Extrac All whic wil d exactl that Al o th commands in the menu operate the same as the Normal Sweep Mode commands.  ------------------ HEX DUMP FILE  command Thi comman wil tak ANY fil an dum i i HE forma t th scree fo viewing Th option availabl ar th sam a wit th VIEנ command Squeeze file wil automaticall b unsqueezed. This is a HEX/ASCII dump.  ______________________ RENAME FILE  command Th renam functio wil d exactl that Th use ma giv a man character a h wishe fo th ne filenam u t th CP/ limi o eight Th extensio i (a wit CP/M optional Thi functio als check t se i th ne nam alread exist o th dis an i i does messag i issued and the rename is aborted. Th renam functio als ha th capabilit t d wildcar renaming B enterin "* i respons t th renam prompt th use wil b aske fo th OL filenam (*.COM WS*. etc. followe b th NE name whic ha th sam synta a th OL filename FO EXAMPLE T renam al o th .PR file t .CMD th use woul giv *.PR fo th OL filenam an *.CM fo th NE name Thi woul caus al o th file wit th .PR extensio o that disk to be renamed using the .CMD extension.  --------------------- SPACE ON DISK  command Th checkspac functio wil as fo whic driv t chec spac on chec t se i tha driv i o lin an i i is th byte use an spac remainin ar displayed I th selecte driv i no o line th use i prompte fo on tha is Th bloc siz i als shown Thi i th minimu file size on your machine.  -------------------- MOVE FILES  command Thi functio wil mov TAGGE file fro on use are t another Ther i n copyin involve sinc th director i rea an scanne fo matche o th tagge file an the th use numbe i change t th ne value. NOTE Thi comman wil OBVIOUSL NO move file t differen use are on another disk! Sorry, but you still have to copy...  ____________________ SET FILE ATTRIBUTES  command Th se fil attribute functio work wit TAGGE file only Th use wil firs ta th file tha ar t hav certai attribute se o rese an the select th command Th prin file comman wil prin al tagge files Whe th PRIN optio i selected th use i prompte fo printe pitch Th cod fo th printe i us shoul hav bee installe wit B29INST.CO͠ prio t printing i orde t wor correctly.(Se Use Patc Section).Th file wil b printe wit th filenam printe o th printou a th top Tab wil b expande t characters Pagebreak ar als provide wit 5 line pe pag an 8 column pe line Th reta comman ca als the b use t reta th file t b printe agai fo thos o yo tha ar int printin copie fo you friends I an on o th followin fil type i tagge fo print the wil instea b HEXPRINT-ed.  COM REL OVR OVL DBF DAT DTA HEX OBJ  Also, their squeezed counterparts will be HEXPRINT-ed.  ----------------- Printing Multiple Copies Thi optio wil allo printin u t 9 copie o an give file Whe yo hav positione th curso besid th fil tha yo wis t prin copie of hi th key Yo wil b aske ho man copie t prin an th printe pitc an of yo go Not tha thi doe no appl t tagge file as with normal printing, but only to the "Current File". .pa * * * * * * * * * * U S E R P A T C H E S * * * * * * * * * *  Th installatio progra (B29INST.COM wil instal certai feature int B29 suc a printe string an vide sequences Whe th instal progra firs come up th use i prompte fo th driv wher B29.CO is s tha B29INS know wher t pu th ne codes Whe th driv i given th instal progra look o tha driv t insur tha B29.CO͠ i indee there I i i not th use i advise o thi an ha th opportunit t retry or abort. Whe enterin cod sequence wit th instal program i i no necessar t loo u strang an ambiguou codes sinc mos manual provid th code i severa "dialects anyway thi shoul b easy Fo example i th printe manua say tha th cod fo 1 cp (ELIT pitch i "ESà Q" the a th promp fo 1 cpi th use woul hi th ESCap ke an the th Ѡ key Al o th code t b installe allo maximu o thre characters whic shoul b sufficien fo an printer T NUL string us th -SPAC BAR- String ca b NULLe fo thos machine no havin an vide sequences THE CLOCK SHOULD ALSO BE MADE INACTIVE ON ALL MACHINES EXCEP TH KAYRPO' WIT TH REA TIM CLOC BUILT-IN Th "REMEMBE CURSO POSITION an "STATU LIN PRESERVATION function shoul b NULLe ou fo non-Kaypr Rea tim Cloc machine a well Thes tw code ar onl use o th Kaypr an ca serv n purpos o an othe machines Th "CUSTO CURSOR shoul als b disable o non-Kaypr machine sinc thi routin call specifi ports i wil caus B2 t bom o othe machines.Th line pe pag an line pe scree code ca b entere i decimal however B29INS wil no allo mor tha 6 line pe page Th defaul value show  i th installatio progra ar take fro th actua CO file tha i yo ar show wha th curren value ar befor yo chang them. T mak th change permanent selec th "X optio an yo wil b prompted for Saving the changes or Aborting the session. NOTE: Gemin 10 an Starmicronic 10 owners Th printe manua i misleadin a fa a th printe string ar concerned Th boo show th code fo characte font a ES "B an chr$(27 chr$(66 chr$(n) Th "n whe use fo font i NO a ASCI numbe o o 3 i i instea HE o o 3 Whe usin th instal progra t instal thes printers yo mus us ^ fo 1 ^ fo an ^ fo 3 Example T instal th PIC pitch string, you would type, ESC B ^A. NOTE: ( Reiterating ) I yo ar no usin B2 o Kaypr wit th built-i clock yo MUS disabl th CLOCK CUSTO CURSOR REMEMBE CURSO POSITION STATUӠ LIN PRESERVATIO option wit B29INST.CO a thes option ar Kaypr specific  Ok Hackers, here we go. A little prayer of thanks to DDT and off we go!  Th installatio progra (B29INST.COM) wil instal th followin byte int B29 however th tabl belo i provide a referenc fo those with other things in mind. - PATCH LOCATION - - LABEL - - BYTES AVAIL - -FUNCTION- -------------------------------------------------------------------------- Decimal Hex -------------------------------------------------------------------------- 361 0169 IRV OFF-> - 6 - Inverse Video OFF 377 0179 IRV 0N-> - 6 - Inverse Video ON 392 0188 ST ON- - - PreservStatu Line ON 404 0194 STP OFF-> - 3 - Preserve Status Line OFF 419 01A3 R- - - RemembeCurrenCurs Pos. 427 01AB GRC-> - 3 - Go Last Rem. Curs. Pos. 436 01B4 LP-> - 1 - Lines per Page, Printer 441 01B9 LS-> - 1 - Lines on Screen 446 01BE CLS-> - 3 - Clear Screen Code 455 01C7 PICA-> - 3 - Select 10 cpi 465 01D1 ELITE-> - 3 - Select 12 cpi 476 01DC COMPR-> - 3 - Select 17 cpi 487 01E7 CLOCK-> - 1 - Clock Enable 00=y C9=n 495 01EF CURSOR- - - Cus CursoEnabl00= C9=n --------------------------------------------------------------------------  Th label show abov ca b foun i th firs two sectos o th .CO͠ fil a DDT' HEX/ASCI dum wil sho the up Th byte immediatel t th righ o th "-> portio o eac labe i wher th actua cod resides Th patc location show represen the startin address of the label Afte patche ar complete yo ca sav th ne imag wit ...  A0>SAV 64 B29.COM.  Ther i tabl i th CO file whic i lis o al th fil extension tha wil automaticall b hexdumpe i th use trie t VIE them. The list is marked in the file by an ASCII marker; HEX-DUMP TABLE The table follows:  REL RQL COM CQM OBJ OQJ HEX HQX DTA DQA OVR OQR OVL OQL DBF DQF DAT DQT FF  Th byt a th en o th tabl (FF mus remain a i i th en o tabl delimite fo th routin tha scan th table Th space show betwee th extension i th abov tabl ar show her merel fo clarity, as they are run together in the actual table in B29.COM. Th extension i thi tabl ca b modifie o deleted bu ther ar fe precautions I i wa desire t remov a entr fro th table i i no possibl simpl t delet it I a entr wa delete an replace wit spaces the an fil tha di no hav a extensio woul b hexdumped I i necessar t hav th tabl contiguou wit n space an a FƠ byt a th end T remov a entr fro th table i woul b easies t mov th las entr t th spo wher a entr i t b remove an the mov th F byt t th ne en o table Als not tha th tabl i no expandable i.e d no mov th tabl pas th F byte! ɠ a on wh canno leav wel enoug alon an alway see t hav t ad somethin els t program th abov informatio i fo thos o yo wh ar o th sam stat o menta disorde a I I yo ar int som seriou patches woul b intereste i wha the ar a wel a offe assistanc i needed Thi whol progra cam abou becaus ɠ wante t patc th rea tim cloc i th Kaypr 4-8 int NSWEEP consequentl encourag use patchin an wil hel whe asked.  W_A_R_N_I_N_G I yo patc int th wron area a wit an program B2 wil no work I an o th copyrigh message ar removed B2 wil issu messag and exit and you will need a fresh copy of B29. * EOF:B29xxx.WS  o table Als not tha th tabl i no expandable i.e d no mov th tabl pas th F byte! ɠ a on wh canno leav wel enoug alon an alway see t hav t ad somethin els t program th abov informatio i fo thos o yo wh ar o th sam stat o menta disorde a I I yo ar int som seriou patches woul b intereste i wha the ar a wel a offe assistanc i needed Thi whol progra cam abou becaus ɠ wante t patc th rea tim cloc i th Kaypr 4-8 int NSWEEP consequentl encourag use patchin an wil hel whe asked. Thi B-29.CO fil ha bee installe fo th Commodore-12 CP/ versio an ha bee teste fo th 1571 1581 1700 an 1750 Thi shel als work o th CB CP/ SY disk date DEC DEC an 2 MA versions I ha bee installe wit revers vide (Es modes an support printe dump for normal (zero and one), Italics (two), and line compression (three). Possibl glitches Prin featur hang up tryin t prin untagge file o prin buffe o interfac rese durin operation R/ doe no function fil no tagged Dis I/ error differen dis i driv withou 'L loggin ne drive first Spac o disk no rea reliabl feature B2 not loading or running correctly: CRCKLIST.CRC not on same drive as B-29. Us B29INST.CO͠ t modif thi program i desired an REAĠ TH DOCUMENTATION!!! or instructions on how to install B29.COM READ THE B29Vxx.WS FILE !  DU-V87.DOC ---------- By Ward Christensen (revised 05/14/84) additional notes by Ron Fowler, Irv Hoff, and Jeffrey Nonken This version of DU is compatible with CP/M 1.4, 2.x and 3.x and does not require alteration for various hardware configurations. It adjusts itself automatically to the correct number of sectors, tracks, directory size, etc. INDEX 1.0 INSTALLATION: 2.0 USE: 2.1 COMMANDS, BY FUNCTION 2.2 ALPHABETIC COMMAND SUMMARY 3.0 NOTES 4.0 INTERPRETATING DIRECTORY DATA 4.1 SINGLE DENSITY 4.2 DOUBLE DENSITY 1.0 INSTALLATION: === "DU" should require no changes to the source file because of the use of the automatic adaption feature. The only alteration that needs to be done is to use DDT to set the byte at 103H for your clock speed. Use 0 for 2MHz, 1 for 4MHz, 2 for 6MHz. (This only affects the "Z" SLEEP command.) 2.0 USE: === To invoke "DU", simply enter "DU" at the CP/M prompt. A>DU An initial command string may optionally be placed as an operand of the original "DU" command, i.e.: A>DU M;X for example, if you want to only map the disk, and then exit: Once "DU" is running, it expects single-letter commands much like "SID" OR "DDT". For ease of use, multiple commands may be placed on one line, separated by ";". In addition, a given command or string of commands may be repeated -- either indefinitely (until ^C is pressed) or a given number of times. To avoid an accidental ^C from dropping out of "DU", only the explicit "X" command will exit "DU". 2.1 COMMANDS, BY FUNCTION === HELP: ? displays the help guide POSITIONING: Gnn by allocation group Snn by sector Tnn by track +nn going ahead nn sectors -nn going back nn sectors I/O: < puts current sector "away" into a buffer > recalls previously saved sector K writes "yanked" sectors to a file (see "saving sequential memory" in notes below) R reads sector W writes sector Y "yanks" current sector into sequential memory DISPLAYING: # shows disk parameters A dump sector in ASCII D dump the sector (hex + ASCII) G shows current group, track, sector H dump sector in hex M maps the disk -- where the files are located Mxx map starting at group xx Vnn views (like CP/M type) nn sectors CHANGING: CAnn,VAL change data in ASCII (with escape to hex) CHnn,VAL change data in hex Unn change user to nn SEARCHING: =Abc scan for Abc (IN ASCII) from current sector on (very slow, allow up to 15 minutes to scan an entire disk. Either finds the answer or says: "out of bounds". FNAME find a file in the directory F find next occurrence (extent) of same name MISC: ( toggles the map display to show/not show erased files /nn repeat previous command nn times (repeats indefinitely if nn omitted) Bnn boot nn sectors per track LX log in disk X P printer toggle Q before a command does it "quietly" X exit to CP/M Znn sleep (nn tenths of a second) to allow viewing data before it scrolls off 2.2 ALPHABETIC COMMAND SUMMARY === # Prints the disk parameters + Advance 1 sector (if below track 2, this advances to next numerical, if 2 or more, advances based on CP/M"s normal sector scrambling algorithm, i.e., allows + to the next logical sector of the file. - backs up 1 logical sector NOTE: + and - may take an amount: For example, +15 advances 15 sectors / repeats entire command -- defaults to "forever" /nn nn may be 2 TO 65535 ( toggles the map display to show/not show erased files. When showing erased files "*" indicates that block duplicates a block in another file. It may not be possible to restore this program without errors. If there are no "*" in this complete file, it can be correctly restored. < saves current sector in a "save" buffer =Abc ASCII search, starting at current sector. hex  may be imbedded or used alone. To find the ASM instruction: "IN 0FEH" use: = (Ignores bit 7 unless using .) Since ";" is a command delimiter, you have to use <3B> to search for a ";". Also, since "<" is a hex escape character, use << to mean a single "<". NOTE: This is a very slow routine. It can take 15 minutes or longer to search an entire double- density double-sided disk so be patient. It either finds the string or says: "OUT OF BOUNDS". > gets saved buffer. < and > may be used to move a sector to another place. ? displays the help guide A dump sector (ASCII only) Bnn boot nn sectors per track -- not all disks have 26. CHADDR,VAL,VAL,VAL... change hex values in sector CAADDR,CHAR STRING... change ASCII calues in sector NOTE: may be hex imbedded in the ASCII string: CA00,OK<0D><0A><1A> ----> W writes changes to disk note that the "C" command echoes the over-  laid data for verification. CHADDR-ADDR,BYTE repeats a change CAADDR-ADDR,BYTE repeats a change D dump sector (hex + ASCII) FNAME print directory for file "NAME", then positions to its directory sector. F find next occurrence of name in directory Gnn position to group nn and read G shows current position H dump sector, hex only Kdu:filename.ext save a file from "yanked" sectors. drive, user are optional. Resets "yank" address. see "saving sequential memory" in notes below. L re-logs in the current disk -- you may pull out a disk, put in a new one, and "L" just to log it in. (see "logging in disk" in notes below) LX logs in disk "X", such as: LB, LC, LA, etc. M dumps a map of the group allocations for files Mn shows which file is allocated to group "N" N resets CP/M via BDOS -- this may make it possible under some implementations of CP/M to change the disk format, i.e., density, sides, etc. P toggles the printer on/off Q quiet -- preceedintg any command, suppresses CRT output R reads into memory the sector currently positioned at. NOTE: "R" (read) is implicit in the G, +, and - commands but NOT in the "S" and "T" commands Snn position to sector nn, and read TNN seek to track nn (no read) Ux logs user "x" for next "F" command V views the current sector -- assumes ASCII data Vnn views nn sectors W writes the current sector to disk NOTE: may NOT be used after an "F" command as CP/M was used to find file in the directory X exit back to CP/M (must press return). ^C was too easy to hit over modem lines -- requires two bytes: (X,CR) to exit. Y "yank" the current sector into sequential memory (starts at 3000H, increments for each yank) Z sleep -- causes the porgram to pause -- such as to look at a dump. Z is 1 second Znn nn tenths of a second Z50 = 5 seconds 3.0 NOTES === * Multiple commands: May be separated by ";" EXAMPLE: The following commands will erase the B: disk directory to all E5"s: LB log in B: drive G0 position to directory CH0-7F,E5 fill with E5 < save the sector >;W;+;/16 restore, write, next, repeat 16 ---- this could be shortened to: LB;G0;CH0-7F,E5;< >;W;+;/16 * DUMP COMMANDS: All dump commands (D, A, H) may be optionally followed by a starting and ending address: D0,7F the same as just "D" D3,5 A20,3F * LOGGING IN DISK: If you have a disk with a "blown directory", try logging in a good disk of the same density, then put in the "blown" disk without logging it in. You are opening yourself to possible problems because of the buffering of physical sectors in the "BIOS". The best technique, (but not guaranteed), would be to seek to the unused inner tracks of the first disk, do the read, then change disks. That way, if it writes anything, you won"t have destroyed anything -- assuming the disk is not completely full. Another technique (assuming the second disk does not contain a CP/M system, would be to seek to track 1, do the read there, then change disks to the blown one. * SAVING SEQUENTIAL MEMORY: Since CP/M v 3.0 does not have a SAVE function, one has been added. Syntax is: Kdu:filename.ext ^^^ ^ ^ ||| | +-- file extension (0-3 characters) ||| +-------- file name (1-8 characters) ||+--------------- user # (or none) |+---------------- drive designation (A-P or none) +----------------- DU command Drive and user may be omitted. If so, omit the colon as well. Drive must be specified if the user is. If the user # is omitted, the current user is used. If the drive is omitted, the current CP/M default drive is used. This function saves the current contents of sequential memory into a disk file. The contents of sequential memory are determined by the "yank" function, and the pointer of that function is used here. If nothing has been yanked, you get an error. Once the file has been saved, the "yank" pointer is re-initialized to its original value (3000H). Control is re- turned to DU. 4.0 INTERPRETATING DIRECTORY DATA === 4.1 SINGLE DENSITY === The following explains the format of a CP/M directory entry as shown by "DU", using either the "F" (find file) command, or just doing "D" (dump) of the directory sectors, which are located in groups 0 and 1 on a single-density disk. SAMPLE RESULT OF "FSID.COM" COMMAND: 40 00534944 20202020 20434F4D 0000003A *.SID COM...:* 50 33343536 3738393A 00000000 00000000 *3456789:........* FIRST LINE - 40 00534944 20202020 20434F4D 0000003A *.SID COM...:* || ||| | || || | | || ||^---hex file name/type--^ || || ^file name^ || || || || in ASCII || || extent-^^ || || || || || || file size in sectors-^^ || || || ^^-00 = file active other values (E.G 03) = user # || E5 = file erased ^^-displacement of line in directory sector SECOND LINE - 50 33343536 3738393A 00000000 00000000 *3456789:........* | | | | | ^- allocation groups ^-----allocation group numbers-----^ (just happened to be printable) 4.2 DOUBLE DENSITY === The following is a sample of "FSID.COM" running on a double- density system: :FSID.COM 00 00534944 20202020 20434F4D 0000003A *.SID COM...:* 10 38003900 3A003B00 00000000 00000000 *8.9.:.;.........* G=0000:00, T=2, S=1, PS=0 The primary difference is that the groups now occupy 2 bytes, i.e., 38 00" "39 00" ... this follows the Intel and CP/M convention of putting 16-bit values high-byte-first. This it means group 0038, 0039 etc. Note that in double-density, each group stood for 2k not 1K, so there were half as many groups for the same file. Be very careful when patching a directory under double-density. For exmaple: CH10,38,39,3A,3B... This might try to access group 3938 with resultant angry noise from the disk stepper as it attempts to find where it should go for the data.  numbers-----^ (just happened to be printable) 4.2 DOUBLE DENSITY === The following is a sample of "FSID.COM" running on a double- density system: :FSID.COM 00 00534944 20202020 20434F4D 0000003A *.SID COM...:* 10 38003900 3A003B00 00000000 00000000 *8.9.:.;.........* G=0000:00, T=2, S=1, PS=0 The primary difference is that the groups now occupy 2 bytes, i.e., 38 00" "39 00" ... this follows the Intel and CP/M convention of putting 16-bit values high-byte-first. This it means group 0038, 0039 etc. Note that in double-density, each group stood for 2k not 1K, so there were half as many groups for the same file. Be very careful when patching a directory under double-density. For exmaple: CH10,38,39,3A,3B... This might try to access group 3938 with resultant angry noise from the disk stepper as it attempts to find where it shSODU.INF Screen Oriented Disk Utility (DU) v 8.2 ======================================= SODU is a screen-oriented version of the DU Disk Utility program for CP/M 2.2. SODU-KP.COM Kaypro video-able models SODU-MD3.COM Morrow MD3 & Televideo 900 series You should use the doc file from DU-V87 as SODU uses the same command structure and syntax. If you have neither of these video capabilites, you can simply edit SODU-KP.COM for your terminal's video codes. I'd say use SODU to do it but if it's not installed yet you'd get a very messy screen display, so... use PATCH or DDT or EDFILE and look at the first screen display and you will find the following values. {actual DDT session follows} A0:SYSTEM>ddt sodu-kp.com DDT VERS 2.2 NEXT PC 2C80 0100 -d 0100 C3 D1 03 3D 01 3F 01 42 01 43 01 46 01 47 01 48 ...=.?.B.C.F.G.H 0110 01 4A 01 4E 01 52 01 53 01 4B 61 79 70 72 6F 20 .J.N.R.S.Kaypro 0120 56 69 64 65 6F 20 4D 6F 64 65 6C 73 20 5B 73 6C Video Models [sl 0130 73 5D 00 50 18 FF 20 00 00 08 0A 0B 0C 01 1A 01 s].P.. ......... 0140 18 00 00 02 1B 3D 00 00 00 00 03 1B 43 31 03 1B .....=......C1.. 0150 42 31 00 00 00 20 20 20 20 20 20 20 20 20 20 20 B1... 0160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0170 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0180 00 00 00 00 00 00 00 00 00 00 00 00 1B 2A 01 20 .............*. 0190 20 20 01 20 20 1B 3A B7 06 00 21 37 01 AE 6F 3A . .:...!7..o: 01A0 38 01 1F 7D D2 BA 01 21 FF F6 84 2C DA AA 01 C6 8..}...!...,.... 01B0 0A F5 7D B7 C4 A7 01 F1 C6 30 F5 C5 D5 E5 4F 21 ..}......0....O! BYTE VALUE CODE ------------------------------------------------------ 13D 01 Means a 1-byte sequence for clear screen 13E 1A Kaypro clear screen (CLR) 13F 01 Means a 1-byte sequence for clear to end of screen 140 18 Kaypro clear to end of screen (EOS) 143 02 Means a 2-byte sequence for cursor positioning 144 1B ESCape (pre-fixes all Kaypro video calls) 145 3D ASCII "=", Kaypro uses ESC = 14A 03 Means a 3-byte sequence for exit (quit) dim mode 14B 1B ESCape 14C 43 C 14D 31 1 ESC C1 - dim video off 14E 03 Means a 3-byte sequence for enter (begin) dim mode 14F 1B ESCape 150 42 B 151 31 1 ESC B1 - dim mode on The above patches were used to generate SODU-KP from the Morrow version and it works fine on my Kaypro 10. ////////////////////////////////// Here's a print-out of what the "?" help screen looks like. Disk Utility, Version 8.2 For Kaypro Video Models [sls] A0: Cmd ? Last Cmd: ? Chg ASCII CAf[-t,aa]| Macro Exec n | Restore >[S\Gn] Chg Hex CHf[-t,xx]| Macro Print :P[n] | Save <[S\Gn] Disk params # | Map dir M[nn] | Search =ASCII Exit X | Next\Prev +\-[n]| Sector nn Snn Find F[du:n.t,e]| Pause Znn | Track nn Tnn Group nn Gnn | Print on/off P | View ASCII V[n\G\Q] Help ?[x] | Queue ctl Q[Z] | Wait (Key) ! Login drive L[x] | Read R | Write W[du:n.t] Since going thru the code with PATCH I have found that SODU has 8 help screens available. The command "??" will bring up the Main Help Menu, which is as follows: >> MAIN HELP MENU << 1 Position/Search and Read selected sector 2 Data (Read, Write, Save and Display) 3 Change sector data 4 Macro commands 5 Miscellaneous commands 6 General information To select desired help information, type ? and number The other help menus are displayed by entering "?1" thru "?6", "?", or "??" The "G" command if issued with no params will display the first allocated directory block of the currently logged disk. Beyond this, read the DU-V87.DOC file for complete command syntax as it is the same program except for the dim/bright video and screen-oriented displays. Steve Sanders, Sysop The DataCOM Super Systems(tm) (813) 937-3608 300/1200/2400 {eof}  have found that SODU has 8 help screens available. The command "??" will bring up the Main Help Menu, which is as follows: >> MAIN HELP MENU << 1 Position/Search and Read selected sector 2 Data (Read, Write, Save and Display) 3 Change sector data 4 Macro commands 5 Miscellaneous commands 6 General information To select desired help information, type ? and number The other help menus are displayed by entering "?1" thru "?6", "?", or "??" The "G" command if issued with no params will display the first allocated directory block of the currently logged disk. Beyond this, read the DU-V87.DOC file for complete command syntax as it is the same program except for the dim/bright video and screen-oriented displays. Steve Sanders, Sysop The DataCOM Super Systems(tm) (813) 937-3608 300/1200/2400 {eof} =?BCFGHJNRSKaypro Video Models [sls]P  =C1B1 *  :!7o:8}Һ!,ڪ }ħ0O! *F#~ͺ!"*~$!W**~$:G> ͺ:3 *W*~$*D":4MA<*W* ~ʛ:5:6tu͚* ":5:6ʑÒ͚* !"*~$!*-}:3=o%|W*,:3.:4*%*:4$****>ͺʹ> Hʹñ> H> O b> H:Rñmʹñ3 ң †ͺ2ñ ±ͺ*$:4"±%Wñͺ!4:3ADU.COM ver 8.0 11/29/83*."6 |2$*" " "5!"9!" "Q!"!"!"Y":$!"{!6*."{!"$!*#"#A"#"#"#:$i 2$O͏ *#6 A*# 6 ‚!W? Disk Utility, Version 8.2 For ͫͧ ͧ !:4!W?Type ? for help Type X to exit ;!~'G'*#j> *#-z>2$2$12$>2#!"#Y '~# ';5ͱ G!#~r###c#^#Vx*#*#~0ژ:Ҙ#0Ͱͼ~# ʬ;˜Á*#A*#= ö~# ¼*#|ͺ"? Expanded Macro Command Line Too Long '~# ͺ"? Invalid Command 'ͺ"? +++ Out of memory +++ '~ͱ P}"#~ͱ ;z zͯ#ͧ ͌͛"5͌z tͧ |z0 ?: zͰ͢~# ¢0ڻ һWͺ"? Invalid Macro Number Specified in Command 'ͯ#zͰ'ͽ"J ͽ"'5}"ͧ ? -- Disk Information for Drive :$A ?: --ͧ ͧ ? Tracks: *$#ͧ ? Sectors/Track: *$ͧ ? Group Size: : $ ͛"5~ͱ ;= =#Z:;ͽ"?Queue Head @ *#Y?, Tail @ *#Y? (*#? sectors), *# *#|Œ}Œ`i? sectors free 5*#"#"#!"#z*$#|"$*$*#z5"$|5':$5{ z{2$ 5:#2#5{9 :#W x@ Y '= 9 5ͼ c   ~ . ;. ͱ #AO͏ ~:5#5ͱ:$2$y2$:$ʼ | ^#V#"$!~#fo#**$=!U!*#|2$*ͺ"? Unable to select Drive :$A ?: Restoring Drive :$OA ?: ͏ ' :$O͏ 5*#|N ;] :#G:#x-a :==2#**$"#!"#*$$#""DM*#:#-!*#=!*#U!!! x !͍2$? :&$":'$"͑{ >2$BKͽ" >- > 2$ *"$#} |;  Y 5 z { ́ _ :$b c ́ ? ++ End of Map ++ J :#s5*#"#*#"#!5| ~> “ >( ~5# >.  :$ ~~> >) ? ++ Free ++ :$2$ >| 5~#  ~   *$$#" $!"#*#~d ~_#~d :#$D W#"` *#|\ >*2$"#E  * $+" $|$ *#~ͱ Gʇ :#U Sʨ *#!j>2#5#*#*#|¿ } *#!j "#*##"#5ͺ"? Queue Full -- Sector(s) not saved ':*##~*$;N N ͑*"$"ڙ!"$" $2$Ͷ=!U!:#: ͺ"? ++ Must Be Positioned & Read First ++ ' ͽ"? Reading from Group *$DM> *#"#>2 $*#: $ *#"#>2 $ÿ ͺ"? ++ No "<" Save Command Issued ++ '~#jɯ2#<2#͍8 :#ʙ**$"#!"#!!W ͅ ïY nG~{:#I*#}d͞*#*#"}I*#*#"}k2#*#U!*#=!!*!~#"#+C ͺ"͜?= Not Found c *#"#*#"#~ ; #Ü͍~ͱ QG::#U {L*#U!*#=!!c ?<> J #*#DM*#xj L  !: $<_!Y ʨ~ʜʂ~{ ғ ʊ ʖ ʓ~Ö? ʨÖ ,O?7ͼ5͞s Å :#ͺ"? ++ Must Be Positioned Before Displaying ++ '~;  ͞`i}55~}5}5{I#})Y ':~ `~b>. {q#}S:ͤ Y '{*$"ڙ!=!s*͞? Drive :$A ?: Trk = *#ͤ  ͅ 5z*$"U!2#!*êͺ"? ++ Not Within Sectors 1-*$? ++ '**$*#"*$"*#+: $G}2$:$G"O"$͑*"$"z"$2$ͤêͺ"? ++ Not within Groups 0-*"$DMͶ=!U!2#!bk:$)=»:$o*$" *$**$ #~ 6;6,o͍:$2\~,o2$2iͤY 'yo-/ &!o\?jjƀjyPY*$$#"}ʪ!#9* :4ڢ}"ͧ ͧ ͧ  2#5ͺ"? Not Found 5? ? Extent: :j?o))))):ho:$A :$o&>: !]~  #~ >. ~ #)h< < ͺ"? -- Illegal Extent 5{2hz{2jzK ~ͱ AګAO#~:«#͏ :#y :${ 2$ ͺ"? ++ Illegal user number ++ '\ ~.= >;>,>ͱ # ~ ;,#.#> >:#U ~ d;dzzd!:#U ~ ʒ;ʒz*#+|·*#|°*$"#*$÷+"#*$"#z’m*##*$"*##*$""#!"# ͧ ? Drive :$A >: **$*#"J? Group = *$DM>: :$>, ? Trk = *#?, Sec = *#?, Phy Sec = *#:#U ~ͱ #M#-¬M#BKñ,&HA~ ʪ;ʪ"$#yʪ*$¼~ ʪ;ʪ#~ ʪ;ʪ,"#͑{yʪ*#~ ʪ;ʪ8 +HrAi6 r~V>. T6+oWt 6ͱ ͼʠOʫíi Ҽ>.~>. Tt+tC 5 <__ybxb777>_7_:#ƒ!5ͺ"? ++ Can't read - not positioned ++ 5~;ʼ "5:$2$:$2$͍*#|3 :$_:$:$_ \g^#Vͫ͛"5 ëF+,$^%&m( )*Chg ASCII CAf[-t,aa]| Macro Exec n | Restore >[S\Gn] Chg Hex CHf[-t,xx]| Macro Print :P[n] | Save <[S\Gn] Disk params # | Map dir M[nn] | Search =ASCII Exit X | Next\Prev +\-[n]| Sector nn Snn Find F[du:n.t,e]| Pause Znn | Track nn Tnn Group nn Gnn | Print on/off P | View ASCII V[n\G\Q] Help ?[x] | Queue ctl Q[Z] | Wait (Key) ! Login drive L[x] | Read R | Write W[du:n.t] Macro define :nTEXT| Repeat Cmd /[nn] | >< >> :#$xy 0   |{0 > >* ~ #~@#͑zb{bƀ_ͺ"? ++ Bad Displacement (Not 0-7FH) ++ '͘~#¥#7?ͼ))))oå0:AG?0#~##å7?0:?0bk)))o|g~ͱ ;,-:>#! W*#~ P8 ?Last Cmd: ͢C ͧ ! W:$A :$q:$o&?: Cmd ? *#@ O ʼ ڂw# Â>* > +Âx@qy *#*#ý"*#͢ x@ʂ+  x@}+ >   6  $ͧ !4:8 ͧ M :#2$2#:$2#8 ?Type Any Character (^C Aborts) > C ͧ 2> > H> H > > a{_H:#2!O !> :# /!4!2#:#<2# ! /!:#<2#4!:#2#"ͺ"? ++ READ Failed, Sector may be Invalid ++ :#U"ͺ"? ++ Cannot Write Unless Read Issued ++ '{"ͺ"? ++ WRITE Failed ++ !:4ғ"!W*:4ͧ ͧ J :#Ī+! W*y"#x}/o|/g#ɷ|g}o" "}o|gBKx #!# T]x# #:$/#$je#*.:^#"$^#"$$~#2$~#2 $^#""$^#"&$^"*$!$~: $w*"$Ͷ"$"$w:O+G-u=|<{ >#?a/!CDFG[Lp M N. P$ Q#RvSTU VWX"Z/ B,=ZE:=_H>dI*===H==VH|}Hƀ >> 1. POSITIONING COMMANDS << +[nn] Step In [nn (decimal)] Sectors -[nn] Step Out [nn (decimal)] Sectors =text Search for ASCII text. for imbedded hex F[du:n.t,e] Find File [drive user:name.type,extent] Gnn CP/M Allocation Group nn (hex) Snn Sector nn (decimal) Tnn Track nn (decimal) >> 2. DATA COMMANDS << # Print Parameters for Current Drive <[S or Gn] Save Current Sector [Sector/Group n on Queue] >[S or Gn] Restore Sector [Sector/Group n from Queue] M[nn] Map [from group nn (hex)] R[Gnn] Read Current Sector or Group nn V[nn\Gn\Q] View [nn] ASCII Sectors or [Group n] or [Queue] W[du:n.t] Write Sector or [Queue to drive user:name.type] >> 3. CHANGE COMMANDS << CHff[,nn,nn...] Change Hex CAff[,xx...] Change ASCII. for imbedded hex. CHff-tt,nn Fill ff-tt with "nn" Hex, e.g. ch0-7f,e5 CAff-tt,xx Fill ff-tt with ASCII "x", e.g. ca0-7f,A == Commands for CHaddr & CAaddr with cursor control == ASSIGNED CURSOR KEYS Move current change position ESC Alternate between Hex/ASCII RETURN Exit to Command Prompt >> 4. MACRO COMMANDS << n Perform Macro n, 0<=n<=9 :ntext Define 'text' to be Macro n, 0<=n<=9 :P[n] Print Macro n, 0<=n<=9, Print All if no n >> 5. MISCELLANEOUS COMMANDS << /[nn] Repeat [nn (decimal) times] ! Pause for User L[x] Log-in drive x, reset drives if x not supplied P Toggle Printer Switch Q[Z] Queue status [Zero queue] X Exit Program Z[nn] Sleep [nn (decimal) seconds] >> 6. GENERAL INFORMATION << Operands within [...] are optional. For +, -, /,Q, T, S, U, V, or Z "nn" is Decimal (use #nn for Hex). For G or M "nn" is Hexadecimal (use #nn for Decimal). "ff" and "tt" are in Hex (use #ff or #tt for Decimal). Cancel function with C or Ctrl-C. Suspend output with S or Ctrl-S. >> MAIN HELP MENU << 1 Position/Search and Read selected sector 2 Data (Read, Write, Save and Display) 3 Change sector data 4 Macro commands 5 Miscellaneous commands 6 General information To select desired help information, type ? and number *.5C^E DUINSTAL Version 1.0 DUINSTAL.COM is used conMANDS << n Perform Macro n, 0<=n<=9 :ntext Define 'text' to be Macro n, 0<=n<=9 :P[n] Print Macro n, 0<=n<=9, Print Al=?BCFGHJNRSMorrow MD3/Televideo 912 P  T=() *  :!7o:8}Һ!,ڪ }ħ0O! *F#~ͺ!"*~$!W**~$:G> ͺ:3 *W*~$*D":4MA<*W* ~ʛ:5:6tu͚* ":5:6ʑÒ͚* !"*~$!*-}:3=o%|W*,:3.:4*%*:4$****>ͺʹ> Hʹñ> H> O b> H:Rñmʹñ3 ң †ͺ2ñ ±ͺ*$:4"±%Wñͺ!4:3ADU.COM ver 8.0 11/29/83*."6 |2$*" " "5!"9!" "Q!"!"!"Y":$!"{!6*."{!"$!*#"#A"#"#"#:$i 2$O͏ *#6 A*# 6 ‚!W? Disk Utility, Version 8.2 For ͫͧ ͧ !:4!W?Type ? for help Type X to exit ;!~'G'*#j> *#-z>2$2$12$>2#!"#Y '~# ';5ͱ G!#~r###c#^#Vx*#*$2$%! # ͏#:$%> %e2-$%!> %e%!2.$!L b The New Codes Are ->:,$#ʅ %!ʅ 2$͏#:$%> %:-$%!ʘ %> %:.$%!ʫ %!  Correct ? (y/n) ey#Y:,$2$:-$2%:.$2%!  Current 12 cpi Code = : %#4 %!4 2$͏#:$%> %: %%!G %> %: %%!Z %!i z Change (y/n) ->ey#Y­ M">3%! ú Enter New 12 cpi Code ->e2$2/$# %! ͏#:$%> %e20$%!> %e%!21$! % The New Codes Are ->:/$#H %!H 2$͏#:$%> %:0$%![ %> %:1$%!n %!} Ð Correct ? (y/n) ey#Y :/$2 %:0$2 %:1$2 %!  Current 17 cpi Code = :%# %! 2$͏#:$%> %:%%! %> %:%%! %!, = Change (y/n) ->ey#Y¼M">3%!b } Enter New 17 cpi Code ->e2$22$#ʦ %!ʦ 2$͏#:$%> %e23$%!> %e%!24$!  The New Codes Are ->:2$# %! 2$͏#:$%> %:3$%!! %> %:4$%!4 %!C V Correct ? (y/n) ey#Y­ :2$2%:3$2%:4$2%ü>! Þ Status Line Codes!   Current Status Line ON Code = :$2$# %! ͏#:$%> %:$%!%> %:$%!%!%6 Change (y/n) ->ey#Y^M">3%!Xo Enter New ON Code ->e2&$2$%!ʑ#ʑ͏#:$%> %e2'$%!> %e2($%!! The New Codes Are ->:&$#%!2$͏#:$%> %:'$%! %> %:($%!%!.A Correct ? (y/n) ey#Yy :&$2$:'$2$:($2$!m!Î Current Status Line OFF Code = :$#ʱ%!ʱ2$͏#:$%> %:$%!%> %:$%!%! Change (y/n) ->ey#Y¼M">3%!$@ Enter New Status Line OFF Code ->e2$2)$#f%!f͏#:$%> %e2*$%!> %e2+$%!!ë The New Codes Are ->:)$#%!2$͏#:$%> %:*$%!%> %:+$%!%!+ ' ͽ"? Reading from Group *$DM> *#"#>2 $*#: $ *#"#>2 $ÿ ͺ"? ++ No "<" Save Command Issued ++ '~#jɯ2#<2#͍8 :#ʙ**$"#!"#!!W ͅ ïY nG~{:#I*#}d͞*#*#"}I*#*#"}k2#*#U!*#=!!*!~#"#+C ͺ"͜?= Not Found c *#"#*#"#~ ; #Ü͍~ͱ QG::#U {L*#U!*#=!!c ?<> J #*#DM*#xj L  !: $<_!Y ʨ~ʜʂ~{ ғ ʊ ʖ ʓ~Ö? ʨÖ ,O?7ͼ5͞s Å :#ͺ"? ++ Must Be Positioned Before Displaying ++ '~;  ͞`i}55~}5}5{I#})Y ':~ `~b>. {q#}S:ͤ Y '{*$"ڙ!=!s*͞? Drive :$A ?: Trk = *#ͤ  ͅ 5z*$"U!2#!*êͺ"? ++ Not Within Sectors 1-*$? ++ '**$*#"*$"*#+: $G}2$:$G"O"$͑*"$"z"$2$ͤêͺ"? ++ Not within Groups 0-*"$DMͶ=!U!2#!bk:$)=»:$o*$" *$**$ #~ 6;6,o͍:$2\~,o2$2iͤY 'yo-/ &!o\?jjƀjyPY*$$#"}ʪ!#9* :4ڢ}"ͧ ͧ ͧ  2#5ͺ"? Not Found 5? ? Extent: :j?o))))):ho:$A :$o&>: !]~  #~ >. ~ #)h< < ͺ"? -- Illegal Extent 5{2hz{2jzK ~ͱ AګAO#~:«#͏ :#y :${ 2$ ͺ"? ++ Illegal user number ++ '\ ~.= >;>,>ͱ # ~ ;,#.#> >:#U ~ d;dzzd!:#U ~ ʒ;ʒz*#+|·*#|°*$"#*$÷+"#*$"#z’m*##*$"*##*$""#!"# ͧ ? Drive :$A >: **$*#"J? Group = *$DM>: :$>, ? Trk = *#?, Sec = *#?, Phy Sec = *#:#U ~ͱ #M#-¬M#BKñ,&HA~ ʪ;ʪ"$#yʪ*$¼~ ʪ;ʪ#~ ʪ;ʪ,"#͑{yʪ*#~ ʪ;ʪ8 +HrAi6 r~V>. T6+oWt 6ͱ ͼʠOʫíi Ҽ>.~>. Tt+tC 5 <__ybxb777>_7_:#ƒ!5ͺ"? ++ Can't read - not positioned ++ 5~;ʼ "5:$2$:$2$͍*#|3 :$_:$:$_ \g^#Vͫ͛"5 ëF+,$^%&m( )*Chg ASCII CAf[-t,aa]| Macro Exec n | Restore >[S\Gn] Chg Hex CHf[-t,xx]| Macro Print :P[n] | Save <[S\Gn] Disk params # | Map dir M[nn] | Search =ASCII Exit X | Next\Prev +\-[n]| Sector nn Snn Find F[du:n.t,e]| Pause Znn | Track nn Tnn Group nn Gnn | Print on/off P | View ASCII V[n\G\Q] Help ?[x] | Queue ctl Q[Z] | Wait (Key) ! Login drive L[x] | Read R | Write W[du:n.t] Macro define :nTEXT| Repeat Cmd /[nn] | >< >> :#$xy 0   |{0 > >* ~ #~@#͑zb{bƀ_ͺ"? ++ Bad Displacement (Not 0-7FH) ++ '͘~#¥#7?ͼ))))oå0:AG?0#~##å7?0:?0bk)))o|g~ͱ ;,-:>#! W*#~ P8 ?Last Cmd: ͢C ͧ ! W:$A :$q:$o&?: Cmd ? *#@ O ʼ ڂw# Â>* > +Âx@qy *#*#ý"*#͢ x@ʂ+  x@}+ >   6  $ͧ !4:8 ͧ M :#2$2#:$2#8 ?Type Any Character (^C Aborts) > C ͧ 2> > H> H > > a{_H:#2!O !> :# /!4!2#:#<2# ! /!:#<2#4!:#2#"ͺ"? ++ READ Failed, Sector may be Invalid ++ :#U"ͺ"? ++ Cannot Write Unless Read Issued ++ '{"ͺ"? ++ WRITE Failed ++ !:4ғ"!W*:4ͧ ͧ J :#Ī+! W*y"#x}/o|/g#ɷ|g}o" "}o|gBKx #!# T]x# #:$/#$je#*.:^#"$^#"$$~#2$~#2 $^#""$^#"&$^"*$!$~: $w*"$Ͷ"$"$w:O+G-u=|<{ >#?a/!CDFG[Lp M N. P$ Q#RvSTU VWX"Z/ B,=ZE:=_H>dI*===H==VH|}Hƀ >> 1. POSITIONING COMMANDS << +[nn] Step In [nn (decimal)] Sectors -[nn] Step Out [nn (decimal)] Sectors =text Search for ASCII text. for imbedded hex F[du:n.t,e] Find File [drive user:name.type,extent] Gnn CP/M Allocation Group nn (hex) Snn Sector nn (decimal) Tnn Track nn (decimal) >> 2. DATA COMMANDS << # Print Parameters for Current Drive <[S or Gn] Save Current Sector [Sector/Group n on Queue] >[S or Gn] Restore Sector [Sector/Group n from Queue] M[nn] Map [from group nn (hex)] R[Gnn] Read Current Sector or Group nn V[nn\Gn\Q] View [nn] ASCII Sectors or [Group n] or [Queue] W[du:n.t] Write Sector or [Queue to drive user:name.type] >> 3. CHANGE COMMANDS << CHff[,nn,nn...] Change Hex CAff[,xx...] Change ASCII. for imbedded hex. CHff-tt,nn Fill ff-tt with "nn" Hex, e.g. ch0-7f,e5 CAff-tt,xx Fill ff-tt with ASCII "x", e.g. ca0-7f,A == Commands for CHaddr & CAaddr with cursor control == ASSIGNED CURSOR KEYS Move current change position ESC Alternate between Hex/ASCII RETURN Exit to Command Prompt >> 4. MACRO COMMANDS << n Perform Macro n, 0<=n<=9 :ntext Define 'text' to be Macro n, 0<=n<=9 :P[n] Print Macro n, 0<=n<=9, Print All if no n >> 5. MISCELLANEOUS COMMANDS << /[nn] Repeat [nn (decimal) times] ! Pause for User L[x] Log-in drive x, reset drives if x not supplied P Toggle Printer Switch Q[Z] Queue status [Zero queue] X Exit Program Z[nn] Sleep [nn (decimal) seconds] >> 6. GENERAL INFORMATION << Operands within [...] are optional. For +, -, /,Q, T, S, U, V, or Z "nn" is Decimal (use #nn for Hex). For G or M "nn" is Hexadecimal (use #nn for Decimal). "ff" and "tt" are in Hex (use #ff or #tt for Decimal). Cancel function with C or Ctrl-C. Suspend output with S or Ctrl-S. >> MAIN HELP MENU << 1 Position/Search and Read selected sector 2 Data (Read, Write, Save and Display) 3 Change sector data 4 Macro commands 5 Miscellaneous commands 6 General information To select desired help information, type ? and number *.5C^E DUINSTAL Version 1.0 DUINSTAL.COM is used conMANDS << n Perform Macro n, 0<=n<=9 :ntext Define 'text' to be Macro n, 0<=n<=9 :P[n] Print Macro n, 0<=n<=9, Print Al=?BCFGHJNRSThe Osborne-1 P  T=() *  :!7o:8}Һ!,ڪ }ħ0O! *F#~ͺ!"*~$!W**~$:G> ͺ:3 *W*~$*D":4MA<*W* ~ʛ:5:6tu͚* ":5:6ʑÒ͚* !"*~$!*-}:3=o%|W*,:3.:4*%*:4$****>ͺʹ> Hʹñ> H> O b> H:Rñmʹñ3 ң †ͺ2ñ ±ͺ*$:4"±%Wñͺ!4:3ADU.COM ver 8.0 11/29/83*."6 |2$*" " "5!"9!" "Q!"!"!"Y":$!"{!6*."{!"$!*#"#A"#"#"#:$i 2$O͏ *#6 A*# 6 ‚!W? Disk Utility, Version 8.2 For ͫͧ ͧ !:4!W?Type ? for help Type X to exit ;!~'G'*#j> *#-z>2$2$12$>2#!"#Y '~# ';5ͱ G!#~r###c#^#Vx*#*#~0ژ:Ҙ#0Ͱͼ~# ʬ;˜Á*#A*#= ö~# ¼*#|ͺ"? Expanded Macro Command Line Too Long '~# ͺ"? Invalid Command 'ͺ"? +++ Out of memory +++ '~ͱ P}"#~ͱ ;z zͯ#ͧ ͌͛"5͌z tͧ |z0 ?: zͰ͢~# ¢0ڻ һWͺ"? Invalid Macro Number Specified in Command 'ͯ#zͰ'ͽ"J ͽ"'5}"ͧ ? -- Disk Information for Drive :$A ?: --ͧ ͧ ? Tracks: *$#ͧ ? Sectors/Track: *$ͧ ? Group Size: : $ ͛"5~ͱ ;= =#Z:;ͽ"?Queue Head @ *#Y?, Tail @ *#Y? (*#? sectors), *# *#|Œ}Œ`i? sectors free 5*#"#"#!"#z*$#|"$*$*#z5"$|5':$5{ z{2$ 5:#2#5{9 :#W x@ Y '= 9 5ͼ c   ~ . ;. ͱ #AO͏ ~:5#5ͱ:$2$y2$:$ʼ | ^#V#"$!~#fo#**$=!U!*#|2$*ͺ"? Unable to select Drive :$A ?: Restoring Drive :$OA ?: ͏ ' :$O͏ 5*#|N ;] :#G:#x-a :==2#**$"#!"#*$$#""DM*#:#-!*#=!*#U!!! x !͍2$? :&$":'$"͑{ >2$BKͽ" >- > 2$ *"$#} |;  Y 5 z { ́ _ :$b c ́ ? ++ End of Map ++ J :#s5*#"#*#"#!5| ~> “ >( ~5# >.  :$ ~~> >) ? ++ Free ++ :$2$ >| 5~#  ~   *$$#" $!"#*#~d ~_#~d :#$D W#"` *#|\ >*2$"#E  * $+" $|$ *#~ͱ Gʇ :#U Sʨ *#!j>2#5#*#*#|¿ } *#!j "#*##"#5ͺ"? Queue Full -- Sector(s) not saved ':*##~*$;N N ͑*"$"ڙ!"$" $2$Ͷ=!U!:#: ͺ"? ++ Must Be Positioned & Read First ++ ' ͽ"? Reading from Group *$DM> *#"#>2 $*#: $ *#"#>2 $ÿ ͺ"? ++ No "<" Save Command Issued ++ '~#jɯ2#<2#͍8 :#ʙ**$"#!"#!!W ͅ ïY nG~{:#I*#}d͞*#*#"}I*#*#"}k2#*#U!*#=!!*!~#"#+C ͺ"͜?= Not Found c *#"#*#"#~ ; #Ü͍~ͱ QG::#U {L*#U!*#=!!c ?<> J #*#DM*#xj L  !: $<_!Y ʨ~ʜʂ~{ ғ ʊ ʖ ʓ~Ö? ʨÖ ,O?7ͼ5͞s Å :#ͺ"? ++ Must Be Positioned Before Displaying ++ '~;  ͞`i}55~}5}5{I#})Y ':~ `~b>. {q#}S:ͤ Y '{*$"ڙ!=!s*͞? Drive :$A ?: Trk = *#ͤ  ͅ 5z*$"U!2#!*êͺ"? ++ Not Within Sectors 1-*$? ++ '**$*#"*$"*#+: $G}2$:$G"O"$͑*"$"z"$2$ͤêͺ"? ++ Not within Groups 0-*"$DMͶ=!U!2#!bk:$)=»:$o*$" *$**$ #~ 6;6,o͍:$2\~,o2$2iͤY 'yo-/ &!o\?jjƀjyPY*$$#"}ʪ!#9* :4ڢ}"ͧ ͧ ͧ  2#5ͺ"? Not Found 5? ? Extent: :j?o))))):ho:$A :$o&>: !]~  #~ >. ~ #)h< < ͺ"? -- Illegal Extent 5{2hz{2jzK ~ͱ AګAO#~:«#͏ :#y :${ 2$ ͺ"? ++ Illegal user number ++ '\ ~.= >;>,>ͱ # ~ ;,#.#> >:#U ~ d;dzzd!:#U ~ ʒ;ʒz*#+|·*#|°*$"#*$÷+"#*$"#z’m*##*$"*##*$""#!"# ͧ ? Drive :$A >: **$*#"J? Group = *$DM>: :$>, ? Trk = *#?, Sec = *#?, Phy Sec = *#:#U ~ͱ #M#-¬M#BKñ,&HA~ ʪ;ʪ"$#yʪ*$¼~ ʪ;ʪ#~ ʪ;ʪ,"#͑{yʪ*#~ ʪ;ʪ8 +HrAi6 r~V>. T6+oWt 6ͱ ͼʠOʫíi Ҽ>.~>. Tt+tC 5 <__ybxb777>_7_:#ƒ!5ͺ"? ++ Can't read - not positioned ++ 5~;ʼ "5:$2$:$2$͍*#|3 :$_:$:$_ \g^#Vͫ͛"5 ëF+,$^%&m( )*Chg ASCII CAf[-t,aa]| Macro Exec n | Restore >[S\Gn] Chg Hex CHf[-t,xx]| Macro Print :P[n] | Save <[S\Gn] Disk params # | Map dir M[nn] | Search =ASCII Exit X | Next\Prev +\-[n]| Sector nn Snn Find F[du:n.t,e]| Pause Znn | Track nn Tnn Group nn Gnn | Print on/off P | View ASCII V[n\G\Q] Help ?[x] | Queue ctl Q[Z] | Wait (Key) ! Login drive L[x] | Read R | Write W[du:n.t] Macro define :nTEXT| Repeat Cmd /[nn] | >< >> :#$xy 0   |{0 > >* ~ #~@#͑zb{bƀ_ͺ"? ++ Bad Displacement (Not 0-7FH) ++ '͘~#¥#7?ͼ))))oå0:AG?0#~##å7?0:?0bk)))o|g~ͱ ;,-:>#! W*#~ P8 ?Last Cmd: ͢C ͧ ! W:$A :$q:$o&?: Cmd ? *#@ O ʼ ڂw# Â>* > +Âx@qy *#*#ý"*#͢ x@ʂ+  x@}+ >   6  $ͧ !4:8 ͧ M :#2$2#:$2#8 ?Type Any Character (^C Aborts) > C ͧ 2> > H> H > > a{_H:#2!O !> :# /!4!2#:#<2# ! /!:#<2#4!:#2#"ͺ"? ++ READ Failed, Sector may be Invalid ++ :#U"ͺ"? ++ Cannot Write Unless Read Issued ++ '{"ͺ"? ++ WRITE Failed ++ !:4ғ"!W*:4ͧ ͧ J :#Ī+! W*y"#x}/o|/g#ɷ|g}o" "}o|gBKx #!# T]x# #:$/#$je#*.:^#"$^#"$$~#2$~#2 $^#""$^#"&$^"*$!$~: $w*"$Ͷ"$"$w:O+G-u=|<{ >#?a/!CDFG[Lp M N. P$ Q#RvSTU VWX"Z/ B,=ZE:=_H>dI*===H==VH|}Hƀ >> 1. POSITIONING COMMANDS << +[nn] Step In [nn (decimal)] Sectors -[nn] Step Out [nn (decimal)] Sectors =text Search for ASCII text. for imbedded hex F[du:n.t,e] Find File [drive user:name.type,extent] Gnn CP/M Allocation Group nn (hex) Snn Sector nn (decimal) Tnn Track nn (decimal) >> 2. DATA COMMANDS << # Print Parameters for Current Drive <[S or Gn] Save Current Sector [Sector/Group n on Queue] >[S or Gn] Restore Sector [Sector/Group n from Queue] M[nn] Map [from group nn (hex)] R[Gnn] Read Current Sector or Group nn V[nn\Gn\Q] View [nn] ASCII Sectors or [Group n] or [Queue] W[du:n.t] Write Sector or [Queue to drive user:name.type] >> 3. CHANGE COMMANDS << CHff[,nn,nn...] Change Hex CAff[,xx...] Change ASCII. for imbedded hex. CHff-tt,nn Fill ff-tt with "nn" Hex, e.g. ch0-7f,e5 CAff-tt,xx Fill ff-tt with ASCII "x", e.g. ca0-7f,A == Commands for CHaddr & CAaddr with cursor control == ASSIGNED CURSOR KEYS Move current change position ESC Alternate between Hex/ASCII RETURN Exit to Command Prompt >> 4. MACRO COMMANDS << n Perform Macro n, 0<=n<=9 :ntext Define 'text' to be Macro n, 0<=n<=9 :P[n] Print Macro n, 0<=n<=9, Print All if no n >> 5. MISCELLANEOUS COMMANDS << /[nn] Repeat [nn (decimal) times] ! Pause for User L[x] Log-in drive x, reset drives if x not supplied P Toggle Printer Switch Q[Z] Queue status [Zero queue] X Exit Program Z[nn] Sleep [nn (decimal) seconds] >> 6. GENERAL INFORMATION << Operands within [...] are optional. For +, -, /,Q, T, S, U, V, or Z "nn" is Decimal (use #nn for Hex). For G or M "nn" is Hexadecimal (use #nn for Decimal). "ff" and "tt" are in Hex (use #ff or #tt for Decimal). Cancel function with C or Ctrl-C. Suspend output with S or Ctrl-S. >> MAIN HELP MENU << 1 Position/Search and Read selected sector 2 Data (Read, Write, Save and Display) 3 Change sector data 4 Macro commands 5 Miscellaneous commands 6 General information To select desired help information, type ? and number *.5C^E DUINSTAL Version 1.0 DUINSTAL.COM is used conMANDS << n Perform Macro n, 0<=n<=9 :ntext Define 'text' to be Macro n, 0<=n<=9 :P[n] Print Macro n, 0<=n<=9, Print Al OSZ-SODU.INF From the enclosed SODU.DOC by Steve Sanders, I was able to patch up a version for the Os-1. I really like the visual imporvments of this version of DU (an already outstanding program, I hope you will too. Curt Edwards, Sysop SoftStone RCP/M FOG #24 (502) 241-4109 24hrs 7days 300/1200 baud ng program, I hope you will too. Curt Edwards, Sysop #nn for Hex). For G or M "nn" is Hexadecimal (use #nn for Decimal). "ff" and "tt" are in Hex (use #ff or #tt for Decimal). Cancel function with C or Ctrl-C. Suspend output with S or Ctrl-S. >> MAIN HELP MENU << 1 Position/Search and Read selected sector 2 Data (Read, Write, Save and Display) 3 Change sector data 4 Macro commands 5 Miscellaneous commands 6 General information To select desired help information, type ? and number *.5C^E DUINSTAL Version 1.0 DUINSTAL.COM is used con=?BCFGHJNRSMorrow MD3/Televideo 912 P  T=()  Klean v2.0 An intelligent file erase utility. Copyright 1987 by Steven B. Perkins Usage: KLEAN [d[u]:][afn] /[/][A][H][R][S][T][Z] Options: =help, include them ll, orizontal sort, erase ead only without asking, show ystem files, ype/name sort, ap them all. Klean gives a sorted, numbered list of all files matching [afn] and asks which ones to erase (unless or is used, then Klean doesn''t ask. Aborts, or reply with a list of files to erase such as: 1,4 5 9-10,20- Klean always shows the files selected and asks for final verification (unless is used,) before deleting them all. If a very large directory is shown, Klean pauses and prompts: "More . . ." Press to abort the list early. is needed with options only for no filespec. Released for non-profit use. :<˙ΊC *V[;?̦<|r%:T#9޴V}`u=*rW(?x9.[Hjj,,h{ }:nj?:,$?<Ϭ' ͫCopyright (C) 1985 BORLAND IncBTelevideo 912/920/92P= EE RT(1)1~7#~=  oͦlԅ!!"~#(}:$= +*!6!*!!:(2!6:(>2!!!:O::O:!*! !45(! +/ 0y0( d!k6!{6``o&  :(͠|(  *"x2y( >28!"9!! og2"">~22!:05+:!Co&ͦͣ} [ (!e|ͧA8Q0G: x@!\w# (̓ ?(*( .( x_. _!h6# (?( *( ̓( w#>?> w#ͧ 8 !ɿ .,;:=?*[]<>{}a{ |͵};Ɛ'@'7||}>2Ͱ*Bک  "og"2>2!  ""*B"[Rv*"^#V#^#V#N#FO/o&9O/o&9!9(> (G!9 w#Eͻw}8( RB0 >( RrRR!+ ͱ R!+ ͱ s!+ ͱ s!+ ͱ s!# ͱ s!+ ͱ T]KB!z> S>))0 = | |́́DMgo>jB0 7?= H͓<z5b)b<z {0Gɯgo||}||/g}/o#}o&K[xAJSJDM!b"!6J"DM'd } * W _}8(8J`9{T]=o`9y *  >( ͂ ͭ͘ }>( x‰ }} ˸T}ٕ(0D={ ,= ( ͓ 0%| , 7 ?(8ͭ x ͇ - s 8˸x ͐  ,-xG}s }مN 9s .>#n0͓ | = - nx ͈ ,-(-˸G,-s }ٕ?N 9.> 8ͭ ?= u+-(>͇ 0ͭ ͇ 8 ?x ͈ , 78ƀ8ƀ8ox٨!دoGOW_gɷɷ|لg{ً_zيWyىOxوG|ٔg{ٛ_zٚWyٙOx٘Gxٸyٹzٺ{ٻ|ټx٨ xx( ?}ٽ }ցs <(s 7| = |٤g{٣_z٢Wy١Ox٠G| ͭ ͂ }x>( ͭ}ƀ/ƀo  -͂ }0͏-͂ ͏,}l˸ 8 5 ͘ x( - 8͂ - 8,͂ }l8;*!͘ ! >5ͭ͘ ͘ ͭ---  ,,,-xGg?+2n*8t z~,->( x( ͙}. ͇͂ , ! >5,ͣ- o&0% ,͘  }gs }؉}颋.:}8c~I$I~L*ͣٷx˸ }0G,<} ,-(-͂ !>J0 ͙͘ o8 ͇ >( m.`1pF,t6|!wS<.z}[|%FXc~ur1}͇ٯx(<˸ 8 !~J 0/O!>t 8 =  o t͘ ͇ /o 0 ͏-͂ OT0 j oD,:j !I}袋.}8c~I$I~L! >ͭ͘ JØ oo ͘ = ͇ nf^VNF!DLT\I!!53!r1!͓!> x #-= o˸x͇(- }(x>8({ ,{ `iÄ!>( |s |́>)=|(DMbo˸88x(0 8> ́x(>-{(ay( z(>. ( {>E>+|(|Dg>-|/ 0:p# ~# +>0w#,-  60#~˸}րogM| .({ = ~> x0w#xG%͈ %͈ ZJDM%͈ = _~65+~hìx-Sx9?+{Η@}|{ { gZJDM0| ,7}o˸@ #yO!@9i&@  #@w#@/w#@w#!9! E9!!9~(+Fͻ!"9!(#>2*"| >"2:( ͷ *w*6 !\$![ (ͧ( #:~CONTRMKBDLSTCAUXUSR>2j:*ˮ~1:*:(@q##p[* :(  ~* < >26"!"""~>2""v>2>"!"ˮ(!~8>~O6~*"w(6(2(-()(6 (8 0 :(* y(~#+ (( 66 #6 #"*: y~o p .##~ͻ(.6w4._~ =*##55= *[R8*~#"= ͣ}== ͯ}͵}*#w+#~+>*~('l!0(ˮ]l!8ˮ!]~-#8~>27lˮw>O%7̄s #r%ͤ7̐ l ( (ˮ ql(ˮ ( l ˮ*O:~ ##~._q4((=ʦ==ʩ=ʬò*:4^q*##~6ͻ>2}*|(̈́|( ̈́6-#[RM8( G> A~#*(C! !TRUEFALSE!9N#Z~#( G~#> >    "~(lѻ(( !0 (ˮ!!>2S{:1:*6##ww#w$w#w:  ##N#F*B>2w#w#[s#r> "~ͯ*-w#ww##> ͯÂ""~>2:[R0 *4#4>2:[R> *4 #4(> !>22*f(/˦:G(##~++ :O x yD!ͻ Q*:G(##~._.͛g<]=<͛*##w ͯ +4 #4x>>2:G("ͯ"*nˮ*0 S[ѷR8@* N#F#s#r- 0})jS\*##w+ N#FB ͯr+s>2!T]>)j)0 0= ^R!#^*^#V#N#F#^#V>2ͱ:1:*6 #-Nw#Fwq#p#6#w#w#w"~Â>">!DM!":*B:!>(>2>">!"2"~ʱ*w#wx(9* :O *-4 #4!*4 #4 *-N#Fq#pV+^Bq#pS[ѷR'* s#r$ s#rM <?*M!\  <( !\$>2>2M:>!(* \$\<(!4: [1ð\!(7"~> 2"S"Ns#FrB(Z#\: \<(?*"}K\! !*}#"}! x \* *>* 2""{_!"*nf}(HR0nf" ^VMDnfutqp*s#r*s#r"* vKB!1>( ~#fo{_"*R0RnfR0KqputsrNF( ^VNF^V*SutKqp R*R(~w~wnf ut"6#L*L*!""*NFy(* "*B0Cnf* [R*"*RS[s#r^#V""6#>O"w2x2*"!G"" 'z*"*>2"*"!G"""!\*: Os!~6go(\R*s#r_2x( s x(T]DMx(R0 U(͞O/o&9q# (!>F0#( ~ ( #]( ~ ( (#}(  i&T-a%ã}ͧo*!~6o&|:2!2}:__{ѯ2*|KB " z ^C User break+=  I/O Run-time error {͵, PC=*ͰNot enough memory Program aborted :m'1!e!9^>x1"v*v!͓}2m͠}oE%!!!ͪ!lE *l&}2l!"d`*d`!!"d`*d`*UͦEG!*d`!R!"d`*g&E"*d`!*Ugz""b`*b`*d`R"``!a*b`+)))S` !}2R`*``!*R`&}oEʚ"!a*``+)));! !l!a*``+)));>!S`;! !l!S`;>Eʐ"!a*``*d`+)))!a*``+))) *``*d`R"``×"!}2R`!!a*``*d`+)))!S` *b`#Ý!ò#*d`!*Ugzʲ#"b`*b`*d`R"``!a*b`+)))S` !a*``+)));!S`;*``!}oEʆ#!a*``*d`+)))!a*``+))) *``*d`R"`` #!a*``*d`+)))!S` *b`#"*d`!̀Ek!! *`o&"` N  !Y!! gz&$"&`!Y*&`!\*&`n&s*&`##!Y!n&! ̀!Y!n&!/̀}oEo$N ??????????? !Y"!`*!`*U͹Eʆ%*!`͜!'! #!a*!`+)));!ͫ !a*!`+)))! n&!E$͜!r# $͜! # !a*!`+)))! n&!E6%͜!s# B%͜! # !a*!`+)))! n&!Ez%͜!a# Æ%͜! #  ! `!w_!!O!{!$!O!j_! !O!a! !O͜ͻ/Klean v2.0 Copyright 1987 by Steven B. Perkins #!Y!!{!! e!{!!\n&s͜ͻ FileName=  !{!n&!*~`!͓}oE&!{!n&!Eʪ&͜!@!{!n&# *~`!͓E&*~`͜!' ͜!:# ͜!Y;!!l!ͫ!.#!Y;! !l!ͫ !!w_o&"h_!!{o&"h_!"U*h_!͓E)(*h_! "h_!!gzʜ'"f_!j_*f_!w_*h_*f_!+n&s*f_#d'!j_! !.s! ! gz'"f_!j_*f_!w_*h_*f_+n&s*f_#÷'!j_!! s!w_*h_! +n&!*h&}oE)(!"U*h_!͓EX(!a!+)))!j_; *h_!͓Eʖ)!!{o&"h_*h_!͓Eʓ)*h_! "h_!!gz("f_!j_*f_!w_*h_*f_!+n&s*f_#ã(!j_! !.s! ! gz()"f_!j_*f_!w_*h_*f_+n&s*f_#(!j_!! s!a*U!+)))!j_; !w_*h_! +n&!*h&}oEʓ)*U!"UX(A!!"d_!"b_*i&Eʾ)!"^_*U"`_)*U!!"`_*`_"^_*b_*`_͹E +*b_p$͜! # *b_*^_p$͜! # *b_*^_*^_p$͜! # *b_!*^_p$͜ *d_!"d_*d_!E*͜ͻ More . . . !!"d_*l&!͓E*!! gz*"f_͜!# *f_#ç***U"b_*l&!̀E*#*i&E**b_!"b_+*b_!"b_)͜ Û, !^!^;ͤ!͹E=+Ú,!-e.!^;ͳ"^*^!͓EJ,!^;!*^!Rl !^!^;!^!^!^;ͤ*^!ͦE+!^;*^!!^;ͤl !^!^;!^!^+*U"^*^*^gzG,"_*_!*_*U͹}oE>,!S{*W+)*_s#r*W!"W*_#+Ú,!^;!^!^*^!*^*U͹}oEʚ,!S{*W+)*^s#r*W!"WP! _!"WN !^!! _;ͤgzG-"_! _*_n&!,͓! _*_n&! ͓}o"E)-!^;! _*_n&e.> !^>-!^;+N !^*_#,!^;NEb-!^;+*W!R"W͜ͻ; Klean v2.0 An intelligent file erase utility. ͜ͻ5 Copyright 1987 by Steven B. Perkins ͜ͻ; Usage: KLEAN [d[u]:][afn] /[/][A][H][R][S][T][Z] ͜ ͜ͻM Options: =help, include ll files, orizontal sort, erase ead ͜ͻKonly without asking, show ystem files, ype/name sort, ap them all. ͜ ͜ͻH Klean gives a sorted, numbered list of all files matching [afn] and ͜ͻLasks which ones to erase (unless or is used, then Klean doesn't ask. ͜ͻL Aborts, or reply with a list of files to erase such as: 1,4 5 9-10,20- ͜ͻMKlean always shows the files selected and asks for final verification (unless ͜ͻL is used,) before deleting them all. If a very large directory is shown, ͜ͻMKlean pauses and prompts: "More . . ." Press to abort the list early. ͜ͻN is needed with options only for no filespec. Released for non-profit use. N  !F{!}2k!}2i!}2j!}2h!}2g!}2f!~ !F{͜!!F{!n&!/̀}oE 3͜~ !F{!!gz 3"t!F{*tn&!À!F{*tn&!Z̀}o*k&}o}2k!F{*tn&!H̀*i&}o}2i!F{*tn&!R̀*j&}o}2j!F{*tn&!S̀*h&}o}2h!F{*tn&!T̀*g&}o}2g!F{*tn&!Z̀*f&}o͜!}o}2f*t#2͜!E'3!~ !F{!F{!n&!/̀!F{!n&!/̀!F{;ͤ!̀}o}oEu3r- ! !o&"`!"~`!in&!yn&͓Eʾ3!in&"~`! *~`o&"v!F{;͇%*U!͹E3͜ͻNo files erased. #!*Ugz(4"t!S{*t+)*ts#r*t#4*U!*k&}o}oEZ5͜ͻWhich ones to erase?  !`P͏ ͜ !`;! e.Eʱ4͜ͻNo files erased. #!`;+*W!E4͜ͻErase:  !*WgzW5"t͜! e.!!a!S{*t+)^#V+)));!ͫ *t!F!̀EN5͜ *t#4i5͜ *U"W*f&E}5!Y}2l5*W!Eʻ5͜ ͜ͻO.K. to erase (y/n)?  !5!N}2l͜ ͜ *l&!ỲEʮ9!*Wgzʫ9"t͠Em6!ͪ!lE*l&!͓EF6͜ͻTo abort press : !͜*l&!̀Em6͜ͻAborted!#!Y}2l!"v͜! e.!ͫ!a!S{*t+)^#V+)));!ͫ! #!a!S{*t+)^#V+)))! n&!E8*j&E7!Y}2l'7͜!#ͻis Read Only! Erase? !*l&!ỲE8!!gzʋ7"p!{*p!a!S{*t+)^#V+)))*pn&s*p#D7! ! gz7"p!{*p!a!S{*t+)^#V+)))*p!n&s*p#Ö7!{! !{! n&!|g}os!!{o&"v*l&!Y͓*v!}oER8͜ͻ Not Erasedâ9!"p!{!n&!Eʦ8!6{!!@!{!n&s!6{!!:s!"p!! gz99"r!a!S{*t+)^#V+)))*rn&! ͓E09!6{*p!a!S{*t+)^#V+)))*rn&s*p!"p*r#ñ8!6{!*p!Rs!`!6{;q!`͔!*m&Eʒ9͜ͻError: not erased â9͜ͻErased*t#59͜ ͜ͻNo files erased. # ;q!`͔!*m&Ev͜ͻError: m6!ͪ!lE*l&!͓EF6͜ͻTo abort press : !͜*l&!̀Em6͜ͻAborted!#!Y}2l!"v͜! e.!ͫ!a!S{*t+)^#V+)));!ͫ! #!a!S{*t+)^#V+)))! n&!E8*j&E7!Y}2l'7͜!#ͻis Read Only! Erase? !*l&!ỲE8!!gzʋ7"p!{*p!a!S{*t+)^#V+)))*pn&s*p#D7! ! gz7"p!{*p!a!S{*t+)^#V+)))*p!n&s*p#Ö7!{! !{! n&!|g}os!!{o&"v*l&!Y͓*v!}oER8͜ͻ Not Erasedâ9!"p!{!n&!Eʦ8!6{!!@!{!n&s!6{!!:s!"p!! gz99"r!a!S{*t+)^#V+)))*rn&! ͓E09!6{*p!a!S{{$C-} (* so we can read keystrokes on the fly, and abort if desired *) Program Klean; (* This is an intelligent file erasing program. Type "Klean //" for help. Original version for IBM PC by Jim Taylor. Modified for CP/M 80 only, with improvements, by Steven B. Perkins. Copyright 1987. Version 2.0 9/23/87 *) TYPE String12 = string[12]; String80 = string[80]; item = record key : String12; end; Darray = array[1..513] of item; FCBarr = array[0..35] of char; Var IOVal, I,j,k, SortResult : integer; IOErr : boolean; ch : char; NoListQuery,EraseReadOnly,HorizontalSort,ShowSystemFiles: boolean; TypeNameSort,ZapThemAll: boolean; NameX : String12; Myx, count : integer; DoArray : array[1..513] of integer; DirNameStr : String12; TempStr : String[15]; (* Room for drive *) Mask : FCBarr; Dir : DArray; TheCommandStr : String80; TheFile : file; linecount: integer; olduser,newuser: integer; procedure I#OCheck; begin IOVal := IOresult; IOErr := (IOVal <> 0); end; Procedure GetKey; begin while not keypressed do; read(kbd,ch); ch:=upcase(ch); end; procedure QuickShell; var z,i,j : integer; t : item; looping: boolean; (* to avoid testing illegal array elements *) begin z:=1; repeat z:=z*3+1; until z>=count; repeat z:=(z-1) DIV 3; if TypeNameSort then for i:=z+1 to count do begin j:=i-z; t:=dir[i]; looping:=true; while (j>0) and looping do if (copy(dir[j].key,10,3) + dir[j].key > copy(t.key,10,3) + t.key) then begin dir[j+z]:=dir[j]; j:=j-z; end else looping:=false; dir[j+z]:=t; end else for i:=z+1 to count do begin j:=i-z; t:=dir[i]; while(dir[j].key > t.key) and (j>0) do begin dir[j+z]:=dir[j]; j:=j-z; end; dir[j+z]:=t; end; until z=1; end; procedure AllDone; begin olduser:=BDOS(32,olduser); (* restore original user *) halt; end; procedure GetNameX; var NameY, NameExt : String12; s,t : integer; wild:boolean; begin NameX:=' '; for s:=1 to 11 do NameX[s]:=chr(Mem[$5C+s]); if (NameX[1]=' ') or (NameX[1]='/') then NameX:='???????????'; end; procedure ShowName(ToPrint: integer); begin if ToPrint<=count then begin write(ToPrint:3,' ',Dir[ToPrint].key); if Dir[ToPrint].key[10]>chr(127) then write('r') else write(' '); if Dir[ToPrint].key[11]>chr(127) then write('s') else write(' '); if Dir[ToPrint].key[12]>chr(127) then write('a') else write(' '); end; end; procedure dirlist (s:String12); var M : String12; DTA : array [ 1..128 ] of Byte; NamR : String12; Error, I, Linecount, ToPrint, limit, delta : Integer; begin { main body of program DirList } FillChar(DTA,SizeOf(DTA),0); { Initialize the DTA buffer } FillChar(Mask,SizeOf(Mask),0); { Initialize the mask } FillChar(NamR,SizeOf(NamR),0); { Initialize the file name } FillChar(Dir,SizeOf(Dir),0); { Initialize the Name array } writeln('Klean v2.0 Copyright 1987 by Steven B. Perkins'); GetNameX; move(NameX[1],Mask[1],11); Mask[0]:=chr(MEM[$5C]); write(' FileName= '); if (ord(Mask[0])>0) or (newuser<>255) then begin if ord(Mask[0])>0 then write(chr(64+ord(Mask[0]))); if newuser<>255 then write(newuser); write(':'); end; writeln(copy(NameX,1,8),'.',copy(NameX,9,3)); error:=bdos($1a,addr(DTA)); error:=bdos($11,addr(mask)); count:=0; if (Error <> 255) then begin error:=error*32; (* point to name found *) for i:=1 to 8 do NamR[I] := Chr(DTA[error+i+1]); NamR[9]:='.'; for i:=10 to 12 do NamR[I] := Chr(DTA[error+i]); NamR[0]:=chr(12); if (DTA[error+11]<127) or ShowSystemFiles then count := 1; end; if error<>255 then Dir[1].key:=NamR; while (Error <> 255) do begin error:=bdos($12,addr(mask)); if (Error <> 255) then begin error:=error*32; (* point to name found *) for i:=1 to 8 do NamR[I] := Chr(DTA[error+i+1]); NamR[9]:='.'; for i:=10 to 12 do NamR[i] := Chr(DTA[error+i]); NamR[0]:=chr(12); Dir[count+1].key:=NamR; if (DTA[error+11]<127) or ShowSystemFiles then count:=count+1; end; end; QuickShell; linecount:=1; ToPrint:=1; (* New vertical format *) if HorizontalSort then begin delta:=1; limit:=count; end else begin limit:=(count + 3) div 4; delta:=limit; end; while ToPrint<=limit do begin ShowName(ToPrint); write(' '); ShowName(ToPrint+delta); write(' '); ShowName(ToPrint+delta+delta); write(' '); ShowName(ToPrint+3*delta); (* no space for terminals that do auto crlf at column 80 *) writeln; linecount:=linecount+1; if linecount > 22 then begin  write('More . . .'); getkey; linecount:=1; if ch<>chr(27) then for i:=1 to 10 do write(chr(8)) (* clear "More" *) else ToPrint:=count; (* aborts list *) if ch=chr(3) then AllDone; (* allow ^C to abort nicely *) end; if HorizontalSort then ToPrint:=ToPrint+4 else ToPrint:=ToPrint+1; end; writeln; end; procedure ChopItUp(S : String80); var I,II,TempInt2,code,tempint : integer; temp,temp2 : String12; procedure SubChop(t:String12); var ff:integer; begin if length(temp)<=0 then exit; ff:=pos('-',t); if ff<>0 then begin temp:=copy(t,1,ff-1); Val(temp,tempint,code); if Length(t)>=ff+1 then begin temp2:=copy(t,ff+1,length(t)); Val(temp2,tempint2,code); end else tempint2:=count; (* something like 3- *) for ii:=tempint to tempint2 do if (ii>0) and (ii<=count) then begin DoArray[MyX]:=ii; MyX:=MyX+1; end; end else begin Val(temp,temp$int,code); if (tempint>0) and (tempint<=count) then begin DoArray[MyX]:=tempint; MyX:=MyX+1; end; end; end; begin MyX:=1; temp:=''; for I:=1 to length(s) do begin if (s[i] <> ',') and (s[i]<>' ') then temp:=temp+s[i] else begin SubChop(temp); temp:=''; end; end; if temp > '' then begin SubChop(temp); end; MyX:=MyX-1; end; Procedure HelpMessage; begin writeln(' Klean v2.0 An intelligent file erase utility.'); writeln(' Copyright 1987 by Steven B. Perkins'); writeln(' Usage: KLEAN [d[u]:][afn] /[/][A][H][R][S][T][Z]'); writeln; writeln(' Options: =help, include ll files, orizontal sort, erase ead'); writeln('only without asking, show ystem files, ype/name sort, ap them all.'); writeln; writeln(' Klean gives a sorted, numbered list of all files matching [afn] and'); writeln('asks which ones to erase (unless or is used, then Klean doesn''t ask.'); writeln(' Aborts, or reply with a list of files to erase such as: 1,4 5 9-10,20-'); writeln('Klean always shows the files selected and asks for final verification (unless'); writeln(' is used,) before deleting them all. If a very large directory is shown,'); writeln('Klean pauses and prompts: "More . . ." Press to abort the list early.'); writeln(' is needed with options only for no filespec. Released for non-profit use.'); end; begin DirNameStr:=' '; NoListQuery:=False; HorizontalSort:=False; EraseReadOnly:=False; ShowSystemFiles:=False; TypeNameSort:=False; ZapThemAll:=False; DirNameStr:=ParamStr(1); if (ParamCount > 1) or (DirNameStr[1]='/') then begin DirNameStr:=ParamStr(ParamCount); for i:=1 to 6 do begin NoListQuery:=((DirNameStr[i]='A') or (DirNameStr[i]='Z') or NoListQuery); HorizontalSort:=((DirNameStr[i]='H') or HorizontalSort); EraseReadOnly:=((DirNameStr[i]='R') or EraseReadOnly); ShowSystemFiles:=((DirNameStr[i]='S') or ShowSystemFiles); TypeNameSort:=((DirNameStr[i]='T') or TypeNameSort); (* don't let them do: klean /z, must do: klean *.* /z *) ZapThemAll:=((DirNameStr[i]='Z') or ZapThemAll) and (ParamCount>1); end; end; if ParamCount > 0 then DirNameStr:=ParamStr(1); if (DirNameStr[1]='/') and ((DirNameStr[2]='/') or (Length(DirNameStr)=1)) then begin HelpMessage; Halt; end; olduser:=BDOS(32,$0ff); (* get current user for restore *) newuser:=255; if MEM[$69]<>MEM[$79] then begin (* zcpr3's different user indication *) newuser:=ord(MEM[$69]); IOVal:=BDOS(32,newuser); end; DirList(DirNameStr); if Count<=0 then begin writeln('No files erased.'); AllDone; end; for i:=1 to count do DoArray[i]:=i; if (Count>1) and not NoListQuery then begin Write('Which ones to erase? '); readln(TheCommandStr); writeln; if TheCommandStr <= ' ' then begin writeln('No files erased.'); AllDone; end; ChopItUp(TheCommandStr); if MyX>0 then writeln('Erase: '); for I:=1 to MyX do begin write(' ':4,Dir[DoArray[i]].key); if (I mod 4) = 0 then writeln; end; end else begin (* only one file shown, or erase ll, so don't ask for list *) writeln; MyX:=Count; end; if ZapThemAll then ch:='Y' else if MyX>0 then begin writeln; write('O.K. to erase (y/n)? '); getkey; end else ch:='N'; writeln; writeln; if ch = 'Y' then begin {$I-} for I:=1 to MyX do begin (* give them a chance to abort *) if KeyPressed then begin read(kbd,ch); if ch<>chr(27) then begin write('To abort press : '); GetKey; writeln; end; if ch=chr(27) then begin writeln('Aborted!'); Alldone; end; end; ch:='Y'; IOVal:=0; write(' ':4,Dir[DoArray[i]].key,' '); if Dir[DoArray[i]].key[10]>chr(128) then begin (* R/O file *) if EraseReadOnly then ch:='Y' else begin write(chr(7),'is Read Only! Erase? '); GetKey; end; if ch='Y' then begin for k:=1 to 8 do Mask[k]:=Dir[DoArray[i]].key[k]; for k:=9 to 11 do Mask[k]:=Dir[DoArray[i]].key[k+1]; Mask[9]:=chr(ord(Mask[9]) and $7f); (* clear R/O bit *) IOVal:=Bdos(30,ADDR(Mask)); end; end; if (ch<>'Y') or (IOVal>16) then writeln('Not Erased') else begin k:=1; if ord(Mask[0])>0 then begin TempStr[1]:=chr(64+ord(Mask[0])); TempStr[2]:=':'; k:=3; end; for j:=1 to 12 do if Dir[DoArray[i]].key[j]<>' ' then begin TempStr[k]:=Dir[DoArray[i]].key[j]; k:=k+1; end; TempStr[0]:=chr(k-1); assign(TheFile,TempStr); erase(TheFile); IoCheck; if IOErr then %writeln('Error: not erased ') else writeln('Erased'); end; end; {$I+} end else begin writeln; writeln('No files erased.'); end; AllDone; end.  8 do Mask[k]:=Dir[DoArray[i]].key[k]; for k:=9 to 11 do Mask[k]:=Dir[DoArray[i]].key[k+1]; Mask[9]:=chr(ord(Mask[9]) and $7f); (* clear R/O bit *) IOVal:=Bdos(30,ADDR(Mask)); end; end; if (ch<>'Y') or (IOVal>16) then writeln('Not Erased') else begin k:=1; if ord(Mask[0])>0 then begin TempStr[1]:=chr(64+ord(Mask[0])); TempStr[2]:=':'; k:=3; end; for j:=1 to 12 do if Dir[DoArray[i]].key[j]<>' ' then begin TempStr[k]:=Dir[DoArray[i]].key[j]; k:=k+1; end; TempStr[0]:=chr(k-1); assign(TheFile,TempStr); erase(TheFile); IoCheck; if IOErr then  This is the release date of the disk. KLEAN COM 9KLEAN PAS --CPM203 DOC SODU-KP .COM 5F F6 11136 87 SODU-MD3.COM A5 A1 11136 87 SODU-OS .COM 99 A6 11136 87 SODU-OS .INF 4F 0B 384 3 KLEAN .TXT 0E 59 896 7 KLEAN .COM 8B CA 14592 114 KLEAN .PAS 85 3A 11520 90 -PEARRE .X04 00 00 0 0  ERROR :Not enough space left on destination disk! $ ERROR : File is R/O or Write protect tab on dest.$ ERROR : You don't  Fog Library Disk FOG-CPM.203 Copyright (1989) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Some user find the file utility on this disk better than the NewSWeeP and NULU it combines. Also on this disk are a screen oriented disk utility (based on DU) and an intelligent file erase program. Filename Description -03-09 .89 This is the release date of the disk. -CPM203 .DOC This is the description of the disk contents. B29-C128.COM 4980 15K ver. 3.04 [B29 1 of 8] A file utility program that combines most of the features of NewSWeeP and NULU. It also lets you print multiple files, select the printer pitch to be used for printing and skips over the perforation. Hex dumps of .COM, .HEX, etc. files is also enabled. B29-EXEC.COM 771D 15K ver. 3.04 [B29 2 of 8] B29-OS1 .COM ADA3 15K ver. 3.04 [B29 3 of 8] B29-READ.ME E459 2K ver. 3.04 [B29 4 of 8] B29INST .COM 10DB 7K ver. 3.04 [B29 5 of 8] B29INST .WS 467E 3K ver. 3.04 [B29 6 of 8] B29V304 .WS E7A4 32K ver. 3.04 [B29 7 of 8] C-128 .DOC 92AD 1K ver. 3.04 [B29 8 of 8] SODU .DOC F944 5K ver. 8.7 [Screen Oriented DU 1 of 6]  Based on the well-know DU, this has enhanced screen display. SODU87 .DOC 91C9 12K ver. 8.7 [Screen Oriented DU 2 of 6] SODU-KP .COM 5FF6 11K ver. 8.7 [Screen Oriented DU 3 of 6] SODU-MD3.COM A5A1 11K ver. 8.7 [Screen Oriented DU 4 of 6] SODU-OS .COM 99A6 11K ver. 8.7 [Screen Oriented DU 5 of 6] SODU-OS .INF 4F0B 1K ver. 8.7 [Screen Oriented DU 6 of 6] KLEAN .COM 8BCA 15K ver. 2.0 [Klean 1 of 3] Provides sorted and numbered list of all files which match your wildcard specifications and then asks which you want to erase. Helps prevent accidental erasures. KLEAN .TXT 0E59 1K ver. 2.0 [Klean 2 of 3] KLEAN .PAS 853A 12K ver. 2.0 [Klean 3 of 3] ? filedesc SET ALTE OFF SET ALTE TO SELE A STOR diskf-"-"-SUBST(dfile,5,3)-"&mdiskno"-".DOC" TO malt SET ALTE TO &malt SET ALTE ON DO WHILE diskno="&mdiskno".AND. .NOT. EOF() IF diskno="000" IF dfile="FOG-DOS" ? " &This is the disk name. SUPRBDOSDOC 'SUPRDOS2TXT '