Reply 1 of 4, by superfury
Odd: Checkit now throws a R6001(or R6003, don't remember): Divide by zero with my latest commits and bugfixes? Hmmm...
Edit: That's a weird instruction stream being executed running CheckIt! Diagnostics 3.0. It's just executed opcode 0x55, at which point it executes INT 00h(opcode stream CD00), which faults the program to a crash?
Edit: Hmmmm... This doesn't seem to happen when it's ran from the command prompt inside WFW 3.11. Perhaps there's a problem in the real mode interrupt handling now?
Reply 2 of 4, by superfury
Just tried CheckIt on the 80486 emulation(which runs without issues). It seems that it might have something to do with interrupts. Or the interrupt flag. Those are the only components that actually affect instruction flow for the MS-DOS software(through VME, if enabled). So there's probably a problem with one of the VME adjustments for the CD(INT or interrupts in general) and STI/CLI/PUSHF(D)/POPF(D) instructions there? The only other additions are the new instructions(unused by the 80386- software), which shouldn't affect it.
Reply 3 of 4, by superfury
Just found a tiny bug in the flags pushed on the stack while executing PUSHF on the VME-enabled Pentium emulation(incorrectly applying VIF from IF on the stack). But that shouldn't have effect on the real-mode that CheckIt is running in?
Reply 4 of 4, by superfury
Just tried disabling all Pentium-related added functionality and opcodes, while redirecting the Pentium opcodes to the same opcode handlers the 80486 should be using. It didn't have any effect on the CheckIt! Diagnostics tool(still crashing).
Then I noticed that the ENTER instruction behaves a bit differently on exception checking with 80486 and with newer processors(newer processors don't throw exceptions while partway through, while the 80486 does(it will thow a stack exception in the middle of a push of parameters or other things pushed on the stack). So I tried disabling said functionality for the newer processors(behaving like the 80486 would instead). That also didn't have any special effect, CheckIt crashed all the same 😒
What could be going on then that's affecting the Pentium CPU emulation to crash on CheckIt! Diagnostics 3.0?