home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / jsage / znode3 / z3util / cr28src.lbr / CRUNCH28.HZS / CRUNCH28.HIS
Encoding:
Text File  |  1991-05-10  |  25.9 KB  |  491 lines

  1.  
  2.                        CRUNCH/UNCR HISTORY
  3.  
  4.  
  5.      +--------------------------------------------------------+
  6.      | Previous versions of CRUNCH/UNCR included no history   |
  7.      | file, with the exception of partial histories accom-   |
  8.      | panying the DateStamper (2.3D) versions.  This history |
  9.      | file has been compiled by condensing the contents of   |
  10.      | release notes and other information included in previ- |
  11.      | ous distribution libraries available to me.            |
  12.      |                                       Gene Pizzetta    |
  13.      |                                       March 19, 1991   |
  14.      +--------------------------------------------------------+
  15.  
  16.  
  17. Version 2.8 -- May 5, 1991 -- Gene Pizzetta
  18.      Fix one bug and create another!  But this one is very minor: 
  19.      if the file was copied (rather than crunched) the date stamp 
  20.      was written to the destination file twice.  And if the A 
  21.      option was used, the  archive attribute was set twice on the 
  22.      source file (the latter dates from version 2.4).  Thanks to 
  23.      Howard Goldstein for finding that one.
  24.  
  25. Version 2.7 -- April 27, 1991 -- Gene Pizzetta
  26.      Implemented Bruce Morgen's suggestion for a ZCPR3-only 
  27.      version that would allow UNCR to be smaller than 8K and 
  28.      still uncrunch LZH files.  In the ZCPR3-only version the Z80 
  29.      CPU test is replaced with a Z-System check.  Also fixed a 
  30.      bug: Bruce Morgen reported that CRUNCH with the A option 
  31.      failed to set the archive attribute on the source file if 
  32.      the destination file was in a different user area.  Putting 
  33.      the call to DATSTP after the call to ARCIT fixed that 
  34.      problem.  Howard Goldstein reported that if either program 
  35.      aborted because of insufficient memory, an arbitrary number 
  36.      of "files processed" was displayed.  The file count is 
  37.      initialized later in the code, but zero files is now 
  38.      displayed in that case.  Minor screen format corrections: 
  39.      "[ file empty ]" message was flush left, instead of one 
  40.      space in, as it should have been; and the disk change prompt 
  41.      was being overwritten by the next file crunched, for lack of 
  42.      a carriage return/line feed.  ZMAC/ZML instructions added to 
  43.      TEC file.
  44.  
  45. Version 2.6 -- March 26, 1991 -- Gene Pizzetta
  46.      Failure to initialize TRPFLG for each file sometimes caused 
  47.      an extra null code to be inserted near the beginning of the 
  48.      crunched file.  This bug in no way affected the validity of 
  49.      the crunched file.  Also failed to include an LZH equate in 
  50.      CRUNCH.Z80 after adding LZH uncrunching to UNCR.
  51.  
  52. Version 2.5 -- March 21, 1991 -- Gene Pizzetta
  53.      When running under ZSDOS, now copies the source file date 
  54.      stamp to the output file when crunching, uncrunching, or 
  55.      just copying.  In addition, the date stamp is stored in the 
  56.      header of the crunched file, in the same manner as the 2.3D 
  57.      versions.  UNCR gives priority to the embedded date stamp, 
  58.      it it exists, for the output file.  In either case the 
  59.      current date will be used as the access date.  If the modify 
  60.      date is blank (a non-standard condition), it will be 
  61.      supplied from the create date.
  62.  
  63.      New S option toggles between including and excluding system 
  64.      (hidden) files.  As distributed, system files are excluded 
  65.      by default.  The old O option has been renamed the E option 
  66.      (erase existing files), and the old C option has been 
  67.      renamed the I option (inspect mode), for compatibility with 
  68.      other standard ZCPR3 utilities.  The old options still work, 
  69.      though, for those who have become accustomed to them.
  70.  
  71.      Now handles up to 512 matching files, if an ambiguous 
  72.      filename is given.  (The number of files can easily be 
  73.      increased, if anybody has need for it.)  Version 2.4 could 
  74.      handle 256 and version 2.3D only 127 matching files.
  75.  
  76.      UNCR now uncrunches LZH-encoded files, using the R. Warren's 
  77.      UNLZH.REL module.  It checks the header of LZH files for an 
  78.      embedded date stamp, although no LZH cruncher inserts the 
  79.      date at this time.  Nevertheless, we're ready if it ever 
  80.      happens.
  81.  
  82.      Screen displays have been compacted somewhat to allow 
  83.      display of more filenames on the screen (twice as many in 
  84.      quiet mode).  High bits are now filtered when displaying 
  85.      filenames so you won't see weird characters.  (For UNCR the 
  86.      quiet mode screen looks the same, no matter what kind of 
  87.      file is being decompressed.  Each file takes a single lines, 
  88.      unless it's a direct copy.)
  89.  
  90.      Under ZCPR3 the command processor parses the filespecs, so 
  91.      all permissible user areas are available.  Under ZCPR33 and 
  92.      above, invalid directory specs will generate an error rather 
  93.      than defaulting to the current directory.  The usage screen 
  94.      will also reflect the actual name of the COM file, even if 
  95.      re-executed with the GO command.
  96.  
  97.      All options are configurable as the default operating mode.  
  98.      The usage screen now reflects the current effect of the 
  99.      command line options, if they are used.  All configuration, 
  100.      including CRUNCH's exclusion list, can be done with ZCNFG.  
  101.      The same CFG file is used for both CRUNCH and UNCR, but some 
  102.      configuration options are not effective for both programs.  
  103.      See the ZCNFG help screens for full details.
  104.  
  105.      Other changes:  If the original file already has a "Z" as 
  106.      the middle character of its filetype (for example, "AZM"), 
  107.      CRUNCH will now change only the last character of the 
  108.      filetype to a "Z", unless that character is also already a 
  109.      "Z".  If either program is aborted with a ^C, the partial 
  110.      output file will be closed and erased, so zero-length files 
  111.      will no longer be left behind.  Incorporates routines from 
  112.      version 2.3D that traps and alters any occurrence of the 
  113.      command mode sequence used by Telenet and PC-Pursuit, so 
  114.      file transfers will not be aborted on those systems.  CRUNCH 
  115.      now recognizes LZH encoded files as already crunched.  
  116.      Various messages have been added or altered to be more 
  117.      specific or for aesthetic reasons.
  118.  
  119.      This version is a direct descendant of version 2.4.  Other 
  120.      than the TRAPIT routines, none of the version 2.5 code comes 
  121.      from the various 2.3D versions, although those versions 
  122.      originated the embedded date stamp idea incorporated herein. 
  123.      Many, many thanks go to Howard Goldstein for his ideas, his 
  124.      help, and his bug finding skills.
  125.  
  126. Version 2.4 -- September 15, 1987 -- Steven Greenberg
  127.      CRUNCH and UNCR 2.4 process and generate files identical to 
  128.      version 2.3 (except embedded revision level byte), 
  129.      regardless of mode of operation.  A few very observant 
  130.      people noticed that v2.3 could output valid (but different) 
  131.      files when running in "quiet" mode.  The output of v2.4 
  132.      should be identical to v2.3 running in verbose mode, except 
  133.      for the embedded revision level byte.  Some changes were 
  134.      made in the implementation of the "core" of the algorithms 
  135.      for both CRUNCH and UNCRunch -- in the case of CRUNCH, 
  136.      conditionals were removed by splitting into three separate 
  137.      loops.  In the case of UNCRunch, an unnecessary chase to the 
  138.      end of "virtual links" was eliminated by aborting the search 
  139.      as soon as an available reassignments lot is found.  Other 
  140.      performance improving changes include less time updating the 
  141.      screen and dynamic I/O buffer sizing.  Non-time-critical 
  142.      "user-interface" changes (e.g., the "tag mode" code, etc.) 
  143.      were coded in as straightforward a manner as possible, with 
  144.      little regard to code space minimization and even less to 
  145.      speed.  The great majority of the changes are user interface 
  146.      related:
  147.  
  148.      A new option lets you select any number of files from a 
  149.      group for processing.  After all the selections have been 
  150.      made the files will be processed.  Selections are presented 
  151.      and processed in alphabetical order.
  152.  
  153.      If CRUNCH ever creates a file larger than the original, the 
  154.      file will automatically be erased and replaced with a direct 
  155.      copy of the original.  If the original is already crunched 
  156.      or squeezed, or if the filetype matches a user configurable 
  157.      exclusion list, such as .LBR or .ARC, a straight copy 
  158.      operation will be substituted.  Thus all specified files 
  159.      will be transferred in the most efficient manner, 
  160.      facilitating the use of CRUNCH for the creation of .LBR's or 
  161.      as a backup utility.  Similarly, UNCR will either uncrunch 
  162.      or direct-copy all specified files for full restoration.
  163.  
  164.      If CRUNCH or UNCR fills an output diskette during a wildcard 
  165.      operation, the last (partial) file will be deleted and the 
  166.      user will be prompted to change diskettes.  Operation will 
  167.      then continue, starting with that last file.
  168.  
  169.      UNCR and CRUNCH take as many as three or four (respectively) 
  170.      command line options, in any combination.  Each option 
  171.      corresponds to a mode which can be set to default to an 
  172.      user-defined state.  The command line toggle will then flip 
  173.      the state back on or off.
  174.  
  175.      The archive mode toggle, when turned on, will only crunch 
  176.      files that have changed since they were last backed up 
  177.      (based on the CP/M directory archive bit).  When running in 
  178.      this mode each input file will be flagged as archived as 
  179.      soon as the crunch operation for that file has completed.  
  180.      The "prompt before overwrite" mode toggle allows command 
  181.      line control of whether the program stops to warn you each 
  182.      time it is about to overwrite a file with the same name.
  183.  
  184.      UNCR now also unsqueezes as an added convenience!  Usage is 
  185.      identical.  UNCR will automatically recognize the file's 
  186.      format and use the appropriate algorithm.
  187.  
  188.      Modest speed improvements have been made through a variety 
  189.      of techniques, including more data buffering to reduce disk 
  190.      activity.  The extended buffers are dynamically allocated to 
  191.      take maximum advantage of currently available memory on your 
  192.      system.
  193.  
  194.      Messages inform you when the programs are crunching, 
  195.      uncrunching, unsqueezing or copying and why (e.g., "Already 
  196.      crunched" or "Zero length").  Includes the old in, out, and 
  197.      compression ratio reports as well as a final figure on the 
  198.      total number of files processed.
  199.  
  200.      Current program constraints limit wildcard operations to a 
  201.      maximum of 255 files.  Hitting ^C will entirely abort either 
  202.      program immediately.  Although probably of limited 
  203.      usefulness, ^S will pause the programs (in verbose mode).  
  204.      ^W will then resume.
  205.  
  206. Version 2.3D3 -- August 25, 1989 -- Howard Goldstein
  207.      This version fixes a bug which resulted in failure to 
  208.      recognize a datespec if a destination du was entered.  
  209.      Changes in the COMMON routines fix problems concerning the 
  210.      correct drive for the !!!TIME&.DAT file when running under a 
  211.      non-ZCPR3 system.
  212.  
  213. Version 2.3D2 -- November 7, 1988 -- Carson Wilson
  214.      Previous versions set the UNCRUNCHed file's Last Access 
  215.      stamp to the Last Access stamp of the original file.  This 
  216.      version sets the Last Access stamp of UNCRUNCHed files to 
  217.      the current time and date if a DateStamper compatible clock 
  218.      is available via BDOS function 12 (Return Version).  All 
  219.      changes are to this file and are marked "2.3D2" for 
  220.      reference.
  221.  
  222. Version 2.3D1.1 -- August 2, 1988 -- Carson Wilson
  223.      Changes in COMMON.LIB:  Replaced 8080 opcodes with Z80 
  224.      opcodes for Z80ASM.  Added code to close !!!TIME&.DAT file 
  225.      at label RETCCP:.  This was the only way to ensure that the 
  226.      file is always closed and set to R/O.  T&D file is only 
  227.      closed if we were writing to it.  Modified CLOSTD and OPENTD 
  228.      to preserve the T&D file's original archive bit.
  229.  
  230. Version 2.3D1 -- July 20, 1988 -- Carson Wilson
  231.      UNCRUNCH version 2.3D did not set the !!!TIME&.DAT file to 
  232.      read/only on exit.  UNCRUNCH v. 2.3D1 corrects this error.  
  233.      The version name was decided upon to avoid confusion with 
  234.      UNCRUNCH version 2.4, which adds several features not 
  235.      available in 2.3, but does not support DateStamped files.  
  236.      UNCR23D1 is released with the approval of Bridger Mitchell, 
  237.      author of UNCR23D.  CRUNCH23D remains unchanged.
  238.  
  239. Version 2.3D -- March 14, 1987 -- Bridger Mitchell, Plu*Perfect Systems
  240.      CRUNCH and UNCRUNCH support DateStamped files.  CRUNCH 
  241.      includes the original file's datestamp data in the header of 
  242.      the crunched output file.  UNCRUNCH v2.3D uses these data to 
  243.      replace the datestamp of the uncrunched file after it has 
  244.      been closed.  This means that the uncrunched file will have 
  245.      its original time and date.  CRUNCH also supports an 
  246.      additional optional field -- a datespec -- which may be used 
  247.      to specify a temporal class of files to crunch, for example, 
  248.      all files more recent than a specified date and time.
  249.  
  250.      CRUNCH now monitors the output for the first two bytes of 
  251.      the sequence: 00dh, 040h, 00dh (with hi bits possibly set).  
  252.      If detected, it inserts the CRUNCH NULCODE.  This prevents a 
  253.      crunched file from triggering Telenet/PC-Pursuit's command- 
  254.      mode, which can abort a file transfer.  Code is derived from 
  255.      C. B. Falconer's CRN v2.5., 86/12/19.
  256.  
  257. Version 2.3 -- November 15, 1986 -- Steven Greenberg
  258.      The core of this source code is pretty much unchanged since 
  259.      the original conception and refinement of CRUNCH v2.0.  
  260.      Though attention was made in selecting an algorithm which 
  261.      could be implemented in a relatively efficient manner, and 
  262.      some care was taken to keep the 'innermost' loops fairly 
  263.      streamlined, there is no doubt room for improvement in terms 
  264.      of the optimally efficient implementation.  This simply 
  265.      means that future releases may run even faster than the 
  266.      current one.
  267.  
  268.      The programs now can be configured for ZCPR use.  To support 
  269.      the Z3 environment descriptor, the patch byte locations have 
  270.      been shifted up.  If you are going to be patching these 
  271.      bytes yourself, refer to the new PATCH23.DOC, included.  
  272.      (Note: while the location of these bytes has changed, their 
  273.      function has not).  If you are going to use the install 
  274.      program CRINSTAL.COM, just make sure to use v2.3 of that 
  275.      program, included.  If you make a mistake and use the wrong 
  276.      install with the wrong program, you will simply get a 
  277.      "Invalid or Incompatible CRUNCH.COM" or some similar 
  278.      message.  Usage of v2.3 is identical to that of v2.1.
  279.  
  280.      Acknowledgements:  ZCPR3 Consultant: Bruce Morgen.  Also 
  281.      thanks to (continued from last release): Keith Peterson, Jon 
  282.      Schneider, Jay Sage, Gary Inman, Steve Russel, Terry 
  283.      Carroll, George Peace, Pete Zuroff, and many others.
  284.  
  285. Version 2.2 -- November 3, 1986 -- Steven Greenberg
  286.      This library contains version 2.1 of the CRUNCH and UNCRunch 
  287.      data compression utilities.  CRUNCH21.LBR, as originally 
  288.      released, contained an installation program CRINSTAL.COM.  
  289.      This was created as a last minute after-thought, because the 
  290.      number of available "patch bytes" was getting out of hand 
  291.      (also past experience has shown that people tend to ignore 
  292.      patch bytes, which is understandable).  Unfortunately, the 
  293.      last minute nature of the program (and its apparent 
  294.      simplicity) allowed it to slip by normal multi-system, pre- 
  295.      release testing channels.  While the install program worked 
  296.      fine under CP/M 3, it worked only on CP/M 3.  I don't know 
  297.      why DRI chose to change the operation of low# system calls 
  298.      (namely "6"), but the bottom line is that the program would 
  299.      not accept any input as a "Yes" response, including the 
  300.      answer to the question "Do you want to continue?" (This made 
  301.      the program quite difficult to run).
  302.  
  303.      Though it has been less than 24 hours since the release of 
  304.      CRUNCH21.LBR, their is no recalling in this "business" (I 
  305.      use the term loosely).  CRUNCH22.LBR contains a modified 
  306.      CRINSTAL v2.2 (which uses good old fashioned BDOS #1 calls).
  307.  
  308. Version 2.1 -- November 2, 1986 -- Steven Greenberg
  309.      Main change from version 2.0:  Provides full "DU:" support 
  310.      for source and destination files.  Drive, User, neither, or 
  311.      both in either order will be accepted for either the source 
  312.      or destination.  Particularly useful for backup (e.g., 
  313.      "CRUNCH <file> B0:") when working with a hard drive.  The 
  314.      display format has been correspondingly updated to always 
  315.      show source and destination drive and user codes, whether 
  316.      they are specified or not.
  317.  
  318.      You can now type CRUNCH *.* or UNCR *.* in mixed groups of 
  319.      files and get the desired results.  CRUNCH *.* will 
  320.      automatically not attempt to crunch files which are already 
  321.      crunched (or squeezed!).  This decision is made after 
  322.      opening the input file and analyzing the first few bytes, 
  323.      not by using the middle letter of the filename extension (so 
  324.      .AZM files, etc.  will still be crunched).  This complements 
  325.      the UNCR v2.0 feature of only uncrunching crunched files 
  326.      when *.* is specified, though that is achieved more 
  327.      expediently by filename extension analysis.
  328.  
  329.      Error recovery:  Put half a crunched file in, get half an 
  330.      uncrunched file out!  While this is not a recommended mode 
  331.      of operation, it is illustrative of a somewhat more 
  332.      intelligent handling of various error conditions.  If errors 
  333.      are detected within a crunched file, the maximum amount of 
  334.      information accumulated will be written and the file closed. 
  335.      Furthermore, almost all errors pertaining to a single file 
  336.      will not result in an abort of the entire wildcard operation 
  337.      -- the program will continue with the rest of the files.  
  338.      Major errors, (e.g., destination disk full), will of course 
  339.      abort the whole operation.
  340.  
  341.      Minor changes were made to provide more useful error 
  342.      messages (e.g., "Disk Full" for disk full, and "Output 
  343.      error" for other, less common output related errors.  The 
  344.      usage message has been significantly expanded:  type CRUNCH 
  345.      or UNCR with no filename specified to see it.
  346.  
  347.      Corrected a one count error on input records displayed when 
  348.      uncrunching a version 1 crunched file with the version 2 
  349.      program.  Big file fans:  an extra decimal place provided on 
  350.      the final input K ---> output K to correctly display file 
  351.      sizes even if they exceed 1 megabyte.  Note that all four 
  352.      "running displays" are in 4 digit fixed format fields, and 
  353.      will loop back to zero after 9999.  This is not too uncommon 
  354.      on the "cr" column, and would happen on the input or output 
  355.      recs columns if a file size exceeded 1.25 megabyte.  This is 
  356.      nothing to be concerned with.  Certain other very technical 
  357.      internal corrections have been made -- it is recommended 
  358.      that you replace your version 2.0 programs with these 2.1 
  359.      versions to maintain utmost reliability under all possible 
  360.      circumstances.
  361.  
  362.      The "running displays" update slightly less often now when 
  363.      crunching, as it was determined that a non negligible amount 
  364.      of time was being wasted updating the screen.  It may appear 
  365.      CRUNCH is running slower, but rest assured it's actually 
  366.      running faster.
  367.  
  368.      More user configurable options, plus an install program!  A 
  369.      provision to eliminate the 'Result not smaller than 
  370.      original.  Save it anyway?' question has been provided.  
  371.      When this situation occurs, it is often on very small files 
  372.      -- some people prefer unattended wildcard operation which 
  373.      will not stop to prompt for user input, even if at the 
  374.      expense of a few extra resulting records.  This, along with 
  375.      three other options provided as "patches" in v2.0 ( 
  376.      "Quiet/Verbose", "Prompt before overwrite", and "Defeat 
  377.      multi-sector I/O" [see accompanying TURBODOS.WRN for a full 
  378.      description of that one]) can now be quickly changed (in 
  379.      CRUNCH and UNCR simultaneously) by running CRINSTAL and 
  380.      answering a few self-explanatory questions.  See 
  381.      CRINSTAL.DOC for simple instructions on how to fire up this 
  382.      installation program.  (Note to more technical users: the 
  383.      one byte patches can still be made using a debugger.  A few 
  384.      additional patches, which the install program does not 
  385.      support, can be made as well; these are probably only of 
  386.      interest to more technical users anyway).
  387.  
  388.      Acknowledgements:  The flexible drive/user command line was 
  389.      made possible thru use of Jim Lopushinsky's "PARSEFCB.REL" 
  390.      module.  Many thanks to Paul Foote & Richie Holmes who have 
  391.      been supporters of CRUNCH since its inception; to Bob Freed 
  392.      for technical asides; and to John Stensvaag for CRUNCH.BG2.
  393.  
  394. Version 2.0 -- September 2, 1986 -- Steven Greenberg
  395.      CRUNCH v2.0 embodies all of the concepts employed in the 
  396.      UNIX COMPRESS-ARC512 algorithm, but is additionally enhanced 
  397.      by a "metastatic code reassignment" facility.  The code 
  398.      reassignment is augmented with a refined incremental 
  399.      compression ratio analysis for adaptive reset.  This 
  400.      provides additional improvement, especially on files with 
  401.      certain structural variations.  (It is ironic to note that 
  402.      if the file ARC512.EXE is CRUNCHed, the resulting file is 
  403.      nearly 14% smaller than the file produced when that program 
  404.      is used to compress itself).  Although short files will 
  405.      generally produce the same results as the above mentioned 
  406.      utilities, CRUNCH saves a few extra bytes by eliminating 
  407.      zero fill between code length changes.  Other improvements 
  408.      include:
  409.  
  410.      Use of multi-sector I/O when running in a CP/M 3.0+ 
  411.      environment (automatically selected when appropriate).  May 
  412.      be permanently deactivated if desired.
  413.  
  414.      Relaxed restrictions on filenames (e.g., files with a "Z" as 
  415.      the middle extension character, such as .AZM files, are not 
  416.      a problem).
  417.  
  418.      Improved wildcard operation -- non-critical errors will 
  419.      abort only the current file, not the entire operation.
  420.  
  421.      "Verbose" and "Quiet" modes of operation.  The former gives 
  422.      full running progress reports while compressing, including 
  423.      number of input and output records, compression ratio, 
  424.      "codes assigned" and "codes reassigned".  Although some of 
  425.      this information has limited usefulness, it is amusing to 
  426.      watch.  "Quiet" may be preferred when using slow (or 
  427.      printing) terminals, and will allow the results of up to 24 
  428.      wildcard operations to remain on the console.
  429.  
  430.      Optional prompt before erasure of pre-existing files.  A 
  431.      warning will be issued if an existing file is about to be 
  432.      over-written.  This feature can be deactivated if desired.
  433.  
  434.      Full compatibility with all crunched files.  UNCR 2.0 will 
  435.      uncrunch all "crunched" files, regardless of which version 
  436.      of CRUNCH was used to create them.  CRUNCH v2.0 will always 
  437.      use the improved algorithm to create new files.
  438.  
  439.      "Confirm" mode of operation.  Used in conjunction with a 
  440.      wildcard filespec, this option allows selectively crunching 
  441.      or uncrunching a subset of all files matching the spec.  The 
  442.      user will be prompted (Y/N) for each file matching file; a 
  443.      response of "N" will simply move on to the next file.
  444.  
  445.      Continuous checking for ^C abort.
  446.  
  447.      Inclusion of a "NOP" code.  In addition to the normal 
  448.      special EOF and RESET codes, the new structure sets aside 
  449.      two additional codes as reserved (one "NOP", one "SPARE").  
  450.      The "NOP" code can be inserted into the data stream at any 
  451.      point and will always be ignored by the uncruncher.  One 
  452.      possible use of this would be a "Telenet Trap" -- where the 
  453.      CRUNCH program would monitor its output and insert a NOP 
  454.      code if it saw that the output would otherwise produce an 
  455.      undesired sequence (ref: R. Freed's PCP-WARN.MQG and PCP- 
  456.      FIX.MQG), thus producing files guaranteed to be 
  457.      transmittable while using PC-PURSUIT.  Although the current 
  458.      CRUNCH program does not yet monitor for this, the structure 
  459.      is already set up so this (or any other sequence) could be 
  460.      inhibited at any time, yet all files would remain 
  461.      upward/downward compatible.  Other data compression schemes 
  462.      do not have this flexibility.
  463.  
  464. Version 1.2 -- June 16, 1986 -- Steven Greenberg
  465.      Existing v1.0 and v1.1 versions of these utilities should be 
  466.      replaced with v1.2.  A few minor bugs have been corrected, 
  467.      including one which could cause a possible file error when 
  468.      crunching numeric data files or object code.  In addition, 
  469.      these versions are up to 20% faster, take source as well as 
  470.      destination drive specs, and are still under 2k each.
  471.  
  472.      The source has been provided for the first time, due to 
  473.      quite a number of requests (please read the copyright 
  474.      message).  All source code is crunched, by the way.  The 
  475.      programs are standalone assemblies, but two "include" files 
  476.      are used due to the large overlap between programs.  CRUNCH 
  477.      or UNCRunch can be assembled with M-80 by just making sure 
  478.      "INCLUDE1.INC" and "INCLUDE2.INC" are on the same drive/user 
  479.      area.
  480.  
  481. Version 1.1 -- no information.
  482.  
  483. Version 1.0 -- no information.
  484.  
  485. Original author:
  486.  
  487.      Steven Greenberg
  488.      203 S. Van Dien Ave
  489.      Ridgewood, NJ  07450
  490.      Voice: (201) 447-6543
  491.