# $Id$

This directory contains the sources of the EM interpreter. A parallel
directory contains the manual page and the documentation.  Two types of
interpreters can be generated.

- Normal Version
A call to  make  will result in the generation of an interpreter,  int.  This
interpreter will do full checking and can do logging on request.  It is the
normal interpreter to be used for software checking and grooming.

- Fast Version
If the interpreter is used for the purpose of running programs rather than for
testing them, a considerably faster version can be generated by undefining the
macro   LOGGING   in the include file   logging.h .  This interpreter will
still give some warnings: about bad trap numbers, unimplemented system calls
and the occurrence of traps.

There are a small number of compile-time flags, each in a separate file:
	loggin.h	- distinguishes between normal and fast version
	debug.h		- ignore
	segcheck.h	- ignore
	sysidf.h	- define the approrpiate system name
	v7ioctl.h	- define if ioctl requests should conform to UNIX V7
	nofloat.h	- define if the C compiler used has no floating point


There are two subdirectories:
	switch		- generates opcode-analysing switches
	test		- contains testprograms


Installation note:
The file do_fpar.c (do floating point arithmetic) contains a macro  MAXDOUBLE
which defines the largest possible double on the present machine. It is set to
99.e999, which may not be acceptable to your compiler. Adjust as necessary.

Note:
This interpreter assumes that the  char  in the C compiler used to translate
the interpreter, is a signed char.  It is not impossible to adapt the
interpreter to unsigned chars, but it is not trivial.