Index: trunk/src/NTDLL/crt.cpp
===================================================================
--- trunk/src/NTDLL/crt.cpp	(revision 555)
+++ trunk/src/NTDLL/crt.cpp	(revision 557)
@@ -1,3 +1,3 @@
-/* $Id: crt.cpp,v 1.4 1999-07-23 18:06:25 sandervl Exp $ */
+/* $Id: crt.cpp,v 1.5 1999-08-18 21:45:13 phaller Exp $ */
 
 /*
@@ -6,4 +6,8 @@
  * Copyright 1999 Patrick Haller (phaller@gmx.net)
  */
+
+/****************************************************************************
+ * Include                                                                  *
+ ****************************************************************************/
 
 #include <odin.h>
@@ -26,4 +30,101 @@
 
 
+/****************************************************************************
+ * Local Prototypes                                                         *
+ ****************************************************************************/
+
+
+LPWSTR CDECL OS2_wcsupr(LPWSTR str);
+int    CDECL OS2_wcsnicmp(LPWSTR str1, LPWSTR str2, long l);
+
+
+
+/*****************************************************************************
+ * Name      :
+ * Purpose   :
+ * Parameters:
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.879
+ * Status    :
+ *
+ * Author    : Patrick Haller [Thu, 1999/06/22 20:44]
+ *****************************************************************************/
+
+int CDECL OS2_wcsicmp(LPWSTR str1, LPWSTR str2)
+{
+  dprintf(("NTDLL: _wcsicmp(%08xh,%08xh)\n",
+           str1,
+           str2));
+
+  return (OS2_wcsnicmp(str1,
+                       str2,
+                       wcslen((wchar_t*) str1)));
+}
+
+
+/*****************************************************************************
+ * Name      :
+ * Purpose   :
+ * Parameters:
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.880
+ * Status    :
+ *
+ * Author    : Patrick Haller [Thu, 1999/06/22 20:44]
+ *****************************************************************************/
+
+LPWSTR CDECL OS2_wcslwr(LPWSTR str)
+{
+  DWORD dwIndex;
+
+  dprintf(("NTDLL: _wcslwr(%08xh)\n",
+           str));
+
+  for (dwIndex = wcslen((const wchar_t*)str);
+       dwIndex;
+       dwIndex--)
+  {
+    towlower(str[dwIndex]);
+  }
+
+  return (str);
+}
+
+
+/*****************************************************************************
+ * Name      :
+ * Purpose   :
+ * Parameters:
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.881
+ * Status    :
+ *
+ * Author    : Patrick Haller [Thu, 1999/06/22 20:44]
+ *****************************************************************************/
+
+int CDECL OS2_wcsnicmp(LPWSTR str1, LPWSTR str2, long l)
+{
+  LPWSTR w1;
+  LPWSTR w2;
+
+  dprintf(("NTDLL: _wcsnicmp(%08xh,%08xh,%08xh)\n",
+           str1,
+           str2,
+           l));
+
+  w1 = HEAP_strdupW(GetProcessHeap(),0,str1);
+  w2 = HEAP_strdupW(GetProcessHeap(),0,str2);
+  OS2_wcsupr(w1);
+  OS2_wcsupr(w2);
+
+  return (wcsncmp((wchar_t*)w1,
+                  (wchar_t*)w2,
+                  l));
+}
+
+
 /*****************************************************************************
  * Name      :
@@ -460,4 +561,27 @@
  * Variables :
  * Result    :
+ * Remark    : NTDLL.?
+ * Status    :
+ *
+ * Author    : Patrick Haller [Thu, 1999/06/22 20:44]
+ *****************************************************************************/
+
+int CDECL OS2_stricmp(const LPSTR str1,
+                      const LPSTR str2)
+{
+  dprintf(("NTDLL: _stricmp(%s,%s)\n",
+           str1,
+           str2));
+
+  return (stricmp(str1, str2));
+}
+
+
+/*****************************************************************************
+ * Name      :
+ * Purpose   :
+ * Parameters:
+ * Variables :
+ * Result    :
  * Remark    : NTDLL.917
  * Status    :
@@ -997,2 +1121,25 @@
 }
 
+
+/*****************************************************************************
+ * Name      :
+ * Purpose   :
+ * Parameters:
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    :
+ *
+ * Author    : Patrick Haller [Thu, 1999/06/22 20:44]
+ *****************************************************************************/
+
+char * CDECL OS2_itoa(int i, char *s, int r)
+{
+  dprintf(("NTDLL: _itoa(%08xh, %08xh, %08xh)\n",
+           i,
+           s,
+           r));
+
+  return (_itoa(i,s,r));
+}
+
Index: trunk/src/NTDLL/ntdll.cpp
===================================================================
--- trunk/src/NTDLL/ntdll.cpp	(revision 555)
+++ trunk/src/NTDLL/ntdll.cpp	(revision 557)
@@ -1,3 +1,3 @@
-/* $Id: ntdll.cpp,v 1.1 1999-06-07 22:17:40 sandervl Exp $ */
+/* $Id: ntdll.cpp,v 1.2 1999-08-18 21:45:13 phaller Exp $ */
 
 /*
@@ -51,131 +51,2 @@
 
 
-/***********************************************************************
-*           lstrcpynAtoW   (Not a Windows API)
-* Note: this function differs from the UNIX strncpy, it _always_ writes
-* a terminating \0
-*/
-LPWSTR WIN32API lstrcpynAtoW(LPWSTR dst,
-                             LPCSTR src,
-                             INT  n)
-{
-  LPWSTR p = dst;
-  while ((n-- > 1) && *src) *p++ = (WCHAR)(unsigned char)*src++;
-  if (n >= 0) *p = 0;
-  return dst;
-}
-
-
-/***********************************************************************
-*           lstrcpynWtoA   (Not a Windows API)
-* Note: this function differs from the UNIX strncpy, it _always_ writes
-* a terminating \0
-*/
-LPSTR WIN32API lstrcpynWtoA(LPSTR   dst,
-                            LPCWSTR src,
-                            INT   n)
-{
-  LPSTR p = dst;
-  while ((n-- > 1) && *src) *p++ = (CHAR)*src++;
-  if (n >= 0) *p = 0;
-  return dst;
-}
-
-
-/***********************************************************************
- *           lstrncmp32W   (Not a Windows API)
- */
-INT WIN32API lstrncmpW( LPCWSTR str1, LPCWSTR str2, INT n )
-{
-  if (!n)
-    return 0;
-
-  while ((--n > 0) && *str1 && (*str1 == *str2))
-  {
-    str1++;
-    str2++;
-  }
-
-  return (INT)(*str1 - *str2);
-}
-
-
-
-/***********************************************************************
-*           HEAP_strdupA
-*/
-LPSTR HEAP_strdupA(HANDLE heap,
-                   DWORD  flags,
-                   LPCSTR str)
-{
-  LPSTR p = (LPSTR)HeapAlloc(heap,
-                      flags,
-                      lstrlenA(str) + 1 );
-
-  lstrcpyA(p, str);
-  return p;
-}
-
-
-/***********************************************************************
-*           HEAP_strdupW
-*/
-LPWSTR HEAP_strdupW(HANDLE  heap,
-                    DWORD   flags,
-                    LPCWSTR str)
-{
-  INT len = lstrlenW(str) + 1;
-  LPWSTR p = (LPWSTR)HeapAlloc(heap,
-                       flags,
-                       len * sizeof(WCHAR) );
-  lstrcpyW(p,
-              str);
-  return p;
-}
-
-
-/***********************************************************************
-*           HEAP_strdupWtoA
-*/
-LPSTR HEAP_strdupWtoA(HANDLE  heap,
-                      DWORD   flags,
-                      LPCWSTR str )
-{
-  LPSTR ret;
-
-  if (!str)
-    return NULL;
-
-  ret = (LPSTR)HeapAlloc(heap,
-                  flags,
-                  lstrlenW(str) + 1 );
-  UnicodeToAscii((LPWSTR)str,
-                 ret);
-/*  lstrcpyWtoA(ret,
-              str);*/
-  return ret;
-}
-
-/***********************************************************************
-*           HEAP_strdupAtoW
-*/
-LPWSTR HEAP_strdupAtoW(HANDLE heap,
-                       DWORD  flags,
-                       LPCSTR str)
-{
-  LPWSTR ret;
-
-  if (!str)
-    return NULL;
-
-  ret = (LPWSTR)HeapAlloc(heap,
-                     flags,
-                     (lstrlenA(str)+1) * sizeof(WCHAR) );
-  AsciiToUnicode((char *)str,
-                 ret);
-  /* lstrcpyAtoW(ret,
-              str );*/
-
-  return ret;
-}
-
Index: trunk/src/NTDLL/ntdll.def
===================================================================
--- trunk/src/NTDLL/ntdll.def	(revision 555)
+++ trunk/src/NTDLL/ntdll.def	(revision 557)
@@ -1,3 +1,3 @@
-; $Id: ntdll.def,v 1.12 1999-08-18 19:35:30 phaller Exp $
+; $Id: ntdll.def,v 1.13 1999-08-18 21:45:13 phaller Exp $
 
 ;Created by BLAST for IBM's compiler
@@ -16,5 +16,7 @@
     fwd_RtlEnterCriticalSection      =  KERNEL32.EnterCriticalSection
     fwd_RtlDeleteCriticalSection     =  KERNEL32.DeleteCriticalSection
-
+    _lstrncmpW@12                    =  KERNEL32.lstrncmpW
+    HEAP_strdupW                     =  KERNEL32.HEAP_strdupW
+    HEAP_strdupWtoA                  =  KERNEL32.HEAP_strdupWtoA
 
 EXPORTS
@@ -23,5 +25,5 @@
     _alldiv                          = _OS2_alldiv
     _allmul                          = _OS2_allmul
-    _chkstk                          = _OS2_chkstk
+
     RtlLargeIntegerToChar            = _RtlLargeIntegerToChar@16     @425
 
@@ -38,6 +40,26 @@
 
 ; real functions
+    NtAlertThread                 = _NtAlertThread@8                  @57
+    ZwAlertThread                 = _NtAlertThread@8
     NtAllocateUuids               = _NtAllocateUuids@16               @59
     ZwAllocateUuids               = _NtAllocateUuids@16
+    NtTestAlert                   = _NtTestAlert@8                    @232
+    ZwTestAlert                   = _NtTestAlert@8
+    NtWriteRequestData            = _NtWriteRequestData@20            @246
+    ZwWriteRequestData            = _NtWriteRequestData@20
+    NtImpersonateClientOfPort     = _NtImpersonateClientOfPort@16     @112
+    ZwImpersonateClientOfPort     = _NtImpersonateClientOfPort@16
+    NtQuerySystemTime             = _NtQuerySystemTime@4              @169
+    ZwQuerySystemTime             = _NtQuerySystemTime@4
+    NtReadRequestData             = _NtReadRequestData@20             @178
+    ZwReadRequestData             = _NtReadRequestData@20
+
+    NtReplyPort                   = _NtReplyPort@16                   @187
+    ZwReplyPort                   = _NtReplyPort@16
+    NtReplyWaitReplyPort          = _NtReplyWaitReplyPort@16          @189
+    ZwReplyWaitReplyPort          = _NtReplyWaitReplyPort@16
+    NtRequestPort                 = _NtRequestPort@16                 @190
+    ZwRequestPort                 = _NtRequestPort@16
+
 
     NtOpenFile                    = _NtOpenFile@24                    @127
