The following code will now generate identical obj file by
MSVC, DMC/SC and BC:
void fpusave (char far* t)
{
#if defined(__BORLANDC__)
_ES = FP_SEG (t);
_BX = FP_OFF (t);
#else // MSVC or DMC/SC
__asm les bx,t
#endif
__asm fnstcw es:[bx] // save IEM bit status
__asm nop // delay while control word saved
#if defined(__SC__)
__emit__(0xdb,0xe1);
#else
__asm fndisi // disable BUSY signal
#endif
__asm mov ax, es:[bx] // get original control word in AX
__asm fsave es:[bx] // save FPU state
__asm fwait // wait for save to complete
__asm mov es:[bx],ax // put original control word in saved state
}
void fpurest (char far* t)
{
#if defined(__BORLANDC__)
_ES = FP_SEG (t);
_BX = FP_OFF (t);
#else // MS or SC
__asm les bx,t
#endif
__asm frstor es:[bx]
}