DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T c

⟦4702e089d⟧ TextFile

    Length: 12159 (0x2f7f)
    Types: TextFile
    Names: »config.dst«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/gnu-31mar87/scheme/microcode/config.dst« 

TextFile

/*          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