Delay loading of interrupt table functions until they are needed.
This commit is contained in:
parent
de304909cd
commit
4324b4778b
|
@ -7,263 +7,24 @@ type win16
|
|||
|
||||
# Interrupt vectors 0-255 are ordinals 100-355
|
||||
# The 'interrupt' keyword takes care of the flags pushed on the stack by the interrupt
|
||||
100 interrupt INT_Int00Handler() BUILTIN_DefaultIntHandler
|
||||
101 interrupt INT_Int01Handler() BUILTIN_DefaultIntHandler
|
||||
102 interrupt INT_Int02Handler() BUILTIN_DefaultIntHandler
|
||||
103 interrupt INT_Int03Handler() BUILTIN_DefaultIntHandler
|
||||
104 interrupt INT_Int04Handler() BUILTIN_DefaultIntHandler
|
||||
105 interrupt INT_Int05Handler() BUILTIN_DefaultIntHandler
|
||||
106 interrupt INT_Int06Handler() BUILTIN_DefaultIntHandler
|
||||
107 interrupt INT_Int07Handler() BUILTIN_DefaultIntHandler
|
||||
108 interrupt INT_Int08Handler() BUILTIN_DefaultIntHandler
|
||||
109 interrupt INT_Int09Handler() BUILTIN_DefaultIntHandler
|
||||
110 interrupt INT_Int0aHandler() BUILTIN_DefaultIntHandler
|
||||
111 interrupt INT_Int0bHandler() BUILTIN_DefaultIntHandler
|
||||
112 interrupt INT_Int0cHandler() BUILTIN_DefaultIntHandler
|
||||
113 interrupt INT_Int0dHandler() BUILTIN_DefaultIntHandler
|
||||
114 interrupt INT_Int0eHandler() BUILTIN_DefaultIntHandler
|
||||
115 interrupt INT_Int0fHandler() BUILTIN_DefaultIntHandler
|
||||
116 interrupt INT_Int10Handler() INT_Int10Handler
|
||||
117 interrupt INT_Int11Handler() INT_Int11Handler
|
||||
118 interrupt INT_Int12Handler() INT_Int12Handler
|
||||
119 interrupt INT_Int13Handler() INT_Int13Handler
|
||||
120 interrupt INT_Int14Handler() BUILTIN_DefaultIntHandler
|
||||
121 interrupt INT_Int15Handler() INT_Int15Handler
|
||||
122 interrupt INT_Int16Handler() BUILTIN_DefaultIntHandler
|
||||
123 interrupt INT_Int17Handler() BUILTIN_DefaultIntHandler
|
||||
124 interrupt INT_Int18Handler() BUILTIN_DefaultIntHandler
|
||||
125 interrupt INT_Int19Handler() BUILTIN_DefaultIntHandler
|
||||
126 interrupt INT_Int1aHandler() INT_Int1aHandler
|
||||
127 interrupt INT_Int1bHandler() BUILTIN_DefaultIntHandler
|
||||
128 interrupt INT_Int1cHandler() BUILTIN_DefaultIntHandler
|
||||
129 interrupt INT_Int1dHandler() BUILTIN_DefaultIntHandler
|
||||
130 interrupt INT_Int1eHandler() BUILTIN_DefaultIntHandler
|
||||
131 interrupt INT_Int1fHandler() BUILTIN_DefaultIntHandler
|
||||
132 interrupt INT_Int20Handler() INT_Int20Handler
|
||||
133 interrupt INT_Int21Handler() DOS3Call
|
||||
134 interrupt INT_Int22Handler() BUILTIN_DefaultIntHandler
|
||||
135 interrupt INT_Int23Handler() BUILTIN_DefaultIntHandler
|
||||
136 interrupt INT_Int24Handler() BUILTIN_DefaultIntHandler
|
||||
# Note: int 25 and 26 don't pop the flags from the stack
|
||||
137 register INT_Int25Handler() INT_Int25Handler
|
||||
138 register INT_Int26Handler() INT_Int26Handler
|
||||
139 interrupt INT_Int27Handler() BUILTIN_DefaultIntHandler
|
||||
140 interrupt INT_Int28Handler() BUILTIN_DefaultIntHandler
|
||||
141 interrupt INT_Int29Handler() BUILTIN_DefaultIntHandler
|
||||
142 interrupt INT_Int2aHandler() INT_Int2aHandler
|
||||
143 interrupt INT_Int2bHandler() BUILTIN_DefaultIntHandler
|
||||
144 interrupt INT_Int2cHandler() BUILTIN_DefaultIntHandler
|
||||
145 interrupt INT_Int2dHandler() BUILTIN_DefaultIntHandler
|
||||
146 interrupt INT_Int2eHandler() BUILTIN_DefaultIntHandler
|
||||
147 interrupt INT_Int2fHandler() INT_Int2fHandler
|
||||
148 interrupt INT_Int30Handler() BUILTIN_DefaultIntHandler
|
||||
149 interrupt INT_Int31Handler() INT_Int31Handler
|
||||
150 interrupt INT_Int32Handler() BUILTIN_DefaultIntHandler
|
||||
151 interrupt INT_Int33Handler() BUILTIN_DefaultIntHandler
|
||||
152 interrupt INT_Int34Handler() BUILTIN_DefaultIntHandler
|
||||
153 interrupt INT_Int35Handler() BUILTIN_DefaultIntHandler
|
||||
154 interrupt INT_Int36Handler() BUILTIN_DefaultIntHandler
|
||||
155 interrupt INT_Int37Handler() BUILTIN_DefaultIntHandler
|
||||
156 interrupt INT_Int38Handler() BUILTIN_DefaultIntHandler
|
||||
157 interrupt INT_Int39Handler() BUILTIN_DefaultIntHandler
|
||||
158 interrupt INT_Int3aHandler() BUILTIN_DefaultIntHandler
|
||||
159 interrupt INT_Int3bHandler() BUILTIN_DefaultIntHandler
|
||||
160 interrupt INT_Int3cHandler() BUILTIN_DefaultIntHandler
|
||||
161 interrupt INT_Int3dHandler() INT_Int3dHandler
|
||||
162 interrupt INT_Int3eHandler() BUILTIN_DefaultIntHandler
|
||||
163 interrupt INT_Int3fHandler() BUILTIN_DefaultIntHandler
|
||||
164 interrupt INT_Int40Handler() BUILTIN_DefaultIntHandler
|
||||
165 interrupt INT_Int41Handler() INT_Int41Handler
|
||||
166 interrupt INT_Int42Handler() BUILTIN_DefaultIntHandler
|
||||
167 interrupt INT_Int43Handler() BUILTIN_DefaultIntHandler
|
||||
168 interrupt INT_Int44Handler() BUILTIN_DefaultIntHandler
|
||||
169 interrupt INT_Int45Handler() BUILTIN_DefaultIntHandler
|
||||
170 interrupt INT_Int46Handler() BUILTIN_DefaultIntHandler
|
||||
171 interrupt INT_Int47Handler() BUILTIN_DefaultIntHandler
|
||||
172 interrupt INT_Int48Handler() BUILTIN_DefaultIntHandler
|
||||
173 interrupt INT_Int49Handler() BUILTIN_DefaultIntHandler
|
||||
174 interrupt INT_Int4aHandler() BUILTIN_DefaultIntHandler
|
||||
175 interrupt INT_Int4bHandler() INT_Int4bHandler
|
||||
176 interrupt INT_Int4cHandler() BUILTIN_DefaultIntHandler
|
||||
177 interrupt INT_Int4dHandler() BUILTIN_DefaultIntHandler
|
||||
178 interrupt INT_Int4eHandler() BUILTIN_DefaultIntHandler
|
||||
179 interrupt INT_Int4fHandler() BUILTIN_DefaultIntHandler
|
||||
180 interrupt INT_Int50Handler() BUILTIN_DefaultIntHandler
|
||||
181 interrupt INT_Int51Handler() BUILTIN_DefaultIntHandler
|
||||
182 interrupt INT_Int52Handler() BUILTIN_DefaultIntHandler
|
||||
183 interrupt INT_Int53Handler() BUILTIN_DefaultIntHandler
|
||||
184 interrupt INT_Int54Handler() BUILTIN_DefaultIntHandler
|
||||
185 interrupt INT_Int55Handler() BUILTIN_DefaultIntHandler
|
||||
186 interrupt INT_Int56Handler() BUILTIN_DefaultIntHandler
|
||||
187 interrupt INT_Int57Handler() BUILTIN_DefaultIntHandler
|
||||
188 interrupt INT_Int58Handler() BUILTIN_DefaultIntHandler
|
||||
189 interrupt INT_Int59Handler() BUILTIN_DefaultIntHandler
|
||||
190 interrupt INT_Int5aHandler() BUILTIN_DefaultIntHandler
|
||||
191 interrupt INT_Int5bHandler() BUILTIN_DefaultIntHandler
|
||||
192 interrupt INT_Int5cHandler() NetBIOSCall16
|
||||
193 interrupt INT_Int5dHandler() BUILTIN_DefaultIntHandler
|
||||
194 interrupt INT_Int5eHandler() BUILTIN_DefaultIntHandler
|
||||
195 interrupt INT_Int5fHandler() BUILTIN_DefaultIntHandler
|
||||
196 interrupt INT_Int60Handler() BUILTIN_DefaultIntHandler
|
||||
197 interrupt INT_Int61Handler() BUILTIN_DefaultIntHandler
|
||||
198 interrupt INT_Int62Handler() BUILTIN_DefaultIntHandler
|
||||
199 interrupt INT_Int63Handler() BUILTIN_DefaultIntHandler
|
||||
200 interrupt INT_Int64Handler() BUILTIN_DefaultIntHandler
|
||||
201 interrupt INT_Int65Handler() BUILTIN_DefaultIntHandler
|
||||
202 interrupt INT_Int66Handler() BUILTIN_DefaultIntHandler
|
||||
203 interrupt INT_Int67Handler() BUILTIN_DefaultIntHandler
|
||||
204 interrupt INT_Int68Handler() BUILTIN_DefaultIntHandler
|
||||
205 interrupt INT_Int69Handler() BUILTIN_DefaultIntHandler
|
||||
206 interrupt INT_Int6aHandler() BUILTIN_DefaultIntHandler
|
||||
207 interrupt INT_Int6bHandler() BUILTIN_DefaultIntHandler
|
||||
208 interrupt INT_Int6cHandler() BUILTIN_DefaultIntHandler
|
||||
209 interrupt INT_Int6dHandler() BUILTIN_DefaultIntHandler
|
||||
210 interrupt INT_Int6eHandler() BUILTIN_DefaultIntHandler
|
||||
211 interrupt INT_Int6fHandler() BUILTIN_DefaultIntHandler
|
||||
212 interrupt INT_Int70Handler() BUILTIN_DefaultIntHandler
|
||||
213 interrupt INT_Int71Handler() BUILTIN_DefaultIntHandler
|
||||
214 interrupt INT_Int72Handler() BUILTIN_DefaultIntHandler
|
||||
215 interrupt INT_Int73Handler() BUILTIN_DefaultIntHandler
|
||||
216 interrupt INT_Int74Handler() BUILTIN_DefaultIntHandler
|
||||
217 interrupt INT_Int75Handler() BUILTIN_DefaultIntHandler
|
||||
218 interrupt INT_Int76Handler() BUILTIN_DefaultIntHandler
|
||||
219 interrupt INT_Int77Handler() BUILTIN_DefaultIntHandler
|
||||
220 interrupt INT_Int78Handler() BUILTIN_DefaultIntHandler
|
||||
221 interrupt INT_Int79Handler() BUILTIN_DefaultIntHandler
|
||||
222 interrupt INT_Int7aHandler() BUILTIN_DefaultIntHandler
|
||||
223 interrupt INT_Int7bHandler() BUILTIN_DefaultIntHandler
|
||||
224 interrupt INT_Int7cHandler() BUILTIN_DefaultIntHandler
|
||||
225 interrupt INT_Int7dHandler() BUILTIN_DefaultIntHandler
|
||||
226 interrupt INT_Int7eHandler() BUILTIN_DefaultIntHandler
|
||||
227 interrupt INT_Int7fHandler() BUILTIN_DefaultIntHandler
|
||||
228 interrupt INT_Int80Handler() BUILTIN_DefaultIntHandler
|
||||
229 interrupt INT_Int81Handler() BUILTIN_DefaultIntHandler
|
||||
230 interrupt INT_Int82Handler() BUILTIN_DefaultIntHandler
|
||||
231 interrupt INT_Int83Handler() BUILTIN_DefaultIntHandler
|
||||
232 interrupt INT_Int84Handler() BUILTIN_DefaultIntHandler
|
||||
233 interrupt INT_Int85Handler() BUILTIN_DefaultIntHandler
|
||||
234 interrupt INT_Int86Handler() BUILTIN_DefaultIntHandler
|
||||
235 interrupt INT_Int87Handler() BUILTIN_DefaultIntHandler
|
||||
236 interrupt INT_Int88Handler() BUILTIN_DefaultIntHandler
|
||||
237 interrupt INT_Int89Handler() BUILTIN_DefaultIntHandler
|
||||
238 interrupt INT_Int8aHandler() BUILTIN_DefaultIntHandler
|
||||
239 interrupt INT_Int8bHandler() BUILTIN_DefaultIntHandler
|
||||
240 interrupt INT_Int8cHandler() BUILTIN_DefaultIntHandler
|
||||
241 interrupt INT_Int8dHandler() BUILTIN_DefaultIntHandler
|
||||
242 interrupt INT_Int8eHandler() BUILTIN_DefaultIntHandler
|
||||
243 interrupt INT_Int8fHandler() BUILTIN_DefaultIntHandler
|
||||
244 interrupt INT_Int90Handler() BUILTIN_DefaultIntHandler
|
||||
245 interrupt INT_Int91Handler() BUILTIN_DefaultIntHandler
|
||||
246 interrupt INT_Int92Handler() BUILTIN_DefaultIntHandler
|
||||
247 interrupt INT_Int93Handler() BUILTIN_DefaultIntHandler
|
||||
248 interrupt INT_Int94Handler() BUILTIN_DefaultIntHandler
|
||||
249 interrupt INT_Int95Handler() BUILTIN_DefaultIntHandler
|
||||
250 interrupt INT_Int96Handler() BUILTIN_DefaultIntHandler
|
||||
251 interrupt INT_Int97Handler() BUILTIN_DefaultIntHandler
|
||||
252 interrupt INT_Int98Handler() BUILTIN_DefaultIntHandler
|
||||
253 interrupt INT_Int99Handler() BUILTIN_DefaultIntHandler
|
||||
254 interrupt INT_Int9aHandler() BUILTIN_DefaultIntHandler
|
||||
255 interrupt INT_Int9bHandler() BUILTIN_DefaultIntHandler
|
||||
256 interrupt INT_Int9cHandler() BUILTIN_DefaultIntHandler
|
||||
257 interrupt INT_Int9dHandler() BUILTIN_DefaultIntHandler
|
||||
258 interrupt INT_Int9eHandler() BUILTIN_DefaultIntHandler
|
||||
259 interrupt INT_Int9fHandler() BUILTIN_DefaultIntHandler
|
||||
260 interrupt INT_Inta0Handler() BUILTIN_DefaultIntHandler
|
||||
261 interrupt INT_Inta1Handler() BUILTIN_DefaultIntHandler
|
||||
262 interrupt INT_Inta2Handler() BUILTIN_DefaultIntHandler
|
||||
263 interrupt INT_Inta3Handler() BUILTIN_DefaultIntHandler
|
||||
264 interrupt INT_Inta4Handler() BUILTIN_DefaultIntHandler
|
||||
265 interrupt INT_Inta5Handler() BUILTIN_DefaultIntHandler
|
||||
266 interrupt INT_Inta6Handler() BUILTIN_DefaultIntHandler
|
||||
267 interrupt INT_Inta7Handler() BUILTIN_DefaultIntHandler
|
||||
268 interrupt INT_Inta8Handler() BUILTIN_DefaultIntHandler
|
||||
269 interrupt INT_Inta9Handler() BUILTIN_DefaultIntHandler
|
||||
270 interrupt INT_IntaaHandler() BUILTIN_DefaultIntHandler
|
||||
271 interrupt INT_IntabHandler() BUILTIN_DefaultIntHandler
|
||||
272 interrupt INT_IntacHandler() BUILTIN_DefaultIntHandler
|
||||
273 interrupt INT_IntadHandler() BUILTIN_DefaultIntHandler
|
||||
274 interrupt INT_IntaeHandler() BUILTIN_DefaultIntHandler
|
||||
275 interrupt INT_IntafHandler() BUILTIN_DefaultIntHandler
|
||||
276 interrupt INT_Intb0Handler() BUILTIN_DefaultIntHandler
|
||||
277 interrupt INT_Intb1Handler() BUILTIN_DefaultIntHandler
|
||||
278 interrupt INT_Intb2Handler() BUILTIN_DefaultIntHandler
|
||||
279 interrupt INT_Intb3Handler() BUILTIN_DefaultIntHandler
|
||||
280 interrupt INT_Intb4Handler() BUILTIN_DefaultIntHandler
|
||||
281 interrupt INT_Intb5Handler() BUILTIN_DefaultIntHandler
|
||||
282 interrupt INT_Intb6Handler() BUILTIN_DefaultIntHandler
|
||||
283 interrupt INT_Intb7Handler() BUILTIN_DefaultIntHandler
|
||||
284 interrupt INT_Intb8Handler() BUILTIN_DefaultIntHandler
|
||||
285 interrupt INT_Intb9Handler() BUILTIN_DefaultIntHandler
|
||||
286 interrupt INT_IntbaHandler() BUILTIN_DefaultIntHandler
|
||||
287 interrupt INT_IntbbHandler() BUILTIN_DefaultIntHandler
|
||||
288 interrupt INT_IntbcHandler() BUILTIN_DefaultIntHandler
|
||||
289 interrupt INT_IntbdHandler() BUILTIN_DefaultIntHandler
|
||||
290 interrupt INT_IntbeHandler() BUILTIN_DefaultIntHandler
|
||||
291 interrupt INT_IntbfHandler() BUILTIN_DefaultIntHandler
|
||||
292 interrupt INT_Intc0Handler() BUILTIN_DefaultIntHandler
|
||||
293 interrupt INT_Intc1Handler() BUILTIN_DefaultIntHandler
|
||||
294 interrupt INT_Intc2Handler() BUILTIN_DefaultIntHandler
|
||||
295 interrupt INT_Intc3Handler() BUILTIN_DefaultIntHandler
|
||||
296 interrupt INT_Intc4Handler() BUILTIN_DefaultIntHandler
|
||||
297 interrupt INT_Intc5Handler() BUILTIN_DefaultIntHandler
|
||||
298 interrupt INT_Intc6Handler() BUILTIN_DefaultIntHandler
|
||||
299 interrupt INT_Intc7Handler() BUILTIN_DefaultIntHandler
|
||||
300 interrupt INT_Intc8Handler() BUILTIN_DefaultIntHandler
|
||||
301 interrupt INT_Intc9Handler() BUILTIN_DefaultIntHandler
|
||||
302 interrupt INT_IntcaHandler() BUILTIN_DefaultIntHandler
|
||||
303 interrupt INT_IntcbHandler() BUILTIN_DefaultIntHandler
|
||||
304 interrupt INT_IntccHandler() BUILTIN_DefaultIntHandler
|
||||
305 interrupt INT_IntcdHandler() BUILTIN_DefaultIntHandler
|
||||
306 interrupt INT_IntceHandler() BUILTIN_DefaultIntHandler
|
||||
307 interrupt INT_IntcfHandler() BUILTIN_DefaultIntHandler
|
||||
308 interrupt INT_Intd0Handler() BUILTIN_DefaultIntHandler
|
||||
309 interrupt INT_Intd1Handler() BUILTIN_DefaultIntHandler
|
||||
310 interrupt INT_Intd2Handler() BUILTIN_DefaultIntHandler
|
||||
311 interrupt INT_Intd3Handler() BUILTIN_DefaultIntHandler
|
||||
312 interrupt INT_Intd4Handler() BUILTIN_DefaultIntHandler
|
||||
313 interrupt INT_Intd5Handler() BUILTIN_DefaultIntHandler
|
||||
314 interrupt INT_Intd6Handler() BUILTIN_DefaultIntHandler
|
||||
315 interrupt INT_Intd7Handler() BUILTIN_DefaultIntHandler
|
||||
316 interrupt INT_Intd8Handler() BUILTIN_DefaultIntHandler
|
||||
317 interrupt INT_Intd9Handler() BUILTIN_DefaultIntHandler
|
||||
318 interrupt INT_IntdaHandler() BUILTIN_DefaultIntHandler
|
||||
319 interrupt INT_IntdbHandler() BUILTIN_DefaultIntHandler
|
||||
320 interrupt INT_IntdcHandler() BUILTIN_DefaultIntHandler
|
||||
321 interrupt INT_IntddHandler() BUILTIN_DefaultIntHandler
|
||||
322 interrupt INT_IntdeHandler() BUILTIN_DefaultIntHandler
|
||||
323 interrupt INT_IntdfHandler() BUILTIN_DefaultIntHandler
|
||||
324 interrupt INT_Inte0Handler() BUILTIN_DefaultIntHandler
|
||||
325 interrupt INT_Inte1Handler() BUILTIN_DefaultIntHandler
|
||||
326 interrupt INT_Inte2Handler() BUILTIN_DefaultIntHandler
|
||||
327 interrupt INT_Inte3Handler() BUILTIN_DefaultIntHandler
|
||||
328 interrupt INT_Inte4Handler() BUILTIN_DefaultIntHandler
|
||||
329 interrupt INT_Inte5Handler() BUILTIN_DefaultIntHandler
|
||||
330 interrupt INT_Inte6Handler() BUILTIN_DefaultIntHandler
|
||||
331 interrupt INT_Inte7Handler() BUILTIN_DefaultIntHandler
|
||||
332 interrupt INT_Inte8Handler() BUILTIN_DefaultIntHandler
|
||||
333 interrupt INT_Inte9Handler() BUILTIN_DefaultIntHandler
|
||||
334 interrupt INT_InteaHandler() BUILTIN_DefaultIntHandler
|
||||
335 interrupt INT_IntebHandler() BUILTIN_DefaultIntHandler
|
||||
336 interrupt INT_IntecHandler() BUILTIN_DefaultIntHandler
|
||||
337 interrupt INT_IntedHandler() BUILTIN_DefaultIntHandler
|
||||
338 interrupt INT_InteeHandler() BUILTIN_DefaultIntHandler
|
||||
339 interrupt INT_IntefHandler() BUILTIN_DefaultIntHandler
|
||||
340 interrupt INT_Intf0Handler() BUILTIN_DefaultIntHandler
|
||||
341 interrupt INT_Intf1Handler() BUILTIN_DefaultIntHandler
|
||||
342 interrupt INT_Intf2Handler() BUILTIN_DefaultIntHandler
|
||||
343 interrupt INT_Intf3Handler() BUILTIN_DefaultIntHandler
|
||||
344 interrupt INT_Intf4Handler() BUILTIN_DefaultIntHandler
|
||||
345 interrupt INT_Intf5Handler() BUILTIN_DefaultIntHandler
|
||||
346 interrupt INT_Intf6Handler() BUILTIN_DefaultIntHandler
|
||||
347 interrupt INT_Intf7Handler() BUILTIN_DefaultIntHandler
|
||||
348 interrupt INT_Intf8Handler() BUILTIN_DefaultIntHandler
|
||||
349 interrupt INT_Intf9Handler() BUILTIN_DefaultIntHandler
|
||||
350 interrupt INT_IntfaHandler() BUILTIN_DefaultIntHandler
|
||||
351 interrupt INT_IntfbHandler() BUILTIN_DefaultIntHandler
|
||||
352 interrupt INT_IntfcHandler() BUILTIN_DefaultIntHandler
|
||||
353 interrupt INT_IntfdHandler() BUILTIN_DefaultIntHandler
|
||||
354 interrupt INT_IntfeHandler() BUILTIN_DefaultIntHandler
|
||||
355 interrupt INT_IntffHandler() BUILTIN_DefaultIntHandler
|
||||
|
||||
# VxDs. The first Vxd is at 400
|
||||
#
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
#include "heap.h"
|
||||
#include "module.h"
|
||||
#include "miscemu.h"
|
||||
#include "neexe.h"
|
||||
#include "stackframe.h"
|
||||
#include "user.h"
|
||||
#include "process.h"
|
||||
|
@ -42,21 +41,11 @@ typedef struct
|
|||
static const BUILTIN16_DESCRIPTOR *builtin_dlls[MAX_DLLS];
|
||||
static int nb_dlls;
|
||||
|
||||
/* list of DLLs that should always be loaded at startup */
|
||||
static const char * const always_load[] =
|
||||
{
|
||||
"system", "display", "wprocs", NULL
|
||||
};
|
||||
|
||||
/* Ordinal number for interrupt 0 handler in WPROCS.DLL */
|
||||
#define FIRST_INTERRUPT_ORDINAL 100
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* BUILTIN_DoLoadModule16
|
||||
*
|
||||
* Load a built-in Win16 module. Helper function for BUILTIN_LoadModule
|
||||
* and BUILTIN_Init.
|
||||
* Load a built-in Win16 module. Helper function for BUILTIN_LoadModule.
|
||||
*/
|
||||
static HMODULE16 BUILTIN_DoLoadModule16( const BUILTIN16_DESCRIPTOR *descr )
|
||||
{
|
||||
|
@ -143,38 +132,6 @@ static HMODULE16 BUILTIN_DoLoadModule16( const BUILTIN16_DESCRIPTOR *descr )
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* BUILTIN_Init
|
||||
*
|
||||
* Load all built-in modules marked as 'always used'.
|
||||
*/
|
||||
BOOL BUILTIN_Init(void)
|
||||
{
|
||||
WORD vector;
|
||||
HMODULE16 hModule;
|
||||
const char * const *ptr = always_load;
|
||||
|
||||
while (*ptr)
|
||||
{
|
||||
if (!BUILTIN_LoadModule( *ptr )) return FALSE;
|
||||
ptr++;
|
||||
}
|
||||
|
||||
/* Set interrupt vectors from entry points in WPROCS.DLL */
|
||||
|
||||
hModule = GetModuleHandle16( "WPROCS" );
|
||||
for (vector = 0; vector < 256; vector++)
|
||||
{
|
||||
FARPROC16 proc = NE_GetEntryPoint( hModule,
|
||||
FIRST_INTERRUPT_ORDINAL + vector );
|
||||
assert(proc);
|
||||
INT_SetPMHandler( vector, proc );
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* BUILTIN_LoadModule
|
||||
*
|
||||
|
@ -288,17 +245,3 @@ void BUILTIN_RegisterDLL( const BUILTIN16_DESCRIPTOR *descr )
|
|||
assert( nb_dlls < MAX_DLLS );
|
||||
builtin_dlls[nb_dlls++] = descr;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* BUILTIN_DefaultIntHandler
|
||||
*
|
||||
* Default interrupt handler.
|
||||
*/
|
||||
void WINAPI BUILTIN_DefaultIntHandler( CONTEXT86 *context )
|
||||
{
|
||||
WORD ordinal;
|
||||
char name[80];
|
||||
BUILTIN_GetEntryPoint16( CURRENT_STACK16, name, &ordinal );
|
||||
INT_BARF( context, ordinal - FIRST_INTERRUPT_ORDINAL );
|
||||
}
|
||||
|
|
|
@ -81,7 +81,6 @@ typedef struct
|
|||
const void *rsrc; /* resources data */
|
||||
} BUILTIN16_DESCRIPTOR;
|
||||
|
||||
extern BOOL BUILTIN_Init(void);
|
||||
extern HMODULE16 BUILTIN_LoadModule( LPCSTR name );
|
||||
extern LPCSTR BUILTIN_GetEntryPoint16( struct _STACK16FRAME *frame, LPSTR name, WORD *pOrd );
|
||||
extern void BUILTIN_RegisterDLL( const BUILTIN16_DESCRIPTOR *descr );
|
||||
|
|
|
@ -680,6 +680,12 @@ BOOL INSTR_EmulateInstruction( CONTEXT86 *context )
|
|||
{
|
||||
FARPROC16 addr = INT_GetPMHandler( instr[1] );
|
||||
WORD *stack = (WORD *)STACK_PTR( context );
|
||||
if (!addr)
|
||||
{
|
||||
FIXME("no handler for interrupt %02x, ignoring it\n", instr[1]);
|
||||
EIP_reg(context) += prefixlen + 2;
|
||||
return TRUE;
|
||||
}
|
||||
/* Push the flags and return address on the stack */
|
||||
*(--stack) = LOWORD(EFL_reg(context));
|
||||
*(--stack) = CS_reg(context);
|
||||
|
|
|
@ -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 @@ static FARPROC16 INT_Vectors[256];
|
|||
*/
|
||||
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];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue