2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
5 * PURPOSE: VDM DOS Kernel (header file)
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
12 /* INCLUDES *******************************************************************/
16 /* DEFINES ********************************************************************/
18 #define DOS_VERSION MAKEWORD(6, 0)
19 #define DOS_CONFIG_PATH L"%SystemRoot%\\system32\\CONFIG.NT"
20 #define DOS_COMMAND_INTERPRETER L"%SystemRoot%\\system32\\COMMAND.COM /k %SystemRoot%\\system32\\AUTOEXEC.NT"
21 #define FIRST_MCB_SEGMENT 0x1000
22 #define USER_MEMORY_SIZE 0x8FFF
23 #define SYSTEM_PSP 0x08
24 #define SYSTEM_ENV_BLOCK 0x800
25 #define INVALID_DOS_HANDLE 0xFFFF
26 #define DOS_INPUT_HANDLE 0
27 #define DOS_OUTPUT_HANDLE 1
28 #define DOS_ERROR_HANDLE 2
29 #define DOS_SFT_SIZE 255
30 #define SEGMENT_TO_MCB(seg) ((PDOS_MCB)((ULONG_PTR)BaseAddress + TO_LINEAR((seg), 0)))
31 #define SEGMENT_TO_PSP(seg) ((PDOS_PSP)((ULONG_PTR)BaseAddress + TO_LINEAR((seg), 0)))
35 typedef struct _DOS_MCB
44 typedef struct _DOS_FCB
59 typedef struct _DOS_PSP
64 DWORD TerminateAddress
;
66 DWORD CriticalAddress
;
81 CHAR CommandLine
[127];
84 typedef struct _DOS_INPUT_BUFFER
86 BYTE MaxLength
, Length
;
87 CHAR Buffer
[ANYSIZE_ARRAY
];
88 } DOS_INPUT_BUFFER
, *PDOS_INPUT_BUFFER
;
92 /* FUNCTIONS ******************************************************************/
94 WORD
DosAllocateMemory(WORD Size
, WORD
*MaxAvailable
);
95 BOOLEAN
DosResizeMemory(WORD BlockData
, WORD NewSize
, WORD
*MaxAvailable
);
96 BOOLEAN
DosFreeMemory(WORD BlockData
);
97 WORD
DosCreateFile(LPWORD Handle
, LPCSTR FilePath
, WORD Attributes
);
98 WORD
DosOpenFile(LPWORD Handle
, LPCSTR FilePath
, BYTE AccessMode
);
99 WORD
DosReadFile(WORD FileHandle
, LPVOID Buffer
, WORD Count
, LPWORD BytesRead
);
100 WORD
DosWriteFile(WORD FileHandle
, LPVOID Buffer
, WORD Count
, LPWORD BytesWritten
);
101 VOID
DosInitializePsp(WORD PspSegment
, LPCSTR CommandLine
, WORD ProgramSize
, WORD Environment
);
102 BOOLEAN
DosCreateProcess(LPCSTR CommandLine
, WORD EnvBlock
);
103 VOID
DosTerminateProcess(WORD Psp
, BYTE ReturnCode
);
104 CHAR
DosReadCharacter();
105 VOID
DosPrintCharacter(CHAR Character
);
106 VOID
DosInt20h(WORD CodeSegment
);
107 VOID
DosInt21h(WORD CodeSegment
);
108 VOID
DosBreakInterrupt();
109 BOOLEAN
DosInitialize();