home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 June / SIMTEL_0692.cdr / msdos / dskutl / free151.arc / FREE.DOC < prev    next >
Text File  |  1989-02-08  |  16KB  |  255 lines

  1.  
  2.                         FREE  Version 1.5
  3.                      by Howard S. Kapustein
  4.            Copyright (c) 1988,1989 All rights reserved
  5.  
  6.     FREE   : free.c checks disk free space, with options
  7.  
  8.     Author : Howard S. Kapustein
  9.  
  10.     Program, Source, Documentation Copyright (c) 1988,1989 all rights reserved.
  11.  
  12.     Compiled code may be used in your library, and linked to your programs
  13.     BUT, the source code nor a library based on the compiled modules may be
  14.     commercially distributed.
  15.     I retain all rights to the source (this is all lawyer talk. I just don't
  16.     want someone making money off my efforts.)
  17.     No donation is expected. If you like FREE, send me a picture postcard
  18.     or, if you must, $5. I am a poor starving college student and will 
  19.     gladly accept all comments, questions, suggestions and/or donations.
  20.  
  21.     For a quick start try   FREE -?
  22.  
  23.     I know this is a pretty simple program. There are plenty of versions
  24.     of free disk space programs in the public domain, but none suited my 
  25.     needs. I needed 3 features besides the standard disk space free:
  26.  
  27.         1) Check more than 1 drive per run
  28.         2) Optionally check all drives
  29.         3) Optionally wait for a keypress after execution for use
  30.            with DESQview (tm)
  31.  
  32.     FREE.C, FREE.EXE and FREE.DOC must be distributed together.
  33.  
  34.     FREE was compiled with Turbo C (tm) 2.0 on an IBM PC with the Tiny
  35.     memory model optimized on Speed and all optimizations turned on
  36.     (Register and Jump optimization).
  37.  
  38.     Release notes:      2-2-88  Version 1.0 - Initial release
  39.  
  40.                         2-22-88 Version 1.1
  41.                                   - checks for drive ready before checking
  42.                                     free space
  43.                                   - skips drive B: only 1 drive present
  44.                                     (B: is a logical drive, not a physical
  45.                                     drive)
  46.                                   - optional wait after execution can now
  47.                                     wait for a specific key (specify its
  48.                                     decimal scan code, only valid for keys
  49.                                     1-255 (no extended keys i.e. Alt-C, etc.)
  50.                                   - fixed a bug with the strtocomma() function.
  51.                                     If a 4-digit number (i.e. 9216) was passed
  52.                                     to it it would not insert any commas
  53.                                   - I no longer make FREE.COM, for some reason
  54.                                     under DESQview FREE.COM 1.0 still needed
  55.                                     approx 70K, so until I can figure out how
  56.                                     to get FREE to use appropriate only the 11K
  57.                                     or so it needs, I'm not going to bother
  58.                                     playing with COM files
  59.  
  60.                         2-29-88 Version 1.2
  61.                                   - recompiled under Turbo C 1.5 (it only took
  62.                                     them 6 weeks instead of the 2-3 it should
  63.                                     have...) I turned on ALL optimizations
  64.                                     (speed, use regs, optimize regs and jumps.)
  65.                                     Previous versions were only compiled with
  66.                                     speed and use registers.
  67.                                   - modified the parsing for more coherent
  68.                                     program flow
  69.                                   - made waitforkey() after having extensive
  70.                                     difficulties getting the -w option to work.
  71.                                     This seems to have fixed the runtime bugs
  72.                                     I was getting after recompiling with TC 1.5
  73.                                   - changed the HEAP and STACK size so it will
  74.                                     run with less memory
  75.                                   - removed some needless comments left over
  76.                                     from old coding
  77.                                   - include a DESQview .DVP file for use with
  78.                                     DESQview.
  79.  
  80.                         3-19-88 Version 1.3
  81.                                   - fixed the bug with multiple drives
  82.                                     specified on the command line. It seems
  83.                                     that TC 1.5 DOES NOT let you use the
  84.                                     generic argc and argv as in
  85.                                     main(int argc, char *argv[]) Now Borland
  86.                                     wants you to use their global variables
  87.                                     (extern int argc, etc.). Nice of them not
  88.                                     to mention the fact that the old method
  89.                                     no longer works.
  90.  
  91.                         3-23-88 Version 1.31  -  Internal release only
  92.                                   - if you try to do a   FREE -   with no
  93.                                     parms free would check the default drive.
  94.                                     This has been fixed to display the help
  95.                                     (technically, doing   FREE -   is wrong)
  96.                                   - version 1.2 allowed -w[n] option to check
  97.                                     for extended key codes, but I forgot to
  98.                                     document it. Use this formula to get the
  99.                                     value for the wait option:
  100.  
  101.                                         extended * 256 + scancode
  102.  
  103.                                     where extended is 0 if False and 1 if True
  104.                                     and scancode is the scan code returned by
  105.                                     the key (refer to one of Norton's books
  106.                                     or some other reference guide for a list
  107.                                     of IBM extended scan codes.)
  108.  
  109.                         4-10-88 Version 1.32  -  Internal release only
  110.                                   - I removed a printf() left over from
  111.                                     debugging
  112.                                   - included info about contacting me during
  113.                                     the school year
  114.  
  115.                          5-6-88 Version 1.33  - Internal release only
  116.                                   - included % free
  117.  
  118.                         5-11-88 Version 1.34  - Internal release only
  119.                                   - fixed -w option, was skipping past
  120.                                     1st digit of keycode ([n])
  121.                                   - also, discovered the problem with the
  122.                                     -w option. Compiled w/full optimization,
  123.                                     the waitkey value was stored in a
  124.                                     register which was destroyed during the
  125.                                     absread(). This is a problem of the
  126.                                     TC library itself. I don't remember
  127.                                     who it was who discovered this flaw, but
  128.                                     if you drop me a line I'll update these
  129.                                     docs. He has notified Borland, so
  130.                                     hopefully the next TC will have this bug
  131.                                     fixed (if not sooner, but I'm not
  132.                                     holding my breath.) Thank you for the
  133.                                     debugging, it gave me many a restless
  134.                                     hour. DO NOT compile FREE with register
  135.                                     variables on, or unknown results may
  136.                                     (and probably will) occur
  137.  
  138.                         11-9-88 Version 1.4
  139.                                   - recompiled under TC 2.0 in Small model,
  140.                                     Merge duplicate strings On, Standard
  141.                                     stack frame Off, and all Debug info
  142.                                     left out. Couldn't compile under Tiny
  143.                                     (Cannot generate COM file: segment-
  144.                                     relocatable items present) probably because
  145.                                     of the FP emulator - see below
  146.                                   - added optional message if wait for key
  147.                                   - added -f and -n (search only floppies,
  148.                                     non-floppies). The -x option is equivalent
  149.                                     to -fn
  150.                                   - added -e option (full error display, useful
  151.                                     if you want to see any errors during a -f,
  152.                                     -n, or -x run). This setting is turned on
  153.                                     automatically for single mode (if -f, -n
  154.                                     and -x are not specified)
  155.                                   - minor code tinkering for aesthetics
  156.                                   - DESQview 2.2 .DVP file included
  157.                                   - for some reason, FREE running under
  158.                                     DV 2.2 now requires 65K. According to my
  159.                                     estimates, it needs anywhere from 44K to
  160.                                     66K. I think this is related to the Tiny
  161.                                     problem (inability to make .COM file). If
  162.                                     anyone can figure out why, please let me
  163.                                     know. Without the FP emulator, I can't
  164.                                     display a % free, but requiring 65K to get
  165.                                     a free disk space count is ridiculous
  166.  
  167.                          2-7-89 Version 1.5
  168.                                   - new option -N, Network compatibility,
  169.                                     skips the absolute disk read before
  170.                                     checking free space. If a free space
  171.                                     request is attempted on drive A: with
  172.                                     no floppy in the drive, DOS bombs out to
  173.                                     the Abort,Ignore,Retry message. Turning on
  174.                                     this option should allow execution on
  175.                                     drives not physically available (networks,
  176.                                     those accessed via device drivers, etc.)
  177.                                   - changed option letter -N to -H to allow
  178.                                     network compatibility. The -H option
  179.                                     will scan non-floppy drives (generally
  180.                                     fixed disks, C: and up.)
  181.                                   - no longer compiled with the FP emulation,
  182.                                     the % free real number is now achieved via
  183.                                     integers. Without the FP emulation FREE can
  184.                                     be compiled with the Tiny memory model.
  185.                                   - added check for DOS environment variable
  186.                                     FREEOPT for options
  187.                                   - changed the Heap size to 4K and the stack
  188.                                     to 1K
  189.                                   - changed the command line parsing to a
  190.                                     separate function, and no longer copy each
  191.                                     *_argv before processing it. The pointer
  192.                                     char *temp replace the older char temp[30]
  193.                                     for several reasons: instead of a strcpy()
  194.                                     we can just do a temp = *_argv, and if an
  195.                                     argument string was longer than 29
  196.                                     characters, we would have problems copying
  197.                                     to temp[30]. Pointers make life simpler
  198.                                   - you can now check multiple drives via
  199.                                     command line switch, and specific drives
  200.                                     via drive letter, in the same run (i.e.
  201.                                     FREE /F B: checks all floppy drives and
  202.                                     drive B:)
  203.                                   - IMPORTANT! FREE is now distributed as a
  204.                                     .COM file! If you are using an earlier
  205.                                     verison with a .EXE extension, make sure
  206.                                     you delete it otherwise DOS may not find
  207.                                     the proper file to run. See above regarding
  208.                                     FP emulation as to why we're back to a
  209.                                     .COM file.
  210.                                Note: I've enclosed the substitute division
  211.                                      function within a conditional #if...#endif
  212.                                      set so you can recompile easily with the
  213.                                      emulation or 8087 library and not have
  214.                                      unnecessary code. If MATH_FP87 or MATH_EMU
  215.                                      is #defined, the rdiv() function will not
  216.                                      be compiled. Otherwise, no math library
  217.                                      will be linked in, and the final .COM
  218.                                      will only need ~15K to run.
  219.                                    - included with the Free program are 2 batch
  220.                                      files, FRC.BAT and FRL.BAT, used to compile
  221.                                      and link Free. Don't worry about the link
  222.                                      batch file, even though it specifies the
  223.                                      Emulation math library, TLIB does not link
  224.                                      it into FREE.COM because it's not needed.
  225.  
  226.                          2-8-89 Version 1.51
  227.                                   - if no command line arguments given, only
  228.                                     the current drive would be checked, even
  229.                                     if FREEOPT=X. Fixed
  230.  
  231.  
  232.     I can be reached at:
  233.  
  234.     Home:   Howard S. Kapustein
  235.             1695 Barbara Lane               
  236.             East Meadow, New York 11554  
  237.             Phone: (516) 481-9612           
  238.  
  239.     College (until 5-19-89):    Howard S. Kapustein
  240.                                 404 Davison
  241.                                 Rensselaer Polytechnic Institute
  242.                                 Troy, NY 12180
  243.                                 (518) 276-7381
  244.  
  245.     Modem:  The BOSS (201) 568-7293  ***Support BBS
  246.             Software Society (201) 729-7410
  247.             Computer Connection (202) 547-2008
  248.             GEnie
  249.  
  250.         Until graduation (May 19, 1989) please try to contact me
  251.     at college. If you call my home while I'm in Troy you're not
  252.     likely to get much information (my parents aren't exactly
  253.     computer people.)
  254.  
  255.