IMD 1.16: 31/05/2007 20:38:15 FOGCPM.146 --FOGCPM146BU COM#BU DOC: BU AQMBU AQMU !"#$%&'()*-09-00 86 DDD11 DOC+,-.DDD AQM/0123456789:;<=>DDD AQM0?@ABCD-CPM146 DOCDE-LBR COM1EFGHIJKDE-LBR DOCLERAA COMMERAA DOCNN41 COM OPQRN41 DOC"STUVWN41 AQMXYZ[\]^_`abcdefgN41 AQM$hijklREAD COM1mnopqrsREAD DOCtuvwWIPE COMxWIPE DOCyz{WIPEALL SUB|WIPE11 COM}WIPE11 ASM~XCCP COMXCCP DOCcXCCP HLPXREN COMXRENAME DOCXREN ASMHXUSER COMXUSER DOCXUSER ASMThis is the disk name. DPRNHEXSYMBAK$$$TMPBAD ͻ ͵ ͠ ͖ 8{ | 1!"!"222 22" x27y28= & ~ ͕ u2G! ~QuAu#š6 ͕ u:2 &  |  | :_ ͕ ½:Yu ͕ u:NYu> >2Y ͕ u:Y(N(u2 ͕ u:YFNFu2=0 ͕ I! :o}& : & ñ͊> 2=͕͊͊͟ –:NʱY–͞,& ????????????& ! ":2 :=2*~2!2(2#"| : 2::_ :2"2 x27y285| << c<  !<{{{## :Y—:&ʗW!# ~w#œ : 2*! * "6*#"** W>2:<2& !"!"* "*#"*+ ڞ*"*" * "* #" * 2** Z/* * !/ Zf& *#"!"1 * "*+" *:'#:: =2 ** c õ:===2c 1 *~2'#~2>2 \c :=2"C& !"* "~*:G „*" "͍*+""I*"I**w#Ô7*#"!" ">2'>͍#"!~ʗ:' e! > 2 2 2 >2 @$!A :2@:2_ d!@$ :2d:@_@<}@#:! +*a "! +}/o:2! ">*ͤ2`2a2b2c**$ n:d_d͹ **$ _d2| :2:2| G ͭ :!W d:=YK!D~w:@_@!͊d& ͐>| | & & | &  ͐7 ڭ |*>+">ͤ{0*>w#">& | c : =2 \c >2 c c I! S! c \c >2 ><2 !:'U~2'[͕ >! ʱ! =& | <|  :A_"##~2^#V"+ #"##V#^z+ G{+ 2>2͹ **$ | :& > \͕  :N> Y :2>_ <" *"\|  d$T :2d>-2e:2f:2g:2h:2i:2j:2k:'2l!m dd<>d!"*DM*~+ _*"#  **$  "**$  ":}o|g= |g}o }o|g6 >@ ; y!"*"/2:@_*/@œ | *#"*/"/* ڡ b >2:d_*"/* */d | *+" */"/ý >2~2#~ x2y2#  |}\| | _c c }:c :2':2><2>2 \c x _f ʑ _ &  !:G~aڷ {ҷ _w#© :~#  # 00   00/00/00 HH:MM:SSABC >>> Backup Utility v1.0 12/08/1984 by Kim Levitt based on NEWBACK by G. Young Enter Letter of Drives to Backup from as "A","B" or "AB": Enter Letter of Floppy Drive to Backup to: >>> Backing up Drive(s): to Floppy Drive: Is this Correct (Y/N)? Enter 8 Char Date for Reports MM/DD/YY: Skip files that have been backed up? (F4 bit set) (Y/N)? Set backup attribute bit (F4) after backup? (Y/N)? Backup all user areas (Y/N)?  NO files to backup found !! Scanning directories... Disk: ? User: 00Floppy Disk Empty, proceeding...ERASE Floppy Disk First (Y/N)? MEMORY FULL...BACKUP NOT COMPLETE Begin Backup Procedure (Y/N)? Sorting...File not found... ABORTINGBacking up: to: ... read  write Beginning backup to volume: ... Eliminating duplicate entries... Writing consolidated listing... done.Please dismount backup disk and label: ???Mount backup disk on l & enter 3 char disk ID or "END": ENDto:: ... .ead k : THE FOLLOWING FILES ARE ON DISKETTE NO.: ina AS OF plicate CONSOLIDATED ALPHABETICAL INDEX BY DISK/USER AS OF unt back FILE TOO LARGE FOR ONE DISKETTE SO NOT BACKED UP: Floppy disk full. Starting Continuing Finished backup of disk: ?. [Exiting BU] TTE NO.: ina AS OF plicate CONSOLIDATED ALPHABETICAL INDEX B DISK/USER AS OF unt back FILE TOO LARGE FOR ONE DISKETTE SO NOT BACKED UP: Floppy disk full. Starting Continuing FYdisk: ?. MORY FULL...BACKUP NOT COMPLETE Begin Backup Procedure (Y/N)? Sorting...File not found... ABORTINGBacking up: to: ... read  write Beginning backup to volume: ... Eliminating duplicate entries... Writing consolidated listing... done.Please dismount backup disk and label: ???Mount backup disk on l & enter 3 char disk ID or "END": ENDto:: ... .ead k : THE FOLLOWING FILES ARE ON DISKETTE NO.: ina AS OF plicate CONSOLIDATED ALPHABETICAL INDEX BY DISK/USER AS OF unt back FILE TOO LARGE FOR ONE DISKETTE SO NOT BACKED UP: Floppy disk full. Starting  BU -- Backup Utility - Version 1.0 - 12/08/1984 by Kim Levitt (based on NEWBACK by G. Young) BU.CO͠ i simple bu effectiv har dis backu utility I wil bac u mos har dis system withou an nee fo modificatio o th .AS͠ sourc cod (althoug i ha bee provide i yo nee t change) Locatio 103 i th .CO͠ fil contain te byt are tha contain you terminal' clea scree contro cod o escap sequence i you clea screen/hom curso i somethin othe tha Ctrl- (1AH the yo wil hav t patc this Locatio 10D ha th numbe o fil type whic yo wis t hav exclude fro backup th fil i currentl configure t ski differen filetype whic ar store i memory location 10EH: PRN,HEX,SYM,BAK,$$$,TMP,BAD Whe yo ru BU i wil as yo firs whic drive yo wis t backup Specif thes altogethe wit n spaces comma o othe separatin character a in "ABC" I wil the as fo th flopp driv t backu to Specif jus th driv lette wit n colo o th en a in "D" Afte displayin thi information you will be asked to verify it before continuing. Nex yo wil b aske i yo wis al use area backe up Answe 'Y i yo wis use area 0-1 automaticall scanned I yo specif 'N' yo wil onl sca th use are yo ar currently in. Th followin questio concern whethe o no yo wis file wit th "F4 ( fil attribut bi supporte unde CP/M bi t b skippe durin backup Thi featur ca b use s tha yo wil onl backu ne file (one tha haven' ha th F bi se b B o som othe utilit suc a NSW whic ca se o rese th F attribut bit) Th nex promp ask whethe yo wan th F bi se afte backu (normall yes bu yo ma no wan t set the bit for some reason.) Finally yo ar prompte fo th curren dat whic yo mus ente i usin th "MM/DD/YY format I you syste ha real- tim clock yo ma b abl t writ routin t ge th dat and/o tim fo displa o th report withou promptin you bu thi require modificatio o th sourc code o course. Afte thes preliminar questions th har dis directorie ar scanned duplicate ar eliminate fro th list repor listin sorte b disk/use i printe ou an the th use i aske whethe o no t begi th backu process Answe 'Y t continu an the yo wil b prompte t ente th firs flopp volum fo backu an ente characte volum ID Th backu proces begin an yo wil b prompte t chang diskette wheneve th disk fil u and/o th har dis bein backe u change (t facilitat restorin file i i recommende tha differen drive b backe u o separat floppies) A eac fil i backe up it filenam i printe o th printe (yo D hav t hav printe on-lin t us thi progra o i ma han up a par o repor listin file backe u b diskette. A eac promp fo ne diskette yo ca ente "END t abor th backu process Provide yo ar skippin file wit th F bi se an settin th F attribut afte backup yo shoul b abl t resum backu late an ski al th file yo previousl backe up Befor beginnin complet dis backu session yo ca eithe jus specif tha F file ar NO t b skippe o yo ca clea th F bi o al th file yo wil wan t backu befor runnin B (us NSW fo thi purpose) Not tha i yo ar no skippin F files yo wil no b abl t resum backu afte aborting s "noskip backu ha t b don al a once (ɠ d weekl "noskip backu t ge EVERYTHIN an dail o s "skip backup to get only the new stuff..) Afte al file selecte fo backu hav bee copie t disk B will automatically terminate. NOTE B wil ski file whic ar to larg t b backe u ont singl floppy Unlik som othe backu programs thi i strictl file-oriented whic leave yo large-fil peopl withou backu vi thi program bu th advantag i tha i i eas t restor file withou doin complet restor o EVERYTHING like some other PD hard disk backup programs do. Hop yo enjo usin BU o yeah P.S assum yo ru thi o CRԠ o consol monitor a i use backspace an overwritin whic woul loo rea funn o printe an ma wea hole i th pape durin backups!! (Th printe report whic g t th LST devic ar OK o course jus th consol display ge little fancy..) I yo fin an bug yo wan t fi o wan t improv thi baby g ahea an fee free bu tr t kee th hardwar specifi stuf ou o B itself ( wil releas som RT routine late whic ca b include i th .AS͠ fil i th GETDATŠ area) an tr t kee i "universal" Idea fo enhancements CRà chec wit CR displaye o floppy-repor an CR verificatio o backu file woul ad th cod bu don' hav tim (hav t wor o MBBS) O course th adde cod woul reduc th siz o th TP spac availabl fo th sor table whic migh b problem s mayb it' jus a wel kep simple short swee an fast. ( verifyin backu progra woul tak mor tha twic a lon t run bu would o cours b nic t hav a a OPTIONA feature. Tr t kee th use interfac (prompt an displays lookin clean Pas alon an update t my RCP/M: MBBS Headquarters RCP/M; (213) 653-6398 (300/1200). I yo appreciat thi program woul appreciat donatio o $1 o mor t suppor m public-domai softwar effort a wel a m RCP/M Sen you donation to Micr Bulleti Boar Systems 803 Sunse Blvd. #975 Lo Angeles C 90046 (Mak check payabl t "Micr Bulleti Boar Systems".) Thanks -- -- Kim Levitt -- 12/08/84  MBBS HQ RCP/M (213) 653-6398  hav a a OPTIONA feature. Tr t kee th use interfac (prompt an displays lookin clean Pas alon an update t my RCP/M: MBBS Headquarters RCP/M; (213) 653-6398 (300/1200). I yo appreciat thi program woul appreciat donatio o $1 o mor t suppor m public-domai softwar effort a wel a m RCP/M Sen you donation to Micr Bulleti Boar Systems 803 Sunse Blvd. #975 Lo Angeles C 90046 (Mak check payabl t "Micr Bulleti Boar Systems".) Thanks -- -- Kim Levitt -- 12/08/84 vBU.ASMd  !"#$%&'()*+,-./01234567o89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc?W#v00z E~ŷ/+GMxA> ~%܄{r*?f̦_ZbGp*~FQhS#Ie#V e+SbA I/փ= [ ̭C֠I!LPaCЦ0{0m}8@mIzPK29d/-ekH}*>zbv ne%a;o|ozI"QXڦ +X{%|n L>$L!sux$!# ­Pf/-D=CM0zi/I$IZCmD6@-۾0H>r{i$ ~l/?;6 ^?>;l[a)m29m8x E)65ė}GbGp .T N_.}+#vmm$%Hj;T? `LQVYޕ!f=i=A ?tz{bz4|?|%<Gح'ĎP]GY\ 춯a $F $ɝ@&v8v5,8oP5l#_^GYۭ S$xbW֡DYԡxK*#y@-$Uy{=0*҇WKKxHe6/axCO= vwë;j)[ LT^`ODy\ G6,( bA/@l/JBNȦ5<{x6[[j)ʇ m;TR`='a cp)켽l pX¸$sIbGۗoLix'>Jz6On'5حeˏh'C8l-gRMD$WȦ_ZX{@A`IDVoj)Pf:B֐- ?|*ivb_ mz,}(w$s/pwz3HpVZ CXEˠBݩЦ5$0{j)2L2,IB!v0B%U{(`X&ԠiP5|v#v P]~~BA> S6-qktR"0v00TR?;b.Pn!X Pt践;TK;P&+Hngo*L%0b2e7xI Q֏)_,_'^ Á`k$J v LHvO>yKb˝ 2@- J +[v$?;b]LV DׇDJ*kI|(CB\VbaʇN%v7bG<qՇ5^ l1+ĎAaU .u*)EeqaO.!$ 94p>405UOՇ5#:/5ɥ*H"۾1atNpTB7H_ ΗJ9L ?NL7|$"՛u|$"vcƋ`g{1/9n]2qVbaf0>% >"!>L"5bՇ5^d3D7~s8KՇ5;OIYzER)Dv/]FJgbG<./<#κI1baqMuՇ5^Έuwk󌸘L/qM</q1.k03&/q7, Շ5^,fęO3NqՇ5N3L69VxzJ/ Շ5ψ>g>q, Շ58#ܴVx fU#VxgqyՇ5CՇ53*_%Vz1#|X}XŌ8[:~_ψz v<(s0-2h!LĀ cW> ]N| K 4 mJbeNu\`E1 F] K֙ OA  N J:XM= 'D K!LeAoD6mW`LIZC+n@*RzHzIH X&wI{ae! SCo+hHvB0J:HvXBZ ^E/KbGC$tTq U#Ti j)?m%C$v@{tq1 2ɠ?~&vęf,/Ss\4Es\4C4x\Y`)^O$Hlwa*9B-0PKy؋IpX;[-V}-AYX&wdĎx7fĿKxs˝D݆;H7fi9F݆;D`砖 ˝DhFUkb4#^kb4#^51͈y;&F3kp*8'-lwhb|+=/'CdaHRHf;b>-KX&w°L+vT,Vsr/!3#tg@zSi2|F] vv[Z $g{')WĘZc:Gt.ɝ@{[ d0eCe#['L{*Ro*L;bӲ{(ꡘPmlUeE<(M YS-Dv*9I]{"bg`1%1Mb6#x MrbܔN-TrG,}az<`=>9d5$ˠIcXu DʇAFQx<.&DK{AjasMk~o=X5 =a뽤 x 1qnaMڔ@kM#½mj~)^^ Hq`.qN T$,nr,sbl#͈N`n=5( M# 1y* CmwĠɈ1\UY'bGAĎ@ktg $R HJzSiaM|*«Ԧ(J@kthS6~@D0R@/J@Y8'vGY5~XWq^tb̦^ H9$Z'$u-51>?ae~BtR RW`c` <c1&@tM̭bԛgM1) ՉJ@Y;!F)4,U~)^@Ym@; L@klcEl@&+qDt^j)0m,sa +bGe~;bдJ$PN`X&iaEnPzaxb|be~Bt+kk簳Q;!lZupMyP'D^A8^2I!,1 Άe!_12`"y#1EzIv#R>L`X&Ĩ7fYO]zPKڇw(%HY/*P@k&ĘM < <( ZVZJ K`OĨMŤ2Dw% j xP"eAvH<(Mɺltw%$}u#2(b[uNzSiLYݕ(}x'( d1 8/uV j xIh+6~8chq^v p ԔGtWᝀpNs2Br)1& X`dݤ[ĘZh٭m>Pp݁`@d]Y~ +Q0XeP(J@k&蒴+Q%tb̦yq+1j`1) ]$c6-51>O0΃2?;bԛM6~@D!{F#Pp 1fa]yM1x"yP'D~([s!{o+H^<1j`1) ]$c6-zrMO8q#iaE=l#xI"b|c{,0h.]$ x$i^AmA-eIs;EMqI':.WDm$N$i^Am%/bGl:.frW%#F)4y9DKkn,~yKDY5~XWq^tb̦yq ѩe"_& .DzH 4OXL*CtW I{ĘM x +rmyKZWPo4ĘM \7`s;8EĎ8@q`<,P-G&Ď@U$pn"Qd1 *΋nBٴ1>O0΃2?!:LTD•([ {^AFQIYeJ$it/iaE. w0{>TKX *0`c6-zrMOWy0be~Bt"bGWy0UI#XbGP,p.!n@Ә ݕ(KNz^EĘZuE7Aa`]Ap% Kb̦~Ct`X&H28 /51>ONNH6pUĨ7ΚbRV;:Qso^bjb"IC# tchUntWN= nl_8kLWyV_O DtbGN@-D ( ,m_C%!F)4&+D,N@klcEY5V ]:2(/ARCQ+sD@8e-$U>^_B.ؕ.Zm_Yw%'tmWVĨ7&Zkt^v+R,0%ĘZcΧeo%̷}Ďxҵ]Y@T.0{ݦ5_+ y 1MtBR Eɕch:sb|n(&E< $Ԫe^P[H@mS!vā@k2Gt Η.w<d/5at aMY5nRc{,0h*'t/{{'Pow}8$J@RC1̺vOw)$}2ĘZMYOct҇0M@(I%",M71 Ʋvev>L$}*JDY5nR;6~x@)4c|X9\-'s2nw0ߦ mJY5~XWq^tb̦ym UFٴ51>?ᢘ2ĘM xMϓ'lĘZd7);'vji#yK^v+ĎxQLxV#F)4զ51fح:'v=Upj##vɠۭ ShH}x')@;{0b^4*HփZ ڇwa KIA-[#܇}O փZ >k8o܇}V}!K$PK/0 Iki->TKU w!n փZ >GbG@-~9`[E/I I<%Z ԡAYIͺm?.@fċ_7Es\4Es\4hFh.梹h.梹h.梹h. bG\m21M`r{F~n'i^=>>ch:sbԛg)cI]{"sPKڇw*9BL )ONY$%Fm:JbEɝ@.qU;IMy<6"砖/^D,DCJ 1l ѥm$KI!{X&wg!IS|"F=cI]{"s}x's/vG ]ڇw2ɠcX"!8Ma1xZ`; 14Ft(S=9r>lp"Q0RE;ڇw*9BL )OĨ7)bt5at a {J1 8/uNlfrW%l]$v&/\Qu]m$,0x#2B8{ڂZ'I&/+/jp31&@twIְCd!z$X`UKt(FaMڔ@kM#:%}Bd¿6frW%1y:.] } IkbuKDL| uB$ @k̺ɱ̉4#$!AYl^1\UYbl#MFq:|=;jYQo 4:JSĘZc:'F)4o]$  $u%`n=ԡAY *JDܴ1f8.Ft( 1M1FtW`HAz  ̚NqNY5ݕ(C/I1>?Dt*Ja jF_C//':Q ̽|8;IxЛMcmqDA*(TKHJ<<"X`,&fɉ1 t11b|~IqR {ˠ%0 #F/Ďx)4_$$U޿RIMQo 5o]ze00:n91fOnH_B~#'\te[VM` +( I]{"S2X_c6-E2شI0/oFOʶ2b4A蒺? BR^ ĘM |25H%)x7b|~EWe D5AYHK/-@d3DKj /hrQ <d/  2ɠGĘZc+bG @ٴ׈. w0ů0{~#yYLхsHj Ԡ, Kna+CEX. ]}}-,~s1b[P"p/- e<0bZ.Cja+C`S[!vj/IIsDZTqŴĨ7ΚrQ Eʇ;92Z9T%1tBtj)p'> m ;o|'vq^%`R_3bl#M@d3b4Y#1>O0bJQo 4M|3?N=86Q']|SLc1kbG<6y|SLh3b|~B91M?N+b1iPVj/ 1 b,&4NqRm;bYS. ]6܁Mo[TP"bl$L R|0adP#bG<&rAc6-be⡗(LRH'-1>g86"ݕe!_T CdlpF&+q$NɴĎxQq^m1bcݤBt(e^` $ zI"6TKb3m0]쭿{D1M)M+QeD1n":.wgPTrNçZ>c{,pl*'t{{'e|$",Xiy0Ɣ.L/{I̭T~Q Ĩ7xBe|$0/51!x S(HE l,/DA;s/u8$zb3m0l#+QenSEd3bg`$Gta:xK`} ݦL̃10tsHEFp%QqѩeZ (;K~^i'D+{||Jν|2DĨ7͏7b4E۳ɠ A1f֘u` x #%~+1>O2T|N- xk0 1R {lc]cYĎxRmu\QuI1fODtW`$!pIjRO2TܔGD=6,"/ 0%uI RE6OM^fFtT=6bzG۾aznU $pޞϽ@dzSE92nB젶@ g/C Q; v*sbK%)T`};l]7= 6m9}=; )Ocײ V>C)P^@-,g&vX, 6M'g+C00|SA 6'bu7}=`l^a`L=0|ZVY\<;,׿Mrg:;]7=;,>Ɣ>ƔY5tM_U;>Ɣ`է{S~&v>ƔU;%vAށ+#vqW9U.'ĎAjA-jF۫p00UPw_=߅v5/1 &]qx,uL`qܕ;] VA{J HR2"U^Eo X57X PI.0maϴ[lN{ *j%U0}a7ޙGYequ|2(2D0vj)p0MV/zSݬ)Vrvj)s/ *&Ջ X2D, 桏1^6z )OĎXwt3m`S`'w% R`z/D1^;ӔUOzqa:xK Tp/CN X3GK"j)/ $UV/LXƔ'bX6zk V"砖ݦ I^a)5@CE bջхe/6Uaϴ[lNİzdX;eP%^@Y}ag-ldX_N7PyHoİzau`n]jO{I vϠ,,{İzy`wqW敁yRj_J  TrRD =Vo1 VrփZ i*zkwİzg-0|%Ջi6؜aϴ[l^@ϴ[`L ?H%^}`SI+/j))1^;ӔUOzqj)`J< Ik^RE X3Gw/C KP^`D R _xaϴ[`L ? S%K`}M =Vomy߻>0D Z v*0RaRL6z7#K<Vomy%&=Eϴ[$'Kh ke@ Vnz՟RRi-n L/{Iح;bX6z )_af7ԵCB-İz3m`SaZ-iPVB7.azΆ%ey+TrӲ *9jLeX&镀Z { *Jwa (O%x1^;U;%ՋiD XؔUOİzav VwUrSRV/lsI]Z" mJ =Vo1+䒺#% [+XSɹOI]*9)kV/lsI]WD*LڔV/zSݬɫvJ ,Vomw`N%^>%u_?W幝+{\#vĎ8ʼ2(VaFK!^#vegSZ D+aidNP^e%H|(#@ ˆ؁Z Y<9a*.H }BZ Y<9^R H؁D}#$N,WaM!Ta\##.iWbԛMSNb@Y5v|ΉQϴ[$H v*sTP"bX `no#%i6؜`NYeT<"Ջz7kʠQVY\L%"b1j|ĘSlyM1}Rm$6{T"bG<-'y&ջ6ؼ]- CB z%Xk+1^`w.&a*0}WTS!F=c1^@kX- rbXMw2bXdְzE幝ݤ2'vM1} FmXŤ&91^LV]@ 'Xݤ9 *bXջV/OIseag-0 H%1^;ӔUOİz1;t{{'AR/AYPKHİzg-0|E$Kh ;VsbX6z˃1İz1Vfİzg-leMant^"e^R;*)1^6z )OK= vK)Rİzynz76yahbGJq~ ՋiVrV {Z [%U`S!K<Vo1V/V&&> u/Ď펕.@z ƔnoR@%^`P7Ե?Z%H4QazEz Ɣ'DMTI *JDXMM~ Fm D50=̭bl#M@ٴ,/1OĎgXL6hbIɉ{\#vcݬ1bѕ-16S"+Q{IHZJνc1 m6[j)+sPK!x ƔrC%pQo 5e"H@R^R`H_c<c1M),.E I!k/QsA-"lZ_ D/ $Uð^R_c<cWD'J|H`o# @FWo)̽CR  K-") vJaaLd|.þe5$<% 1`wYPD`wazaY`DJ#1bc87 PI.87 ̭y#q^m@숻[OChmĎxҵAݱ"vēj/ ]1 ƶ;Vsb,&!T!RW`%P xbg``LO8ncQo 5e":Pɹ>Lo#,^RE7'Fe?d8oyI/>T|.4-1fObR yRjbG87 1f[Dx{BCF.]d#KNlt+Ĩ7fQL6~ ,즍@\59at b|n8~"AtIZnS rvĎxѕ"Ĩ7Κ2h1 EWA4 cAs NIONIO_ONIO__}zI<ح?DH$=4NIO_ߣTZmj! hYd#zI<|8c{,pl7e#~nb` 1đ'OT"Qo 5e~}EtW k/Qv*9*IzSiffQ )<%Mr' Ӊ@ klcEX-1Olz'^A~#1y3Fb&2hݕ(F1:.] Uc{,0k*_%H@kMhtnKPKe=Π,%̇31MffHyGb1jd7)"Q^ .@ݟc0)!w{]B;e!1\LHQgfJ_CFPN1^xBtM+[bbl#VM"Pc{,0kJݐ=ˠ[bq4]>ͭz?Ct)GpBU"eP1ME6:R`Y<cYM'BchbDgwZ n`BŤĀpn=1Ď@"`@. ̚lQ ݧ0He}@kM6.t2Dw% e8W0Oe=1nX&=ܜ!ZsB$h1M"QpPM1 E#h42W9T1l3DWe/1n"H-)LE6~}ݕ(@.ɠ K~+0ݦ5lwĘZ97D7Ne>vso0LL] ^ S!F)p֜6aLQo 5r4Ta4/1i7Ӽ$F=gf'b[qSc83l>^`z// $^jbgf_߿G7"*LzazEq,_1E6~}gb3mpf:~BtW` $LqQϴn77#~xP-a.l vĘZc<δ]$p@Y8'vG]7Ď p1]d#vP->b`; hU H-)T ̚&A7$}2(@kM#Os]FJlHzgbGzSiE6ZzQj)0{¼%s1TzQhtK@kM;b1YDAK. .QϴY хsHe-ë" v=7L\EYUĘZc<δ9CS7~%vĨ7f1]d#$J@-a/`Sv$X`ִ͢ĘZh[y 1b|~BS7ĎYS-1fָ6ȉQo 4͘ݬ[b[uNzSi$/@k[Ĩ7fn+1feΉQ YOMy$8pZNLc{,0h.1E+bԛM3-'yYeĘZc:'Fm,L<d/%vj/ ];I/Qo 4dĘZcΧ@LI^V1fح:'Ʋʉ#6ݤ:hMqM9#6EvI~ F)4mݦ .1 nO9K%W`Be;E1)Ĩ7fQL6~ ,즍1 FSmĘZcMŢ+[b,=ވ#vDJjvT"bG|ӭ1N GbbΈQo  bԛMDouz Fls7:%F)plNh#1n1fF]&'{bΈQϴi^68#x LgĘZMΉM41kb3mfvGlgϴi^㴛 1N)XV9#6~8ch:sbԛM3f76~ ,91UN숧e1Ĩ7fZNʈ1 F]91j`l^d%I|(CݦJ<1>O0&&F)4Yʂ=a*ĘZ.cASVcWb,g$bԛMc8ĘZ.*'vwĎϪbԛMzz.LkazU(PvvsĘZ.@o&PK:n!!,,%Yst\ ĘZc+bԛMS Qo 5&+bl7b1M)&chsbԛMzAY5"Ή=4e+1ymy%X`bO1Ť&91UNW#λiXte{ X`,ngP6S%ew`0~Oqޭsb|n8.&vwĎzQo 5ej7ĘSl nĎAc87 1M2obqn)z;⬛@d$obqnzQo 4M;@k&ĘM |Oϓ'l$'F)pʈQo 4M51ȉ=861 ƬkAY.I*CzSiYSL*#Xؼ',X!}$;G1 LqVNQo 4͘ݬۿch:sbԛMst\ĘZc:'F)4cvnchq^vcY8GW[H K$ Iz%PmDY5Q YOMy$x]௧1& X`ĕ6 1f8.&X`ƈ.JBEl@d3b,&c4-1 X5-3|@_| Ac݃( 9CchcvGASchc#1y m2GtQr'Czppc{,0h.1\hS1fO"vĨgB/ʪ"M6{ F=܌ĘZc<δ43b51>O*bԛMSӅ&,u>]NqUe@숫28h @k&ĘM < 2 Fm,&ec6-zrMO82 lZkb|O0"6Av.@;$8'vGbމW0nw t?'8p1]d#15Kq AY{*sbE6~=!yK$ rFHhGbE6~}EtM+h/|D (KhWDcCqbƯQMW.l+1j  .lGtp/CY[Oԉs8'vGh+:X25at /0vOqbƯEIZݝ;l#?nׇRÝ{&FmAQAK. 1M62n%񰍤dm(Qϴ1FtW {;$*)ɠ(]863bl#f&F=:GDdPCR^8@mwĠiݕ(8_*{@kf. j \jVdݦ*Ld%NH^Rj K%<@3DZM.E50TVQϴ^Ǖ!M6{ F= 611f3m*D2eUchXϴ^UN`QV܌ĨgB̉qQϴnMDAl1 xiS!60E 6)6?chXnxHL\vs3"(h ܌XV9#g"?6.t2Dw% e8W0Oe=ؕnXp 2+''Dt~om*8]3?@ Dp` zbl#&2Јe8W{8_*!ƶ;nbl#͌@#KΗJ8kbvS?d%NqQqFqqg8tp$Xؼ'6Q43bb,& ƶ;bhb, d%!> b̦^,3D! ^gb|{PKT~Qe{'އJ\7bdb3mp4]aZZ (;쭿$,~x/WaG̔U輨O!^_B{IKo).0jIjRcYq,׋16S'x U;%F=`sBtI{[2QLRKzSi.Vo`}AD%RWĘZcֵӲz ,T@z U;%M6{@Dz@R^cYWibq4]LzSiE6c{,0k~y\}@wC%?m%Uachbbb|=y٭sb2Q8++( j)8]34#܅@eJDujl :eA-F.iWb,&48]34vGcY[ĘZh 1>SEu8hqMq$i71UNx3Dau8`t8]3)e@qWV"PRqgh]F j $!nÕyjl :eA-F.iq^v+1 bbl#VM@ɺIΉ1 t11N)b|neq]zi7ECn#1N)ΈrbzGuE79ch:sD*[j)O[ThSbԛMSLcYSLq^ VZ xĘZhYSL+1j`1&91ve1O9.B/ R{Omwı Mbl#MKٴ3liwMϓ '<#`R3bl#M@<فghGb|L`gTI BB-8]3zHJ- 2ɠGĎ84epcNEt/C8eߡb|guWb,&%N1&'bGu2(#κOXf/PT!ڂM%")f=#6A^E[x _..\\lvhC_7Ďؔű`FVj 6PmDfċ梹h.梹h.x\4Es\4:IksH;bGnr@3bV6zde`Fc2nwVa&+ F35N/߾ۯppZBl̈װz;'`ST? %<E pMf bGueAYXv;951/q֕̈Y12 ˠ/Ͽ51/1BICy3u* e$J`n=^Eж_xAPML@7rt;#|cQpN|x*sϐ̕x8'v|e7n.:.f1n;HxH$|e7n.[:> qt^4דa/( d`ni #`3bV6z\CazuePև=>>^7Y#6E|c`F)x#n.:JS37cLqUf닋Wt`F+\/z] [;uAӫWeW0#n2+XvF}/ϿusA`\>J7mvGX~||f=ICֵS]usA fĬl*LaLRo_&]^4ױ*L bGLWPow}8$J@RC bG\Nbp@3bV6z\ +l>%5a vĦTfkm*#6$oqts=%0m at IZC?5#>v:;n+( Dza)^q;fıuks2nwP-d7) 9n;vڇw(%#$U= CFPPMp\;jbtx]M5#񴜘"9Orx"u\L'b0#^dQ`bFfki9?N=1xZNx:ູ fq\M`F\7Ď8+B/fĬlF/l vTawEuvHĎyu@7b0#^usA⡍`FF/E+ȻtP>TJ&"kb0#^L n.omp0#fe%at m?^7YEsA`FF/X%^usA숳n^4יMUn꺹 vċbR^4׋0 #u?̈pN0=573oMV6z\;jSfĬlPnыUf bG|3xAgf01gfQ&o3V01'FĎx1]dLH숋ɸ^d&q1)&Ď8΃&oĎ01+O]MO}rB(knӺI}R .&U6&|8`b|%΃101Ǖ^`b<Ɣ_c_c01t@+ql^`b|%c6/^`r{8f"Qp5( aZC9JjD݆ٺ\̈趑Ԡ,Dɝ^RH<[^Uu@/-z]Br}r]2B&> .a{v nnxn/p{&^u\xnA:x.{;$*)ɠ'^@x.{;$*)ɠ(]e~@/աAY ʪ'^xd0#^\<3O@7K| u<w!vĥ)O0< nBW01~C7{Iiu@{tIZ 1/q^*'bS7zq01^g];&#.Շ53#Fjbp bFzIH X&wI{ae! SCo+hHvB0J:Hv%at m?^7YEsA`FF/X%^usA숳n^4יMUn꺹 vċbR^4׋0 #u?̈pN0=573oMV6z\;jSfĬlPnыUf bG|3xAgf01gfQ&o3V01'FĎx1]dLH숋ɸ^d&q1)&Ď8΃&oĎ01+O]MO}rB(knӺI}R .&U6& ******************************************************************************* ******************************************************************************* DDD Version 1.1 With this program and Dysan Corporation's "Digital Diagnostic Diskette"tm ($30 for SS and $40 for DS as of 1983...) You can comprehensively test, verify, and align the heads of your flexible diskette drive, under your own oper- ating conditions, without need for expensive oscilloscopes and drive exercisers, to practically the same precision achievable by the usual analog methods. Any time you suspect a bug in one of your drives, you can determine which drive is at fault and what the problem is. No more expensive shot-in-the-dark trips to the service center; no more intermittent bugs which won't appear for the serviceman. Takes the mystery out of flexible diskette systems!! ******************************************************************************* ******************************************************************************* System Requirements: The DDDtm is available for all flexible diskette formats, and works independently of any operating system. This program is built around CP/M and the 1793 floppy disk controller chip, and can be easily configured and assembled (with ASM - no macros... ) for most CP/M systems. The screen displays require an addressable cursor and clear screen facility from your terminal, but you could display the test results without the trick graphics if you don't have these capabilities. Operator Requirements: You will have to know how to edit and assemble 8080 assembly language. Step-by-step instructions for customizing the program will be published in Dr. Dobb's Journal, probably in December 1983. The code is well-commented and could probably be customized without the magazine if you must. You will, however, need to kn ow some hardware-specific information about your terminal and disk controller; count on needing the manufacturers' manuals and/or cribbing the information from your BIOS source. (The disk reads must bypass CP/M function calls entirely - you have to send raw commands to the controller, and retrieve the data byte-by-byte.) Tests Performed: Radial Alignment - on six different tracks, to within 1/2 milliinch Positioner Hysteresis - " , using any offset up to full width Head Azimuth - from -42 to +42 minutes Index Timing - inner and outer tracks Diskette Centering - three levels of difficulty (tests bearings, clamping) Spindle Speed - (not a function of the DDD... ) (Many other problems, such as dirty heads, will show themselves during these tests... You will want to get familiar with the results of the different tests while your drives are working, so that you can recognize the changes caused by new bugs.) Verification: DDD11.ASM is a 47K file CRC (Version 5.0 and previous...)  6E 94 CRC (Version 5.1 and derivatives...) 7B79 Author: LOREN AMELANG CIS Email [70110,551] (I access Snail Mail more often than Email... but if you want to send machine code...) Box 24, Philo, CA 95466 0024 (Best way to contact me...) ******************************************************************************* Take the mystery out of YOUR flexible disk system !!! ******************************************************************************* ng) Spindle Speed - (not a function of the DDD... ) (Many other problems, such as dirty heads, will show themselves during these tests... You will want to get familiar with the results of the different tests while your drives are working, so that you can recognize the changes caused by new bugs.) Verification: DDD11.ASM is a 47K file CRC (Version 5.0 and previous...) vDDDD.ASMs  !"$#&%(')*o+,.-0/213465879;:<=>?@ABCDEFGHIJKMLNOPQSRTUVWXZY[\]_^`acbdegfhjkilmnpqorjjX BP BP BP BP BP BP BP T+apx6հ@8q^m7xWWP TuE B5,yu6wGwuECP C <LXLJ^[Fa5Cwb@B5,ɫߦxaoK^r(apH^]ֿ-1nyme jX @!yv/Ut@! jX yB5, @( @( @( @( @( @( @(gI 7sa&yջ\{q^y~yVSS?8T=+4jX s0\F!w6%4+a>}tӝtM |pQwV&_i˷{uvp6&Q܆=aѝ{X70ymn1fa5w D.B龋\6 n밐| &_`Zυ sƭoZC8>5'BMwڅ[׸07*u0;,tg p(uЭy 'ߗ칟jr}[eBt-o^yz &0pޅ07|irj#VqQy}R{{|j|ε.v \IzanS;__!<|nS8])г{|IJ~}[7uXw߸ǩa\o 5Law!L &_܃&s;8^[0_-7 J 1|{P],<\,aQ7@5L^]^[j1԰&c/WM s!' |J_\oL;b(.tM5Ͱ{p=r}qp3[_ o@r0rY3W6=jja}׬]{z_<ׯC!7Lu뗚$@?4!D Mw %73隨BPtZAZ7pkެw}sнCPZVIo|Uì;S[%y rW ?7wjurBA6Ä!5:!vjSjoNA^ yZOso8xuF ک 6{??G7bs7jzanxLkﶡ7[6BY6Ϸ_>P|vj }ywQwBp] ss \~n{qO s)잋qOsw-op30WWVGh?{0`Zυ {?nAMMmXڰ_nè=lԨ1Z>PS;VmX/[0a;+2w:6wJqP IWk ʄZ_< &Ta^m 7?/~هyOU&t@jW{KˍǹK|r.ʾr+gZRXhd%IW ,S[~0j$PN{pk!5YH)BV:B$55FV>tu%}6TȫzރWףGWkt~7+s7jG55̇|p r]ukZa0a5 ݷ_\m` ])հ>o|_ UjXMay !jXM60-$I|5uy\0-$I|aQ}0-$";uyH{@Nׯϣ\l!$>>j߳϶u}Ra5߳H|'1\rQmXTȫzރWףG 5nF`eu\mXTSV'{duu0[I|syͺЂH{n{:,tt]/:a=ߛa[uA-M 7jt﹅v OЏM{n%CP XmX/#Gx^ۣ^no2w:6G`5&E k©u}0/_ Z AY|H|>6>{ >y.Dj%r0j$¼HmQ7Ϣb^' auh߳ڈ[H|Zp35p? |?1Z>PSީ6_F׀'[a?ajjs#g$*'s}ݠ&;a=Л'Wi:}J0M+k 50AԞ﹅\rB$={V#=JV>ԆUˍȏ^ynG^^s76w]VC./ s]5U zVkVX!\r:撻FJ,' ~(M5;kEC)Dem8*SrBH| ș7emr Urj}ʑW(Fėؙ|o'[2Jl?I|&rj ]2Jl&~ :rj0eخlro'{ԨQF6/!o'ӇF%$ܯ?͛*sjOH56ĕ=_'^%!5U S&bG}oS- 럯6㗻<߾mݰ 럯4(W)%dMO禚ڰqa܃Wlף߻+s7WՆav{vBwp|`zNMf}xM K J&hDjͧ*25_$5uXhs<5F.So5a0|U$5Kv6Gڰ_+Vp;w:~jza5Q՗/}]GM*5FWpKaBjMh|QR(Ӌ7.KNE|1r#F%B$_N6+}Goe(jMw(~rPcW6=u\2Jl{Ƕ'ոkETSUE{&,ٝ5a'Նur^^~knnXOmXI5M8KN藾m䮃ϣ&]}xM K J&hDjͧ' {KrFJt/RTc""5F.[t*3I55a] ^~ls7júbQS@7ݥ/CkuX7|>PÔ՗o}R IߚyќG|Uj,D=tK_ܷZհFJL$>4~QFE{> Rc@j+/5(c$a[K^5y|.F%>OA^{.{!ZoeX& B '߫;%w(DI5yeؾɣH|}r՗źyVQ\~"_jLBCjJGv'߫QFCZ(}0Nq|#Pq5;{[-?J|sajAW\߷+/_55\rJşΞV :s}tQR]oW^$XI?o%wMϋ\&t56ĕ=>:u5U Sc#N\Y$0]5U Sc#N\3(W)N"ԆuNmX/CF?5*>lqaSj07\:jr~ :0'QSsVYFJ,' ~(M5;k /+S\pQRY>_V+T\7$>>1yjQ$5>tu%}0};ZE]q56N̕I| r&pjt}};ZƉF%w"aM7]YaKk̗\|H|a\`;L5ZUF'B[<A_u5U S&kL55Fjjú"ՆurܾэvWleuԆuEa~K^qrp-otOaBB߄>߭] 5pF{4o}ӣhUjH|Rq5U 'VK_4rW*24q5&8w&0}Fξ+"y1mR$}WD|oݩ &,pK߄F?56NLȖBD$йV+Tc\YC+n}]5kKMw/}WTF'B[T\P:5k"/9f߼[q5aga`ƣۈFX;[_yۣ#| ڰγZϢFF@5'nQ#zrKjjDOV6wqa\~oã {u\M-GgR#zOjyԆ {͏G7ݰ WSRF15'nU#zrk555Fjjú"ՆurGco!ƣpS0 oʹ?H|Л麧1ڇ7jͷVW(W)DIKLby?~Pc\"=A^/S/S㿝?EHv5F[ş^jDo0aU1ro0U81!+jX-Vqb H|or7[eSc""_,Kwq_ķЭ S jJMH 럣6{rG7bs76Vì?g_r^n7w(OUTc\Y!O'fƉ7|qbETSc|6Ԇur^#;}7?n8nc7FGaBa0Gai'^e(w|97Uj*wStђn}FawXP`nMjlM{(vȩa5̑߾yUQFCZWQF6@7Sc6!oW\2JlWI|F{4?:or956ĕ$f0_lz> q}o5o'$h|*N7=56NgVcĔY!U>^~zi/CNh!Ո[h!>Ո[-?[*W^QcD$ޫחzƭ{cj\'f/,1\/S8qe$_n#ƅ$$ N781Rc">I|tN7{߾yՆj:~^eˏ<ݾ nX({[-͛&=t5vCRcAOtGor*%A2Jl_a^2ZO۩vCRS?WmX/5sunXǯ 럫]81WVH|5pMwG95&"[y;0ScvqbFDDSM򁚚ڰΩ ^y,z;o`ި׀qaSSLr?=sr95jEsL[^y$N԰Jb*1&4|' ~|\J@rBa W~GGFo\eqajj5WR\POXJ@8qeH|ҕ}]B}j sQo>5; 0G}W\pY"krл*S5aj:~W=yۿya?ajj߄~|_G\f|7M ϗaNMք w|_VLL;\H3R}t-ϵ.̞>ߥ%&SÜ5Oo[_B}8r-W{QSϣy7W6vw/qm5Lϻyw?O WQwuWQ;f=ȅ4Dž= Z @?a*ꮢṽ+ȅ4Dž= Z @?a*j_~ X(&}`=|?jJƉ\H3OrBԘ>?ߤ5''yjjԆ ~cGc󸇟~ݰڰq55߄>M:O77uXH sr @N=:Ja愓Map}!!5GMM7Wߙo|}ݛY@]'4?50"o%w=N}jlĉϬ=&ԤFJa;*,6XfiO7wMy(W)j,wk5U '?5zb;5FJTj UF/_B}j sǤ*}aMK񟤄oBHkA{ _I'l/x|/;};)_$y5%|:oǣ$|*5U [kBkAﮫ_Q7- 늫 6v$܀?ƣBT֦?50Fz5OjNO56ĕm# y]H3+0+Sc'sw5U 'q?kP gr߹֭W@rBH|n?q56ĕM ђFJtj,\&ofr'&d .r!$G8ejF߾!6Xfi1_7I~BP\pa35UQR(\ķo'FJL$ az5E|x԰krл H *5U [kBkuXwvf?"55FjjԆurnQ~~c߇r76OMM/VRc'9zȥoBWcx MO|g T#;6=56gΣM+INrE#g%( ;]U\PO|g l!E=}\5(]7ߑjl2[$pr߃frߩY9R;'=FJTc#N\Y(W)NseOte|$IWw i&{J@\j sjjԆHa\Uʏ=ʏݰ jj;o8__;C)Demk|f_(rл55; 0G}'ȅ4N{p]r Ɖ2ưI++[Hv._jll']Qm_7{*ҩaPZETFi(W)NHv>I|%}p>|_K UDjlĉ+kWT[rB԰Z_(2JrB$>{-o=]j}ʋa[>5U e"}f_rw<5(}mR U^$y5Bio%w=u\ԆQF77hu\mX5PZek*H|RTcA=&}WjL_"bw(W)%}FJakUH|5W 5Bi$t}h@MmXԆurۿO#̯~ݰ 뜚V~pg¹εn|BHb8jj/nC07郛o0!_ :jQ\P@ P@N@75;kൕćRڼ aQR8?XfiWjNO5;k"}f_rGr ޛaBUJZZ57jllE9./,1߼ٗUcagUBOB+w;e8g߽#=N+I3 5@؈W6g߽# f_rW asb.}!!8V{3L*5U g_rvo}]5x]sݛ&y/FJKQRwI|ٗq5|o } *^:ƂQjćR> j s 7Jt$asbGgHn0&t55\)f_r7t81qb>Ƃ$>y/ư{3L[I|^75N jE 0o}55FjX&Ujξ./t7j,h1,$璻7Mf_rWrٗ%OrŽFξK;{3L[H|5W]xX{z'Ayjl2[$ ܧƂQjWVaOJ5 z^5fQ\jX&Uj7Ä>V{o ZQR(\ķo'ߛaB:LSrB;5(}m/Z}505fO0H|<ٗܽsVޛaBRFJakUH|5W *o\Ńz5ߛaBh@MmXԆurm~aoe~znXՆuN aVe}t-o떛Q:ԓ4ߗ>١oKyƮIO!xޛaBJ>$pлjʒ> J!*kS8qe1']7\Oş̑r(W)j,w+/0CHwׯ >5U '#1 R㿝f_/56NL-to'>1_d' ~KJV{o WƅjDkC S-oj{3L?5 Uhތc5/&5+>ߗjW^zj\(&-n=W jJFMC SE.}SrBQx%j\(V\P:ch@MMmX|a\~ovW?dO71 &"؈e6F[baVKJrBY"OX|P\0꾑Y$;__IJODOXVK*5aI{Ҽ^%H5vӇ?PM 5~k.}7ZV1} sM_q.7SSK҇j>Vn!!G s8O8qe}!I|/O15lO6FJ!6I|n@^EWc#N\Y@"ژ5ۆ0O~sŹH-}cUjL]E;߄~]M{yԘ>&O6vj\_TSo'Ӈ?Fy԰ZVY^B< -DD]o˻ Nh"5H| Tcx MF$;% ϧN_F|Xlć8!捩QRԈ""-C҇/>5;#I&tOWcAs}'7W._?\eRo'Ӈ?"@8qe?_q.oZBDjDs߷C௦ODYqNM|סuFJa?Y}W~QwTO2}[81WjRcĄlqb > ͩQ6KeKߙ']W\0Lj,wGsyu}}>P&bGTjCRO|g?gFVKUj˷O>(W)%}@V>Pc#N\hLa.JWͧO|gHfr}QR8?XfiL \n\Gr EDjF߾!6oC̄0(W)AF%M;xjC?&GC>x|/jh@MmX\aO\eGWYw0w:~ja5̍Rn&}K+:vd=D{5֣JrBYOXP QYj,wkD߄0/rFJTc'^c$V_ x*S8qe?_y=Vc=Vj=j^UjkK߽';4͠.H|a'jʒ> _I'5"/<;5(]7?#徫QR8?XqB/>q|}b&HO|g?5U Qߩ1ڇ7$%Ь!jF߾Qc#N\Y&!Y"FJtW{Sc"o*ѷoH|LSc'D$&HpMQR8?؈W60+Sc'sw5U '˻ Nh#IϛF;56ĕHCI/j,Dɿ*(E[Ûo_fAW\0qڞ6՗}jJE|/>5U oߨYG5FJT\P&o=]NybǣFJL$ o6S&b/yL@r^p>١o&T17Z}حhqysWnهyO8Qjj=jUPM{yN8qe"6vjXG͖S#(^nRQH|"ݏ" O0TcD$gO^?5OD{yԘ>?Sc:OSc]!*m6vhujj:O F7oSyR anYuVB~Ejt" =t7pu\ sfr,.U tVShUjlĉ2+ $¼rF }]9]ȅ4(W)hdy$ ]BI Z3QF/[7uXHv;9J= Sc(ZG u¼r~F(O8qe"|r~LbP\:,tLb8j(D*>dG#g̃]VY>5Y݅4.v__(k&a5Ruu.B<@N/vx[I5Y$NyScyD7I|/5׳E.}q"H|>jjlS#Zķ:jj \&/ȥoBWj[3*ANo/5Ԙ>$¼rưOJ~P'ܼةqbl1JZOaB\D:qbB&I| 0Xq3r$ʚ}7׳E.}BD$>jY@]7#I 0/r"\oTSìy5W9,_vr$A sw=jj}WT0%8>z߼5W9u5vjTc|66߇ma0;7vmz8jgjjX qkp]{}|5Q*~{w\G+ 5MRüVY 0/ SdթQRa!_.1} H|r;|S %eQ wۄjDhd6 ]n#/qw7Foooz [aW[԰ڰj:~G۹S?_M anPOb3}p>{?ZtrЅ0 SS P@*56ĕ^o_r3͠FD /@9$OW&5@{$5a]j:~ߍ+mx w:~jú"հ74}+NwSlo/ ݣ6UjtI"}f_rWrBY"OX|P;6ĕݟ5I4C kV}W~R6ėB؃QRM6?f_rWT15I|}ؼػd7!L5}]/T=aS؈WI|CP=TcUO;ξK 0O{oK1E9;L55Fjú6~7ᶽn{taۑQ ڰn]UjH|q:: !Lkم 5A/"p5 럫6߇mp;?7w:~j窩a~w ~qor~өa>:,tko/ ݣ0)\w>ǩnn밐|30IU[5Tl}'7uX N.a7_p)_妻v[oxf߼ݫ{:,TF I|;56D:̾I:,:,R\P>DV(W)o$j/Wsqݕ]-VY>_=em^,]O$B@NOYROR{x؈WPH|a>ot5$j*5o L@a ' ~`0Q,0$CaRc:oN IV:̞ ߷zf߼[Sc$s߿ s}PK5aj:~9no^;x^ญ݈w4w:6wTMM&*$=:,>15F| L@ZScu\F[Yq5k"JDڰ>a\QK='I|S m܃fw@W#zrM{(Pܽ&t5'&L ۡ8{jD@>-BBmwuFGۡ8{i'ѓo Wy?m !5'E[<V઻>Ǎn!=eM=\WI|k?F&U¼q])oC$)?ԈѓI|kBፃM5'd뭦h@MmXT=<꿱y܃׸qCu\mXTjV7phfw@?׺maFNY 55Y"PqdI|I4CjtI _ a:6j:~no몏z=VVރ׸qqaVjAYü'BaR)"<7wyŹsjX 3MRü[~Veown?55emVm؈WBP&SmL AY*5"ٹH|ODP'S"q|s8{yu߽<j0Y3h@mXڰ_ntc0mnV>nXOmXþׯ i&ws= \ U0WIoބ0=jj}ԈWW@|&>V#zr`^.ǻѓxS#zrķ.ǻѓH|cw9Ԉm!]]aNIQ^_rjDO宮0FHD.wu95'E$宮0FԈ|m%Dœѓ5rWWSS \R#zruפR'jDOnDwԈܺ7.wѓ[S#zr]jo95'H|yrW{˩=9&"U]-FVߖrjDO%x[Nɱ-$S#z2H|S#z2VKtԈWW5rW{˩ 늫 6v$܀?Fl壍ouԆu4rgѓ-$7,tkgO}P#zRGYcI~BP#zR$R#zRUIQ^5'E[ԈF@ѓ=90ѓ=Oɭ"5Fjj{a\Q %6yua[yW&^[@_@V#z^-敉ƲWެ=0x?5T=D[SF77ƣϻ{Xr;?n r5XEd+e-W{/ՈWWDc-^]Wa;+joa[yu1L4ma[ɘW&Ʋ@xa[yu1L4nWWw?VqFW&˪emj¶ b^h,ےj¶ b^h,1k WW(|$p m5b^h,{em{F[+e/Qx`v ߩ5ZEd+mƲvLFX;[_y?> p1u5:'c^k,ے+f-j=^cK+f-jgjj V=ٮB}0CHvZѓ1L4e:~yz^7q~/?^[l.0 ߵ?^#V=DղSǯz~߫;x?> p1u}Fd+eY[[ n*'hqU=پJIPhgj ^UDOFkgjjԆ {Uo{À^qajjHDOZo5ʾ_$+S1Q`^wՈ#MMt]MmXWLa\Q2>2>22!"!"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2r+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_!~7z?` :>ª@w#G.¶ww#?*>?w#> w#.7:77!a{   `OE!y6$ -7rBo&))T])))!y':7?h#D/6:?>$:?$:)?$l,:>#)Ÿ#>67:+?7#*+?|°#2ͩ7#>67:+?7>#7>67:,?7#*+?"?)#>7:+?7>s7>@2?#2ͩ7#)$:"?=2"?))$>s7#͎)5$2:>/$2ͩ7#3ͩ7#* ?"?*+?"?:)?ʟ$:>€$)s$>>7:+?72ͩ7#2ͩ72?#)s$>7:+?7>{72ͩ7#)¸$:)?‘$>}72v$:)?1.͎)$>&773v$:)?$l,Ä#:?$u-l,$:)?>%>7l,>7>@2)?$* ?"?R3ͩ7:?2?"?|O%}@%3ͩ7V%C%4ͩ7>G>)7[%#͔+:*ͅ- :Âq í %V7ß!9DM! ^#Vr+s!|N! ^#Vr+s~#fon}-N! ~#fo~#fo#! s#r͐n}K͐n}!͐n&!e ͡! w#w=! ^#Vr+s̓+|q!{ ͡! ͡!ͤ! ~#fo~#fo! ͧ! ! ͪ! ͭ!b ! ! !@! Ͱ! s#rz! ! ͡!ͤ!! ͳ! s#r͐#| ! ! ͡!ͤ! w#w͐͐K ͐ k! Ͷ! s#rzv ͐ k! ! ͡!ͤ͐ k! !! ͡!͐)! ~#fo͐͹! w#w͐͐)!b ~#fo4 !! ͐ͼ+| !% ͡!ͤ!! ͐Ϳ+|& !J ͡!ͤ! ^#Vr+s÷ ͐! ^#Vr+s! !o ͐͡!9illegal option: '%c' Strip all files from a "Novosielski" archive. Usage: delbr filename (excluding filetype) .lbrTrouble getting directory from %s Cannot open %s Cannot create %s %s Error reading this entry - aborting Error writing this entry - aborting w !9DM͐n}ʫ ͐͐n&t s! ^#Vr+s d<q :v!9DM! ̓0Ͱ #| !!! ͳ ! Ͷ !" s#r̓"! Ͷ ))!" s#r!! ͳ !& w#w!$ 6#6̓$̓"̓&̓2! Ͷ |ʋ !! ͳ ó! w#w! 6#6͐| ! Ͷ |g}o͹ `is#r͐| ! ^#Vr+s! ͐s! ^#Vr+sÜ ! ^#Vr+s! 6.! 6#6͐|z ! Ͷ |g}o͹ `is#r͐|l ! ^#Vr+s! ͐s! ^#Vr+s ͐! 6! ͼ ! ! s#r͐n} ͐n}; ͐n}* ͐n&| ͐6.! ^#Vr+sÛ ! !4 ~#fo̓& kͿ ! Ͷ !( s#r!( ~#fo! Ͷ s#r!6 ~#fo̓&)̓(s#r! Ͷ !* s#r!* ~#fo! Ͷ s#r!8 ~#fo̓&)̓*s#r!! ͳ !& ^#Vr+s!$ ^#Vr+sH ! ̓&!,9d!9DM! ^#Vr+s!| ͐å!y9DM! `i`i!9!9DM͐`is#r! ^#Vr+s! ^#Vr+sns{rL͐y!9!9DM͐`is#r͐n}ʬ! ^#Vr+sÔ! ^#Vr+s͐ns! ^#Vr+sn}¬͐!9F!9DM! n&|! n&! n&&$!9DM͐!͐!s#rzN!͐##w#w͐~#fopâ!9DM͐|‡g3͐+++|ž!j3͐##^#Vr+s|!͐͐~#fom`is#r!|͐##^#Vr+s3͐##͐?+s#r͐͐s#r͐^#Vr+sn&3!9Bu!9DM! n&?|i! n& p! n&&|ß!9DM͐ڔ!͐~#foyôäL{!h9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{`in}%! ! s#r! 6#6! s! s! s͐n}-D! ^#Vr+s! 4͐n}0T! 4͐n&ͫ}q! ͮt!! s#r! ^#Vr+sn`is{.¼! ͮ! s#r! 4! ^#Vr+sn`is`in&ͱ}DU$X-O6C|Sʭ͐~#fo|$! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 <! 6<! 6! ~#fo! n&! ^#Vr+s~#fo! ͨѯgs#r%! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+s%! n}! 6#6! ^#Vr+s~#fo! s#r͐n}%͐|%! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s͐6! ! s#r! n}|! ^#Vr+s!||! ^#Vr+s! n}s!0v! sA͐! ^#Vr+sns{ʥ! ^#Vr+s|! n}! ^#Vr+s!|! ^#Vr+s6 ï! ^#Vr+s`ins! ^#Vr+s`ins͐6!9!9DM͐n}D! ^#Vr+sn&"!9DM! n&|ͯq! n&|ͩ!9DM! n&|ͯڠ! n&|ͩêä!9DM͐͐ ͐^#Vr+s͐͐0͐7s!&C͐ ͐͐ ͉͐ͧ`is͐ ͐͐ )͐ͧ`in&#&C!9!9DM! n&|ͯw! n&|ͩÁL!9DM`iw#w͐~#fon&~}͐ ?͐^#Vr+snѯg`is#rÏ͐!9 7,2q*&:q):==r:qo&.7*(\!*+\,7:,*Y:*~}|2q ʯ¥:qwʠ! {w7:)~:,"s!"u*|**s! ~6*u*+"*"*u#"u7:)~:,"s!"u*|*uʝ*~#t"*s*u#"u*+"a#:woʱ2w&!o  . &7:O*   > _   !\&! , FNxg>GoyP$ n&|ͯڠ! n&|ͩêä!9DM͐͐ ͐^#Vr+s͐͐0͐7s!&C͐ ͐͐ ͉͐ͧ`is͐ ͐͐ )͐ͧ`in&#&C!9!9DM! n&|ͯw! n&|ͩÁL!9DM`iw#w͐~#fon&~}͐ ?͐^#Vr+snѯg`is#rÏ͐!9 7,2q*&:q):==r:qo&.7*(\!*+\,7:,*Y:*~}|2q ʯ¥:qwʠ! {w7:)~:,"s!"u*|**s! ~6*u*+"*"*u#"u7:)~:,"s!"u*|*uʝ*~#t"*s*u#"u*+"a#:woʱ2w&!o  . &7:O*   > _DE-LBR.COM is a utility to quickly extract ALL files from a LBR file. Use like: A>DE-LBR TEST (where TEST.LBR is on A:) and all files in TEST.LBR will be extracted and placed into A:. BR file. Use like: A>DE-LBR TEST (where TEST.LBR is on A:) and allDE-LBR COM1EFGHIJKDE-LBR $$$:] ̞E\<6=!E_*? w# /"?:A<2A\<!"?>#w.>w   ~>2C#~Ҋ>2D:CG:D (:Cʯ7:Cʻ,:D;)_6Y>2C2D:A=2A6*? "?S*?:\w:C( ~w:B<2Bn:B&oͅ{P͕ͅ{_͕}͕   ^#=w ڇx/Gy/O 0_ _Yn!] 6?#¼6#    Erase this file? $ files erased. $Program aborted. $Use *.* as file match? $R/O$SYS$w:7=ERAA IRV*.* it will name all the files in that group, then ask you one by one if you want to erase that one. If you say "N" to any, it will not erase them but proceed to the next one. QN v4.1 Numerical/Logical Converter/Evaluator (C)1985 Norman H. Strassner N41!9"1222>2>2͐!~2†!85w?ʔ #"1:2!M8!6~͟ʝ##E!"2!w"*ʚ*#w#w2,"+*~~.#"~ #;ʎ^c@]!M?ʔ !"|HfBʏ!.W]0 OC ,y&!:Wʸ0 ԁOm|A# !DWʯ0ʧ10OÖy !"*^#V#"& ¾ͅ*#~#fo*#s#rf*w ~|w##:/,#~W#2+A7~Wȷ #A| {ss|@ o&a{ !~4*~ͷ!!_^#V>=s!f#»8> st) ͖)H ͷ)B| }  >^s}@sl)[N/A] *"6#6#6{ozg{ozg{ozg{ozgMD!>i ))=c |)|22zoW|_gͼ:>o>g:_W{!T]7MD!>2yOxG}o|g}o|g?33:=yoxg*+V+^#~> >>>>>>>>> > > > > >! @_^#V8× ^#V#!)b\*s#r#" } |t{0s|͝}ͦ Ҳ0ô7s|> s}>0>1s)---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- ~#s)~s#8::\> L > L ~;ȷL #\> s> G:xL _:ʓ#ERÓNp#6 #3    Gè:¨xWèxʡè> èlx<6w>2G èè_x'>s{ "w#s;;6 x+6 ) :2l!8) <-- lose, elete, or RETURN 3|slD ʗC^ͷ×\" l!8) closed :2\" . !8) delete×>2)Filename?!6͟ʓ`i"!\{ x ax!C:GGy?Y:O^#\. > 2l!8) ope>2!E2×2 2ÿ:_:_ Y X OG: _!6< # F \6 ɯ2:i F \6 _<2!w>2m 2n $կˆ ~#:ʤ , ! Ð ~|Aڽ Aڸ <2m #~: ? 2n #~: õ G~#: 0ڵ ҵ OxG x ҵ 2n ~: #~, !*  >? :m G:n O>D ~.> #D  d  o d *V >?X #D o #\ > d ~|!ڒ =_.:;,<>ɾɯ2!8) Type "N" alone for command mode. Use ESCape key to open/close output file. Use semicolon ";" for notes directly to output file. Inputs : Decimal, Hex, Binary, ASCII, Logical expressions Results: Numerical operation(s) or conversion(s) in all above forms APPEND: number with "H" if Hex, "B" if Binary. No appendage if decimal ASCII : CONTROL CHARACTERS ^@ - ^Z prefix with ^ CAPITAL ASCII SPACE - TILDE(~) prefix with @ LOWER CASE ASCII a - z prefix with ! LOGIC: + ADD - SUB * MUL / DIV AND OR XOR . (.=Clear) From Command Line: [ Separate expression(s) with spaces or a comma ] A> N n n,n,n,n n...n <--- Single or multiple A> N n [logical op] n,[logical op],n n . n <--- Logical operations Logical statements and conversions may be mixed. A period (.) in the command line clears 16 bit accumulator and resumes next operation. Comments to Norman H. Strassner, VIDEOMAN RCP/M, 213-666-8588l:ʓ:ʫͷͩ*Unprintable error!Illegal Drive/UseBad file namBad file write. Disk fullIllegal ASCINumber is not in decimal forBinary numbers have only ones and zeroeToo many binary digitString has non-hexadecimal digit(sMust be less than 6553Division by zero erroFormat erroUse ? for useage details Bad logical evaluatioError in file output.  )Qg d' @ @+ADD-SUBANDORXOR/DIV*MUL,1;EOvY N Ver 4.1 Numerical/Logical Converter/Evaluator (C)1985 Norman H. Strassner D O C U M E N T A T I O N N O T E S N41 operates as either a CP/M transient or in a local command mode. N41 enables translation and logical evaluation of numbers and expressions, sending all results to the console device and optionally to a disk file. Transient operation: See examples below Local command mode: All examples below are valid PLUS: ESCape key - Enables/Disables output file. Fully prompting. "?" - Displays help page ";" - Allows entering a comment into output file. Any expressions past semicolon are ignored. Accepts DECIMAL, HEX and BINARY numbers, and ASCII characters, Displaying equivalences in all four forms. APPEND n with "H" if hex, "B" if binary. No appendage if decimal PREFIX control characters (^@ - ^Z) with caret "^" PREFIX CAPITAL ASCII (SPACE - TILDE"~") with "@" PREFIX LOWER CASE ASCII (a - z) with "!" LOGICAL OPERATORS: + ADD - SUB * MUL / DIV AND OR XOR . (.=CLEAR) Delimeters between commands = space or comma From Command Line: A>N n ....For single input A>N n n,n,n,n n...n ....For multiple inputs A>N n [logical op] n [logical op],n n . n [logical op] n Entire line can be mixed with single inputs and logical equations. A period [.] in the command line will clear the 16 bit accumulator and restart the program, resuming next position in command line after [.]. N41 will not give remainders from division, or overflow indicators of results greater than 65535 (0FFFFH) Example: A series of expressions and numbers from the command prompt: Example 1: Transient conversions, one or more operations: A>N41 5 9 4 . ^A !A @A ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 5 0005H 00000000 00000101B ^E 9 0009H 00000000 00001001B ^I 4 0004H 00000000 00000100B ^D ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 23 0017H 00000000 00010111B ^W AND 42 002AH 00000000 00101010B * = 2 0002H 00000000 00000010B ^B ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 1 0001H 00000000 00000001B ^A 97 0061H 00000000 01100001B a 65 0041H 00000000 01000001B A A> Example 2: Transient numerical/logic conversion conversion, one or more operations: A>N41 500 + 460 / 2 . 110110B OR 000001B . FAFH AND FA0H OR 4 . 9038 ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 500 01F4H 00000001 11110100B [N/A] ADD 460 01CCH 00000001 11001100B [N/A] = 960 03C0H 00000011 11000000B [N/A] DIV 2 0002H 00000000 00000010B ^B = 480 01E0H 00000001 11100000B [N/A] ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 54 0036H 00000000 00110110B 6 OR 1 0001H 00000000 00000001B ^A = 55 0037H 00000000 00110111B 7 ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 4015 0FAFH 00001111 10101111B [N/A] AND 4000 0FA0H 00001111 10100000B [N/A] = 4000 0FA0H 00001111 10100000B [N/A] OR 4 0004H 00000000 00000100B ^D = 4004 0FA4H 00001111 10100100B [N/A] ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 9038 234EH 00100011 01001110B [N/A] A> Example 3: From internal command line: N41>4D90H OR 0FFH + 1 . 16 * 9 / 2 . 10011B OR 111000B ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 19856 4D90H 01001101 10010000B [N/A] OR 255 00FFH 00000000 11111111B = 19967 4DFFH 01001101 11111111B [N/A] + 1 0001H 00000000 00000001B ^A = 19968 4E00H 01001110 00000000B [N/A] ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 16 0010H 00000000 00010000B ^P * 9 0009H 00000000 00001001B ^I = 144 0090H 00000000 10010000B / 2 0002H 00000000 00000010B ^B = 72 0048H 00000000 01001000B H ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 19 0013H 00000000 00010011B ^S OR 56 0038H 00000000 00111000B 8 = 59 003BH 00000000 00111011B ; Questions and comments to: Norman H. Strassner CIS PPN 72135,1051 MCI NSTRASS SYSOP, VIDEOMAN RCP/M HOLLYWOOD, CA. (213) 666-8588 300/1200bd rom internal command line: N41>4D90H OR 0FFH + 1 . 16 * 9 / 2 . 10011B OR 111000B ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 19856 4D90H 01001101 10010000B [N/A] OR 255 00FFH 00000000 11111111B = 19967 4DFFH 01001101 11111111B [N/A] + 1 0001H 00000000 00000001B ^A = 19968 4E00H 01001110 00000000B [N/A] ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 16 0010H 00000000 00010000B ^P * 9 0009H 00000000 00001001B ^I = 144 0090H 00000000 10010000B / 2 0002H 00000000 00000010B ^B = 72 0048H 00000000 01001000B H ---- DECIMAL ---- HEXIDECIMAL -------- BINARY ----- -- ASCII -- 19 0013H 00000000 00010011B ^S OR 56 0038H 00000000 00111000B 8 = 59 003BH 00000000 0vN41.ASMd  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSoTUVWXYZ[\]^_`abc_@/M%1zVZlcg{7G"ߪ+sR.ldAt(; [Oo2YNj(\EV~˓%Eh*: =qtr?PDY*eMcJE l#Yu O߽/h "||n:U$Kۗ~^H}M5}e;m2݇{JtGCzEP~R;[e3(2_̛]Pߦ(m~@e譊2΅-^v"(v]s8Su8~fm:@ [oUG<ё"m栣ep&Ӧ 7YSajѩ1be4NjlE|[aK+ueWrj*杰Ԏ&i1g,(㜎YukN':O"㣊::_SacS3*TzU"aRQW9~f~O ;a CqVy2ନ7B")ut7Qe:O]Nqt**lVEʃ==*N*Pt#gErV-Bm`Ot(;ҮQ3~x.;Z;EeGxU(wt:ax`O:g; ΊLlʷ٬gE"*O [rGuMse@E>]}u*Q|tOeBY"ީj.lS;MP檣?ͼsfEYQ_7AP;:5-Y-u1Z/ˎQeG:ng:Ƒ*겠aRQW9~Xm+z}mOo [N(UYhoUԕq}–V*8k2MӛoETy6Ϩ NqD"Z[uewV~˓xpi2L˩Y7fǛuO\]=]x p;pC_jE6SdpơMڡЮ, }&M;Y a`iө0 9hXZo& S9+a`iөEV骆iҋ WV1T7GaAj..\\TU;aI/6,m;QF;mC!*:H쭢&T.*ߪn: [aKqXJ2('Mqs:HiiRғ hVKpDx0@;_Ԫxʹ,i^h9^d">  `>Q">||F{;(^2-1w4qԀju{:yE> &phjOV8Fk,XJ2(TF]@x]#X!m0|Rcm,:|C߄q{FZ-¨h{eu׎&aˠ_ʨ hYk\恊pX ǽh KT@]-5.@E@;_jNqD"iYHFu0S'cE6">|'aՎ&avRy<(9^d3-1wV8l;q 0 9h$ }7IX( o/IRoܰ=#]H?fhVKp7ZC˪^T@"i.s%3vӉ0=`)uwm:T!,gE"O٨.脡/5& h]Ry@ALYQtd, #-VHX"|W/4/")( 8Fk$,֏wRUˎqVt16 UHFuo¸=#[a+l-.GE団Eo6 Z+vjQPcg{a+ }76, (>8]Fk6Y!` HQPQAtH> lSFgf*MG_]0,BaW~ X2'z,Na5 [a+l9^"E" qLs((U$ oFkV]nGXjzMALMAG׸̃2 8Wќu-Y- [Ctw;0bӤ଄p;AyP|.7a z-0n8KwW-]q󩃥J]%.a8AXZeSsy,5tT#-V0M* ot3, uAT/ #|Fa¨!00niCU{a+*FkTPh|޴0f_O"0|R0nK_a & VF [aߛ/W7Z*t¸ |o»V/P*FkTPh|޴0mwf_e gZ([*WaXI&aܖ "¾70ba}7Z5. 0niWɝY߽pj>Ww[oj/ ԘIOjL:Fh5 #Fa+l-{*Ss bRm6Lʎ@iiRR}2(aA XϊNe | >១eu(ԌDSy@"R*2?1 8F |Zě<.qL+뜽%+sa^;$a~KZLH(´h6I'a,jsj|Ï7^a5 [a+lUS@(me"x+j/ k$,֏w C_j0qph{퐄.Cai,-cxQ//KI\1]xYHW5f}8¨HW5f}84w(g%[NE"lswh$VK½T@M<,5Rox5wE '?cp=IX^]u{0bTh0ba qh0b1Q [aK(wka+lUwIX^ #-V0M% 4Htc+ , za }cV.»roFVWW%a^{-X40@ #-VЍFZ`'"4腑+FXVRwh$VK½Zii*a\B-XA7Fii0.A/Xo0jV{x5Z. ka H蛵0U ©NHm}F8a:3Nur30.30.FR$Ha8|FaFAa5 [a+lo˝^UVիroFVWW%a^{-X40@ Ww* q0bhG6Ra\B'v4h0b8a-?JvF+a0ba+Ϯ#-V0M/"40¸%pWh0JiBa#v; #-V#l]hWzahg-Fa-+*Fa0-XA7F骆ih0b1VaAV0#Lna0b1hFvFZ#ի_{ QN3\]% }7ka 酑+TF;za(l]]GZ-XahzaKY #]0/an"٣ |]HL-X7FiiaF #-V#X4ZHtc+Fh0b1Hm^ii0Jin0bhNiBa "e쵰vaQ//ha Db|#n"OHL-XA7FiiaF #-V#"40Q 'azu]{a^;$a~KP_ bJہ]#7]xYH\T@i; zRy@AL+TM Xr՟z[ƛQ,aOxz&T5wE lBWaG,%qĴ8gQT$X40#\> #]00܀{a+\k{p/lKV骆i^ [C0#]07aVWaX{y' 7^ * ptU4_ [ "#]0/aVxZV^骆ip/lRaj0܀{a+<6SFa? ®^ wUj~- 7^ 0,=U  %°HW5Ls* 7^ ۱ " #]07aVUu>텑j–#t時so^TTewV;a\|RŻ" &W CMcXJ2()W]qNeN?kwJiBT%¨HQ^md9uq*FR$腑 `)T]Gq*V–59ԢwV [rewetV} ~tVhWA'lʃ}CLEALvewj'l]?lIXjqVE1'aFzaFzax5\Ksʗ2FR$Ha+l-{:O+_@R{2 OzGCtgڕ/e l]0C/ Ը_ p,' I՘֓0ni{a+zwq5&3}_|@ߚY4F5TDt[a+|-M a+l-%Q=yS)>Q9>ʜQ,a+<$\"40%?,EExƻ$,֏HLT@i;1$HW5L3$ o/+F [!#]7 : bzQ=BXzR=1-(z/dHa~чoֽ0jVR.{Qtf #\zamOViGZ`TEh`>  aƛu/pQ//qK"mrHۧ=38yFapIEh`> I'Va9P骆i|( orFa}-MrH'셑+&OjLvF,"40xXI7^ ^^ &xXia+l-%QȢ^E*D9e2WtRj'l}{0Fa}Vؒ?gQTDeNz)@E4MpĴ.ɶ푴HmfoEuHm'da58%?,,OLe #-V# 6O%VYi^á,Z|Sp|*g%X403骆o^K"&_e #-VXjլ6"87ZcpE X*6u{_Sa$E.#Ez)@E0"FR$ Aa5 [a+lI쭢8PTY [e1V{hgp8h$"40¸=#ф00!mxX>aaՎ&U#ٶ=za IKϏIE4%81T7GaC,se@E7y@0bK~VYDY"0=`)< .Ȣeqs:HFL4lGulQ//腭ptQ${x5B{ '5^,WSFrV¸=߅Kէ2 &q{F0|RO1{7'*߄q{hb; '5|X>eʜxեC' x}X UdQ@Y\JgQ>BYPpV4:lpOj, kwJ3B0D4AtQ$VAEh`q[>#t(a QFg\&f0niHpiiaJ4AtQ$Vx4CHW5\3M|+z [ :#]0D0ɽ0q[>c4NqKNE"lK=noAiiғ hq΢l&Q*E割=Eo6 q{Fu ]Xeпl^b~fQ/Cw5WwYGtv2-. qj4XYh.s%H #-VHXjY/Y骆ihGa(lu؎ḇ7Zc0s|1qKNE"lCh^4AtQ$V8t:#-VXj,+fOxa<1UjaVҰ9TDyi3 uA)Z([*Dzfa+܎HLS '5&qU #-VH#zyA/zb-M a+:ߛpd腑l0{0(H0#)Q 骆o~ #]ը 1Faga{0(l?FL4sE"P,3e]FZ`j񕂳Y/YEh`Kf?>4UN 6Q. /K)کE*y"ai3X2sbVYDM<9E"ax5$mi&7?ެ{a8b,9Q-M#Fa+l-,_(Ry@rVV61pIEh`q{ơU{; [C+oKh`юA'ax5|З}sXÏWax5|OFkI> >~8ǝj?Y8ᒦfmf :ߛPh|޴0,{ Ί"]SHm}7ZÇ oơ؎wRI iq{ZC+aq{? +a'aܖ8Ժf) oCX՝E+[~뱺hFkhӎwa=VЗ9Ah C>C_ja9l?^E> &i$ 7`wj75>lǛu/؎wr͓0 9h$ZC0k~7ZPkax5\r~ ዴ}7ZMInD;5@Mʹ~Y¸ |n^ [Cv #]0pюFkI> ~oֽ0F tU#meU/q{FX Gax5j:ғ h"ʷꯛNEHfFZ/۶ `*ZlH6З}sXÏWXJ2( (DrVyvTЗ9AhҤ`)ɢNѩQ ҤUXZe6YQ0`ɟ+'ZlH6{a Q^_0Bqhl(aܞa趀ky\vTh"HL3T@U-SvʷJ·KO*2bEÇ0|Rc}8É*;ZlH\\meπkyDtRahgzU- a CcqKmVxY=>M v[wGZ뜕еHLKO*T;t*,R0|Rcm,yM""u0nϨv[wGZ뜕0|Rc}8%"TDY߄q[>cY=lPl*\H|cqKmmCa+mG,^6Ey*7a4A*ңmKUGisVVomtBe]բv°UyoARoa{* o/Ih6I'aW55S>xjf}8hGA'aKG- orH'a\B#v4H< &{%l6{h"ʷꯛNEV8َ[Gm{$0mcFm{8a$۶G/tU7\  |]YFլ^骆o&\  |m([@7V [ Uđ8*_RUe"q:K*ꄭp{$۶Fm{Fk h za$E't("TΊ7,3UšڴCX^CXzR=TG?2T. xKUDIE }p/Xj `)* br0U ׬/5؎ g`;ONśqsk\恊~EU=,UŁYUEt*Y2OjY¸=C=n㕂CXUC 6QQ"g ^^ &w(a+З)=RV0k~7Z=X #Fa+l-9Y"΃(q_-\E~x=(nX^Zq `*TJhp8hX*AHW5|sKhj9߅_#Fa+*}骆o$ oFI^|DrVMFXV [z@ѮRA ["r}G:Aפ(z=qtfa+zHW5|z/ oFI0jVؒT(:)56ǣQӣN–\E~D5qt憞|O*H :ztU7FkT1. xEa5 [a+lUPE#=nN'QEUVإƽ0U ߼7ZZwa(l S@EwGz|(*sDzadHa$۶G/dpHmAɶ푴Πaƛu/a- }b;ۃ0.5m5 C_jax5CX0ngj]~X[#-V#tU5kaFhP 0FqጃFR$Ha ic a$E'H #)$0j‡I=m #]0pюza^{KLw0m a+zv48a 01|^3ka$E'd腭^3oHL ^^ '5$3S3 ~w0|RcI7~w0nif[a6="A/X40\mi+ad&a<"v[c20|R~ Z 7FI #Fa+zz ݛ/¨VX/{ I~z0|Rcmm V9a^{K^iiRaƴq{^#[@y'l[Fia+ߪiiRa zaƴq{^[h5$^N>60nK0ba aqF9 08/Xah0niV^[{ M¸-=whG~0ni~wF ?HwoHL '5$z zyA/laX40|Rcj&aܞ^0|RcI^{*lݫ٣^^j z腑jfmzG; 0N·q[>C߽^e ݛ/HC;~0ba$E'tU4áFa(lݻ=Uy# o^⅑j 7a IӇI3ݗ_¨Fk/^4^E /Fk?0ni~티w_h ߛq{^ ^^?O¸-~UHW5L36 N4^c-lݯjv48a za+X|A3/lFkބw,Y^4^㝰w=N骆i&ю' C ¸-Q 7_pzͯ=܀ |y/X40\mi+aF, ԘmC# Ԙ< #|OjLwF, Ԙ>L~F, Ԙ$Y>150gaO0ga0jzΘ=| FXV8=.F;$m/5f0H'ax5$maoKNqDx@4 UWNQ N>L}0m;E:xs[t#@u+#o&S906aS_7AG{"1է2Ϣ uC:~)L0܀I}F8Ƈ> Bm-7Gl,(ﺿ8EUQWuO0܀)g㷊NqtƇ> ap&$QE Ry^}joDCg4 1e׫wًD;(<5>lAndZ_״/cXh In>ҿ?_S~ߧƇ> ț&614U&a5R,36 7`""]lap&]<~O8GDLn5_\"2KG4 RßƇ>4>lAnt#x2W{InԪke"+ﺿep-TGqDMpE| ap&l.uTyQhoUԕq1{O'@4 ]UT;OeNYM}0-1w4Ŭ_X-f΂8In;T9r),(aG1-6U$ 7`Zծ*R'Mzׯ_|yfjӏ7^ {5|V^}TEh`q{FX Ga+<|p jNqDrV(B#37Z!j^xƭC];Bq&` We|'Xzz|TEQQu]:a+UaX{6Fed"EqoS36xZknTϳzfrQVu۩Ǜu/&=܀ivt*gEyvIM?ެ{P* p!ѩ@} Wv_鴙穙~~Y©°pzK6i}=5S=xSWaLQETv9ԢsVQ)UGYUQfoֽp:K]-p7`㘎Y<Ӯ|)Ǜu/ե " *:gq>e;(L oֽp:6S0.GE: YN|65ӯǛu/zu7|[Ua0mٕqN_Uxjhf * p7`:1 HEQ<5S4xSWi0m;E)hөENY9wSF~YiuI0,=܀iv4/"IMLͺNXaLU9YQ чoֽ°AUaX{@Zk{aI* P* K߄* N°K_U!`0ҡ^jY0ҾTaXFXڄO,IWw]t{@z°KpHKRa0b;VaXtM5`0kaM  =`VҘ=Ί*GSʹ*8Vf^p_ =~{z{/ 5`w(g%l1{':Ot2(㼣SY}EUQWƹh]p/ u/ {z,U㬄4fDC*7CPY|UQWƹh]X =t/ Wҫ0 = `0=+`0~,! 77px 'a|,ݯp~}X{0ޭ tMo X' _޼,{?~,{T;OdE Wݍ oSpLƹY xmSLv0܀odnjp5SNZnfԬjNZnfrjjph0܀?)Y X ["80sw0pwX =,a) ";,p)»R^pH{z-lN<7` KsMp‡6O{ Xҡś 4g/©p܀pj.6nZxVn&TЦSWa֫jYaoHrt=܀ pV8 ]2{m=Z’D]qNeNA8+m1^ t¾.=Z }t7`-SwܦCuфūp];yU=ZR 7]2TDw [aKYuN"S9+:qP5qVV};akX:<;*zܜN*~?߷8,Ż5,uVG_kPt#2{Zn*V؎To~nZZ}K_ zܜN*ꄭ\_`+ꭚ Wak@vo~z'l-Z [+n4Pv4Wa+lQ-.:;<> O̅o$>!Y2*O"ʉ@G:ʐ:wÖx2 `0=+`0~,! 77px 'a|,ݯp~}X{0ޭ tMo X' _޼,{?~,{T;OdE Wݍ oSpLƹY xmSLv0܀odnjp5SNZnfԬjNZnfrjjph0܀?)Y X ["80sw0pwX =,a) ";,p)»R^pH{z-lN<7` KsMp‡6O{ Xҡś 4g/©p܀pj.6nZxVn&TЦSWa֫jYaoHrt=܀ pV8 ]2{m=Z’D* b͸{777w{ÖüH!K]jU 2͵ ^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2hZZk:h|/g}/o#|/g}/o#:h<2hqDM!xxGyO҃)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2hZZ͉M|}ȯ|g}o)|/g}/o#z/W{/_!9~#fo! ! ! ! ! ! P!9~#A!9"w**w"j!z*"d!"f!Y"H>2^>2a>2`2c>2s2t>2r>2v!"@!"D!@"B!"F !F#x:~#!|2i~# :" 2i +}|~#:G:ix."2i+w# +6#!6#@A2n2?*j**|+`"d!"f!!>ڌo&͖=}  w~2ʸͼ56!+W ?_!~7z?ͧ:>͞@w#5.ww#w#w#w*>?@͌>w#͌5> w#@ͧ͵g 2q&0OxG͵j/ʆSx\͞.7:77!a{  ʨ ʨ0:?ŷO !y$ 7o&))T])))!y 2p_ :p6)))Y~0̿7G~`2@2@#~2@~?>&=2@#^#V#^#V#"@^#V"@:@ '*{@!:@@'"@*@#w"@*@~9'D'/Ϳ7͈?+"@*@+"@!6D"@6!^D"@*@~*@*@s#r#*@s#r#*@s#r#*@s#r#*@s#r#:@w#"@'*@*@s#r#*@s#r#*@s#r#*@s#r#*@s#r#:@w#"@'|E'}X27*@+~2@+V+^+"@V+^+"@V+^+"@V+^+"@V+^"@"@*@+~2@+V+^+"@V+^+"@V+^+"@V+^+"@V+^"@"@p';(ͯ''͋(!"@"K@2@<2@2@2@ͥ)()(*¾(2@2@(S*(#)2@2@)l*8GGKNö$jÜ!9DM!, n&| !!! 6!" 6!" n!, nѯgWҎ;! s#rͻ! s#r͐͐! s#r͐|z ! 6#6͐! s#r!!. ~#fo!" n&)~#fo! s#rz !. ~#fo##~#fo!!Æ͐! s#r! s! s`is#6͐#|ʆ! n}ʩ ͐͐?! s#r!͐͐͐! s#r!͐?͐͐͐͐! s#r! 6#6! ~#fo s#r !͐?͐͐͐͐! s#r! w#w͐! s#r! n} !!$ 6͐͐?~! n&|= !$ n}! 6`iw#w! ! n}j ͐ ! s#r ! s! n}ʩ Nʬ Tʯ  R Bʣ S LʳÆ! w#w͐! s#r! ͐Ê ͐͐ !!$ n} ! 6 ! 6! ^#Vr+s! ^#Vr+s! n&|f ͐͐f ͐n!% s!% n&|g}o|o !& 6!% n&|g}o|D ! 4!& n} ͐#! s#r!' 6! ^#Vr+sn&|g}o| !' 4͐n&|g}o| `i~#fo!' n&s#rê !& 6͐|= ! n͐Ps`i6#6`i^#Vr+s! ^#Vr+s! ^#Vr+s% ͐͐ʘ ! ~#fo###s#r! ~#fo###s#r!͐?+++! s#r͐͐?+++! s#r! 6% ! 6! s#r! s#r͐ |ʰ!|ʢ!|g}o! s! n&|F! n&|p! n} ^gNjm! 6óÆó! n&s! ng ?! s#r! s#r! ^#Vr+s ó! 6! ^#Vr+s! ^#Vr+s! ^#Vr+s! ^#Vr+s!$ 6`i^#Vr+s͐n&|g}o!% s!% n&|/!% n&e!% n} V    A͐#n&|g}o|}!! 4! 4͐|ڨ! n͐Ps͐! s#r!% n&`i6#6e!% n&`i~#fo͐s#re!% n&e!~e!!$ 6! ^#Vr+s! ^#Vr+s! 6" !^!% n&@`i^#Vr+se! ^#Vr+s! ^#Vr+s ! 4 !" 4 !(9%s Usage: Read Specified File.%s Can't find '%s'. - END OF FILE. ('N' for Next File) !9DM!|!!|g}o`is`in&>!9P!9DM*K! Mp!9DM͐n}ʚ! ^#Vr+sn&mxâ!9DM! n&͟|! n&! n&&æÜ!Y9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{`in}%‘! ! s#r! 6#6! s! s! s͐n}-u! ^#Vr+s! 4͐n}0…! 4͐n&}ʢ! å!! s#r! ^#Vr+sn`is{.! ! s#r! 4! ^#Vr+sn`is`in&}DUZXcOlCʲS\b͐~#fo|Z! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 r! 6r! 6! ~#fo! n&! ^#Vr+s~#fo! ѯgs#r[! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+s[! n}! 6#6! ^#Vr+s~#fo! s#r͐n}[͐|[! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s͐6! ! s#r! n}! ^#Vr+s!|͐͐! n}ʦ!0é! !!9~#fo#|!w͐n} ͐͐! ^#Vr+sn&!!9~#fo#| !! n}Y! ^#Vr+s!|Y͐͐! !G!9~#fo#|V!Î!͐͐`in&!!9~#fo#|Ž!ý͐͐`in&!!9~#fo#|½!!!9!9DM! n&|ͯ! n&|ͩ!9DM͐͐ R͐^#Vr+s͐?͐0G͐7s!&Ý͐ ͐͐ ͉͐`is͐ ͐͐ )͐`in&#&Ý!9!9DM! n&|ͯ! n&|ͩæ!9DM`iw#w͐~#fon&}(͐ ?͐^#Vr+snѯg`is#r͐/!9*:+* 7,]> 2h*P/:q2> ʭ:h):Rʙ=ʙ=> ­:qw#w#w:ho&552?7*T|DM*R*P><~# x ><~+ x|}7*R*P:TOzq#7:P)V>z>z2:P,"j!"l*T|*l_5*R*j!ѷʐ2?ʊʊ!Z*lZ*T+"T*R"R*l#"l*j! N#Fp+qxO##6>2?T2?   > _   ) >2?6!7*+++:PG_*RDM!2o&#|Ž!ý͐͐`in&!!9~#fo#|½!!!9!9DM! n&|ͯ! n&|ͩ!9DM͐͐ R͐^#Vr+s͐?͐0G͐7s!&Ý͐ ͐͐ ͉͐`is͐ ͐͐ )͐`in&#&Ý!9!9DM! n&|ͯ! n&|ͩæ!9DM`iw#w͐~#fon&}(͐ ?͐^#Vr+snѯg`is#r͐/!9*:+* 7,]> 2h*P/:q2> ʭ:h):Rʙ=ʙ=> ­:qw#w#w:ho&552?7*T|DM*R*P><~# x ><~+ x|}7*R*P:TOzq#7:P)V>z>z2:P,"j!"l*T|*l_5*R*j!ѷʐ2?ʊʊ!Z*lZ*T+"T*R"R*l#"l*j! N#Fp+qxO##6>2?T2?   > _    READ.C Version 2.0 Written: 4/11/82 by Gerald W. Wilkins Revised: 5/18/82 by GWW This program is in the public domain, and may not be sold for profit under any circumstances. It is intended solely for public distribution. To invoke this program type 'READ [D:]FILENAM1.TYP [D:]FILENAM2.TYP...', etc. The program will load the first file to be read ('FILENAM1.TYP') from optionally designated disk, 'D'. A typical command thus becomes 'READ FOO.ZOT' or 'READ B:FOO.ZOT B:ANY.FIL' if 'FOO.ZOT' and 'ANY.FIL' reside on a drive other than 'READ.COM'. Of course it is presumed that any file to be 'read' is an ASCII file such as a text file or program assembly source file. READ.COM will try to read ANY file, but the garbage output from .COM files before the first '^Z' is encountered is rather uninteresting. The length of the command line used to invoke READ.COM should not exceed 80 characters. This program handles WordStar created files correctly, so if you wish to review the contents of a text file created on this word processing system (and probably most others) without running the word processor itself, READ.COM will show you the file nearly as you would see it with WordStar. The only difference is the display of 'soft hyphens' for which 'READ.COM' substitutes a tilde (which is the '~' character). All control characters are shown onscreen. Once the file to be read is loaded into memory, type any character but '^C', 'B', 'L', 'N', 'R', 'S' 'T', or '^T' in order to scroll to the next 'page' of text (the space bar works nicely). Type 'L' if you wish to display then next line. If you wish to back up to the previous page of text type 'R' or 'r'. To move to the end of the text buffer type 'B'. To move to the beginning of the text buffer type 'T'. A '^T' will move back to the beginning of the text file. To load and view the next file, enter 'N'. To exit the program type '^C'. This version of READ.C contains an 'autoscroll' feature which allows the user to automatically scroll through the text line by line. This option is invoked by typing 'S' during viewing of any file. The program will begin scrolling with a default "medium" speed that naturally varies according to your CPU clock speed. To change the speed of autoscroll type any number, one through nine, and the program will respond by speeding up for higher numbers or slowing down for lower numbers. The default speed is set equivalent to five. Continuous rapid line display will occur if you hold down any auto-repeat key other than the space bar or 'N' during autoscrolling. Remember, the number entered corresponds to the SPEED of scrolling, NOT to the delay. During autoscroll most of the normal keyboard functions of READ.COM will be disabled, i.e. typing 'B', 'L', 'R', 'T', or '^T' will be ignored. Three keys (other than numeric keys '1' through '9') are active. The space bar, if typed, exits autoscroll into normal 'page' viewing. The 'N' key, if typed, will load and view the next file that was entered on the command line, if any. NOTE that this next file will ALSO be viewed in autoscroll from the top. And a '^C' will still exit READ.COM. This version of READ.C also contains enhanced algorithms for handling of text lines which are longer than the terminal width, including improved processing of horizontal tabs. That's all there is to it. Good reading! n any auto-repeat key other than the space bar or 'N' during autoscrolling. Remember, the number entered corresponds to the SPEED of scrolling, NOT to the delay. During autoscroll most of the normal keyboard functions of READ.COM wiA2 l!;~#2T$~#2U~#2VK)PRNBAKSYMHEX$$$$???????? ͋ ͖ 1ͻ ͯ Wipe Version 1.0 ----------------- Erasing *.PRN, *.HEX, *.SYM, *.BAK and Dollar Signs from Drive : $DE-LBR COM1EFGHIJKDE-LBR DOCLERAA COMMERAA DOCNN41 COM OPQRN41 DOC"STUVWN41 AQMXYZ[\]^_`abcdefgN41 AQM$hijklREAD COM1mnopqrsREAD DOCtuvwWIPE $$$WIPE 1.1 DOC 03/01/85 This library file contains two versions of the program WIPE, and an accompanying submit file. WIPE is a file of particular interest to assembly language programmers. WIPE will erase files with the extension BAK, $$$, HEX, PRN, AND SYM, all with one command. WIPE11 won't erase files with the extension .HEX. I would suggest picking the one that suits you best, then renaming it to WIPE.COM. I use WIPE to "clean up" the hard disk on my Morrow MD-11. I use it before I backup the hard disk, and whenever I've done any assembly work. I've named the submit file WIPEALL. If I'm going to backup the hard disk, I first execute WIPEALL. WIPE is then run on each user area and all of the aforementioned file types are erased. I know it should go without saying, but make sure that you don't need any of the file types you are about to erase. For users of CPM+ systems, WIPE and WIPEALL should be on A0 and set to system files. If you don't use submit files, I hope this will convince you of their usefulness. The submit file can be easily modified using the non-document mode of any word processor. One useful modification might be to edit the last line to: A0:!PILOT BKFIELD The file would then clean the hard disk and automatically load the hard disk back-up program. I didn't make this modification on the distributed version since not everyone has PILOT and BKFIELD, and since not everyone that has them likes to use them. The source for WIPE version 1.1 is also included and can be modified to suit your tastes. WIPEALL.SUB and this DOC were written by Ron Forsythe, SYSOP of FOG RCP/M #18 (707) 557-4403. WIPE.ASM was written by Steven D. Rudnik. The copyright from the original program source reads as follows: "This software may be used in the PUBLIC DOMAIN for non- commercial use only." Thanks to Steven Rudnik for a very useful program. lness. The submit file can be easily modified using the non-document mode of any word processor. One useful modification might be to edit the last line to: A0:!PILOT BKFIELD The file would then clean the hard disk and automatically load the hard disk back-up program. I didn't make this modification on the distributed version since not everyone has PILOT and BKFIELD, and since not everyone that has them likes to use them. The source for WIPE version 1.1 is also included and can be modified to suit your tastes. WIPEALL.SUB and this DOC were written by Ron Forsythe, SYSOP of FOG RCP/M #18 (707) 557-4403. WIPE.ASM was written by Steven D. Rudnik. The copyright from the original program source reads as follows: "This software may be used in the PUBLIC DOMAIN for non- coa0:!wipe!a1:!wipe!a2:!wipe!a3:!wipe!a4:!wipe!a5:!wipe!a6:!wipe!a7:!wipe!a8: wipe!a9:!wipe!a10:!wipe!a11:!wipe!a12:!wipe!a13:!wipe!a14:!wipe!a15:!wipe a0:!pilot bkfield---------------------------" @ 2, 0 SAY "OFFICER" @ 2, 8 GET OFCR @ 2,24 SAY "REDE-LBR COM1EFGHIJKDE-LBR DOCLERAA COMMERAA DOCNN41 COM OPQRN41 DOC"STUVWN41 AQMXYZ[\]^_`abcdefgN41 AQM$hijklREAD COM1mnopqrsREAD DOCtuvwWIPE COMxWIPE DOCyz{WIPEALL $$$A2 i!;~#2Q$~#2R~#2SH)PRNBAKSYMREL$???????? E Wipe Version 1.1 ** TBT Digital 1984 ** ----------------- Erasing *.PRN, *.SYM, *.REL and *.BAK from Drive : On CURRENT User Level. NOT Erasing *.HEX since some cheapskates "ONLY" send these files for distribution!$N41 COM OPQRN41 DOC"STUVWN41 AQMXYZ[\]^_`abcdefgN41 AQM$hijklREAD COM1mnopqrsREAD DOCtuvwWIPE COMxWIPE DOCyz{WIPEALL SUB|WIPE11 $$$; Title: Wipe.asm (c) V.1.0 ; Erase ALL (*.PRN, *.HEX, *.SYM, *.REL and *.BAK) on current drive ; Author: Steven D. Rudnik ; Date: 8/9/83 ; ********************** ; * Copyright 1983 Sdr * ; ********************** ; ; ************************************************************************* ; Notes: ; If there are any users of ASM, MAC, CB80, or any other assemblers ; or compilers, this program is for you. Programmers who have only ; limited disk storage space often find during development the need ; to remove resultant files, i.e. BAK, SYM, etc..., from your disks ; in order to make room for further development. Why always type ; those familiar ERA *.BAK, ERA *.PRN, etc...? There is a saying ; that reads: ; A good programmer does things only once, then has the ; computer do them, from then on... ; SOUNDS REASONABLE! ; ************************************************************************* ; ; This software may be used in the PUBLIC DOMAIN for non-commercial ; use only. Any comments or suggestions may be referred to: ; ; Steven D. Rudnik ; 201-993-2000 Ext. 4172 ; (12:00 Noon to 4:30 PM EST) ; ; ************************************************************************* ; ; Some equates... ; cpm equ 0 ; cpm base bdos equ cpm+5 ; bdos entry point print equ 09h ; string out kill equ 13h ; delete file curdisk equ 19h ; return current disk setdma equ 1ah ; set DMA clsrn equ 1ah ; clearscreen cr equ 0dh ; return lf equ 0ah ; line feed endstr equ '$' ; marker for string out ; org 100h ; let's start here... ; main: mvi c,curdisk ; find which disk we're on call bdos adi 41h ; add 65 to make char sta disk ; place char in output string ; erase: mvi c,print ; print sign on message lxi d,signon call bdos ; lxi h,table ; load HL with table address loop: mov a,m ; get char 1 of type inx h ; bump pointer... sta ext1 ; place char into output string cpi endstr ; check for end of table... jz cpm ; true =: done mov a,m ; repeat for char 2... inx h sta ext2 mov a,m ; repeat for char 3... inx h sta ext3 inloop: mvi c,kill ; kill file(s) specified in fcb lxi d,fcb ; our own FCB address push h ; preserve because BDOS doth clobber... call bdos pop h ; recall pointer... cpi 0ffh ; check return flag 0ffh := none found jz loop ; if none found then wrap up jmp inloop ; ; Modify table here, each entry must be three bytes (PRN, etc) and ; end with 'endstr'. ; table: db 'PRNBAKSYMREL' db endstr ; fcb: db 0 db '????????' ext1: db ' ' ext2: db ' ' ext3: db ' ' ds 21 ; signon: db 1bh,'E' db cr,lf db 'Wipe Version 1.1 ** TBT Digital 1984 **',cr,lf db '-----------------',cr,lf,lf db 'Erasing *.PRN, *.SYM, *.REL and *.BAK from Drive ' disk: db 0 db ':',cr,lf db 'On CURRENT User Level.' db cr,lf db lf,'NOT Erasing *.HEX since some cheapskates' db cr,lf db '"ONLY" send these files for distribution!','$' ; done: end peat for char 2... inx h sta ext2 mov a,m ; repeat for char 3... inx h sta ext3 inloop: mvi c,kill ; kill file(s) specified in fcb lxi d,fcb ; our own FCB address push h ; preserve because BDOS doth clobber... call bdos pop h ; recall pointer... cpi 0ffh ; check return flag 0ffh := none found jz loop ; if none found then wrap up jmp inloop ; ; Modify table here, each entry must be three bytes (PRN, etc) and ; end with 'endstr'. ; table: db 'PRNBAKSYMREL' db endstr ; fcb: db 0 db '????????' ext1: db ' ' ext2: db ' ' ext3: db ' ' ds 21 ; signon: db 1bh,'E' db cr,lf db 'Wipe Version 1.1 ** TBT Digital 1984 **',cr,lf db '-----------------',cr,lf,lf db 'Erasing *.PRN, *.SYM, *.REL and *.BAK from Drive ' disk: db 0 db ':',cr,lf db 'On CURRENT User Level.' db cr,lf db lf,'NOT Erasing *.HEX since some *"!{/_z/W}$L*.|g"*|}>":O WW!q#w# Mw!"!"!"*"!"!"! "!"*"!" :O1d* XCCP Version 1.0 for CP/M-80 Copyright (c) 1984 Anton R. Fleig This software may be used for non-commercial purposes only. No commercial use of XCCP may be made without the author's express written permission. $:2*"!1&.6>*"{/_z/W*"::ʉ!(# !# *w *w#w#"*w#"og""{/_z/W*|t*|Zt***s#r#"***s#r#"**:š:ʡw#Ìéé*** XCCP V1.0 - COPYRIGHT (C) 1984 A. R. FLEIG ***"::ʉ!(# !# *w *w#w#"*w#"og""{/_z/W*|t A0-> $ XCCP-Disk reset $ $FFFFFFFFCOM!"[#"i"k1Ny2*#^q#Vp"_ 1N:M >2_22N N > N \$N ]>  N m>  N 2Z2c!"a:2`*["e:U _:ZcS{=28 ʤ#~W;:_v2Z2c"eC:_2_ä:ʤ.ʤ ʤ=ʤ ʤ"["]! :ZOG ~2Z#N! 4;Zü&1<\ \l :c2g*l:gG:c<2g :c<2ce2_C!c4:Zc@*]|*aw#"a!4@*e#~Ao:c<2c+Ä@2=G:`2`:c#~0GG:c#~0G:`2`:_2_C @*e#~@2\C J*e#~@2lC J:c:_2_:`2C @ J:c2g] J:c2gm Je Ju J!c4*]*[C?G _x_   >2^ .&"[ 2] @:`M@_aðÔ:Z:`22`MÒ:M:] E  :] O .& 1y:_2_:g.:_ʶ> :2>W ¼:^ =2^  >2^ ~ # G:_x  _*e#:cC " H# O~*1 >?N C ; >?N # # 2c*["eN P !"[>2_"k"ir a { *k¨ C r +"kr ¶ _÷  < r ^#"kr   :=r 2< +"k"i r  :Y 2Yr <2Yr *  m  r 6 2U  ʊ  o < ^ ^#"kK w:<2> 2_ r < ʟ _:Y s#"kr s#"k r w#"k"i_:<2r L :_2_< C :<2*i#"i*k#~+w#C *i+"i r  Q:O !^#   < C ) *i*kO|y}y:aOGʅ <2b!a 6!a w:b=~ 2bi y2a2c!a :cOG >!a ʣ × y2c !a ~2b< = !a ~:b= 2bü P5!a :cOG >!a y2cì *#*_ }|*":GA2RxG - G>1. 2Sx02T:_GK 2!"[xV d xd :`Mx2  .&" £ * " Ä :M  1N1N: >2Mn  :2c cc!ccc  ! $0c$Hc0c$$'0 <Hc00*HcHc<<-HHHcHH XCCP-No match found$ XCCP-Command syntax error $ XCCP-Command not found $Q:O !^#   < C ) *i*kO|y}y:aOGʅ <2b!a 6!a w:b=~ 2bi y2a2c!a :cOG >!a ʣ × y2c !a ~2b< = !a ~:b= 2bü P5!a :cOG >!a y2cì *#*_ }|*":GA2RxG - G>1. 2Sx02T:_GK 2!"[xV d xd :`Mx2  .&" £ * " Ä :M  1N1N: >2Mn  :2c cc!cc X C C P Version 1.0 An Extended Console Command Processor for CP/M-80 1.0 INTRODUCTION XCCР i substitut consol comman processo (CCP fo Digita Researc Inc.' CP/M-8 operatin system XCC provide additiona function no provide i th "stock CP/ CC a th expens o th los o smal portio ( Kbyte o th transien progra are (TPA) Th memor los i thi wa i no usuall importan o system havin 64 byte o memory. 1.1 ADDED FUNCTIONALITY XCCР provide th followin feature no provide b th distribute CP/M CCP. 1.1.1 COMMAND RECALL U t approximatel 24 character o previou command ma b recalled for re-issue with a single keystroke. 1.1.2 COMMAND LINE EDITING Bot recalle command an newl entere command ma b edite usin curso contro key an dua mod (insert/overstrike characte insertion. Characters may be deleted anywhere on the command line. 1.1.3 COMMAND RECOGNITION lis o possibl command o filename matchin partiall type comman lin ca b displaye wit singl keystrok withou destroyin th curren command N mor abortin comman t lis you director becaus yo forgo a obtus filename. I n comman ha bee started lis o al possibl command tha may be issued from the current user area is displayed. 1.1. COMMAN COMPLETION I partiall type comman ha onl singl possibl matchin comman o filename th res o th comman ma b fille i o th comman lin automatically i mos case eliminatin th nee t typ lon command ou i thei entirety. 1.1.5 WILDCARD RECOGNITION Filename o th comman lin ma contai wildcar characters an wit singl keystroke al possibl matche ca b displayed Thi i useful fo example i yo hav forgotte th fil name bu remembe th fil type I onl on matc i found i i inserte o th comman lin i plac o th wildcarde filename. 1.1.6 MULTIPLE COMMANDS PER LINE Multipl commands u t 12 characters ma b issue o singl comman lin fo sequentia executio b separatin th individua commands with a special delimiting character. 1.1.7 AUTOMATIC SEARCH OF DISK A USER AREA 0 I comman i no foun i th curren use area use are o disk A is automatically searched. 1.1.8 DISK AND USER SPECIFICATION Changin use are an dis ar accomplishe wit th sam syntax eliminatin th nee fo th cumbersom USE command Additionally use numbe ma optionall b include i th comman (wit o withou dis designator) causin tha use are t b searche fo th comman instea o th curren use area. 1.1.9 NO INVOLUNTARY WARM RESTARTS Retur t th CC fro a applicatio progra i muc faste unde XCCP sinc war restart ar onl performe upo use request control- ma b entere a an time eve i th middl o comman line resettin th dis syste withou disruptin th comman i progress. 1.1.10 EXIT TO STANDARD CP/M CCP singl keystrok return contro t th standar CCP althoug thi i unlikel t b desirabl excep whe i i necessar t perfor SAVE operation.  1.1.11 USER NUMBER DISPLAYED IN PROMPT Th curren CP/ use are numbe i displaye i th XCC promp a constant reminder. 2.0 XCCP COMMANDS T invok XCCP simpl typ XCC a yo woul fo an CP/͠ program Optionally a XCC comman lin ma b include i th invocation. Example: A>XCCP B15:;FIND MAST.LST MDM712 2. RECOGNITION AND COMPLETION Th ES (Escape ASCI 2 decimal ke ma b use wheneve yo ar unabl t recal th exac spellin o comman o filename o simpl t avoi typin lon command o filename i thei entirety Afte ES i entered th character o th comman lin betwee th curso an th firs preceedin spac ar use t searc fo matchin fil o th appropriat dis an use (Dis A use i searche i th character bein use fo th matc ar th firs wor o th comman line) I mor tha on fil i found th matchin file ar listed an th comman redisplaye fo use action I onl on matc i found th comman i fille i wit tha fil o command Th curso i lef a th en o th command fo furthe use input. You may hit RETURN at this point to issue the command. 2.2 COMMAND RECALL Command ar maintaine in circula buffe i memory Tha is whe th en o th lis i reached th nex comman displaye wil b th firs on again Th WORDSTA arro key (^ fo uparrow ^ؠ fo downarrow ar use t mov abou withi th recal comman buffer Th uparro wil redispla command issue befor th displaye command whil th downarro wil displa command issue after th comman currentl displayed I bot cases i th en o th buffe  is reached, the cycle simply starts over. If afte perusin th recal comman buffer yo can' fin th comman yo want an non o th one ther ar clos enoug t warran editing yo ca cance th currentl displaye comman wit ^U. 2.3 COMMAND LINE EDITING Th WORDSTA arro key (^ fo leftarro an ^ fo rightarrow ca b use a an tim t mov th curso abou o th comman line Onc th curso i positioned character ma b entere i eithe overstrik o inser mode Th initia mod i overstrike Th ^ ke i use t toggl th editin mod betwee overstrik an inser (a i WORDSTAR) Whe th curso i no a th en o th comman line bot th delet an backspac key wil remov th characte whic i a th curso position appearin t "gobbl up th comman lin t th righ o  th cursor Whe th curso i a th en o th line thes key remov th characte t th lef o th cursor allowin eas deletio o mistype characters. 2.4 MULTIPLE COMMANDS PER LINE Multipl command ma b entere o singl lin b separatin th command wit semicolo character Whe th carriag retur i struck th command wil b execute i th orde issued Ther MUS NOԠ b an space betwee th semicolo an th character o eithe side of it. 2.5 DISK/USER SPECIFICATION I dis and/o use specificatio o th for du i prefixe t comman (th firs wor o th comman lin o afte semicolon) th specifie dis and/o use are i searche fo th .CO fil befor A0: Eithe o bot th dis lette an use are numbe ma b include i th comman thi way Fil specification o th comman lin MUS NO hav use are numbers althoug dis designation ar allowed a i CP/M' standar CCP. Example: A6:WS C:TEST.DOC is acceptable to XCCP, while A6:WS C2:TEST.DOC is not. I th du designatio i entere alon o comman line th defaul disk and/or user area is changed. 2.6 WARM BOOT Th effect o CP/ war boo ma b achieve throug th us o CTRL-C Thi result i rese o th dis I/ subsystem an i likel t b necessar afte changin flopp disks Thi functio i normall don o mos progra exits resultin i dela i retur t th CC prompt B makin thi functio use requested retur t th CCР promp o progra exi i muc faste wit XCCР tha wit th stoc CCP. 2.7 EXIT TO CP/M CCP Enterin CTRL-٠ i respons t th XCCР promp wil restor th original CP/M CCP. 2.8 COMMAND CANCELLATION A entir comman lin ma b revoke befor issuanc wit th ^ character. 2.9 WILDCARD USE Th wildcar translatio featur o XCC ma b use t determine befor executio o program jus whic file wil b affecte b command Fo example i th comman ERAS *.HE wer terminate wit a ES rathe tha carriag return lis o th file whic ar abou t b delete woul b displayed allowin th use las chanc t abor th comman befor issuin th carriag return. Not tha incomplet fil specifications suc a T*.A ar treate a i栠 the ende wit wildcard (T*.A*) du t XCCP' comman recognition/completio algorithm Thus i thi case mor file tha wil actuall b affecte b th comman ma b displaye (e.g bot TEST.A and TEST.ASM would be displayed). 3.0 LIMITATIONS AND CONSTRAINTS numbe o feature o th standar CP/ CC wer lef ou i thi firs versio o XCC i orde t avoi increasin XCCP' siz beyon wha coul b easil tolerate i 6 Kbyt system 3.1 NO SUBMIT Th CP/ SUBMI comman wil no functio unde XCCP Us ^ t exi to the standard CCP before using SUBMIT. 3.2 NO SAVE Ther i n SAV comman i XCCP Us ^ t exi t th standar CC before using SAVE. ^Y does not alter the contents of TPA memory. 3.3 NO BUILT-IN COMMANDS Th CP/͠ CCP' command DIR REN ERA USER an TYPŠ ar no availabl i XCCP Transien program ar include wit XCC t tak th plac o RE an ERA USE i superscede b superio facilitie withi XCCP a n grea numbe o DI an TYP program ar availabl i th publi domain. 4.0 VERSION 2.0 Versio 2. o XCC i expecte t includ CP/M-compatibl SUBMI facilit (al you existin .SU file wil work wit additiona feature suc a interna variables conditiona branching an neste procedures Als planne fo V2. ar I/ redirectio (lik UNI an MS-DOS' < > an operators) ke redefinitio (a i QwikKey Smartkey etc.) an hierarchica director support Thes additiona feature wil no increas th siz o XCCP sinc the wil b implemente a overlays Th function chose fo implementatio i overlay wer chose wit vie towar whic function acces th dis i an case an thos function whic ar th leas utilized.   ar th leas utilized. 6 an neste procedures Als planne fo V2. ar I/ redirectio (lik UNI an MS-DOS' < > an operators) ke redefinitio (a i QwikKey Smartkey etc.) an hierarchica director support Thes additiona feature wil no increas th siz o XCCP sinc the wil b implemente a overlays Th function chose fo implementatio i overlay wer chose wit vie towar whic function acces th dis i an case an thos function whic ar th leas utilized.  COMMAND RECALL ^E (uparrow) recall previous command ^X (downarrow) recall subsequent command COMMAND EDITING ^S (leftarrow) move left in command line ^D (rightarrow) move right in command line ^V toggle overstrike/insert mode ^H (BS) or DEL delete character ^U cancel unissued command MULTIPLE COMMANDS - Separate with semicolon (;) TO CHANGE DISK/USER - du: (D=disk, U=user; either or both) RESET DISK SYSTEM - CTRL-C RETURN TO CP/M CCP - CTRL-Y READ COM1mnopqrsREAD DOCtuvwWIPE COMxWIPE DOCyz{WIPEALL SUB|WIPE11 COM}WIPE11 ASM~XCCP COMXCCP DOCcXCCP $$$Z:] ʥ:m ʥ!]r O!] O!m O!=ʟ!]r O\! O!=qͫ:!OOs 1!rOO!OO :\2q22@22}>:22~ !]!~?1~ 1xxOy> 1## ##\#O\~# xO!9"!l*???????????????????????????????????????????????????????RENAMING . TO . $ No more matches I AM DONE...... $* INVALID FORMAT * It should be : XREN [d:]fileOld fileNew $ THE FILE . ALREADY EXISTS. PROCESSING HALTED. CANNOT RENAME ALL FILES $XCCP DOCcXCCP HLPXREN $$$ NEW RENAME UTILITY. PC-DOS STYLE by Miguel Vasquez CP/M' renam comman (REN i limite b it no bein abl t us wil card ?' an *' i th fil names. Recentl ra int progra b Georg M Gallen i eithe Dr Dobb' o Microsystem ( canno remembe whic on i was. tha allowe t chang th extensio o grou o files Afte readin tha program i occurre t m tha i woul no tak to muc wor t generaliz i s tha on coul us wil card anywher i th fil names -A work hav a IBM-P unde PC-DOS I thi operatin system th renam comman (als calle REN doe allo yo t us wil card i th fil names. Th progra XREN.AS (eXtende REName i th resul o thes modifications A firs though tha althoug th progra wa nic woul no hav to muc us fo it Bu no tha hav it fin mysel usin i mor an mor . Th s!yntax fo usin XRE mimic tha o RE i PC-DOS : XREN [d:]OldFilename NewFilename wher th driv specifie (d: i optiona an th file names can use wild cards (?'s and *'s) freely. examples XREΠ *.DOà *.TX wil chang al file wit th DOà extensio t havin th TXԠ extension Th fil nam i no changed. XREN LIST*.* NLIST??.* wil chang al file tha star wit LIS t NLIST wil no chang th extensio an wil kee th sixt an sevent character i th origina fil nam. Ther i on possibl pitfal (t whic PC-DOS' RE comman i NO immune o thi generalit i fil renamin rules: with the command: REN DAT*.* DATA?23.* i on o th origina fil name i lik DAT.TMP th stric applicatio o th rule fo th us o wilcard woul produc rename name DAT 23.TMP. YES, with a BLANK in the middle of the file name!. Thi i wha PC-DOӠ does Thu producin砠 a inaccessible file. ɠ hav avoide thi i XREN.AS b addin on mor rule wheneve blan i th origina nam o extensio i matche wit wil car (a ? i th destination th res o th nam o extensio i th destinatio i fille wit blanks. Thus, the previous example will produce: DATA.TMP as the renamed file. Fo thos wh ar no ver experience i usin th CP/͠ assembler describ wha shoul b don t produce the executable XREN.COM file. 1.- Us th Π optio o Word-Sta t typ th (program fil XREN.AS EXACTL a shown BEFOR savin you file us th comman ^Q t g t th en o th file the sav it. 2.- Afte returnin t th CP/ prompt pu you CP/͠ syste diskett i driv A an th diskett with the file XREN.ASM in drive B:. 3.- Log drive B: Hit ^C and type B: 4.- Type: A:ASM XREN.BBB Thi wil produc th followin file i th B:driv XREN.HEX XREN.PRN O th scree yo wil se th followin messages: CP/M ASSEMBLER - VER 2.0 03F7 002H USE FACTOR END OF ASSEMBLY Anythin differen fro thi wil probabl indicat a erro i th fil XREN.ASM Chec i carefully. 5.- Type: A:LOAD XREN You will see the messages: FIRST ADDRESS 0100 LAST ADDRESS 03CC BYTES READ 02CD RECORDS WRITTEN 06 Al o thi ha produce th fil XREN.CO i driv B an yo ar done. Happy Renaming!.  02CD RECORDS WRITTEN 06 Al o thi ha produce th fil XREN.CO i driv B an yo ar done. Happy Renaming!. a shown BEFOR savin you file us th comman ^Q t g t th en o th file the sav it. 2.- Afte returnin t th CP/ prompt pu you CP/͠ syste diskett i driv A an th diskett with the file XREN.ASM in drive B:. 3.- Log drive B: Hit ^C and type B: 4.- Type: A:ASM XREN.BBB Thi wil produc th followin file i  ;********************************************** ; XREN.ASM 2/18/84 7:45 P.M. ; ; File renaming with wild cards *,? ; allowed in both the old and new file names ; ; USAGE: XREN (d:)fileOld fileNew ; ; Program: By Miguel Vasquez based on ; program by George M Gallen ; ; needs 8080 and CP/M ;*********************************************** ; ;--------------------EQUATES-------------------- ; BDOS EQU 5 ;Entry point to CP/M functions PRINTS EQU 9 ;Func. # to Print String OPEN EQU 15 ;Func. # to Open existing File CLOSE EQU 16 ;Func. # to Close File REN EQU 23 ;Func. # to Rename File FCB0 EQU 5CH ;CP/M's FCB NOFIND EQU 0FFH ;Error code for file not found ;------------------------------------------------ ;*************** MAIN PROGRAM START ************** ORG 0100H ;Start of TPA MAIN: CALL INIT ;Initialize our Stack. LDA FCB0+1 ;Check if source file is CPI ' ' ;blank. If so give BAD JZ BF ;FORMAT messg. and exit. LDA FCB0+17 ;Check second file CPI ' ' ;also. JZ BF ; ; LXI H,FCB0+1 ;Move original file name LXI D,FCB1+1 ;to its place in LXI B,11 ;FCB1 and FCB3. CALL LDIR ; LXI H,FCB0+1 ; LXI D,FCB3+1 LXI B,11 ; CALL LDIR ; ; LXI H,FCB0+17 ;Move new file name LXI D,FCB5+1 ;to FCB5. LXI B,11 ; CALL LDIR ; ; CALL DRIVE ;Save Drive specs ; RNLOOP: LXI H,FCB3 ;Try to open source file. CALL FOPEN ; CPI NOFIND ;If unsuccessful, then no more JZ ENDIT ;files, so end it. ; LXI H,FCB0+1 ;Put full file name (now without ??) LXI D,FCB1+1 ;(with the extensions) to LXI B,11 ;the appropriate spots in CALL LDIR ;FCB1. CALL NEWNAM ;Make new full file name in FCB2. ; MVI C,CLOSE ;Close the original file LXI D,FCB0 ; CALL BDOS ; ; LXI H,FCB2+1 ;Set up new full file name LXI D,FCB4+1 ;(with extension) LXI B,11 ;in FCB4. CALL LDIR ; ; LXI H,FCB4 ;Try to open the new file CALL FOPEN ; CPI NOFIND ;Could open it? Horrors!! JNZ CANNT ;Exit without renaming. " ; MVI C,REN ;Rename the old file LXI D,FCB1 ;to the new name. CALL BDOS ; ; CALL INFORM ;Inform of files renamed JMP RNLOOP ;Process next one. ; CANNT: MVI C,CLOSE ;Found a file with that name!! CALL BDOS ;close it ! ; LXI H,FCB2+1 ;Move the Bad file LXI D,MSG7 ;name and extension LXI B,8 ;into Message #7 CALL LDIR ; INX D ; LXI B,3 ; CALL LDIR ; LXI D,MSG8 ;display message and JMP STROUT ;exit. ENDIT: LXI D,MSG5 ;We're done, prepare message JMP STROUT ;Print it and return to CP/M ; BF: LXI D,MSG6 ;Prepare BAD FORMAT message JMP STROUT ;go printit and exit ; ;=============== SUBROUTINES ====================== ; ;******************************************************** ; INFORM ; ; to print message with files being renamed ;******************************************************** INFORM: LXI H,FCB1+1 ;Move old file name LXI D,MSG3 ;and extension into LXI B,8 ;MSG3. CALL LDIR ; INX D ; LXI B,3 ; CALL LDIR ; LXI H,FCB2+1 ;Move new file name LXI D,MSG4 ;and extension into LXI B,8 ;MSG4. CALL LDIR ; INX D ;Then display message LXI B,3 ;with the two names CALL LDIR ;to let us know what's LXI D,MSG1 ;going on. (Drop down ; JMP STROUT ;into STROUT to do it) ;******************************************************** ; STROUT to send a string to the console ; ; Arguments : DE has the addr. of the string to be sent ;******************************************************* STROUT: MVI C,PRINTS ;Set function code JMP BDOS ;go doit ; ;******************************************************* ; DRIVE to save drives ; ; Arguments: The first byte of FCB0 contains ; the source drive: ; 0 for the logged drive ; 1 for drive A ; 2 for drive B, etc. ;******************************************************* DRIVE: LDA FCB0 ;Get the drive # and store STA FCB1 ;it in its place in FCB1, STA FCB3 ;FCB3, and FCB4. STA FCB4 ; ORA A ;Is it the Logged drive? RZ ;Yes, leave drive blank. ADI 64 ;No, convert to letter, STA DRV1 ;Save it and STA DRV2 ;add a colon. MVI A,':' ; STA DRV1+1 ; STA DRV2+1 ; RET ; ;******************************************************** ; NEWNAM to make new name ; ; Arguments: FCB0 has a regular full filename ; FCB5 hs a file name with wild cards (?) ; On exit FCB2 will have FCB5 but ; with ?'s replaced with the corresponding ; character from FCB0. ;******************************************************** NEWNAM: MVI B,11 ;Counter (bytes in file name). LXI D,FCB2+1 ;Destination addr. in DE. LXI H,FCB0+1 ;Use Stack as an extra PUSH H ;index register for FBC0.(Source) LXI H,FCB5+1 ;Mask addr. in HL LBA: MOV A,M ;Move mask byte to A. CPI '?' ;MasK='?' ? JNZ LBB ;no, output A. XTHL ;yes, Get FCB0 index into HL. MOV A,M ;Get source byte. XTHL ;Put FCB0 index back in stack. CPI ' ' ;Is source a blank? JNZ LBB ;No, then output it. MVI C,1 ;Yes, set C to number of MOV A,B ;bytes neccessary to CPI 4 ;fill the rest of JM LBC ;the name or extension MVI C,4 ;with blanks. That is: LBC: MOV A,B ;if B<4 then C=1 else C=4 SUB C ;C=B-C MOV C,A ; LBD: MOV A,C ;If C=0 then we are ORA A ;at the last blank byte, MVI A,' ' ;Go and output it. JZ LBB ; STAX D ;Put blank in FCB5. INX H ;Increment the three INX D ;indexes. XTHL ; INX H ; XTHL ; DCR B ;Decrement the two DCR C ;counters. JMP LBD ; LBB: STAX D ;Put char. in FCB5. INX H ;Increment the three INX D ;indexes. XTHL ; INX H ; XTHL ; DCR B ;Process next byte if JNZ LBA ;not thru yet. POP H ;If thru, restore stack RET ;and return ; ;******************************************************** ; FOPEN to try to open an existing file ; ; Arguments: HL has addr. of FCB with file to be opened ;******************************************************** FOPEN: LXI D,FCB0 ;Move FCB to CP/M's LXI B,35 ;FCB. CALL LDIR ; MVI C,OPEN ;Try to open the file. LXI D,FCB0 ; CALL BDOS ; RET ; ;******************************************************** ; LDIR to simulate Z-80's LDIR ; ; used to move a string from a location to another ; ; Arguments: HL addr. of source ; DE addr. of destination ; BC Number of bytes to be moved ; ; All the registers are modified ; ; Any Z-80 based computer (such as Osborne 1's) ; can replace all the CALL LDIR's ; with: DB 0EDH,0B0H ; or replace this subroutine with ; LDIR: DB 0EDH,0B0H ; RET ;*************************************************** LDIR: MOV A,M ;Move next byte STAX D ;to its destination. INX H ;Increment the pointers INX D ;to source and destination. DCX B ;Decrement byte count. MOV A,B ;Test if BC ORA C ;is zero. RZ ; Yes, then return. J#MP LDIR ; No, process another byte ; ;******************************************************** ; INIT to initialize the stack ; and save CP/M's stack ;******************************************************** INIT: POP B ;get return addr. LXI H,0 ;load HL with DAD SP ;the stack pointer. SHLD CPMSTK ;save it in CPMSTK. LXI H,MYSTAK ;Change to my stack. SPHL ; LXI D,FINISH ;Put finish routine PUSH D ;in stack. PUSH B ;put return addr.in stack. RET ;return FINISH LHLD CPMSTK ;reinstall CP/M's stack SPHL ; RET ;and return to CP/M. ; ;========================= DATA AREAS ================== FCB1: DB 0 ;Drive for the Original FCB, DB '????????' ;Name DB '???' ;Extension DB 0,0,0,0 ;Filler ; FCB2: DB 0 ;New FCB, (drive) DB '????????' ;Name DB '???' ;Extension DB 0,0,0,0 ;Filler ; FCB3: DB 0 ;Full original FCB DB '????????' DB '???' DB 0,0,0,0,0 DB 0,0,0,0,0 DB 0,0,0,0,0 DB 0,0,0,0,0 DB 0,0,0 ; FCB4: DB 0 ;Full new FCB DB '????????' DB '???' DB 0,0,0,0,0 DB 0,0,0,0,0 DB 0,0,0,0,0 DB 0,0,0,0,0 DB 0,0,0 ; FCB5: DB 0 ;Mask for New FCB DB '????????' ;Name DB '???' ;Extension ; ; misc messages to let you know what's going on ; MSG1: DB 'RENAMING ' DRV1: DB ' ' ;2 spaces MSG3: DB ' ' ;8 spaces DB '.' DB ' ' ;3 spaces DB ' TO ' MSG4: DB ' ' ;8 spaces DB '.' DB ' ' ;3 spaces DB 13,10,'$' MSG5: DB 10,'No more matches',13,10 DB 'I AM DONE......',13,10,'$' MSG6: DB '* INVALID FORMAT *',13,10,10 DB 'It should be : ' DB 'XREN [d:]fileOld fileNew',13,10,10,7,'$' MSG8: DB 10,'THE FILE ' DRV2: DB ' ' ;2 spaces MSG7: DB ' ' ;8 spaces DB '.' DB ' ' ;3 spaces DB ' ALREADY EXISTS. ',13,10 DB 'PROCESSING HALTED. CANNOT RENAME ALL FILES' DB 13,10,10,7,'$' ; CPMSTK DS 2 ;CP/M's stack pointer DS 40 ; MYSTAK EQU $ ;My stack. END ͜:] I:^ :0W:] )@0G_@:]0_{ IÕ >͜ ew\]͊o͊g ڒ70͜ XUSER.COM V 1.0 7/3/85 $Invalid area... (valid areas are 0 - 31 inclusive) $User Area selected: $N41 COM OPQRN41 DOC"STUVWN41 AQMXYZ[\]^_`abcdefgN41 AQM$hijklREAD COM1mnopqrsREAD DOCtuvwWIPE COMxWIPE DOCyz{WIPEALL SUB|WIPE11 COM}WIPE11 ASM~XCCP COMXCCP DOCcXCCP HLPXREN COMXRENAME DOCXREN ASMHXUSER $$$ ___/Documentation for XUSER.COM by John Evancie\___ FOG contribution, July, 1985 _ . _ . _ . _ . _ . _ . _ . _ . _ . What is XUSER.COM? It is a program to emulate and extend CPM's built-in USER function, allowing access to areas 0 thru 31, inclusive. CPM version 2.0 or higher is required. _ . _ . _ . _ . _ . _ . _ . _ . _ . Why is it needed? If you work with user areas, you may be interested in this program for two reasons: - it extends the range of areas open to you - it emulates the built-in USER function, so you can reach it from within an application that restricts you to external commands (e.g., WordStar's "R" option) _ . _ . _ . _ . _ . _ . _ . _ . _ . How is it used? Simple! Just type: XUSER nn This will switch you into User Area nn, for nn between 0 and 31, inclusive; if nn is omitted, you are returned to User Area 0. (that means press RETURN) You can execute this command at the A> prompt, or from within WordStar (via the "R" option) _ . _ . _ . _ . _ . _ . _ . _ . _ . How does it work? The program makes use of BDOS function call 32 to set and then get CPM's current User Area. First the command line is checked, and the target user area is extracted and stashed in the E register. BDOS # 32 is called to set the new area. Then, as a check on our work, and to illustrate both uses of #32, it is called again to ask CPM what area we are in. The result is stored in the A register, where the pro- gram converts and displays it (with thanks to B. D. DePaola and R. S. Burkey, PORTABLE COMPANION, Dec. 82/Jan 83, pgs 50-53). _ . _ . _ . _ . _ . _ . _ . _ . _ . N O T E S: - Before implementing this program, you must use STAT to declare XUSER.COM to be a system file (i.e., STAT XUSER.COM $SYS), so that CPM can still find it when you wander of$f into some exotic area... - also, any application that invokes XUSER must have an image in the target area, or CPM will not find its way back to your application. I use my WestWind(tm) utility DISKMGR to establish multiple directory entries referring to the same data blocks on the disk; one could also use DU or SID to set up such entries... _ . _ . _ . _ . _ . _ . _ . _ . _ . I hope that you find this as useful as I have. It is a small trade for all the truly spectacular public domain gems that FOG members have shared, and cont- inue to share. My next submittal is going to be in a similar vein; once I started using User Area, I had to get to them from within MBASIC and dBASE... coming soon! PAX, John Evancie 07-22-85 clare XUSER.COM to be a system file (i.e., STAT XUSER.COM $SYS), so that CPM can still find it when you wander of; ; program XUSER.ASM ; ; John Evancie 7/3/85 ; ; to extend the accessibility of CPM's user areas ; ; User types: XUSER xx ; and program switches into the selected user ; area, or into user area 0 if no argument is ; supplied. Before BDOS is called, the program ; checks that the argument is less than 32. ; ; After the area is selected, the program uses ; BDOS to get it back, and display it at the ; console. In this way, both uses of BDOS function ; call #32 are illustrated (even if it is a BIT ; redundant) ; ; It should be noted that this approach allows you ; access to user areas 0 - 31, whereas access via ; CCP is limited to user areas 0 - 15. ; cr equ 0dh ;carriage return lf equ 0ah ;line feed uflag equ 0ffh ;"get user" bdos value pbuff equ 09h ;"print string" bdos code getus equ 020h ;"get/set user" bdos code fcb equ 05ch bdos equ 05h tpa equ 0100h ; org tpa ; lxi D,mess0 ;startup message call print ; lda fcb+1 ;check the command line cpi 020h ;is it blank? jnz begin ;if not, take it apart below ; mvi E,0 ;if so, assume user wants user area 0 jmp ok ;and do it! ; begin: lda fcb+2 ;is the second character of the cpi 020h ;command line blank? jz single ;if so, process the first one ; sui 030h ;if not, convert the ASCII char to hex mov D,A ;and stash the result in DE ; lda fcb+1 ;look at the first character now cpi 020h ;is it blank? jnz cnvt1 ;if not, do further checking jmp doit ;if so, assume user made a typo and proceed ; cnvt1: sui 030h ;convert to hex mov B,A ;stash in B add B add B add B add B add B ;lazy mans multiply by 10 add B add B add B add B add D ;and add back in the ones digit mov E,A ;and store result in E jmp doit ;you are now set up to make the switch ; single: lda fcb+1 ;grab the first and only digit sui 030h ;convert to hex mov E,A ;move it into position for BDOS call ; doit: mov A,E ;get choice back in A cpi 020h ;is it less that 32? jc ok ;if so, do it finally jmp endit ;if not, abort ; ok: mvi C,getus ;put switch user code in C mvi D,uflag ;set D to switch code (instead of E) call bdos ;and do it ; mvi a,0h lxi d,mess2 call print mvi c,getus ;now get ready to read back the user area mvi d,0 ; mvi e,uflag ;E needs the switch code in order to read it back call bdos ; call finis ret finis: call cnvrt mvi c,2 mov e,h push b push h call bdos pop h pop b mov e,l call bdos ret cnvrt: push psw ani 00001111b call dovrt mov l,a pop psw rrc rrc rrc rrc ani 00001111b call dovrt mov h,a ret dovrt: cpi 0ah jc num1 adi 037h ret num1: adi 030h ret endit: lxi D,mess1 ;point to error message call print ;print it ret print: mvi c,pbuff call bdos ret ; mess0: db 'XUSER.COM V 1.0 7/3/85',cr,lf,'$' mess1: db 'Invalid area...',cr,lf db '(valid areas are 0 - 31 inclusive)',cr,lf,lf,'$' mess2: db 'User Area selected: $' ; end ode in C mvi D,uflag ;set D to switch code (instead of E) call bdos ;and do it ; mvi a,0h lxi d,mess2 call print mvi c,getus ;now get ready to read back the user area mvi d,0 ; mvi e,uflag ;E needs the switch code in order to read it back call bdos ; call finis ret finis: call cnvrt mvi c,2 mov e,h push b push h call bdos pop h pop b mov e,l call bdos ret cnvrt: push psw ani 00001111b call dovrt mov l,a pop psw rrc rrc rrc rrc ani 00001111b call dovrt mov h,a ret dovrt: cpi 0ah jc num1 adi 037h ret num1: adi 030h ret endit: lxi D,mess1 ;point to error message call print ;print it ret print: mvi c,pbuff call bdos ret ; mess0: db 'XUSER.COM V 1.0 7/3/85',cr,lf,'$' mess1: db 'Invalid area...',cr,lf db '(valid areas are 0 - 31 inclusive)',cr,lf,lf,'$' mess2: db 'User Area selec% This is the release date of the disk. READ COM mREAD DOC tWIPE COM xWIPE DOC yWIPEALL SUB |WIPE11 COM }WIPE11 ASM ~ XCCP COM XCCP DOC 1XCCP HLP XREN COM XRENAME DOC XREN ASM $XUSER COM N41 .COM 8E 3C 4096 32 N41 .DOC 7D F0 4352 34 N41 .AQM 0A 68 20992 164 READ .COM D1 6F 6272 49 READ .DOC BC D6 3840 30 WIPE .COM 57 D0 256 2 WIPE .DOC 63 75 2176 17 WIPEALL .SUB 9E B1 256 2 WIPE11 .COM 77 EF 384 3 WIPE11 .ASM AC B7 3200 25 XCCP .COM 99 21 3584 28 XCCP .DOC 9B A7 12672 99 XCCP  Fog Library Disk FOG-CPM.146 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. CPM Utility Programs. Filename Description -09-00 .86 This is the release date of the disk. -CPM146 .DOC This is the description of the disk contents. BU .COM 4FD1 5K [Back up 1 of 3] A simple backup utility that will back up all user areas, checking attribute bit for files that have changed. BU .DOC E461 8K [Back up 2 of 3] BU .AQM E015 27K [Back up 3 of 3] DDD11 .DOC 8F9A 4K ver. 1.1 [Drive Diagnostic 1 of 2] Dysan Digital Diagnostic Program. Note the source code is an un-installed skeleton version. DDD .AQM 833E 22K ver. 1.1 [Drive Diagnostic 2 of 2] DE-LBR .COM C049 7K [De-Library 1 of 2] Extracts all files from the library. Documentation is included. DE-LBR .DOC 90FF 1K [De-Library 2 of 2] ERAA .COM 9A92 1K [ERAA 1 of 2] Erase with Query. Asks for confirmation before erasing files. ERAA .DOC F021 1K [ERAA 2 of 2] N41 .COM 8E3C 4K  [N41 1 of 3] Decimal-Hex-Binary number conversion and logical expression evaluator. N41 .DOC 7DF0 5K [N41 2 of 3] N41 .AQM 0A68 21K [N41 3 of 3] READ .COM D16F 7K [READ 1 of 2] Allows you to read multiple text files sequentially. READ .DOC BCD6 4K [READ 2 of 2] WIPE .COM 57D0 1K [WIPE 1 of 3] Erases *.PRN *.SYM *.HEX *.REL and *.BAK with a single command. Also included is a demonstration SUBMIT file. WIPE .DOC 6375 3K [WIPE 2 of 3] WIPEALL .SUB 9EB1 1K [WIPE 3 of 3] WIPE11 .COM 77EF 1K ver. 1.1 [WIPE11 1 of 2] Does everything WIPE does, but wont erase *.HEX files. Assembler source code is included. WIPE11 .ASM ACB7 4K ver. 1.1 [WIPE11 2 of 2] XCCP .COM 9921 4K [XCCP 1 of 3] An extended CCP that adds command line editing, multiple  command lines, etc. to CPM 2.2 XCCP .DOC 9BA7 13K [XCCP 2 of 3] XCCP .HLP 65E1 1K [XCCP 3 of 3] XREN .COM CD31 1K [XREN 1 of 3] An MS-DOS style RENAME command. XRENAME .DOC 010E 4K [XREN 2 of 3] XREN .ASM DAC7 9K [XREN 3 of 3] XUSER .COM D8A0 1K [XUSER 1 of 3] Allows access to extend user areas (0-31) in CPM 2.2 systems. XUSER .DOC 72DD 3K [XUSER 2 of 3] XUSER .ASM 9A55 4K [XUSER 3 of 3]  [XCCP 2 of 3] XCCP .HLP 65E1 1K [XCCP 3 of 3] XREN .COM CD31 1K [XREN 1 of 3] An MS-DOS style RENAME command. XRENAME .DOC 010E 4K [XREN 2 of 3] XREN .ASM DAC7 9K [XREN 3 of 3] XUSER .COM D8A0 1K [XUSER 1 of 3] Allows access to extend user areas (0-31) in CPM 2.2 systems. XUSER .DOC 72DD 3K [XUS&'