From: Mike Newton
Subject: AKCL port available
Date: 
Message-ID: <14424@cit-vax.Caltech.Edu>
[note : please do _not_ ask me to mail these to you.... i have a thesis due
 soon... .  This software might be useful to other non-88k machines too.
 also,  much more 88k software should be available soon -- mike]

These patches, available as:
	csvax.caltech.edu :: ~ftp/DG/New.AKCL.1.tar
and	csvax.caltech.edu :: ~ftp/DG/New.AKCL.2.tar
are a set of enhancements to AKCL 1-470.

The features include:
1 : The code is ported to the DG AViiON and probably most other 88k machines.
2 : A number of portability problems have been fixed, including:
      Strict ANSI C shifting
      Proper 'varargs' in the MUST_COPY_VA_ARGS macro and elsewhere
      MUCH better (though not perfect!) machine-independent sfasl.c code.
3:  Other small hacks.
4:  A file describing many porting hints.


To compile AKCL on the DG AViiON, and probably most other 88k machines, use
the 'aviion.{h,defs}' files.  These depend on 'gcc' which is available from
dg-rtp.dg.com in ~ftp/pub/gnu.

You MUST use either gcc-1.35.N where N > 22
                 or gcc-1.37.N where N >= 2    for this to work!!!

Note: if using gcc-1.35.23  compile gbc.c without  -O !!!
Note: if using gcc-1.37.N (N>=2) && using 4.20 or before, use
		-mno-ocs-frame-position
Note: do _not_ use DG's 'cprs' on kcl.  'cprs' is broken.


(AViiON version of gcc up to 1.35.22 had a bug, such that for multiple
 va_start's in one procedure, the first in a different block than the
 second, will produce bad code.  1.36 versions had several other bugs.)

In addition to 88k machines, the changes should be very useful on any
non-array type varargs machines.  It might even speed up other processors.

sfasl.c in particular has had many improvements to make it run on more COFF
machines.

PLEASE tell me of any bugs that you find!!!


Enjoy,
- mike newton
  ······@vlsi.caltech.edu

----------------------------------------------------------------
Building instructions:

1: get akcl from rascal.ics.utexas.edu
2: uncompress and untar it into the place you want it
3: uncompress, untar and load into the same directory the files 
    in New.AKCL.1.tar
4: run 'add-defs aviion'
5: look at the file 'Smakefile'.  Run the commands up to and including
	'make -f Smakefile sources' in target 'all'.  Usually this will be:
		xbin/relink-files KCL-DIRECTORY -s
		make -f Smakefile merge
		make -f Smakefile sources
6: load the files from New.AKCL.2.tar.  This will OVERWRITE some of 
    the sources!!!!
7: run 'make -f Smakefile'
8: there is a chance (depends on NFS, release, disks, phase of the moon...)
   that the very first (and only the first) execution of 'saved_kcl' will
   die.  This occurs when the first saved_kcl has been made and then Smakefile
   goes back and recompiles all of lsp/ and cmplsp/.  It shows up on the 
   compile of file arraylib.lsp.  To fix: just type "make -f Smakefile" 
   again.  The second time it works.....
9: enjoy.
----------------------------------------------------------------

Here are the changes/comments:

................New Files: 

h/aviion.h
h/aviion.defs   	-- defs/h files
h/aviion.README		-- comments to help 88k users
c/mc88k_chtab.s		-- chtab
unixport/.gdbinit	-- useful for debugging with gdb
doc/porting.ii		-- useful comments for the next person
c/unixsave_dg.c		-- major surgery, cleaner IO, lnno mapping
c/rel_m88k.c		-- relocator for the 88k

................Old Files:
 (the following files were created by first untar-ing the above files,
  then doing a 'add-defs aviion' and a make up until the 'make sources',
  and then replacing...)

2. ANSI shift compat:
h/arith.h 		-- careful about shifts

3. Varargs usage expecting an array of values (only called from compiled code):
c/list.d		-- varargs fixes.  probably faster too.
h/object.h		-- macro parameter match causes "ap = ap;" to be gen'd.

4. AViiON / 88k BCS routines:
c/unixfsys.c		-- avoid sbrk()/brk()/malloc() - a very
			-- portable version of getcwd
c/alloc.c               -- hacks to avoid __malloc,  __free, __calloc
                        -- and __realloc by libc.a routines
c/sfasl.c		-- SIGNIFICANT portability improvements.

5. self-gratification:
doc/contributors

6: .o file loading:
c/read.d		-- hack the code to skip to the load vector to run
			   correctly

7. Other:
a: there two identical copies of V/makefile in the 313, 457 and 465  tars
on rascal.  This produces error messages when un-tar-ing.


File list (new):
 h/aviion.h
 h/aviion.defs
 h/aviion.README
 c/mc88k_chtab.s
 unixport/.gdbinit
 doc/porting.ii
 c/unixsave_dg.c
 c/rel_m88k.c

File list (modified):
 h/arith.h
 c/list.d
 h/object.h
 c/unixfsys.c
 c/alloc.c
 c/sfasl.c
 c/read.d
 doc/contributors
-- 
······@csvax.caltech.edu	Beach Bums Anonymous, Pasadena President
Caltech 256-80			(Hilo -- it's not just another rainy day!)
Pasadena CA 91125		Life's a beach.  Then you graduate.
-- 
······@csvax.caltech.edu	Beach Bums Anonymous, Pasadena President
Caltech 256-80			(Hilo -- it's not just another rainy day!)
Pasadena CA 91125		Life's a beach.  Then you graduate.