Release 941210

Wed Dec  7 14:52:25 1994  Alexandre Julliard  (julliard@lamisun.epfl.ch)

	* [controls/listbox.c]
	Fixed problems due to new scroll-bar code.

	* [loader/signal.c] [miscemu/ioports.c]
	Handle I/O opcodes that use an absolute address.

	* [objects/text.c]
	Implemented TabbedTextOut().

Sat Dec  3 18:53:08 1994  Kenneth MacDonald  <K.MacDonald@ed.ac.uk>

	* [objects/metafile.c]
	Implemented GetMetafile().
	Fixed bug in PlayMetaFile() when reading disc based metafile records.
	Added META_POLYPOLYGON, META_DELETEOBJECT and META_EOF to 
	PlayMetaFileRecord().
	
Wed Nov 30 06:32:25 1994  Martin von Loewis  (martin@cs.csufresno.edu)

	* [Imakefile]
	wine.sym: Remove gcc2_compiled and friends

	* [controls/listbox.c][if1632/relay.c][if1632/relay.c]
	  [loader/resource.c][memory/heap.c][objects/dib.c][windows/dialog.c]
	Replace #ifdef DEBUG_XXX with if(debugging_xxx){

	* [if1632/call.S]
	CallToLibMain: New function

	* [if1632/relay.c][include/options.h][misc/main.c]
	  [miscemu/int1a.c][miscemu/int21.c][miscemu/kernel.c]
	removed Options.relay_debug

	* [include/heap.h]
	HEAP_OWNER: Use ds instead of cs:ip

	* [loader/ne_image.c]
	LoadNEImage: Remember current exe, handle nodata dlls
	InitNEDLL: handle nodata dlls, call CallToLibMain

	* [loader/selector.c]
	CreateSelectors: Initialize auto_data_sel with 0

	* [memory/heap.c]
	HEAP_CheckHeap: Check prev
	HEAP_CheckLocalHeaps: new function

	* [misc/profile]
	Remember and dump only changed profiles

	* [tools/makedebug]
	Introduce debugging_xxx flags

