CopyDisk




CopyDisk is a program for copying entire disk packs.  It will copy from
one drive to another on the same machine, or between drives on separate
machines via a network.



1. History


The  first Alto  CopyDisk  was called  Quick  and was  written  by Gene
McDaniel in 1973.   During the summer of  1975 Graeme Williams  wrote a
new CopyDisk adding the ability to copy disks over the network.  During
the  summer of  1976 David  Boggs redesigned  the network  protocol and
added the  ability to copy  Trident disks.  In  the spring of  1980 the
network protocol was extended  to speak to CopyDisk servers  in Interim
File  Systems  (and  eventually Tape  servers).   The  CopyDisk network
protocol is specified in <Pup>CopyDisk.press.



2. Concepts and Terminology


In a disk copy operation, the information on a 'Source' disk  is copied
to a  'Destination' disk,  destroying any  previous information  on the
destination.  A copy operation usually consists of two steps:

     [Copy] Step one  copies bit-for-bit the information  from the
     source disk to the destination disk.

     [Check] Step two reads  the destination disk and  checks that
     it  is indentical  with the  source disk.   This step  can be
     omitted at the user's peril.

Copying a disk from one  machine (or 'host') to another over  a network
requires the  active cooperation  of programs on  both machines.   In a
typical scenario,  a human  user invokes a  program called  a 'CopyDisk
User' and directs it to  establish contact with a 'CopyDisk  Server' on
another machine.  Once contact has been established, the  CopyDisk User
initiates  requests  and  supplies  parameters  for  the   actual  copy
operation which the User and  Server carry out together.  The  User and
Server roles differ  in that the CopyDisk  User interacts with  a human
user  (usually  through  some  keyboard  interpreter)  and   takes  the
initiative  in User/Server  interactions, whereas  the  CopyDisk Server
plays a comparatively passive  role.  The question of which  machine is
the CopyDisk User  and which is the  CopyDisk Server is  independent of
the direction in which data moves.

The  Alto  CopyDisk  subsystem  contains both  a  CopyDisk  User  and a
CopyDisk Server, running as independent processes.  Therefore to copy a
disk  from one  machine to  another you  should start  up  the CopyDisk


                             ------------
                   Copyright Xerox Corporation 1980


CopyDisk                   November 12, 1980                          2




subsystem on both machines and then type commands to one of them, which
becomes  the  CopyDisk  User.   Subsequent  operations  are  controlled
entirely from the User end, with no human intervention required  at the
Server machine.  This  arrangement is similar to  the way the  Alto FTP
subsystem works, and different from the way the older CopyDisk worked.



3. Calling CopyDisk


CopyDisk can be  run in two modes:  interactive mode in  which commands
come from the keyboard, and non-interactive mode in which commands come
from the command line (Com.cm).   The general form of the  command line
to invoke CopyDisk looks like:

  CopyDisk [ [/<option switches>] [from] <source> [to] <destination>]

The  square  brackets denote  portions  of the  command  line  that are
optional and may be omitted.   If you just type "CopyDisk"  the program
goes into interactive mode, otherwise the remainder of the command line
must be a complete description of the desired operation.


3.1. Option Switches

Each option switch has a default  value which is used if the  switch is
not  explicitly set.   To set  a switch  to 'false'  proceed it  with a
'minus' sign (thus CopyDisk/-C  means 'no checking').  To set  a switch
to 'true' just mention the switch.

Switch   Default   Function

/4       false     [Model44] tells  CopyDisk to  copy an  entire Diablo
                   model 44, without asking for confirmation.

/C       true      [Check]  tells CopyDisk  whether to  check  the copy
                   operation.  CopyDisk/-C, which omits the check step,
                   is faster but more risky.

/W       true      [WriteProtect] prevents the CopyDisk  network Server
                   from writing  on a  local disk.   So unless  you say
                   CopyDisk/W  or   issue  the   WRITEPROTECT  command,
                   someone  can  make  a copy  of  your  disk  over the
                   network,   but   no   one   can    (maliciously   or
                   accidentally) overwrite it.

