Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

385 lines
12 KiB

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.
;
;*******************************************************************************