spec

Software for Diffraction

changes

highlights of modifications for spec release 4.02

RELEASE 4.02.04

These notes summarize the cumulative changes made for spec release 4.02.04 as of May 12, 1997.

New Tty Control In tty_move() and tty_fmt()

All the tty attribute-control strings available with the tty_cntl() function can now be included in special character sequences (as in \[md] and \[me] to start and end bold mode, for example) in the strings passed to the tty_move() and tty_fmt() functions.

New end_mac Built-In Macro

If a macro named end_mac is defined, its contents will be executed when spec exits in normal fashion. The end_mac macro will not be run if spec is killed or exits due to a fatal error. If there is an error while executing the commands in end_mac, spec will exit anyway, and the end_mac macro will remain defined.

2D Associative Arrays Enhanced

The following syntax using 2D associative arrays is now available:

test["index1"]["val0"] = "data0"
test["index1"]["val2"] = "data2"
test["index2"]["val1"] = "data1"
test["index2"]["val3"] = "data3"

for (i in test["index1"])
        print i, test["index1"][i]

if ("val2" in test["index1"])
        print "yes"

GPIB and CAMAC Sharing Fixed

The HP SICL GPIB controller can now be configured as a shared controller. GPIB problems that occurred when the KS 3929 SCSI-to-CAMAC controller was configured as shared but the GPIB controller was not have been fixed.

Fixed Motion Bug With Large Backlash and Move Magnitudes

A very old bug, where motor backlash movements didn't get done when the product of the backlash magnitude and the move magnitude exceeded the maximum value for a long integer, has been fixed.

Code For Princeton Instruments ST116 PDA Fixed

Support for the ST116 PDA has been updated to work with spec release 4. The mca_get() routine now returns the number of points read, as is the current convention. The status byte sent by the instrument at the end of the data stream and formerly returned by mca_get() is now available using mca_par("status_byte").

Command Completion Tuned

spec now does context-dependent command completion for the lsdef, undef, prdef, lscmd, syms and unglobal commands when linked with the GNU readline library. (Command completion lists the possible valid completions or fills in a unique completion when the <tab> key is pressed after partial input.)

x11filt Core Dump Fixed

A bug that sometimes caused a core dump from the X11 filter program x11filt when DISPLAY could not be opened has been fixed.

RELEASE 4.02.03

These notes summarize the cumulative changes made for spec release 4.02.03 as of April 18, 1997.

Wizard Password Can Be In a SPECD/passwd File

The spec wizard password can now be located in a file named passwd in the spec auxiliary file directory (useful if shadow passwords are used, as the shadow file containing the encrypted password can be read only by root). The format of the file is the same as in the conventional passwd file, although this file need only contain the one line for the specwiz user. The wizard password is used with the ^W command in the edconf configuration editor and with wizard mode with the spec_par("specwiz", 1) function.

The uct and counters Macros Fixed Up

The counters macro will now check that the scaler channels are within range. The uct macro will now print only the first six counters, if there are more than six counters configured. Note, the uctn macro can provide an updated display of more than six counters.

Support For Bit 3 VME Workstation Controllers Fleshed Out

spec now supports access to the full A32 and dual-port memory address space, including DMA transfers to and from spec data arrays, with the Bit 3 Model 466-1/467-1 VME controllers on Sun platforms and the Model 487-1 VME controller on HP platforms.

Support For Princeton Instruments CCD Camera Controllers Improved

The code for the Princeton Instruments CCD camera controllers has been revised a bit. Kinetics mode is now supported. The image_par() function argument "kinetics" is used to turn the mode on or off. The argument "kinwinsize" is used to set the number of rows in the kinetics-mode window.

Bug Fixed With 0xFF Printed After Parsing Macro Functions

Odd behavior, introduced with the recent fix of an obscure bug dealing with parsing macro functions, where a character with ASCII value 255 would be sent to the screen after a macro function was parsed, has been corrected.

RELEASE 4.02.02

These notes summarize the cumulative changes made for spec release 4.02.02 as of March 31, 1997.

New vme_move() Function

A new vme_move() function copies data between VME A32 address space and spec data arrays. See the vme help file for more information.

Macro Source Files Displayed With prdef

The prdef command will now display (as a comment) the name of the source file in which the macro was defined. This feature, which is on by default, can be disabled using spec_par("show_prdef_files", 0).

Can Now Configure Parity For raw Serial Interface

The options raw evenp and raw oddp can now be selected on the Interfaces screen of the configuration editor for generic serial devices.

Bug with cdef() Fixed

Using the chained macro function cdef() with just one argument will create an empty macro with the given name. If the macro already exists, it will do nothing. Previously, such usage was undefined.

file_info() Bug Fixed

A bug with the new file_info() function, where use with a single argument to test for the existence of a file could result in a segmentation violation, has been fixed.

Bit 3 VME Support on Sun Platforms

The Bit 3 S-BUS VME controllers for SunOS 4.x and Solaris 2.x platforms are now supported.

New Feature For NSK Motor Controller

The function motor_par(mne, "read") will now return the strings read for the NSK motor controller.

Tweak Macro Enhanced

You can now change the tweak step size in the tw macro by typing a numerical value at the tw prompt.

More Flexible ESRF Format Read

The fmt_read() function for the ESRF data-file format now works with headers that are not exactly 1024 bytes long.

Additions To gmci Geometry

The gmci geometry, as used at CEA in Grenoble, now includes the latest revisions from the users there.

RELEASE 4.02.01

These notes summarize the cumulative changes made for spec release 4.02.01 as of March 9, 1997.

New Default X11 Plot Titles

spec now sets the default X11 plot title to the name by name of the running program followed by the filter number as in fourc 1, fourc 2, sixc 1, etc. The plot title can still be changed using plot_cntl("title=...").

Improved File-Write Error Handling

When there is a write error on output to a file, spec will turn off further output to the file until there is a on() or open() call. That gives the user an opportunity to close() the file if no further output is possible, due perhaps to a down NFS connection. Previously, spec would continue attempts to flush any pending output, even after write errors.

New xxx_par(... "device_id") Partially Implemented

The motor_par(), counter_par(), mca_par(), mca_spar() and image_par() functions all now take a new "device_id" parameter. In the case of ESRF device server devices, the return value is the string name of the imported device. For some ESRF devices, the return value will be "?" if the device was not successfully imported. For non-ESRF devices, the return value may be "?" or some other identifier such as GPIB address or CAMAC slot.

exit Bug In Macro Functions Fixed

A bug, whereby an exit command in a macro function didn't reset to command level, has been fixed.

Mnemonic Checking Fix Fixed

The 4.01.15 fix to prevent the same mnemonic being used for both a motor and a counter led to some problems when restarting spec after it terminated abnormally. Now the mnemonics are kept straight.

scans.4 Fix For @A Array Data

A bug in scans.4.c, where \ continuation lines of @A array data were not ignored when the MCA data wasn't asked for, has been fixed.

X25 surf Modifications

The surf geometry for the NSLS X25 diffractometer will now work with either a one- or two-motor detector-height stages.

Distinct Configuration For NI GPIB-ENET

There is now a distinct configuration choice for the National Instruments GPIB-ENET controller on platforms that support that device. With the GPIB-ENET configuration selected, spec will block keyboard signals during calls to the subroutines in the NI cib.o module, as experience has shown those routines are not rebust with respect to signals.

More Changes For the MM2500/ITL09 Motor Controllers

On the advice of the manufacturer, spec now sleeps for 100 msec before reading a response to a command sent to the MM2500/ITL09 motor controllers. Perhaps that will help.