home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 354.lha / TrackSalve_v1.0 / manual < prev    next >
Text File  |  1990-03-01  |  9KB  |  170 lines

  1.  
  2.                              TRACKSALVE
  3.  
  4.     TrackSalve is made to improve the Trackdisk device.  TD has some
  5.     problems and lacks some options.  As far as I know there are two bugs,
  6.     from which one is very bad if more than one drive is connected.
  7.     SetPatch 1.3.2 tries to do something about it, but it is not enough.
  8.     There are people who do not like the sound of an empty drive.
  9.     Trackdisk cannot handle a track with an error on it.  Then all data on
  10.     that track is lost.  We never know whether the just written data is
  11.     well stored on disk.  And yet we are poking in Trackdisk, we can just
  12.     as well make a drive optional readonly.
  13.  
  14.  
  15.                              FUNCTIONS
  16.  
  17.     As already stated, TrackSalve can perform five functions:
  18.  
  19.  1. Bugs patched. he patch of the bugs (as far as I know them). These are
  20.     the TD_RAWREAD/TD_RAWWRITE bug and the NoDisk routine (oef!). Now it is
  21.     save to do I/O on one drive and let all your other drives empty.
  22.  
  23.  2. Noclick.  Can be switched on and off for each drive apart.  I think the
  24.     situation is as follows:  Some drives have an electrical switch at the
  25.     home position to prevent stepping below zero.  Other types have a
  26.     mechanical stop.  These you cannot get them completely silent.  I think
  27.     it is save to use noclick on the first.  For those with a mechanical
  28.     stop I would not switch noclick on.
  29.  
  30.  3. Readonly simulation.  Each drive can act as if the tab of the inserted
  31.     disk is open.  This is not as simple as it sounds.  The FileSystem
  32.     (DOS) keeps track of disk swapping.  And it asumes that you are not
  33.     able to shift the tab while a disk is in the drive.  Therefore IF there
  34.     is a disk in the drive AND its tab is closed (write-enabled), and the
  35.     drive is swithed over to read-only or read/write, a DiskChange is sent
  36.     out.  This is very unfriendly during a write, so this is delayed until
  37.     the motor is switched off.  Nevertheless switch a drive from r/w to ro
  38.     or back only when it is quiet.
  39.  
  40.  4. TrackSalvage.  If Trackdisk gives up on a track, this function (if
  41.     enabled) comes to action.  The track is read again and analised.  All
  42.     unsuspicious data is recovered and stored in Trackdisk's buffers.  If
  43.     the requested data is recovered, no error is passed to the calling
  44.     task.  But an attempt to write to this track is denied and results into
  45.     a diskerror.  So faulting tracks are readonly.
  46.  
  47.  5. Verify.  TrackSalve can read back a just written track to check whether
  48.     the data well arrived on disk.  It reads the track into a special
  49.     buffer which is compared with the original write buffer.  Since the
  50.     Amiga is multitasking, it is not possible to know which task should be
  51.     notified about an error.  Therefore it is the user who must decide
  52.     about this.  He can choose between rewrite and ignore.  Rewrite writes
  53.     the original buffer again to disk, and ignore as if we never knew about
  54.     the bad track.  It may be that subsequent rewrites does not lead to a
  55.     good result.  At least the fact is known that something is wrong.
  56.  
  57.  
  58.                                 COMMANDLINE
  59.  
  60.     If anywhere on the command line one of the chars h, H, or ? are found,
  61.     the whole command line is ignored and nothing is done but a small usage
  62.     explanation is printed:
  63.  
  64.     Syntax: TrackSalve {<unit(s)> {<Command(s)>}}
  65.     Function: Modify a Trackdisk device unit addressed by its unit number
  66.         <no args>       Show present status
  67.     Units:
  68.      0-3   Unit(s)      Succeeding commands are applied to listed units
  69.       a    All:         Succeeding commands are applied to all TD units
  70.       !    Warning      Suppress error if the following unit does not exist
  71.     Commands:
  72.     <none> TD in RAM:   No special functions, just all known bugs removed
  73.       s    SectorDisk:  Change TrackDisk into a sector based disk device
  74.       t   .TrackDisk:   Normal: Let TD report errors from a bad track
  75.       n    NoClick:     Perform noclick on the unit(s)
  76.       c   .Click:       Normal: No noclick
  77.       r    ReadOnly:    Make unit read-only, simulate open disk-tab
  78.       w   .WriteEnable: Normal: Unit is read/write according to disk-tab
  79.       v    Verify:      Read written track back and compare
  80.       b   .Believe:     Normal: Asume track is written well
  81.       o    Original:    Let TD execute in its original ROM code
  82.       /    Separator:   F.e. "0/2n"  Units 0 and 2 in RAM, noclick only on 2
  83.       ?    Explain:     If given (anywhere), no commands are executed
  84.  
  85.     Comma's, spaces and dashes are completly ignored.  Characters which are
  86.     not defined lead to an abortion of the program without executing any
  87.     function.  This will be emphasised by a message via standard out.
  88.     Abortion always has a return value of 20.
  89.  
  90.     Units
  91.  
  92.     You must address an unit by its number instead of its DOS-name.  This
  93.     is because we are modifying an Exec-device and not a DOS-device.  This
  94.     device has nothing to do with DOS.  DOS uses it, and builds a system
  95.     around it.  The name of this system is for example "DF0:". Valid
  96.     numbers are 0, 1, 2, 3, a and A or any combination of them. 'A' means
  97.     all units.  Commands are single characters.  Before you give a command
  98.     you must specify one or more units to apply the command to.  A command
  99.     will be passed to all directly preceding listed units.  If a unit is
  100.     given that does not exist, then this is an error and nothing will be
  101.     done at all.  It can come handy if it is possible to give a unit that
  102.     does not exist.  Normal would be aborted with return code 20.  But if
  103.     a '!' is put before a possible non-existing unit, a message is printed
  104.     and the program continues normally, but returns 5.
  105.  
  106.     Commands
  107.  
  108.     Just a list of units and no commands results in the execution of
  109.     Trackdisk in RAM with repaired bugs. "TrackSalve a" or "TrackSalve
  110.     023". Commands are applied only to preceding units.  F.e. TrackSalve
  111.     01n lets units 0 and 1 stop clicking.  Now you can add new unit numbers
  112.     like:  TrackSalve 01n2r1s.  This results into noclick on units 0 and 1,
  113.     unit is 2 readonly and unit can salve tracks.  It is also possible to
  114.     give contradictory commands:  TrackSalve an1c lets all units except 1
  115.     noclicking.  The separator '/' is a donoting command or "unit list
  116.     reset". TrackSalve 012/2n lets the units 0, 1 and 2 execute in ram, but
  117.     noclick is only performed by unit 2. Reset to a defined state can be
  118.     done by TrackSalve ao followed by the new state.  TrackSalve without
  119.     any parameters prints the present situation and changes nothing.
  120.  
  121.  
  122.                               HOW TO USE IT
  123.  
  124.     Although Disksalv works well without, both programs work very well
  125.     together.  Disksalv with TrackSalve will generally operate faster and
  126.     more clearly.  It also is possible (not yet happened) that the
  127.     combination can salve more data.  Sometimes only one file is the effort
  128.     of salvage worthy, like the latest modification not yet on a backup.
  129.     Now there is a chance that the file can be saved with copy.  Might save
  130.     some time.  Then it is possible that immediately after disk insertion a
  131.     requester appears with "unreadable" and "diskdoctor" or so.  There is a
  132.     fair chance that with TrackSalve these requesters stay away and the
  133.     disk will be accepted as a DOS disk.  You can do more in that case.
  134.  
  135.  
  136.                              IMPLEMENTATION
  137.  
  138.     The Trackdisk code will be copied from the operating system program and
  139.     modified and extended.  For each unit apart, the unit task can execute
  140.     this code or stay with the original in ROM.  If a unit cannot be
  141.     brought to execute the patched code, this is told in a message on
  142.     standard out and the program will continue normally but its return
  143.     value will be 10. There are two functions which use a buffer of about
  144.     26k.  If not available at the moment of enabling, every 2.5 second this
  145.     is tried to allocate again.  Until the allocation is successful, the
  146.     function becomes not active.  This is reported through a message and
  147.     the return value will be 10.  Execute TrackSalve without parameters to
  148.     be sure the function became active.  This buffer is shared among all
  149.     tasks.  Normally this will work smoothly and without delay except when
  150.     a requester is displayed.  The requester is used when a verify error
  151.     has been detected.  If for some reason it is not possible to pop up a
  152.     requester, TrackSalve will loop rewriting the track and blink the
  153.     drive's led until the conditions have changed.  These are:
  154.  
  155.     1. The disk is removed.
  156.     2. The track is found well on disk.
  157.     3. There is enough memory to display the requester.
  158.  
  159.  
  160.                                COPYRIGHT
  161.  
  162.     Copyright (c) 1990 D.W. Reisig.  This program may be distributed on
  163.     non-commercial base.  This program may not be distibuted on commercial
  164.     base without my permission.
  165.  
  166.       D.W. Reisig
  167.       Woudweeren 10
  168.       1151 AV  Broek in Waterland
  169.       Holland
  170.