Author: aandrejevic
Date: Tue Jun 25 17:56:05 2013
New Revision: 59340
URL:
http://svn.reactos.org/svn/reactos?rev=59340&view=rev
Log:
[NTVDM]
Implement the "Get Interrupt Vector" and "Set Interrupt Vector" DOS
API functions.
Modified:
branches/ntvdm/subsystems/ntvdm/dos.c
Modified: branches/ntvdm/subsystems/ntvdm/dos.c
URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/dos.c?re…
==============================================================================
--- branches/ntvdm/subsystems/ntvdm/dos.c [iso-8859-1] (original)
+++ branches/ntvdm/subsystems/ntvdm/dos.c [iso-8859-1] Tue Jun 25 17:56:05 2013
@@ -635,6 +635,17 @@
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 @@
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:
{