A new test version of VCPI-enabled EMM386 has been uploaded to 
ftp://ftp.devoresoftware.com/downloads in the files EMM386.ZIP and EMMSRC.ZIP, 
available via anonymous ftp. File EMM386.ZIP has the uncompressed EMM38664.EXE, 
EMMSRC.ZIP has EMM386C.C and EMM38664.ASM source files.

This version corrects several errors with the NOEMS parameter of EMM386, which was 
broken about four different ways, including failure to create UMB's.  In addition, 
DOS/4GW now works with the NOEMS setting.  It is smart enough to allocate from XMS 
after all, just a bit picky about how.

The NIOS Netware subsystem will now load if you use NOEMS, or if you keep your EMM= 
parameter to a low value.  Apparently NIOS is load sensitive and if it allocates XMS 
memory close to or beyond the 4M boundary, it will crash and typically reboot the 
machine.  Larger EMS values push XMS allocations out to the danger point.  On my 
machine, an EMM= value of 2566 will work with NIOS and 2567 will crash it, so a little 
over 2M of EMS is best you can do with it.  The exact failing value will vary from 
machine to machine.  Remember that EMM386 by default without the NOEMS setting creates 
32M of EMS, a value which will definitely smoke NIOS.

Additional technical details follow:

EMM386 now renames the EMM device driver to EMMQXXX0 from EMMXXXX0 if the NOEMS 
parameter is specified, following the behavior of Microsoft's later versions of 
EMM386.  Programs which detect an EMS manager by checking the device name will 
therefore fail and not attempt to use EMS.  Setting the NOEMS parameter does not zero 
out the INT 67h vector unless the NOVCPI parameter is also specified.

The above change brings up an interesting conflict with NOEMS:  programs such as Turbo 
Debugger 2.5 will fail with a 'fatal EMS error' if the NOEMS parameter is used because 
TD appears to only check for a nonzero INT 67h vector for EMM presence and, finding 
it, will attempt to use EMS functions that all return a 'function not supported' 
error.  However, NIOS will completely refuse to load and say VCPI is not available if 
you do zero out the INT 67h vector.  How delightful.  If you for some reason want to 
use both in the same DOS session, and still don't want a lot of EMS on your machine, 
I'd recommend using a value of EMM=1 rather than NOEMS.  That makes both of them happy.

You can also specify NOVCPI with NOEMS and make almost nothing that uses protected 
mode work, including DOS extenders and NIOS.  But Turbo Debugger will still love you 
and you'll still have your UMB's.

I modified the LGDT and LIDT instructions in one of the VCPI routines where they 
seemed to be using the 16-bit version rather than the 32-bit version.  Maybe this will 
clear up lingering problems with DOS extenders that others are having.

The VCPI function to get 8259A vector mappings was giving the wrong value for the 
slave 8259A and has been corrected.

The protected CPU instruction mov eax,cr3 is now emulated in the exception handler of 
EMM386, so it works under V86 mode rather than terminating with an error, required for 
at least one program out there which does that sort of thing.

If you would, please put this version of EMM386 through suitable tests, particularly 
with protected mode/DOS extender stuff, and let me know the results.




-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Freedos-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to