From 54edb9922b9bd2e5eefcdef9e4ed2792edf42bc0 Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Fri, 4 Apr 2003 21:59:38 +0000 Subject: [PATCH] Correct calculation for function 0x2c get time. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@868 --- src/dos/dos.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/dos/dos.cpp b/src/dos/dos.cpp index 97db2f76..2288dbce 100644 --- a/src/dos/dos.cpp +++ b/src/dos/dos.cpp @@ -296,12 +296,14 @@ static Bitu DOS_21Handler(void) { case 0x2c: /* Get System Time */ //TODO Get time through bios calls date is fixed { - Bit32u ticks=mem_readd(BIOS_TIMER); - Bit32u seconds=(ticks*10)/182; +/* Calculate how many miliseconds have passed */ + Bitu ticks=5*mem_readd(BIOS_TIMER); + ticks = ((ticks / 59659u) << 16) + ((ticks % 59659u) << 16) / 59659u; + Bitu seconds=(ticks/100); reg_ch=(Bit8u)(seconds/3600); reg_cl=(Bit8u)((seconds % 3600)/60); reg_dh=(Bit8u)(seconds % 60); - reg_dl=(Bit8u)(((ticks * 10) % 182)*100)/182; + reg_dl=(Bit8u)(ticks % 100); } break; case 0x2d: /* Set System Time */