Allow for address relocation to make Scheme run under Windows 3.1.
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Sat, 21 Aug 1993 02:33:58 +0000 (02:33 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Sat, 21 Aug 1993 02:33:58 +0000 (02:33 +0000)
v7/src/microcode/gccode.h
v7/src/microcode/gcloop.c
v7/src/microcode/intrpt.h
v7/src/microcode/memmag.h
v7/src/microcode/ntutl/config.bat
v7/src/microcode/ntutl/makefile

index 9e31cdf0f0c8c584f3e3377532a2caf278918bb2..771cf46e2d80fb42fa26eaf51764ab8dc1fc45d1 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: gccode.h,v 9.48 1993/06/24 04:48:12 gjr Exp $
+$Id: gccode.h,v 9.49 1993/08/21 02:25:29 gjr Exp $
 
 Copyright (c) 1987-1993 Massachusetts Institute of Technology
 
@@ -218,9 +218,18 @@ do                                                                 \
 
 #define Normal_BH(In_GC, then_what)                                    \
 {                                                                      \
-  if (BROKEN_HEART_P (*Old))                                           \
+  if (BROKEN_HEART_P (* Old))                                          \
   {                                                                    \
-    *Scan = (MAKE_OBJECT_FROM_OBJECTS (Temp, (*Old)));                 \
+    (* Scan) = (MAKE_OBJECT_FROM_OBJECTS (Temp, (* Old)));             \
+    then_what;                                                         \
+  }                                                                    \
+}
+
+#define RAW_BH(In_GC, then_what)                                       \
+{                                                                      \
+  if (BROKEN_HEART_P (* Old))                                          \
+  {                                                                    \
+    (* Scan) = (ADDR_TO_SCHEME_ADDR (OBJECT_ADDRESS (* Old)));         \
     then_what;                                                         \
   }                                                                    \
 }
@@ -245,6 +254,12 @@ do                                                                 \
   (* (OBJECT_ADDRESS (Temp))) = New_Address;                           \
   (* Scan) = (MAKE_OBJECT_FROM_OBJECTS (Temp, New_Address));           \
 }
+
+#define RAW_POINTER_END()                                              \
+{                                                                      \
+  (* (SCHEME_ADDR_TO_ADDR (Temp))) = New_Address;                      \
+  (* Scan) = (ADDR_TO_SCHEME_ADDR (OBJECT_ADDRESS (New_Address)));     \
+}
 \f
 /* GC Type handlers.  These do the actual work. */
 
@@ -295,8 +310,7 @@ extern SCHEME_OBJECT * gc_objects_referencing_end;
 #define TRANSPORT_ONE_THING(transport_code) transport_code
 
 #endif
-
-
+\f
 #define Transport_Cell()                                               \
 {                                                                      \
   TRANSPORT_ONE_THING ((*To++) = (*Old));                              \
@@ -318,14 +332,25 @@ extern SCHEME_OBJECT * gc_objects_referencing_end;
   Pointer_End ();                                                      \
 }
 
-#define Transport_Quadruple()                                          \
+#define TRANSPORT_QUADRUPLE_INTERNAL()                                 \
 {                                                                      \
   TRANSPORT_ONE_THING ((*To++) = (*Old++));                            \
   TRANSPORT_ONE_THING ((*To++) = (*Old++));                            \
   TRANSPORT_ONE_THING ((*To++) = (*Old++));                            \
   TRANSPORT_ONE_THING ((*To++) = (*Old));                              \
+}
+
+#define Transport_Quadruple()                                          \
+{                                                                      \
+  TRANSPORT_QUADRUPLE_INTERNAL ();                                     \
   Pointer_End ();                                                      \
 }
+
+#define TRANSPORT_RAW_QUADRUPLE()                                      \
+{                                                                      \
+  TRANSPORT_QUADRUPLE_INTERNAL ();                                     \
+  RAW_POINTER_END ();                                                  \
+}
 \f
 #ifndef In_Fasdump
 
