Implement several directory operations.


svn path=/branches/ntvdm/; revision=59331
This commit is contained in:
Aleksandar Andrejevic 2013-06-24 18:15:53 +00:00
parent ca06374c9f
commit 07928d50d4

View file

@ -701,6 +701,67 @@ VOID DosInt21h(WORD CodeSegment)
break;
}
/* Create Directory */
case 0x39:
{
String = (PCHAR)((ULONG_PTR)BaseAddress
+ TO_LINEAR(DataSegment, LOWORD(Edx)));
if (CreateDirectoryA(String, NULL))
{
EmulatorClearFlag(EMULATOR_FLAG_CF);
}
else
{
EmulatorSetFlag(EMULATOR_FLAG_CF);
EmulatorSetRegister(EMULATOR_REG_AX,
(Eax & 0xFFFF0000) | LOWORD(GetLastError()));
}
break;
}
/* Remove Directory */
case 0x3A:
{
String = (PCHAR)((ULONG_PTR)BaseAddress
+ TO_LINEAR(DataSegment, LOWORD(Edx)));
if (RemoveDirectoryA(String))
{
EmulatorClearFlag(EMULATOR_FLAG_CF);
}
else
{
EmulatorSetFlag(EMULATOR_FLAG_CF);
EmulatorSetRegister(EMULATOR_REG_AX,
(Eax & 0xFFFF0000) | LOWORD(GetLastError()));
}
break;
}
/* Set Current Directory */
case 0x3B:
{
String = (PCHAR)((ULONG_PTR)BaseAddress
+ TO_LINEAR(DataSegment, LOWORD(Edx)));
if (SetCurrentDirectoryA(String))
{
EmulatorClearFlag(EMULATOR_FLAG_CF);
}
else
{
EmulatorSetFlag(EMULATOR_FLAG_CF);
EmulatorSetRegister(EMULATOR_REG_AX,
(Eax & 0xFFFF0000) | LOWORD(GetLastError()));
}
break;
}
/* Allocate Memory */
case 0x48:
{