aboutsummaryrefslogtreecommitdiff
path: root/doc/ports/notes.convex
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /doc/ports/notes.convex
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'doc/ports/notes.convex')
-rw-r--r--doc/ports/notes.convex761
1 files changed, 761 insertions, 0 deletions
diff --git a/doc/ports/notes.convex b/doc/ports/notes.convex
new file mode 100644
index 00000000..d6582383
--- /dev/null
+++ b/doc/ports/notes.convex
@@ -0,0 +1,761 @@
+Begin V2.8 CONVEX/IRAF BETA port, 6-8 August 1989.
+See also notes from October 1987 ALPHA port (appended).
+-------------------------------------------------------
+
+Summary:
+ Installation of V2.8 was straightforward except for a nasty bug
+ involving the host routine BCOPY. I originally tried to use the
+ C code versions of AMOVC etc. (installed in AS). This caused the
+ system environment list to become mangled, due to BCOPY modifying
+ the data it was copying during a copy used to shift by one char
+ to align the buffer in a REALLOC of the environment buffer. The
+ speculation is that the BCOPY uses vector instructions, and if the
+ input and output arrays are aligned to within less than one vector
+ register length data can be corrupted due to the whole vector
+ segment being copied at once.
+
+ Aside from that, things came up fine. There were several compiler
+ crashes with core dumps, but all but one of these were a result of
+ problems with the IRAF code or system configuration. In general
+ the compiler seems to be in much better shape than during the
+ alpha port.
+
+ The final system is configured as follows: the HSI is generic (no
+ floating point, can run on any Convex), and two architectures are
+ supported, IEEE and NATIVE, corresponding to the two floating point
+ architecture options available for the Convex.
+
+ Detailed notes on the modifications made to port V2.8 BSD/IRAF follow.
+
+unix/as.convex/
+unix/as.convex/zsvjmp.s
+unix/bin.convex/
+ Added AS and BIN directories to the HSI for the Convex. Installed
+ the zsvjmp.s written for the alpha port.
+
+unix/boot/bootlib/osputenv.c
+ Commented out the call to putenv() - there is no comparable facility
+ on the Convex.
+
+unix/boot/spp/mkxc.sh
+ Fixed a bug - the call to CC was not referencing $HSI_CF.
+
+unix/boot/spp/rpp/rppfor/declco.f
+ Replaced by a version that enables IMPLICIT NONE, which is how
+ undeclared variable detection is handled by the Convex compiler.
+
+unix/boot/spp/rpp/ratlibf/mkpkg.sh
+unix/boot/spp/rpp/rppfor/mkpkg.sh
+ Replaced the F77 by FC, the Convex fortran compiler. There is no
+ F77 on the Convex.
+
+unix/boot/spp/xc.c
+ 1. Replaced all F77 references by FC.
+ 2. The link library list for the Convex is
+ -lF77 -lI77 -lD77 -lm -lmathC1
+ 3. Modified the list of directories searched by sys() (for XPP and
+ RPP) to include /local/bin, /usr/local/bin, and /iraf/local/bin.
+ Merely another hack until the problem is fixed properly.
+ 4. Modified the list of directories searched by run() (for FC) to
+ include /usr/convex, which is where FC resides on the Convex
+ (another hack until the problem is properly resolved).
+
+unix/boot/spp/xpp/xppcode.c
+ This HSI file turned out to have code in it (for converting HMS to
+ decimal floating) that used floating point. Replaced by an
+ equivalent routine which uses only integer calculations.
+
+unix/hlib/iraf.h
+ The bitwise intrinsics for the Convex are IAND, IOR, IEOR, and NOT.
+
+unix/hlib/i1mach.f
+unix/hlib/r1mach.f
+unix/hlib/d1mach.f
+ Replaced by the Sun versions.
+
+unix/hlib/mkpkg.sf.CX
+noao/lib/mkpkg.sf.CX
+ Added special file lists for the Convex. At present there is only
+ one special file, images$geometry/geofit.x, which has to be compiled
+ at O1 due to a fortran compiler bug.
+
+unix/hlib/irafuser.csh
+unix/hlib/libc/iraf.h
+unix/hlib/libc/libc.h
+unix/hlib/mkiraf.csh
+unix/hlib/mkpkg.inc
+unix/hlib/motd
+ Routine changes for the Convex. Added a #define CONVEX to <iraf.h>.
+ MACH is set to `convex' in the irafuser.csh. The HSI flags are
+
+ setenv HSI_CF "-O -fx"
+ setenv HSI_FF "-sa -fx -O0 -na -nv -nw"
+ setenv HSI_XF "-q -/sa -/fx -/O0 -/na -/nv -/nw -z"
+
+ The MKPKG flags for the IEEE architecture are
+
+ $set FLOAT = "fi"
+ $set XFLAGS = "-c -q -/sa -/fi -/O2 -/na -/nw -/nv"
+ $set XSFLAGS = "-c -q -/sa -/fi -/O1 -/na -/nw -/nv"
+ $set XVFLAGS = "-c -q -/sa -/fi -/O2 -/na -/nw"
+ $set LFLAGS = "-z -/fi"
+
+ and similarly for the NATIVE (Convex floating point) architecture.
+
+unix/os/getproc.c
+ This file, part of the tape drive allocation code, would not compile
+ on the Convex (it reads the kernel process table which is fairly
+ system dependent). Commented out the offending code (a status value
+ is returned indicating that the user does not have any processes)
+ until the tape drive allocation problem can be resolved for the
+ Convex.
+
+unix/os/irafpath.c
+ Modified to look for files in unix/bin.convex if the machine type
+ is convex.
+
+unix/os/zxwhen.c
+ Added FPE hardware signal codes from <signal.h>.
+
+mkpkg
+noao/mkpkg
+bin.ieee/
+bin.native/
+noao/bin.ieee/
+noao/bin.native/
+noao/lib/mkpkg.inc
+unix/hlib/cl.csh
+unix/hlib/mkpkg.inc
+ Configured the system for two architectures, IEEE and NATIVE,
+ corresponding to the two floating point options on the Convex.
+ The HSI is compiled generic (no floating point dependencies),
+ hence is runnable on either type of Convex.
+
+dev/pix.imh
+dev/pix.pix
+dev/vdm.gki
+ Installed versions for the Convex (IEEE architecture only!).
+
+sys/gio/nspp/sysint/encd.f
+ Fixed a bug in this file - this was fixed once before but evidently
+ never got merged back into the master system. The problem is the
+ statement
+
+ if (len (char (ns + ichar ('0'))) .eq. 2) then
+
+ which is evidently unnecessary and which makes an illegal or at
+ least very questionable use of CHAR.
+
+sys/gio/ncarutil/sysint/ishift.x
+sys/gio/nspp/sysint/ishift.x
+ Commented out the code for IAND and IOR, since these are intrinsic
+ functions in Convex/Fortran.
+
+unix/hlib/install
+ Changed the machine type from `vax' to `convex'.
+
+----------
+Basic BETA port completed. (8/8)
+
+----------
+August 8-10: on site at the VLA testing IRAF on the VLA system, which
+includes two Convexes (plus some Suns and VAXes).
+
+dev/devices
+ Configured for the Convex. (8/11)
+
+unix/hlib/login.cl
+ Added EDT and EMACS as foreign tasks to the default USER package.
+ (8/11)
+
+unix/as/zsvjmp.s
+ An IMAGES task failed during testing while trying to create a type
+ DOUBLE image, indicating that the MEM common was not double word
+ aligned. I was able to fix this by setting the symbol __mem_ (the
+ mem common) to the absolute value 0, which not only double word
+ aligns the common, it aligns it to any size, and simplifies
+ debugging by arranging for SPP pointers to directly index process
+ virtual memory. This technique (setting __mem_ to zero) did not
+ work for the Convex back when the alpha port was attempted. (8/12)
+
+ [Postscript] Setting mem to zero evidently was the cause of a
+ number of mysterious program crashes that occurred once the system
+ was relinked with the new zsvjmp.o with mem=0. The problems went
+ away when things were relinked with the mem=0 commented out,
+ indicating that the mem=0 was the problem. There was not time
+ to check this out, but my guess is that since on the Convex program
+ memory begins at 0x80000000, setting mem=0 causes very large pointer
+ offsets which can overflow to negative integer values. I changed
+ zsvjmp.s to set mem=0x80000000 and the problems seem to have gone
+ away, and we still get double word alignment. (8/13)
+
+unix/hlib/ic.csh +
+unix/hlib/install
+unix/hlib/login.cl
+unix/boot/spp/xc.c
+ Had problems getting IMFORT programs to link.
+ 1. The solution was to modify XC (FC) to link against the Convex
+ library -lU77 when linking a host program. This can only be done
+ when XC is called with the -h flag as the library will result in
+ a multiply defined loader error message if searched when linking
+ an SPP program.
+ 2. The iraf foreign task FC now calls a new cshell script ic.csh,
+ which calls XC after first determining the floating point option
+ switch required to link IMFORT programs so that they are consistent
+ with IRAFARCH. For example, if Convex/IRAF is running the IEEE
+ binaries, XC will be called with -/fi.
+ 3. Modified the install script to make a link for ic.csh. The new
+ task name stands for imfort-compile, and is not called FC because
+ that is the Convex Fortran compiler. Possibly FC should not be
+ used as the command name in the USER package either, but I did
+ not want to change that as it is shown as FC in all the user
+ documentation. (8/12)
+
+unix/hlib/cl.csh
+ Modified to define IRAFARCH if not already defined. (8/12)
+
+unix/os/alloc.c
+ Modified to support the Convex tape allocation facilities. Uses
+ the Convex TPALLOC and TPDEALLOC utilities to perform the actual
+ tape allocate/deallocate. As a result, alloc.e no longer needs
+ to have suid-root, although the install script will still install
+ it that way. Verified that local as well as remote network
+ allocation works. (8/12)
+
+pkg/images/imarith/imcmode.gx
+ IMCOMBINE would fail when presented with a section containing pixels
+ that all had the same value. The program would go into an infinite
+ loop in the code at the end of imcmode.gx. Modified to avoid a
+ floating point equality test, and to add some limit checking in
+ a couple of places to avoid infinite looping. (8/13)
+
+unix/hlib/mkfloat.csh
+ 1. While using "mkpkg [ieee|generic]" etc. on teh Convex, the message
+ "usage: rm -[rif]" would sometimes appear. This turned out to be due
+ to calling rm with a null file list when restoring from generic.
+ The fix was to to delete the file list file in the same command
+ which deletes the listed files, ensuring that there is at least
+ one file in the command.
+ 2. Also reorganized the code somewhat to use only one RMBIN rather
+ than two, which speeds it up by a factor of two. (8/14)
+
+unix/os/zmaloc.c
+ IMFORT programs would die on a memory allocator error: this was
+ traced to the fact that the custom memory allocator used for
+ BSD4.3/IRAF was still present in Convex/IRAF (which was built from
+ the BSD version). Commented out the memory debug code in zmaloc.c
+ and all was well. We will leave the applications relinked with the
+ custom memory allocator in for now, since they have already been
+ tested and did not show any problems. (8/14)
+
+----------
+ALPHA port notes follow.
+
+CONVEX/IRAF Port. D.Tody, beginning 26 October 1987.
+Using machine in Greenbelt, MD, as follows:
+-----------------------------------------------------------------------------
+ *********************************************************
+ WELCOME TO C1EAST
+ *********************************************************
+ SYSTEM MANAGERS: BRIAN CHRISTIANSON & DALE LANCASTER
+
+C1EAST IS A CONVEX C1-XP MINI-SUPERCOMPUTER.
+
+ - 128 MEGABYTES OF PHYSICAL MEMORY
+ - 1.5 GIGABYTES OF DISK SPACE
+ - 40 MFLOPS PEAK PERFORMANCE
+
+C1EAST IS CONFIGURED WITH:
+
+ - 25.6 MEGABYTES OF DISK BUFFER CACHE
+ - 64 USER SYSTEM
+ - ETHERNET
+ - IMAGEN LASER PRINTER
+
+ - 4.2 BSD UNIX, CONVEX RELEASE 6.1.1
+ - VECTORIZING FORTRAN VERSION 3.0
+ - VECTORIZING C VERSION Beta 2.0 (vc 1.0 is still around)
+ - ANSYS VERSION 4.2
+-----------------------------------------------------------------------------
+
+Snapshot of V2.6 IRAF restored to disk (/extra/iraf) by Convex. (10/26)
+Logged in via modem, took a look at Convex/UNIX, configured the IRAF login.
+
+unix/as -> unix/as.vax
+unix/as/zsvjmp.s
+ Renamed the VAX assembler directory, and set up a new one for the
+ Convex. Wrote ZSVJMP/ZDOJMP for the Convex. This took a while,
+ and was one of the harder ones I have done, as the architecture and
+ the C setjmp/longmp are complex. The machine has a RISC architecture
+ but nonetheless is fairly complex (and fast and expensive). (11/2)
+
+unix/os/zxwhen.c
+ Modified the hardware specific exception codes table for the Convex.
+ In the process of doing this, discovered that the old code assumed
+ that hardware codes were distinct, while in fact they can be
+ numbered similarly for different signals. Modified the ZXGMES
+ routine to work with hardware codes of the form SIGNAL+HWCODE rather
+ than the old HWCODE. (11/2)
+
+unix/boot/spp/rpp/ratlibf/mkpkg.sh
+unix/boot/spp/rpp/rppfor/mkpkg.sh
+ Replaced "f77" by "fc". (11/2)
+
+unix/hlib/irafuser.csh
+ Added an "-sa" flag for fc (the Convex Fortran compiler). This flag
+ prevents static compilation of argument lists and is necessary if C
+ code is to be called from Fortran. (11/2)
+
+unix/hlib/libc/spp.h
+unix/hlib/libc/libc.h
+unix/hlib/libc/iraf.h
+ Replaced the vax spp.h by the Sun version, which should be good
+ enough for now, and may even be correct (Convex evidently supports
+ IEEE floating as well as their native (Cray?) format). Modified
+ the Fortran COMMON external names in libc.h to add the extra
+ leading underscore, used by the Convex Fortran compiler to make
+ common external names distinct from other Forran externals.
+ Edited the iraf.h file for the new $iraf (= /extra/iraf). (11/2)
+
+unix/hlib/motd
+ Modified logo for the Convex. (11/2)
+
+-------------------------------------
+Started up a bootstrap of the HSI. This completed without incident, except
+for a great many copies of the following warning messages from FC:
+
+ Obsolete flag '-O' - flag '-no' assumed.
+ fc: Warning on line X of Y.f: label defined but never referenced.
+
+Modified HSI_FF (fc flags) in hlib$irafuser.csh to "-O1 -sa -nw" and repeated
+the bootstrap starting in the SPP directory. This worked, but now the
+optimizer was enabled, and it helpfully produced a zillion of the following
+advisory messages:
+
+ fc: Advisory on line X of Y.f: more optimization is possible if this
+ function call has no side effects.
+
+Changed the flags to "-O1 -sa -nw -na" to fix this. Tested the main HSI
+tasks (rmbin, rtar, wtar, mkpkg, xpp, rpp) and they all passed basic tests!.
+(11/2)
+
+unix/hlib/i1mach.f
+unix/hlib/d1mach.f
+unix/hlib/r1mach.f
+ Installed the versions for the Sun (IEEE floating etc.) for now.
+ This will probably need to be tweaked later. (11/3)
+
+unix/hlib/iraf.h
+ Modified the name mappings for the bitwise intrinsic functions (and,
+ or, etc.). For the Convex they are the same as in VMS Fortran.
+ Set values of INDEFR and INDEFD, as below. (11/3)
+
+unix/boot/spp/xpp/xppcode.c
+ Changed the Fortran mappings of the SPP "char" and "short" type
+ coercion functions to "int2", which is implemented on the Convex.
+ (11/3)
+
+unix/boot/spp/xpp/decl.c
+ Convex Fortran supports IMPLICIT NONE, so I modified the code which
+ processes a procedure declaration to output this statement. (11/3)
+
+unix/hlib/mach.h
+ Modified the values of various numeric constants. The max exponent
+ for real is 38, for double is 307. The INDEF values were modified
+ slightly. The EPSILON values were very similar to those for the Sun.
+ Byte swapping is no - most significant byte first. (11/3)
+
+unix/hlib/mkpkg.inc
+ Set the default compiler flags as follows:
+
+ XFLAGS = "-cq -/O2 -/nw -/na -/nv"
+ XSFLAGS = "-cq -/O1 -/nw -/na -/sa"
+ XVFLAGS = "-cq -/O2"
+
+ I have added a new global flag variable XSFLAGS, to be used for the
+ VOS routines, i.e., for pure system code. XFLAGS is for normal
+ scientific applications code, which is pure SPP or SPP/Fortran code,
+ and which would often benefit from vectorization. System code may
+ call C routines (e.g., the kernel routines), and rarely involves
+ vector operations. Distinguishing between the two broad classes
+ of codes is necessary on the Convex in order to permit static
+ allocation of procedure argument lists in Fortran (SPP) code.
+ If Fortran code is to call C routines, all arguments must be pushed
+ on the stack, hence this optimization option cannot be used in VOS
+ code (flag -sa disables static allocation of argument lists).
+
+ Optimization level O2 includes vectorization, O1 provides only local
+ and global scalar optimization but no vectorization. The -n flags
+ turn off various compiler informative and warning messages, which one
+ normally will not want to see (except perhaps once during development).
+ These messages are enabled by default only for the VOPS routines.
+ (11/3)
+
+iraf$mkpkg
+sys/*/mkpkg
+ Added the line '$set XFLAGS = "$(XSFLAGS)"' to each VOS mkpkg file,
+ to override the default xflags with the xsflags. In the root mkpkg,
+ added the $set to the "syslibs" program. (11/3)
+
+unix/boot/spp/xc.c
+unix/boot/spp/mkxc.csh -> mkxc.sh
+ Modified XC to use "fc" rather than "f77" as the compiler; omitted
+ the -u flag, since this is done differently for Convex Fortran.
+ To the "run" code, added /usr/convex to the search path, since that
+ is where fc is located (a better solution would probably be to put
+ the path in the #define). (11/3)
+
+local/bin/ +
+local/bin/xc -> $hlib/xc.e (etc.)
+ Only for the purposes of the port, set up a local/bin directory for
+ iraf, and put it on PATH in the .login. This will work only for iraf,
+ but avoids having to make a request to the local system manager.
+ (11/3)
+
+------------------------------------
+Started up the first full sysgen. (11/3)
+
+Summary of results of first full sysgen:
+ The sysgen ran to completion, but not without problems. The spool file
+ was 19305 lines, 7205 lines when summarized (the extra stuff was
+ mostly advisory information about vectorizing the VOPS routines).
+ There were 23 serious runtime compiler errors of the form:
+
+ fc: >>>>> C O M P I L E R E R R O R <<<<<
+ >>>>> See your system manager for help <<<<<
+ Error : Compiler error on line X of Y.c.
+
+ These were distributed as follows:
+
+ #times Error Message
+
+ 16 Error : Compiler error on line 396 of misc.c.
+ 6 Error : Compiler error on line 155 of allocSReg.c.
+ 1 Error : Compiler error on line 584 of callintr.c.
+
+ Note that these are errors in the Fortran compiler, not errors in
+ the Fortran source. The compiler routine which generated the error
+ is given in the message. These errors prevented compilation of the
+ affected source file.
+
+ Other errors in the sysgen were [1] fc cannot compile .c files,
+ hence xc will have to be modified to call cc directly, and [2] in
+ sys/gio/ncarutil/sysint/ishift.x, functions IAND and IOR are defined
+ which appear to call themselves recursively, when the macros AND and
+ OR are expanded. These are dealt with further below. (11/4)
+
+local/bugs/
+local/bugs/spool.full
+local/bugs/spool.bugs
+ Created a BUGS directory for the Convex and stored therein copies of
+ all the Fortran sources which cause compiler time compiler failures,
+ plus copies of the full spooled output from the first sysgen, and an
+ edited digest of the same containing only the compiler error messages.
+ Verified that the files cannot be compiled even at optimization level 0.
+ All files compiled with optimization turned off EXCEPT one, the
+ sysint/support.f file from gio/ncarutil. (11/4)
+
+sys/gio/ncarutil/sysint/support.f
+ The subroutine ENCD in this file contained a statement which would
+ cause the compiler to crash even with all optimization turned off.
+ The culprit is as follows:
+
+ if (len (char (ns + ichar ('0'))) .eq. 2) then
+
+ This is a pretty strange statement, and after staring at it for
+ a while I decided that it would always be false (NS can take on
+ values only between 4 and 6) and commented it out. Of course it
+ should not cause the complier to bomb, and I will report it to
+ Convex, but I think the code is incorrect and should be fixed. (11/4)
+
+sys/gio/ncarutil/ishift.x
+ This file contains source for the functions IAND and IOR, written in
+ SPP and defined in terms of the SPP intrinsics AND and OR, which are
+ implemented as macro defines in hlib$iraf.h. On the Convex these are
+ defined as the Fortran intrinsics IAND and IOR, but they are declared
+ as external functions, hence the Fortran compiler quite correctly
+ flags them as recursive references and fails to compiler the file.
+ A simple fix is to replace the calls to AND and OR by calls to the
+ OSB library functions ANDI and ORI; this is inefficient, but on the
+ Convex the calls in the NCAR code map directly to the Fortran
+ intrinsics anyhow, and if this were not the case the routines should
+ be encoded in assembler and put on the special file list. (11/4)
+
+unix/hlib/mkpkg.sf
+ Added the 22 or so files with runtime compiler failures to the special
+ file list for CONVEX/IRAF. Specifically:
+
+ $set noao = "iraf$noao/"
+ $set XCP = '& "$xc -cq -/no -/nw -/na &"'
+ $set XCS = '& "$xc -cq -/no -/sa -/nw -/na &"'
+
+ $special "sys$fio/": fseti.x $(XCS);
+ $special "math$iminterp/": msifit.x $(XCP);
+ $special "pkg$dataio/fits/": fits_rheader.x $(XCP)
+ fits_wheader.x $(XCP);
+ $special "pkg$images/imarith/generic/": imcmode.x $(XCP);
+ $special "pkg$images/filters/": t_convolve.x $(XCP);
+ $special "pkg$plot/": prows.x $(XCP);
+ $special "pkg$utilities/": t_curfit.x $(XCP);
+ $special "$(noao)proto/": t_bscale.x $(XCP)
+ t_imscale.x $(XCP);
+ $special "$(noao)onedspec/": t_addsets.x $(XCP)
+ t_bswitch.x $(XCP)
+ t_dispcor.x $(XCP)
+ t_flatfit.x $(XCP)
+ t_sums.x $(XCP)
+ t_widstape.x $(XCP);
+ $special "$(noao)twodspec/apextract/": excextract.x $(XCP)
+ excstrip.x $(XCP)
+ t_apnormalize.x $(XCP);
+ $special "$(noao)twodspec/longslit/": ilsetbins.x $(XCP);
+ $special "$(noao)imred/ccdred/src/generic/": imcmode.x $(XCP);
+ $special "$(noao)imred/dtoi/": hdtoi.x $(XCP);
+ (11/4)
+
+unix/boot/spp/xc.c
+ Modified to sort out .c source files and compile these separately
+ with CC (the original XC used f77, which would accept anything). (11/4)
+
+unix/as/zsvjmp.s
+ This file contains the code which attempts to set the address assigned
+ by the linker to the symbol __mem_ (the MEM common in Fortran) to 0.
+ This is not yet working on the Convex; get multiply defined symbol
+ errors. I have commented this out for the moment in order to proceed.
+ (11/4)
+
+------------------------------------
+Second attempt at a sysgen. Special files all compiled ok, but got loader
+errors as noted above, hence no executables. After fixing zsvjmp.s I was
+able to successfully link an executable. Tried running it, and wonder of
+wonders, it actually ran and produced a prompt! The process did not quite
+run correctly, but most of the iraf main stuff was evidently working if we
+got that far, so this is encouraging. (11/4)
+
+unix/hlib/mkpkg.inc
+unix/hlib/mkpkg.sf
+ I just remembered that there are a number of VOPS routines coded in
+ C in the OSB directory, which can be called by any applications code.
+ Fortran code compiled with static argument lists enabled cannot be
+ call C routines directly, so until the OSB routines can be recoded
+ in Fortran for Convex, I have added the -sa switch for applications
+ code as well as VOS code. (11/4)
+
+----------------------------
+Third attempt at a sysgen. Deleted all non-HSI binaries and started up a full
+sysgen. Should work this time with all the above bug fixes. (11/4)
+
+The sysgen completed normally, and this time suceeded in producing most of
+the executables. The cl runs and most basic things work ok! There are a
+number of runtime problems however, which need to be checked out. Looking
+over the spooled output I find four more files that caused the compiler to
+crash, this time with a core dump, without even a compiler error message.
+The message from FC (indicating abnormal termination of a subprocess) is
+
+ fc: System error in /usr/convex/fskel
+
+The files causing the problem were t_imarith.x in images, and in math,
+gsaccum.x, gsrejectd.x, and isresolve.x. Dale, my contact at Convex,
+says that there is a major new version of the Convex Fortran compiler,
+currently in beta test, and that I should try that. I will proceed a bit
+further with the current binaries before starting up another full sysgen,
+as these have been running 8-9 hours. (11/5)
+
+unix/hlib/mkpkg.sf
+ Added the above four files to the special file list, to be compiled
+ with optimization level -O1 rather than -O2 (no vectorization). (11/5)
+
+unix/hlib/mkpkg.sf
+ After adding the above files to the special file list and resuming
+ the compile of the gsurfit and surfit packages, more files requiring
+ special treatment were uncovered. The total is now 34. (11/5)
+
+-----------------------------
+With the math libraries now built, I was able to finish building the IMAGES
+package and tried out a few things - IMSTATR was about 3.5 cpusec, IMSHIFTR
+around 6+ cpusec. Interactive plotting is not yet working due to some
+problem in the CL. Error recovery in the CL is not yet working due to a
+problem in ZDOJMP, which has not yet been debugged. Until this is fixed,
+any error will cause the CL to die. (11/5)
+
+unix/boot/spp/xc.c
+ Modified to use version 4.0 of the Convex Fortran compiler. (11/5)
+
+------------------------------------
+Sysgen 4. Archived (local/oldfc.arc) and deleted all the old non-HSI binaries.
+Ready to start a full sysgen with the new compiler. Will do this in such a
+way that the current executables remain intact for people to play with
+tomorrow. (11/5)
+
+local/bugs.newfc +
+local/bugs -> local/bugs.oldfc
+ Set up separate bug directories for the old and new FC. (11/5)
+
+unix/hlib/sf +
+unix/hlib/sf/main.x +
+unix/hlib/mkpkg.sf
+ The new sysgen has thus far compiled all the system libraries without
+ any compile time errors, hence looks much better (sysgen still in
+ progress; stay tuned). Even with the new compiler, however, I am still
+ getting an incorrect warning message "illegal transfer out of IFERR
+ block" from the iraf main. This was traced to the following code in
+ the main:
+
+ iferr (...)
+ ;
+ or
+ call xerpsh
+ ...
+ if (.not.xerpop()) then goto NN
+ NN continue
+
+ Even with the optimizer turned completely off, FC is chucking out the
+ call to XERPOP, causing the error message noted above. Since this is
+ not an optimizer problem, the only way to fix it was to hack on the
+ source file. The hacked version is in hlib$sf, and the file has been
+ added to the special file list for the new-fc. This is a particularly
+ worrisome bug, as there may be cases such as this scattered all over
+ the system. (11/5)
+
+-----------------------------
+Sysgen with new FC looks pretty good. There was one fskel coredump (vectorizer
+evidently) which I will check out below. (11/6)
+
+noao/onedspec/sensfunc/mkpkg
+noao/onedspec/sensfunc/sfgraphs.x -
+ Deleted this zero length junk file and fixed up the mkpkg. (11/6)
+
+unix/hlib/mkpkg.sf
+ Added an entry for file dataio$reblock/reblock_file.x, which causes
+ fskel to coredump when compiled with level O2 optimization. Entered
+ in special file list for level O1 optimization. (11/6)
+
+unix/as/zsvjmp.s
+ Finished debugging ZSVJMP/ZDOJMP (this was the cause of the CL crashing
+ upon logout and during error recovery). The Convex version of this
+ routine was easily the most complex I have thus far encountered.
+ The Convex architecture and instruction set is simple, no problem;
+ the problem here as the complexity of the longjmp() code used to
+ make ZDOJMP. Instead of saving and restoring the machine context,
+ the routine actually pops successive stack frames off the machine
+ stack until it gets back to the stack frame of the ZSVJMP. There
+ are special cases, e.g., the stack frame pushed by the OS for an
+ interrupt handler. Twas a mess! (11/12)
+
+-------------------------------------------------
+Resumed work on Convex port on 5 March - don't know how much time I have to
+spend on this, but a little anyhow, and maybe the compiler is better.
+
+ Cleaned up the some somewhat; moved some files to a save directory,
+ deleted a lot of junk test files scattered about the system.
+ Redid the bootstrap without incident.
+ Deleted all binaries and started a full sysgen. As of now (5 March
+ 5 pm) this is still in progress. The CL and x_system.e are up
+ and look fine.
+
+Here is the /etc/motd for the current Convex system:
+-------------------
+ *********************************************************
+ WELCOME TO C1EAST
+ *********************************************************
+ SYSTEM WINGNUTS: BRIAN CHRISTIANSON & DALE LANCASTER
+
+C1EAST IS A CONVEX C1-XP MINI-SUPERCOMPUTER.
+ - 128 MEGABYTES OF PHYSICAL MEMORY
+ - 1.5 GIGABYTES OF DISK SPACE
+ - 40 MFLOPS PEAK PERFORMANCE
+
+C1EAST IS CONFIGURED WITH:
+ - 12.8 MEGABYTES OF DISK BUFFER CACHE
+ - 64 USER SYSTEM
+ - ETHERNET
+ - IMAGEN LASER PRINTER
+ - 4.2 BSD UNIX, CONVEX RELEASE 6.1
+ - VECTORIZING FORTRAN VERSION 4.0 with In-Lining
+ - VECTORIZING C VERSION Beta 2.0 (vc 1.0 is still around)
+ - ANSYS VERSION 4.2
+
+ CONVEX COVUEshell V7.0 installed. Look in /usr/doc for
+ new release notices.
+
+
+----------------------------------------------
+Resume testing yet again, this time with a new version of the Fortran
+compiler.
+
+unix/boot/spp/xc.c
+unix/hlib/mkpkg.inc
+ 1. Added a new flag "-N" to XC. Setting this flag causes XC to try to
+ use the beta test Fortran compiler, which is called as
+
+ /usr/convex/newfc/fc -B/usr/convex/newfc ...
+
+ 2. Added the -N flag to the flag macros in mkpkg.inc. (4/16)
+
+unix/as/zsvjmp.s
+unix/os/zdojmp.c +
+unix/os/mkpkg
+ Replaced the nativ ZSVJMP/ZDOJMP I originally wrote for the Convex
+ with a much simpler version which "piggybacks" on the C setjmp/longjmp.
+ The old file is zsvjmp.CONVEX. (4/16)
+
+----------------------
+Deleted the main system binaries and started a new sysgen. Will use the old
+HSI for now. (4/16)
+
+ The sysgen ran to completion with minor problems. One was the
+ appearance of the following warning message for every file, regardless
+ of the fact that none of our code uses any Convex Fortran preprocessor
+ facilities:
+
+ fpp: WARNING: Use of fpp is being phased out; please update
+ your program by removing uses of #define, #if, #ifdef
+
+ The second problem, more serious, what that a number of modules failed
+ to compile due to the IMPLICIT NONE statement being out of order; in
+ pointer functions, the Mem declarations were being output before the
+ IMPLICIT NONE (see below). (4/17)
+
+unix/boot/spp/xpp/decl.c
+unix/boot/spp/rpp/rpprat/defs
+unix/boot/spp/rpp/rpprat/declco.r
+unix/boot/spp/rpp/rppfor/declco.f
+ 1. In decl.c, deleted the code previously added to generate the
+ implicit none statement. This is not the right place for it, as it
+ doesn't work for pointer functions.
+ 2. In declco.r, added code to output theIMPLICIT NONE immediately
+ after a function or subroutine statement.
+ 3. In defs, added a switch IMPNONE, which if defined, causes the
+ IMPLICIT NONE statements to be output.
+ 4. Processed the fortran for declco.r and put it in rppfor/declco.f.
+ The defs and declco.r files were not updated on the Convex; I made
+ the changes on lyra since this is a generally useful mod, and only
+ copied the processed Fortran to the Convex. (4/17)
+
+ ... incremental sysgen now in progress...
+
+[Ran all benchmarks except [24]USER, networking, and IMLOADs. No errors.]
+[4/18 SRo]
+[Ran all test procedures except magtape i/o; no errors. 4/27 SRo]
+
+hlib/mkpkg.sf
+ Added the following files to the special file list, to be compiled
+ with the old fc compiler, to avoid a fatal bug in the new 4.1 fc.
+
+ sys/imfort/clargs.x
+ sys/imfort/imemsg.x
+ sys/imfort/imokwl.x
+ sys/imfort/impixf.x
+ sys/imfort/imtypk.x
+ sys/gio/ncarutil/conlib/congen.f
+ sys/gio/ncarutil/conran.f
+ sys/gio/ncarutil/conrec.f
+ sys/gio/ncarutil/isosrf.f
+ sys/gio/ncarutil/threed.f
+ sys/gio/ncarutil/velvct.f
+ noao/onedspec/t_standard.x
+
+ (5/13 SRo)
+
+[Relink sysgen to replace the missing executables in bin$ prior to having ]
+[a tape cut for mailing to NOAO. (5/13 SRo) ]