aboutsummaryrefslogtreecommitdiff
path: root/doc/notes.v29
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /doc/notes.v29
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'doc/notes.v29')
-rw-r--r--doc/notes.v292502
1 files changed, 2502 insertions, 0 deletions
diff --git a/doc/notes.v29 b/doc/notes.v29
new file mode 100644
index 00000000..4176b95f
--- /dev/null
+++ b/doc/notes.v29
@@ -0,0 +1,2502 @@
+System Notes File for IRAF Version 2.9.
+Begun 9 July 1989.
+-------------------------------------------
+
+doc/notes.v28 +
+local/notes.v29 +
+unix/hlib/motd
+unix/hlib/zzsetenv.def
+vms/hlib/motd
+vms/hlib/zzsetenv.def
+ Switched IRAFX development systems to version 2.9. (7/9)
+
+unix/os/zfiobf.c
+unix/os/zfiotx.c
+ Changed a couple of <sys/fcntl.h> to <fcntl.h>. (7/9)
+
+unix/as.vax/*
+ Replaced directory by version from BSD/IRAF (carina). (7/9)
+
+dev/hosts
+ Changed the bin in the pegasus entry to bin.i386. (7/9)
+
+dev/graphcap
+ In the process of updating carina I discovered another set of
+ dpp/psdump entries in graphcap; modified as was done for the termcap
+ entries a while back. (7/10)
+
+doc/bugs.v25 +
+local/bugs.log
+ Archived the old V2.5-V2.7 buglog in doc and started a new buglog
+ for V2.8. (7/14)
+
+doc/suniraf.ms
+doc/sunsmg.ms +
+ Installed all new Sun/IRAF installation and site manager's guides.
+ (7/21)
+
+doc/vmsiraf.ms -> vmsiraf.ms.v25
+doc/vmsiraf.ms
+ Installed new v2.8 VMS/IRAF combined installation & site manager's
+ guide. (7/25 SRo)
+
+doc/unixiraf.ms
+ Fixed a couple of typos: {IS,NS}.SOS4.GEN -> {IS,NS}.PORT.GEN. (7/26)
+
+doc/ports/notes.mips
+ Saved a copy of the notes file for the DECstation (MIPS cpu) port.
+ (7/26)
+
+dev/devices [tucana only]
+ Replaced missing cartridge drive entries (old devices had July 24
+ date). (8/7 SRo)
+
+unix/boot/spp/xpp/xppcode.c
+ Rewrote the HMS routine in this file, to use integer rather than
+ floating point to perform the HMS to decimal floating translation.
+ This appears to have been the only floating point code in the HSI,
+ and we don't want any floating in the HSI if it can be avoided. (8/8)
+
+unix/hlib/buglog.csh
+ Changed the default system to V2.8. (8/9)
+
+unix/hlib/extern.pkg [orion]
+ Uncommented stsdas stuff. (8/9 SRo)
+
+unix/hlib/extern.pkg [orion]
+ Added rv package, currently pointing to /tucana/u2/fitz/...;
+ this is a temporary measure. (8/11 SRo)
+
+unix/hlib/install
+ Added $host/reboot to the list of files for which execute permission
+ is required. (8/15)
+
+doc/unixsmg.ms +
+doc/bsdiraf.ms +
+doc/v28revs.ms +
+ Added the source for the UNIX/IRAF Site Manager's Guide to doc. (8/16)
+ Installed the BSD IRAF Installation Guide in doc. (8/17)
+ Installed the V2.8 revisions summary. (8/17)
+
+dev/hosts [orion]
+ Changed the entry for pegasus to point to `.../bin.i386/...',
+ not just `.../bin/...'. Must have happened when system was
+ made generic. (8/31 RS)
+
+/local/iraf/unix/bin.mc68020/alloc.e
+ Changed ownership to root, though at present this is not necessary
+ as there are no magtape drives on the Sun-3 complex hosted by orion
+ disks. Argo was reporting the error message must change ownership
+ to root for alloc.e when a user logged onto argo tried to alloc mta
+ (user should have been using orion!mta). Curiously, pictor, also
+ using same hbin, simply reports 'cannot allocate device', the usual
+ message when the drive does not exist. (9/1 SRo)
+
+unix/hlib/mkfloat.csh
+ Replaced by the version developed for Convex/IRAF, which has the
+ following features:
+ 1. RM can no longer be called to deleted a null list of files.
+ 2. A call to RMBIN was omitted, making the script run about twice
+ as fast. (9/4)
+
+-------------
+Updated the f68881, ffpa, and sparc binaries on tucana (sparc update still
+in progress). There was something wrong with some of the binaries, e.g.,
+some of the objects were missing from the bin.ffpa OBJS.arc - maybe someone
+accidentally deleted these when attempting to change architectures. (9/4)
+Completed tucana (irafx) bin.sparc update. (9/5)
+
+sys/imio/iki/qpf/qpfaccess.x
+ Would supply a missing .qp extension automatically when called with
+ mode NEW_IMAGE or NEW_COPY. This was inconsistent with the
+ specification of an image access routine as defined by IKI, and would
+ cause IMACCESS to fail when called to test the legality of an object
+ name not containing an extension.
+ 1. Modified to return NO if called with an object name with no
+ extension and one of the NEW_ access modes.
+ 2. If called with an access mode other than NEW_xxx and no extension
+ is supplied, and an image with extension .qp exists, will now output
+ the .qp extension in the EXTN argument. This was another minor
+ deviation from the IKI specification. (9/5)
+
+dev/graphcap
+ Corrected the "vapl" (generic laserwriter printer queue for VMS)
+ entry: there was an "irafhlib:sgiqueue.com", which needed to have
+ the ":" as "\072". (9/8 SRo)
+
+vms/hlib/libcalcomp.a [iraf, irafx]
+vms/bin/x_calcomp.e [iraf, irafx]
+ Added calcomp libraries to hlib on draco and relinked the calcomp
+ graphics kernel to accommodate some user requests (USE_CALCOMP is
+ still set to NO in mkpkg.inc, as it should be for distribution).
+ Had to link by hand with "-z" to avoid fatal linker conflicts with
+ the C runtime library, which is used in the hacked kpno version of the
+ calcomp library; a user site with a standard calcomp library probably
+ would not have this problem. (9/13 SRo)
+
+doc/bsdiraf.ms
+ Fixed error in example showing how to make a symbolic link to
+ $iraf/bin.vax. (9/13)
+
+sys/fmio/fmfcache.x
+ Modified to close and reopen an lfile if already open, and accessed
+ with a mode requiring write permssion and lfile is currently opened
+ read only. (9/14)
+
+sys/qpoe/qpgpar.x
+sys/qpoe/qpppar.x
+ These routines use a static data array PVAL as intermediate storage
+ for the parameter value, returning a pointer to this buffer to the
+ calling program. Misalignment would occur when reading or writing
+ values of type DOUBLE if the PVAL buffer was not double aligned.
+ Double alignment of a statically allocated buffer cannot be guaranteed
+ portably. The solution was to make the buffer 1 double larger,
+ compute a char pointer to pval[2], then double align this pointer.
+ (9/16)
+
+sys/qpoe/qpsizeof.x
+ Fixed a typo in the procedure header comment. (9/16)
+
+sys/qpoe/qpppar.x
+sys/qpoe/qpiowb.x
+ Added a QP_MODIFIED(qp)=YES in a couple of places to ensure that
+ the QPOE file header is marked for updating. (9/16)
+
+unix/shlib/edsym.c
+ Commented out the code which deletes "file.o" type symbols.
+ It appears that deleting these may cause trouble for DBX. (9/17)
+
+-----------------
+Did the first full bootstrap under SunOS 4.0.3, with no apparent problems.
+Did a sysgen/relink of the f68881 binaries on tucana. (9/20)
+
+local/.login
+ Cleaned up a bit, e.g., added a commented out version of "irafarch"
+ for the Sun-4 and 386i (omits the FLOAT_OPTION), and commented out the
+ call to irafarch for the Sun-3 (to avoid the possibility of it being
+ set wrong). (9/21)
+
+sys/fio/getlline.x -> glongline.x
+sys/fio/getlline.x +
+ 1. Changed the name of the source file for GETLONGLINE from getlline.x
+ to glongline.x. Modified the routine to reconstruct long lines broken
+ by the SZ_LINE limit of getline. If the text returned by getline is
+ not newline terminated another line will be fetched, and so on until
+ the original newline delimited line has been reconstructed. The
+ linenumber argument is not incremented until a newline delimited
+ logical line has been reconstructed.
+
+ 2. Added a new routine GETLLINE, for get-logical-line. This is like
+ getlongline except that it does not do anything fancy, like skip
+ comment lines or join lines with backslash continuation. All it does
+ is eliminate the SZ_LINE restriction when reading lines of text from
+ a file. Lines longer than SZ_LINE are reconstructed, returning the
+ full newline delimited line to the caller. (9/26)
+
+sys/etc/main.x
+ Modified the iraf main to use getlline rather than getline to read
+ input lines, to allow reconstruction of very long lines of text.
+ Note that this is independent from the use of backslash continuation
+ to enter very long task invocation commands containing many arguments.
+ The main advantage of getlline is that it allows task *arguments*
+ that are longer than SZ_LINE. (9/26)
+
+hlib$extern.pkg [pegasus]
+ Changed the local package pathname to `/orion/local/kpnolocal/'
+ from `/orion/u2/kpnolocal/', where it used to be. (9/26 RLS)
+
+--------------------
+Updated tucana.f68881, irafx@draco. (10/2)
+
+/orion/local/stsdas/stsdas.cl
+usr$2:[stsdas]stsdas.cl
+usr$2:[stsdas.pkg.problems]newspr.temp
+ Added comment about sending SPR's and contacting SDAS group for
+ help to package header. Copied orion version of newspr.temp to
+ draco, as it was lacking there (shouldn't have been! - mystery).
+ (10/4 SRo)
+
+unix/shlib/mkshlib.csh
+ 1. Replaced a couple references to "unix/hlib" by "unix/bin.`mach`",
+ to allowing linking the shared library regardless of which BIN
+ directory the link unix/bin points to.
+ 2. Modified the command "cc medit.c -o medit.e" to include the
+ -fsoft switch when compiled on mach=mc68020. Otherwise, if the
+ architecture were set to ffpa but there was no fpa on the host,
+ the executable would fail to run. (10/4)
+
+unix/sun/fifo.c
+ The FIFO program is a debug-server which emulates the DISPLAY/IMTOOL
+ datastream, writing to a frame buffer implemented as an array in
+ memory. As the program executes all commands are logged to the
+ stderr to provide a record of the server-client communications.
+ Since the program does not use the window system, it can be run
+ remotely on any node to test the fifo/datastream interface.
+
+ 1. Updated to the datastream protocol and fifo pipe semantics used
+ by the V2.9 DISPLAY/ZFIOGD.
+ 2. Fleshed out the program a bit, to make it more useful as a
+ datastream debugger, in particular added an interactive cursor
+ capability. The original version of the program was written mostly
+ to debug fifo i/o. (10/7)
+
+-------------------
+Updated tucana.{f68881,ffpa,sparc}.
+Configured the first scientist workstation (bokchoy) to run irafx.
+Added entries for all the scientist workstations to the iraf dev$hosts
+file on all major iraf server nodes. (10/7)
+
+sys/etc/envgetd.x
+ Fixed a typo: the variable dval, which should be of type double,
+ was inadvertently declared as int. (10/7)
+
+dev/termcap
+dev/graphcap
+ Added a site local additions section to the top of each file.
+ In the graphcap, moved the host dependent plotter device name section
+ to near the top of the file, since it has to be modified more often
+ than what follows. (10/7)
+
+pkg/cl/bkg.c
+sys/libc/csppstr.c
+ Found and fixed another place where long environment strings would
+ be truncated. This was occuring when spawning a background job
+ in the CL, due to a SZ_LINE buffer limitation in the CL bkg.c code,
+ and an 128 char limitation in the LIBC routine c_sppstr.c.
+ Increased both buffer sizes to 1024 chars. (10/7)
+
+unix/hlib/strip.iraf
+ Fixed a typo iraf$bin.68881/OBJS.arc -> iraf$bin.f68881/OBJS.arc.
+ Added entries for sparc and i386. (10/12)
+
+unix/boot/spp/xc.hlp
+unix/boot/mkpkg/mkpkg.hlp
+ Added documentation for the "-p pkgname" flag. (10/16)
+
+unix/hlib/buglog.csh
+ Modified to add a blank line between the BUG: and STATUS: fields
+ of the buglog entry to improve readibility, since these sections
+ are often large, multiline paragraphs. (10/19)
+
+unix/os/zgcmdl.c
+ This routine uses a highly system dependent (BSD43) technique,
+ depending upon the layout of argc/argv/environ in process memory,
+ to reconstruct the argument list of the process. This can fail
+ on systems that don't lay out variables in the assumed order.
+ Accordingly, code was added (for systems that define BSDUNIX in
+ <iraf.h>) to import the global variables xargc/xargv, defined by
+ the BSD routine getarg(3), and use these to reconstruct the argument
+ list. The variables must be present in an object or library
+ (normally libU77.a) for processes to link successfully.
+
+ The variables are initialized to argc/argv by a Fortran main.
+ If xargv is zero when ZGCMDL is called, the old scheme will be used
+ to try to locate the process argv (hence C programs that don't
+ initialize xargc/xargv should still run). This scheme is still
+ not ideal as it is implementation dependent, but is better than
+ what was being done previously. (10/20)
+
+ NOTE - zmain.c should possibly also be updated to initialize or
+ define and initialize xargc/xargv, however due to complications
+ having to do with the shared library (global variables are tricky)
+ I am going to hold off on this. ZGCMDL should continue to work
+ from SPP programs (which don't initialize xargv) as it has in the
+ past.
+
+dev/hostlogin
+ Expanded on the comments somewhat. (10/20)
+
+dev/hosts [orion, tucana, draco]
+ Changed .f68881 to .sparc in irafks.e pathname for pictor, now
+ a sparcstation. (10/24 SRo)
+
+vms/gdev/sgidev/sgi2vhpp.for [irafx only]
+ Added a declaration integer for function str_len in module
+ parse_command (bug discovered by j.eisenhamer at ucla). (10/27 SRo)
+
+dev/pix.imh
+dev/pix.pix [vms/iraf]
+ Somehow the standard test image in VMS/IRAF got its file type
+ changed to Stream_LF, instead of fixed 512 byte records. Restored
+ to its normal state by doing an imcopy/imdel/imren. (11/1)
+
+sys/osb/bitfields.c
+ Corrected a misstatement in a comment in BITUPK. (11/4)
+
+dev/termcap
+ Changed the names "gterm-nqs", "g-lpr", and "g-enscript" to omit
+ the minus. (11/10)
+
+unix/boot/generic/tok.l
+ The generic preprocessor would translate symbols such as "FOO_PIXEL",
+ as, e.g., "FOO_int", making it awkward to manipulate generic macro
+ definitions in applications code. The translator was modified to
+ replace the string "PIXEL" occurring as part of an upper case
+ identifier, as the type name in upper case. (11/11)
+
+lib/mii.h
+sys/etc/miiread.gx
+sys/etc/miiwrite.gx
+sys/etc/mkpkg
+sys/etc/gen/ +
+sys/osb/miilen.x
+sys/osb/miinelem.x
+sys/osb/miipak.x
+sys/osb/miipak16.x
+sys/osb/miipak32.x
+sys/osb/miipak8.x
+sys/osb/miipakd.x +
+sys/osb/miipakr.x +
+sys/osb/miipksize.x
+sys/osb/miiupk.x
+sys/osb/miiupk16.x
+sys/osb/miiupk32.x
+sys/osb/miiupk8.x
+sys/osb/miiupkd.x +
+sys/osb/miiupkr.x +
+sys/osb/mkpkg
+ Added support for single and double precision IEEE floating to the
+ MII interface. The new datatypes are MII_REAL and MII_DOUBLE,
+ as defined in <mii.h>. The new routines miipak[rd] and miiupk[rd]
+ convert to and from the native floating point format and the
+ machine independent IEEE (non byte swapped) format. (11/11)
+
+sys/osb/mkpkg
+sys/osb/ieee.gx +
+sys/osb/bswap8.c +
+unix/hlib/mach.h
+unix/hlib/libc/knames.h
+ Add support for low level IEEE/native floating point conversions to
+ the host interface.
+
+ 1. The following definitions were added to <mach.h>:
+
+ IEEE_SWAP4 byte swapping required for 32 bit IEEE
+ IEEE_SWAP8 byte swapping required for 64 bit IEEE
+ IEEE_USED local host uses IEEE format
+
+ 2. The following conversion primitives were added to OSB:
+
+ ieepak[rd] (datum)
+ ieeupk[rd] (datum)
+ ieevpak[rd] (native, ieee, nelem)
+ ieevupk[rd] (ieee, native, nelem)
+
+ The first two routines handle scalar conversions, the second vectors.
+ The routines in ieee.gx are the "portable" versions. The "portable"
+ solution it to merely copy the array - this works on any modern IEEE
+ host. If the local host does not use IEEE floating, a host specific
+ version of this file should be written and placed on the MKPKG special
+ file list, with the source in AS.
+
+ 3. Also added a new routine BSWAP8 to OSB, for swapping doubles.
+ (11/11)
+
+sys/imfort/imrnam.x
+sys/imfort/imcrex.x
+sys/imfort/imfmkpfn.x +
+sys/imfort/imemsg.x
+sys/imfort/imfort.h
+sys/imfort/mkpkg
+sys/imfort/imdelx.x +
+sys/imfort/imdele.x
+sys/imfort/imfparse.x
+sys/imfort/oif.h
+ A number of modifications and enhancements were made to IMFORT in
+ order to fix the following bug. In the original IMFORT, the pixel
+ file was always placed in the same directory as the header hence no
+ effort was made to ensure a unique pixel file name. When support
+ for specifying "imdir" was added, it became possible for images of
+ the same name in different directories to reference pixel files in
+ the same imdir, making pixel file name collisions possible. In the
+ event of a collision, the pixel file of the new image would clobber
+ the old one, resulting in two images in different directories pointing
+ to the same pixel file, a very dangerous situation.
+
+ 1. A new internal routine IMFMKPFN was added to determine a unique
+ pixel file name in the current imdir. IMCREX and IMRNAM were modified
+ to use this, fixing the problem described above.
+
+ 2. Since the above change provides clobber checking for pixel files,
+ it was necessary to add clobber checking for entire images at create
+ or rename time (evidently the original interface did not provide this).
+ Clobber is disabled by default, causing a nonzero IER to be returned
+ in a IMCREA or IMRNAM operation if the new image already exists; the
+ variable "clobber" may be defined in the user environment to permit
+ new images to clobber existing ones (deleting both the header and
+ pixel files).
+
+ 3. Examination of interlibrary object module references indicated that
+ a limited amount of VOS filename mapping could be added without greatly
+ increasing executable size or link time. A call to vfn_translate was
+ added in a couple of places to cause the root and extn fields of all
+ image names to be escape sequence encoded. This should fix the
+ problems of mixed case image names and image names with embedded
+ numeric fields (.0001 etc.) translating differently in IRAF and VMS
+ (this is not a problem with UNIX since it is so similar to IRAF).
+
+ 4. A new routine IMDELX was added, which is an SPP version of IMDELE.
+ 5. Several new error codes and error messages were added.
+ (11/28)
+
+sys/imfort/tasks/tasks.cl -
+sys/imfort/tasks/tasks.unix +
+sys/imfort/tasks/tasks.vms +
+ Replaced the file "tasks.cl", which contains the host dependent
+ CL task statements for the IMFORT test programs, by reasonably
+ portable UNIX and VMS versions which can be used without modification
+ on most IRAF hosts (for the others they will at least serve as
+ useful examples). The UNIX version requires that $iraf be defined
+ in the host environment, the VMS version requires the logical IRAFDISK.
+ (11/29)
+
+unix/hlib/install
+ Fixed a bug in the portion of INSTALL which updates the imtoolrc
+ file. If a local version of the file already exists, and it is
+ different than the default iraf version, the old file is renamed
+ to .OLD and replaced by the new version. The problem was that the
+ new file was being installed with MV rather than CP! Hence, the
+ first time this happened the correct file would be installed, but
+ the source file would be removed from unix/sun. The next time
+ install was run the files would again be different (since the source
+ file would be missing) and the old file would be moved to .OLD
+ but not replaced, causing the imtoolrc to be removed from both
+ the source directory and local/lib. (12/1)
+
+sys/fmio/zzdebug.x
+ Added a new debug task mkfile, used to make zeroed lfiles of the
+ indicated size in Kb. (12/2)
+
+lib/syserrmsg
+sys/fmio/fmsync.x
+sys/fmio/fmioextnd.x
+sys/fmio/fmdebug.x
+ Modified FMIO to improve the way datafile overflow is handled.
+ The FMIO data structures impose a limit on the size of the datafile
+ when the datafile is first created; the largest possible datafile
+ depends upon the page size chosen and the number of page table index
+ entries. These may be specified by the user, but the default values
+ of page=512bytes and maxpti=256 will yield a max datafile size of
+ 32 Mb, enough for most applications (ROSAT QPOE files have already
+ exceeded this however).
+
+ 1. Previously, the datafile-too-large condition was detected only
+ at datatype sync time, when the PTI was updated. Added code to the
+ lfile file driver to check for PTI overflow and return a file write
+ error if this occurs while writing to an lfile.
+
+ 2. An effort was made to improve the recovery from such an error.
+ Enough space is always reserved to permit a sync of the principal
+ datafile data structures. If a write to an lfile fills the datafile
+ to capacity, a write error is return to FIO, and a FMIO error is
+ posted so that a subsequent FM_CLOSE will complain about
+ datafile-too-large, after syncing the datafile containing the
+ truncated lfile. No further writes to the datafile which try to
+ extend an lfile will be possible, but it should still be possible
+ to read the lfile, or rebuild it with a larger page size or whatever.
+ (12/2)
+
+unix/boot/spp/xpp/xpp.l
+unix/boot/spp/xpp/xppcode.c
+unix/boot/spp/xpp/decl.c
+ Modified the preprocessor to add a statement to the executable body
+ of every REAL or DOUBLE procedure to initialize the procedure value
+ to zero upon procedure entry at runtime. The problem is that on
+ some systems (e.g., a Sun-4) if a procedure which returns a floating
+ point function value exits without setting the function value, e.g.
+ during error processing, the function value may be random garbage.
+ In the case of a floating point function even a simple copy of the
+ function value may result in a floating point exception, causing
+ program termination, if the garbage value is not a legal floating
+ point number. This is despite the fact that the program may be
+ perfectly correct in that it detects the error return and never uses
+ the function value. Having the preprocessor initialize the function
+ value to zero is a simple solution to the problem which does not
+ require any modifications to applications code, although there is a
+ very slight performance penalty.
+
+ In addition to modifying the compiler as indicated above, I recompiled
+ all the floating point functions in the bin.sparc version of the VOS
+ on tucana (use of which led to the above fix). (12/3)
+
+unix/hlib/libc/setjmp.h
+ Uncommented the old #pragma undefined_control_flow(zsvjmp_), which
+ again seems to be necessary for the CL on a Sun-4. (12/3)
+
+dev/hosts [tucana, orion]
+ Changed bin.sparc to bin.ffpa for new Sun3/160 node libra. (12/6 SRo)
+
+unix/os/zfiotx.c
+ Modified to ignore the file write error which occurs when a process
+ attempts to write to the terminal after the user has logged out.
+ This would cause unix/iraf background jobs submitted without
+ redirecting the output to die after the user logged out, if any
+ program output occurred. I could also have reopened the stdout and
+ stderr on a text file in the user's home directory to save the output
+ in the event that this error occurred, but it would seem that if the
+ user wanted such output saved they would have redirected it to a file
+ explicitly. (12/9)
+
+pkg/system/cmdstr.x
+ This hidden system task, used by MKSCRIPT to construct command strings
+ to build batch scripts, will abort if a task contains a parameter
+ which does not have a value. The error message which appears if this
+ happens was modified to identify the task and parameter name causing
+ the problem. (12/11)
+
+unix/os/alloc.c
+ Made some modifications to make the task more secure. (12/13)
+
+gio/imdkern/ +
+pkg/plot/plot.cl
+pkg/plot/plot.hd
+pkg/plot/plot.men
+pkg/plot/imdkern.par +
+pkg/plot/doc/imdkern.hlp +
+dev/graphcap
+ Installed a new GIO graphics kernel IMDKERN (prepared by Zolt Levay
+ at STScI, by modifying the SGI kernel operating in bitmap mode).
+ This kernel draws into the image display device frame buffer, using
+ the IMD interface. The new kernel is plot.imdkern. Plots may be
+ directed directly to the display device graphics overlay by
+ specifying one of the logical graphics device "imd[wrgby]",
+ (white/red/green/blue/yellow), or just "imd" (defaults to green).
+ More control over the color is possible by running the kernel
+ directly as a task.
+
+ [...details to be added... system integration still in progress]
+ (12/21)
+
+pkg/plot/t_contour.x
+pkg/plot/t_hafton.x
+pkg/plot/doc/contour.hlp
+pkg/plot/vport.x
+ The following changes were made to the CONTOUR program. These changes
+ affect only the semantics of the "perimeter" and "fill" parameters
+ and are disabled if the parameters have their default values (draw
+ perimeter, don't fill).
+
+ 1. If perimeter drawing is disabled, no perimeter is drawn. This
+ seems logical, but previously, if perimeter drawing was disabled,
+ the "crtpict" style perimeter was disabled, but the NCAR grid
+ perimeter box was still drawn.
+ 2. If fill is enabled and perimeter drawing is disabled, and no user
+ viewport is specified, the contour map is scaled to fill the entire
+ device viewport, and all axis and plot labelling is disabled. When
+ used with the new IMDKERN gio kernel, this allows overlaying of
+ contour plots on the image display. (12/21)
+
+dev/hosts
+ Changed "f68881" to "ffpa" for octans entry, now that only the ffpa
+ executables live on octans (to save space). (12/26 SRo)
+
+pkg/cl/config.h
+ Increased the stack size from 20K to 32K.
+ Increased the dictionary size from 40K to 128K. (12/29)
+
+sys/imio/db/imputd.x
+ Modified this routine to use NDIGITS_DP-1 instead of NDIGITS_DP to
+ format printed numbers with the format "%0.*g". The machine precision
+ estimate is only an estimate, and often trying to print that last
+ digit results in making up garbage. This causes numbers such as
+ 1.000000000000000001 to be printed when the actual number is 1.0.
+ (12/31)
+
+sys/imio/db/idbcard.x +
+ Added a little package for reading the internal IMIO FITS header.
+ This package is used in the WCS code and is not intended for use
+ outside of the system code. (12/31)
+
+sys/mwcs/ +
+ Installed the new VOS interface MWCS, or mini-WCS (world coordinate
+ system). This is a general interface for coordinate system
+ representation, management, and evaluation, for use both in
+ applications and as an embedded interface in system code.
+ Although MWCS addresses the general WCS problem, several important
+ problems were left unsolved, and a second major version of the
+ interface is planned for the future. MWCS is NOT regarded as a
+ frozen VOS interface at this point. (1/3/90)
+
+sys/imio/iki/stf/stf.h
+sys/imio/iki/stf/stfget.x
+sys/imio/iki/stf/stfopen.x
+sys/imio/iki/stf/stfwfits.x
+sys/imio/iki/stf/stfrfits.x
+ Modified the STF image kernel to preserve the comment field of
+ PTYPEi cards when the FITS header is read and later rewritten to
+ disk.
+
+sys/imio/iki/stf/stfupdhdr.x
+sys/imio/iki/stf/stfrgpb.x
+sys/imio/iki/stf/stfreblk.x
+sys/imio/iki/stf/stfrdhdr.x
+sys/imio/iki/stf/stfopix.x
+sys/imio/iki/stf/stfnewim.x
+sys/imio/iki/stf/stfaddpar.x
+ Went through all the STF code and added ERRCHK statements where they
+ were missing. At least the files listed above were affected. (1/4)
+
+sys/imio/iki/stf/stfwcs.x -
+ Deleted the little WCS package used in the STF kernel. This was
+ used to apply the section transform to the WCS when making a newcopy
+ image. Since this function is now performed by IMIO using the more
+ general MWCS package, it is no longer necessary to do this in the
+ kernel. (1/4)
+
+sys/imio/iki/stf/stfhdrextn.x -> stfhextn.x
+sys/imio/iki/stf/stfmkpixfn.x -> stfmkpfn.x
+ Renamed these files to shorten the file names. (1/4)
+
+sys/imio/iki/stf/mkpkg
+sys/imio/iki/stf/stf.h
+sys/imio/iki/stf/stfopix.x
+sys/imio/iki/stf/stfopen.x
+sys/imio/iki/stf/stfcopyf.x
+sys/imio/iki/stf/stfwfits.x
+sys/imio/iki/stf/stfrdhdr.x
+sys/imio/iki/stf/stfnewim.x
+ The original STF code would build the FITS "user area" of the header
+ by writing out the GPB (group parameter block) cards, marking the
+ size of the GPB area, then writing the contents of the old user area
+ or FITS header. When the header was later updated the GPB cards would
+ be read to get any new values, then the cards following the GPB area
+ would be output to the image header. This approach turned out to
+ have the following problems.
+
+ 1. Since the size of the GPB area at the start of the user area was
+ fixed at image open time, runtime edits of the header affecting this
+ area, e.g., deleting of a GPB card, could in effect change the size
+ of the GPB area, causing user cards to be lost. This should not
+ happen and would normally result in an error when trying to read the
+ GPB card to update its value, but if a user card happened to redefine
+ a GPB card, an incorrect value could result. I don't know of any
+ occasion where this happened, but it was possible.
+
+ 2. It was possible for user area cards to redefine GPB area cards.
+ This is normally harmless since IMIO uses the first occurrence of
+ a card, but could confuse the user. The problem was particularly bad
+ because in an image copy involving a format change such as STF -> OIF
+ and later OIF -> STF, the GPB cards would become OIF user area cards
+ in the first copy, appearing as duplicate cards in the OIF -> STF
+ conversion.
+
+ This problem was fixed by scrapping the idea of a fixed size FITS/GPB
+ area at the beginning of the user area. Instead, a filtering scheme
+ is now used which can, e.g., copy the user cards while deleting any
+ cards which redefine GPB area keywords. The expense is about the same
+ as before, as the FCOPYO operation, used to spool user cards and later
+ copy them back to the user area, was replaced by a copy/filter
+ operation (stf_copyfits) of comparable expense. The order of non-GPB
+ cards is never changed; any user defined GPB cards will be deleted
+ and replaced by system generated cards at the beginning of the FITS
+ header. All references to the STF_SZGPBHDR field of the STF
+ descriptor were deleted.
+
+ In the process of fixing this I also discovered a large block of
+ code in stf_opix which would make 5 passes through the entire header
+ (two fcopyo operations and one strlen), but which was totally
+ redundant since the stf_mergegpb code was deactivated some time ago.
+ The whole mess was simply commented out for now. (1/4)
+
+sys/gio/ncarutil/conbd.f
+sys/gio/ncarutil/conrec.f
+ Increased the size of the contour work area (STLINE work area overflow
+ bug) from 5000 to 20000. (1/4)
+
+sys/imio/iki/stf/stfnewim.x
+sys/imio/iki/stf/stfrgpb.x
+ 1. In the process of testing the new STF code I discovered that the
+ WCS in the first element of a new multigroup image is initialized to
+ a pixel WCS, whereas subsequent groups are initialized to zero (the
+ parameters are entered into the descriptor but do not describe any
+ valid WCS). I modified stfrgpb.x to set up the default pixel WCS
+ in this case too.
+ 2. The default pixel WCS was modified to set CRVAL=CRPIX=0 rather
+ than CRVAL=CRPIX=1 as before. The two forms are equivalent, but
+ zero is more consistent with MWCS practice. (1/5)
+
+sys/imio/iki/qpf/qpf.h
+sys/imio/iki/qpf/qpfcopypar.x
+sys/imio/iki/qpf/qpfwfilter.x +
+sys/imio/iki/qpf/mkpkg
+ 1. Modified QPF to propagate any WCS information in the QPOE file to
+ the image header. The MWCS, stored in the QPOE header as a variable
+ length binary array, is loaded into a MWCS descriptor and then "saved"
+ in the image header as the standard set of FITS cards.
+ 2. Added code to QPF to record in the header the QPIO filter used to
+ generate the image. This is recorded as a series of FITS cards,
+ however many it takes, of the form QPFILTnn, where the nn goes 01,
+ 02, etc. (1/5)
+
+sys/qpoe/README
+sys/qpoe/qpoe.h
+sys/qpoe/qpsavewcs.x +
+sys/qpoe/qploadwcs.x +
+sys/qpoe/qpiolwcs.x +
+sys/qpoe/mkpkg
+lib/syserr.h
+lib/syserrmsg
+ Added two new routines qp_[save|load]wcs to QPOE. These are used to
+ save or load a MWCS type world coordinate system in a QPOE variable
+ length binary header parameter "qpwcs". A QPOE file can contain any
+ number of WCS parameters, e.g., each for a different physical system,
+ but at present only "qpwcs" will be used by the system code, e.g.,
+ QPF and IMIO.
+
+ qp_savewcs (qp, mw)
+ mw = qp_loadwcs (qp) # aborts if no WCS
+ mw = qpio_loadwcs (qpio) # aborts if no WCS
+
+ A new routine qpio_loadwcs was also added to QPIO. This is like
+ qp_loadwcs, except that it also sets up the Lterm of the WCS to
+ reflect the current blocking factor and rect set for the QPIO
+ descriptor. The logical coordinate system of the resultant WCS
+ will give the pixel coordinates of the defined rect. Note that
+ the physical system (event coordinates) and world system (e.g.,
+ TAN projection) are not affected.
+
+ It is qpio_loadwcs which is used by QPF to load the WCS for a QPOE
+ file. In this case the physical image matrix is described by the
+ logical coordinate system, since the physical system for QPOE data
+ is always event coordinates. Any IMIO image section applied to a
+ QPOE file opened under IMIO modifies the Lterm, so in such a case
+ the Lterm is formed from the QPIO rect and blocking factor and the
+ IMIO section as successive transformations, leaving the physical
+ system unaffected and still referring to the original event coordinate
+ system. (1/5)
+
+sys/mkpkg
+sys/gio/mkpkg
+ Added entries for the new IMD (GIO kernel) code, so that IMD will be
+ automatically updated in a sysgen. (1/6)
+
+sys/imio/immaky.x
+ Added code to this routine, called when a NEW_COPY image is created,
+ to apply the section transform to the WCS of the new image (since the
+ WCS itself is currently stored as data in the header it is automatically
+ propagated). This is the only place in IMIO which knows anything about
+ MWCS. Although the code added to IMIO is very simple (a mw_loadim on
+ the old image followed by a mw_saveim in the new image), much of MWCS
+ gets involved. Since MWCS is not yet sufficiently well tested I set
+ things up so that if "nomwcs" is defined in the user environment,
+ the calls to MWCS are skipped. Note that in any case, for OIF and
+ STF images, MWCS is called only 1) in a NEW_COPY operation, 2) if the
+ input image was opened with an image section. For QPOE images, MWCS
+ is called for every image open, but only if a WCS is stored in the
+ QPOE file. (1/6)
+
+--------------------------
+Updated f68881, ffpa, and sparc binaries on tucana.
+Copied snapshot of V2.9 system to DECstation.
+Started DECstation V2.9 full bootstrap and sysgen. (1/6)
+
+pkg/plot/t_graph.x
+ This file contained a routine im_projection with the same name as as
+ identical routine in file improject.x, causing multiple entries for
+ the same routine in the in package library (caused a warning message
+ from the MIPS compiler on the DECstation). (1/7)
+
+unix/hlib/mach.h
+ Changed NDIGITS_DP from 17 to 16 (for IEEE double precision). This
+ corresponds to a mantissa of 52 bits (IEEE double uses an 11 bit
+ exponent). The value of 17 set a while back was not correct. (1/20)
+
+unix/hlib/iraf.h
+ Increased the value of ARB to a larger "arbitrarily large value" (about
+ 1 billion; the max signed integer is about 2 billion). This won't
+ take affect globally until the entire system is recompiled, but this
+ allows selective recompilation of objects for which the smaller value
+ was a problem. This change should be transparent, but will likely
+ root out any errant programs that are using ARB improperly, e.g., to
+ dimension a static array. (1/28)
+
+ Also manually recompiled the objects for a number of files in FMTIO,
+ FIO, IMIO, etc., for the f68881, ffpa, pg, and sparc architectures
+ on tucana, where a small ARB could unnecessarily limit the size of
+ an operation. A full sysgen will be needed eventually.
+
+sys/imio/iki/stf/stfrdhdr.x
+sys/imio/iki/stf/stfreblk.x
+ These files were setting IM_LENHDRMEM, the current image descriptor
+ length minus the base descriptor, to the current header length plus
+ space for 20 cards. The problem was that this would override the
+ max_lenuserarea specification, used to set the max header size at
+ image open time. The code was modified to reallocate the header
+ only if more space is needed, thus allowing more than 20 cards to
+ be dynamically added to an open STF image. This also eliminates
+ yet another full pass through the header, if the header gets copied
+ in a realloc operation. (1/28)
+
+local/.suntools [Sun/IRAF HSI]
+local/.sunview
+ Replaced the sample pathnames used to source the .login file by the
+ path $home/.login. When these were first set up I didn't think this
+ worked, but evidently it does now. (1/29)
+
+pkg/lists/rimcursor.x
+pkg/lists/rimcursor.par +
+pkg/lists/doc/rimcursor.hlp
+pkg/lists/lists.cl
+pkg/lists/mkpkg
+ The RIMCURSOR task was completely rewritten to add support for world
+ coordinate systems. Coordinates may be output in any WCS defined for
+ the reference image. Currently, this is not being done quite as it
+ should be, since the image cursor read code (using libds) is an interim
+ facility which differs from what is planned. Nonetheless this should
+ provide a useful tool for reading out image locations in world
+ coordinates until integration of WCS support into the system is more
+ complete. (1/29)
+
+sys/tty/ttygsize.x
+ If the terminal device does not support the runtime screen size query,
+ this routine would make a couple of ttygeti() calls to get the screen
+ size from the termcap entry for the terminal. This would effectively
+ override the use of the environment variables ttynlines/ttyncols,
+ or "stty nlines=NN" etc., to specify a screen size other than the
+ default. The ttygeti() calls were replaced by ttystati() calls to
+ permit the user to override the termcap screen size defaults. (1/29)
+
+sys/tty/ttygdes.x
+ Modified the defaults mechanism for querying the environment, termcap,
+ etc., for the screen size at termcap entry open time. The defaults
+ are still much the same, i.e., the environment is used if the device
+ being opened is the user terminal device, else the termcap entries
+ are used if found, else the default screen size 24x80 is used. The
+ main change was to search the termcap if the environment variables
+ are not defined (unlikely since they are in zzsetenv.def), and to avoid
+ a possible error abort if li/co are not present in the termcap entry.
+ This was not a functional change, the code is merely a bit more robust.
+ (1/29)
+
+unix/hlib/install
+unix/hlib/mkmlist.csh
+unix/hlib/mkiraf.csh
+unix/hlib/buglog.csh
+unix/hlib/mkfloat.csh
+ Revised the "unalias" lists in these scripts to unalias more of the
+ unix commands that users might possibly have redefined. (1/31)
+
+unix/sun/imtool.c
+unix/sun/imtool.icon
+unix/sun/gterm.icon
+ 1. Replaced the GTERM and IMTOOL icons by the latest creations.
+ 2. Modified the IMTOOL source to conditionally compile a cursor rop
+ which avoids the famous "chicken scratch" bug on the SS1. This option
+ is the default for the sparc version of imtool, until the bug gets
+ fixed (it is still present in sparcstations shipping today, under
+ 4.0.3). (2/2)
+
+sys/fmtio/strdic.x
+ Modified slightly to optimize the dictionary string compare. (2/3)
+
+sys/imio/iki/stf/stfrdhdr.x
+sys/imio/iki/stf/stfrfits.x
+sys/imio/iki/stf/stfctype.x +
+sys/imio/iki/stf/mkpkg
+sys/imio/iki/stf/stf.h
+sys/imio/iki/stf/stfopen.x
+ The STF image kernel was optimized for the case where the same image
+ is repeatedly read, as when successively accessing the individual
+ images in a large group image. This was done by adding a header file
+ cache. Whenever the kernel tries to read the FITS header of an STF
+ image, it looks first in the internal STF header cache and uses the
+ cached version if there is a cache entry for the given file, and the
+ cached entry is up to date. If the cached entry for a header file is
+ valid the cache and disk versions are identical and the disk file need
+ not be opened or read. Modifying the disk version of a header file
+ automatically invalidates the cache entry in all processes with an
+ active header cache (by updating the file modify date). Since a cache
+ access is functionally equivalent to a header file read, the cache
+ will speed up all types of image accesses, e.g., occasional access
+ to the same image, and sequential access to all the elements of a group
+ image, for both reads and writes (so long as the header file is not
+ modified, forcing a cache slot reload). The cache operates as an LRU
+ cache with a fixed number of cache slots, by default 3. The default
+ number of slots may be overridden by defining "stfcache=<nslots>" in
+ the user environment. Due to the amount of memory required for the
+ headers, there is a builtin limit of 5 cache slots per process.
+ Setting stfcache to zero disables the cache.
+
+ A profile of STF with the cache enabled shows that, for repeated
+ immap calls on subimages of a single group format image, most of the
+ cpu time is now consumed by the read group parameter block code.
+ Image header keyword accesses, e.g. to define the GPB header entries,
+ are still relatively expensive due to the sequential-FITS nature of
+ the current imio/db code. (2/3)
+
+unix/bin.mc68020/bytmov.c
+unix/bin.mc68020/amovs.c
+unix/bin.mc68020/amovr.c
+unix/bin.mc68020/amovl.c
+unix/bin.mc68020/amovi.c
+unix/bin.mc68020/amovd.c
+unix/bin.mc68020/amovc.c
+ Added an IF test to do nothing if the input and output arrays are
+ the same (copy is a no-op). (2/4)
+
+---------------------
+Begin full bootstrap and sysgen of V2.8 for tucana/f68881. This is the first
+full compile since a new version of the Sun Fortran compiler was installed
+with SunOS 4.0.3. (2/4)
+
+sys/fmtio/patmatch.x
+ There were several occurrences of assignments such as "cval = ARB"
+ in this code, where CVAL is of type char. This is illegal since ARB
+ can be a large number, and the bug was found and flagged by the
+ compiler now that ARB is larger than the max value of an integer*2
+ char. Changed the ARB to 0; it appears that the value is a mere
+ placeholder, being filled in later by a real value at runtime, hence
+ the value in the code is indeed arbitrary. (2/4)
+
+unix/hlib/mkpkg.sf.SUN3
+ Added sys$gio/ncarutil/autograph/agstup.f to the list of files to be
+ compiled with the optimizer turned off. The f77 optimizer core dumps
+ on this file. (2/4)
+
+lib/syserrmsg
+ Added verbose error messages for FMIO, QPOE, and MWCS. (2/4)
+
+---------------------
+Updated (incremental) sparc and ffpa binaries as well.
+Snapshot of beta system made for STScI. (2/5)
+---------------------
+Did a full sysgen (recompile) of the NOAO packages for SPARC. (2/6)
+
+sys/mwcs/wftan.x
+ Modified to check for ra > 360, and subtract 360 if this occurs. (2/7)
+
+local/.forward -
+unix/hlib/gripes.cl
+ 1. Deleted the .forward file in iraf/local.
+ 2. Modified GRIPES to attempt to send gripes to iraf via email to
+ the internet or via span, depending upon the system. (2/8)
+
+sys/plio/README
+sys/plio/mkpkg
+sys/plio/plrio.x +
+sys/plio/plsectnc.x +
+sys/pmio/README
+sys/pmio/mkpkg
+sys/pmio/pmrio.x +
+sys/pmio/pmsectnc.x +
+ 1. Added a new routine PL_SECTNOTCONST to PLIO and PMIO. This is
+ patterned after pl_sectnotempty(), but checks to see if the given
+ mask section is constant valued, rather than zero. If the section
+ is constant valued the mask value assigned to the region is returned
+ as an output argument.
+
+ 2. Added a new mini-package PLRIO, used to efficiently random access
+ any 2D plane of an existing pixel list or image mask. The mask is
+ opened for random access on a special descriptor which incorporates
+ a scaled, active 2D lookup table. Most subsequent plr_getpix(plr,i,j)
+ calls will return the given mask value directly from the table with
+ very little overhead; only if the referenced pixel occurs in a region
+ too complex to be described by a single table entry is the value
+ computed by direct evaluation of the mask. A special 2D binary
+ recursive algorithm (using pl_sectnotconst above) with log2(N)
+ performance is used to calculate the scaled lookup table. These
+ algorithms provide efficient table generation and random mask pixel
+ access even for very large masks. (2/10)
+
+sys/qpoe/qpiogetev.x
+sys/qpoe/qpioclose.x
+ Modified qpio_getevents() to make use of PLRIO to randomly sample a
+ region mask when performing event filtering of a nonindexed event list.
+ The problem here is that in a nonindexed event list, events need
+ not be sorted positionally, and successive events can have random
+ coordinates (this is guaranteed to be the case, for example, in a
+ time sorted QPOE file). If a region mask is being used for extraction
+ with such data, the mask must be evaluated to a single pixel for each
+ event in the event list. Since a large event list might contain
+ 10E6 events or more, some sort of lookup table is required for
+ efficient extraction. The old code was using a static lookup table,
+ but this failed for ROSAT data, where a region mask is 8192 pixels
+ square, requiring a 128Mb static lookup table! By using the scaled
+ active lookup table provided by PLRIO, we can provide comparable
+ runtime efficiency (table generation is actually more efficient),
+ using a table of only 256x256 or so. (2/10)
+
+sys/qpoe/qpexopen.x
+sys/qpoe/qpioparse.x
+lib/syserr.h
+lib/syserrmsg
+ 1. QPIO_PARSE now checks that brackets, parenthesis, etc., match at
+ the end of an expression, and takes an error exit if this is not the
+ case.
+ 2. QPEX_OPEN now checks the error status of the QPEX expression
+ compiler, and takes an error exit if any errors occurred during
+ expression compilation (additional warning messages appear during
+ compilation for each error encountered). (2/10)
+
+sys/qpoe/qpiogetev.x
+ The event i/o code was not working at all for the case of indexed
+ extraction, with a bounding box (rect) and a region mask. The call
+ to the mask code to determine if a line segment is empty had the
+ endpoint of the segment set to the start point, hence was testing
+ only a single pixel (column of the rect). (2/11)
+
+sys/plio/plupdate.x
+sys/plio/plcmpress.x
+sys/plio/zzdebug.x
+ The following changes were made to fix the "PL_LLFREE inconsistent"
+ warning seen when editing complex PLIO masks.
+
+ 1. The code in plcmpress.x which computes the space used by a mask
+ was incorrect; this would cause the warning message to be printed
+ even if the descriptor value of PL_LLFREE were correct. The code was
+ using LP_BLEN (the line list buffer length) to accumulate the mask
+ length, rather than LP_LEN (the amount of words of the line buffer
+ actually used to store the current line).
+ 2. There was a bug in plupdate.x which could cause PL_LLFREE to be
+ computed incorrectly in certain cases. When the reference count of
+ a line buffer went to zero, causing the buffer to be freed, the entire
+ buffer space was being added to the free space count, which was
+ incorrect because any line buffer space unused at the time the
+ reference count went to zero would already have been counted as free.
+ 3. Added a new debug task "scripts" to the PLIO zzdebug.x This task
+ is used to create drawing scripts for PLTEST, making it easier to
+ test complex mask drawing operations.
+
+ Both of these bugs reflected special cases that occur only when editing
+ complex masks. In the actual tests run, a test case of 1500 circle,
+ box, and point region draws in a 1024sq mask, bug #1 did not show up
+ until over 4000 line edits had occurred, and bug #2 did not show up
+ until over 14000 line edits had been made. (The final test, which
+ ran to completion with no errors, involved 60,000 region draws or about
+ 3 million line edits). (2/12)
+
+sys/qpoe/QPOE.hlp
+sys/qpoe/qpadd.gx [INTERFACE CHANGE]
+sys/qpoe/qpastr.x [INTERFACE CHANGE]
+sys/qpoe/README
+ The calling sequences of the qp_add[bcsilrdx] and qp_astr routines,
+ used to set the value of a header parameter while creating it if it
+ does not already exist, were modified to add a COMMENT argument (the
+ comment field of the parameter if it is created). Although this is
+ an interface change, few applications exist yet which use QPOE, and
+ the few that have written have avoided use of the qp_add and qp_astr
+ routines due to the inability to specify the comment field if the
+ parameter is created. (2/12)
+
+sys/qpoe/mkpkg
+sys/qpoe/gen/mkpkg
+ While updating QPOE after the above change, I noticed that only
+ gen/qpaddb.x was getting built due to omission of the other types in
+ the mkpkg. Added the mkpkg support for the missing types. (I guess
+ we don't have to worry about this interface change affecting any
+ existing applications!). (2/12)
+
+------------------
+sparc and f68881 binaries updated.
+Beta test snapshot of V2.9 sent off to CFA. (2/14)
+STScI beta system updated. (2/15)
+
+imio/iki/stf/stfrgpb.x
+ Modified the cannot group parameter block to suggest that if this
+ occurs, it may be because there is no such group. (2/15)
+
+pkg/lists/rimcursor.par
+pkg/lists/doc/rimcursor.hlp
+ The default value of the "cursor" parameter (type *imcur) was changed
+ to the null string. (2/15)
+
+sys/qpoe/qpio.h
+sys/qpoe/qpiogetev.x
+ The QPIO code was ignoring the region mask if the portion of the mask
+ within the bounding box or rect (by default the full area) was empty.
+ Modified to treat this, and the case of a null event list, as a
+ special case which will cause all subsequent qpio_getevents calls on
+ that QPIO descriptor to return immediately with EOF, without actually
+ doing any i/o. (2/16)
+
+doc/ports/notes.convex +
+ Added the notes on the Convex/IRAF port, which appear never to have
+ been archived in this directory. (2/16)
+
+unix/hlib/fc.csh +
+unix/hlib/login.cl
+unix/hlib/install
+ The task FC, a front end to XC used to compile host programs which
+ may or may not use IMFORT, was modified to call an intermediate
+ script hlib$fc.csh, rather than calling XC directly. The purpose
+ of the fc.csh script is to determine the current iraf architecture
+ and add a command such as -/ffpa, -/f68881 etc. to the XC command
+ line to ensure that the architecture of any objects compiled with
+ the command will match that of the iraf architecture. This is
+ whatever is defined by IRAFARCH, else an appropriate architecture
+ is selected. There are potential problems with this approach, e.g.,
+ if the user specifies a different architecture on the command line
+ the task can get confused, but short of making more extensive host
+ dependent changes to XC this is an easy way to make the IMFORT
+ interface a bit more resistant to user confusion over multiple
+ architectures, which will solve the problem for most users (the
+ rest probably don't use FC anyway). (2/16)
+
+unix/hlib/mkiraf.csh
+ MKIRAF now renames any old login.cl to login.cl.OLD before creating
+ the new one, rather than clobbering the original file. (2/16)
+
+unix/boot/spp/xc.c
+ The Sun/IRAF XC now searches -lU77 when linking a host program (-h
+ switch). (2/16)
+
+unix/boot/spp/mkxc.sh
+ The call to CC to compile and link XC was not using $HSI_CF. (2/16)
+
+unix/hlib/cl.csh
+ Modified to define IRAFARCH if not already defined. (2/16)
+
+unix/hlib/mkfloat.csh
+ 1. Modified to use a compressed architecture save file OBJS.arc.Z.
+ Will still work if an existing save file is not compressed.
+ 2. Will no longer make an empty OBJS.arc (.Z) file if there are no
+ files to be saved, as when backing up the generic architecture.
+ 3. Modified the code which uses "tar -tv" to verify the save file
+ to ignore directory name listings. On some systems (Ultrix) TAR
+ lists directories as archive members, even though only a filename
+ list may have been used to generate the archive. This makes a
+ file list compare fail even if the archive is good. (2/17)
+
+noao/mkpkg
+noao/lib/mkpkg.inc
+noao/lib/mkpkg.sf.MIPS +
+ Added support for the "mips" architecture (the DECstation). (2/17)
+
+local/notes.i386 -
+doc/ports/notes.i386 +
+ Moved notes on Sun386i port to doc/ports. (2/17)
+
+--------------------
+Updated DS3100/IRAF to V2.9BETA.
+Full bootstrap and sysgen-recompile. (2/17)
+
+sys/osb/ieee.gx
+sys/osb/miipakr.x
+sys/osb/miipakd.x
+sys/osb/miiupkr.x
+sys/osb/miiupkd.x
+ The MII routines for IEEE to native floating point conversions were
+ modified to assume that the IEEE conversion primitives handle byte
+ swapping as part of the IEEE-native format conversion. (2/17)
+
+noao/lib/FC.mips +
+noao/lib/mkpkg.sf.MIPS
+ The MIPS Fortran compiler failed on a couple more large files in the
+ NOAO sysgen-recompile. This is a parser error, hence turning off the
+ optimizer (or changing any other compiler switches) has no effect.
+ The NOAO files currently affected by this bug are the following:
+
+ dtoi$database.x
+ digiphot$apphot/aplib/aprcursor1.x
+ digiphot$apphot/aplib/apverify1.x
+
+ When this problem occurred earlier my solution was to manually
+ compile database.x and place the .o in noao$lib. Since this approach
+ is prone to error and there are now several files, I changed the
+ special file list to use the new script FC.mips in noao$lib to
+ automate the custom compile, e.g.:
+
+ $set FC = "$(iraf)noao/lib/FC.mips"
+ $special "noao$imred/dtoi/":
+ database.x & "!(chmod +x $(FC); $(FC) database.x)"
+ ;
+ $special "noao$digiphot/apphot/aplib/":
+ aprcursor1.x & "!(chmod +x $(FC); $(FC) aprcursor1.x)"
+ apverify1.x & "!(chmod +x $(FC); $(FC) apverify1.x)"
+ ;
+
+ The script FC.mips may be useful to send to users if this problem
+ occurs elsewhere, e.g., in add-on packages. Hopefully the bug will
+ be fixed in the next release of the MIPS compilers. (2/17)
+
+noao/digiphot/apphot/qphot/mkpkg
+ This mkpkg file had a bad special file list. The same source file
+ was listed twice, causing the object to be entered into the libpkg.a
+ twice. This resulted in a warning message from ranlib when the
+ package was built on the DECstation. The bug was actually harmless,
+ since both objects were identical. (2/17)
+
+unix/x11 + [DECstation/IRAF]
+unix/x11/saoimage +
+ Installed the latest version of SAOimage in the DECstation HSI. (2/17)
+
+------------------
+DECstation update completed. (2/17)
+
+sys/fmio/fmfcache.x
+ If an lfile was already open READ_ONLY in the FMIO cache, and an
+ attempt was then made to open it APPEND, a no write perm error
+ would result on the lfile. The bug was that the code which checks
+ to see if a file opened read only needs to be reopened with write
+ perm was not checking for APPEND mode as one of the file modes
+ requiring write perm. (2/17)
+
+sys/qpoe/qpmacro.x
+ When opening a compiled macro save file and restoring the saved symbol
+ table therein, qp_access() was not freeing the old symbol table,
+ causing a sequence of qp_open/qp_close calls to gradually consume
+ more memory. (2/17)
+
+pkg/cl/prcache.c
+ The CL process cache code was modified to check the date of the
+ executable file associated with a cached process whenever a task
+ in that process is run. If the modify date of the executable file
+ is more recent than the time when the process was cached, the cache
+ entry is automatically invalidated and the process is restarted
+ (provided it is not actively being used). This avoids the confusing
+ situation where someone doing software development from within the
+ iraf environment relinks a process, but then unknowingly tests the
+ old process which is still in the cache. (2/19)
+
+pkg/cl/unop.c
+ This code automatically prepares both real and integer versions of
+ input operands as part of its standard preamble, regardless of which
+ version is used for processing. This could result in a numeric
+ conversion exception on some machines if the input operand was real
+ and the value was too large to coerce to an integer. For the CL
+ such an invalid conversion produces an INDEF, so the code was modified
+ to check for very large real values and set the integer version to
+ INDEFL if overflow occurs. In most cases where this occurs it is
+ likely that the integer version will never be used in any case. (2/19)
+
+sys/gio/gsetr.x
+sys/imio/db/idbpstr.x
+ These files contained the construct "[il]val = nint ([rd]val)", which
+ could result in a numeric conversion exception if the real value were
+ very large. The solution was to delete the [il]val and instead use
+ nint([rd]val) directly in the code. (2/19)
+
+sys/etc/environ.x
+ Fixed an obscure bug in the system environment code. When overwriting
+ the value of an existing variable with reset, if the length of the
+ new value string was exactly the right size (normally 21 chars for
+ small value fields) the replacement value could write off the end of
+ the allocated space by one char. This would overwrite the E_NEXT
+ field of the entry immediately following, in storage order, the entry
+ being reset. E_NEXT is the index of the next entry on the hash
+ thread to which the entry being clobbered belongs. For the typical
+ iraf environment list which contains approximately as many entries
+ as there are threads, most threads are either empty or have only a
+ single element, hence E_NEXT is NULL. When E_NEXT is overwritten it
+ is overwritten with EOS, which is equivalent to NULL, so if the hash
+ thread contains only a single value the problem will go unnoticed.
+ If a non-null E_NEXT link is clobbered the thread is effectively
+ truncated, causing the remaining entries on that thread to become
+ invisible in further table lookups (i.e., the entries would become
+ undefined).
+
+ This was a serious bug since the environment code is fundamental to
+ the system, but it is unlikely that the problem has been seen very
+ often because 1) environment resets are relatively uncommon at the
+ CL level, and normally involve items with short values strings like
+ stdimage, 2) the replacement value would have to be exactly the right
+ length, e.g., 21 chars, for an overwrite to occur, and 3) the entry
+ following the entry being reset would have to have a nonnull thread
+ link for the overwrite to make any difference. (2/19)
+
+sys/qpoe/qpadd.gx
+sys/qpoe/qpastr.x
+sys/qpoe/qppopen.x
+ These routines were calling qp_addf() with a numeric datatype code
+ (e.g., TY_INT) but the calling sequence requires a symbolic code,
+ necessary in order to specify user defined types. (2/20)
+
+unix/hlib/zzsetenv.def
+ Added an entry for the system logical directory MWCS. (2/20)
+
+sys/imio/db/idbcard.x
+ The routine idb_nextcard(), called by the MWCS code to read a FITS
+ image header, had a bug which could result in an infinite loop when
+ a *nonblocked* image header (lines not all blocked to 80 chars)
+ contained a blank line. This bug was fixed, and I also made the
+ end of header checking more robust, checking for a pointer beyond
+ the end of data, as well as checking for EOS on the header area.
+ Note that MWCS is not called during most image operations unless
+ a NEW_COPY image is made from an image section of the input image,
+ hence this bug would only be seen if 1) calling a task which makes
+ a NEW_COPY image with an image section, 2) the image header of the
+ input task is not blocked to 80 chars per line (not supposed to
+ happen, but evidently it does occasionally), and 3) the header
+ contains a blank line. (2/20)
+
+sys/etc/envgetb.x
+ The operation of this operator in the case of a variable which exists
+ but has no value string was not well defined. false would be returned
+ if the parameter did not exist, but false would also be returned if
+ it existed but had no value string. The routine will now return true
+ if the parameter exists but has no value string, allowing the existence
+ of the parameter in the environment to be used as a switch. If a yes
+ or no value is given, then that will be used instead to determine the
+ boolean value. (2/21)
+
+sys/imio/immaky.x
+ Modified to use envgetb() instead of envfind() to test for the
+ environment switch "nomwcs", to be consistent with the planned use
+ of an envgetb() test for nomwcs in the IMAGES tasks. (2/21)
+
+-----------------
+V2.9BETA installed at CFA and updated to this point. (2/21)
+
+sys/imio/iki/stf/stfnewim.x
+sys/imio/iki/stf/stfopix.x
+ The STF descriptor was being reallocated in stf_newimage without
+ updating the pointer to the STF descriptor in the image header. (2/24)
+
+sys/gio/gki/gkiprint.x
+ Modified to print the marker width field in a PM_SET call. (This is
+ not used in any GIO kernel at present, but since it is a defined
+ attribute it may as well be printed). (2/24)
+
+sys/etc/cnvdate.x
+ Added an errchk for stropen. (2/24)
+
+pkg/images/geometry/t_blkrep.x
+pkg/images/geometry/t_geotran.x
+pkg/images/geometry/t_imshift.x
+pkg/images/geometry/t_shiftlines.x
+pkg/images/geometry/t_magnify.x
+pkg/images/geometry/t_blkavg.x
+pkg/images/geometry/t_imtrans.x
+ The above IMAGES tasks were modified to call MWCS to modify the
+ Lterm of the image coordinate system. As a temporary insurance
+ measure until MWCS can be fully tested, the code was written in
+ such a way that the WCS update is skipped if "nomwcs" is defined
+ in the iraf environment. The "nomwcs" switch will be deleted
+ in the next iraf release. (2/24)
+
+sys/fmtio/gargi.x
+sys/fmtio/gargl.x
+ These routines contained a construct such as "ival = dval" which
+ would perform a blanket conversion from double to int. There could
+ result in a numeric exception if dval were INDEF or very large.
+ The procedures were modified to check for these cases and explicitly
+ set the output value to INDEF if such a case occurs. (2/24)
+
+sys/fmtio/dtoc.x
+ Changed in a couple of places to replace several long(val) constructs
+ by a single, precomputed lval variable, to guarantee that the value
+ is the same in all cases. (2/24)
+
+sys/ki/kfsubd.x
+ Added code to check for an error return from ZFGCWD and exit
+ immediately with an error status return in this case. (2/24)
+
+pkg/plot/doc/implot.hlp
+ Modified to include mention of the usage of the 'l' and 'c' colon
+ commands to plot averages of lines and columns, e.g. ":l 30 40" to
+ plot the average of lines 30 through 40. (2/24)
+
+vms/hlib/sgiqueue.com
+ There were a number of lines in this file of the form
+
+ print/que=foo/delete 'p2.foo'
+
+ These were changed to the form
+
+ print/que=foo/delete 'p2'.foo
+
+ i.e., it is the 'p2' which must be quoted, since in DCL the function
+ of the quotes is to perform variable substitution. (2/24)
+
+lib/sysruk.x
+sys/etc/main.x
+ 1. In sysruk, the >6 char arguments "arglist_offset" and "interactive"
+ were renamed to minimize the likelihood of a name mapping collision
+ with the procedures in the same same file as the TASK statement.
+ Also renamed the "eawarn" environment variable to avoid the suggestion
+ that this is EA_WARN with a missing include <error.h>.
+ 2. Added aliases cd for CHDIR, and reset for SET. chdir is somewhat
+ of an anachronism these days, and it is nice if reset is recognized
+ since one gets used to using it in the CL. (2/25)
+
+unix/hlib/iraf.h
+unix/hlib/libc/spp.h
+sys/clio/clgfil.x
+sys/etc/prupdate.x
+sys/etc/prenvset.x
+sys/etc/prchdir.x
+sys/etc/oscmd.x
+sys/fmtio/clscan.x
+sys/fmtio/fscan.x
+sys/fmtio/scan.com
+sys/ki/kienvreset.x
+sys/libc/sprintf.c
+sys/libc/printf.c
+sys/libc/cungetl.c
+sys/libc/cttset.c
+sys/libc/csppstr.c
+ Added a new global SPP define SZ_COMMAND (similar to SZ_FNAME, SZ_LINE,
+ etc.) in iraf.h and libc/spp.h. Modified all the VOS routines I could
+ find which use large command buffers to make use of this new system
+ parameter. Also in fscan.x, replaced the getline() by a getlline()
+ to allow for file lines longer than SZ_LINE. (2/25)
+
+unix/hlib/install
+ 1. The alloc.e code now checks the file mode to ensure that set-uid
+ mode is set on the file. (2/25)
+ 2. [more work to be done here...]
+
+sys/etc/environ.h
+sys/etc/environ.x
+sys/etc/main.x
+ 1. Increased the default initial environment list size parameters
+ and doubled the number of hash threads. The new values are about
+ right for the typical iraf environment list in the present system.
+ 2. In environ.x and main.x, replaced all getline() calls by getlline()
+ reads into a SZ_COMMAND line buffer. This is necessary to allow
+ "set name = value" commands longer than SZ_LINE to be passed in via
+ IPC from the CL. (2/25)
+
+pkg/system/help/help.h
+pkg/system/help/t_hdbexamine.x
+pkg/system/help/mkpkg
+ 1. hdbexamine had its own private definition of SZ_HELPDB; deleted
+ and added an include for help.h.
+ 2. Increased the size of the helpdb buffers used within HELP to 1024
+ chars. (2/25)
+
+sys/fmtio/fmt.com
+sys/fmtio/fprntf.x
+ Increased the size of the "format" buffer from SZ_LINE to SZ_OBUF
+ (1024 currently). The printf commands can be used for output like
+ getline(), with any amount of data, and often the "format string" is
+ mere data. The code should probably be revised to scan the format
+ string and immediately output data until the first % format specifier
+ is encountered (to avoid the 1024 char limit, and for enhanced
+ efficiency) but this was tricky enough that I did not want to risk
+ it at this time. (2/25)
+
+sys/imio/db/idbcard.x
+ There was another problem in the code used for headers with variable
+ length cards (most headers are blocked 80 characters per card, or
+ should be). The idb_nextcard() routine would return a pointer to
+ the \n preceeding a card, rather than to the first character of
+ the card. This was preventing MWCS from seeing any of the WCS
+ cards in a header with an existing WCS, if the header happened
+ to be nonblocked. (2/26)
+
+sys/mwcs/iwparray.x
+sys/mwcs/mwsaveim.x
+ 1. Added an "index" argument to the internal routine iw_putarray,
+ used to update array parameters in image headers, and modified
+ mw_saveim() accordingly. An index value of zero (match all indices)
+ was being used when checking to see if a given header card existed
+ to determine if, e.g., adding a card was necessary. This could fail
+ when updating an array parameter because then there can be multiple
+ cards which differ only in the index. The result was a message such
+ as "image header parameter not found" when trying to update the value
+ of an indexed card when 1) another card of the same type existed in
+ the header, and 2) a card with the given index did not yet exist.
+
+ 2. Deletion of obsolete WCS cards following a header update was not
+ working. The code which checks the C_UPDATED flag to see if a
+ card is to be preserved was referencing the wrong descriptor, causing
+ the test to fail. (2/26)
+
+sys/qpoe/qpcopyf.x
+ The loop which copies an array valued parameter in large chunks with
+ qp_read/qp_write, was not incrementing the data offset in each pass
+ through the loop. This would only have affected copies of array
+ parameters with greater than 8192 elements. (2/26)
+
+sys/qpoe/zzdebug.x
+ Modified the HLIST task to output the lfile number and lfile offset
+ of the stored parameter value, in addition to the information already
+ output. (2/26)
+
+sys/fmio/fmfcache.x
+ When opening an lfile in APPEND mode and the lfile was already in
+ the file cache with write permission, a seek to EOF was not being
+ performed. (2/26)
+
+sys/imio/iki/stf/stfcopyf.x
+ The stf_copyfits() procedure copies the user area (a series of FITS
+ cards), optionally separating the cards into reserved or group
+ parameter cards, which are generated and controlled by the program,
+ and user cards. The routine was handling cards defining GPB fields
+ properly, but it turns out that the STF interface also defines the
+ cards GROUPS, GCOUNT, PCOUNT, and PSIZE in the user area for the
+ benefit of someone reading the header. The result was that a NEW_COPY
+ copy of an STF image would contain two copies of these four cards,
+ since stf_wfits() explicitly outputs all GPB definition cards or
+ other reserved FITS cards during a header update. The fix was to
+ modify the stf_copyfits() filter to recognize these four cards in
+ addition to the GPB cards, and treat them the same way (e.g., omit
+ them in a copy operation). (2/27)
+
+--------------------
+f68881 and sparc binaries updated.
+CFA and STScI upgraded to this point. (2/27)
+
+pkg/cl/builtin.c
+sys/libc/cenvget.c
+ Changed a couple of 512 byte buffers to use SZ_COMMAND. (2/27)
+
+sys/etc/envscan.x
+ Increased the size of the input line buffer to SZ_COMMAND+SZ_LINE.
+ This is because getlline() requires at least SZ_LINE of space at
+ the end of the buffer for a read - to read the full SZ_COMMAND chars,
+ an extra line of space is needed (or SZ_COMMAND should be redefined
+ to be an integral multiple of SZ_LINE, but that is getting pretty
+ tricky for something that just defines an arbitrary truncation point
+ anyhow). (2/27)
+
+sys/etc/main.x
+ 1. Modified the error message "IRAF Main: Unknown task name" to include
+ the name of the unknown task.
+ 2. Increased the size of the input buffer used in the main to 2048,
+ to ensure that command truncation will not occur. (2/27)
+
+ I tested the system with a 980 char environment variable defined in
+ extern.pkg. With the above changes, most importantly the change to
+ the main, everthing works fine. Truncation will occur somewhere
+ between 960-1024 chars with SZ_COMMAND set to 1024 (the 960 is the
+ nearest multiple of SZ_LINE). It was necessary to increase the
+ size of the input command buffer used in the IRAF main to avoid
+ command truncation, which causes loss of synchronization on the
+ input command stream and a nasty "Unknown task name" error from
+ the main (if this occurs during process startup, e.g. during
+ environment initialization, the process is fried, and if the process
+ is x_system.e you can't even login to the CL). (2/27)
+
+sys/fmtio/fpradv.x
+ Escape sequences (\n etc.) embedded in the format string were not
+ being processed correctly. The sequences were being converted into
+ escape characters but then the original character (\) was being
+ output. (2/27)
+
+unix/os/zzstrt.c
+ The code which maps the shared image into memory during process
+ startup could fail on the sparcstation with a segmentation violation
+ due to an unmapped page between the data and bss segments. The
+ problem was that for the Sun-3 and Sun-4, a.out aligns segment
+ boundaries to 8192 bytes (defined as PAGSIZ and SEGSIZ in a.out.h).
+ The hardware page size on the Sun-3 and Sun-4 is 8192 bytes, but on
+ the sparcstation it is 4096!. The zzstrt code was using PAGSIZ to
+ determine where the first page of the bss segment begins; on the
+ sparcstation this could lead to the computation of the first page
+ of the bss segment being off by one, with the unmapped page causing
+ a segmentation violation when the bss segment is zeroed after the
+ mapping operation. The fix was to use the hardware page size (given
+ getpagesize()) to align the first page of the bss segment. (2/28)
+
+unix/hlib/mkfloat.csh
+ Changed the compress command to "compress -f" to ensure that any
+ existing compressed file gets clobbered. (2/28)
+
+sys/imio/iki/stf/stfrfits.x
+ The STF header file cache code had a bug that would cause it to
+ continually reuse the same cache slot, even though multiple slots
+ were available. In the case of an operation which involved repeated
+ accesses to two STF files (e.g., copying all the elements in a
+ group file) each header file would be alternately loaded into the
+ cache for every group element, defeating the cache entirely. (2/28)
+
+mkpkg
+unix/mkpkg.sh
+unix/setarch.sh +
+ A "mkpkg <arch>" at the iraf root for a UNIX/IRAF system with multiple
+ architecture support will now set the AS and BIN links in iraf/unix
+ to the appropriate values for the new core system architecture. (3/1)
+
+sys/mwcs/mwsaveim.x
+sys/mwcs/iwewcs.x
+ When a WCS is saved in a FITS format image header, MWCS must combine
+ the Wterm and Lterm to produce the FITS representation CRPIX-CRVAL-CD,
+ since FITS specifies what is, in MWCS terminology, the transform from
+ logical to world coordinates, whereas in MWCS the Lterm and Wterm are
+ independent and the Wterm specifies only the physical to world
+ transformation. Full system testing revealed that the linear algebra
+ used to compute the FITS representation was incorrect. The forward
+ and inverse transforms were consistent, hence the saved MWCS could be
+ reconstructed, but the forward transform was wrong and the values of
+ the FITS CRPIX and CD were being computed incorrectly if the Lterm
+ was not the identity transformation. (3/1)
+
+sys/mwcs/mwsaveim.x
+ MWCS will now save or update the values of CDELT1 and CDELT2 in the
+ image header. This is in addition to the CD matrix values, which
+ are always output. The CDELTn are output only if 1) the image
+ dimension is 2 or less, and 2) in the case of a two dimensional image,
+ the CD matrix is diagonal. Hence CDELT1 is always output for a
+ one dimensional image, and for a two dimensional image, the CDELTn
+ are not output is the image has been rotated (this includes transpose),
+ or if the CD matrix contains off diagonal terms for any other reason,
+ e.g., skew. It would not be difficult to output CROTA2 in addition
+ to the CDELT for a two dimensional image, but I am going to try to
+ leave this out to discourage the use of CROTA2, which many programs
+ which use CDELTn are probably not equipped to deal with in any case.
+ (3/3)
+
+sys/imio/iki/stf/stfwgpb.x
+sys/imio/iki/stf/stfcopyf.x
+ 1. Fixed a bug in the new stfcopyf.x code introduced in the 2/27
+ revision. The GPB cards were not being loaded into the reserved
+ keyword table, causing filtering of GPB cards to fail.
+ 2. In stfwgpb.x, I commented out the warning messages for "image
+ header parameter not found" when updating type real or double GPB
+ parameters. At least at present, MWCS omits WCS parameters that
+ have zero values from the header, to avoid large numbers of zero
+ valued cards for things like identity matrices in which zero elements
+ are very common. Hence parameters like CRVAL, CDi_j, may be
+ omitted from the header even though these are defined GPB parameters.
+ The interface will merely assume a zero value with no warning message
+ if such a card is not found (formerly, it would assume a zero value
+ and output a warning message). (3/3)
+
+sys/imio/iki/stf/stfopen.x
+ When opening the first group of a new group formatted image, opened
+ NEW_COPY, the GPB cards of the inherited image header were being
+ extracted with stf_copyfits() using the GPB parameter list in the
+ STF descriptor of the *new* image, before the new STF descriptor was
+ initialized by stf_rdheader(). The fix was to use the STF descriptor
+ of the old image to extract the GPB cards of the old image from the
+ inherited user area. (3/5)
+
+sys/imio/iki/stf/stfiwcs.x +
+sys/imio/iki/stf/stfopen.x
+sys/imio/iki/stf/mkpkg
+sys/imio/iki/stf/stfrgpb.x
+ The old version of the STF image kernel had some code stfwcs.x which
+ was used to propagate WCS information to a new image, applying the
+ section transformation if necessary. This was removed in the new
+ version of STF since IMIO and MWCS now perform these functions.
+ When this was done some code was added to stfrgpb.x to set up the
+ default unitary pixel WCS reading a zeroed GPB when preparing the
+ header of a NEW_COPY image. This would work in the case of, e.g.,
+ copying dev$pix into a new element of a group format image, avoiding
+ having the new image end up with a zeroed WCS, which is invalid.
+ This scheme was incorrect, however, because it would edit the WCS
+ *after* inheriting the FITS cards from the old image in a NEW_COPY
+ operation. If the old image had a valid WCS it would be modified,
+ which is incorrect. Furthermore, there were cases where the WCS
+ editing could fail with an "image header parameter not found" error
+ when trying to change the values of nonexistent WCS parameters.
+
+ The fix was to rip the WCS editing code out of stfrgpb.x. A new
+ routine stf_initwcs() (stfiwcs.x) has been added. This is called
+ in stfopen.x when a NEW_COPY image is created, after the new header
+ has been constructed, to check for the case of an uninitialized WCS
+ and set up the default unitary pixel WCS in that case. The WCS is
+ modified only if all elements of the CD matrix are zero, indicating
+ an unitialized WCS. (3/6)
+
+unix/boot/bootlib/envinit.c
+unix/boot/bootlib/osgetenv.c
+unix/boot/mkpkg/tok.c
+ Changed some SZ_LINE buffers to SZ_COMMAND buffers. (3/6)
+
+unix/boot/bootlib/ossysfile.c
+ Made a minor modification to ensure that filenames extracted from
+ the "pkglibs" file list do not contain any whitespace. (3/6)
+
+unix/boot/bootlib/envinit.c
+ The HSI layered package environment facility defines an environment
+ variable "pkglibs" which is the list of libraries (directories) to
+ be searched (in addition to the system libraries and IRAFULIB) to
+ satisfy a -llib or <file.h> file reference in mkpkg or xc. pkglibs
+ is normally defined in the lib/zzsetenv.def of each layered package,
+ which is loaded at runtime when a HSI task is called with the -p <pkg>
+ switch. This works fine so long as only a single layered package
+ environment is loaded. When multiple package environments are loaded
+ however, each package redefines pkglibs with the result that the
+ libraries of the packages already loaded will not be searched.
+
+ To avoid this, loadpkgenv() (which is what is called to process a
+ -p <pkg> switch) was modified to treat "pkglibs" specially,
+ concatenating new values onto a cumulative file list, rather than
+ redefining the "pkglibs" variable each time. This is a bit
+ questionable since this is inconsistent behavior for an environment
+ variable, but "pkglibs" is an integral part of the load-package-
+ enviroment facility and the special behavior occurs only when a
+ package environment is loaded.
+
+ A note on the semantics of pkglibs and of environment varibles in
+ the HSI in general. In the HSI tasks, an environment variable
+ defined at the host level (or in the system wide file zzsetenv.def
+ in hlib) will override a variable defined in the package environment.
+ Hence for example, the logical directory of a subpackage of a
+ layered package can be redefined during development of a private
+ version of the package. In the case of "pkglibs", a host or system
+ wide definition of pkglibs is used only as the initial list of
+ package libraries to be searched; additional libraries defined by
+ -p pkg versions of pkglibs are concatenated to this list, with the
+ user defined libraries being searched first (IRAFULIB will override
+ all of this by being searched first, if defined). (3/6)
+
+-----------------------
+Updated STScI to this point. (3/7)
+
+unix/boot/bootlib/envinit.c
+ Replaced the ENVPUTS by an ENVRESET, to be consistent with the
+ other routines which modify the environment list. Also, because the
+ HSI never deletes definitions from the environment list there is no
+ need to use ENVPUTS. (3/8)
+
+sys/gio/imdkern/imdclose.x
+ Added a call to "call ttycdes (g_tty)" to close the graphcap
+ descriptor at kernel close time. Probably this is not being done
+ in the other kernels either (altough it probably doesn't matter,
+ since about the only time a kernel is closed is when the process
+ shuts down). (3/8)
+
+sys/gio/imdkern/imdclws.x
+ Modified the closews function for the IMD kernel to call imd_close,
+ to fully close the kernel down. This causes any buffered graphics
+ to be flushed to the output device, and unmaps the frame buffer.
+ For the IMD kernel there is no reason to keep the frame open waiting
+ for append mode graphics, as the graphics is always drawn into the
+ frame buffer in "append" (overlay) mode anyhow, and we want graphics
+ to appear immediately without having to do a gflush. (3/8)
+
+dev/graphcap
+ Added the alias "imdkern" for device entry "imd". (3/8)
+
+unix/sun/imtool.c
+ The "sample" type (nonblocking) image cursor reads were not working,
+ in the sense that the coordinate value returned was always the same.
+ This was due to the routine returning the coordinates of the last
+ blocking cursor read, rather than the current cursor position.
+ Modified to return the coordinates of the most recent event (e.g.,
+ mouse button press) seen in the image window. In SunView the locator
+ position is available to the application only when an event occurs.
+ (3/8)
+
+sys/gio/imdkern/imd.com
+sys/gio/imdkern/imdclear.x
+sys/gio/imdkern/imdopenws.x
+ idk_open() was being called with the wrong argument list in this
+ routine. The old calling sequence (device,tty) was being used,
+ instead of the IDK calling sequence (frame,color,tty). (3/8)
+
+dev/graphcap
+sys/gio/imdkern/idk.x
+ The IMD kernel was modified to draw into the *current display frame*
+ if no output display frame is specified. This is the case, for
+ example, when the IMD kernel is used as a connected subkernel.
+
+ For example,
+
+ prow dev$pix 101 dev=imdg
+
+ will plot line 101 of dev$pix in green on the current display frame.
+ This feature makes it possible to control both the graphics color
+ and the frame in which it is drawn when plotting directly to the
+ image display from a graphics task. (Note that it is also possible
+ to :.snap graphics output to the display device).
+
+ The frame in which graphics is to be drawn is determined as follows.
+ If the frame specified by the IMDKERN parameter "frame" is greater
+ than zero then that frame is used, else if the fname number given by
+ the parameter "FN" in the graphcap is greater than zero that that
+ frame is used, else the current display frame is used. Hence, FN
+ must be absent or set to <= 0 in the graphcap for automatic output
+ to the current display frame to work. (3/8)
+
+pkg/plot/doc/contour.hlp
+ Modified the help page for CONTOUR to note that contours may not
+ appear to be centered on objects if a large blocking factor is used.
+ (3/8)
+
+pkg/plot/doc/imdkern.hlp +
+pkg/plot/imdkern.par
+ When I went to edit the IMDKERN help page to document the new
+ semantics regarding the output frame, I discovered that there wasn't
+ any help page! I added a help page for IMDKERN, and modified the
+ default parameters in plot/imdkern.par. (3/8)
+
+sys/gio/imdkern/imdcancel.x
+sys/gio/imdkern/imd.com
+ These files still contained some vestiges of the SGIKERN origins of
+ IMDKERN. The IMD common was still called /sgicom/ (harmless so long
+ as the kernels are in separate processes, but incorrect) and the
+ imdcancel.x procedure header comment was still calling the procedure
+ SGI_CANCEL. (3/9)
+
+unix/hlib/mkfloat.csh
+ This routine is supposed to print out the names of any "dreg .e files
+ left lying about in the source directories" if it finds any. An
+ otherwise harmless problem with the use of "tee" in the script was
+ preventing these filenames from being echoed. (3/9)
+
+sys/imio/iki/stf/stfrfits.x
+ The STF header file cache logic could fail to invalidate the cache
+ if the header was entered in the cache, modified on disk, and then
+ reread all within one second, the time resolution of the timer used
+ for the cache. To avoid this it was necessary to force a reload if
+ the file modify time is equal to the cache time. This means that
+ if a file is created and then immediately loaded into the cache,
+ the cached entry will not be valid even if the image has not been
+ modified since it was created. The next reload (provided it occurs
+ a second or more later) will however result in a valid cache entry.
+ (3/9)
+
+sys/imio/iki/stf/stf.h
+sys/imio/iki/stf/stfopen.x
+sys/imio/iki/stf/stfupdhdr.x
+ The semantics of the STF kernel regarding updates to the FITS header
+ (global header for all images in the group) was modified to clarify
+ the distinction between the global header, which pertains to all images
+ in the group, and the GPB, which by definition contains any header
+ parameters which can vary for each element of the group.
+
+ The new strategy for FITS header updates is to always update, unless
+ we are explicitly updating an existing group of a multigroup image.
+ Hence, the FITS header is always updated for an STF image with only
+ one group, or when writing the first group of a new multigroup file.
+ The FITS header of an existing STF multigroup image can still be
+ updated, but only if the image is not opened to any particular group,
+ e.g., as "pix" rather than "pix[i]", I > 0 (i.e., "pix" and "pix[1]"
+ are not equivalent when it comes to global header updates!). An image
+ opened NEW_[IMAGE|COPY] or READ_WRITE to access "pix[i]" will update
+ only the GPB header.
+
+ It is suggested that to avoid confusion, multigroup STF images be
+ regarded as read-only once created. If the multigroup image is
+ created with IRAF the FITS header should be fully defined when the
+ first group is written, opening the image [1/NGROUP]; subsequent
+ writes to subimages [i] will write only the GPB of the subimage.
+ During interactive reductions the user should create only single
+ group images. These should be functionally compatible with OIF
+ images in all respects including header updates (except that the
+ contents of the header will not in general be the same, e.g., OIF
+ does not define a default PIXEL WCS). (3/9)
+
+----------------
+Updated DECstation/IRAF. (3/10)
+
+unix/boot/bootlib/osputenv.c
+ 1. Replaced a 1024 by SZ_COMMAND.
+ 2. Merged in #ifdef ultrix stuff for the DECstation. (3/10)
+
+sys/osb/ieee.gx
+ The BSWAP routines were being called improperly. (3/10)
+
+pkg/system/help/manout.x
+ Increased the maximum number of lines per page from 128 or so so
+ 1024. (3/10)
+
+sys/etc/pagefiles.x
+ 1. When paging a text file and 'G' was typed to go to the end of the
+ file, the pager would actually go one line too far, causing one line
+ less than a full screen to be displayed.
+ 2. The pager was revised so that the 'N' and 'P' keys now have a
+ dual meaning. When paging a list of files they are used to move to
+ the next or previous file in the list, as before. When paging a
+ single large file, they are used to move to the next or previous
+ formfeed delimited page. The character, line, and page number
+ accounting was also revised and extensively tested to ensure that
+ seeks, searches, next/previous screen/page, etc., get to the right
+ place and report the right line number. (3/11)
+
+pkg/system/phelp.cl +
+pkg/system/doc/phelp.hlp +
+pkg/system/system.cl
+pkg/system/system.hd
+pkg/system/system.men
+ Added a new task PHELP to the system package. PHELP is a CL script
+ front end to HELP, which runs HELP with the output redirected to a
+ tmp file, then pages the tmp file with PAGE. The simple usage is
+ "phelp task" but more complex usages such as "phelp proto.*" are
+ also possible (in the latter case the 'N' and 'P' keys are used
+ to view successive formfeed delimited help pages in the tmp file).
+
+ All this seems to work fine, except for an as yet unresolved bug
+ in HELP which is causing some packages to appear twice. For example,
+ PLOT appears twice in the help database for some reason, and typing
+ "phelp plot.*" works, but one gets all the help pages and then all
+ of them all over again. Harmless, but annoying. (3/11)
+
+sys/etc/pagefiles.x
+ Added an upscroll capability to the file pager. This seems to work,
+ but the pagefiles code is a mess and there may still be special cases
+ or combinations of commands where things don't work quite as expected.
+ This code has grown far beyond its original design and should be
+ junked and reengineered eventually. (3/12)
+
+pkg/lists/rimcursor.x
+ 1. Modified the task so that if only the first 2 or 3 fields of the
+ cursor value are input (e.g., x and y) only those fields are output.
+ 2. If the reference image open failed, a non-NULL pointer ct could
+ be returned. (3/13)
+
+dev/graphcap
+dev/cachet.dat
+ The default "xterm" entry in graphcap now disables the "am" (auto
+ margin) capability. Evidently xterm will indeed autowrap at the
+ right margin, but it is clever and eats up any cr/lf/tab characters
+ which follow the autowrap. If the following line begins with one
+ or more tabs, these are eaten by xterm and the line will not
+ indented properly. If one dumps the same file to xterm with the
+ unix "cat", things work as expected as cat ignores details like
+ automargin and dumps out the newline at the end of the line. Hence,
+ although the terminal does implement something like AM, it appears
+ that this can be safely ignored and a newline sequence output after
+ writing a character in the right margin. It is possible that the
+ iraf terminal output code is not interpreting AM properly, but for
+ the present I am going to disable the AM in the iraf version of the
+ termcap entry (the unix version enables AM). (3/13)
+
+~sites/logmail.c
+ The LOGMAIL support utility (part of the iraf/site mail) was modified
+ to strip the "Received:" lines and continuation lines out of logged
+ site mail. (3/13)
+
+---------------------
+Updated stsci to this point. (Tried to update cfa but couldn't get in).
+Updated ffpa binaries on tucana. (3/13)
+
+unix/sun/imtool.c
+ The IIS datastream reserves 9 bits (resolution 512) for the X and Y
+ addresses in an image memory write or read. The IMTOOL code was using
+ a 10 bit mask (01777 = resolution 1024) of the X/Y values for reads,
+ and a 12 bit mask (07777 = 4096) for writes. Hence, normal write
+ only image display with IMTOOL (or SAOIMAGE) would work fine for
+ images up to 4096 square, but read back would fail for images larger
+ than 1024 square. It turns out that the IIS datastream protocol
+ (which IMTOOL/SAOIMAGE emulate) can actually support X and Y bitfields
+ of up to 14 bits, so there should be no problem increasing the size
+ of these bitmasks. I increased the size of the X and Y address bitmask
+ used in IMTOOL to 077777 (max 32768 resolution) for both reads and
+ writes. SAOIMAGE should be similarly modified. The DISPLAY code
+ does not limit the size of X and Y addresses so there should be no
+ problem there. (3/14)
+
+-----------------
+Updated decstation (cephus).
+Installed the 13Mar beta system for CFA. (3/14)
+
+-----------------
+Begin VMS/IRAF update to V2.9. (3/17)
+Rebuilt system from tucana sources and VMS/IRAF HSI.
+Merged in V2.9 HSI revisions.
+Begin bootstrap and sysgen.
+
+vms/os/zopcpr.c
+ The struct "acc$record", defined in <accdef.h>, is used for the
+ mailbox termination message at process exit. For VMS5, the name
+ of this structure is evidently changed to struct accdef. Changed
+ the source accordingly (and we are no longer source compatible with
+ VMS4). (3/17)
+
+generic/mkpkg.com
+mkpkg/mkdebug.com
+mkpkg/mkpkg.com
+mkpkg/mkpkg
+rmbin/mkdebug.com
+rmbin/mkpkg.com
+rmfiles/mkpkg.com
+rtar/mkpkg.com
+spp/xc.com
+spp/mkpkg.com
+spp/rpp/mkpkg.com
+spp/xpp/mkpkg.com
+wtar/mkpkg.com
+ In the first attempt to link the HSI utilities under VMS5, all the
+ links failed with the message
+
+ undefined symbol LIB$FIND_IMAGE_SYMBOL...
+
+ After looking around at the system libraries for a bit, purely on
+ a guess, I changed the line
+
+ $ define/nolog LNK$LIBRARY sys$library:vaxcrtl.olb
+
+ to
+
+ $ define/nolog LNK$LIBRARY sys$library:vaxcrtl.olb
+ $ define/nolog LNK$LIBRARY_1 sys$library:imagelib.olb
+
+ in all the mkpkg.com and mkpkg files in the HSI. Evidently a C
+ runtime library routine now references the system run time library
+ LIBRTL in VMS5, so this (in the system shared image) has to be
+ searched now if VAXCRTL is used. (3/17)
+
+unix/boot/spp/xpp/decl.c
+ The VMS Fortran compiler barfed on the use of ARB for array argument
+ declarations, complaining about the array dimension exceeding
+ addressable memory. I expected problems with this construct anyway,
+ so it was necessary to change the SPP preprocessor to avoid the
+ problem. Several other improvements were made in the process.
+
+ 1. ARB in array argument declations is now replaced by the Fortran *
+ symbol, e.g. "int foo[ARB]" becomes "integer foo[*]".
+ 2. +1 is no longer added to char arrays that are procedure arguments.
+ This is now only done for local arrays. (The +1 is added by the
+ preprocessor to allow space for the EOS in an SPP string).
+ 3. Dimensioning a local array ARB is now considered an error and will
+ result in a compile time error message from the preprocessor. (3/18)
+
+sys/mwcs/wfinit.x
+ The VMS Fortran compiler didn't like the duplicate definition of
+ wf_smp_tran(), originally used since the same function appears twice
+ in the function driver. (3/18)
+
+pkg/dataio/fits/fits_rpixels.x
+pkg/dataio/fits/fits_wpixels.x
+noao/mtlocal/camera/cam_rpixels.x
+noao/mtlocal/pds/pds_rpixels.x
+noao/mtlocal/r2df/r2dfrpix.x
+noao/twodspec/multispec/msextract.x
+noao/twodspec/multispec/fitgauss5.x
+ These files contained routines with ENTRY points wherein an array
+ argument was dimensioned ARB. This fooled the SPP compiler, which
+ now checks for local arrays dimensioned ARB. ENTRY points should
+ probably be considered illegal in SPP code (certainly they are
+ discouraged, as they are a common source of compiler problems).
+ As a workaround for the present I changed the code to dimension
+ the entry point arrays [1] rather than [ARB]. (3/18)
+
+noao/astutil/t_setairmass.x
+ This file contained several occurrences of the construct mod(dble,24.).
+ VMS Fortran insists that the arguments to intrinsic functions all be
+ the same type, and even a double and a real as in this case is not
+ permitted. Changed the 24. to 24.D0 and it compiled ok. (3/18)
+
+ Linking this process on VMS took so long that I ran a timing test
+ comparing the VMS 8600 to the Sun-3 180 (tucana). Linking -z on
+ both systems tooks 5 minutes on the 8600 vs 1 minute on the Sun-3.
+
+vms/uis/*
+ Installed the latest version of the UIS display program for VMS
+ (the VAXstation), contributed by Nigel Sharp. (3/18)
+
+[vms shared libraries note]
+ The following error message appears on our system when some of the
+ iraf processes are linked. So are as I can tell it is harmless,
+ and probably not worth trying to track down.
+
+ %LINK-I-DATMISMCH, creation date of 14-JUN-1989 11:48 in shareable
+ image SYS$COMMON:[SYSLIB]DISMNTSHR.EXE;2
+ differs from date of 10-MAY-1989 17:37 in shareable image library
+ SYS$COMMON:[SYSLIB]IMAGELIB.OLB;1
+
+vms/gdev/mkpkg
+vms/gdev/zfiogd.x
+vms/gdev/zfiovi.c +
+ Installed a new version of ZFIOGD (graphics or image device i/o driver)
+ for VMS. The IMTOOL device code in this VMS version uses VMS mailboxes
+ (rather than fifo pipes as in unix) to talk to the display server
+ process. This new driver was written by Jay Travisano of STScI.
+ It is used to interface SAOIMAGE to VMS/IRAF, but it could be used for
+ any other display server as well (e.g., UISDISPLAY could use this
+ interface too if suitably modified). At this point, the new driver
+ has only been installed. Checkout will have to wait until we are
+ ready for full system testing with a display server. (3/18)
+
+------------------------
+V2.9BETA shapshot of DECstation/IRAF and VMS/IRAF sent to STScI. (3/19)
+Update of Sun386i/IRAF begun. (3/19)
+
+sys/etc/pagefiles.x
+ 1. Fixed a bug in the pager which would allow one to upscroll past the
+ beginning of file.
+ 2. Typing space at the end of a file causes the pager to move to the
+ next file in a file list, i.e., the space is turned into an 'N'.
+ This could cause problems when paging a single file, in which case the
+ 'N' is interpreted as go to next page. On VMS this was leading to a
+ seek error on the file being paged (not clear why that was but I did
+ not have time to pursue it further). (3/19)
+
+pkg/cl/builtin.c
+ A command such as "flpr beep" would cause a segmentation violation
+ in the CL. This command is pointless since BEEP is a builtin task
+ (no process in the cache) but the CL should complain a bit more
+ gracefully. Modified the FLPRCACHE builtin to check for script,
+ foreign, builtin, and pset tasks and abort with "task `foo' not in
+ cache" if flprcache is called with the name of such a task. (3/19)
+
+sys/etc/pagefiles.x
+ The string length of an output line of text was being used to compute
+ the number of terminal lines required to display a long line of output
+ text. This computation could fail when the line being displayed
+ contained a large number of control characters, e.g., tabs, or font
+ control or enhancement codes. Not a serious problem, but the number
+ of lines output to fill a screen could be wrong. (3/20)
+
+pkg/system/news.cl
+unix/hlib/newsfile -
+doc/newsfile +
+doc/news.old.hlp +
+doc/news.v28.hlp +
+ The NEWS facility was reworked to provide more up to date information
+ about the system. The NEWS program merely pages the system news file,
+ now moved to doc$newsfile. At present all this consists of is a
+ concatenated sequence of revisions summaries. Formfeeds separate
+ successive revisons summaries. The revisions for the current release
+ of the system are paged first, with the 'N' key providing access to
+ the old news. (3/20)
+
+pkg/system/help/lroff/texout.x
+ Another ancient file that uses ENTRY points, had to change a "local"
+ [ARB] to [1]. (3/20)
+
+pkg/images/iminfo/t_imstat.x
+ This program contained a statement [format = clgetb("format")], where
+ "format" is type integer. This fails on VMS because the internal
+ values used for boolean (Fortran logical) are not 0/1 as in UNIX.
+ The construct is always illegal of course, it merely happens to
+ work on UNIX because the internal representation of bool and the
+ SPP YES/NO are identical. (3/20)
+
+sys/fio/ffilsz.x
+ The file size code (e.g., fstatl(fd,F_FILESIZE)) did not support
+ file types STRING_FILE and SPOOL_FILE at all. A call to the binary
+ file driver was being made even though there was no physical file
+ associated with the file descriptor! The routine ffilsz.x was
+ modified to add support for the memory buffer file types. The new
+ STF image kernel uses fstatl to query the size of the spool file
+ used to store the image header, and the bogus file size being returned
+ could lead to a segmentation violation in some circumstances. (3/20)
+
+sys/fio/fexbuf.x
+ The amount by which a spool file buffer size is incremented if
+ overflow occurs was increased from 1024 to 4096 chars. This is
+ arbitrary, but will be slightly more efficient when writing large
+ spool files. (A call to fseti(fd,F_BUFSIZE,n)) can be made before
+ writing to the spool file if the amount of space needed is known
+ in advance). (3/20)
+
+unix/os/zfacss.c
+ Modified ZFACSS, used to test whether a file is binary or text,
+ to permit a narrow range of control codes in text files. This is
+ necessary in order to allow iraf text files containing standout mode
+ control characters or form feeds to be considered part of the source
+ distribution. (3/20)
+
+---------------------
+All local beta test systems (f68881, sparc, 386i, decstation, vax/vms)
+updated to this point. (3/20)
+
+unix/hlib/zzsetenv.def
+ Added an entry for "nomwcs". Currently, this is commented out on
+ the irafx systems, but defined (MWCS is disabled) for the user
+ systems. (3/21)
+
+---------------------
+V2.9BETA installed on NOAO/Tucson Sun network (orion, gemini). (3/21)
+
+dev/hosts
+ Added several new "scientist workstation" entries from gemini, on
+ all local nodes. (3/22/90 SRo)
+
+dev/devices.hlp
+ Updated to include the three tape drives on gemini. (3/22/90 SRo)
+
+sys/imio/iki/stf/stfopen.x
+ This routine contained an illegal call to ERRACT at the end of the
+ procedure, in the error exit code. The call was illegal because
+ ERRACT can only be called from within an error handler, to take an
+ action based on the error currently being processed. The correct
+ thing to do in the case of stfopen was merely to return an error
+ status, since this procedure uses a status output argument. (3/21)
+
+unix/os/zdojmp.c
+ This routine would pass a zero status on to the ZSVJMP call at the
+ other end of the jump buffer. This is incorrect, since ZSVJMP/ZDOJMP
+ are modeled after the unix setjmp/longjmp, and setjmp must not return
+ a zero status when the return is via a longjmp. This bug could lead
+ to an error condition going undetected when error recovery resulted
+ in a jump back into the iraf main. Calling ZDOJMP with a zero error
+ code is very rare, i.e., it does not happen in the normal execution
+ of the system, but it was occuring as a result of the STFOPEN bug
+ above. (3/21)
+
+doc/ports/notes.mips
+ Replaced by a later version of the file containing a few notes on
+ the second update (hereafter, decstation revisions will be documented
+ in the master systems notes file). (3/21)
+
+sys/imio/iki/stf/stfopen.x
+ When an STF image is opened new-copy, the old STF header is copied
+ to the new image in stfopen.x. This was being done by copying the
+ maximum size descriptor LEN_STFDES, but in the new V2.9 STF kernel
+ the STF descriptor is reallocated once an image is opened to save
+ space. Hence the actual descriptor length can be less than LEN_STFDES,
+ and the amovi operation used to copy the descriptor could result
+ in a segmentation violation if the old descriptor buffer happened
+ to be located near the end of dynamic memory. (3/21)
+
+----------------
+DECstation updated. (3/21)
+
+unix/boot/rtar/rtar.c
+ Made the same change to the file type heuristic as made in the
+ ZFACSS revision on 3/20 (certain formatting control codes are now
+ considered legal in text files). (3/24)
+
+----------------
+VMS/IRAF updated. (3/24)
+
+unix/hlib/motd
+ Revised the standard motd to include mentioned of the revamped NEWS
+ facility. (3/24)
+
+pkg/system/doc/news.hlp
+ Updated the help page for NEWS. (3/24)
+
+unix/boot/mkpkg/char.c
+unix/boot/mkpkg/mkpkg.hlp
+ The syntax "$(@file)" can now be used to substitute the contents of
+ a text file during mkpkg file interpretation. (The old macro
+ replacement forms are "$(symbol)" to substitute the value of a
+ symbol or environment variable, and "$(?symbol)" to interactively
+ query for the value of a symbol). (3/24)
+
+unix/shlib/mkpkg
+unix/os/zzstrt.c
+ Modified the the shared library facility to support multiple shared
+ image versions. The shared image, instead of being named "S.e" is
+ now named "Si.e", where "i" is the major version number. For example
+ the current shared library version for most V2.9 architectures is 4,
+ and the shared image is named S4.e. The name "S.e" is reserved for
+ the V2.8 shared image (since that is what V2.8 executables will be
+ looking for, lacking version number support). (3/24)
+
+--------------------
+tucana{f68881,ffpa,sparc}, orion, pegasus updated. (3/25)
+
+noao/lib/strip.iraf
+ 1. Added ".fits" to the list of files to be retained in the strip
+ operation.
+ 2. Changed the OBJS.arc in the special files area to OBJS.arc.Z,
+ changed a .68881 to .f68881, added sparc and i386 entries. (3/26)
+
+--------------------
+V2.9BETA updated at STScI. (3/26)
+
+sys/imio/iki/oif/oifmkpfn.x
+ FATAL was being called in this file with a missing argument, causing
+ a segmentation violation in the unlikely event that the call was ever
+ made (due to failure to generate a unique pixel file name). Replaced
+ by a call to IMERR. I cannot recall why the call to FATAL was being
+ made, unless it was because it is supposed to be impossible under
+ normal conditions to fail to generate a unique file name, indicating
+ some serious problem if this occurs. (3/27)
+
+--------------------
+gemini incrementally updated from orion, including layered pkgs. (3/28 SRo)
+
+sys/imio/iki/stf/stfrfits.x
+ The STF caching code had a nasty hidden assumption which could lead
+ to repeated cache reloads in some circumstances. When a header file
+ is loaded into the cache, the clock time on the local cpu is stored
+ in the cache slot to mark the time of the load. When the cache is
+ subsequently searched for a cached header file, the file modify date
+ of the header file is compared to the time when the cache slot was
+ loaded, and the header is reloaded if the modify date is greater than
+ or equal to the cache load time (the equal-to is needed due to the
+ limited resolution of the clock).
+
+ The hidden assumption is that the clock used for the file modify time
+ is the same as that used to mark the time when the cache slot is
+ loaded. If the file being accessed is on a different machine with a
+ different clock (due to a NFS access), the file modify clock and the
+ local clock can easily differ by several minutes! This could lead
+ to two problems: 1) if the remote clock was ahead, the file modify
+ time could be greater than the local ttime, causing the cache to be
+ continually reloaded (due to a repeat loop in the code) until the
+ time difference was made up, or 2) if the remote clock was behind,
+ file modifications occuring during the interval defined by the
+ difference between the two clocks could go undetected.
+
+ The solution adopted was to reload the file into the cache if the
+ modify time *changes*, rather than comparing it to some other time
+ which could be on a different time base. To avoid the problem of
+ file modifications going undetected which occur quicker than the 1
+ second resolution of the clocks, the local timer is used to measure
+ the time since the file was loaded into the cache. If the cache slot
+ is less than 1-2 seconds old, the file is reloaded into the cache
+ (the 2 seconds is necessary to ensure that 1 full second has passed).
+ If the file is reloaded within the 1-2 second interval the timer is
+ not restarted, hence so long as the file modify time does not change,
+ the cache slot will be considered valid within 1-2 seconds after the
+ initial load. (Amazing how tricky these things can be). (3/29)
+
+---------------------
+Updated tucana{f68881,ffpa,sparc}, orion{f68881,ffpa,sparc,i386},
+pegasus{i386}, draco/irafx. (3/30-31).
+
+---------------------
+IRAF V2.9 RELEASE FROZEN - except for installation of a few things completed
+but not yet checked out and installed (IEEE support for VMS, new version of
+PLOT, online release notes, etc). (4/2)
+
+unix/as.vax/ieeer.s +
+unix/as.vax/ieeed.s +
+vms/as/ieeer.s +
+vms/as/ieeed.s +
+vms/hlib/mkpkg.sf
+ Installed VAX versions of IEEE/native floating point conversion
+ primitives. (4/2)
+
+sys/osb/ieee.gx
+ The IEEE conversions package was modified to add the two routines
+
+ iee[sg]nan[rd] (NaN)
+ e.g.
+ call ieesnanr (INDEFR)
+
+ to set NaN to INDEFR (the default is zero). NaN is the native
+ floating point value to which IEEE NaN, +/-Inf, exponent overflow,
+ and so on are mapped when converting IEEE values to native floating
+ point values.
+
+ Since the "portable" routines in osb$ieee.gx have no way of detecting
+ the IEEE not-a-number values or of dealing with overflow, the default
+ iee[sg]nan[rd] routines do nothing even though they are included in
+ the interface. For these routines to do anything, and for NaNs to
+ be trapped during IEEE input, machine dependent versions of the files
+ osb$ieee[rd].x must be provided in host$as, with an entry on the
+ special file list to cause the system to use the host dependent
+ versions of the files.
+
+ While the new routines provide a simple way of dealing with NaNs which
+ is consistent with our current applications, this is not the end of the
+ story. In the future we will probably need to add a function-callback
+ capability, which will allow the application to dynamically post a
+ function to be called by the host level conversion primitives when a
+ NaN is detected or generated. Use of a callback will allow efficient
+ generation of a bad pixel list as well as replacement of NaN values
+ by a constant or data dependent value. (4/2)
+
+pkg/cl/prcache.c
+ The process cache code checks the file date of a cached process
+ whenever a task is run to see if the process has been relinked and
+ needs to be restarted (often the case when doing software development
+ from within the iraf environment). It occurred to me that this
+ probably suffers from the same assumption as did the STF cache code
+ (3/29), i.e., the test can fail if the process resides on a remote
+ system being accessed via NFS, and the clocks of the local and remote
+ systems differ. Checking the code this was indeed the case, so I
+ modified the cache test code to mark the cache slot with the file
+ modify time rather than with the local cpu time when the process was
+ cached. (4/4)
+
+unix/hlib/login.cl
+ Changed the template login.cl to define "grep" rather than "bgrep"
+ in the default user package. (4/4)
+
+pkg/plot/doc/pvector.hlp
+pkg/plot/getdata.x
+pkg/plot/mkpkg
+pkg/plot/pvector.par
+pkg/plot/t_contour.x
+pkg/plot/t_pcol.x
+pkg/plot/t_pcols.x
+pkg/plot/t_prow.x
+pkg/plot/t_prows.x
+pkg/plot/t_pvector.x
+pkg/plot/t_surface.x
+ 1. The tasks PROW,PROWS,PCOL,PCOLS were largely rewritten. Outwardly
+ they will appear much the same as before, but they will now work with
+ group (STF) data, QPOE filters, image sections, and in general any
+ image specification that uses [].
+ 2. SURFACE and CONTOUR were modified to work with image specifications
+ containing [].
+ 3. PVECTOR now provides an option to output the vector as a text file
+ or image, rather than always making a plot. (4/4)
+
+qpqueryf.x
+qpiolmask.x
+qploadwcs.x
+qpiolwcs.x
+qpsavewcs.x
+zzdebug.x
+ 1. Added a new debug task SETWCS to the QPOE zzdebug.x. The new task
+ was used to test qp_savewcs, which saves a MWCS wcs object in a QPOE
+ file.
+ 2. In qpiolmask.x qp_read was being called with the datatype field
+ TY_OPAQUE. In qp_loadwcs.x and qp_savewcs.x qp_read and qp_write
+ were being called with a datatype field of TY_CHAR. Both of these
+ cases were wrong, as the datatype field is a string in these calls.
+ Changed all calls to use the datatype "opaque", since that is what
+ the encoded PLIO and MWCS objects are.
+ 3. The linear transformation vector in qpiolwcs.x wasn't quite right;
+ the bounding box coordinates were used directly to form the translation
+ vector, but those coordinates are one indexed so I had to subtract
+ one to get the translation.
+ 4. In qpqueryf.x, fixed a typo: the datatype of an opaque parameter
+ was being returned as "oqaque".
+
+ Performed a full system test, using the zzdebug.setwcs task to save
+ a wcs in a test qpoe file, and imheader to load and display the wcs
+ through the higher level code. [Only QPOE could be affected by these
+ changes]. (4/10)
+
+vms/x11/0readme.xterm +
+vms/x11/xterm.e +
+vms/x11/xterm.hlp +
+vms/x11/saoimage.e +
+vms/x11/saoimage.hlp +
+vms/x11/setup.com +
+ Installed a minimal set of executables and help files for the VMS
+ versions of SAOIMAGE and XTERM in vms/iraf. These are very
+ preliminary, the release is incomplete, and there are known bugs,
+ but someone may find the shapshot versions of these tasks useful
+ while a more carefully prepared release is readied. (4/15)
+
+vms/os/queue.c
+vms/os/jbcmsgdef.h
+ Following the upgrade to VMS-5, VMS/IRAF had a bug wherein once a
+ job submitted to a batch queue completed, an abnormal termination
+ message JSB$_NOSUCHENT would be written to the terminal, and a
+ subsequent "jobs" would cause the CL to panic with an access violation.
+ The reason for the access violation is not clear, but the NOSUCHENT
+ termination code is evidently new in VMS-5, and the job queue code
+ in the VMS HSI wasn't prepared for such a status return. Changed
+ the code in queue.c to check for and ignore both the old VMS-4 status
+ return JBC$_NOSUCHJOB and the new VMS-5 code JBC$_NOSUCHENT. The
+ kernel also had a local file jbcmsgdef.h from VMS-4 which did not
+ contain the new VMS-5 codes; it was not clear why the kernel needs
+ a private copy of these definitions, so a dead code comment was
+ placed in the file and the #include in queue.c was changed to use
+ the system version instead. (4/15)
+
+doc/newsfile
+doc/news.v29.hlp +
+doc/v29revs.ms +
+ Installed the revisions summary or release notes for IRAF V2.9. (4/15)
+
+-------------------------
+The V2.9 distribution was made and placed into distribution sometime back.
+The following bugs are being fixed retroactively, with patches for the
+original V2.9 distribution. (5/5)
+
+unix/spp/boot/spp/xpp/decl.c
+ This code was not processing multidimensional char array declarations
+ properly. There were actually three problems: for a multidimensional
+ array passed as an argument, [1] +1 was not being added to the first
+ axis to allow for the EOS, and [2] the axis was not being counted,
+ causing +1 to be added to the *final* axis later in the code.
+ [3] for all multidimensional char arrays the code was not checking to
+ see which axis it was on before adding the +1, so +1 would be added
+ to each axis, instead of only the first axis as it should be. (these
+ bugs were contstrained to only several lines of code, it takes more
+ lines to describe them here!). Note that ONLY multidimensional char
+ arrays were affected by these bugs, and for char arrays of ndim=2,
+ ONLY arrays declared as arguments to procedures. (5/5)
+
+unix/shlib/mkshlib.csh
+unix/shlib/S.ver.f68881
+unix/shlib/S.ver.ffpa
+unix/shlib/S.ver.sparc
+unix/shlib/S.ver.i386
+ Sun release SunOS 4.1 about a week after Sun/IRAF V2.9, built on
+ SunOS 4.0.3, was frozen and prepared for distribution. We subsequently
+ found that V2.9 would not run under SunOS 4.1, failing with a "cannot
+ map shared image" error during process startup. This was traced to
+ an overlap of the region of virtual memory used by the hardware stack
+ and the IRAF shared image; in OS 4.1, Sun has moved the hardware
+ stack to a lower address. The following changes were made to deal
+ with this.
+
+ 1. The base address of the IRAF shared image was changed from
+ 0x0e000000 to 0x0a000000. The base address of the shared image
+ is arbitrary so long as the region of process virtual memory occupied
+ by the shared image does not conflict with anything else, so this
+ change should not affect the functioning of V2.9.
+ 2. The shared image version number was incremented to 5, i.e., the
+ new shared image is S5.e. This was necessary because with a different
+ base address, the new shared image cannot be used with applications
+ linked with the old shared image. (5/5)