Compare/Command(s) DIRectory list
---------------------------------
CCDIR shows files and subdirectories like DIR, but in TWO separate directory
trees!  It's not terribly useful between two completely different trees, but
is VERY useful to compare/update two nearly identical trees (such as one you
keep as a backup of an active tree).

Also, unlike DIR - CCDIR tree views are interactive, you can easily move
between branches of the tree(s) and issue common commands on the files and
subdirectories contained within.

Each view shows the content of the two correspondine directories in tree#1 and
tree#2. The full path to the #1 directory is shown at the top of the screen,
and the #2 directory at the bottom of the screen.


SubDirectories may be identified by the absense of dates/times.
They may have the following indicators at the start of each line:
    <   Exists only in tree#1
    >   Exists only in tree#2
    !   May contain differences     *1
        *1  Due to a technique I use to avoid having to store (and search for)
            each individual directory pathname (which could be LOTS of entries
            for large trees), please note the following:
                Actual differences will ALWAYS be indicated.
                Differences *may* be indicated where none exist.
        Also note that "differences" means Size and/or Timestamp.
        Unless you used the '-Test' option, CCDIR does NOT verify that the
        content of such files are the same!

Files can be identified by the presense of at least one date/time.  These are
shown as blanks if the file does not exist in either tree#1 or tree#2.
They may have the following indicators at the start of each line:

    !   Sizes (or content with -T) are different
    <   TimeStamp is earlier    *2
    >   Timetamp is later       *2

*2  Timestamps for COPYed files should be exactly the same, however Windows
    doesn't quite "get it right", I often see copies of files having a time
    differing from the original by a few seconds.  Likely due to conversion
    to/from UTC .. This is then reason for the "-Dn" command line option.

    If you are using DOSBOX, note that timestamps cannot be changed (and
    therefore preserved when files are copied). DosBox INT 21h, function
    5701h (set timestamp) reports that it works, but the timestamp for the
    file is NOT changed!  For this reason timestamps will always differ on
    files copied by any means within  DOSBOX.


Various commands can be executed on the selected files and subdirectories,
press '?' for interacive help which shows the commands available:


Setting commands:
-----------------
The commands which CCDIR can perform are "baked in" to CCDIR executable and
can be changed with my ESP (Executable String Patch) utility.

You can also specify them using the "-1command" to "-0command" options on the
command line.

Each command you set MUST begin with the character to be typed to select this
command interactively (which MUST be UPPER case if A-Z).

If the second character is '.', it identifies this command as one which is to
be applied to DIRECTORIES - otherwise it applies to FILES!

The followind special character may be used. Note that '~' is an ESCAPE
character, use "~~" to insert a single '~':

    -n  ESP
    -------
    ~E  F0      Causes command to be executed by "exec()" and marks     *3
                the point separating command name and arguments.
    ~D  F1      "" only if running CCDIR.DVM, otherwise becomes ' '     *3
    ~{  F2      Insert full path in tree#1
    ~}  F3      "" in tree#2
    ~?  F4      Prompt for path in tree#1 -or- tree#2 and insert        
    ~N  F5      Insert filename only (no path)
    ~C  F6      Always Confirm this command, even when -C option
    ~_          becomes ' '     \
    ~[          "" '<'           >  These are characters which can be
    ~]          "" '>'           >  difficult to enter on the command
    ~!          "" '|'           >  line.
    ~-          "" '='          /


*3  exec() has less overhead but requires the full executable file path, and
    does not support "shell" operators like redirection and pipes ("<>|").
    It is important/useful with the .DVM version of CCDIR because exec() runs
    a .DVM within the current virtual machine, but shell() passes the command
    back to the host system.
