[comp.binaries.ibm.pc] Sleep functions for MSDOS

davidsen@steinmetz.steinmetz.UUCP (William E. Davidsen Jr) (12/12/87)

Recently I got a sleep function for MSC from the net. It was useful for
some things, and worked reliably. A friend is writing a piano simulation
for DOS, and needs a milisecond delay routine. Since the hardware clock
is too coarse for this, it requires a software timer which doesn't go
well between machines of differing speeds.

What I have written is an msleep routine which calibrates itself on the
first call, and then provides accurate milisecond sleeps. There is a
builtin test routine. If you run it, remember that the length of the
bell tone will add about 400ms to the delay.

This includes the original sleep source as well as what I added. Full
credit for everything but the msleep routine goes to the original
author.

begin 666 sleep.arc
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
3*.$N7TB/01 2B8QH0A'QD14: -!1
 
end

-- 
	bill davidsen		(wedu@ge-crd.arpa)
  {uunet | philabs | seismo}!steinmetz!crdos1!davidsen
"Stupidity, like virtue, is its own reward" -me