____ ___ ___ ___ ___ ___ ___ ____ ___ ___ ___  / /__//_ /__ / //_ //__ / //_ / / / //_ //__//_   / / //__ ___//__//__/___//__// / /_/_// // \/__  ------------------------------------------------------------------------------ - FOR ABO'S CONTACT US AT: BP:28 1170 WATERMAEL-BOITSFORT 1 BELGIUM!!... ------------------------------------------------------------------------------ - DON'T SEND ANY DISKS - ------------------------------------------------------------------------------  THE LEGENDARY >> SUBSOFTWARE << IN 87/88/89/90/91!!...  ------------------------------------------------------ ========================= Zoom/ZoomCheck 4.2 ========================= ====================================================================== A floppy disk tracking and archiving utility, written by Olaf `Olsen' Barthel of MXM. © Copyright 1990,1991 by MXM, Lh data compression/decompression code © Copyright 1990,1991 by Holger P. Krekel & Olaf Barthel. Shareware, all rights reserved. No guarantee of any kind is made that the program(s) described in this document are 100% reliable. You use this material on your own risk. ======================= READ THIS OR MISS OUT ======================== ====================================================================== On startup both `Zoom' and `ZoomCheck' will examine their internal hunk structures: if anything is not in its correct place both programs will put up alerts. To discover what was wrong enter `Zoom SELFTEST' or `ZoomCheck SELFTEST'. Enter `CRC Zoom' and `CRC ZoomCheck' to calculate the external checksums and compare them with the samples given in this document. Any differences indicate possible virus infection! If you don't trust the sample checksums listed in this document, send me a letter or electronic mail (adresses listed below) and ask for the `factory checksums'. THIS AND THE FOLLOWING ZOOM! RELEASES MAY ONLY BE DISTRIBUTED IN THE SELF-EXTRACTING ARCHIVE FORM!!! ========= What if my copy of `Zoom' appears to be infected? ========== ====================================================================== Do not hesitate to send me a letter or electronic mail containing the following information: 1) Where did you get the copy from? 2) Which files have been infected/modified? 3) What do you guess: have the files been modified by a virus (which virus)? As a programmer I am about to lose my reputation - and I will not hesitate to report the luckless fool who infected the `Zoom!' release in question and spread it. ============================== Contents ============================== ====================================================================== This package consists of six files. The CRC checksums were obtained using the `CRC' utility (also included in this package). Provided that all checksums match the following samples (and this document has not been modified) no file is virus-infected. Release Date: 11-May-91, 10:47 Zoom (CRC = $92C4D494, Size = 61300 Bytes) Zoom.info ZoomCheck (CRC = $63661B0A, Size = 19116 Bytes) ZoomCheck.info CRC (CRC = $4F5177B9, Size = 4104 Bytes) Zoom.doc (Size = 30304 Bytes) The new `CRC' utility will also calculate and print the so-called `WRAP' checksum. For all programs in this distribution (including `Zoom', `ZoomCheck' and `CRC') this checksum MUST be zero (if nonzero, the approriate file has been modified). All programs in this distribution are PURE, I suggest setting the `p' bit if not already done. ===== Why use Zoom! instead of other disk compression utilities? ===== ====================================================================== - Zoom! performs much faster and compresses better than any other currently available disk archiving utility. - Zoom! recognizes about 66 different viruses. - Zoom! has both an Intuition and a Shell interface. - Zoom! can be customized for your own needs. - Zoom! works with Kickstart 2.x! - Zoom! will also work on Amiga computers equipped with an MC68020/30 microprocessor. No need to buy an extra version! ============================== Purpose =============================== ====================================================================== Disk archiving utilities are becoming increasingly attractive. Almost all other disk compression tools lack a friendly user interface, take ages to finish their work or simply produce very long output files. Zoom! is the successor to CompDisk and owes much to the original tool's design. Nevertheless, Zoom! performs faster, produces `safer' and much smaller output files. Zoom! uses highly-efficient data encoding routines derived from LhArc (adaptive Huffman squeezing) which have been converted into MC680x0 code (we call it `Lh'). Data compression/decompression is always much faster than displayed by programs such as Warp, LhWarp, LhArc and LZ. To reduce the chance of encoding a virus-infected disk, Zoom! will examine the bootblock and display it if it is of nonstandard type. The following 66 different bootblock viruses are recognized: 16 Bit Crew AEK (MicroMaster) AIDS Alien New Beat Amigafreak Australian Parasite BamigaS1 Black Flash Butonics Byte Bandit (1 & 2) Byte Warrior (1 & 2) CCCP (1 & 2) ClaasAbraham (MCA) CList Virus Coder DAG Destructor DiskDoctor (1 - 3) Digital Emotion Diskguard V1.0 F.A.S.T. F.I.C.A. Forpib Gadaffi Graffiti Gremlins GX Team ICE Incognito JITR Joshua (1 & 2) Julie (Tick Virus) Kauki LAMER (1 - 3) LSD Megamaster Microsytems Morbid Angel Obelisk OPAPA Phantastograph Rene REVENGE REV. Boot Loader SCA (1 & 2) Scarface Selfwriter Sendarian Sinister Syndicate Supply Team Switch OFF Target Termigator The INCOGNITO TIMEBOMB TURK U.K. Lamerstyle Ultrafox Warhawk Ralf Thanner, author of the `Berserker' virus killer, donated the bootblock scanner and rewrote the 16-bit CRC routines, thanks a lot! ============================ Installation ============================ ====================================================================== Copy `arp.library' to your LIBS: directory, both Zoom! and ZoomCheck require it. ENV: (default AmigaDOS environment storage directory) should be assigned to somewhere, but needn't. ========================= Zoom! Shell usage ========================== ====================================================================== The following command line template is displayed if you type `Zoom ?': From,To,Check/K,T=Text/K,S=Start/K,E=End/K,C=Crypt/K,D=ClearData/S, B=ClearBlocks/S,V=Verify/S,Q=Quiet/S,N=NoPrompt/S,Selftest/S From .......... Name of the file to be read and written back to disk (`decode') or the name of the filing device to read the data from to be encoded. Examples: `Zoom from df0: to ram:doodle' `Zoom from ram:doodle to df0:' To ............ Name of the device to store the decoded data on or the name of the file to send the encoded data to. Check ......... This is a tiny implementation of a file integrity testing tool (such as `ZoomCheck'). A file created by Zoom! will be read and tested. If a checksum is not in its correct place an error message will be displayed. Example: `Zoom check ram:doodle' Text .......... Zoom! can attach a text file to an archive file which will be displayed while/before data decoding. It will be read and encoded before the actual disk encoding takes place. Start ......... The track number to start encoding at. This argument is optional and does not need to be entered. By default the starting track is zero (= 0). Example: `Zoom df0: to ram:dodo start 17 end 22' End ........... The number of the last track to encode. Note that you cannot ask for a starting track and omit the ending track (and the other way round). Both arguments must be used. Crypt ......... Files created by Zoom! may be encrypted with a special password. The same password (Note: it is case sensitive) will be required to decode the output file. Example: `Zoom df0: to ram:doodle crypt Secret' Cleardata ..... This switch may reduce the size of the output file produced by encoding. Under the `old' filing system a data block contains the number of bytes which are actually occupied by data. The rest of the data block usually contains random data. If this switch is active the unused portion of the data block will be set to zero. Note: due to the different data block format this switch has no effect if used on a disk formatted by the fast filing system. Clearblocks ... Not all blocks of a disk may be actually occupied by data. Zoom! uses the disk Bitmap to determine which blocks to read and to encode. By default the Bitmap is ignored. This switch will cause Zoom! to skip unused blocks. Note: this feature will be disabled if the disk to be encoded is not a valid AmigaDOS disk with a properly initialized root/boot block and a valid Bitmap flag. Also important: this switch has no effect if a set of tracks is to be encoded instead of the default 0..79. Verify ........ Each write access to disk will be verified if this switch is active. The actual data verification will be handled by the blitter, so it won't slow down the decoding process too much. Quiet.......... During decompression, don't display texts and notes. NoPrompt....... Don't prompt user to press return before/after encoding/decoding. Selftest ...... This shell option was added to help you to verify if your Zoom! program has been infected by a virus. Zoom! will examine its internal hunk structure and complain if a hunk is not in its standard size or place. These are conditions which can, but need not indicate link virus infection. While this technique does not entirely prevent the creation of trojan horse-versions of Zoom! or that an extremely `clever' virus infects Zoom!, it will probably catch all `dumb' link viruses which put their virus code in front of the first hunk or behind the last hunk of a program. ======================= Zoom! Workbench usage ======================== ====================================================================== If called from Workbench (or from Shell without any arguments) a window will pop up under the mouse pointer containing the following gadgets: Select file ........... Select the name of the file to be encoded/decoded. It will be put into the string gadget to the left of this button. Select drive .......... Select the the drive to write/read the data to be decoded/encoded to/from. This button will cycle through all filing systems which are exactly 80 tracks in size. The name of the filing system will be put into the string gadget to the left of this button. Start data Encoding ... Click this button to start data encoding, click it again to stop the process. Start data Decoding ... Click this button to start data decoding, click it again to stop the process. From track to track ... The starting and ending tracks to encode, note that this feature has to be selected explicitely. Clear unused data ..... Unused data in standard file system blocks will be set to zero if this feature is enabled. Clear unused blocks ... Unused blocks will be skipped if this switch is in effect. Note: cannot be mixed with `from track to track'. Verify write .......... Enables write verification while data files are decoded. This switch has no effect during data encoding. The display on the right hand side of the Zoom! window contains the following elements: Disk .................. The space left on the destination drive. Mem ................... System memory currently available. Size .................. Size of the last encoded/decoded track(s). Usually two values will appear here: the first one denotes the size of the buffer after pre-compression, the second value indicates the final size after Lh-compression. File .................. The size of the encoded data file. Time .................. Time elapsed during data encoding/decoding. Track ................. Current track counter (read / to go). Status ................ The action currently executed. If an output file does not fit on the destination disk, encoding wil be terminated. The starting and ending tracks will be adjusted accordingly to allow the user to continue to encode the disk where the first encoding run stopped. The `name' of the file to be decoded may be a wildcard expression. Zoom! will try to locate and decode all files which match the pattern (note: only the Intuition interface supports this feature). Multiple selection is supported as well: to decode a row of Zoom! output files, hold down the shift-key, click the icons of files you wish to decode, then double-click the Zoom! icon. Note: Zoom! will use the default options to decode the files, the online options can only be changed after all files have been processed! ================ The `ZOOMOPTS' environment variable ================= ====================================================================== The current settings displayed in the Intuition interface are saved in a default environment variable which is read again when Zoom! is called again. This variable is set both in Manx/ARP and in Workbench 1.3 format. The following template is supported: File/K,Drive/K,S=Start/K,E=End/K,D=ClearData/S,B=ClearBlocks/S, V=Verify/S,N=NoIcons/S File .......... The default string to appear in the `File name' gadget. Drive ......... The string to appear in the `Drive' gadget. Start ......... The first track to start data encoding with. End ........... The last track to encode. ClearData ..... Whether unused block data is to be zeroed or not. ClearBlocks ... Whether unused blocks are to be skipped or not. Verify ........ Whether write verification is enabled or not. NoIcons ....... Set this flag if you don't want Zoom! to create icons for each output file. A sample `ZOOMOPTS' value is: `FILE RAM:Blank.zom DRIVE DF0: CLEARDATA CLEARBLOCKS' Zoom! will prefer to set/examine the the `ZOOMOPTS' environment variable in the AmigaDOS 1.3 standard. If this is not possible Zoom! will set/examine the Manx/ARP standard environment variable instead. ============================= ZoomCheck ============================== ====================================================================== Zoom! comes with an auxilary program: ZoomCheck. ZoomCheck will examine the entire structure of file created by Zoom! and report if the checksums are in the correct places. Notes and texts are also displayed while checking (add `QUIET' to the command line to suppress this feature). Notes are added to a Zoom! file with the `NOTE' option (such as `ZoomCheck File.zom NOTE Hello!') or with the `NOTEFROM' option (such as `ZoomCheck File.zom NOTEFROM ENV:MyTag'). Time and date will be saved with the note (the note itself will be encrypted). Zoom and ZoomCheck use 16-bit CRC routines which catch about 99% of possible random changes (I didn't see the need to use 32-bit CRCs to catch another half percent!). ===================== ZoomCheck Workbench usage ====================== ====================================================================== A standard file requester will be opened to let you select the file you want to be checked. A different requester will tell you if the file structure was entirely correct. While the file is examined, notes and the text attached to it will be displayed. Multiple selection is supported as well: hold down the shift key, click the icons of the files you want to check, then double-click the ZoomCheck-icon. ======================= ZoomCheck Shell usage ======================== ====================================================================== The following command line template is diplayed if you type `ZoomCheck ?': File,N=Note/K,F=NoteFrom/K,Quiet/S,Selftest/S File .......... The name of the file to be tested. The text and the notes attached to the file will be displayed unless the `quiet' option is used. Note .......... A note to attach to the archive file. Notes are saved with their creation date and are encrypted. Example: `ZoomCheck Foo Note Bar' NoteFrom ...... Similar to the `Note' keyword this argument will make ZoomCheck attach a note to a given file. The only Difference is that the note will be read from a file (CAREFUL: the note cannot be longer than 79 characters, longer strings will be truncated!). Example: `ZoomCheck Foo NoteFrom ENV:Bar' Quiet ......... By default text and notes associated with an archive file are displayed before the file is actually checked. This feature can be disabled with the `quiet' switch. Selftest ...... This command has the same effect as in the Zoom! main program. ========================== Technical notes =========================== ====================================================================== Zoom! needs a tiny little bit of memory to perform its jobs: Data Encoding ......... 240 KByte Data Decoding ......... 240 KByte Make sure that enough space is available, or Zoom! will complain. Note that disabling write verification will save about 10 KBytes of chip memory. The Lh data encoding/decoding routines are related to LhArc and PKZip. Unlike common data compression/decompression routines such as employed by PowerPacker or Imploder, the performance of Lh cannot be downgraded by adjusting the data sequence search depth. This means that Lh will always encode trying to achieve the best results with the maximum effort. ======================== How fast Zoom! works ======================== ====================================================================== I suppose you are shocked by the amount of memory required for data compression / decompression. Well, as it turns out I traded speed for memory. I tested Zoom! (encoding a disk) against DMS 1.02, LhWarp 1.4 and Warp 1.2a with the following results: Workbench1.3D: Tool | Output file | Time -------+--------------+-------------- Warp | 508226 bytes | 11:49 minutes LhWarp | 399187 bytes | 16:39 minutes DMS | 389270 bytes | 11:00 minutes Zoom! | 371432 bytes | 6:15 minutes There you are: Zoom! really IS faster and more efficient than any currently available disk compression / decompression program. I wouldn't call Zoom! `lightning fast' (Jon Forbes has a license for that ;-), but I am sure that it will show a `few' tools home! =========================== Known problems =========================== ====================================================================== Some features supported by CompDisk/DecompDisk are not included in Zoom! and ZoomCheck yet and probably never will (which depends on your support). Currently known bugs and problems are: - Sector labels are not saved yet. Very few applications apparently use them (FFS is rumored to do so, but I couldn't find any evidence yet). Supporting SecLabels would require two write accesses for a single track (yet another bug in the pre-2.x trackdisk.device?!?). - In the previous releases a number of bugs caused archives to be corrupted. I have removed the traps and pitfalls as far as I could find them. A potential problem still exists: archive files created by older Zoom! releases may not produce correct results if run through the new Zoom! release. Archives created with the new Zoom! release will still work with older Zoom! releases. ============================== Credits =============================== ====================================================================== Credits go to Arp Programmers for Arp 1.3, to Ralf Thanner, who contributed the assembly language CRC routines and the custom bootblock check, to Erik Løvendahl Sørensen for the large number of viruses he sent to Ralf and to K. Wiesel who contributed the pre-compression code. ================ Author's request and Share-Ware fee ================= ====================================================================== Zoom! and ZoomCheck are released as Share-Ware. If you like the programs and use them frequently, please dig into your pocket and send a contribution of at least DM 50,- or 35$ US (DM currently preferred) to: Olaf Barthel, MXM Brabeckstrasse 35 D-3000 Hannover 71 Federal Republic of Germany This program was made available for you convenience, so if you like and use it, don't just think `well, what the h*ck, some guy will send some money - I'll better keep my bucks, who says that Olsen will even answer my letter?'. Without your support there may be no future revisions of Zoom! A registered user will receive the next two major program updates free of charge. If an error shows up, do not hesitate to contact me as soon as possible. My `real world' adress is given above, the following are my EMail addresses: Z-Net: O.BARTHEL@A-Link-H Fido: Olaf Barthel @ 2:240/1 UUCP: o.barthel@a-link-h.zer.sub.org The entire Zoom! package may be noncommercially redistributed, provided that the package is always distributed in its complete form. A small copy fee for media costs is okay but any kind of commercial distribution is strictly forbidden! Comments and suggestions how to improve this program are generally appreciated! ============ Revision history (most recent change first) ============= ====================================================================== V4.2 I have spent several weeks trying to find out why Zoom! would sometimes produce corrupt archives and crash on exit. The main reason was traced back to the byte-run-compressor which has been disabled in the current Zoom! release, i.e. Zoom! will not use the byte-run-compressor to encode disks while the decompressor is still present in the decompression routine (older archive files will require this feature). Stack usage has been greatly reduced at the expense of program length. I have made a few optimizations to the pop-up requesters which will now perform much faster. If a fix for the byte-run-compressor shows up soon enough, the next release will include it. V4.1 There was a small bug in the disk bitmap reader which could corrupt single blocks. This has been fixed (hope so!) V4.0 Added the wrap checksums, the startup link virus check, made some changes to requesters and user interface (nothing spectacular, though). Recompiled and linked using new amiga.lib. Also created a new CRC tool. This is a POST- DISASTER release. V3.10 Changed the minimum sequence length LhEncode uses to 2 bytes which will cause Zoom! to emit even smaller output files. Thanks to Holger's brilliant LhDecode routine the file format is still compatible with the previous releases. If encoding was cancelled a previously allocated text buffer was not released (this has been fixed). V3.9 The previous release had problems if ENV: was not assigned (sorry to all those who nearly got mad at this - don't blame me, blame Manx!). The disk drives to support this feature will eject the disk after encoding/decoding (such as the Applied Engineering HD disk drive). A text file to be encoded along with a disk is read before the actual disk encoding takes place. If started from Workbench Zoom saves icon images with the files it creates. If a disk is accidentally removed while encoding/decoding Zoom! will no longer refuse to continue work after the disk has been reinserted. The older release would clear the contents of the `ZOOMOPTS' variable after running Zoom! from Shell. Zoom! and ZoomCheck have been recompiled with our (Oliver Paesler's and my) new SAS/C compiler (sorry Manx, I really could't take it any more!). Some real voodoo magic was involved in creating a truly reentrant Arp wrapper package for the darn startup code, but, alas I am not a perfect SAS/C priest yet: starting the Zoom! Intuition interface from Shell will cause the program to modify its own data hunk (I have checked any location but couldn't discover where it actually happens). This nuisance does not occur if Zoom! is started from Shell using the Shell interface only. Both Zoom! and ZoomCheck support multiple icon selection. ZoomCheck will read notes from a file. I reworked the compression code a bit. The documentation was rearranged and partly rewritten (the original file was as close to a long-run-midnight-near- delirium-hack as it could possibly be). I forgot to describe the format of the `ZOOMOPTS' environment variable. The power LED will no longer flicker during encoding/decoding (another `benefit' of the Manx<->SAS/C conversion). My old UUCP/SubNet addresses have ceased to exist, I will try to supply an alternative gateway path if anybody needs it (use Fido or standard snail instead). V3.7 This is a kludge solution: I use rstart.o to create the resident part of Zoom! and ZoomCheck: both programs will only be reentrant if used in conjunction with the Arp shell. This release includes a data precompressor which provides a welcome speedup for large rows of equal bytes. The data format is no longer compatible with previous Zoom! releases. V2.6 Both Zoom and ZoomCheck have become reentrant (don't say that you didn't think it was possible with Aztec `C' 5.0!). V2.3 Added new Shell options, fixed a couple of bugs and added an option to protect files by passwords. The settings displayed in the Intuition interface are saved in environment variables (both Manx standard and AmigaDOS 1.3 environment variables are supported). Restarting Zoom will cause it to restore the previously saved settings. Note that only the Intuition interface will read these defaults, the Shell interface always uses the default settings. The disk drive motor is turned off while data is encoded/decoded/written (TrackSalve used to do this job under Kick1.3, but wouldn't do under Kick2.x!). V2.2 Added a couple of new options to Zoom!, such as a small ZoomCheck. Texts and notes are displayed after/while decompression and also appear in the Shell window. The ZoomNote functions have moved into ZoomCheck. V2.1 Added back the dreaded command line interface. Also added wildcard support for decompression (intuition interface only). There's a new support file: ZoomNote. V2.0 Better FFS support, Zoom! has become faster and more efficient. This release is incompatible with previous Zoom! releases. V1.1 New user interface! Thanks to Holger, Ralf & Michael a few bugs were traced (and fixed?). Added write verification and a few more gimmicks. The docs were partly rewritten, as was the program. V1.0 First semi-public release. * Do only its possibilities make it an Amiga? WHERE IS THE MAGIC ???