home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / utils / dskutl / restorea.lbr / RESTORE.DZC / RESTORE.DOC
Text File  |  1987-06-14  |  27KB  |  591 lines

  1. RESTORE.DOC - Documentation for F/RESTORE.COM
  2.  
  3. Current Versions:  FRESTORE - 1.3
  4.                    RESTORE  - 1A
  5.  
  6. Significant changes from the previous version are
  7. indicated by asterisks (*) in the left margin.
  8.  
  9. Note that the program previously called RESTORE is now
  10. called FRESTORE.  The program now called RESTORE is
  11. completely new.  So, FRESTORE 1.3 is the updated
  12. version of RESTORE 1.2.  Sorry for the name change,
  13. but I expect the 'new' RESTORE to get the most in the
  14. way of development, and to be the restoration utility
  15. that most people use most often.  But, since the
  16. original version will also be used, I couldn't just
  17. declare a quantum revision and start over with RESTORE
  18. Version 2.0.  Oh well.
  19.  
  20. Description:
  21.  
  22.      F/RESTORE is a utility program that improves disk
  23.      performance by re-grouping the allocation groups
  24.      assigned to each file on the disk so that each
  25.      file is allocated to sequential sectors on the
  26.      disk, i.e. 'restoring' the disk to the condition
  27.      it was in when it was new.
  28.  
  29. Discussion:
  30.  
  31.      CP/M-compatible operating systems store files on
  32.      disk in what are called "allocation groups." The
  33.      size of an allocation group is determined by the
  34.      system's BIOS, and is typically 1K or 2K bytes
  35.      for floppy disks, and 2K, 4K, or 8K for hard
  36.      disks.  The allocation group is the smallest unit
  37.      of storage on the disk; if you write a one-byte
  38.      file to the disk, it will take up just as much
  39.      space (in the sense of making that space
  40.      unavailable for storing other files) as would a
  41.      file the size of one entire allocation group.
  42.  
  43.      When a disk is formatted, all allocation groups
  44.      are free, and the first file written to the disk
  45.      occupies the allocation groups immediately after
  46.      the directory, in sequence.  The next file
  47.      written to the disk occupies the groups after the
  48.      first, and so on.  When a file is deleted, its
  49.      allocation groups are freed up, and may be reused
  50.      by the system.
  51.  
  52.      As files are written and erased, later files
  53.      start to become 'fragmented'; i.e. they are
  54.      written with some allocation groups in one
  55.      location and other groups in other locations.
  56.      Thus, when these 'fragmented' files are read or
  57.      written, the system must position the read/write
  58.      head over one track for part of the file, then
  59.      move the head to another track for more of the
  60.      file.  This starts to degrade disk performance,
  61.      because more and more time is spent moving the
  62.      head around to find the various parts of the
  63.      file, causing access times for the files to get
  64.      longer and longer.  This problem affects both
  65.      floppy and hard disks.  The effect this has on
  66.      the system response is dependent on how the
  67.      system buffers the disk data in memory.  A system
  68.      that uses a 'track buffer' system, where an
  69.      entire track is saved in memory each time the
  70.      disk is read, will be VERY much slower when
  71.      accessing severely fragmented files than when the
  72.      files are stored in sequential allocation groups,
  73.      and thus several related groups are kept in
  74.      memory together.  Similarly, a system that uses
  75.      multiple-sector disk I/O will be seriously
  76.      degraded by disk fragmentation.  Conversely, an
  77.      unbuffered BIOS, and especially an unblocked
  78.      BIOS, will be less affected, because latency (the
  79.      time the controller has to wait for the desired
  80.      sector to rotate under the head) is more
  81.      significant in comparison to track stepping times.
  82.  
  83.      The only way to recover from this situation has
  84.      been to copy all files on the disk to backup
  85.      disks, reformat the disk (or simply erase all the
  86.      files), and then recopy the files from the backup
  87.      disk(s) to the working disk.  This takes a
  88.      significant amount of time to do, and it is even
  89.      more inconvenient if files are assigned to
  90.      several user areas on the disk, since each user
  91.      area on the backup disk must be individually
  92.      entered and the files in that area copied to the
  93.      corresponding area on the work disk.
  94.  
  95.      F/RESTORE is designed to make this process easier
  96.      by eliminating the copy to and from the backup
  97.      disks.  F/RESTORE works only on the disk being
  98.      restored, and thus may be used even in a
  99.      single-disk system.
  100.  
  101.                   ***WARNING***
  102.  
  103. Since F/RESTORE does in-place restoration of the disk,
  104. is has simply INCREDIBLE potential for wreaking
  105. havoc with your disk if something goes wrong while
  106. it is working, like a loss of power or a controller
  107. fault.  Therefore, you should ALWAYS back up the
  108. disk to be F/RESTOREd shortly before running the
  109. program.  This shouldn't be much of a problem, since
  110. you do a full back up of your hard disk at least
  111. every weekend, right?  RIGHT?  NO?!! Well, if you
  112. don't, you should.  It only takes one occurrence of
  113. having to rebuild a disk's directory one group at a
  114. time to make you a believer.  Just after a full
  115. backup is the optimum time to run F/RESTORE.
  116.  
  117. Versions:
  118.  
  119. *    There are two versions of RESTORE.  The version
  120. *    called FRESTORx, where 'x' is either 'I' or 'Z',
  121.      is the fully-relocating, 'brute-force' method
  122.      version.  It will move every group on the disk,
  123.      if necessary, to get all groups to be in
  124.      sequence.  This version is much slower than the
  125.      other, but will always be able to return the disk
  126.      to a 'like-new' condition.
  127.  
  128. *    The second version, called 'RESTOREx', with 'x'
  129. *    again  being 'I' or 'Z', only insists on each
  130. *    directory entry having sequential groups
  131. *    allocated to it.  It will typically move many
  132. *    fewer groups than the fully-relocating version,
  133. *    and is therefore much faster.  However, since it
  134. *    only moves enough groups to get each directory
  135. *    entry back in sequence, it will leave 'holes' in
  136. *    the allocation map of the disk.  Over time, these
  137. *    'holes' may become small enough that they can not
  138. *    be reused by RESTORE, and it is not able to get
  139. *    all directory entries back in sequence.  If this
  140. *    happens, RESTORE will fix as many directory
  141. *    entries as it can, and will ask you to use
  142. *    FRESTORE to recover the lost space on the disk.
  143.  
  144.      Throughout this documentation, any discussions
  145.      that apply both to FRESTORE and to RESTORE will
  146.      talk about 'F/RESTORE'.  Those topics that only
  147.      apply to one version of the program will continue
  148.      to refer to the name of the appropriate version,
  149.      either 'RESTORE' or 'FRESTORE'.
  150.  
  151. Use:
  152.  
  153.      NOTE:  FRESTORE (only) wants the directory of the
  154.      disk to be restored to be sorted first, by
  155.      running SAP or CLEANDIR or some similar program.
  156. *    If FRESTORE finds that the directory is not
  157. *    sorted, it will tell you so and ask if you want
  158. *    to restore the disk anyway.  Also note that some
  159.      older versions of CLEANDIR, SAP, etc. did not
  160.      properly sort the directory because they did not
  161.      include the last directory entry on the disk in
  162.      the sort.  FRESTORE WILL find this entry, and
  163.      will tell you that your directory is not sorted.
  164.      You can use DUU, DU3, PATCH, or your own favorite
  165.      disk utility to examine the directory of the disk
  166.      to see what is wrong.
  167.  
  168.      Once you have the disk's directory sorted, if
  169.      required, simply start the program by typing
  170.      'FRESTORE' or 'RESTORE'. The program will sign
  171.      on, and ask you to change disks if you desire.
  172.      This allows single-disk users to place the disk
  173.      containing the program in the drive, start the
  174.      program, and then swap in the disk to be
  175.      restored.  This means you don't have to copy the
  176.      program to each disk you want to restore.
  177.  
  178.      Note that F/RESTORE  --ALWAYS--  works on the
  179.      user's default disk, i.e., the one you were on
  180.      when you invoked the program.  So, if you want to
  181.      restore the disk in drive B but F/RESTORE is on
  182.      the disk in drive A, you MUST log onto disk B and
  183.      then call the program from drive A, i.e.
  184.  
  185.             A>b:<cr>
  186.             B>a:restore<cr>   or  a:frestore<cr>
  187.  
  188.      F/RESTORE reads in the directory of the default
  189.      disk, analyzes the directory, and prints some
  190.      information; how many directory entries are on
  191.      the disk, how many groups are allocated, how many
  192.      groups have to be relocated, and how many times
  193.      the directory will be rewritten.  This last is
  194.      significant since 1) directory writes usually
  195.      take much longer than other writes, because most
  196.      BIOSs immediately write their buffer to the disk
  197.      after a change in the directory, rather than
  198.      waiting until the user wants to write somewhere
  199.      else, and 2) the directory takes up several
  200.      allocation groups, and the entire directory is
  201.      rewritten after each directory entry has been
  202.      fixed.  Note that the number of directory entries
  203.      reported by F/RESTORE will probably not match the
  204.      number of files on the disk, since each extent of
  205.      a file takes up its own directory entry.
  206.  
  207.      After F/RESTORE tells you what it is going to
  208.      have to do to the disk, it asks you to type 'Y'
  209.      to restore the disk, or anything else to abort.
  210.      You may enter an upper or lower case Y, or even
  211.      type Control-Y.  Anything else will cause
  212.      F/RESTORE to abort without doing anything to the
  213.      disk.
  214.  
  215.      After you type 'y', F/RESTORE will start to fix
  216.      your disk.  It prints the name of the directory
  217.      entry is is working on, including the extent, so
  218.      you can keep track of how it is doing.  You may
  219.      type a Control-C at any time, and F/RESTORE will
  220.      abort after it finishes the current directory
  221.      entry, and tell you how many directory entries
  222.      are left over.  Left to itself, F/RESTORE will
  223.      finish the disk, then tell you it is finished and
  224.      terminate.
  225.  
  226.      If you are using a system that does not reload
  227.      the directories from disk on each warm boot, like
  228.      ZRDOS version 1.5 and later, you will need to do
  229.      whatever your system needs (run DISKRST in the
  230.      case of ZRDOS) to restore the system's directory
  231.      to match the one on disk.  Remember, F/RESTORE
  232.      works through the BIOS, so the DOS has no idea
  233. *    what is going on.  The program may be patched to
  234. *    automatically do this disk reset if desired; see
  235. *    the section on user patches below.
  236.  
  237. System
  238. Requirements:
  239.  
  240.      Operating System - A CP/M-compatible operating
  241.      system that supports console input and output and
  242.      the following direct BIOS function calls:
  243.  
  244.           Select Disk
  245.           Set Track
  246.           Set Sector
  247.           Set DMA Address
  248.           Disk Read
  249.           Disk Write
  250.           Sector Translation
  251.  
  252.      These are the only direct BIOS calls used by
  253.      F/RESTORE.  Console I/O is done via the BDOS, so
  254.      you may use the Control-P to echo the output to
  255.      your printer.  If you do so, you may need to
  256.      install the linefeed patch discussed below.
  257.  
  258.      Processor - Versions are provided for both
  259.      8080/8085-compatible processors (FRESTORI.COM or
  260.      RESTOREI.COM) and for Z80-compatible processors
  261.      (FRESTORZ.COM or RESTOREZ.COM).  The Z80 version
  262.      is about 5% smaller and runs about 1% faster than
  263.      the 8080 version.  Select the versions
  264.      appropriate for your hardware and rename them to
  265.      FRESTORE.COM and RESTORE.COM.
  266.  
  267. *    Memory - No particular minimum required.
  268. *    F/RESTORE uses an incremental-read system to read
  269. *    in the directory, so it will handle any size
  270. *    disk.  The amount of memory available determines
  271. *    how many ACTIVE directory entries F/RESTORE can
  272. *    handle.  On a 48K TPA system restoring a disk
  273. *    with 4K allocation groups, F/RESTORE can restore
  274. *    a disk with about 1200 active directory entries.
  275. *    F/RESTORE skips over erased entries as it reads in
  276. *    the  directory, so the total number of directory
  277. *    entries on your disk (the DRM value) does not
  278. *    affect F/RESTORE's operation.
  279.  
  280.      Note that F/RESTORE is NOT a ZCPR3 utility.  I
  281.      have tried to make it as nearly universal as
  282.      possible.  It does not use cursor-positioning
  283.      sequences for the terminal, or require any
  284.      installation.  The only thing your terminal has
  285.      to be able to do is receive and display standard
  286.      ASCII characters, including being able to do a
  287.      carriage return without a linefeed. This is used
  288.      in the display of the files being processed.  The
  289.      same line is rewritten as each new file is
  290.      started.  If your terminal can not do a carriage
  291.      return without a line feed (or makes a mess doing
  292.      so, like a TTY), or if you want to echo the
  293.      output of the program to your printer without
  294.      wearing a hole in the paper, install the linefeed
  295.      patch below.
  296.  
  297. Patches:
  298.  
  299. *    There are three and a half user patches in the
  300. *    program.  Each one is a flag value, where 0
  301. *    indicates 'NO' and a non-zero value indicates
  302. *    'YES'.  The patches are located at the beginning
  303. *    of the program.  When you look at the object code
  304. *    with your favorite debugger, you will see the
  305. *    header '==USER PATCHES==' followed by three (or
  306. *    four) labels.  Each label ends in an arrow ( -> )
  307. *    that points to the location of the flag.  The
  308. *    address of the patch byte is always xxxF (hex),
  309. *    and, on a standard sixteen-bytes-per-line display
  310. *    (DDT, ZDM, Z8E, etc.) the patch byte is always
  311. *    the last byte on the line where the label ends.
  312. *    Change the value at the pointed-to location as
  313. *    needed.  Remember, only zero or non-zero matters.
  314.  
  315. *    Patch location 1 controls the disk-change wait.
  316. *    Its label is 'Wait for User to start?'.  As
  317. *    released, the program will print a message
  318. *    telling you to change disks if necessary, and
  319. *    press any key when ready.  Then it waits for you
  320. *    to press any key.  Later, after the statistics
  321. *    for the disk are printed, it asks you to press
  322. *    'y' to continue, or any other key to abort.  If
  323. *    you don't want these waits, or you want to do
  324. *    unattended 'batch processing' of multiple drives,
  325. *    you will need to patch this byte to zero.  As an
  326. *    alternative, the input for these two user waits
  327. *    is done using the BDOS 'Read Console Buffer'
  328. *    function, so ZEX or XSUB may be used to provide
  329. *    the input; note, however, that doing so will cost
  330. *    you about 3K of TPA (which equates to about 100
  331. *    active directory entries), and may cause a memory
  332. *    shortage problem.  Try it on your largest disk.
  333. *    If it works, you can have it both ways.
  334.  
  335. *    The second user patch controls linefeed output.
  336. *    The label is 'Use Linefeed on Output?'.  To make
  337. *    the file display do a line feed as well as a
  338. *    carriage return after each filename displayed,
  339. *    change this value to non-zero.
  340.  
  341. *    The third (and last on RESTORE) patch determines
  342. *    if the program resets the disk system when it
  343. *    finishes.  The label for this patch is 'Reset
  344. *    Disk when Done?'.  A non-zero value here will
  345. *    cause F/RESTORE to reset the disk when it
  346. *    completes, using function 37.
  347. *       THIS FLAG SHOULD NEVER BE SET NON-ZERO
  348. *    IF YOU ARE USING THE PLAIN CP/M BDOS!!
  349. *    CP/M's function 37 has some problems with
  350. *    reallocating space that make is unacceptable for
  351. *    use.  And besides, CP/M reloads the allocation map
  352. *    on each warm boot anyway.  If you are using a
  353. *    modified BDOS or early ZRDOS, you may set this
  354. *    flag, although it probably won't do much for you.
  355. *    If you are using ZRDOS 1.5 or later, or some other
  356. *    system that does not reload its disk allocation
  357. *    maps on a warm boot, you SHOULD set this flag, so
  358. *    that the system will find out about the modified
  359. *    directory immediately.  On these systems, if this
  360. *    flag is not set, and the appropriate disk reset
  361. *    utility is not used immediately after F/RESTOREing
  362. *    the disk, you will probably have problems with the
  363. *    system reallocating blocks that have been used by
  364. *    F/RESTORE, since it doesn't know about them yet.
  365.  
  366. *    FRESTORE (only) has a fourth user patch
  367. *    controlling the action taken when the directory
  368. *    is found to be out of order.  The label is
  369. *    'Ignore Directory Sort?'.  If this value is
  370. *    patched to non-zero, RESTORE will not ask you if
  371. *    you want to continue if the directory is not
  372. *    sorted, but will just go ahead on its own.  This
  373. *    patch is similar to the user-wait patch, but is
  374. *    provided separately so that you can set up the
  375. *    program for batch operation in conjunction with
  376. *    CLEANDIR or SAP, but bail out if they are not
  377. *    able to properly sort the directory.
  378.  
  379. Limitations:
  380.  
  381.      One of the problems associated with a program of
  382.      this type is the handling of bad sectors on the
  383.      disk.  Since there is no standard way of marking
  384.      bad sectors, I have completely ignored the issue
  385.      in writing the program.  I recommend the
  386.      following system for those with bad sectors on
  387.      their hard disk:
  388.  
  389.           1) You have probably used BDxx, FBAD, or
  390.              whatever you use to mark the bad
  391.              sectors on the disk.  Use DUU, DU3,
  392.              PATCH, or your own disk utility to
  393.              examine the disk's directory.  Note the
  394.              allocation groups that are assigned to
  395.              the '.BAD' (or however your utility
  396.              marks them) files.  Make a list of the
  397.              allocation groups containing the bad
  398.              sectors.
  399.  
  400.           2) After you finish backing up your disk
  401.              (that IS when you use F/RESTORE, isn't
  402.              it?  See the WARNING above if not), run
  403.              F/RESTORE, then use your disk utility to
  404.              look at the disk's directory and see
  405.              what files are now assigned to the
  406.              allocation groups on your list of bad
  407.              groups.  Make a list of these files.
  408.  
  409.           3) Erase the files on the list.
  410.  
  411.           4) Rerun FBAD, etc. to re-mark the bad
  412.              groups.
  413.  
  414.           5) Copy over the files on the list from
  415.              your backup disk.
  416.  
  417.      I realize that this is somewhat cumbersome, and I
  418.      apologize for that.  But, since there is no
  419.      standardized method for handling bad sectors,
  420.      this is the best I have been able to come up with.
  421.  
  422. Operation:
  423.  
  424.      FRESTORE uses a brute-force method to relocate
  425.      allocation groups.  It reads in the directory
  426.      (which should be sorted), and decides from the
  427.      directory allocation data in the Disk Parameter
  428.      Block for the disk how many groups are allocated
  429.      to the directory.  The next sequential allocation
  430.      group should be assigned to the first file in the
  431.      directory.  FRESTORE looks to see if that is the
  432.      case.  If not, it scans the directory to find
  433.      what file has that group allocated to it.  If the
  434.      desired group is not allocated, FRESTORE copies
  435.      the group referenced in the directory into the
  436.      desired group, then changes the directory entry
  437.      to show the new group.  If the group is allocated
  438.      to another file, FRESTORE reads both groups into
  439.      memory, then writes them to the alternate
  440.      locations, effectively swapping the groups in
  441.      place.  Both directory entries are modified, the
  442.      next sequential allocation group is selected, and
  443.      the process repeats.  The updated directory is
  444.      written to the disk after each directory entry is
  445.      completed, not after each allocation group swap.
  446.      Thus, the number of directory rewrites will
  447.      typically be about one-half to one-fourth (on a
  448.      hard disk; one-fourth to one-eighth on a floppy
  449.      disk) of the number of group swaps required.
  450.  
  451.      When I say that the method is 'brute force', I
  452.      mean that no intelligence is used in the sort
  453.      process.  Under worst-case conditions, the first
  454.      allocation group on a disk might be free, with
  455.      all other groups assigned in the desired sequence
  456.      to the files in the directory.  In this case, the
  457.      disk is really not fragmented, and nothing needs
  458.      to be done.  If you run FRESTORE on a disk in
  459.      this situation, it will tell you that EVERY GROUP
  460.      on the disk must be moved, and will do so if you
  461.      let it.  No analysis of the fragmentation of the
  462.      disk is done, and no optimization is used to
  463.      figure out how to restore the disk using the
  464.      least number of group swaps.
  465.  
  466. *    RESTORE, by contrast, is much smarter in its
  467. *    operation.  After the directory is read in,
  468. *    RESTORE builds a table of free spaces on the
  469. *    disk.  Each table entry has the number of a free
  470. *    allocation group and a count of the contiguous
  471. *    free groups starting at that group. When the
  472. *    table is built, RESTORE starts through the
  473. *    directory.  It checks to see that the allocation
  474. *    groups assigned to each directory entry are in
  475. *    sequential order.  If they are, nothing is done.
  476. *    If a directory entry has non-sequential groups
  477. *    assigned, RESTORE counts the number of groups
  478. *    allocated to that directory entry, then goes and
  479. *    looks in the free-space table for a space that
  480. *    has at least that number of contiguous free
  481. *    groups.  If it finds one, the groups are copied
  482. *    to the new space, and the previously used groups
  483. *    are returned to the free-space list.  The table is
  484. *    rebuilt after every fourth directory entry
  485. *    requiring relocation is finished, and the table is
  486. *    kept sorted in increasing order by the size of the
  487. *    free space, so the search routine always returns
  488. *    the smallest space that will hold the data needing
  489. *    to be moved.
  490.  
  491. *    If there is no space in the table large enough to
  492. *    relocate  the entry, RESTORE sets a flag to tell
  493. *    itself to make another pass through the
  494. *    directory.  The idea is that later moves may open
  495. *    up a space large enough, by freeing up space next
  496. *    to an already free area.  When the entire
  497. *    directory is checked, RESTORE tells you how many,
  498. *    if any, entries could not be relocated.  If there
  499. *    are any, it starts the entire process over again,
  500. *    starting with reading in the directory.  This
  501. *    process continues until all entries are fixed, or
  502. *    until RESTORE is unable to relocate any more
  503. *    entries by making another pass.  If this happens,
  504. *    it means that the remaining free spaces are too
  505. *    small and too spread out for RESTORE to be able
  506. *    to use them.  RESTORE will recommend that you use
  507. *    the fully-relocating FRESTORE version to recover
  508. *    these areas.
  509.  
  510. *    One noticeable difference between the two
  511. *    versions is the length of the wait between when
  512. *    you 'Press any key to continue' (or the program
  513. *    signs on if it is set up to skip user waits) and
  514. *    the time it prints out the statistics.  RESTORE
  515. *    takes two to three times as long as FRESTORE,
  516. *    since it has to build the free-space table.  This
  517. *    extra time comes back later, though, since
  518. *    RESTORE will move anywhere from one-sixth to
  519. *    one-tenth (or less) as many groups as FRESTORE.
  520.  
  521.      On the subject of speed:  F/RESTORE is, in
  522.      addition to being more convenient than copying
  523.      all the files back from a backup disk,
  524.      considerably faster than that method.  While
  525.      times vary depending on the degree of
  526.      fragmentation and the hardware, I have found
  527.      FRESTORE to be about 20% faster than a
  528.      NON-VERIFYING copy of files from backup floppies
  529.      back to my hard disk (F/RESTORE does
  530.      read-after-write CRC verification of all disk
  531. *    writes).  RESTORE, since it moves many fewer
  532. *    groups than FRESTORE, is more on the order of
  533. *    4-8 times as fast as a floppy backup.  Plus, you
  534.      don't have to sit around and feed your machine
  535.      floppies for hours.  FRESTORE will process a
  536.      filled 20 Meg hard disk in about 5 hours on my
  537.      hardware; doing the same thing, with
  538.      verification, from floppies takes over 9 hours
  539. *    and about 28 disk swaps!  Using RESTORE cuts this
  540. *    time to less than one hour.  With F/RESTORE,
  541.      simply use a multiple-command line or
  542. *    ZEX/XSUB/SUBMIT file, and let F/RESTORE crunch
  543. *    away during lunch, or while watching 'Friday the
  544. *    13th Part 27'.  Note that if you want to use this
  545.      'batch processing' of multiple drives, you must
  546.      patch the user-wait flag to zero as described
  547. *    above to disable the two user waits.  If you are
  548. *    using FRESTORE and don't sort your directories
  549. *    first, you will also need to patch the ignore-
  550. *    directory-sort flag to non-zero.
  551.  
  552. DISCLAIMER:
  553.  
  554.      This is a very useful utility, and I have tested
  555.      it extensively.  However, as noted above, it is
  556.      also very capable of lunching your disks
  557.      completely if the system has a problem.  Use it
  558.      in good health and happiness, but MAKE BACKUPS
  559.      BEFORE YOU USE IT!!.  Papa Wallenda ran his
  560.      system without a backup.  He's not around any
  561.      more.  'Nuff said.
  562.  
  563. *    Some users of the previous version have had
  564. *    trouble with read errors after RESTOREing their
  565. *    disks.  From the discussions I saw (actually,
  566. *    'overheard' is more accurate--I received copies
  567. *    of some messages left on Chicago's 'Lillipute'
  568. *    ZNode; the people who had the problems never
  569. *    bothered to contact me to report the problem), it
  570. *    sounds like their drives got hot under the,
  571. *    admittedly, much greater than usual demands that
  572. *    FRESTORE places on the drive, and exceeded track-
  573. *    positioning tolerances.  The new RESTORE version
  574. *    should reduce this problem considerably, since it
  575. *    does much less in the way of disk reads and
  576. *    writes, and has longer waits in between directory
  577. *    rewrites while it rebuilds the free space table.
  578. *    PLEASE contact me if you have any problems; I
  579. *    want to make F/RESTORE as useful as possible to
  580. *    as many users as I can.
  581.  
  582.  
  583. Steve Dirickson            7 June 1987
  584. 21145 Raintree Place NW
  585. Poulsbo  WA  98370-9726
  586.  
  587. Voice: 206-697-1270/9311
  588.  
  589. BBS: Seattle's 'downspout': 206-325-1325
  590.      ZNode Central: 415-948-6656
  591.