Dec 252017
Extract and run a file archived with ZOO archival program. | |||
---|---|---|---|
File Name | File Size | Zip Size | Zip Type |
LOOZ.DOC | 13682 | 4747 | deflated |
LOOZ.EXE | 9670 | 6035 | deflated |
Download File LOOZ210.ZIP Here
Contents of the LOOZ.DOC file
Looz 2.1 -- Ooz with List
(and Execute)
a
Zoo Extractor/Lister
by
Rahul Dhesi
Looz 2.1 is a Zoo archive extractor/lister/tester for computer systems
running MS-DOS version 2.x or greater. IBM-compatibility is not a
requirement.
Looz 2.1 does not recognize all the advanced features available in current
Zoo archives, such as long filenames and directory names. All extracted files
go into the current directory. It can, however, extract and list all archives
created by all currently-existing versions of Zoo.
Looz can also give the directory listing of one or more Zoo archives
(optionally showing attached comments) or test their integrity.
Looz 2.1 is different from version 1.10 in the following ways: (a) It can
execute archived files; (b) It can present a fast columnized listing of the
contents of a zoo archive.
A detailed feature summary of Looz 2.1 is near the end of this document.
COMMAND SUMMARY
The command format is:
looz {lxt}[cpxf] archive[.zoo] [ file ... ] [ parameter ... ]
Choose one of the command characters `l', `x', or `t', and optionally a
modifier `c', `p', or `x'. These characters are case-sensitive. Looz ignores
any inappropriate modifier. The valid combinations are:
l list contents of archive(s)
lc list contents of archive(s) and show attached comments
lf list contents of archive(s) in fast multicolumn format
x extract file(s) from archive(s)
xp extract file(s) from archive(s), pipe to standard output
xx extract and execute file from archive
t test integrity of archive(s)
The usual wildcard characters are accepted in both the archive name and in the
specified filenames: ? stands for any one character and * stands for any
sequence of zero or more characters. In addition, any filespec preceded by
the character ^ excludes matching files. The ^ exclusion character overrides
any other matches. (Note: ^ works only in filenames, not in the archive
name. Also, ^ is ineffective when looking for files to execute via the xx
command.)
Wildcard matching is case-insensitive.
Files extracted by `x' always go into the current directory; however, if an
extracted file is being executed, it is extracted directly into main memory
and never stored on disk.
The information listed by `l' is: The original length in bytes of the
archived file; the percentage by which its size decreased due to compression
(also known as "CF" or "compression factor"); its current size as stored in
the archive; its date and timestamps, preserved when archived; the character
"C" if the file has an attached comment; the character "D" if it is a deleted
file; and an MS-DOS format filename.
If appropriate, a "GRAND TOTAL" line summarizes statistics for all archives
and files that were listed.
When the xx command is used, the archive name and the file name may be
followed by parameters to be supplied to the program being executed.
FILE EXECUTION
Looz can extract and execute archived COM and EXE programs. BAT programs are
not currently supported. A file to be executed must not be longer than 65535
bytes.
DISK AND MEMORY CONSIDERATIONS
When executing an archived program, Looz itself needs about 60 kilobytes to
perform the extraction, and enough additional memory to hold the extracted
program. Thus if the executable program is 30 kilobytes long, there must be
about 90 kilobytes available.
However, before giving control to the program being executed, Looz removes
itself from memory. Thus there is no space penalty for executing an archived
file via Looz.
Looz extracts the program to be executed directly into memory. Thus there is
no need to create any temporary disk files at any time. Looz will therefore
execute archived programs with all disks write-protected.
I/O REDIRECTION
When executing archived files, I/O redirection can be used normally. For
example,
looz xx \bin\run sdir \bin\*.* >>dir.lst
will append the output of the command to the file dir.lst, exactly as would
the direct execution of sdir via the command:
sdir \bin\*.* >>dir.lst
Pipes can also be used normally. For example:
looz xx \bin\run sdir | list /s
The above command will extract and execute sdir.com from the archive
\bin\run.zoo, and feed its output to list.com. In this case, list.com must be
found on disk. However, if list.com is also in the zoo archive, the following
pipeline will work:
looz xx \bin\run sdir | looz xx \bin\run list /s
USAGE HINTS FOR ARCHIVED PROGRAMS
A good way of avoiding disk fragmentation is to combine many small executable
programs into a single zoo archive. Programs that are used only occasionally
can be stored in compressed form. Programs that are frequently used should be
stored uncompressed so they may be executed without any uncompression delay.
It is also possible to put executable files into multiple zoo archives, and to
specify the archive name with a wildcard. Looz will search all matching
archive names for the specified executable file, and execute the first
matching file found. There may, however, be a delay of a second or so while
Looz searches for the archives on disk.
Another good way of using Looz to execute archived files is via a CED
synonym. CED is a public domain program written by Chris Dunford and is
available from bulletin boards. (Note that while Looz will run on any MS-DOS
system, CED requires an IBM-compatible computer system.) With CED installed
on your system, create a CED synonym by giving a command as follows:
ced syn run looz xx \bin\run
This creates a new command "run" that is equivalent to typing
"looz xx \bin\run". Executable programs may now be put in the zoo archive
\bin\run.zoo. Now any program in this archive can be extracted and executed
by giving the command "run program". For example, if \bin\run.zoo contains
the program sdir.com, you can now run it by typing "run sdir" at the MS-DOS
prompt. Parameters can be supplied as usual, so typing "run sdir \doc\*.*"
will execute the archived copy of sdir.com exactly as if you had typed
"sdir \doc\*.*" to MS-DOS.
FILE EXTENSIONS
Looz assumes default file extensions as follows.
If no file extension is specified for the name of the archive, an extension of
.zoo is assumed.
No assumptions are made about the extension of a file to be extracted, with
one exception: If the xx command is being used to extract and execute an
archived file, Looz looks for files with extensions .com and .exe and executes
the first file found whose name matches. Thus, for example, the command
looz xx \bin\programs *
searches the archive \bin\programs.zoo for any file matching *.com or *.exe
executes the first such file found. Similarly the command
looz xx \bin\programs show
extracts and executes a file called show.com or show.exe. If the archive
contains both show.com and show.exe, the first one encountered is executed.
A program name specified for execution must not be typed with an extension.
Thus "looz xx \bin\programs show.com" will not work.
EXAMPLES
The command
looz l *r *a?b* *x* z*y ^*.c
will list all archives with filenames ending with `r' and with the extension
".zoo". Within these archives, the only files that will be listed are:
(a) those with names containing the characters `a' and `b' separated by any
one character; (b) those with names containing the character `x'; (c) those
with names beginning with `z' and ending with `y'. Note that since the dot is
not special, the filespec "*x*" will match the names "xyz.doc", "yxz", and
"doc.yzx". Regardless of the above, however, the pattern "^*.c" excludes all
files matching "*.c" so they will not be listed; thus "xyz.c" is excluded by
"^*.c", even though it matches "*x*".
The command
looz lc *r *a?b* *x* z*y ^*.c
is identical to the above but it will also show any comments attached to
archived files.
The command
looz lf *r *a?b* *x* z*y ^*.c
is identical to the above but it will list filenames in five columns,
allowing many more filenames to fit on a screen.
The command
looz t /new/vooz*2
will test the integrity of all Zoo archives in directory "/new" that have
names beginning with the characters `vooz' and ending with the character `2',
and with the default extension ".zoo". Matching archives might be
"voozexe2.zoo" and "voozsrc2.zoo".
The command
looz x /zoo/*l* *.c *doc ^looz.c ^looz.doc
will extract all "*.c" and "*doc" files (except "looz.c" and "looz.doc") from
all archives in the directory "/zoo" whose names contain the character `l',
with a default extension of ".zoo" assumed in the archive names.
The command
looz xp /zoo/*l* *.c *doc ^looz.c ^looz.doc
is identical to the above except that extracted data are piped to standard
output (normally the screen) and may be redirected to a file or device (e.g.
the printer) with the MS-DOS redirection characters ">" or ">>".
The command
looz xx /bin/r* *dir* *.doc
will search all zoo archives matching the name /bin/r*.zoo, and look in these
for all files matching *dir*.com and *dir*.exe, and execute the first such
file. Regardless of how many archive names and file names match the supplied
pattern, the xx command will only cause the execution of the first file found
with a matching name. The string "*.doc" will be supplied as an argument to
the executed program so that, for example, the result might be equivalent to
typing "sdir *.doc" at the MS-DOS prompt.
The command
looz xx run sdir /a *.doc
will search the archive run.zoo for a file called sdir.com or sdir.exe. If
found, this file will be executed, with the parameters /a and *.doc being
supplied to it. The effect will the identical to typing
sdir /a *.doc
at the MS-DOS prompt.
FEATURE SUMMARY
The table below lists differences and similarities between Ooz 1.30, Looz
1.01, and Looz 2.1. (Symbols: "n/a" means "not applicable"; "[1]" means
"see item 1 in Notes below".)
Ooz 1.30 Looz 1.01 Looz 2.1
-------- --------- ---------
size on disk 10K 10K 10K
memory required 50K 96K 60K
for extraction
extract archive yes yes yes
execute archived filenonoyes
executen/an/ano
deleted file
extract no yes [1] yes [1]
deleted files
preserve file timestamp yes yes yes
when extracting
pipe extracted data no yes yes
to standard output
list archive no yes yes
multicolumn listing n/a no yes
flag deleted files n/a yes yes
flag files that have n/a yes yes
comments
list comments n/a yes yes
test archive no yes yes
wildcards in no yes yes
archive name
wildcards in yes yes yes
filenames
character ranges yes no no
in filenames
file exclusion with ^ no yes yes [2]
dot is special
in wildcards yes no [3] no [3]
can aborting with control C no [4] yes yes
leave behind a partially-
extracted file?
corrects filename syntax no yes yes [5]
so files with invalid
names can be extracted
----------
NOTES
1. Deleted files are also extracted. If an archived file exists occurs
twice, perhaps both in deleted and not deleted form, answer "yes" or "no" to
the "Overwrite?" prompt according as you want the second or the first
occurrence of the file.
2. Filename exclusion does not apply to a filename specified for execution.
3. The dot IS special in wildcards in the archive name but is not special in
wildcards in filenames for selection of archived files.
4. Except on rare occasions.
5. Looz 1.01 incorrectly transformed an underscore in a filename into an "r"
during extraction. Later versions handle underscores normally, like any other
legal filename character.
WARNING
Looz's wildcard handling is not identical to that of MS-DOS. The dot is not
special in filenames, so `*' will match all archived files but '*.*' will
not.
Please double-check to make sure the correct files are matched.
ACKNOWLEDGEMENT
Thanks are due to Michael E. Devore for hearing my request for information
about how to use the relocation table in EXE files and responding with a
nicely-written assembly language program. I wrote my relocation routine in C,
but his program was very useful in helping me figure out how to perform the
relocation.
Looz 2.1 was written using Borland's Turbo C version 1.0 and the Microsoft
Macro Assembler version 4.00.
-- Rahul Dhesi 1987/08/08
(and Execute)
a
Zoo Extractor/Lister
by
Rahul Dhesi
Looz 2.1 is a Zoo archive extractor/lister/tester for computer systems
running MS-DOS version 2.x or greater. IBM-compatibility is not a
requirement.
Looz 2.1 does not recognize all the advanced features available in current
Zoo archives, such as long filenames and directory names. All extracted files
go into the current directory. It can, however, extract and list all archives
created by all currently-existing versions of Zoo.
Looz can also give the directory listing of one or more Zoo archives
(optionally showing attached comments) or test their integrity.
Looz 2.1 is different from version 1.10 in the following ways: (a) It can
execute archived files; (b) It can present a fast columnized listing of the
contents of a zoo archive.
A detailed feature summary of Looz 2.1 is near the end of this document.
COMMAND SUMMARY
The command format is:
looz {lxt}[cpxf] archive[.zoo] [ file ... ] [ parameter ... ]
Choose one of the command characters `l', `x', or `t', and optionally a
modifier `c', `p', or `x'. These characters are case-sensitive. Looz ignores
any inappropriate modifier. The valid combinations are:
l list contents of archive(s)
lc list contents of archive(s) and show attached comments
lf list contents of archive(s) in fast multicolumn format
x extract file(s) from archive(s)
xp extract file(s) from archive(s), pipe to standard output
xx extract and execute file from archive
t test integrity of archive(s)
The usual wildcard characters are accepted in both the archive name and in the
specified filenames: ? stands for any one character and * stands for any
sequence of zero or more characters. In addition, any filespec preceded by
the character ^ excludes matching files. The ^ exclusion character overrides
any other matches. (Note: ^ works only in filenames, not in the archive
name. Also, ^ is ineffective when looking for files to execute via the xx
command.)
Wildcard matching is case-insensitive.
Files extracted by `x' always go into the current directory; however, if an
extracted file is being executed, it is extracted directly into main memory
and never stored on disk.
The information listed by `l' is: The original length in bytes of the
archived file; the percentage by which its size decreased due to compression
(also known as "CF" or "compression factor"); its current size as stored in
the archive; its date and timestamps, preserved when archived; the character
"C" if the file has an attached comment; the character "D" if it is a deleted
file; and an MS-DOS format filename.
If appropriate, a "GRAND TOTAL" line summarizes statistics for all archives
and files that were listed.
When the xx command is used, the archive name and the file name may be
followed by parameters to be supplied to the program being executed.
FILE EXECUTION
Looz can extract and execute archived COM and EXE programs. BAT programs are
not currently supported. A file to be executed must not be longer than 65535
bytes.
DISK AND MEMORY CONSIDERATIONS
When executing an archived program, Looz itself needs about 60 kilobytes to
perform the extraction, and enough additional memory to hold the extracted
program. Thus if the executable program is 30 kilobytes long, there must be
about 90 kilobytes available.
However, before giving control to the program being executed, Looz removes
itself from memory. Thus there is no space penalty for executing an archived
file via Looz.
Looz extracts the program to be executed directly into memory. Thus there is
no need to create any temporary disk files at any time. Looz will therefore
execute archived programs with all disks write-protected.
I/O REDIRECTION
When executing archived files, I/O redirection can be used normally. For
example,
looz xx \bin\run sdir \bin\*.* >>dir.lst
will append the output of the command to the file dir.lst, exactly as would
the direct execution of sdir via the command:
sdir \bin\*.* >>dir.lst
Pipes can also be used normally. For example:
looz xx \bin\run sdir | list /s
The above command will extract and execute sdir.com from the archive
\bin\run.zoo, and feed its output to list.com. In this case, list.com must be
found on disk. However, if list.com is also in the zoo archive, the following
pipeline will work:
looz xx \bin\run sdir | looz xx \bin\run list /s
USAGE HINTS FOR ARCHIVED PROGRAMS
A good way of avoiding disk fragmentation is to combine many small executable
programs into a single zoo archive. Programs that are used only occasionally
can be stored in compressed form. Programs that are frequently used should be
stored uncompressed so they may be executed without any uncompression delay.
It is also possible to put executable files into multiple zoo archives, and to
specify the archive name with a wildcard. Looz will search all matching
archive names for the specified executable file, and execute the first
matching file found. There may, however, be a delay of a second or so while
Looz searches for the archives on disk.
Another good way of using Looz to execute archived files is via a CED
synonym. CED is a public domain program written by Chris Dunford and is
available from bulletin boards. (Note that while Looz will run on any MS-DOS
system, CED requires an IBM-compatible computer system.) With CED installed
on your system, create a CED synonym by giving a command as follows:
ced syn run looz xx \bin\run
This creates a new command "run" that is equivalent to typing
"looz xx \bin\run". Executable programs may now be put in the zoo archive
\bin\run.zoo. Now any program in this archive can be extracted and executed
by giving the command "run program". For example, if \bin\run.zoo contains
the program sdir.com, you can now run it by typing "run sdir" at the MS-DOS
prompt. Parameters can be supplied as usual, so typing "run sdir \doc\*.*"
will execute the archived copy of sdir.com exactly as if you had typed
"sdir \doc\*.*" to MS-DOS.
FILE EXTENSIONS
Looz assumes default file extensions as follows.
If no file extension is specified for the name of the archive, an extension of
.zoo is assumed.
No assumptions are made about the extension of a file to be extracted, with
one exception: If the xx command is being used to extract and execute an
archived file, Looz looks for files with extensions .com and .exe and executes
the first file found whose name matches. Thus, for example, the command
looz xx \bin\programs *
searches the archive \bin\programs.zoo for any file matching *.com or *.exe
executes the first such file found. Similarly the command
looz xx \bin\programs show
extracts and executes a file called show.com or show.exe. If the archive
contains both show.com and show.exe, the first one encountered is executed.
A program name specified for execution must not be typed with an extension.
Thus "looz xx \bin\programs show.com" will not work.
EXAMPLES
The command
looz l *r *a?b* *x* z*y ^*.c
will list all archives with filenames ending with `r' and with the extension
".zoo". Within these archives, the only files that will be listed are:
(a) those with names containing the characters `a' and `b' separated by any
one character; (b) those with names containing the character `x'; (c) those
with names beginning with `z' and ending with `y'. Note that since the dot is
not special, the filespec "*x*" will match the names "xyz.doc", "yxz", and
"doc.yzx". Regardless of the above, however, the pattern "^*.c" excludes all
files matching "*.c" so they will not be listed; thus "xyz.c" is excluded by
"^*.c", even though it matches "*x*".
The command
looz lc *r *a?b* *x* z*y ^*.c
is identical to the above but it will also show any comments attached to
archived files.
The command
looz lf *r *a?b* *x* z*y ^*.c
is identical to the above but it will list filenames in five columns,
allowing many more filenames to fit on a screen.
The command
looz t /new/vooz*2
will test the integrity of all Zoo archives in directory "/new" that have
names beginning with the characters `vooz' and ending with the character `2',
and with the default extension ".zoo". Matching archives might be
"voozexe2.zoo" and "voozsrc2.zoo".
The command
looz x /zoo/*l* *.c *doc ^looz.c ^looz.doc
will extract all "*.c" and "*doc" files (except "looz.c" and "looz.doc") from
all archives in the directory "/zoo" whose names contain the character `l',
with a default extension of ".zoo" assumed in the archive names.
The command
looz xp /zoo/*l* *.c *doc ^looz.c ^looz.doc
is identical to the above except that extracted data are piped to standard
output (normally the screen) and may be redirected to a file or device (e.g.
the printer) with the MS-DOS redirection characters ">" or ">>".
The command
looz xx /bin/r* *dir* *.doc
will search all zoo archives matching the name /bin/r*.zoo, and look in these
for all files matching *dir*.com and *dir*.exe, and execute the first such
file. Regardless of how many archive names and file names match the supplied
pattern, the xx command will only cause the execution of the first file found
with a matching name. The string "*.doc" will be supplied as an argument to
the executed program so that, for example, the result might be equivalent to
typing "sdir *.doc" at the MS-DOS prompt.
The command
looz xx run sdir /a *.doc
will search the archive run.zoo for a file called sdir.com or sdir.exe. If
found, this file will be executed, with the parameters /a and *.doc being
supplied to it. The effect will the identical to typing
sdir /a *.doc
at the MS-DOS prompt.
FEATURE SUMMARY
The table below lists differences and similarities between Ooz 1.30, Looz
1.01, and Looz 2.1. (Symbols: "n/a" means "not applicable"; "[1]" means
"see item 1 in Notes below".)
Ooz 1.30 Looz 1.01 Looz 2.1
-------- --------- ---------
size on disk 10K 10K 10K
memory required 50K 96K 60K
for extraction
extract archive yes yes yes
execute archived filenonoyes
executen/an/ano
deleted file
extract no yes [1] yes [1]
deleted files
preserve file timestamp yes yes yes
when extracting
pipe extracted data no yes yes
to standard output
list archive no yes yes
multicolumn listing n/a no yes
flag deleted files n/a yes yes
flag files that have n/a yes yes
comments
list comments n/a yes yes
test archive no yes yes
wildcards in no yes yes
archive name
wildcards in yes yes yes
filenames
character ranges yes no no
in filenames
file exclusion with ^ no yes yes [2]
dot is special
in wildcards yes no [3] no [3]
can aborting with control C no [4] yes yes
leave behind a partially-
extracted file?
corrects filename syntax no yes yes [5]
so files with invalid
names can be extracted
----------
NOTES
1. Deleted files are also extracted. If an archived file exists occurs
twice, perhaps both in deleted and not deleted form, answer "yes" or "no" to
the "Overwrite?" prompt according as you want the second or the first
occurrence of the file.
2. Filename exclusion does not apply to a filename specified for execution.
3. The dot IS special in wildcards in the archive name but is not special in
wildcards in filenames for selection of archived files.
4. Except on rare occasions.
5. Looz 1.01 incorrectly transformed an underscore in a filename into an "r"
during extraction. Later versions handle underscores normally, like any other
legal filename character.
WARNING
Looz's wildcard handling is not identical to that of MS-DOS. The dot is not
special in filenames, so `*' will match all archived files but '*.*' will
not.
Please double-check to make sure the correct files are matched.
ACKNOWLEDGEMENT
Thanks are due to Michael E. Devore for hearing my request for information
about how to use the relocation table in EXE files and responding with a
nicely-written assembly language program. I wrote my relocation routine in C,
but his program was very useful in helping me figure out how to perform the
relocation.
Looz 2.1 was written using Borland's Turbo C version 1.0 and the Microsoft
Macro Assembler version 4.00.
-- Rahul Dhesi 1987/08/08
December 25, 2017
Add comments