Added infrastructure and definitions for general-purpose event and IRQ
handling for the Wine dos box. Removed the obsolete MZ_Tick. Added
event message loop, message handling, CLI/STI handling, and minimal
PIC support.

diff --git a/include/dosexe.h b/include/dosexe.h
index 2b317a0..7d126c7 100644
--- a/include/dosexe.h
+++ b/include/dosexe.h
@@ -9,8 +9,17 @@
 
 #include <sys/types.h> /* pid_t */
 #include "winbase.h"   /* for LPSTARTUPINFO32A */
+#include "winnt.h"     /* for PCONTEXT */
 #include "sig_context.h"
 
+typedef struct _DOSSYSTEM {
+  int id;
+  void *data;
+  struct _DOSSYSTEM *next;
+} DOSSYSTEM;
+
+struct _DOSEVENT;
+
 typedef struct _DOSTASK {
  LPVOID img;
  unsigned img_ofs;
@@ -18,14 +27,30 @@
  WORD init_cs,init_ip,init_ss,init_sp;
  WORD xms_seg;
  WORD dpmi_seg,dpmi_sel,dpmi_flag;
- WORD system_timer;
  HMODULE16 hModule;
  char mm_name[128];
  int mm_fd;
+ HANDLE hReadPipe,hXPipe;
  int read_pipe,write_pipe;
  pid_t task;
+ int sig_sent;
+ struct _DOSEVENT *pending,*current;
+ DOSSYSTEM *sys;
 } DOSTASK, *LPDOSTASK;
 
+typedef struct _DOSEVENT {
+  int irq,priority;
+  void (*relay)(LPDOSTASK,PCONTEXT,void*);
+  void *data;
+  struct _DOSEVENT *next;
+} DOSEVENT, *LPDOSEVENT;
+
+#define DOS_PRIORITY_REALTIME 0  /* IRQ0 */
+#define DOS_PRIORITY_KEYBOARD 1  /* IRQ1 */
+#define DOS_PRIORITY_VGA      2  /* IRQ9 */
+#define DOS_PRIORITY_MOUSE    5  /* IRQ12 */
+#define DOS_PRIORITY_SERIAL   10 /* IRQ4 */
+
 #if defined(linux) && defined(__i386__)
 
 #define MZ_SUPPORTED
@@ -33,19 +58,21 @@
 extern BOOL MZ_InitTask( LPDOSTASK lpDosTask );
 extern void MZ_KillModule( LPDOSTASK lpDosTask );
 extern LPDOSTASK MZ_AllocDPMITask( HMODULE16 hModule );
+extern void DOSVM_QueueEvent( int irq, int priority, void (*relay)(LPDOSTASK,PCONTEXT,void*), void *data );
 
 #endif /* linux-i386 */
 
 #define V86_FLAG 0x00020000
 
-extern void MZ_Tick( WORD handle );
-
 extern BOOL MZ_CreateProcess( HFILE hFile, OFSTRUCT *ofs, LPCSTR cmdline, LPCSTR env, 
                               LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
                               BOOL inherit, LPSTARTUPINFOA startup, 
                               LPPROCESS_INFORMATION info );
 extern int DOSVM_Enter( PCONTEXT context );
+extern void DOSVM_PIC_ioport_out( WORD port, BYTE val );
 extern void DOSVM_SetTimer( unsigned ticks );
 extern unsigned DOSVM_GetTimer( void );
+extern void DOSVM_SetSystemData( int id, void *data );
+extern void* DOSVM_GetSystemData( int id );
 
 #endif /* __WINE_DOSEXE_H */