|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T c ┃
Length: 12159 (0x2f7f) Types: TextFile Names: »config.dst«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─ ⟦this⟧ »EUUGD11/gnu-31mar87/scheme/microcode/config.dst«
/* Hey EMACS, this is -*- C -*- code! */ /**************************************************************** * * * Copyright (c) 1986 * * Massachusetts Institute of Technology * * * * This material was developed by the Scheme project at the * * Massachusetts Institute of Technology, Department of * * Electrical Engineering and Computer Science. Permission to * * copy this software, to redistribute it, and to use it for any * * purpose is granted, subject to the following restrictions and * * understandings. * * * * 1. Any copy made of this software must include this copyright * * notice in full. * * * * 2. Users of this software agree to make their best efforts (a)* * to return to the MIT Scheme project any improvements or * * extensions that they make, so that these may be included in * * future releases; and (b) to inform MIT of noteworthy uses of * * this software. * * * * 3. All materials developed as a consequence of the use of * * this software shall duly acknowledge such use, in accordance * * with the usual standards of acknowledging credit in academic * * research. * * * * 4. MIT has made no warrantee or representation that the * * operation of this software will be error-free, and MIT is * * under no obligation to provide any services, by way of * * maintenance, update, or otherwise. * * * * 5. In conjunction with products arising from the use of this * * material, there shall be no use of the name of the * * Massachusetts Institute of Technology nor of any adaptation * * thereof in any advertising, promotional, or sales literature * * without prior written consent from MIT in each case. * * * ****************************************************************/ \f /* File: CONFIG.H * * This file contains the configuration information and the information * given on the command line on Unix. * */ /* These C type definitions are needed by everybody. They should not be here, but it is unavoidable. */ typedef char Boolean; #define true 1 #define false 0 /* This defines it so that C will be happy. The various fields are defined in OBJECT.H */ typedef unsigned long Pointer; /* Scheme version */ #ifndef RELEASE #define RELEASE "4.1.1" #endif /* Microcode version */ #ifndef VERSION #define VERSION 8 #endif #ifndef SUBVERSION #define SUBVERSION 2 #endif /* Default "segment" sizes */ #ifndef STACK_SIZE #define STACK_SIZE 30 /* Default Kcells for stack */ #endif #ifndef CONSTANT_SIZE #define CONSTANT_SIZE 150 /* Default Kcells for constant */ #endif #ifndef HEAP_SIZE #define HEAP_SIZE 150 /* Default Kcells for each heap */ #endif \f /* Default pathnames. */ #ifndef DEFAULT_BAND_NAME #define DEFAULT_BAND_NAME "scm:scheme.bin" #endif #ifndef SCHEME_SOURCES_PATH #define SCHEME_SOURCES_PATH "scm:" #endif #ifndef unix /* On unix, these are part of the make file. */ /* Runtime debugging flags, with appropriate defaults: */ /* To debug the interpreter code itself, define ENABLE_DEBUGGING_TOOLS */ /* #define ENABLE_DEBUGGING_TOOLS */ /* If runtime HISTORY recording (a Scheme code debugging tool) is desired. */ #define COMPILE_HISTORY /* To enable the STEPPER. Incompatible with futures. */ /* #define COMPILE_STEPPER */ /* To enable FUTURES (a multiprocessor / multiprocessing extension). This option is incompatible with the stepper. Future.c must also be compiled. */ /* #define COMPILE_FUTURES */ #endif #ifdef COMPILE_STEPPER #ifdef COMPILE_FUTURES #include "Error: Futures and stepping are not currently compatible." #endif #endif /* To enable metering of the time spent in various parts of the Scheme interpreter. Collecting this data slows down the operation of the interpreter, and no tools are supported for accessing the values collected. Useful for collecting statistics and performance work on the interpreter itself or user programs. */ /* #define METERING */ \f /* Operating System / Machine dependencies: For each implementation, be sure to specify FASL_INTERNAL_FORMAT, the various sizes, and the floating point information. Make sure that there is an appropriate FASL_<machine name>. If you do not know these parameters, try compiling and running the wsize program ("make wsize" if on a unix variant). It may not run, but if it does, it will probably compute the correct information. Note that the C type void is used in the sources. If your version of C does not have this type, you should bypass it. Look at what vms (below) does. CHAR_SIZE is the size of a character in bits. USHORT_SIZE is the size of an unsigned short in bits. It should be equivalent to (sizeof(unsigned short) * CHAR_SIZE), but is available to the preprocessor. ULONG_SIZE is the size of an unsigned long in bits. FLONUM_EXPT_SIZE is the number of bits in the largest positive exponent of a (double) floating point number. Note that if excess exponents are used in the representation, this number is one less than the size in bits of the exponent field. FLONUM_MANTISSA_BITS is the number of bits in the (positive) mantissa of a (double) floating point number. It includes the hidden bit if the representation uses them. Thus 2+FLONUM_EXPT_SIZE+FLONUM_MANTISSA_BITS(-1 if hidden bit is used) should be the size in bits of a (double) floating point number. FLONUM_EXPONENT_SIZE MAX_FLONUM_EXPONENT = 2 - 1 Other flags (the safe option is NOT to define them, which will sacrifice speed for safety): b32 should be defined for machines whose word size (CHAR_SIZE*sizeof(long)) is 32 bits. The information is redundant, but some C compilers do not do constant folding when shifts are involved, so it sometimes makes a big difference to define the constants directly rather than in terms of other constants. Similar things can be done for other word sizes. Heap_In_Low_Memory should be defined if malloc returns the lowest available memory and thus all addresses will fit in the datum portion of a Scheme Pointer. The datum portion of a Scheme Pointer is 8 bits less than the length of a C long. UNSIGNED_SHIFT is defined if right shifting an unsigned long (i.e. Pointer) results in a logical (vs. arithmetic) shift. Setting the flag allows faster type code extraction. BELL is the character which rings the terminal bell. Currently only used to signal the beginning and end of garbage collection. If this "feature" bothers you, do not bother defining it. */ #define FASL_UNKNOWN 0 #define FASL_PDP10 1 #define FASL_VAX 2 #define FASL_HP_9000_200 3 #define FASL_NU 4 #define FASL_HP_9000_500 5 #define FASL_SUN 6 #define FASL_BFLY 7 #define FASL_CYBER 8 #define FASL_CELERITY 9 \f /* This hasn't worked in a while. Should be upgraded some day. #ifdef pdp10 #define Heap_In_Low_Memory #define CHAR_SIZE 36 / * Ugh! Supposedly fixed in newer Cs * / #define BELL '\007' #define FASL_INTERNAL_FORMAT FASL_PDP10 #endif */ #ifdef vax /* Amazingly unix and vms agree on all these */ #define Heap_In_Low_Memory #define UNSIGNED_SHIFT #define CHAR_SIZE 8 #define USHORT_SIZE 16 #define ULONG_SIZE 32 #define BELL '\007' #define FASL_INTERNAL_FORMAT FASL_VAX #define FLONUM_EXPT_SIZE 7 #define FLONUM_MANTISSA_BITS 56 /* D format */ #define MAX_FLONUM_EXPONENT 127 /* Not on these, however */ #ifdef vms /* VMS C has not void type, thus make it go away */ #define void /* Name conflict in VMS with system variable */ #define Free Free_Register /* exit(0) produces horrible message on VMS */ #define NORMAL_EXIT 1 #define Exit_Scheme_Declarations static jmp_buf Exit_Point #define Init_Exit_Scheme() \ { int Which_Way = setjmp(Exit_Point); \ if (Which_Way == NORMAL_EXIT) return; \ } #define Exit_Scheme(value) \ if (value != 0) exit(value); \ longjmp(Exit_Point, NORMAL_EXIT) #else /* not a vms */ /* Vax Unix C compiler bug */ #define double_into_fixnum(what, target) \ { long For_Vaxes_Sake = (long) what; \ target = Make_Non_Pointer(TC_FIXNUM, For_Vaxes_Sake); \ } #endif /* not vms */ #endif /* vax */ #ifdef hp9000s200 /* and s300, pretty indistinguishable */ #define Heap_In_Low_Memory #define UNSIGNED_SHIFT #define CHAR_SIZE 8 #define USHORT_SIZE 16 #define ULONG_SIZE 32 #define BELL '\007' #define FASL_INTERNAL_FORMAT FASL_HP_9000_200 #define FLONUM_EXPT_SIZE 10 #define FLONUM_MANTISSA_BITS 53 #define MAX_FLONUM_EXPONENT 1023 #define term_type int /* C compiler bug in GC_Type */ #endif #ifdef nu #define noquick /* Bignum code fails for certain variables in registers because of a compiler bug! */ #define Heap_In_Low_Memory #define CHAR_SIZE 8 #define USHORT_SIZE 16 #define ULONG_SIZE 32 #define BELL '\007' #define FASL_INTERNAL_FORMAT FASL_NU #define FLONUM_EXPT_SIZE 7 #define FLONUM_MANTISSA_BITS 56 #define MAX_FLONUM_EXPONENT 127 #endif \f #ifdef hp9000s500 /* An unfortunate fact of life on this machine: the C heap is in high memory thus Heap_In_Low_Memory is not defined and the whole thing runs slowly. *Sigh* */ #define UNSIGNED_SHIFT #define CHAR_SIZE 8 #define USHORT_SIZE 16 #define ULONG_SIZE 32 #define BELL '\007' #define FASL_INTERNAL_FORMAT FASL_HP_9000_500 #define FLONUM_EXPT_SIZE 10 #define FLONUM_MANTISSA_BITS 53 #define MAX_FLONUM_EXPONENT 1023 /* C Compiler bug when constant folding and anchor pointing */ #define And2(x, y) ((x) ? (y) : false) #define And3(x, y, z) ((x) ? ((y) ? (z) : false) : false) #define Or2(x, y) ((x) ? true : (y)) #define Or3(x, y, z) ((x) ? true : ((y) ? true : (z))) #endif #ifdef sun #define Heap_In_Low_Memory #define UNSIGNED_SHIFT #define CHAR_SIZE 8 #define USHORT_SIZE 16 #define ULONG_SIZE 32 #define BELL '\007' #define FASL_INTERNAL_FORMAT FASL_SUN #define FLONUM_EXPT_SIZE 7 #define FLONUM_MANTISSA_BITS 56 #define MAX_FLONUM_EXPONENT 127 #endif #ifdef butterfly #define Heap_In_Low_Memory #define CHAR_SIZE 8 #define USHORT_SIZE 16 #define ULONG_SIZE 32 #define BELL '\007' #define FASL_INTERNAL_FORMAT FASL_BFLY #define FLONUM_EXPT_SIZE 7 #define FLONUM_MANTISSA_BITS 56 #define MAX_FLONUM_EXPONENT 127 #define No_In_Line_Lookup #include "butterfly.h" #endif #ifdef cyber180 /* Word size is 64 bits. */ #define Heap_In_Low_Memory #define CHAR_SIZE 8 #define USHORT_SIZE ??? #define ULONG_SIZE ??? #define BELL '\007' #define FASL_INTERNAL_FORMAT FASL_CYBER #define FLONUM_EXPT_SIZE 14 #define FLONUM_MANTISSA_BITS 48 /* Not the full range, or so the manual says. */ #define MAX_FLONUM_EXPONENT 4095 /* The Cyber180 C compiler manifests a bug in hairy conditional expressions */ #define Conditional_Bug #endif #ifdef celerity #define Heap_In_Low_Memory #define UNSIGNED_SHIFT #define CHAR_SIZE 8 #define USHORT_SIZE 16 #define ULONG_SIZE 32 #define BELL '\007' #define FASL_INTERNAL_FORMAT FASL_CELERITY #define FLONUM_EXPT_SIZE 11 #define FLONUM_MANTISSA_BITS 53 #define MAX_FLONUM_EXPONENT 2047 #endif \f /* Make sure that some definition applies. If this error occurs, and the parameters of the configuration are unknown, try the Wsize program. */ #ifndef CHAR_SIZE #include "Error: config.h: Unknown configuration." #endif #if (ULONG_SIZE == 32) #define b32 #endif