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