DspClasses:
* Added filterx.c (there wasn't one before for some reason).
* Vector.c method rms:  Fixed incorrect rms computation.
* Vector.c method set:  Added to init whole vector. Changed
  method reset to use it.
* Tfe.c method magn:  inp/out psd was not really square rooted, so
  the comment to that effect was wrong.  Just changed comment
* Tfe.c method setSize:  Scale factor now computed correctly; mimics
  closely formula used in Psd.m. Results of psd plot now agree with Matlab.
* Psd.c method setSize:  Removed unnecessary call to setDecay(). 
* Psd.c method setSize:  Computes scale factor for rectangular window.
* Scal2Vec.c method doit:  Big changes--- basically added input delay line.
* Added maic classes.
* Allpass.c:  Added checks for minsize; added smart loading.  Only used
  in accProj.
* apslib.c:  Added apsBiqToDirect() to correct unwanted order reduction
  in halfband filter design. This module is in all seismic projects.
* Added Lookup.c

kyotoProj:
In Table.alt, should clip rotary displ units calculate in Act2Tbl
to maxRotation so that table can't be commanded beyond that point.
This was done in Nied2.

hudProj:  MainPanel.alt method update:
Hydraulic enable button likes to click off when turned on because
of race condition between methods hydEnable and update.  Fix with
waitCount2 as done in Nied2.

hudProj, kyotoProj, mocProj, unamProj:
FChannel.alt method zero added.  When turning on hydraulics in MainPanel,
do FChannel.forAll[#zero] just after TChannel.forAll[#zero].

ceaProj, hudProj, kyotoProj, mocProj, unamProj:
When turning on hydraulics in MainPanel,
do UChannel.forAll[#zero] just after TChannel.forAll[#zero].

All seismic projects, including tvcProj:
Psd.c, Tfe.c, Scal2Vec.c, Vector.c, apslib.c.:  the changes mentioned above.

SetptFg.alt:  Fixed longstanding bug where zero master setpoint would
result in a setpoint level of something small but nonzero (like 1.0e-07).
Affects all seismic projects except nied1Proj, which has no setpoint.

TChannel.alt method connectProgram:  fix to connect freq inputs to apc & ahc
when slaving cyclic fg's.

15-Dec-97
ModePanel.alt method setDimension:  vm.setDimension[v, TRUE].
VirtualMachine.alt method setDimension[v, manual]:  TChannel.forAll[
#setDimension, v, manual]
TChannel.alt method setDimension[v, manual]:  The manual parameter
parameter instructs zeroing of fg amplitudes.  This is deemed necessary
because Rod Larson destroyed an actuator at CEA-Saclay after switching
dimensions in the mode panel and then hitting RUN.

18-Dec-97
Reno had a constant problem with the UpTIPC.c error when scope and both
DVMS were up and polling.  Reverted them (and only them) to the old UpTIPC.c.

09-Jan-98
Bug:  Projects with multiple 497 chassis were not getting the Station Controller
crosspoint switches configured--- only chassis # 1.  This affected:
	hud, kyoto, moc, nied2, ntt, srmd, unam
Because the bugs discovered below required updates, changes were made to all
projects for consistency.  Changed:  MainPanel.alt methods init & stn, constants.alt,
custom.alt.

09-Jan-98
Found two bugs requiring updates all around:
1)  When hitting stop button on main panel, the preview (if run) or run
    (if preview) button gets enabled before span reaches zero.  Fix involved
    altering MainPanel.alt methods update and setRun.
2)  If cyclic fg is square, but some other fg is selected, and dimension
    changes from displ to veloc or accel, the square shape in cyclic doesn't
    revert to sine as it would if the currently selected fg is cyclic.  Fix
    to TChannel.alt method setDimension.

09-Jan-98
Changed Ufg.c & dUfg.c to use vout terminal for waveform preview.  No projects
used it anyway.  Since no projects except srmd used this feature, I just copied
the sources into AppSup and AppDsp for each project but didn't compile.

14-Jan-98
unamProj & kyotoProj:  MainPanel method update:  increase max waitCount from
two to four, and put another waitCount around check for external hydraulic
shutdown.

16-Jan-98  Enhancement to Tfe:
Changed:
	Scal2Vec.c:	sample rate reduction added to doit(); methods period/setPeriod
			to set the sample rate reduction period.
	Tfe.c:	methods period/setPeriod added; setSize() changed to deal with
			sample rate reduction period.
	Tfe.alt:	Methods rate/setRate added; init takes tfeRates array;
			method setFilter added to do lowpass & mean removal.
			ofil & ifil are now DspModels--- too bad, because Iir
			inadvertently got saved off to settings files.  Also,
			tfeSizes are stored in settings files.  So REMOVE tfe
			FROM ALL SETTINGS FILES.
	TfePanel.alt:
			additional sample rate control added.
	constants.alt:
			Added "tfeRates" array.
	VirtualMachine.alt
			tfe creation protocol changes
Projects updated with total remake (*.exe, super.dll, & Ariel.x40 files):
	All projects except Nied1.exe, which doesn't have Tfe.

28-Jan-98 & 02-Feb-98
Rls.c, dRls.c, Rls.alt:
1)  Bug fix:  Decay was not being initialized.
2)  Bug fix:  factor(): test for b0=0 when making monic.
3)  Bug fix:  factor(): orderA used when orderB should be.
4)  Enhancement:  Method setDelta/delta added to provide differencing of
    the output when integrator poles are expected.
