Hi Tom / Jason / Johnson,

> > I got a message from Jack Ellis (UDMA2 author) warning me a potential
> > problem in SHSUCDX 3.02.

> like: only 3.02 or other versions as well ?

> > And UPX a device driver may cause more problem.

> it's not a driver, and drivers can't be UPX'ed anyway.

The 3.00 version was EXE, the new version is a COM.
An exe can tell how much RAM it needs minimum, a com
cannot. If you UPX a com and try to load it into e.g.
a too small UMB, then the UPX decompressor inside your
compressed program will abort and the com will just
return to the prompt without any error message...

However, SHSUCDX has dynamic allocation of memory, so
the com / exe difference is not overly important. The
SHSUCDX program itself will calculate how much RAM it
needs to load, and can abort if not enough RAM is free.
Even a COM can know how much RAM is free, by two means:
1. Size of the current memory block and 2. value of the
stack pointer (can be 0 to indicate 64k free, N to tell
that N bytes minus the amount of stack that you want are
free...). For the EXE case, you can define a min / max
heap size, and the EXE can check 1. Size of the current
memory block and 2. amount of unallocated RAM left (i.e.
RAM which is left after DOS allocated the max-wanted-
heap size for the EXE)...

Anyway. You CAN UPX-compress drivers.
The problem is that you can only UPX-compress ONE entry point.
So if you have a driver (can be loaded as device=...) which
can ALSO be started from the prompt, like himem exe (if you
run it from the prompt, you get a help message and can start a
memory test), then the compressed version will only work as
device driver, no longer from the prompt. At least if you first
renamed it to himem sys...

NORMAL (cannot be run from prompt, but you can devload it as
most drivers, but the normal load method would be device=...)
drivers can definitely be compressed with UPX.

That said, HIMEM and EMM386 are compressed anyway. But not with
UPX. Instead, Tom's selfmade compressor is used :-).

Eric

PS: SHSUCDX is indeed not a driver. It is a program which you
run from prompt or autoexec, and which then stays in RAM as a
resident thing. A normal user could call it a driver, but it
is not file-format-wise a device driver...



-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
Freedos-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to