Reply 180 of 180, by superfury
Just added more tests to the testsuite.
It now also tests for 286 call gates on top of the existing 386 call gates.
I've also implemented some basic tests for upper half kernels (using identity-mapped memory mapped as kernel-only), which catches 32-bit interrupt and call gates for errors and verifies they operate as they should.
Finally I've added a test for 286 interrupt gates as well, thus most of the CPU is now validated.
All that's left right now is basically:
- TSS-based task switching. Although this can also be done using other methods (like for example the SuperSoft/Landmark diagnostic ROM, which tests these extensively by task switching for quite a while, despite it's bugs).
- Virtual 8086 monitor that's running using a 16-bit interrupt gate.
The main issue with those is that the ROM size is getting quite big already. I'm not sure how many space can still be used to verify those operations (the final byte excluding the 16-byte footer is at address F513h right now already, so there's only ADDh (2781) bytes left in the 64KB ROM).
It's funny that there's exactly "ADD" bytes left in the ROM though. Like it's begging to have more added. 🤣
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io