sean@ukma.UUCP (03/01/87)
Everyone should have this program! Can fix just about anything except a degaussed or reformatted disk. It can handle hard errors and the error I get most often: "Not a DOS disk". I believe that this program was originally distributed with source, but I don't have it (yet). Enjoy. Sean #! /bin/sh : This is a shell archive, meaning: : 1. Remove everything above the '#! /bin/sh' line. : 2. Save the resulting text in a file. : 3. Execute the file with /bin/sh '(not csh)' to create the files: : 'disksalv.doc' : 'disksalv.uue' : 'readme' : This archive created: 'Sun Mar 1 13:51:53 1987 ' : By: 'Sean Casey (The Leaning Tower of Patterson Office @ The Univ. of KY)' export PATH; PATH=/bin:$PATH echo shar: extracting "'disksalv.doc'" '(6981 characters)' if test -f 'disksalv.doc' then echo shar: will not over-write existing file "'disksalv.doc'" else cat >'disksalv.doc' <<'SHAR_EOF' DiskSalv AmigaDOS Disk Salvage Program by Dave Haynie (c) April 1986 This file describes my AmigaDOS disk salvaging program, DiskSalv. This program, the source for it, and this text file are all copyrighted, and are not to be considered in the public domain. Nontheless, all of these programs may be copied magnetically or electronically without any additional permission, providing no charge is requested for the program. The only fees permitted are a moderate copying charge, in the case of magnetic distribution, or any normal BBS charges, in the case of an electronic download. Any other uses may be negotiated by contacting me. Additionally, feel free to use any part of the source for your personal learning, and any small part of the source may be incorporated into your own program. If you are very pleased with this program or what you learn from the source code, please consider sending no more than $10.00 to me. I use such monies as an aid in creating more such programs. In addition, I'd appreciate reports of any bugs encountered so that I can maintain this program better. Money and any other communication from users also serves as an indicator of how useful the program is to the Amiga community and helps me decide what my next project will be and how much to support current programs. All correspondence may be sent to: Dave Haynie 645 Allen Avenue Gibbstown, NJ 08027 Usenet: {allegra,caip,seismo}!cbmvax!daveh Compuserve: 76703,2047 QuantumLink: Animal128 These addresses are current as of this writing, most are likely to remain so for awhile. And that's enough of that. This program is designed to let the user salvage all or parts of a damaged AmigaDOS disk. It is used similarly to the standard AmigaDOS DISKCOPY or COPY programs, with the format: DISKSALV dfN: [TO] dfM: Where the source disk is the corrupted disk, the target disk is a formatted AmigaDOS disk, usually (but not necessarily) empty. This command currently takes two drives; i.e. it won't salvage df0: to df0: or to RAM:. This program salvages the bad disk by by-passing the normal disk root directory, which may be corrupted (and as well is probably the most likely cause of a complete disk being rejected by AmigaDOS). It performs a scan to collect all directories and their associated files, building an internal dynamic image of the bad disk. Then each directory found is created through normal DOS call, then the files belonging to that directory are placed under it. The process continues until no more files/directories exist. There is no necessary correlation between the physical location of files on the bad disk and the physical location of the corresponding files on the newly created disk. Once all linkable files are restored, a directory of existing but unused data blocks is created, in an effort to preserve anything left, which might be manually re-created for a file that had its file header badly destroyed. This program will also copy a good disk, though inefficiently as compared to a straight Copy command. Also, this program recovers files that have been deleted but not yet written over. Thus, it can be used to recover deleted (but not overwritten) files. This version of DiskSalv (1.0) is meant to be a full featured version, completely replacing the previous version (0.9). As in 0.9, this program is capable of recovering disk directories on a bad disk, and any files in these directories with vaild file headers. When rebuilding a file, it uses the redundant information in AmigaDOS to resolve any file links that appear corrupted. Every AmigaDOS file has a header containing a list of block pointers, and a first block pointer. This first pointer is a link to the first 512 byte data block in the file. This first link is also echoed in the aforementioned list of block pointers. Each subsequent data block has a link to the next block which as well can be verified by the block pointer list. Data blocks also contain sequence numbers, indicating their logical sequence in the file, and backpointers to the file header block. These last two items are constantly checked, and are very good in helping to resolve any next block conflicts that might arise. This new version of DiskSalv does a few more intelligent things. It marks off any bad block that's found, and will never try to read it once it is found bad at one time in the disk scan. Since the DOS does several retrys on any bad block found, trying to read a bad block can take a comparatively long period of time, so this marking saves scanning time. The second thing that's marked is the writing of any particular data block. If a data block is written out once, it is marked and never used again. This will eliminate any errors that might crop up with a circular list of data blocks, which can occur when a block pointer is corrupted. When creating a new directory, the program will check for the prior existance of such a directory. If it already exists, the intended name will be modified slightly. After 10 of these attempted name changes, the program will abort the attempt to write out the directory. This allows a non-empty disk to easily be used for the output disk without having to worry about overwriting directories currently existing on the output disk. Along with that goes another new feature. If the output disk gets filled up completely, the program will pause you and request another disk for the output disk. Actually, the first time the disk becomes full, the system will pop up with a requestor box indicating that the disk has become full. Click the "CANCEL" box here and a prompt on the CLI comes up requesting a change of disks. It will then recreate the currently active directory path, and the file that it was working on before the swap took place. Everything from this point on proceeds as normal. One final feature is the ability to save blocks that have lost their file headers. These are often remains from old deleted files, but they could easily be blocks missing from a normal corrupted file. These will appear in a uniquely named SPARE-BLOCKS directory. Each file in that directory will have a name indicating the block's block number, parent block number, and sequence number. Any program source or other ASCII text can be easily put together by hand by following the proper sequence among files of similar parentage if desired, either in an editor or via the Join command. Any binary files may be re-assembled similarly, but unless all of the blocks in the file are available, the reassembled file will generally be useless. -Dave Haynie April 1986 "I gained nothing at all from Supreme Enlightenment, and for that very reason it is called Supreme Enlightenment." -Gotama Buddha "Let me control a planet's oxygen supply and I don't care who makes the laws." -Great Cthulhu's Starry Wisdom Band SHAR_EOF if test 6981 -ne "`wc -c < 'disksalv.doc'`" then echo shar: error transmitting "'disksalv.doc'" '(should have been 6981 characters)' fi fi # end of overwriting check echo shar: extracting "'disksalv.uue'" '(17659 characters)' if test -f 'disksalv.uue' then echo shar: will not over-write existing file "'disksalv.uue'" else cat >'disksalv.uue' <<'SHAR_EOF' begin 644 disksalv M```#\P`````````#``````````(```O+```!.`````$```/I```+RT[Z'<9. M5?_^0FW__F`0,"W__B!M``A",```4FW__@QM`-S__FWH3EU.=4Y5```@+0`, MYH@@;0`(<@`2,`@`=`$F+0`,YZ+"@L*\`````V<$<`%@`G``3EU.=4Y5```@ M+0`,YH@@;0`(T<!R`20M``SEH<*\`````X,03EU.=4Y5__HK;0`(__H@;0`, M#!``'V(*(FT`#'``$!%@`G`?&T#__QM\``'__F`:<``0+?_^(&T`#")M__I2 MK?_Z$K`(`%(M__X0+?_^L"W__V/<(&W_^D(0("T`"$Y=3G5.50``2JT`#&82 M2'H`=B\M``A.NB#N4$].74YU(&T`#+'L@")F$$AZ`%LO+0`(3KH@TE!/8.(@ M;0`,2J@`!&<0(&T`#"\H``0O+0`(8;)03R\M``A.NB5T6$^P?``!9PY(>@`C M+RT`"$ZZ('!03R!M``Q(:``,+RT`"$ZZ(%Y03V"6`#H`+P``3E7__$JM``AF M!G``3EU.=4AY``$``2\M``Q.NBS>4$\K0/_\2JW__&8$<`!@WB!M__P1?``% M``@@;?_\0B@`"2!M__PA;0`(``X@+?_\8+Q.50``(&T`"!%\`/\`""!M``A" MJ``4(&T`"$*H`!@O+0`,+RT`"$ZZ++A03TY=3G5.50``(&R`!D*H`"0@;(`& M,7P`"0`<+RR`!DZZ+'!83W``3EU.=4Y5```@;(`&,7P`#0`<+RR`!DZZ+%)8 M3R!L@`8I:``@@`Y.74YU3E4``$JM``QF!G`!3EU.=2\M``Q(;(0&3KK]X%!/ M2D!G!'`!8.8@;(`&(7P```(``"0@;(`&(6T`"``H(&R`!C%\@`(`'"!L@`8A M;(`.`#`@;(`&("T`#'()XZ`A0``L+RR`!DZZ*]I83R!L@`9**``?9QPO+0`, M2&R$!DZZ_:Q03R\M``Q(;(,J3KK]GE!/(&R`!A`H`!]@`/]R3E7__$*G2'@` M"$ZZ*X903RM`__P@;?_\(6T`"``$(&W__$*0("W__$Y=3G5.50``2JT`"&8$ M3EU.=2!M``A*D&<*(&T`""\08>)83TAX``@O+0`(3KHK<E!/8-I.5?_\0J=( M>``V3KHK*E!/*T#__"!M__Q":``L(&W__$*0(&W__$*H``0@;?_\0J@`""!M M__PA;0`(`"X@;?_\0J@`,B\M``P@;?_\2&@`#$ZZ_0103R`M__Q.74YU3E4` M`"!M``A*D&<*(&T`""\08>Q83R!M``A*J``(9PP@;0`(+R@`"&'66$\@;0`( M2J@`,F<.(&T`""\H`#).NO\R6$](>``V+RT`"$ZZ*L!03TY=3G5.5?_\(&T` M""`H`"ZPK0`,9@@@+0`(3EU.=2!M``A*D&<:+RT`#"!M``@O$&'24$\K0/_\ M9P8@+?_\8-H@;0`(2J@`"&<<+RT`#"!M``@O*``(8:Q03RM`__QG!B`M__Q@ MM'``8+!.5?_\(&T`""MH``C__"!M``@A;0`,``@@;0`,(*W__"!M``PA;0`( M``1.74YU3E7__"!M``@K:``R__Q@%B!M__P@*``$L*T`#&<.(&W__"M0__Q* MK?_\9N0@+?_\3EU.=4Y5__P@;0`(*V@`,O_\(&T`""%M``P`,B!M``P@K?_\ M3EU.=4Y5__1(>``"2'@"`$ZZ*8A03RM`__PO+0`(+RW__$ZZ_4A03TH`9Q9( M>`(`+RW__$ZZ*9I03R`L@").74YU(&W__`R0`````F8.(FW__`RI`````@'\ M9Q1(>`(`+RW__$ZZ*6I03R`L@")@SB!M__Q**`&P9PHB;?_\2BD!L6842'@" M`"\M__Q.NBE"4$\@+(`B8*8@;?_\+R@!]"\L@").NOYR4$\K0/_T9A(@;?_\ M+R@!]$ZZ_TI83RM`__0@;?_\2&@!L"\M``A.NOV44$\K0/_X+RW_^"\M__1. MNOZ<4$](>`(`+RW__$ZZ*.!03R`M__A@`/]$3E7^\"M\`````?_\+RW__"\L M@!9.NOQ:4$]*`&<2+RW__$AZ`G).NAQ24$]@``)4(&R`%B`08``"/B\M__Q( M;(,J3KKZ5E!/(&R`%B`H`?Q@``'*+RW__$AZ`EE.NAP<4$\@;(`6+R@!]"\L M@").NOVL4$\K0/_X9A(@;(`6+R@!]$ZZ_H183RM`__@O+?_X2&W^\4ZZ^H90 M3R\`2'H",4ZZ&]A03TAM_O%.NB`Z6$]30$'M_O$,,``Z``!G"DAZ`A).NANV M6$\@;(`62&@!L$AM_O%.NOGH4$\O`$AZ`?9.NAN84$\@;(`6("@`!+"M__QG M#$AZ`>%.NAN`6$]@"DAZ`>M.NAMT6$\O+?_\+RW_^$ZZ_9Q03TJ`9@`!$B\M M__Q.NOOH6$\K0/_P+RW_\"\M__A.NOVN4$]@``#R+RW__$AZ`:Q.NALR4$\@ M;(`6+R@!]"\L@").NOS"4$\K0/_X9A(@;(`6+R@!]$ZZ_9I83RM`__@O+?_\ M+RW_^$ZZ_)Q03RM`__1G'B\M__1(;?[Q3KKYB%!/+P!(>@%P3KH:VE!/8``` MB"!L@!9(:`&P+RW__$ZZ^[)03RM`__0O+?_T+RW_^$ZZ_+I03R\M__1(;?[Q M3KKY1E!/+P!(>@$R3KH:F%!/(&R`%B`H``2PK?_\9PQ(>@$=3KH:@%A/8`I( M>@$G3KH:=%A/8"(O+?_\2'H!&DZZ&F103V`2D+S____]9P#^,%N`9P#_%&#> M8%(@;(`62J@`#&8.+RW__$AL@RI.NOA64$\O+?_\2'H`]4ZZ&BA03V`J+RW_ M_$AL@RI.NO@X4$\O+?_\2'H`[TZZ&@I03V`,58!G`/W`78!GL@JW__`RM M```&X/_\90#]?$Y=3G4@FTN;-VU";&]C:R`E-&QD("A%4E)/4BF;,&T*`""; M2T)L;V-K("4T;&0@*$9)3$4I($YA;64@(@`E<P`O`"5S`"(@0FQO8VL@2V5Y M($UI<VUA=&-H"@`B"@`@FTM";&]C:R`E-&QD("A$25(I("!.86UE("(`)7,* M`"5S`"(@0FQO8VL@2V5Y($UI<VUA=&-H"@`B"@`@FTM";&]C:R`E-&QD("@_ M/S\I"IM!`"";2T)L;V-K("4T;&0@*$1!5$$I"IM!`"";2T)L;V-K("4T;&0@ M*%5.55-%1"D*FT$``$Y5__I"+?_[0BW_^B\M``PO+0`(2'H!:DZZ&.I/[P`, M#*T```;@``AC!$*M``@,K0``!N``#&,$0JT`#"\M``A(;(,J3KKVKE!/2D!G M!$*M``@O+0`,2&R#*DZZ]IA03TI`9P1"K0`,2JT`"&8(("T`#$Y=3G5*K0`, M9@8@+0`(8/!(>``"2'@"`$ZZ))Q03RM`__PO+0`(+RW__$ZZ^%Q03TH`9D8@ M;?_\("@`"+"M`!!F!'(!8`)R`")M__PD*0`$M*T`%&8$=@%@`G8`TD,L;?_\ M#)8````(9@8\?``!8`*=SM).4D$;0?_[+RT`#"\M__Q.NO@$4$]*`&9&(&W_ M_"`H``BPK0`09@1R`6`"<@`B;?_\)"D`!+2M`!1F!'8!8`)V`-)#+&W__`R6 M````"&8&/'P``6`"G<[23E)!&T'_^DAX`@`O+?_\3KHD$%!/2BW_^V8$0JT` M"$HM__IF!$*M``P0+?_[L"W_^F,(("T`"&``_OP@+0`,8`#^]"`@()LW;5)E M<V]L=FEN9R!L:6YK(&-O;F9L:6-T("5L9"`\+3X@)6QDFS!M"@!.50``(&T` M"%.0(&T`"$J0;%P@;0`0+Q`O+(`>3KKW+E!/2@!G$$AZ`$I.NA<J6$]P`$Y= M3G4@;(`>+R@`!$AZ`&M.NA<24$\@;0`,("R`'M"\````&""`(&R`'B)M`!`B MJ`'X(&T`"""\````1W`!8,`@()LW;4524D]2.B!"860@17AT96YS:6]N($)L M;V-K("T@3F\@36]R92!,:6YK($-H96-KFS!M"@`@($QI;FMI;F<@=FEA($5X M=&5N<VEO;B!";&]C:R`E;&0*`$Y5_^H[?``!_^HK?````$?__"`M``S0O``` M`!@K0/_X(&T`#"MH`?C_\"!M``PK:``0__1"K?_L(&R`&D*H``A*K?_T9B0@ M;0`,("W_[+"H``AD``$L(FR`&BQM``PB*0`(LJX`"&(``1A2K?_L("W__.6` M(&W_^"(P"`"RK?_T9RH@;0`,+R@`!"\M_^P@+?_\Y8`B;?_X+S$(`"\M__1. MNOSB3^\`$"M`__1*K?_T9P``SDIM_^IG&$AM__!(;?_X2&W__$ZZ_FI/[P`, M.T#_ZB\M__0O+(`:3KKUHE!/2@!F:B\M__1(;(,J3KKSNE!/(&R`&B`\```! MZ+"H``QD""`\```!Z&`((FR`&B`I``PO`"QL@!I(;@`8+RT`"$ZZ(%Y/[P`, ML+S_____9A).NA_LL+P```#=9@9P`$Y=3G4@;(`:*V@`$/_T8"Y*;?_J9QQ( M>@`N3KH5+EA/("W__.6`(&W_^"MP"`#_]&`,2'H`1TZZ%1)83V`$8`#^PG`! M8+H@()LW;4524D]2.B!$:7-K($9A=6QT("TM($9I;&4@;6%Y(&)E(&EN8V]M M<&QE=&6;,&T*`"`@FS=M15)23U(Z($1O=6)L92!$:7-K($9A=6QT("TM($9I M;&4@=')U;F-A=&5D"ILP;0``3E7_^"\M``A.NA[J6$\K0/_\9QXO+0`(2'H` MJDZZ%'Q03R\M__Q.NA]:6$]P`4Y=3G4O+0`(2'H`JTZZ%%Y03R\M``A.NAC` M6$\[0/_Z,"W_^E)M__H@;0`($;P`+0``,"W_^E)`(&T`"$(P```;?``P__E@ M0#`M__H@;0`($:W_^0``+RT`"$ZZ'FI83RM`__QG'B\M``A(>@!^3KH3_%!/ M+RW__$ZZ'MI83W`!8`#_?E(M__D,+0`Y__EON'``8`#_;)LS;4)U:6QD:6YG M($1I<F5C=&]R>2`B)7,BFS!M"@";-VU%4E)/4CH@0F%D($1I<F5C=&]R>2!# M<F5A=&4@(B5S(BP@<F5T<GEI;F<N+BZ;,&T*`)LS;4)U:6QD:6YG($1I<F5C M=&]R>2`B)7,BFS!M"@``3E7^_D)M_OX@;0`(4JT`"#`M_OY2;?[^0^W_`1.0 M```,$``Z9P)@X#`M_OY![?\!0C```$AM_P%(>@!X3KH3)%!/2&R`NDZZ#=I8 M3R!M``A*$&=<(&T`"%*M``@P+?[^4FW^_D/M_P$3D```#!``+V<.(&T`"$H0 M9@1.74YU8-0P+?[^4T!![?\!0C```$AM_P%.NOXT6$]*0&8"8-PP+?[^4T!! M[?\!$;P`+P``8)Q@R)LW;0I$25-+($953$PZ($EN<V5R="!.97<@1&ES:R!) M;B`E<RP@='EP92!215154DZ;,&T``$Y5_NY";?[N*VR`%O[P+RT`"$AM_OE. MNA(&4$\K;0`,__A@``%L+RW_^$AM_OQ.NO#L4$\@;?_XL>R`(F<02&W^^4ZZ M_9Q83TI`9P`!/$AM_OE.NA:26$\;0/[X<``0+?[X4T!![?[Y##``.@``9Q80 M+?[X4BW^^'(`$@!![?[Y$;P`+Q@`(&W_^"MH`#+__&```-(@;?_\+R@`!"\M M_O!.NO'.4$]*`&8``+(@;?[P2&@!L'``$"W^^$/M_OG0B2\`3KKO^E!/0FW^ M[DAX`^Y(;?[Y3KH<9%!/*T#^]&802&W^^4AZ`+9.NA&04$]@9$AM_OE(>@#, M3KH1@%!/(&W^\$JH``AF"B)M_O!*J0`09T(O+?[P+RW^]$ZZ^M903TI`9B8O M+?[T3KH;FEA/2&W^^4ZZ&[A83TAM_OE.NOW:6$\[?``!_NY@"B\M_O1.NAMT M6$]*;?[N9@#_;B!M__PK4/_\2JW__&8`_RH@;?_X2J@`"&<2(&W_^"\H``@O M+0`(3KK^?%!/(&W_^"M0__A*K?_X9@#^D$Y=3G4@FS=M15)23U(Z($-A;B=T M($-R96%T92!&:6QE("(E<R*;,&T*`"!296-O=F5R:6YG($9I;&4@(B5S(@H` M`$Y5_O)";?_\.WS___[Z0FW__F`<,"W__D'L@RH,,`````!7P<)\``$[0?_\ M4FW__@QM`-S__FP&2FW__&?62FW__&<.2'H!-DZZ$%983TY=3G52;?[Z/RW^ M^B\M``A(>@$Z2&W^_4ZZ#^Q/[P`.2'C__TAM_OU.NAK64$\K0/[V9PPO+?[V M3KH;`%A/8,1(;?[]3KH:9EA/*T#^]B\M_O9.NAKF6$](;?[]2'H`_TZZ#_!0 M3T)M__Y@``"T/RW__DAL@RI.NNW*7$]*0&8``)P_+?_^+RR`%DZZ[[Q<3R!L M@!8O*``((FR`%B\I``0_+?_^/RW^^B\M``A(>@#+2&W^_4ZZ#U!/[P`82&W^ M_4AZ`-A.N@^,4$](>`/N2&W^_4ZZ&CY03RM`_O(@;(`6(#P```'HL*@`#&0( M(#P```'H8`@B;(`6("D`#"\`+&R`%DAN`!@O+?[R3KH:/D_O``PO+?[R3KH9 MA%A/4FW__@QM!N#__FT`_T9@`/[4($YO($QO;W-E($)L;V-K<R!%;F-O=6YT M97)E9`H`)7-34$%212U"3$]#2U,E9`";,VU#<F5A=&5D($1I<F5C=&]R>2`E M<YLP;0H`)7-34$%212U"3$]#2U,E;&0O0DQ++25D+25L9"TE;&0`("!3879I M;F<@)7,*``!.5?_^0J=(>@'43KH9V%!/*4"`"F802'H!T4ZZ#HY83W``3EU. M=4AX`#@O+(`*3KKMI%!/*4"`!F8.2'H!UDZZ#FI83W``8-I(>``"2'@"`$ZZ M&GQ03RE`@!9F!'``8,)(>``"2'@"`$ZZ&F103RE`@!IF$DAX`@`O+(`63KH: MAE!/<`!@G$AX``)(>`(`3KH:/E!/*4"`'F8B2'@"`"\L@!9.NAI@4$](>`(` M+RR`&DZZ&E)03W``8`#_:$*G+RR`!B\L@!)(>@%O3KH:=D_O`!!*@&<Z2'H! M<$ZZ#<Y83TAX`@`O+(`63KH:&E!/2'@"`"\L@!I.NAH,4$](>`(`+RR`'DZZ M&?Y03W``8`#_%$AL@`)(>@%=3KH-D%!/+RT`"$AZ`6Q.N@V"4$\O+0`,2'H! MADZZ#7103TAZ`:1.N@UJ6$](;("Z3KH((%A/&T#__TZZ[29(;(0&3KKK&%A/ M2&R#*DZZZPY83T)G2&R#*DZZZUA<3TAZ`8!.N@TN6$](>@&2/SP#<$ZZ[@Y< M3RE`@").NO"<2'H!@$ZZ#0Y83R\L@"(O+0`,3KKZAE!/2'H!ADZZ#/983R\M M``Q.NOQ,6$](>@&.3KH,XEA/+RR`(DZZ[B183W`!8`#^2&1I<VMR97$N<&]R M=`";-VU%4E)/4CH@0V%N;F]T(&-R96%T92!M97-S86=E('!O<G2;,&T*`)LW M;4524D]2.B!#86YN;W0@8W)E871E($DO3R!P;W)TFS!M"@!T<F%C:V1I<VLN M9&5V:6-E`)LW;4524D]2.B!#86YN;W0@;W!E;B!4<F%C:T1I<VL@9&5V:6-E MFS!M"@!$:7-K4V%L=B`E<R!B>2!$879E($AA>6YI90H*`%!L86-E(&1I<VL@ M=&\@<V%L=F%G92!&4D]-(&EN(&1R:79E("5S"@!0;&%C92!D:7-K('1O('-A M;'9A9V4@(%1/("!I;B!D<FEV92`E<PH`5'EP92!215154DX@=&\@8V]N=&EN M=64`"D)U:6QD:6YG($1I<F5C=&]R>2!-87`N+BX*``$Z,``*4V%L=F%G:6YG M($1I<VL@4W1R=6-T=7)E+BXN"@`*4V%L=F%G:6YG($QO;W-E($)L;V-K<RXN M+@H`0VQE86YI;F<@57`N+BX*`$Y5__(P+0`(2,!@``#J(&T`"B)H``0,$0`_ M9@``H$AL@`)(>@'P3KH+(%!/2'H"$DZZ"Q983TAZ`D1.N@L,6$](>@)X3KH+ M`EA/2'H"J4ZZ"OA83TAZ`M-.N@KN6$](>@+E3KH*Y%A/2'H#$TZZ"MI83TAZ M`T).N@K06$](>@-P3KH*QEA/2'H#HTZZ"KQ83TAZ`]1.N@JR6$](>@/O3KH* MJ%A/2'H$($ZZ"IY83TAZ!$I.N@J46$].NA.V2'H$<DZZ"H983TZZ$Z@@;0`* M*V@`!/_\(&T`"BMH``C_^&`F(&T`"BMH``3__"!M``HK:``,__A@$%6`9P#_ M%%.`9\I3@&?<8+8@;?_\$"@``DB`D'P`,$C`*4"`$DJL@!)M"@RL````!(`2 M;PY(>@1!3KH*&%A/3KH3.B!M__@0*``"2("0?``P2,`K0/_R2JW_\FT*#*T` M```$__)O#DAZ!#].N@GF6$].NA,(("W_\K"L@!)F#DAZ!%A.N@G.6$].NA+P M+RW_^"\M__Q.NOL24$\;0/_W2JR`&F<.2'@"`"\L@!I.NA7^4$]*K(`>9PY( M>`(`+RR`'DZZ%>I03TJL@!9G#DAX`@`O+(`63KH5UE!/2JR`!F<<3KKI&B\L M@`9.NA2*6$](>``X+RR`!DZZZ-103TJL@`IG"B\L@`I.NA406$\0+?_W2(`_ M`$ZZ$F143TY=3G5$:7-K4V%L=B`E<R`H8RDQ.3@V(&)Y(")(87IY(B!$879E M($AA>6YI90H*`"`@5&AI<R!P<F]G<F%M('-A;'9A9V5S(&$@8F%D($%M:6=A M1$]3(&1I<VL@8GD@8V]P>6EN9R!A;GD*`')E8V]V97)A8FQE(&9I;&5S(&]R M(&1I<F5C=&]R:65S(&9R;VT@=&AE(&)A9"!D:7-K('1O(&$@9V]O9`H`9F]R M;6%T=&5D(&1I<VLN("!)="!A;'-O(&-O<&EE<R!L;V]S92!D871A(&)L;V-K M<R`H8FQO8VMS"@!W:&\G<R!F:6QE(&AE861E<B!W87,@9&5S=')O>65D*2X@ M(%1H92!F;W)M870@:7,Z"@H`("!$:7-K4V%L=B!D9DTZ(%M43UT@9&9..@H* M`'=H97)E($X@86YD($T@87)E(&1I9F9E<F5N="`S(#$O,B(@9')I=F5S(&9R M;VT@,"!T;R`S+@H`("!4:&ES('!R;V=R86T@;6%Y(&)E(&1I<W1R:6)U=&5D M(&9R964@9F]R(&%N>2!P97)S;VYA;`H`=7-A9V4@=VET:&]U="!A9&1I=&EO M;F%L('!E<FUI<W-I;VXN("!)9B!Y;W4@9FEN9"!T:&ES"@!P<F]G<F%M('9E M<GD@=7-E9G5L+"!P;&5A<V4@8V]N<VED97(@<&%Y:6YG("0Q,"!O<B!L97-S M(&9O<@H`:71S('5S92X@(%EO=2!M87D@86QS;R!D:7)E8W0@86YY('%U97-T M:6]N<RP@8G5G(')E<&]R=',L"@!O<B!M86-A9&%M:6$@;G5T<R!T;R!T:&4@ M875T:&]R(&%T.@H`("`@1&%V92!(87EN:64*("`@-C0U($%L;&5N($%V96YU M90H@("!':6)B<W1O=VXL($Y*(#`X,#(W"@`@("!5<V5N970@("`@.B`@>V%L M;&5G<F$L8V%I<"QS96ES;6]](6-B;79A>"%D879E:`H`("`@0V]M<'5S97)V M93H@(#<V-S`S+#(P-#<*("`@475A;G1U;4QI;FLZ($%N:6UA;#$R.`H`57-A M9V4Z($1I<VM386QV(&1F33H@6U1/72!D9DXZ+"!T>7!E(")$:7-K4V%L=B`_ M(B!F;W(@:&5L<"X*`)LW;4524D]2.B!);G9A;&ED(&EN<'5T(&1R:79E('-P M96-I9FEC871I;VZ;,&T*`)LW;4524D]2.B!);G9A;&ED(&]U='!U="!D<FEV M92!S<&5C:69I8V%T:6]NFS!M"@";-VU33U)263H@3VYL>2`R+61R:79E('-A M;'9A9V4@:7,@8W5R<F5N=&QY('-U<'!O<G1E9)LP;0H`3E4``$CG""`D;0`( M+PI.N@`R6$\X`+!\__]G(C`$2,!@%%.2".H``P`,</],WP003EU.=6#62H!G M^EF`9^0P!&#J3E4``$CG""`D;0`((%*QZ@`$9680*@`,P#P`&&<*</],WP00 M3EU.=0BJ``(`#$JJ``AF""\*3KH+H%A//RH`$"\J``@0*@`-2(`_`$ZZ`ZA0 M3S@`2D!N$DI$9@1P"&`"<!"!*@`,</]@MC`$2,`DJ@`(T*H`""5```0@4E*2 M$!!(@,!\`/]@F`````!#^?____PH4=G,V<S9_```@`)#[()Z1>R">K7)9A`B M/````)EK"'0`(L)1R?_\0_K_S"*,*4^"@BQX``0I3H*&2.>`@$ZZ``Q03TYU M*'K_KDYU3E7__$CG#C!"ITAZ`MI.NA"^4$\I0(*29A1"ITAY``.`!TZZ#P90 M3RYL@H).=4*G3KH0-%A/)D!*JP"L9P`!Z"!L@H(@+(*"D*@`!%"`*4""HB!L M@J(@O$U!3E@@*P"LY8`J`"!%("@`$.6`)$`0$DB`2,#0K0`(5(`Y0(*00J<P M+(*02,`O`$ZZ#[Y03RE`@JH0$DB`/P`@2E*(+P@O+(*J3KH"4D_O``I(>@)& M$!)(@$C`T*R"JB\`3KH#"%!/,"T`"E)`/P`O+0`,+RR"JDZZ`M!/[P`*0FR" MCB1L@JHK2@`,$!)(@%)`0>R`.`@P``0``&<$4HI@Z@P2`"!M>@P2`")F-E** M($I2BA`02(`X`&<F(&T`#%*M``P0A+A\`")F%`P2`")F!%**8`H@;0`,0BC_ M_V`"8,Y@,B!*4HH0$$B`.`!G'#($4D%#[(`X"#$`!!``9@P@;0`,4JT`#!"$ M8-@@;0`,4JT`#$(02D1G"%)L@HY@`/]L(&T`#$(00J<P+(*.4D!(P.6`+P!. MN@ZX4$\I0(*F>``D;(*J8!YP`#`$Y8`@;(*F(8H(`"\*3KH&VEA/4D!(P-7` M4D2X;(*.9=QP`#`$Y8`@;(*F0K`(`$ZZ#-HI0(*R.7R``(*V3KH-$"E`@K@Y M?(`!@KQ(>`/M2'H!`$ZZ#.Q03RE`@KXY?``!@L(Y?``!@HPO+(*F/RR"CDZZ M]L)<3T)G3KH+*E1/8```NB`K`#I0@"E`@J(@;(*B(+Q-04Y82&L`7$ZZ#L18 M3TAK`%Q.N@Y06$\I0(*N(&R"KDJH`"1G$"!L@JXB:``D+Q%.N@P>6$\@;(*N M2J@`(&=42'@#[2!L@JXO*``@3KH,8%!/*4""LF<\*6R"LH*^*6R"LH*X)VR" ML@"@)VL`H`"<0FR"MCE\``&"PCE\``&"O"`L@K+E@"M`__P@;?_\)V@`"`"D M+RR"KD)G3KKV!EQ/0F=.N@IN5$],WPQP3EU.=61O<RYL:6)R87)Y`"``*@!, M[P,```0@"#(O``Q@`A#95\G__&<&4D%@`D(84<G__$YU3E4``$CG#"`X+0`( M3KH)T#`$P?P`!D'L@K(D0-7(2D1M"KA\`!-N!$J29A`Y?``#@HIP_TS?!#!. M74YU,"H`!,!\``.P?``!9@HY?``&@HIP_V#@<``P+0`.+P`O+0`*+Q).N@M^ M3^\`#"H`L+S_____9@Q.N@LL.4""BG#_8+0@!6"P,#Q__V`$,"\`#"!O``1* M&&;\4T@B;P`(4T`0V5?(__Q"("`O``1.=2!O``0@"")O``@0V6;\3G5.50`` M+P0I;0`(@GI(;0`0+RT`#$AZ`!I.N@#<3^\`##@`(&R">D(0,`0H'TY=3G5. M50``(&R">E*L@GH0+0`)$(!(@,!\`/].74YU3E4``$AM``PO+0`(2'H$<$ZZ M`)A/[P`,3EU.=4Y5``!(YP@@)&T`#@QM``0`$F8((&T`""@08!Q*;0`,;PP@ M;0`(<``P$"@`8`H@;0`(,!!(P"@`0FT`$DIM``QL$$1M``Q*A&P(1(0[?``! M`!(R+0`,2,$@!$ZZ`XY![(`F4XH4L```,BT`#$C!(`1.N@.$*`!FVDIM`!)G M!E.*%+P`+2`*3-\$$$Y=3G5.5?\B2.<(,"1M``@F;0`,0FW_^BMM`!#__"!+ M4HL0$$B`.`!G``+LN'P`)68``LI"+?\P.WP``?_X.WP`(/_V.WPG$/_T($M2 MBQ`02(`X`+!\`"UF#D)M__@@2U*+$!!(@#@`N'P`,&80.WP`,/_V($M2BQ`0 M2(`X`+A\`"IF&"!M__Q4K?_\.U#_\B!+4HL0$$B`.`!@,D)M__)@'#`M__+! M_``*T$20?``P.T#_\B!+4HL0$$B`.``P!%)`0>R`.`@P``(``&;4N'P`+F9: M($M2BQ`02(`X`+!\`"IF&"!M__Q4K?_\.U#_]"!+4HL0$$B`.`!@,D)M__1@ M'#`M__3!_``*T$20?``P.T#_]"!+4HL0$$B`.``P!%)`0>R`.`@P``(``&;4 M.WP``O_PN'P`;&82($M2BQ`02(`X`#M\``3_\&`0N'P`:&8*($M2BQ`02(`X M`#`$2,!@>#M\``C_[F`6.WP`"O_N8`X[?``0_^Y@!CM\__;_[C\M__!(;?\P M/RW_[B\M__Q.NOWD3^\`#"M`_^HP+?_P2,#1K?_\8%H@;?_\6*W__"M0_^HO M+?_J3KH"#%A/.T#_\&!*(&W__%2M__PX$$'M_R\K2/_J$(1@*)"\````8V?B M4X!GE)"\````"V<`_W19@&>T58!G`/]R5X!G`/]T8,Q![?\PD>W_ZCM(__`P M+?_PL&W_]&\&.VW_]/_P2FW_^&=H(&W_Z@P0`"UG"B)M_^H,$0`K9BX,;0`P M__9F)E-M__(@;?_J4JW_ZA`02(`_`$Z25$^P?/__9@IP_TS?#!!.74YU8!8_ M+?_V3I)43[!\__]F!'#_8.12;?_Z,"W_\E-M__*P;?_P;MQ";?_N8"`@;?_J M4JW_ZA`02(`_`$Z25$^P?/__9@1P_V"P4FW_[B!M_^I*$&<*,"W_[K!M__1M MSC`M_^[1;?_Z2FW_^&8H8!@_/``@3I)43[!\__]F!G#_8`#_>%)M__HP+?_R M4VW_\K!M__!NVF`6/P1.DE1/L'S__V8&</]@`/]24FW_^F``_0HP+?_Z8`#_ M0DCG2`!"A$J`:@1$@%)$2H%J!D2!"D0``6$^2D1G`D2`3-\`$DJ`3G5(YT@` M0H1*@&H$1(!21$J!:@)$@6$:(`%@V"\!81(@`2(?2H!.=2\!808B'TJ`3G5( MYS``2$%*068@2$$V`30`0D!(0(##(@!(0#("@L,P`4)!2$%,WP`,3G5(028! M(@!"04A!2$!"0'0/T(#3@;:!8@22@U)`4<K_\DS?``Q.=2!O``0@"$H89OR1 MP"`(4X!.=4Y5``!(;(#0/RT`"$ZZ``A<3TY=3G5.50``+P0X+0`(+RT`"C\$ M3KH`,%Q/N'P`"F8D(&T`"A`H``Q(@`@```=G%#\\__\O+0`*3KH`]EQ/*!]. M74YU8/A.50``+PHD;0`*(%*QZ@`$91@P+0`(P'P`_S\`+PI.N@#*7$\D7TY= M3G4@4E*2$"T`"1"`2(#`?`#_8.A.50``+PI![("Z)$@@2M7\````%B\(81!8 M3T'L@G*UR&7J)%].74YU3E4``$CG""`D;0`(>``@"F8*</],WP003EU.=4HJ M``QG4@@J``(`#&<,/SS__R\*851<3S@`$"H`#4B`/P!.N@2`5$^(0`@J``$` M#&<*+RH`"$ZZ`C!83P@J``4`#&<4+RH`$DZZ`I)83R\J`!).N@(46$]"DD*J M``1"J@`(0BH`##`$8(Y.5?_^2.<(("1M``A!^O]$*4B"<@@J``0`#&<*</], MWP003EU.=0@J``(`#&<P(!*0J@`(.``_!"\J``@0*@`-2(`_`$ZZ`E!03[!$ M9Q`(Z@`$``Q"DD*J``1P_V#`#&W__P`,9A`(J@`"``Q"DD*J``1P`&"H2JH` M"&8(+PI.N@":6$\,:@`!`!!F*AMM``W__S\\``%(;?__$"H`#4B`/P!.N@'R M4$^P?``!9J`P+0`,8`#_:B2J``@P*@`02,#0J@`()4``!`CJ``(`#"!24I(0 M+0`-$(!(@,!\`/]@`/\^3E4``"\*0>R`NB1(2BH`#&<8U?P````60>R"<K7( M90AP`"1?3EU.=6#B0I)"J@`$0JH`""`*8.I.5?_\+PHD;0`(/SP$`$ZZ`,!4 M3RM`__QF\``$`$"`*T+P````.)4``""1?3EU.=35\!```$`CJ``$`#"5M M__P`"!`J``U(@#\`3KH`XE1/2D!G!@`J`(``#&#.3E4``$CG`#`D;()^8!0F M4B`J``10@"\`+PI.N@4*4$\D2R`*9NA"K()^3-\,`$Y=3G5.50``+PI!^O_& M*4B"=D*G("T`"%"`+P!.N@2D4$\D0$J`9@AP`"1?3EU.=22L@GXE;0`(``0I M2H)^(`I0@&#F3E4``'``,"T`""\`8;)83TY=3G5.50``2.<`,)?+)&R"?F`. M(&T`"%&(L<IG$B9*)%(@"F;N</],WPP`3EU.=2`+9P0FDF`$*5*"?B`J``10 M@"\`+PI.N@1<4$]P`SE4``#`M``C!_``&0>R"LB\P"`!.N@*"6$]*@&<$ M<`%@`G``3EU.=4Y5```O+0`(3KH".EA/2H!F#DZZ`E0Y0(**</].74YU<`!@ M^$Y5``!(YPP@."T`"$ZZ`'(P!,'\``9![(*R)$#5R$I$;0JX?``3;@1*DF80 M.7P``X**</],WP0P3EU.=3`J``3`?``#9@HY?``&@HIP_V#D<``P+0`.+P`O M+0`*+Q).N@)&3^\`#"H`L+S_____9@Q.N@'2.4""BG#_8+@@!6"T3E7__$AX M$`!"ITZZ`_103RM`__P(```,9@9P`$Y=3G5*;(*,9@8@+?_\8/!(>``$2'H` M'$ZZ`<8O`$ZZ`>I/[P`,/SP``4ZZ``I43V#.7D,*`$Y5``!*K()R9P8@;()R M3I`_+0`(3KH`"%1/3EU.=4Y5__Y";?_^/RW__DZZ`*943U)M__X,;0`4__YM MZDJL@G9G!B!L@G9.D$JL@IIG"B\L@II.N@&R6$]*K(*69PHO+(*63KH!HEA/ M2JR"GF<*+RR"GDZZ`9)83TJL@JYF.#`L@I!(P"\`+RR"JDZZ`JI03S`L@HY2 M0$C`Y8`O`"\L@J9.N@*44$\P+0`(2,`O`$ZZ`*I83V`83KH"<B\L@JY.N@+B M6$\@+0`(+FR"@DYU3EU.=4Y5``!(YPX@."T`"#`$P?P`!D'L@K(D0-7(2D1M M"KA\`!-N!$J29A`Y?``#@HIP_TS?!'!.74YU,"H`!,!\@`!F""\23KH`#EA/ M0I)P`&#@3OH``B(O``0L;(*23N[_W"(O``0L;(*23N[_B"(O``0L;(*23N[_ M@D[Z``(B+P`$+&R"DD[N_[@B+P`$+&R"DD[N_W`L;(*23N[_RD[Z``(L;(*2 M3N[_?"(O``0L;(*23N[_*$[Z``),[P`&``0L;(*23N[_K$[Z``),[P`&``0L M;(*23N[_XBQL@I).[O_$3.\`#@`$+&R"DD[N_]9.^@`"(B\`!"QL@I).[O^F M3OH``DSO``X`!"QL@I).[O_02.<!!$SO((``#"QL@H9.KO^43-\@@$YU(F\` M!"QL@H9.[OX^(F\`!"QL@H9.[OYB3E4``$CG""!(>/__3KH`T%A/*`"PO/__ M__]F"G``3-\$$$Y=3G5(>0`!``%(>``B3KH`N%!/)$!*@&8,+P1.N@#T6$]P M`)6T`"``*%6T`#P`)%7P`!``(0BH`#A5$``]"ITZZ`*)83R5``!!*K0`( M9PHO"DZZ`%I83V`*2&H`%$ZZ`,A83R`*8)).50``+PHD;0`(2JH`"F<(+PI. MN@#D6$\5?`#_``@E?/____\`%'``$"H`#R\`3KH`>%A/2'@`(B\*3KH`6%!/ M)%].74YU(F\`!"QL@H9.[OZ>("\`!"QL@H9.[OZV3OH``DSO``,`!"QL@H9. M[O\Z(F\`!"QL@H9.[OXX3OH``B)O``0L;(*&3N[^VBQL@H9.[O]\3OH``B)O M``0@+P`(+&R"AD[N_RX@+P`$+&R"AD[N_K`@;P`$+&R"AD[N_HP@;P`$((A8 MD$*H``0A2``(3G4@;P`$3.\"`0`((B\`$"QL@H9.[OY$+&R"AB)O``0@+P`( M3N[]V")O``0L;(*&3N[^F")O``0L;(*&3N[^ADSO``,`!"QL@H9.[O[.(&\` M!"QL@H9.[OZ```````/L`````0```````!W*`````````_(```/J````GC$N M,``````````````````````!`````````````````````#`Q,C,T-38W.#EA M8F-D968````@("`@("`@("`P,#`P,"`@("`@("`@("`@("`@("`@()!`0$!` M0$!`0$!`0$!`0$`,#`P,#`P,#`P,0$!`0$!`0`D)"0D)"0$!`0$!`0$!`0$! M`0$!`0$!`0$!0$!`0$!`"@H*"@H*`@("`@("`@("`@("`@("`@("`@)`0$!` M(``````````````````!``````$``````````````````````0$````!```` M``````````````````$"`````0`````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` 0```#\@```^L````!```#\@`` ` end SHAR_EOF if test 17659 -ne "`wc -c < 'disksalv.uue'`" then echo shar: error transmitting "'disksalv.uue'" '(should have been 17659 characters)' fi fi # end of overwriting check echo shar: extracting "'readme'" '(454 characters)' if test -f 'readme' then echo shar: will not over-write existing file "'readme'" else cat >'readme' <<'SHAR_EOF' The disksalv.c file has been "Manxed" and there are no guarrentees that it still compiles under Lattice. Disksalv was compiled with Aztec 3.30c under version 1.1 of AmigaDos. One bug fix was done to change the ULONG *ptr to a LONG *ptr in the procedure NewPoint so that the comparison for *ptr < 0 will function correctly. This will eliminate the false resolving link conflict warnings for files that are longer than 70 blocks. Enjoy. Don Phillips SHAR_EOF if test 454 -ne "`wc -c < 'readme'`" then echo shar: error transmitting "'readme'" '(should have been 454 characters)' fi fi # end of overwriting check : End of shell archive exit 0 -- =========================================================================== Sean Casey UUCP: cbosgd!ukma!sean CSNET: sean@ms.uky.csnet ARPA: ukma!sean@anl-mcs.arpa BITNET: sean@UKMA.BITNET