• Please review our updated Terms and Rules here

Tandy 1000 A/EX/HX DMA speed-up

The microsecond timings are run-once; they are neither an average, nor a count. Interrupts are always disabled while any individual test is occuring.

The calculation of the Score that gets into the database is also done with interrupts disabled, so that is also fine. The realtime Score, however, is done with interrupts enabled between each run to increase the responsiveness of that screen. I am not surprised that moving the mouse or smashing the keys can affect it, because I've done that myself :) The microsecond timings shouldn't vary that much since interrupts are disabled while each one runs; any variance would be small due to DRAM refresh. But the Score can indeed jump.

I could alter the realtime display so that interrupts are disabled while the Score is being calculated, but that runs the risk of borking system processes that handle communication, like mouse or network card drivers. It's bad form to disable interrupts for too long. So, for best results in the realtime display, boot clean and don't touch anything :)
The calculation of the Score that gets into the database is also done with interrupts disabled, so that is also fine.

I suppose that could explain the difference in the case of the 7/8 disconnect between interactive and database add on the EX's recorded score. The head-scratcher for me is why the HX's "straight to database" score was lower than the saved one, unless PC Anywhere manages to hook onto *something* itself that lets it butt in during the score generation. (If I divide 50ms by the respective microsecond timings I get a possible 6.039 loops in 50ms for my HX+PC Anywhere vs. 5.58 loops for the canonical EX record... which now has me scratching my head how it scored a six, unless there's some variance in how tight the timing is for that 50ms period and it managed to round it up.)

Anyway. I guess I'll just remember if I'm looking for itty bitty differences I should stick to the individual microsecond timings.
Last edited:
I'll make that code change by the end of the weekend and then update this thread when it's uploaded.

I guess I should have written "end of the year", sorry about that. New release is up: https://github.com/MobyGamer/TOPBENCH/releases/tag/0.40

The main update is that the Benchmark->Compare screen is now much clearer as to what is being compared. Systems with identical SCOREs are considered equal speed (as was always the original design). Also, each test suite's microsecond timing numbers are highlighted with a speed factor printed next to them if they're faster than the other system, so that you can see exactly why/how a system differs from another. This should make your "itty bitty differences" comparisons easier.

I hope this addresses your concerns, but if not, let me know.
I hope this addresses your concerns, but if not, let me know.

Thank you. I'll be sure to take a look at it ASAP.

And, really, I don't think there were "concerns" really, it was mostly just having to actually grok what the aggregate numbers *meant*. The only remaining thing at all my list is just wondering why the machines I've tested are so *reliable* about scoring one higher in "add to database" than they are on on the interactive screen. IE, here's a screenshot showing the machine comparing itself to itself. (The 1 microsecond difference under "opcodes" would flip back and forth, otherwise all the numbers are rock solid.)


I'm guessing it's just a matter of machines like this being so slow that having interrupts enabled at all makes the difference in loop count, even if you don't touch anything. (It's off even if I don't load a mouse driver, etc. Happens with the 8088 installed as well, although in that case it's the difference between a 6 and a 5 instead of an 8 or a 7.) :)