/R       true      [Ram] tells CopyDisk to attempt to load the ram with
                   some microcode which speeds things  up considerably.
                   CopyDisk will still  work, though more slowly  if it
                   can't load the ram.

/D       false     [Debug]  enables  extra  printout  that   should  be
                   interesting only to CopyDisk maintainers.

/A       false     [AllocatorDebug] enables extra consistancy checks in
                   the free storage allocator.


CopyDisk                   November 12, 1980                          3




3.2. Source and Destination Syntax

The general form of a source or destination disk name is:

                         [Host-name]Disk-name

for  example "[Boggs]DP0".   Ordinarily 'host  name' can  be  a string,
e.g.,  "Boggs".  Most  Altos have  names which  are registered  in Name
Lookup Servers.  So long as a name lookup server is available, CopyDisk
is able to obtain the information necessary to translate a host name to
an  inter-network  address  (which  is  what  the   underlying  network
mechanism uses).  You may omit the host name for disks attached  to the
local machine.

If the host name of the Server machine is not known, you may specify an
inter-network  address in  its place.   The general  form of  an inter-
network address is:

                     <network> # <host> # <socket>

where  each of  the three  fields is  an octal  number.   The <network>
number designates  the network  to which the  Server host  is connected
(which  may  be  different from  the  one  to which  the  User  host is
connected); this (along with the "#" that follows it) may be omitted if
the Server and User are known to be connected to the same network.  The
<host> number designates the  Server host's address on  <network>.  The
<socket>  number designates  the actual  Server process  on  that host;
ordinarily  it should  be  omitted, since  the default  is  the regular
CopyDisk server socket.  Hence to specify a CopyDisk server  running in
Alto host number 241 on the directly connected network, you  should say
"241#" (the trailing "#" is required).

The  'disk-name' is  interpreted by  the CopyDisk  program on  the host
where the disk is.  This program knows how to copy two types  of disks,
which should be referred to by the following names:

     DPn           Diablo  disk  unit 'n'.   Most  Altos  have one
                   Diablo disk called 'DP0'.

     TPn           Trident disk unit 'n'.  The unit number must be
                   in the range 0-7.

In addition, you may tell  CopyDisk to copy an entire Alto  file system
by referring to it by the name 'BFS', (for Basic File System,  which is
the name of the software package that implements it).  If you  use this
name rather than 'DP0' or whatever, you won't have to  answer questions
such as whether  the disk is a  model 31 or a  model 44.  Best  of all,
CopyDisk can  detect that its  a double-disk file  system, and  it will
copy both disks automatically.

When you  are copying through  the network to  another random  Alto (as
opposed to say, an IFS or a Tape server), you are presumably talking to
another instance  of this  program, so  you use  the above  syntax when
referring to its disks.

When you are copying to an  IFS, which keeps disk images in  files, the
disk-name is an IFS file  name, and must conform to  IFS's conventions.
If you  copy a double  disk filesystem referring  to it as  'BFS', then
CopyDisk will create one file containing both disk images.


CopyDisk                   November 12, 1980                          4




Fine point for Dorado  and D0 users: 'DP0'  and 'DP1' refer to  units 0
and 1 in the current partition.  'DP10' and 'DP11' refer to units 0 and
1  in partition  1  regardless of  the current  default  partition; and
similarly for 'DP20'  and 'DP21'.  'BFS' and  'BFS0' refer to  the Alto
filesystem  in  the  current partition;  'BFS1'  to  the  filesystem in
partition 1, etc.



4. The CopyDisk display


CopyDisk  displays a  title line  about one  inch from  the top  of the
screen, and below  that the main  display window, which  consumes about
half of the screen.  The main  window is shared by the User  and Server
processes, only one of which is active at any time.  The  process which
currently owns the  window identifies itself at  the right side  of the
title line.  The title also  shows the release date of the  program and
the Alto's  name.  When a  copy operation is  in progress,  the current
disk address is displayed in the area above the title line.

