Uploaded to ftp://ftp.devoresoftware.com/downloads/emm386 are the
files emmx204.zip, EMM386/HIMEM mostly executable package, and
emms204.zip, EMM386/HIMEM mostly source package.

EMM386 2.04 and HIMEM 3.11 are bugfix updates.  HIMEM 3.11 is a
recommended update for all FreeDOS users.  EMM386 2.04 is less
important, but probably a good idea.

This release of HIMEM fixes a problem with the /NUMHANDLES option.  If
the number of handles was less than 72, XMS handles reporting
utilities such as MEM.EXE might display garbage values.  Also, since
HIMEM placed the handle count in the wrong memory location --
potentially a critical flaw for a small, but indeterminate number of
users -- everyone should update to the latest version.  The latest
EMM386 release fixes two errors with EMS.

Details and big-time money offer follow:

The /NUMHANDLES problem with HIMEM which resulted in garbage value
reports was due to HIMEM continuing to report a default 72 handles
even when less memory was allocated for the smaller number of
requested handles.  MEM would read past the real handle information
and interpret junk as valid handle values.  This effect was benign but
quite ugly.  The proper handle value was punched in memory about 64
bytes higher than it should have been.  Yikes.  That bug will teach me
to use the pure structure offset in assembly language when addressing
variables relative to the structure, rather than an instantiated
structure address offset.  You dummy.

EMM386's EMM= option had a rounding error which could cause problems
with EMS page allocation and release, typically when low (sub 2M)
values were used for EMM=.  If you did not use the EMM= option or did
not use EMS, this error would not affect you.

EMM386 fixes an error in EMS function 51h, reallocate pages, when the
count of pages was shrunk.  Improper EMS page pointers would be
updated with subsequent woe.  Also, a couple of sanity checks were
added to the EMS allocate/release pages functions to stop the worst of
bad pointer memory overwrite crashes when things went wrong, in the
internals gone wacky sense of wrong.  Things will remain wrong, but
now they may not crash you into auto-reboot before you have a chance
to notice and report the state of wrongness.

VCPI function DE01, Get Protected Mode Interface, saves the high word
of EAX across the call, where it did not before.  Nothing known needs
this, but since the previous problem with WDOSX and VCPI function
DE04, I decided it was best to put the VCPI functions on their best
behavior.

Finally, to help counterbalance recent nastiness and ranting on- and
off-list by a few (possibly including myself depending on who you
ask), I will donate $0.10 to the International Federation of Red Cross
and Red Crescent Societies (www.ifrc.org) for each unique IP address
downloading either the source or binary package of EMM386 2.04 from my
ftp site for the month of July.  This offer is subject to change or
withdrawal in the unlikely event of impending poverty due to my site
being slashdotted or otherwise subjected to site hammering.  Suspicion
of serious abuse will result in disallowing broad IP ranges without
recourse, including possible innocent parties in the middle of the
range, so please think twice about having your ten grandmothers and
322 cousins download to "help out".