Changes were made to the master source directory "DspClasses" and to
accProj (used for checkout); NO SEISMIC PROJECTS UPDATED.

29-Jan-98
xmath.c procedure qfactor() would give wrong roots when one root was -1.0.
Changing initial guesses b,c from -2,1 to 0,0 fixed this.  Only Ppc.c and
Rls.c use this procedure.
Changes were made to the master source directory "DspClasses" and to
accProj (used for checkout); NO SEISMIC PROJECTS UPDATED.

02-Feb-98
Vector.c changed to not use beap for allocation to reduce memory reqs.
Alignment param taken out of new().  Classes that called new(Vector)
changed to not set alignment:
	Maic.c, Psd.c, RealFFT.c (comment only),
	Scal2Vec.c, Tfe.c, Vec2Scal.c
Classes using Vector don't assume aligned memory allocs anyway.
Changes were made to the master source directory "DspClasses" and to
accProj; NO SEISMIC PROJECTS UPDATED.

09-Feb-98
dUfg.c method doit changed to write freq input terminal value to freqOut
terminal so it has appropriate value when being driven by an external
frequency source.
Changes were made to the master source directory "DspClasses" and to
accProj; NO SEISMIC PROJECTS UPDATED.

10-Feb-98
Craig S. & Judy found a very bad bug in Fbkgen.c--- the coefficients a0,a1,a2
were transposed (!) resulting in instability above a crossover frequency of
about 2 Hz.  The frf of accel to accel looked very flat regardless of crossover
frequency--- it should be a highpass with a peaking factor of 1.7.  That's
why it was not detected.  If crossover frequency exceeds 2.0, the output goes
to infinity or NAN.
ALL SEISMIC PROJECT MASTERS CHANGED AS FOLLOWS:
	Added fixed Fbkgen.c to AppDsp
	Compiled only Ariel2.x40 (4-dsp projects) or Ariel1.x40 (2-dsp projects),
	leaving all other Ariel images alone.  ONLY THE ARIEL IMAGE NEED BE SENT
	TO CUSTOMERS.
Note that for maximum success of this update, other realtimes updates mentioned
above (dUfg.c, vector stuff, Rls.c) were NOT made. 

26-Feb-98
ceaProj:  custom.alt changed to change estopAction control action from "once"
to "continuous", which is the way hudProj and nttProj are.  Rod noticed the
difference.

18-Mar-98
dAhc.c:  Dan Thompson noticed that mode ivar was not initialized before use.
Could be bad, because setRate does a self->rate[self->mode] = xxx, causing
a write to a random location.
Changes were made to the master source directory "DspClasses" and to
accProj; NO SEISMIC PROJECTS UPDATED.

23-Mar-98
At Nied, found out that observer attributes were not getting broadcast, causing
inconsistent values between channels.  Fixed:
Fbkgen.alt method setFreq:  Added "expand" param & code.
Refgen.alt methods setMinFreq, setMaxFreq:  Added "expand" param & code.
VirtualMachine methods setFbkGenFreq, setRefGenMinFreq, setRefGenMaxFreq:  Added
"TRUE" expand param to forAll.  ALL SEISMIC PROJECTS UPDATED.