@@ -492,7 +517,7 @@ extern SCHEME_OBJECT Weak_Chain;
       Fixup = Fixes;                                                   \
       return (PRIM_INTERRUPT);                                         \
     }                                                                  \
-  (*--Fixes) = (*Old);                                                 \
+  (*--Fixes) = (* Old);                                                        \
   (*--Fixes) = (ADDRESS_TO_DATUM (Old));                               \
   Extra_Code;                                                          \
 }
index e1c1e87c3263acd9dbac164f8f9a831fc9f6733a..611341b1fc5063bec3bb73ebc4f4d5af662c61d6 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: gcloop.c,v 9.41 1993/06/24 04:49:14 gjr Exp $
+$Id: gcloop.c,v 9.42 1993/08/21 02:27:45 gjr Exp $
 
 Copyright (c) 1987-1993 Massachusetts Institute of Technology
 
@@ -48,13 +48,19 @@ extern SCHEME_OBJECT * EXFUN (GCLoop, (SCHEME_OBJECT *, SCHEME_OBJECT **));
 
 #define GC_Pointer(Code)                                               \
 {                                                                      \
-  Old = OBJECT_ADDRESS (Temp);                                         \
+  Old = (OBJECT_ADDRESS (Temp));                                       \
+  Code;                                                                        \
+}
+
+#define GC_RAW_POINTER(Code)                                           \
+{                                                                      \
+  Old = (SCHEME_ADDR_TO_ADDR (Temp));                                  \
   Code;                                                                        \
 }
 
 #define Setup_Pointer_for_GC(Extra_Code)                               \
 {                                                                      \
-  GC_Pointer(Setup_Pointer(true, Extra_Code));                         \
+  GC_Pointer (Setup_Pointer (true, Extra_Code));                       \
 }
 \f
 #ifdef ENABLE_GC_DEBUGGING_TOOLS
@@ -174,12 +180,14 @@ DEFUN (GCLoop,
            fast long count;
 
            Scan++;
-           for (count = READ_CACHE_LINKAGE_COUNT(Temp);
+           for (count = (READ_CACHE_LINKAGE_COUNT (Temp));
                 --count >= 0;
                 Scan += 1)
            {
-             Temp = *Scan;
-             Setup_Pointer_for_GC(Transport_Quadruple());
+             Temp = (* Scan);
+             GC_RAW_POINTER (Setup_Internal (true,
+                                             TRANSPORT_RAW_QUADRUPLE (),
+                                             RAW_BH (true, continue)));
            }
            Scan -= 1;
            break;
@@ -202,11 +210,11 @@ DEFUN (GCLoop,
              Scan = ((SCHEME_OBJECT *) word_ptr);
              word_ptr = (NEXT_LINKAGE_OPERATOR_ENTRY (word_ptr));
              EXTRACT_OPERATOR_LINKAGE_ADDRESS (Temp, Scan);
-             GC_Pointer(Setup_Internal(true,
-                                       Transport_Compiled(),
-                                       Compiled_BH(true,
-                                                   goto next_operator)));
-             next_operator:
+             GC_Pointer (Setup_Internal (true,
+                                         Transport_Compiled (),
+                                         Compiled_BH(true,
+                                                     goto next_operator)));
+           next_operator:
              STORE_OPERATOR_LINKAGE_ADDRESS (Temp, Scan);
            }
            Scan = end_scan;
index c8d0a23d9eb95a95f50c78b3471f4239fe04269d..be975830532e1aa9e9617a3794e633c0a5ad128c 100644 (file)
@@ -1,8 +1,8 @@
 /* -*-C-*-
 
-$Id: intrpt.h,v 1.12 1993/06/29 22:53:52 cph Exp $
+$Id: intrpt.h,v 1.13 1993/08/21 02:28:59 gjr Exp $
 
-Copyright (c) 1987-93 Massachusetts Institute of Technology
+Copyright (c) 1987-1993 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -66,19 +66,19 @@ MIT in each case. */
 
 #define INTERRUPT_PENDING_P(mask) (((PENDING_INTERRUPTS ()) & (mask)) != 0)
 
-#define COMPILER_SETUP_INTERRUPT()                                     \
+#define COMPILER_SETUP_INTERRUPT() do                                  \
 {                                                                      \
   (Registers[REGBLOCK_MEMTOP]) =                                       \
     ((INTERRUPT_PENDING_P (INT_Mask))                                  \
      ? ((SCHEME_OBJECT) -1)                                            \
      : (INTERRUPT_ENABLED_P (INT_GC))                                  \
-     ? ((SCHEME_OBJECT) MemTop)                                                \
-     : ((SCHEME_OBJECT) Heap_Top));                                    \
+     ? ((SCHEME_OBJECT) (ADDR_TO_SCHEME_ADDR (MemTop)))                        \
+     : ((SCHEME_OBJECT) (ADDR_TO_SCHEME_ADDR (Heap_Top))));            \
   (Registers[REGBLOCK_STACK_GUARD]) =                                  \
     ((INTERRUPT_ENABLED_P (INT_Stack_Overflow))                                \
-     ? ((SCHEME_OBJECT) Stack_Guard)                                   \
-     : ((SCHEME_OBJECT) Absolute_Stack_Base));                         \
-}
+     ? ((SCHEME_OBJECT) (ADDR_TO_SCHEME_ADDR (Stack_Guard)))           \
+     : ((SCHEME_OBJECT) (ADDR_TO_SCHEME_ADDR (Absolute_Stack_Base)))); \
+} while (0)
 
 #define FETCH_INTERRUPT_MASK() ((long) (Registers[REGBLOCK_INT_MASK]))
 
