21-Jun-90  Ceriel Jacobs (ceriel) at ceriel
	fixed bug in FEF: did not work on 0.0

20-Jun-90  Remco Feenstra & Peter Boersma
	Implemented model 3 (intelligent calls)
	Fixed bug in INN and SET

31-Jan-90  Ceriel Jacobs (ceriel) at ceriel
	Fixed getpid() version of MON.

26-Jan-90  Ceriel Jacobs (ceriel) at ceriel
	Fixed check in COM instruction.

26-Jan-90  Ceriel Jacobs (ceriel) at ceriel
	Fixed so that two consecutive SIG's have no effect.

 8-Dec-89  Ceriel Jacobs (ceriel) at ceriel
	Bug fix: one of the many ZRL encodings was decoded wrong.

22-Nov-89  Ceriel Jacobs (ceriel) at ceriel
	Some more speed-up changes, resulting in another 5%.

13-Nov-89  Ceriel Jacobs (ceriel) at ceriel
	Many changes for speed-up (resulting speed-up: 20-25%).
	Also fixed serious problem in floating point handling: the existing
	code assumed that the low order 4 bytes of a double could be used as
	a float (4 bytes). This is NOT true for most floating point
	implementations, notably IEEE ones.

 3-Oct-88  Dick Grune (dick) at dick
	Since the definitions of VERSION and MAGIC are now available from
	standard include files, e.out.h can be simplified.

27-May-88  Dick Grune (dick) at dick
	Testing with the UNIX system call tester by Leonie van der Voort
	revealed a few errors: when length was negative in a call of read
	or write, funny values were passed to Malloc; the size of the
	elements in the mtime/atime array passed to a call of utime was
	wsize rather than INT4SIZE, as it probably should have been.

25-May-88  Dick Grune (dick) at dick
	It is just too much of a drag to be able to unstack even the last
	RSB, the one that contains the initial setting of the machine.
	newLB has to be patched, and now it seems that also newPC has to
	make an exeception for this case.  We now don't unstack the
	original RSB.

19-May-88  Dick Grune (dick) at dick
	We now also dump the Function Return Area, when giving a stack
	dump.

17-May-88  Dick Grune (dick) at dick
	Segment checking for pointers should also be done for subtraction,
	and give a different warning.

16-May-88  Dick Grune (dick) at dick
	The implementation of the MON call 'exec' was sloppy about the
	buffers used: all strings were assumed to have a maximum length of
	128, and the maximum number of args or environ entries was built
	in.  We now scan the whole works to determine the size.

16-May-88  Dick Grune (dick) at dick
	A stack dump with given size would look funny if the size was large
	than the original stack, or when the dump happened to start in the
	middle of a RSB.

14-May-88  Dick Grune (dick) at dick
	Rethinking the start-up procedure has resulted in the removal of the
	flag LB_def and the RSB is now stacked and unstacked in one blow.
	LB = ML + 1 is now a special case.

11-May-88  Dick Grune (dick) at dick
	Code handling the Function Return Area was spread over a number of
	files; since there was already an include file fra.h, I made a file
	fra.c.  Likewise for alloc.[ch]

