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 0x8FFFF
23 #define SYSTEM_PSP 0x08
24 #define SYSTEM_ENV_BLOCK 0x800
25 #define SEGMENT_TO_MCB(seg) ((PDOS_MCB)((ULONG_PTR)BaseAddress + TO_LINEAR((seg), 0)))
26 #define SEGMENT_TO_PSP(seg) ((PDOS_PSP)((ULONG_PTR)BaseAddress + TO_LINEAR((seg), 0)))
30 typedef struct _DOS_MCB
39 typedef struct _DOS_FCB
54 typedef struct _DOS_PSP
59 DWORD TerminateAddress
;
61 DWORD CriticalAddress
;
76 CHAR CommandLine
[127];
79 typedef struct _DOS_SFT_ENTRY
85 DWORD DriveParamBlock
;
91 WORD LastClusterAccessed
;
98 } DOS_SFT_ENTRY
, *PDOS_SFT_ENTRY
;
100 typedef struct _DOS_SFT
104 DOS_SFT_ENTRY Entry
[ANYSIZE_ARRAY
];
105 } DOS_SFT
, *PDOS_SFT
;
107 typedef struct _DOS_INPUT_BUFFER
109 BYTE MaxLength
, Length
;
110 CHAR Buffer
[ANYSIZE_ARRAY
];
111 } DOS_INPUT_BUFFER
, *PDOS_INPUT_BUFFER
;
115 /* FUNCTIONS ******************************************************************/
117 WORD
DosAllocateMemory(WORD Size
, WORD
*MaxAvailable
);
118 BOOLEAN
DosResizeMemory(WORD BlockData
, WORD NewSize
, WORD
*MaxAvailable
);
119 BOOLEAN
DosFreeMemory(WORD BlockData
);
120 VOID
DosInitializePsp(WORD PspSegment
, LPCSTR CommandLine
, WORD ProgramSize
, WORD Environment
);
121 BOOLEAN
DosCreateProcess(LPCSTR CommandLine
, WORD EnvBlock
);
122 VOID
DosTerminateProcess(WORD Psp
, BYTE ReturnCode
);
123 CHAR
DosReadCharacter();
124 VOID
DosPrintCharacter(CHAR Character
);
125 VOID
DosInt20h(WORD CodeSegment
);
126 VOID
DosInt21h(WORD CodeSegment
);
127 VOID
DosBreakInterrupt();
128 BOOLEAN
DosInitialize();