index 159a67510a57253d7a9ee8e388d8416cd330664c..5e77c05df4fd3174ff7dd8ccd6b5a9abbeace86b 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Id: memmag.h,v 1.1 1993/07/27 20:56:07 gjr Exp $
+$Id: memmag.h,v 1.2 1993/08/21 02:33:58 gjr Exp $
 
 Copyright (c) 1993 Massachusetts Institute of Technology
 
@@ -39,18 +39,86 @@ MIT in each case. */
 
 #ifdef WINNT
 
-static unsigned long scheme_heap_handle;
-
-extern char * win32_allocate_heap (unsigned long, unsigned long *);
-extern void win32_release_heap (char *, unsigned long);
 extern void winnt_allocate_registers (void);
 extern void winnt_deallocate_registers (void);
-
-#define HEAP_MALLOC(size) (win32_allocate_heap (size, &scheme_heap_handle))
-#define HEAP_FREE(base) win32_release_heap (((char *) (base)), scheme_heap_handle)
 #define ALLOCATE_REGISTERS winnt_allocate_registers
 #define DEALLOCATE_REGISTERS winnt_deallocate_registers
 
+#include "ntscmlib.h"
+
+#ifdef WINNT_RAW_ADDRESSES
+
+#define WIN32_ALLOCATE_HEAP win32_allocate_heap
+#define WIN32_RELEASE_HEAP win32_release_heap
+
+#else /* not WINNT_RAW_ADDRESSES */
+
+extern unsigned long winnt_address_delta;
+extern unsigned short
+  Scheme_Code_Segment_Selector,
+  Scheme_Data_Segment_Selector,
+  Scheme_Stack_Segment_Selector;
+
+unsigned long winnt_address_delta;
+static unsigned long total_fudge;
+
+#define SCM_FUDGE_1 0x1000L
+#define SCM_FUDGE_2 0x10000L
+
+static char * 
+WIN32_ALLOCATE_HEAP (unsigned long size, unsigned long * handle)
+{
+  unsigned long actual_size, actual_fudge_1, actual_fudge_2;
+  char * base, * virtual_base;
+
+  if (! (win32_under_win32s_p ()))
+  {
+    actual_fudge_1 = 0;
+    actual_fudge_2 = 0;
+  }
+  else
+  {
+    actual_fudge_1 = SCM_FUDGE_1;
+    actual_fudge_2 = SCM_FUDGE_2;
+  }
+  total_fudge = (actual_fudge_1 + actual_fudge_2);
+  actual_size = (size + total_fudge);
+
+  base = (win32_allocate_heap (actual_size, handle));
+  if (base == ((char *) NULL))
+    return (base);
+
+  virtual_base = (base + total_fudge);
+  winnt_address_delta = (((unsigned long) base) + actual_fudge_1);
+  if (! (win32_alloc_scheme_selectors (winnt_address_delta,
+                                      (size + actual_fudge_2),
+                                      &Scheme_Code_Segment_Selector,
+                                      &Scheme_Data_Segment_Selector,
+                                      &Scheme_Stack_Segment_Selector)))
+    /* Let the higher-level code fail. */
+    winnt_address_delta = 0L;
+    
+  return (virtual_base);
+}
+\f
+static void
+WIN32_RELEASE_HEAP (char * area, unsigned long handle)
+{
+  if (winnt_address_delta != 0)
+    win32_release_scheme_selectors (Scheme_Code_Segment_Selector,
+                                   Scheme_Data_Segment_Selector,
+                                   Scheme_Stack_Segment_Selector);  
+  win32_release_heap ((area - total_fudge), handle);
+  return;
+}
+
+#endif /* WINNT_RAW_ADDRESSES */
+
+static unsigned long scheme_heap_handle;
+
+#define HEAP_MALLOC(size) (WIN32_ALLOCATE_HEAP (size, &scheme_heap_handle))
+#define HEAP_FREE(base) WIN32_RELEASE_HEAP (((char *) (base)), scheme_heap_handle)
+
 #endif /* WINNT */
 
 #ifndef HEAP_FREE
