home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / COMPRESS / IDC15.ZIP / IDCSHELL.DOC < prev    next >
Encoding:
Text File  |  1989-07-02  |  69.9 KB  |  1,532 lines

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