| |
LesSpace - Detailed Documentation
|
|
|
Note: some topics are covered in the
separate Lesspace-Summary page: |
|
And, if you're reviewing this file in TEXT
form, see the note at the start of the
Summary file. |
|
Why ?: |
Following many queries on CompuServe and elsewhere,
especially from users of Paradox (DOS) who had problems with very large
Disks, I decided to investigate this matter. In particular, this was
intended as a small gesture for the SUPERB support available on the PDoxDOS
forum on CIS, which I have availed of on many occasions. The result was this
tsr !.
Subsequent feedback indicates that the utility is also used at
Non-Paradox sites. Seemingly, similar problems have arisen with
versions of dBase, ObjectVision, WordPerfect, Q&A, DataPerfect, etc.
Do understand that the Space problem in Paradox (etc), is actually
a reflection of the HIGH quality of the product. To explain, the
better products check if adequate disk-space exists, before attempting
operations which require additional space. The lesser products just
plough on regardless - resulting in user intervention if there are
space problems, and possibly corrupt data, inconsistent files, etc. |
|
Application: |
Any DOS/Windows app which:
- bombs on excessive total or free disk space.
- bombs on very large Cluster sizes.
- produces incorrect results, due to very large
Hard-Disks.
- produces incorrect results, due to very large Cluster
sizes.
- gets wrong Floppy Status details.
- gets wrong CD Status details.
- requires Drives to appear as "Remote".
- requires the base date of 2-digit years to be changed
from 1900. |
|
The Space
Problem (Total/Free Space): |
Some software products/apps were not designed to handle
Hard-Disks over a specific size. The threshold might apply to the total
capacity of the disk, or the free space. When the limit is
exceeded, the internal software calculations may produce incorrect results.
The user might be presented with incorrect space values, such as small
positive values, zero, or even negative values !. Or, the user may be
presented with error messages, indicating that there is insufficient space,
or no space. Lesspace reduces the space parameters, on-the-fly, to
acceptable limits.
Note that lesspace does not reduce the space, nor disable access to
the full space available. With lesspace, the application will see
Total space, or Free space, of not more than about 536MB. As free space, for
example, is used, the app will continue to see 536MB free, until such time
that less than 536MB is actually free. Then lesspace will back off, and the
app will see the actual free space. |
|
The Space Problem (HD Parameters): |
Even when the Total/Free Disk-space is below the acceptable
limits of a program, the internal Hard-Disk parameters (especially on large
HDs) may be unacceptable to a program. For example, most programs would
probably not accommodate "sector sizes" in the range 1 to millions (sector
size is usually 512 bytes !), or Sectors-per-Cluster of 1 to millions, etc.
The internal parameters of newer HDs may exceed limits expected by the
programmer, leading to incorrect results. Lesspace changes some internal HD
parameters, on-the-fly, as needed.
Similarly, when an extremely large drive is used, some or all of the
internal HD parms will very likely be misused by the app software, (because
they'll be outside the range expected by the programmer), but the result
might yield a positive acceptable
value, and so the app will run. This explains why a program like Paradox-DOS
might run correctly on, say, a 3Gb drive, and bomb with an out-of-space
error on a 6Gb drive, and bomb on a 10Gb drive, and work well on yet another
10Gb drive (because the internal HD parms on the 2 10Gb drives are
different). It works on some very large drives, because it just thinks
there are no space problems. However, it's space-calculations on those very
large drives are incorrect, and in these situations users should try to
establish if the space data seen by the app is running at safe
levels, or if it's running on some edge. If the former, lesspace is
probably not needed. If the latter, it probably is. |
|
SysCon (or equivalent): |
Syscon or similar utilities may be used to limit
the space seen by an app on a network drive. However, a user should be aware
of some issues: Suppose the server had 20Gb, and a specific user was
restricted to, say, 1Gb. In theory, an app such as PDoxDOS should be able to
handle that restricted space (1Gb) with ease. However, success will depend
on the internal specs of that 1Gb drive, as presented by the DOS
API back to Paradox: Suppose the 20Gb drive is composed of 100 heads, 200
bytes per sector, 300 sectors per cluster, etc... (you get the idea)... all
adding up to 20Gb. Then on the 1Gb drive, the system will reduce some
(or maybe all
?) of these parameters, so that the net result adds up to just 1Gb. BUT,
maybe some of these individual parameters will still exceed the capacity of
the internal PDox calcs, and the results in PDox will then be flawed.
So, be cautious. To play safe (with SysCon), the user should verify that
PDox is correctly handling the "1Gb" drive (with tests on DriveSpace(),
etc). To be even safer (with SysCon), the user should identify the full
internal specs of that 1Gb drive ("Lesspace /D" will show some of this
data), and check that ALL of these parameters are typical of a
normal 1Gb drive, and therefore can be handled correctly by PDox. If
they're normal, lesspace is not needed. If not, or you cannot check them,
lesspace may be needed. |
|
Q&A Install: |
Intro: Many versions of Q&A are in common
use, and many versions cannot run on large hard drives. Lesspace resolves
these problems, allowing Q&A to run.
Some Q&A users have reported problems when Installing Q&A on large
hard drives. A Divide-by-Zero error message is typical of the
problems reported here (without lesspace loaded). These users have indicated
that Lesspace allowed the install process to proceed a little further, but
not to complete properly. Various errors have been reported. The assumption
is that lesspace has some problem.
I finally tried some Installs of Q&A-DOS, version 4, on large drives, and
noticed some problems, and, hopefully, made some progress... (Please note, I
have no experience in Q&A).
Problem 1: Lesspace is, indeed, needed to run Install on
large drives (in the absence of smaller partitions, etc). And lesspace works
as intended.
Problem 2: Some code in the Q&A Install.EXE program (ver 4)
is not robust, and, when manually corrected, the Install runs to completion.
It is not currently possible for lesspace to make this correction. If I knew
more about the functionality of the Install program, it might be possible to
adjust lesspace to resolve the problem, as noted below. (PS: These tests
were done using lesspace version 3.0/3.1. There's a very slight possibility
that later versions of Lesspace would improve the situation marginally,
though I've not checked... yet !).
Briefly: while Q&A Install is scanning the target drive for previous
installs, it shows a Progress-Bar on the screen. I assume it's scanning all
the directories for specific file-names, and maybe for specific
file-contents. In general, I don't understand how a useful progress-bar can
be shown for this operation, because (IMO) it is not easy to estimate the
total time that this type of search will take. It might take as long to
initially estimate the total time, as it would to do the actual job !.
Anyway, the bar is sometimes mis-scaled, and much of the internal code and
data gets totally destroyed. Technically, the program seems to be written in
some version of Borland Turbo C, perhaps with some Assembler, and a variable
seems to have been defined as a Signed Char (or just as Char, with the
default set to Signed), whereas it should have been an UN-Signed Char.
A Solution: Obviously, the best solution is to avoid or
prevent the conditions which cause the weak code to execute. But, I don't
know (yet !) what these are !. Next solution is to adjust the internal code
- noting that these comments apply only to ver 4. To do so, you'll need a
HEX editor. And, if you're familiar with that type of tool, the following
will be easy; if you're not, don't try it !:
- If Install.EXE is on a R-O device (Eg, CD-ROM), copy it (and
any other relevant files) to HD or FD,
- Keep a safe backup of Install.exe.
- If Install.exe is flagged as R-O, remove this attribute,
- Scan for the following hex pattern:
55 8B
EC 83 EC 50 80 7E 0C
24 7D 05 8A 46 0C EB 02
- If you don't find an exact match, then accept variations on
the "24" byte, though the value should not vary very much
from 24,
- Change the 7D to 73, save,
and test.
This mod should make the internal code somewhat more robust in all
circumstances.
Help !: Addressed to readers who are experienced in Q&A;
and/or who have access to the Q&A install source-code (just out of
curiosity):
- Can anyone precisely identify what external
factors/conditions expose the weak code in Q&A Install ?. Maybe a very large
number of files on the drive; maybe very large directories; maybe a drive
with total space over xxx; maybe a drive with more than xxx bytes free.....
- Does anyone know how the "Progress-Bar" is scaled, exactly
what it refers to, etc, ?.
If we knew these details, a better solution might emerge. It is technically
possible, but time-consuming, to identify the above details from the
contents of the EXE file... or from repeated Installs on various
platforms.... |
|
PKZIP & Spanning: |
Some problems have been observed with some versions of
PKZIP, when the Spanning option (-&) is used, and Lesspace is loaded. The
PKZIP step might bomb, with various error messages. We investigated to a
limited extent, and discussed the issues briefly with PKWARE. We identified
two separate issues, though, possibly, they're related within the PKZIP
code:
Trigger-1: Sometimes PKZIP will bomb, just because Lesspace
is loaded. However, PKZIP bombs even if lesspace is totally deactivated
internally, except for merely occupying some RAM space. Therefore, it's not
the code/functionality in Lesspace that's causing the problem. We
tried other TSRs, with the same result, and we wrote a trivial TSR, which
does NOTHING, apart from load, sleep, and terminate, and we could trigger
the bomb. Our conclusion was that the Spanning code in some versions of
PKZIP was somehow sometimes dependant on RAM addresses, Ram usage, etc.
Trigger-2: In some shipped versions of Lesspace, there's
some dormant Debug code. This is in many products, and is normally not
problematic. However, if some versions of PKZIP (with Spanning) run while
any of these versions of Lesspace is active, PKZIP bombs. When we removed
the Debug triggers in Lesspace, PKZIP/Spanning did not bomb. Maybe the
PKZIP/Spanning code also has some debug facility in there, which conflicts
with other external Debug activations. Maybe PKZIP detected the debug trap
from Lesspace, and considered it intrusive, and bombed. Maybe...
Solution-1: Use the latest version of Lesspace !. The first
few shipments of 3.1, and a few prior shipments, had Debug triggers. Most
3.1 shipments do not. We will try to ensure that no further shipment have
Debug triggers !.
Solution-2: Get the latest version of PKZIP !. And/or check
with PKWARE. It seems that PKWARE have released some updates to many of the
main version of PKZIP, though sometimes without changing the recognised
Version-No of the software, eg, 2.04g. Furthermore, PKWARE have many updates
for Registered versions only, so you are encouraged to Register, and to keep
up-to-date.
Credits: Many thank to Sunil Pillai for reporting this
problem, and his patience and assistance in investigating it... |
|
The Int-24
Problem [eg, DriveStatus()]: |
The Critical Error Handler (Int-24) code in Win95
(and, based on some tests, in Win 3.1 also) does not behave exactly like the
equivalent code in older versions of DOS. Applications which are dependent
on the older handlers may give incorrect results in the WIN environments. An
example is the DriveStatus() function in Paradox. Without the fix,
DriveStatus() will always return TRUE, on Floppies and CDs. |
|
Win2000 - If-[Not]-Exist-Nul command: |
The IF-[NOT]-EXIST-NUL command is usually used to check for
the existence of a Folder/Directory Name, and may be used in a BAT file or
in application code. Example in Paradox (DOS) PAL code is the
IsFile(........NUL...) function, or DIREXISTS(.....NUL...). To confuse
matters, this facility can be implemented in many ways internally - within
high-level compiled code, or using embedded Assembler, or low-level C code,
etc. For example: try to OPEN NUL; issue a Find-First on NUL or on *.*;
extract the folder-name and get the attributes of that entry, etc.
Furthermore, some users have suggested that "NUL." (with a dot!) or "NUL.X"
may sometimes yield better results than using just NUL. The bottom line is
that the command sometimes yields the wrong answer, as can be readily
observed by searching for postings on this issue in UseNet. A BAT file, or
application code, may issue the test, get the wrong status, and then execute
the wrong process.
Our tests (and many Newsgroup users) suggest problems with the execution of
IF-EXIST-NUL under W2K, both in BAT files and when called by App code.
To confirm the problem in a BAT file, you might execute something like the
following simple code, comparing the results under W95, W98, DOS, W2K, etc:
@echo off
cls
::
--------------------------------------------------------------------------
:: Check that "IF EXIST ...\NUL" is supported properly
::
:: (On broken PCs, IF EXIST C:\TEMP\NUL always returns FALSE).
::
MD C:\TEMP >nul
Echo Y | Del C:\TEMP\TEMPDIR.TMP\*.* >nul
RD C:\TEMP\TEMPDIR.TMP >nul
Del C:\TEMP\TEMPFIL.TMP >nul
If Exist C:\TEMP\TEMPFIL.TMP Goto Exist2
Echo.>C:\TEMP\TEMPFIL.TMP
If not exist C:\TEMP\TEMPFIL.TMP Goto Exist2
If not exist C:\TEMP\NUL Goto Exist2
If exist C:\TEMP\TEMPDIR.TMP\TEMPFIL.TMP Goto Exist2
If exist C:\TEMP\TEMPDIR.TMP\NUL Goto Exist2
cls
Echo IF-EXIST-NUL is OK
Goto Exit
:Exist2
cls
echo.
echo ...Your DOS/WINDOWS system may need to be upgraded before running this
app.
echo It does not support IF EXIST X:...\NUL properly.
echo You're probably using a very old Win-95, or Win2000. Maybe try LESSPACE
??.
echo.
:Exit
Pause
Our comparisons between W2K and W95/W98 indicated that issuing an internal
Find-First on NUL yields the wrong result under W2K - it always returns
FALSE. However, issuing an OPEN on NUL worked correctly in W2K, as did a FF
on *.*, and as did an Attribute-check on the folder-name.
So, I inserted a trap in (registered) lesspace 3.3, which ACTIVATES by
default, whereby lesspace watches for a Find-First on NUL, and replaces it
with an equivalent Get-Attribute function. The overall result is that IF
[Not] Exist NUL in BAT/Script files, or similar functions in applications,
should then return the correct results under W2K, with Lesspace running. We
confirmed this fix using BAT file code similar to the above, and using
IsFile(.....NUL...) and DirExists(.....NUL...) in Paradox-DOS.
Technically, lesspace just watches for Find-First functions on NUL (or
NUL.XXXXXX), and also allows for the name to be preceded by a
"Drive-Letter:" combination (eg, C:NUL), or by a partial or full Path
specification (eg, H:ABC\DEF\NUL.X). If you are using a naming structure not
supported, let us know.
If, for some reason (eg, testing), you want to DISable this fix-up in
lesspace, then user the /N command-line option. |
|
FileSize() in Paradox: |
When Paradox emits a FileSize(), the result will
sometimes be incorrect (0, or non-0 but too small), depending on the HD
configurations. Lesspace sometimes adjusts the Cluster Size, so
that Paradox emits a more accurate FileSize() result.
Here's the low-down, based on my tests/investigations...
A file has 2 sizes:
- the "actual" bytes of the file, and
- the space on the disk which is "allocated" to the file.
The latter is a multiple of the Cluster-Size of the disk (ignoring matters
like Disk compression...).
Most programs/utilities report the first of these, the bytes within the
file. Paradox reports the second, the space allocated to the file.
Paradox calculates the FileSize, by establishing how many clusters are used
by the file, and multiplying by the size of each cluster. The answer will
equal or exceed the actual bytes used by the file. There are limits to the
Cluster size which Paradox expects - and these limits are further based on
the Sectors-per-Cluster, and the Bytes-per-Sector parameters. If lesspace
encounters values in these parameters which exceed Paradox expectations, it
adjusts them downwards, until they are acceptable. The net result is that
Paradox may then emit a FileSize() which is slightly smaller (though still
equal to or higher than the bytes used !) than it would have delivered, if
no limitation existed, and if lesspace made no adjustments. |
|
FamilySize() in Paradox: |
We haven't thoroughly checked this function in Paradox 4.5
on all sizes of systems, and with various Table/Family sizes also. However,
on the assumption that the same internal Paradox mechanisms are used, then
the overflow errors may arise under appropriate conditions, and the
lesspace traps should automatically generate more acceptable results. |
|
DriveSpace() in Paradox: |
DriveSpace() will present data to the app, based on the
revised HDD specs modified, if necessary, by lesspace. But, DriveSpace does
not always issue calls to DOS to retrieve the actual "current" space
settings. If Paradox thinks that the space details have not recently
changed, then DriveSpace merely presents the details which were retrieved at
some previous time. To ensure that DriveSpace present refreshed data,
precede the DriveSpace command with a Run NoRefresh XXX.BAT, where
XXX.BAT does nothing. After the Run ends, Paradox refreshes the HDD
data in RAM (even before the DriveSpace is executed !), and then DriveSpace
will be more accurate. |
|
UserName() in Paradox: |
UserName() sometimes retrieves the "Computer-Name" instead
of the "User-Name". Which is usually not very useful within an app, and
which is not the expected result anyway. My experience is that UserName()
usually works well in Netware-based systems, and usually does not work well
in Windows LANs, under Terminal-Server, etc.
This may be a bit technical for some readers, but we'll keep it brief...
There are many internal functions related to Retrieving and Setting
User-Names, including 21-5E00, 21-5D06, 21-5F44, etc. 5E00 is designed to
retrieve just the "Machine Name". 5D06 retrieves many settings, including
Machine-Name. 5F44 retrieves many settings also, including Computer-Name,
User-Name, Domain-Names, etc. (Check some technical literature, or Ralf
Brown's famous Interrupt-List, for full details). My investigations indicate
that PDoxDOS uses 5E00, and 5D06. I've not seen it use 5F44. You'll notice
that the functions used in PDoxDOS retrieve the Computer-Name, and not the
User-Name!! I'm sure there are good reasons for this approach in the Paradox
internals perhaps to suit Netware which would have been very popular
when PDoxDOS was written.
Lesspace now (3.5+) has an internal function which attempts to repair the
UserName() function. It it activated by using a command-line switch: /M1,
/M2, /M3, or /M4. When PDoxDOS issues 5D06, and /M1 is used, lesspace
internally uses 5E00 to fill in the 5D06 details. Similarly, when PDoxDOS
issues 5D06 or 5E00, and /M2 or /M3 or /M4 is used, lesspace uses 5F44
on-the-fly, and replaces the 5D06/5E00 name with one of the main 3 names
retrieved from 5F44.
If your UserName() function is not retrieving the correct name, you might
try each of the /Mn options. If none of them work for you, you might let us
know, and indicate what OSes you are using (client and server), settings
supplied in the CUSTOM script, NUpdate/NUpdateR settings, command-line
options, etc. We've checked only some combinations, and found that /Mn
worked well. |
|
Remote Drives: |
This facility is controlled by the "/R:" command-line
option, as discussed later, and may be used to internally mark the stated
drives as remote. This should be used to flag local (repeat LOCAL)
drives as Remote - your operating systems will (hopefully)
automatically flag all your actual remote drives as remote.
The feature was implemented because tests of apps such as TurboPal,
indicated that multi-user features would activate only on real "remote"
drives, and would not activate on local shared data on a P-P Server, or on
local data on a standalone PC with multiple sessions running under
Windows/etc. With the "/R:" option, you can temporarily flag local drives as
remote, and hopefully activate multi-user facilities in your apps. However,
if your apps also rely on other conditions (as well as the remote
status), then this "/R:" mod alone will probably not help greatly.
Note-1: In general, don't use the "/R:" option !. This option should be
activated only when absolutely necessary (eg, just before the app starts),
and should be deactivated (using lesspace /U) as soon as the app has ended.
Otherwise, other apps might behave badly, or refuse to run, if they think
that the stated drives are indeed Remote / Networked. For example,
CHKDSK may refuse to execute on the "/R:xxx" drives, while lesspace is
active.
Note-2: There is no option to flag FILES (or other entities) as Remote; only
DRIVES. |
|
Set Epoch: |
This facility is controlled by the /E
command-line option, and must be used only in conjunction with a modified
EXE file. This option has been tested with all the main DOS releases of
Paradox, but not with other products. If other products treat Dates in a
manner similar to Paradox-DOS, then this facility may also work for such
products.
As discussed elsewhere on this site, Paradox-DOS treats dates as follows:
- All input dates entered with 1-digit or 2-digit years are always
assumed to be in the range 1900-1999 (irrespective of system date, etc).
- All output dates in the range 1900-1999 will show with the 19
suppressed (unless a format is applied to the output date-field, to
display the date in a user-specified manner).
Effectively, in Y2K terminology, "PDoxDOS uses a window for 2-digit years,
starting at 1900".
Many older PDoxDOS apps probably have input date-fields built to accept just
2-digit years. When dates reach into the 20xx range, these fields need to be
expanded to accommodate 4-digit years, and validation rules, operating
procedures, etc, changed accordingly.
Lesspace now has an option to change the date-behaviour in PDoxDOS apps,
such that no changes are needed to input forms, no changes to operating
procedures, etc. This is achieved by altering that 1900 base year
to whatever the user requires. Obviously, if an app uses dates which are
close to, or exceed a 100-year period, this "epoch" option is of little
value, but in that case, the system is, hopefully, already set up to handle
4-digit years.
For example: suppose the epoch is set to 1985. Then:
- all 1-digit and 2-digit years in the range 85-99 are assumed to be
in the 19xx century (the same century as the epoch setting), and
- all 1-digit and 2-digit years in the range 00-84 are assumed to be
in the following century (20xx).
There are two steps to activate this process:
- Lesspace version 3.0 or later is needed, and must be used with the
/E
command-line to decide the epoch date.
- The EXE file (eg, Paradox.EXE, PDoxRun.EXE, ParadoxR.EXE,
PDoxRunR.EXE, etc) must be modified to link in with the epoch code in
lesspace. Currently, we are not releasing this program to makes these
changes to the EXE file. You must send us a copy of the EXE file, and we
will make the changes, and return it. This incurs a charge. (See some
additional notes & options).
Please Note: If you run a modified EXE file, without
lesspace loaded, or without the /E option activated, then
the EXE file will crash and/or produce unpredictable results.
Technically: the default approach uses Ints A0/A1/A2 to
communicate between the EXE code and lesspace, and it is assumed that these
vectors are not in use by any other software. If they are, a warning message
will appear when lesspace tries to load, and if you inform us, we should be
able to locate some other free vectors in your systems. (Other vectors used
by lesspace are shared with other users of these vectors. However,
sharing was not possible with A0-A2, because no free registers are available
for function codes, and Fn-codes would be essential for safe vector
sharing. We tried (unsuccessfully) to pass Fn-codes in the Stack, in
reserved memory locations, etc, etc, but these approaches are not proper,
especially with prot-mode/V86 apps. Also, this epoch facility could have
been implemented in an independent TSR, but, after some consideration, we
thought the advantages of building it into the lesspace engine outweighed
the advantages of keeping it separate.
Now, if only we could change the default date display in PDoxDOS, so that it
would show 2-digit years in the range 00-09 with that leading zero not
suppressed - just like it does for months 01-09 ?. Hmmmmm..... |
|
Overhead (RAM, Speed) / Impact: |
Lesspace is written entirely in assembler. It therefore has
a very small RAM requirement, and executes extremely quickly. When resident,
it occupies only about 1k-3k of RAM (different versions have different
sizes), and can be Loaded High. It's speed overhead, when compared
with Disk IO speed, etc, would be so small as to be irrelevant. When the
shareware version loads and unloads, it pauses briefly with some screen
messages, but once loaded, executes at full speed.
Lesspace knits into the internal DOS functions, and operates as a type of
DOS extension. When a DOS-Box is opened in a Windows environment, and
lesspace then loaded in that DOS-Box, lesspace should impact only the apps
run in that DOS box, and only while it's loaded and active. It should have
no impact on any other apps running under Windows. |
|
Files Supplied: |
The following files are supplied:
LESSPACE.COM - the TSR
FILE_ID.DIZ - Short description, for BBSes /
CDs
LESSPACE.HTM / LESSPDOC.HTM - these
notes, in HTML format.
LESSPACE.TXT / LESSPDOC.TXT - these
notes, in ASCII format.
(To facilitate emailing, a printed copy of
these notes is not normally supplied). |
|
Using LESSPACE.COM: |
1. See notes below about Liabilities,
etc., (the Legalese).
2. Copy LESSPACE.COM to a Directory in your PATH (or the
"current" one).
3. If you don't already run your app from a batch file,
then create a batch file. (Do NOT skip this instruction !).
4. In the Batch file, enclose the Application command
line, as follows:
.....batch
file commands.....
LESSPACE
<--- Installs the TSR (try LH, if desired)
PARADOX xxxxx <--- Your Application
LESSPACE /U <--- Uninstalls
the TSR
.....batch file commands.....
See section below on additional command-line
options.
You could append ">x", or ">>x", or ">NUL" to the lesspace lines, to
suppress silly screen messages, but this won't be very useful if error
messages also disappear, and, worse, if lesspace is waiting for a
go-ahead
keyboard response !!.
When lesspace loads, it displays a message, and pauses briefly. (There is no
pause in the registered version). When it unloads, it also displays a
message, and pauses. If these messages don't appear, then lesspace is not
loading and unloading correctly, and is probably not activating at all !. In
that case, ensure that your PIF or Shortcut is indeed calling the relevant
BAT file (and not the EXE file, or something else !). You could also include
some additional PAUSEs in your BAT file, during testing, just to confirm
that it is being activated correctly !.
ERRORLEVEL is set to 0 with a successful install or uninstall of lesspace.
ERRORLEVEL is set to 1 after all error conditions detected while trying to
Install or UnInstall (e.g., an unsuccessful attempt to uninstall, duplicate
install, invalid command-line, etc.).
You should be able to "LoadHigh" the utility, though it takes only about
1k-2k bytes of RAM, plus it's PSP.
Depending on your OS, etc., the TSR may be unable to resolve your space
problems, if you include it in your AUTOEXEC.BAT (or equivalent !). However,
you may try it, if this approach offers benefits to you.
In a Network, you should consider running the batch-file from the server,
and also loading lesspace from the server, to facilitate the installation of
updates, etc. |
|
Command-Line Options / Notes: |
You should use only valid combinations of the following
options. Some inconsistent combinations are accepted, with the leftmost
valid option(s) processed first and others ignored.
Invalid command options (eg, ?, or /?) will present a list
of the valid options.
None !:
Load Lesspace. If lesspace is already active, an error message appears, with
a Press F1 to proceed.
/U [Uninstall]:
Uninstall the utility, if already loaded, and if safe to uninstall.
If a /U is attempted, and cannot be serviced, an error message is presented,
with a Press F1 to proceed.
/Q [Quiet]:
Suppresses the Press F1 warning, if:
- a Load is attempted, and a resident copy is already
active, or
- a "/U" is attempted, and no resident TSR has been
located.
For all other error conditions, the Press F1 still applies.
/R:xxx [Remote Drives]:
This indicate that specific DRIVES are to be internally flagged as
Remote (while Lesspace is active).
Example:
Lesspace /R:DGH
states that all internal inquiries (from Apps to DOS) regarding drives D, G
and H, will always be informed that these Drives are Remote. (See
other comments above).
/D [Debugging !]:
Display parameters of each Hard-Disk installed (locally, and accessible from
a Server). (See other notes below). An extensive help
message also appears. This option merely displays some config details about
your Hard-Disk(s), which may be useful to us if there are problems with
lesspace. With /D, the tsr does NOT "install".
/L [Keyboard Control]:
Without "/L", lesspace ignores all keyboard activity while it's active.
With "/L", keyboard monitoring is enabled, and lesspace does NOT intercept
the relevant Int-21 activities and make the usual adjustments, UNTIL YOU
request it to do so by a special hot-key.
This key combination is: CTRL + LEFT-SHIFT + L
Ie, while holding down [Ctrl] and [Left-Shift], press the "L" key. There is
no visible nor audible response !.
To DISABLE Int-21 trapping later, press the same HotKey again. Use again to
ENABLE trapping, etc.
Do not use this option, unless for special short controlled diagnostic runs,
where you need to control the internal behaviour of lesspace. And note again
that there is no feedback - so use the hotkeys carefully, and YOU must
remember which state the tsr is in !.
/S [Size]:
When lesspace needed to reduce the HDD space (as perceived by the
application), it defaulted to a max of 536MB (approx). In initial releases
of the utility, this value was set much higher, but has been gradually
reduced. The value chosen is a compromise between:
- the highest value that all apps should be able to
easily handle,
- telling the app that "lots" of space is available.
In some rare instances, where an app requires more than 536MB to perform
some operation, this 536MB default value was too small.
As of version 2.3, the default has been raised to 805MB.
However, if your app cannot handle 805MB, you may use the "/S" option to
restrict the max value to 536MB.
Thanks to Mike Keating for raising the hare on this one !.
/E:YYYY [Epoch]:
This option activates the Epoch option, as explained
above. The year must be a 4-digit value, and must be in the range
1900-2099.
/N [If-Exist-NUL]:
This option DISABLEs the If-Exist-NUL fix-up for W2K.
/Z [Zero-fill]:
Some apps have presented Y2K problems based on the way they handle "years"
internally, when the range is 2000+. If the app truncates the year
to 2 digits, and then suppresses leading zeros, then years in the range
2000-2009 would shrink to just 0-9, or even to a space and 1-9. If these
2-char years are used in filenames, the filenames will have
embedded spaces, and are therefore invalid in 8+3 filename structures.
Obviously, if the source-code is available, the code should be updated.
However, if source is not available, then, with /Z in the command-line,
Lesspace will attempt to identify all internal references to filenames, and
automatically replace embedded spaces with "0" characters. The app should
then run correctly.
/W [Mouse under W2K]:
Paradox (DOS) did not work very well under some (initial?) releases of
Win2K. Specifically, Mouse support didn't work properly, or caused major
crashes. Various people investigated this issue, and we discovered that some
critical internal registers were sometimes destroyed under Win2K. In an
effort to resolve these issues, I implemented some code within Lesspace to
preserve some registers, and these extensions activate only when /W is used.
However, in tests, this exercise usually was not sufficient to resolve the
Mouse problems under Win2K, but I left the code in Lesspace in case it can
be resurrected at a later date. Until further notice, you should not bother
with the "/W" option, though it's there if you really want to try it !.
/Mn [UserName()]: This option attempts to repair the
UserName() function in PDoxDOS. The permitted values are /M1, /M2, /M3 and
/M4, and each is explained in the UserName() notes.
If UserName() is not working properly for you, you might simply try each of
these options in turn...
/T [Tecra S1 (Toshiba)]: We're aware of a problem in
this specific model of the Tecra range. The NTVDM engine in XP blows up if
any 16-bit DOS-type application tries to access RAM at addresses EF00:0000
to EF00:0FFF. We were in touch with Toshiba on this issue, but made no
progress. The "/T" option tells Lesspace to NOT access any RAM areas
(especially the first few bytes) when the Segment Register is EE00-EFFF. |
|
It DON'T WORK !!!: |
We'll try an orderly approach:
1. Check through all these notes - to ensure
you've run the utility as advised.
2. Build that recommended BAT file.
3. We need to verify that you're actually
USING that BAT file. Insert a PAUSE after the lesspace-load line, and insert
one after the lesspace-unload line. Run the app. Did the PAUSEs activate ?.
If not, the BAT file is not running correctly. (Remove the redundant PAUSE
lines).
4. Check that you're using the latest release
of the utility. If you're a registered user, contact us for details on the
latest release, in case you're using an out-of-date version, or check the
web site. We have examples of users who've received updates, but,
somehow, never implemented them !. Sometimes, if an update is "trivial", we
update only users who request updates, or who are experiencing some
problems. Maybe your problem has been addressed in a recent update !.
5. Try the "/S" option, just-in-case.
6. For this test, ensure that you're not using
the "/Q" option on lesspace. When lesspace loaded, did it show a message
line, and a "Loaded Successfully" message ?. If the successful
message did not appear, we've some problem. Similarly, when lesspace
unloads, a message should confirm that the un-load was successful. (Perhaps,
include a temporary PAUSE after the lesspace-load line and after the
lesspace-unload line, to visibly check these messages).
7. If lesspace does not solve your HD-space
problems, but "should", then it is possible (though increasingly unlikely !)
that you have a HD config which is not yet catered for in lesspace. We would
appreciate if you would follow these steps:
a. Open a "DOS-Box" - if
needed.
b. Ensure that lesspace is
not loaded.
c. Run "Lesspace /D".
d. Ensure that lesspace IS
loaded.
e. Run "Lesspace /D" again.
f. Unload lesspace - if
appropriate.
g. Send us:
- the
results of both of the "/D" runs
- a copy
of the BAT file
- what
messages are presented when lesspace loads
- what
messages are presented by the app load/unload
- what
messages are presented when lesspace unloads
-
extensive details of your app, and your problem
-
indicate how far you got through these steps, and the results of each.
To facilitate the recording of your HD specs, you might try:
Lesspace /D >x or
Lesspace /D >>x
and then send us the "x" file(s) (either as a file, or fax, or note, etc).
8. If we still have no success, we can supply
additional "trace" utilities, which might indicate some unusual details
about your system not yet understood by lesspace - and perhaps update
lesspace accordingly.
Note: If you are using the Epoch option, don't
forget that you must use the /E command-line option, and
you must use a modified EXE file - together. Using the /E
option without the modified EXE file will achieve nothing. Using a modified
EXE file without /E will probably cause major crashes.
Note on Sun-Unix drivers:
Some users who are running networks into Sun-Unix servers have sent us some
"/D" traces. These show disk specs, as seen by DOS, which are not normal,
and are not acceptable to lesspace. Lesspace would not function properly if
accesses were made to these mapped drives. The "Sectors-per-Cluster"
(Sec/Clu) value was 0000 which is
unusual for any DOS drive. This data would likely confuse other
low-level utilities also, or even some app software. We briefly tried to
change lesspace so that it would assume a reasonable value in these
circumstances, but this cover-up was not always successful. We also noticed
some extremely large "Sector-Sizes" (eg, 32768, whereas the usual is 512),
but lesspace should cope with these values.
If you see values like "Sec/Clu = 0000" in the /D traces, we recommend that
you seek an improved driver, or check if you can configure your client
software to deliver the correct values. Also, you might try some diagnostic
tools, or low-level "information" tools, to see how other products treat
these unusual HD specs. In an emergency, perhaps we can somehow amend
lesspace to assume the correct value, but this would not seem to be the
proper solution. |
|
Damage Detection: |
As of ver 2.3, lesspace has some additional internal code
to automatically detect internal corruption of it's data and code, while it
is running. This was considered desirable after we came across some drivers
which caused some damage to other active programs (including lesspace),
while seemingly executing correctly themselves !.
This damage-detection is a catch-22: if the lesspace code is
damaged, it probably won't run correctly anyway. If the code to detect
corruption is itself damaged, we probably won't be informed. But, perhaps
it'll appear sometimes, and therefore initiate investigation of the causes
!. We hope that lesspace does not damage itself, and that any reported
damage is caused by some other active software !.
If corruption is detected, a message prints on the screen (the screen is
assumed to be in text
mode), indicating the damaged location(s) in lesspace, and the actual
(damaged) and expected contents. If this arises, you should note the
details, re-boot, and try to establish the real cause. If you suspect
corruption of this nature during tests, try to leave the screen in text
mode, so that any message is visible.
And we don't have an option to Disable this checking - if it occurs, it's
extremely serious - irrespective of the cause !. |
|
Credits: |
A special thanks to Harry Goldman, Dickford Cohn, Helge
Larsen, Edwin Hattenschwiler, Steve Green, Kevin Mitchell, Barry Schnur,
Kevin J. Donaker-Ring, Sunil Pillai, and very many others, both on CIS and
on the "Paradox Newsgroups", who have helped with testing of the TSR,
feedback, responding to customer queries, and in many other ways. Thank You
!!. |
|
Version History: |
1.0 Internal
1.1 Internal
1.2 Internal
1.3 Internal
1.4 First public release.
1.5 "/Q" implemented, to suppress some
error messages. "Fix" for the Int-24 problems (eg, DriveStatus() on Floppies
and CDs in Paradox).
1.6 "/R" command-line implemented.
Note: Some people suggest that PDox 3.5 cannot handle hard disks larger than
1GB, whereas later PDox releases can handle up to 2GB or 4GB. (My tests
suggest that 3.5 can handle 2GB, though it may choke on smaller sizes,
depending on the HD specification). To better accommodate Paradox 3.5, the
size threshold has been reduced from 2GB to 536MB.
1.7 The "UnLoad" code was updated
slightly, to correct a problem at some Win95 sites, where a previously
unloaded image of the tsr still survived, even though the DOS-box was closed
!.
If you use a version prior to 1.7, a suggestion is to always run
something, just after lesspace has been unloaded, to ensure that the
old copy of the lesspace code in ram is destroyed.
1.8 Internal, and beta sent to
a few users.
1.9 "/Q" extended to suppress both
Duplicate Loading and Not UnLoad messages. "/Q" does not apply
to an UnLoad request, where the tsr vectors cannot be safely restored, and
therefore the tsr cannot be unloaded.
"/D" option added.
Some code-alteration checks have been included, to detect virus attack,
file-corruption, etc.
This doc file has been revised significantly, particularly to explain the
problems addressed by the utility, and to cover some of the most frequently
asked questions.
Additional changes to accommodate Cluster-Size calculations - eg,
FileSize()
in Paradox.
2.0 Included an additional internal
Int-24 handler, when "/D" is used, to cater for CD drives without CDs, etc.
A paradox, you might say, having already included fixes
for the WINDOWS Int-24 handler !!!.
Some minor internal tweaks, and documentation updates.
2.1 Revised internal Int-21 traps - for
slightly faster execution.
Inserted User-ID, etc, in the loading... messages, as requested by
a few users to facilitate a Software Audit.
Killed off some unnecessary internal debugging code left over from 2.0.
Slight mods to this document - mainly related to the "/R:" option.
All registered users should be on 2.1, at least. If you are registered, and
not running 2.1, please let us know.
2.2 Yet a further revision to the
internal calcs
code. The changes are as follows, and are not of earth-shattering
significance in most circumstances !:
- Up to now, if the HD parms were
too high, they were adjusted downwards, and then both the Total-Space, and
the Free-Space were further adjusted, if needed, using the revised HD specs.
This has been changed so that only the Total-Space is initially checked
against the revised HD specs. Then the Free-Space parameters are checked,
using the ORIGINAL HD specs, and revised if needed. The end result is that
the returned Free-Space may now be somewhat higher and more meaningful,
though, obviously, still reduced, if needed.
- If the modified Free-Space
works out higher than the modified Total-Space, the Free-Space parameter is
reduced so as to be slightly less that the Total, just to make the results
"look" good.
Included some STDERR Outputs. so that relevant user-messages always go to
the screen, even if Output-ReDirection is enabled. Thanks, Edwin !.
It is not intended to automatically upgrade 2.1 registered users to 2.2,
because the changes (for them) are trivial, and would not generally justify
the hassle. However, 2.2 will be sent to any registered user who requests
it.
2.3 Added support for the "/L" and "/S"
Command-Line options.
Changed the default max size reported to an app from 536MB to 805MB.
Forced some additional "STI"s (enable interrupts) on return from internal
Software Interrupts. This was useful to overcome some "lockout" problems at
one site, after some other driver software resulted in ints being
unexpectedly disabled when exiting from interrupt service routines. We had
some reports that the presence of lesspace had the side-effect of
eliminating slow DOS clocks - probably due to these additional
STIs.
Improved the Already Loaded ? tests slightly.
Activated automatic detection of corruption of the lesspace code in RAM.
(See separate note above).
3.0 Updated the /D
on-screen comments slightly.
Updated this text file with the Sun-Unix notes,
revised trouble-shooting, notes on
SysCon, and with some other small changes.
Added the Set Epoch option, mainly for Paradox-DOS
apps.>
3.1 Included the web-site URL, and the
e-mail address on the screen prompts.
Made some internal preparations for the imminent release of the LESSUPDT
(Auto-Upgrade) utility.
3.2 Activated the /W
command-line option - which is of no darn use anyway !!. And I made two
internal changes, because some versions of XCOPY would not run correctly
when lesspace was active - as reported by Minh Tran:
- The STACK handling was improved very significantly - separate
internal stacks are now assigned for Int-21 and Int-24. Some tests suggested
that the stack in XCOPY might be small, though this was not
confirmed. This change increases the size of the resident code in lesspace
by 500-600 bytes.
- Improvements were made to the mechanisms to pass the CPU
Flags between lesspace and other apps loaded after lesspace. Again, this was
not confirmed to be an issue with XCOPY, but it represented an overall
improvement in lesspace.
When both of the above mods were implemented, XCOPY seemed to work
correctly.
Most updates to lesspace address specific issues. However, the 3.2
updates represent important general improvements within the lesspace code.
My strong recommendation for all users is to use 3.2 or later.
3.3 Implemented the
If-Exist-Nul
fix-up for W2K, with a /N command-line option to disable
this fix-up (if needed!).
3.4 Implemented the /Z
command-line option, as explained above.
3.5 Implemented the /Mn
command-line option, as discussed under UserName()
above. Also removed some debugging baggage (code!) left-over from the 3.4
tests.
3.6 Implemented the /T
command-line option, to prevent NTVDM blow-ups (in XP) when Lesspace tries
to load on Toshiba Tecra S1 laptops.
3.7 Extended the /D contents.
3.8 Updates to the internal Int-4E code
for single-char Foldernames. Major tweaks to the handling of the internal stacks. |
|
Updates / Multiple versions: |
When testing, or replacing an older version, do not mix
versions of this utility. Specifically, if you LOAD any version of the
utility, please use THE SAME version (with /U) to unload that one from RAM.
It is unlikely that one version will succeed in recognising and Un-Loading a
different version !. |
|
Legalese (briefly): |
The LESSPACE program is Shareware, and © 1996-2004, Michael
Kennedy. The shareware release is supplied for evaluation purposes only, on
a try before you buy basis. [We intended releasing the utility as
Freeware, but initial reactions indicate that it probably would be used in
large critical installations, where some support, and updates, would be
desirable for most users. We are definitely not in a position to supply free
support for a free utility !!].
You may not sell the utility. You may distribute only the Shareware
Evaluation Release of the TSR, only unaltered copies of the files, and only
as a set containing all 3 files.
The author accepts no responsibility whatsoever for any damage or loss
caused by the use (or abuse) of this utility. As applies to all software, if
you intend evaluating or using it, you should first (and regularly):
- Verify that the copy you receive is not infected with
any Virus, and try to ensure that it has not been otherwise corrupted (i.e.,
reputable source !),
- Ensure you have a good backup of all your programs and
data,
- Run "stress tests" on this utility, to establish if it
fully meets your requirements.
A full Agreement/License document, relating to the registered version, is
available, on request. |
|
Support / Problems / Registration / Upgrades ?: |
The utility has been satisfactorily tested in many
configurations, and is now in widespread use. If, after evaluation, you
intend using it, you must become a registered user. If you are registered,
then, for the 12 months following registration:
- A registered copy of the utility will be emailed/mailed
to you on registration. This occurs normally within 1 to 2 working days. If
you don't hear from us within a few days, please contact us again, perhaps
using a different method. (One user waited for 2 months, only to then
discover that we had not received their initial mailing !).
- Registered updates will be emailed/mailed to you
automatically. We will not burden you with trivial or irrelevant
updates !.
- If you have any queries or problems with the utility,
please let us know. We will certainly consider all, and, hopefully resolve
some. If your configurations are not currently supported by the Utility, we
may be able to extend it (eg, see "/D" option), though, depending on the
circumstances, this may incur special charges.
- At any time, you may request a fresh copy of
the latest release of the utility.
- If you're a registered user, please quote your reg-no
in all correspondence. Thanks !.
For any inquiries, submission of registration, etc, please use the
feedback
form, or e-mail us. |
|
Shareware vs Registered release: |
The registered version contains all features discussed
here.
The shareware release contains all the features discussed here, except:
- it shows a slow evaluation message, while
loading/unloading,
- it does not handle memory as efficiently,
- it does not support the following command-line options:
/Q, /R, /L, /S, /E, /N, /W, /Z, /M, /T.
- it does not include support for Int-24 problems, nor
for the associated If-Exist-NUL fixup. |
|
Y2K Statement: |
The lesspace software is fully Y2K compliant. Apart from
the Epoch option, dates are not used in the
lesspace suite. And with the
Epoch option, only adjustments are made to the way
dates are entered or displayed by other products. For a full excellent Y2K
compliance definition, see
BSI. |
|
Licence Agreement: |
This is the suggested text of a simple agreement. If you
have specific legal requirements, please let us know.
Definitions:
End-User of the "lesspace" utility:
___________________________________________________
Maximum No of PCs running lesspace:
______________________________________ (in words)
This is an agreement between you, the above stated end-user of the
registered software, and Michael J. Kennedy, of 112 Beech Park, Lucan, Co.
Dublin, Ireland, the developer and vendor of the software, as per the
following terms and definitions. By registering the software, and/or by
using the registered software, you accept the terms of this agreement. If
you do not agree to the terms of this agreement, promptly return the
registered lesspace software to the vendor, remove all copies from your
computers and backup systems, and so confirm in writing. A partial or full
refund shall be issued, at the discretion of the developer.
SOFTWARE: Where used in this agreement, this refers to the machine-code
registered
release of the lesspace utility program, named LESSPACE.COM, and associated
document files, including FILE_ID.DIZ and LESSPACE.TXT, and any additional
associated software and documentation. A limited set of the software is
available as evaluation shareware, and the complete set as
registered shareware.
REGISTRATION / SUPPORT PERIOD: Users register by paying an initial
registration fee which covers an initial 12-month support period. Registered
users may extend the support period by further 12-month periods, by paying
an annual renewal fee, provided that renewals are not interrupted.
DURATION: This entire agreement applies within the support period.
This agreement also applies thereafter, indefinitely, even if you do not
renew support, but subject to additional terms stated herein.
LICENCE: This agreement permits you to use the registered software
indefinitely, but on not more than the above stated number of computers at
any one time. The software is in use if it is loaded into the RAM
memory of the computer. If the number of simultaneous users might exceed the
above limit, then you must have a reasonable mechanism or process in place,
to assure that the above limit is not breached. If necessary, you must
obtain additional licences, whether during or subsequent to the support
period.
COPYRIGHT: The software is owned by Michael J. Kennedy, and is protected by
all applicable national and international laws. You may make copies of the
software only to facilitate its use on the permitted computers, and for
backup purposes. You may neither temporarily nor permanently loan, rent,
lease, sub-licence, or transfer the software, or your rights to use the
software, to other users, except as permitted in this agreement. You may not
reverse engineer or disassemble the program code. You may not modify the
program code, nor any of the accompanying document files.
WARRANTY: The vendor warrants that:
- The software will perform substantially in accordance with the
specifications in the supplied document files.
- If the files are submitted on diskette and/or CD, then the media
will be free from defects in materials and workmanship, under normal use,
for a period of 30 days from the date of dispatch.
- Relevant updates of the software will be dispatched to you, at the
vendors option.
REMEDIES: The vendors entire liability and your exclusive remedy shall, at
the vendors option, be:
- a return of the software and/or media, for a partial or full refund
of monies paid, or
- replacement of the software and/or media which do not meet the
above warranty, or
- modifications to the software and/or documentation, to more closely
meet your requirements. Special modifications may incur additional costs to
you.
The above warranties and remedies apply only within the support period.
The vendor disclaims all other warranties, either express or implied,
including but not limited to, implied warranties of merchantability and
fitness for a particular purpose, with respect to the software, the
accompanying document files, and any media. This limited warranty may give
you specific legal rights. In no event shall the vendor be liable for any
other damages whatsoever arising out of the use of, or inability to use, the
lesspace software, even if the vendor has been advised of the possibility of
such damages. In any case, the vendors entire liability, under any
provision of this agreement, shall be limited to the amount actually paid by
you for the software, and only if such liability arises within the
support period.
Note: US spelling is "license", elsewhere "licence". Two copies of this
agreement must be authorised by both the Vendor and Client, one for each
party.
[End of Agreement] |
|
[Top]
[ Home ] [ Lesspace Summary ] [ PatchCRT ] [ AwardMJK ] [ Paradox-DOS ] [ Re-Build OE ] [ Old Apps ] [ Time Dilation ] [ MOConnor ] |
|