index a342d1f56f8ffbef2639147d126146ab76df33a0..15a4b35ed129db95100b593deac0588340c53bc2 100644 (file)
@@ -3,11 +3,15 @@ rem MIT Scheme microcode configuration script for Windows NT
 rem
 rem Copyright (c) 1993 Massachusetts Institute of Technology
 rem
-rem $Id: config.bat,v 1.3 1993/07/18 20:30:44 gjr Exp $
+rem $Id: config.bat,v 1.4 1993/08/21 02:32:58 gjr Exp $
 rem
 copy cmpintmd\i386.h cmpintmd.h
 copy cmpauxmd\i386-nt.asm cmpauxmd.asm
 copy ntutl\*.lst .
 copy ntutl\*.h .
 copy ntutl\makefile .
-copy ntutl\setenv.bat .
+copy ntutl\*.bat .
+copy ntutl\*.mak .
+copy ntutl\*.def .
+copy ntutl\*.dlg .
+copy ntutl\*.ico .
index 691353c879b27b893a258b3985b05a71b7ecbf21..aaea3d37ad1d6e6c2c027d4f89d22907d06a4743 100644 (file)
@@ -1,6 +1,6 @@
 ### -*- Fundamental -*-
 ###
-###    $Id: makefile,v 1.6 1993/08/03 08:39:41 gjr Exp $
+###    $Id: makefile,v 1.7 1993/08/21 02:31:23 gjr Exp $
 ###
 ###    Copyright (c) 1992-1993 Massachusetts Institute of Technology
 ###
@@ -51,16 +51,13 @@ GRAPHICS_LIBS =
 MACHINE_SWITCHES = -DNO_CONST -Di386
 MACHINE_SOURCES = cmpint.c cmpauxmd.asm
 MACHINE_OBJECTS = cmpint.obj cmpauxmd.obj
-GC_HEAD_FILES = gccode.h cmpgc.h cmpintmd.h ntscmlib.h
+GC_HEAD_FILES = gccode.h cmpgc.h ntscmlib.h cmpintmd.h 
 USER_PRIM_SOURCES =
 USER_PRIM_OBJECTS =
 USER_LIBS =
 BINDIR = \scheme\nt\microcode
-AS = mlx
+AS = mlx /Zm /Cp /c # masm386 /z # 
 LDFLAGS =
-#CFLAGS = -DMIT_SCHEME $(MACHINE_SWITCHES) -D__STDC__ -Jm -o
-#cflags = -DMIT_SCHEME -DWINNT -DCL386 $(MACHINE_SWITCHES) -D_STDC__ -o
-#cflags = $(cflags) -DMIT_SCHEME -DWINNT -DCL386 $(MACHINE_SWITCHES)  -o
 cflags = $(cflags) -DMIT_SCHEME -DWINNT -DCL386 $(MACHINE_SWITCHES) -DGUI=1
 
 # NT compilation system for scheme (NOT utilities)
@@ -69,18 +66,20 @@ sysflags = $(guiflags)
 syslibs = $(guilibs)
 cvobj = cvtomf
 
-all: ntscmlib.dll bintopsb.exe psbtobin.exe scheme.exe bchscheme.exe
+all: ntscmlib.dll scheme.exe # bchschem.exe bintopsb.exe psbtobin.exe
 
 .c.obj:
        $(cc) $(cflags) $(cdebug) -c $*.c
 #      $(cc) $(cflags) -Zi -Ox -c $*.c
-       $(cvobj) $*.obj
+#      $(cvobj) $*.obj
+
 #.c.s:
 #      $(CC) $(CFLAGS) -S $*.c
 # .m4.asm:
 #      $(M4)  -DTYPE_CODE_LENGTH=6 $*.m4 > $*.asm
+#      $(AS) $*.asm, $*.obj, nul.lst, nul.crf
 .asm.obj:
-       $(AS) /Zm /Cp /c $*.asm
+       $(AS) $*.asm
 
 SCHEME_SOURCES = $(TERMCAP_SOURCES) $(GRAPHICS_SOURCES) $(USER_PRIM_SOURCES) missing.c
 SCHEME_OBJECTS = $(TERMCAP_OBJECTS) $(GRAPHICS_OBJECTS) $(USER_PRIM_OBJECTS) missing.obj
@@ -153,7 +152,6 @@ ntenv.c \
 ntfile.c \
 ntgui.c \
 ntio.c \
-ntconio.c \
 nttty.c \
 nttop.c \
 ntutil.c \
@@ -161,11 +159,6 @@ ntsig.c \
 nttrap.c \
 ntsys.c \
 ntscreen.c \
-#ntprm \
-#ntkbd.c \
-#ntexcp.c \
-#ntkbutl.asm \
-#ntxcutl.asm \
 ntasutl.asm
 
 NT_OBJECTS = \
@@ -176,7 +169,6 @@ ntfile.obj \
 ntgui.obj \
 ntgui.rbj \
 ntio.obj \
-ntconio.obj \
 nttty.obj \
 nttop.obj \
 ntutil.obj \
@@ -184,11 +176,6 @@ ntsig.obj \
 nttrap.obj \
 ntsys.obj  \
 ntscreen.obj \
-#ntprm.obj \
-#ntkbd.obj \
-#ntexcp.obj \
-#ntkbutl.obj \
-#ntxcutl.obj \
 ntasutl.obj
 
 OS_PRIM_SOURCES = \
@@ -200,8 +187,6 @@ prostty.c \
 prosenv.c \
 prntfs.c \
 prntenv.c
-# prosproc.c \
-# pruxsock.c
 
 HEAD_FILES = scheme.tch prims.h zones.h locks.h bignum.h \
        $(GC_HEAD_FILES) trap.h lookup.h history.h cmpint.h
