Peter L. Peres wrote, quoting Nigel Goodwin: >> Now 78uS is a totally different game, I suspect that would be MUCH! >> harder still - I wouldn't even like to try from DOS, across a broad >> speed range of machines - if it was only to run on one specific >> machine DOS would be easy :-). Peter describes a standard "calibrated loop" approach akin to the one in Turbo PAscal 7 that fouls up on Pentium machines above 200MHz. I have had some discussions with Nigel IIRC, and we don't seem to quite agree, but my suggestions are as follows: 1} Use the system timer. Works great under DOS. Ticks at 3.579545 / 3 = 1,193,181 (and two thirds) Hz or every 838 ns. You read it to start, then loop until it has incremented at least the required number of counts. *If* you are interrupted, *and* the interrupt extends beyond the end of the defined interval, at most the interval is extended by the length of the interrupt, which should not be long. In DOS you can suppress interrupts if you must. 2} This should work in Windoze also. There is a trick (always is). While Windoze quotes system timings in ms or even µs, it only timeslices in system clock "ticks" which are overflows of the system timer, 65536 of the above intervals. IOW, it only changes the active process 19.2 times per second except that it services interrupts (albeit, when it feels like it!). So, you wait until the system timer rolls over, say to the count "5". You now know you have the system's attention (barring interrupts) for another 50 ms, so it should be practical to perform a few timing events of the order of 1mS, or one 10mS event. It may even be possible to shut off interrupts within this clock "tick" (this may be a reason why serial problems occur in Windoze). 3} There is something slightly bodgie about the system timer in later machines 386s, etc... There may therefore be an extra step in the above. Can someone tell me/ give me a reference to what it is? If there are flaws in this argument, do tell! -- Cheers, Paul B.