Sun Nov 27 23:13:22 MET 1994	<erik@xs4all.nl>

	* [clipboard.h color.h dc.h dos_fs.h event.h font.h graphics.h
	if1632.h kernel.h library.h miscemu.h ne_image.h nonclient.h 
	pe_image.h selectors.h wintypes.h]
	Added.

	* [*/*]
	- Commented all 'static char copyright statements', see misc/main.c
	- moved prototypes to headers files, fixed wrong prototypes.
	- *please* add a header file for each .c if you need to export
	  things.

	* [misc/main.c]
	Added one static string which list the names of the contributors.

Fri Nov 25 16:24:27 MET 1994		  Dag Asheim (dash@ifi.uio.no)

	* [Configure]
	Made the support for multiple languages more automatic.  Added
	a [fonts] section to the wine.conf file.  Made the defaults
	better.  Generally cleaned it up.

	* [rc/sysres_No.rc] [rc/sysres_De.rc] [rc/sysres.c]
	Norwegian resources and small fixes to the german resources.

Wed Nov 23 20:28:59 1994  Martin von Loewis  (martin@cs.csufresno.edu)

	* [debugger/break.c]
	bark(), toggle_next(), should_continue(): New functions
	insert_break(): Fixed, adds write access to page before writing
	wine_bp.next_addr: new structure field

	* [debugger/dbg.y]
	Changed symbol's value to be it's value instead of the value
	pointed to by the symbol.
	Changed SIGTRAP handling to allow continuation after break point

	* [misc/shell.c]
	ShellAbout(): Load resource from memory
diff --git a/include/arch.h b/include/arch.h
index c929a3e..ad1865c 100644
--- a/include/arch.h
+++ b/include/arch.h
@@ -19,6 +19,6 @@
 #define CONV_CHAR_TO_LONG(a) (a)
 #define CONV_SHORT_TO_LONG(a) (a)
 
-#define CONV_BITMAPINFO
-#define CONV_BITMAPCOREHEADER
+#define CONV_BITMAPINFO(a)		/* */
+#define CONV_BITMAPCOREHEADER(a)	/* */
 #endif
diff --git a/include/atom.h b/include/atom.h
index 9182769..0336837 100644
--- a/include/atom.h
+++ b/include/atom.h
@@ -9,6 +9,8 @@
 
 #include "windows.h"
 
+extern BOOL ATOM_Init(void);
+
 typedef struct
 {
     HANDLE      next;
diff --git a/include/bitmap.h b/include/bitmap.h
index 9a2acfa..280946f 100644
--- a/include/bitmap.h
+++ b/include/bitmap.h
@@ -10,6 +10,8 @@
 #include <X11/Xlib.h>
 #include "windows.h"
 
+extern BOOL BITMAP_Init(void);
+
   /* GCs used for B&W and color bitmap operations */
 extern GC BITMAP_monoGC, BITMAP_colorGC;
 
diff --git a/include/callback.h b/include/callback.h
index ba84573..18206c9 100644
--- a/include/callback.h
+++ b/include/callback.h
@@ -16,5 +16,6 @@
 extern int CallTo16(unsigned int csip, unsigned short ds);
 extern int CallBack16(void *func, int n_args, ...);
 
+extern BOOL CallGrayStringProc(FARPROC func, HDC hdc, LPARAM lParam, INT cch);
 
 #endif /* CALLBACK_H */
diff --git a/include/clipboard.h b/include/clipboard.h
new file mode 100644
index 0000000..502e314
--- /dev/null
+++ b/include/clipboard.h
@@ -0,0 +1,7 @@
+#ifndef __WINE_CLIPBOARD_H
+#define __WINE_CLIPBOARD_H
+
+extern void CLIPBOARD_ReadSelection(Window w,Atom prop);
+void CLIPBOARD_ReleaseSelection(HWND hwnd);
+
+#endif /* __WINE_CLIPBOARD_H */
diff --git a/include/color.h b/include/color.h
new file mode 100644
index 0000000..faf9fd7
--- /dev/null
+++ b/include/color.h
@@ -0,0 +1,14 @@
+#ifndef __WINE_COLOR_H
+#define __WINE_COLOR_H
+
+#include "gdi.h"
+
+extern HPALETTE COLOR_Init(void);
+extern int COLOR_ToPhysical( DC *dc, COLORREF color );
+extern void COLOR_SetMapping( DC *dc, HANDLE, WORD );
+extern BOOL COLOR_IsSolid( COLORREF color );
+
+extern Colormap COLOR_WinColormap;
+extern int COLOR_mapEGAPixel[16];
+
+#endif /* __WINE_COLOR_H */
diff --git a/include/comm.h b/include/comm.h
index 785a7b7..af2d3f01 100644
--- a/include/comm.h
+++ b/include/comm.h
@@ -1,13 +1,6 @@
-/*
- * Communications header
- *
- * 93 Erik Bos (erik@trashcan.hacktic.nl)
- */
-
 #ifndef COMM_H
 #define COMM_H
 
-
 #define MAX_PORTS   16
 
 struct DosDeviceStruct {
@@ -19,4 +12,7 @@
     int baudrate;
 };
 
+extern void Comm_Init(void);
+extern void Comm_DeInit(void);
+
 #endif  /* COMM_H */
diff --git a/include/cursor.h b/include/cursor.h
index c70df90..a65f965 100644
--- a/include/cursor.h
+++ b/include/cursor.h
@@ -4,6 +4,8 @@
  * Copyright  Martin Ayotte, 1993
  *
  */
+#ifndef __WINE_CURSOR_H
+#define __WINE_CURSOR_H
 
 typedef struct {
 	BYTE	Width;
@@ -25,3 +27,6 @@
 	Cursor		xcursor;
 	} CURSORALLOC;
 
+extern void CURSOR_SetWinCursor( HWND hwnd, HCURSOR hcursor );   /* cursor.c */
+
+#endif /* __WINE_CURSOR_H */
diff --git a/include/dc.h b/include/dc.h
new file mode 100644
index 0000000..5723fa8
--- /dev/null
+++ b/include/dc.h
@@ -0,0 +1,13 @@
+#ifndef __WINE_DC_H
+#define __WINE_DC_H
+
+#include "gdi.h"
+
+extern void DC_InitDC( HDC hdc );
+extern int DC_SetupGCForBrush( DC * dc );
+extern int DC_SetupGCForPen( DC * dc );
+extern int DC_SetupGCForText( DC * dc );
+
+extern const int DC_XROPfunction[];
+
+#endif /* __WINE_DC_H */
diff --git a/include/debug.h b/include/debug.h
index 6bdc132..61713ce 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -1,7 +1,7 @@
 #include <stdio.h>
 
 #define stddeb stdout
-#define stdnimp stderr
+#define stdnimp stdout
 
 /* Do not remove this line or change anything below this line */
 
@@ -59,9 +59,11 @@
 #undef DEBUG_PROP
 #undef DEBUG_REG
 #undef DEBUG_REGION
+#undef DEBUG_RELAY
 #undef DEBUG_RESOURCE
 #undef DEBUG_SCROLL
 #undef DEBUG_SELECTORS
+#undef DEBUG_STACK
 #undef DEBUG_STRESS
 #undef DEBUG_SYSCOLOR
 #undef DEBUG_TASK
@@ -126,9 +128,11 @@
 #define DEBUG_PROP
 #define DEBUG_REG
 #define DEBUG_REGION
+#define DEBUG_RELAY
 #define DEBUG_RESOURCE
 #define DEBUG_SCROLL
 #define DEBUG_SELECTORS
+#define DEBUG_STACK
 #define DEBUG_STRESS
 #define DEBUG_SYSCOLOR
 #define DEBUG_TASK
@@ -407,6 +411,11 @@
 #else
     0,
 #endif
+#ifdef DEBUG_RELAY
+    1,
+#else
+    0,
+#endif
 #ifdef DEBUG_RESOURCE
     1,
 #else
@@ -422,6 +431,11 @@
 #else
     0,
 #endif
+#ifdef DEBUG_STACK
+    1,
+#else
+    0,
+#endif
 #ifdef DEBUG_STRESS
     1,
 #else
@@ -471,641 +485,859 @@
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_accel if(debug_msg_enabled[0]) fprintf
+#define debugging_accel debug_msg_enabled[0]
 #else
 #ifdef DEBUG_ACCEL
 #define dprintf_accel fprintf
+#define debugging_accel 1
 #else
 #define dprintf_accel
+#define debugging_accel 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_bitmap if(debug_msg_enabled[1]) fprintf
+#define debugging_bitmap debug_msg_enabled[1]
 #else
 #ifdef DEBUG_BITMAP
 #define dprintf_bitmap fprintf
+#define debugging_bitmap 1
 #else
 #define dprintf_bitmap
+#define debugging_bitmap 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_callback if(debug_msg_enabled[2]) fprintf
+#define debugging_callback debug_msg_enabled[2]
 #else
 #ifdef DEBUG_CALLBACK
 #define dprintf_callback fprintf
+#define debugging_callback 1
 #else
 #define dprintf_callback
+#define debugging_callback 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_caret if(debug_msg_enabled[3]) fprintf
+#define debugging_caret debug_msg_enabled[3]
 #else
 #ifdef DEBUG_CARET
 #define dprintf_caret fprintf
+#define debugging_caret 1
 #else
 #define dprintf_caret
+#define debugging_caret 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_catch if(debug_msg_enabled[4]) fprintf
+#define debugging_catch debug_msg_enabled[4]
 #else
 #ifdef DEBUG_CATCH
 #define dprintf_catch fprintf
+#define debugging_catch 1
 #else
 #define dprintf_catch
+#define debugging_catch 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_cdaudio if(debug_msg_enabled[5]) fprintf
+#define debugging_cdaudio debug_msg_enabled[5]
 #else
 #ifdef DEBUG_CDAUDIO
 #define dprintf_cdaudio fprintf
+#define debugging_cdaudio 1
 #else
 #define dprintf_cdaudio
+#define debugging_cdaudio 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_class if(debug_msg_enabled[6]) fprintf
+#define debugging_class debug_msg_enabled[6]
 #else
 #ifdef DEBUG_CLASS
 #define dprintf_class fprintf
+#define debugging_class 1
 #else
 #define dprintf_class
+#define debugging_class 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_clipboard if(debug_msg_enabled[7]) fprintf
+#define debugging_clipboard debug_msg_enabled[7]
 #else
 #ifdef DEBUG_CLIPBOARD
 #define dprintf_clipboard fprintf
+#define debugging_clipboard 1
 #else
 #define dprintf_clipboard
+#define debugging_clipboard 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_clipping if(debug_msg_enabled[8]) fprintf
+#define debugging_clipping debug_msg_enabled[8]
 #else
 #ifdef DEBUG_CLIPPING
 #define dprintf_clipping fprintf
+#define debugging_clipping 1
 #else
 #define dprintf_clipping
+#define debugging_clipping 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_combo if(debug_msg_enabled[9]) fprintf
+#define debugging_combo debug_msg_enabled[9]
 #else
 #ifdef DEBUG_COMBO
 #define dprintf_combo fprintf
+#define debugging_combo 1
 #else
 #define dprintf_combo
+#define debugging_combo 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_comm if(debug_msg_enabled[10]) fprintf
+#define debugging_comm debug_msg_enabled[10]
 #else
 #ifdef DEBUG_COMM
 #define dprintf_comm fprintf
+#define debugging_comm 1
 #else
 #define dprintf_comm
+#define debugging_comm 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_cursor if(debug_msg_enabled[11]) fprintf
+#define debugging_cursor debug_msg_enabled[11]
 #else
 #ifdef DEBUG_CURSOR
 #define dprintf_cursor fprintf
+#define debugging_cursor 1
 #else
 #define dprintf_cursor
+#define debugging_cursor 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_dc if(debug_msg_enabled[12]) fprintf
+#define debugging_dc debug_msg_enabled[12]
 #else
 #ifdef DEBUG_DC
 #define dprintf_dc fprintf
+#define debugging_dc 1
 #else
 #define dprintf_dc
+#define debugging_dc 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_dialog if(debug_msg_enabled[13]) fprintf
+#define debugging_dialog debug_msg_enabled[13]
 #else
 #ifdef DEBUG_DIALOG
 #define dprintf_dialog fprintf
+#define debugging_dialog 1
 #else
 #define dprintf_dialog
+#define debugging_dialog 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_dll if(debug_msg_enabled[14]) fprintf
+#define debugging_dll debug_msg_enabled[14]
 #else
 #ifdef DEBUG_DLL
 #define dprintf_dll fprintf
+#define debugging_dll 1
 #else
 #define dprintf_dll
+#define debugging_dll 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_dosfs if(debug_msg_enabled[15]) fprintf
+#define debugging_dosfs debug_msg_enabled[15]
 #else
 #ifdef DEBUG_DOSFS
 #define dprintf_dosfs fprintf
+#define debugging_dosfs 1
 #else
 #define dprintf_dosfs
+#define debugging_dosfs 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_driver if(debug_msg_enabled[16]) fprintf
+#define debugging_driver debug_msg_enabled[16]
 #else
 #ifdef DEBUG_DRIVER
 #define dprintf_driver fprintf
+#define debugging_driver 1
 #else
 #define dprintf_driver
+#define debugging_driver 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_edit if(debug_msg_enabled[17]) fprintf
+#define debugging_edit debug_msg_enabled[17]
 #else
 #ifdef DEBUG_EDIT
 #define dprintf_edit fprintf
+#define debugging_edit 1
 #else
 #define dprintf_edit
+#define debugging_edit 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_enum if(debug_msg_enabled[18]) fprintf
+#define debugging_enum debug_msg_enabled[18]
 #else
 #ifdef DEBUG_ENUM
 #define dprintf_enum fprintf
+#define debugging_enum 1
 #else
 #define dprintf_enum
+#define debugging_enum 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_event if(debug_msg_enabled[19]) fprintf
+#define debugging_event debug_msg_enabled[19]
 #else
 #ifdef DEBUG_EVENT
 #define dprintf_event fprintf
+#define debugging_event 1
 #else
 #define dprintf_event
+#define debugging_event 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_exec if(debug_msg_enabled[20]) fprintf
+#define debugging_exec debug_msg_enabled[20]
 #else
 #ifdef DEBUG_EXEC
 #define dprintf_exec fprintf
+#define debugging_exec 1
 #else
 #define dprintf_exec
+#define debugging_exec 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_file if(debug_msg_enabled[21]) fprintf
+#define debugging_file debug_msg_enabled[21]
 #else
 #ifdef DEBUG_FILE
 #define dprintf_file fprintf
+#define debugging_file 1
 #else
 #define dprintf_file
+#define debugging_file 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_fixup if(debug_msg_enabled[22]) fprintf
+#define debugging_fixup debug_msg_enabled[22]
 #else
 #ifdef DEBUG_FIXUP
 #define dprintf_fixup fprintf
+#define debugging_fixup 1
 #else
 #define dprintf_fixup
+#define debugging_fixup 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_font if(debug_msg_enabled[23]) fprintf
+#define debugging_font debug_msg_enabled[23]
 #else
 #ifdef DEBUG_FONT
 #define dprintf_font fprintf
+#define debugging_font 1
 #else
 #define dprintf_font
+#define debugging_font 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_gdi if(debug_msg_enabled[24]) fprintf
+#define debugging_gdi debug_msg_enabled[24]
 #else
 #ifdef DEBUG_GDI
 #define dprintf_gdi fprintf
+#define debugging_gdi 1
 #else
 #define dprintf_gdi
+#define debugging_gdi 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_graphics if(debug_msg_enabled[25]) fprintf
+#define debugging_graphics debug_msg_enabled[25]
 #else
 #ifdef DEBUG_GRAPHICS
 #define dprintf_graphics fprintf
+#define debugging_graphics 1
 #else
 #define dprintf_graphics
+#define debugging_graphics 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_heap if(debug_msg_enabled[26]) fprintf
+#define debugging_heap debug_msg_enabled[26]
 #else
 #ifdef DEBUG_HEAP
 #define dprintf_heap fprintf
+#define debugging_heap 1
 #else
 #define dprintf_heap
+#define debugging_heap 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_icon if(debug_msg_enabled[27]) fprintf
+#define debugging_icon debug_msg_enabled[27]
 #else
 #ifdef DEBUG_ICON
 #define dprintf_icon fprintf
+#define debugging_icon 1
 #else
 #define dprintf_icon
+#define debugging_icon 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_int if(debug_msg_enabled[28]) fprintf
+#define debugging_int debug_msg_enabled[28]
 #else
 #ifdef DEBUG_INT
 #define dprintf_int fprintf
+#define debugging_int 1
 #else
 #define dprintf_int
+#define debugging_int 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_key if(debug_msg_enabled[29]) fprintf
+#define debugging_key debug_msg_enabled[29]
 #else
 #ifdef DEBUG_KEY
 #define dprintf_key fprintf
+#define debugging_key 1
 #else
 #define dprintf_key
+#define debugging_key 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_keyboard if(debug_msg_enabled[30]) fprintf
+#define debugging_keyboard debug_msg_enabled[30]
 #else
 #ifdef DEBUG_KEYBOARD
 #define dprintf_keyboard fprintf
+#define debugging_keyboard 1
 #else
 #define dprintf_keyboard
+#define debugging_keyboard 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_ldt if(debug_msg_enabled[31]) fprintf
+#define debugging_ldt debug_msg_enabled[31]
 #else
 #ifdef DEBUG_LDT
 #define dprintf_ldt fprintf
+#define debugging_ldt 1
 #else
 #define dprintf_ldt
+#define debugging_ldt 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_listbox if(debug_msg_enabled[32]) fprintf
+#define debugging_listbox debug_msg_enabled[32]
 #else
 #ifdef DEBUG_LISTBOX
 #define dprintf_listbox fprintf
+#define debugging_listbox 1
 #else
 #define dprintf_listbox
+#define debugging_listbox 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_mci if(debug_msg_enabled[33]) fprintf
+#define debugging_mci debug_msg_enabled[33]
 #else
 #ifdef DEBUG_MCI
 #define dprintf_mci fprintf
+#define debugging_mci 1
 #else
 #define dprintf_mci
+#define debugging_mci 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_mcianim if(debug_msg_enabled[34]) fprintf
+#define debugging_mcianim debug_msg_enabled[34]
 #else
 #ifdef DEBUG_MCIANIM
 #define dprintf_mcianim fprintf
+#define debugging_mcianim 1
 #else
 #define dprintf_mcianim
+#define debugging_mcianim 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_mciwave if(debug_msg_enabled[35]) fprintf
+#define debugging_mciwave debug_msg_enabled[35]
 #else
 #ifdef DEBUG_MCIWAVE
 #define dprintf_mciwave fprintf
+#define debugging_mciwave 1
 #else
 #define dprintf_mciwave
+#define debugging_mciwave 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_mdi if(debug_msg_enabled[36]) fprintf
+#define debugging_mdi debug_msg_enabled[36]
 #else
 #ifdef DEBUG_MDI
 #define dprintf_mdi fprintf
+#define debugging_mdi 1
 #else
 #define dprintf_mdi
+#define debugging_mdi 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_menu if(debug_msg_enabled[37]) fprintf
+#define debugging_menu debug_msg_enabled[37]
 #else
 #ifdef DEBUG_MENU
 #define dprintf_menu fprintf
+#define debugging_menu 1
 #else
 #define dprintf_menu
+#define debugging_menu 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_menucalc if(debug_msg_enabled[38]) fprintf
+#define debugging_menucalc debug_msg_enabled[38]
 #else
 #ifdef DEBUG_MENUCALC
 #define dprintf_menucalc fprintf
+#define debugging_menucalc 1
 #else
 #define dprintf_menucalc
+#define debugging_menucalc 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_message if(debug_msg_enabled[39]) fprintf
+#define debugging_message debug_msg_enabled[39]
 #else
 #ifdef DEBUG_MESSAGE
 #define dprintf_message fprintf
+#define debugging_message 1
 #else
 #define dprintf_message
+#define debugging_message 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_metafile if(debug_msg_enabled[40]) fprintf
+#define debugging_metafile debug_msg_enabled[40]
 #else
 #ifdef DEBUG_METAFILE
 #define dprintf_metafile fprintf
+#define debugging_metafile 1
 #else
 #define dprintf_metafile
+#define debugging_metafile 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_midi if(debug_msg_enabled[41]) fprintf
+#define debugging_midi debug_msg_enabled[41]
 #else
 #ifdef DEBUG_MIDI
 #define dprintf_midi fprintf
+#define debugging_midi 1
 #else
 #define dprintf_midi
+#define debugging_midi 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_mmio if(debug_msg_enabled[42]) fprintf
+#define debugging_mmio debug_msg_enabled[42]
 #else
 #ifdef DEBUG_MMIO
 #define dprintf_mmio fprintf
+#define debugging_mmio 1
 #else
 #define dprintf_mmio
+#define debugging_mmio 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_mmtime if(debug_msg_enabled[43]) fprintf
+#define debugging_mmtime debug_msg_enabled[43]
 #else
 #ifdef DEBUG_MMTIME
 #define dprintf_mmtime fprintf
+#define debugging_mmtime 1
 #else
 #define dprintf_mmtime
+#define debugging_mmtime 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_module if(debug_msg_enabled[44]) fprintf
+#define debugging_module debug_msg_enabled[44]
 #else
 #ifdef DEBUG_MODULE
 #define dprintf_module fprintf
+#define debugging_module 1
 #else
 #define dprintf_module
+#define debugging_module 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_msg if(debug_msg_enabled[45]) fprintf
+#define debugging_msg debug_msg_enabled[45]
 #else
 #ifdef DEBUG_MSG
 #define dprintf_msg fprintf
+#define debugging_msg 1
 #else
 #define dprintf_msg
+#define debugging_msg 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_msgbox if(debug_msg_enabled[46]) fprintf
+#define debugging_msgbox debug_msg_enabled[46]
 #else
 #ifdef DEBUG_MSGBOX
 #define dprintf_msgbox fprintf
+#define debugging_msgbox 1
 #else
 #define dprintf_msgbox
+#define debugging_msgbox 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_nonclient if(debug_msg_enabled[47]) fprintf
+#define debugging_nonclient debug_msg_enabled[47]
 #else
 #ifdef DEBUG_NONCLIENT
 #define dprintf_nonclient fprintf
+#define debugging_nonclient 1
 #else
 #define dprintf_nonclient
+#define debugging_nonclient 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_palette if(debug_msg_enabled[48]) fprintf
+#define debugging_palette debug_msg_enabled[48]
 #else
 #ifdef DEBUG_PALETTE
 #define dprintf_palette fprintf
+#define debugging_palette 1
 #else
 #define dprintf_palette
+#define debugging_palette 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_profile if(debug_msg_enabled[49]) fprintf
+#define debugging_profile debug_msg_enabled[49]
 #else
 #ifdef DEBUG_PROFILE
 #define dprintf_profile fprintf
+#define debugging_profile 1
 #else
 #define dprintf_profile
+#define debugging_profile 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_prop if(debug_msg_enabled[50]) fprintf
+#define debugging_prop debug_msg_enabled[50]
 #else
 #ifdef DEBUG_PROP
 #define dprintf_prop fprintf
+#define debugging_prop 1
 #else
 #define dprintf_prop
+#define debugging_prop 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_reg if(debug_msg_enabled[51]) fprintf
+#define debugging_reg debug_msg_enabled[51]
 #else
 #ifdef DEBUG_REG
 #define dprintf_reg fprintf
+#define debugging_reg 1
 #else
 #define dprintf_reg
+#define debugging_reg 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
 #define dprintf_region if(debug_msg_enabled[52]) fprintf
+#define debugging_region debug_msg_enabled[52]
 #else
 #ifdef DEBUG_REGION
 #define dprintf_region fprintf
+#define debugging_region 1
 #else
 #define dprintf_region
+#define debugging_region 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_resource if(debug_msg_enabled[53]) fprintf
+#define dprintf_relay if(debug_msg_enabled[53]) fprintf
+#define debugging_relay debug_msg_enabled[53]
+#else
+#ifdef DEBUG_RELAY
+#define dprintf_relay fprintf
+#define debugging_relay 1
+#else
+#define dprintf_relay
+#define debugging_relay 0
+#endif
+#endif
+
+#ifdef DEBUG_RUNTIME
+#define dprintf_resource if(debug_msg_enabled[54]) fprintf
+#define debugging_resource debug_msg_enabled[54]
 #else
 #ifdef DEBUG_RESOURCE
 #define dprintf_resource fprintf
+#define debugging_resource 1
 #else
 #define dprintf_resource
+#define debugging_resource 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_scroll if(debug_msg_enabled[54]) fprintf
+#define dprintf_scroll if(debug_msg_enabled[55]) fprintf
+#define debugging_scroll debug_msg_enabled[55]
 #else
 #ifdef DEBUG_SCROLL
 #define dprintf_scroll fprintf
+#define debugging_scroll 1
 #else
 #define dprintf_scroll
+#define debugging_scroll 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_selectors if(debug_msg_enabled[55]) fprintf
+#define dprintf_selectors if(debug_msg_enabled[56]) fprintf
+#define debugging_selectors debug_msg_enabled[56]
 #else
 #ifdef DEBUG_SELECTORS
 #define dprintf_selectors fprintf
+#define debugging_selectors 1
 #else
 #define dprintf_selectors
+#define debugging_selectors 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_stress if(debug_msg_enabled[56]) fprintf
+#define dprintf_stack if(debug_msg_enabled[57]) fprintf
+#define debugging_stack debug_msg_enabled[57]
+#else
+#ifdef DEBUG_STACK
+#define dprintf_stack fprintf
+#define debugging_stack 1
+#else
+#define dprintf_stack
+#define debugging_stack 0
+#endif
+#endif
+
+#ifdef DEBUG_RUNTIME
+#define dprintf_stress if(debug_msg_enabled[58]) fprintf
+#define debugging_stress debug_msg_enabled[58]
 #else
 #ifdef DEBUG_STRESS
 #define dprintf_stress fprintf
+#define debugging_stress 1
 #else
 #define dprintf_stress
+#define debugging_stress 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_syscolor if(debug_msg_enabled[57]) fprintf
+#define dprintf_syscolor if(debug_msg_enabled[59]) fprintf
+#define debugging_syscolor debug_msg_enabled[59]
 #else
 #ifdef DEBUG_SYSCOLOR
 #define dprintf_syscolor fprintf
+#define debugging_syscolor 1
 #else
 #define dprintf_syscolor
+#define debugging_syscolor 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_task if(debug_msg_enabled[58]) fprintf
+#define dprintf_task if(debug_msg_enabled[60]) fprintf
+#define debugging_task debug_msg_enabled[60]
 #else
 #ifdef DEBUG_TASK
 #define dprintf_task fprintf
+#define debugging_task 1
 #else
 #define dprintf_task
+#define debugging_task 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_text if(debug_msg_enabled[59]) fprintf
+#define dprintf_text if(debug_msg_enabled[61]) fprintf
+#define debugging_text debug_msg_enabled[61]
 #else
 #ifdef DEBUG_TEXT
 #define dprintf_text fprintf
+#define debugging_text 1
 #else
 #define dprintf_text
+#define debugging_text 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_timer if(debug_msg_enabled[60]) fprintf
+#define dprintf_timer if(debug_msg_enabled[62]) fprintf
+#define debugging_timer debug_msg_enabled[62]
 #else
 #ifdef DEBUG_TIMER
 #define dprintf_timer fprintf
+#define debugging_timer 1
 #else
 #define dprintf_timer
+#define debugging_timer 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_utility if(debug_msg_enabled[61]) fprintf
+#define dprintf_utility if(debug_msg_enabled[63]) fprintf
+#define debugging_utility debug_msg_enabled[63]
 #else
 #ifdef DEBUG_UTILITY
 #define dprintf_utility fprintf
+#define debugging_utility 1
 #else
 #define dprintf_utility
+#define debugging_utility 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_win if(debug_msg_enabled[62]) fprintf
+#define dprintf_win if(debug_msg_enabled[64]) fprintf
+#define debugging_win debug_msg_enabled[64]
 #else
 #ifdef DEBUG_WIN
 #define dprintf_win fprintf
+#define debugging_win 1
 #else
 #define dprintf_win
+#define debugging_win 0
 #endif
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_winsock if(debug_msg_enabled[63]) fprintf
+#define dprintf_winsock if(debug_msg_enabled[65]) fprintf
+#define debugging_winsock debug_msg_enabled[65]
 #else
 #ifdef DEBUG_WINSOCK
 #define dprintf_winsock fprintf
+#define debugging_winsock 1
 #else
 #define dprintf_winsock
+#define debugging_winsock 0
 #endif
 #endif
 
@@ -1166,9 +1398,11 @@
     "prop",
     "reg",
     "region",
+    "relay",
     "resource",
     "scroll",
     "selectors",
+    "stack",
     "stress",
     "syscolor",
     "task",
diff --git a/include/dialog.h b/include/dialog.h
index 1c9cf34..ad4b9de 100644
--- a/include/dialog.h
+++ b/include/dialog.h
@@ -9,6 +9,11 @@
 
 #include "windows.h"
 
+extern BOOL DIALOG_Init(void);
+extern HWND DIALOG_GetFirstTabItem( HWND hwndDlg );
+extern int DialogBoxIndirectPtr( HINSTANCE hInst, LPCSTR dlgTemplate,
+                          HWND owner, WNDPROC dlgProc);
+
 #pragma pack(1)
 
   /* Dialog info structure.
diff --git a/include/dos_fs.h b/include/dos_fs.h
new file mode 100644
index 0000000..79b5ce4
--- /dev/null
+++ b/include/dos_fs.h
@@ -0,0 +1,35 @@
+#ifndef __WINE_DOS_FS_H
+#define __WINE_DOS_FS_H
+
+#include <wintypes.h>
+
+extern void DOS_InitFS(void);
+extern WORD DOS_GetEquipment(void);
+extern int DOS_ValidDrive(int drive);
+extern int DOS_GetDefaultDrive(void); 
+extern void DOS_SetDefaultDrive(int drive);
+extern void ToUnix(char *s); 
+extern void ToDos(char *s); 
+extern void ChopOffSlash(char *string);
+extern int DOS_DisableDrive(int drive);
+extern int DOS_EnableDrive(int drive); 
+extern char *DOS_GetUnixFileName(char *dosfilename);
+extern char *DOS_GetDosFileName(char *unixfilename);
+extern char *DOS_GetCurrentDir(int drive);
+extern int DOS_ChangeDir(int drive, char *dirname);
+extern int DOS_MakeDir(int drive, char *dirname);
+extern int DOS_GetSerialNumber(int drive, unsigned long *serialnumber); 
+extern int DOS_SetSerialNumber(int drive, unsigned long serialnumber); 
+extern char *DOS_GetVolumeLabel(int drive);
+extern int DOS_SetVolumeLabel(int drive, char *label);
+extern int DOS_GetFreeSpace(int drive, long *size, long *available);
+extern char *DOS_FindFile(char *buffer, int buflen, char *rootname, char **extensions, char *path);
+extern char *WineIniFileName(void);
+extern char *WinIniFileName(void); 
+extern struct dosdirent *DOS_opendir(char *dosdirname); 
+extern struct dosdirent *DOS_readdir(struct dosdirent *de);
+extern void DOS_closedir(struct dosdirent *de);
+
+extern char WindowsPath[256];
+
+#endif /* __WINE_DOS_FS_H */
diff --git a/include/event.h b/include/event.h
new file mode 100644
index 0000000..0d1689f
--- /dev/null
+++ b/include/event.h
@@ -0,0 +1,7 @@
+#ifndef __WINE_EVENT_H
+#define __WINE_EVENT_H
+
+extern void EVENT_ProcessEvent( XEvent *event );  /* event.c */
+extern void EVENT_RegisterWindow( Window w, HWND hwnd );  /* event.c */
+
+#endif /* __WINE_EVENT_H */
diff --git a/include/font.h b/include/font.h
new file mode 100644
index 0000000..40c24d6
--- /dev/null
+++ b/include/font.h
@@ -0,0 +1,8 @@
+#ifndef __WINE_FONT_H
+#define __WINE_FONT_H
+
+extern void Font_Init( void );
+extern int FONT_GetObject( FONTOBJ * font, int count, LPSTR buffer );
+extern HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font );
+
+#endif /* __WINE_FONT_H */
diff --git a/include/gdi.h b/include/gdi.h
index b689035..6aae216 100644
--- a/include/gdi.h
+++ b/include/gdi.h
@@ -299,6 +299,7 @@
 
 #endif
 
+extern BOOL GDI_Init(void);
 extern HANDLE GDI_AllocObject( WORD, WORD );
 extern BOOL GDI_FreeObject( HANDLE );
 extern GDIOBJHDR * GDI_GetObjPtr( HANDLE, WORD );
@@ -307,5 +308,6 @@
 extern Screen * screen;
 extern Window rootWindow;
 extern int screenWidth, screenHeight, screenDepth;
+extern int desktopX, desktopY;   /* misc/main.c */
 
 #endif  /* GDI_H */
diff --git a/include/graphics.h b/include/graphics.h
new file mode 100644
index 0000000..a9580f5
--- /dev/null
+++ b/include/graphics.h
@@ -0,0 +1,9 @@
+#ifndef __WINE_GRAPHICS_H
+#define __WINE_GRAPHICS_H
+
+extern void GRAPH_DrawReliefRect( HDC hdc, RECT *rect, int highlight_size,
+                                  int shadow_size, BOOL pressed );
+extern BOOL GRAPH_DrawBitmap( HDC hdc, HBITMAP hbitmap, int xdest, int ydest,
+                          int xsrc, int ysrc, int width, int height, int rop );
+
+#endif /* __WINE_GRAPHICS */
diff --git a/include/heap.h b/include/heap.h
index ff4321a..fd234de 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -35,11 +35,24 @@
 extern int  HEAP_Free(MDESC **free_list, void *block);
 extern void *HEAP_ReAlloc(MDESC **free_list, void *old_block, 
 			  int new_size, unsigned int flags);
+
 extern LHEAP *HEAP_LocalFindHeap(unsigned short owner);
 extern unsigned int HEAP_LocalSize(MDESC **free_list, unsigned int handle);
 extern void HEAP_LocalInit(unsigned short owner, void *start, int length);
 
+extern void *WIN16_LocalAlloc(int flags, int bytes);
+extern int WIN16_LocalCompact(int min_free);
+extern unsigned int WIN16_LocalFlags(unsigned int handle);
+extern unsigned int WIN16_LocalFree(unsigned int handle);
+extern void *WIN16_LocalLock(unsigned int handle);
+extern void *WIN16_LocalReAlloc(unsigned int handle, int flags, int bytes);
+extern unsigned int WIN16_LocalUnlock(unsigned int handle);
+
+#if 0
 #define HEAP_OWNER	(Segments[Stack16Frame[11] >> 3].owner)
+#endif
+/* Use ds instead of owner of cs */
+#define HEAP_OWNER	Stack16Frame[6]
 #define LOCALHEAP()	(&HEAP_LocalFindHeap(HEAP_OWNER)->free_list)
 #define LOCALATOMTABLE() (&HEAP_LocalFindHeap(HEAP_OWNER)->local_table)
 
diff --git a/include/if1632.h b/include/if1632.h
new file mode 100644
index 0000000..1cf7637
--- /dev/null
+++ b/include/if1632.h
@@ -0,0 +1,19 @@
+#ifndef __WINE_IF1632_H
+#define __WINE_IF1632_H
+
+#include <wintypes.h>
+
+extern int CallToInit16(unsigned long csip, unsigned long sssp, 
+			unsigned short ds);
+extern int CallTo16cx(unsigned long csip, unsigned long dscx);
+extern int CallToDllEntry(unsigned long csip, unsigned long dscx, unsigned short di);
+extern int CallBack16(void *func, int n_args, ...);
+extern void *CALLBACK_MakeProcInstance(void *func, int instance);
+extern void CallLineDDAProc(FARPROC func, short xPos, short yPos, long lParam);
+extern void winestat(void);
+extern int DLLRelay(unsigned int func_num, unsigned int seg_off);
+extern struct dll_table_entry_s *FindDLLTable(char *dll_name);
+extern int FindOrdinalFromName(struct dll_table_entry_s *dll_table, char *func_name);
+extern int ReturnArg(int arg);
+
+#endif /* __WINE_IF1632_H */
diff --git a/include/kernel.h b/include/kernel.h
new file mode 100644
index 0000000..f8bf0f5
--- /dev/null
+++ b/include/kernel.h
@@ -0,0 +1,4 @@
+extern int KERNEL_LockSegment(int segment);
+extern int KERNEL_UnlockSegment(int segment);
+extern KERNEL_InitTask(void);
+extern int KERNEL_WaitEvent(int task);
diff --git a/include/library.h b/include/library.h
new file mode 100644
index 0000000..e161d66
--- /dev/null
+++ b/include/library.h
@@ -0,0 +1,14 @@
+#ifndef __WINE_LIBRARY_H
+#define __WINE_LIBRARY_H
+
+extern HINSTANCE hInstMain;
+extern HINSTANCE hSysRes;
+extern struct w_files *GetFileInfo(unsigned short instance);
+extern int IsDLLLoaded(char *name);
+extern void InitDLL(struct w_files *wpnt);
+extern void InitializeLoadedDLLs(struct w_files *wpnt);
+extern HINSTANCE LoadImage(char *module, int filetype, int change_dir);
+
+extern struct dll_name_table_entry_s dll_builtin_table[];
+
+#endif /* __WINE_LIBRARY_H */
diff --git a/include/listbox.h b/include/listbox.h
index 7000943..1e56b7f 100644
--- a/include/listbox.h
+++ b/include/listbox.h
@@ -14,8 +14,8 @@
 
 
 typedef struct tagHEADLIST {
-	short	FirstVisible;
-	short	ItemsCount;
+	UINT	FirstVisible;
+	UINT	ItemsCount;
 	short	ItemsVisible;
 	short	ColumnsVisible;
 	short	ItemsPerColumn;
diff --git a/include/mdi.h b/include/mdi.h
index 40f4399..73ebb4d 100644
--- a/include/mdi.h
+++ b/include/mdi.h
@@ -11,6 +11,9 @@
 #include "windows.h"
 
 #define MDI_MAXLISTLENGTH	64
+extern LONG MDIClientWndProc(HWND hwnd, WORD message, 
+			     WORD wParam, LONG lParam); /* mdi.c */
+
 
 typedef struct mdi_child_info_s
 {
diff --git a/include/menu.h b/include/menu.h
index fad8bb1..d471eec 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -8,6 +8,15 @@
 
 #define MENU_MAGIC   0x554d  /* 'MU' */
 
+extern BOOL MENU_Init(void);
+extern WORD MENU_GetMenuBarHeight( HWND hwnd, WORD menubarWidth,
+				   int orgX, int orgY );         /* menu.c */
+extern void MENU_TrackMouseMenuBar( HWND hwnd, POINT pt );       /* menu.c */
+extern void MENU_TrackKbdMenuBar( HWND hwnd, WORD wParam );      /* menu.c */
+extern WORD MENU_DrawMenuBar( HDC hDC, LPRECT lprect,
+			      HWND hwnd, BOOL suppress_draw );   /* menu.c */
+extern HMENU CopySysMenu(); /* menu.c */
+
 
 typedef struct tagMENUITEM
 {
diff --git a/include/miscemu.h b/include/miscemu.h
new file mode 100644
index 0000000..a24bfae
--- /dev/null
+++ b/include/miscemu.h
@@ -0,0 +1,25 @@
+#ifndef __WINE_MISCEMU_H
+#define __WINE_MISCEMU_H
+
+extern int do_int10(struct sigcontext_struct *);
+extern int do_int13(struct sigcontext_struct *);
+extern int do_int15(struct sigcontext_struct *);
+extern int do_int16(struct sigcontext_struct *);
+extern int do_int1a(struct sigcontext_struct *);
+extern int do_int21(struct sigcontext_struct *);
+extern int do_int25(struct sigcontext_struct *);
+extern int do_int26(struct sigcontext_struct *);
+extern int do_int2a(struct sigcontext_struct *);
+extern int do_int2f(struct sigcontext_struct *);
+extern int do_int31(struct sigcontext_struct *);
+
+extern void inportb(struct sigcontext_struct *context);
+extern void inport(struct sigcontext_struct *context);
+extern void outportb(struct sigcontext_struct *context);
+extern void outport(struct sigcontext_struct *context);
+
+extern void IntBarf(int i, struct sigcontext_struct *context);
+
+extern void INT21_Init(void);
+
+#endif /* __WINE_MISCEMU_H */
diff --git a/include/msdos.h b/include/msdos.h
index 0529883..31bf3fb 100644
--- a/include/msdos.h
+++ b/include/msdos.h
@@ -1,7 +1,9 @@
 #ifndef __MSDOS_H
 #define __MSDOS_H
+
 #include <dirent.h>
 #include <windows.h>
+#include "comm.h"
 
 struct dosdirent {
 	int  inuse;
@@ -30,6 +32,10 @@
 #define DOSVERSION 0x0330;
 #define MAX_DOS_DRIVES	26
 
+extern WORD ExtendedError;
+extern struct DosDeviceStruct COM[MAX_PORTS];
+extern struct DosDeviceStruct LPT[MAX_PORTS];
+
 #define segment(a) 	((DWORD)(a) >> 16)
 #define offset(a)	((DWORD)(a) & 0xffff)
 
diff --git a/include/ne_image.h b/include/ne_image.h
new file mode 100644
index 0000000..df89336
--- /dev/null
+++ b/include/ne_image.h
@@ -0,0 +1,10 @@
+#ifndef __WINE_NE_IMAGE_H
+#define __WINE_NE_IMAGE_H
+
+extern int NE_FixupSegment(struct w_files *wpnt, int segment_num);
+extern int NE_unloadImage(struct w_files *wpnt);
+extern int NE_StartProgram(struct w_files *wpnt);
+extern void NE_InitDLL(struct w_files *wpnt);
+extern HINSTANCE NE_LoadImage(struct w_files *wpnt);
+
+#endif /* __WINE_NE_IMAGE_H */
diff --git a/include/nonclient.h b/include/nonclient.h
new file mode 100644
index 0000000..87bc71e
--- /dev/null
+++ b/include/nonclient.h
@@ -0,0 +1,13 @@
+#ifndef __WINE_NONCLIENT_H
+#define __WINE_NONCLIENT_H
+
+extern LONG NC_HandleNCPaint( HWND hwnd, HRGN hrgn );
+extern LONG NC_HandleNCActivate( HWND hwnd, WORD wParam );
+extern LONG NC_HandleNCCalcSize( HWND hwnd, NCCALCSIZE_PARAMS *params );
+extern LONG NC_HandleNCHitTest( HWND hwnd, POINT pt );
+extern LONG NC_HandleNCLButtonDown( HWND hwnd, WORD wParam, LONG lParam );
+extern LONG NC_HandleNCLButtonDblClk( HWND hwnd, WORD wParam, LONG lParam );
+extern LONG NC_HandleSysCommand( HWND hwnd, WORD wParam, POINT pt );
+extern LONG NC_HandleSetCursor( HWND hwnd, WORD wParam, LONG lParam );
+
+#endif /* __WINE_NONCLIENT_H */
diff --git a/include/options.h b/include/options.h
index e8bed9f..317f9c1 100644
--- a/include/options.h
+++ b/include/options.h
@@ -16,7 +16,6 @@
     int    synchronous;     /* X synchronous mode */
     int    backingstore;    /* Use backing store */
     short  cmdShow;
-    int    relay_debug;
     int    debug;
 };
 
diff --git a/include/pe_image.h b/include/pe_image.h
new file mode 100644
index 0000000..5259603
--- /dev/null
+++ b/include/pe_image.h
@@ -0,0 +1,10 @@
+#ifndef __WINE_PE_IMAGE_H
+#define __WINE_PE_IMAGE_H
+
+extern int PE_unloadImage(struct w_files *wpnt);
+extern int PE_StartProgram(struct w_files *wpnt);
+extern void PE_InitDLL(struct w_files *wpnt);
+extern HINSTANCE PE_LoadImage(struct w_files *wpnt);
+extern void my_wcstombs(char * result, u_short * source, int len);
+
+#endif /* __WINE_PE_IMAGE_H */
diff --git a/include/prototypes.h b/include/prototypes.h
index 2b94d25..ebde9cd 100644
--- a/include/prototypes.h
+++ b/include/prototypes.h
@@ -10,22 +10,12 @@
 
 #include "neexe.h"
 #include "segmem.h"
-#include "wine.h"
 #include "heap.h"
 #include "msdos.h"
 #include "windows.h"
 
 #ifndef WINELIB
 
-/* loader/dump.c */
-
-extern void PrintFileHeader(struct ne_header_s *ne_header);
-extern void PrintSegmentTable(struct ne_segment_table_entry_s *seg_table, 
-				int nentries);
-extern void PrintRelocationTable(char *exe_ptr, 
-				struct ne_segment_table_entry_s *seg_entry_p, 
-				int segment);
-
 /* loader/ldtlib.c */
 
 struct segment_descriptor *
@@ -37,153 +27,40 @@
 
 /* loader/resource.c */
 
-extern int OpenResourceFile(HANDLE instance);
 extern HBITMAP ConvertCoreBitmap( HDC hdc, BITMAPCOREHEADER * image );
 extern HBITMAP ConvertInfoBitmap( HDC hdc, BITMAPINFO * image );
 
-/* loader/selector.c */
-
-extern int FindUnusedSelectors(int n_selectors);
-extern int IPCCopySelector(int i_old, unsigned long new, int swap_type);
-extern WORD AllocSelector(WORD old_selector);
-extern unsigned int PrestoChangoSelector(unsigned src_selector, unsigned dst_selector);
-extern WORD AllocDStoCSAlias(WORD ds_selector);
-extern WORD FreeSelector(WORD sel);
-extern SEGDESC *CreateNewSegments(int code_flag, int read_only, int length, 
-					int n_segments);
-extern SEGDESC *GetNextSegment(unsigned int flags, unsigned int limit);
-extern unsigned int GetEntryDLLName(char *dll_name, char *function, int *sel,
-					int *addr);
-extern unsigned int GetEntryDLLOrdinal(char *dll_name, int ordinal, int *sel,
-					int *addr);
-
 /* loader/signal.c */
 
 extern int init_wine_signals(void);
+extern void wine_debug(int signal, int * regs);
 
 /* loader/wine.c */
 
 extern void myerror(const char *s);
-extern void load_mz_header (int, struct mz_header_s *);
-extern void load_ne_header (int, struct ne_header_s *);
 
 extern char *GetFilenameFromInstance(unsigned short instance);
 extern HINSTANCE LoadImage(char *modulename, int filetype, int change_dir);
 extern int _WinMain(int argc, char **argv);
 extern void InitializeLoadedDLLs();
 
-/* if1632/relay.c */
-
-extern int CallBack16(void *func, int n_args, ...);
-extern void *CALLBACK_MakeProcInstance(void *func, int instance);
-extern void CallLineDDAProc(FARPROC func, short xPos, short yPos, long lParam);
-extern void winestat(void);
-
-/* if1632/callback.c */
-
-extern int DLLRelay(unsigned int func_num, unsigned int seg_off);
-extern struct dll_table_entry_s *FindDLLTable(char *dll_name);
-extern int FindOrdinalFromName(struct dll_table_entry_s *dll_table, char *func_name);
-extern int ReturnArg(int arg);
-
-/* miscemu/int1a.c */
-
-extern do_int1A(struct sigcontext_struct *context);
-
-/* miscemu/int21.c */
-
-extern do_int21(struct sigcontext_struct *context);
-
-/* miscemu/kernel.c */
-
 extern int KERNEL_LockSegment(int segment);
 extern int KERNEL_UnlockSegment(int segment);
-extern KERNEL_InitTask();
+extern void KERNEL_InitTask(void);
 extern int KERNEL_WaitEvent(int task);
 
-/* misc/comm.c */
-
-void Comm_Init(void);
-void Comm_DeInit(void);
-
-/* misc/dos_fs.c */
-
-extern void DOS_InitFS(void);
-extern WORD DOS_GetEquipment(void);
-extern int DOS_ValidDrive(int drive);
-extern int DOS_GetDefaultDrive(void); 
-extern void DOS_SetDefaultDrive(int drive);
-extern void ToUnix(char *s); 
-extern void ToDos(char *s); 
-extern void ChopOffSlash(char *string);
-extern int DOS_DisableDrive(int drive);
-extern int DOS_EnableDrive(int drive); 
-extern char *GetUnixFileName(char *dosfilename);
-extern char *DOS_GetCurrentDir(int drive);
-extern int DOS_ChangeDir(int drive, char *dirname);
-extern int DOS_MakeDir(int drive, char *dirname);
-extern int DOS_GetSerialNumber(int drive, unsigned long *serialnumber); 
-extern int DOS_SetSerialNumber(int drive, unsigned long serialnumber); 
-extern char *DOS_GetVolumeLabel(int drive);
-extern int DOS_SetVolumeLabel(int drive, char *label);
-extern int DOS_GetFreeSpace(int drive, long *size, long *available);
-extern char *FindFile(char *buffer, int buflen, char *rootname, char **extensions, char *path);
-extern char *WineIniFileName(void);
-extern char *WinIniFileName(void); 
-extern struct dosdirent *DOS_opendir(char *dosdirname); 
-extern struct dosdirent *DOS_readdir(struct dosdirent *de);
-extern void DOS_closedir(struct dosdirent *de);
-
-/* misc/profile.c */
-
-extern void sync_profiles(void);
-
 /* misc/spy.c */
 
 extern void SpyInit(void);
 
-/* controls/desktop.c */
-
-extern BOOL DESKTOP_SetPattern(char *pattern);
-
 /* controls/widget.c */
 
 extern BOOL WIDGETS_Init(void);
 
-/* memory/heap.c */
-
-extern void HEAP_Init(MDESC **free_list, void *start, int length);
-extern void *HEAP_Alloc(MDESC **free_list, int flags, int bytes);
-extern void *HEAP_ReAlloc(MDESC **free_list, void *old_block, int new_size, unsigned int flags);
-extern int HEAP_Free(MDESC **free_list, void *block);
-extern LHEAP *HEAP_LocalFindHeap(unsigned short owner);
-extern void HEAP_LocalInit(unsigned short owner, void *start, int length);
-extern void *WIN16_LocalAlloc(int flags, int bytes);
-extern int WIN16_LocalCompact(int min_free);
-extern unsigned int WIN16_LocalFlags(unsigned int handle);
-extern unsigned int WIN16_LocalFree(unsigned int handle);
-extern unsigned int WIN16_LocalInit(unsigned int segment, unsigned int start, unsigned int end);
-extern void *WIN16_LocalLock(unsigned int handle);
-extern void *WIN16_LocalReAlloc(unsigned int handle, int flags, int bytes);
-extern unsigned int WIN16_LocalSize(unsigned int handle);
-extern unsigned int WIN16_LocalUnlock(unsigned int handle);
-
-/* objects/bitmaps.c */
-
-extern BOOL BITMAP_Init(void);
-
-/* objects/color.c */
-
-extern BOOL COLOR_Init(void);
-
 /* objects/dib.c */
 
 extern int DIB_BitmapInfoSize(BITMAPINFO *info, WORD coloruse);
 
-/* objects/gdiobj.c */
-
-extern BOOL GDI_Init(void);
-
 /* objects/palette.c */
 
 extern BOOL PALETTE_Init(void);
@@ -200,17 +77,5 @@
 
 extern void DCE_Init(void);
 
-/* windows/dialog.c */
-
-extern BOOL DIALOG_Init(void);
-
-/* windows/syscolor.c */
-
-extern void SYSCOLOR_Init(void);
-
-/* windows/sysmetrics.c */
-
-extern void SYSMETRICS_Init(void);
-
 #endif /* WINELIB */
 #endif /* _WINE_PROTOTYPES_H */
diff --git a/include/registers.h b/include/registers.h
index 26a7774..ce06a0f 100644
--- a/include/registers.h
+++ b/include/registers.h
@@ -29,8 +29,8 @@
 #define ES context->sc_es
 #define SS context->sc_ss
 
-#define DI context->sc_edi
-#define SI context->sc_esi
+#define DI ((WORD)context->sc_edi)
+#define SI ((WORD)context->sc_esi)
 #define SP context->sc_esp
 #ifndef __FreeBSD__
 #define EFL context->sc_eflags
diff --git a/include/scroll.h b/include/scroll.h
index f80eefd..681d4d1 100644
--- a/include/scroll.h
+++ b/include/scroll.h
@@ -20,7 +20,8 @@
 } SCROLLINFO;
 
 extern LONG ScrollBarWndProc( HWND hwnd, WORD uMsg, WORD wParam, LONG lParam );
-
 extern void SCROLL_DrawScrollBar( HWND hwnd, HDC hdc, int nBar );
+extern void SCROLL_HandleScrollEvent( HWND hwnd, int nBar,
+                                      WORD msg, POINT pt);       /* scroll.c */
 
 #endif  /* SCROLL_H */
diff --git a/include/selectors.h b/include/selectors.h
new file mode 100644
index 0000000..aac6fa9
--- /dev/null
+++ b/include/selectors.h
@@ -0,0 +1,25 @@
+#ifndef __WINE_SELECTORS_H
+#define __WINE_SELECTORS_H
+
+#include "dlls.h"
+
+extern int FindUnusedSelectors(int n_selectors);
+extern int IPCCopySelector(int i_old, unsigned long new, int swap_type);
+extern WORD AllocSelector(WORD old_selector);
+extern unsigned int PrestoChangoSelector(unsigned src_selector, unsigned dst_selector);
+extern WORD AllocDStoCSAlias(WORD ds_selector);
+extern SEGDESC *CreateSelectors(struct  w_files * wpnt);
+extern WORD FreeSelector(WORD sel);
+
+extern SEGDESC *CreateNewSegments(int code_flag, int read_only, int length, 
+					int n_segments);
+extern SEGDESC *GetNextSegment(unsigned int flags, unsigned int limit);
+
+extern unsigned int GetEntryDLLName(char *dll_name, char *function, int *sel,
+					int *addr);
+extern unsigned int GetEntryDLLOrdinal(char *dll_name, int ordinal, int *sel,
+					int *addr);
+extern unsigned int GetEntryPointFromOrdinal(struct w_files * wpnt, 
+					int ordinal);
+
+#endif /* __WINE_SELECTORS_H */
diff --git a/include/stddebug.h b/include/stddebug.h
index 7c5ccbf..48348c4 100644
--- a/include/stddebug.h
+++ b/include/stddebug.h
@@ -129,9 +129,11 @@
 #undef DEBUG_PROP
 #undef DEBUG_REG
 #undef DEBUG_REGION
+#undef DEBUG_RELAY
 #undef DEBUG_RESOURCE
 #undef DEBUG_SCROLL
 #undef DEBUG_SELECTORS
+#undef DEBUG_STACK
 #undef DEBUG_STRESS
 #undef DEBUG_SYSCOLOR
 #undef DEBUG_TASK
@@ -196,9 +198,11 @@
 #define DEBUG_PROP
 #define DEBUG_REG
 #define DEBUG_REGION
+#define DEBUG_RELAY
 #define DEBUG_RESOURCE
 #define DEBUG_SCROLL
 #define DEBUG_SELECTORS
+#define DEBUG_STACK
 #define DEBUG_STRESS
 #define DEBUG_SYSCOLOR
 #define DEBUG_TASK
diff --git a/include/syscolor.h b/include/syscolor.h
index 7001448..0144953 100644
--- a/include/syscolor.h
+++ b/include/syscolor.h
@@ -34,6 +34,7 @@
     HBRUSH hbrushBtnHighlight;     /* COLOR_BTNHIGHLIGHT        */
 };
 
+extern void SYSCOLOR_Init(void);
 extern struct SysColorObjects sysColorObjects;
 
 #endif  /* SYSCOLOR_H */
diff --git a/include/sysmetrics.h b/include/sysmetrics.h
index 186d213..f9e73e7 100644
--- a/include/sysmetrics.h
+++ b/include/sysmetrics.h
@@ -48,8 +48,7 @@
 #define SYSMETRICS_CYDOUBLECLK         sysMetrics[SM_CYDOUBLECLK]
 #define SYSMETRICS_MENUDROPALIGNMENT   sysMetrics[SM_MENUDROPALIGNMENT]
 
-
+extern void SYSMETRICS_Init(void);
 extern short sysMetrics[SM_CMETRICS];
 
-
 #endif
diff --git a/include/win.h b/include/win.h
index 8e093ba..d47cb2c 100644
--- a/include/win.h
+++ b/include/win.h
@@ -72,6 +72,7 @@
 BOOL WIN_UnlinkWindow( HWND hwnd );
 BOOL WIN_LinkWindow( HWND hwnd, HWND hwndInsertAfter );
 HWND WIN_FindWinToRepaint( HWND hwnd );
+BOOL WIN_CreateDesktopWindow(void);
 BOOL WINPOS_IsAnActiveWindow( HWND hwnd );
 void WINPOS_ActivateChild( HWND hwnd );
 
diff --git a/include/windows.h b/include/windows.h
index d4ef6e1..cb60ce0 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -3,87 +3,14 @@
 #ifndef WINDOWS_H
 #define WINDOWS_H
 
-#ifndef _WINARGS
+#include <wintypes.h>
 
-typedef short	INT;
-typedef unsigned short UINT;
-typedef unsigned short WORD;
-typedef unsigned long DWORD;
-typedef unsigned short BOOL;
-typedef unsigned char BYTE;
-typedef long LONG;
-typedef UINT WPARAM;
-typedef LONG LPARAM;
-typedef LONG LRESULT;
-typedef WORD HANDLE;
-typedef DWORD HHOOK;
-typedef char *LPSTR;
-typedef const char *LPCSTR;
-typedef char *NPSTR;
-typedef INT *LPINT;
-typedef UINT *LPUINT;
-typedef WORD *LPWORD;
-typedef DWORD *LPDWORD;
-typedef LONG *LPLONG;
-typedef void *LPVOID;
-typedef long (*FARPROC)();
-typedef FARPROC DLGPROC;
-typedef int CATCHBUF[9];
-typedef int *LPCATCHBUF;
-typedef FARPROC HOOKPROC;
-#define DECLARE_HANDLE(a) typedef HANDLE a;
+#pragma pack(1)
 
-DECLARE_HANDLE(HTASK);
-DECLARE_HANDLE(HDRVR);
-DECLARE_HANDLE(HWND);
-DECLARE_HANDLE(HDC);
-DECLARE_HANDLE(HCLASS);
-DECLARE_HANDLE(HCURSOR);
-DECLARE_HANDLE(HFONT);
-DECLARE_HANDLE(HPEN);
-DECLARE_HANDLE(HRGN);
-DECLARE_HANDLE(HPALETTE);
-DECLARE_HANDLE(HICON);
-DECLARE_HANDLE(HINSTANCE);
-DECLARE_HANDLE(HMENU);
-DECLARE_HANDLE(HBITMAP);
-DECLARE_HANDLE(HBRUSH);
-DECLARE_HANDLE(LOCALHANDLE);
-DECLARE_HANDLE(HMETAFILE);
-DECLARE_HANDLE(HDWP);
-
-#define TRUE 1
-#define FALSE 0
-#define CW_USEDEFAULT ((INT)0x8000)
-#define FAR
-#define NEAR
-#define PASCAL
-#define VOID                void
-#define WINAPI              PASCAL
-#define CALLBACK            PASCAL
-#ifndef NULL
-#define NULL (void *)0
-#endif
-
-#define LOBYTE(w)           ((BYTE)(w))
-#define HIBYTE(w)           ((BYTE)((UINT)(w) >> 8))
-
-#define LOWORD(l)           ((WORD)(l))
-#define HIWORD(l)           ((WORD)((DWORD)(l) >> 16))
-
-#define MAKELONG(low, high) ((LONG)(((WORD)(low)) | \
-				    (((DWORD)((WORD)(high))) << 16)))
-
-#ifndef max
-#define max(a,b) (((a) > (b)) ? (a) : (b))
-#endif
-
-#ifndef min
-#define min(a,b) (((a) < (b)) ? (a) : (b))
-#endif
-
-
-typedef struct { INT x, y; } POINT;
+typedef struct { 
+	INT x;
+	INT y; 
+} POINT;
 typedef POINT *PPOINT;
 typedef POINT *NPPOINT;
 typedef POINT *LPPOINT;
