First post, by superfury
I've noticed that, when enabling the "Quit on #UD(undefined) instruction" and running various software on my 80286 core, I get #UD exceptions(actual 80286 opcodes that are officially(and unofficially too afaik, like the GRP5 /7 opcode) invalid). This seems to be because it's executing code in bogus memory. Anyone knows a way to find the offending instruction? Is there a way to find out where my 80286 emulation screws up(even my 80186('NEC V30') emulation on XT with ET4000 BIOS crashes because of an #UD opcode)? (#UD opcodes on both 80(1)86 and 80286 are currently implemented to terminate the emulator for testing)
Just tried running Prince of Persia for MS-DOS on my 80286 core. It terminates because of an #UD.
Edit: Just tried installing Windows 3.0. It crashes trying to copy the SETUP.EXE to the first hard disk (second HDD is mounted read-only).
Edit: Just gotten a #UD after an ADD instruction(opcode 00h) during POST? Something seems to go wrong here? The current(invalid) opcode is 0xFF(GRP5 opcode), while the previous opcode was:
- 00(ADD) at a strange address.
8086+ opcodes: https://bitbucket.org/superfury/unipcemu/src/ … 086.c?at=master
80186+ opcodes: https://bitbucket.org/superfury/unipcemu/src/ … V30.c?at=master
80286+ opcodes: https://bitbucket.org/superfury/unipcemu/src/ … 286.c?at=master
CPU core combining all of them: https://bitbucket.org/superfury/unipcemu/src/ … cpu.c?at=master
CPU protected mode timings and real mode instruction parameters information(modr/m, immediate parameters etc): https://bitbucket.org/superfury/unipcemu/src/ … ngs.c?at=master
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io