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