@@ -116,13 +43,6 @@
 typedef PAINTSTRUCT *NPPAINTSTRUCT;
 typedef PAINTSTRUCT *LPPAINTSTRUCT;
 
-#ifdef WINELIB
-#define WINE_PACKED
-#else
-#define WINE_PACKED __attribute__ ((packed))
-#endif
-
-#pragma pack(1)
 
   /* Window classes */
 
@@ -2363,7 +2283,6 @@
 #define Fn(ret,name,t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13,t14,a14) ret name(t1 a1,t2 a2,t3 a3,t4 a4,t5 a5,t6 a6,t7 a7,t8 a8,t9 a9,t10 a10,t11 a11,t12 a12,t13 a13,t14 a14);
 
 int wsprintf(LPSTR a,LPSTR b,...);
-#endif
 
 /* Implemented functions */
 
diff --git a/include/wine.h b/include/wine.h
index cc2ef88..cf7dfdc 100644
--- a/include/wine.h
+++ b/include/wine.h
@@ -32,21 +32,16 @@
 	unsigned long oldmask;
 	unsigned long cr2;
 };
-#endif
-
-#ifdef linux
 #define WINE_DATA_SELECTOR 0x2b
 #define WINE_CODE_SELECTOR 0x23
 #endif
-#if defined(__NetBSD__) || defined(__FreeBSD__)
-#define WINE_DATA_SELECTOR 0x27
-#define WINE_CODE_SELECTOR 0x1f
-#endif
 
 #if defined(__NetBSD__) || defined(__FreeBSD__)
 #include <signal.h>
 #define sigcontext_struct sigcontext
 #define HZ 100
