readme.txt for FDEMM

	 THIS IS FREE SOFTWARE WITH ABSOLUTELY NO GARANTY OF 
	 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.
	 
	 DON'T SEND BUG REPORT'S, SEND ONLY FIXES
	 
	 
****** STATUS (23/11/02) ******************************************	 
	 
first of all - it doesn't crash immediately
it even seems to run reasonably

*** INCOMPATIBILITY with LBACACHE (for unknown reason)
*** INCOMPATIBILITY with FDX(x)MS ( at least until version 0.9)


    **********************************************************
	cooperates ONLY with HIMEM.EXE (special version of FDXMS, see below)
    **********************************************************


CONFIG.SYS that works

	files=20
	buffers=30
	screen=0x12
	dos=high,umb
	lastdrive=z
	break=off
	
	device=HIMEM.EXE		(in the distibution)
	device=EMM386.exe NOEMS INCLUDE=A000-B7FF
	shellhigh=c:\command.com

	

DOS loads into HMA, captures UMB area and is happy :-)
FREECOM is loaded in UMB (at A001 :-)
MSNET - works
VC    works
MSD   works
MFT   works, but doesn't detect EMS

LBACACHE works a bit, but crashes command.com on DEL *.OBJ ???




COMMANDLINE switches implemented

	use EMM386.EXE from commandline - it will tell you:
	
		 NOEMS      - disable EMS completely (default=enable)
		 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


	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 (8MB) 
	    more to be used as EMS memory


	EMM386 throws a lot of debug output currently - this will vanish soon


	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			

		

UMB handling:	
	lazy: 4 UMB contiguos blocks are handled
	and handed to DOS (through UMB_ALLOCATE).
	no free/allocate done (pretty useless for DOS=HIH,UMB!!)
	so it's sufficient for FreeDOS, unless UMBs are fragmented
	due to pageframe selected or adapter EPROMS
	fell free to make it better :-))
	to avoid nasty DOS bugs, A000 is returned as A001
	


*********************   known bugs ***********************************

older FDXMS (<= FDXMS09, not released on 20/11/01):

	uses priviledged instructions and is not supported

	

*************** some programs nuke *****************************
	
	because virtual V86 disallows some instructions, that are 
	allowed in real mode:
	
		mov bx,ffff
		mov ax,[bx]
		
	fails, access may not overlap from ffff to 0
	'handled' by throwing INT6 (illegal instruction)

		mov eax,cr0
		mov eax,dr0
    fails, these are protected mode instructions

	these are aborted (similar to linux DOSEMU)



*** INCOMPATIBILITY:

	del *.obj works - if LBACACHE IS NOT LOADED

	del *.obj crashes - if LBACACHE IS LOADED
	
	reason unknown (isn't necessarily LBACACHEs fault )
	
	so avoid using both LBACACHE and EMM386, eiher of them should work


**********************************************************
EMS functiontionality is  detected by _most_ programs 
(like MSD and MEM),
but not by _some_ others (like MFT).
reason unknown. help wanted.

***********************************************************
no VCPI/DPMS functionality

	none at all - not even thought about that


tom
