System Notes File for IRAF Version 2.6.
Begun 8 July 1987.
-------------------------------------------

doc/notes.v25 +
local/notes.v26 +
	Moved the V2.5 system notes file to the documentation library and
	started a new one (this file).  (7/8)

unix/hlib/motd
pkg/cl/cl.par
	Incremented the IRAF version number to 2.6.  (7/8)

local/bugs.v25 +
unix/hlib/buglog.csh +
unix/hlib/irafuser.csh
unix/hlib/login.cl
	Set up a system bugs file for V2.5, to be used to record bugs in the
	frozen V2.5 system as they are discovered.  Added a new HSI utility
	task (UNIX/IRAF only) called 'buglog', used to log new bugs.  (7/8)

unix/hlib/login.cl
	Added a new foreign task to the user package called 'nbugs'.
	This may be used to page the tail of the system bugsfile, to see
	if any new bugs have been added.  The new utility task is only
	available on UNIX/IRAF and as defined will only work if the
	nonstandard pager 'less' is installed, as it is on all NOAO
	systems.  (7/9)

pkg/bench/bench.hlp
	Added IMLOAD and IMLOADF measurements to the Sun benchmark entries.
	(7/10)

unix/hlib/buglog.csh
	Will now send a copy of each bug as it is logged to the iraf mail,
	as well as appending it to the system bugs file.  This ensures that
	all subscribers to the iraf mail see the bug report promptly.  (7/10)

doc/vmsiraf.ms +
	Added a completely new, more comprehensive VMS/IRAF Installation Guide
	to the docs directory.  (7/20)

GTERM (Sun/IRAF)
	Made a number of obscure, mostly minor tuning enhancements to GTERM;
	these have accumulated over the last couple of months.  Most of these
	are little things that one does not notice if things are working right.

	1. Incremented the version number to V1.1 for the first official
	release of V2.5 SUN/IRAF.
	2. Setup/reset now resets the user settable parameters to their
	command line values, rather than to the builtin defaults.
	3. I discovered that due to an oversight, there was no way to set
	reverse video for the graphics plane on the command line.  Added
	the new switches -[no]rev[erse], e.g., -rev or -norev (the default).

	4. One can now add the sequence [task [args]] to the end of the
	GTERM argument list to directly execute TASK in the window, even if the
	command follows the -G in the command line.  This is different than
	the already provided [-I command], which executes a shell in the
	window and passes it the given command.  A shell process is eliminated,
	and exiting the named task causes the window to quit (e.g., if the
	command is "cl", logging out of the CL terminates the window).
	A disadvantage (or advantage depending upon how you look at it) is
	that since there is no csh, there is no job control in the window.

	5. The F8 and F9 function keys are now recognized when the mouse is
	in either the text or graphics window.  Hence if one types F8 to get
	into graphics mode (perhaps by accident), then closes the graphics
	window, typing F9 in the text window will restore text mode.
	Previously one had to get the graphics frame back in setup mode in
	order to type the F9 to restore text mode.  Also, typing L7 while
	in graphics mode (which makes the graphics plane go away) will now
	automatically restore text mode.  Hence if one types F8 by accident
	while in text mode, typing L7 restores everything, including making
	the graphics plane go away.

	6. Typing F8 to get into graphics mode no longer clears the graphics
	plane; typing F8 WHILE in graphics mode still clears the graphics
	plane.  Hence, to switch to graphics mode AND clear the screen, one
	can type F8 twice.  Typing F8 once while in text mode merely brings
	up the graphics plane, providing a handy way to get the graphics plane
	back without clearing it, without having to call up the setup panel.

	7. Fixed a problem with the -Wh (-height) frame arg, used to set the
	height of the tty window in lines of text.  For example, -Wh 40 may
	be used to start up GTERM with the IRAF standard 40 line window.

	8. GTERM now catches the suspend signal (SIGTSTP) and stops itself when
	this signal is received.  Evidently, standard sunview window processes
	(such as shelltool) do not do this since the window stops responding
	to mouse and keyboard events, but it is necessary for GTERM to stop
	itself when so commanded in order to be able to do a (<suspend>,'bg')
	of a running gterm job in a cshell (e.g., another gterm window running
	a shell), i.e., to stop the job and put it in the background.
	Conversely, if SIGTSTP is not caught, typing 'fg' by accident on a
	background gterm job causes the cshell to hang up, requiring a <ctrl/c>
	abort to recover (killing whatever the gterm process was running,
	e.g., a remote login to a computer on the other side of the world).

	9. I tested GTERM on a monochrome terminal (3/110 overlay plane).
	Modified the setup menu so that it says "mono only" when working on
	a monochrome terminal, instead of indicating that color is an option.
	Could not get reverse video to work on a monochrome monitor, although
	it works fine in monochrome mode on a color monitor.  Decided to leave
	it as it is for the moment (black polylines on a white background
	unless entire screen is inverted).

	10. Fixed a minor bug: when specifying frame colors for both the text
	and graphics frames, the graphics frame colors would clobber the text
	frame colors before the code would allocate a private colormap segment
	for the second window.

	11. Checked out a report than when printing very long lines, GTERM
	might be losing characters during the wraparound.  The problem was
	not duplicated and all characters were printed with autowrap as
	expected, both in the left column on a cleared screen, and on the
	half-screen column after a vertical screen wraparound.

	12. Added a new command line option -T, and a set of related options
	in the setup panel.  The options specify how the terminals responds to
	graphics commands and data.  If -T is specified the graphics plane is
	disabled, and graphics characters are printed in the text frame as on
	a non-graphics terminal.  Another option allows graphics data to be
	discarded entirely.  These options should be useful when debugging
	graphics programs, or when working over a noisy line.

	13. All gterm specific command line arguments and switch values now
	permit minimum match abbreviations.

	14. Added a new command line argument "-ginterm [ch [ch]]", where the
	[ch] are the octal values of the GIN mode terminators.  Also added
	support for setting the GIN mode terminators to the setup panel.
	This is not required for IRAF, but for running foreign graphics
	programs which require no GIN terminator, or a different value.

	15. Reworked the setup panel code somewhat so that selecting one item
	in the panel causes actions to be performed which affect only that one
	item.  Formerly, the setup event procedure would fetch the value of
	each setup item and perform some action if the value had changed.
	This could result in unnecessary actions in some cases.

	16. Fixed another suspend-process bug.  When running a command like CL
	or SH which does not do job control in the gterm window without benefit
	of an intermediate shell, typing the suspend character would cause the 
	process (and terminal) to hang, requiring a kill to recover.  Added a
	new command line option "-ignore" to allow filtering out of the suspend
	control characters, and also a new frame menu option "continue" which
	when selected, sends SIGCONT to the process group currently associated
	with the terminal.  This will restart a process which is accidentally
	stopped by typing the suspend control character.  Note that SHELLTOOL
	also has this problem.
	(7/23+)

local/mail.mai -
local/mbox.txt -
local/tasks/daophot/image.dst -
	Deleted these files in VMS/IRAF.  (7/27)

unix/hlib/stripper
unix/hlib/stripall		[UNIX,VMS,SUN]
vms/hlib/stripper
vms/hlib/stripall
	Revised the stripper scripts for V2.5 IRAF.  This reduced the size
	of the stripped V2.5 VMS/IRAF system from 18.7 to 14.9 Mb (with shared
	libraries).  The main changes were deletion of all files in the
	following directories:

		local/noao
		vms/hlib/share

	In addition, a dozen or so modest size files, mostly .hlp files used
	to generate printed manuals, were added to the list of special files
	to be deleted in the stripper scripts.  (7/27)

unix/hlib/install
local/sun/Makefile			[SUN/IRAF]
local/suntools -> local/suntools.e
	Changed the name of the main 'suntools' executable in the IRAF system
	login directory to 'suntools.e'.  This is necessary to prevent
	execution of this local master copy of the suntools executable, when
	entering the command 'suntools' when logged in as 'iraf'.  This is
	wasteful of memory, as iraf/local/suntools is run for the root window,
	but /usr/bin/suntools is used for most everthing else.  (7/30)

