Release 950727

Sat Jul 22 22:39:09 IDT 1995 Michael Veksler <e1678223@tochnapc2.technion.ac.il>

	* [ipc/*]
	New directory. This directory contains the new inter-wine
 	communications support. It enables DDE protocols between two wine
 	instances.  Currently it is limited to DDE, but can be enhanced to
 	support OLE between 2 different wine instances.  This is very
 	important for libwine.a DDE/OLE support.

	* [tools/ipcl]
    	A script to delete garbage IPC handles (shared memory, semaphores
 	and message queues).  The current inter-wine communication is not
 	perfect, and sometimes leaves garbage behind.

	* [if1632/relay.c] [include/atom.h] [include/global.h]
 	[loader/selector.c] [loader/task.c] [loader/module.c]
 	[loader/signal.c] [memory/global.c] [misc/atom.c]
 	[windows/class.c] [windows/message.c] [windows/win.c]
	[Imakefile]
    	Hooks for inter-wine DDE support, current Global.*Atom functions
 	renamed to Local.*Atom since Global.*Atom are used for Inter-Wine
 	DDE communication. (The first call to these functions sets up the
 	IPC structures - which otherwise cause unneeded overhead.

Mon Jul 17 19:55:21 1995  Alexandre Julliard  <julliard@sunsite.unc.edu>

	* [controls/menu.c]
	Don't crash if a NULL string is passed to menu functions.

	* [memory/selector.c]
	We now use a bit in ldt_flags_copy to indicate free LDT entries.
	Fixed a bug in SELECTOR_ReallocBlock that could cause it to
	overwrite valid LDT entries when growing a block.

	* [miscemu/instr.c]
	Emulate int xx instruction by storing the interrupt vector in
	CS:IP and returning directly. This allows a program to install an
	interrupt vector.

	* [windows/win.c]
	Added function WIN_GetTopParent to get the top-level parent of a
	window.

Sun Jul  16 18:17:17 1995  Gregory Trubetskoy <grisha@mira.com>

        * [loader/resource.c]
        Added LoadIconHandler. It doesn't do anything yet, but now you
        can use borland help files with winhelp.exe.

Sun Jul 16 11:58:45 1995 Anand Kumria <akumria@ozemail.com.au>

	* [misc/main.c]
	Fixed to return 386 Enhanced mode correctly. Also return the same
 	type of CPU, for both Enhanced and Standard mode, namely a 386.

Sun Jul 16 00:02:04 1995    Martin von Loewis <loewis@informatik.hu-berlin.de>

	* [Configure] [include/options.h] [include/wineopts.h]
	  [misc/main.c][misc/spy.c]
	  Removed support of spy file. Redirected spy messages to stddeb.
	  Removed -spy option. Added -debugmsg +spy option.

	* [debugger/dbg.y][debugger/debug.l]
	Enabled segmented addresses (seg:offs) for break and x commands.

	* [if1632/gdi.spec] [objects/region.c] [windows/graphics.c]
	  [include/region.h]
	FrameRgn, REGION_FrameRgn: New functions

	* [if1632/kernel.spec]
	IsWinOldApTask: Return false

	* [if1632/mouse.spec]
	CplApplet: Removed

	* [if1632/user.spec] [windows/win.c]
	ShowOwnedPopups: New function

	* [if1632/winsock.spec] [misc/winsocket.c]
	inet_addr, select: New prototypes in relay code
	Fixed memory layout for netdb functions (getXbyY).
	WINSOCK_ioctlsocket: Translated FIONREAD, FIONBIO, and FIOASYNC

	* [objects/clipping.c]
	RectVisible: Fixed call to LPToDP

	* [rc/winerc.c]
	main: Removed extra argument to getopt for Linux.

Tue Jul 11 00:14:41 1995   Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>

        * [controls/listbox.c]
	Yet another fix for ListBoxDirectory().
	
	* [loader/module.c] [if1632/kernel.spec]
	Make GetModuleHandle() accept instance handles as parameter.

        * [if1632/relay.c] [loader/task.c]
	Put a magic cookie at the bottom of the 32 bit stack, and check on
	each return from a 32 bit function whether it's still there. Complain
	if it's not.

        * [if1632/user.spec]
	Wrong entry for CloseDriver().

	* [misc/dos_fs.c] [loader/task.c] [include/dos_fs.h] [misc/file.c]
	[miscemu/int21.c]
	Large parts of dos_fs.c simplified. Changed it to use one
	current drive/directory per task, which is set to the module path on
	task creation.
	Prevent CorelPaint from closing stdin.
	open() with O_CREAT set must be passed three parameters.
	DOS FindFirst()/FindNext() could crash when FA_LABEL was set. Fixed,
	it's in DOS_readdir() now.

	* [misc/profile.c]
	Some badly written software (Lotus Freelance Graphics) passes a bogus
	size parameter that caused Wine to write off the end of a segment.
	Fixed. (It's probably too paranoid now.)
	
	* [multimedia/mmsystem.c] [multimedia/time.c] [multimedia/joystick.c]
	[multimedia/Imakefile] [if1632/winprocs.spec]
	16 bit entry point for MMSysTimeCallback.
	Split off time.c and joystick.c from mmsystem.c.
	
	* [objects/dib.c]
	GetDIBits(): call XGetImage() via CallTo32_LargeStack.

        * [windows/cursor.c]
	DestroyCursor(): do nothing for builtin cursors.
	
	* [windows/mdi.c]
	Half of WM_MDISETMENU implemented.
	
	* [windows/win.c]
	EnumWindows() and EnumTaskWindows() never enumerated any windows.
	Fixed.

	* [windows/*.c]
	Fixed GetParent() to return correct values for owned windows.

	* [windows/message.c]
	Don't try to activate disabled top-level windows.

        * [windows/nonclient.c]
	Work around a bug in gcc-2.7.0.
	
	* [tools/build.c] [include/stackframe.h] [memory/global.c] 
	[loader/task.c] [memory/selector.c]
	Some Visual Basic programs (and possibly others, too) expect ES to be 
	preserved by a call to an API function, so we have to save it.
	In GlobalFree() and FreeSelector(), we must clear CURRENT_STACK16->es 
	to prevent segfaults if ES contained the selector to be freed.

Sun Jul  9 20:21:20 1995  Jon Tombs  <jon@gtex02.us.es>

	* [*/*]
	Added missing prototypes to header files and relevant includes
	to reduce compile time warnings.