10-May-88  Dick Grune (dick) at dick
	The whole segment-checking stuff is now concentrated in segment.c
	(and made correct!)

 9-May-88  Dick Grune (dick) at dick
	Things would be a lot simpler if LB and AB and SP could start from
	ML+1, but they cannot because ML+1 gives overflow.  So we now set ML
	to the highest word boundary minus 1.

 8-May-88  Dick Grune (dick) at dick
	The whole business of deriving AB from LB every time you need it is
	unnatural: it is a separate register in its own right and
	recalculation is only possible since we happen to have a linear
	stack implementation. -> a normal register in the EM machine, set
	in newLB().

 7-May-88  Dick Grune (dick) at dick
	In the non-checking version it did not even check for bad proc
	idfs, actions on double words with wsize == 4, etc., in text.h.  It
	now checks.

 7-May-88  Dick Grune (dick) at dick
	When a trap occurs it is often not at all clear why it happened;
	e.g., the trap ESTACK may have several causes except stack
	overflow: setting SP to an odd value, setting LB to a place where
	there is no RSB, and so on.  Now all such traps are preceded by a
	warning; the combined action is written as   wtrap(W..., E...)
	with W... the warning number and E... the trap number.

 6-May-88  Dick Grune (dick) at dick
	The offsets in the RSB and its size were recalculated every time;
	this was especially ridiculous in accessing a formal parameter
	based on AB; they are now precalculated as soon as psize and wsize
	are known.

 6-May-88  Dick Grune (dick) at dick
	The one-bit register HaltOnTrap is not powerful enough; it has to
	have a special value during loading the EM file (for floating
	overflow in calculations). We now have OnTrap with three values.

 3-May-88  Dick Grune (dick) at dick
	If we want to check that PC does not jump from procedure to
	procedure, we have to know which procedure is running. Introduced
	an EM register PI for Procedure Identifier. We also need the limits
	for each procedure; for this purpose, the procedure descriptor
	table is now preprocessed on start-up. New files: proctab.[ch].

 3-May-88  Dick Grune (dick) at dick
	There was still a considerable confusion between ignorable and
	non-ignorable traps. All ignorable traps are now handled on the
	spot and the procedure trap() is not called if the trap is ignored.
	This means that arm_trap() has disappeared.

 2-May-88  Dick Grune (dick) at dick
	The GTO was done by a rude store in LB, SP and PC; now it properly
	unwinds the stack.

25-Apr-88  Dick Grune (dick) at dick
	With the advent of the Sun 4 RISC machine, the use of variable length
	argument lists has become a liability.  The answer is the include file
	<varargs.h>.  It appears that _doprnt() is sufficiently universal,
	fortunately.

24-Apr-88  Dick Grune (dick) at dick
	There are two levels to stack dumping, the RSB list and the whole
	contents; we now control the first by d1 and the rest by d2.

24-Apr-88  Dick Grune (dick) at dick
	Dumping the GDA and heap is under control of the GDA= and HEAP=
	parameters rather than under d3 or d4.  Changed their id-s to +1
	and *1, so they can be set in the program but not from the
	LOGMASK=.

24-Apr-88  Dick Grune (dick) at dick
	Now that the Logging Machine has been baptized, time has come to
	call the controlling define LOGGING again. Sorry for the confusion.

24-Apr-88  Dick Grune (dick) at dick
	Trying to have the interpreter interpret itself has given rise to
	many small improvements, and a considerable correction to npush() and
	st_lds(). We are again trying.

15-Apr-88  Dick Grune (dick) at dick
	The tallying does in no way belong to the logging machine, so I
	removed the dependency on the flag CHECKING (see 15-Feb-88).

15-Apr-88  Dick Grune (dick) at dick
	The instruction counter  inr  is properly speaking no part of the
	EM machine, but belongs to the logging machine.

15-Apr-88  Dick Grune (dick) at dick
	It is unnatural for the logging machine to derive the values of its
	variables from shell variables.  Shell variables are very global
	and represent a setting in which the user wishes to work.  The
	values of the logging variables change from moment to moment.  They
	are now derived from make-like assignments in the command line.

14-Apr-88  Dick Grune (dick) at dick
	To allow testing routines that handle heap and stack overflow, two
	command line parameters have been added, -hN and -sN, that limit
	the heap and stack size.

14-Apr-88  Dick Grune (dick) at dick
	The EM Manual provides two traps for undefined integers and floats.
	Since the interpreter does not have special values for undefined;
	since it relies on the shadow bytes to give a warning; and in view
	of the frequent occurrence of such undefined values, the
	interpreter just gives a warning.
	It would be nice if the interpreter could also, on request, exhibit
	the formally correct behaviour of giving a trap.  This is, however,
	impossible, since such a trap would have to rely on the shadow bits
	and the shadow bits are only present in the checking version.
	The conclusion is that we do not give a trap on use of undefined,
	ever.

 2-Apr-88  Dick Grune (dick) at dick
	The warnings about type T expected left one in the dark as to what
	*was* there.  Now it prints a continued warning telling about the
	type found.  To this end, warningcont() prints a chained warning.

 1-Apr-88  Dick Grune (dick) at dick
	When a pointer is needed and it turns out to be an integer, a test
	is done to see if it happens to be zero, in which case all is well.
	This was, however, a rather weird test; it is much simpler, when
	storing a zero value, to switch on both the SH_INT bit and the
	SH_DATAP bit.

