VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

Checkit 3.0 does seem to implement some basic tests, but does anyone know of other tools that diagnose CPU bugs as well?

Also verified using AMI Diagnostics 5' protected mode tests.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 1 of 4, by superfury

User metadata
Rank l33t++
Rank
l33t++

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?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 2 of 4, by superfury

User metadata
Rank l33t++
Rank
l33t++

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.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 3 of 4, by superfury

User metadata
Rank l33t++
Rank
l33t++

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?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 4 of 4, by superfury

User metadata
Rank l33t++
Rank
l33t++

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?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io