Implement the "Get Interrupt Vector" and "Set Interrupt Vector" DOS API functions.


svn path=/branches/ntvdm/; revision=59340
This commit is contained in:
Aleksandar Andrejevic 2013-06-25 17:56:05 +00:00
parent 2ea7dab9a6
commit 53fbdf6bc9

View file

@ -635,6 +635,17 @@ VOID DosInt21h(WORD CodeSegment)
break;
}
/* Set Interrupt Vector */
case 0x25:
{
DWORD FarPointer = MAKELONG(LOWORD(Edx), DataSegment);
/* Write the new far pointer to the IDT */
((PDWORD)BaseAddress)[LOBYTE(Eax)] = FarPointer;
break;
}
/* Get system date */
case 0x2A:
{
@ -710,6 +721,18 @@ VOID DosInt21h(WORD CodeSegment)
break;
}
/* Get Interrupt Vector */
case 0x35:
{
DWORD FarPointer = ((PDWORD)BaseAddress)[LOBYTE(Eax)];
/* Read the address from the IDT into ES:BX */
EmulatorSetRegister(EMULATOR_REG_ES, HIWORD(FarPointer));
EmulatorSetRegister(EMULATOR_REG_BX, LOWORD(FarPointer));
break;
}
/* Create Directory */
case 0x39:
{