pkg/cl/param.c
	Fixed a serious bug in the code which searches for parameters where
	no containing task has been specified, i.e., "param" rather than
	"task.param", requiring a search of all pfiles in the search path.
	There were two problems with the old code (lookup_param in param.c):

	[1] If "param" was an ambiguous abbreviation for two or more of the
	parameters in one of the pfiles in the search path, the search was
	being terminated and an illegal value was being returned to the
	calling routine (paramsrch), causing the error message

		ERROR: task `' has no param file

	to be printed, aborting the task.  The actual error would be an
	ambiguous parameter name abbreviation, but even this is incorrect
	since an exact match might be found in a pfile further on in the
	search path.  This would commonly happen when referencing the CL
	parameters i,j,k,x,y,z, etc., in complex scripts, since it is easy
	in a complex script to have two or more parameters whose names begin
	with one of these characters.

	[2] If "param" was an unambiguous abbreviation for one of the
	parameters in a pfile in the search path, that parameter would be
	referenced, even though the actual parameter name given was the
	exact name of a parameter in a pfile further on in the search path.
	In other words, the search routine would stop as soon as it found
	a parameter for which the given name was an abbreviation.  Clearly,
	if searching for one of the CL global params i,j,k,x,y,z, etc.,
	it is easy for this to occur, causing the script to fail.

	The bug has been fixed, but the workaround is simply to not use the
	global CL parameters in scripts.  This has always been considered
	poor practice due to possible coupling problems between nested scripts
	that access the same global parameters.  It is also more efficient
	to define the parameters as local variables, as the search path is
	shorter.  (7/31)

IMTOOL (SUN/IRAF)
	1. The hardware color table is now updated twice a second on a timer
	loop, allowing the displayed image to be viewed normally even while
	the mouse is not in the display window.
	2. Added a rate option to continuous random pseudocolor.  Also, this
	maptype option will now work when the mouse is not in the display
	window, due to revision 1 above.
	3. Added a command line option -maptype for setting pseudocolor options
	etc. on the command line.  (8/4)

local/sun/gterm.man +
local/sun/imtool.man +
local/sun/*
	I cleaned up these directories, deleting the old ./save directory,
	adding a README with installation instructions, adding a Makefile,
	and so on.  Also, manual pages were added for both GTERM and IMTOOL.
	(8/4)

unix/gdev/sgidev/sgi2uapl.c
	1. Added code to add the tiny timestamp/logo to the corner of each
	output plot, so that the machine of origin, owner, and time are
	recorded automatically on each plot when generated.  A -t switch
	was added to disable printing of the logo (the default is to print it).

	2. I also optimized the generated Postscript so as to speed up plotting.
	This turned out to be tricky, as the Postscript interpreter is not all
	that fast, hence even with the serial interface the laserwriter can
	easily be cpu bound.  For a test vector plot with labelled axes, plot
	title, and 3 512 point vectors overplotted, the following results were
	obtained.
					   data size, bytes	clock time
					   ----------------     ----------
		original code			90578		   1:45
		4 byte encoding			25877		   1:43
		7 byte encoding			37956		   1:12

	The original code was clearly generating a lot more data than it
	needed to to describe the plot (17 bytes per vector point), which was
	the motivation for this optimization.  At 9600 baud, it should take
	1:15 seconds to transmit 90Kb, suggesting that the plotting might be
	i/o bound.  Hence in my first attempt at optimization I used a
	sophisticated encoding scheme which used only 4+ bytes to encode each
	vector point to be plotted.  This resulted in a very compact
	representation of the plot, but the running time worked out about
	the same, indicating that the processing was cpu bound due to the
	overhead of the Postscript interpreter, and the relatively low speed
	of the 68000 chip used in the current laserwriter.  In my second
	attempt I streamlined the Postscript code, increasing the encoding to
	7 bytes per vector point, with some loss of data compression, but a
	significant improvement in processing time.

	The conclusion is that Postscript, due to its very general and flexible
	interpreter can sometimes be slower than one would like, and there is
	little that can be done about it.  In many cases adding the more
	expensive parallel interface would not help; the bandwidth of the
	serial interface is rarely a problem, except perhaps for 1 to 1 bitmap
	transfers.  As faster chips are used in the laserwriters there may
	come a point where the 4 byte encoding is the fastest.  If the
	Postscript output is to be used to save plots on disk or transmit them
	via modem to remote computers, the 4 byte encoding may again be
	preferable.  The ideal solution would be if Postscript were to provide
	direct support for a polyline primitive, rather than relying on the
	Postscript interpreter to draw polylines.

	By default, the 7 byte encoding is used since it is faster.  The new
	switch "-4" was added to enable the optional 4 byte encoding (the
	translator supports both).  (8/9)

pkg/images/tv/display/t_display.x
	A new routine ds_setwcs() was added which writes a WCS descriptor file
	to the directory 'wcsdir' (uparm if not defined) when an image or
	image section is displayed.  The WCS file contains two lines: the
	first line is some text describing the image (image name and title
	string), and the second line is a rotation matrix to be applied to
	screen coordinate to get image coordinates.  The rotation matrix
	undoes the affects of the image section or display mapping
	transformations.  The filename is "wcsdir$<device>_<frame>.wcs",
	e.g., "uparm$imtool_1.wcs".  (8/12)

doc/unixiraf.ms +
	Installed the all new UNIX/IRAF Installation Guide in doc.  (8/24)

vms/os/zfioty.c
	Modified the VMS terminal driver to recognize the special device name
	"dev$tty", passed by the VOS to indicate the user terminal.  Checked
	out the operation of the TTOPEN routine (used to do i/o directly to
	the terminal).  (8/25)

unix/boot/mkpkg/host.c
	The u_fmove function ($move) will now physically copy the file if
	necessary to move it to a directory on a different device.  (8/27)

local/tasks/mkpkg
local/tasks/peritek -
	Deleted the @ccdred reference and peritek references from this mkpkg
	file on Sun/IRAF.  (8/27)

dev/termcap
	Added an entry for the unixpc.  (8/27)

unix/hlib/install
	Extracted the file lists and moved them to the head of the file as
	SET statements so that they may more easily be modified for different
	machines.  Added some more files to these lists for the Sun/IRAF
	version of install.  (8/28)

unix/hlib/stripper
unix/hlib/stripall
	Modified Sun/IRAF versions to delete the archived object files for
	each floating point option during a strip operation.  (8/28)

mkpkg
unix/hlib/mkfloat.csh
unix/hlib/cl.csh
unix/hlib/irafuser.csh
unix/hlib/login.cl
	Added support to Sun/IRAF for multiple binary versions of the system,
	e.g., to support multiple floating point options with a single copy
	of the system.  There are two reasons for doing this.

	    [1]	When multiple nodes must access the same copy of IRAF, the
		different nodes will often have different floating point
		hardware.

	    [2] It would be nice to not require user sites to recompile the
		full system because they have different floating point
		hardware then we do on our development system.

	This could have been done (could still be done by user sites if
	desired) by recompiling the system with -fswitch, but this would
	result in a significant loss of efficiency in some programs.
	Our solution instead is to have multiple copies of the runtime
	system executables.  This is transparent to the user, with the
	best choice being made depending on the floating point hardware
	available on the machine on which IRAF is being run.

	Implementation is as follows:

	    iraf$bin.f68881		Binaries for -f68881 option.
	    iraf$bin.ffpa		Binaries for -ffpa option.
	    iraf$bin			link to either of the above.
	    cl				link to hlib$cl.csh, defines IRAFBIN
	    login.cl			resets 'bin' to value of IRAFBIN

	There are two bin directories, BIN.F68881 and BIN.FFPA, compiled
	-f68881 and -ffpa respectively (the HSI executables are separate
	and are compiled -fsoft).  The old BIN directory is now a symbolic
	link to one of these two directories.  On our systems, bin.f68881
	and bin.ffpa are also symbolic links to directories on a separate
	device, in order to provide more flexibility in allocating such a
	large amount of storage.

	The command 'cl' is now a link to the script hlib$cl.csh, rather than
	a link to bin$cl.e.  The script defines an environment variable
	IRAFBIN giving the path to the bin directory to be used, and then
	runs the cl.e in that directory.  The fpa bin will be used if it
	exists and if the file /dev/fpa exits, indicating that the local
	node has an fpa.  The revised LOGIN.CL file fetches the value of
	IRAFBIN defined in cl.csh, and uses it to 'reset' the value of the
	IRAF logical directory BIN.

	While it is easy to switch bin directories, it is much harder to
	maintain two separate copies of all the objects and package libraries.
	The system has been set up so that it can easily be configured with
	either f68881 or ffpa objects, but not both at the same time.
	This is done as follows:

		cd $iraf
		mkpkg ffpa		(configure for -ffpa objects)
		mkpkg f68881		(configure for -f68881 objects)
		mkpkg showfloat		(show current float option)

	MKPKG is used to configure the entire system for either float option.
	Once this is done, that version of the binaries are updated by the
	mkpkg.  The system is normally configured for f68881 so that software
	development may take place on any node.  Periodically the ffpa objects
	and executables are updated by the following commands:

		cd $iraf
		mkpkg ffpa		(configure for -ffpa)
		mkpkg			(update libraries and relink)
		mkpkg f68881		(restore to -f6881)

	This updates the ffpa version of the system, and restores the system
	to f68881 when done.  When not in use, all the system and package
	objects and libraries are stored in the file OBJS.arc in one of the
	bin.f* directories.

	IMPORTANT NOTE -- Since bin, bin.f68881, and bin.ffpa are all
	symbolic links, a tar archive of $iraf no longer includes any
	executables.  The real bin directories (/tmp2/bin.f68881 and
	/tmp2/bin.ffpa on our system) must be explicitly referenced on
	the tar command line to be included in the archive.  A tar of $iraf
	is now only about 35 Mb, and the bin directories are about 24 Mb.

	When configuring the system for a particular site, the bin directories
	may be located wherever there is space, and either directory may be
	deleted if it will not be used.  Of course it is always possible to
	delete both and compile the system for -fswitch, etc., if desired.

	I am considering adding a gprof version of OBJS.arc for profiling
	purposes, now that we have an easy mechanism for maintaining multiple
	versions of the system binaries.  (8/28)

unix/hlib/install
	Modifed the Sun/IRAF part of the install script to install or update
	the GTERM and IMTOOL manual pages.  (8/30)

unix/hlib/zzsetenv.def
	Added an entry "set stdimcur = text", so that image cursor reads will
	come to the terminal by default, rather than trying to spawn the
	stdimage kernel and dieing on a process not found error.  (8/31)

unix/boot/mkpkg/host.c
	Thanks to the recent change to a remote bin directory on Sun/IRAF,
	which causes $move to call u_fcopy, we have found a bug in u_fcopy.
	The variable "totchars", used to check if the file changes size
	during the copy, was not being initialized before each copy.  (9/1)

----------------------------
Sun/IRAF V2.5 frozen and archived on tape.  (9/3)

vms/boot/mkpkg/host.c
	I had to add the /NOCONTIGUOUS qualifier to the COPY command, as COPY
	would issue a warning message and return an error (warning) status
	code, when trying to copy an input file which was contiguous and the
	output file could not be created contiguous.  This was happening even
	though there was no /CONTIGUOUS qualifer on the command line.  (9/4)

local/sun/gterm.c
local/sun/gtermio.c
	Added a new, experimental feature to GTERM.  Selecting "logging on" in
	the frame menu causes all output from that point on to be logged in a
	file.  Selecting "logging off" disables logging.  The log file filename
	may be set in the setup panel if desired.  Any utility such as 'cat'
	may be used to replay the logfile.  "Page mode" may be set in the
	text window to page the played back output.  This feature is useful
	to spool terminal output for later review, e.g., during a terminal
	session on a remote or non-UNIX node where i/o redirection is
	difficult, or to provide a means of spooling the output of interactive
	programs which do not provide such a facility as a builtin (e.g. a
	file pager).  (9/8)

doc/pkg.hlp
	Deleted some ^N, ^O control codes which were embedded in the text,
	causing the file to appear to be a binary file.  (9/9)

sys/clio/clgcur.x
	CLGCUR will now accept either X-Y-WCS-KEY-SVAL or KEY-SVAL as valid
	input cursor value strings.  In the latter case, X-Y-WCS will be
	returned as INDEF INDEF 0.  It is assumed that if the latter case is
	used, the coordinate information is to be ignored, e.g., because the
	function selected by the key does not use the coordinate information.
	This is convenient when entering interactive commands in cursor mode,
	e.g., with stdimcur set to "text", (or possibly in cursor lists when
	the coordinate information would be meaningless for a given key).
	Note that omission of X-Y-WCS is possible only when the given key
	is nonnumeric.  (9/10)

doc/aosvsiraf.hlp
	Installed a new version of the AOSVS/IRAF Installation Guide.  (9/11)

sys/gio/stdgraph.com
sys/gio/stgres.x
sys/gio/mkpkg
sys/gio/stgpl.x
sys/gio/stgpm.x
sys/gio/stgencode.x
sys/gio/stdgraph.h
sys/gio/stginit.x
	Someone (Dyer) discovered that the graphics system was noticeably
	slower than specialized test code when used to plot very long vectors,
	e.g., 4096 points.  Normally the software is faster than the hardware,
	but for these very long vectors clipping of unresolved points becomes
	a significant factor, as does all the processing needed to generate
	all those points.

	Investigation showed that virtually all of the time was being spent
	in three routines: gadraw, the main point drawing routine in GIO,
	and stg_polyline and stg_encode, the principle polyline drawing
	routines in the stdgraph kernel.

	The gadraw routine uses the most time, but examination of the code
	showed that it was already fully optimized, with caching of the WCS,
	use of integer rather than floating point where possible, and provision
	of code to optimize the common special cases, e.g., linear WCS,
	successive points all inbounds with no clipping, and so on.  I don't
	seem much possiblity for improvement here, it just takes a little
	while to plot all those thousands of points (i.e., 0.68 seconds for
	all the GIO operations for 4096 points on my 16.7 MHz diskless Sun
	node with f68881 fpa).

	There was room for improvement in the polyline drawing code in the
	stdgraph kernel, however, since most of the time was being spent in
	a single routine.  I [1] added code to the inner loop to handle the
	special case of Tek-4012 encoding inline, rather than calling the
	encoder, [2] substituted lookup tables for the tek encoding, rather
	than computing the 4 bytes each time with divides, mods, adds, etc.,
	[3] substituted integer for floating point in the unresolved point
	clipping code, and [4] replaced the FOR loop by a DO loop.  With these
	changes, I was able to reduce the running time for drawing 100 4096
	point polylines in the stdgraph kernel from 37.9 sec to 18.0 sec on
	the 16.7 MHz f68881 Sun.  The most significant change occurred with
	optimization [3], since for these long vectors clipping is the major
	operation, and the f68881 floating point is quite slow compared to
	68020 integer operations.

	In repeating the same tests on the 11/750, my 4096 point test plot
	took 11 seconds to draw both before and after installing the optimized
	stdgraph kernel.  It appeared that the GIO time was about 2.2 sec
	per plot, and the stdgraph time about 0.7 sec, indicating that the
	operation was very much limited by the drawing speed of the terminal.
	By decreasing the software resolution of the plot in cursor mode,
	I was easily able to decrease the drawing time to 4 seconds, with
	only slight degradation of the plot.  Hence, it appears that the most
	significant factor affecting plotting time is actually the point
	elimination algorithm, which is probably more conservative in the
	stdgraph kernel than in the specialized test code mentioned above.

	I conclude that, although a significant inefficiency in the polyline
	drawing code was discovered and fixed, the graphics system has been
	i/o limited all along (on conventional graphics terminals), and that
	the differences in plotting speeds observed earlier were due to
	differences in the point elimination algorithms, causing one program
	to plot at a slightly different resolution than the other.  (9/12)

	[Addendum 9/14: In repeating the plotting speed tests mentioned
	[earlier, we discovered that the real difference was that Dyer's
	[program was *subsampling* the data by 4, and hence only plotting 1024
	[points, whereas all my tests were plotting the full 4096 points.
	[Repeating the IRAF test with an [*:4] image section eliminated the
	[problem - and I suspect the IRAF code, despite its generality, is now
	[more efficient than Dyer's specialized test code.]

sys/gio/gactivate.x
sys/gio/greactivate.x
sys/gio/gdeactivate.x
sys/gio/gki/gkigca.x
sys/gio/gki/gkifetch.x
sys/gio/gki/gkigetwcs.x
	Added some errchk declarations.  (9/14)

dev/graphcap
lib/syserr.h
lib/syserrmsg
sys/gio/gopen.x
sys/gio/cursor/gtropenws.x
	1. In the graphcap file, for device 'iis', deleted the kf and tn
	capabilities (kf=bin$x_stdimage.e etc.) since there is no GIO
	kernel yet for this device, and it is therefore incorrect to
	indicate that there is such a kernel in the graphcap (this causes
	misleading error messages).
	2. Added a new system error message SYS_GNOKF, and modified gopen.x
	and cursor/gtropenws.x (GIO) to check that a device has a GIO
	kernel before trying to connect it, printing an informative error
	message and taking an error exit if no kernel is found.

	NOTE: All graphics devices accessed via GIO must now have the 'kf'
	capability in their graphcap entry, specifiying the GIO kernel to
	be used.  Previously, the value of kf would default to 'cl' if no
	kernel were found, but this has been changed to an error condition.
	As far as I know, all graphcap entries to date have explicitly
	specified the kf so this should not cause any problems.  (9/15)

pkg/cl/exec.c
pkg/cl/pfiles.c
	Fixed a PSET related bug that would occasionally cause segmentation
	violations in the CL when "executing" a pset task.  The segmentation
	violation was occurring due to an indirect reference (by pfileload()
	in pfiles.c) to the param file pointer in the task structure, occurring
	in the code in callnewtask() in exec.c which was in the process of
	setting that very parameter.  (9/20)

pkg/cl/binop.c
pkg/cl/opcodes.c
pkg/cl/unop.c
sys/etc/envreset.x
doc/ports/notes.sun4 +
unix/mc68000/zsvjmp.SPARC +
	Merged in some changes from the port of IRAF to the Sun-4, the new
	RISC architecture (sparc) machine.
	1. The changes to the three CL files were to avoid use of the VALU
	macro to fetch the value of an operand, when evaluating boolean
	operands.  The datatype of VALU, due to the union in the operand
	struct, is double, and evaluation of boolean expressions in double
	on the sparc cpu was not working (and obviously should be avoided).
	2. In envreset.x, the maxch argument to a strcpy was being passed as
	a short rather than an int, and this was causing a bus error on the
	sun-4.
	3. Saved copies of the notes file from the port, and the zsvjmp.s
	(10/1)

sys/gio/gopen.x
	The recent addition of code to check for the kf parameter interfered
	with the gopen action for the special device 'stdvdm'; fixed this.
	(10/1)

sys/gio/doc/gio.hlp
sys/gio/stdgraph/stgrcur.x
	Added a new graphcap device parameter RE.  This goes with RC, and if
	defined for a device, is sent to the terminal after the cursor value
	has been successfully read.  This is necessary on terminals which
	ignore characters coming back from the computer (e.g., due to echo
	not being turned off in the terminal driver) while transmitting the
	cursor position characters during a cursor read.  (10/1)

sys/clio/clgcur.x
	The clgcur revision of 10 Sept (about 3 week back) introduced a bug
	which would cause cursor reads returning negative x values to fail.
	This has been fixed on lyra and tucana.  Our policy of not exporting
	code from our test systems should have prevented this bug from being
	propagated to any external sites, or even to our production systems
	in Tucson.  (10/2)

local/sun/Makefile
local/sun/gtermio.c
	1. Discovered and fixed a serious bug in GTERM which would cause the
	terminal to lock up when trying to do graphics over a modem connection
	to an external computer (evidently this was the first time this has
	been tried).  In this mode of operation, characters are delivered one
	at a time; receipt of the GS character alone would cause the input
	code to get into an infinite loop, exiting immediately each time
	called, posting a callback to the notifier, which would evidently call
	the input procedure back BEFORE reading pending input on the pty.
	2. Modified the makefile to strip the suntools.e executable in the
	"make install" rather than when it is made, to make it easier to get
	at an unstripped version for debugging.  (10/3)

doc/cluser.tex
doc/vmsiraf.ms
	Corrected the spelling of Fred Romelfanger's name.  (10/7)

sys/gio/gopen.x
	Corrected another problem having to do with raw metacode output.
	This was diagnosed as a stdvdm problem, but wasn't really.  A program
	was opening device "stdvdm", but directing output to a binary file
	opened by the application, and it was bombing because in this case
	GIO is not writing to the stdvdm file, but to the user file.
	The change was to disable checking for the existence of a graphics
	kernel whenever output is directed to a stream other than STDGRAPH,
	STDIMAGE, or STDPLOT.  If the user is controlling where the metacode
	goes, it is inappropriate to make such a check, as probably no kernel
	is being used.  (10/22)

---------------------------------------
Orion (Sun-4) updated (port actually) from lyra on 24 Oct.  This was with the
    BETA1 release of SunOS for the RISC Sun-4, hence will have to be redone
    when we get the correct, current operating system software in.
Tucana updated from lyra on 26 Oct (both f68881 and ffpa).

unix/boot/wtar/wtar.c
	I wanted to use the -o (omit binary) feature to make a source only
	update tape given a long list of individual files and directories.
	This failed due to the restrictions in the unix/iraf HSI on changing
	directories.  I hacked away on WTAR until it could handle this
	properly, and had to generalize the library routines listed below
	as well.  (10/27)

unix/boot/bootlib/oschdir.c
	The case which folds a subdirectory into the pathname of the current
	directory was being called incorrectly when passed a directory name
	of the form "path/subdir".  (10/27)

unix/boot/bootlib/osfpathname.c
	The special code in this routine for vfns "." and ".." was checking
	only for such a prefix, and incorrectly matching filenames such as
	"./path".  (10/27)

-----------------------------------
IRAFX (draco) updated from lyra on 27 Oct.

sys/gio/gclose.x
	Added a call to gki_redir(fd,0,0,0) to cancel any redirection of a
	graphics stream to an inline kernel or subkernel, when the stream
	is closed.  This has never been a problem, but could be required in
	some circumstances.  (11/2)

sys/gio/gki/gkiredir.x
	May now be called with fd < 0 to obtain the redirection information
	for a stream without changing anything.  (11/2)

sys/gio/gopen.x
	Checking for a kernel file in graphcap is now disabled if a graphics
	stream is opened on an inline kernel or subkernel, in which case no
	external kernel could possibly be needed.  (11/2)

pkg/images/tv/cv/load1.x
	The CVL task was issuing the following sequence of calls:

		gki_inline_kernel
		gopen, gclose
		gopen, gclose

	Since gclose now resets the default GKI stream type, a second call
	to gki_inline kernel is necessary before the second call go gopen,
	to setup GKI for an inline kernel.  (11/3)

sys/gio/gvmark.x
	Bug fix: replaced the single "marksize" argument by the "xsize, ysize"
	specified in the documentation, etc.  (11/6)

sys/fio/nowhite.x
sys/fio/open.x
sys/fio/vfntrans.x
	The NOWHITE procedure, used to eliminate whitespace and newlines from
	a string operand, was using maxch on the output string as a terminator
	and ignoring EOS on the input string (most likely harmless, but
	inefficient).  In the process of fixing this it appeared that it
	would be useful to return the length of the output string as the
	function value, and the procedure was only used in the two files
	listed above, so the procedure was converted into a function.  (11/6)

sys/gio/stdgraph/stgpm.x
	The STDGRAPH kernel polymarker code would draw the polymarker and then
	go into an infinite loop, due to a bug in the loop termination test
	introduced when the optimized polyline drawing code was transferred
	to the polymarker drawing routine some time back.  (11/7)

sys/imio/imaccess.x
	If an image section is specified, imaccess calls immap to see if the
	image specification is legal as well as test if the image exists,
	in order to avoid having to deal with the complexity of parsing image
	sections etc.  The problem was that the 'mode' argument to imaccess
	was being passed to 'immap' directly, and thence on to the file open.
	Hence, the image header file was being opened with access mode 0,
	causing an error exit to be taken in FIO (see below).  Changed imaccess
	to open the image with mode READ_ONLY if the access mode specified
	to the imaccess is 0, otherwise the user specified access mode is
	used.  (11/13)

sys/fio/fgetfd.x
	In the process of fixing the above bug, I found and fixed a serious
	bug in FIO, which has been there since the code as written!  If a file
	were opened with an illegal mode or type, the FGETFD routine would
	take an error exit sure enough, but it was not dealling the file
	descriptor and marking the file slot unused, hence was leaving the
	file descriptor allocated and half filled in.  This would go undetected
	until the task terminated, normally or otherwise, at which time the
	file cleanup routine would find the "open" file and try to close it,
	causing a segmentation violation due to the partially filled in file
	descriptor.  Note that this error would only be seen when attempting
	to open a file with an illegal mode or type (a bug in the calling
	program), hence it has probably rarely been seen.  (11/13)

unix/os/zfiomt.c
	I had to make a couple of subtle mods to the MTIO driver to workaround
	peculiarities in the SunOS mtio driver on the Sun-4 (GAMMA release of
	SunOS).  Note that none of these bugs is present on the Sun-3 or any
	other UNIX system thus far tested.

	1. On the Sun-4, it turns out that an MTBSR ioctl (back skip record),
	if used to backskip over a tape mark, returns ERR, as does MTFSR,
	with errno=EIO.  To workaround this it was necessary to ignore ERR if
	errno=EIO following a forward or backward skip record.  The driver is
	not technically at fault here, since the BSD mtio documentation does
	not specify what the driver should do in this case, but all other unix
	drivers thus far tested permit BSR to backspace over a tape mark.

	2. This one was more subtle, so subtle in fact that I cannot be certain
	I have diagnosed it properly, although everything fits my theory well.
	For forward record skips, the IRAF magtape driver uses a read into a
	large dummy record buffer for which space is automatically allocated on
	the machine stack at function entry, e.g.: (a read rather than FSR is
	used here to reliably detect tape marks)

		char  buf[29184];
		int   nb;
		nb = read (fd, buf, 29184);

	What would happen is that in the first call to this code following
	process startup, the read would fail, returning errno=14 (EFAULT,
	bad address causing fault during execution of system call).  What I
	suspect is happening is that the page fault required to allocate
	space on the process hardware stack for BUF is occuring during
	execution of the dma read in the SunOS mtio device driver.  Once the
	stack grows large enough to provide space for BUF, the error goes
	away.  Adding a "buf[0] = 0" statement before the read fixes the
	problem by causing the stack page fault to occur in the user process
	before entering the kernel device driver.  (3/12)

sys/mtio/mtio.h
sys/mtio/mtpos.x
sys/mtio/mtlocknam.x
sys/mtio/mtfile.x
sys/mtio/mtparse.x
sys/mtio/mtosdev.x
sys/etc/xalloc.x
sys/etc/xgdevlist.x
sys/ki/kzrdmt.x
sys/ki/kzwrmt.x
sys/ki/kzwtmt.x
sys/ki/irafks.x
sys/ki/kiextnode.x
	Revised these files to finish adding support to the VOS for network
	access to remote magtape devices.  Remote devices are accessed merely
	by prefixing the device name with the node name, e.g., "orion!mta"
	to access the A tape drive on node "orion".  For example, to list the
	headers on a FITS tape on a remote drive,

		cl> alloc o!mta
		cl> rfits o!mta 1-99 make-

	The dev$devices file on the remote node is used to obtain the device
	information, hence no network information is required in the device
	files, and device names need not be unique in a network sense.
	Performance, as measured by the clock time, ranges from 30-90% of
	what is achieved using the tape drive on the local node.  These
	revisions also included a couple of bug fixes, e.g., the KI magtape
	access bug logged sometime back, and a newly discovered missing
	argument bug in some error recovery code in the device allocation
	code in etc.  (12/5)

pkg/dataio/mkpkg
pkg/dataio/cardimage/conversion.x
pkg/dataio/cardimage/t_rcardimage.x
pkg/dataio/cardimage/t_wcardimage.x
pkg/dataio/cardimage/tabs.x
pkg/dataio/fits/fits_write.x
pkg/dataio/fits/t_rfits.x
pkg/dataio/fits/t_wfits.x
pkg/dataio/imtext/rt_rwpix.x
pkg/dataio/mtexamine/t_mtexamine.x
pkg/dataio/reblock/reblock_file.x
pkg/dataio/reblock/t_reblock.x
pkg/dataio/t2d/t_t2d.x
	1. Modified all programs in DATAIO to use the MTFILE operator to test
	if a file is a magtape file.  Formerly, these routines were using
	an explicit strncmp of the "mt" prefix, which is poor information
	hiding and does not work with network access.
	2. The cardimage and reblock programs were writing verbose output
	to STDOUT but flushing STDERR.  (12/5)

----------------------------------------------------
Updated tucana and orion from lyra.  (12/5)

local/sun/imtool.c
local/sun/imtool.man
	Modified the way the coordinate file name is entered via the setup
	panel, to make this feature easier to use.  The string displayed and
	entered via the setup panel is now a printf style format specification
	rather than the actual file name, with the default being "frame.%d"
	(the %d, if given is replaced by the frame number).  There is now
	visible feedback when the user types return to enter the new string,
	i.e., the window frame label is updated.  (12/6)

sys/ki/kilnode.x
sys/ki/kifndnode.x		[LOGICAL NODE NAMES]
sys/ki/kinode.com
sys/ki/kignode.x
	Modified the KI to add support for logical node names that can be
	defined in the environment.  These may be used interchangeably with
	the node name aliases defined in the dev$hosts; the main advantage
	is that since the environment is used, the values may be changed on
	a per user basis.  Logical node names (similar to plot! etc.) may be
	defined in the standard system, with the local node being assumed if
	the given logical node name is not currently defined.  (12/6)

unix/gdev/zfiogd.x
pkg/images/tv/display/iisopn.x
	Added support for IMTOOL to the master system on lyra.  (12/6)

sys/imio/imdmap.x
	Noticed and fixed a harmless bug in this file.  The graphcap descriptor
	for the image display was being opened but never closed.  (12/6)

dev/graphcap
	Added a "node!" prefix to the DD string for device 'imtool'.
	The logical node name "node" is supposed to refer to the primary node
	the user is logged in on.  With this and the other changes noted
	above, it is possible to use IMTOOL over a network connection
	(there may be a byte swapping problem yet on the VAXes).  (12/6)

---------------------------------------
Updated orion and tucana from lyra, including propagating a bug fix in
apextract.  (12/7)

local/sun/imtool.c
	Modified to automatically sense whether the input data is byte swapped,
	to allow generation of the display data stream on remote, possibly
	architecturally incompatible nodes on the network (e.g., VAXes).
	Also added code to verify the checksum of each IIS header and print
	an error message on the console if a bad checksum is seen.  Non-byte
	packed data is now recognized and the difference in the size of the
	data block allowed for (avoiding a possible data stream synchronization
	problem), but currently only every other pixel will be displayed if
	the data is not byte packed.  (12/9)

dev/hosts
	Added entries for all the new Sun nodes, and updated the file on most
	or all unix nodes in the local network (it is getting hard to be sure
	if one has gotten them all).  (12/9)

sys/ki.h
sys/kigchan.x
sys/kighost.x
sys/kifchan.x
sys/kishownet.x
	Adding the new nodes to the hosts table caused the internal KI node
	table to overflow, revealing two bugs in the KI (sufficient to prevent
	IRAF from running at all!).
	1. In kighost.x, the test for a full table was not being performed
	correctly, allowing an overflow by one error.
	2. In ki[gf]chan.x, the value of 'server' was being used to index the
	node tables when allocating a KI channel descriptor for a resource.
	Unfortunately, when a resource is local 'server' is set to NULL.
	This was causing an array to be indexed [0], overwriting the final
	element of the node table (harmless until the table is full).

	I fixed these bugs and tested for overflow on an overfull host table,
	then increased the maximum number of nodes from 20 to 64 (I hate to
	reserve the table space, but the KI is a major interface).  If there
	are too many hosts the system will simply ignore the extra entries
	once the internal node table is full.  No error message is given,
	but if the system.netstatus task is run, the warning message

		HOST NAME TABLE IS FULL

	will be seen.  At some point we need to modify the code to permit a
	runtime access to the host table (perhaps using the current node
	table only as a cache), in order to support an arbitrary number of
	nodes as is necessary in large networks.  (12/10)

pkg/system/mkpkg
pkg/softools/mkpkg
noao/mtlocal/mkpkg
	Modified these mkpkg files to generate an xx_*.e executable, and rename
	it to x_*.e when installing it in BIN.  (12/10)

---------------------------------------------
Updated irafx on draco (VMS).  (12/11)

dev/hosts
	In the kernel server pathnames for the Sun-3 nodes, changed the "bin"
	to "bin.f68881" so that a runnable server will be selected regardless
	of the floating point configuration of the system.  (12/12)

local/sun/imtool.c
vms/gdev/zfiogd.x
unix/gdev/zfiogd.x
dev/graphcap
pkg/images/tv/display/t_display.x
pkg/images/tv/display/mkpkg
pkg/images/tv/display/findz.x
pkg/images/tv/display/iis.com
pkg/images/tv/display/iis.h
pkg/images/tv/display/iisers.x
pkg/images/tv/display/iisopn.x
pkg/images/tv/display/iispio.x
pkg/images/tv/display/iisrcr.x
pkg/images/tv/display/iisrd.x
pkg/images/tv/display/iisstt.x
pkg/images/tv/display/iiswcr.x
pkg/images/tv/display/iiswr.x
pkg/images/tv/display/maxmin.x
	Modified IMTOOL to add support for an 800 square display format option.
	1. Added logical devices 'imt512' and 'imt800' to the graphcap and
	to gdev/zfiogd.x.
	2. Modified the DISPLAY program to eliminate all occurrences of 512
	or 511 as a constant, dimensioning everthing instead from the
	graphcap entry for the device (all changes should be backwards
	compatible for a standard IIS).
	3. Modified IMTOOL to add the 800 square option.  This may be set
	in the setup panel, but more commonly it will be set automatically
	when the user writes to the device imt512 (imtool) or imt800.  (12/12)

------------------------------------------
Updated all systems.  (12/12)

unix/os/zfioks.c
	There was a bug in the UNIX/IRAF zfioks (kernel server) driver which
	would cause it to needlessly open a host file descriptor every time it
	was called to attempt to open a connection to a remote node.
	This bug has gone undetected until now because once a connection to a
	remote node has been opened, it tends to remain open for the lifetime
	of the client process, and a process is not likely to connect to very
	many nodes.

	The bug was found on our diskless sun nodes, due to a circumstance
	which was causing the connect to fail, resulting in a connection
	attempt (and additional wasted file descriptor) every time a remote
	file was accessed.  This rapidly used up the available file
	descriptors.  What was happening was that a large number of images
	were read from tape to disk on the server node (tucana).  The user
	then logged in on a diskless node and attempted to access the images.
	The user did not have a .irafhosts file, hence dev$hostlogin was
	used, but this old file did not contain any login information for the
	node in question, hence the connection would always fail.  If a resouce
	cannot be accessed over the network the KI currently tries to access
	it on the local node (probably not a good idea).  In this case this
	would work, since the images were created on a disk which was shared
	by the two nodes via NFS.

	This problem occurs because of the pixel file pathname in the image
	header.  This pathname includes the name of the node on which the
	pixel file resides, i.e., it is the network pathname of the file,
	as is needed in the general case if the file is to be accessed from
	any node.  In the case described here the pixel file could be
	accessed via either IRAF networking or NFS; in the general case only
	IRAF networking would work.  The recommended solution is to either
	use a .irafhosts file and IRAF networking, or use the imdir=HDR$pix/
	option to eliminate the network pathname.  (12/19)

dev/irafhosts
	The original contents of this file contained a list of NOAO network
	nodes with login information for the now defunct login 'ace' on each
	node.  This has been changed to the system and user independent form

		* : <user> ?

	meaning for an attempted connection to any node (*), try to login with
	the user name as used on the local host system (<user>), prompting for
	the password.  I also added comments to the file describing the syntax
	and usage of the file.  (12/19)

	NOTE -- Since this file is now system independent and will result in
	a reasonable action for any user on any node, it is no longer necessary
	for each user to have a .irafhosts file unless they with to specify
	the password or they wish to use a different login on remote nodes
	than is used on the local node.

unix/os/zfioks.c
unix/os/net/zfioks.c
vms/os/net/zfioks.c
	Modified to add support for the "<user>" syntax.  This symbol,
	appearing in the username field of a .irafhosts or dev$hostlogin
	node entry, is replaced by the current login name of the user on
	the client node.  (12/19)

vms/hlib/gripes.cl
vms/hlib/gripesfile
/u2/sites/sitelog.c [noao only]
	1. The site mail logging facility (used internally to the IRAF project)
	was not logging mail from VMS addressed as

		To: "IRAF" ...

	The program was modified to ignore the quotes.

	2. Modified the GRIPES facility for VMS to use the "Subject:' text
	entered by the user as the subject for the VMS mail as well as in
	the gripe header.  Commented out the code which would append the gripe
	to hlib$gripesfile, since it can be assumed that this file will not
	be writable on many VMS nodes, and the code is being disposed of via
	mail anyhow.  (12/19)

sys/imio/iki/oif/oifrename.x
	The imio.imrename primitive was not working properly for an OIF type
	image, when moving the image to a different directory.  The header
	file would be moved but the name of the old pixel file was being
	generated improperly, causing it to fail to be moved.  This would
	affect not only the IMRENAME task, but any in place image operation
	where the output image was created in a temporary image in the current
	directory, then renamed to replace the old image.  (12/19)

sys/imfort/imps3r.x
	This routine would appear to function correctly, but when used to
	output a 3 dimensional section, would replicate the first line of
	the input section to fill the first output band, then fill the second
	output band with the second line of the first input band, and so on
	(the pointer into the input section was being incremented in the
	outer, rather than inner, loop!).  All other IMFORT 3-dim i/o routines
	were checked as well, but the bug was present only in the one routine.
	(12/20)

pkg/images/tv/display/t_display.x
	Modified the code which output the WCS file to:
	1. Take account of reduced dimension sections such as [5,*,*],
	defining the WCS relative to the two dimensional section specified in
	such a case.
	2. Fixed a bug (oversight) which would cause the WCS matrix being
	output to be incorrect if the image were loaded anywhere but at
	xcen=ycen=0.5.
	3. Output greyscale transformation information in addition to
	the spatial information already output.  (12/20)

sun/imtool.c		[SUN/IRAF]
	1. In constant coordinate readout mode, will now print the intensity
	of the pixel underneath the cursor, in addition to the x,y values
	already output.  The pixel intensity is given in image intensity units
	if the display transformation was linear, in display pixel units
	otherwise.
	2. The display window can now be resized without affecting cursor
	readout or control, or the visibility of the WCS coordinate output
	box.  If the displayed image is loaded into the upper left corner of
	the imtool window, the window may be resized to exactly fit the
	displayed image regardless of its shape.
	3. The gclear function in the setup panel (graphics clear) now works
	properly.  (12/20)

--------------------------------------
All systems updated (lyra, tucana, orion, irafx@draco).  (12/20)

sun/imtool.c		[SUN/IRAF]
	1. If the cursor is positioned to an area of the display window which
	has not been loaded with image or colorbar data, the pixel value is
	output as 0. rather than some miscellaneous fictious value.
	2. If the pixel value is being output in raw display units for some
	reason (e.g., because the WCS file could not be read, or a nonline
	greyscale transformation was used to load the image), the pixel value
	is displayed as an integer to flag this condition for the user.
	3. Added an option to make the display window background color (the
	color to which the window is set when the image is cleared) black, with
	white being the default as before.  Settable via either a command line
	argument or the setup panel.  (12/21)

dev/hosts
dev/termcap
dev/graphcap
	Changed the names of the logical node names "print" and "plot" to
	"lpnode" and "plnode" (line printer node and plotter node).  The node
	name "plot" was no longer working due to the recent modification of
	the networking code to permit logical node names to be defined in the
	environment; "plot" is already defined in the environment as a logical
	directory.  (12/22)

sun/imtool.c
	Decreased the cursor gap from 10 to 6 pixels in response to a user
	complaint that it was hard to center the cursor precisely on objects
	due to the gap being too wide.  (12/24)

sun/screendump.c
	1. The output image is now fractionally scaled to fill the page.
	Formerly an integer scale factor was used in the hopes that this would
	be faster (it permits simple pixel replication), but there is little
	speed difference, and having the output always scaled to fill the
	page is nicer.
	2. The screendump code now knows about devices like the 3/110 and 3/60
	which have 10 bit frame buffers (8 bit color plus 1 bit overlay plus
	1 bit overlay enable mask).  Hence, textcopy, graphcopy, and screencopy
	will now work for all current Sun workstations.  (12/24)

sun/gterm.c
sun/gterm.man
sun/imtool.c
sun/imtool.man
	1. Incremented the GTERM version number to V1.2 and updated the
	manual page.
	2. Added a "pan" capability to IMTOOL.  Provided that the display
	window is smaller than the image, the middle mouse button may be
	used to mark a position to be moved to the center of the display
	window.  Panning is either instantaneous or via a smooth scroll;
	the latter is selected by holding the control key down while pressing
	and releasing the middle mouse button.  (12/26)

pkg/images/tv/display/sigl2.x
pkg/images/tv/cv/sigl2.x
	Fixed a short/int datatype mismatch bug in a call to adivks.  The bug
	had already been fixed in plot/crtpict/sigl2.x (the only other copy of
	this routine I know about), but evidently the bug fix had not been
	propagated to the other routines.  (12/28)

unix/os/zfiobf.c		[SUN/IRAF]
	Added support for FIFO (named) pipes, as are used by the display server
	code (gdev$zfiogd.x) on Sun/IRAF.
	1. Files opened read only or write only are opened with the O_NDELAY
	flag, necessary to prevent the client process from blocking until the
	server makes a connection (which in my case was not until the client
	requested the connecton, leading to deadlock).
	2. A close on a FIFO opened for reading by the client was causing the
	error EPERM (insufficient permission) to be returned for the close.
	This was highly inconvenient, so I modified ZCLSBF to ignore this
	error.  Hopefully the file descriptor is actually getting freed; I did
	not take the time to check.  (12/28)

sun/gtermio.c
sun/gterm.esc
sun/gterm.man
	Added support for the ESC ENQ function to GTERM.  This was necessary
	to get GTERM to work for FORTH graphics.  (12/30)

sun/gterm.c
	Looked into a bug reported by Joe Schwarz at CFA.  While in cursor
	mode, the mouse was moved into the gterm text window and the user
	tried to exit the program (implot) by typing the usual 'q'.  This was
	ignored, but typing 'q'<cr> three times would do the trick, but would
	leave GTERM in a funny state, requiring a setup-reset to recover.

	The reason typing 'q'<cr> three times would terminate cursor mode
	is because this produces a six character sequence ending with CR,
	which is what a tek cursor sequence is.  The reason GTERM got
	confused was because it thought the cursor read was still in effect,
	since cursor mode was not exited normally.

	The suggested fix was to make input equivalent in either window,
	hence typing 'q' in the text window would terminate the cursor loop
	and applications program.  The problem is that a valid cursor sequence
	requires an [x,y] position as well as a keystroke, and the cursor
	position for a cursor read is invalid when the mouse is in the text
	window.  Of course in this case the application does not need the
	[x,y] to do a quit, but there is no way that the terminal could know
	that.  Nonetheless, GTERM should not get into a funny state, so I
	fixed the bug by having the text window discard ascii input entered
	in the text window during a cursor read (rather than passing it on to
	the application program as it was).  (12/30)

pkg/images/tv/display/iispio.x
	In testing the new display code (to be documented here shortly) I
	found that it was easy to lose datastream synch to the display server
	(an IIS or IMTOOL), when a user interrupt would arrive while a data
	transfer was in progress, i.e., due to the user interrupting the
	display program while loading the display.  I had to add calls to
	intr_disable,intr_enable around the code which does i/o to the
	display, to ensure that complete data packets are always sent.
	This makes the display process immune to interrupts, but if an
	interrupt arrives during a data transmission it may be ignored,
	making it necessary for the user to type interrupt several times to
	abort the task. (12/31)

	TODO: Modify the interrupt disable/enable code to queue interrupts
	for later delivery, rather than discard interrupts as at present.

sys/fio/zfiott.x
	Made some changes affecting the 'playback' feature of STTY:
	1. Fixed a bug that would cause logfile lines containing only control
	directives but no data, i.e., \{...\} alone on a line, to cause
	premature EOF on the logfile, terminating playback.
	2. There was a bug in the ztt_query code, used to process and execute
	\{...\} control directives.  In effect, the way the code was written
	embedded playback control directives could not be used while reading
	text in raw mode.
	3. Carriage return as well as space bar may now be used to continue
	execution following a verify-pause.  (1/1-1988)

pkg/language/doc/stty.hlp
	Extensively revised the help page for STTY (the terminal driver),
	mostly to add a discussion of the playback facilities.  (1/1)

dev/graphcap
local/sun/imtoolrc
unix/hlib/install
	1. Replaced the IMTOOL device entries in graphcap by a set of a
	dozen or so logical device entries imt512, imt800, imt1024, imt2048,
	etc., defining the set of defined frame buffer configurations for
	the IMTOOL display server (this is site configurable).
	2. To local/sun (Sun/IRAF), added the file imtoolrc, which is read
	at startup time by IMTOOL to get the set of defined frame buffer
	configurations.  This file is intended to be copied into a public
	library at 'install' time, e.g., /usr/local/lib/imtoolrc.  The entries
	in this file must have corresponding entries in the graphcap.
	3. Modified the install script to install the imtoolrc file in
	/usr/local/lib.  (12/26-1/3)

sys/imio/imdmap.x
	Modified to save the value of the graphcap parameter 'cn', the IMTOOL
	frame buffer configuration number (if defined) in IM_LEN(im,3).
	This is then picked up by the DISPLAY code and passed on to the
	display server to specify the frame buffer configuration to be used.
	(12/26-1/3)

unix/gdev/zfiogd.x
	Deleted the IMT512 and IMT800 logical device entries, and added a
	capability to parse the display device frame buffer width and height
	from the DD string.  (12/26-1/3)

local/sun/imtool.c
local/sun/imtool.man
pkg/images/tv/display/iis.com
pkg/images/tv/display/iisers.x
pkg/images/tv/display/t_display.x
	A new, and hopefully final (for a while) version of the IMTOOL display
	server has been completed and installed, along with a few corresponding
	changes to the DISPLAY task.  The latter will still work for ordinary
	IIS displays as well as with IMTOOL.  The major revisions were the
	following.

	1. The scheme of a "standard" configuration (512 square) and a "large
	format" configuration (800 square) has been scrapped and replaced by
	a more general scheme.  There can now be up to 64 different frame
	buffer configurations defined at any one time, with no restrictions
	upon the sizes of the frames other than that they be defined when
	IMTOOL is started up (a SunView restriction also requires that the
	frame width be even).  An "imtoolrc" file, with corresponding entries
	in the IRAF graphcap, is used to define the possible frame buffer
	configurations for both IMTOOL and IRAF.  These may be modified or
	extended by a site, and the user may have private, custom copies if
	desired.

	The default configuration file is stored in /usr/local/lib/imtoolrc.
	The contents for our system are as follows at present:

	    # IMTOOL -- Defined frame buffer configurations.  Note... 
	    # is only a starting point, and may be modified during...
	    # values are preferred.  The configuration numbers may...
	    # but must be unique and in the range 1-64.
	    #
	    # Format:  configno nframes width height

	     1  2  512  512		# imt1|imt512
	     2  2  800  800		# imt2|imt800
	     3  2 1024 1024		# imt3|imt1024
	     4  1 1600 1600		# imt4|imt1600
	     5  1 2048 2048		# imt5|imt2048
	     6  1 4096 4096		# imt6|imt4096
	     7  1 4096 1024		# imt7|imt4x1
	     8  1 1024 4096		# imt8|imt1x4
	     9  2 1142  880		# imt9|imtfs	full screen...

	    20  2  384  576		# imt20|imtgec	GEC CCD detector format
	    21  1 3040  976		# imt21|imtkpca	KPCA detector format

	The frame size to be used is defined by the client program (the DISPLAY
	task) at image load time.  In the case of IRAF, this is done via the
	stdimage environment variable, e.g.,

		cl> reset stdimage = imt1600

	This is converted into the frame buffer configuration number (via the
	'cn' parameter in the graphcap entry) and passed on to IMTOOL via a
	a few unused bits in the otherwise IIS compatible datastream headers.

	2. Multiple frame buffers are now supported by IMTOOL.  As far as
	IMTOOL is concerned there could be any number of frame buffers (subject
	to memory limitations), but DISPLAY task limitations currently limit
	us to up to 4 frames; this will be plenty for most applications.

	3. The display window is now completely decoupled from the frame buffer
	size, i.e., the same modest sized window is typically used regardless
	of the frame buffer size, relying upon pan to access the full frame.

	4. A frame blink option has been added.  Frame selection for viewing
	may be done either under program control or with the mouse or keyboard
	in any of several ways.

	5. A "smooth pan" feature has been added.  This smoothly pans the
	image to the new center, insteadof going there in one step.  The big
	step pan is still the most useful, however.

	6. The colorbar is now implemented differently, allowing it to always
	be visible on the screen regardless of the window size or pan offset.
	The colorbar may be turned off an on via the setup panel if desired.

	7. The setup panel and frame menu now contain a number of new items,
	e.g., register all frames, turn blink on and off, enter a list of
	frames to be blinked, adjust the size of the display window to fit
	the full frame, display the next frame in sequence, save the current
	frame in a Sun rasterfile, load the current frame from a Sun
	rasterfile, and so on.

	8. The setup panel has been made shorter so that it will fit "behind"
	most display windows.  If you use it frequently, it may be most
	convenient to leave it open all the time, and use the L5 function
	key to display it (move it to the front) when needed.  It can also
	be repositioned to an otherwise unoccupied area on the screen if
	desired.

	9. Output of the pixel intensity in cursor readout mode was added in
	an earlier revision.

	10. I/O to the server is now bidirectional (image data can be read
	back as well as written to the server), allowing use of the erase-
	option in the DISPLAY task to write into subregions of the frame
	buffer, e.g, for mosaics.  Only the last WCS is saved.

	11. The manual page has been updated.

	The parameters for the different frames, e.g., monochrome or
	pseudocolor, slope and offset of the transfer function, pan offset,
	WCS, coordinate lists, etc., are independent.  When you change frames
	all the values appropriate for that frame are set.

	There were many other changes and bug fixes probably not worth noting
	here.  Basically, while the prototype display server is still pretty
	limited in some ways (full interaction with applications programs is
	not supported, no graphics and text overlay support), it now does the
	most basic things fairly well.  Probably all of this will change in
	six months or so when SunOS 4.0 comes out - the NeWS/X in this will
	probably trash both GTERM and IMTOOL, and when the features in IMTOOL
	and the X based CFA XIMAGE are merged into the final display server.
	Read the new manual page for additional details.  (written 1/3)

------------------------------------
Updated tucana, orion, irafx@draco from lyra.  (1/6)
Updated pegasus and octans from tucana.  (1/7)

sun/screendump.c
	For Sun rasterfile output, the colortable length was being output as
	NGREY*3 (256*3) rather than NGREY, due to a confusion about the use
	of the length parameter in rasterfiles (usage differs in the rasterfile
	header and in a colormap struct).  This is a bug, but the generated
	rasterfiles would actually be legal rasterfiles, since the colortable
	length was being recorded correctly - it was just that more than 256
	bytes of data were being stored for each colortable.  (1/7)

sun/imtool.c
pkg/images/tv/display/iisers.x
	1. In imtool.c, added some protection against being passed a negative
	or zero config number.
	2. In iisers.x (DISPLAY), added a max(0,... to the code which encodes
	the frame buffer configuration number in the TID field, to avoid
	passing a config of -1 to the display server, if the 'cn' field is
	absent from the graphcap entry for the device for some reason.  (1/7)

sys/etc/symtab/mkpkg
sys/etc/symtab/README
sys/etc/symtab/stsize.x +
sys/etc/symtab/zzdebug.x
	Added a new routine STSIZE to the symbol table package.  The new
	routine is used to determine the number of chars of file storage
	required to store the symbol table in its external form, e.g., before
	a call to STSAVE to save the table in a file.  (1/8)

local/sun/imtool.c
	In remark_objects(), modified a test used to test if the next file
	line begins with a number to permit the first character to be a minus
	sign, e.g., a negative number.  (1/15)

sys/osb/shift.c
	There was an error in the way the shift-negative case was handled.
	Replaced (a >> bits) by (a >> -bits) in the three routines.  (1/27)

unix/as/zsvjmp.s
unix/os/zdojmp.c +
unix/os/mkpkg
	Currently one of the hardest parts of a UNIX port is writing the
	ZSVJMP/ZDOJMP routines, since the routines are complex and must be
	coded in assembler.  In an attempt to simplify this task I have
	rewritten the routines to interface to the standard C library
	setjmp,longjmp routines.  Some assembler code is still required,
	since setjmp cannot be called as a function, but must instead be
	called in the context of ZSVJMP by a jump.  This appears to work,
	but more testing is required.  At present I am making the change
	only on tucana (the Sun/3 - MC68020).  (1/29)

unix/os/zgcmdl.c
	This routine is called from IMFORT (host level) programs to get the
	command line as a string.  Since the routine is in a support library
	and does not have ready access to the main, it cannot access ARGC and
	ARGV directly, but must instead use a heuristic to guess where the
	arrays are stored, relative to some well know landmark.  The technique
	used to do this was working on the VAX and the Sun-3, but would fail
	on the Sun-4.  A different heuristic was substituted which works in
	all cases.  In this, the well known landmark is 'environ', which points
	to the environment list array.  We assume that ARGC and ARGV are
	stored immediately before the environment list array.  This holds on
	all the machines currently at hand, but the routine should be regarded
	as potentially host system dependent.  (1/31)

unix/hlib/mkpkg.sf.SUN4
	Added an entry to the list of files requiring special compilation due
	to optimizer bugs.  In file imfort$imemsg.x, the length of a Fortran
	character*(*) string is passed as an argument in an input register.
	The register value has been modified by the time the register is later
	used to pass the string length on to _i_len (the F77 len intrinsic
	function), causing an incorrect string length to be computed, resulting
	in string overflow in a subsequent call to F77PAK.  (1/31)

local/sun/imtool.c
	IMTOOL will now print "cannot be used on monochrome displays" and exit,
	rather than dump core on a segmentation violation during startup.
	(1/31)

unix/boot/wtar/wtar.c		[lyra,tucana]
vms/boot/wtar/wtar.c
	The WTAR program was incorrectly writing a short block at the end of
	the tar file, contrary to the tar format specification.  Now it always
	writes a full block.  (2/4)

sys/mkpkg
	In the module libmain.o, changed the
		
		$set XFLAGS = "-c"
	to
		$set XFLAGS = "-c $(HSI_XC)"

	since this entry compiles os$zmain.c, which is part of the HSI.  (2/4)

local/sun/imtoolrc
dev/graphcap
	Added some more entries to the site-specific section of the imtoolrc
	file (predefined frame buffer configurations).  (2/5)

		# Some site specific formats for NOAO.
		20  2  384  576		# imt20|imtgec	GEC CCD d...
		21  1 3040  976		# imt21|imtkpca	KPCA dete...
		22  1 1520  128		# imt22|imt2df1 2D-Frutti
		23  1 1520  256		# imt23|imt2df2 2D-Frutti
		24  1 1520  512		# imt24|imt2df5 2D-Frutti
		25  1 1520  960		# imt25|imt2df9 2D-Frutti

dev/termcap
dev/cachet.dat
pkg/cl/builtin.c
pkg/system/help/t_help.x
sys/libc/cttset.c
sys/gio/mkpkg
sys/tty/mkpkg
sys/tty/ttygsize.x	+
sys/tty/ttyread.x	+
sys/etc/mkpkg
sys/etc/pagefiles.x
sys/etc/sttyco.x
sys/etc/xttysize.x	+
	Modifications and extensions were made to STTY and the TTY package to
	support terminals which can dynamically change size at runtime, e.g.,
	workstation windows.  This was done using a status query, i.e., an
	escape sequence is written to the terminal commanding it to send the
	screen size, and then the response is read back and decoded.  This
	technique raises the possibility of blocking if a character is lost
	(easily recovered from by having the user type return), but has the
	advantage that it works over remote network connections to possibly
	foreign host machines.

	1. The new routine XTTYSIZE was added to ETC, and calls to this routine
	were added in pagefiles.x and t_help.x.  XTTYSIZE recompute the screen
	size and resets the values of the ttyncols and ttynlines environment
	variables.  If the terminal supports querying of the screen size, the
	screen size is determined by such a query, otherwise the default values
	given in the termcap entry for the device are used.  This routine is
	not intended to be called in regular applications code; applications
	should continue to access the environment variables directory, or use
	TTYSTATI (which does the same thing).  This will still work, since once
	any system task like PAGE or HELP is called after the screen size
	changes, the environment variables are updated, and all subsequent
	tasks which use these variables automatically pick up the new screen
	size.

	Note that calling XTTYSIZE globally updates the values of the ttyncols
	and ttynlines environment variables for the entire process tree.  If
	the procedure is called from within a task executing in a connected
	subprocess, the task posts a command to the STTY task in the CL which
	is where the actual querying of the terminal takes place.

	2. The new routine TTYGSIZE and the associated routine TTYREAD were
	added to the TTY package.  These are the low level system routines
	called by XTTYSIZE (when called from the STTY task in the CL) to do
	the actual i/o to the terminal to determine the screen size.  Two new
	termcap parameters are defined to describe terminals which support
	this capability.

		qs	Command sequence to be sent to the terminal to query
			the screen size in characters.

		wh	A string used as input to the pattern matching
			facilities to determine when the full response to
			the screen size query has been received, as well as
			to decode the response.

	The qs capability is a simple fixed control sequence.  The wh string is
	more complicated, serving both as a pattern and as a decoding format.
	For example, here is the entry for the GTERM SunView virtual graphics
	terminal:

		:qs=\E[18t:wh=\E\[8;%H;%Wt:

	The %H and %W fields tell where the screen width and height appears
	in the response sent by the terminal.  All other characters appearing
	in the string must match what is actually sent by the terminal.  Note
	that this string is used as input to the pattern matching code, hence
	all the usual pattern matching characters are recognized (the %H and
	%W fields are a special case, and are preprocessed into sequences of
	the form "%[0-9]*" before patern matching takes place).  Any data read
	from the terminal before the pattern is matched is probably type-ahead,
	and is pushed back into the input stream minus the matched substring.

	3. A new option "resize" was added to the STTY task, i.e., to sttyco.x
	in ETC.  "stty resize" causes the values of ttyncols and ttynlines to
	be reset; the terminal is queried for the screen size if such queries
	are supported, otherwise the termcap defaults are used.  This feature
	is not really intended for the user (although it can be used), and was
	provided mainly for XTTYSIZE.  Setting the terminal type with STTY will
	also cause the screen size to be queried if possible.

	For example,

		cl> stty resize show
		gterm40 ncols=80 nlines=47 

	will cause the terminal to be queried for the current screen size,
	update the environment accordingly, with the current settings being
	displayed as shown.

	4. In LIBC and ETC, the calling sequence for the STTYCO procedure was
	modified to add the arguments "ttin" and "ttout", the file descriptors
	of the input and output streams to the terminal.  Formerly STDIN and
	STDOUT were assumed.

	5. In the termcap, the logical device entries 'gterm24', 'gterm34',
	'gterm40', etc., were all converted into aliases for 'gterm'.  All are
	equivalent now, and use of only 'gterm' is recommended.  The .ttyswrc
	function key definitions, used to quickly change the screen size,
	are retained as they are still useful for quickly resizing the screen,
	but it is no longer necessary to run STTY after a resize to set the
	new screen size.  A new entry 'gterm-nqs' was added for using GTERM
	with auto screen size querying disabled.  This may be desirable when
	working over a noisy modem connection, which could prevent the screen
	size from being determined reliably.

sys/gio/gpagefile.x
	Modified to call gdeactivatews and greactivatews only if the
	workstation is activated when the routine is called.  (2/6)

sys/fmtio/parg.x
	When printing negative integer numbers of type short or char in octal
	or hex, the number of digits actually printed would correspond to type
	long, with way more sign extension than is valid for a machine word.
	Added some special case code to eliminate the extra sign extension,
	which is only an artifact of the use of GLTOC to encode the number.
	(2/7)

unix/hlib/login.cl
vms/hlib/login.cl
	Modified to print the message

		set terminal type to U_TERM...

	immediately before executing stty U_TERM, to warn the user that the
	terminal type is being set to the indicated type.  (2/10)

pkg/images/tv/display/t_dcontrol.x
	Added some code to set the values of iis_[xy]dim and iis_config from
	the graphcap entry.  (2/11)

sys/tty/ttygsize.x
	Disabled the screen size query when STTY login or playback mode is in
	effect.  (2/12)

dev/termcap
dev/cachet.dat
	Making the gtermNN (gterm24,gterm34,etc.) simple aliases for 'gterm'
	was a mistake.  When autosizing is disabled the termcap entry
	determines the default screen size, hence the separate entries are
	still needed; they have been restored.  The gtermXX entries are set
	up to disable autosizing, hence entry 'gterm' must be specified to
	make use of the autosize feature.  (2/17)

pkg/cl/eparam.c
sys/libc/cxttysize.c +
unix/hlib/libc/xnames.h
vms/hlib/libc/xnames.h
	1. Added a new routine c_xttysize() to the LIBC package.
	2. Modified EPARAM to call c_xttysize to read the screen size,
	allowing autosizing.  (2/17)

unix/boot/rtar/rtar.c
vms/boot/rtar/rtar.c
	This code contains a heuristic used to determine whether a file on the
	tape is a text or binary file, which it must know in order to create
	the file on disk on systems like VMS.  This heuristic was failing for
	FITS files, which have an ASCII card iamge header which resembles a
	text file except for the lack of line delimiters.  I had to make the
	same change to the RTAR code as was made to ZFACSS some time ago, for
	it to recognize this case of a binary file.  (2/17)

pkg/system/help/t_help.x
	XTTYSIZE is now called only when paging the output and the output is
	not redirected, to avoid the terminal query when screen oriented
	terminal output is not desired (as in a pipe, or in a background job).
	(2/17)

iraf/sys/fmtio/dtoc.x
	The input format-code argument (fmt) was being used directly in a
	logical test, rather than the internal lower case version, causing
	the routine to be partially case sensitive to the floating point
	format code character (efg etc.).  (2/19)

unix/os/zfacss.c
	When called to test the file type, this routine would hang when called
	on a unix FIFO type file, due to the blocking-open associated with this
	type of file.  The routine stats the file and only looks at it if it
	is a regular file, but it was unnecessarily opening and closing the
	file whether or not it needed to read from it.  (2/19)

---------------------------------
Version 2.6 of Sun/IRAF was frozen and taped.  (2/24)

sys/fmtio/gstrcat.x
	Fixed a bug in gstrcat - the string length being returned was one
	greater than it should be.  (2/25)

sys/gio/nspp/portlib/flash1.f
sys/gio/nspp/portlib/flash2.f
sys/gio/nspp/portlib/flash3.f
sys/gio/nspp/portlib/flash4.f
sys/gio/nspp/portlib/flushb.f
sys/gio/nspp/portlib/preout.f
sys/gio/nspp/portlib/z8zpii.f
sys/gio/nspp/sysint/packum.x
sys/gio/nspp/sysint/loc.x
sys/gio/nsppkern/writeb.x
	The NCAR code used a function LOC, evidently a non-standard intrinsic
	function on the ancient Cyber machine the code was originally developed
	on.  We ported the code by emulating the function, but it turns out
	that the new Fortran compiler on the Sun-4 has its own LOC intrinsic
	function which doesn't behave quite the same way, hence the 'stdplot'
	gio kernel was failing on the Sun-4.  I fixed the problem by changing
	all LOC references to LOCI.  (2/28)

sys/vops/mkpkg
	Horrible bug!  A user reported that the VOPS routine aiftrx (inverse
	fourier transform) was not working properly.  Careful testing showed
	that the code was correct, but that the combiled object in the VOPS
	library did not agree with the code, even though the module dates
	looked ok!  This turned out to be due to a bug in the mkpkg file,
	which has probably been there since the file was written around 1985.
	In the $ifolder clause, the actions were "cp file.x ak", which is a
	UNIX, not MKPKG, command, which MKPKG was evidently ignoring every
	time it tried to updated the ./AK versions of the files.  This was
	changed to "$copy file.x ak/file.x", and all is well.  (3/2)

unix/boot/spp/mkxc.csh
	Renamed to mkxc.sh.  (3/9)

unix/hlib/libc/kernel.h
unix/os/irafpath.c +
unix/os/mkpkg
unix/os/zalloc.c
	I added a new utility routine IRAFPATH to the UNIX/IRAF kernel.  Given
	a filename, this routine searches the standard IRAF runtime directories
	for the file, and returns the absolute system pathname of the file if
	found.  In particular, on hosts like the Sun which can have multiple
	bin directories for different architectures, the routine will find the
	(HSI) executable appropriate for the current host.  (3/10)

unix/boot/spp/xc.c
	Modified XC to use IRAFPATH to determine the pathnames of the XPP and
	RPP executables.  (3/10)

mkpkg
unix/mkpkg.sh
unix/hlib/install		[SUN/IRAF only]
unix/hlib/irafuser.csh
	For Sun/IRAF, modified the HSI to permit multiple copies of the HSI
	executables.  This is necessary to be able to use a single copy of IRAF
	to support multiple incompatible binaries, e.g., sparc and mc68020.

	1. To the 'unix' directory (host$), added subdirectories bin.sparc and
	bin.mc68020.  The second field is what is returned by "mach" on a Sun.
	The bin directory appropriate for a particular node is called HBIN,
	and is defined as such in the irafuser.csh file, although HBIN need
	not be defined to run the system.

	2. All the .e files formerly in HLIB are now kept in HBIN.  The .csh
	executable files are still in HLIB, since we can use one copy for both
	architectures.  Runtime selection of the appropriate HBIN is via
	symbolic links set by INSTALL (see below), or via the IRAFPATH routine.

	3. The INSTALL script was extensively modified to support multiple
	HSI binaries.  A Sun-4 server configured for both sparc and mc68020
	hosts will have separate /usr.SPARC and /usr.MC68020 directories;
	these are the "/usr" directories for the two types of machines.
	IRAF can be installed anywhere, provided it is on a disk partition
	which can be accessed from all nodes, either directly or via NFS.
	Each machine type is assumed to have its own local/bin directory,
	e.g., /usr/local/bin, where /usr is linked to /usr.MACH.

	Since root can only modify files on the local node, the INSTALL script
	must be run on the central file server.  To install the local (sparc)
	copy of IRAF, one runs INSTALL in the usual way, e.g.,

		% cd $hlib
		% install
	
	To install the MC68020 version of IRAF on the fileserver, for access
	by all Sun-3 nodes,

		% cd $hlib
		% install -m mc68020

	For this to work properly, one must carefully enter the correct
	pathnames, since the defaults will be for sparc rather than for
	the mc68020, e.g.,

		iraf root	can be made the same for both systems
		imdir 		can be made the same for both systems
		tmp 		can be made the same for both systems

		/usr/bin	/usr.SPARC/bin or /usr.MC68020/bin
		/usr/local/bin	/usr.SPARC/local/bin or /usr.MC68020/local/bin

	When run on the Sun-4 host, /usr/bin is the same as /usr.SPARC/bin,
	and /usr/local/bin (if there is one) is /usr.SPARC/local/bin.
	For the Sun-4 installation, the script will put links to the
	host$bin.sparc executables into /usr/bin, and install the suntools
	executable into /usr/bin.  For the Sun-4 (MC68020) installation,
	the links in /usr.MC68020/local/bin will point to host$bin.mc68020,
	and the MC68020 suntools executable will go into /usr.MC68020/bin.

	As before, although all versions of the executables are maintained
	online and any version of the system may be executed, only one version
	of the objects and libraries is online at any one time, and the system
	must be reconfigured before a version of the system can be updated.
	For example, assume the system is currently configured with the SPARC
	objects.  Typing

		% cd $iraf
		% mkpkg f68881

	would reconfigure the system for the f68881 binaries.  One could then
	log onto a Sun-3 diskless node and update the f68881 binaries, after
	which the SPARC binaries could be restored with mkpkg sparc.

	A boostrap of the HSI will automatically update the binaries in the
	appropriate HBIN directory.  If a single directory is subsequently
	updated, however, the new executable will be placed in HLIB, and after
	testing one must manually move the executable to the appropriate HBIN
	directory.  (3/10)

unix/sun/Makefile
local/sun -> unix/sun
	1. The custom suntools sources (formerly local/sun) have been moved
	to unix/sun.
	2. The suntools.e executables are now installed in the host$bin.XX,
	rather than in LOCAL.  (3/10)

local/.login
	FLOAT_OPTION is not used for the Sun-4 (it will cause an error if
	defined), hence this is now conditionally defined depending upon the
	machine type.  (3/10)

local/notes.orion -
doc/ports/sun4_sep87.doc
	Appended the contents of the "notes.orion" file to the record for the
	Sun-4 port, and deleted the orion notes file, which we won't need
	anymore.  (3/10)

dev/hosts
	Changed the iraf/bin in the entry for orion to iraf/bin.sparc.  Updated
	on all nodes.  (3/10)

unix/gdev/sgidev/sgidispatch.c
unix/gdev/sgidev/mkpkg.sh
unix/hlib/sgi.tab -
	Simplified SGIDISPATCH considerably by using IRAFPATH.  The "sgi.tab"
	file is no longer used; the translators may be anywhere irafpath can
	find them, but are expected to reside with the other HSI executables.
	(3/11 SRo)

unix/os/zfioks.c
	I made an attempt to use RCMD and the /etc/hosts.equiv mechanism to
	implement connections to friendly hosts in the local network without
	requiring login authentication.  Unfortunately, for this to work the
	process calling RCMD must have uid=root, and it is not possible to
	set root ownership on the IRAF executables, hence IRAF cannot use the
	equivalent host mechanism (at least, without some sort of intermediary,
	which would be too inefficient).  (3/12)

unix/boot/spp/rpp/rpprat/defs
unix/boot/spp/rpp/rppfor/*.f
	I had a problem with "too many characters pushed back" in a compile,
	and upon investigation discovered that the pushback limit was set to
	100 characters, a very small amount.  I increased this and a number
	of other size limiting parameters affecting macros - the maximum
	definition size is now 2048, the max pushback is 3192 chars, and the
	total amount of storage reserved for definitions was increased by
	50%.  (3/13)

unix/os/zfiopl.c
unix/os/zfiolp.c
	The ZOSCMD primitive, used to send commands to the host shell, provides
	filename arguments which may be used to save any stdout or stderr
	output in a file.  If the filenames are omitted the stdout and stderr
	are left alone, i.e., left connected to the streams inherited from
	the parent process.  The bug occured in the printer and plotter drivers
	ZFIOLP and ZFIOPL, when called from a connected subprocess, i.e., a
	child process of the CL.  In the case the standard i/o streams are
	the IPC channels to the CL, and any output from the shell would be
	sent to the CL, possibly corrupting the CL IPC prototol.  I changed
	the calls to ZOSCMD in the two drivers (in the dispose spoolfile code)
	to open /dev/tty for shell output, rather than inheriting the streams
	from the CL, if the process is a connected subprocess.  (3/25)

pkg/images/tv/display/t_display.x
	Modified the DISPLAY program to accept either "wcsdir" or "WCSDIR".
	(3/28)

---------------------------------
Updated all Sun/IRAF systems.  (3/25,28)

unix/as/zsvjmp.s
unix/os/zdojmp.c			[VAX only]
unix/os/mkpkg
	Installed the more portable version of ZSVJMP/ZDOJMP, which transform
	into calls to the UNIX setjmp/longjmp, in the BSD (VAX) UNIX/IRAF HSI.
	The original code was more compact and faster for the VAX, but the BSD
	code is often used as a starting point for ports to new machines, and
	the more portable version is a much simpler technique to code.  (3/28)

sys/fmtio/ctowrd.x
	This routine was returning an incorrect function value, the number of
	non-white characters converted from the standard input.  There was
	also a problem with how quoted strings were handled.  (3/31)

sys/osb/miipak8.x
sys/osb/miipak32.x
sys/osb/miipak16.x
sys/vops/achtgen/*.x
	Added entries for TY_POINTER and TY_STRUCT to the TY_INT switch in the
	case statements (one for each SPP datatype) in these routines.  (4/2)

sys/etc/symtab/stalloc.x
	Modified to align to double, rather than int, buffers allocated in the
	symbol table.  (4/2)

---------------------------------------
IRAFX updated.  (4/3)

unix/portkit +
unix/mc68000 -
	Replaced the old MC68000 directory by a new directory PORTKIT,
	containing updated notes and replacement source files for porting
	the 4.3 BSD version of UNIX/IRAF to new machines.  (4/4)

unix/os/irafpath.c
unix/boot/bootlib/ossysfile.c
unix/boot/spp/xc.c
	1. In BOOTLIB, modified os_sysfile() to call irafpath().
	2. In XC, replaced the calls to irafpath() with calls to os_sysfile(),
	   so that all file-searching is done through this one call.
	3. Modified irafpath() to add support for searching user defined
	   libraries, in addition to the default action of searching the
	   standard libraries.  To make use of this feature the user must
	   define the environment variable IRAFULIB, the value of which
	   consists of a whitespace delimited list of directory pathnames
	   (trailing underscore optional).

	The purpose of this change is to provide greater flexibility for
	debugging software developed outside of the standard system, e.g.,
	during testing and before the software has been installed.  This
	allows VOS software which includes <file.h> style include file
	references to be tested outside the system without having to modify
	the installed versions of the referenced include files.  It is not
	intended as a means of adding new system libraries to the standard
	search path.  (4/5)

pkg/images/imdebug/mkpkg
	Modified to produce the local executable "xx_imdebug.e" rather than
	"x_imdebug.e", with the named changed to the latter at install time,
	as per current standard practice.  (4/7)

sys/vops/mkpkg
sys/vops/tf/mkpkg
sys/vops/aveq.gx +
	Added a new vector,vector->scalar operator, AVEQ, used to compare two
	vectors for equality, returning a boolean result.  (4/11)

unix/boot/mkpkg/tok.c
vms/boot/mkpkg/tok.c
	1. Modified MKPKG so that system file names of the form "<file.h>" can
	appear in the argument lists of $IF directives.  (4/14)
	2. Generalized further to include most other macro statements. (4/15)

unix/hlib/install
unix/sun/imtool.c			[SUN/IRAF]
unix/sun/mksuntool.csh
	1. Modified IMTOOL to use "HOME" rather than "home" as the user login
	directory.
	2. Fixed a bug in mksuntool.csh that would cause it to unnecessarily
	rebuild the suntools subdirectory.
	3. Updated the Sun/IRAF INSTALL script, changing the pathname of the
	imtoolrc and manual page files from $iraf/local/sun to $iraf/unix/sun,
	to reflect the recent move of the code to the HSI.  (4/16)

unix/sun/imtoolrc
dev/graphcap
	Added two new IMTOOL logical devices:

		imtcryo		512x800
		imtgcam		348x800		(4/16)

unix/boot/spp/rpp/rpprat/defs
unix/boot/spp/rpp/rpprat/declco.r
unix/boot/spp/rpp/rppfor/declco.f
	Modified RPP to conditionally output the IMPLICIT NONE statement
	(a nonstandard extension to Fortran) in every subroutine or function
	declaration.  The define IMPNONE in the 'defs' file should be
	uncommented and the Fortran for declco.f generated, to enable this
	feature.  This was added for Convex/IRAF, but should be of general
	utility since IMPLICIT NONE is a common extension.  (4/17)

vms/*
	Updated the VMS/IRAF HSI.  Copied to lyra and did a diff/merge, leaving
	an up to date copy on lyra.  About the only thing affected was the RPP
	sources; everthing else has been kept up to date.  (4/17)

----------------------------
Updated IRAFX@draco.  (4/17)

unix/hlib/mkpkg.sf		[VAX-UNIX/IRAF]
	Commented out the special file list entries for the aadd*, amap*, and
	awsu* VOPS entries.  The hand optimized versions of these routines
	date back to the early days of BSD UNIX (4.1), when the compiler was
	not so good, but nowadays the optimizer is good enough so that they
	are probably not worth maintaining.  (4/20)

pkg/images/tv/display/dsulut.x
pkg/images/tv/display/display.h
pkg/images/tv/display/t_display.x
	Added a capability for a user defined lookup (intensity transformation)
	table.  (Coded by SH).  (4/21)

sys/gio/stdgraph/stgrtty.x
sys/gio/stdgraph/zzdebug.x
	The routine which reads from the status line was modified to echo \r\n
	when either \n or \r is typed in by the user to terminate an input line
	of text.  Since writing a newline to the status line erases the line,
	this will cause the text input up to that point, e.g., a prompt
	followed by the user's response, to be cleared, giving the user some
	positive feedback to indicate that the newline was seen.  Clearing the
	line is also consistent with the model of the status line as a one-line
	terminal screen.  This change to the semantics of status line i/o may
	affect some programs, although it should be harmless.  (5/1)

---------------------------------
Updated tucana and irafx@draco.  (5/1)

sys/fio/vfntrans.x
	Change directory commands such as the following would not work:

		cl> cd imio.pl/plio

	This turned out to be due to the filename mapping code, which was
	losing the .pl when it occurred as part of a subdirectory name
	followed by a /.  The code was changed so that any . delimited fields
	occuring in a / delimited subdirectory name are considered part of
	the root subdirectory name, rather than being parsed off and treated
	as filename extensions.  (5/2)

sys/mtio/mtalloc.x
	Fixed a typo in the file header.  (5/9)

unix/sun/imtoolrc
	Changed the frame buffer width for the GEC format from 384 to 386.
	(The actual width is 385 but imtool requires that it be rounded to
	an even number; a user complained about the missing column).  (5/10)

unix/os/alloc.c
unix/os/getproc.c +
unix/os/mkpkg
unix/os/mkpkg.sh
	Fixed a bug which would cause device allocation (magtape) to fail
	over the network.  What would happen is that a remote user using the
	magtape would not be logged in on the local node, even though they
	had a kernel server executing with the device allocated.  A local
	user could then reallocate and "steal" the device from the remote
	user (or vice versa).  This was fixed by adding code to alloc.e to
	test if the given user has any processes executing on the server node
	for the device.  (5/10)

unix/os/zmain.c
unix/os/zfioks.c
	1. In Sun/IRAF, if one submitted a bkg job from a CL running in a
	terminal window and then subsequently selected "Exit Suntools" in the
	root Sunview menu to give the parent CL the axe, the bkg CL job
	would be killed too; this would not happen if one logged out of the
	foreground CL before exiting suntools.  This was probably due to
	suntools sending SIGTERM to all processes in the same process group
	as the terminal window.  The fix was to modify ZMAIN.C to put a
	detached process (such as a bkg CL) in its own process group.
	This fixes the signal problem, and also prevents a detached process
	from reading from the terminal of the foreground process, e.g., to
	satisfy a password query (the detached process will now be suspended
	indefinitely (SIGSTOP) if it attempts such a read).

	2. ZFIOKS.C was modified to prevent a detached process from trying
	to access the foreground process's terminal for a password query.
	The server connect will fail, causing KI to attempt to access the
	resource on the local node.  This is questionable (it has always
	been that way), but it works out well if the resource is a file on
	a shared (NFS) disk, since the result will be a valid file access.
	(5/16)

pkg/softools/mktags.x
	Someone suggested that we make an alphabetized index of all the
	procedures in the VOS.  I used the MKTAGS task to do just that, but
	had to increase the size of the internal tables to accomodate such
	a large number of files and procedures.  (The index files are stored
	in /u2/sites on lyra, and were not installed in the main system).
	(5/17)

pkg/cl/cl.par
vms/hlib/motd
unix/hlib/motd
vms/hlib/zzsetenv.def
unix/hlib/zzsetenv.def
	Incremented the version number to 2.7 - will continue to note system
	changes here until this version stabilizes.  (5/21)

--------------------------
Updated tucana and irafx@draco.  (5/21)

sys/fio/nowhite.x
	This procedure, used to delete whitespace from filenames, evidently
	was not working at all, due to a (ch < ' ') test which should have
	been a (ch <= ' ').  (5/25)

sys/gio/gascale.x
sys/gio/grscale.x
	These routines were not checking for INDEF when computing the min and
	max values of the data arrays.  (6/2)

unix/sun/gterm.c
	Changed the default "close workstation" action to NO_ACTION.  Most
	people seem to be annoyed when the graphics plan automatically gets
	obscured at the end of a plot, and would prefer to control the
	windows manually with the keyboard function keys.  (6/2)

pkg/lists/rgcursor.x
pkg/lists/rimcursor.x
	These tasks would abort if they could not GOPEN the stdgraph or
	stdimage stream.  This was not necessary, since may still be possible
	to read either cursor even if a graphics kernel cannot be connected,
	so I put iferr() conditionals around the gopen's to ignore any errors.
	(6/2)

unix/sun/Makefile
unix/sun/imtool.cursor
unix/sun/imtool.c
unix/sun/mouse.c
pkg/images/tv/display/iis.h
pkg/images/tv/display/mkpkg
pkg/images/tv/display/zzdebug.x
pkg/images/tv/display/imdrcuro.x
pkg/images/tv/display/imdrcur.x
sys/libc/mkpkg
sys/libc/cimdrcur.c
unix/hlib/libc/xnames.h
unix/hlib/zzsetenv.def
pkg/cl/mkpkg
pkg/cl/modes.c
	Added a simple interactive image cursor readback mechanism (=IMCUR).
	For the moment, this bypasses both cursor mode and the whole of GIO,
	and goes directly to the display server to carry out a logical cursor
	read.  While the interface is limited, it does provide a working
	=imcur, and it remains device independent (or as much so as the rest
	of the "display" interface), and uses the network interfaces, allowing
	cursor readback from a display server on a remote node.

	1. Modified IMTOOL to add support for another pseudo-IIS subunit 020,
	used for logical cursor reads (a logical cursor read knows about the
	WCS and can return image pixel coords, and can use the keyboard or
	mouse to trigger the cursor read).  When a cursor read is initiated
	the mouse is grabbed and moved into the IMTOOL window, and the regular
	2 Hz "plus" cursor becomes an 8 Hz circular cursor, with the rapid
	blinking intended to indicate to the user that a cursor read is in
	progress (there is no other indication).  A key or the left mouse
	button (if aliased to a key) is used to terminate the cursor read,
	at which time the cursor value is returned to the client program,
	the regular IMTOOL cursor is restored, and the mouse position is
	restored to what it was before the cursor read began (usually a
	different window).  Sampling and frame buffer coordinate cursor
	reads are also supported.

	2. To the DISPLAY package I added a new routine IMDRCUR, used to
	read the logical image cursor of the named device (a lower level
	routine imdrcuro is used for multiple reads on an open device).
	Since the new routine needs to be called from the CL for a cursor
	read, the display package library was exported to lib$libds.a.
	Note that these new routines are temporary and will go away in
	the future, but not until the new display interfaces are in place.

	3. Added a C binding routine c_imdrcur to LIBC.

	4. In the CL, modified the query code in modes.c to call c_imdrcur
	to satisfy a physical image cursor read.  Note that the image cursor
	(stdimcur) may still be redirected to either stdgraph, the terminal,
	or a list file.  In the future, image cursor reads will be performed
	in cursor mode, using the (currently nonexistent) stdimage kernel
	to access the physical device.

	5. The default value of the environment variable "stdimcur" was
	changed from "text" to "stdimage", but only on Sun/IRAF for the
	moment, since people running IRAF on other systems are likely to
	be accessing a display device that does not yet have cursor input.

		reset stdimcur = stdimage

	To use the new image cursor facilities, make sure that "stdimcur" is
	set to "stdimage", and then type "=imcur", or run any program which
	reads the logical image cursor, e.g., lists.rimcursor or apphot.*.
	(6/2)

--------------------------
All development systems updated.  (6/2)

unix/sun/gterm.c
	Added a new function key F7 (to go with F8 and F9 which are already
	used).  This key toggles the graphics between fullscreen mode and
	some other size window.  (6/5)

unix/sun/imtool.c
	Added multiple cursor marker types (the marks drawn at the cursor
	position when a cursor read is terminated).  The 'Cursor mark' entry
	was deleted from the frame menu and replaced by a choice option in
	the setup panel.  The choices are None, Circle (the cursor pixrect),
	Cross, and Square.  The default is Square.  Circles are the most
	visible, Squares are modest and unobtrusive, and Crosses are real
	small.  (6/5)

dev/graphcap
	Added a couple of new device kernel parameters for the image display
	devices.  LC, if present, indicates that the display server supports
	the new logical cursor operation, described under the IMTOOL revision
	of 5 June.  This parameter was added to all IMTOOL entries in the
	system graphcap file.  A second parameter BS specifies whether the
	device is byte swapped.  (6/7)

sys/mkpkg
	Added an entry for the new library LIBDS.  (6/7)

pkg/images/tv/display/mkpkg
pkg/images/tv/display/iishdr.x
pkg/images/tv/display/iisio.x
pkg/images/tv/display/iispio.x
pkg/images/tv/display/iisrcr.x
pkg/images/tv/display/iiswnd.x
pkg/images/tv/display/imdrcuro.x
pkg/images/tv/display/imdrcur.x
pkg/images/tv/display/imdgetwcs.x
	1. Modified the DISPLAY read cursor code to add support for cursor
	reads to the standard IIS device with no LC (logical cursor) operation
	at the server level.  The cursor read sequence is very similar to that
	for a LC read with IMTOOL, i.e.,

	    - Enable cursor blink (the shape does not change in this case).
		There is currently no prompting other than the blinking cursor.

	    - Enter a loop (raw mode ukey read) waiting for the user to type
		a key on the *terminal keyboard* to signal the end of the
		cursor read.  If the key is : the : is echoed and a string
		value may be entered.  If the key is ctrl/z or ctrl/d EOF is
		returned as the cursor value.

	    - When a key is typed to terminate the cursor read, IIS cursor
		blink is turned off, and a small square mark is draw at the
		position of the cursor, by overwriting the pixels in the
		image frame buffer (the graphics overlay is not used).  No
		marker type options are provided for the IIS.  The marker
		is displayed with z=1 pixels, i.e., white with a negative
		transfer function, or black with a positive transfer function.

	While in "cursor mode" (not the normal cursor mode, which isn't
	implemented yet for =imcur) the following keys are special:

	    ctrl/f	display next frame (N' = N+1)
	    ctrl/r	display prev frame (N' = N-1)
	    ctrl/[dz]	EOF

	The same keys are recognized by IMTOOL, but in the case of IMTOOL
	they are recognized at all times, whereas for an IIS cursor read
	they are recognized only while the cursor is blinking.

	To invoke cursor mode for the IIS, the user merely types "=imcur",
	or calls some program such as lists.rimcursor which reads the image
	cursor, after setting STDIMAGE to an IIS device, e.g.,

		reset stdimage = iism70l

	If the IIS is on a remote node the system will prompt for the login
	name and password to be used to access the display on that node.

	Note that the DISPLAY code generates an "IIS compatible" datastream
	(similar to a "Tektronix compatible" datastream for graphics
	terminals), hence anyone who is desperate for interactive cursor
	readback and doesn't want to wait for the full display interfaces
	could in principle interface a different device.

	2. The DISPLAY program and the TV tasks may now be used to drive the
	IIS display from a Sun terminal.  This feature requires special
	support since the IIS is configured for a VAX, hence the bytes are
	swapped relative to the Sun.  The CV* programs are not currently
	supported on Sun/IRAF.  (6/9)

---------------------
All development systems updated.  (6/9)

pkg/images/tv/display/sigl2.x
pkg/images/tv/display/t_display.x
pkg/images/tv/display/display.par
pkg/images/tv/doc/display.hlp
	Modified the DISPLAY program to add support for image scaling via
	pixel replication, to supplement the bilinear interpolation already
	provided.  This was done by adding a new parameter "order", specifying
	the order of the interpolator.  Order 0 gives pixel replication, 1
	gives bilinear interpolation.  Other changes were made to ensure that
	the coordinate system of a greatly expanded image is accurate.  The
	coordinate system used is such that the coordinates [i,j] refer to
	the *center* of the displayed pixel [i,j].  Since the range of the
	display window goes from 1 to N, only half of each pixel on the edge
	of the window is displayed, and the extent of the window is N-
	(expanded) pixels.  This is consistent with the IRAF convention,
	and preserves the information content of the image, but may not be
	what is expected.  (6/13)

pkg/images/doc
	Edited the EXAMPLES section of a number of these manpages to make the
	formatting more consistent (they still need work).  (6/13)

---------------------
Updated all UNIX development systems.  (6/13)

pkg/cl/builtin.c
	A CHDIR command to a directory with a name such as 123 would't work
	unless the directory name string was explicitly quoted.  CHDIR was
	modified to accept an argument of any type, coercing the operand to
	type string before trying to access it.  (6/17)

---------------------
Updated all development systems.
Started a full bootstrap and recompile of IRAF on tucana (need to do this
occasionally to catch compile bugs that creep in).  (6/17)

unix/os/mkpkg.sh
	Added an "rm alloc.o" before building the library; this object is
	the main for a task and should not be in libos.a.  (6/17)

unix/hlib/buglog.csh
unix/hlib/mkiraf.csh
unix/hlib/mkmlist.csh
	Added a "#! /bin/csh" to the top of each script.  (6/18)

---------
All development systems updated.  (6/25)
All development systems updated.  (6/28)
All development systems updated.  (7/1)

unix/os/alloc.c
unix/os/zalloc.c
	The fix recently made to alloc.c to prevent a user on one node of the
	network from stealing a device already allocated by a user on another
	node was fine, but this still left the primitives in zalloc.c, called
	by iraf programs, unable to determine accurately if the allocation
	status of a device in a network.  The VOS would check to see if the
	device could be allocated, and if it were allocated to a user on a
	different node than the node serving the device, the VOS (via zalloc.c)
	would think that the device could be allocated, then when it tried to
	actually allocate it, the alloc.e would refuse to do so, causing a
	confusing error message.

	Fixing this was not trivial, since the test for network device
	ownership requires reading the system process table, which requires
	reading /dev/kmem, which can require root priviledge.  The solution
	was to add a new flag -s (stat) to alloc.e, and modify the code in
	zalloc.c to execute the alloc.e task to check the device status in
	the one case where it mattered.  (7/7)

---------
All development systems updated.  (7/14)

sys/etc/miireadc.x
sys/etc/miireadi.x
sys/etc/miireads.x
	These routines could return more than the requested number of data
	elements in some cases.  (7/25)

---------
All development systems updated.  (7/27)
All development systems updated.  (7/28)

==============================================================================
31 July 1988 - the TUCANA complex, a Sun-3 server plus iraf software
development workstations, replaces the BSD 4.3 VAX 11/750 LYRA as the
master IRAF software development machine.
==============================================================================

Did a full file inventory on lyra, looking for junk files to be deleted.

vms/hlib/share/common.map -
vms/hlib/share/makeshare.cl
	Modified the makeshare script to delete the large "common.map" file
	after the shared library has been built.  (7/31)

LYRA
	No changes after today.  Will be archived automatically when the system
	is taken down for the final time tuesday.  (7/31)

CARINA
	Deleted the entire carina version of iraf and replaced it by the full
	lyra system.  Carina now contains the exact same system as lyra except
	for the devices and motd files.  Hereafter, carina will be used to
	maintain BSD VAX/UNIX IRAF, and will be maintained as a (sporadically
	updated) irafx development system.  (7/31)

TUCANA
	Tucana becomes the new master development system.  Deleted doc, lib,
	math, noao, pkg, and sys and restored from lyra.  Most files are now
	owned by the responsible programmers rather than by iraf, as on lyra.
	Diff/merge check of dev, local, and unix.  Did a full bootstrap.
	A full recompile of the entire system will follow later today.  (7/31)

/u2/sites
	Moved the extra.v25 stuff to /iraf/extra on carina.
	Moved everything else to /u2/sites on tucana.  (7/31)

Moved irafmail facility.
Moved sitemail facility.
Moved aipsmail facility.
Moved vms mail facility.
Moved buglog facility.
Moved emaildb facility.
Moved assorted /local tasks.
	(7/31)

--------------------------
Did a full bootstrap and sysgen of both f68881 and ffpa on tucana.  (8/1)

dev/vi.ed			[VMS]
	The set/terminal command in the host command used to run VI was
	modified (by Nigel) to get around a problem with VI that was causing
	the terminal driver to be left in a funny state - flow control was
	being turned off or something.  The symptom was that after running
	VI, the user would get into a graphics cursor loop, and the raw mode
	cursor read would read a great deal of garbage characters (ctrl/s's),
	causing the cursor mode to get repeated bad cursor reads, beeping
	the terminal for an extended time.  (8/3)

vms/boot/bootlib/osfdate.x
	As an experiment, I changed this to use the file modify date rather
	than the create date to test when a file was last modified.  This may
	cause problems, as we have found in the past that on VMS, the file
	modify date is often changed even when the file data is not modified.
	(8/4)

pkg/lists/*
	Deleted the COLUMNS task.  (8/11)

----------------------------
Updated IRAFX@draco.  (8/13)

vms/gdev/sgidev
	All the VMS/SGI translators have been modified so they require only an 
	input file name.  This fixes the problem of two $F filename expansions
	(input and output files) causing the submit command from the graphcap
	DD string to be truncated.  (8/15 ShJ)

dev/graphcap
vms/hlib/sgiqueue.com
	These files were modified to accomodate the change made to the
	VMS/SGI translators documented above.  (8/15 ShJ)

unix/sun/Makefile
unix/sun/imtool.c
unix/hlib/install
	Modified these files to add support for separate compilation of GTERM
	and IMTOOL under SunOS 4.0.  In the new operating system, which has
	shared libraries, GTERM and IMTOOL are just regular programs and there
	is no "custom suntools" executable.  The new sun directory sources and
	install script will automatically sense the OS version and do the right
	thing on any version of SunOS.  (8/28)

unix/boot/spp/rpp/rpprat/deftok.r
unix/boot/spp/rpp/rpprat/entdkw.r
unix/boot/spp/rpp/rpprat/initkw.r
unix/boot/spp/rpp/rpprat/swend.r
unix/boot/spp/rpp/rpprat/common
unix/boot/spp/rpp/rpprat/defs
unix/boot/spp/rpp/rppfor/*.f
unix/boot/spp/rpp/mkpkg.sh
	Added (experimental) support for a new SPP compiler directive, PRAGMA.
	This is used to advise the compiler about succeeding statements to
	modify the default behavior of the compiler, e.g., to optimize the
	code is some nonstandard way.  The only pragma currently supported is
	'pragma switch_no_range_check', which is used to eliminate the range
	check in a SWITCH statement in cases where the extra efficiency makes
	it worthwhile and it can be shown that the switch will always be in
	range.  The keyword `pragma' is treated as data if the pragma is not
	recognized, so that existing code using this keyword as a variable or
	whatever will not be affected.  (9/5)

