I made an executable version of XTCE: http://www.reenigne.org/misc/xtce.zip . Doesn't
need any DLLs except for the VC++ runtime which you can get at https://www.microsoft.com/en-us/download/deta … s.aspx?id=52685 if it complains about vcruntime140.dll being missing.
Give it a .com file on the command line. It'll execute it for (by default) 4096 cycles (or until CS:IP ends up at 0060:00FF (which is where it will end up if you do a RET or RETF from the initial SS:SP) whichever happens first), dump a cycle-by-cycle trace to the console, and print the total number of cycles executed at the end.
The program takes up to three integers on the command line, after the filename of the program to execute:
1) Cycle on which to start logging (number of cycles to skip from beginning of log). That way you won't have to scroll through all your setup code each time.
2) Cycle on which to stop logging (e.g. if you want to get a log of one iteration of a loop, but then a total cycle count for all iterations of the loop).
3) Cycle on which to stop executing if you want more than 4096 cycles.
(The command line order of these three numbers is the same as the chronological order in which they occur).
Note that there's no BIOS or DOS loaded, so you can't call any interrupts unless you set them up yourself first. Also you won't get any IRQ0s or DRAM refresh DMAs (so timings will be a little faster than on real hardware) unless you set those up first.
You can load a file that is more than 64kB (just a flat memory-dump format like an extended .com, not an .exe). If you do that you'll need to set up your own stack before doing a PUSH or enabling any hardware interrupts, or the part of your program at the just-under-64kB mark will get stomped on (I could have set up the initial stack to be at the end of RAM but then we wouldn't have CS==DS==SS like a .com file does).
There's no keyboard, mouse, disk, serial, parallel, CGA, speaker, DRAM decay or host interface yet. There's partial PIT, PIC, DMAC and PPI (just enough to get accurate timing for the tests that I've written so far).