dosemu2 / fdpp

FreeDOS plus-plus, 64bit DOS
GNU General Public License v3.0
198 stars 17 forks source link

prehistorik2 doesn't work #237

Closed stsp closed 11 months ago

stsp commented 11 months ago

Just exits after the initial intro. It used to work in the past.

stsp commented 11 months ago

Bisect: 785ee04d

stsp commented 11 months ago

@ecm-pushbx This is caused by your ISR detection trick. I think prehistoric chains to the previous IRQ5 handler after doing EOI. :( Can you work out the solution?

stsp commented 11 months ago

And in fact this is a very reasonable thing to do, because bios is not supposed to know that IRQ5 is from SB16. So bios only does IRET. As such, chaining to prev irq5 handler after doing EOI, is not a bug! Which means, we added a bug. Such detection can not be used.

stsp commented 11 months ago

In dosemu2 we do this:

    case 8 ... 0x0f:
      SETIVEC(i, BIOSSEG, EOI_OFF);
      break;

I don't think this is correct. We only need to set some ints to EOI_OFF, namely those for which we have the handlers. Which would then be 8, 9, 11, 12, 14, 15.

stsp commented 11 months ago

OK, so I removed SS handler and changed GPF handler to only use IMR.