unix/sun/imtoolrc
dev/graphcap
	Modified the 2D-Frutti entries after discussions with Steve Heathcote.
	The long (dispersion) axis of the 2D-Frutti is y, not x, as the
	previous entries assumed, and so the x and y dimensions of imt22
	through imt25 entries were interchanged.  An additional entry for the
	largest format of the 2D-Frutti was added (imt28).

	     CN#    device       alias          dimensions

	    imt22  imt2df1x1	imt2df1    	128 x 1520
	    imt23  imt2df2x1	imt2df2    	256 x 1520
	    imt24  imt2df5x1	imt2df5    	512 x 1520
	    imt25  imt2df9x1	imt2df9    	960 x 1520
	    imt28  imt2df9x3			976 x 3040

	The current set of frame sizes and aliases for the 2D-Frutti are
	summarized in the figure above.  (9/6 ShJ/dct)

sys/fio/fstati.x
	Added an entry for F_BUFPTR, which seems to have been inadvertently
	omitted. (9/6)

unix/hlib/clpackage.cl
unix/hlib/zzsetenv.def
	Changed all references to 'sdas' to 'stsdas'.  (9/6)

unix/boot/spp/xpp/decl.c
unix/boot/spp/xpp/xppcode.c
	Increased the size of the string buffer used to store procedure
	declarations text from 2048 to 4096.  (9/19)