When CopyDisk is started, the  User is listening for commands  from the
keyboard and the Server is listening for connections from  the network.
If you start typing commands,  the User takes over control of  the main
window ('User' appears near the right end of the title line),  and your
commands and their responses  are displayed there.  The  Server refuses
network  connections while  the User  is active.   If  another CopyDisk
program connects to  the Server, the Server  takes over control  of the
main window ('Server'  appears near the right  end of the  title line),
and  the Server  logs  its activity  there.  The  User  ignores type-in
(flashing the screen if any keys are typed) while the Server is active.



5. Keyboard Command Syntax


CopyDisk's interactive  command interpreter  presents a  user interface
very similar to that of  the Alto FTP subsystem.  The  standard editing
characters, command recognition  features, and help facility  (via "?")
are available.


5.1. Keyboard Commands

COPY
     Starts  a dialog  to gather  the information  for copying  a disk.
     CopyDisk first asks for the name of the source disk  by displaying
     "Copy from".  If the disk is local, it makes sure it is  ready; if
     the disk is on another machine, it opens a connection and asks the
     remote machine  if the disk  is ready.  If  you want to  abort the
     connection attempt, hit the middle unmarked ('Chat') key.   If the
     source disk  is ready,  CopyDisk prompts  you for  the destination
     disk by displaying  "Copy to", and then  checks that that  disk is
     ready also.  Next, it verifies that the disks are  compatible, and
     depending on the  disk type, may  ask some questions  about things
     peculiar to that disk (such  as "Do all of the model  44?").  Then
     CopyDisk  asks  you to  confirm  your intention  to  overwrite the
     destination disk.  If you change your mind, type 'N'  or <delete>.


CopyDisk                   November 12, 1980                          5




     If  you  respond  yes,  CopyDisk will  pause  for  a  few seconds,
     ignoring the  keyboard, and  then ask you  to confirm  once again.
     Type-ahead does  not work for  this second confirmation.   This is
     your last chance to look at  the disks and make sure that  you are
     not overwriting the wrong  one.  It happens!  This feature  was in
     the original CopyDisk, was left out of the second version,  and is
     back in this third version by popular demand from the  many people
     who made that fatal mistake.

QUIT
     Terminates CopyDisk.  One of three things happens:

          The Alto Exec is restarted if DP0 is ready, and  has not
          been written on, and if CopyDisk was not booted from the
          net.

          DP0 is booted if it is ready but has been written  on or
          if CopyDisk was booted from the net.

          NetExec is booted from the net if DP0 is not ready.

     All  of this  is attempting  to leave  the Alto  running something
     useful.  If the disk in  DP0 does not have an operating  system on
     it when CopyDisk quits, the disk boot (option 2, above) will fail.
     This will not hurt the disk, but you will have to boot manually.

HELP
     Displays a rather terse summary of how to use the program.