31-Mar-88  Dick Grune (dick) at dick
	The logging machine has now been separated from the EM machine as
	much as is reasonably possible.  Weak points are still forking and
	the handling of the abbreviations AT= and L= .

29-Mar-88  Dick Grune (dick) at dick
	On many systems it is inappropriate to grab file descriptors 19 and
	18 for messages and logging.  It now finds the highest ones (with a
	limit of 99, for systems that have an unlimited supply of them).

29-Mar-88  Dick Grune (dick) at dick
	There were some terminological inaccuracies about the difference
	between a procedure identifier and a procedure descriptor.

29-Mar-88  Dick Grune (dick) at dick
	Since the disassembler is in no way involved in the logging machine,
	it seems inappropriate to use LOG(()) to produce the text.  Just
	using printf() is much cleaner.

28-Mar-88  Dick Grune (dick) at dick
	Although trap handling had a file for itself, trap.c, warning
	handling was still done inside io.c.  Introduced a new file,
	warn.c, to handle the warnings.

26-Mar-88  Dick Grune (dick) at dick
	Providing a good dump of a 2/4 machine is not easy; it is not clear
	where a pointer may be found.  This was solved by just printing
	words everywhere, which was unsatisfactory.  Now pointers are
	printed wherever the shadow bits indicate that there might be a
	pointer there, i.e. when the address is a word multiple and the 4
	bytes all have the pointer bit on.  This is less unsatisfactory,
	though not good.

23-Mar-88  Dick Grune (dick) at dick
	Adapted to the new u flag in ip_spec.t; this cleared up the text
	segment access in text.h.

21-Mar-88  Dick Grune (dick) at dick
	Implemented the requirement that, when doing an RET or RTT, the stack
	pointer must be back where it started.  This required the proc.
	idf to be recorded in the Return Status Block.

20-Mar-88  Dick Grune (dick) at dick
	Likewise (see below) for the text of the trap messages.

20-Mar-88  Dick Grune (dick) at dick
	Having the text, defines and numerical values in three different
	files is kind of inconvenient.  They are now centralized in
	../doc/appA (Appendix A of the manual) where they appear with
	explanations.  The files  warn_msg (with texts)  and  warn.h (with
	defines) are generated from it through  M.warn_msg and M.warn_h,
	resp.

20-Mar-88  Dick Grune (dick) at dick
	Introduced the use of $(EM)/h/em_abs.h to include the trap numbers
	and the positions of LIN and FIL (although this seems a funny place
	to find them).

20-Mar-88  Dick Grune (dick) at dick
	Concentrated all e.out.h defines in e.out.h; this should probably
	go into $(EM)/h one of these days.

20-Mar-88  Dick Grune (dick) at dick
	The interpreter in the EM Manual does not use EBADLIN; we now decide
	that it is raised if the line number is larger than that mentioned
	in the EM header, part 2.

19-Mar-88  Dick Grune (dick) at dick
	The EM Manual states that a number of overflow tests need not be done
	if the FB_TEST bit in the second header word is not on.
	Experimental implementation of this shows a speed-up of 16%, so it
	is probably worth while.

18-Mar-88  Dick Grune (dick) at dick
	Reading the opcode and the argument bytes from the text segment was
	done by a procedure call, but the procedure call (newPC()) did not
	test for running out of the text segment.  Replaced by a macro + a
	number of other similar speed-ups.