pkg/images/tv/display/dsulut.x
pkg/images/tv/display/t_display.x
	1. With the user lookup table option, the buffer for the lookup table
	was being allocated but never freed.
	2. Fixed a typo in a call to pargstr made in an error handler - the
	pointer ztrans was not being dereferenced. (10/4)

unix/hlib/d1mach.f
	Modified to use the IEEE rather than PDP values (presumably we don't
	have any software which actually uses these double constants yet).
	(10/14)

pkg/images/tv/display/gwindow.h
pkg/images/tv/cv/gwindow.h
	The offset to the W_IMSECT string was being calculated incorrectly,
	causing the 4th WCS structure to be overwritten.  This bug was only
	recently detected following addition of some code which looks at all
	the WCS at shutdown time, and which was expecting to find NULLs in
	the high numbered, unused WCSs.  (10/14)

----------------------------
Updated the IRAFX systems (irafx@draco, carina, tucana f68881/ffpa).  (10/14)

unix/sun/screendump.c
	Removed the -s flag from the lpr command in the default R_DISPOSE,
	as this doesn't work any more under SunOS 4.0 (when writing to a
	remote node and the link cannot be made, lpr is sending mail back
	to the user, rendering the option effectively unusable).  (10/17)

lib/nspp.h
sys/gio/nspp/sysint/packum.x
	Delted the SWAP_MCWORDS definition from nspp.h, and modified packum.x
	to use the standard definition BYTE_SWAP2 in mach.h.  (10/18)

