subttl	emulator.hst - Emulator history.
;***
;emulator.hst - Emulator history.
;
;	Copyright (c) 1984-89, Microsoft Corporation
;
;Purpose:
;	Contains history comments for emulator.
;
;
; Bob Wallace,	  Microsoft, July      1982
; John Pollock,   Microsoft, August    1982
; Marlin Eller,   Microsoft, December  1982
; Greg Whitten,   Microsoft, February  1984
; Brad Verheiden, Microsoft, March     1984
; Jamie Bariteau, Microsoft, September 1985
; Barry McCord,   Microsoft, October   1986
;
;
;   Revision History
;
;   02/07/84	Greg Whitten
;		new stand-alone version (major restructuring)
;		split up into small include files
;
;   02/17/84	Brad Verheiden
;		put transcendentals in same object file
;		fixed bug which always masked unemulated instruction
;
;   02/24/84	Greg Whitten
;		PASCAL naming convention is being slowly removed
;		adding initialization/termination code
;		code complete for initial standalone emulator
;
;   03/14/84	Greg Whitten
;		added a special truncate to 32-bit integer routine
;
;   03/15/84	Greg Whitten
;		fixed bug in FCOM ( cmpsw => cmpsb )
;
;   03/19/84	Greg Whitten
;		added code for all segment overrides
;
;   03/29/84	Greg Whitten
;		fixed segment override bug
;
;   04/05/84	Greg Whitten
;		removed fast SP code
;
;   04/09/84	Brad Verheiden
;		added 8087 support
;
;   05/23/84	Brad Verheiden
;		Added code to save SI in ProcessOverUnderflow
;
;   08/18/84	Greg Whitten
;		REEXECUTE stored the status word when DS was invalid
;		  if reexecuting a memory operand
;		Terminate8087 bad if original INT 2 vector was 0
;		Changed call to fpsignal routine - now registers
;		  except for AX are good.  al = error code
;
;   08/23/84	Greg Whitten
;		corrected COMPSIDI (COMPcsSIDI)
;		affects routines using log and atan's
;
;   08/25/84	Greg Whitten
;		fixed bug with handling of denormals - not reloading
;		zero from the correct address
;
;   10/28/84	Greg Whitten
;		added environment segment to initialization for NO87
;		added code to save and restore interrupt vectors
;		8087 only version
;
;   01/30/85	Greg Whitten
;		added OEM version check for automatic setup for 8087
;		this is not necessarily reliable
;
;   02/07/85	Greg Whitten
;		split OEM customization out into separate module
;		save and restore old interrupt vector values
;
;   release	C 3.00 and FORTRAN/Pascal 3.30
;
;   03/29/85	Greg Whitten
;		changed emulated FWAIT fixups to mov ax,ax
;		changed real 287 FWAIT on numeric instructions to NOPs
;
;   release	IBM C 1.0
;
;   08/13/85	Greg Whitten
;		changed fpmath trunc routines to check for errors
;
;   08/22/85	Greg Whitten
;		added PUB/GLB macros to define public symbols
;		for debugging
;
;   08/22/85	Greg Whitten
;		corrected a bug in denormalizing result with
;		zero mantissa and non-zero exponent
;		changed to zero exponent if mantissa is zero
;
;   release	FORTRAN/Pascal 3.31
;
;   09/02/85	Greg Whitten
;		completed adding PUB/GLB macros to define
;		public symbols for debugging
;
;   09/09/85	Greg Whitten
;		changed denormal exception handler for
;			faster normalization algorithm using 8087
;			FDIV[R] denormal memory operand
;
;   09/13/85	Jamie Bariteau
;		added comments to invalid processing in emexcept.asm
;		fixed bug in constant instruction decoding in emexcept
;		(stand-alone version only)
;
;   09/30/85	Jamie Bariteau
;		start of C and FORTRAN 4.0 changes
;		    emulator.asm:
;			changed memory temp REG8087ST2 to REG8087ST0
;			since ST(2) is no longer saved to memory but
;			ST(0) is.
;		    emexcept.asm:
;			rewrote invalid exception handling to deal with
;			new stack overflow/underflow model
;
;   10/30/85	Greg Whitten
;   11/03/85	more C and FORTRAN 4.0 changes
;		    embedded version information for debugger
;			reordered data area
;			deleted unused data items
;		    added UserStatusWord for status reporting
;			added __fpmath call for returning status
;		changed denormal handler so precision is not lost
;		    on FMUL denormal
;
;   11/18/85	Jamie Bariteau
;		more C and Fortran 4.0 changes
;		emulated new set of arithmetic register instructions:
;			f<op> ST,ST(x)
;			f<op> ST(x),ST
;			f<op>p ST,ST(x)
;
;   11/19/85	Greg Whitten
;		(hack) change temp real denormals into 0 in normalize
;		some temp real denormals will not be caught
;
;   02/11/86	Greg Whitten
;		changed around some conditionals and removed unused
;		conditionals (MSDOS and XENIX)
;
;   02/11/86	Greg Whitten
;		created frontend -only version of emulator
;		assumes no 8087 and limited instructions
;		(no transcendentals)
;
;   02/12/86	Greg Whitten
;		corrected bug in exception handler with user status
;
;   03/20/86	Greg Whitten
;		fixed special arithmetic returns to use RESULT
;
;   Version 4.00C 4.0
;
;   07/15/86	Greg Whitten
;		added dual DOS 5.0 and DOS 3.x support
;		added standalone and DOS 5 conditionals
;
;   09/25/86	Greg Whitten
;		added FCOM denormal exception support
;		added pseudo-zero checking to denormal exceptions
;
;   10/14/86	Greg Whitten
;		386 version of the emulator for XENIX
;		added XENIX and i386 conditionals
;
;   10/09/86	Jamie Bariteau
;		Changed initialization of LIMstk to allow
;		more space between the end of the emulator
;		stack and DGROUP.  The emulator was trashing
;		DS:0 before aborting with fp stack overflow.
;
;   10/15/86	Barry McCord
;		fixed no87= message to use DOSWRITE for
;		the DOS3/5 version of the emulator
;
;   01/02/87	Barry McCord
;		added FPREM emulation into the DOS3/5 version
;		of the emulator
;
;   02/12/87	Barry McCord
;		changed coprocessor detection mask in
;		EMINIT.ASM from 1F3Fh to 0F3Fh to allow
;		for A1 stepping of 80387, in which bit
;		1000h of the control word remains high.
;
;   03/03/87	Greg Whitten
;		added QB3 support (special hacked emulator)
;
;   04/01/87	Greg Whitten
;		merged sources for OS/2 and XENIX emulators
;		minor cleanup
;		- removed PCDOS switch
;
;   Version 5.00
;
;   04/09/87	Barry McCord
;		added WINDOWS switch for Windows 2.00 support
;
;   05/01/87	Jamie Bariteau
;		moved FPREM data from emfprem.asm to emulator.asm
;		so that fptaskdata marks the end of the data area
;
;   05/04/87	Barry McCord
;		changed DOSWRITE to __DOSWRITE, etc.
;		for the DOS 3/5 emulator
;
;   05/05/87	Greg Whitten
;		XENIX 286/386 cleanup
;
;   05/14/87	Barry McCord
;		added exception handling support to "quiet"
;		the Invalid exception generated by fld (short/long
;		real operand) of an SNaN (only matters for 80387);
;		this was so that the compiler can do FLDs without
;		being concerned whether the (possibly stack-based)
;		floating-point variable has been initialized.
;
;   06/19/87	Barry McCord
;		Windows 2.00 support ready for Windows SDK Beta 1
;
;   06/24/87	Barry McCord
;		Bug fix (BCP #1767) for FORTRAN 4.01.
;		Exception handler wasn't loading ST(1) from
;		memory when ST(0) was full but ST(1) was not
;		(for instructions taking 2 stack operands).
;
;   08/24/87	Barry McCord
;		Added emulation of fild qword ptr
;		and fistp qword ptr for the purpose of supporting
;		unsigned-long-to-float and float-to-unsigned-long
;		conversions for C 5.00.
;
;   release	C 5.00 / QuickC 1.00 / QuickBASIC 4.00
;   10/19/87
;
;   Version 5.10
;
;   11/07/87	Greg Whitten
;		added PCDOS (ifdef-style) switch back in for IBM Japan
;		added polling-style interrupt handler to eliminate
;			interrupt problem in real mode
;
;   11/11/87	Barry McCord
;		Corrected FORTRAN bug fix (06/24/87 above)
;		by changing a JMP instruction in emexcept.asm.
;		Corrected DOS5only initialization in emdos.asm;
;		missing JMP caused CW not to be initialized.
;
;   11/12/87	Barry McCord
;		Added OS/2 support for a reentrant/dynalinkable
;		run-time (IBM/Dallas model).  Used DOSALLOCSEG
;		to allocate per-thread emulator data areas.  The
;		segment selectors are stored in an array and indexed
;		by thread ID.
;
;   12/08/87	Greg Whitten
;		put new exception handling code under POLLING switch
;
;   01/11/88	Barry McCord
;		eliminated assembler error in i386 version
;		of emfrndi.asm
;
;   01/21/88	Barry McCord
;		replaced QB4 switch with _NOSTKEXCHLR, since
;		QB4 updates no longer use the switch
;
;   03/16/89	WAJ
;		Fixed bug in emt.lib/87t.lib.  __fpsignal was being
;		called	with the wrong value.
;
;   03/24/89	WAJ
;		Fixed bug in emmt.lib/87mt.lib. In emerror.asm, the
;		address of user's FP signal handler was not being
;		removed from stack.
;
;   03/26/89	WAJ
;		Added ifdefs for the SMALL_EMULATOR for BASIC
;
;   04/02/89	WAJ
;		Added special emmtsql version that will let SQL
;		switch stacks with emmt.lib.
;
;   04/06/89	WAJ
;		Updated win87em.exe
;
;   04/07/89	WAJ
;		Moved history from emulator.asm into emulator.hst
;		Moved some macros into emulator.inc
;
;
;   04/09/89	WAJ
;		Added standard header file to most of the emulator files.
;		Added ProfBegin and ProfEnd macros for profiling.
;
;   04/10/89	WAJ
;		Added code to emerror.asm and emfixfly.asm to handle EMS
;		segments in ds under Windows when calling the user's floating
;		point excpetion handler.
;
;   04/12/89  WAJ   Added NOPs to ProfBegin and ProfEnd
;
;   04/12/89  WAJ   Polling emulator now uses a "retf 2" instead of "iret"
;
;   04/27/89  WAJ   Made several changes to Windows emulator to support
;		    protected Win386.  Removed all writes into code segments.
;
;   04/28/89  WAJ   Added RESIDENTNAME to win87em.def.
;
;   04/30/89  WAJ   Added several "even" statements to emarith.asm
;
;   05/02/89  WAJ   Added instruction look ahead and several minor spead ups.
;
;   05/12/89  WAJ   Added sti to "retf 2" in Windows emulator.
;
;   05/16/89  WAJ   Fixed bug in look ahead code (emmain.asm). Segment override
;		    followed by bp address would use the wrong segment.
;
;   05/39/89  WAJ   Now includes cmacros.inc.  Just used for segments at the
;		    moment.
;
;   05/39/89  WAJ   Added emqp.lib for Quick Pascal to build.
;
;   06/05/89  WAJ   Fixed bug in BIGNAN (in emarith.asm).  Wasn't returning
;		    NAN with biggest mantissa.
;
;   06/06/89  WAJ   "fldz" was not giving the same results as "fld [zero]"
;
;   06/12/89  WAJ   Changed AllExceptionsHandled in emexcept.asm so that user
;		    can mask invalid exceptions.
;
;   06/20/89  WAJ   win87em.exe is now marked as a Windows 3.0 exe.
;		    win87em2.exe is the Windows 2.0 version.  win87em.def is
;		    now used just to make the win87em.lib implib.
;
;   06/02/89  WAJ   win87em.exe's version number is now 6.00.03
;
;   06/28/89  WAJ   Added save/restore to emwin.asm for win87em.exe.  Also,
;		    added the file win87em.h.
;
;   07/05/89  WAJ   Removed fixup externals from QuickPascal emulator.
;
;   07/18/89  WAJ   Added __fpemulatorbegin and __fpemulatorend labels.
;
;   08/01/89  WAJ   Added check for reg, reg operation to ProcessDenormal in
;		    emexcept.asm
;
;   09/06/89  WAJ   Fixed bug in emfmul.asm. Needed "xor ebp, ebp" after PROD2.
;
;   09/21/89  WAJ   Started merging in 386 version.
;
;   01/22/90  WAJ   win87em.dll now check __WINFLAGS to remove STI if pmode.
;   01/22/90  WAJ   win87em.dll version numbers is incremented to 6.00.04.
;
;   02/02/90  WAJ   Changed "retf 2" in win87em.dll into iret.
;   02/02/90  WAJ   win87em.dll version numbers is incremented to 6.00.05.
;
;   02/02/90  WAJ   In win87em.dll, skips sti if WF_PMODE and WF_WIN386.
;   02/02/90  WAJ   win87em.dll version numbers is incremented to 6.00.06.
;   04/06/90  WAJ   Fixed win87em.dll exception problems.  Version 6.00.07.
;   04/10/90  WAJ   Added fsetpm to init.  Added "out f0, 0".  Version 6.00.08.
;   04/11/90  WAJ   Win exception handler could set ES=0. Added NUL_JMP.
;			Version 6.00.09.
;   04/12/90  WAJ   Win87em.dll now inits chip for each app.  Now uses INT 11h.
;			Version 6.00.10
;   04/17/90  WAJ   Win87em.dll now uses protexception for 286/287 PS/2'ss.
;			Version 6.00.11
;   05/14/92  JWM   Added DonC's WINFAST code; changes to emulator.asm, emerror.asm
;			emfixfly.asm, emwin.asm; also added fwait to "reset" in
;			emwin.asm, to fix 80387 bug.
;
;*******************************************************************************