Hi,

The current DOS INT 21 AH=2C get time function returns incorrect results, and is sometimes hours off.
The attached patch fixes the problem.
It should patch against DOSBOX 0.72
the (X * 500 / 91)  is the same as  X * 100 / 18.2


Signed-off-by:  [EMAIL PROTECTED]

James

--- src/dos/dos.cpp.org	2007-11-16 02:46:35.000000000 +0000
+++ src/dos/dos.cpp	2007-11-16 02:54:50.000000000 +0000
@@ -348,8 +348,9 @@
 //TODO Get time through bios calls date is fixed
 		{
 /*	Calculate how many miliseconds have passed */
-			Bitu ticks=5*mem_readd(BIOS_TIMER);
-			ticks = ((ticks / 59659u) << 16) + ((ticks % 59659u) << 16) / 59659u;
+			/* seconds = ticks / 18.2 */
+			Bitu ticks=500 * mem_readd(BIOS_TIMER);
+			ticks = ticks / 91;
 			Bitu seconds=(ticks/100);
 			reg_ch=(Bit8u)(seconds/3600);
 			reg_cl=(Bit8u)((seconds % 3600)/60);

Reply via email to