sys/libc/csalloc.c
	This file contained a reference to a nonexistent routine STKCMP,
	intended for order comparision of buffers on the stack.  This has
	never been used and it is not clear why we need such a routine,
	so I deleted c_stkcmp and the reference to STKCMP.  (10/19)

----------------------------
Begin merge of revisions from SunOS 4.0 and RoadRunner (386i) ports into
Sun/IRAF.  (10/19)

unix/hlib/config.h
unix/hlib/libc/spp.h
	Increased LEN_JUMPBUF from 16 to 64, to accomodate the worst case
	save buffer size. (19/19).

unix/hlib/libc/kernel.h
	Added a definition of PFI (pointer to function returning int).  This
	is used in a number of OS files.  (10/19)

pkg/cl/main.c
	Changed the definition of the variable "cldebug" from
		int cldebug;
	to
		int cldebug = 0;
	to allow initialization with "adb -w cl.e" to enable debugging.
	Some systems, including SunOS 4.0, don't allocate storage in the
	executable unless the value of the variable is explicitly initialized.
	(10/19)

unix/as.i386 +
unix/bin.i386 +
	Created these new directories.  (10/19)

unix/boot/spp/xc.c
        1. Hacked XC to use F77 only to compile Fortran source files, and to
        use CC for everything else.
        2. Added /usr/local/bin to the list of directories to be searched for
        commands like XPP and RPP.
        3. Changed the defined names from "xpp.e" and "rpp.e" to "xpp" and
        "rpp", since this is how they appear in /usr/local/bin.
        (These changes originated in the 386i port).  (10/20)
         
