Run emu86.exe.  This will put you in a V86 shell running DOS.  Checks
are made; it will generate an error if you don't have a 386, if XMS is
version 2.00 or greater not installed, if the dos version isn't 3.10
or better, if EMS is installed , or if the processor is already in
protected mode.  For this version you need 1MB of extendend memory
so it can play around.

This currently runs as a TSR.  To unlaoad it run 'rundown.exe'; this
will unhook it from the system and free its memory usage.

I've released this as a standalone program primarily to see if my V86 
emulator works on a variety of PCs.  Eventually it will provide EMS
support.  Although I already have one person interested in modifying
the emulator to provide a virtual UART.

This program may or may not work with the FREE-DOS xms driver.  This
driver currently has bugs, I'm working with someone else to work
on compatibility issues.

Technical details follow.

The program takes up about 10K of conventional memory.  This includes
the GDT.  For addresses refer to the MAP file.

The progroam allocates 512 KB of memory through the XMS system.  It
uses an XMS lock to get the physical address of this memory.  At this
address it places the following information:


X+0:		Page directory
X+1000h:        4 Page tables (1 MB DOS + 15 MB extended RAM)
X+5000h:	TSS for V86 emulation.  This includes a 8192 byte I/O
		bitmap.  Ports 84h and 85h are emulated and are used
		for V86 control operations.
X+7e7ch:	Supervisor stack
X+7e80h:	IDT.  30h entries.  The first 20h are mapped to
		exception vectors and the next 10h are the hardware
		interrupts
x+8000h:	Page mapped as a shadow to the last page of the
		ROM Bios.  We actually change the hook at FFFF:0000
		to handle reboots properly.

X+8100h:	To be used as free EMS memory when EMS support is 
		added.

Selectors are as follows:
08h:		386 code segment
10h:		386 data segment
18h:		16 bit compatible code segment for rundown
20h:		16 bit compatible data segment for rundown
28h:		linear mem starting at 00000000h

Ports are as follows:
84h:		V86 control port
85h:		V86 data port

The V86 emulator runs at IPL 3 for speed, however it will work
albeit more slowly if you change the IPL down.

This version of the program will run itself down if it gets certain
exceptions ; other exceptions will be reflected back to DOS.
If you see the message 'emu86 unloaded' you will know that some
exceptional condition occurred.  Please contact me and let me know
if this happens.


David Lindauer gclind01@ulkyvx.louisville.edu