Delay loading of interrupt table functions until they are needed.
diff --git a/msdos/interrupts.c b/msdos/interrupts.c
index 734bbed..fce08dd 100644
--- a/msdos/interrupts.c
+++ b/msdos/interrupts.c
@@ -6,14 +6,19 @@
#include <sys/types.h>
#include "windef.h"
+#include "wine/winbase16.h"
#include "miscemu.h"
#include "msdos.h"
+#include "module.h"
#include "debugtools.h"
-DEFAULT_DEBUG_CHANNEL(int)
+DEFAULT_DEBUG_CHANNEL(int);
static FARPROC16 INT_Vectors[256];
+/* Ordinal number for interrupt 0 handler in WPROCS.DLL */
+#define FIRST_INTERRUPT 100
+
/**********************************************************************
* INT_GetPMHandler
@@ -22,6 +27,19 @@
*/
FARPROC16 INT_GetPMHandler( BYTE intnum )
{
+ if (!INT_Vectors[intnum])
+ {
+ static HMODULE16 wprocs;
+ if (!wprocs)
+ {
+ if ((wprocs = GetModuleHandle16( "wprocs" )) < 32)
+ {
+ ERR("could not load wprocs.dll\n");
+ return 0;
+ }
+ }
+ INT_Vectors[intnum] = NE_GetEntryPoint( wprocs, FIRST_INTERRUPT + intnum );
+ }
return INT_Vectors[intnum];
}