------------------- 
Sysgen-ed tucana (f68881,ffpa) and updated draco as well.  (10/20)

------------------- 
During the period 21-27 October, the NOAO Sun systems were down for the
upgrade to SunOS 4.0.  The Sun/386i port of IRAF was also completed during
this period.  Some of the following changes were made as a result of these
efforts.

unix/boot/mkpkg/scanlib.c
	Had to add

		#ifdef i386
		#define PORTAR 1
		#endif
	
	at the top of the file to get include <ar.h> to define the appropriate
	library format.  Also, on the 386i, the code which scans the library
	has to deal with the following peculiarities:

	    o	The first "file" in the archive is a dummy entry containing
		symbol information; the name field is null, hence the code
		can skip this entry by checking for archive members with
		null-string names.

	    o	The names of the archive members now have a trailing /,
		e.g., "file.o/", followed by blank padding.  Previously
		only the blank padding was there.  I modified the code to
		accept either / or blank as the name delimiter.

	I also added some debug code which prints the name and date of each
	archive member as the library is scanned, if debug > 1.  These
	changes should be portable to other systems.  (10/19)

SUNBUG - f77
	The command "f77 -c -O file.c" produces the following:

		Assembler: /tmp/optim.01231.5.s
			aline 1	: Warning: cannot field update- '.file' not
			   on first line

	This prevents use of f77 to compile C files, at least on the 386i!
	(It works if the optimizer is not used).  Will have to modify XC to
	use CC instead.  (10/19)

