SuperDuper

An Amiga Disk Copier

Version 3.13

Copyright © 1991-1994 Sebastiano Vigna

by Sebastiano Vigna

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1 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), the DMA access of the custom chips and the display features enabled.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 Changes

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] [ ? ]

1.2 Main Features

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] [ ? ]

1.3 The CLI and WB Options

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] [ ? ]

1.4 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: 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] [ ? ]

1.5 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. 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] [ ? ]

1.6 The Buffer File

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] [ ? ]

2 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.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1 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 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] [ ? ]

2.2 Selection Commands

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] [ ? ]

2.3 Miscellaneous Commands

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] [ ? ]

2.4 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.

Write
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, or there is a floppy format mismatch.

7

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.

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.

NoWB
20

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] [ ? ]

2.5 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 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] [ ? ]

3 Performance

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.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 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).

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] [ ? ]

3.2 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] [ ? ]

3.3 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 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 NoARexx
    EndCLI >NIL:
    
  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).

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 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 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] [ ? ]

4 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. 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] [ ? ]

5 Disclaimer and Author Info

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] [ ? ]

Concept 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  
Index Entry  Section

A
Acknowledgments 4 Acknowledgments
Address 5 Disclaimer and Author Info
ARexx 2 ARexx
Atkin Dennis 4 Acknowledgments

B
Babcock Dan 4 Acknowledgments
Barrans Dan 4 Acknowledgments
Battilana Michele 4 Acknowledgments
Buffer file 1.6 The Buffer File

C
Calzolari Vittorio 4 Acknowledgments
Changes 1.1 Changes
CLI options 1.3 The CLI and WB Options
Cooper Jim 4 Acknowledgments
Copy protection 3.4 A Word on Copy Protection
CPU usage 3.1 SuperDuper and Your System

D
Disclaimer 5 Disclaimer and Author Info
Distribution 5 Disclaimer and Author Info
DMA contention 3.1 SuperDuper and Your System
Drive inhibition 3.1 SuperDuper and Your System

E
Erdely Doug 4 Acknowledgments
Error reproduction 3.4 A Word on Copy Protection
e_mail 5 Disclaimer and Author Info

F
Fair Charlie 4 Acknowledgments
Features 1.2 Main Features

G
Gardner Blaine 4 Acknowledgments

H
High density floppies 3.1 SuperDuper and Your System

I
IFF 1.6 The Buffer File
Introduction 1 Introduction

J
Jenks Robert 4 Acknowledgments
Jesup Randell 4 Acknowledgments
Jones John 4 Acknowledgments

K
Kalnasy Kent 4 Acknowledgments
Kesterson Robert 4 Acknowledgments
King Paul 4 Acknowledgments

L
Low memory 1.3 The CLI and WB Options

M
Menzer Randy 4 Acknowledgments
Munson Linda 4 Acknowledgments

N
NoGUI 1.3 The CLI and WB Options
NoStartup 1.3 The CLI and WB Options

P
Performance 3 Performance
Public screen 1.3 The CLI and WB Options

R
Recalibration requester 2.2 Selection Commands
Refresh mode 2.2 Selection Commands
Reisig Dirk 4 Acknowledgments
Repetto Davide 4 Acknowledgments
Requesters 1.5 Special Requesters
Return codes 2.4 Return Codes
Rokicki Tom 4 Acknowledgments
Ruocco Sergio 4 Acknowledgments

S
Santagostino Carlo 4 Acknowledgments
Spisser Reinhard 4 Acknowledgments
Startup file 1.3 The CLI and WB Options
Startup file 1.4 The Startup File

T
Timing bits 3.2 SuperDuper and You
Timings 1 Introduction
Todd Jeff 4 Acknowledgments
Todeschini Carlo 4 Acknowledgments

V
Velez Michael Scott 4 Acknowledgments

X
Xpk 1.1 Changes

Y
You 3.2 SuperDuper and You

Z
Zandonadi Marco 4 Acknowledgments

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] [ ? ]

Gadget Index

Jump to:   T  
Index Entry  Section

T
Talk 1.5 Special Requesters

Jump to:   T  

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Program Index

Jump to:   A   C   D   S   T  
Index Entry  Section

A
AmigaTeX 4 Acknowledgments

C
CheckAll.supdup 2.5 What Can I Do with ARexx?

D
DiskCopy 3.2 SuperDuper and You
DoubleCopy.supdup 2.5 What Can I Do with ARexx?

S
SDBootInstall 3.3 SDBootInstall
Startup.supdup 1.3 The CLI and WB Options

T
ToggleClick 3.1 SuperDuper and Your System
TurboBackup 4 Acknowledgments

Jump to:   A   C   D   S   T  

[Top] [Contents] [Index] [ ? ]

Table of Contents


[Top] [Contents] [Index] [ ? ]

About This Document

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.