home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / UTILITY / FILE / IDC40A.ZIP / IDCSHELL.DOC < prev    next >
Encoding:
Text File  |  1990-04-27  |  70.7 KB  |  1,522 lines

  1.  
  2.  
  3.  
  4.                    IDCshell (tm) - A DOS/SHELL AND ZIPFILE UTILITY
  5.  
  6.  
  7.                                NETWORK COMPATIBLE
  8.  
  9.  
  10.                      (for revision history, see IDCSHELL.REV)
  11.  
  12.  
  13.                           Documentation for IDCshell.EXE
  14.  
  15.  
  16.                 Written in assembler by Gary Conway and Shawn Merrick
  17.  
  18.  
  19.                          Infinity Design Concepts, Inc.
  20.  
  21.  
  22.                               Louisville, Kentucky
  23.  
  24.  
  25.      Copyright 1987-90 Infinity Design Concepts, Inc. all rights reserved
  26.  
  27.  
  28.                                    Version 4.0
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.                IDCshell.EXE is a user supported shareware product. As such, 
  41.                you have the opportunity to test drive the program before 
  42.                deciding whether or not to buy. One of the beauties of the 
  43.                shareware concept, is this "try before you buy" idea, but 
  44.                note that this does not relieve you of your obligation to buy 
  45.                if you do find the program to be of value to you and continue 
  46.                using it. You are also encouraged to give copies to your 
  47.                friends for their evaluation, as long as the documentation 
  48.                and program(s) remain intact as they were released by the 
  49.                author and as long as you DO NOT distribute copies of 
  50.                ARCCFG.EXE.  IDCshell.EXE is and will remain the property of 
  51.                Infinity Design Concepts, Inc. This program may not be used 
  52.                in any connection with commercial ventures, nor as a sales 
  53.                aid, without the expressed written consent of the author. All 
  54.                rights are reserved.
  55.  
  56.  
  57.                Shareware distributors may request permission to include our 
  58.                shareware software in their catalogs by submitting a letter 
  59.                of intent to the following address.
  60.  
  61.                                  Infinity Design Concepts, Inc.
  62.                                  1052 Parkway Drive
  63.                                  Louisville, Kentucky 40217
  64.                                  Voice: (502) 636-1234
  65.                                  Modem: (502) 635-5471
  66.  
  67.                          Member  IEEE AOPA
  68.                                  PCCL WINGS
  69.                                  NSPE KSPE
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.                                        REGISTRATION
  82.  
  83.  
  84.                If you find yourself using IDCshell, please take the time to 
  85.                do the right thing and that is register your copy. You have 
  86.                been provided the opportunity to freely test the program 
  87.                before even thinking about registering. This is only fair, 
  88.                so, in fairness, you should reciprocate and register your 
  89.                copy, if you continue using the program.
  90.  
  91.                 Why register if you use the program ?
  92.  
  93.                 1) You get the ARCCFG.EXE program for customizing IDCshell.
  94.                 2) You get notification of updates to IDC software.
  95.                 3) You get FREE net-mail services for contacting IDC.
  96.                 4) It is the right thing to do.
  97.  
  98.  
  99.                You will find the registration form in the ARChive with this 
  100.                document under the name REGISTER.FRM. Please use this form 
  101.                for registration.
  102.  
  103.  
  104.                MASTERCARD AND VISA are accepted, but you MUST follow the 
  105.                instructions in the REGISTER.FRM, otherwise, the order 
  106.                will not be processed.
  107.  
  108.                                 THIS IS NOT A FREE PROGRAM
  109.  
  110.  
  111.  
  112.  
  113.  
  114.   ........................                         ............................
  115.   ........................    TABLE OF CONTENTS    ............................
  116.   .............................................................................
  117.  
  118.  
  119.                                                                Page
  120.            FOREWORD ..........................................  1
  121.            Running IDCshell ..................................  2
  122.            Environment Variables..............................  2
  123.            GENERAL ...........................................  4
  124.            HELP ..............................................  5
  125.            Copy File(s) ......................................  6
  126.            Directory Tree ....................................  6
  127.            Quick Tree Traversal ..............................  6
  128.            Erase file(s) .....................................  7
  129.            Move file(s)  .....................................  7
  130.            Rename file(s) ....................................  7
  131.            Print file(s) .....................................  8
  132.            View ..............................................  9
  133.            ANSI view feature .................................  9
  134.            Wildcard tag ......................................  10
  135.            Mouse .............................................  10
  136.            Editor ............................................  10
  137.            Call NARC .........................................  10
  138.            DOS Shell .........................................  11
  139.            File Attributes ...................................  11
  140.            ERRORS ............................................  12
  141.            Finding a File ....................................  12
  142.            What is a ZIPFILE .................................  13
  143.            Compression Techniques ............................  14
  144.                      Storing .................................  14
  145.                      Shrinking ...............................  14
  146.                      Imploding ...............................  18
  147.            Tagging files .....................................  18
  148.                      Why TAG files anyway ? ..................  18
  149.                      Tagged files and zipfiles ...............  19
  150.            ZIPFILE preview function ..........................  19
  151.            Function Keys .....................................  22
  152.  
  153.  
  154.  
  155.      ........................................................................
  156.      IDCshell (c) 1987-90 Infinity Design Concepts, Inc.  all rights reserved
  157.      ........................................................................
  158.  
  159.                                           FOREWORD
  160.  
  161.  
  162.                IDCshell.EXE is the denouement of many hours of rewarding 
  163.                and painful labor. The long belated release of IDCshell was 
  164.                the consequence of many factors, not the least of which, was a 
  165.                dedication to writing a sleek, powerful and fast utility. 
  166.                Many of the routines have been completely rewritten several 
  167.                times in the ultimate quest for speed and compactness. These 
  168.                are the very reasons that ALL IDC software is written in 
  169.                assembler. There were bugs that took months to fix, once 
  170.                located, others that subtly emerged and still others that lay 
  171.                waiting for that right set of circumstances to pop up. We 
  172.                have made a more than substantial effort to squash bugs in 
  173.                IDCshell and hope that we have hit the mark, one hesitates to 
  174.                be too certain in the software industry. There were a number 
  175.                of people who proved vital in the debugging phases and have 
  176.                made monumental contributions to the project. I would like to 
  177.                thank Curt Edwards for being so damned picky in offering 
  178.                suggestions for features and how they should work. Curt was 
  179.                an endless source of ideas (and more work for me). I would 
  180.                also like to thank Jerry Taylor for his uncanny gift for 
  181.                finding bugs that the entire universe would overlook.
  182.  
  183.                I would like to thank my mom and dad for not killing me at an 
  184.                early age and my wife for not killing me at a later age, 
  185.                although, I may not be out of the woods yet.
  186.  
  187.                IDCshell is the grandchild of B29.COM (first released Sept. 
  188.                1985), a CP/M utility that was very similar to IDCshell and 
  189.                handled LBR files. Many of the features of IDCshell were 
  190.                taken from the original DOS version of B29, which I never 
  191.                released. The directory tree routine is a complete rewrite of 
  192.                IDCTREE.COM, which was released in late '86.
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  218.           
  219.                                      Page 1
  220.  
  221.                IDCshell is written entirely in assembler using the Microsoft 
  222.                MASM 5.1. The program was written on a Kaypro PC and an ALR 
  223.                386/20. The editor of choice was the Norton Editor from 
  224.                Norton Computing. Approximately 30 support programs were 
  225.                developed in QuickBASIC, QuickC or assembler to aid in coding, 
  226.                debugging and testing algorithms and subroutines used in 
  227.                IDCshell. Including these files the source code is well over 
  228.                1MB and some 40,000 lines of code.
  229.  
  230.  
  231.                Acknowledgments:
  232.  
  233.                We at IDC would like to thank the following people for their 
  234.                kind direct or indirect assistance in the development of 
  235.                IDCshell.
  236.  
  237.                Curt Edwards                             Bob Freed
  238.                Jerry Taylor (Creative Applications)     Terry Welch
  239.                Chuck Crumpton                           Carlisle Crutcher
  240.                Murphy                                   Frank Roemer
  241.  
  242.                Programmer's thought: You are your own worst enemy.
  243.  
  244.  
  245.                                               Gary Conway, Pres.
  246.  
  247.  
  248.  
  249.                                      RUNNING IDCshell
  250.                 
  251.  
  252.                When IDCshell is first invoked, it reads the current 
  253.                directory, sorts and formats the entries and displays them on 
  254.                the screen. This is called the FILES SCREEN. The box on the 
  255.                right hand side of the screen shows IDCshell's commands. Note 
  256.                that the F1 key will bring up a full screen of help. Some of 
  257.                IDCshell's commands can be accessed through the command bar 
  258.                at the bottom of the screen. The cursor keys or the mouse may 
  259.                be used to move the highlight bar left and right. Once the 
  260.                highlight bar is over the desired selection, the ENTER key 
  261.                will execute that command. Alternatively, you can use the 
  262.                first letter of each of the menu bar commands with the same 
  263.                effect.
  264.  
  265.                Throughout the program, the left mouse button simulates the 
  266.                ENTER key and the right mouse button simulates the ESC key.
  267.  
  268.  
  269.                                    ENVIRONMENT VARIABLES
  270.  
  271.  
  272.                If you don't know what an environment variable is, then 
  273.                continue reading. If you DO know, then skip to "The Goods" 
  274.                section below.
  275.  
  276.  
  277.  
  278.  
  279.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  280.           
  281.                                      Page 2
  282.  
  283.                      What are they ?
  284.  
  285.                An environment variable is a convenient way for programs to 
  286.                communicate with DOS or with each other through a commonly 
  287.                shared spot(s) in memory. If you type "SET" <ENTER> at the 
  288.                DOS prompt, DOS will respond by showing you the current spot 
  289.                of shared memory which we call the environment. These text 
  290.                strings can be created,read, modified and deleted at any time 
  291.                by any program. Each variable has a certain format that must 
  292.                be adhered to. The format is as follows,
  293.  
  294.                      variable_name = string
  295.  
  296.                 An example would be     IDCED=C:\UTILITY\WS.EXE
  297.  
  298.                Spaces are allowed before and after the equal sign. This 
  299.                variable will mean absolutely nothing to DOS, but, to 
  300.                IDCshell, it will show the way to your editor. The variable 
  301.                name here is IDCED and the string is C:\UTILITY\WS which is 
  302.                the pathname for finding WordStar on the disk. You can change 
  303.                this string to anything you want by simply typing --- SET 
  304.                IDCED= (and type your pathname for your editor). IDCshell 
  305.                uses several of these environment variables to communicate 
  306.                with you and you should set them up in your AUTOEXEC.BAT 
  307.                file.
  308.  
  309.                What do I do if DOS says, "Out of Environment Space" ?
  310.  
  311.                DOS reserves only so much space for the environment strings, 
  312.                and if you have a long search path or a lot of strings, then 
  313.                you may run out of space. I can offer two suggestions, one 
  314.                for DOS 3.1 and one for DOS 3.2. There is a "switch" that you 
  315.                can add to your CONFIG.SYS file (If you don't have one, then 
  316.                you should !). One of the lines in your config.sys file 
  317.                should read Shell=C:\COMMAND.COM or something similar. You 
  318.                can add the following to the end of this line to increase 
  319.                your environment space.
  320.  
  321.                      DOS 3.1 -      /E:nn    where nn = 10 up to 62. This
  322.                                              number times 16 is the length
  323.                                              of your environment.
  324.  
  325.                           example:  Shell=c:\command.com c:\ /P/E:10
  326.  
  327.                                     This would reserve 160 bytes.
  328.  
  329.                      DOS 3.2 - add  /E:nnnn  where nnnn is the actual
  330.                                              number of bytes to reserve.
  331.  
  332.                           example: Shell=c:\command.com c:\ /P/E:160
  333.  
  334.                                     This would reserve 160 bytes.
  335.  
  336.  
  337.                 Note that the minimum environment size is 160 bytes.
  338.  
  339.  
  340.  
  341.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  342.           
  343.                                      Page 3
  344.  
  345.                The Goods ..
  346.                
  347.                      IDCED=c:\editors\ws.exe
  348.  
  349.                           Use this variable to tell IDCshell where your
  350.                           editor is located, so that when the F9 key is
  351.                           pressed to invoke the editor, IDCshell will know
  352.                           where to locate it. The drive and path and editors
  353.                           name must be given (in upper or lower case). The
  354.                           file extension (.COM or .EXE) MUST be given.
  355.                
  356.                       NARCPATH=c:\utility\narc.exe
  357.  
  358.                           Use this variable to tell IDCshell where to find
  359.                           NARC when the "N" key is pressed. As with IDCED,
  360.                           the drive and path and filename and extension must
  361.                           be given.
  362.                
  363.                       IDCHELP=c:\utility\idchelp.hlp
  364.  
  365.                           Use this variable to tell IDCshell where to find
  366.                           the IDCshell help file when the F1 key is pressed.
  367.  
  368.  
  369.                       IDCTEMP=e:\ramdisk
  370.  
  371.                           Use this variable to tell IDCshell where it can
  372.                           place temporary work files. If you have a ramdisk
  373.                           set up, then this would be a good use for it since
  374.                           all file operations will be MUCH faster from
  375.                           the ramdisk.
  376.  
  377.                All of the above variables can be set up in your Autoexec.bat 
  378.                file. The format is as follows,
  379.  
  380.                SET variablename = pathname
  381.  
  382.                                           GENERAL
  383.  
  384.  
  385.                IDCshell is laid out with many menus, windows, dialog boxes 
  386.                and screens, all emanating from the MAIN SCREEN. This screen 
  387.                displays the program name and release number in the upper 
  388.                left hand corner, followed by the current drive/path, this is 
  389.                the status line. Just below the status line are headers for 
  390.                information describing each file. The fields are, filename, 
  391.                filesize, file date, file time and file attributes. The tag 
  392.                status indicators are located at the right end of this line 
  393.                and show how many files in the current directory are tagged 
  394.                and how many bytes are represented by the tagged files.
  395.  
  396.                At the bottom of the screen is the command line. Here you may 
  397.                use the cursor keys or the mouse to SELECT any of the 
  398.                commands and then use the ENTER key or the left mouse button 
  399.                to EXECUTE the highlighted command. You may also use the 
  400.                letter in each command that is capitalized. The last line of 
  401.                the screen displays the name of the current zipfile (if one 
  402.  
  403.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  404.           
  405.                                      Page 4
  406.  
  407.                has been selected).
  408.  
  409.                The remainder of the screen is broken vertically into two 
  410.                halves. The left half displays the filenames and directory 
  411.                names that are located in the current directory. Directory 
  412.                names are denoted with <dir> in the file size field and 
  413.                volume labels are denoted similarly with <vol>. The cursor 
  414.                keys, Pg Up, Pg Dn, Home and End keys allow easy navigation 
  415.                through the list. The mouse may also be used to simulate the 
  416.                up and down arrows. Note that you may find any file easily 
  417.                with the ALT-letter combination (see finding files).
  418.  
  419.                The right side of the screen is the command menu window 
  420.                showing most of the commands that IDCshell provides and a 
  421.                very brief description of each. Note that much more detailed 
  422.                help is always on line with the F1 (HELP) key. At the bottom 
  423.                of the menu window, the total number of files in the current 
  424.                directory are displayed. Note that this count DOES NOT 
  425.                include directory names or volume labels, nor does it include 
  426.                the "." and ".." entries (although IDCshell will not display 
  427.                them).
  428.  
  429.                At the top of the command menu window, the volume label of 
  430.                the current disk is displayed.
  431.  
  432.                The command menu window is an interesting story. The first 
  433.                version of IDCshell (then B29 and later IDC-ARC), looked very 
  434.                much different than the version you have now. There was a 
  435.                window for each of the commands on the command line and as 
  436.                you moved the cursor bar right and left, the menu window 
  437.                would change giving much more detailed information than is 
  438.                currently displayed. As commands were added, this windowing 
  439.                system proved inadequate and the IDC menu compiler was 
  440.                written so that a complete on-line help facility was almost 
  441.                always available. This new system gave even more details 
  442.                about the commands. It was also during this time, that the 
  443.                help facility was incorporated into NARC.
  444.  
  445.  
  446.                                       THE HELP SCREEN
  447.  
  448.  
  449.                From the files screen, it is always possible to call the 
  450.                context sensitive help system. Hitting the F1 key will cause 
  451.                a full screen of help to pop up that has information specific 
  452.                to the command that the cursor bar was pointing to on the 
  453.                command line.
  454.  
  455.                Once the help window is opened up, it is then possible to get 
  456.                help on ANY of the commands. The Home key will take you to 
  457.                the help index (as will the "I" key). You can put the window 
  458.                away at any time with the ESC key.
  459.  
  460.                Note that the environment variable IDCHELP must be set for 
  461.                the help feature to work correctly. See "Environment 
  462.                variables".
  463.  
  464.  
  465.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  466.           
  467.                                      Page 5
  468.  
  469.                                         COPY FILES
  470.  
  471.  
  472.                The copy command will allow copying files from one directory 
  473.                or disk to another. When this command is invoked, IDCshell 
  474.                first checks to see if there are any tagged files. If there 
  475.                are none, then it is assumes that you wish to copy the 
  476.                highlighted file. If there are tagged files, then IDCshell 
  477.                makes no assumptions and asks you whether you wish to copy 
  478.                the highlighted file or the tagged files.
  479.  
  480.                After resolving the above, IDCshell will display a directory 
  481.                tree from which you can select the destination drive or 
  482.                directory. If you wish to copy to another drive, simply use 
  483.                the "L" command to log a new disk, select the destination 
  484.                directory there and the copy will proceed.
  485.  
  486.  
  487.  
  488.                                       DIRECTORY TREE
  489.  
  490.  
  491.                The directory tree reads the disk directory from the current 
  492.                disk and locates all sub-directories from this information. 
  493.                The sub-dirs are then sorted and sub-sorted and formatted for 
  494.                a visual tree presentation.
  495.  
  496.                The commands available when the tree is displayed are the 
  497.                following;
  498.  
  499.                ALT-letter  this combination of keys will position the
  500.                            highlight bar on the first subdirectory that
  501.                            begins with "letter"
  502.                Pg UP      - goes to the previous page of the tree
  503.                Pg DOWN    - goes to the next page of the tree
  504.                Home       - goes to the top of the tree (root)
  505.                End        - goes to the end of the tree
  506.                ^Pg UP     - goes to the top of the current page
  507.                ^Pg DOWN   - goes to the bottom of the current page
  508.                "\" key    - finds the root (same as Home key)
  509.                R          - remove the highlighted directory from disk
  510.                             (only if directory is empty)
  511.                M          - make new directory, you are prompted for a name
  512.                L          - log new disk drive
  513.                P          - send copy of tree to printer on LPT1:
  514.                ENTER      - go to highlighted directory
  515.                ESC        - return to where you were before without changing
  516.                             directories
  517.                ^PGUP      - moves highlight bar to top of screen
  518.                ^PGDN      - moves highlight bar to bottom of screen
  519.  
  520.  
  521.                Quick Tree Traversal.
  522.  
  523.                BIG NOTE:  There are four other keys that may be used when 
  524.                moving around your disk tree. When you are NOT on the 
  525.                directory screen mentioned above, that is, when you are at 
  526.  
  527.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  528.           
  529.                                      Page 6
  530.  
  531.                the FILES SCREEN, you may use the "-" or the "G" keys to move 
  532.                one directory toward the root. Conversely, if you highlight a 
  533.                directory entry (denoted with <dir> in the size field), 
  534.                you can use the "+" or the "H" keys to select or move down 
  535.                the tree away from the root. In either case, the current 
  536.                directory is changed to the newly selected one and the screen 
  537.                is updated with the new files.
  538.  
  539.  
  540.                                         ERASE FILES
  541.  
  542.                The "E" command will first check to see if there are any 
  543.                tagged files, if there are none, then IDCshell assumes that 
  544.                you wish to copy the highlighted file, if there are tagged 
  545.                files, then IDCshell will ask whether you wish to erase the 
  546.                highlighted or tagged files.
  547.  
  548.                Files that are found to have the Read Only attribute set, 
  549.                cause IDCshell to ask before deleting them.
  550.  
  551.  
  552.                                         MOVE FILES
  553.  
  554.  
  555.                Files can be moved from one subdirectory to another ON THE 
  556.                SAME DISK. Moving a file is similar to copying a file, except 
  557.                that moving is faster and the file is actually moved from one 
  558.                subdirectory to another, not just duplicated as in copying. 
  559.                The file will also, no longer exist in the source directory 
  560.                after the move. The one limitation to moving files, is that 
  561.                you cannot move a file from one disk to another, here, you 
  562.                must use copy.
  563.  
  564.                If IDCshell finds no tagged files, then the currently 
  565.                highlighted file will be moved. If there are tagged files, 
  566.                then IDCshell will ask whether you wish to move the 
  567.                highlighted or tagged files. Next IDCshell will take you to 
  568.                the directory tree, where you can select the destination 
  569.                directory for the move.
  570.  
  571.  
  572.                                       RENAME FILE(S)
  573.  
  574.                The RENAME "R" command allows you to rename any file in the 
  575.                current directory . To rename a single file highlight the 
  576.                chosen file and press "R" IDCshell will prompt you with -
  577.  
  578.                
  579.                   "ENTER NEW FILE NAME (OR "*" FOR WILDCARD RENAME)"
  580.                 
  581.                At this time you can enter your new file name and press 
  582.                <ENTER>. However, if you wanted to change several files that 
  583.                match a wildcard mask (BIG???.*), at the above mentioned 
  584.                prompt you would enter "*" , IDCshell would then prompt you 
  585.                with -
  586.  
  587.  
  588.  
  589.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  590.           
  591.                                      Page 7
  592.  
  593.                          "ENTER OLD NAME (WILDCARD OK)"
  594.  
  595.                Now you can ENTER something like *.PRG and IDCshell would 
  596.                then prompt you with -
  597.  
  598.                          "ENTER NEW NAME (WILDCARD OK)"
  599.  
  600.                 Now you would ENTER something like *.CMD this action
  601.                 would result in all .PRG files being renamed to .CMD
  602.                 files.
  603.                 
  604.  
  605.                Note that the rename function can be used to rename sub-
  606.                directories as well as normal files. Note also that the 
  607.                volume label cannot be chaned in this way.
  608.  
  609.  
  610.  
  611.                                        PRINT FILE(S)
  612.                The print routine will print the highlighted or tagged 
  613.                file(s). You have several options here. The first option that 
  614.                comes to the screen is the printer string option. This allows 
  615.                you to select a character font for printing the file. There 
  616.                are four optional fonts. they are ,
  617.  
  618.                    0  Send no printer string (use printer default)
  619.                    1  Set printer to 10 cpi (pica)
  620.                    2  Set printer to 12 cpi (elite)
  621.                    3  Set printer to 17 cpi (compressed)
  622.  
  623.                These printer strings come with IDCshell configured for an 
  624.                EPSON printer. They can be changed to anything you like with 
  625.                ARCCFG.EXE. Each string has a maximum length of 9 bytes. The 
  626.                ESC key aborts the print operation completely.
  627.  
  628.                The second option tells IDCshell how to format the document. 
  629.                There are three options. Each option is toggled between YES 
  630.                and NO with the SPACE bar. the ESC key aborts the print
  631.                operation completely and the enter key accepts the currently 
  632.                displayed options.
  633.  
  634.                 Format -
  635.  
  636.                YES - This option tells IDCshell that you want the document 
  637.                formatted during printing. The formatting includes page 
  638.                numbers,page breaks and expanded tabs.
  639.                      
  640.                NO - This option tells IDCshell not to perform any formatting 
  641.                at all during print. This is for use on files that have 
  642.                already been formatted with formfeeds etc.
  643.  
  644.                 Strip High bit -
  645.                      
  646.                YES - This option tells IDCshell to strip the high bit off of 
  647.                each character that is printed. This is to allow WordStar (c) 
  648.                type documents to be printed correctly since WordStar and 
  649.                other word processors use the high bit of some characters to 
  650.  
  651.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  652.           
  653.                                      Page 8
  654.  
  655.                denote paragraph alignment etc.
  656.  
  657.                NO - Do not strip the high bit from each character.
  658.  
  659.                 Strip Control Characters -
  660.  
  661.                YES - This option tells IDCshell to remove all control 
  662.                characters from the document before printing. The exceptions 
  663.                to this are carriage returns,linefeeds and tabs.
  664.  
  665.                NO - Do not remove control characters.
  666.                                        VIEW
  667.                                
  668.                The VIEW "V" command allows you to view any file in the 
  669.                current directory by simply moving the highlight bar to the 
  670.                chosen file and pressing "V". This command is very useful for 
  671.                viewing ANY type of file, including binary. By using the MODE 
  672.                "M" function you may toggle between ASCII or HEX views. The 
  673.                FILTER "F" function toggles the filter so that the out put of 
  674.                some word processors can be displayed correctly.
  675.  
  676.                Last but not least is the SEARCH "S" function. This function 
  677.                can be used to find a key word or heading within a file. When 
  678.                the SEARCH function is chosen  IDCshell will prompt you with-
  679.  
  680.                                 " ENTER TEXT TO FIND "
  681.  
  682.                Simply ENTER the text to be found IDCshell will locate the 
  683.                first listing of this text and highlight it onscreen. The 
  684.                search next function will locate the next occurrence of a 
  685.                matching string. If no matches are located, a message will 
  686.                appear. Note that CONTROL-R will repeat the last text when 
  687.                entering the string to find.
  688.  
  689.  
  690.                                      ANSI VIEW FEATURE
  691.  
  692.  
  693.                This feature is invoked by the F3 key and is UNIQUE to
  694.                IDCshell. The highlighted file will be displayed on the 
  695.                screen as though it were a file containing ANSI escape 
  696.                sequences. You will note that there are no page up/down 
  697.                commands in this mode. The reason for this is simple, MOST 
  698.                ansi files are single page files and most of the editors that 
  699.                create ansi files, create single page files. You may PAUSE 
  700.                the screen output with the SPACE bar or abort with ESC or 
  701.                ENTER.
  702.  
  703.                This feature is provided primarily for SYSOPS of bulletin 
  704.                boards since most BBS software these days supports ANSI files 
  705.                when transceiving in color. This is an easy method of looking 
  706.                at your compliment of ANSI files.
  707.  
  708.  
  709.                NOTE: You MUST have ANSI.SYS loaded in your CONFIG.SYS file 
  710.                for this feature to function correctly.
  711.  
  712.  
  713.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  714.           
  715.                                      Page 9
  716.  
  717.  
  718.  
  719.  
  720.                                    WILDCARD TAG
  721.  
  722.                If you wish to tag several files that match a wildcard 
  723.                filemask (BIGTOOL?.*, for example), the current directory use 
  724.                the WILDCARD TAG "W" function. To use this function press "W" 
  725.                and IDCshell will prompt you with-
  726.  
  727.                                ENTER WILDCARD MASK TO TAG :
  728.  
  729.                Entering something like *.PRG, would result in all files 
  730.                with the extension of .PRG being tagged. Note that tagged 
  731.                files are used when arcing, copying, deleting, renaming or 
  732.                printing files.
  733.  
  734.  
  735.                                    MOUSE FUNCTION
  736.                  
  737.                The mouse function is always enabled (providing of course 
  738.                that you have a mouse) and controls the highlight bar and 
  739.                command line. The left mouse button simulates the ENTER key 
  740.                and the right mouse button simulates the ESC key. Mouse 
  741.                sensitivity may be changed in ARCCFG by decreasing or 
  742.                increasing the values for vertical or horizontal movement 
  743.                using the appropriate function key. You may also disable the 
  744.                mouse function in ARCCFG if you so desire.
  745.  
  746.  
  747.  
  748.                                    INVOKING YOUR EDITOR
  749.  
  750.                
  751.                IDCshell can call your editor with the F9 key from the main 
  752.                menu. IDCshell must first be told what your editors' name is 
  753.                and where to locate it. This is done via the environment 
  754.                variable IDCED. For complete information on how to set this 
  755.                environment variable, see the ENVIRONMENT VARIABLE section.
  756.  
  757.                Once the environment variable is set up, the F9 key will open 
  758.                the currently highlighted file with your editor. Note that 
  759.                the ALT-F9 key combination will call the editor and will not 
  760.                pass a filename to edit.
  761.  
  762.  
  763.  
  764.                                      CALL NARC (tm)
  765.  
  766.                To execute NARC you must make a change in your AUTOEXEC.BAT 
  767.                file so that IDCshell will be able to find NARC. The 
  768.                following line (with your drive and path filled in) should be 
  769.                put into your AUTOEXEC.BAT file.
  770.  
  771.                              SET NARCPATH = DRIVE:\PATH
  772.  
  773.                This is called an environment variable if you don't fully 
  774.  
  775.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  776.           
  777.                                      Page 10
  778.  
  779.                understand this it is suggested that you read the section ;
  780.  
  781.  
  782.                                 ENVIRONMENT VARIABLES
  783.  
  784.                Once you have set up your autoexec.bat file it is very simple 
  785.                to call NARC by simply press "N" and NARC will be executed. 
  786.                If the highlighted file is an zipfile, then this filename 
  787.                will be passed to NARC and the zipfile opened. If the 
  788.                filename is NOT an zipfile, then no filename is passed, NARC 
  789.                comes up in its default condition.
  790.                 
  791.                 
  792.  
  793.                                          DOS SHELL
  794.  
  795.                If for some reason you wish to exit IDCshell temporarily this 
  796.                is easily accomplished by using the F5 (dos shell) command. 
  797.                THIS will allow you to run DOS commands outside of IDCshell 
  798.                and return by typing EXIT when you are finished. It is also 
  799.                possible to invoke a second copy of the DOS command processor 
  800.                by typing "COMMAND" at the first DOS prompt (if you have 
  801.                enough RAM left). 
  802.  
  803.  
  804.                                        FILE ATTRIBUTES
  805.                                                                         
  806.                Each file on your disk has one or more file attributes.
  807.                Here is a brief description of these attributes.
  808.  
  809.                 READ ONLY (R)  The file cannot be deleted NOR can it be 
  810.                                modified under normal circumstances.
  811.  
  812.                 SYSTEM (S)     Your MSDOS files are system files
  813.  
  814.                 HIDDEN (H)     These files can be executed but do not show
  815.                                up when you request DOS to show the directory 
  816.                                via the DOS DIR command.
  817.  
  818.                 ARCHIVE (A)    Not to be confused with .ARC files. This 
  819.                                attribute is used primarily for backing up 
  820.                                harddisks.
  821.  
  822.                IDCshell shows these attributes in the "Attr" column next to 
  823.                each file in the directory using the abbreviations, R H S or 
  824.                A. If you have not tagged any files IDCshell will assume that 
  825.                you wish to change the highlighted file. In order to change a 
  826.                file's attributes press the "Y" key and IDCshell will display 
  827.                a dialog box showing each of the possible file attributes. 
  828.                Beneath each of the attributes is displayed either "YES" or 
  829.                "NO",indicating that the attribute will be either turned on 
  830.                "YES" or turned off "NO". The left and right arrow keys will 
  831.                move the highlight bar to the selections in the box. The 
  832.                SPACE bar toggles the attributes between the "YES" and "NO" 
  833.                states.
  834.  
  835.                 The ENTER key will cause the file(s) attribute(s) to be set.
  836.  
  837.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  838.           
  839.                                      Page 11
  840.  
  841.  
  842.                 The ESC key will abort the operation.
  843.  
  844.                Note that the attributes of the subdirectories may also be 
  845.                changed with this command, but only one directory at at time 
  846.                because you cannot tag subdirectories.
  847.  
  848.  
  849.                                           ERRORS
  850.  
  851.                             Requires DOS version 2.0 or above.
  852.  
  853.                When IDCshell is first invoked, it checks the DOS version, if 
  854.                it is found that the system is operating on a DOS version 
  855.                lower than 2.0, IDCshell exits with the above message.
  856.  
  857.  
  858.                          Insufficient Free Memory to Run IDCshell.
  859.  
  860.                When IDCshell is first invoked, it checks to see if there is 
  861.                enough RAM available to run the program, if not, IDCshell 
  862.                exits to DOS with the above message.
  863.  
  864.  
  865.                       Error: Can't Move a file to ITSELF, Hit ENTER.
  866.  
  867.  
  868.                When trying to move files, if you do not select a destination 
  869.                directory different from the source, then the move is aborted 
  870.                with the above message.
  871.  
  872.  
  873.                           Error: Unable to Move File, Hit ENTER.
  874.  
  875.                DOS has reported an error in trying to move the file, disk 
  876.                removal etc.
  877.  
  878.  
  879.                         Error: Writing Destination File, Hit ENTER.
  880.                           Error: Reading Source File, Hit ENTER.
  881.  
  882.                Either of the above messages can be caused when trying to 
  883.                copy file(s) if the disk is removed.
  884.  
  885.  
  886.                Unable to Open Source File, Hit ENTER.
  887.  
  888.  
  889.                Destination Directory is Full, Hit ENTER.
  890.  
  891.  
  892.                                        FINDING FILES
  893.  
  894.  
  895.                The "F" command will allow you to quickly find any file in 
  896.                any subdirectory of a disk. This is the global find feature. 
  897.                Invoked by the"F" key, this function will ask for a wildcard 
  898.  
  899.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  900.           
  901.                                      Page 12
  902.  
  903.                filename and will proceed to locate a matching file on the 
  904.                disk. As always, ESCape or ENTER will abort the operation 
  905.                while entering the filename. Once the filename is given, a 
  906.                directory tree appears, along with the search mask. The 
  907.                cursor bar moves down the tree as it hunts for your file. 
  908.                When one is found, a menu bar appears at the bottom of the 
  909.                screen asking for further instructions. At this point you may 
  910.                do one of three things;
  911.  
  912.                      (J)ump to the directory where your file was found
  913.                      (C)ontinue the search, looking for the next match
  914.                      (Q)uit the search operation and return to the files
  915.                           screen
  916.  
  917.                Note that if the directory tree has not been previously 
  918.                scanned (and remembered) with the "D" command from the files 
  919.                screen, then it is scanned for the find operation. If the 
  920.                tree has already been read, then it is not read again, 
  921.                speeding up the find operation considerably.
  922.  
  923.  
  924.                You may also find files in the current directory with the 
  925.                ALT-letter key combination. Here, to find a  file that 
  926.                started with the letter "Q", for example, you would enter 
  927.                ALT-Q and the first file starting with the letter "Q" would 
  928.                be highlighted. Note also, that hitting ALT-Q again, will 
  929.                locate the next filename that starts with the letter "Q".
  930.  
  931.  
  932.  
  933.                                    WHAT IS A ZIPFILE ?
  934.  
  935.  
  936.                A zipfile is a collection of files all rolled into one 
  937.                file. You could, for example, store all of last month's 
  938.                invoices in one ARC file for organizational purposes. Suppose 
  939.                that all of these invoices totaled 400K when adding their 
  940.                file sizes. If you only had 360K floppy drives, you could not 
  941.                put all of this information on a single floppy. With a 
  942.                zipfile, it is very possible that you can do just that. The 
  943.                arcing program will compress the files by as much as 99% and 
  944.                store them into one file, an ARC file, that will very likely 
  945.                be much smaller than 360K and thus fit on one floppy.
  946.  
  947.                Each file in the zipfile has a header that  gives statistical 
  948.                information about the file such as the filename, actual size 
  949.                and compressed size, what method of compression was used (if 
  950.                any), a CRC of the file, and the date and time of the file.
  951.  
  952.  
  953.                History:
  954.  
  955.                In the CP/M world, we had what were called library files. 
  956.                These files were collections of ones rolled into one. There 
  957.                was no compression offered, unless you compressed the files 
  958.                BEFORE inserting them into the library (.LBR). Also, the 
  959.                number of entries in the library had to be specified at the 
  960.  
  961.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  962.           
  963.                                      Page 13
  964.  
  965.                time the library was built. We had several programs to deal 
  966.                with libraries, LU, NULU and IDC's B29. Library files were 
  967.                soon ported to DOS. This was great until Thom Henderson of 
  968.                System Enhancement Associates (SEA) brought forward his 
  969.                version of library files, called archives (.ARC). What 
  970.                ARC.EXE offered was a new file format and compression of the 
  971.                files as they were inserted. Truly the library file had come 
  972.                of age, except we now called them .ARC files. The newer file 
  973.                compression schemes are used in zipfiles, which were jointly 
  974.                developed by IDC and PKWARE and dedicated to the public 
  975.                domain in Feb 1989.
  976.  
  977.  
  978.                                           STORING
  979.  
  980.                There is really no story to tell here, the input file is 
  981.                merely copied into the zipfile. This method is really a last 
  982.                resort. When none of the other compression methods will yield 
  983.                a smaller output file, then storing is used. You will notice 
  984.                that not many files in zipfiles are simply stored and when 
  985.                they are they are usually VERY SMALL files. 
  986.  
  987.  
  988.                                          SHRINKING
  989.  
  990.  
  991.                The current crunching and squashing algorithms take their 
  992.                roots from an article by Terry Welch in IEEE COMPUTER, June 
  993.                1984, entitled "A Technique for High Performance Data 
  994.                Compression". This article built on another article by J. Ziv 
  995.                and A. Lempel, entitled, "A universal algorithm for 
  996.                sequential data compression. The term "LZW" was coined in the 
  997.                article by Welch from the three authors' initials.
  998.  
  999.  
  1000.                Shrinking is a variation of the LZW algorithm, since the 
  1001.                original made no provision for variable length output codes, 
  1002.                nor did it call for an adaptive reset. The LZW algorithm 
  1003.                begins by constructing a table in memory, where each entry in 
  1004.                the table contains one of the 256 "atomic" characters along 
  1005.                with a pointer, thus the format for each entry is,
  1006.  
  1007.  
  1008.                                      <POINTER> <CHAR>
  1009.  
  1010.  
  1011.                Where POINTER is just that, a number that "points" to one of 
  1012.                the other entries in the table. The reason for the pointer 
  1013.                should become apparent as we proceed. The following IS the 
  1014.                complete LZW algorithm. It appears, at first glance, to be 
  1015.                very simple, but the ramifications get downright nasty very 
  1016.                quickly.
  1017.  
  1018.                The LZW algorithm,
  1019.  
  1020.  
  1021.                      Initialize the string table as described above.
  1022.  
  1023.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  1024.           
  1025.                                      Page 14
  1026.  
  1027.                      Get the first character from the input file (omega).
  1028.                Rept: Get the next character from input (K).
  1029.                        IF no more characters then output code(omega): DONE
  1030.                        IF omega-K exists in table then
  1031.                            omega = omega-K: GO REPT
  1032.                        ELSE
  1033.                            omega-K not in table, output code(omega)
  1034.                            insert omega-K into table
  1035.                            omega = K
  1036.                            GOTO REPT
  1037.                        ENDIF
  1038.  
  1039.  
  1040.                This is the algorithm as originally described by Welch. Note 
  1041.                that it does not make provision for the string table filling. 
  1042.                It should be apparent that when the string table fills, no 
  1043.                more strings (omega-K) could be added to the table. More on 
  1044.                this later.
  1045.  
  1046.                What the algorithm does, in effect, is to look at the input 
  1047.                file, byte by byte, looking for the longest sequence of 
  1048.                characters that it "recognizes". A sequence of characters (a 
  1049.                string) is "recognized" if it is located in the string table. 
  1050.                The omega in the algorithm above, represents this string of 
  1051.                characters and the K represents the last character read from 
  1052.                the input file and appended to this string. As an example, 
  1053.                take a look at the start of this paragraph and imagine that 
  1054.                you are looking at the input file. The algorithm would get 
  1055.                the first character "W" and call it omega. It would then get 
  1056.                the second character "h" and call it K. We would then search 
  1057.                the string table for an entry where <POINTER> points to the 
  1058.                location in the table where the "W" entry was made at 
  1059.                initialization AND <CHAR> = K. If we find this, then we are 
  1060.                ready to get another character and add it to the omega 
  1061.                string. If we don't find a match in the table, then a new 
  1062.                entry is made in the table and omega is sent to the output 
  1063.                file as a "CODE". This sequence continues until the input 
  1064.                file is exhausted. 
  1065.  
  1066.                It is in examining the output "CODES" mentioned above, that 
  1067.                we find one of the major differences between SQUASHING and 
  1068.                CRUNCHING. Both of the algorithms vary the output code 
  1069.                length, they both begin with 9 bits, but crunching ends with 
  1070.                12 bits and squashing ends with 13 bits. When we described 
  1071.                the string table at the start of this discussion, we said 
  1072.                that the table was initialized with 256 entries, one for each 
  1073.                of the 256 atomic characters. Well, the algorithm has shown 
  1074.                us that we are going to be adding strings to the table, so it 
  1075.                seems that we will have more than just the 256 atomic 
  1076.                entries. But how many entries ? In the case of crunching, 
  1077.                remember, we said that our maximum code length was 12 bits, 
  1078.                in binary, 12 bits can represent numbers up to 4096, thus we 
  1079.                have our maximum number of entries in the table. Squashing 
  1080.                has a maximum code length of 13 bits, which allows for 8192 
  1081.                entries. From this, is should be somewhat intuitive, that 
  1082.                squashing allows learning more strings that does crunching, 
  1083.                and indeed it does.
  1084.  
  1085.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  1086.           
  1087.                                      Page 15
  1088.  
  1089.  
  1090.                But what happens when the string table fills ? The first LZW 
  1091.                implementation as described in the algorithm, did not provide 
  1092.                for this case and simply stopped "learning" strings, because 
  1093.                there was no more room to add them to the string table. Later 
  1094.                versions (and squashing) perform what is called an "adaptive 
  1095.                reset" of the string table when it fills. This is done by 
  1096.                sending a special code to the output file that will tell the 
  1097.                uncompressor to reset its table and continue.
  1098.  
  1099.                The variable length output codes are explained by looking at 
  1100.                the codes that are output. The first "learned" code is output 
  1101.                as the number 257 and the second as 258 and so on up to the 
  1102.                table size, 4096 (crunch) or 8192 (squash). As the numbers 
  1103.                get larger, it takes more bits to represent them, obviously, 
  1104.                you cannot represent 4096 with 9 bits.
  1105.  
  1106.                In actuality, one never lets the table fill at all, in fact, 
  1107.                the best compression speeds are achieved by not letting the 
  1108.                table get over 75-80% full. This is precipitated by the 
  1109.                method for looking entries up in the table. Remember, that 
  1110.                the algorithm says that we must see if omega-K exists in the 
  1111.                table. This implies that we must search the table once for 
  1112.                each byte of the input file. The EASIEST way to search the 
  1113.                table in by looking at the first entry for a match, and then 
  1114.                the next and so on, until we have examined the whole table. 
  1115.                This is called a linear probe. To see the disastrous 
  1116.                ramifications of a linear probe for LZW, we must turn to a 
  1117.                little mathematics.
  1118.  
  1119.  
  1120.                MATHEMATICAL FACT 1.
  1121.                The smallest codeable loop (in assembler) for the linear 
  1122.                probe takes 6.3 micro-seconds to execute on a 20mhz 386 
  1123.                computer.
  1124.  
  1125.                MATHEMATICAL FACT 2.
  1126.                Our sample file is 15000 bytes long.
  1127.  
  1128.                MATHEMATICAL FACT 3.
  1129.                The table size is 4096 entries, so we CHOOSE an average 
  1130.                figure of 2000 locations searched for each input byte.
  1131.  
  1132.                Multiplying,
  1133.  
  1134.                loop iteration time X avg. iterations/search X bytes in file
  1135.  
  1136.                we end up with 189 seconds or just over 3 minutes to compress 
  1137.                our 15K file. Here we have definitely delved into the 
  1138.                unlivable. Note also, that we have not taken into account the 
  1139.                rest of the compression code overhead, we have only looked at 
  1140.                how much time the compressor would spend/waste searching the 
  1141.                table.
  1142.  
  1143.                It seems there must be a better way, and indeed there is, the 
  1144.                hash function. Our table has a finite number of entries and 
  1145.                all we wish to do is search the table for a match, so if we 
  1146.  
  1147.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  1148.           
  1149.                                      Page 16
  1150.  
  1151.                had a mathematical black box where we could input a number 
  1152.                and have it output a unique number, our searches would be 
  1153.                made a lot faster. We input a number (omega-K) and the black 
  1154.                box outputs another number, which is an entry number in the 
  1155.                table. Well, we run-amuck here again. <POINTER> is a word (2 
  1156.                bytes) and <CHAR> is 1 byte. The number of possible 
  1157.                combinations of the two is 65536 times 256, which is a BIG 
  1158.                number and left as an exercise for the reader. If our black 
  1159.                box is to spit out UNIQUE numbers, then there will be as many 
  1160.                output numbers as there are input numbers and our string 
  1161.                table would have to be HUGE, in fact, it couldn't be run on 
  1162.                any computer that exists in the world today! Then what we 
  1163.                need is a black box (hash function) that will take a huge 
  1164.                number of input combinations and output numbers that are 
  1165.                within our table. The implication here is that we will have 
  1166.                several input numbers that result in the same output number. 
  1167.                This is better known as a "hash collision". We can help 
  1168.                minimize the number of collisions by designing our hash as a 
  1169.                double hash, where the second hash function is a function of 
  1170.                <CHAR> and table size. Technically, what we are doing here, 
  1171.                is minimizing what is called "clustering", that is, the 
  1172.                tendency of certain sets of input numbers to "cluster" around 
  1173.                a given output number. Collisions from the first hash are 
  1174.                called "primary clustering" and those from the second hash 
  1175.                are called "secondary clustering". Our hash function must be 
  1176.                designed very carefully so that it will also "probe" every 
  1177.                location in the table, if need be. Clustering is also avoided 
  1178.                by making the table size a prime number instead of the 4096 
  1179.                or 8192 called for by the bit length. The "fill limit", as 
  1180.                discussed above, is also selected as a prime number. Prime 
  1181.                numbers are divisible by only two numbers, 1 and the number 
  1182.                itself. It may be intuitively observable, that this should 
  1183.                reduce clustering.
  1184.  
  1185.                The real beauty of hashing, is that when the string table is 
  1186.                25% full, the hash function will have to search an average of 
  1187.                1.15 to 1.33 table locations to know whether or not the omega-K 
  1188.                exists in the table. With the linear probe that we spoke of 
  1189.                before, would be searching an average of 500 locations for 
  1190.                each input byte, quite a difference. As the table fills, 
  1191.                however, the performance of the hash function decreases 
  1192.                logarithmically, thus it is favorable, from the standpoint of 
  1193.                speed, that we limit the load factor of the string table, 
  1194.                that is we limit the number of entries that we will actually 
  1195.                put into the table. When the table  hits this limit, we 
  1196.                arbitrarily call the table full and issue an adaptive reset 
  1197.                code to the output file. At this point, the table is cleared 
  1198.                of the least frequently occurring strings. The hash function 
  1199.                in IDCshell was derived from a discussion in "Data Structures 
  1200.                in Pascal", by Reingold/Hansen, pp. 397.
  1201.  
  1202.                One final note on the codes that are developed by the 
  1203.                compressor and sent to the output file. These codes, you 
  1204.                remember, vary in length from 9 to 12 or 13 bits and are 
  1205.                strung together at bit level in the output file. The most 
  1206.                significant bits from one code are shifted left into the next 
  1207.                code. It does get a bit messy playing with the codes this 
  1208.  
  1209.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  1210.           
  1211.                                      Page 17
  1212.  
  1213.                way, but real compression has as its primary cost, coding 
  1214.                headaches. The algorithms are actually very short when fully 
  1215.                coded, a little over 1K each.
  1216.  
  1217.                And there you have it. It seems like a bit much and is not 
  1218.                casually understood, but if you really want to know how they 
  1219.                work, you should get the original article and study it along 
  1220.                with the above and hopefully, you will gain more insight into 
  1221.                the replete world of data compression. There are many other 
  1222.                forms of data compression that have been in use for years, 
  1223.                bit mapping, null suppression, half-byte packing, diatomic 
  1224.                encoding, relative encoding, statistical encoding and pattern 
  1225.                substitution to name a few and that is not to mention all the 
  1226.                forms of redundancy and apriori structure compression. All 
  1227.                things considered, LZW is definitely one of the best we have.
  1228.  
  1229.  
  1230.                                          IMPLODING
  1231.  
  1232.  
  1233.                The imploding algorithm was developed by Phil Katz of PKWARE 
  1234.                and is a combination of two algorithms. First it uses a 
  1235.                sliding dictionary, whereby the compressor looks backward in 
  1236.                the file (toward the beginning) for matches of strings of 
  1237.                characters. The sliding dictionary size (how far we go back) 
  1238.                is either 4K or 8K. If a match is located, then two numbers 
  1239.                will describe the match itself, namely the LENGTH of the 
  1240.                match and the DISTANCE back in the file where the match was 
  1241.                located. These LENGTH and DISTANCE pairs are further encoded 
  1242.                using the Shannon-Fano technique, which is very similar to 
  1243.                Huffman coding. For further reading about the SF codes, see 
  1244.                HELD, "DATA COMPRESSION" ppg. 107. Any characters that are 
  1245.                not matchable are encoded as literal characters either using 
  1246.                another Shannon-Fano tree or by simply sending the literal 
  1247.                character to the compressed file as is.
  1248.  
  1249.                The imploder stores the Shannon-Fano trees in the zipfile in 
  1250.                a compressed manner also, further reducing compressed file 
  1251.                size. These trees are then used by the decompressor when 
  1252.                reconstructing the original file.
  1253.  
  1254.  
  1255.                                       TAGGING FILES
  1256.  
  1257.  
  1258.  
  1259.                 Why tag files anyway ?
  1260.  
  1261.                Tagging files started back in the CP/M world with the sweep 
  1262.                programs. The idea is to allow performing the same operation 
  1263.                to more than one file at a time. You would tag the files that 
  1264.                you wanted to copy, for example, and then invoke the copy 
  1265.                command. This is a lot faster than copying each of the files 
  1266.                individually. This same reasoning applies to deleting, moving 
  1267.                and printing.
  1268.  
  1269.  
  1270.  
  1271.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  1272.           
  1273.                                      Page 18
  1274.  
  1275.  
  1276.                       There are several ways to tag files in IDCshell.
  1277.  
  1278.                SPACE bar or "T" key -
  1279.  
  1280.                These two keys perform the same operation, they tag the 
  1281.                currently highlighted file. Actually, they toggle the tag 
  1282.                status of the currently highlighted file, that is if it was 
  1283.                tagged, after the toggle, it will not and vice-versa. A 
  1284.                diamond will appear next to the file on the screen denoting 
  1285.                it's tagged status. The number of tagged files and tagged 
  1286.                bytes will also be displayed on the screen, just above the 
  1287.                command window.
  1288.  
  1289.                
  1290.                 F6 - key
  1291.  
  1292.                This key will tag all files in the current directory.
  1293.                
  1294.                 F7 - key
  1295.  
  1296.                This key will invert the tag status of all files.
  1297.  
  1298.  
  1299.                 NOTE: Also see the WILDCARD TAG section.
  1300.  
  1301.  
  1302.                                  Tagged files and zipfiles
  1303.  
  1304.  
  1305.                Tagged files are one method of adding/updating files in a 
  1306.                zipfile. When you change directories or drives, IDCshell will 
  1307.                remember the files that you had tagged and where they were so 
  1308.                that when the "Z" (zip) command is invoked, you will be 
  1309.                shown a list of these tagged files to preview/edit before 
  1310.                performing the zip function. Also, if you tag files and 
  1311.                then proceed directly to the preview screen via the "A" 
  1312.                command, the tagged files will be displayed for review. See 
  1313.                the ARC preview section.
  1314.  
  1315.                                  ZIPFILE PREVIEW FUNCTION
  1316.  
  1317.  
  1318.                The major changes in version 4.0 and above as far as the 
  1319.                operation of the preview screen, is that now you have the 
  1320.                option of compressing tagged files -OR- compressing 
  1321.                recusively, files that match a filemask from a user provided 
  1322.                directory name. The recursive function will compress all 
  1323.                files that match the file mask in the directory specified and 
  1324.                all files in all directories off of the specified directory.
  1325.  
  1326.                The preview screen will display each path where files were 
  1327.                tagged and the files that were tagged in that directory. The 
  1328.                arrow, home, end, page up and page down keys will move you 
  1329.                through the list. The "D" key will delete the currently 
  1330.                highlighted filename from the list -OR- if the highlight bar 
  1331.                is pointing to a  path and the "D" key is pressed, all files 
  1332.  
  1333.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  1334.           
  1335.                                      Page 19
  1336.  
  1337.                in that path will be deleted from the list.
  1338.  
  1339.                IDCshell allows moving into and out of the preview screen at 
  1340.                any time, without having to choose the ARC file first. This 
  1341.                allows for a certain degree of playing around before you get 
  1342.                your thoughts together. You can edit the list, return to 
  1343.                select more files for inclusion, or proceed with the arc 
  1344.                function.
  1345.  
  1346.                Each time that you leave the files screen, all of the tagged 
  1347.                files are saved in memory for inclusion into an ARC. This 
  1348.                method would normally display several copies of the tagged 
  1349.                files in a directory if you had been into and out of that 
  1350.                same directory more than once. IDCshell will remove any 
  1351.                duplicated directories from the saved list and keep ONLY the 
  1352.                last one.
  1353.  
  1354.                Once you have tweaked the preview list into just what you 
  1355.                want, you can then hit ENTER and proceed with the zipping 
  1356.                operation. The next screen asks how you want to perform the 
  1357.                arc function. This screen is vastly different from the usual 
  1358.                -f, -u, -a etc.  commands from the other arcers. The 
  1359.                reasoning for this is simple, How many times have you used 
  1360.                the -u command when you really meant to -f ? IDCshell uses a 
  1361.                much more intuitive approach. The screen is as follows.
  1362.  
  1363.  
  1364.                 ┌─────────────────────────────────────────────┐
  1365.                 │          Select Archive Options             │
  1366.                 ├───────────────────────────────────────┬─────┤
  1367.                 │ Add new or update existing files      │ YES │
  1368.                 │ Update existing files only            │ NO  │
  1369.                 ├───────────────────────────────────────┼─────┤
  1370.                 │ Replace with newer files only         │ YES │
  1371.                 │ Replace files regardless of date      │ NO  │
  1372.                 ├───────────────────────────────────────┼─────┤
  1373.                 │ Overwrite existing files              │ YES │
  1374.                 │ Do not overwrite existing files       │ NO  │
  1375.                 ├───────────────────────────────────────┼─────┤
  1376.                 │ Save paths with filenames             │ NO  │
  1377.                 │ Do not save paths with filenames      │ YES │
  1378.                 └───────────────────────────────────────┴─────┘
  1379.  
  1380.  
  1381.                The arrow keys are used to move from field to field up and 
  1382.                down. The SPACE bar is used to toggle between YES and NO. 
  1383.                Notice that if you select NO for "add new or update existing 
  1384.                files", that the last field disappears. This is because you 
  1385.                are telling IDCshell to update existing files only, therefore 
  1386.                you MUST overwrite them, but you still have the option of 
  1387.                selecting date checking with the second field.
  1388.  
  1389.                Add new or update existing files -
  1390.  
  1391.                This selection is used if you are adding new files to an 
  1392.                existing zipfile and/or updating files that already exist in 
  1393.                the zipfile. Existing files will be replaced only if you have 
  1394.  
  1395.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  1396.           
  1397.                                      Page 20
  1398.  
  1399.                chosen to do so with the second selection in the box.
  1400.  
  1401.  
  1402.                Update existing files only -
  1403.  
  1404.                This selection allows you to update a zipfile without adding 
  1405.                any new files. Suppose that you wanted to update a zipfile
  1406.                and you did not know all the filenames that were in the 
  1407.                zipfile, but you also knew that whatever their names were, 
  1408.                they were in a certain directory. You could tag ALL files in 
  1409.                that directory and then choose "update existing files only" 
  1410.                and only the files that previously existed in the zipfile 
  1411.                would be updated, no new files would be added. The "extra" 
  1412.                tagged filenames would be ignored.
  1413.  
  1414.                This selection is also subject to the setting of the 
  1415.                "replace" option.
  1416.  
  1417.                Replace with newer files only -
  1418.  
  1419.                This option, when YES, will cause any filename in the zipfile 
  1420.                to be replaced with a matching tagged filename, ONLY if the 
  1421.                tagged filename has a more current date/time stamp.
  1422.  
  1423.  
  1424.                Replace files regardless of date -
  1425.  
  1426.                This option, when YES, will cause filenames in the zipfile to 
  1427.                be replaced with matching tagged filenames REGARDLESS of the 
  1428.                date/time stamp. The net result here is that NEWER files may 
  1429.                be replaced with OLDER files.
  1430.  
  1431.  
  1432.                Overwrite existing files -
  1433.  
  1434.                NOTE: This option only applies if the "add new or update 
  1435.                existing files" option is set to YES.
  1436.  
  1437.                If this option is set to YES, then new files will be added to 
  1438.                the zipfile and existing files will be updated. Note also, 
  1439.                that this option is subject to the setting of the "replace 
  1440.                with newer files only" option.
  1441.  
  1442.  
  1443.                Do not overwrite existing files -
  1444.  
  1445.                If the option is set to YES, then IDCshell will ONLY ADD NEW 
  1446.                FILES to the zipfile, existing files will not be disturbed.
  1447.  
  1448.  
  1449.                Once the options are chosen, you may hit the ENTER key and 
  1450.                the archiving process will begin. Each file is displayed at 
  1451.                the top of the list as it is analyzed and compressed. The ESC 
  1452.                key can be used to abort the operation. Note that the abort 
  1453.                does not take place until the current file is finished.
  1454.  
  1455.  
  1456.  
  1457.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  1458.           
  1459.                                      Page 21
  1460.  
  1461.  
  1462.                Save paths with filenames -
  1463.  
  1464.                This option causes IDCshell to store the pathnames along with 
  1465.                the filenames in the zipfile.
  1466.  
  1467.                Do not save paths with filenames -
  1468.  
  1469.                This option causes IDCshell to ignore the paths associated 
  1470.                with filenames and they are subsequently NOT stored in the 
  1471.                zipfile.
  1472.  
  1473.  
  1474.  
  1475.                                        FUNCTION KEYS
  1476.  
  1477.  
  1478.                F1 - invokes the IDC on-line help system
  1479.                F2 - selects the currently highlighted zipfile for archive 
  1480.                     operations.
  1481.                F3 - ANSI view function
  1482.                F4 - send a copy of the file list in the main screen to the 
  1483.                     printer.
  1484.                F5 - shell to DOS
  1485.                F6 - tag all files in the current directory
  1486.                F7 - invert tagged status of all files
  1487.                F8 - specify directory sort order
  1488.                F9 - edit the highlighted file with your editor
  1489.                F10- clear all files tagged for archiving
  1490.                ALT-F9 - call your editor
  1491.                ALT-F1 - change file display mask
  1492.                ALT-F2 - run highlighted program
  1493.                ALT-F3 - display machine status screen
  1494.                ALT-F4 - toggle EGA/VGA 43 or 50 line modes
  1495.  
  1496.  
  1497.                End of file.
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.     Copr. 1987-90 Infinity Design Concepts, Inc. All rights reserved
  1520.           
  1521.                                      Page 22
  1522.