unix/hlib/mkpkg.inc
unix/hlib/mkpkg.sf.I386 +
	Added code for case FPU = i386 (not really an fpu), plus a special
	file list for the 386.  (10/19)

unix/hlib/cl.csh
	Added a case for the i386, similar to that for sparc.  (10/19)

---------------------
Sysgen completed with a half a dozen files with errors, but no executables
were linked due to a library conflict with the dummy zsvjmp.s I wrote.  (10/20)

unix/as.i386/zsvjmp.s
unix/as.i386/zzdebug.c
	Wrote a ZSVJMP.S for the 386i (80386), plus a little test program to
	make sure it works.  (10/20)

---------------------
Linked x_system.e and it runs on the first attempt!!  (10/20)
Start another sysgen - ignore files that didn't compile for now, until we
see which executables they prevent from being linked.

sys/vops/acht.gx
	On the 386i, statements of the form "b[i] = a[i]", where B was
	COMPLEX and A was INTEGER*2, revealed a compiler error in the
	386i Fortran compiler (the error was a syntax error in the assembler
	code input to the system assembler).  I decided that assigning
	an integer*2 to a complex in a straight assignment wasn't a very
	safe thing to do anyhow, so the generic source was changed to
	generate  "b[i] = complex(real(a[i]),0.0)" instead, whenever B
	is complex and A isn't.  (10/20)

