Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cpu: 16 bit core inaccuracies #38

Open
2 tasks
martinlindhe opened this issue Feb 10, 2018 · 0 comments
Open
2 tasks

cpu: 16 bit core inaccuracies #38

martinlindhe opened this issue Feb 10, 2018 · 0 comments
Assignees

Comments

@martinlindhe
Copy link
Owner

martinlindhe commented Feb 10, 2018

Background

The instruction fuzzer allows some confidence in comparing instruction emulation details with another system. This has helped improving the accuracy compared to other vm implementations. Mostly this has uncovered some bugs with flags so far.

Problem

Most 8-bit instructions have now been fuzzed with the instruction fuzzer.
A few instructions have been found to differ enough to warrant more research:

Neg8: mov ah,0; not ah =   OVERFLOW flag differs vs winxp
Idiv8: hard to fuzz due to input that triggers DIV0 exception

SPECIAL NOTES:
Rol8, Ror8, Rcl8, Rcr8 - OVERFLOW flag differ from winxp
XXX: Aam - P Z S flags differ from winxp & dosbox-x
XXX: Rcl8 register values don't match with dosbox-x, but with bochs & winxp
dustbox tries to be consistent with dosbox-x where behavior differs

TODO:

  • fuzz the 16 bit opcodes
  • test Rol8, Ror8, Rcl8, Rcr8 ops on real hardware
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant