/* -*-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
#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; \
} \
}
(* (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. */
#define TRANSPORT_ONE_THING(transport_code) transport_code
#endif
-
-
+\f
#define Transport_Cell() \
{ \
TRANSPORT_ONE_THING ((*To++) = (*Old)); \
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
Fixup = Fixes; \
return (PRIM_INTERRUPT); \
} \
- (*--Fixes) = (*Old); \
+ (*--Fixes) = (* Old); \
(*--Fixes) = (ADDRESS_TO_DATUM (Old)); \
Extra_Code; \
}
/* -*-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
#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
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;
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;
/* -*-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
#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]))
/* -*-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
#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
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 .
### -*- 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
###
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)
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
ntfile.c \
ntgui.c \
ntio.c \
-ntconio.c \
nttty.c \
nttop.c \
ntutil.c \
nttrap.c \
ntsys.c \
ntscreen.c \
-#ntprm \
-#ntkbd.c \
-#ntexcp.c \
-#ntkbutl.asm \
-#ntxcutl.asm \
ntasutl.asm
NT_OBJECTS = \
ntgui.obj \
ntgui.rbj \
ntio.obj \
-ntconio.obj \
nttty.obj \
nttop.obj \
ntutil.obj \
nttrap.obj \
ntsys.obj \
ntscreen.obj \
-#ntprm.obj \
-#ntkbd.obj \
-#ntexcp.obj \
-#ntkbutl.obj \
-#ntxcutl.obj \
ntasutl.obj
OS_PRIM_SOURCES = \
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
prostty.obj \
prntenv.obj \
prntfs.obj
-# prosproc.obj \
-# pruxsock.obj
STD_GC_OBJECTS = \
fasdump.obj \
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
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)
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
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
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
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 \
del *.lib
del *.dll
del *.exp
+ del *.rbj
+ del *.res
unconfig:
del cmpintmd.h
del makefile
del *.lst
del setenv.bat
-
+ del win31.bat
+ del winnt.bat
+ del *.mak
+ del *.def
+ del *.dlg
+ del *.ico