Implement the "get system time" and "get system date" functions in the virtual DOS kernel.


svn path=/branches/ntvdm/; revision=59264
This commit is contained in:
Aleksandar Andrejevic 2013-06-20 02:10:42 +00:00
parent 6c73fd8066
commit c1bb00076e

View file

@ -488,9 +488,11 @@ VOID DosInt21h(WORD CodeSegment)
{
INT i;
CHAR Character;
SYSTEMTIME SystemTime;
PCHAR String;
PDOS_INPUT_BUFFER InputBuffer;
DWORD Eax = EmulatorGetRegister(EMULATOR_REG_AX);
DWORD Ecx = EmulatorGetRegister(EMULATOR_REG_CX);
DWORD Edx = EmulatorGetRegister(EMULATOR_REG_DX);
DWORD Ebx = EmulatorGetRegister(EMULATOR_REG_BX);
WORD DataSegment = EmulatorGetRegister(EMULATOR_REG_DS);
@ -565,6 +567,36 @@ VOID DosInt21h(WORD CodeSegment)
break;
}
/* Get system date */
case 0x2A:
{
GetSystemTime(&SystemTime);
EmulatorSetRegister(EMULATOR_REG_CX,
(Ecx & 0xFFFF0000) | SystemTime.wYear);
EmulatorSetRegister(EMULATOR_REG_DX,
(Edx & 0xFFFF0000)
| (SystemTime.wMonth << 8)
| SystemTime.wDay);
EmulatorSetRegister(EMULATOR_REG_AX,
(Eax & 0xFFFFFF00) | SystemTime.wDayOfWeek);
break;
}
/* Get system time */
case 0x2C:
{
GetSystemTime(&SystemTime);
EmulatorSetRegister(EMULATOR_REG_CX,
(Ecx & 0xFFFF0000)
| (SystemTime.wHour << 8)
| SystemTime.wMinute);
EmulatorSetRegister(EMULATOR_REG_DX,
(Edx & 0xFFFF0000)
| (SystemTime.wSecond << 8)
| (SystemTime.wMilliseconds / 10));
break;
}
/* Allocate Memory */
case 0x48:
{