sys/vops/amod.gx
	No changes here, just logging the compiler bug.  The code is as
	follows:

	     do 110 i = 1, npix
		c(i) = mod (a(i), b(i))

	where A, B, and C are integer*2.  Once again, the compiler is
	generating incorrect assembler for this case, causing a "syntax error"
	from the assembler (evidently, because of the rather restrictive
	instruction set of the 80386).  I am not sure there is anything in
	IRAF that uses this routine anyhow, so we will try to ignore it for
	now.  (10/20)

noao/astutil/pdm/pdmstatistics.x			pdmstats.x
noao/digiphot/apphot/center/apcentercolon.x		apcencolon.x
noao/digiphot/apphot/center/aprefitcenter.x		aprefitcen.x
noao/digiphot/apphot/center/apfitcenter.x		apfitcen.x
noao/proto/t_mkhistogram.x				t_mkhgm.x
	Shortened the names of the above source files.  These will not compile
	on the 386i, which has a limit of 14 characters for the names of
	modules in object libraries (which are COFF format libraries from
	Sys V, hence the 14 char limit).  (10/21)

unix/hlib/mpkg.sf.I386
	Turned off the optimizer for conrec.f, srface.f, pwrzi.f.  An apparent
	optimizer bug was causing declaration of an external which would cause
	an unsatisfied exernal error at link time.  (10/21)

pkg/images/iminfo/t_imstat.x
	Replaced some ==INDEF constructs by IS_INDEF, and took the n=n+1 out
	of the inner loop, since it isn't needed.  (10/21)

unix/boot/mkpkg/host.c
	Disabled the ranlib (library rebuild) on the 386, since it uses COFF
	type libraries, which don't need to be ranlib-ed.  (10/21)

unix/hlib/mpkg.sf.I386
unix/as/amods.s +
	Edited the assembler for the VOPS amods routine (to work around the
	compiler bug mentioned above) and placed the assembler version in
	AS and added the file to the special file list for the 386i.  (10/21)

---------------------------------
Restored IRAF on the ORION complex (Sun-4 plus Sun-3 nodes), now running
SunOS 4.0.  Booted up the system and sysgen-ed the sparc, ffpa, and f68881
binaries.  (10/23-25)

---------------------------------
Following a period of outage due to hardware problems, the TUCANA complex
came back on the air, also under SunOS 4.0.  Moved the ffpa and f68881 binaries
over from orion, and udpated the few files that had been modified.  (10/27)

sys/ki/kishownet.x
	ki_shownet, and hence the task NETSTATUS, now checks for name
	collisions between node name aliases and the system environment
	list, and prints a warning message if the same name is found
	in both name spaces.  (10/28)

unix/sun/gterm.c
	Several users pointed out that if enough GTERM windows are opened
	up, the system will run out of some critical resource and it won't
	be possible to open any more windows (for some reason this did not
	happen until we upgraded to SunOS 4.0).  This was traced to the
	system actually running out of /dev/win* entries.  According to
	/etc/pstat -i, GTERM was using 11 entries, whereas SHELLTOOL was
	using only 2.  This is somewhat reasonable since GTERM does provide
	more windows, but a factor of 5 is too much.  It turns out that
	things like the setup panel and "pause" panel in GTERM were using
	window descriptors, even when not in use.  GTERM was modified to
	create the windows each time they need to be used, reduing the number
	of window descriptors used from 11 to 5.  (11/2)

sys/fio/mkpkg
sys/fio/close.x
sys/fio/filbuf.x
sys/fio/ungetci.x +
	The hitherto little used pushback feature of FIO has come into use
	recently, leading to the following bugs being fixed.
	1. filbuf.x did not permit pushback on a string or spool file,
	although it worked for ordinary files.
	2. A bug in close.x was causing fcanpb (cancel pushback) to be
	called with the wrong file descriptor.
	3. Added a new routine UNGETCI to complement the already existing
	routine GETCI.  (11/7)

sys/memio/salloc.x
	Found and fixed a horrible bug, while testing the QPOE code on the
	386i.  The alignment logic in the stack allocation code (SALLOC)
	had an error which would cause it to work for types up to the size
	of an int or real, but which would cause misaligned buffers for types
	double or complex.  The MALLOC code was correct, however.  (11/8)

pkg/cl/builtin.c
	Added a new builtin "d_m" which prints some information on memory
	usage, i.e., the dictionary and stack. (This is like the old d_d,
	except that since it is not built into the gramar with lookahead,
	the incomplete input '>>>' nonsense is avoided).  (11/8)

unix/hlib/libc/make.h -
	Deleted this obsolete file, a make template used back in pre-mkpkg
	days when makefiles were used to maintain IRAF.  (11/10)

-----------------------
Snapshot of development system sent to CFA.  (11/14)

unix/os/irafpath.c
	Added a #ifdef i386 case so that irafpath() would be able to find
	bin.i386.  (11/14)

unix/boot/mkpkg/host.c
	Added support for IRAFULIB (a user defined private library) to
	the $checkout and $checkin directives.  For example, in

		$checkout libex.a lib$

	if file libex.a is found in IRAFULIB, that version is checked out,
	rather than the one in the system directory lib$.  (11/15)

sys/fio/fseti.x
sys/fio/fstati.x
	Added the case F_FILESIZE so that low level systems programs which
	extend files by direct calls to the kernel routines can update the
	file size in the FIO file descriptor.  (11/17)

unix/hlib/mkpkg.sf.S34
	Added a special file list for SunOS 3.4, with the SunOS 4.0 files
	thrown in so that it will work for both systems.  (11/18)

unix/boot/bootlib/osfiletype.c
	Added ".fits" and ".mip" as known "source file" extensions, i.e.,
	file types not deleted by rmbin, and movable between machines with
	wtar -o.  These are really binary file types, but they are closer
	to text in their usage.  (.mip is something just invented to denote
	a machine independent file of some type).  (11/18)

---------------------------------------
Updated tucana.ffpa(Sun-3/OS4.0), pegasus(Sun-386i/OS4.0), and
serpens(Sun-3/OS3.4).  (11/17-18)

pkg/cl/edcap.c
	Removed a pointless restriction to 10 characters on the length of
	the editor name.  (11/19)

unix/gdev/sgidev/sgidispatch.c
	Fixed an automatic coredump if called with no arguments.  (11/22 SRo)

sys/imio/db/idb.h
sys/imio/db/idbfind.x
sys/imio/db/idbfind.x
sys/imio/db/idbdelf.x
sys/imio/db/idbaddf.x
	Modified these routines to automatically truncate the keyword passed
	in by the caller to 8 characters, in accord with the FITS conventions
	used to format user keywords.  (11/28)

------------------------
Updated orion.  (11/28)

sys/imfort/db/impstr.x
	In the call to amovc, added a 1 to the computed offset of the output
	string; numeric values were being output shift one space to the left
	of what the FITS format requires.  (12/2)

pkg/system/directory.x
	Removed an extra argument from a call to getline().  (12/2)

------------------------
Updated tucana (Sun-3, f68881,ffpa), orion (Sun-4, Sun-3 nodes), serpens
(Sun-3 under 3.4, f68881, ffpa), pegasus (386i) and carina (BSD/VAX).
(VMS/IRAF update to follow tomorrow).  (12/2)

vms/boot/bootlib/osfiletype.c
	Added ".mlb" to the list of known binary file types, and ".fits" and
	".mip" to the list of known "source" file types.  (12/3)

vms/hlib/share/mkpkg
vms/hlib/share/irafcom.x
	1. Modified irafcom.x to add a ,QUAD to the entry for the MEM psect.
	2. Added an entry "mkpkg x_mkshare" to automatically build the
	mkshare executable, which is needed before the shared library can
	be built.   (12/4)

VERSION 2.7 EXPORT