24-Mar-98
Reverted UpTIPC.c in CoopsDsp to old version, because NTT is getting sync
connector error messages occasionally.  Reno has already been done; did
all other seismic projects including srmdProj.  Only nied1Proj has been left with
the new version because it runs at 2kHz.
Since new Ariel s/w is required, decided to include the previous updates:
1) Rls.c, dRls.c, Rls.alt, RlsPanel.alt update of 28-Jan-98 & 02-Feb-98
2) xmath.c update of 29-Jan-98
3) Psd.c, RealFFT.c, Scal2Vec.c, Tfe.c, Vector.c update of 02-Feb-98
4) dUfg.c update of 09-Feb-98
5) dAhc.c update of 18-Mar-98
To do change #1 to Rls, need to modify VirtualMachine.alt to add:
	rls			.setDelta[0]

22-Apr-98
Enhancement to Apc (motivated by linear friction welding work):
1) Can turn off input bandpass filters.
2) Can save and restore magnitude & phase.
3) Coefficients w0 and w1 are no longer displayed.
Changed:  Apc.c, Apc.alt, ApcPanel.alt
Also rearranged Pac.alt and PacPanel.alt to mirror Apc.alt and ApcPanel.alt.
Changes made in accProj only; doesn't affect any seismic projects anyway
(if desired, can drop in at a later time).  NO SEISMIC PROJECTS UPDATED.

05-May-98
SeriesFile enhanced with extended header capability in preparation for
B600Proj.  It is backwards compatible with old series files.  Only minor changes to
OliPanel.alt method startSeq and method updateDrvHeader was deleted, due to elimination
of SeriesFile "mode".  Only accProj was updated--- can update seismic projects at a
later time if desired by replacing SeriesFile.alt and OliPanel.alt.
NO SEISMIC PROJECTS UPDATED.

09-Jun-98:  Apc.c & dAhc.c:
Zero crossing detector logic is faulty if the input is zero--- then
the zero crossing gets missed.  A real serious problem if frequency
is high.  Dan Thompson found this one on his dynamic K&C machine, and
it cause weird behavior.  This was fixed in accProj and DspClasses was updated.
NO SEISMIC PROJECTS UPDATED, yet --- do it in a future release.

16-Jul-98
Scott Zwettler informed me of a bug in PidServo.c & dSrv.c (PiServo.c is okay) 
in the "backup" method for mode switching.  If ki <> 0, the integrator state was
being initialized okay, but then reset() was called, which zeros the integrator
state.  ALSO: (this affects PiServo.c too):  Changed backup so that calculation
of cmd is independent of whether controller is held or not. Otherwise, if mode
switching in low pressure (integrator held), cmd gets huge.  Then if you go to
high pressure, BANG!  Updated:  dSrv.c, PidServo.c, PiServo.c.  Distributed to
projects in the BIG Update below.

23-Jun-98  BIG UPDATE TO ALL SEISMIC PROJECTS
1)  Backup bug fix:  Source included but not compiled because modeswitching
    is not used:
    	PidServo.c:  (Donen, Reno only).
    	PiServo.c:   (cea, hud, kyoto, moc, ntt, srmd, unam).
2)  Apc.c & dAhc.c:  Zero crossing detector bug fixed included.
3)  SetptFg.alt:  Method update bug fixed that caused zero park channels
    to not get updated.  Also, Rod added method updateJam.
4)  DigInput.alt & DigOutput.alt:  Polarity methods added.
5)  SeriesFile.alt & OliPanel.alt:  SeriesFile enhancements 05-May-98 included.
6)  Apc.alt & ApcPanel.alt:  New panel enhancements of 22-Apr-98 included.
    TChannel.alt, method init2:  "apc.setBandpass[TRUE]"
7)  MySystem.alt: Method textToBinary relies on class var "line" to be long enough
    to read in an entire line.  Currently it is 512 characters, which is only 21 columns
    at 24 chars each.  Increase to 1024 characters to handle 32 channels.
8)  aadefine.alt:  Change all calibration files to "servPrivilege" access.
9)  Allow control mode to be changed with hydraulics on. 
    a) ModePanel.alt:  Too numerous to mention.  Just use it as is.
    b) VirtualMachine.alt methods atPark and atZero:   Check all setpoints rather than
       just the first one.  This change will support future possible main panel master
       setpoint control changes.
10) Do not allow controller gains to be restored or switched from the panels.
    a)	TvcPanel.alt method place:  Do ".extend[0, 0]" on buttons.
    b)  PiPanel.alt method place:   Do ".extend[0, 0]" on buttons.
