HISTORY.TXT ************* version 2.26 -- 25 aug 2006 ************************* Fixed a problem with NOALTBOOT code so that rebooting via certain means was no longer problematic. UPX compressed HIMEM and EMM386 executable with --8086 option. Added "Required 80386+ CPU" text to help screen for HIMEM and EMM386. ************* version 2.25 -- 19 aug 2006 ************************* Reworked order of A20 testing and added patch for buggy BIOS's in HIMEM for better universal compatibility. Make EMM386 NOALTBOOT the default option for better virtual environment and GEOS compatibility. Added NODISABLEA20 option in EMM386. Ensured CR3 update on PTE scratch tables for MMIO in EMM386. ************* version 2.23 -- 10 aug 2006 ************************* Corrected problem with gigabyte 'G' suffix on command line parameters Reworked stack management in VCPI handler for improved DOS extender compatibility. Reworked A20 enable/disable routines for better match to specification. Change INT15 handler to conserve additional status flags. Added experimental build system. ************* version 2.21 -- 30 jul 2006 ************************* Fixed bug in EMS function 53h, subfunction 1. With option EMM=, the EMS used page report was double-counted. The 386-CPU or better check at startup was corrected. The VCPI allocator could under certain conditions (typically low memory) report out of memory even while free memory existed. Changed INT 13h, INT 40h, and VDS interrupt processing routines to return original entry flags with carry flag updated only. ************* version 2.20 -- 27 jul 2006 ************************* Fixed bugs in EMS function 54h subfunction 0 and subfunction 1. Clear real mode interrupt flag on INT processing code in EMM386 to allow Qemu to work with CTMOUSE. Untested. Supported global and local A20 disable/enable functions with EMM386 to allow ancient EXEPACK'ed programs to work properly without LOADFIX. Cleared up a XMS free block fragmentation issue which could sometimes occur with EMS- and VCPI-using programs. XMS 3.0 API function 88h would report ending address one byte too high, and potentially otherwise wrong if installed memory was not a multiple of 64M. ************* version 2.11 -- 15 jul 2006 ************************* Fixed register-altering bug in some VDS functions. ************* version 2.10 -- 08 jul 2006 ************************* Increased default XMS memory reserved from VCPI/EMS allocations at startup. Improved EMS/VCPI memory allocator when initial user-specified amount was too large. Slight modifications to VDS return codes and behavior in functions 0bh and 0ch for better application compatibility. Corrected error where EMS pages reported as available did not track existing VCPI allocations as part of the total. Corrected error where high extended memory (at least 256M) in VCPI programs which made protected mode memory allocation calls back into EMM386 were not properly mapped into EMM386's memory space. XMS 3.0 API function 88h correctly returns the highest ending address in ECX. HIMEM's /X2MAX32 option is the default. A new /NOX2MAX32 option will inhibit /X2MAX32's behavior. Updated copyright messages. ************* version 2.08 -- 28 sep 2005 ************************* Added support for the MIN= option mimicking existing EMM= option to match Microsoft EMM386 option. MIN= acts exactly like the EMM= option; it was added strictly for enhanced MS compatibility. Added support for the "no-op" options NOHI and NOMOVEXBDA to match Microsoft EMM386 options. No behavior change occurs with these options, they are strictly for enhanced MS compatibility. Minor cosmetic source code changes and cleanup made to EMM386 for better NASM translation compatibility. ************* version 2.07 -- 08 sep 2005 ************************* Fixed error in EMM386 which caused crashes when attempting to release an upper memory block. Implemented a strictly optional change to HIMEM to use BCD for an internal versioning call. Very minor changes to HIMEM source code for smaller binary code when using NASM-converted source. ************* version 2.06 -- 23 sep 2005 ************************* Fixed error parsing NOVDS such that it did not properly activate. Fixed error patching out EMM386 driver entry after initialization, causing problems with programs which queried the EMS driver, such as PKUNZIP, unless NOEMS was specified. Added VDS function filtering to attempt better compatibility with SCSI drive conflicts. All VDS reserved but unused functions now pass through the VDS interrupt without an error return code. Allow I= inclusion of upper memory in the ranges F000-F7FF. Lowered EMM386 default MAX setting to 120M to avoid problems with some of Borland's programs which fail with 127M or more of free VCPI. Reduced common VCPI client/server GDT mapping in first 4M from 2M to 1.75M to give more room for applications requiring memory there. ************* version 2.05 -- 19 sep 2005 ************************* Fixed HMAMIN to set internal value as bytes, not kilobytes and changed limit to 63K from 64K. Fixed error in VDS scatter/gather function. Fixed error with NOVCPI conflicting with UMBs Fixed EMS page frame error where it was set without a contiguous 64K upper memory block. HIMEM XMS API can now grow an XMS block on resize if sufficient memory exists. EMM386 driver preserves all used 32-bit general and segment registers for better compatibility. VDS on is now the default, use the new NOVDS option to turn VDS off for incompatible SCSI systems. EMM386 defaults the MAX setting to 256M to avoid DOS/32A unhappiness with too much free VCPI memory available. Memory checks for memory-mapped I/O (MMIO) are on by default for ranges 3G-4G. The MEMCHECK option continues to support the full 0-4G address space. A new NOCHECK option turns off all checks for memory access outside of physical RAM. ************* version 2.04 -- 07 jul 2005 ************************* Fixed bug with /NUMHANDLES option in HIMEM Fixed bug in EMS function 51h when shrinking page allocation. Fixed bug with rounding of control allocations for EMS pages under low values using fixed amount EMM= option. Add small sanity checks to EMS page allocate/release to avoid hard crashes when bad things happen. Save high word of EAX value during servicing of VCPI function DE01, Get Protected Mode Interface. Fixes no known problems. ************* version 2.03 -- 08 jun 2005 ************************* Saved high word of EAX value during servicing of VCPI function DE04, allocate 4K page, to eliminate problems with WDOSX DOS extender. Added IRETD after HLT instruction emulated in EMM as a safety net. ************* version 2.02 -- 15 may 2005 ************************* MAX=##### option in EMM386 to limit available VCPI, and EMS if <32M. Minor bugfix on XMS -> VCPI/EMS pool allocation which could cause temporary loss of 0-2% of memory allocated as unavailable. Bugfix for situation where very small (<4K) free XMS blocks exist and the block alignment was odd could lead EMS/VCPI allocator to believe it was out of memory and fail further allocations. Emulation support for RDTSC for early Pentium and AMD chips which improperly treat the instruction as protected in V86 mode. Give warning message for using old/out-dated HIMEM and other XMS memory manager which don't support INT 2Fh function 4309h, forcing use of EMM= option to reserve memory for EMS/VCPI. ************* version 2.01 -- 2 may 2005 ************************* Fixed fatal automatic pool-sharing errors that affected many users. WRMSR instruction supported via emulation. DOS redirection support added to HIMEM/EMM386 output. Trivial cosmetic changes. ************* version 2.0 -- 28 apr 2005 ************************* EMM386 supports automatic pool-sharing between EMS, XMS, and VCPI memory. /X2MAX32 option for HIMEM. /? option supported as a no-op. Fix for INT 15, function 87h in EMM386. EMS unmap page bugfix. ************* version 1.5 -- 20 feb 2005 ************************* VDS function 2 support Various uncommonly-used EMS 4.0 function and subfunction additions. Fix EMS 4.0 function 53h and 58h bugs. Additional reworking of VCPI code. Miscellaneous cosmetic changes to source code. ************* version 1.4 -- 7 feb 2005 ************************* EMS 4.0 function 53h support. INT 15h, function 87h, check out of range off by one byte fix NOEMS with EMM= option fix. INVD instruction emulation Internal reworking for better overall VCPI program compatibility. ************* version 1.13d -- 4 jan 2005 ************************* HIMEM fix for HMAMIN option. Support for INT 15h function 4309h as prep for future EMS/XMS pool sharing. EMM386 FRAME=NONE parsing fix. 2005 copyright updates. ************* version 1.13c -- 12 dec 2004 ************************* MEMCHECK option allows use with USB drives. VDS fix. ************* version 1.13 -- 23 nov 2004 ************************* All moves to and from control and debug registers through standard registers are supported by EMM386 in V86 mode. ALTBOOT option was renamed to NOALTBOOT. ALTBOOT is supported as the default do-nothing-different option. Support for EMM386's use of 'M' and 'G' suffixes on options where the suffixes can be used. VDS support for functions 8103h, 8104h, 8105h, and 8106h. Expanded command line option feedback. ************* version 1.12+ -- 25 sep 2004 ************************* Unofficial 1.12+ release due to the pending 'Beta9-final' FreeDOS release. Please read Michael Devore's changelogs at http://www.freedos.org/news/news/ (April04 - September04) package modified ('created') by Bernd Blaauw, bblnews@hotmail.com ************* version 1.12 -- 27 april 2004 ************************* emm386 1.12 taken michael devore's changes from 26 apr 2004 changed version to 1.12, compiled+compressed. new options /I=TEST /X=TEST ************* version 1.11 -- 09 april 2004 ************************* emm386 1.11 himem 3.11 himemsm 2.11 license changed to artistic license emm386 supports VCPI himem supports >64MB memory himemsm (old himem) supports <64MB memory, 400 byte smaller **************** HIMEM.EXE 2.09 13 jan 04 ************************* in addition to HIMEM/EMMM386, there exist new HIMEM64/EMM38664 versions, that support >64 MB XMS/EMS memory. This change/addition is entirely due to Michael Devore, thanks for this effort. Although the >64M versions have not been tested as extensively as the old <= 64M versions, they are probably stable too. **************** EXPERIMENTAL release 25 nov 03 ************************* added new HIMEM64.exe; this is HIMEM.EXE + support for >64MB memory current status: should work, but has NOT been seriously tested. in particular, the extended XMS functions 88..8f are effectively untested. as EMM386 isn't able to handle >64M memory, code to 'kill' memory beyond 64M was added. **************** HIMEM.EXE 2.08 6 nov 03 ************************* if A20 was not enabled, the (successful) return code was destroyed **************** HIMEM.EXE 2.07 13 feb 03 ************************* now ignores, if A20 can't be disabled (outputs a small message in this case) **************** version 0.6 26 nov 02 ************************* emm386: Bernd Blaauw translated a large part of german comments in EMM386.ASM to english VDS made an experimental feature, no longer enabled on default TIP: if you experience probles with network cards, try LH /L: NET INITIALIZE this forces the load into low memory of the netcard driver **************** version 0.5 07 nov 02 ************************* emm386: any UMB provider should provide VDS functions as well. now at least one function (8103 - Lock DMA region) is implemented, and seems to work. this functionality is required, if you have Bus master (network) cards, and the driver is loaded high. this suffices at least for my own network card ;-) **************** version 0.4 7 jul 02 ************************* emm386: TOSHIBA notebooks had problems to reboot with Ctrl-Alt-GREY Delete. now the grey del is handled like the white del; seems to fix that. **************** version 0.4 3 apr 02 ************************* himem: trying to autodetect PS/2 (even if BIOS gives wrong answers) emm386: SERIOUS bug found, that caused memory overwrite problems. wonder why it ever worked at all. should now run much better both EMM386+HIMEM come now compressed with a proprietary EXE/SYS-compressor and require ke2026 or better (ke2025x had a minor bug when loading device drivers) this saves 1.9K for HIMEM and 14K for EMM386 (on disk) **************** EMM386 ************************* 12/07/01 minor bug in @@UMBfound EMM38603 12/04/01 published on freedos mail EMM38602 11/28/01 some corrections to the device driver part enhanced memory now detected by MFT EMM38601 alpha release 11/22/01 first public release **************** HIMEM.EXE ************************* 12/13/01 changed version number 0.6 -->2.06 some software (EMU86) expects version >= 2.00 12/06/01 bug in XMS_REALLOC_XMS found and corrected *** version 0.6 11/23/01 **** - renamed from FDXMS.SYS to HIMEM.EXE and made an exefile - made it compatible with EMM386 - integrated XMSTEST (HIMEM /TEST) - added (from FDXMS08/martin stroemberg) checking for conventional memory end at FFFF:FFFF - removed the useless *late* init code (hook_init, hook_patch,...) moving this code to init - resident footprint now 464 bytes smaller then fdxms08 :-)) Version 0.5 - 2001.05.25 - tom ehlert - major rework: - reported XMS version reflects current implementation - 2.0 - reported XMS internal version reflects driver version - 0.5 - works with 64MB - martin stroemberg found how to do xms_move_bios for > 16MB - xms_free_handle now actually works - added support for protected mode operation - many more checks for valid requests (like valid handles,valid offsets) - major code cleaning - has chances to work in multitasking environments (not tested) - Change XMS_NO_UMB_AVAILABLE to XMS_NOT_IMPLEMTED in xms_request_umb. - bugs are now by tom.ehlert (tom.ehlert@ginko.de) - still missing: support for 80286 (mostly due to long arith) support for >64 MB memory Version 0.3 - 2001.04.24 - tom ehlert - renamed to 0.3, as there where several 0.2's out :-) Version 0.2 - 2001.04.24 - tom ehlert - seems to be stable at 31 MB (not at 63 MB!!) changed max XMS to 31 for real mode, assert for protected mode (where copy through BIOS is done) max XMS size = 15MB - note: this version is most certainly buggy - its only less buggy then the original - hopefully :-) Version 0.1 - 2001.04.19 - tom ehlert - added some more validity checks - added code, so the xms_copy_block works in protected mode,too this is necessary for any protected mode host - like EMM386, S-Ice,... - as the FDXMS is definitively not stable at 60MB, artificially reduced max XMS size to 15 MB. - added code to xms_free_block, so it frees no better - note: this version is most certainly buggy - its only less buggy then the original - hopefully :-) Version 0.1 - 2001.04.17 - tom ehlert - added check for valid handle in GetHandleInfo() and FreeXmsHandle() SHOULD BE ADDED to LockHandle(), UnlockHandle(),... NOT YET DONE - added handle.locks = 0 in init() - clearloop Version 0.1 - 2001.03.08 - Louis P. Santillan - Updated version that includes my corrected A20 setting/resetting code - MartinS's fixes for incorrect reporting of the correct Handle Info (function 0x0E) Version 0.1 - 10/11.95 - initial version, uploaded for testing - still about 400 bytes bigger than HIMEM :( - poor feedback until now... - works with a lot of software, but Watcom Help doesn't work when run with Norton Cache of Norton Utilities 8.0 tom.ehlert@ginko.de