dosemu2 / fdpp

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

prehistorik2 doesn't work #237

Closed stsp closed 1 year ago

stsp commented 1 year ago

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

stsp commented 1 year ago

Bisect: 785ee04d

stsp commented 1 year 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 1 year 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 1 year 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 1 year ago

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