home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
mbug
/
mbug144.arc
/
ACOPY30.LBR
/
ACOPY30.DYC
/
ACOPY30.DYC
Wrap
Text File
|
1990-02-17
|
22KB
|
499 lines
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* A C O P Y *
* *
* An Enhanced ZCPR3-Compatible *
* File Copy Utility *
* *
* Copyright (c) 1986-90 *
* by *
* Terry Hazen *
* 21460 Bear Creek Road *
* Los Gatos, CA 95030 *
* *
* Voice.......... (408) 354-7188 *
* Saratoga RBBS.. (408) 354-5934 *
* Zee-Machine.... (408) 245-1420 *
* Ladera Znode... (213) 670-9465 *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Lastest Revision
----------------
Version 3.0 - 02/16/90 Adds source and destination disk
directory caching in RAM for faster copying, two new options
Should now run under CP/M 3.0. See ACOPY30.HIS for revision
history.
=================================================================
Overview
--------
ACOPY (Attribute COPY) is an enhanced Z80 file copy utility for
use with CP/M 2.2 or 3.0, or ZCPR3 CCP's running under CP/M 2.2,
CP/M 3.0, Z80DOS, ZRDOS, ZSDOS/ZDDOS and other extended DOS's.
ACOPY, originally based on David Jewett, III's PPIP12, was
developed as a fast, general purpose file copy utility with
flexible command line option control over many aspects of the
copy process, and more specifically to help simplify the command
line script required to copy groups of files with unrelated names
to a RAM disk. It does this by optionally copying only those
files that have any of the specified filename attributes (the
high bits of the filename and filetype bytes) F1 through F7 set.
Filename attributes may be set using the ZRDOS utility SFA (Set
File Attributes) or a similar CP/M Public Domain utility such as
DA. Another option allows copying only directory and not system
files. See the 'Options' section for information on the rest of
ACOPY's command line options.
ACOPY automatically supports DOS datestamping when it operates
under CP/M 3.0, Z80DOS or ZSDOS. See the 'DOS Datestamping'
section for more information.
ACOPY is fully ZCPR3 compatible when operating in a ZCPR3
environment, accepting both the DIR: and DU: forms and checking
the environment for the validity of the drive and user specified,
whether it is to be operating in a quiet environment and the name
the program was called by for use in the command line HELP
message. ACOPY will operate using the ZCPR3 GO command. Errors
will cause the ZCPR3 program error flag to be set.
When ACOPY operates in a non-ZCPR3 environment, the required
information is obtained from internal locations, which may be
patched to suit your system as described in the file ACOPY.PAT.
ACOPY will not accept the DIR: form when operating in a non-ZCPR3
environment.
Disk Directory Caching
----------------------
ACOPY30 adapts the ideas developed by Hal Bower in his SPEEDUP
disk directory buffer RSX to cache both source and destination
disk directories in RAM for extra fast copying. All references
to source and destination disk directory entries, up to a maximum
of 256 entries per directory, are made to the cached RAM copies,
eliminating the time required to move the disk drive head to the
directory track, read the required directory record and then move
the head back each time a directory reference is required. All
references to directory entries not in the RAM cache are made to
the physical disk directories as usual. When the copy process is
completed, all changed cached source and directory directory
records are then written back to the appropriate disks.
While actual file copying times are very hardware and system
dependent, directory caching can significantly improve copying
speeds, especially when using floppy disks. ACOPY30 performed a
specific 18 file/204k floppy disk file copy test 43% faster than
ACOPY22, 34% faster than ACOPY22 running under SPEEDUP and 31%
faster than ACOPY22 while doing datestamping under ZSDOS. See
ACOPY30.HIS for more test information.
Installation
------------
The distribution version of ACOPY is supplied with a Z3ENV
address of 0000H, ready for use in ZCPR 3.3+ environments. ZCPR
3.0 users should install ACOPY using their regular installation
methods.
No installation is required for operation in non-ZCPR3
environments. However, several locations affecting program
operation may be patched as described in the file ACOPY.PAT,
although the default values should be satisfactory for most
users.
Syntax
------
ACOPY supports the use of both CP/M (destination=source) and MS-
DOS (source destination) syntax. The command line syntax is:
ACOPY [dir:]source [[dir:]dest] [excluded] [/option(s)]
or ACOPY [[dir:]dest=][dir:]source [excluded] [/option(s)]
Both
A0>acopy filename.typ b11:
and A0>acopy b11:=filename.typ
will copy the file FILENAME.TYP from A0 to B11.
When only one filename is given, it assumed to be the source
file, and will be copied to a destination file of the same name
on the logged drive. For example:
B11:SAMPLE>acopy work:filename.ext
will copy the source file WORK:FILENAME.EXT to a file of the same
name on B11:SAMPLE.
Excluding Files
---------------
You may sometimes wish to copy a group of files specified by a
filename/attribute mask which also includes some files you don't
want copied. You can optionally add a third filename mask to
specify files that you wish to exclude from copying, even if they
otherwise match the source file specification. Note that if you
choose to specify it, the exclusion filename must be the THIRD
FILENAME specified. The exclusion filename is a filename mask
only, and any drive/user specified will be ignored.
In situations where you would normally only need to specify the
source filename, and you also wish to specify an exclusion
filename, you must provide at least a minimum destination file
specification, such as the destination drive, user, or *.*, so
that you have specified all three filenames in some way. For
example:
A0:WORK>acopy util:filename.* a: *.doc
will copy the files UTIL:FILENAME.*, except for DOC files, to
files of the same names on A0:WORK.
Wildcards
---------
Source, destination and exclusion filenames may all contain
wildcards. Source and exclusion filename wildcards are expanded
in the usual way. ACOPY attempts to resolve destination file
wildcards by a matching process. For example:
A0>acopy acopy.z80 b:??????30.*
will result in a destination filename of ACOPY30.Z80.
Since it is possible that this process may result in the creation
of duplicate files, ACOPY stores the name of the last file copied
and compares it to the name of the file currently being copied.
If they match, ACOPY prints a 'Duplicate!' error message, and the
current file is skipped. If two files with the same names are
not copied in sequence, a duplicate filename may still be
created. Care should be exercised in using destination file
wildcards, but if you are careful and aware of the limitations of
the process, you can do copying and renaming of multiple files in
one step with minimal typing.
File Attributes
---------------
New destination files will normally have the same filename
attributes as the source files. If a destination file overwrites
an existing file of the same name, the new file will take on the
attributes of the previous file.
Destination files will normally be marked as changed (not
archived). To help set up RAM disks, however, the 'D' option may
be used to mark destination files as archived. Source files may
be archived after the files have been copied by using the 'S'
option. This helps you back up files and mark the sources as
archived in one step.
Destination files are normally set as directory files. The 'Y'
option allows the option of copying files and setting them as
system files in one step, a useful ability when loading RAM disk
workspaces. See the 'Options' section for more information.
DOS Datestamping
----------------
When ACOPY detects that it is operating under CP/M 3.0, Z80DOS or
ZSDOS, it takes advantage of the appropriate extended DOS calls
to automatically copy the source file datestamps, if they exist,
to the destination file datestamps so that destination files have
the same creation and modification dates as the source files.
There is also an associated 'C' option that allows you to
suppress datestamp copying, if desired, so that destination files
are dated as newly created. When operating under other DOS's,
this option is not active and does not appear in the command line
HELP message. See the 'Options' section for more information.
When operating under ZSDOS, successful datestamping is indicated
by displaying '(Dated)' in the copying status message. No
datestamping message will be displayed when datestamping support
is not present, when there is a datestamping error, or when
datestamping is done under Z80DOS.
Destination Disk Free Space
---------------------------
ACOPY checks to make sure that enough free space for the
destination file exists on the destination disk before attempting
the copy. If a file to be overwritten already exists on the
destination disk, its size will be allowed for and it will not be
deleted unless there will be in enough free space for the new
file on the disk after the deletion. If insufficient space
exists, ACOPY will display a 'Disk too full!' message in the
copying status message, the ZCPR3 program error flag will be set
to 7 and the console bell will be sounded.
If a wildcard source filename was specified, ACOPY will continue
to step through the list of source files, copying any files that
will fit and giving error messages for each file that won't.
Even if you use the 'O' or 'R' option to specify automatically
overwriting existing files, no destination disk file will be
deleted unless doing so will create enough space to allow copying
of the replacement file.
If you are in the QUIET mode and attempt to copy a file to a disk
that doesn't have enough free space, ACOPY will cancel QUIET
operation, as you will probably be interested in which files
could be copied and which couldn't. This will give you the
information you need to take appropriate measures, such as
changing disks and repeating the command, or erasing enough files
on the destination disk to create enough free space for the files
you still want to copy.
ACOPY can also help you 'pack' a backup disk. It will look at
each specified file, checking whether there is space for it on
the destination disk, and copying it if there is. It doesn't
quit when it first finds insufficient space, but continues to
look for files small enough to fit, and copys those that will.
The ACOPY 'S' option (archive source files after copying) can
mark as archived those files successfully copied, and you will be
able to copy only the uncopied (and non-archived) files to
another backup disk using the ACOPY 'N' option (copy only non-
archived files). A sample command line for backing up files is:
A0>acopy *.* b: /nos
which will copy all non-archived (changed) files on A0: to B0:,
automatically overwriting destination files of the same name and
archiving the source files after copying.
Options
-------
ACOPY has a number of command line options, which must be
preceded by the option flag character '/'. The option letters or
numbers may appear in any order and may appear anywhere in the
command line. Options may be combined in any combination.
Options are toggled as they are read, so that an option appearing
twice will cancel itself. For example, all of the following
command lines have the same meaning:
A0>acopy /12qr source.ext dest.ext excluded.ft
A0>acopy source.ext dest.ext /1 /r excluded.ft /q /2
A0>acopy /12 dest.ext=source.ext excluded.ft /rq
A0>acopy /rq /q source.ext /q dest.ext /21 excluded.ft
Individual options may be inactivated by setting the high bit of
the option letter (adding 80H to the letter) or by just patching
it to 80H or higher. When an option is inactivated, it won't
appear in the command line help message and it can't be selected.
The 'A' and 'Y' options, for example, are normally inactivated,
as most users won't require them. An inactivated option may be
reactivated by patching the option letter back to the capitalized
option letter you have selected to specify the option. Also, if
you patch any option letter to 00H, ALL subsequent options will
be inactivated.
The following descriptions of the options reflect the default
option settings in the distribution version. You may change the
default option settings to suit your own needs by patching. See
ACOPY.PAT for more information. The command line HELP screen
will automatically display the proper selection message for each
option based on whether it has been set to ON or OFF.
The options are:
1 - 7 options. Copies only those specified files which also
have the selected combination of the F1 through the F7
attributes set.
Under Z80DOS and ZSDOS, where PUBLIC files have the F2
attribute set, you can also use the '2' option to
select only PUBLIC files for copying. In this case,
the operating system will prevent you from creating
more than one PUBLIC file of the same name on a disk.
If you try copying a PUBLIC file to a different user
area, ACOPY will tell you that it already exists. If
you try to overwrite the 'existing' file, the DOS will
prevent it by aborting with a File W/P BDOS error.
N - Copies only NON-archived (changed) files. The source
file is archived after the copy is completed. Under
ZRDOS, ZSDOS and other extended DOS's, the 'N' option
allows you to limit copying to non-archived files
(those files that have been opened or modified since
the archive attribute was set). The destination files
are created as non-archived files unless the 'D' option
is selected to archive the destination files.
Under CP/M 2.2, the archive attribute is not reset when
a file is updated, so this option is not too useful
unless you use a utility program to 'manually' set or
reset the archive attribute.
A - Normally inactivated by making option letter 'A'+80h
(C1h) and set to ON to allow normally copying of both
directory and system files. Option may be activated by
patching for users wanting to normally copy only
directory and not system files. When enabled and set
to OFF, selecting the 'A' option allows copying of both
directory AND system files, otherwise only directory
files are copied.
X - Skips copying if destination files of the same name
already exist, without asking. Normally, you are asked
first. Either the 'O' (Overwrite) or the 'R' (R/O)
option will override the skip option if both are
specified.
O - Overwrites R/W destination files of the same name
without asking. Normally, you are asked first.
R - Overwrites R/O (or R/W) destination files of the same
name without asking. Normally, you are asked first.
M - Moves files. Deletes the source files when the copying
operation has been successfully completed and displays
'Source Deleted' in the status message.
Y - Normally disabled by making option letter 'Y'+80h (D9h).
Option may be enabled for users wanting to set
destination files as system files. When enabled,
selecting the 'Y' option sets destination files as
system files, otherwise sets destination files as
directory files.
C - Controls whether the source file datestamps will be
copied to the destination file datestamps when
operating under Z80DOS or ZSDOS (default is to copy
datestamps). When operating under other DOS's, this
option is inactive and will not appear in the command
line HELP message.
If datestamps are copied, the destination files will
have the same creation and modification dates as the
source files. If datestamp copying is suppressed,
destination files will be dated as newly created.
D - Sets the archive attributes in the destination files,
marking them as archived. Speeds copying to RAM disks
by copying and marking the copies as archived in the
same operation. No message is displayed in the status
line.
S - Sets the archive attributes in the source files after
copying, marking them as archived and displays 'Source
Archived' in the status message.
V - Turns CRC verification off (default is to always verify
copies.) May be patched so that verification is
normally off, in which case the 'V' option turns it on.
Q - Quiet. Usually used in alias environments, the 'Q'
option turns off non-error status messages. Any
information you should know about during the copying
process, such as error information, is still displayed.
No existing files will be overwritten unless the 'O' or
'R' options are also used. If you attempt to copy a
file to a disk which doesn't have enough free space
while in the QUIET mode, ACOPY will cancel QUIET
operation so that you can view subsequent status
information.
When operating in a ZCPR3 environment, the 'Q' option
state will automatically be set according to the state
of the ZCPR3 QUIET flag, no matter how the default
option setting is patched.
ZCPR3 Program Error Flag
------------------------
ACOPY sets the ZCPR3 program error flag, if it exists, when an
error occurs during program operation. For more flexible use in
alias and ZEX scripts, ACOPY follows the convention set by Rick
Charnes by setting the error flag to the following values for the
indicated error conditions:
7 = Destination disk too full to copy the current file
8 = User abort
9 = Destination disk directory full
0FFH = Fatal error (which will terminate ACOPY operation)
Optional ACOPY Modifications
----------------------------
ACOPY has a number of locations near the beginning of the program
that can be patched using DDT, PATCH, ZPATCH, etc, to alter the
operation of the program to suit the user. See ACOPY.PAT for
further information. ACOPY.PAT may also be assembled to an
overlay file and overlaid on ACOPY30.COM to create a custom copy
of ACOPY.COM.
ACOPY in Alias Scripts
----------------------
When a ZCPR3 alias script is used to copy a large number of files
with unrelated filenames, the command line may quickly become
longer than the command line buffer. F1-F7 filename attribute
tagging helps group the files by the desired function, allowing
shorter and faster alias scripts.
Specifying files to be copied by both filename masks and
attributes can be useful, for example, when copying files from a
disk containing a large number of software development utilities
to a RAM disk. An alias script can be written to copy only those
files necessary for 8080 assembly language work, and another
alias script written to copy only those necessary for Z80
assembly language work.
The source files may be tagged so that several single copy
aliases will copy different subsets of the same group of source
files. For example, all 8080 development files might have the F2
attribute set, all Z80 development files might have the F3
attribute set, all the necessary text processing files might have
the F4 attribute set, and all desired general utility files might
have the F5 attribute set. You can then copy a complete 8080
work utility file set from drive F0: to drive A0:, skipping those
files where the destination files already exist, and mark the
destination files as archived, with the script:
A0>acopy f:*.* /245xd
and a complete Z80 work utility file set, except for .DOC files,
may then be similarly copied and archived with the script:
A0>acopy f:*.* a: *.doc /345xd
Acknowledgements
----------------
ACOPY was developed to suit my own special needs based on David
Jewett, III's well-written and documented PPIP12, a very nice
piece of work! PPIP has been further updated by Jay Sage and
others to support Z-system and datestamping operation. I refer
interested users to the latest version of PPIP for further
information.
The disk directory buffering scheme used in ACOPY30 is adapted
from the core code of Hal Bower's great SPEEDUP disk directory
buffer RSX contained in SPEEDUP.LBR. The operation of SPEEDUP is
described in Hal's LINKPRL article in The Computer Journal, issue
#41.
And special thanks, also, to all you ACOPY users whose
suggestions, comments and bug reports and testing contributions
have been very helpful!