8SAPMAP33AQMLQfSAPMAP33COMM &SAPMAP33DOCX[v SAPMAP33.ASMZ  !#"$%'&(*),+-/.0123456789;:<=>@?ABoCDEFGHJIKLMNOPQRSTUWVXYuVpxqܰ!bۏ[6Dlq<>7N١O7WHN"wN@Oy#[9 Z){ljl/~ go يpӠȿy.{;[1w{gGwKwb2 ހ&pBsiXg1*$z9nAw7!(S#W\:E"h'E@o~;ߧ'tg z`xjϥޠ8}}̻^7L<ݠjUNpCD١O7!h24﯐s4XJiVȿO7-'E4﯐7!hg>"8۫oU"˯M=,&E^\7mXL @&tSdX>'oB~G+E]~)>u؎w/D&ynBtCD3;/&EZWH_L~q>ǭ- ފ1mUJd3{9 2 =ʑ_UF?s_/t)to){}z2~o~;j dʳ 9Óيp`\?{ o~;jOG?}`1=ۄBz,&E4=IɜsPG|yȝ߃f޹3p`jULw~<xLOtV O= )b{煘H-rw\|_pw}Fj|"S>e<`z|~+m˄WO>"V=Ut}y>46:j&S}" t"ŸTёGx].sT ~ӄ*ZF+!Qjrl dXL"_9ojUՁiy>WHjU/@7'=$V֐<~2_!AUQO/@6d 0ي;)r;2[q>Ttq`Ttq PMMb>@d)jd~|8nd~|8i8_|TtqS9tO/@6ѩu5c;_.lo M>T17c;_.|+,^#|l>Kaūwb2ZE.{iiWh%jUM34'P>S?f{Cnؑ j-u96ϥR kET?.g+q|h/|"A<'6o]V$B<8!@*%1\qDÃX|"(v+W +9j{vd4c#>=w8IIbR5=D;Pc l],QjUF{.Qjϥ_L7LVjVJ8j\V)}کqY"5ej\V)y^j\V)ٿN*%wzs tg>p#&UJj0\:\6'Oe#~(̼jDUDU>3f_]h%jU-2_MJ? ?@-2+ssbG~DոR~yDc݀\qd">>ۄu 3ʃƨlD*ǦFBC5~ǏDkyFWls] +ŞnWF[1*gAy0ŞnlY/$8 Ї#LWF4ۢFWls]4;-WEyu!>~FWl3W55b+U\!hG"㿯Pb2WcT6sd's, Q:#JVu7?5 7}C*%엷: ޹E\ljD-:jt6W%MFl~c[Zt:ӳpt[qWrFy3-NAvp^xK5F"1}3))2' N aq&ZUkḎ5m\d-2>7}u7VQ)ss6J?ȱ9d=nAw45ɮF4ۢo鸨1*Y-瞛#\4icjD-:jl-N#?d?B[`HjD-:j<5.0_N=&$535F-\dVg ,O_^^w+n.*ZUj螛5hyL p~5.D_R/vQ:cY#625.D_RckqJxtQ.8!YyMwGZU[Dl\qo7MqyMWkS7:dl)=FWldݷ;1j5{wIwW➉!"߄tl>/Lܧl/5?55~KDž/˓">3i 7]Q\DTc[Ux㵽\RcjDU:BqLVՖ|IȏOjt(%~Fr垣Wc j<5Gb#~b4}bq?5Ǝ ej ; Ξ6!Hbr% aqK-5v\SS4{s_!_w#2'5b Ul~~2UJ."Y/oB^gLGQ觸Ӕ}WlR5~O#?שQ:vK 3E aO1HEG#?~hd5b+5=z8HjRQNg ,O_zVժZWHΏNM}Wj-G*%U]UVaL_=a&UjΛt6WUc -~jD-:jD-~j5Fe۹P'jU9S4{n8=L=|Qg7yJIT;@KF$0p<LȸgwO5Fg-P'jUb&UJj0\:\6' Kl0zg>?`Aåe#~_:\6 Vϱ̋OHs H?yqjDUnRP:Y6jU.MƎqY$Y#62Wl~[?~d&D^8V+.Y?n-)`XauƸ Ygz"9@.;uVc>TrF̗,ay2E_O&G5F-krY$*åe#~t[o 9Vjr*ZUjux;o76n\Wj]ubלe-'j0\:\6jr[(VOԪZUx'9Tjtlح\*GؼU+S+]jNئW5v9VOԪZUߔ) /&g^p mBZ7–~X |LI|يp0E~HԪZ}&6/Ɂ/> j\V)Ę 8o7i24c`K 8owFl\0jΌs${ЄsEaqC5oK 8ϥke^iB_JrKrO4B[ c˼҄j*%1uT{=Ž (UJI4-5b#?FqY$[SƳxFrUzF6)O&_mX[m8FhOhEGqQcT6.*ZUj횔ʬ_d1?oWbrUcTb5.DatlO< }jt(W(ON"UVG;vltzZUw5gY$*@ֲTI`P nLO6 rN }#͉? ObbbOe#~(̼jDU\V)satlO<yJ#*9XApoVQ.x9 j\V)Ę 87M |g=U5o_GVT++YAPnǹ6+qY$cҤȝMHWQP~ +m\Oy#YAP*%1'W8Oy#[yi.OZUlpw=7.VTFz:o$+qY$c;Oy#[Yv\ sxDߔ q s^QC21{f>p3jUܸ`XAPnP odA5.|bLV; KtgB^QtsgM_sp10hzZUt:4B[ laᆱQP~x)YAP#+_oO;R_DWcȏud laマ[;觸?]5JG~% vӼ=M|~> NU㷴g2pKwؑnHWH?)`omCVTحdA5Fe]LV!ry@?>U5wsaA5m H1n$+qY$c/I;uժR%_GVT++YAPnǹ6+qY$cҤ^oo7l?U5/!+m\sWUJb>1&+M"w6z.\oB$8/aYUC6R +ppوfau'ҝ҈p"V.P"UV')o~;tTjT@_C5L4Da&H/vb}PmM~1jD6D-&jqc;ݜ/ZE Clآr-:[t{|qbn-]F+aγjU @"U NU㷴g2pKwؑnHWH?)`omCV;*5@"1  SORT, PACK and MAP DIRECTORY v3.3 09/04/83 |I2I9ͯ\͍\  DONE !"<~ ~##~_#~*<#~+- 6# *T#*<#͸ڲ*<*> ~G# *.>23"4:^#"M^#"T~#2O~#2P^#"R^#"V^"Z^#V#"C~#foM@2J*Z!"E*T#11"8":!"6*E#*M͸һ*G#!*6DM':J*#"GDM!"EDM*C 3DM:I$- #~#O )))))*6"6*8+"8|¢'~#@  ++ SAP not useable with MPM ++  ---> Previously sorted!"< ~0 2>#~$#~$#:>w+6$+6$+6$*<#*T#͸ڐ  ---> Reading directory } ++ READ ERROR - Exiting to CP/M - NO CHANGE made |g}o2K:\=K:KO2L:Ic2B  ---> Sorting directory !"<*<#">ܿ*>#">*T#͸ڊ*<#"<*T͸ڃ}o|g>2B*<*> G~p# :Bp  ---> Writing directory >} ++ WRITE ERROR - Exiting to CP/M - directory left in UNKNOWN condition ++   ---> Writing ^FILES.MAP  :L_\\<!"6*6\*6"6*:+":|¢\:K_  ++Not able to create "^FILES.MAP"++  ++Write error to "^FILES.MAP"++ory left in UNKNOWN condition ++ ^FILES MAPg ^FILES.MAP  SAPMAP33.DOC Sapmap33 can be described in a number of ways. Kluge is one. Another is "Poor Persons Backup" -- but it certainly isn't a substitute for good backup practices. Sapmap33 was born out of my frustration with what turned out to be a bus noise problem affecting one fast-responding memory board. Before I fixed it (at least I hope it's fixed) it managed to wipe out or garbage the directories of 4 disks. Since most of the files were ASCII it was possible to reconstruct the files by reading through the sectors with the DU program. I don't recommend that kind of activity as being productive or helping one's sanity, however. I probably should have been making backup disks more religously but the problem was infrequent and with several hundred disk sides potentially involved, the time and expense were more than I thought I could invest. Hence Sapmap. Since the wild writes seemed to affect only directory tracks (it turned out to be related to the I/O activity involving the disk controller) I wondered if there wasn't some way to back up the directory tracks so that if I did lose a directory sector, I could easily reconstruct it. Sap, a public domain program turned out to be a ideal base since it eliminated erased directory entries while sorting and packing the active entries. It turned out to be ideal from another standpoint. The source for Sap33 was available, the program flow was easy to identify -- mostly subroutine calls from a short main loop and the subroutines themselves were easy to follow since the coding was straightforward and uncomplicated. All-in-all, a tribute to the various programmers who originated and added to it. I wish that I could point with pride to my own code but I really didn't take the time to write it down and refine it -- I just typed it in out of my head and it probably shows it. On the other hand it was originally intended as throw away code. My addition to Sap was simply to add a subroutine that wrote the sorted directory information from a buffer within the program to a file called ^Files.Map which contains the same information as the directory and in the same format so that it can be read by DU or similar programs. It can also be transferred sector by sector to the directory to replace damaged sectors. The ^ causes the file to sort to the end of the directory where it will normally be placed by Sapmap. I've tentatively called the program Sapmap33 since it was derived from Sap33. I attempted to make as few changes in the original code as possible -- most of the added code is in a new subroutine. In addition, all of my changes and additions are marked with a ** in a comment for ease in transporting the changes to a new version of Sap should anyone ever have an interest in doing so. I don't present this as a true substitute for backups -- I certainly make duplicates of purchased program disks or my own originals which I would have difficulty in replacing. But for public domain programs which can eventually be replaced at a small expense if unrecoverable, Sapmap seems like a cheap insurance policy -- the expense being the loss of one file and up to 4K of disk space. I'm still using it even though I think that my problem has been solved. One word of caution, by the way -- I haven't tested the program with CPM 1.4 since I have only 2.2 . Jim Cornelius Broomall, Pa. 9-9-83