11) ObsPanel.alt:  Make refgen control activation dependent on dimension & hydraulics
    on state.
    a)  Method updateUnits:  Added; to respond to ModePanel's Panel.forAll[#updateUnits]
        when changing dimension.
    b)  Method checkPrivilege:  Added; check running state & control dimension.
    c)  Method update:  Added; check running state.
    d)  Method init:  Add self to updateList.
12) TimeHistories folder:
    a)  quake.m:  Vastly improved.
    b)  savebin.m & loadbin.m:  Extended header versions; backward compatible.
    c)  All earthquake files have been massaged so that endpoint accel, veloc,
        & displ are all zero.
13) Fbkgen.alt:  Removed methods setMode and mode, which are not supported Fbkgen.c.
14) Lowpass filter DOF force feedback signals:
    a)  ObsPanel.alt:  Added new Knob for cutoff frequency; took the opportunity
        to clean up & rename variables for clarity.
    b)  VirtualMachine.alt:  Added methods setForceFreq, forceFreq, and forceFreqAttr
        to the global configuration methods section.
    c)  Added new class "Forgen.alt".
    d)  aadefine.alt:  INCLUDE 'Forgen.alt'
    e)  TChannel.alt:  Add instance var "forgen".  Do everything that you do to
        "fbkgen".  Change source of tpFFbk from srv.fil.inp to forgen.out. 
    f)  FChannel.alt:  Add instance var "forgen".  Create in method init.  Change
        source of tpFbk from srv.fbk to forgen.out.  Set units in method setUnits.
	Add ivar retrieval method.
15) dAhc.c:  "conv" logic was wrong.  Got rid of "conv" ivar; replaced with "active".

30-Jul-98  UPDATE TO ALL SEISMIC PROJECTS (except Nied1 & Nied2, which are now FROZEN)
1) Alltalk.exe:  "detab" Alltalk crash that occurred when accidentally
   converting a binary file to binary (instead of text to binary) fixed.
2) aadefine.alt:  Calibration menu access restored to external privilege.
3) Allow gain restoring/switching only when master span is zero:
   a) TvcPanel.alt:  Affects cea, donen, hud, kyoto, moc, ntt, reno, scu, tvc, unam.
   b) PiPanel.alt: Affects hud, kyoto, moc, ntt, srmd, unam.
   c) PidPanel.alt: Affects reno.
   d) MainPanel.alt:  Added runPanelList ivar, do runPanelList.forAll[#attach] whereever
      you now do a playP.attach.
   e) ObsPanel.alt:  No longer polls for running; is notified from runPanelList.
4) Force observer bug fix:  Force balance channels really weren't being filtered.
   Affects:  hud, kyoto, moc, ntt, srmd (slightly different), unam.
   a) vm.c:  Added forgenF to force balance servos.
   b) FChannel.alt:  remote name of forgen is "forgenF".
5) Enhancements to debug capability of digital inputs.
   a) DigInput.alt, DigInpAction.alt:   Method "debug" now take polarity into account.
   b) DigInpAction.alt:  Added methods to to access & change event & mode to make it
      similar to DigInput.
6) Cosmetic changes (code comments, etc.):
   a) FDelay.c:  Added typecast to get rid of compiler warning.
      Affects: cea, hud, kyoto, moc, ntt, tvc, unam.
   b) Ahc.c:  Removed erroneous comment about only 32 harmonics.
      Affects all except srmd.
   c) quake.m:  Added comments about zooming, default parameters, Kusner reference.
      Affects all.
7) Extensive revamping to file playout and recording:
   a) New files:
	FilePlayer.alt
	FileRecorder.alt
   b) Changed files:
	OliPanel.alt
	Player.alt
	PlayPanel.alt
	Recorder.alt
	RecordPanel.alt
	SeriesFile.alt
   c) extras.alt:  All seismic projects made identical.
	Delete methods stripPathname, stripExtension.
   d) MySystem.alt:  All seismic projects made identical except:
	tvc:  Method start sets servPrivilege instead of basPrivilege
	srmd: Method detach does different hydraulicsOff.
   e) aadefine.alt:
	INCLUDE 'FilePlayer.alt'
	INCLUDE 'FileRecorder.alt'
	OliPanel.new.init[playBufferSize*nTbl]: method init
		no longer takes input parameter.
   f) VirtualMachine.alt:
	Method init:	desPlay/drvPlay/play creation, rec/drvRec creation.
	Method run:	play.startPlay.
	Method preview:	play.startPlay.
	Method playEnabled:  delete.
	Method playReady:  substitute playEnabled.
   g) MainPanel.alt:
	Method setRun:  New body of IF vm.playReady THEN clause,
			both preview and run.
   h) Settings files:  Change "Recorder" to "FileRecorder".
