Download experix_r3_dist.tgz2 experix_r3_book.tgz2 experix_r2_helpers.tgz2
(nothing has changed since experix_r2_helpers so if you already have that you
don't need to download it.)
Follow instructions in install_r3.
------------------------------------------------------------------------
changes since experix_release_r2 Mon Jan 15 2007:
------------------------------------------------------------------------
Changed the version number to 6.0 to recognize significant api changes and
device driver interface changes
experix api changes
-- These operators: ==I ==0I !=I !=0I >I >0I >=I >=0I <I <0I <=I <=0I
now make a 3-element result array, showing [ first index where it is true,
last index where it is true, number of times it is true ].
-- added a member to the amctrl array given to the amoeba command, to support
the new function value convergence exit criterion
-- completed the gradient and projection command (amoeba/p), which had been
described but not actually made operational
-- added the "random vector" optimizing method (amoeba/r)
-- in the FPRs command, added the fminconv member of amxblock_t to Crit array
(test of this is pending)
-- very minor change in use of the LINE_ERRC macro in drivers: now put the
line "#define LINE_ERRC" before "#include "../../source/xpxdif.h"" in order
to turn off that feature. Affected files: source/xpxdif.h
drivers/das16/experix__das1602.c drivers/pcdas16/experix__pcdas16.c
-- FC6 gave us a new problem: for some reason the pid that a device driver
got from the kernel's 'current' struct was no longer equal to that recorded
in gi_TIMERPID and provided for the XDC_CPID field in the control page
during device initialization. So we have eliminated this use of XDC_CPID,
using instead a security value kept in the globalints array (gi_XDC_DCKEY),
which the timer thread initializes equal to gi_TIMERPID. The value in
gi_XDC_DCKEY is given to the driver at initialization and then every driver
call parameter list includes it for validation, in par[1], with parameters
after that moved up one place in the argument array. Affected files:
all drivers, and source/xpxdif.h source/xpxdif.c source/threads.c
source/defines.h source/globals.c help/keywords.doc help/xcd.hlp
-- order of returns in xdc/E has been changed; error line number is first
-- breakfunc() increments a counter in globalints. This was added because
gcc-4.1.1 did not put a call to the empty breakfunc() in Cquit_F, so the
debug command was broken. And this counter might possibly be useful.
Affected files: source/updown.c source/defines.h source/globals.c
-- '+' and '-' have been added to FPvalid (characters allowed in filepaths)
-- The exec and shell commands need a complete overhaul. They often fail to
notice termination of child process, and get stuck waiting. Until we have
a fix for this and some other issues, we can use sysdo/e in place of exec
and sysdo/s in place of shell. These do not wait on the child process or
collect status, and they discard stdout and stderr (but with sysdo/s we can
redirect those somewhere else).
-- The \$l operator had an error that made it not detect the 'l', so that it
did \$ and then the main command loop tried to to 'l'. Fixed.
-- Exchanged the parts of Igsa[2], so that the left margin for a scaled graph
is given by the lower part of this. Affected files: graph1.c, graph1.hlp,
graftrix.xpx and other xpx files that use the graph command.
-- Revised the protocol for stepper motor operation using the XDX_PIO driver
command (it was a total mess). Affected files: xpxdif.h and all drivers
and user programs using this.
program reorganization and todo
-- Moved the 64-bit integer division function __udivdi3 out of daq drivers and
put it in dist/drivers/hello/missing.c; code that does 64-bit division
generates calls to this function so missing.ko must be loaded before such
drivers (unless your kernel already has that function).
-- Re-wrote the stepper motor code according to new XDX_PIO specs and put it
in dist/drivers/hello/missing.c; drivers that use this need to have a short
XDX_PIO section like in experix__pcm308.c and missing.ko is loaded first.
-- The pcdas16 driver needs to be finished and tested.
-- Designated drivers/pcm308/test__pcm308.c obsolete; removed real__pcm308.c
-- Removed obsolete stuff from drivers/pport
source/amoeba.c
source/amoeba.h
help/amoeba.hlp
book/amoeba
-- added the function value convergence exit criterion: changes in amoeba()
and Camoeba_F(), and amxblock_t struct
-- completed the gradient and projection feature (amoeba/p)
-- added an optimization method (amoeba/r) which chooses a random line through
the initial point and uses parabolic extrapolation to estimate the lowest
point on that line
source/command.c
-- fixed the \$l operator-- it was failing to detect the 'l'
source/command2.c
-- StackComp() makes a 3-element array for the output of ..I comparisons
source/display.c
-- fixed dumb mistakes in formatting of 8-byte integers
source/files.c
-- fixed misbehaviour of "file/i": incr=0 was resetting the field
source/graph1.c
-- increased the limit on data amount for the graph command
-- exchanged the parts of Igsa[2]
source/numbers.c
-- for ..I ops compop() counts the number of times a comparison is true
source/opclist.h
-- updated description of ..I comparison ops
source/updown.c
-- in Ctime_F added "edx" to the clobber list for asm rdtsc instruction
(this is just fastidiousness; no difference in this instance)
-- revisited this: failed to compile with gcc-4.1.1, so back to original
-- new command: sysdo
source/xpxdif.c
-- in register_xcd, set FD_CLOEXEC on device files so that exec'd processes
do not prevent removing the driver
-- in register_xcd, include a help message "device cookie." in the device
cookie definition
source/xpxdif.h
-- revised the XDX_PIO command protocol for stepper motor operation
source/models/zdhist.c (previously fida.c)
-- numerous revisions and extensions, mainly, ability to logically concatenate
a series of Zeiss data files and to index to an arbitrary time slice in a
file
source/models/zdhist.xpx
-- new file: commands for more complicated zdhist operations
source/models/fpr.c
source/models/fprs.hlp
source/models/fpr.xpx
-- added the new fminconv member of amxblock_t where needed
(test of this is pending)
source/globals.c
-- added '+' and '-' to filepath-valid character set
drivers/hello/missing.c
-- new file, containing functions for 64-bit integer division and stepper
motor operation
drivers/pport/pport22.c
drivers/pport/experix__pport22.c
drivers/prometh/prometh1.c
drivers/pport/experix__pport.c (formerly drivers/pport/experix__pport.c_2.6)
-- in interrupt handler added "edx" to the clobber list for rdtsc (2 places)
-- took out 'static' decls and did other stuff to conform to kernel 2.6 usage
-- numerous changes to conform to new xpxdif specification
drivers/pport/pport.xpx
-- command changes to conform to new xpxdif specification
help/file.hlp
-- removed extra "the"
help/graph1.hlp
-- exchanged the parts of Igsa[2]
help/in.experix.hlp
-- updated description of ..I comparison ops
help/ss.valuecmp.hlp
-- updated description of ..I comparison ops
help/keywords.doc
-- updated description of ..I comparison ops in compop() and StackComp()
-- updated validchar(): now allowing '+' and '-'
book/install
-- note about svgalib problem with FC6
-- note about gpm link problem with FC6
-- note about kernel headers needed in /usr/include/
-- note about possible signal use conflict between experix and svgalib
-- more explanations about help session vt #s with and w/o X-session on
book/amoeba
-- added stuff about fminconv, and re-worked the example
experix_helpers/dist/gpm/readme-gpm-wbm
-- note about link problem with FC6
experix_helpers/dist/gpm/synaptics.c
-- inlined the two calls to ceil() in order to remove mathlib dependency