home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
cpm86
/
nusq110.doc
< prev
next >
Wrap
Text File
|
1984-06-26
|
13KB
|
311 lines
NUSQ - File unsqueeze utility
Documentation for CP/M-86 and MS-DOS
versions 1.10, 1.03 & 1.03D
Cliff Sharp June 26, 1984
DOCUMENTATION TOPICS
OVERVIEW
COMMAND MODE
INTERACTIVE MODE
INSTALLATION
IN CASE OF TROUBLE
ANNOUNCEMENT
HISTORY
OVERVIEW
NUSQ is a utility for expanding squeezed files to their
original uncompressed state. Two separate versions of NUSQ are
available, one for CP/M-86 and one for the MS-DOS operating
system.
NUSQ has two operating modes. In the command mode, a single
instruction to NUSQ is passed from the command line which invokes
NUSQ. The command mode requires less effort to use when you have
only one file to unsqueeze, or when the names of the files you
wish to unsqueeze can all be specified by one "wildcard" name.
However, when you have more than one file to unsqueeze and a
"wildcard" won't do the job right, or when the files you want to
unsqueeze are on more than one disk, the interactive mode allows
you to specify only those files which you want processed, without
reloading the program every time. In the interactive mode, NUSQ
executes one command, then waits for another.
COMMAND MODE
To unsqueeze only one file, the command mode invocation
A>nusq nerts.aqm
will unsqueeze the file NERTS.AQM. You don't need to specify the
name of the output file (in fact, you can't); the name was stored
within the file at the time it was squeezed, and that name will
be used to create the new file. (If you want to name it
differently after you have unsqueezed it, use the REName command
when NUSQ is finished.)
You can unsqueeze all squeezed files on a single disk by
issuing the command
A>nusq *.?q?
Theoretically at least, all file squeezers create an output file
whose name is the same as that of the original file, except that
the filename extension field is modified by changing the middle
letter to a "Q". (If a file has no filetype, a 'QQQ' is appended
for the file type for the encoded file. When a file has been
renamed after being squeezed, this cannot be the case; hopefully,
the person who renamed it remembered the "Q".) The "wildcard"
file specification shown above tells NUSQ to unsqueeze any file
it finds (on the default disk) which has a "Q" in the filename
extension; that should get NUSQ to unsqueeze every squeezed file
on the disk. NUSQ will display the name of each file it finds,
and the name of the output file it produces, as it proceeds:
NERTS.AQM -> NERTS.ASM
ORGPLOTZ.DQC -> ORGPLOTZ.DOC
Because NUSQ checks the first two bytes of each input file
for a valid Squeeze Signature (0FF76 hex), it is possible to say:
nusq *.*
and get the same results as nusq *.?q?. It is faster, however,
to use the *.?q? method, as that will preclude a lot of
unnecessary file openings.
NUSQ will also accept more than one filename on the command
line:
A>nusq nerts.aqm orgplotz.dqc frop.cq
To use a different disk for output than for input, end the
command line with just the drive designation. Example:
A>nusq giggle.tqt b:
will write the output file (ostensibly GIGGLE.TXT) on drive B:.
You will find that NUSQ is very forgiving, as:
A>nusq b: giggle.tqt
will accomplish the same thing.
INTERACTIVE MODE
Let's suppose now that you have a large number of squeezed
files on your disk, and you only want to unsqueeze some of them.
Unless you can specify only those files by using a "wildcard"
name, you'll probably find it easier to achieve your goal by
using the interactive mode of NUSQ. Another instance where it
would be easier to use interactive mode is one where the files
you wish to unsqueeze are on more than one disk, in more than one
drive. The command
A>nusq
displays the startup message, then prompts for command input with
an asterisk ("*").
NUSQ Version x.xx
Dave Rand, Paul Homchick and Cliff Sharp xx/xx/xx
Use: NUSQ afn [afn afn ...] [destination drive:]
*_
(The underline shows the cursor position; my name appears only in
the MS-DOS version.) At the asterisk, you type a filename
("wildcards" are allowed here, too). NUSQ will unsqueeze the
file, then print the asterisk prompt again and wait for more
commands. When you're finished and want to exit NUSQ, a blank
line or ^C will return you to the operating system.
As distributed, NUSQ won't write over an existing file
without the user confirming the operation. Something very like
the following will happen:
A>nusq foo.bqr
nusq: FOO.BQR -> FOO.BAR already exists,
Overwrite <Y>es, <N>o? overwriting...
In this case the user answered "Y" at the question mark, and NUSQ
went ahead with the operation. If "N" is the response, the
unsqueeze operation is aborted, and the program goes on to the
next item in the list (or exits, if the list is empty).
INSTALLATION
Two user-configurable options are provided: Confirm Before Over-
write, and Use Input File Date for Output File.
As distributed, NUSQ v1.03 will ask for confirmation before over-
writing a file, and will use the current date and time when
creating the output file.
If you would rather have NUSQ write over existing files with
wanton abandon, without pausing and asking for confirmation, use
DEBUG.COM to patch location 0103H to be 00H instead of 0FFH. An
example of this patch:
A>debug b:nusq.com
-e103
xxxx:0103 FF.00
-w
Writing XXXX bytes
-q
A>
If you would like the unsqueezed file to retain the same date and
time as the input file, patch 0104H to an 0FFH. Copies of NUSQ
patched in this manner will display a 'D' after the version
number signifying that the input file date option has been
enabled, i.e. "1.03D". PLEASE NOTE that this option is avail-
able for the MS-DOS version ONLY. The CP/M-86 version does not
support date and time stamping, although it is intended that
future versions will add this support for the MP/M-86 and CCP/M-
86 operating systems.
If you have a back-up utility that uses the file date and time to
determine whether or not a file should be backed up, it is
possible that using the input file date could cause loss of a
file by having an 'old' date on a 'new' file, and losing a
backup. This is why NUSQ is distributed with the date mode
disabled.
IN CASE OF TROUBLE
First, no matter HOW sure you are that you're doing things
correctly, try another method of using NUSQ. If you tried
command mode without luck, try the interactive mode; if you were
in the interactive mode when it bombed, try command mode. Make
sure you try at least one command that is just like one shown in
this document (but, of course, use the name of your file instead
of NERTS or ORGPLOTZ) before you conclude that things are awry.
Occasionally, for one reason or another, it's possible to
get a bad copy of a program or file; transmission errors and disk
errors have been known to cause many problems. (If you can
successfully unsqueeze at least one squeezed file, you probably
have a good copy of the program; if so, your copy of the file
you're trying to unsqueeze may be the culprit.) The best way to
tell if this is the case is to use a utility like CRCK on the
original copy of the offending file/program, and on your copy; if
the numbers you get don't match, you most likely have a bad copy
of the file/program you checked and should obtain another copy of
it. (Check the new copy, too, when you get it.)
This may sound silly, but do you have the correct version
for your operating system? If you try to run the CP/M-86 version
under MS-DOS, strange things may happen; same for the MS-DOS
version under CP/M-86. The MS-DOS version has an "M" in the
version number. Also, try using TYPE to actually type the
executable file on your screen; you'll most likely see the
author's name. (See the history later in this document to see
who wrote what.)
If all that checks out, the logical next step is to compare
notes with someone locally to see if anyone else is experiencing
problems. The system operator ("sysop") of the system from which
you obtained the software can usually be of help if you tell him
which program you're using (CP/M-86 or MS-DOS) and the name of
the file you're trying unsuccessfully to unsqueeze.
Alternatively, you can leave a message addressed to "ALL" on a
local bulletin board; usually some helpful person will jump in
with suggestions.
If you've tried all this, and you're still sure you have a
problem, then it's last-resort time. Contact the author of your
version of the program. His name, and a way to contact him, is
in the very beginning of the NUSQ.COM file; TYPE NUSQ.COM and you
should see it. (If that doesn't work, use DDT, SID or DEBUG.)
This is by far the slowest method of resolving problems, and
people who contact program authors with problems caused by
operator error are usually looked upon unfavorably, so do this
only if all else fails. Be sure to include the name of the
system where you got your copy of the program, the name of the
file you're trying to unsqueeze and the place where you got the
file, and a description of what went wrong. It might also be
nice to know the names of any people who have tried to help you
with your problem so far.
ANNOUNCEMENT
A look at the signon messgae in interactive mode will reveal
that NUSQ is the result of committee action. Said committee was
unable to agree on whether the source code should be distributed
as public domain code. Consequently, source code is not avail-
able.
HISTORY
NUSQ is a file unsqueezer utility written entirely in
assembly language. The first file squeezer and unsqueezer in the
public domain were written by Richard Greenlaw, in the C
programming language. A Z80 assembly language version was done
by Gail Zacharias at MIT in the Spring of 1983. In late '83 Dave
Rand wrote an 8080 version, which went through several versions,
culminating in USQ120.COM. Paul Homchick assumed the task of
converting Dave's efforts to 8086/8088 assembly language for
execution under CP/M-86 in early 1984, and I converted Paul's
version to run under MS-DOS a bit later.
CP/M VERSIONS
1.08 January 28, 1984. First released version
uploaded to Compuserve.
1.09c March 24, 1984. Carriage Return on empty
line exits program. Optimized tree-walker
adapted from MS-DOS version resulting in
15% speed increase.
1.10 June 22, 1984. Prior tree-walker was not
as optimized as we thought. Further optimi-
zation borrowed from MS-DOS version, result-
in another 25% increase in speed.
MS-DOS VERSIONS
1.00M March 21, 1984. Original version uploaded
to Compuserve. Had serious bug that some-
times resulted in short files with no warn-
ing.
1.01M March 31, 1984. Carriage Return on empty
line at Command prompt ("*"), now returns to
DOS instead of giving another prompt line.
Short File BUG still in this version!
1.02M April 12, 1984. Fixed Random Block Write
DOS calls. Files now unsqueeze to exact
length, instead of 128-byte multiples as in
prior versions. Buffer flush code fixed to
eliminate short file bug.
1.03 and 1.03D June 22, 1984. Decode routines re-
written for a 30 percent increase in speed.
Version 1.03D uses date and time of the input
file when creating output file, 1.03 does not
do so. This date feature can be user con-
figured by changing a byte at offset +4 in
the .com file. See 'Installation,' above for
details. Versions prior to this one always
appended a 1A hex to the end of the un-
squeezed file. This CP/M anachronism has
been removed in this version. 'M' has been
removed from the sign-on version number, on
the theory that if you have gotten that far,
you are using the correct operating system for
the program.
CP/M and CP/M-86 are trademarks of Digital Research, Inc.
MS (as in MS-DOS) is a trademark of Microsoft, Inc.