Sun Jul  9 18:32:56 1995  Michael Patra  <micky@marie.physik.tu-berlin.de>

	* [configure.in] [include/config.h] [*/Makefile.in]
	New configuration scheme based on autoconf.

Sat Jul  8 14:12:45 1995  Morten Welinder  <terra+@cs.cmu.edu>

	* [miscemu/ioports.c]
	Revamp to have only one in- and one out- variant, both really
 	implemented.

	* [miscemu/instr.c]
	INSTR_EmulateInstruction: Use new ioport interface.  Implement
 	string io.  Correct instruction pointer for 32-bit code.

	* [include/miscemu.h]
	Update port function prototypes.

	* [include/registers.h]
	Defined FS and GS.

Sat Jul  8 13:38:54 1995  Hans de Graaff  <graaff@twi72.twi.tudelft.nl>

	* [misc/dos_fs.c]
	ChopOffSlash(): A path consisting off a single slash is left
 	intact, and multiple slashes are all removed.
diff --git a/if1632/Makefile.in b/if1632/Makefile.in
new file mode 100644
index 0000000..71ea491
--- /dev/null
+++ b/if1632/Makefile.in
@@ -0,0 +1,88 @@
+CC 	= @CC@
+CFLAGS 	= @CFLAGS@
+XINCL 	= @x_includes@
+TOPSRC  = @top_srcdir@
+DIVINCL = -I$(TOPSRC)/include
+LD	= @LD@
+LDCOMBINEFLAGS = @LDCOMBINEFLAGS@
+BUILD	= $(TOPSRC)/tools/build
+@SET_MAKE@
+
+
+MODULE 	= if1632
+
+SRCS 	= callback.c relay.c relay32.c
+
+DLLS16	= commdlg.spec compobj.spec ddeml.spec gdi.spec kernel.spec \
+	keyboard.spec mmsystem.spec mouse.spec ole2.spec ole2conv.spec \
+	ole2disp.spec ole2nls.spec ole2prox.spec olecli.spec olesvr.spec \
+	shell.spec sound.spec storage.spec stress.spec system.spec \
+	toolhelp.spec user.spec win87em.spec winprocs.spec winsock.spec
+
+DLLS32	= gdi32.spec kernel32.spec shell32.spec user32.spec winprocs32.spec
+
+
+OBJS = $(SRCS:.c=.o) $(DLLS16:.spec=.o) $(DLLS32:.spec=.o) call16.o call32.o
+
+SFILES = $(DLLS16:.spec=.S)
+
+.SUFFIXES: .spec
+
+.c.o:
+	$(CC) -c $(CFLAGS) $(XINCL) $(DIVINCL) -o $*.o $<
+
+.spec.S:
+	$(BUILD) -spec16 $< > $*.S
+
+.S.o:
+	$(CC) -c -o $*.o $<  
+
+all: checkbuild $(MODULE).o
+
+gdi32.c: gdi32.spec
+	$(BUILD) -spec32 gdi32.spec > gdi32.c
+
+kernel32.c: kernel32.spec
+	$(BUILD) -spec32 kernel32.spec > kernel32.c
+
+shell32.c: shell32.spec
+	$(BUILD) -spec32 shell32.spec > shell32.c
+
+user32.c: user32.spec
+	$(BUILD) -spec32 user32.spec > user32.c
+
+winprocs32.c: winprocs32.spec
+	$(BUILD) -spec32 winprocs32.spec > winprocs32.c
+
+checkbuild:
+	(cd $(TOPSRC)/tools; $(MAKE) 'CC=$(CC)' 'CFLAGS=$(CFLAGS)' 'LD=$(LD)' 'LDCOMBINEFLAGS=$(LDCOMBINEFLAGS)')
+
+call16.S: $(TOPSRC)/include/callback.h
+	$(TOPSRC)/tools/build -call16 `cat $(TOPSRC)/include/callback.h | grep "extern.*CallTo16_" | sed 's/.*CallTo16_\(.*\)(.*/\1/' | sort | uniq` > call16.S
+
+call32.S: $(SFILES)
+	$(BUILD) -call32 `cat $(SFILES) | grep CallTo32_ | sed 's/.*CallTo32_\(.*\)/\1/' | sort | uniq` > call32.S
+
+
+$(MODULE).o: $(OBJS)
+	$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $(MODULE).o
+
+depend:
+	sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
+	$(CC) $(DIVINCL) $(XINCL) -MM callback.c relay32.c relay.c >> tmp_make
+	cp tmp_make Makefile
+	rm tmp_make
+
+clean:
+	rm -f *.o \#*\# *~ *.S gdi32.c kernel32.c shell32.c user32.c winprocs32.c tmp_make
+
+distclean: clean
+	rm Makefile
+
+countryclean:
+
+winelibclean:
+ 
+dummy:
+
+### Dependencies:
diff --git a/if1632/gdi.spec b/if1632/gdi.spec
index 94a31ec..7b302ad 100644
--- a/if1632/gdi.spec
+++ b/if1632/gdi.spec
@@ -47,7 +47,7 @@
 38  pascal Escape(word word word ptr ptr) Escape
 39  pascal16 RestoreDC(word s_word) RestoreDC
 40  pascal16 FillRgn(word word word) FillRgn
