mirror of
https://github.com/reactos/reactos.git
synced 2024-10-22 13:56:16 +00:00
[NTVDM]
Use local time instead of system time for the clock. Implement the "set system date" and "set system time" DOS functions. svn path=/branches/ntvdm/; revision=59277
This commit is contained in:
parent
fe6988cbdd
commit
b040791380
|
@ -570,7 +570,7 @@ VOID DosInt21h(WORD CodeSegment)
|
|||
/* Get system date */
|
||||
case 0x2A:
|
||||
{
|
||||
GetSystemTime(&SystemTime);
|
||||
GetLocalTime(&SystemTime);
|
||||
EmulatorSetRegister(EMULATOR_REG_CX,
|
||||
(Ecx & 0xFFFF0000) | SystemTime.wYear);
|
||||
EmulatorSetRegister(EMULATOR_REG_DX,
|
||||
|
@ -581,11 +581,33 @@ VOID DosInt21h(WORD CodeSegment)
|
|||
(Eax & 0xFFFFFF00) | SystemTime.wDayOfWeek);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Set system date */
|
||||
case 0x2B:
|
||||
{
|
||||
GetLocalTime(&SystemTime);
|
||||
SystemTime.wYear = LOWORD(Ecx);
|
||||
SystemTime.wMonth = HIBYTE(Edx);
|
||||
SystemTime.wDay = LOBYTE(Edx);
|
||||
|
||||
if (SetLocalTime(&SystemTime))
|
||||
{
|
||||
/* Return success */
|
||||
EmulatorSetRegister(EMULATOR_REG_AX, Eax & 0xFFFFFF00);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Return failure */
|
||||
EmulatorSetRegister(EMULATOR_REG_AX, Eax | 0xFF);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
/* Get system time */
|
||||
case 0x2C:
|
||||
{
|
||||
GetSystemTime(&SystemTime);
|
||||
GetLocalTime(&SystemTime);
|
||||
EmulatorSetRegister(EMULATOR_REG_CX,
|
||||
(Ecx & 0xFFFF0000)
|
||||
| (SystemTime.wHour << 8)
|
||||
|
@ -596,6 +618,29 @@ VOID DosInt21h(WORD CodeSegment)
|
|||
| (SystemTime.wMilliseconds / 10));
|
||||
break;
|
||||
}
|
||||
|
||||
/* Set system time */
|
||||
case 0x2D:
|
||||
{
|
||||
GetLocalTime(&SystemTime);
|
||||
SystemTime.wHour = HIBYTE(Ecx);
|
||||
SystemTime.wMinute = LOBYTE(Ecx);
|
||||
SystemTime.wSecond = HIBYTE(Edx);
|
||||
SystemTime.wMilliseconds = LOBYTE(Edx) * 10;
|
||||
|
||||
if (SetLocalTime(&SystemTime))
|
||||
{
|
||||
/* Return success */
|
||||
EmulatorSetRegister(EMULATOR_REG_AX, Eax & 0xFFFFFF00);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Return failure */
|
||||
EmulatorSetRegister(EMULATOR_REG_AX, Eax | 0xFF);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
/* Allocate Memory */
|
||||
case 0x48:
|
||||
|
|
Loading…
Reference in a new issue