Cleaned up CreateSystemTimer interface for use with 32-bit callbacks.
(NOTE: 16-bit callbacks still don't work!)

diff --git a/misc/system.c b/misc/system.c
index b9588fc..b29a62d 100644
--- a/misc/system.c
+++ b/misc/system.c
@@ -12,18 +12,15 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 
-#include "callback.h"
 #include "windows.h"
-#include "miscemu.h"
-#include "dosexe.h"
-#include "vga.h"
 #include "selectors.h"
 #include "sig_context.h"
+#include "miscemu.h"
 #include "debug.h"
 
 typedef struct
 {
-    FARPROC16 callback;  /* NULL if not in use */
+    SYSTEMTIMERPROC callback;  /* NULL if not in use */
     INT32     rate;
     INT32     ticks;
 } SYSTEM_TIMER;
@@ -35,14 +32,9 @@
 static int SYS_NbTimers = 0;
 static BOOL32 SYS_TimersDisabled = FALSE;
 
+
 /***********************************************************************
  *           SYSTEM_TimerTick
- * FIXME: It is a very bad idea to call 16bit code in a signal handler:
- *	  If the signal reached us in 16 bit code, we could have a broken
- *	  %FS, which is in turned saved into the single global
- *	  CALLTO16_Current_fs temporary storage, so a single misplaced
- *	  signal crashes the whole WINE process.
- *	  This needs more thought. -MM
  */
 static HANDLER_DEF(SYSTEM_TimerTick)
 {
@@ -55,17 +47,7 @@
         if ((SYS_Timers[i].ticks -= SYS_TIMER_RATE) <= 0)
         {
             SYS_Timers[i].ticks += SYS_Timers[i].rate;
-
-	    if (SYS_Timers[i].callback == (FARPROC16)DOSMEM_Tick) {
-	    	DOSMEM_Tick();
-	    } else
-	    if (SYS_Timers[i].callback == (FARPROC16)MZ_Tick) {
-	    	MZ_Tick(i+1);
-	    } else
-	    if (SYS_Timers[i].callback == (FARPROC16)VGA_Poll) {
-	    	VGA_Poll();
-	    } else
-		Callbacks->CallSystemTimerProc( SYS_Timers[i].callback );
+            SYS_Timers[i].callback( i+1 );
         }
     }
 }
@@ -146,20 +128,9 @@
 /***********************************************************************
  *           CreateSystemTimer   (SYSTEM.2)
  */
-WORD WINAPI CreateSystemTimer( WORD rate, FARPROC16 callback )
+WORD WINAPI CreateSystemTimer( WORD rate, SYSTEMTIMERPROC callback )
 {
     int i;
-
-    /* FIXME: HACK: do not create system timers due to problems mentioned
-     * above, except DOSMEM_Tick(), MZ_Tick(), and VGA_Poll().
-     */
-    if ((callback!=(FARPROC16)DOSMEM_Tick)&&
-        (callback!=(FARPROC16)MZ_Tick)&&
-        (callback!=(FARPROC16)VGA_Poll)) {
-    	FIXME(system,"are currently broken, returning 0.\n");
-    	return 0;
-    }
-
     for (i = 0; i < NB_SYS_TIMERS; i++)
         if (!SYS_Timers[i].callback)  /* Found one */
         {