@@ -142,4 +164,6 @@
     NtSetEvent                    = _NtSetEvent@8
     ZwSetEvent                    = _NtSetEvent@8
+    NtResetEvent                  = _NtResetEvent@4                   @192
+    ZwResetEvent                  = _NtResetEvent@4
 
     NtQueryObject                 = _NtQueryObject@20                 @161
@@ -239,6 +263,7 @@
     RtlFreeAnsiString             = _RtlFreeAnsiString@4              @373
     RtlFreeOemString              = _RtlFreeOemString@4
+    RtlUnicodeStringToOemString   = _RtlUnicodeStringToOemString@12   @511
+    RtlUnicodeToMultiByteN        = _RtlUnicodeToMultiByteN@20        @513
     RtlUnicodeToOemN              = _RtlUnicodeToOemN@20              @515
-    RtlUnicodeStringToOemString   = _RtlUnicodeStringToOemString@12   @511
     RtlUnicodeStringToAnsiString  = _RtlUnicodeStringToAnsiString@12  @507
     RtlEqualUnicodeString         = _RtlEqualUnicodeString@12
@@ -297,7 +322,12 @@
     RtlTimeToElapsedTimeFields    = _RtlTimeToElapsedTimeFields@8
 
+    _alloca_probe                    = _OS2_alloca_probe             @861
+    _chkstk                          = _OS2_chkstk                   @862
 
 ; NTDLL's C runtime
 ; Note: CDECL does not decorate the function names with parameter bytes!
