        readme.txt for EMM386/HIMEM

    ***********************************************************
    *THIS IS FREE SOFTWARE WITH ABSOLUTELY NO WARRANTY        *
    *WHATSOEVER, WHICH YOU MAY USE COMPLETELY AT YOUR OWN RISK*
    *                                                         *
    *IF IT WORKS FOR YOU - FINE.                              *
    *                                                         *
    *IF IT DOESN'T - STOP USING, BUT DON'T COMPLAIN.          *
    *                                                         *
    *IF YOU SEND BUG REPORT'S, SEND DETAILS                   *
    *I WONT'T EVEN LOOK AT BUG REPORTS LIKE                   *
    *  'your EMM386 makes problems. can you help?'            *
    *                                                         *
    * FIXES WELCOME                                           *
    ***********************************************************

    EMM386/HIMEM is released under the GNU GENERAL PUBLIC LICENSE, 
    see the file DOCS\LICENSE.TXT for the full text. 
    
    In addition, the original authors copyrights must remain intact;


 ********************************************************************
 ****** this release requires FreeDOS kernel version >= ke2026 ******
 ********************************************************************


What it shall do:

    HIMEM.EXE  replaces MSDOS HIMEM.SYS,
    EMM386.EXE replaces MSDOS EMM386.EXE


 ****************  Why use EMM386   ****************

if you need Upper memory and your PC is not recognized by 
    UMBPCI

if you want enhanced (EMS) memory

 **************** Why NOT use EMM386 ***************
 
if you want to run protected mode (VCPI/DPMI) programs,
you can't run EMM386. to be done - much later.

Programs doing a LOT of IN/OUT may run slower in a protected
mode environment like EMM386


 ******  How to use it *******************************
 


change CONFIG.SYS like

    files=20
    buffers=30
    lastdrive=z
    break=off
    
>>> dos=high,umb
>>> device=HIMEM.EXE        
>>> device=EMM386.exe NOEMS 
>>> shellHIGH=c:\command.com /p /e:512

both HIMEM and EMM386 require PC's >= 80386 to run.

            
*******************************************************



COMMANDLINE switches implemented

    use EMM386.EXE from commandline - it will tell you:
    
         NOEMS      - disable EMS completely (default=enable)
         VDS        - enable  VDS current status is experimental
         FRAME=D000 - select wanted pageframe(default=highest possible)
         EMM=20000  - 20000 KB EMS memory wanted(default=8MB)
         X=D000-D800 - no make memory mapped devices work

         I=A000-AFFF - IF YOU REALLY KNOW WHAT YOU DO (VGA graphics)
         I=B000-B7FF - IF YOU REALLY KNOW WHAT YOU DO (Hercules)
         I=BC00-BFFF - IF YOU REALLY KNOW WHAT YOU DO (VGA upper text)
                            see WARNING below

         /VERBOSE    - give some more details about found devices, 
                       mapped UMB's,...l


    EMM386 allocates fixed amount of whatsneeded (from HIMEM.EXE)
        needed internally ca. 96 KB for pagetables, high code,...
        64K for DMA handling ( no idea if that works though)
        additionally enough memory to map UMB's (16..160KB)
    
        + tries to allocate the wanted EMS memory (default=8MB) 
        more to be used as EMS memory

    WARNING:
        in theory, its possible to use upper memory at 
        A000..AFFF (VGA graphics) and
        B000..B7FF (hercules adapter)
        
        
        however some programs (or the BIOS INT 10 functions)
        seem to write _sometimes_ into this area,
        so operating with this memory area 
        
            IS HIGHLY DISRECOMMENDED to use A000-B7FF
            
        use it at your own risk only            


*********************   known BUGS ***************
EMM386 seems to run stable.
VDS support is only experimental

no VCPI/DPMS/DOS32 functionality
    none at all - not even thought about that

*********************   troubleshooting ***************


if you have problems 
add /VERBOSE to EMM386 commandline, will give some details
about XMS memory, UMB memory, blocks mapped,...

make sure you have kernel >=2026

1'st) start with following CONFIG.SYS
	!files=20
	!anydos=1
	!break=off
	!buffers=30
	!screen=0x12
	!lastdrive=z
	!stacks=0,0
	!dos=high,umb
	!shellhigh=a:\command.com /P /E:512 /MSG
	
	
	DEVICE=\freedos\himem.exe
	DEVICE=\freedos\emm386.exe NOEMS /VERBOSE

	rem - if you want CD:
	rem DEVICE=\freedos\CDROM.SYS /D:MSCD000

2'nd) add one driver after the other, until you find
    the one, that causes trouble.
    try to load it high (deviceHIGH=),
    then to load low (device=),
    then try to load BEFORE EMM386.
    please report any *positive* results, so I can
    add them here.
    
3'rd) you are out of luck. sorry.       
    

*********************   known incompatibilities ***************

FDXMS08
    uses priviledged instructions and is not supported

FDXMS09
    has a bug and is not supported
    please use HIMEM.EXE, which is 400 byte smaller as well.

***********************************************************


HISTORY.TXT

****************   HIMEM.EXE 2.07 13 feb 03 *************************

no ignores, if A20 can't be disabled (outputs a small message in this case)

****************  version 0.6 26 nov 02 *************************
emm386: 
		Bernd Blaw 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 <tom.ehlert@ginko.de>
- 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 <tom.ehlert@ginko.de>
- renamed to 0.3, as there where several 0.2's out :-)

Version 0.2 - 2001.04.24 - tom ehlert <tom.ehlert@ginko.de>
- 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 <tom.ehlert@ginko.de>

- 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 <tom.ehlert@ginko.de>

- 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 <lsantil@calstatela.edu>

- Updated version that includes my corrected A20 setting/resetting code
- MartinS's <ams@ludd.luth.se> 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



KNOWN BUGS and TODO's ( left as an exercise to the developer ;-)


bugs:


missing feature:
	make HIMEM + EMM386 handle more then 64MB

missing feature:
	HIMEM: add A20 handling for PS/2 (rare, but exists)
	added (31 mar 2002), but untested

missing feature:
	make HIMEM and EMM386 share the same memory dynamically
	

missing feature:	
	
	add support for VCPI/DMPS so protected mode programs can work, too
	left as an exercise to the reader

		
tom ehlert (tom.ehlert@ginko.de) 2002-04-03 

