Home / old_versions / experix_r7
Name Modified Size InfoDownloads / Week
Parent folder
experix_r7_dist.tgz2 2011-03-25 830.0 kB
experix_r7_book.tgz2 2011-03-25 188.5 kB
install_r7 2011-03-25 35.5 kB
README_r7 2011-03-25 13.5 kB
Totals: 4 Items   1.1 MB 0
Download new experix:  experix_r7_dist.tgz2  experix_r7_book.tgz2
Use previous version of helpers:  experix_r4_helpers.tgz2

Follow instructions in install_r7.


------------------------------------------------------------------------
files changed since experix_release_r6 Wed Feb 4 2009:
------------------------------------------------------------------------
svgalib/screen...     put maxc=128

amoeba.h
defines.h             new globalints entries
errors.h
functions.h
structs.h             added cqe_iqc member to cq_entry_s
svgalib/svgadefs.h

amoeba.c              added the "jiggling" feature
array2.c              fixed the "shift" action and multi-dim indexing in abin
command.c             cleanup and bugfix the command-tail ops
command1.c            added \b operator and did some cleanup
display.c             changed displays of complex and polar types
errors.c              new codes
svgalib/exp_svga.c    terminal width setting/resetting
files.c               st_mode examination; tilde expansion
fpr.c
svgalib/frbflib.c
globals.c             new globalints entries, and cpuhz
graph1.c              added heavy-plot graph options
help.c                tildeexpand function
math.c                bug fix
mm.c                  new
numbers.c             ignoring NF_DZ and NF_RE
stack.c               dimension preservation in | operator
svgalib/svgafunc.c
svgalib/svgaserv.c    put in ^[[C and ^[[D actions
svgaserv_d.c
threads.c             added timer thread monitoring
try1.c                new args:  -c=##  -a=string  -#!
updown.c              time/C and getting cpuhz from /proc/cpuinfo
vars.c
xpxdif.c
zdhist.c              mmap pointer keeping; survey function

zdhist.xpx            survey, survpic, survex commands

keywords.doc
amoeba.hlp
file.hlp              st_mode examination
graph1.hlp            heavplot graph options
histogram.hlp         clarifications
in.experix.hlp        \b operator
miscellaneous.hlp
ss.arblocks.hlp
ss.cmndtail.hlp       minor correction
ss.defercom.hlp
ss.misclops.hlp
ss.numerals.hlp
ss.stackman.hlp       \b operator
time.hlp              time/C
tthread_mon.hlp       new
tu.experix.hlp
xcd.hlp

book/arrays
book/amoeba
book/debugging
book/files
book/numbers
book/stack
book/time            time/C

------------------------------------------------------------------------
changes since experix_release_r6 Wed Feb 4 2009:
------------------------------------------------------------------------

------------------------ experix policy changes ------------------------

Moved the stdo-<pid> and stde-<pid> output files into /tmp.  Affects
help.c and updown.c

Performed fcntl(...FD_CLOEXEC) after most open() calls and also for stdout
and stderr. But not stdin! That prevented svgaserv working. (not using
O_CLOEXEC because one of our systems is too old to know about that).
Consequences are being monitored and further changes might be in order.
(command.c display.c errors.c files.c help.c try1.c updown.c vars.c xpxdif.c
models/fpr.c models/zdhist.c
svgalib/exp_svga.c svgalib/frbflib.c svgalib/svgaserv.c svgalib/svgaserv_d.c)

Removed the platform.h file. This had only one thing: #define HAS_RDTSC
to allow use of the timestamp register. CPUs without that are now so very
obsolete that this is no longer considered necessary. If compiling for such
a CPU, be sure to grep all the code for "rdtsc" and make necessary changes.
(structs.h  updown.c  xpxdif.h)

-------------------------- experix api changes -------------------------

The zdhist command now ignores records with value 0.  Previously these
were treated as a fatal error, but we find a small number of data files
do have a few zero-value records at the start, so it seems best to ignore
them and move on.
zdhist can now save the mmap pointer between invocations for greater
efficiency in doing zdshift and similar things.  This is controlled by
prepending 2 instruction characters on the path.
A zdhist/s functionality has been added, to make a data record survey.

Filepaths given to the file command may now begin with '~', which is
expanded to the home directory.

The file/q command has been added:  calls lstat and stat on a given path
and returns a value that classifies the result, the size for a regular
file and the st_mode fields.  (files.c  file.hlp)

A "jiggling" feature has been added to amoeba, applying random perturbations
to the trial points.
(amoeba.c amoeba.h amoeba/hlp book/amoeba)

A startup option -c=## has been added to set the scrolling length of the
command input line, to accomodate different fonts.  See more under "non-api
changes".  (try1.c)

In all experix displays, the notation for complex and polar numbers has
been changed.  The comma has been removed, and for polar types a 'p' has
been added.  This allows experix complex and polar output (such as the log
file) to be moused directly over to the command line.
complex:  was (real,imag) is now (real imag);
polar:    was (mag,arg)   is now (mag arg)p
(may still be places to update--
display.c  book/stack  book/numbers  book/files  book/debugging
help/ss.arblocks.hlp  help/tu.experix.hlp  help/ss.numerals.hlp
help/ss.stackman.hlp  help/keywords.doc)

The array concatenation operator  |  has been altered so that when arrays
have the same lower dimensions, those are preserved and the highest dimen-
sions are added.
(stack.c  help/keywords.doc help/ss.misclops.hlp  book/arrays)

Two new flags have been designated in globalints[13], corresponding to new
entries globalints[36] and [37], to make unop() and binop() (operator
processing functions) not report division by 0 and argument range errors, so
that results (albeit partially incorrect) can be obtained in arithmetic and
math operations without stopping when these errors happen.
(defines.h  numbers.c  help/miscellaneous.hlp help/keywords.doc)

Added the time/C command (CPU timestamp converted to seconds)
(updown.c globals.c time.hlp book/time)

Made the \q and \qc operators accept 0 for the capacity argument.
(command1.c)

Created the \b operator (substring extraction).
(command1.c help/in.experix.hlp help/ss.stackman.hlp)

Timer commands and signal commands can now run forever, by giving 0 for the
repetition count. (updown.c threads.c) 

updates on source/models/fpr.c:
> new members of amxblock (limhits,limhitsx)
> replaced bitops with logical ops
> replaced Gaussian photon noise with Poisson
> lowered the minimum limits on some things data array length, pre-bleach
  length and a few other things; see the MIN_... #defines

abin/S (array shift operation) now copies the first or last point into the
positions that are vacated by the shift. abin%x performs abin/x on a whole
multi-dimensional array treated as a single array. (array2.c, abin.hlp)

Comparison operators now work with strings (using ASCII values).
(stack.c  ss.valuecmp.hlp)

Handling of {bracketed} and "quoted" strings in the command line and files
has been fixed up a little so they can include the \" and '" operators and
the quote character given as \'"

Added invocation arg. -a=string to make it stack the string before starting.
(try1.c)

Graph command has '-' heavy-plot option and '_' extra-heavy option, using
m='2' or '3' in svgaserv Pp/Pv/Rp/Rv commands
(graph1.c / graph1_devel.c, graph1.hlp )

Timer resolution (rate of timer signal delivery) is settable to 10 and 100
per sec by the time%1 and time%0 commands respectively. The time/H command
and <DT operator take this into account.
(keywords.doc  functions.h  svgalib/exp_svga.c  command.c  globals.c
threads.c  updown.c  ss.defercom.hlp  time.hlp)

A variable is added for monitoring timing in timer_thread_r (feature included
by conditional compiling, controlled by #define TTHREAD_MON)
(defines.h  threads.c  updown.c  tthread_mon.hlp)

Added a '*' option to time/H and signal/H commands to prevent a given timer
or signal being present multiple times in queue simultaneously
(updown.c  threads.c  time.hlp)

Created a 'nice' variable (globalints[38]) to affect priority of execution
of commands that are queued by timers and signals. See time.hlp for details.
(structs.h, defines.h, globals.c, updown.c, threads.c, command.c, time.hlp)

Added the <DS operator, to run pending commands from the signal queue (i.e.
do it now, not waiting until the 'nice' variable counts down)
(command.c  in.experix.hlp  ss.defercom.hlp  time.hlp)

------------------------------ bug fixes -------------------------------

The \/< operator was misbehaving-- did a general cleanup of these ops and
repaired it  (command.c)

Faults from defective _bit_ operators-- see below

Fixed a mistake in math.h that caused ]R to repeat data when the target is
an integer

Fixed time/H: 1) tnum was compared to 0.0; should be 0
2) the wrong thing was being checked for presence of commnad-tail ops;
caused spurious error message in some circumstances

findcomname (command1.c) was not putting synonym number in a command item
pointer stack level

The "which stack to use" test at the start of submit_command was backwards.
(command.c)

The abin command was applying action multiple times on first unit of a
multi-dimensional array instead of moving on to following units. Fixed.
(array2.c)

---------------------------- non-api changes ---------------------------

Added function tildeexpand in help.c:  returns malloC'd copy of given
string, with initial '~' expanded to home directory.
(help.c  functions.h  keywords.doc)  

In command.c, replaced some experix stack manipulation code with calls to the
appropriate functions for that

Moved malloC and freE from updown.c to new file mm.c
Moved memory management integrity checks from commandquit (updown.c) to
mm_check (mm.c)

It is desirable to have readline assume different widths for the text screen,
depending on the font used on the command input line.  This has been provided
by using the TIOCGWINSZ and TIOCSWINSZ ioctls in screen_setup, and the
globalints entries gi_GWINSZ and gi_SWINSZ, and the -c=## startup option to
preset gi_SWINSZ.  It doesn't do all that we want, in particular we can't get
it to change width during an experix session, and we can't find a workaround
for some misbehaviour in readline, but it's an improvement.
(try1.c  exp_svga.c  globals.c  defines.h)

at startup, get cpu clock rate from /proc/cpuinfo; put in cpuhz
(updown.c globals.c)

Improved coding for \q \qc \" operators. (command1.c)

Somehow we got bad code from bit operators in command.c-- trying to run a
defective command resulted in a crash due to 2 freE's on a pointer.
Changing bit ops into logical ops fixed it. Now all the _bit_ operators in
experix and svgaserv user-space code have been changed to code using | and &
operators. This affects most of the .c files, and asm/bitops.h is removed from
structs.h. There are a few places where we need to consider whether these
are critical sections such that changing an atomic bit test-and-change operator
into a non-atomic instruction sequence might introduce a race condition. 

StackPopN (stack.c) now applies the target-type-relevant value checks instead
limiting all values to signed 32-bit integer range.

------------------------------ xpx changes -----------------------------

zdhist.xpx:  added the survey, survpic, survex commands; used the mmap
pointer saving feature in zdshift

--------------------------- auxiliary changes --------------------------

in svgalib/exp_svga.c, added writing all stdo_thread output (i.e. stdout
processed for svgaserv) to /tmp/record_acom, for use in debugging svgaserv.
This is turned on by compile switch -DRECORD_ACOM

Changed the maxc entries in all the svgalib/screen... files from 0100 to 0128

Changed the 'Pp...' and 'Rp...' commands so they can plot heavy points and
lines by drawing extra adjacent points. See in svgaserv.c. Files changed:
svgaserv.c  svgafunc.c  svgadefs.h

----------------------------- minor issues -----------------------------

Some computers will beep and others will not or will do it sometimes.  I have
commented out the relevant code in source/svgalib/svgaserv.c (look for BEEP).

----------------------------- major issues -----------------------------

svagaserv is messing up the command input line when that gets long enough
so that readline has to scroll through it
Maybe this was because OLD_READLINE was used in globals.c and updown.c.
Latest build doesn't have this problem.

----------------------stuff to finalize after testing on toshiba

updown.c
remove #include <asm/page.h>
add in commandinit:    gi_PAGE_SIZE = getpagesize();
in the comprompt command, add the special readline escape bytes around the
terminal control escape sequences.  Omit if OLD_READLINE #defined

structs.h
add #include <readline/readline.h>

globals.c
special readline escape bytes are placed around terminal control sequences
in initcommandprompt.  Omit if OLD_READLINE #defined

xpxdif.c
remove #include <asm/page.h>
change PAGE_SIZE to gi_PAGE_SIZE

defines.h
added to globalints:  gi_PAGE_SIZE

book/install
updated list of compiler switches

experix__pcm308.c   changes to make it work on that kernel

-----------------------svgaserv bug fixes---------------------------
New version of readline is using ^[[C and ^[[D, so these have been added.
(svgafunc.c svgadefs.h)

             changes being tried in the display system
Do we need to malloc inpca in all vdrs?  It's used in shiftline and putchVDR
And if we need it in all vdrs maybe embed it in the vdrstruct, not make it a
separate malloc
Source: README_r7, updated 2011-03-25