8) Ahc.alt method setHarm:  Bug that prevented harmonic 32 from being added fixed.
9) New file dialog stuff:  NOTE:  NEW ALLTALK VERSION USED TO SUPPORT DIRECTORIES.
   a)  New classes:  FilePicker
   b)  Changed classes:  MySystem, OliPanel, PlayPanel, RecordPanel, StexPlayer/Recorder.
10) Gloss:
   a)  aadefine.alt:  erase browser at end; .setName[''] no longer needed on
       modal dialogs; lots of unnecessary global vars removed.
   b)  FileName class removed; methods added to String in extras.alt.
   c)  PopUpMenu.fix changed to PopUpMenu.alt; cleaned up internally.
   d)  Panel.alt:  default position changed.
   e)  extras.alt:  EditDisplay borders are now gray when deactivated.
   f)  PlayPanel.alt & RecordPanel.alt:  method attach now calls self.checkPrivilege.
11) ReadMe.txt:  Updated.


04-Aug-98  ANOTHER BIG UPDATE:
1)  Coops pointer type "P" replaced with array transfer type, and long type
    "L" replace with "I".  Lots of changes to both coops classes & alltalk
    model classes.
2)  MySystem.alt:  Gloss changes, plus slightly better reporting of errors.
3)  RecordPanel.alt:  Method attach would leave all the controls activated.
    Now an attach during recording leaves them in a proper activation state.
	
13-Aug-98
Rod Larson found a bug in dAhc.c:  Tracking on channel 2 showed true even
with convergence set to zero (it actually was held, but panel showed tracking).
Solution:  "self->active" should be inside the do-while loop.
Updated all seismic projects & emailed to Rod in Japan.
Also fixed Ahc2.c, which is similar to dAhc.c but used only in accProj
and b600Proj.

03-Sep-98
Note for possible future release:  (No need to update seismic applications;
but in the interest of keeping all fundamental classes the same across all
projects, include these in a future release (if there is one).
NOTE:  Only accProj, b600Proj, and tvcProj were updated.  All other seismic
projects were left untouched.
1) Several fundamental data player/recorder
   classes were enhanced to support external setup:
	a) FilePlayer.alt was enhanced with a method "pass".
	b) RecordPanel.alt method attach updates file name display.
	c) extras.alt file method posRoot enhanced to handle Unix names.
2) New Alltalk/Views:
	a) Menus that stay dropped like Windows menus.
	b) My PopUpMenu.alt is now part of Views.  Delete one in Gui directory.
	c) extras.alt no longer includes my PopUpMenu.alt.
	d) EditStrings can now accept entries without carriage return
	   (driven by need for ModalFileParam to accept file name entry
	    without having to hit <CR>).  Note that my FilePicker subclass
	   has also changed.
	e) ModalGetParam.alt now has OK button, because of (d).
	f) Control event rate reduced to fix "double click" problem.
3) BUG FIXES (01-Oct-98):
	a) OliPanel.alt method checkDrvFile doesn't return an error string if
	   the desired & drive file sizes don't match.  Added "RETURN str".
	b) FileRecorder.alt method notify closed file if self.done, but that
	   occurs before all the points are copied up so the file would be short
	   points.
When the time comes, do the following steps (determined by the conversion of
tvcProj):
	Delete:
		PopUpMenu.alt
	Replace outright:
		Alltalk.exe
		Alltalk.sav
		extras.alt
		FilePicker.alt
		FilePlayer.alt
		FileRecorder.alt
		OliPanel.alt
		Player.alt
		PlayPanel.alt
		RecordPanel.alt	
	Use new Alltalk executable for:
		469D.exe
(NOTE:  THIS WAS DONE TO ALL SEISMIC PROJECTS ON 05-OCT-98.)

15-Sep-98:  CAUTIONARY NOTE:
The recent change to Ufg.c to use Coops array transfer mechanism rather than
pointers is flawed.  Ufg.c manages buffers that exist in Alltalk, so it must
use pointers.  It works in Radisys systems because the array tranfer mechanism
does nothing but pass the pointer along.  If copying really occurred as in Ethernet
based links, it wouldn't work because the pointers Ufg.c gets would always
point to the same placed in shared memory.  So leave all Radisys systems as-is but
bear in mind not to use Ufg.c in future systems involving Ethernet links.

