blob: 6cd4050d10e9b314b3bb3b3d64cd1cda71249411 [file] [log] [blame]
Alexandre Julliardb7258be1995-09-01 15:57:28 +00001/*
2 * Misc. emulation definitions
3 *
4 * Copyright 1995 Alexandre Julliard
5 */
6
Alexandre Julliard234bc241994-12-10 13:02:28 +00007#ifndef __WINE_MISCEMU_H
8#define __WINE_MISCEMU_H
9
Alexandre Julliardca22b331996-07-12 19:02:39 +000010#include <stdio.h>
Alexandre Julliard9ea19e51997-01-01 17:29:55 +000011#include "winnt.h"
Alexandre Julliarda2f2e011995-06-06 16:40:35 +000012
Alexandre Julliard641ee761997-08-04 16:34:36 +000013 /* msdos/dosmem.c */
Alexandre Julliard9ea19e51997-01-01 17:29:55 +000014extern HANDLE16 DOSMEM_BiosSeg;
Alexandre Julliardac9c9b01996-07-28 18:50:11 +000015extern DWORD DOSMEM_CollateTable;
Alexandre Julliardb7258be1995-09-01 15:57:28 +000016
Alexandre Julliarda0d77311998-09-13 16:32:00 +000017extern DWORD DOSMEM_ErrorCall;
18extern DWORD DOSMEM_ErrorBuffer;
19
Alexandre Julliard767e6f61998-08-09 12:47:43 +000020extern BOOL32 DOSMEM_Init(HMODULE16 hModule);
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +000021extern void DOSMEM_Tick(void);
22extern WORD DOSMEM_AllocSelector(WORD);
Alexandre Julliard85ed45e1998-08-22 19:03:56 +000023extern char * DOSMEM_MemoryBase(HMODULE16 hModule);
Alexandre Julliard767e6f61998-08-09 12:47:43 +000024extern LPVOID DOSMEM_GetBlock(HMODULE16 hModule, UINT32 size, UINT16* p);
25extern BOOL32 DOSMEM_FreeBlock(HMODULE16 hModule, void* ptr);
26extern LPVOID DOSMEM_ResizeBlock(HMODULE16 hModule, void* ptr, UINT32 size, UINT16* p);
27extern UINT32 DOSMEM_Available(HMODULE16 hModule);
Alexandre Julliardf0cbfa01997-02-15 14:29:56 +000028extern LPVOID DOSMEM_MapRealToLinear(DWORD); /* real-mode to linear */
29extern LPVOID DOSMEM_MapDosToLinear(UINT32); /* linear DOS to Wine */
30extern UINT32 DOSMEM_MapLinearToDos(LPVOID); /* linear Wine to DOS */
31
Alexandre Julliard9ea19e51997-01-01 17:29:55 +000032/* msdos/interrupts.c */
Alexandre Julliardd30dfd21998-09-27 18:28:36 +000033extern FARPROC16 INT_GetPMHandler( BYTE intnum );
34extern void INT_SetPMHandler( BYTE intnum, FARPROC16 handler );
35extern FARPROC16 INT_GetRMHandler( BYTE intnum );
36extern void INT_SetRMHandler( BYTE intnum, FARPROC16 handler );
37extern FARPROC16 INT_CtxGetHandler( CONTEXT *context, BYTE intnum );
38extern void INT_CtxSetHandler( CONTEXT *context, BYTE intnum, FARPROC16 handler );
Alexandre Julliarda0d77311998-09-13 16:32:00 +000039extern int INT_RealModeInterrupt( BYTE intnum, PCONTEXT context );
Alexandre Julliarda2f2e011995-06-06 16:40:35 +000040
Alexandre Julliard9ea19e51997-01-01 17:29:55 +000041/* msdos/ioports.c */
Alexandre Julliard23946ad1997-06-16 17:43:53 +000042extern void IO_port_init (void);
Alexandre Julliard9ea19e51997-01-01 17:29:55 +000043extern DWORD IO_inport( int port, int count );
44extern void IO_outport( int port, int count, DWORD value );
45
Alexandre Julliardd30dfd21998-09-27 18:28:36 +000046/* msdos/int10.c */
47extern void WINAPI INT_Int10Handler(CONTEXT*);
48
Joseph Pranevich20a2c1e1998-10-17 11:56:44 +000049/* msdos/int11.c */
50extern void WINAPI INT_Int11Handler(CONTEXT*);
51
Joseph Pranevich912049d1998-10-24 10:40:36 +000052/* msdos/int13.c */
53extern void WINAPI INT_Int13Handler(CONTEXT*);
54
Joseph Pranevich20a2c1e1998-10-17 11:56:44 +000055/* msdos/int16.c */
56extern void WINAPI INT_Int16Handler(CONTEXT*);
Joseph Pranevich912049d1998-10-24 10:40:36 +000057
58/* msdos/int17.c */
59extern void WINAPI INT_Int17Handler(CONTEXT*);
60
61/* msdos/int19.c */
62extern void WINAPI INT_Int19Handler(CONTEXT*);
63
Alexandre Julliard9ea19e51997-01-01 17:29:55 +000064/* msdos/int1a.c */
Alexandre Julliardb7258be1995-09-01 15:57:28 +000065extern DWORD INT1A_GetTicksSinceMidnight(void);
Alexandre Julliard85ed45e1998-08-22 19:03:56 +000066extern void WINAPI INT_Int1aHandler(CONTEXT*);
67
Alexandre Julliarda0d77311998-09-13 16:32:00 +000068/* msdos/int20.c */
69extern void WINAPI INT_Int20Handler(CONTEXT*);
70
Alexandre Julliardd30dfd21998-09-27 18:28:36 +000071/* msdos/int25.c */
72extern void WINAPI INT_Int25Handler(CONTEXT*);
73
Joseph Pranevich20a2c1e1998-10-17 11:56:44 +000074/* msdos/int29.c */
75extern void WINAPI INT_Int29Handler(CONTEXT*);
76
77/* msdos/int25.c */
78extern void WINAPI INT_Int25Handler(CONTEXT*);
79
Alexandre Julliard85ed45e1998-08-22 19:03:56 +000080/* msdos/int2f.c */
81extern void WINAPI INT_Int2fHandler(CONTEXT*);
Alexandre Julliardb7258be1995-09-01 15:57:28 +000082
Ove Kaaven7dc3c601998-10-11 12:15:18 +000083/* msdos/dpmi.c */
Alexandre Julliardd30dfd21998-09-27 18:28:36 +000084extern void WINAPI INT_Int31Handler(CONTEXT*);
85
Ove Kaaven7dc3c601998-10-11 12:15:18 +000086/* msdos/xms.c */
87extern void WINAPI XMS_Handler(CONTEXT*);
88
Alexandre Julliard641ee761997-08-04 16:34:36 +000089/* loader/signal.c */
90extern BOOL32 SIGNAL_Init(void);
91extern void SIGNAL_SetHandler( int sig, void (*func)(), int flags );
92extern void SIGNAL_MaskAsyncEvents( BOOL32 flag );
93
94/* if1632/signal.c */
95extern BOOL32 SIGNAL_InitEmulator(void);
96
Alexandre Julliardf90efa91998-06-14 15:24:15 +000097/* misc/aspi.c */
98extern void ASPI_DOS_HandleInt(CONTEXT *context);
99
Alexandre Julliard767e6f61998-08-09 12:47:43 +0000100#define CTX_SEG_OFF_TO_LIN(context,seg,off) \
101 (ISV86(context) ? (void*)(V86BASE(context)+((seg)<<4)+off) \
102 : PTR_SEG_OFF_TO_LIN(seg,off))
103
Alexandre Julliard808cb041995-08-17 17:11:36 +0000104#define INT_BARF(context,num) \
Alexandre Julliarde2991ea1995-07-29 13:09:43 +0000105 fprintf( stderr, "int%x: unknown/not implemented parameters:\n" \
106 "int%x: AX %04x, BX %04x, CX %04x, DX %04x, " \
107 "SI %04x, DI %04x, DS %04x, ES %04x\n", \
Alexandre Julliard808cb041995-08-17 17:11:36 +0000108 (num), (num), AX_reg(context), BX_reg(context), CX_reg(context), \
109 DX_reg(context), SI_reg(context), DI_reg(context), \
Alexandre Julliard9ea19e51997-01-01 17:29:55 +0000110 (WORD)DS_reg(context), (WORD)ES_reg(context) )
Alexandre Julliarde2991ea1995-07-29 13:09:43 +0000111
Alexandre Julliard234bc241994-12-10 13:02:28 +0000112#endif /* __WINE_MISCEMU_H */