4 * Copyright 1998 Ove Kåven
7 #ifndef __WINE_DOSEXE_H
8 #define __WINE_DOSEXE_H
10 #include "wine/windef16.h"
11 #include "winbase.h" /* for LPSTARTUPINFO32A */
12 #include "winnt.h" /* for PCONTEXT */
16 typedef void (*DOSRELAY
)(CONTEXT86
*,void*);
18 #define DOS_PRIORITY_REALTIME 0 /* IRQ0 */
19 #define DOS_PRIORITY_KEYBOARD 1 /* IRQ1 */
20 #define DOS_PRIORITY_VGA 2 /* IRQ9 */
21 #define DOS_PRIORITY_MOUSE 5 /* IRQ12 */
22 #define DOS_PRIORITY_SERIAL 10 /* IRQ4 */
24 extern WORD DOSVM_psp
; /* psp of current DOS task */
25 extern WORD DOSVM_retval
; /* return value of previous DOS task */
27 #if defined(linux) && defined(__i386__)
29 #endif /* linux-i386 */
31 #define V86_FLAG 0x00020000
33 extern void WINAPI
MZ_LoadImage( LPCSTR filename
, HANDLE hFile
);
34 extern BOOL WINAPI
MZ_Exec( CONTEXT86
*context
, LPCSTR filename
, BYTE func
, LPVOID paramblk
);
35 extern void WINAPI
MZ_Exit( CONTEXT86
*context
, BOOL cs_psp
, WORD retval
);
36 extern BOOL WINAPI
MZ_Current( void );
37 extern void WINAPI
MZ_AllocDPMITask( void );
38 extern void WINAPI
MZ_RunInThread( PAPCFUNC proc
, ULONG_PTR arg
);
39 extern INT WINAPI
DOSVM_Enter( CONTEXT86
*context
);
40 extern void WINAPI
DOSVM_Wait( INT read_pipe
, HANDLE hObject
);
41 extern DWORD WINAPI
DOSVM_Loop( LPVOID lpExtra
);
42 extern void WINAPI
DOSVM_QueueEvent( INT irq
, INT priority
, DOSRELAY relay
, LPVOID data
);
43 extern void WINAPI
DOSVM_PIC_ioport_out( WORD port
, BYTE val
);
44 extern void WINAPI
DOSVM_SetTimer( UINT ticks
);
45 extern UINT WINAPI
DOSVM_GetTimer( void );
46 extern FARPROC16
DOSVM_GetRMHandler( BYTE intnum
);
47 extern void DOSVM_SetRMHandler( BYTE intnum
, FARPROC16 handler
);
48 extern void DOSVM_RealModeInterrupt( BYTE intnum
, CONTEXT86
*context
);
51 extern void DOSDEV_InstallDOSDevices(void);
52 extern DWORD
DOSDEV_Console(void);
53 extern DWORD
DOSDEV_FindCharDevice(char*name
);
54 extern int DOSDEV_Peek(DWORD dev
, BYTE
*data
);
55 extern int DOSDEV_Read(DWORD dev
, DWORD buf
, int buflen
);
56 extern int DOSDEV_Write(DWORD dev
, DWORD buf
, int buflen
, int verify
);
57 extern int DOSDEV_IoctlRead(DWORD dev
, DWORD buf
, int buflen
);
58 extern int DOSDEV_IoctlWrite(DWORD dev
, DWORD buf
, int buflen
);
61 extern void WINAPI
DOSVM_Int09Handler(CONTEXT86
*);
62 extern void WINAPI
DOSVM_Int09SendScan(BYTE scan
,BYTE ascii
);
63 extern BYTE WINAPI
DOSVM_Int09ReadScan(BYTE
*ascii
);
66 extern void WINAPI
DOSVM_Int10Handler(CONTEXT86
*);
69 extern void WINAPI
DOSVM_Int16Handler(CONTEXT86
*);
70 extern int WINAPI
DOSVM_Int16ReadChar(BYTE
*ascii
,BYTE
*scan
,BOOL peek
);
71 extern int WINAPI
DOSVM_Int16AddChar(BYTE ascii
,BYTE scan
);
74 extern void WINAPI
DOSVM_Int17Handler(CONTEXT86
*);
77 extern void WINAPI
DOSVM_Int19Handler(CONTEXT86
*);
80 extern void WINAPI
DOSVM_Int20Handler(CONTEXT86
*);
83 extern void WINAPI
DOSVM_Int21Handler(CONTEXT86
*);
86 extern void WINAPI
DOSVM_Int29Handler(CONTEXT86
*);
89 extern void WINAPI
DOSVM_Int31Handler(CONTEXT86
*);
92 extern void WINAPI
DOSVM_Int33Handler(CONTEXT86
*);
93 extern void WINAPI
DOSVM_Int33Message(UINT
,WPARAM
,LPARAM
);
96 extern void WINAPI
XMS_Handler(CONTEXT86
*);
98 #endif /* __WINE_DOSEXE_H */