@@ -264,8 +249,6 @@ prosenv.obj \
 prostty.obj \
 prntenv.obj \
 prntfs.obj
-# prosproc.obj \
-# pruxsock.obj
 
 STD_GC_OBJECTS = \
 fasdump.obj \
@@ -285,10 +268,8 @@ OBJECTS = $(CORE_OBJECTS) $(STD_GC_OBJECTS) $(NT_OBJECTS) $(OS_PRIM_OBJECTS) usr
 BCHSOURCES = $(CORE_SOURCES) $(BCH_GC_SOURCES)
 BCHOBJECTS = $(CORE_OBJECTS) $(BCH_GC_OBJECTS) $(NT_OBJECTS) $(OS_PRIM_OBJECTS) bchdef.obj
 
-FLASHTEK = x32v.lib
-
 # Update the resource if necessary
-ntgui.rbj: ntgui.rc ntgui.h
+ntgui.rbj: ntgui.rc ntgui.h ntdialog.dlg ntdialog.h
     rc -r -fo $*.res $(cvars) $*.rc
 !IFDEF CPUTYPE
     cvtres -$(CPU) $*.res -o $*.rbj
@@ -297,7 +278,7 @@ ntgui.rbj: ntgui.rc ntgui.h
 scheme: scheme.exe
 scheme.exe : $(OBJECTS) $(SCHEME_OBJECTS) scm-cl3.lst
        $(link) $(linkdebug) $(sysflags) -out:scheme.exe @scm-cl3.lst $(syslibs) ntscmlib.lib crtdll.lib
-bchscheme.exe : $(BCHOBJECTS) $(SCHEME_OBJECTS) bch-cl3.lst
+bchschem.exe : $(BCHOBJECTS) $(SCHEME_OBJECTS) bch-cl3.lst
        $(link) $(linkdebug) $(sysflags) -out:bchschem.exe @bch-cl3.lst $(syslibs) ntscmlib.lib crtdll.lib
 findprim.exe : findprim.obj
        $(link) $(linkdebug) $(conflags) -out:findprim.exe findprim.obj $(conlibs)
@@ -312,7 +293,7 @@ wsize.exe : wsize.obj
 ppband.exe : ppband.obj
        $(link) $(linkdebug) $(conflags) -out:ppband.exe ppband.obj $(conlibs)
 
-usrdef.c : $(SCHEME_SOURCES) $(SOURCES) $(OS_PRIM_SOURCES) ntconio.c ntgui.c usrdef.tch findprim.exe scm-p-nt.lst
+usrdef.c : $(SCHEME_SOURCES) $(SOURCES) $(OS_PRIM_SOURCES) ntgui.c usrdef.tch findprim.exe scm-p-nt.lst
        rm -f usrdef.c
        .\findprim -o usrdef.c -l .\scm-p-nt.lst
 
@@ -362,7 +343,8 @@ hard-par.exe : hard-par.c
 foo $(USER_PRIM_OBJECTS) : $(HEAD_FILES)
 interp.obj : scheme.tch locks.h trap.h lookup.h history.h cmpint.h zones.h prmcon.h
        $(cc) $(cflags) $(cdebug) -Ox -c $*.c
-       $(cvobj) $*.obj
+#      $(cvobj) $*.obj
+
 hooks.obj : scheme.tch prims.h winder.h history.h
 utils.obj : scheme.tch prims.h winder.h history.h cmpint.h syscall.h
 primutl.obj : scheme.tch prims.h prename.h syscall.h
@@ -432,16 +414,13 @@ ntenv.obj : osenv.h $(NT_DEPENDENCIES)
 ntfile.obj : osfile.h osio.h ntio.h $(NT_DEPENDENCIES)
 ntfs.obj : osfs.h $(NT_DEPENDENCIES)
 ntio.obj : osio.h ntio.h $(NT_DEPENDENCIES)
