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