From: Liam Middlebrook liammiddlebrook@gmail.com
Start the DOSVM tick timer when the GET_SYSTEM_TIME interrupt (int 1a ah 00) is fired. This fixes a bug when running Sid Meier's CIVILIZATION for Windows 3.1 where the game would appear to hang at the launch screen (although sound would play as expected). This was due to the BIOSDATA.Ticks field never being updated.
Signed-off-by: Liam Middlebrook liammiddlebrook@gmail.com --- dlls/krnl386.exe16/interrupts.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/krnl386.exe16/interrupts.c b/dlls/krnl386.exe16/interrupts.c index e062b497853..eb19570cb62 100644 --- a/dlls/krnl386.exe16/interrupts.c +++ b/dlls/krnl386.exe16/interrupts.c @@ -548,7 +548,10 @@ static void WINAPI DOSVM_Int1aHandler( CONTEXT *context ) { case 0x00: /* GET SYSTEM TIME */ { - BIOSDATA *data = DOSVM_BiosData(); + BIOSDATA *data; + + DOSVM_start_bios_timer(); + data = DOSVM_BiosData(); SET_CX( context, HIWORD(data->Ticks) ); SET_DX( context, LOWORD(data->Ticks) ); SET_AL( context, 0 ); /* FIXME: midnight flag is unsupported */