18-Mar-88  Dick Grune (dick) at dick
	Reraising the signal is not really useful; it is more useful never
	to catch a synchronous trap.  UNIX then automatically does what it
	has to do.

17-Mar-88  Dick Grune (dick) at dick
	Redoing the trap mechanism lead to looking at the RTT vs RET
	instruction; it is nice to know where a Return Status Block
	originated: start-up, call, trap, non-restartable trap.  We now
	push this info as topmost item on the stack.  Values etc. in rsb.h

15-Mar-88  Dick Grune (dick) at dick
	I finally found out why the interpreter was spending 30% of
	its time in the system: it did a setjmp for each and every EM
	instruction, and IT does a call of signal().  Redoing this lead to
	considerable hacking in the trap handling mechanism.  See the
	chapter in the documentation.

11-Mar-88  Dick Grune (dick) at dick
	Not all C compilers provide floating point operations.  Installed a
	file nofloat.h with a flag NOFLOAT, which, if defined, suppresses
	the use of fp operations.  The resulting interpreter will load EM
	files with floats in the GDA (but ignore them) but will give a
	fatal error upon attempt to execute a fp instruction.

10-Mar-88  Dick Grune (dick) at dick
	Added procedure identifier indications in the disassembly output,
	which helps in reading it.

 8-Mar-88  Dick Grune (dick) at dick
	Implemented the other half of the type checking on ptr; this involved
	a macro  i2p()  to convert from index to pointer.

 6-Mar-88  Dick Grune (dick) at dick
	Officially C does not have a type 'unsigned long', but the
	interpreter uses it heavily. Now it would be nice if we could make
	a version that does not use unsigned long.  The main difficulty is
	the file do_unsar.c for doing unsigned arithmetic; for the rest it
	is possible and partway done.  Most sizes are now of the type  size.

 4-Mar-88  Dick Grune (dick) at dick
	The list of warnings was fixed and contiguous, which was a nuisance
	when adding warnings.  Now there is a mapping from warning numbers
	to the corresponding strings through a routine which does the
	lookup.

 3-Mar-88  Dick Grune (dick) at dick
	The whole address testing for system calls in MON was shaky; most
	of them just produced traps. Corrected; they now return -1 and set
	errno to 14 (EFAULT).

 1-Mar-88  Dick Grune (dick) at dick
	Some compilers use V7 ioctl request codes, some use the local
	codes.  To accommodate both, we have a compile-time flag, V7IOCTL,
	which, if defined, causes the ioctl requests to be interpreted as
	V7 requests (of the form   't'<<8 | x)

 1-Mar-88  Dick Grune (dick) at dick
	String arguments to system calls were, for the most part, just
	picked up, without any serious testing.  Corrected in moncalls.c;
	violation results in errno == 14 (EFAULT) as it should.

29-Feb-88  Dick Grune (dick) at dick
	Concentrates all exits in a function  close_down()  which does
	calls to fclose() on the opened files, may reraise a caught signal
	and exits with the given return code.

26-Feb-88  Dick Grune (dick) at dick
	The type ptr was used very loosely; tightened up the code in many,
	many places.  Introduced a macro p2i(p) which converts a "pointer"
	(EM address) to an index in the machine array.  This modification
	necessitated a great many small changes and allowed some
	considerable simplifications.

22-Feb-88  Dick Grune (dick) at dick
	The format of a procedure identifier was a pointer in places and a
	long in others.  It is now a psize unsigned integer.

16-Feb-88  Dick Grune (dick) at dick
	The code for calculating the sizes of the environ strings and the
	argument strings was unreadable.  Rewritten in init.c.

15-Feb-88  Dick Grune (dick) at dick
	The tallying is not likely to be used by a user of the non-logging
	version, so it may as well be absent then, to save space.  Made all
	tallying dependent on CHECKING.

15-Feb-88  Dick Grune (dick) at dick
	When allocating space for the stack and the global data area, the
	shadow bytes were not set to SH_UNDEF.  Since the undef-ing of the
	shadow bytes occurs in several places, I introduced two routines,
	st_clear_area() and dt_clear_area() for the purpose.