-41  stub FrameRgn
+41  pascal16 FrameRgn(word word word word word) FrameRgn
 42  pascal16 InvertRgn(word word) InvertRgn
 43  pascal16 PaintRgn(word word) PaintRgn
 44  pascal16 SelectClipRgn(word word) SelectClipRgn
diff --git a/if1632/kernel.spec b/if1632/kernel.spec
index e546d1d..a351242 100644
--- a/if1632/kernel.spec
+++ b/if1632/kernel.spec
@@ -42,7 +42,7 @@
 42  return DisableDos 0 0
 45  pascal16 LoadModule(ptr ptr) LoadModule
 46  pascal16 FreeModule(word) FreeModule
-47  pascal16 GetModuleHandle(ptr) GetModuleHandle
+47  pascal16 GetModuleHandle(segptr) WIN16_GetModuleHandle
 48  pascal16 GetModuleUsage(word) GetModuleUsage
 49  pascal16 GetModuleFileName(word ptr s_word) GetModuleFileName
 50  pascal GetProcAddress(word segptr) GetProcAddress
@@ -82,7 +82,7 @@
 84  pascal _llseek(word long word) _llseek
 85  pascal16 _lopen(ptr word) _lopen
 86  pascal16 _lwrite(word ptr word) _lwrite
-87 	stub RESERVED5
+87  pascal16 RESERVED5(ptr ptr) lstrcmp
 88  pascal lstrcpy(segptr segptr) lstrcpy
 89  pascal lstrcat(segptr segptr) lstrcat
 90  pascal16 lstrlen(ptr) lstrlen
@@ -146,7 +146,7 @@
 155 pascal16 GetTaskDS() GetTaskDS
 156 stub LimitEMSPages
 157 return GetCurPID 4 0
-158 stub IsWinOldApTask
+158 return IsWinOldApTask 2 0
 159 stub GlobalHandleNoRIP
 160 stub EMSCopy
 161 pascal16 LocalCountFree() LocalCountFree
diff --git a/if1632/keyboard.spec b/if1632/keyboard.spec
index afea764..af38f70 100644
--- a/if1632/keyboard.spec
+++ b/if1632/keyboard.spec
@@ -4,21 +4,21 @@
 #1	pascal	Inquire
 #2	pascal	Enable
 #3	pascal	Disable
-4	pascal	ToAscii(word word ptr ptr word) ToAscii
-5	pascal	AnsiToOem(ptr ptr) AnsiToOem
-6	pascal	OemToAnsi(ptr ptr) OemToAnsi
+4   pascal16 ToAscii(word word ptr ptr word) ToAscii
+5   pascal16 AnsiToOem(ptr ptr) AnsiToOem
+6   pascal16 OemToAnsi(ptr ptr) OemToAnsi
 #7	pascal	SetSpeed
 #100	pascal	ScreenSwitchEnable
 #126	pascal	GetTableSeg
 #127	pascal	NewTable