-ntconio.obj : scheme.tch prims.h ntscan.h osio.h ntio.h $(NT_DEPENDENCIES)
 nttop.obj : ostop.h nttop.h osctty.h ntutil.h errors.h option.h $(NT_DEPENDENCIES)
 nttty.obj : ostty.h osenv.h osio.h ntio.h osterm.h ntterm.h $(NT_DEPENDENCIES)
 ntutil.obj : ntutil.h $(NT_DEPENDENCIES)
-ntsig.obj : ossig.h osctty.h ostty.h critsec.h ntexcp.h ntkbd.h $(NT_DEPENDENCIES) ntscmlib.h
-nttrap.obj: nttrap.h ntexcp.h $(NT_DEPENDENCIES)
+ntsig.obj : ossig.h osctty.h ostty.h critsec.h $(NT_DEPENDENCIES) ntscmlib.h
+nttrap.obj: nttrap.h ntscmlib.h $(GC_HEAD_FILES) $(NT_DEPENDENCIES)
 ntsys.obj: ntsys.h
-ntexcp.obj : ntexcp.h ntsys.h ntinsn.h
-ntgui.obj : ntgui.c $(NT_DEPENDENCIES) scheme.tch ntscreen.h
-ntkbd.obj : ntkbd.h ntsys.h ntinsn.h
+ntgui.obj : ntgui.c ntdialog.h ntscreen.h $(NT_DEPENDENCIES) scheme.tch
 ntasutl.obj : ntasutl.asm
 ntkbutl.obj : ntkbutl.asm
 ntscreen.obj : ntscreen.c ntscreen.h
@@ -449,20 +428,24 @@ prntenv.obj : $(NT_DEPENDENCIES)
 prntfs.obj : $(NT_DEPENDENCIES) scheme.h prims.h osfs.h
 cmpauxmd.obj : cmpauxmd.asm
 
-ntscmlib.obj : ntscmlib.c ntscmlib.h makefile
+ntscmlib.dll: ntwntlib.dll ntw32lib.dll
+       copy ntwntlib.lib ntscmlib.lib
+       copy ntwntlib.dll ntscmlib.dll
 
-ntscmlib.exp: ntscmlib.obj ntscmlib.def
-       $(implib) -machine:$(CPU) -def:$*.def $*.obj -out:$*.lib
+ntwntlib.obj: ntwntlib.c ntscmlib.h makefile
+
+ntwntlib.exp: ntwntlib.obj ntscmlib.def
+       $(implib) -machine:$(CPU) -def:ntscmlib.def $*.obj -out:$*.lib
        
-ntscmlib.dll: ntscmlib.obj ntscmlib.exp
+ntwntlib.dll: ntwntlib.obj ntwntlib.exp
        $(link) $(linkdebug) -dll -out:$*.dll \
                -entry:_CRT_INIT$(DLLENTRY) \
                $** $(syslibs) winmm.lib crtdll.lib
 
-ntw32lib.obj : ntw32lib.c ntscmlib.h ntw32lib.h makefile
+ntw32lib.obj : ntw32lib.c ntscmlib.h makefile
 
 ntw32lib.exp: ntw32lib.obj ntscmlib.def
-       $(implib) -machine:$(CPU) -def:ntscmlib.def ntw32lib.obj -out:ntw32lib.lib
+       $(implib) -machine:$(CPU) -def:ntscmlib.def $*.obj -out:$*.lib
        
 ntw32lib.dll: ntw32lib.obj ntw32lib.exp
        $(link) $(linkdebug) -dll -out:$*.dll \
@@ -476,6 +459,8 @@ clean:
   del *.lib
   del *.dll
   del *.exp
+  del *.rbj
+  del *.res
 
 unconfig:
   del cmpintmd.h
@@ -485,6 +470,11 @@ unconfig:
   del makefile
   del *.lst
   del setenv.bat
-
+  del win31.bat
+  del winnt.bat
+  del *.mak
+  del *.def
+  del *.dlg
+  del *.ico