26/04/84     Graphics interface

   The standard APM graphics routines can now be called from C.  See graftest.c
   for examples.


25/04/84     Debugging

   The compiler can now generate code to keep track of source line numbers
   during run time.  The flag -l causes the line number at location 1000 hex in
   the APM to be updated, so error messages (e.g. bus error)  can include it.
   The flag -L causes trap 15 instructions to be generated, so the software
   front panel commands n (step to next source line) and lnnn (continue to line
   nnn) can be used.


23/04/84     Some enhancements:

   A C event handler is now installed when a C program is loaded (and removed on
   exit).  This transforms imp events into UNIX signals where possible.  The
   signals supported are:
      name                       UNIX     IMP
      interrupt                  SIGINT   0,1   console control Y
      illegal instruction        SIGILL   0,4
      floating point exception   SIGFPE   1,4
      bus error                  SIGBUS   0,2
      segment violation          SIGSEGV  0,3   address error
      bad system call            SIGSYS   5,*
   Default action on all signals is to reinstall the original event handler and
   pass the buck to it.  This means that C programs which do not concern
   themselves with signals can now be successfully terminated with control Y,
   without getting into **trouble.

   The exit routine now does a closeinput if the exit status is non-zero.  This
   means that a C program being executed in a command file which fails (status
   != 0) aborts the command file.

   The startup routine, which parses the command line, also does some i/o
   redirection.  Files can be associated with stdin, stdout and stderr using
   '<', '>', '2>'.

   C programs can now be installed in memory and reexecuted without reloading.
   This means that symbol definitions such as c68=c:c68 can be used, which speed
   up program execution considerably.


16/04/84     APM  C  Compiler v2  --  Preliminary release notice           FDC

   A new version of the MIT C compiler, along with most of the UNIX C run-time
   system, is now available on the WEE filestore.

   Major changes (compared to OLD::C:CC):
   * The run-time system has been considerably expanded.
     The original UNIX sources have been used for the machine-independant
     C-subroutines (most of section 3 of the UNIX manuals).  The system calls
     (section 2) have been implemented as far as possible on the APM.  All of
     the calls are available, but some (such as fork()) just return an error
     code.

   * DEC-like floating-point routines (32 & 64 bit) are included, as are the
     UNIX section 3M maths functions.

   * To handle the expanded run-time system a new linker is available, which
     searches object module libraries and loads only those modules which
     satisfy undefined external references.

   * A code optimizer is available.  It is not bug-free, and sometimes produces
     bad code.

   * Various utilities, mainly for inspecting object modules and managing
     libraries, are available.

   
   The compiler has been used successfully to compile itself on the APM, and to
   compile CProlog.  Portability problems are restricted to those system calls
   involving forks, pipes, execs or detailed file operations like ioctl(2), and
   machine dependant code for parsing filenames etc.  The symbol "apm" is
   predfined in the preprocessor, so conditional compilation like the following
   can be used:
         #ifdef apm
         char *tmpname = "$pcXXXXXX";
         #else
         char *tmpname = "/tmp/pcXXXXXX";
         #endif

   Numerous improvements and extensions are possible, but they will not be
   attempted until the APM multi-tasking operating system is operational.


   A simple C program can be compiled and linked as follows:
      C:DO C:CCL,prog
   This would compile file prog.c into prog.mob.
   C:DO is a simple command file executer, and C:CCL the corresponding command
   file to compile and link a single module program. Other possibilities are:
         C:CC     - compile only
         C:CCO    - compile and optimize
         C:CCOL   - compile, optimize and link