12-Feb-88  Dick Grune (dick) at dick
	The dumping format of the text segment (just bytes in decimal) was
	unsatisfactory.  It turned out quite easy to use the mkswitch from
	the switch directory to hack together a simple disassembler, which
	produced readable EM instructions.
	Moreover, text does not change while the program runs, so dumping
	it at a given instruction is quite meaningless.  We now dump it
	right at the beginning, when the -T option is given.

 4-Feb-88  Dick Grune (dick) at dick
	The whole idea of a driver (int.c) is superfluous now.  Moreover
	there were naming problems all the time.  Removed references to the
	driver.

 1-Feb-88  Dick Grune (dick) at dick
	Measurements have shown that a checking but not logging interpreter
	is only a few percents faster that one that does both, at the
	expense of considerably lower functionality.  So I merged logging and
	checking in the file checking.h.  Made testing for logging more
	efficient by having a single variable   logging   which is set as
	soon as   must_log && inr >= log_start  is true.  This is faster
	and much leaner code.  Exit the function  interesting().

 1-Feb-88  Dick Grune (dick) at dick
	Removed the warning about switched-off warnings and traps; they
	were a nuisance.

29-Jan-88  Dick Grune (dick) at dick
	The zero pointer arithmetic check was implemented incorrectly.
	While correcting this, I cleaned up all the checking and warning
	mechanisms, up to a point.  There is much more one can do.
	Unfortunately this involved renumbering the warnings, so we hack
	the manual to match.

27-Jan-88  Dick Grune (dick) at dick
	Line number and file name also in last line of stack dump, for
	uniformity with RSB descriptions.

25-Jan-88  Dick Grune (dick) at dick
	The default log mask is better at A-Z9d4twx9 than at A-Z9d1twx9.

23-Jan-88  Dick Grune (dick) at dick
	Warnings are now tallied not only by warning number, but also by
	file name and line number.  Used simple linked lists in io.c.

23-Jan-88  Dick Grune (dick) at dick
	Having an address space of 2**32 is absurd; it will have to be 2**31
	to implement uninitialized pointers.  Just to be able to give a
	good example in "How To Use the Interpreter", I changed MAX_ADR4 to
	I_MAXS4 (was I_MAXU4).

22-Jan-88  Dick Grune (dick) at dick
	The grammar of a float in the manual, the grammar of an UnsignedReal
	in the Pascal manual and the implementation in read.c were all
	slightly different.  I made a clear distinction between the Pascal
	version (OK), the more loose implementation of "acceptable float"
	(with warning) and just garbage (with fatal error). ".e3" is an
	acceptable float.

21-Jan-88  Dick Grune (dick) at dick
	The interpreter did not catch stores at location 0.  Changed this
	by making the LIN and FIL locations ROM.  Introduced macros for
	protecting the data space (analogous to protecting the RSB in the
	stack).  Moved all shadow byte handling to shadow.h.  LIN, LNI and FIL
	are implemented by first lifting the write ban by dt_unprot, writing
	and then restoring it by dt_prot.

 8-Jan-88  Dick Grune (dick) at dick
	The AT shell variable stopped one instruction too late. Corrected
	in main.c.

 8-Dec-87  Dick Grune (dick) at dick
	I was explained that there is a subtle difference between the trap
	routine address being 0 and the default action upon trap. It says
	in the beginning of chapter 9 (Traps and Interrupts) of IR-81:
	Initially the pointer used is zero and all traps halt the program
	with ... The meaning of the SIG instruction is stated as: Trap
	errors to proc identifier on top of stack, -2 resets default. This
	means, I am told, that SIG with -2 restores the "pointer used" to
	zero and "directs all traps to halt the program ...", and that SIG
	with 0 just registers proc 0 as the trap routine.

	Although I think this raises more questions than it answers (how
	can I see if the previous trap routine was 0 or default?) I
	implemented it by adding an EM machine register HaltOnTrap, which
	is set in the non-default case.

 1-Dec-87  Dick Grune (dick) at dick
	When debugging with the interpreter one often uses a call like
		LOG=123455 STOP=123457 int .....
	Added a shell variable AT which effects the above:
		AT=123456 int ...