LOGIN
     Supplies any login parameters required by the remote server before
     it will permit copy  operations.  CopyDisk will use the  user name
     and password in the Operating System if they are there (they won't
     be if  CopyDisk is  booted from the  net).  Logging  into CopyDisk
     will set the user name and password in the OS (in the  same manner
     as the  Alto Executive's  "Login" command.   This command  is only
     meaningful  when copying  to  or from  an IFS;  the  Alto CopyDisk
     server ignores login parameters.

     When you issue the LOGIN command, CopyDisk will first  display the
     existing user  name known  to the OS.   If you  now type  a space,
     CopyDisk will prompt  you for a password,  whereas if you  want to
     provide a  different user  name, you should  first type  that name
     (which will replace  the previous one)  followed by a  space.  The
     command may be terminated by a carriage return after  entering the
     user name to omit entering a password.

     Ther  parameters are  not  immediately checked  for  legality, but
     rather are  sent to  the server  for checking  when the  next copy
     command is issued.  If a command is refused by the  server because
     the name or password is incorrect, CopyDisk will prompt you  as if
     you had issued the LOGIN command and then retry the command.

CONNECT
     Requests  the  remote  CopyDisk server  to  'connect'  you  to the
     specified directory on the remote system, i.e., to give you owner-
     like access to it.  The password may be omitted by typing carriage
     return after the directory name.  As with LOGIN,  these parameters
     are not verified until the next transfer command is  issued.  This


CopyDisk                   November 12, 1980                          6




     command is  only meaningful when  copying to or  from an  IFS; the
     Alto CopyDisk server ignores connect requests.

PARTITION
     This command is only available on D0s and Dorados.  It prompts you
     for a partition  number (for D0s in  the range 1-2 for  Dorados in
     the range 1-5), and sets the default partition.  It supplies  as a
     default the current  partition number, so  you can find  out where
     you are by saying 'Partition' and then typing carriage return.

CHECK
     Toggles the switch which controls whether a disk is  checked after
     copying.  CopyDisk displays "on"  if checking is now  enabled, and
     "off" if it is now disabled.

DEBUG
     Toggles  the  switch  which  controls  the  display  of  debugging
     information.  The  performance data presented  at the end  of this
     document  is  part  of  the  debugging  information;  the  network
     protocol interactions are displayed when this switch is set also.

WRITEPROTECT
     Toggles the  switch which  allows the network  Server to  write on
     local  disks.  The  default is  that people  can't  overwrite your
     disk.

COMPRESS
     Toggles the switch which suppresses the transmission  and checking
     of the data records  of free pages.  This can  significantly speed
     up network  copies and reduce  the size of  disk images  stored on
     IFSs.  The default is to compress.

COMPARE
     Compares  two  disks.  The  dialog  is very  similar  to  the COPY
     command.  Neither disk is ever written.  This is useful  to verify
     the health of your disk drive (but remember that it does not check
     the write logic).



6. Command Line Syntax


CopyDisk can  also be controlled  from the command  line.  If  there is
anything in the command line except "CopyDisk" and global switches, the
command line interpreter is started instead of the interactive keyboard
interpreter.  Its operation is most easily explained by examples:


6.1. Command line examples

To copy DP0 to DP1:

     CopyDisk from DP0 to DP1

Note that 'from' and 'to' are optional (though stongly  recommended for
clarity), and one or both may be omitted or abbreviated:

     CopyDisk DP0 t DP1


CopyDisk                   November 12, 1980                          7




is equivalent, though less obvious.

To copy  the Basic  non-programmer's disk from  host 'Boggs'  (which is
running CopyDisk) onto a disk in your own machine:

     CopyDisk from [Boggs]DP0 to DP0