-128	pascal	OemKeyScan(word) OemKeyScan
-129	pascal	VkKeyScan(byte) VkKeyScan
-130	pascal	GetKeyboardType(byte) GetKeyboardType
-131	pascal	MapVirtualKey(word word) MapVirtualKey
-132	pascal	GetKbCodePage() GetKbCodePage
-133	pascal	GetKeyNameText(long ptr word) GetKeyNameText
-134	pascal	AnsiToOemBuff(ptr ptr word) AnsiToOemBuff
-135	pascal	OemToAnsiBuff(ptr ptr word) OemToAnsiBuff
+128 pascal   OemKeyScan(word) OemKeyScan
+129 pascal16 VkKeyScan(byte) VkKeyScan
+130 pascal16 GetKeyboardType(byte) GetKeyboardType
+131 pascal16 MapVirtualKey(word word) MapVirtualKey
+132 pascal16 GetKbCodePage() GetKbCodePage
+133 pascal16 GetKeyNameText(long ptr word) GetKeyNameText
+134 pascal16 AnsiToOemBuff(ptr ptr word) AnsiToOemBuff
+135 pascal16 OemToAnsiBuff(ptr ptr word) OemToAnsiBuff
 #136	pascal	EnableKbSysReq
 #137	pascal	GetBiosKeyProc
 
diff --git a/if1632/mouse.spec b/if1632/mouse.spec
index 879ecfc..0c04a8d 100644
--- a/if1632/mouse.spec
+++ b/if1632/mouse.spec
@@ -6,5 +6,6 @@
 3 stub DISABLE
 4 stub MOUSEGETINTVECT
 5 stub GETSETMOUSEDATA
-6 stub CPLAPPLET
+#Control Panel thinks this is implemented if it is available
+#6 stub CPLAPPLET
 7 stub POWEREVENTPROC
diff --git a/if1632/relay.c b/if1632/relay.c
index 1524517..72de966 100644
--- a/if1632/relay.c
+++ b/if1632/relay.c
@@ -8,6 +8,7 @@
 #include "dlls.h"
 #include "global.h"
 #include "module.h"
+#include "registers.h"
 #include "stackframe.h"
 #include "stddebug.h"
 /* #define DEBUG_RELAY */
@@ -80,7 +81,7 @@
 
     codesel = GLOBAL_CreateBlock( GMEM_FIXED, (void *)CALL16_Start,
                                    (int)CALL16_End - (int)CALL16_Start,
-                                   0, TRUE, TRUE, FALSE );
+                                   0, TRUE, TRUE, FALSE, NULL );
     if (!codesel) return FALSE;
 
       /* Patch the return addresses for CallTo16 routines */
@@ -97,7 +98,7 @@
 /***********************************************************************
  *           RELAY_DebugCall32
  */
-void RELAY_DebugCall32( char *args )
+void RELAY_DebugCall32( int func_type, char *args )
 {
     STACK16FRAME *frame;
     struct dll_table_s *table;
@@ -150,6 +151,13 @@
         if (*args) printf( "," );
     }
     printf( ") ret=%04x:%04x ds=%04x\n", frame->cs, frame->ip, frame->ds );
+
+    if (func_type == 2)  /* register function */
+    {
+        struct sigcontext_struct *context = (struct sigcontext_struct *)args16;
+        printf( "     AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08lx\n",
+                AX, BX, CX, DX, SI, DI, ES, EFL );
+    }
 }
 
 
@@ -162,6 +170,9 @@
     struct dll_table_s *table;
     char *name;
 
+    if (*(DWORD *)PTR_SEG_TO_LIN(IF1632_Stack32_base) != 0xDEADBEEF) {
+	fprintf(stderr, "Wine wrote past the end of the 32 bit stack. Please report this.\n");
+    }
     if (!debugging_relay) return;
 
     frame = CURRENT_STACK16;
diff --git a/if1632/user.spec b/if1632/user.spec
index b5512b3..8be2aa3 100644
--- a/if1632/user.spec
+++ b/if1632/user.spec
@@ -253,7 +253,7 @@
 250 pascal16 GetMenuState(word word word) GetMenuState
 251 pascal   SendDriverMessage(word word long long) SendDriverMessage
 252 pascal16 OpenDriver(ptr ptr long) OpenDriver
-253 pascal   CloseDriver(word word long) CloseDriver
+253 pascal   CloseDriver(word long long) CloseDriver
 254 pascal16 GetDriverModuleHandle(word) GetDriverModuleHandle
 255 pascal   DefDriverProc(long word word long long) DefDriverProc
 256 pascal16 GetDriverInfo(word ptr) GetDriverInfo
@@ -266,7 +266,7 @@
 262 pascal16 GetWindow(word word) GetWindow
 263 pascal16 GetMenuItemCount(word) GetMenuItemCount
 264 pascal16 GetMenuItemID(word word) GetMenuItemID
-265 stub ShowOwnedPopups
+265 pascal16 ShowOwnedPopups(word word) ShowOwnedPopups
 266 pascal16 SetMessageQueue(word) SetMessageQueue
 267 pascal16 ShowScrollBar(word word word) ShowScrollBar
 268 pascal16 GlobalAddAtom(ptr) GlobalAddAtom
@@ -371,7 +371,7 @@
                             word word word segptr) CreateWindowEx
 454 pascal16 AdjustWindowRectEx(ptr long word long) AdjustWindowRectEx
 455 stub GetIconId