16-Oct-98
Found bug in password stuff (PassDialog.alt).  Due to recent Alltalk upgrade,
the password dialog got an okay button.  This would completely bypass password
protection.  Overrode method ok.  ALL SEISMIC PROJECTS FIXED.  At the same time,
make DioPanel.alt look a little prettier.

21-Oct-98
The fix to the link bug is to make the semaphore in DownPCTI.c have value -1
rather than 1.  Somehow the 32-bit read/writes are not being done atomically
which would cause the semaphore operation to fail.  NTT now works flawlessly;
used to fail within an hour if heavily used.  Updated all seismic projects.

09-Nov-98
The above fix doesn't work!  It reduces the frequency of occurrence, but NTT had one
occur.  The problem:  messaging at doit() level (Dio & Watchdog both do this) corrupts
the message cache.  The solution:  asmLock()/asmUnlock() around critical sections in
Class.c and UpPCTI.c.  The bogus fix above (setting pending flag to -1) doesn't hurt
anything so leave it in.  Updated all seismic projects.

10-Nov98 -> 29-Nov-98
Did field upgrade of the following machines:
	HUD, NTT, Kyoto, Nied1, Nied2, MOC.

NO MORE UPDATES AFTER THIS POINT (NOV. 98)
--- just note bugs for future release.

24-Nov-98
Bug in Dio.c:  method debug() checks index against self->nOut; should check
against self->nInp.  No seismic projects affected; found bug while doing
uniaxial 469D development.

17-Dec-98
Bug in OliPanel.alt method startSeq:  If quantization in file sample period
causes slight mismatch with available sample rate, oli rsp file has a different
number of points than the des/drv files.  So the sequence is never completed
since the criterion for completion is (in method checkSeq) for  drvRec.count 
equal to desFile.filePoints.  This happened with 1024.0 Hz high sample rate &
an oli file sample rate of 256.0, which due to quantization came out to be
256.0164. 
Changes to OliPanel.alt:
	method startSeq:
		1) don't set channelPeriod of des, drv, & rsp to that of desPlay.	drvRec	.setPeriod[desFile.channelPoints
			 * drvRec.samplePeriod]
		2) drvRec.setSize[desFile.channelPoints.real*desFile.channelCount]

No seismic projects affected due to nice sample rate numbers (1000.0 Hz / 250.0 Hz);
found bug while doing uniaxial 469D development.

07-Jan-99
Enhancements to uniaxial controller (now officially called "469DU"):
*  Specimen control:  ACC can use external a/d input; dimension assigned
   is the same as the external ref a/d input.  Xducer gain must match that
   of the primary xducer; if not, adjust gain in user's conditioner
   (preferred) or in converter panel (not preferred).
*  Run sync digital output now is high whenever master span > 0; renamed
   "runningDO" to reflect this.
*  There are now three span rates:  normal run and stop, and abort stop.
*  Spectrum analyzer reset button added to FrfPanel.
*  Added flow saturation compensation (a n-th order polynomial).
   Default value is a straight line.
*  DC Error Controller:  hold integrator in run; enable in stop.
*  Apc and Ahc now have the option to preset or reset on run.  Default:  on.
*  Apc and Ahc can no longer be turned on with non-cyclic or non-internal
   programs sources.
*  Reference generator veloc & accel works in displ mode.
*  Scope hangup with nonzero A-B delay has been fixed.

*  Base shear calculation added.  (Also add to plant simulation).
*  Add displ feedback gain scheduling for short-stroke actuators.  (Scale
   displ fbk gain down by XX% when a given +/- stroke is reached.
   +/- stroke limit and gain multiplier are stored in Table.dat; default
   is a gain multiplier of 1.0.
*  Add digital AA filters to data recorder.  Can be disabled.
*  Changing of control mode is disallowed when master span is nonzero.
*  Panel locations are saved in the settings file.

Not done now but maybe in the future:
*  Make OLI accept 3-channel files (X,Y,Z) too, not just 6-channel files.
*  Add 2 general purpose signal noise filter devices and their testpoints
   ala the spectrum analyzer.  The panel will allow selection of two
   signals and the filtering done to both.  Two testpoints "Filtered A"
   and "Filtered B" appear in the testpoint list (but must disallow
   selection of filtered output as filter input!).
