2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
4 * FILE: dos/dos32krnl/dos.h
5 * PURPOSE: DOS32 Kernel
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
12 /* INCLUDES *******************************************************************/
16 /**/ #include "int32.h" /**/
18 /* DEFINES ********************************************************************/
21 // We are DOS 5.00 (reported by INT 21h, AH=30h)
22 // and DOS 5.50 (reported by INT 21h, AX=3306h) for Windows NT Compatibility
24 #define DOS_VERSION MAKEWORD(5, 00)
25 #define NTDOS_VERSION MAKEWORD(5, 50)
27 #define DOS_CONFIG_PATH L"%SystemRoot%\\system32\\CONFIG.NT"
28 #define DOS_COMMAND_INTERPRETER L"%SystemRoot%\\system32\\COMMAND.COM /k %SystemRoot%\\system32\\AUTOEXEC.NT"
29 #define FIRST_MCB_SEGMENT 0x1000
30 #define USER_MEMORY_SIZE (0x9FFE - FIRST_MCB_SEGMENT)
31 #define SYSTEM_PSP 0x08
32 #define SYSTEM_ENV_BLOCK 0x800
33 #define DOS_CODE_SEGMENT 0x70
34 #define DOS_DATA_SEGMENT 0xA0
35 #define MASTER_SFT_OFFSET 0x100
37 #define INVALID_DOS_HANDLE 0xFFFF
38 #define DOS_INPUT_HANDLE 0
39 #define DOS_OUTPUT_HANDLE 1
40 #define DOS_ERROR_HANDLE 2
42 #define DOS_SFT_SIZE 255
43 #define UMB_START_SEGMENT 0xC000
44 #define UMB_END_SEGMENT 0xDFFF
45 #define DOS_ALLOC_HIGH 0x40
46 #define DOS_ALLOC_HIGH_LOW 0x80
47 #define DOS_DIR_LENGTH 64
48 #define NUM_DRIVES ('Z' - 'A' + 1)
49 #define DOS_CHAR_ATTRIBUTE 0x07
51 /* 16 MB of EMS memory */
52 #define EMS_TOTAL_PAGES 1024
56 typedef struct _DOS_FCB
71 typedef struct _DOS_SYSVARS
81 /* This is where the SYSVARS really start */
91 DOS_DRIVER NullDevice
;
92 BYTE NullDriverRoutine
[7];
93 } DOS_SYSVARS
, *PDOS_SYSVARS
;
95 typedef struct _DOS_INPUT_BUFFER
99 CHAR Buffer
[ANYSIZE_ARRAY
];
100 } DOS_INPUT_BUFFER
, *PDOS_INPUT_BUFFER
;
102 typedef struct _DOS_FIND_FILE_BLOCK
110 /* The following part of the structure is documented */
116 } DOS_FIND_FILE_BLOCK
, *PDOS_FIND_FILE_BLOCK
;
118 typedef struct _DOS_COUNTRY_CODE_BUFFER
124 } DOS_COUNTRY_CODE_BUFFER
, *PDOS_COUNTRY_CODE_BUFFER
;
128 /* VARIABLES ******************************************************************/
130 extern BOOLEAN DoEcho
;
131 extern DWORD DiskTransferArea
;
132 extern WORD DosErrorLevel
;
133 extern WORD DosLastError
;
134 extern PDOS_SYSVARS SysVars
;
136 /* FUNCTIONS ******************************************************************/
138 extern CALLBACK16 DosContext
;
139 #define RegisterDosInt32(IntNumber, IntHandler) \
141 DosContext.NextOffset += RegisterInt32(MAKELONG(DosContext.NextOffset, \
142 DosContext.Segment), \
143 (IntNumber), (IntHandler), NULL); \
150 CHAR
DosReadCharacter(WORD FileHandle
);
151 BOOLEAN
DosCheckInput(VOID
);
152 VOID
DosPrintCharacter(WORD FileHandle
, CHAR Character
);
154 BOOLEAN
DosBIOSInitialize(VOID
);
155 VOID
ConDrvInitialize(VOID
);
156 VOID
ConDrvCleanup(VOID
);
159 * DOS Kernel Functions
163 BOOLEAN
DosKRNLInitialize(VOID
);