-456 stub LoadIconHandler
+456 pascal16 LoadIconHandler(word word) LoadIconHandler
 457 pascal16 DestroyIcon(word) DestroyIcon
 458 pascal16 DestroyCursor(word) DestroyCursor
 459 pascal   DumpIcon(ptr ptr ptr ptr) DumpIcon
diff --git a/if1632/winprocs.spec b/if1632/winprocs.spec
index 8a0e88d..b95e074 100644
--- a/if1632/winprocs.spec
+++ b/if1632/winprocs.spec
@@ -25,23 +25,265 @@
 22 pascal ComboLBoxWndProc(word word word long) ComboLBoxWndProc
 23 pascal16 CARET_Callback(word word word long) CARET_Callback
 24 pascal16 TASK_Reschedule() TASK_Reschedule
+25 pascal MMSysTimeCallback(word word word long) MMSysTimeCallback
 
 # Interrupt vectors 0-255 are ordinals 100-355
-# Undefined functions are mapped to the dummy handler (ordinal 356)
 # The 'word' parameter are the flags pushed on the stack by the interrupt
-
+100 register INT_Int00Handler(word) INT_DummyHandler
+101 register INT_Int01Handler(word) INT_DummyHandler
+102 register INT_Int02Handler(word) INT_DummyHandler
+103 register INT_Int03Handler(word) INT_DummyHandler
+104 register INT_Int04Handler(word) INT_DummyHandler
+105 register INT_Int05Handler(word) INT_DummyHandler
+106 register INT_Int06Handler(word) INT_DummyHandler
+107 register INT_Int07Handler(word) INT_DummyHandler
+108 register INT_Int08Handler(word) INT_DummyHandler
+109 register INT_Int09Handler(word) INT_DummyHandler
+110 register INT_Int0aHandler(word) INT_DummyHandler
+111 register INT_Int0bHandler(word) INT_DummyHandler
+112 register INT_Int0cHandler(word) INT_DummyHandler
+113 register INT_Int0dHandler(word) INT_DummyHandler
+114 register INT_Int0eHandler(word) INT_DummyHandler
+115 register INT_Int0fHandler(word) INT_DummyHandler
 116 register INT_Int10Handler(word) INT_Int10Handler
+117 register INT_Int11Handler(word) INT_Int11Handler
+118 register INT_Int12Handler(word) INT_Int12Handler
 119 register INT_Int13Handler(word) INT_Int13Handler
+120 register INT_Int14Handler(word) INT_DummyHandler
 121 register INT_Int15Handler(word) INT_Int15Handler
 122 register INT_Int16Handler(word) INT_Int16Handler
+123 register INT_Int17Handler(word) INT_DummyHandler
+124 register INT_Int18Handler(word) INT_DummyHandler
+125 register INT_Int19Handler(word) INT_DummyHandler
 126 register INT_Int1aHandler(word) INT_Int1aHandler
-133 register INT_Int21Handler(word) INT_Int21Handler
-137 register INT_Int25Handler(word) INT_Int25Handler
-138 register INT_Int26Handler(word) INT_Int26Handler
+127 register INT_Int1bHandler(word) INT_DummyHandler
+128 register INT_Int1cHandler(word) INT_DummyHandler
+129 register INT_Int1dHandler(word) INT_DummyHandler
+130 register INT_Int1eHandler(word) INT_DummyHandler
+131 register INT_Int1fHandler(word) INT_DummyHandler
+132 register INT_Int20Handler(word) INT_DummyHandler
+133 register INT_Int21Handler(word) DOS3Call
+134 register INT_Int22Handler(word) INT_DummyHandler
+135 register INT_Int23Handler(word) INT_DummyHandler
+136 register INT_Int24Handler(word) INT_DummyHandler
+# 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 register INT_Int27Handler(word) INT_DummyHandler
+140 register INT_Int28Handler(word) INT_DummyHandler
+141 register INT_Int29Handler(word) INT_DummyHandler
 142 register INT_Int2aHandler(word) INT_Int2aHandler
+143 register INT_Int2bHandler(word) INT_DummyHandler
+144 register INT_Int2cHandler(word) INT_DummyHandler
+145 register INT_Int2dHandler(word) INT_DummyHandler
+146 register INT_Int2eHandler(word) INT_DummyHandler
 147 register INT_Int2fHandler(word) INT_Int2fHandler
+148 register INT_Int30Handler(word) INT_DummyHandler
 149 register INT_Int31Handler(word) INT_Int31Handler
