This is a "human" patch because I don't know how to use any patching
programs.

Look in protect_ctrl.cc and find this:

  void
LAR_GvEw(vm_t *vm)
{

Then skip to this:

  else { /* system or gate segment */
    switch ( cache.desc.type ) {
      case 1: /* available TSS */
      case 2: /* LDT */
      case 3: /* busy TSS */
      case 4: /* 286 call gate */
      case 5: /* task gate */

And add this (if you don't believe me, check the docs):

      case 6:  /* 80286 trap gate */
      case 7:  /* 80286 interrupt gate */
      case 9:  /* available 32bit TSS */
      case 11: /* busy 32bit TSS */
      case 12: /* 32bit call gate */
      case 14: /* 80386 trap gate */
      case 15: /* 80386 interrupt gate */

Immediately after that should be this:

        break;
      default: /* rest not accepted types to LAR */
        G_SetZF(vm, 0);
        monprint(vm, "lar(): not accepted type\n");
        return;
      }

and then some more stuff down to the end of the function. Windows 98
setup was messing up because of this. I noticed because of the
monprint(vm, "lar(): not accepted type\n"). it didn't seem right to be
appearing in commercial software so I checked with the intel
documentation and, indeed, the above changes are necessary.

Later..

ws

Reply via email to