+    _wcsicmp                      = _OS2_wcsicmp                      @879
+    _wcslwr                       = _OS2_wcslwr                       @880
+    _wcsnicmp                     = _OS2_wcsnicmp                     @881
     _wcsupr                       = _OS2_wcsupr                       @882
     abs                           = _OS2abs                           @883
@@ -345,2 +375,4 @@
     wcsstr                        = _OS2wcsstr                        @946
 
+    _stricmp                      = _OS2_stricmp
+    _itoa                         = _OS2_itoa
Index: trunk/src/NTDLL/rtl.cpp
===================================================================
--- trunk/src/NTDLL/rtl.cpp	(revision 555)
+++ trunk/src/NTDLL/rtl.cpp	(revision 557)
@@ -1,3 +1,3 @@
-/* $Id: rtl.cpp,v 1.3 1999-06-25 13:59:02 phaller Exp $ */
+/* $Id: rtl.cpp,v 1.4 1999-08-18 21:45:13 phaller Exp $ */
 
 /*
@@ -510,21 +510,4 @@
 
 
-/**************************************************************************
- *                 NTDLL_chkstk                   [NTDLL.862]
- *                 NTDLL_alloca_probe             [NTDLL.861]
- * Glorified "enter xxxx".
- */
-/* @@@PH how to port this to VAC ?
-REGS_ENTRYPOINT(NTDLL_chkstk)
-{
-    ESP_reg(context) -= EAX_reg(context);
-}
-
-REGS_ENTRYPOINT(NTDLL_alloca_probe)
-{
-    ESP_reg(context) -= EAX_reg(context);
-}
-*/
-
 /******************************************************************************
  * RtlEnlargedIntegerMultiply [NTDLL.341]
Index: trunk/src/NTDLL/rtlstr.cpp
===================================================================
--- trunk/src/NTDLL/rtlstr.cpp	(revision 555)
+++ trunk/src/NTDLL/rtlstr.cpp	(revision 557)
@@ -1,3 +1,3 @@
-/* $Id: rtlstr.cpp,v 1.6 1999-08-18 18:44:27 phaller Exp $ */
+/* $Id: rtlstr.cpp,v 1.7 1999-08-18 21:45:14 phaller Exp $ */
 
 /*
@@ -338,4 +338,47 @@
 
   dprintf(("NTDLL: RtlUnicodeToOemN(%08xh,%08xh,%08xh,%08xh,%08xh)\n",
+           oemstr,
+           oemlen,
+           reslen,
+           unistr,
+           unilen));
+
+  len = oemlen;
+
+  if (unilen/2 < len)
+    len = unilen/2;
+
+  x=(LPSTR)HeapAlloc(GetProcessHeap(),
+                     HEAP_ZERO_MEMORY,
+                     len+1);
+
+  UnicodeToAsciiN(unistr,
+                  x,
+                  len+1);
+
+  memcpy(oemstr,
+         x,
+         len);
+
+  if (reslen)
+    *reslen = len;
+
+  return 0;
+}
+
+
+/**************************************************************************
+ *                 RtlUnicodeToMultiByteN            [NTDLL.513]
+ */
+DWORD WINAPI RtlUnicodeToMultiByteN(LPSTR   oemstr,
+                                    DWORD   oemlen,
+                                    LPDWORD reslen,
+                                    LPWSTR  unistr,
+                                    DWORD   unilen)
+{
+  DWORD len;
+  LPSTR x;
+
+  dprintf(("NTDLL: RtlUnicodeToMultiByteN(%08xh,%08xh,%08xh,%08xh,%08xh)\n",
            oemstr,
            oemlen,
Index: trunk/src/NTDLL/sync.cpp
===================================================================
--- trunk/src/NTDLL/sync.cpp	(revision 555)
+++ trunk/src/NTDLL/sync.cpp	(revision 557)
@@ -1,3 +1,3 @@
-/* $Id: sync.cpp,v 1.2 1999-06-10 17:06:47 phaller Exp $ */
+/* $Id: sync.cpp,v 1.3 1999-08-18 21:45:14 phaller Exp $ */
 
 /*
@@ -147,2 +147,13 @@
 }
 
+/**************************************************************************
+ *                 NtResetEvent                   [NTDLL.?]
+ */
+NTSTATUS WIN32API NtResetEvent(HANDLE hEvent)
+{
+  dprintf(("NTDLL: NtResetEvent(%08xh) not implemented.\n",
+           hEvent));
+
+  return 0;
+}
+
Index: trunk/src/NTDLL/time.cpp
===================================================================
--- trunk/src/NTDLL/time.cpp	(revision 555)
+++ trunk/src/NTDLL/time.cpp	(revision 557)
@@ -1,3 +1,3 @@
-/* $Id: time.cpp,v 1.4 1999-08-18 19:35:30 phaller Exp $ */
+/* $Id: time.cpp,v 1.5 1999-08-18 21:45:14 phaller Exp $ */
 
 /*
@@ -269,2 +269,24 @@
            TimeFields));
 }
+
+
+/*****************************************************************************
+ * Name      : NtQuerySystemTime
+ * Purpose   : unknown
+ * Parameters: unknown, probably wrong
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    : UNTESTED STUB
+ *
+ * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
+ *****************************************************************************/
+
+DWORD WIN32API NtQuerySystemTime(LPFILETIME ft)
+{
+  dprintf(("NTDLL: NtQuerySystemTime(%08xh) not implemented.\n",
+           ft));
+
+  return 0;
+}
+
Index: trunk/src/NTDLL/unknown.cpp
===================================================================
--- trunk/src/NTDLL/unknown.cpp	(revision 555)
+++ trunk/src/NTDLL/unknown.cpp	(revision 557)
@@ -1,3 +1,3 @@
-/* $Id: unknown.cpp,v 1.3 1999-08-18 19:35:31 phaller Exp $ */
+/* $Id: unknown.cpp,v 1.4 1999-08-18 21:45:14 phaller Exp $ */
 
 /*
@@ -104,22 +104,4 @@
 
 /*****************************************************************************
- * Name      : _chkstk
- * Purpose   : unknown
- * Parameters: unknown, probably wrong
- * Variables :
- * Result    :
- * Remark    : NTDLL.?
- * Status    : UNTESTED STUB
- *
- * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
- *****************************************************************************/
-
-void CDECL OS2_chkstk(void)
-{
-  dprintf(("NTDLL: _chkstk(%08xh,%08xh) not implemented.\n"));
-}
-
-
-/*****************************************************************************
  * Name      : RtlLargeIntegerToChar
  * Purpose   : unknown
@@ -171,7 +153,237 @@
 
 
-
-
-
-
-
+/*****************************************************************************
+ * Name      : NtAlertThread
+ * Purpose   : unknown
+ * Parameters: unknown, probably wrong
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    : UNTESTED STUB
+ *
+ * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
+ *****************************************************************************/
+
+DWORD WIN32API NtAlertThread(DWORD x1,
+                             DWORD x2)
+{
+  dprintf(("NTDLL: NtAlertThread(%08xh,%08xh) not implemented.\n",
+           x1,
+           x2));
+
+  return 0;
+}
+
+
+/*****************************************************************************
+ * Name      : NtTestAlert
+ * Purpose   : unknown
+ * Parameters: unknown, probably wrong
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    : UNTESTED STUB
+ *
+ * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
+ *****************************************************************************/
+
+DWORD WIN32API NtTestAlert(DWORD x1,
+                             DWORD x2)
+{
+  dprintf(("NTDLL: NtTestAlert(%08xh,%08xh) not implemented.\n",
+           x1,
+           x2));
+
+  return 0;
+}
+
+
+
+/*****************************************************************************
+ * Name      : NtWriteRequestData
+ * Purpose   : unknown
+ * Parameters: unknown, probably wrong
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    : UNTESTED STUB
+ *
+ * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
+ *****************************************************************************/
+
+DWORD WIN32API NtWriteRequestData(DWORD x1,
+                                  DWORD x2,
+                                  DWORD x3,
+                                  DWORD x4,
+                                  DWORD x5)
+{
+  dprintf(("NTDLL: NtWriteRequestData(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
+           x1,
+           x2,
+           x3,
+           x4,
+           x5));
+
+  return 0;
+}
+
+
+/*****************************************************************************
+ * Name      : NtImpersonateClientOfPort
+ * Purpose   : unknown
+ * Parameters: unknown, probably wrong
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    : UNTESTED STUB
+ *
+ * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
+ *****************************************************************************/
+
+DWORD WIN32API NtImpersonateClientOfPort(DWORD x1,
+                                         DWORD x2,
+                                         DWORD x3,
+                                         DWORD x4)
+{
+  dprintf(("NTDLL: NtImpersonateClientOfPort(%08xh,%08xh,%08xh,%08xh) not implemented.\n",
+           x1,
+           x2,
+           x3,
+           x4));
+
+  return 0;
+}
+
+
+/*****************************************************************************
+ * Name      : NtReplyWaitReplyPort
+ * Purpose   : unknown
+ * Parameters: unknown, probably wrong
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    : UNTESTED STUB
+ *
+ * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
+ *****************************************************************************/
+
+DWORD WIN32API NtReplyWaitReplyPort(DWORD x1,
+                                    DWORD x2,
+                                    DWORD x3,
+                                    DWORD x4)
+{
+  dprintf(("NTDLL: NtReplyWaitReplyPort(%08xh,%08xh,%08xh,%08xh) not implemented.\n",
+           x1,
+           x2,
+           x3,
+           x4));
+
+  return 0;
+}
+
+
+/*****************************************************************************
+ * Name      : NtReadRequestData
+ * Purpose   : unknown
+ * Parameters: unknown, probably wrong
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    : UNTESTED STUB
+ *
+ * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
+ *****************************************************************************/
+
+DWORD WIN32API NtReadRequestData(DWORD x1,
+                                 DWORD x2,
+                                 DWORD x3,
+                                 DWORD x4,
+                                 DWORD x5)
+{
+  dprintf(("NTDLL: NtReadRequestData(%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
+           x1,
+           x2,
+           x3,
+           x4,
+           x5));
+
+  return 0;
+}
+
+
+/*****************************************************************************
+ * Name      : NtRequestPort
+ * Purpose   : unknown
+ * Parameters: unknown, probably wrong
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    : UNTESTED STUB
+ *
+ * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
+ *****************************************************************************/
+
+DWORD WIN32API NtRequestPort(DWORD x1,
+                             DWORD x2,
+                             DWORD x3,
+                             DWORD x4)
+{
+  dprintf(("NTDLL: NtRequestPort(%08xh,%08xh,%08xh,%08xh) not implemented.\n",
+           x1,
+           x2,
+           x3,
+           x4));
+
+  return 0;
+}
+
+
+/*****************************************************************************
+ * Name      : NtReplyPort
+ * Purpose   : unknown
+ * Parameters: unknown, probably wrong
+ * Variables :
+ * Result    :
+ * Remark    : NTDLL.?
+ * Status    : UNTESTED STUB
+ *
+ * Author    : Patrick Haller [Tue, 1999/06/01 09:00]
+ *****************************************************************************/
+
+DWORD WIN32API NtReplyPort(DWORD x1,
+                           DWORD x2,
+                           DWORD x3,
+                           DWORD x4)
+{
+  dprintf(("NTDLL: NtReplyPort(%08xh,%08xh,%08xh,%08xh) not implemented.\n",
+           x1,
+           x2,
+           x3,
+           x4));
+
+  return 0;
+}
+
+
+
+/**************************************************************************
+ *                 NTDLL_chkstk                   [NTDLL.862]
+ *                 NTDLL_alloca_probe             [NTDLL.861]
+ * Glorified "enter xxxx".
+ */
+void CDECL OS2_chkstk(DWORD x1)
+{
+  dprintf(("NTDLL: _chkstk(%08xh) not implemented.\n",
+           x1));
+
+    //ESP_reg(context) -= EAX_reg(context);
+}
+
+void CDECL OS2_alloca_probe(DWORD x1)
+{
+  dprintf(("NTDLL: _alloca_probe(%08xh) not implemented.\n",
+           x1));
+
+    //ESP_reg(context) -= EAX_reg(context);
+}
+
