123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749 |
- 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$
|