[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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), the DMA
access of the custom chips and the display features enabled.
1.1 Changes | ||
1.2 Main Features | ||
• First Steps |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
SuperDuper
3.x is in many ways a completely new program. This is why
I strongly suggest to all previous users to entirely reread the
documentation.
Now the program works only under release 2.04 and beyond of the operating
system. Minor maintenance releases of SuperDuper
2.0x will probably be
distributed for the users who do not still have Release 2, but you should
assume that no programming effort from my part will be ever spent for writing
something working under 1.3. Moreover, some features of 3.0 are used if present
(for instance, scalable checkmarks and radio buttons gadgets).
The main new features are high density drive support, XPK compression support (for more details, @pxref{The Buffering System}), a complete graphical display of the copy process status, and much more flexible buffering.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
SuperDuper
copies, formats and checks from/to any combination of Amiga
drive(s).
SuperDuper
can buffer a disk in RAM, allowing 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 IFF 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:…).
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 use any XPK library in order to compresss the information
it s will be considered a ready-to-use buffer file, and you will be able
to Write
immediately. This allows to use SuperDuper
as a disk
compression system.
SuperDuper
’s most esoteric feature. By typing a
device name in the string gadget named Name
, 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 Unit
. 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:
the recoverable RAM drive. Configure it in your mountlist as a floppy, and you can use it as a buffer (Exec name: ‘ramdrive.device’).
Matt Dillon/Jim Cooper’s virtual floppy-on-hard disk (Exec name: ‘fmsdisk.device’).
other recoverable, sector-oriented RAM drives.
A RAM 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. File buffers and virtual device buffers are instead always assumed to be valid, because they 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 in HD Buffer
or in VD Buffer
mode, 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. Note that this also means that it is not a good idea to change the
start/end cylinder after you buffered a disk. A disk buffer keeps no
information about the position of the tracks it contains. Thus, if you
change the start cylinder SuperDuper
will start to write the disk
buffer at that cylinder, even if the first cylinder of the disk buffer was
recorded elsewhere (as a side effect, this allows you to move easily tracks
from one part of a disk to another).
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. Moreover, it
knows exactly were each cylinder was taken from, so that you can rewrite
parts of a disk just by changing the start/end cylinders (this is also
true of the virtual disk buffer, but only if it is used in one pass).
If you have a valid RAM 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
Start Cylinder
=20, End Cylinder
=30, then you set Start
Cylinder
=10, End Cylinder
=25 and hit Go
, the range 20-25
will be written.
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^).
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
SuperDuper
accepts some arguments, both from the CLI and from
the Workbench tool types, in order to select a number of special features.
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,NoARexx/S,NoStartup/S
will be displayed. Its meaning is that NoGUI
,
NoARexx
and NoStartup
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
no-GUI mode. The two flags NoGUI
and NoARexx
are mutually
exclusive—if both are specified, SuperDuper
will exit.
PubScreen
tells SuperDuper
to open its windows on the specified public screen.
If this argument is not specified, the windows are opened on the default
public screen.
NoGUI
tells SuperDuper
to not open the main window on startup; 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. Note that this option is also useful if you have a startup
file (see section The Startup File) and you want to avoid the visually
unpleasant effect of the main window first appearing and then being moved.
NoARexx
This switch shuts down the ARexx port. SuperDuper
won’t open neither
the ARexx port nor rexxsyslib.library. This mode is provided for user with
1M or less who want to have as much free memory as possible (moreover,
see section SDBootInstall
).
NoStartup
tells SuperDuper
to skip the startup file (see section The Startup File).
This switch is very useful when controlling SuperDuper
through an ARexx
script, because it allows to start the program in a standard configuration, and
without any window opened. Note that NoARexx
implies NoStartup
,
for obvious reasons.
These options are also available from the Workbench tool types. Just put
in SuperDuper
’s icon the obvious tool types. For instance,
‘PubScreen=TURBOTEXT’ will force SuperDuper
to open the main
window on TurboText
’s screen, while ‘NoGUI’ will force the no-GUI
mode.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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: it is a normal 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).
The startup file can be automagically generated from the current setup by
using the ‘SaveCon’ gadget (@pxref{The Action Gadgets}). Note that if
you want to avoid the visually unpleasant effect of the main window first
appearing and then being moved by the command in ‘Startup.supdup’, you
can start SuperDuper
with the ‘NoGUI’ option.
Several tricks are possible by directly editing the startup file: for
instance, you can change the order in which the windows are opened, thus
deciding which will be the frontmost; or you can start SuperDuper
in
iconified state; you can also set both the normal and the zoomed window
position.
If you do not want to run the startup file, for instance because you would like
to control SuperDuper
through ARexx, you can use the NoStartup
switch. See section The CLI and WB Options.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
. If nothing else works, the RecalibrateCheck
ARexx
command can selectively turn off this requester (see section Selection Commands).
‘Better write-protect your sources.’
This message is issued every time you select the Auto
gadget on a
machine with a single drive (@pxref{The Option Gadgets}).
‘Can't mix floppy types.’
If your Amiga is equipped with a high density drive, you should take
care of never mixing two floppies of different kind (880K or 1760K), for
otherwise SuperDuper
will be unable to perform the copy.
‘Compression not enabled.’
You are trying to write a buffer file which has been created using compression, but compression is not currently enabled.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
When in ‘HDBuffer’ mode, SuperDuper
reads and writes an IFF file.
Its format is documented here.
Informally speaking, the file is an SDDD or an SDHD FORM, depending on the density (double or high, respectively) of the disk stored. The allowed chunks are (beside the standard ANNO, AUTH,… chunks, which are never written, but tolerated while reading) the BODY and XPKF chunks. They contain, respectively, an uncompressed or a compressed track. In the first case, the chunk is always 11K long, for a SDDD FORM, or 22K long, for a SDHD FORM. In the second case, the chunk (header included) can be passed “as it is” to the XPK unpacking functions in order to get the real data, as it is composed exactly by the output of the XPK packing functions (which happens to be an IFF FORM). The same restrictions of a BODY chunk apply to the unpacked data of an XPKF chunk.
The file contains no information about the position of the tracks. SuperDuper
takes the first BODY or XPKF chunk of the file and starts to write it
onto the first cylinder.
The regular grammar for the SDDD and SDHD FORMs follows:
SDDD ::= "FORM" #{ "SDDD" [ANNO] [AUTH] [FVER] [NAME] [(c)] (BODY | XPKF)* } SDHD ::= "FORM" #{ "SDHD" [ANNO] [AUTH] [FVER] [NAME] [(c)] (BODY | XPKF)* } BODY ::= "BODY" #{ UBYTE* } XPKF ::= "XPKF" #{ UBYTE* }
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.
2.1 General Issues | ||
2.2 Selection Commands | ||
2.3 Miscellaneous Commands | ||
2.4 Return Codes | ||
2.5 What Can I Do with ARexx? |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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 only if the ‘rexxsyslib.library’ is somewhere in
your LIBS: directory. 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. A complete list, specifying
each command and its template in AmigaDOS style, follows:
Stop , Copy , Read , Write , Check , Format , NoWB On/S,Off/S Iconify On/S,Off/S SaveConf , Verify On/S,Off/S Date On/S,Off/S Comp On/S,Off/S PrintErrors On/S,Off/S Incname On/S,Off/S FFS On/S,Off/S Intl On/S,Off/S DirCache On/S,Off/S Talk On/S,Off/S Auto On/S,Off/S Label /A Filename /A XpkLib /A VDName /A VDUnit /N/A Retry /N/A SCyl /N/A ECyl /N/A Mode Disk2Disk/S,Buffer/S, HDBuffer/S,VDBuffer/S Quit , Requesters On/S,Off/S RecalibrateCheck On/S,Off/S SmartRefresh On/S,Off/S Dest /M/N,On/S,Off/S Source /N,Off/S Help Command NOP , RX Command/F Window Names/M/A,Open/S,Close/S,Activate/S, Min/S,Max/S,Front/S,Back/S, LeftEdge/K/N,TopEdge/K/N
The same table is printed if you send to SuperDuper
the Help
command with no arguments. If you do not know anything about templates, you
may want to look at the Using the System Software manual.
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. 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.
Most commands have absolutely trivial meaning, and will not be discussed in detail.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Source
selects the drive specified by the numeric argument as source; if ‘Off’ is specified instead, turns off the source gadget.
Dest
selects destinations using a list of drive numbers. If neither ‘On’ nor ‘Off’ are specified, exactly the drives in the list are selected (the remaining ones are deselected); if ‘On’ is specified, the drives in the list are selected (and the other ones are left in their current state); if ‘Off’ is specified, the drives in the list are deselected (and the other ones are left in their current state).
If you specify no drive in the list, the currently selected drives are assumed as default. Thus, ‘Dest Off’ turns off all destinations.
Requesters
turns on or off the system requesters. Note that you will not receive any explicit error message for missing libraries, et cetera.
RecalibrateCheck
turns on or off the recalibration error requester. Many users complained that this requester was appearing often, but the copies were successful. While I know that the only reason for this requester is a drive out of specs, I agreed to patch the situation by allowing to disable selectively the requester. See also Special Requesters.
SmartRefresh
selects the refresh mode of SuperDuper
’s windows. Usually, the windows
are in SMART_REFRESH
. This method uses more memory, but it is usually
faster: you can get SIMPLE_REFRESH
windows by putting a
‘SmartRefresh Off’ line in your ‘Startup.supdup’ file, and calling
SuperDuper
with the NoGUI
option (every window opened after the
command has been executed will be in the selected refresh mode). This line is
automatically inserted when you generate the startup file using the
SaveCon
gadget, so that you can directly edit it. See section The Startup File.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Help
returns in the result
variable the template of the given command. If
no command is specified, prints out a table with all commands and their
templates.
NOP
does nothing.
RX
executes an ARexx script or a one-line ARexx command (if its argument is enclosed in quotes).
Window
sets several parameters of SuperDuper
’s windows. The parameters are
applied to all the window listed (the possible window names are ‘Main’,
‘Info’ and ‘Options’). The syntax is self-explanatory. Note that
closing the main window from ARexx will not quit SuperDuper
.
Note also that the command is effective even if the specified window is
closed. This allows to set up all the position parameters of a window before
opening it in the startup file. See section The Startup File.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
The selected drive is not connected.
The disk.resource is not available.
Write
Read
Check
This pass is not the last one.
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.
The buffer is not valid.
A unit is empty.
A unit is write-protected, or there is a floppy format mismatch.
The start/end cylinders chosen are meaningless. This
can happen if the numbers are out of range, or (for a
RAM-buffered Write
) if there is no intersection with the
current buffer.
There were errors.
There were errors. Moreover, this pass is not the last one.
Someone munged the RAM buffer or the track buffer.
Talk
The voice system cannot be activated.
NoWB
The current window has been closed, but it was impossible to open the new one. The program exits in this case.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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 3 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 2, the destinations in drives 1 and 3, and then
/* DoubleCopy */ mode disk2disk source 0 dest 1 copy source 2 dest 3 copy
This will produce the two copies in a completely unattended way.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
SuperDuper
has been written for performance. In the following sections
we will review deeply the relations between SuperDuper
and the operating
system, and how they affect you.
3.1 SuperDuper and Your System | ||
3.2 SuperDuper and You | ||
3.3 SDBootInstall | ||
3.4 A Word on Copy Protection |
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
SuperDuper
and Your SystemSuperDuper
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).
You have however to be a little bit careful if you change the density type
of a drive while SuperDuper
is active (for instance, if you first
copy a double density and then a high density disk). In this case, when the
drives are given back to the operating system, the device drivers will get
completely confused, and they will still believe they are accessing a double
density disk. If you change the density type, you should eject all the
floppies before quitting SuperDuper
.
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).
You should avoid running SuperDuper
while a 16 color hi-res screen (or a
4-color ECS productivity mode screen) is displayed on an old or enhanced
chip set. 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.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
bad media in general).
Moreover, the 2.0 trackdisk.device has 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.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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:
preferences
, diskcopy
and format
are good candidates. Moreover, delete the file
‘Disk.info’.
SuperDuper
to the disk root directory (by dragging its icon on the
disk icon or using the CLI).
SetPatch >NIL: Run >NIL: <NIL: SD NoARexx EndCLI >NIL:
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).
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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 Dave Haynie’s DiskSalv
) for this purpose. On the other
hand, during buffered copies data block checksums will be silently fixed by
recalculating the right checksum.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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. Most of the design of the new GUI is due to Carlo Todeschini. Moreover, 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). Nicola Salmoria tracked some of the most hidden bugs, and suggested several relevant new features.
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^).
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
SuperDuper
is Copyright © 1991-1994 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@bix.com INTERNET: vigna@dsi.unimi.it UUCP: seba@sebamiga.adsp.sub.org
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Jump to: | A B C D E F G H I J K L M N P R S T V X Y Z |
---|
Jump to: | A B C D E F G H I J K L M N P R S T V X Y Z |
---|
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Jump to: | T |
---|
Index Entry | Section | ||
---|---|---|---|
| |||
T | |||
Talk | 1.5 Special Requesters | ||
|
Jump to: | T |
---|
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Jump to: | A C D S T |
---|
Jump to: | A C D S T |
---|
[Top] | [Contents] | [Index] | [ ? ] |
[Top] | [Contents] | [Index] | [ ? ] |
This document was generated on December 11, 2024 using texi2html 5.0.
The buttons in the navigation panels have the following meaning:
Button | Name | Go to | From 1.2.3 go to |
---|---|---|---|
[ << ] | FastBack | Beginning of this chapter or previous chapter | 1 |
[ < ] | Back | Previous section in reading order | 1.2.2 |
[ Up ] | Up | Up section | 1.2 |
[ > ] | Forward | Next section in reading order | 1.2.4 |
[ >> ] | FastForward | Next chapter | 2 |
[Top] | Top | Cover (top) of document | |
[Contents] | Contents | Table of contents | |
[Index] | Index | Index | |
[ ? ] | About | About (help) |
where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:
This document was generated on December 11, 2024 using texi2html 5.0.