27-Nov-87  Dick Grune (dick) at dick
	The shift distance in shifts and rotates must be in the range 0
	to object size in bits - 1, as it says in IR-81. This introduced a
	lot of inline code in DoSLI .. DoROR that should maybe go into
	subroutines.

23-Nov-87  Dick Grune (dick) at dick
	It turned out that LOG(("@S was a prefix both in do_store.c and in
	do_sets.c.  Changed to @Y in the latter.

23-Nov-87  Dick Grune (dick) at dick
	SLI (shift left int) did an incorrect overflow test (failed on
	negative shift argument).

22-Nov-87  Dick Grune (dick) at dick
	Reformatted the output of the dump of the text and of the
	procedure descriptors. The latter is now more or less
	readable.

22-Nov-87  Dick Grune (dick) at dick
	Took all the direct memory access actions together in memdirect.h.
	This allows more readable code in dump.c and in a few other places.

10-Nov-87  Dick Grune (dick) at dick
	The stack dump is too unstructured and does not give enough
	information. Moreover, the position reporting in the various dump
	lines is erratic. Changed the routine do_log() to have two
	variants, one in which the format starts with @, which causes the
	position to be reported, and one in which the format starts with a
	blank, which is printed as is.
	Added two routines st_raw() and st_rsb() to print the raw and
	Return Status Block portions of the stack, resp., and displ_fil(),
	to print the name of the file, if at all possible. The stack
	parsing can be switched off with the -r option.

 9-Nov-87  Dick Grune (dick) at dick
	Redressed the treatment of the Return Status Block, to give a
	better dump.

 1-Nov-87  Dick Grune (dick) at dick
	The present segment checking is not very informative and produces
	complaints about intermediate results, which is annoying.
	This is not easily corrected. For each pointer, one should keep
	track where it originated, and when it is dereferenced a check
	should be made to see if it is applied to the original segment.
	This is kind of stiff to implement.
	For the time being, I have made the whole segment checking subject
	to a compile-time flag, SEGCHECK, to be kept in segcheck.h. The
	flag will normally be off, which saves time, space and
	inappropriate warnings.

28-Oct-87  Dick Grune (dick) at dick
	Small changes:
	-	put Malloc etc in a header file: alloc.h
	-	removed dt_ldf() (unused)
	-	make static routines and data PRIVATE, to allow both
			static and extern

25-Oct-87  Dick Grune (dick) at dick
	arg_lae() should not check against HB but against max_addr, for
	funny address calculations as performed by e.g. lex.

14-Oct-87  Dick Grune (dick) at dick
	Exece in moncalls.c cannot succeed (if it succeeds, it's gone!)
	Corresponding code removed and rest straightened out.

13-Oct-87  Dick Grune (dick) at dick
	Brought the interpreter under RCS and CVS.

12-Oct-87  Dick Grune (dick) at dick
	Added a -t option in main.c to switch the tallying on.

11-Oct-87  Dick Grune (dick) at dick
	Added two routines, tally() and out_tally() for (you guessed it)
	tallying.  out_tally() produces a readable file with for each
	source file the name followed by a number of lines, each
	containing a line number, the number of times that line was
	entered and the number of instructions executed on that line.
	Somebody should write a program to merge this with the original
	files.

 3-Oct-87  Dick Grune (dick) at dick
	Added routines for  fabs(), pow() and floor() to avoid having to
	invoke -lm.

 2-Oct-87  Dick Grune (dick) at dick
	Floating point constants that started with a . were read
	incorrectly, as the mantissa was not initialized in that case.

25-Sep-87  Dick Grune (dick) at tjalk
	All access to the LIN and FIL information has been brought
	together in a header file  linfil.h,  which contains #defines for
	putLIN(), getLIN(), putFIL() and getFIL().

20-Sep-87  Dick Grune (dick) at tjalk
	Added a routine core_dump() which dumps core after a fatal error.
	The core image consists of the values of the EM parameters and
	registers, by name; ie.
		wsize=4
		psize=4
		ML=4294967295
		HB=816
	etc., one to a line, followed by
		fwrite(text, 1, DB, core_file);
		fwrite(FRA, 1, FRALimit, core_file);
		fwrite(data, 1, HL, core_file);
		fwrite(stack, 1, ML+1-SL, core_file);
	possibly followed by
		fwrite(FRA_sh, 1, FRALimit, core_file);
		fwrite(data_sh, 1, HL, core_file);
		fwrite(stack_sh, 1, ML+1-SL, core_file);
	so somebody could write a formatter for it.


18-Sep-87  Dick Grune (dick) at tjalk
	The function return area was a fixed-size array. Now it is
	allocated through Malloc(), like the other memory constituents of
	the EM machine.  This introduced the -R-option, to set the size of
	the return area (default is 8).

13-Sep-87  Dick Grune (dick) at tjalk
	Restructured global.h to better reflect what are EM registers and
	what are implementation variables. This introduced read.h to
	concentrate the EM header quantities.

10-Sep-87  Dick Grune (dick) at tjalk
	Implemented a shell-variable STOP= more or less analogous to LOG=
	such that a call of the interpreter
		STOP=321456 int ...
	will stop the interpreter after an instruction count of 321456, to
	avoid run-away interpreters.

27-Aug-87  Dick Grune (dick) at tjalk
	The idea has been raised to let int read the default values of
	LOG, LOGMASK, etc., for a file in the working directory, e.g.
	.em_intrc or so.  I have not done so since only for the LOGMASK
	a reasonable default can be given; the others are case-specific.
	So I gave  LOGMASK  the default value  "A-Z9d1twx9"  instead.

25-Aug-87  Dick Grune (dick) at tjalk
	Changed the name of the instruction counter from  ino  to  inr, to
	avoid confusion with "inode numbers".

20-Aug-87  Dick Grune (dick) at tjalk
 	The EM report specifies a list of UNIX Version 7 -like system
 	calls, not full access to the system calls on the underlying
 	machine.  Therefore an attempt has been made to use or emulate
 	the Version 7 system calls on the various machines.

18-Aug-87  Dick Grune (dick) at tjalk
	Introduced a file  sysidf.h  which holds the #define for the
	present system:  BSD4_1,  BSD4_2  or  SYS_V0.  Based on these, it
	defines generic #defines:  BSD_X  and SYS_V .  Added various
	#ifdefs for the various systems, guided by cc, acc and lint.

16-Aug-87  Dick Grune (dick) at tjalk
	There were some portability problems with  dup2 .
	Since dup2 is not available on all UNIX systems, and since
	it was a kludge in the first place, I implemented a routine
	move_file_descriptor, again with slightly different semantics:
	it closes the original file descriptor. (io.c)

13-Aug-87  Dick Grune (dick) at tjalk
	Renamed set_log to set_lmask and set_log_file to set_lfile, all in
	the name of System V compatibility.  Perhaps we should rename
	everything, to SetLogMask, SetLogFile, etc., Modula-2 style.

13-Aug-87  Dick Grune (dick) at tjalk
	And changed names like  do_LAEl4  to  DoLAEl4, to get them through
	the assembler in System V.

11-Aug-87  Dick Grune (dick) at tjalk
	Changed names like  do_LAEl4  to  do_lae_l4, to keep within 8
	characters.

10-Jul-87  Dick Grune (dick) at tjalk
	Introduced  monstruct.h and monstruct.c, to contain the code for
	copying UNIX system call structures to and from EM MON call
	structures.

 9-Jul-87  Dick Grune (dick) at tjalk
	Made -W option always available.

 8-Jul-87  Dick Grune (dick) at tjalk
	Why is the -W option available only when CHECKING is on? What am I
	missing?

 6-Jul-87  Dick Grune (dick) at tjalk
	It turned out that  emsig.h  is included in m_sigtrp.c only and
	contains only definitions of functions from same m_sigtrp.c.
	Eliminated  emsig.h.

	Better identification of the position from where a message is
	given, through the new routine  position().

 3-Jul-87  Dick Grune (dick) at tjalk
	Did the rest of dump.c (and found an error in the administration
	of the undefineds in hp_dump).
	Changed LOG to LOGGING, and  log((  to  LOG((, just for
	readability and uniformity.

 2-Jul-87  Dick Grune (dick) at tjalk
	Changed switch.c to be a normal file in this directory; it now
	includes the cases in the switch from  ../switch/cases , which
	allows greater freedom in programming the rest of switch.c.

 1-Jul-87  Dick Grune (dick) at tjalk
	Read.c nested to excessive length. Isolated a function rd_descr()
	which reads one descriptor.
	There were many almost similar #defines for setting bits in
	'trapped'.  Concentrated them in  arm_trap(ENUMBER).

30-Jun-87  Dick Grune (dick) at tjalk
	Handling of failure of ftime (moncalls.c) was wrong.  Corrected.
	Corrected many lint gripes.

28-Jun-87  Dick Grune (dick) at tjalk
	The routine  st_dump  in dump.c does nothing but testing whether
	or not to log at level d1.  Why not test so right at the
	beginning? So I did: the same test now runs in 7 sec.  See macro
	interesting()  in dump.c.

25-Jun-87  Dick Grune (dick) at tjalk
	Restructured the file dump.c, because of excessive nesting depth.
	The result, however, was an efficiency loss of 50 % (from 65 sec.
	to 96 sec.!).  The restructuring will have to be rethought!

24-Jun-87  Dick Grune (dick) at tjalk
	The shadow-byte checking macro's are used only in  data.c, dump.c
	and stack.c.  They are brought into a new header file, shadow.h,
	which reduces the weight of  mem.h.

22-Jun-87  Dick Grune (dick) at tjalk
	Removed or changed macros that assign to their parameters; these
	introduce a parameter mechanism that is alien to C and is misleading.

	Made testing calls of malloc and realloc into functions Malloc and
	Realloc in init.c.

21-Jun-87  Dick Grune (dick) at tjalk
	Created  global.c  to contain the actual definitions from
	global.h.  The declarations stay behind in  global.h , thus
	avoiding multiple definitions.

	Removed  io.h  altogether.  All handling of the EM object file is
	now concentrated in read.c  (fopen was in io.c, fclose in init.c).

21-Jun-87  Dick Grune (dick) at tjalk
	Renamed  def.h  global.h (in anticipation of  global.c ).
	Removed test  if (warnmark)  from init.c.  Here  warnmark  is an
	array, an error not caught by the VAX C compiler.

20-Jun-87  Dick Grune (dick) at tjalk
	Removed initializations from .h files. This resulted in the
	complete removal of trapmess.h and warnmess.h.  Concentrated data
	about the return area in return.h.  Slimmed down io.h considerably.

19-Jun-87  Dick Grune (dick) at tjalk
	Moved contents of ../include to here (src) since a separate
	include directory is only meaningful if it is referenced in other
	places as well.  Updated  Makefile  and all #include's.
	Replaced  SECUNDAIR  by SECONDARY  and TERTIAIR  by  TERTIARY.

	All files included  log.h  and  nocheck.h , which contain compile
	time flags.  This is not logical; only the files that use LOG and
	NOCHECK should have any business of knowing about them.
	Reorganized the files in this sense.  Dependencies recalculated by
	$(EM)/bin/mkdep.

18-Jun-87  Dick Grune (dick) at tjalk
	More reformatting, especially the complicated #define's.
	Established a small test environment.

17-Jun-87  Dick Grune (dick) at tjalk
	Made all indentation conform to tabulation scheme.
	Replaced  register  by   register int  where appropriate.

16-Jun-87  Dick Grune (dick) at tjalk
	Received the directory from Eddo de Groot and Leo van den Berge.

$Id$