-192 register INT_Int5cHandler(word) INT_Int5cHandler
+150 register INT_Int32Handler(word) INT_DummyHandler
+151 register INT_Int33Handler(word) INT_DummyHandler
+152 register INT_Int34Handler(word) INT_DummyHandler
+153 register INT_Int35Handler(word) INT_DummyHandler
+154 register INT_Int36Handler(word) INT_DummyHandler
+155 register INT_Int37Handler(word) INT_DummyHandler
+156 register INT_Int38Handler(word) INT_DummyHandler
+157 register INT_Int39Handler(word) INT_DummyHandler
+158 register INT_Int3aHandler(word) INT_DummyHandler
+159 register INT_Int3bHandler(word) INT_DummyHandler
+160 register INT_Int3cHandler(word) INT_DummyHandler
+161 register INT_Int3dHandler(word) INT_DummyHandler
+162 register INT_Int3eHandler(word) INT_DummyHandler
+163 register INT_Int3fHandler(word) INT_DummyHandler
+164 register INT_Int40Handler(word) INT_DummyHandler
+165 register INT_Int41Handler(word) INT_DummyHandler
+166 register INT_Int42Handler(word) INT_DummyHandler
+167 register INT_Int43Handler(word) INT_DummyHandler
+168 register INT_Int44Handler(word) INT_DummyHandler
+169 register INT_Int45Handler(word) INT_DummyHandler
+170 register INT_Int46Handler(word) INT_DummyHandler
+171 register INT_Int47Handler(word) INT_DummyHandler
+172 register INT_Int48Handler(word) INT_DummyHandler
+173 register INT_Int49Handler(word) INT_DummyHandler
+174 register INT_Int4aHandler(word) INT_DummyHandler
+175 register INT_Int4bHandler(word) INT_DummyHandler
+176 register INT_Int4cHandler(word) INT_DummyHandler
+177 register INT_Int4dHandler(word) INT_DummyHandler
+178 register INT_Int4eHandler(word) INT_DummyHandler
+179 register INT_Int4fHandler(word) INT_DummyHandler
+180 register INT_Int50Handler(word) INT_DummyHandler
+181 register INT_Int51Handler(word) INT_DummyHandler
+182 register INT_Int52Handler(word) INT_DummyHandler
+183 register INT_Int53Handler(word) INT_DummyHandler
+184 register INT_Int54Handler(word) INT_DummyHandler
+185 register INT_Int55Handler(word) INT_DummyHandler
+186 register INT_Int56Handler(word) INT_DummyHandler
+187 register INT_Int57Handler(word) INT_DummyHandler
+188 register INT_Int58Handler(word) INT_DummyHandler
+189 register INT_Int59Handler(word) INT_DummyHandler
+190 register INT_Int5aHandler(word) INT_DummyHandler
+191 register INT_Int5bHandler(word) INT_DummyHandler
+192 register INT_Int5cHandler(word) NetBIOSCall
+193 register INT_Int5dHandler(word) INT_DummyHandler
+194 register INT_Int5eHandler(word) INT_DummyHandler
+195 register INT_Int5fHandler(word) INT_DummyHandler
+196 register INT_Int60Handler(word) INT_DummyHandler
+197 register INT_Int61Handler(word) INT_DummyHandler
+198 register INT_Int62Handler(word) INT_DummyHandler
+199 register INT_Int63Handler(word) INT_DummyHandler
+200 register INT_Int64Handler(word) INT_DummyHandler
+201 register INT_Int65Handler(word) INT_DummyHandler
+202 register INT_Int66Handler(word) INT_DummyHandler
+203 register INT_Int67Handler(word) INT_DummyHandler
+204 register INT_Int68Handler(word) INT_DummyHandler
+205 register INT_Int69Handler(word) INT_DummyHandler
+206 register INT_Int6aHandler(word) INT_DummyHandler
+207 register INT_Int6bHandler(word) INT_DummyHandler
+208 register INT_Int6cHandler(word) INT_DummyHandler
+209 register INT_Int6dHandler(word) INT_DummyHandler
+210 register INT_Int6eHandler(word) INT_DummyHandler
+211 register INT_Int6fHandler(word) INT_DummyHandler
+212 register INT_Int70Handler(word) INT_DummyHandler
+213 register INT_Int71Handler(word) INT_DummyHandler
+214 register INT_Int72Handler(word) INT_DummyHandler
+215 register INT_Int73Handler(word) INT_DummyHandler
+216 register INT_Int74Handler(word) INT_DummyHandler
+217 register INT_Int75Handler(word) INT_DummyHandler
+218 register INT_Int76Handler(word) INT_DummyHandler
+219 register INT_Int77Handler(word) INT_DummyHandler
+220 register INT_Int78Handler(word) INT_DummyHandler
+221 register INT_Int79Handler(word) INT_DummyHandler
+222 register INT_Int7aHandler(word) INT_DummyHandler
+223 register INT_Int7bHandler(word) INT_DummyHandler
+224 register INT_Int7cHandler(word) INT_DummyHandler
+225 register INT_Int7dHandler(word) INT_DummyHandler
+226 register INT_Int7eHandler(word) INT_DummyHandler
+227 register INT_Int7fHandler(word) INT_DummyHandler
+228 register INT_Int80Handler(word) INT_DummyHandler
+229 register INT_Int81Handler(word) INT_DummyHandler
+230 register INT_Int82Handler(word) INT_DummyHandler
+231 register INT_Int83Handler(word) INT_DummyHandler
+232 register INT_Int84Handler(word) INT_DummyHandler
+233 register INT_Int85Handler(word) INT_DummyHandler
+234 register INT_Int86Handler(word) INT_DummyHandler
+235 register INT_Int87Handler(word) INT_DummyHandler
+236 register INT_Int88Handler(word) INT_DummyHandler
+237 register INT_Int89Handler(word) INT_DummyHandler
+238 register INT_Int8aHandler(word) INT_DummyHandler
+239 register INT_Int8bHandler(word) INT_DummyHandler
+240 register INT_Int8cHandler(word) INT_DummyHandler
+241 register INT_Int8dHandler(word) INT_DummyHandler
+242 register INT_Int8eHandler(word) INT_DummyHandler
+243 register INT_Int8fHandler(word) INT_DummyHandler
+244 register INT_Int90Handler(word) INT_DummyHandler
+245 register INT_Int91Handler(word) INT_DummyHandler
+246 register INT_Int92Handler(word) INT_DummyHandler
+247 register INT_Int93Handler(word) INT_DummyHandler
+248 register INT_Int94Handler(word) INT_DummyHandler
+249 register INT_Int95Handler(word) INT_DummyHandler
+250 register INT_Int96Handler(word) INT_DummyHandler
+251 register INT_Int97Handler(word) INT_DummyHandler
+252 register INT_Int98Handler(word) INT_DummyHandler
+253 register INT_Int99Handler(word) INT_DummyHandler
+254 register INT_Int9aHandler(word) INT_DummyHandler
+255 register INT_Int9bHandler(word) INT_DummyHandler
+256 register INT_Int9cHandler(word) INT_DummyHandler
+257 register INT_Int9dHandler(word) INT_DummyHandler
+258 register INT_Int9eHandler(word) INT_DummyHandler
+259 register INT_Int9fHandler(word) INT_DummyHandler
+260 register INT_Inta0Handler(word) INT_DummyHandler
+261 register INT_Inta1Handler(word) INT_DummyHandler
+262 register INT_Inta2Handler(word) INT_DummyHandler
+263 register INT_Inta3Handler(word) INT_DummyHandler
+264 register INT_Inta4Handler(word) INT_DummyHandler
+265 register INT_Inta5Handler(word) INT_DummyHandler
+266 register INT_Inta6Handler(word) INT_DummyHandler
+267 register INT_Inta7Handler(word) INT_DummyHandler
+268 register INT_Inta8Handler(word) INT_DummyHandler
+269 register INT_Inta9Handler(word) INT_DummyHandler
+270 register INT_IntaaHandler(word) INT_DummyHandler
+271 register INT_IntabHandler(word) INT_DummyHandler
+272 register INT_IntacHandler(word) INT_DummyHandler
+273 register INT_IntadHandler(word) INT_DummyHandler
+274 register INT_IntaeHandler(word) INT_DummyHandler
+275 register INT_IntafHandler(word) INT_DummyHandler
+276 register INT_Intb0Handler(word) INT_DummyHandler
+277 register INT_Intb1Handler(word) INT_DummyHandler
+278 register INT_Intb2Handler(word) INT_DummyHandler
+279 register INT_Intb3Handler(word) INT_DummyHandler
+280 register INT_Intb4Handler(word) INT_DummyHandler
+281 register INT_Intb5Handler(word) INT_DummyHandler
+282 register INT_Intb6Handler(word) INT_DummyHandler
+283 register INT_Intb7Handler(word) INT_DummyHandler
+284 register INT_Intb8Handler(word) INT_DummyHandler
+285 register INT_Intb9Handler(word) INT_DummyHandler
+286 register INT_IntbaHandler(word) INT_DummyHandler
+287 register INT_IntbbHandler(word) INT_DummyHandler
+288 register INT_IntbcHandler(word) INT_DummyHandler
+289 register INT_IntbdHandler(word) INT_DummyHandler
+290 register INT_IntbeHandler(word) INT_DummyHandler
+291 register INT_IntbfHandler(word) INT_DummyHandler
+292 register INT_Intc0Handler(word) INT_DummyHandler
+293 register INT_Intc1Handler(word) INT_DummyHandler
+294 register INT_Intc2Handler(word) INT_DummyHandler
+295 register INT_Intc3Handler(word) INT_DummyHandler
+296 register INT_Intc4Handler(word) INT_DummyHandler
+297 register INT_Intc5Handler(word) INT_DummyHandler
+298 register INT_Intc6Handler(word) INT_DummyHandler
+299 register INT_Intc7Handler(word) INT_DummyHandler
+300 register INT_Intc8Handler(word) INT_DummyHandler
+301 register INT_Intc9Handler(word) INT_DummyHandler
+302 register INT_IntcaHandler(word) INT_DummyHandler
+303 register INT_IntcbHandler(word) INT_DummyHandler
+304 register INT_IntccHandler(word) INT_DummyHandler
+305 register INT_IntcdHandler(word) INT_DummyHandler
+306 register INT_IntceHandler(word) INT_DummyHandler
+307 register INT_IntcfHandler(word) INT_DummyHandler
+308 register INT_Intd0Handler(word) INT_DummyHandler
+309 register INT_Intd1Handler(word) INT_DummyHandler
+310 register INT_Intd2Handler(word) INT_DummyHandler
+311 register INT_Intd3Handler(word) INT_DummyHandler
+312 register INT_Intd4Handler(word) INT_DummyHandler
+313 register INT_Intd5Handler(word) INT_DummyHandler
+314 register INT_Intd6Handler(word) INT_DummyHandler
+315 register INT_Intd7Handler(word) INT_DummyHandler
+316 register INT_Intd8Handler(word) INT_DummyHandler
+317 register INT_Intd9Handler(word) INT_DummyHandler
+318 register INT_IntdaHandler(word) INT_DummyHandler
+319 register INT_IntdbHandler(word) INT_DummyHandler
+320 register INT_IntdcHandler(word) INT_DummyHandler
+321 register INT_IntddHandler(word) INT_DummyHandler
+322 register INT_IntdeHandler(word) INT_DummyHandler
+323 register INT_IntdfHandler(word) INT_DummyHandler
+324 register INT_Inte0Handler(word) INT_DummyHandler
+325 register INT_Inte1Handler(word) INT_DummyHandler
+326 register INT_Inte2Handler(word) INT_DummyHandler
+327 register INT_Inte3Handler(word) INT_DummyHandler
+328 register INT_Inte4Handler(word) INT_DummyHandler
+329 register INT_Inte5Handler(word) INT_DummyHandler
+330 register INT_Inte6Handler(word) INT_DummyHandler
+331 register INT_Inte7Handler(word) INT_DummyHandler
+332 register INT_Inte8Handler(word) INT_DummyHandler
+333 register INT_Inte9Handler(word) INT_DummyHandler
+334 register INT_InteaHandler(word) INT_DummyHandler
+335 register INT_IntebHandler(word) INT_DummyHandler
+336 register INT_IntecHandler(word) INT_DummyHandler
+337 register INT_IntedHandler(word) INT_DummyHandler
+338 register INT_InteeHandler(word) INT_DummyHandler
+339 register INT_IntefHandler(word) INT_DummyHandler
+340 register INT_Intf0Handler(word) INT_DummyHandler
+341 register INT_Intf1Handler(word) INT_DummyHandler
+342 register INT_Intf2Handler(word) INT_DummyHandler
+343 register INT_Intf3Handler(word) INT_DummyHandler
+344 register INT_Intf4Handler(word) INT_DummyHandler
+345 register INT_Intf5Handler(word) INT_DummyHandler
+346 register INT_Intf6Handler(word) INT_DummyHandler
+347 register INT_Intf7Handler(word) INT_DummyHandler
+348 register INT_Intf8Handler(word) INT_DummyHandler
+349 register INT_Intf9Handler(word) INT_DummyHandler
+350 register INT_IntfaHandler(word) INT_DummyHandler
+351 register INT_IntfbHandler(word) INT_DummyHandler
+352 register INT_IntfcHandler(word) INT_DummyHandler
+353 register INT_IntfdHandler(word) INT_DummyHandler
+354 register INT_IntfeHandler(word) INT_DummyHandler
+355 register INT_IntffHandler(word) INT_DummyHandler
 