or, equivalently:

     CopyDisk from [3'#241'#]DP0 to DP0

The single quotes are necessary to  keep the #s out of the  clutches of
the Alto Exec.  The quotes  are not needed when typing to  the keyboard
interpreter.  Note that no spaces are allowed between the host name and
the device name.

If the command line interpreter runs into trouble, it displays an error
message and then starts the interactive interpreter.



7. Disk Errors


Disk errors are termed  'soft' or 'hard' depending on  whether retrying
the operation  corrects the  difficulty.  If  CopyDisk is  still having
trouble after  many retries, it  displays a message  of the  form "Hard
error at DPn: cyl xxx hd y sec zz" in the main window and moves on.

Soft errors are not reported unless the debug switch is true, so as not
to alarm users.  Their  frequency depends on several  factors.  Copying
over the network will cause  more soft errors then copying  between two
disks on the same machine.  Alto IIs get many more errors then Alto Is.

During  the Check  pass, in  addition to  soft and  hard  errors, 'data
compare' errors are also possible.  A data compare error means that the
corresponding  sections of  the source  and destination  disks  are not
identical.  If any  hard errors have  been reported, then  data compare
errors are  likely, otherwise  getting data  compare errors  means that
something is very wrong.  You should suspect the Alto.

Hard errors  and data compare  errors are serious,  and you  should not
trust the copied pack  if any are reported.   If the errors are  on the
source  disk, try  Scavenging  it.  Bear  in  mind that  there  is some
variance in alignment  among disk drives, and  that a pack  which reads
fine on one drive may have trouble on another.  Is the source disk in a
different drive than  where it is  normally used?  Before  allowing the
Scavenger to rewrite sectors, consider that the pack may be OK, but the
drive it is  in may be  out of alignment.   In this case,  allowing the
scavenger to rewrite the sectors is  a bad idea.  If the errors  are on
the destination disk, try the copy again, and then suspect the  pack or
the disk drive  itself.  If the destination  pack was much  colder than
the temperature  inside the  drive, sectors written  early in  the copy
pass may read incorrectly during  the check pass.  It's a good  idea to
wait a few minutes for  the pack to reach normal  operating temperature
before using it.


CopyDisk                   November 12, 1980                          8




8. Creating a new disk


Suppose you  want to  make a  new disk  by copying  one of  the 'Basic'
disks.  There are three major ways to do this:

     Put a blank disk in  your Alto, and copy the basic  disk from
     an IFS.  This is called the 'IFS copy' method.

     Find an Alto with two disk drives and put a basic disk in one
     drive and  a blank  disk in  the other.   This is  called the
     'double disk copy' method.

     Find two Altos, each with one drive, that are connected  by a
     network and put a basic disk in one Alto and a blank  disk in
     the other.  This is called the 'network copy' method.

Having decided on one of  the above methods, you must now  get CopyDisk
running on the Alto(s).  There are two major ways to do this:

     Start CopyDisk from a disk which has 'CopyDisk.run' on it.

     Boot CopyDisk over the network from a 'Boot Server'.


8.1. Starting CopyDisk from another Disk

If you do  not have access  to a Boot  Server, you must  start CopyDisk
from a disk that has it on it.  Put a disk with CopyDisk on it into the
Alto  and type  "CopyDisk<return>".  Then  switch disks.   BE CAREFUL!!
People sometimes forget to switch disks at this point  and accidentally
copy the  wrong one.   This is why  CopyDisk asks  you to  confirm your
intentions so many times.


8.2. Booting Copydisk from the net

The best way to  start CopyDisk is to  boot it from the  network.  That
way you are more  likely to get the  latest version, and you  avoid the
pitfall mentioned above.  Of course, you must have network access  to a
Boot Server.  Most Gateways have Boot Servers.  If this  method doesn't
seem to  work, you  will have to  fall back  to starting  CopyDisk from
another disk.

Hold down the <BS> and  <Quote> keys while pressing the boot  button on
the Alto.  You must continue to hold down <BS> and <Quote> (but  let go
of the boot button!) until a small square appears in the middle  of the
screen.  This can  take up to 30  seconds, but usually happens  in less
than  5  seconds.   You  are  now  taking  to  the  NetExec   (see  the
documentation in  the Subsystems  manual if you  are curious),  and you
should type "CopyDisk<return>".  The  screen will go blank,  the little
square will  appear again (you  don't have to  hold down any  keys this
time), and soon CopyDisk should appear on the screen.


8.3. The IFS Copy Method

Put a blank disk in  DP0.  Type "Copy<space>", and when it  says "from"
type a name of  the form: [IFS-name]File-name, where 'IFS-name'  is the


CopyDisk                   November 12, 1980                          9




name of your local  IFS (such as 'Ivy', which  is the name of  my IFS),
and 'File-name'  is the name  of the  file on which  the basic  disk is
kept.  This may be installation-dependent; here at Parc the  basic non-
programmers disk is called '<BasicDisks>NonProg.disk', so to get a copy
of  that  disk  I  would  type  "[Ivy]<BasicDisks>NonProg.disk".   When
CopyDisk says  "Copy to" type  "DP0<return>".  Then type  <return> each
time it  asks for confirmation.   Some numbers will  appear in  the top
center of  the screen.   When they disappear,  CopyDisk is  done.  Type
"Quit<return>".  It will  boot the disk,  and you should  find yourself
talking to the Alto Exec.


8.4. The Double-Disk Copy Method

Put  the  basic  disk  in   DP0  and  put  your  disk  in   DP1.   Type
"Copy<space>", and when it says "from" type DP0<return>.  When  it says
"Copy to", type  "DP1<return>".  Then type  <return> each time  it asks
for confirmation.  Some  numbers will appear in  the top center  of the
screen.  When they  disappear, CopyDisk is done.   Type "Quit<return>".
Put the basic disk back where it belongs, and take your disk with you.


8.5. The Network Copy Method

It doesn't  matter which Alto  you type commands  to.  Assume  that the
basic disk is in the Alto called "Tape-Controller", your disk is in the
Alto  called "Myrddin"  and you  are going  to type  commands  to Tape-
Controller.   Type  "Copy<space>",   and  when  it  says   "from"  type
"DP0<return>".  When  it says  "Copy to",  type "[Myrddin]DP0<return>".
Then type <return>  each time it  asks for confirmation.   Some numbers
will appear  in the  top center  of the  screen.  When  they disappear,
CopyDisk is done.  Type "Quit<return>", and put the basic disk  back in
the rack.   Go to Myrddin  and type "Quit<return>".   It will  boot the
disk, and you should find yourself talking to the Alto Exec.



9. Performance


This  section  calculates  the  times  to  copy  disks  under different
conditions.  CopyDisk times its operations and displays the  results if
the debug switch  is set, so you  can compare the numbers  derived here
with reality.


9.1. TSweep

First, we calculate TSweep, the  time to read or write a  disk assuming
that we can  consume or produce data  faster than the disk.   This best
possible case  is the sum  of two  terms.  The first  term is  the time
necessary to sweep an active  read/write head over every sector  on the
disk:
                          Rot * nCyl * nHds.

The second term  is the time lost  while seeking to the  next cylinder.
We assume that these seeks take less than one rotation but that a whole
rotation is lost:
                              Rot * nCyl.


CopyDisk                   November 12, 1980                         10




Combining, we get:
                    TSweep = Rot * nCyl * (nHds+1).

where:   Rot is the rotation time of the disk in seconds
         nCyl is the number of cylinders, and
         nHds is the number of heads.


9.2. Disk-To-Disk Copy

By disk-to-disk copy  we mean copying from  one disk to another  on the
same machine, using a single controller and not overlapping seeks.  The
fastest way to do this is  to read the entire source disk  into memory,
switch to the destination disk, and then write it all.  The switch from
the source  to the destination  disk, will lose  on the average  half a
revolution while waiting for the  right sector on the new disk  to come
under a head.   Neglecting the switch time  which is small  compared to
the other two  terms, the best possible  disk-to-disk copy time is  2 *
TSweep.

With limited memory,  the best we can  do is fill all  available memory
buffers  reading the  source disk,  switch disks,  write them  onto the
destination disk, and then switch  back to the source disk  for another
load.  In this case we can't ignore the switch time, which is the total
number of sectors on the  disk divided by the number of  sector buffers
times the rotation time of the disk:

                    Rot * (nCyl * nHds * nSec)/nBuf

where    nSec is the number of sectors per track, and
         nBuf is the number of memory buffers.

So the disk-to-disk copy time, TDDCopy, is:

        TDDCopy = 2 * TSweep + Rot * (nCyl * nHds * nSec)/nBuf


9.3. Net Copy

By  net copy  we mean  copying from  a disk  on one  machine  through a
network  to  a  disk  on  another  machine.   In  this  case  the  disk
controllers can  be going  in parallel, and  the factor  of two  in the
first term of  TDDCopy vanishes.  In additon,  if the bandwidth  of the
network connection  is higher than  the transfer rate  of the  disks so
that as soon as a  sector is read from the  disk it is sent out  of the
machine, the memory limitation goes away and the second term of TDDCopy
vanishes.

The CopyDisk network protocol sends a small amount of information along
with each  sector which must  be factored into  the calculation  of the
bandwidth  needed  to run  without  memory limitation.   Note  that the
bandwidth we are concerned with  here is that perceived by a  client of
the  network services:  user data  bits per  second, not  raw  bits per
second through the network hardware.

If the network is slower than  the disks, then the time to copy  a disk
is the time  required to transmit  all of the bits  on a disk  plus the
protocol overhead bits:

           TNetCopy = nCyl * nHds * nSec * (sB + sOv)/bwNet


CopyDisk                   November 12, 1980                         11




where    sB is the bits of disk information per sector,
         sOv is the CopyDisk protocol overhead per sector, and
         bwNet is the bandwidth of the network connection.

The bandwidth of the network  connection is hard to state,  and depends
on a number of factors.  Here are a few:

     Reduction  of the  emulator's  instruction execution  rate  due to
     interference from the disk and network hardware.

     Reduction of the  amount of the  emulator cycles available  to the
     network and disk code due to mutual interference.

     Reduction of  the peak network  bandwith due to  interference from
     other hosts on the network.

The minimum network bandwith required to copy a disk at full speed is:

        MinBwNet = 16 * nCyl * nHds * nSec * (sB + sOv)/TSweep.


9.4. The Numbers for Altos

Here are  the relevant  numbers for  the disks  which this  program can
copy:

              Diablo-31      Diablo-44      Trident-80     Trident-300

Rot (ms)      40             25             16.66          16.66
nCyl          203            406            815            815
nHds          2              2              5              19
nSec          12             12             9              9

sB            266            266            1036           1036
sOv           2              2              2              2
nBuf          80             80             18             18


9.5. Reality

Here are the  results of plugging the  numbers into the  equations, and
comparing   them   against   actual   measurements.    The   format  is
predicted(measured).  NA means not available.

              Diablo-31      Diablo-44      Trident-80     Trident-300

TSweep        0:24           0:30           1:21           4:32
TDDCopy       0:51(0:51)     1:04(1:16)     3:18(3:31)     11:20(19:27)
TNetCopy      (1:05)         (2:16)         (26:31)        (NA)

bwNet         (323 Kb/s)     (308 Kb/s)     (383 Kb/s)     (NA)
MinBwNet      859 Kb/s       1.375 Mb/s     7.520 Mb/s     8.509 Mb/s



10. Revision History


August 7, 1977


CopyDisk                   November 12, 1980                         12




First relese.

August 28, 1977

Soft errors are only reported if the debug switch is set.  Data compare
errors now display the offending disk address.  VERIFY and WRITEPROTECT
commands added to  keyboard command interpreter.  Write  protect global
switch added.

October 16, 1977

More microcode to speed things up

October 27, 1977

Bug fixes.

December 18, 1977

Fixed a bug which  prevented it from copying  the second half of  a two
disk file system.  The network format for Diablo disks changed.

March 22, 1978

CopyDisk  will  now do  the  right thing  for  "[thisHost]device".  The
default value of WRITEPROTECT is now TRUE.

October 27, 1978

Internal reorganization -- no external changes.

December 12, 1978

Fix bug in Copying T-300s.

September 10, 1979

Reload with current packages.

April 26, 1980

Network protocol extended  to speak to  IFSs.  Much internal  work, but
very little visible change.  PARTITION and HELP commands added.  VERIFY
command renamed COMPARE

November 12, 1980

BFS protocol extended to handle multiple disk file  systems.  Referring
to  a  file  system  as  'BFS'  will  cause  both  disks  to  be copied
automatically.  CopyDisk now works on Shugarts emulating Tridents.