Subsections

- 1 Functions and procedures
  - 1 npxsetup

# 4 The EMU387 unit

The emu387 unit was written by Pierre Müller for DOS. It sets up the coprocessor emulation for FPC under DOS. It is not necessary to use this unit on other OS platforms because they either simply do not run on a machine without coprocessor, or they provide the coprocessor emulation themselves.

It shouldn't be necessary to use the function in this unit, it should be enough to place this unit in the `uses` clause of your program to enable the coprocessor emulation under DOS. The unit initialization code will try and load the coprocessor emulation code and initialize it.

# 1 Functions and procedures

##
1 npxsetup

Declaration
  `procedure npxsetup(prog_name : string);`
Description
  npxsetup checks whether a coprocessor is found. If not, it loads the file wmemu387.dxe into memory and initializes the code in it.

  If the environment variable `387` is set to `N`, then the emulation will be loaded, even if there is a coprocessor present. If the variable doesn't exist, or is set to any other value, the unit will try to detect the presence of a coprocessor unit.

  The function searches the file wmemu387.dxe in the following way:

  1. If the environment variable `EMU387` is set, then it is assumed to point at the wmemu387.dxe file.
  2. if the environment variable `EMU387` does not exist, then the function will take the path part of `prog_name` and look in that directory for the file wmemu387.dxe.

  It should never be necessary to call this function, because the initialization code of the unit contains a call to the function with as an argument `paramstr(0)`. This means that you should deliver the file `wmemu387.dxe` together with your program.

Errors
  If there is an error, an error message is printed to standard error, and the program is halted, since any floating-point code is bound to fail anyhow.