README for Zoo/ST binaries
Fortunately, Rahul Dhesi has lifted the tight copyright arrangements for the
ST version of Zoo. Just like the MS-DOS version, he allows distribution of
binaries WITHOUT sources. I'm strongly convinced this will help making Zoo
accepted as archiver number 1 in the ST world.
Because a lot of people will receive the Zoo package without the sources,
here you find the implementation notes for Zoo/ST. Additional information can
be found in README.ST2, supplied with the sources (which are the ultimate
Please read the official Zoo documentation first (the file ZOO.MAN or ZOO.1).
The Zoo implementation for the ST is complete; all features are present,
except the following:
- using Zoo as a filter is not tested (and will probably not work).
- the MS-DOS specific Z-archive format is not supported. A Z-archive or
tiny archive seems to be an archive containing a single file; it didn't
seem worth the effort (and code size) to implement this.
Besides solving a couple of bugs in the original Zoo 2.01 sources, I added
the following features:
- Zoo/ST accepts both slashes and backslashes as directory separators in
all arguments, like:
zoo a test /src/atari.c \src\zoo.c \src/zoo.h
- added TMPDIR support during packing: the temporary file "Z.@@@" is
kept in the following directory:
1. if a dot was specified as modifier, in the current dir;
2. else, if the environment variable TMPDIR exists, in the directory
this variable points to (TMPDIR may contain a drive specifier);
3. else in the directory where the zoofile itself resides.
Note: the only time a temporary file is created is during packing, so
this is the only case where you could notice a speed increase when
TMPDIR points to a RAMdisk.
- added a little check to FIZ.TTP: it now prints HEADER when the archive
header is processed (before it always printed DIR and some garbage when
the header was processed).
- Zoo tries to be clever when deciding to wait for any key to return to
the desktop. The method used:
1. IF the environment variable ZOOPAUSE is set and equal to "no"
THEN don't wait for a key, return immediately;
2. ELSE IF the environment variable ZOOPAUSE == "yes"
THEN do wait for a keypress;
3. ELSE (the environment variable ZOOPAUSE is neither "yes" nor "no")
IF shell seems to be available
(i.e. if the system var _shell_p (0x4f6) is unequal to 0)
THEN do not wait for a key
ELSE do wait for a key.
This seems to be the most flexible way, offering both desktop and shell
users intuitive defaults and optional full control by manipulating
- Zoo/ST was compiled with the GREAT Turbo C compiler, v1.0, from
Heimsoeth/Borland; it was linked with a propriatary library, which
yields much faster code than TC's stdio library. Unfortunately, this
library cannot be distributed to the Public Domain.
Zoo/ST can be linked with TC's library though, provided that the
patches described in README.ST2 are applied to the original library.
- Zoo/ST's startup code supports the extended parameter passing technique
called "xARGV", restricting the length of all arguments only by the
available memory. It's obvious that this feature only works when Zoo is
started from a shell which also supports this convention
(CRAFT/GPshell, gulam, msh).
- Zoo/ST has 1 new "expert" command modifier and 2 related new novice
/ modifier for "a" expert-level command.
When one (or more) of the file arguments represent a
directory, the contents of this directory are COMPLETELY
added (i.e. ALL subdirectories, subsubdirectories etc will
-backup novice command.
Same as -add, but when any directory is encountered in the
file arguments, this directory will be completely added
(including all subdirectories, subsubdirectories, etc).
All file names are stored completely (i.e. including the
Same as expert command "aP/".
-restore novice command.
Logical counterpart of the new -backup option. Will
extract files from a Zoo archive using directory
information (if present) and creating any (sub)directory
needed which does not exist.
Same as expert command "x//".
These new features will probably be added to versions of Zoo on other
machines as well.
At the moment of distribution, two bugs are known:
1. the Lempel-Ziv compression method fails dramatically when Zoo is
feeded with a file containing 2-byte integers in ascending order (e.g.
from 0 to 6500). After quite a long time spent in the compression
routine, Zoo reports 0% compression though actually the file has
increased with around 30-50%!!!
This bug is also present in ARC/ST v5.21, because identical LZ
compression techniques are used.
Let's hope Rahul Dhesi can solve this bug.
2. During beta testing, a rare problem was encountered when TurboDos is
active and Zoo is used. When you want to archive a couple of files
(more than three, all residing on your harddisk or ramdisk) and the
target Zoo archive will be stored on floppy, Zoo aborts with 2 bombs.
Using a debugger it seems to be TurboDos' mistake: the bus error is
caused by an invalid A0 register used as base register in a TurboDos
512-byte internal copy loop.
The bug is reported to Atari (Benelux); as a fix could take quite some
time, and Zoo/ST is already late, I've decided to distribute Zoo/ST
Other bugs encountered by users can be reported to me (see below) or posted
to Usenet (comp.sources.bugs or comp.sys.atari.st). Please do report them!
Zoo/ST can be distributed in three different ways:
1. an archive (preferably a Zoo archive, but an ARC archive will reach
more people for a start) containing the following files:
ARCVSZOO.TXT (discussion of ARC vs Zoo)
COPYRIGH.T (Official Zoo copyright)
FIZ.TTP (FIx Zoo files, a dedicated utility)
FIZ.MAN (FIZ documentation)
README.ST (this file)
WHATS.NEW (latest features/changes in current ST version)
ZOO.TTP (Zoo/ST itself)
ZOO.MAN (Zoo documentation)
2. an archive containing the complete source as described in the file
README.NOW, plus the Atari ST-specific README.ST2, ATARI.C & ATARI2.C
and all the files listed above.
3. Thanks to Rahul Dhesi, FIZ.TTP and ZOO.TTP may be distributed
separately (although anybody probably needs the documentation).
Enjoy! (That's what I do...)
Zoo archives can also be listed and extracted with the program Booz
("Barebones Ooz"), also by Rahul Dhesi.
A very nice-looking graphical shell (a la ARCSH for ARC), called ZooBoy and
written by Ernst Blok, is in beta-test now and will be posted to
comp.binaries.atari.st in a couple of weeks.
Daan* / . .
( / / /
(__/ / / (Daan Josephus Jitta)
Bos en Lommerweg 10 ii UUCP: ...!mcvax!neabbs!daanjj OR daanjj@neabbs
NL-1055 EB Amsterdam Fido: 2:280/1 -- daan jitta
Holland Fax: (+31) 020-763706 -- daan jitta
Tel. (+31) 020-820521 Telex: 12969, NEABS NL, attn: daan jitta