-# Dummy interrupt vector
-356 register INT_DummyHandler(word) INT_DummyHandler
diff --git a/if1632/winsock.spec b/if1632/winsock.spec
index 2418716..813f364 100644
--- a/if1632/winsock.spec
+++ b/if1632/winsock.spec
@@ -15,7 +15,7 @@
 7   pascal16 getsockopt(word word word ptr ptr) WINSOCK_getsockopt
 8   pascal   htonl(long) WINSOCK_htonl
 9   pascal16 htons(word) WINSOCK_htons
-10  pascal   inet_addr(long) WINSOCK_inet_addr
+10  pascal   inet_addr(ptr) WINSOCK_inet_addr
 11  pascal   inet_ntoa(long) WINSOCK_inet_ntoa
 12  pascal16 ioctlsocket(word long ptr) WINSOCK_ioctlsocket
 13  pascal16 listen(word word) WINSOCK_listen
@@ -23,7 +23,7 @@
 15  pascal16 ntohs(word) WINSOCK_ntohs
 16  pascal16 recv(word ptr word word) WINSOCK_recv
 17  pascal16 recvfrom(word ptr word word ptr ptr) WINSOCK_recvfrom
-18  pascal16 select(word ptr ptr ptr ptr word) WINSOCK_select
+18  pascal16 select(word ptr ptr ptr ptr ptr) WINSOCK_select
 19  pascal16 send(word ptr word word) WINSOCK_send
 20  pascal16 sendto(word ptr word word ptr ptr) WINSOCK_sendto
 21  pascal16 setsockopt(word word word ptr word) WINSOCK_setsockopt