home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_300
/
310_01
/
env.h
< prev
next >
Wrap
Text File
|
1990-04-20
|
6KB
|
205 lines
/*
Little Smalltalk
execution environment definitions.
The Little Smalltalk system is tailored to various machines by
changing defined constants. These constants, and their meanings,
are as follows:
CURSES defined if the curses(3) library is available and the primitive
graphics it provides is desired
GAMMA defined if gamma() is part of the math library
ENVSAVE defined if it is required to save environ during fast load
FACTMAX maximum integer value for which a factorial can be computed by
repeated multiplication without overflow.
FASTDEFAULT defined if the default behavior should be to do a fast load
FLUSHREQ if defined a fflush is given after every call to printf
or fprintf
INLINE generate inline code for increments or decrements -
produces larger, but faster, code.
MDWINDOWS defined if the maryland windows package is used
NOSYSTEM defined if the system() call is NOT provided
(seriously limits functionality)
OPEN3ARG defined if 3 argument style opens are used
PLOT3 defined if you have a device for which the plot(3) routines work
directly on the terminal (without a filter)
provides many of these routines as primitive operations
(see class PEN in /prelude)
SMALLDATA if defined various means are used to reduce the size of the
data segment, at the expense of some functionality.
SIGS define in the signal system call is available
for trapping user interrupt signals
SETJUMP defined if the setjump facility is available
In addition to defining constants, the identifier type ``unsigned
character'' needs to be defined. Bytecodes are stored using this datatype.
On machines which do not support this datatype directly, macros need to be
defined that convert normal chars into unsigned chars. unsigned chars are
defined by a typedef for ``uchar'' and a pair of macros that convert an int
into a uchar and vice-versa.
In order to simplify installation on systems to which the
Little Smalltalk system has already been ported, various ``meta-defines''
are recognized. By defining one of these symbols, the correct definitions
for other symbols will automatically be generated. The currently
recognized meta-defines are as follows:
BERK42 Vax Berkeley 4.2
DECPRO Dec Professional 350 running Venix
HP9000 Hewlett Packard 9000
PDP1170 PdP 11/70 (also other PDP 11 machines)
PERKELM Perken Elmer 8/32
RIDGE Ridge ROS 3.1
IBMPC IBM PC/AT with MSDOS, Microsoft C v4.0
Finally, a few path names have to be compiled into the code.
These path names are the following:
TEMPFILE - a temporary file name in mktemp format
PARSER - the location of the parser
PRELUDE - the location of the standard prelude in ascii format
FAST - the location of the standard prelude in saved format
LIBLOC - the location of the directory for additional libraries
*/
/*
# define TEMPFILE "/usr/tmp/stXXXXXX"
# define PARSER "/users/budd/Projects/smalltalk/bin/parse"
# define PRELUDE "/users/budd/Projects/smalltalk/prelude/standard"
# define FAST "/users/budd/Projects/smalltalk/prelude/stdsave"
# define LIBLOC "/users/budd/Projects/smalltalk/prelude"
*/
/* ------------------MSDOS directory names */
# define TEMPFILE "\\lst\\tmp\\stXXXXXX"
# define PARSER "\\lst\\parser\\parse"
# define PRELUDE "\\lst\\prelude\\standard"
# define FAST "\\lst\\prelude\\stdsave"
# define LIBLOC "\\lst\\prelude"
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>meta-define <<<<<<<<<<<<<<<*/
# define IBMPC
/*------------------------------ IBM PC with MSDOS, Microsoft C v4.0 */
# ifdef IBMPC
# define FACTMAX 8
# define SIGS
# define SETJUMP
typedef unsigned char uchar;
# define itouc(x) ((uchar) x)
# define uctoi(x) ((int) x)
# endif /* end of IBM PC definition */
/*------------------------------ VAX Berkeley 4.2 definition */
# ifdef BERK42
# define GAMMA /* gamma value is known */
# define FACTMAX 12
# define FLUSHREQ /* flush after every printf */
# define SIGS
# define SETJUMP
typedef unsigned char uchar;
# define itouc(x) ((uchar) x)
# define uctoi(x) ((int) x)
/* # define MDWINDOWS */
/* FASTLOADING DOES work, and should eventually be defined to be standard*/
/*# define FASTDEFAULT*/ /* default to fast-loading */
# endif /* BERK42 definition */
/*------------------------------ HP 9000 / HP - UX definition */
# ifdef HP9000
# define GAMMA /* gamma value is known */
# define FACTMAX 12
# define FLUSHREQ /* flush after every printf */
# define SIGS
# define SETJUMP
typedef unsigned char uchar;
# define itouc(x) ((uchar) x)
# define uctoi(x) ((int) x)
# endif /* HP 9000 definition */
/* ---------------------------------------RIDGE ROS 3.1 definition */
# ifdef RIDGE
# define GAMMA /* gamma value is known */
# define FACTMAX 12
typedef unsigned char uchar;
# define itouc(x) ((uchar) x)
# define uctoi(x) ((int) x)
# endif /* RIDGE definition */
/* --------------------------------------------DEC PRO definitions */
# ifdef DECPRO
/* GAMMA, OPEN3ARG not defined */
# define ENVSAVE
# define FACTMAX 8
# define SMALLDATA
/* unsigned characters not supported, but can be simulated */
typedef char uchar;
# define itouc(x) ((uchar) x)
# define uctoi(x) (unsigned) (x >= 0 ? x : x + 256)
# endif /* DECPRO definition */
/* --------------------------------------------PDP11/70 definitions */
# ifdef PDP1170
/* GAMMA, OPEN3ARG not defined */
# define ENVSAVE
# define FACTMAX 8
# define FLUSHREQ
# define SIGS
# define SETJUMP
/* unsigned characters not supported, but can be simulated */
typedef char uchar;
# define itouc(x) ((uchar) x)
# define uctoi(x) (unsigned) (x >= 0 ? x : x + 256)
# endif /* PDP1170 definition */
/*------------------------------ Perkin Elmer 8/32 definitions */
# ifdef PERKELM
# define ENVSAVE
# define FACTMAX 12
# define FLUSHREQ /* flush after every printf */
typedef unsigned char uchar;
# define itouc(x) ((uchar) x)
# define uctoi(x) ((int) x)
# endif /* PERKELM definition */
/******************************************************************/
/*
the following are pretty much independent of any system
*/
# define INLINE /* produce in line code for incs and decs */
/* # define CURSES */
/* # define PLOT3 */