Author: Don A. Williams
Version: 4.2.1 Date: February 25, 1994
Fixed ÿa ÿbug that appeared when the TRUNCATE option was specified and ÿthere
where just enough active entries in a directory to require an integral number
of ÿclusters ÿ- ÿin ÿthis case, ÿCSAP attempted to write ÿout ÿone ÿtoo ÿmany
clusters. ÿSome minor, cosmetic changes were also made. ÿThere have been no
reports ÿof ÿCSAP ÿuse with any of the disk compression ÿfacilities ÿsuch ÿas
DoubleSpace, Stacker, or SuperStore yet and I don't use any of them. Be VERY
careful if you use CSAP with one of these facilities.
Version: 4.2.0 Date: February 5, 1994
Finally, ÿthe problem with large partitions appears to be fixed! ÿI ÿfinally
got a system with a single 200 meg partition and tracked down the bugs! ÿThe
special modifications to the absread/abswrite functions made in Version 4.1.0
by ÿEdgar ÿSwank are no longer necessary. ÿBorland fixed ÿtheir ÿversion ÿof
absread/abswrite to handle partitions > 32 ÿmeg. ÿThe major problems were ÿa
number ÿof ÿcalculations ÿthat ÿshould have been "long" ÿÿand ÿactually ÿwere
"unsigned". ÿThis version, again, ÿhas NOT been tested on a large variety of
configurations - I only have the one system with a large partition - and must
be used with care!
Version: 4.1.0 Date: January 3, 1994
This version is another attempt to fix the problem with large partitions. ÿI
had some external help with this one from Edgar W. ÿSwank. I ÿhave no system
on ÿwhich I can test the large partitions - the largest partition on my ÿmain
system is 60meg. ÿMr. ÿSwank located and fixed a couple of the problems ÿfor
Version: 4.0.0 Date: September 9, 1993
This version attempts to fix the long standing problem with large partitions,
i.e. FATs larger than 64k. It MUST be considered as a "Beta" test version!
Version: 3.2.1 Date: September 25, 1992
This version reinstates the "truncate" ÿoption that was destroyed by ÿversion
3.2.0. It also fixes a long standing error it writing the second copy of the
FAT when ÿa ÿdirectory has been truncated. ÿÿThe ÿversion/date ÿprintout ÿare
corrected in this version too!
Version: 3.2.0 Date: February 20, 1992
A ÿtotal reimplementation of the handling of erased entries ÿthat ÿeliminates
the "cross linked files" problem. Evidently, some of the disk organizers pay
no ÿattention ÿto ÿthe "end of directory" ÿsentinel unless it occurs ÿat ÿthe
physical end of the directory. ÿCSAP now zero-sets all entries at the end of
the directory. ÿThe truncate directory option is, ÿtemporarily, ÿcrippled in
Version: 3.1.2 Date: February 19, 1992
Minor change in the handling of erased entries in an attempt, ÿonly partially
successful, ÿto eliminate the "cross linked files" ÿproblem that occurs ÿwhen
CSAP ÿis ÿused ÿin conjunction with some of the ÿ"disk ÿorganizer" ÿprograms,
notably Central Point Software's COMPRESS and the Shareware DOG.
Version: 3.1.1 Date: February 14, 1991
Made ÿa ÿvery ÿminor change to allow CSAP to run under ÿMS-DOS ÿ5.0. ÿÿThe
change amounted to nothing more than allowing "5" as a DOS version number.
Version: 3.1.0 Date: July 11, 1990
Repaired ÿÿa ÿÿrather ÿmajor ÿproblem ÿwith ÿthe ÿ'-t', ÿÿÿTruncate
Directories, ÿoption ÿand empty directories. ÿIf there was a directory
consisting of nothing but erased files and CSAP was executed WITHOUT the
'-t' option and, ÿlater, ÿCSAP was executed WITH the '-t' ÿoption, many bad
things including corruption of the disk could occur! Also corrected the count
of freed clusters which was one too high and added a count of the freed bytes
to the message.
Version: 3.0.2 Date: June 20, 1990
Since the absread() and abswrite() functions provided with version 1.0
of ÿBorland ÿInternational's ÿTurbo C++ ÿsupport the ÿlong ÿsector addresses
required by partitions larger than 32 meg, the special routines used by CSAP
are ÿno ÿlonger ÿneeded and have been removed. ÿThe GetDPB() ÿÿfunction was
recoded to ÿeliminate assembly language at the same time. ÿAdded a ÿmessage
showing the number of clusters freed by the "Truncate Directories" option,
'-t', and fixed a small bug in the truncation routine.
Version: 3.0.1 Date: June 18, 1990
Version 3.0.1 of CSAP is nothing more than a recompilation of CSAP using
Turbo C++ 1.0. It is slightly smaller and slightly faster than CSAP 3.0.0.
Version: 3.0.0 Date: May 11, 1990
Version ÿ3.0.0 ÿÿof ÿCSAP can handle MS-DOS 4.xx and DR ÿDOS ÿ3.xx large
partitions. ÿÿIt ÿalso ÿintroduces ÿthe ÿoptional ÿability ÿto ÿÿtruncate
directories, ÿÿi.e. ÿrelease unused directory disk space back to ÿthe free
space ÿpool. ÿCSAP now uses Chris Blum's Absolute Disk ÿI/O ÿmodifications
but ÿonly ÿthe ÿOBJ file for the Compact model in included in ÿthe ÿCSAP
ZIP. ÿThe entire ÿpackage ÿis available on CompuServ in IBMPRO Library
#3 ÿÿas ABRD40.ARC. Version 3.0.0 of CSAP MUST be regarded as a "beta test"
version ÿ-there ÿare now many different possible configurations and I ÿhave
not been able to test them all. ÿIt has been tested with MS-DOS 3.3 ÿon the
small partitions that 3.3 ÿcan handle and with MS-DOS 4.01 and DR DOS 3.41
on small partitions and on large partitions up to 70 ÿmeg. ÿÿI ÿwould highly
recommend that you take a full save of your hard disk before using CSAP 3.0.0
until you are sure that it works with your particular setup.
Version ÿ2.1.1 ÿÿof CSAP corrects the incorrect sorting on Date/Time that was
reintroduced in CSAP 2.0.9 and later versions. Thanks to David Klatzco for
Version 2.1.0 ÿof CSAP corrects the handling of the '.' ÿand '..' directory
specifiers ÿand adds the documentation of the '-V' ÿoption ÿto ÿCSAP.DOC
(the '-V' ÿhas been operative in the program for some time but was left out
of the documentation.)
CSAP is composed of 5 modules; ÿCSAP.C, SORTDIR.C, ÿISDEV.C.C, GETDPB.C,
and ABSREAD.OBJ. The current version of CSAP, ÿCSAP 3.0.0á, ÿhas been
designed ÿfor compilation with Borland International's Turbo ÿC ÿ2.0.
The ÿmodule ÿISDEV.C ÿcould be replaced by ÿTurbo ÿC's ÿsupplied ÿfunction
isatty(), however, I plan to extend ISDEV.C to distinguish among files, CON,
AUX, ÿÿand the printer. ÿThe function isatty() ÿjust ÿdistinguishes ÿbetween
files and the others.
GETDPB.C cannot be compiled in Turbo C's interactive environment (TC). ÿÿIt
is ÿÿprimarily ÿinline ÿASM ÿcode ÿand ÿrequires ÿthe ÿmore ÿÿconventional
environment ÿprovided by ÿTurbo C's TCC command. ÿAs a ÿresult, ÿÿCSAP ÿwas
designed ÿto ÿbe ÿcompiled ÿthrough the use of a ÿMAKEFILE ÿand ÿthe ÿMAKE
facility of Turbo C.
CSAP currently ÿcompiles ÿand ÿexecutes correctly ÿin ÿany ÿof ÿTurbo ÿC's
supported ÿmemory ÿmodels except HUGE. ÿThe memory model is defined ÿas a
macro in the MAKEFILE and is supplied on the MAKE command line, i.e.:
to make a SMALL memory model version of CSAP (the "s" must be lower case
since ÿit ÿis ÿa ÿparameter ÿto TCC and TCC is ÿcase ÿsensitive ÿon its
parameters). ÿThe resultant EXE file will be named CSAPx.EXE where ÿ'x'
is C, ÿS, ÿM, or L depending upon the memory model selected. ÿThe default
memory model ÿ(if -DMDL is not specified on the MAKE command) ÿis the COMPACT
model. ÿÿThe ÿcurrent MAKEFILE will NOT work properly for ÿthe ÿTINY ÿmemory
model, the library specifications in the MAKEFILE would have to be modified
to ÿuse ÿthe SMALL libraries for the TINY model and the effort is ÿprobably
not worth it. The command:
TCC -mt -G csap sortdir isdevice getdpb
would have ÿto be used to produce a TINY memory model version of ÿCSAP ÿand
would produce an EXE file with the name CSAP.EXE.
The EXE and OBJ files in the CSAPxxx ZIP have been produced for the COMPACT
model which is probably the most general.