David Bruce (David@Hulcote.com) 18/7/98

Major modifications to x286emul.

Fixed many bugs including:

  Environment of program is corrupt.

  brkctl() will not allow small model program to
  allocate far segment and leaks memory.

  Other system calls faulty, returning faulty data
  and some corrupting the data/stack.

Features added:

  Working Signals!!!

  Many new system calls.

  Floating point emulation.

  Small, medium, large and huge model programs all
  now work.

  Emulator patches the program to use "int 0xef"
  instead of "int 0x5" for system calls or if "NEW_SYSCALL"
  is defined the program will call the emulator directly for
  system calls so avoiding the trap into the operating
  system.

  If you put a "%d" in the "X286DEBUG" environment variable
  ,used as the file name to write debug information, the 
  emulator will replace this with the process id. Also
  the file descriptor is moved to a high number to get it
  out of the way of nasty programs.

  Reduced size of emulator by limiting the number of ldt
  entries to 256. This is the Maximum for 286 Xenix.

  Removed "in_emulator" variable and replaced with a check
  of the code segment of the interrupted code.

  Variable size stack for all programs.

Known Problems:

  Signals are not blocked during signal handlers. But then
  this is the same as on 386 Xenix.

  ioctl() is limited to TERMIO calls.

  Signal numbers used are not compatible with iBCS.