+#define WINE_DATA_SELECTOR 0x27
+#define WINE_CODE_SELECTOR 0x1f
 #endif
 
 #endif /* WINE_H */
diff --git a/include/winpos.h b/include/winpos.h
index 837a5b3..0d58c53 100644
--- a/include/winpos.h
+++ b/include/winpos.h
@@ -9,6 +9,15 @@
 
 #define DWP_MAGIC  0x5057  /* 'WP' */
 
+extern HWND WINPOS_ChangeActiveWindow( HWND hwnd, BOOL mouseMsg ); /*winpos.c*/
+extern void WINPOS_GetMinMaxInfo( HWND hwnd, POINT *maxSize, POINT *maxPos,
+			    POINT *minTrack, POINT *maxTrack );  /* winpos.c */
+extern LONG WINPOS_SendNCCalcSize( HWND hwnd, BOOL calcValidRect,
+				   RECT *newWindowRect, RECT *oldWindowRect,
+				   RECT *oldClientRect, WINDOWPOS *winpos,
+				   RECT *newClientRect );  /* winpos.c */
+extern LONG WINPOS_HandleWindowPosChanging( WINDOWPOS *winpos ); /* winpos.c */
+
 typedef struct
 {
     WORD        actualCount;
diff --git a/include/wintypes.h b/include/wintypes.h
new file mode 100644
index 0000000..da99fed
--- /dev/null
+++ b/include/wintypes.h
@@ -0,0 +1,92 @@
+#ifndef __WINE_WINTYPES_H
+#define __WINE_WINTYPES_H
+
+typedef short	INT;
+typedef unsigned short UINT;
+typedef unsigned short WORD;
+typedef unsigned long DWORD;
+typedef unsigned short BOOL;
+typedef unsigned char BYTE;
+typedef long LONG;
+typedef UINT WPARAM;
+typedef LONG LPARAM;
+typedef LONG LRESULT;
+typedef WORD HANDLE;
+typedef DWORD HHOOK;
+typedef char *LPSTR;
+typedef const char *LPCSTR;
+typedef char *NPSTR;
+typedef INT *LPINT;
+typedef UINT *LPUINT;
+typedef WORD *LPWORD;
+typedef DWORD *LPDWORD;
+typedef LONG *LPLONG;
+typedef void *LPVOID;
+typedef long (*FARPROC)();
+typedef FARPROC DLGPROC;
+typedef int CATCHBUF[9];
+typedef int *LPCATCHBUF;
+typedef FARPROC HOOKPROC;
+
+#define DECLARE_HANDLE(a) typedef HANDLE a;
+
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HDRVR);
+DECLARE_HANDLE(HWND);
+DECLARE_HANDLE(HDC);
+DECLARE_HANDLE(HCLASS);
+DECLARE_HANDLE(HCURSOR);
+DECLARE_HANDLE(HFONT);
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HPALETTE);
+DECLARE_HANDLE(HICON);
+DECLARE_HANDLE(HINSTANCE);
+DECLARE_HANDLE(HMENU);
+DECLARE_HANDLE(HBITMAP);
+DECLARE_HANDLE(HBRUSH);
+DECLARE_HANDLE(LOCALHANDLE);
+DECLARE_HANDLE(HMETAFILE);
+DECLARE_HANDLE(HDWP);
+DECLARE_HANDLE(HDROP);
+
+#define TRUE 1
+#define FALSE 0
+#define CW_USEDEFAULT ((INT)0x8000)
+#define FAR
+#define NEAR
+#define PASCAL
+#define VOID                void
+#define WINAPI              PASCAL
+#define CALLBACK            PASCAL
+
+#ifndef NULL
+#define NULL (void *)0
+#endif
+
+#ifdef WINELIB
+#define WINE_PACKED
+#else
+#define WINE_PACKED __attribute__ ((packed))
+#endif
+
+#pragma pack(1)
+
+#define LOBYTE(w)           ((BYTE)(w))
+#define HIBYTE(w)           ((BYTE)((UINT)(w) >> 8))
+
+#define LOWORD(l)           ((WORD)(l))
+#define HIWORD(l)           ((WORD)((DWORD)(l) >> 16))
+
+#define MAKELONG(low, high) ((LONG)(((WORD)(low)) | \
+				    (((DWORD)((WORD)(high))) << 16)))
+
+#ifndef max
+#define max(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+
+#ifndef min
+#define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#endif /* __WINE_WINTYPES_H */