VOGONS


First post, by GloriousCow

User metadata
Rank Member
Rank
Member

I'm happy to announce a new CPU Test Suite for the Intel 8088 CPU has been merged into Tom Harte's excellent ProcessorTests repository at https://github.com/TomHarte/ProcessorTests/tree/main/8088.

If you're unfamiliar with JSON CPU tests, I've written a short blog article with more information, which you may read here: https://martypc.blogspot.com/2023/09/a-test-s … intel-8088.html

This test suite is extensive - covering over 300 opcode forms, consisting of over 3 million individual tests spanning nearly 90 million cycles.

EDIT: We've reorganized things a bit, the 8088 test suite is now hosted at https://github.com/singleStepTests/8088

Last edited by GloriousCow on 2024-05-11, 04:20. Edited 1 time in total.

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 1 of 2, by GloriousCow

User metadata
Rank Member
Rank
Member

Version 1.1 was recently merged, no actual test changes but the test disassembly was updated.

I've been playing around with data mining the tests with Python. Here's an example of the sort of thing you can do, histograms of cycle execution time for all 8088 instructions:

warning: big image

8088_timings_03.png
Filename
8088_timings_03.png
File size
324.8 KiB
Views
513 views
File comment
8088 cycle timings
File license
CC-BY-4.0

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc

Reply 2 of 2, by GloriousCow

User metadata
Rank Member
Rank
Member

I have uploaded a new version of the 8088 tests, V2.

  • 50% of included instructions now run from a full prefetch queue. This vastly improves visibility of actual cycle timings for short instructions that would otherwise be bus-limited. I even found a few off-by-one cycle errors in MartyPC.
  • The value of the 20-bit multiplexed bus is now included per-cycle, instead of presenting the "address latch". Various status flags are encoded on the bus pins during various t-states, so the information may be useful if you are developing pin-accurate emulation.
  • Fixed a bug in the V1 test generator that did not preserve the value of undefined flags from the CPU. I regret this error made V1 useless for researching or validating undefined flags. V2 should now be a valuable resource for researching undefined flag operation.
  • Switched CPUs from the Harris 80C88 to an AMD D8088 1982. There are tiny variances in behavior of the Harris 80C88 used previously. Unlikely to be of any particular concern to most.

MartyPC: A cycle-accurate IBM PC/XT emulator | https://github.com/dbalsom/martypc