Mail Archives: djgpp-workers/2002/12/08/06:50:32
Hello.
Andrew Cottrell wrote:
[snip]
> I modified the code to try the int 15 and if it failed then use the TOD tick
> time as you indicated if MS fix it down the tack. I added the yields,
> hopefully in the right spots and modified the txh file. I do not know what
> to put in the docs so any help is appreciated even if it is I don't
> understand it.
So this preserves the existing behaviour of delay() on Windows 3.x, '95, '98,
ME and NT.
> Below are the patches, one for delay.c and the other for delay.txh.
>
> Any more comments on the delay.c mods?
General, out of interest: Are there any good test cases for delay? I guess
there's the "does it work" test, but is there anything more sophisticated?
I think the patch should go in with some modifications (see my comments).
[snip]
> *** \djgppcvs\src\libc\dos\dos\delay.txh Mon Sep 6 22:39:32 1999
> --- .\src\libc\dos\dos\delay.txh Sun Dec 8 18:54:14 2002
> ***************
> *** 13,22 ****
> It uses the @code{int 15h} delay function to relinquish the CPU to other
> programs that might need it.
>
> ! Some operating systems that emulate DOS, such as OS/2 and Windows/NT,
> ! hang the DOS session when the @key{Pause} key is pressed during the call
> ! to @code{delay}. Plain DOS and Windows 3.X and 9X are known to not have
> ! this bug.
>
> @subheading Return Value
>
> --- 13,26 ----
> It uses the @code{int 15h} delay function to relinquish the CPU to other
> programs that might need it.
It doesn't describe the fact that it falls back on the TOD tick, if int 15h
fails. How about adding a sentence like this?
"Some operating systems, such as Windows 2000 and XP, do not support @code{int
15h}. @code{int 1ah} is used instead on these operating systems. This method
has lower accuracy in the delay length."
BTW the original delay code does not __dpmi_yield(). Does int 15h "relinquish
the CPU"? I don't have the impression it does, from reading the description
from Ralph Brown's Interrupt List.
> ! Some operating systems that emulate DOS, such as OS/2, Windows/NT, Windows
> 2000
> ! and Windows XP hang the DOS session when the @key{Pause} key is pressed
> during
> ! the call to @code{delay}. Plain DOS and Windows 3.X and 9X are known to
> ! not have this bug. On Windows 2000 and XP to exit the pause press any key.
> !
> ! Windows 2000 and XP delay resolution is 54.9 millisecond. Under Windows
> ! 2000 and XP the delay function uses the Time Of Day Tick which occurs
> ! 18.2 times per second.
>
> @subheading Return Value
You haven't stated what the accuracy is limited to on Windows 2000 and XP. How
about adding this sentence at the final paragraph?
"This limits the accuracy of the delay to around 27 milliseconds on Windows
2000 and XP."
The texinfo mark-up look fine to me.
Thanks, bye, Rich =]
--
Richard Dawe [ http://www.phekda.freeserve.co.uk/richdawe/ ]
- Raw text -