home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / sysutl / emul87.arc / EMUL87.DOC < prev    next >
Text File  |  1988-01-03  |  3KB  |  73 lines

  1. EMUL87 -- An 8087 Emulator for Turbo Pascal
  2.  
  3. EMUL87 is a terminate but stay resident program that emulates the functionality
  4. of the 8087 math coprocessor for Turbo Pascal programs. It requires an 80286
  5. or 80386 processor to operate. Using the EMUL87 programs allows the fastest
  6. possible floating point math on machines with the math coprocessor, while
  7. still allowing program operation on most common hardware (AT, no 287). You
  8. can use inline 8087 instructions, without worrying!
  9.  
  10. The only major limitation is that older PCs and XTs (8088, 8086 and 186 based
  11. machines) will HAVE to aquire a math coprocessor to run your software.
  12.  
  13. A more minor limitation is that the Floating Point Emulator is based on
  14. Borlands Turbo C floating point emulator, and the emulation is NOT COMPLETE.
  15. This means that EMUL87 cannot be used as a generic 87 eliminator. The missing
  16. instructions are FINCSTP, FDECSTP, FFREE and floating stack wraparound.
  17. The only program that I have had a problem with is the D86 debugger (part of
  18. the A86 assembler package; everything works, but the 87 register display
  19. does not come up properly).
  20.  
  21. Also, EMUL87 will not "fool" any program that is deliberately looking for
  22. a 80287 chip. The '87 code will have to be generic 8087 to be successfully
  23. emulated.
  24.  
  25. I tried wrapping the emulator into a Turbo Pascal 4 Unit, but with segment
  26. naming problems, etc, it was going to be far too difficult to accomplish
  27. in any meaningful time frame, so I settled for keeping a TSR implementation.
  28.  
  29. There are three programs in this package:
  30.  
  31.     EMUL87      The 87 emulator itself. If the processor is not a 286 or
  32.                 386, it will refuse to go resident. If a 287 or 387 is
  33.                 present, it will refuse to go resident. If the word
  34.                 "force" is put on the command line, it will override
  35.                 the 287/387 detection and force EMUL87 resident. EMUL87
  36.                 takes 14K of memory.
  37.  
  38.     EMON        Turn EMUL87 on (if it is in memory)
  39.  
  40.     EMOFF       Turn EMUL87 off (if it is in memory)
  41.  
  42.  
  43. Typical use of the EMUL87 package is in a batch file:
  44.  
  45.     EMUL87                    -- load the emulator
  46.     EMON                      -- enable it
  47.     ...myapplication...       -- run the 87 code
  48.     EMOFF                     -- turn the emulator off
  49.  
  50. There is currently no way to remove EMUL87 from memory, nor am I likely to
  51. provide one. It does contain a check to prevent from being multiply loaded.
  52.  
  53. Hints:
  54.  
  55.     The force option is useful to test programs with 87 emulation, even if
  56.     you have the chip. Its easier than removing the chip!
  57.  
  58.     EMUL87 works with Turbo Pascal 3 (8087 version), Turbo Pascal 4 with
  59.     {$N+} compilation and Turbo C. The popular TCDEBUG program benefits
  60.     because it is incapable of de-assembling emulator opcodes!
  61.  
  62. Bugs:
  63.  
  64.     Watch out for Ctrl-Alt-Del! If the emulator is enabled, ALL floating
  65.     point instructions are going to be trapped. Ctrl-Alt-Del Warm Start
  66.     routine DOES NOT clear the instruction trapping! In order to be safe,
  67.     EMOFF should be put into your AUTOEXEC.BAT file, BEFORE any programs
  68.     are actually run.
  69.  
  70.     If a program (like the popular ARC program) tries to detect the
  71.     presence of an '87 chip, and EMUL87 is not loaded to catch the instruction,
  72.     your machine WILL end up in hyperspace.
  73.