home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
extras
/
superduper
/
superduper.doc
< prev
next >
Wrap
Text File
|
1994-07-02
|
64KB
|
1,430 lines
*
This document describes `SuperDuper' 2.02, a freeware high-speed
disk copier and formatter. Typical timings are less than 100s for a
disk-to-disk verified copy, or 38s for a four disks non-verified format.
Introduction
*************
`SuperDuper' is a disk copier/formatter that tries to be to disk
handling what Mostra is to IFF displaying: a fast, compact,
system-friendly tool which combines speed, features, and some bells and
whistles to make your life easier.
By "fast" I mean exactly what you're hoping--blazingly fast. A disk
is usually copied and verified in less than 100s. Without verify, the
time drops to 69s. You can buffer a disk in RAM in less than 36s, and
then making a verified copy takes 67s, while a non-verified copy takes
less than 36s. Adding another destination drive increases verified copy
times by 34s, but hardly changes non-verified copy times (the Amiga can
write more than one drive at a time; I just need a few tenths of a
second in order to measure the drive speed and step the heads). Thus,
if you really trust your drives and your media you can make four copies
in 38s. These timings can vary with the system configuration, the
multitasking overhead, the disposition of the blocks on the surface of
the disk, the state of the DATE option (which requires a separate write
on the root block track for each disk) and the DMA access of the custom
chips (previous users of `SuperDuper' might think this release is
slower than the previous one: it is really faster, but `SuperDuper' 1.0
was a little bit optimistic about its copy times--the motor on/off
delays were erroneously skipped).
Changes
========
`SuperDuper' 2.01 has almost no visible changes with respect to
`SuperDuper' 2.0, apart from the extension of the ARexx macros, which
is now `supdup' instead of `sd' in order to avoid conflicts with other
programs.
However, it was discovered that many flakey drives have power supply
problems when four of them are connected to an Amiga. Sometimes the
head of a drive won't step, and this error cannot be caught even by
verifying, since the drive doesn't know where the head is--its position
has to be tracked via software.
In order to prevent this annoying phenomenon, which was the only
known source of bad copies, the head moving strategy was slightly
changed. `SuperDuper' no longer steps multiple heads at the same time.
This marginally increases (about 3 tenths of second for each
destination) the non-verified copy times, but gives you a 100%
reliability even on out-of-specs systems.
If something wierd happens in spite of this patch, it can be tracked
at recalibration time. When a mismatch between `SuperDuper''s internals
and the drive signals is detected, a requester `Error while
recalibrating' is issued. In this case, you can try to slow down the
head moves using the `SetTDDelay' utility which is supplied with
`SuperDuper'.
The only other noticeable enhancement is the fact that now
`SuperDuper' checks the `NOCLICK' flag separately for each drive. If
you have some drives which support `NOCLICK' and somes which don't,
`SuperDuper' will click only the allowed drives. Previously, the
information in the public unit of the drive 0 was used for all the
drives. The utility `ToggleClick' which is supplied with `SuperDuper'
allows to hush selectively any unit. Moreover, a new `noclick' ARexx
command allows to force no-clicking selectively even under 1.2/1.3
(see Selection Commands).
It should be remarked that `SuperDuper' is much less tolerant than
trackdisk.device. Bad drives can work (almost) perfectly with
trackdisk.device, because of its many, frequent cross checks. For
instance, at each disk insertion some track is read by DOS, and if the
track number doesn't match with trackdisk's internals, a recalibration
is started. `SuperDuper' instead doesn't read anything before copying
(for speed reasons); thus, if your drive has a flakey DSKTRACK0 signal
`SuperDuper' could believe it's on track 0 while it isn't.
`SuperDuper' 2.02 is a minor maintenance release. Let alone a couple
of bug fixes (notably the French keyboard problem), support for Release
2 Public Screens was implemented (see The CLI Interface). Moreover, the
`requesters' ARexx command, which has always been present, is now
documented (see Selection Commands).
Main Features
==============
* `SuperDuper' copies, formats and checks from/to any combination of
Amiga drive(s).
* `SuperDuper' has a switchable 880K RAM buffer that allows for any
number of duplications while reading the source disk only once.
The combination of destination drives can be changed at each pass.
If you have a hard disk, you can create on it an image file that
will act as a buffer. This file can be saved and reused many
times. Also, all kinds of virtual disks are supported for
buffering (VD0:, RAD:, FMS:...). Morever, a count is kept of the
copies generated by a buffered disk.
* `SuperDuper' checksums the RAM buffer. If some badly written
program is trashing your memory, you are alerted. Thus, buffered
copies are as safe as direct copies.
* `SuperDuper' also checks its internal DMA buffers at each write.
* `SuperDuper' can allocate a buffer of less than 880K. In this
case, it will use real-time compression in order to do multiple
pass copies with maximum efficiency. Most disks can be wholly
buffered on a 1MB machine. You can also make multiple copies with
multiple passes. Copy times are (almost) unaffected.
* `SuperDuper' will automatically retry tracks which produce a
verify error. The number of retries is programmable. A simple
visual clue is given to the position of the error, but on request
detailed error information printing is available.
* `SuperDuper' is highly system-friendly--the use of CPU time is
negligible, so you can multitask efficiently.
* `SuperDuper' has the option of incrementing the creation date of
the copy so AmigaDOS doesn't get confused. If, however, the option
is switched on and the disk is not an AmigaDOS disk, `SuperDuper'
won't increment the date.
* `SuperDuper' is faster than diskcopy--actually it pushes the
drives to their limits. At the time of this writing, `SuperDuper'
is the fastest Amiga copier both from a "pure" (physical time) and
from a "per-copy" (real time for each copy when a big number of
copies of the same disk is produced) point of view.
* `SuperDuper' alerts the user with sound (and optionally voice)
about the operations in progress--so you can really be doing
something else!
* `SuperDuper' can format both OFS and FFS disks.
* `SuperDuper' displays a list of the last few disks copied. If you
do a lot of copying, you'll find this feature more than a little
useful.
* `SuperDuper' can manage the Amiga drives without help from the
trackdisk.device. Through the supplied utility `SDBootInstall',
you can create a boot disk which will keep the system away from
your drives, giving you back more than 30K per unit. This is very
useful when doing intensive buffered copying on a 1M machine.
* `SuperDuper' can automatically start any copy or format operation
by monitoring the disks' extraction and insertion.
* Almost all elements of the 3-D, Release 2-like graphical user
interface have keyboard equivalents. When possible, Release 2
features like TAB gadget cycling and window zooming were supported.
* `SuperDuper''s window can be opened on any public screen under
Release 2.
* The start/end cylinder of a copy is programmable.
* Unique numbered names can be automatically generated while
formatting.
* `SuperDuper' works under 1.2, 1.3 and 2.0.
* `SuperDuper' has a time indicator.
* `SuperDuper' has a beautiful name. 8^)
* If this is not enough, an ARexx interface allows any kind of
customization. In particular, a startup ARexx script lets you set
up a custom configuration. Since `SuperDuper' can turn off its
graphical user interface via a command line switch, it is possible
to use `SuperDuper' as a CLI command by writing a suitable ARexx
macro. A switch allows you to shut down ARexx in order to gain
memory. ARexx macros can be launched via a file requester
(asl.library, arp.library and req.library are supported).
First Steps
============
To use `SuperDuper', you simply double-click on its icon. You will
see five rows of gadgets. The first one has at most one gadget
selected: it's the source. The second one lets you select the
destination drive(s). The other lines contain option and action gadgets.
Every gadget can be activated via mouse or keyboard (using the
underlined letter). The line of destination drives can be controled by
pressing SHIFT together with the underlined number. You can use `Q' or
ESC to exit, instead of hitting the close gadget. Three of the string
gadgets have underlined letters which activate them. Moreover, if you're
running under Release 2, you can use `TAB' or `SHIFT-TAB' to pass from
a string gadget to another one.
To make your first copy, if you have two (or more) drives simply
select in the first line the gadget for the drive which contains the
source floppy, and in the second line the gadget(s) for the drive(s)
containing the destination(s) (for the time being do not choose the
same drive both as source and as destination). Then hit the GO gadget.
After a while, the display will flash, a beep will be generated, and
the copy will be finished. As each cylinder is copied, the elapsed time
indicator is updated. Note that a first beep will be generated when the
copy is almost finished, so you have time to prepare yourself.
If you have only one drive, select it both as source and as
destination. Then hit the BUFFER gadget, thus creating a RAM buffer.
Depending on the memory available, it will be a full 880K buffer or a
partial buffer. In the latter case, real-time compression will let
`SuperDuper' get the best out of it. Now put in the source disk and hit
the READ gadget: the buffer will be filled with the contents of the
disk. If the progress bar reaches its maximum length, then the whole
disk has been buffered. Pull out the source disk, put in the
destination, and hit the GO gadget. The buffer will be written to the
disk. If only a part of the source disk was buffered, put it in again,
buffer it again (note that now the progress bar starts where it stopped
before) and write it again. This process must be repeated until the
whole disk has been copied. It is safer to set the write protect tab on
the source disk, in order to avoid the unpleasing side-effects of
source/destination mismatches.
Gadgets
********
The Action Gadgets
===================
Four gadgets control `SuperDuper''s copy/format/check operations:
STOP
stops any operation. If pressed while the multi-pass real-time
compression buffer is selected and no operation is in progress, it
will empty the buffer and reset the pass count, thus allowing you
to buffer another source even if the previous one wasn't finished
(see The Buffering System). If you STOP immediately after starting
a copy operation and nothing has been drawn in the progress bar,
nothing has been written to the destinations.
READ
can be used only when a buffer is selected; it fills the buffer by
reading from the source drive.
GO
initiates a copy operation. If no buffer is selected, the source is
copied to the destination(s). If a buffer is selected, the content
of the buffer is written on the destination(s). If FORMAT is
selected, the destination drive(s) are formatted.
CHECK
is basically a READ without buffering. The source disk is scanned
for errors. No buffer is needed to use it. Note that `SuperDuper'
will detect trackdisk.device related errors, but it won't find DOS
checksum errors (for this purpose, for instance, you can use
`FixDisk').
When `SuperDuper' starts an operation which involves reading a disk,
i.e., READ, CHECK and non-buffered GO, it scrolls up the name list and
marks the current drive as `<UNKNOWN>'. This happens because it can't
know if the disk is a DOS disk before reading track 0. After less than
a second, the track will be read, and the name will be changed to
`<NDOS>' if the disk is not a DOS disk. Otherwise, as soon as the track
80 is read (the progress bar is in the middle) the name of the disk
will be displayed. However, if for any reason the name is incorrect
(wrong format, read error, etc.) `SuperDuper' will name the disk `<BAD
NAME>'. In this case, it is very likely that the root block is a little
bit scrambled, so it's probably a good idea to turn off the DATE option
gadget. Beware: if you are using a multi-pass buffer, the name of the
disk could be unavailable at the first pass.
If `SuperDuper' finds an error on read (or verify), it will retry
reading (writing) the track, each time incrementing the first number of
the RTRY:ERR indicator. If after a number of retries specified in the
gadget RETRY# the error remains, `SuperDuper' will increment the second
number (the error counter), restore the original retry counter and
continue. A little rectangle in the progress bar will point out where
the error occured. It will be positioned horizontally, proportionally
to the track number, and vertically, proportionally to the unit number
(the first line of rectangles shows errors on unit 0 and so on). Note
that while retrying `SuperDuper' can't be stopped: don't set the RETRY#
gadget to 99 unless you really know that's what you want to do. At the
end of the copy, the first number shows how many retries leading to a
successful write were done, while the second one points out the number
of tracks with an actual error. If you want to get a very detailed
error report, you can set `printerrors on' from ARexx. A console window
will appear, and every wrong read, write or retry will generate a
message explaining what doesn't work. Usually you will get bad
checksums, but if a track is really scrambled `SuperDuper' could be
unable to get the first sector after a gap, in which case nothing at
all is recovered.
The progress bar is drawn in a different color if you're doing an
read, a format or a copy operation--so you can be sure you read the new
chunk in the buffer, and so you can avoid formatting your floppies when
you think you're copying something to them. The gadget corresponding to
the action currently executing will remain highlighted in order to
remind you what you're doing. Note also that the progress bar and the
elapsed time indicator are not updated if something locks the screen
(like using menus). The update is delayed until the screen is unlocked
(thus `SuperDuper' won't get stuck as will almost all programs which do
any rendering to their windows).
The volume of the beeps produced by `SuperDuper' while copying can be
set with the ARexx `volume' command.
If you specify start/end cylinders different from 0/79 in the SC and
EC gadgets, only the part of the disk specified will be copied. The
main use of this option is for retrying some lazy disk (usually on the
last tracks) if you're not satisfied with the number of retries issued
by `SuperDuper'. Please refer to the section on the buffering system
for some subtle interactions between the RAM/HD/VDisk buffer and the
start/end cylinder selectors.
While doing buffered copies, at each successful copy (that is,
without errors) the CPY# indicator will be incremented. Thus you can
know precisely how many disks you copied. Moreover, the counter will be
incremented only if the operation ended on the last track of the disk
and started from the first track of the buffer. This allows you to
manually retry spare tracks by changing the CS/EC gadgets without
getting spurious increments, and if a multi-pass copy is in progress
only the last pass will actually increment the counter.
The Copy Options
=================
Five gadgets control the copy/format options.
VERIFY
turns verify on and off (you can also format without verifying).
However, turning off verify is not recommended.
DATE
toggles on or off the change of the date of an AmigaDOS disk. This
change is necessary so AmigaDOS can distinguish otherwise
identical disks; if two truly identical disks are inserted in the
drives, AmigaDOS gets confused and crashes. However, if for some
reason you want a "physical" copy, you would turn off this option.
DATE will be ignored for a non-AmigaDOS disk.
FORMAT
enables formatting. When you hit GO, all destination drives will
be formatted. To copy again, you must deselect FORMAT by clicking
it again. If VERIFY is selected, the format process is verified.
Note that when you hit READ, FORMAT is automatically deselected.
This happens in order to avoid the unpleasing error of thinking
you're writing a buffered disk, while actually formatting it.
The gadget prefixed by LABEL: allows you to choose a name that
`SuperDuper' will use while formatting. The name must be chosen
before clicking GO--it is disabled (ghosted) during the formatting.
INCNAME
makes easy to format a bunch of disks with different, unique
names. If this gadget is selected while formatting, `SuperDuper'
will scan the Label string gadget searching for a numeric pattern
(i.e., one or more digits) and will increment the pattern value
for each disk formatted. In case more than one pattern is present,
the last one is used. For instance, if you format four disks with
label `Foobar.000', the disks will be named `Foobar.001',
`Foobar.002',... and at the end of the copy the label gadget will
contain `Foobar.004', thus being ready for the next formatting.
The more digits, the more unique names. Since you can start from
any number, and after 99...9 the numeration wraps around, if you
need to start with 00...0 you can put in something like
`Foobar.999': The first disk will be labeled with `Foobar.000'
FFS
enables the formatting of FFS disks; for copying it is ignored.
The Buffering System
=====================
Three gadgets control the full-featured buffering system of
`SuperDuper'. Buffering is useful when you have to do a lot of copies:
you read a disk only once, and then you can make as many copies as you
want without rereading it. It also has other uses: if you have to
create distribution disks (for instance for a commercial package) you
can create them using high speed virtual floppies, such as Commodore's
RAD: or Matt Dillon/Jim Cooper's FMS: disk. `SuperDuper' can then read
from those virtual disks and make many copies on floppies at high speed.
Since data integrity is a primary issue, `SuperDuper' checksums the
RAM buffer. The possibility of writing a munged track is very low.
Strict control is also kept on the validity of the buffer--you can't
write random data on your disks inadvertantly.
BUFFER
allocates a RAM buffer. `SuperDuper' will try to get an 880K
buffer: if you don't have enough memory, a warning will be issued,
showing the number of buffers allocated (each buffer is 11K) and
warning you that the real-time compression system is activated.
Beware of the fact that many programs tend to crash under
low-memory conditions, so if you have 1MB or less you should close
everything you can before hitting BUFFER, and you should possibly
also use KILLSYS (see The User Interface Gadgets).
The memory allocated will be used as a buffer to make multiple
pass copies. If `SuperDuper' can find 880K, the process is very
simple and uses very little of the CPU, but if (for instance on a
1MB machine) it's impossible to buffer a whole disk this way,
`SuperDuper' will use a real-time compression algorithm. As the
disk is read in the buffer, it is compressed in a special format.
The gain in size is usually 35% for empty tracks, 20-30% for text,
15-25% for programs and 5-10% for IFF ILBM images. Tracks which
can't be compressed are simply stored. The only disks which can't
really be compressed are disks filled with compressed files, like
.lzh or .zoo files, but for the others the size gain is enough to
buffer a whole disk on a 1MB machine. 8^)
Of course, the compression overhead eats a lot of CPU power. The
algorithm has been devised in such a way that compression and
decompression are absolutely real-time, i.e., you will notice no
slowdown. However, beware of the fact that while doing compression
`SuperDuper' always fully uses the CPU. Even moving the mouse can
slow down the operation in progress. Anyway, if you have all of
your memory allocated for the buffer, it is definitely not a good
idea to do anything besides waiting for the copy to finish.
A little side-effect of the allocation of all of the available RAM
is that some requester could be turned into an alert, or could
even disappear without waiting for the user to acknowledge it.
HDBUF
creates an 880K file in the current directory of `SuperDuper', and
uses this file as a buffer, exactly like BUFFER does with RAM. Of
course you must use it only if you have a hard disk, and you
started `SuperDuper' from it. The file contains the 1760 blocks
which form a disk in their natural order. The READ operation will
be a little slower, but if you have a good hard disk you should be
able to make copies as fast as with a RAM buffer. The file is
named `SD_Buffer', and it's accessed only during the copy
operations. This means that you can read or write it using the CLI
commands, or the Workbench (but you will have to supply an icon).
You can easily write an ARexx macro which retrieves/stores binary
images of a disk from/to `SD_Buffer' (see ARexx). Then
`SuperDuper' will use the new contents when writing to floppies.
If you put a file named `SD_Buffer' in `SuperDuper''s directory
*before* clicking HDBUF, then `SuperDuper' will assume this is a
buffer file and will use it. You can even write directly to
floppies without reading anything. Note that usually the buffer
file is deleted when the HDBUF gadget is deselected, but if you
supply a buffer file before activating the gadget your file will
be left untouched.
VDBUF
is probably `SuperDuper''s most esoteric feature. By typing a
device name in the string gadget named VDNAME, you can select any
device (`SuperDuper' needs the Exec device name, e.g.,
`ramdrive.device' for the RAD: AmigaDOS device). The unit number
is taken from the gadget with the label VDUNIT#. The device you
specified will be used as a buffer for your disks. `SuperDuper'
expects the device to behave like the trackdisk.device, namely it
must be able to write data at specific offsets. The main devices
you can use, with their respective names, are:
RAD:
the recoverable RAM drive. Configure it in your mountlist as a
floppy, and you can use it as a buffer (Exec name:
`ramdrive.device').
FMS:
Matt Dillon/Jim Cooper's virtual floppy-on-hard disk (Exec
name: `fmsdisk.device').
VD0:, etc.
other recoverable, sector-oriented RAM drives.
The device you specify is checked on opening to see if it has
enough space to contain a full disk. The check is done simply on
the number of sectors available--if there are enough sectors, and
they are arranged differently than on a floppy, you will be able
to use the device as a buffer, but don't expect AmigaDOS to get
anything meaningful from it.
*Warning*: many of these devices are buggy and return *no error*
on unsuccessful opening or failed size test. Some of them in this
case will trash your memory. Be sure that the device is configured
properly--try an AmigaDOS command on it first.
Of course, many people will find incredible ways to use this
feature (for techies: if you want try something weird, consider
that `SuperDuper' reads 512 bytes at offset 900608 on opening to
test for size, and then reads 1760 chunks of 512 bytes, one for
each sector, for every copy. The sectors are read sequentially as
they are distributed on the disk, so if the device ignores the
offset indication, you can feed it with 880K of a continuous bytes
stream. Buffering is another story though--the offset indication is
important because `SuperDuper' places the blocks on the device "in
the right place" as soon as it encounters them).
A BUFFER is considered non-valid as soon as allocated, because it
will contain random info. To make it valid, you must read in a floppy.
VDBUF and HDBUF instead assume the buffer is always valid, because it
could be externally fed. This mechanism allows you to prepare, for
instance, a distribution disk at high speed in RAD: or in your hard disk
using FMS:, and then to copy it to floppies directly.
In the same vein, `SuperDuper' will act slightly differently when
determining if a buffer contains a DOS disk (if not, the incrementing
of the date is inhibited even if selected). At read time, the
information is recorded, but if at write time the pass starts from
track 0, `SuperDuper' will re-fetch the DOS mark from the buffer and
check it again. This way if for instance you externally feed a
ramdrive.device with a diskcopy command `SuperDuper' will be aware of
it and will increment the date if requested to do so.
Some care must be taken in order to obtain what you really want when
mixing the buffering features and the selection of the start/end
cylinder. `SuperDuper' implements a reasonable mean of flexibility and
reliability for these kinds of operations.
When using VDBUF or HDBUF, the read/write operations start and end
exactly where you specify with the start/end cylinder gadgets. Since
`SuperDuper' has no control over what you do to the virtual disk while
it's not accessing it, it has to assume you made it right.
When using a RAM buffer, `SuperDuper' can clearly make some
assumptions on its validity. In particular, just after allocation or a
stopped READ it assumes the buffer is not valid.
If you have a valid buffer and you change the start/end cylinders,
there are two cases: either the buffer range and the start/end range do
not intersect, in which case an error message is issued if you try to
write the buffer, or there is a non-empty intersection, in which case
the intersection will be written, i.e., the starting track will be the
greatest of the start of the buffer and the start cylinder, while the
ending track will be the least of the end of the buffer and the end
cylinder. Example: if you read something with SC=20, EC=30, then you
set SC=10, EC=25 and hit GO, the range 20-25 will be written.
There are however two subtle differences between the behaviour of a
complete (880K) RAM buffer and a partial one. First of all, the track
range chosen for reading in a complete RAM buffer is always the full
start/end cylinder range, while if reading in a partial buffer
`SuperDuper' will start from the last track of the previous buffer (of
course, if the last track is past the end cylinder, it will start from
the start cylinder). Moreover, if a long range of tracks is skipped
(for instance, you read in a buffer range of 0-79 and you write 70-79)
a few (less than 10) seconds will pass while `SuperDuper' unpacks the
data you don't want to write--they have to be decompressed anyway.
If all this scares you, don't fear: the buffer/range interaction
will simply work just as you intuitively expect. I hope at least 8^).
The User Interface Gadgets
===========================
TALK
activates `SuperDuper''s ability to give its status by voice.
Currently only English is supported.
AUTO
activates automatic operation starting. `SuperDuper' will monitor
disk insertion and ejection. When all destination(s) have been
ejected and re-inserted, a GO operation is started. If FORMAT is
selected, the destination(s) are formatted. Else, if a buffer is
selected, it is written to the destination(s). If neither
formatting nor buffering is requested, `SuperDuper' will monitor
the source, too, and will start a disk-to-disk(s) copy as soon as
the source and all destination(s) have been ejected and
re-inserted.
*Warning*: especially on one-drive-only systems, AUTO can be
extremely dangerous. You'd better write-protect your source disks.
KILLSYS
RESTORE
closes the Workbench and voice, flushes the memory and opens a
very small screen with only two colors. Moreover, the window is of
`SIMPLE_REFRESH' type rather than `SMART_REFRESH'. This way, the
maximum amount of memory for your system is at your disposal
(unfortunately, under 1.3 the window can be refreshed incorrectly
because of an Intuition bug). If the Workbench can't be closed for
some reason, a warning is issued (usually some application has a
window opened on the Workbench screen). When you want to get back,
hit the gadget again (this time it will be named RESTORE). This
feature is very powerful if coupled with `SDBootInstall' and with
the CLI option `LOWMEM'.
*Warning*: If you grab the disk.resource (by selecting a source
and/or a destination) just after a disk was inserted, it's likely
the Workbench will be locked, waiting for you to unlock the drive
in order to load the icon of the disk. If in this moment you hit
KILLSYS, you will lock the entire system, since `SuperDuper' will
be waiting for the Workbench to close, while the Workbench will be
waiting for you to release the disk.
The String Gadgets
===================
The string gadgets have been more or less discussed in the previous
sections. They are gathered here for sake of clarity.
SC
EC
select the start and the end cylinders, respectively, for any
operation.
LABEL
lets you choose a name for the disks formatted by `SuperDuper'.
See The Copy Options, for the effect of the INCNAME gadget.
VDNAME
VDUNIT#
select the name and the unit number of the Exec device that
`SuperDuper' will use as a virtual disk if the VDBUF gadget is
selected.
RETRY#
selects the number of read/verify retries on each track.
Special requesters
*******************
When `SuperDuper' needs to inform the user about something, usually a
requester with a message appears (if the TALK option is on the message
is also read out loud). While most of the requesters are
self-explanatory, some of them need a more detailed description.
`Can't get disk.resource'
The disk.resource is the Exec way of controlling the access to the
low-level disk hardware. `SuperDuper' can't access the resource,
probably because someone is already using it. If you suspect a
particular program, close it and try again to select a disk gadget.
`Please free disk.resource'
(See also previous requester). If the disk.resource can't be
grabbed, Exec won't give back the message passed by `SuperDuper' until
the resource is free. Thus, until that moment `SuperDuper' can't exit.
`Checksum error: buffer munged.'
Someone wrote over `SuperDuper''s RAM buffer. The buffer is no
longer valid, and the current copy is probably munged, too. You should
probably reboot, because if something writes on someone else's memory
it's likely it will do it again.
`A track buffer has been munged.'
Someone wrote on one of `SuperDuper''s track buffers. The same
comments of the previous requester apply.
`ARexx server not active'
In order to use ARexx macros, the ARexx server has to be activated.
Type `RexxMast' at a CLI prompt (if it's not in your path, you should
locate it easily).
`Error while recalibrating unit x.'
`SuperDuper' found an error while recalibrating a drive head. The
head was moved to track 0, but the drive signal `DSKTRACK0' wasn't
activated. This means that either your drive has lazy signals, in which
case there's nothing to worry about, or that some head step wasn't
actually performed (possibly because of power supply reasons) in which
case the last copy could be bad, even if VERIFY is on. Better CHECK it.
Try also to increase the step and calibrate delays of the drive with
`SetTDDelay'.
`Better write-protect your sources.'
This message is issued every time you select the AUTO gadget on a
machine with a single drive (see The User Interface Gadgets).
ARexx
******
ARexx is the system macro language of the Amiga. It was originally
developed by Bill Hawes (to whom every Amiga owner owes much more than
he probably realizes) and was then included in the Release 2 of the
operating system.
ARexx is a beautiful interpreted language, with unique features such
as syntax/semantics collapsing (for instance, you can ask the value of a
variable given its name as a string) and, overall, the ability to
interface itself with external applications. A single ARexx script can
control several different programs and make them interact.
The ARexx interface consists of a port, which is used for
communications, and a set of commands that ARexx can issue to the
application. For `SuperDuper', the port name is `SUPERDUPER', and the
command set is described below. ARexx scripts written for `SuperDuper'
should have extension `supdup', like `foobar.supdup'. This is in order
to distinguish ARexx scripts written for different applications.
ARexx provides at little or no implementation cost a powerful macro
language which substantially increases the performance and the
versatility of an application. Maybe some feature you would like to
have is not in `SuperDuper' at this time, but it's very likely you'll
be able to put it in via a suitable ARexx script.
General Issues
===============
Besides being able to execute commands issued by an ARexx macro,
`SuperDuper' is also able to start an ARexx macro. This is indeed the
purpose of the AREXX gadget (the last one in the last row). The gadget
is activated if 1) the `rexxsyslib.library' is somewhere in your LIBS:
directory and 2) you have a file requester. `SuperDuper' is able to
recognize and use the ASL file requester (under Release 2), the ARP
file requester or the req.library file requester (the first available
in this order will be used). You can start any number of macros at the
same time (beware of wild interactions though).
`SuperDuper' commands generally correspond to gadgets, and are
similarly named: for instance, the command `check' will check the
source drive, while `vdunit 4' will set the virtual disk buffer unit
number to 4. Commands are case insensitive, and only the first two or
three letters are significant. So you can write `ch' instead of `check'
but you have to write `rea' for `read', or you could make confusion
with `restore' or `retry'.
ARexx needs a console by which it communicates with the user. If you
started `SuperDuper' from the CLI, the your original CLI will be used.
Otherwise, a console window will be opened. Under 1.3, this window
appears at the start of any ARexx macro and gets closed when there is
no macro running. Under Release 2 it's always open, but it's an `AUTO'
console window, so you can close it if you wish: it will be reopened as
soon as something is printed into it.
Action Commands
================
The commands `go', `read', `check' and `stop' act just like their
gadget counterparts, starting a copy (buffering, formatting) process or
stopping it. The first three return at the end of the operation.
However, for instance, if another task sends a `stop' command while a
copy is in progress, the copy is interrupted and the `go' command
returns. You can then check the `rc' variable to see what happened (see
`The ARexx User's Reference Manual').
The pair `killsys' and `restore' work like the corresponding gadget.
The operations which are nonsense have no effect (i.e., if you send
`killsys' and the system has already been killed, nothing happens).
Finally, `rx STRING' executes the ARexx macro named STRING.
Selection Commands
===================
I list here for sake of completeness the whole group of selection
commands. They could be easily deduced anyway from the gadget names,
apart from `noclick', `volume', `printerrors' and `rx' which are
available only through the ARexx interface. Here STRING is a string of
characters and N is a nonnegative number. When `on/off' is specified as
an argument, you have two ways of invoking the command: `COMMAND on'
will switch the thing on, and `COMMAND off' will switch it off. Note
that the ARexx interface of `SuperDuper' is rather lazy about
syntax--strings too long will be silently truncated, and passing a
non-numerical argument where N is required will usually produce a value
of 0.
`source N'
Selects drive N as source;
`source off'
Turns off source drive;
`dest N'
Selects destinations using N as a bit mask. For instance, 0
selects no drive, 1 selects drive 0, 5 selects drives 0 and 2, 15
selects all destinations;
`buffer on/off'
Controls the RAM buffer;
`hdbuf on/off'
Controls the hard disk image file buffer;
`vdbuf on/off'
Controls the virtual disk buffer;
`verify on/off'
Turns on/off verify;
`date on/off'
Turns on/off date adaptation;
`incname on/off'
Turns on/off name increment while formatting;
`ffs on/off'
Selects Fast File System or Old File System while formatting;
`talk on/off'
Toggles talk mode;
`auto on/off'
Toggles auto mode;
`label STRING'
Sets the disk label
`retry N'
Sets the number of retries;
`vdunit N'
Sets the virtual disk unit number;
`vdname STRING'
Sets the virtual disk unit device name;
`scyl N'
Sets the start cylinder;
`ecyl N'
Sets the end cylinder.
`quit'
Quits the program.
The following commands are only available through the ARexx
interface:
`noclick N'
Forces `SuperDuper' to not click the drives specified by N as a
bit mask (the same format of `dest').
`printerrors on/off'
Opens/closes `SuperDuper''s detailed error report window;
`requesters on/off'
Inhibits the error requesters from popping up (mainly useful when
`SuperDuper' is in its no-GUI mode; see The CLI Interface).
`volume N'
Sets the volume of the beeps (0<=N<=64);
Return Codes
=============
Commands issued by ARexx to an application should return useful
values in order to tell what really happened. Generally, a command
which fails returns an error level, while a successful command returns
an error level of zero and, upon request of the caller via the `OPTIONS
RESULTS' command, a result string which can be parsed in order to get
useful information.
`SuperDuper' returns an error code of 10 if the syntax of the command
was wrong. This will cause ARexx to complain with an error message. An
error code of 1 is returned if the syntax was right but the command
couldn't be executed, but there is no real failure (for instance, if
you send `go' while a copy is already in progress or if you try to
select a ghosted gadget). An error of 30 is returned in extreme cases,
for instance when you hit the close gadget and there are still some
commands pending. No strings are ever returned, since we have only a
few cases to differentiate. Return codes with special meanings are
returned by the following commands:
`source'
`dest'
2
The selected drive is not connected.
5
The disk.resource is not available.
`buffer'
`hdbuf'
`vdbuf'
5
The buffer cannot be allocated.
`buffer'
2
A full buffer cannot be allocated. Compression is on, and
there is the possibility of multi-pass copies.
`go'
`read'
`check'
2
This pass is not the last one.
3
Something is wrong with the chosen source, destination and
buffer options. For instance, you're trying to copy from df0:
to df0: without a buffer.
4
The buffer is not valid.
5
A unit is empty.
6
A unit is write-protected.
7
The start/end cylinders chosen are meaningless. This can
happen if the numbers are out of range, or (for a
RAM-buffered GO) if there is no intersection with the current
buffer.
8
There were errors.
9
There were errors. Moreover, this pass is not the last one.
20
Someone munged the RAM buffer or the track buffer.
`talk'
5
The voice system cannot be activated.
`killsys'
`restore'
20
The current window has been closed, but it was impossible to
open the new one. The program exits in this case.
What Can I Do with ARexx?
==========================
Basically you can expand `SuperDuper''s capabilities and/or make it
interact with other programs. A couple of examples of the first case
could be a `CheckAll.supdup' macro which checks all drives in sequence.
The "native" `SuperDuper' can only check one drive at a time, but if
you have two or more drives you can check many drives using a macro like
/* CheckAll */
do i = 0 to 4
source i
if rc==0 then check
end
After checking you should of course look at the return codes in the
`rc' variable and decide upon appropriate actions.
Suppose now you have four drives and you want to make a copy of two
different floppies. You can put the sources in drives 0 and 1, the
destinations in drives 2 and 3, and then
/* DoubleCopy */
source 0
dest 4
go
source 1
dest 8
go
(of course I'm assuming `SuperDuper' is in its default
configuration). This will produce the two copies in a completely
unattended way.
The CLI Interface
******************
Line Command Options
====================
When you start `SuperDuper' from the CLI, you have the chance to
specify an option. The possible options are printed in the standard
Amiga template format if you type `SD ?'. In this case, the following
line
PUBSCREEN/K,NOGUI/S,LOWMEM/S
will be displayed. Its meaning is that `NOGUI' and `LOWMEM' are
switches that you can activate, while `PUBSCREEN' must be followed by
the name of an existing public screen. For instance, the command line
`SD NOGUI' will invoke `SuperDuper' in its `NOGUI' mode. The two flags
`NOGUI' and `LOWMEM' are mutually exclusive--if both are specified,
only the first one counts.
`PUBSCREEN'
`SuperDuper' will open its window on the specified public screen.
This parameter is non functional under 1.3.
`NOGUI'
`SuperDuper' won't open its graphical user interface but you can
then control it through the ARexx interface. This makes possible
to write an ARexx macro allowing you to use `SuperDuper' from the
shell much as the diskcopy command. Moreover, the startup file
`Startup.supdup' is not executed, so that in your ARexx macro
which calls `SuperDuper' directly you can expect to get the
standard configuration.
`LOWMEM'
This switch shuts down the ARexx port and the sound system.
`SuperDuper' won't open either the ARexx port/rexxsyslib.library
pair, or the audio.device. This mode is provided for user with 1M
or less who want to have as much free memory as possible (read
also the section about `SDBootInstall').
These options are only available from the CLI.
The Startup File
================
At startup time, `SuperDuper' checks if ARexx is available, and in
this case it tries to start an ARexx macro named `Startup.supdup'. This
file should contain your usual settings: for instance, it's a very good
place where to put a `volume' command. The startup file is a regular
ARexx macro, just like any other one started by the AREXX gadget or by
the `rx' command. However, a couple of conventions were implemented in
order to get a better behaviour on systems without ARexx. In
particular, the absence of the ARexx server or the ARexx error message
`Program not found' will *not* be displayed if caused by the startup
file. Notice that the last message can also be caused by the first line
of `Startup.supdup' not being a comment (every ARexx macro must start
with a comment).
Performance
************
`SuperDuper' and Your System
=============================
`SuperDuper' has been written keeping in mind that a good program
doesn't have to eliminate everything from the system in order to work.
The Amiga has a very efficient multitasking kernel which allows for
resource arbitration.
When `SuperDuper' is started, it won't allocate anything from your
system. As soon as a source/destination gadget is clicked, it will
inhibit all of the drives (so don't select a gadget while reading or
writing to floppies) and then will grab the disk.resource. Until the
resource is released, *no one else* can access the Amiga drives. This
is necessary in order to avoid unpredictable collisions with the system
or other programs. Inhibiting the drives is not enough, since some
other file system (like `CrossDOS') could access them.
If you need to temporarily access your drives, you must simply
deselect all `SuperDuper' source/destination gadgets: the disk system
will be restarted (it will be re-grabbed on a gadget selection of
course). The heads will be moved to their original position, so that
you no longer need to eject the drives under 1.3.
The CPU use of `SuperDuper' is almost unnoticeable. You can do
anything else, and you shouldn't notice any slowdown. In particular, if
no source/destination is selected `SuperDuper' is completely asleep.
This however is not true if you use compression. In this case, not
only will the system be slowed down (a priority 0 task will almost
always be active), but *any* operation (including moving the mouse
pointer) will slow down `SuperDuper'.
If you use the utility `ToggleClick' distributed with `SuperDuper'
(or any other utility which legally kills drive clicks under Release 2)
`SuperDuper' won't click empty drives (drive clicking is necessary for
monitoring disk insertion; using `ToggleClick' is good but you must be
sure your drives won't try to move past track 0 if asked to do so).
Anyway, you always have the chance to selectively force `NOCLICK' via
the corresponding ARexx command.
You should avoid running `SuperDuper' while a 16 color hi-res screen
(or a 4-color ECS productivity mode screen) is displayed. The video DMA
access will interfere with the disk/CPU/Blitter access to the point
that copy times will rise to incredible values--reading and compressing
a disk in the buffer can take more than 100s.
`SuperDuper' and You
=====================
"Well," you could say, "`SuperDuper' is a great copier--but how can
I trust it for making my copies? This guy diddles with hardware--maybe I
should use the system `DiskCopy' command."
This is not a good idea. First of all, `SuperDuper' is *incredibly*
picky about verifying. You will get more verify error messages than
with the standard copy commands (for techies: `SuperDuper' verifies
also the MFM timing bits, not only the data bits; this means a 200%
efficiency improvement in catching verify errors and generally bad
media).
Moreover, both the 1.3 and the 2.0 trackdisk.device have unpleasant
side-effects on frequently read/written tracks. These side-effects are
cleared when you do a copy of the disk with `SuperDuper' (for techies:
trackdisk.device doesn't check for MFM bits being read in correctly, and
doesn't re-MFM the track before writing it; it just re-MFMs the changed
sector. If a MFM timing bit is read wrong, it will stay wrong forever,
possibly causing read errors; but `SuperDuper' re-MFMs every track it
copies, thus restoring every MFM timing bit to its correct value).
Finally, if you don't like coffee-breaks during your copies, you'd
better use the fastest copier available--namely `SuperDuper'. Note that
if you have four drives and you use top-quality disks, so you can skip
verify, the buffer system allows you to get a per-copy time of 9 1/2
seconds, which is definitely not bad.
`SDBootInstall'
================
When your system boots up (at power on or after a reset), the
operating system searches for available drives, and creates some
trackdisk.device tasks accordingly. These tasks take a lot of memory
for their buffers (>30K), but `SuperDuper' doesn't use them at all,
because it has its internal routines.
If you have to do intensive copy work, and you have 1MB of memory or
less, you could find it useful to boot up your system in a special
configuration that will shut down almost all trackdisk.device tasks,
thus freeing a lot of memory.
To accomplish this, do as follows:
1. Make a copy of your usual Workbench 1.2 (or greater) disk (from
now on we work on the copy).
2. Delete some programs to make room--`preferences', `diskcopy' and
`format' are good candidates. Moreover, delete the file
`Disk.info'.
3. Copy `SuperDuper' to the disk root directory (by dragging its icon
on the disk icon or using the CLI).
4. Edit the startup-sequence of the disk (it's in the `s' directory).
Delete it entirely, and substitute it with
SetPatch >NIL:
Run >NIL: <NIL: SD LOWMEM
EndCLI >NIL:
If you're under 1.2, don't put in the first line (you don't have a
`SetPatch' command).
5. Now put the disk in df0:, and run the utility `SDBootInstall'. A
special bootblock will be installed on the floppy. When booting
from it, the operating system (and you) will be able to access
only drive 0--the other ones will be for `SuperDuper''s use only.
To get back to normality, a reboot is necessary. You will gain
30/40K per drive using this method (for techies: it is perfectly
legal--the bootblock simply AllocUnit()s the drives with ID>0).
A Word on Copy Protection
==========================
`SuperDuper' won't copy protected disks (or if it will it's just a
coincidence). I do not believe in copy protection. Scrambled tracks will
produce random data on the destination. If the read error goes beyond a
simple checksum error don't expect anything meaningful to be written on
the destination disks.
However, `SuperDuper' will faithfully reproduce data block checksum
errors (`Disk foobar has a read/write error') or DOS checksum errors
(`Key 880 checksum error') on the source disk in disk-to-disk copies
(header checksum errors are fixed when renumbering the sectors). Thus,
if you got the typical `Key <n> checksum error' you can make a copy of
the disk before fixing it. `SuperDuper' won't do any surgery: use a
good tool (such as `DiskSalv' or `FixDisk') for that. Avoid
`DiskDoctor'. On the other hand, during buffered copies data block
checksums will be silently fixed by recalculating the right checksum.
Acknowledgments
****************
The first person I must thank a thousand times is Dirk Reisig. It
was by means of his suggestions that I sped up `SuperDuper' to the
current, amazing level. I wrote him a letter which he answered gently
with a long explanation of the optimizations performed by `PCopy'. The
first time I read the letter it seemed greek to me, but little by
little I learned all the mysteries of MFM encoding and disk direct
hardware driving. Moreover, I learned from the source code of
`TrackSalve' the usage of the blitter for MFM encoding and many other
subtle things. In other words, without the help of Dirk you would have
never seen anything after `DFC5' (for version 2.0, a new optimization
was introduced; it was suggested by Dan Babcock).
The second guy behind the birth of `SuperDuper' is Tom Rokicki. He
pushed me to write a substitute for `TurboBackup', and overall
suggested the main thing--that on the Amiga it is possible to write
many disks at the same time. Without this trick, you could never do
four non-verified copies in 38s. Tom also tested all
pre-whatever-greek-letter versions, always giving useful comments...
and risking the life of his drives 8^). Moreover, I had time to work on
`SuperDuper' because the AmigaTeX system is so incredibly efficient I
got a lot of spare time while writing math papers...
Last but not least, Randell Jesup at Commodore drove me through the
labyrinth of non-specified-specs, hardware quirks, strange behaviors,
and system esoteric features. Without his help `SuperDuper' could
probably work... but I wouldn't trust it for *my* copies 8^).
The name `SuperDuper' popped up during a rather intensive BIX
discussion. Many other names were proposed, but in the end I chose this
one--it has symmetry, correctly defines the product and has a simple
shortening (SD). Thus, a thousand thanks to Kent Kalnasy and Dan
Barrans for suggesting this name.
Many features were not my ideas. An incredible number of BIX users
came up with excellent suggestions, many of which were actually
implemented. Thanks to them you have support for buffering on any
device (I never use RAD: nor FMS:, so I didn't think it could be
useful).
But, as always, the biggest *thanks* goes to the beta-testers of
`SuperDuper': Dennis Atkin, Michele Battilana, Vittorio Calzolari, Jim
Cooper, Doug Erdely, Charlie Fair, Blaine Gardner, Robert Jenks, John
Jones, Kent Kalnasy, Robert Kesterson, Paul King, Randy Menzer, Linda
Munson, Davide Repetto, Tom Rokicki, Sergio Ruocco, Carlo Santagostino,
Reinhard Spisser, Jeff Todd, Carlo Todeschini, Michael Scott Velez and
Marco Zandonadi. Beta-testing a copier is different from anything
else--if it doesn't work you won't get a marginally corrupted picture
on your display: rather, the Fish Disks it took an hour to copy could
be unusable. A special kind of patience is needed under these
conditions 8^).
Disclaimer and Author Info
***************************
`SuperDuper' is Copyright (C) 1991,1992 Sebastiano Vigna and it's
freely distributable as long as all of its files are included in their
original form without additions, deletions, or modifications of any
kind, and only a nominal fee is charged for its distribution. This
software is provided *AS IS* without warranty of any kind, either
expressed or implied. By using `SuperDuper', you agree to accept the
entire risk as to the quality and performance of the program; don't
come to me if you destroy your entire Fish Disk library with it! Of
course, it was tested rather extensively before it was released...
Comments, complaints, desiderata are welcome.
Sebastiano Vigna
Via California 22
I-20144 Milano MI
BIX: svigna
INTERNET: vigna@imiucca.csi.unimi.it
vigna@ghost.sm.dsi.unimi.it
UUCP:cbmehq!cbmita!sebamiga!seba@cbmvax.cbm.commodore.com
...{uunet|pyramid|rutgers}!cbmvax!cbmehq!cbmita!sebamiga!seba
FIDO: 2:332/607.28
Concept Index
**************
<BAD NAME> The Action Gadgets
<NDOS> The Action Gadgets
<UNKNOWN> The Action Gadgets
ARexx ARexx
Acknowledgments Acknowledgments
Address Disclaimer and Author Info
Atkin Dennis Acknowledgments
Babcock Dan Acknowledgments
Bar color The Action Gadgets
Barrans Dan Acknowledgments
Battilana Michele Acknowledgments
Buffer File The Buffering System
Buffering The Buffering System
CLI Options The CLI Interface
CPU usage SuperDuper and Your System
Calzolari Vittorio Acknowledgments
Changes Changes
Cooper Jim Acknowledgments
Copy protection Copy Protection
Copying First Steps
DMA contention SuperDuper and Your System
Disclaimer Disclaimer and Author Info
Distribution Disclaimer and Author Info
Drive inhibition SuperDuper and Your System
E_mail Disclaimer and Author Info
Erdely Doug Acknowledgments
Error Report Selection Commands
Error reproduction Copy Protection
Errors The Action Gadgets
Errors while recalibrating Changes
FMS: The Buffering System
Fair Charlie Acknowledgments
Features Main Features
First Steps First Steps
Flakey drives Changes
French keyboard Changes
Gardner Blaine Acknowledgments
Introduction Introduction
Jenks Robert Acknowledgments
Jesup Randell Acknowledgments
Jones John Acknowledgments
Kalnasy Kent Acknowledgments
Kesterson Robert Acknowledgments
Keyboard Usage First Steps
King Paul Acknowledgments
Low memory The CLI Interface
Menzer Randy Acknowledgments
Munson Linda Acknowledgments
No clicks Selection Commands
No clicks Changes
NoGUI The CLI Interface
Performance Performance
Public Screen The CLI Interface
RAD: The Buffering System
Reisig Dirk Acknowledgments
Repetto Davide Acknowledgments
Requesters Special Requesters
Retries The Action Gadgets
Return codes Return Codes
Rokicki Tom Acknowledgments
Ruocco Sergio Acknowledgments
Santagostino Carlo Acknowledgments
Simple Refresh The User Interface Gadgets
Smart Refresh The User Interface Gadgets
Spisser Reinhard Acknowledgments
Startup File The CLI Interface
Timing bits SuperDuper and You
Timings Introduction
Todd Jeff Acknowledgments
Todeschini Carlo Acknowledgments
VD0: The Buffering System
Velez Michael Scott Acknowledgments
Voice The User Interface Gadgets
Volume Control Selection Commands
You SuperDuper and You
Zandonadi Marco Acknowledgments
Gadget Index
*************
AUTO The User Interface Gadgets
BUFFER The Buffering System
CHECK The Action Gadgets
DATE The Copy Options
EC The String Gadgets
EC The Action Gadgets
EC The Buffering System
FFS The Copy Options
FORMAT The Copy Options
GO The Action Gadgets
HDBUF The Buffering System
INCNAME The Copy Options
KILLSYS The Buffering System
KILLSYS The User Interface Gadgets
LABEL: The Copy Options
READ The Action Gadgets
RESTORE The User Interface Gadgets
RETRY# The Action Gadgets
RTRY:ERR The Action Gadgets
SC The Buffering System
SC The Action Gadgets
SC The String Gadgets
STOP The Action Gadgets
TALK The User Interface Gadgets
TALK Special Requesters
VDBUF The Buffering System
VDNAME The Buffering System
VDNAME The String Gadgets
VDUNIT# The Buffering System
VDUNIT# The String Gadgets
VERIFY The Copy Options
ARexx Command Index
********************
`auto' Selection Commands
`buffer' Selection Commands
`check' Action Commands
`date' Selection Commands
`dest' Selection Commands
`ecyl' Selection Commands
`ffs' Selection Commands
`go' Action Commands
`hdbuf' Selection Commands
`incname' Selection Commands
`killsys' Action Commands
`label' Selection Commands
`noclick' Selection Commands
`printerrors' Selection Commands
`quit' Selection Commands
`rc' Return Codes
`read' Action Commands
`requesters' Selection Commands
`restore' Action Commands
`retry' Selection Commands
`rx' Action Commands
`scyl' Selection Commands
`source' Selection Commands
`source' Selection Commands
`stop' Action Commands
`talk' Selection Commands
`vdbuf' Selection Commands
`vdname' Selection Commands
`vdunit' Selection Commands
`verify' Selection Commands
`volume' Selection Commands
Program Index
**************
AmigaTeX Acknowledgments
CheckAll.supdup ARexx Examples
DiskCopy SuperDuper and You
DoubleCopy.supdup ARexx Examples
SDBootInstall SDBootInstall
SetTDDelay Changes
Startup.supdup The CLI Interface
ToggleClick SuperDuper and Your System
ToggleClick Changes
TurboBackup Acknowledgments