Dates: Year Month Day

2006-12-01:
-----------
 - Package available in the on-line User Library

2007-02-15:
----------- 

 - Update solidsstandard.h - see the new list of #include files in /manual/SolidsPack.

 - Remove '#include "mpobjects.h"' from multipulse sequences - the function is now in 
   solidsstandard.h.

 - Add sfs.h to /psg to provide a single frquency sweep, using make_waveform1. 

 - Update /manual/AllParamGroups with the new parameter groups referenced by 
   solidsstandard.h. Pleas note the groups below and their documentation in 
   /manual/AllParGroups. Some groups are not yet used in sequences. 

   New groups are: 
      dreamX.xml, cp1HX.xml, drawsX.xml, raptX.xml, graptX.xml, hmqcYX.xml, 
      rampY.xml, rampH.xml, rampX.xml, sfs.h.xml and sfs.X.xml. 
   
 - Add new parameter groups above to /templates/vnmrj/panelitems. Some groups are not 
   yet used in templates. 

 - tancpxechocpmg1d.c and qcpmg1d.c have new phase cycles.  The CPMG object has been 
   changed so that it begins with the acquisition of the first half-echo.  startacq(0)
   should preceed _cpmg(). 
   
 - New editing of all pulse sequence and manual files for readability

 - Fix Bug: " 'reset_wisetancp2d' not found". 

 - Fix Bug  " 'wisetancp2d' provides zero output for 8 scans or more"

 - Fix Bug  " multipulse protocols show 'scalesw1' or 'scalesw' not found" 

 - Fix Bug  " experiment selector shows the protocol 'dipshft12dfs' not found"

 - Fix Bug  " add panelitem dumboX.xml to correct an absence in the panel for 
              c7inadwdumbot2d.c. 
              
2007-02-20
----------

 - add new SolidsPackChanges to the manuals directory
 
 - add SolidsPack.README to maclib with latest changes 
 
 - revise archive_VNMRSSOLIDS2 to archive:
   vnmrsys/maclib/SolidsPack.README
   
 - replace archive_file and archive_SEQUENCE in maclib to fix a bug 
   that prevents archiving elemnts in the psg directory. 

2007-03-07
----------

 - Fix the bug - mqmas3qspltse2d produces no output with phase = 0. Replace 
   the mqmas3qspltse2d.c file. Edit the manual file to include Setup. 

 - Edit the manual file mqmas3qzf2d. 

 - Change the label "90" to "180" in the cpmgX template. 

 - Add the macros mfarray and mfshow to deal with arrays where nf > 0. Used in 
   Repdfs.

 - Add getsr4() MPSEQ to solidmpseq.h. Add the sr4H parameter group. 

 - Add the sequence dipshftsr4dfs.c with all it's documentation. 

2007-03-12
----------

 - Add the sequence mqmas3qdfs2spltse2d.c with all it's documentation. 

 - Add the parameter group dfspX.xml 

2007-03-13
----------

 - Fix bug " split t1 incrementation incorrect for mqmas3qspltse2d.c, mqmas3qdfsspltse2d.c,
   mqmas3qdfs2spltse2d.c, mqmas3qfamspltse2d.c and mqmas3qfam2spltse2d.  Replace .c files. 

 - Add the sequence onepulmdfs.c with all its documentation. 

 - Add the parameter group mdfsX.xml and the #include file mdfs.h

2007-03-14
----------

 - Add rotor synchronization to dipshftsr4dfs.c - replace the sequence and documentation. 

 - Add rotor synchronization to dipshftr12dfs.c - replace the sequence and documentation. 

2007-04-04
----------

 - Add the sequence pboxonepulse and it's documentation, sft1A, sft2A, sft3A parameter groups.

 - Add the #include file pboxpulse.h which delivers shaped pulse, simpulses and sim3pulses. 

2007-04-16
----------

 - create SolidsStateExpts.xml to work in 2.2C. Add SolidsStateExpts21b.xml.  Now SolidsPack 
   will work by default in 2.2C.  To work in 2.1B one must copy SolidsStateExpts21b.xml 
   to SolidsStateExpts.xml. 

 - create solidelements.h to work with 2.2C and solidelements21b.h to work with 2.1b.  One must 
   copy solidelements21b.h to solidelements.h to avoid the bug in setvvarnum that creates invalid 
   tables. 
 
 - fix bug - protocols applied without settancpx do not have all parameters.  Provide new file 
   fixtancpxpars and replace solidsseq1d.

 - fix reset_pisema bug that set phase = 1,2 instead of phase = 0. 

2007-04-18
----------

 - Fix bug - mqmas5qzf2d gives the error "txmqmas undefined". Replace mqmas3qzf2d.c. 

 - Add two 2D parameters to mqmas3qzf2d and mqmas5qzf2d. create "reset_mqmas" to do this and edit the 
   setup macros. 

2007-05-02
----------

 - Add the sequence hssmall2.c for measurement of small angle phase shifts. Add the associated 
   documentation and the macros hssmallanal, hssmallanal2 and reset_hs. 

2007-06-21
----------

 - Fix incorrect phase cycle in mqmas3qzf2d.c
 - Fix corrupted file for hetcorlgcp2d.c
 - Add NOESY phase cycle to wisetancp2d.c
 - Fix the sign of the sin components of mqmas5qzf2d.c
 - Fix reset_pisema - add amplitude recalculation 
 - Fix reset_fslg - add amplitude recalculation 
 - Fix reset_hetcor - add amplitude recalculation 
 - remove archive_VNMRSSOLIDS1
 - remove vnmrssolids1.README
 - transfer all .README files to the new README directory
 - add SolidStateExpts22c.xml - this file retains the copy in a 2.1b installation (Rice/Housekeeping) 
 - add solidselements22c.h - this file retains the copy in a 2.1b installation (Rice/Housekeeping)
 - add archive_ALSOLIDSPACK - new archiving file to create SolidsPack duplicate (Rice/Housekeeping)
 - edit archive_VNMRSSOLIDSDOCS2 to reflect new SolidsPack archive (Rice/Housekeeping)

2007-06-22
----------

 - Add pisematest1.c and supporting files. 
 - Add pisematest2.c and supporting files. 
 - Add sammy2d and supporting files including parameter groups smyoX and smydH.
 - Alter solidmpseqs.h to include getsammyo() and getsammyd(). 
 - Fix bug in the macro pisema2d - scalesw1 set as an acquisition parameter. 
 - Fix bug in reset_pisema - scalesw1 should be 1.2 not .801. 

2007-06-26
----------

- Add sequence cpcpmg1d.c and supporting files. 

2007-07-13
----------

- Edit files mqf1ref3q, mqf1ref5q, mqf1ref7q, mqf1ref9q
- Edit files mqf1ref3qs, mqf1ref5qs, mqf1ref7qs, mqf1ref9qs
- Fix incorrect referencing for mqf1ref3q, mqf1ref5q, mqf1ref7q, mqf1ref9q. Do 
  not divide the reference change by the scale factor. 
- Add stf1ref to shear and scale f1 of STMAS spectra. 

2007-07-17
----------

- Add the file ~/vnmrsys/templates/vnmrj/interface/ProtocolLabels.xml (2.2C only)
  This file defines the labels of the protocols of SolidsPack.
- Update all of the interface files so that they are consistent with ProtocolLabels.xml.
- Update protocolListWalkup (2.1B only) to agree with ProtocolLabels.xml. 
- Remove AllSolids1.xml and AllSolids1.txt. These files are not needed now 
  that AllSolids.xml and AllSolids.txt are in /vnmr/adm/users/UserProfiles. 

2007-07-18
----------

- Replace manual files for 31 released sequences. 
- Add the parameter group STshearX containing the macro stf1ref for STMAS shearing. 
- Add STshearX to stmas2d, stmaszf2d, stmasse2d1, stmasse2d2, stmasdqfse2d and document it. 

2007-07-19
----------

- Update the manual file AllParGroups to coincide with the Applications Note 
  UserProgrammimgSolids.doc. 

2007-08-09
---------

- Fix bug Protocols remove parameter protection bits. Fix fixtancpxpars so that it 
  does not clear the protoection bit. 
- Fix bug Dcptan3drad and Dcp2tan3drad have in valid "ap" templates. Repair the setup 
  macros and par files. 
- Fix Bug archive_SEQUENCE doea not write a .README file in EXP_OUTPUT. 
- Add sequence rocsa2d.c and supporting files. 
- Add parameter groups lgH.xml, rfdrX.xml, r18X.xml. 
- Alter solidmpseqs.h to add getlg() and getrfdr().

2007-08-10
----------

- Add simplexer alias for SIMPLEXER.
- Add shimdriver alias for shimDriver.
- Add shimdriver and simplexer manual files. 
- Add shims directory to archive_ALSOLIDSPACK.
_ Add coryXfull.method, coryYfull.method and coarse.method to the shims directory. 
_ Add onepul.s to the Simplexer directory.
- Label Current SIMPLEXER Files with 8/14/07 (Simplexer Version 4).
- Label Current shimDriver Files with 8/13/07 (ShimDriver Version 1).

2007-08-30
----------

- Add lgcp2d.c and all it's associated files.  
- Add lgX.xml for lgcp2d.c

2008-01-02 - SolidsPack Upgrade 01-04-08
----------

- add obspower(getval("tpwr")); to the beginning of all sequences that have selective echos or 
  selective Z-filters. These are: 

mqmas3q2d.c            mqmas3qdfszf2d.c       mqmas3qspltse2d.c  mqmas7qzf2d.c
mqmas3qdfs2d.c         mqmas3qfam2spltse2d.c  mqmas3qzf2d.c      mqmas9qzf2d.c
mqmas3qdfs2spltse2d.c  mqmas3qfamspltse2d.c   mqmas5qzf2d.c
mqmas3qdfsspltse2d.c   mqmas3qse2d.c          

stmas2d.c       stmasdqfspltse2d.c  stmasse2d2.c      stmasspltse2d2.c
stmasdqfse2d.c  stmasse2d1.c        stmasspltse2d1.c  stmaszf2d.c

2008-01-04
-----------

 - Add sequence onepulxyr with supporting files. - assigned channels
 - Add sequence tancpxyr with supporting files. - assigned channels
 - Add sequence hetcorlgcp2d_1 with supporting files. - assigned channels
 - Add sequence hetcorlgcp2dxyr with supporting files. -assigned channels
 - Modify macro and parameters onepul to support assigned channels.
 - Modify macro and parmeters tancpx to support assigned channels. 
 - Modify solidsseq1d to provide support for "clearparams" and 
   allow automatic unprotection of designated parameters. 
 - Add parameters groups tiltH.xml and rampY.xml (documentation required) 
 - documentation required for the above changes. 
 - Add automatic handling of 2 receive experiments and the changed 
   designation of channel identifiers. 
 - Add setsolidsprobedatarecxy and getsolidsprobedatarecxy to save basic calibrations
   from 2-receive experiments. 

2008-01-08
 ----------

 - Add manual and README files for onepulxyr, tancpxyr and hetcorlgcp2dxyr

2008-01-10
----------

 - Add the sequence trapdorycpx.c and related files. 
 - create the parameter group trapHY.xml
 - Add the sequence trapdor1d.c and related files. 
 - create the parameter group trapXH.xml

2008-01-22
----------

- Add the sequence sc14inad2d.c and related files and reset_sc14.
- create the parameter group sc14X.xml.
- Add the sequence seac71d and related files and reset_seac7.
- create the parameter groups gaussX.xml and seac7X.xml.
- realign the output columns of MPSEQ's - replace solidshapgen.h.
- Add getsc14() and getseac7() to solidmpseqs.h.
- Add pi/2 rounding to reset_c7 and getpostc7() in solidmpseqs.h.
- Add getfprfdr() and getptrfdr to solidmpseqs.h. 
- Add the sequences tancp1dfprfdr.c and tancp1dptrfdr.c with related files. 
- Add the parameter groups ptrfdrX.xml and fprfdrX.xml.
- Add reset_fprfdr and reset_ptrfdr. 

2008-02-22
----------

- Add the sequence tancpxpips.c and related files.

2008-03-18
----------

- Add the sequence babadpinad2d.c and related files.
- Add the sequence hahnecho1d.c and related files.
- Add the sequence tancpxhahnecho.c and related files.
- Establish and document tancpxecho as a Solid echo. 

2008-05-07
----------

- Fix bug in solidshapegen.h in make_shape(), derive ph from the input phAccum. 
- Modify update() in shapegen to update_mpseq1() and allow phase and record arguments. 
  Other update functions (i.e update_mpseq etc) should be added as needed.  
- Modify hetcorlgcp2d_1.c with update_mpseq1() so that offsets work.
- Add hasarray to all structures - remove "logic" from get functions. 

2008-07-01 - Not in SolidsPack!
----------

- Add the sequence tancpxs.c and related files. 
- Add the module spinl with getspnl() in solidsmpseqs.h.
- Add the parameter groups spnlH and spnlmH.
- Add the sequence onepuls.c and related files. 
- Add the sequence hxidmissct2ds.c with related files. 
- Add the module pxy with getpxy() in solidsmpseqs.h.
- Add the parameter groups spnlX rfdrH and pxyH and cpXH. 
- Redit pbox.h and check shaped pulse output. 
- Add the module tm5 and gettmrev5() in solidsmpseq.h 
- Add the module r1817 and getr1817() in solidsmpseq.h 
- Add the parameter group tm5H. 
- Add the sequence hxr1817ct2ds.c and related files. 
- Add the sequence hxtm5ct2ds.c and related files. 
- Add the reset macros reset_r1817 and reset_tm5. 
- Add the sequence tancpxrefs.c and related files. 
- Add the sequence r2inv1ds.c and the related files.
- Add the paramter groups shp1X and shp1H for inversion pulses.
- Add the parameter groups 180Y, presatX, presatY, pipsY and cpXY.
- Add the pulse sequence cncc4ds.c and related files.
- Fix getcp() in solidmpseqs.h to add XY YX and XH CP. 
- Add the pulse sequence nccdqm3ds.c and related files. 
- Add the pulse sequence xxctuc2ds.c and related files. 
- Add the pulse sequence xxctuc1sh2d.c and related files. 
- update menues with UIUC pulldown.

2008-07-20
----------

- Add tancpht1rho.c and related files.
- Add onepult1rho.c and related files.
- Fix pull down menus to correct referece to "H" T1rho for Tancpxt1rho. 
- Fix pull down menus to correct referece to "X" T1 for Tancpht1. 

2008-08-21
----------

- Add macro 'copypseq' and auxiliary macros 'findstring', 'replacestring' and 'capitalizestring' (VZ)
- Add manual files for 'copypseq' and the auxiliary macros 'findstring', 'replacestring' and 'capitalizestring'

2008-09-05
----------

- Change exit(-1) to psg_abort(1) in all *.h files of psg to be consistent with RHEL 5.0+ 
- Add hssmall.c and related files. 
- Add the parameter group hssmall.xml. 
- Add the macro reset_hssmall

2008-09-08
----------

- Add macro macroupdatepars and manual file for pulse sequence development. 
- Set apttype = 'solidsseq1d' in all parlib files. 
- remove protoFile in all parlib files. 
- set execsetup = solidsseq1d('setup') in all parlib files, expect Settancpx - solids1d('setup')
  in the file. 
- set execplot = '' and execprocessing = '' in all parlib files. 

2008-10-01
----------

Comment: The changes below replace the "isarry()" and "logic" methods for determining whether 
         to write a new wavefrom file with a new method. The previous method has the problem 
         that anytime a parameter is arrayed - new waveforms are calculated for every member 
         of arraydim. Problems arise with 2 paramter arrays where only one parameter affects 
         the waveform - or arrays with 2D spectra where the wavefrom is rewritten for all F1
         increments - even though such is not necessary.  

         The new function parsearry() "parses" the array parameter to determine the number 
         of array loops and which parameters correspond to which loops. The psg element 
         "getarray()"is used to determine the maximum index of each loop. Note that 
         simultaneous arrays are tracked properly to correspond to only one loop. All this 
         information is stored in the AR strructure, which is a new member of each module 
         structure.  parsearry() also uses the array index "ix" to calculate the array index 
         for each loop. 

         The function disarry() ("determine is array") takes a parameter name as an argument, 
         queries the AR structure and sets a 1 in a field of the AR structure corresponding to 
         the array loop in which that parameter changes. Use disarry to examine any parameter 
         that might affect a waveform (just as isarry() was used in the past).

         The function hasarry() uses the indcies in the AR structure to calculate a 
         "reduced index" to label waveforms (previously "ix" was used, generating excess
         waveforms). hasarry() returns a "1" if a new index is in fact needed and "0" if the 
         reduced has not increased. The "choppers" and "make" functions now will run only 
         if hasarry returns "1", reducing the number of calculations and files.  

         The function arrindex() returns the index itself which is formated into the pattern 
         name as "ix" was in the past. 

         The hasarry() function communicates with a "static", "MODULE-type" structure to 
         store the last index.  Note that the structures (c.f MPSEQ etc) for each 
         pulse-sequence module, including the AR structures, are local variables and do 
         not survive from increment to increment. The static "mod" variable is an array 
         of MODULE structures that contain one structure per "get function". The structures 
         are labelled using the root of the pattern character field (the parameter group 
         name).  They presently contain only the current "reduced index" -- but potentially 
         they could contain other information that is not in the .DEC file but that needs 
         to be saved increment to increment. 

         The parsearry() function also adds a dummy parameter "xx" as the outer loop member.
         This parameter has a loop dimension greater than 1 if arraydim is greater than 
         the combined dimension of all parameters in "array".  This situation will arise 
         if there are 2D or 3D increments in an experiment. By default "xx" is not enabled
         for waveform calculation - and new waveforms are not generally desired for multi-d 
         increments. One can activate "xx" though with the function disarry() using "xx" 
         as the input for the paramter name.  One need not create an "xx" parameter.  VNMRJ 
         does not have a simple mechanism for making any particular parameter array simultaneous 
         with a 2D or 3D array - and if wavefrom changes are needed during F1 or F2 of a 3D 
         experiment one must calculate them explicitly. Also note that simple activation of
         "xx" will generate new wavefroms for both 2D and 3D increments without distinction. 
         Further programming is needed if one wishes to make a distinction -- and the
         procedure can be provided on request. 

- Add the functions parsearry(), disarry(), hasarry() and arryindex() to the solidelements.h
  file in psg.  
- Add the structure definitions AR for parsearry() and MODULE for hasarry() to soliddefs.h
- Add a static array of MODULE structures [64] called "mod" to solidselements.h. 
- Rewrite all "get functions" in solidmpeqs.h, solidpulses.h as well as the TPPM and SPINAL
  get functions in soliddecshapes.h to use the new functions.  Rewrite the initgeneric shape
  function in solidshapegen.h.  See info about the "update functions" below in solidshapegen.h. 
- Add an additional integer argument to all of the get functions mentioned above with the 
  internal variable "calc". If "calc = 1" the chopper is run in the get function.  If calc = 0
  the chopper calculation is postponed. 
- Add functions update_mpseq() for all the module types CP, MPSEQ1, etc... the "update 
  functions are patternd after update_mpseq1 (2008-05-07). update functions access the new
  array calculation above. 
- Add an extra argument to every "get function", called in each pulse sequence of psglib.  
- Add a get function gettoss5() and underscore function _toss5 to solidobjects.h. 
                                
                                   NOTE!!!!!!!!!!!!!!!!!!!!!!!!
Note: As of this date all user pulse sequences must be modified to correspond with the 
  new arguments of the "get function". Add a final 1 in the get functions for all CP, CP1, 
  MPSEQ, MPSEQ1, WMPSEQ, AWMPSEQ1 RAMP and SHAPE modules. 
                                   NOTE!!!!!!!!!!!!!!!!!!!!!!!!
-Add tancpxtoss5 and related functions. 

2008-10-02
----------

- Modify getdfs() and getmdfs() in the functions dfs.h and mdfs.h to include "calc" and
  the "parsearray" functions of 2008-10-02
- Update AllParGroups to include documentation for the "Update", "Parsearray" features. 

2008-10-15
----------

- Convert VNMRSSOLIDS2 to INOVASOLIDS2 with a new psg directory. Rename archive_ALSOLIDSPACK
  to ouput INOVASOLIDS2 rather than VNMRSSOLIDS2.  Rename vnmrssolids2.README as 
  inovasolids2.README.  INOVASOLIDS2 is designed to run with the VNMRS, but it is intended 
  for INOVA spectrometers using VNMRJ2.2D and VNMRJ1.1D.  INOVASOLIDS2 makkes the following 
  broad changes.  Details are found in the AllParGroups Manual file: 

                                  NOTE!!!!!!!!!!!!!!!!!!!!!!!!
Note: As of this date all VNMRS user pulse sequences must be modified to accomodate the new psg
      functions. 
                                  NOTE!!!!!!!!!!!!!!!!!!!!!!!!

- AWMPSEQ1, WMPSEQ and MPSEQ1 types are all converted to "MPSEQ".  MPSEQ now allows duration,
  phase, amplitude, gate and offset lists. The function MPinitializer() takes the length of 
  the lists as arguments and allocates memory dynamically. MPinitializer() is used in all get 
  functions. 

- n90 is now set to 16 (200 ns), the step size for INOVA. 

- getcp() now has (two) phase-list arguments - used for the X and H channels. 

- All underscore functions execute their commands in an order that is optimal for INOVA 
  where AP bus delays are present. See AllParGroups for details.

- solidshapgen.h now has a group of new "adjust" functions that allow one to modify delays 
  to compensate for AP-bus delays. See AllParGroups for details. 

- the startacq() and endacq() commands have dummy definitions for INOVA. These dummy 
  need to be commented out for VNMRS. 

2008-10-28
----------

- In solidelements.h set the v-variable offset to 29 for VNMRS (PWRF_DELAY = 0.0) 
  and 21 for INOVA (else). Remove the assign() statement for INOVA. It prevents 
  further intialization of V-variables. In parsearry() set the array size of 
  "dummy" to 4096 (not 20).  The maximum array size for SolidsPack is now 4096. 

2008-10-30
----------

- replace the compress command (which is absent on RHEL 5.1) with "tar cfz" in archive_ALSOLIDSPACK
  archive_SEQUENCE and archive_VNMRSSOLIDSDOCS2.  

2008-11-10
----------

- Add the sequence onepulsfs.c with a single frequency pulse and related files.  
- Add getsfs() to solidpulses.h and sfs_state() to solidstates.h.
- Modify the sfsH.xml and sfsX.xml parameter groups to accept an overall offset. 
- Complete the update of all sequence manual files for the new format with only MPSEQ
  and an extra "get" argument. 
- Complete bug fixing of the hasArray() and update functions. Store the time in 
  the module structure. 
- Allow use of the disarry() function with update functions to provide F1 arrays. 
- Edit all calls to var = getname0() to be sure there are no pointer problems.  This 
  fix requires further watching. 
- Edit all sprintf() functions to replace the long integer "ld" code with "d". Fix 
  a frequent hasArray conditional with a singel "=" to "==". 

2008-11-15
----------

- Add the sequence lgfmcp2d.c and related files. 
- Add an sfmX.xml parameter group. 
- Add getsfmpulse() to solidpulses.h and sfm_state() to solidstates.h. 

2008-11-20
----------

- Add the sequence shapedtwopul1d.c and related files.
- Add the sequence onepulhs.c and related files. 

2009-01-07
----------

- Fix bug in solidshapegen.h in _cp_().  For CP from dec2 to obs dec2prgoff()
  is not executed.  For CP from dec3 to obs dec3prgoff() is not executed. This
  bug caused tancpxyr to fail with a "decoupler already in use" error.

- Fix bug in getpipsxy() in solidmpseqs.h that prevented pips .DEC file from 
  being written.  Replaced "==" with "=" in an assigment of pips.hasArray. 

- Fix bug in _hssmall in solidobjects.h - delay is mp.dtau and mp.dtaua for 
  the acquisition delay. 

2009-01-10
----------

- Add BioPack Macros that are used in SolidsPack AutoCalibration:
  BPgetdate, BPprobe, BPpage, BPsvf, BPsetparams, BPsvf, BPcheck, 
  BPaddprobe, BPglobalpar.
- Add Macros for Onepul autoCalibration of Adamantane:
  SS_AutoCal_adam,SS_1_adam,SS_2_adam,SS_3_adam,SS_4_adam,SS_5_adam,
  SS_6_adam,SS_7_adam,SS_8_adam,SS_9_adam.
- Add Macros for Tancpx autocalibration of a 13C alpha:
  SS_AutoCal_alphaC,SS_1_alphaC,SS_2_alphaC,SS_3_alphaC,SS_4_alphaC,SS_5_alphaC,
  SS_6_alphaC,SS_7_alphaC. 
- Add General new macros used in SolidsPack AutoCalibration:
  SS_getsolidsprobedata,SS_getsrate,SS_rfhomocal,SS_rtppar, 
  SS_setddrtc,SS_setsolidsprobedata,SS_Update_from_probe,
  SS_Update_probe.

2009-01-15
----------

  Created the macro archive_SUNINOVASOLIDS2 in maclib to compress SolidsPack 
  with "tar cf" and compress.  This macro can not be used with RHEL5.1. Created 
  the README file in README to go with this zipped file.  suninovasolids.tar.Z 
  must be used with SUN systems lacking the "tar xvfz" option. 

  The macro archive_INOVASOLIDS2 continues to be the same version zipped with 
  "tar cfz" alone.  invoasolids2.tar.Z can be used with all LINUX systems including 
  RHEL5.1.  It generally cannot be used on SUN systems that lack the "tar xvfz"
  option. This file must be used with RHEL5.1. 

2009-02-01
----------

   Adjusted getcp() and getramp() in solidmpseqs.h and MPinitializer() and 
   genericInitShape() in solidshapegen.h to set n90 = 16 for INOVA (PWRF_DELAY < 0.0)
   and n90 = 8 for VNMRS. INOVA has a minimum step size of 200 ns - SolidsPack 
   allows a 100 ns minimum step size for VNMRS. 
   
   Added the macro archive_SUNSEQUENCE to archive sequences with tar xvf and compress. 
   This macro creates SUN_sequencename.tar.Z where sequencename is the sequence.  
   Changed the macro archive_SEQUENCE to compress with tar cvfz.  Note that older 
   compressed sequences may not unzip on Linux RHEL 5.1 with tar xvfz. WinZip is a 
   good PC program that will unzip anything. Transfer the result to the spectrometer 
   as a directory or rezip it with the appropriate commands for the system computer. 

2009-02-26
----------

   Fix problem with getpmlg() in solidmpseqs.h that produced incorrect phase output. 
   nphbase is now 2*nstep.  nstep is the number of phases in PMLG. 

   Enter all steps in "roundoff" as a multiple of ".n90" rather than 0.1 us - to 
   accomodate INOVA with a step size 0.2 us - see 2009-02-01.  

2009-03-03
----------

   Add getsamn() to solidmpseqs.h.  Add samH.xml to panelitems. 
   Add hetcorsamlgcp2d_1.c and related files. 

2009-03-12
----------

   Add tancpxdec2 and related files. 
   Add onepuldec2 and related files.
   Add OBinitializer to solidobjects.h. first used in getwsamn(). 
   Add getwsamn() and _wsamn() to solidobjects.h  Add samX.xml to panelitems.
   Add getpmlgxmx() to solidmpseqs.h. 
   Add getwpmlgxmx() to solidobjects.h 
   Add wsamn1d.c and related files. 
   Add wpmlgxmx1d.c and related files, including a reset function. 

2009-03-20
----------

   Add getsuper() to solidmpseqs.h
   Add superX.xml to panelitems.
   Describe the parameter group inczfX in AllPar Groups - no module.
   Add super2d.c and related files.

2009-03-26
---------

   Add getwdumboxmx() to solidobjects.h
   Modify _wdumbo and _wpmlg to run the xmx phase cycle. 
   Add wdumboxmx1d.c and related files, including a reset function.
   Add getwdumbogen() to solidobjects.h
   Add reset_dcfX and reset_edcfX to maclib and dcfX to panelitems. 
   Add wdumbogen1d.c and related files, including a reset function.
   Add wdumbogen1d.s to Simplexer.

2009-04-03
----------

   Add hetcorpmlgcp2d_1.c and related files. 
   Add hetcordumbolgcp2d_1.c and related files. 

2009-04-06
----------

   Fix bug in solidshapegen.h in MPchopper about line 1220. "seq.nphBase" should be replaced with "seq.no" - as 
   shown correctly in the code below. This bug caused offset modules to fail (they hang-up at "go") when seq.no 
   does not equal seq.nphBase. Note that hetcorlgcp2d_1.c succeeded but the two new offset sequences in the entry 
   above failed without the bug fix. FSLG in the working sequence is unique in that seq.no = seq.nphbase = 2 but most 
   sequences have only one offset list member and seq.no = 1. 

// Determine the offset phase-step for each pulse.

      if (fabs(seq.of[i%seq.no]) > 1.0)
         dph = 360.0*seq.of[i%seq.no]*DTCK; //<------------------
      else
         dph = 0.0; 

   Add aX180 to Onepuldpth. 

2009-04-22
----------

   Add the utility macro setupupdatepars and a manual file.  
   Modify all setup macros to: 
      1.  Remove the automatic 0.0438 phase step. This fixes a 2.1B INOVA bug where 
          0.0 phase is never set in SPINAL and TPPM. Systems with no wavegens depend 
          on setting zero phase. 
      2.  Add the clearparams function to every setup macro.  "clearparams" is a string 
          parameter that contains parameters names whose "rtx" protection bit should be 
          cleared in the apptype macro.  One should always clear ""fr", "to" (but not "ch") 
          for CP modules and one should clear "ch" for all other modules.  This function 
          was setup for multiple receivers and allows one to switch the values of these 
          parameters when switching from one reciever to two receivers and back. 
      3.  Remove processing parameters from the 'ap' string for every protocol. 

   Use macroupdatepars to remove the phase step in all parlib files - implement item 1. 
   Use setupupdatepars to run each setup macro to implement 2 and 3 in each parlib file. 

   Fix supercycle memory size in getspc5() - it should be 10 not 3. This prevented the 
   chopper running with spc5.  
   Add "wrtp = reset_spc5" to the macros of tancp2dspc5 and spc5inad2d. 
   Add "wrtp = reset_lgcp" and add reset_lgcp to maclib. 
   Add "sr4H.xml" to panelitems. 

2009-04-30
----------

   Add tancpxedit.c and related files. 
   Add moistlkcp.c and related files. 
   Add sammymstlk2d.c and related files. 
   Add the parameter groups lockH.xml and compH.xml

   Add new functions _obsdoffset(), _decdoffset(), _dec2doffset() and _dec3doffset() to 
   solidelements.h in ~/vnmrsys/psg. These functions change the offset in a defined delay
   for VNMRS and INOVA and are meant to offset the decoupler. 

   Add the parameter group decofH.xml.
   moistlkcp.c and sammy2dlk2d.c use _decdoffset(). 

   Correct reset_sammy to allow $wfr = 0.2 if Console='inova', else $wfr = 0.1. 
   This construction allows the reset macro to round correctly for each console. 
   Correct getsmyd() and getsmyo() in solidmpseqs.h to round the 45 flip rather 
   than the 90 flip. 

   Add dump_mpseq() to solidshapgen.h.
   Add dump_mpseq_array() to solidshapgen.h.

   Fix disarry() in solidselements.h to fix a bug - "disarry() misses the second
   parameter name when two parameters have the same starting character and the 
   same number of characters".

2009-05-04
----------

   Add dump_cp() to solidshapgen.h.
   Add dump_cp_array() to solidshapgen.h.
   Add dump_ramp() to solidshapgen.h.
   Add dump_ramp_array() to solidshapgen.h.
   Add dump_shape() to solidshapgen.h.
   Add dump_shape_array() to solidshapgen.h.

2009-05-11
----------

   Add the sequence satrec1d.c and related files. 
   Add the satX.xml parameter group. 
   Add getsat() to solidmpseqs.h. 

2009-5-22
----------

   Add SS_AutoCal_CP1 with SS_1_CP1 and SS_2_CP1 for TANCPX optimization of Ca, CO and ai.
   update SS_AutoCal_DCP with SS_1_DCP and SS_2_DCP for DCPTAN optimization of Ca, CO with ai.
   Add SS_AutoCal_minmaxfit for fitting nutation curves. 
   Add SS_AutoCal_probe.template. 

2009-8-28
---------

   Replace Autocalibration with the 8/28/09 version compatible with BioPack.  This 
   version constains many changes that make it more reliable. 
   Add SS_AutoCal_aph0 for phasing arrays.
   Add SS_AutoCal_maxamp for scaling arrays.
   Replace the probe template. 
   Add a set of BioPack setup macros - tancpx_HC,tancpx_HN,onepul_HC,onepul_HN,onepulH1_HC,
   onepulH1_HN,tancpx_Ca,tancpx_CO,tancpx_Nai,tancpx_Nam,tancpxt1rho_Ca,tancpxt1rho_CO,
   tancpxt1rho_Nai,dcptan_HNC,dcptan_HNCa,dcptan_HNCO.
   Add primary datasets for BioPack - tancpx_C13.par,tancpx_N15.par,tancpxt1rho_C13.par,
   tancpxt1rho_N15.par,dcptan_HNC.par
   Add Manual Files - SS_AutoCal_CP,SS_AutoCal_DP,SSpreface_Ca_CP,SSpreface_CO_CP,
   SSpreface_Nai_CP,SSpreface_Nam_CP,SSpreface_Ca_CP1,SSpreface_CO_CP1,SSpreface_Nai_CP1,
   SSpreface_Nam_CP1,SSpreface_Ca_DCP,SSpreface_CO_DCP
   Add or upgrade BioPack Macros that run autocalibration - BPgetdate,BPpage,BPsvf,
   BPsetparams,BPrtppar,BPgetpars,BPfixup,BP_SS_update_from_probefile,BPcheckprobefile,
   BP_SS_getsrate
   Add archive_SSAUTOCAL to separately archive autocalibration.

   Comment out the INOVA versions of startacq and endacq until we know whether
   compiler definitions work. 
   Fix a bug in TPPM - waveforms do not array. 

2009-9-28
---------

   Add the sequence tancpxt1 and related files. 

2009-10-2
---------

   Add the macros parpps and delpps for Global Power Protection (VJ3.0 only)
   Added a PowerSafety panel to solidsdefaults and changed the acq.xml
   file of all sequences to include it (VJ3.0 only). 
   Added ExperimentSelector.xml to ~/vnmrsys/templates/vnmrj/interface (VJ3.0 only)
   Added AllSolids.xml and AllSolids.txt to fix files in VNMRJ (VJ3.0 only) 

2009-10-8
---------

    Add WALTZ16 decoupling as a component of the dseq router - type WALTZ. 
    Add the Ywaltz and Hwaltz parameter groups 
    Add a WALTZ option to onepul.c. Add "waltz" to the menu and create Hwaltz 
    parameters in the setup macro. Resave the parameter set. 

2009-10-13
----------

    Add onepulhspl.c (UIUC) and related files. 
    Update MISSISSIPPI with the latest information from UIUC
    Add Hecho.xml, Xwaltz.xml, Xspinal.xml, Xtppm.xml, Xseq.xml to panelitems. 

2009-11-4
---------

    Add the macros mqf1ref3qsp, mqf1ref5qsp, mqf1ref7qsp, mqf1ref9qsp to reference 
    split-t1 MQMAS spectra. Add "Method1" buttons to selected experiments. 

2009-11-11
----------

    Add codex1d.c and related files. 

2009-11-20
----------

    Change tancpxt1 to allow an exponential decay with T1 rather than an inversion
    recovery. 

2010-01-06
----------

    Add the macros SS_setsolids_CP, SS_getsolids_CP and SS_setzero_CP.  These macros
    transfer Tancpx parameter values to and from the autocalibration probefile. "set"
    sets the probefile and "get" gets the information. The arguments are the nucleus 
    and the region, as used for the macros SS_AutoCal_DP, SS_AutoCal_CP, and SS_AutoCal_CP1
    SS_setzero_CP zeros the probefile for the selected region. 
 
    Add the macro SS_installprobe_ALL.  This macro copies SS_AutoCal_probe.template from 
    maclib to the user probe directory. Use this macro to prepare the probe file for 
    autocalibration. 

2010-01-20
----------

    Add the macros SS_setsolids_DP and SS_getsolids_DP.  These macros transfer basic 
    Onepul calibrations to the autocalibration probe file. 

    Add the macro SS_save_AutoTripRes_ALL.  This macro backs up the AutoTripRes
    directory to the data file with a specific name based on arguments. Argument
    1 is the nucleus, argument 2 is the region and argument three is the experiment
    to be backed up DP, CP, CP1 or DCP. 

2010-01-22
----------

    Update the macro copypseq. The update includes a bug fix when the copied setup macros were
    corrupted. Delete the macros findstring and replacestring. The macro copypseq uses 'sed' 
    instead. Updated manuals for copypseq. The manuals for findstring and replacestring were 
    deleted.

2010-02-12
----------

    Correct bugs in dcptan3drad.c and dcp2tan3drad.c. Sequence fails to reset
    the amplitude aX90 for the DARR mixing pulses. 

2010-03-12
----------

    Add the global parameter BPrroveride to SS_1_DCP and SS_2_DCP.  If BPrroveride='o'
    then Double CP is setup using the exisiting values of wr32 and wr52.  The results
    of the spinlock mesusurements are ignored. 

    Add the sequence tancpxref.c and related files. This sequence is the same as tancpxrefs.c
    except that it uses standard SPINAL decoupling. 

    Add the sequence jmasnca2d and related files. This sequence does a J-NCA experiment with 
    the methods of Mueller and Reinstra. 

    Fix a bug in r2inv1d.c -- sequence automatically sets an unwanted shaped pulse offset. 

2010-03-15
----------

    Fix a bug - manual file setupupdatepars not archived by archive_ALSOLIDSPACK

    Add the sequence jmasnco2d and related files. This sequence does a J-NCO experiment with 
    the methods of Mueller and Reinstra.

2010-04-09
----------

    Add the sequence wiselgcp2d.c and related files.
    Update AllParGroups with the manual for Xseq. 
    Add the functions dump_pboxpulse_array, dump_pboxpulse, 
    update_PBOXPULSE and combine_PBOXPULSE to pboxpulses.h. 
    Add the sequences jmascaco2d.c and jmascacosh2d.c. 

2010-05-25
----------
    
    Add the sequence hahnechodfs1d.c and related files
    Begin documenting README files with Agilent and a Walnut Creek address. 
    Add the sequence grad_rec.c and related files
    Add the sequence grad_profile.c and related files
    Add the gradZ parameter group to panelitems gradZ.xml
    Compile all sequences with VNMRJ 3.1 alpha. Added code
    to access HSgate, dps_on and dps_off. Initialized s.g
    in all the state files to avoid warnings.

2010-06-22
----------
    Add the macro narchive_SEQUENCE - This macro is similar to archive_SEQUENCE, except 
    that it requires the sequence or protocol name with correct case. The first character
    can be either upper case or lower case. 

    Add the sequence ahXH.c and related files.
    Add the sequence ahYXH.c and related files. 
    Add a module for SPINAL2 decoupling to soliddecshapes.h, update AllParGroups.

2010-07-02
----------
    Add the macro hssmallanal2 and make corrections to hssmallanal and hs90anal. 
    Adjust the defaults for hssmall in reset_hssmall. 
    Modify solidstandard.h to allow 16 bit phase, 16 bit amp and a 25ns step. 
    In solidelements.h: 
       Create #define PSD, where PSD of 8 (3 bits) multiplies 8192 (13 bits) to get 16 bits. 
       Redefine DPH using PSD to create alternate values.     
       Create #define WSD, where WSD of 64 (6 bits) multiplies 1024 (10 bits) to get 16 bits. 
       Create #define DWFM using WSD to be the minimum step size for waveform amplitudes.  
       Create #define FSD, where FSD of 16 (4 bits) multiplies 4096 (12 bits) to get 16 bits. 
       Create #define DFP using FSD to be the minimum step size for fine amplitudes.  
          
    In all files replace 8192 with PSD*8192 whenever the phase step is calculated. There 
    are many changes in solidmpseq.h 
    In solidshapegen use DWFM (instead of 1)in make_CP, make_shape and make_ramp to
    test steps for mimimum amplitude change. Also print phases with 5 figures after the 
    decimal and amplitudes with 4 figures after the decimal to see the extra bits. 
    Round all amplitudes with DWFM rather than 1. 

    In all sequences replace 8192 with PSD*8192 when calculating obsstepsize etc. This 
    change creates a boundary. USER SEQUENCES MUST NOW BE CHANGED. 

2010-07-03
----------

    Add the sequence spsmall.c and associated files.
    Create #define PTC, where PTC multiplies DPH to create coarse phase waveforms. 
    Create #define WTC, where WTC multiplies DWFM to create coarse amplitudewaveforms.
    Create #define FTC, where FTC multiplies DFP to create coarse fine amplitude.

2010-08-25
----------

    Update redoranal1 and redoranal2 to use all three arguments.  Fix bug - redoranal1
    is corrupt. 

2010-09-11

    Add the macros updatetext and replacetext. These macros allow one to do a global 
    search and replace or single search and replace on text files. 

2010-09-20

    Remove the macro replacetext and update updatetext. Add the macro updateprocpars, vtos and stov. 
    Make the appropriate changes to provide -37/0.5 doe db parameters and 1to0 step for a 
    parameters in parlib and maclib.

    Add jmascacoipap2d.c and related files. 

2010-09-23
----------

    These macros are used for SolidsPack Maintainance Only: 

    Reinstate the macro replacetext.  Add the macros make_README and make_all_README. The second 
    macro should contain a make_README for each pulse sequence. This macro should now be updated
    when a new sequence is added to SolidsPack. 

    The file ~/vnmrsys/manual/userlibtemplate contains the current Agilent Userlib form. Run 
    make_all_README to convert all manual files into updated .README files. 

    Remake all of the .README files in README with new Agilent Userlib forms and reference to 
    VnmrJ3.1 software. Experiments which do not work for INOVA have been called out with 'none'. 
    All experiments now reference VnmrJ2.2C to VnmrJ3.1. These are the software versions that 
    contain solidstandard.h. These new readme forms should allow the submission of experiments
    outside of SolidsPack. 

2010-09-29
----------

    Add the macros settabs and set_all_tabs to create Experiment Selector tabs in 
    all protocols. Remake all protocols with tabs equivalent to ExperimentSelector.xml.
    Reconcile ExperimentSelector.xml with exisiting protocols.  
    
2010-10-07
----------

    Add the file solidchoppers.h to psg and solidstandard.h. This file contains three
    replacement choppers make_cp(), MPchopper() and make_shape(). These functions contain 
    a new method for calculating the shape. They also allow the use of userDECShape() (if 
    present in the PSG) to output dec-shapes to the rf controllers without an intermediate
   .DEC file. The solidchoppers.h file also contains a new version of genericInitShape(). 

    All get functions in solidmpseqs.h have been altered to allow the use of .n90m and 
    .trap (see below). The new genericInitShape() also contains the same change. 

    Several new compiler definitions have been added to soliddefs.h (see below). 

    The older choppers and genericInitShape() remain in solidshapegen.h - with names
    altered by an appended "4"to make them unused by default (i.e."MPchopper4()").

    THE NEW SHAPE CALCULATION WITH BLOCK INTEGRATION: 

    The new shape calculation integrates over blocks of steps (the block can be 1 step) to 
    set an effective minimum step size greater than the hardware minimum step size.
    chosen by dres = 90 and pw in obsprgon. With the new method it is possible to set 
    pw = 50.0e-9 in obsprgon without creating fifo underflows. Use an effective minimum
    step multiplier between 2 and 10 to avoid any possibility of underflow. Note that 
    the pulse width resolution is set by the hardware minimum step - which can now be 
    50 ns. Take that fact in account when setting pw for waveforms. 

    Note that the above method does not actually set a finer waveform resolution - it
    just transfers the setting of the effective minimum step to a new parameter, the 
    multiplier. 

    NEW USE OF userDECShape FOR INTERPOLATION: 

    With VNMRJ 3.1 the PSG statement userDECShape() allows trapezoidal integration over 
    blocks of steps, using an interpolation processor in the RFcontroller. The new 
    choppers calculate a linear step increment for phase and amplitude which can be be 
    applied over the blocks of steps chosen by the step multiplier to obtain finer
    resolution in shapes - without fifo underflow - albeit - by a linear approximation. 

    NEW PARAMETERS .n90m and .trap: 

    Two new parameters have been added to the CP, MPSEQ and SHAPE structures:

    1 - .n90m - The step muliplier (1 to 10). Generally 5 avoids all underflow. 
    2 - .trap - 0 selects a standard waveform with block integtration. 
                1 selects userDECShape() (and interpolation) (VNMRJ3.1 only) 
                2 selects userDECShape(), but also prints a .DEC file for 
                  troubleshooting (VNMRJ3.1 only because interpolation is present). 

    Note that standard waveforms (0) allow block integration, but not interpolation. 
    
    All waveforms now use the parameter .n90 to set the hardware minimum step (nmin
    is no longer used). This parameter is set as the number of 12.5 ns ticks that 
    comprise the hardware minimum step (for example 4 is 50 ns, 16 is 200 ns). 

    DEFAULTS FOR VNMRS AND INOVA: 

    Generally set the VNMRS hardware step .n90 = 4 and set .n90m = 5 to avoid underflow. 
    In this case the effective minimum step is 250 ns (.n90*.n90m) = 4*5, for an 
    effective minimum step of 4*5*12.5 = 250 ns. With this choice waveforms can have 
    50 ns resolution. Choose between .trap = 0 for .DEC files and .trap = 1 or 2 for
    use of userDECShape with interpolation. The setting of 2 is for troubleshooting. 

    For INOVA set .n90 = 16 (200 ns hardware minimum step required) and .n90m = 1 
    (block integration provides no advantage for INOVA). Set .trap = 0 (userDECShape
    is not implemented for INOVA). 

    Globally set .n90, .n90m and .trap with complier definitions (see the top of 
    soliddefs.h). The default definitions are: 

    NEW COMPILER DEFINITIONS: 

    #define VNMRSN90M 5           //  N90 Multiplier for VNMRS (1 to 10)
    #define VNMRSN90 4            //  N90 for VNMRS (50 ns is 4)
    #define VNMRSTRAP 0           //  N90 Flag for userDECShape (No is 0, Yes is 1, Yes+Print is 2)
    #define INOVAN90M 1           //  N90 Multiplier for INOVA (always 1)
    #define INOVAN90 16           //  N90 for INOVA (200 ns is 16 -recommended)
    #define INOVATRAP 0           //  N90 Flag for userDECShape for INOVA (always 0)

    CHANGES IN solidmpseqs.h:

    All get functions in solidmpseqs.h contain the code such as:  
   
    // Set the Step Sizes

      s.n90 = VNMRSN90;
      s.n90m = VNMRSN90M;
      s.trap = VNMRSTRAP;

      if (PWRF_DELAY > 0.0) {
         s.n90 = INOVAN90;
         s.n90m = INOVAN90M;
         s.trap = INOVATRAP;
      }

   to set the steps. It is necessary to change the compiler definitions manually to adapt
   SolidsPack to the console and software version. 

2010-10-19
----------

   A new asSetUp is included (Dan Iverson). This version fixes a bug on some Linux
   systems for which the shimDriver window fails to open. 

   A new shimDriver is included (Dan Iverson).  This version fixes a bug where the FID fails 
   to display and crashes shimDriver. 

   Add the sequence rotorsynctest and related files. 

2010-10-26
----------

   Update solids autocalibration with the parameters BPchain and BPcopy in SS_AutoCal_CP,
   SS_AutoCal_CP1, SS_AutoCal_DCP.  BPchain='y' does _CP and _CP1 on 13C, _CP and _CP1
   with 15N, and _DCP in a loop.  BPcopy is the number of times through the loop.  

   Incorporate SS_saveAutoTripRes_ALL into _CP, _CP1 and _DCP to automatically save 
   AutoTripRes. Add the date and BPcopy to the last field. 

   Add the sequences onepulcpm.c and tancpxcpm.c and related files.  
   Add the module cpmH to panel items and AllParGroups
   Add the STATE cpm_state to solidstates.h.
   Add the SHAPE getcpm() to solidpulses.h

2010-11-06
----------

  * Fixed phase table in tancpxt1.c
  * Fixed phases in module TOSS5
  * Fixed phase calculation for windowed sequences in solidobjects.h
  * New file solidshapes.h in psg with modules needed for
    windowed sequences which use 'shapes in loop'. There is some
    description at the beginning of the file
  * New sequence wpmlgxmx1d1 for windowed PMLG with shape in loop

2010-11-12
----------

  Bug fixes in solidchoppers.h:

  * In make_shape changes which ensure that pulses are never shorter than 
    n90*n90m. Fix in memory allocation for UserDECShapes.
  * Special version for make_shape1 and genericInitShape1: used by
    getdfspulse(). These versions are doing amplitude interpolation but not
    phase interpolations. appropriate changes are made to getdfspulse. 

2010-11-30
-----------

  * With this date - the archive files for inovasolids2.tar.Z and suninovasolids2.tar.Z
    will contain no further additions - except for bug fixes specific to these packages.   
    solidspack.tar.Z will continue to be updated.  Note that inovaolids2.tar.Z and 
    suninovasolids2.tar.Z can still be created from a SolidsPack installation and will 
    reflect changes made to existing files. However there are no plans to distribute further
    versions. Users should load solidspack.tar.Z for all uses of SolidsPack. 

    The file solidspack.tar.Z should continue to serve INOVA systems on Linux - as did    
    inovasolids2.tar.Z. Note the caveats associated with the use of SolidsPack with INOVA. 
    Also note the discussion of INOVA in the entry for 2010-10-7, particularly the variables
    that define chopper operation. Supplied sequences should use the correct values for INOVA,
    but user modules may need modification.  

    As before, testing for INOVA is very limited. At this time there will be no special 
    package for SUN systems (zipped with "compress") -- but such a package can be easily
    made if needed. 

2011-03-11
----------
  
  * Macro 'reset_cp' is added to assist novice user in setting power for tancpx
    A manual added to 'manual' directory. N.B.: the macro is not added to 'wrp'
    value for tancpx and should be called explicitly.
  * The phase cycle phXecho=0,1,2,3,2,3,1,0 is changed to 0,1,2,3,2,3,0,1 in
    sequences ssecho1d and qcpmg1d. Th change was proposed by Boyan Bonev,
    Nottingham University
  * A simple 3-pulse exsy2d sequence is added
  * Literature references added to macros mqf1ref3q and mqf1ref3qs

2011-04-19
----------

    Fix bug - "Onepul sample templates do not display". This bug was inserted 5/25/10
    and carried over. It is now fixed. The bug was also in Grad_rec and Grad_profile. 

    Check jmas sequences, jmasnca2d, jmasnco2d, jmascaco2d and jmascacosh2d - these all
    now compile. An updated file pboxpulse.h from inovasolids2 was copied over (it was not 
    transferred on 2010-11-30). The updated file contains combine_PBOXPULSE(). Also 
    combine_array was added to solidelements.h for the inovasolids2 version - it was also 
    not trasferend on 2010-11-30. Be aware that the sequence with IPAP is not complete. 

    Add Exsy2d to ExperimentSelector.xml and ProtocolLabels.xml so that it displays in
    Vnmrj before 3.1. Also add Grad_rec, Grad_profile, Hahnechodfs and Tancpxref.

    Adjusted soliddefs.h so that waveforms are calculated with a standard 200 ns step
    by default. Users must reset these values to use interpolation. See 2010-10-7 for 
    a description of interpolation. 

    Copied soliddecshapes.h from inovasolids2. The version with SPINAL2 was not transferred
    on 2010-11-30. This change allows AhXH and AhYXH to compile. 

2011-05-05
----------

    Add sequence onepulref.c and related files. 
    Add sequence qcpmgsh1d.c and related files. 

2011-05-15  
----------

    Add sequence ahX.c and related files    (from UIUC as hX.c) (not available publically) 
    Add sequence ahXX.c and related files   (from UIUC as hXX.c) (not available publically) 
    Add sequence ahYXX.c and related files  (from UIUC as hYXX.c) (not available publically) 

    Add a getdseq2 module to soliddecshapes.h to accomodate 2-angle SPINAL (noted as "SPINAL2"). 
    The getdesq2 module allows selection between TPPM, 2-angle "SPINAL2" (but with the Hspinal 
    module) and WALTZ. It will be a repository for more advanced decoupling patterns.. The 
    dseq module will be frozen to contain its present contents, TPPM, 1-angle SPINAL 2-angle 
    SPINAL2 (with the Hspinal2 module) and WALTZ. Note that both modules use the DSEQ structure,
    but call different software to make either SPINAL or SPINAL2. 

    For example: 
       Conventional: Use DSEQ dec = getdseq("H") to use the Hseq choices 'tppm','spinal'
       ( 1-angle Hspinal) 'spinal2'(2-angle Hspinal2) and 'waltz'. Use _dseqon(dec) and _dseqoff(dec)
        to run the patterns. 

       Advanced: Use DSEQ dec = getdseq2("H") to use the Hseq choices 'tppm','spinal' (2-angle Hspinal) and 
       'waltz'. Use _dseqon2(dec) and _dseqoff2(dec) to run the patterns. 

    Their are two ways to make 2-angle spinal, use getdseq() with the choice 'spinal2' and parameters 
    labelled "spinal2" or use getdseq() with the choice 'spinal' and parameters labelled "spinal2". 

    AllParGroups has been changed to note this distinction in manual files. 

    Add the choice 'paris' to getdseq2() with PARIS, getparis() and make_paris(). 

    Dupe (lengthen) all decoupling patterns to 64 steps, this change fixes a fifo underflow bug associated
    with short patterns. 

    Add getpostc6() to solidmpseqs.h, used first in ahXX.c. 

2011-05-21
----------

     Add the macro probeparamgroup and a manual file for 'set' and 'get'

2011-06-21
----------

     Update the macro probeparamgroup with the modes: 'set','setlocal','setstring',
     'get' and 'getlocal'.  With these changes one can use probeparamgroup to set
     and get from the probe file using local variables. 

2011-08-26
----------

     Add place holders for BioSolids Sequence (not included) ahX, ahXX, ahYX, ahYXX,
     and ahXYX.

     Add par2d - this macro was replaced by par2D in 3.1 but it is still used in 
     SolidsPack reset_ macros. 

     Add solidchoppers2.3a.h to psg. This macro must be copied to solidchoppers for 
     VnmrJ 2.3a and before. The newer choppers reference interpolation, that is not 
     present in older VnmrJ versions. 

2011-11-28
----------

     At this date -- the zip solidspackvj3.1.tar.Z is compatible 
     with the PC datastation. See Below: 

     BioSolids (Sequences 1 to 5 are in SolidsPack with auto-calibration 
     macros. 

     Change all lowercase setup macros from macro to macro_pars. 
     Create a new archive file archive_ALSOLIDSPACK3 with changes. 
         1.  Archive macro_pars instead of macro.
         2.  Remove uppercawe and lowercase maclib directories
         3.  change output name to solidspackvj3.1
         4.  turn on archival of Biosolids Sequences
         5.  Archive macros for StudyQ biosolids automation
         6.  Add the studyQ autocalibration macros. 
         7.  Begin a list of Sequence archival macros.
         8.  Remove archival of vnmr_dtpad and reset_ahX
     Create and archive archive_SEQUENCE3 and narchive_SEQUENCE3. These
     macros archive setup macros as macro_pars. 
     Fix initialization problems with chnl, ph0out and aOout in solidchoppers.h
     
2011-11-30
----------

      Revise the README solidspackvj32.README
      Add the sequence ahXXX.c and related files. 
      
2011-12-13
----------

     Revise the macro paramgroup and remove createparam. Update the manual 
     files.
     
     Add the sequences bhXH.c and bhYXH.c and related files. 
     
2011-12-15
----------

     Complete the macro paramgroup and add the first _acq setup macro, ahX_acq.

2011-12-16
----------

     Complete ahXX_acq, ahXXX_acq, ahXYX_acq, ahYX_acq and ahYXX_acq. Update 
     dg and ap templates of Settancpx. Add bhXH_acq and bhYXH_acq. 

     Note that macros _acq are better organized using paramgroup and will eventually 
     replace _par. 

2011-12-19
----------

     Create the Protocol Macros to run autocalibration from the StudyQ. These are: 

     DpC13adamNULL, DpC13adamNUT, DpC13adamREF, DphpH1adamNULL, DphpH1adamNUT,
     DpmpH1adamNULL, DpmpH1adamNUT, CpC13alphaNULL, CpC13alphaNUT, CpC13alphaSPINLOCK,
     CpH1alphaSPINAL, CpH1C13adamMATCH, CpH1C13alphaCNTCT, CpH1C13alphaMATCH1,
     CpH1C13alphaMATCH, CpH1C13alphaTANRAMP, CphpH1alphaNULL, CphpH1alphaNUT,
     CpmpH1alphaNULL, CpmpH1alphaNUT

      Create the Protocol .xml files to run autocalibration from the StudyQ. These are: 

     DpC13adamNULL.xml, DpC13adamNUT.xml, DpC13adamREF.xml, DphpH1adamNULL.xml,
     DphpH1adamNUT.xml, DpmpH1adamNULL.xml, DpmpH1adamNUT.xml, CpC13alphaNULL.xml,
     CpC13alphaNUT.xml, CpC13alphaSPINLOCK.xml, CpH1alphaSPINAL.xml, CpH1C13adamMATCH.xml,
     CpH1C13alphaCNTCT.xml, CpH1C13alphaMATCH1.xml, CpH1C13alphaMATCH.xml, CpH1C13alphaTANRAMP.xml,
     CphpH1alphaNULL.xml, CphpH1alphaNUT.xml, CpmpH1alphaNULL.xml, CpmpH1alphaNUT.xml

     Modify the macro archive_file of accept the 'PKP argument. Create a manual file for 
     narchive_SEQUENCE3.
     
2011-12-21
----------

      Add the protocol .xml files: 
      
     CpC13carbonylNULL.xml,CpC13carbonylNUT.xml, CpC13carbonylSPINLOCK.xml, CpH1carbonylSPINAL.xml, 
     CpH1C13carbonylCNTCT.xml, CpH1C13carbonylMATCH1.xml, CpH1C13carbonylMATCH.xml, CpH1C13carbonylTANRAMP.xml,
     CphpH1carbonylNULL.xml, CphpH1carbonylNUT.xml, CpmpH1carbonylNULL.xml, CpmpH1carbonylNUT.xml

     CpN15amideNULL.xml,CpN15amideNUT.xml, CpN15amideSPINLOCK.xml, CpH1amideSPINAL.xml, 
     CpH1N15amideCNTCT.xml, CpH1N15amideMATCH1.xml, CpH1N15amideMATCH.xml, CpH1N15amideTANRAMP.xml,
     CphpH1amideNULL.xml, CphpH1amideNUT.xml, CpmpH1amideNULL.xml, CpmpH1amideNUT.xml

     CpH1C13adamSET.xml, CpH1C13adamGET.xml, CpH1C13adamINIT.xml, CpH1C13alphaSET.xml, CpH1C13alphaGET.xml,
     CpH1C13alphaINIT.xml, CpH1C13carbonylSET.xml, CpH1C13carbonylGET.xml,
     CpH1C13carbonylINIT.xml, CpH1N15amideSET.xml, CpH1N15amideGET.xml, CpH1N15amideINIT.xml,

     DcpN15C13alphaMATCH.xml, DcpN15C13alphaCNTCT.xml, DcpN15C13alphaTANRAMP.xml,
     DcpN15C13alphaXMATCH.xml, DcpN15C13carbonylMATCH.xml, DcpN15C13carbonylCNTCT.xml,
     DcpN15C13carbonylTANRAMP.xml, DcpN15C13carbonylXMATCH.xml

     DcpN15C13alphaSET.xml, DcpN15C13alphaGET.xml, DcpN15C13alphaINIT.xml,
     DcpN15C13carbonylSET.xml, DcpN15C13carbonylGET.xml, DcpN15C13carbonylINIT.xml

      and the corresponding Macros of the same name.

     Protocols Dp and Cp are archived with ahX.tar.Z as well.  Updated (archive_AHX)
     protocols Dcp are archived with ahYX.tar.Z as well.       Updated (archive_AHYX)

2012-01-08
----------

     Added Study StdycpH1C13alphaALL.xml to templates/vnmrj/protocols
     Added Study StdycpH1C13carbonylALL.xml to templates/vnmrj/protocols
     Added Study STDYdpC13H1adamALL.xml to templates/vnmrj/protocols

     files also found in maclib and studylib (archive_AHX).

2012-01-11
----------

     Update archive_file with the PKSTDY option to save studies from studylib, change the 
     manual files.  

2012-01-17
----------

     Added Study StdydcpN15C13alphaALL.xml to templates/vnmrj/protocols
     Added Study StdydcpN15C13carbonylALL.xml to templates/vnmrj/protocols

     files also found in maclib and studylib (archive_AHYX).

     Added macro cpHXscans

     Added Protocols CpH1C13alphaSCANS.xml, CpH1C13carbonylSCANS.xml, CpH1C13amideSCANS.xml
       
       and the corresponding macros of the same name (archive_AHX). 

     Added macro dcpYXscans

     Added protocols DcpN15C13alphaSCANS.xml and DcpN15C13carbonylSCANS.xml

       and the corresponding macros of the same name (archive_AHYX). 

2012-01-18
----------

     Added macro dcpYXscans2d

     Added protocols DcpN15C13alphaSCANS2D.xml and DcpN15C13carbonylSCANS2D.xml

       and the corresponding macros of the same name (archive_AHYX). 

2012-01-20
----------

     Added protocols CpH1C13alphaSCANS2D.xml and CpH1C13carbonylSCANS2D.xml

       and the corresponding macros of the same name. These protocols are associated 
       with ahXX.c (archive_AHXX). 

     Added a groupcopy('current','processed','acquisition') to solidsseq1d so that 
     'processed' putCmd statements will work. 

2012-01-24
----------
     Added cpshXmax to calibrate bandselective shaped pulses.

     Modified cpHXprobe to provide a 'calc' function. This function uses aH90, pwH90,dpwr, 
     aX90, pwX90, tpwr and srate to estimate all calibrations. Added a shapd pulse function 
     to 'get','set','init' and 'calc'.  The shaped pulse calculation in 'calc' uses arguments
     $6 and $7 to set shape and pulse width.  

     Added protocols CpH1C13alphaSHPMAX.xml, CpH1C13carbonylSHPMAX.xml and CpH1N15amideSHPMAX.xml

     and the corresponding macros of the same name (archive_AHX).

     Added protocols CpH1C13alphaCALC.xml, CpH1C13carbonylCALC.xml and CpH1N15amideCALC.xml

     and the corresponding macros of the same name (archive_AHX).
     
2012-01-25
----------  
     Added protocols DcpN15C13alphaCALC.xml, and DcpN15C13carbonylCALC.xml

     and the corresponding macros of the same name (archive_AHYX).

     Added protocols 'DcpN15C13alphaDARR.xml','DcpN15C13alphaC7.xml','DcpN15C13alphaSPC5.xml',
      'DcpN15C13alphaDARRbs.xml','DcpN15C13alphaC7bs.xml','DcpN15C13alphaSPC5bs.xml','DcpN15C13alphaDARRct.xml',
      'DcpN15C13alphaC7ct.xml','DcpN15C13alphaSPC5ct.xml','DcpN15C13alphaDARRbsct.xml','DcpN15C13alphaC7bsct.xml',
      'DcpN15C13alphaSPC5bsct.xml','DcpN15C13carbonylDARR.xml','DcpN15C13carbonylC7.xml','DcpN15C13carbonylSPC5.xml',
      'DcpN15C13carbonylDARRbs.xml','DcpN15C13carbonylC7bs.xml','DcpN15C13carbonylSPC5bs.xml',
      'DcpN15C13carbonylDARRct.xml','DcpN15C13carbonylC7ct.xml','DcpN15C13carbonylSPC5ct.xml',
      'DcpN15C13carbonylDARRbsct.xml','DcpN15C13carbonylC7bsct.xml','DcpN15C13carbonylSPC5bsct.xml',

     and the corresponding macros of the same name (archive_AHYXX).

     Added protocols 'CpH1C13alphaDARR.xml','CpH1C13alphaPARIS.xml','CpH1C13alphaRFDR.xml','CpH1C13alphaC7.xml',
      'CpH1C13alphaC6.xml','CpH1C13alphaSPC5.xml','CpH1C13carbonylDARR.xml','CpH1C13carbonylPARIS.xml',
      'CpH1C13carbonylRFDR.xml','CpH1C13carbonylC7.xml','CpH1C13carbonylC6.xml','CpH1C13carbonylspc5.xml'

     and the corresponding macros of the same name (archive_AHXX).

    Updated cpHXscans2d dcpYXscans2d and dcpYXscans3d to handle the above protocols. 

2012-01-26
---------- 
     Added protocols 'DcpN15C13cacoDARR.xml','DcpN15C13cacaDARR.xml','DcpN15C13cocaDARR.xml','DcpN15C13cocoDARR.xml',
      'DcpN15C13cacoDARRbs.xml','DcpN15C13cacaDARRbs.xml','DcpN15C13cocaDARRbs.xml','DcpN15C13cocoDARRbs.xml'

     and the corresponding macros of the same name (archive_AHXYX).

2012-01-31
----------

     Added setup macro cpHXXXscans3d for ahXXX.c. 

     Added protocols 'CpH1C13alphaDARR3D.xml','CpH1C13alphaPARIS3D.xml','CpH1C13alphaRFDR3D.xml',
                   'CpH1C13alphaC73D.xml','CpH1C13alphaSPC53D.xml','CpH1C13alphaSCANS3D.xml',
                   'CpH1C13carbonylDARR3D.xml','CpH1C13carbonylPARIS3D.xml','CpH1C13carbonylRFDR3D.xml',
                   'CpH1C13carbonylC73D.xml','CpH1C13carbonylSPC53D.xml','CpH1C13carbonylSCANS3D.xml'

     and the corresponding macros of the same name (archive_AHXXX).

     Added archive_SOLIDSDEVELOPER3 - with files for sequence development not in vnmrJ3.2. 

2012-02-01
----------

     Added setup macro dcpHYprobe for ahYX to set and get HY CP parameters. 

     Added protocols 'DcpH1N15amideSETca.xml','DcpH1N15amideGETca.xml','DcpH1N15amideGETco.xml',
                     'DcpH1N15amideSETco.xml',

     Added the button macros 'DcpH1N15amideSET','DcpH1N15amideGET'. 

2012-02-03
----------

     Added NUS panels NusSample.xml and NusSparse.xml to sequence templates  ahXX,ahXXX,
     ahXYX,ahYX and ahYXX. These panels are extracted from BioPack.  The new panels run 
     only if BioPack is enabled as an appdir. The panels only contain access to the SPARSE
     method (Eriks Kupce) of NUS.  

     Added NUS code to sequences ahXX.c,ahXXX.c,ahXYX.c,ahYX.c and ahYXX.c.  Because NUS 
     is hard-coded the function psg4cs has been removed from the new panels. 

2012-02-07
----------

     Replaced the NUS code so as to automatically select SPARSE='n' when nimax 
     is set less than ni+1. Entry of nimax >= ni+ 1 automatically sets SPARSE='y'. 
     One can enter nimax from the 'acquisition' panel.  

2012-03-05
----------

     Add NMRpipeProc.xml to layout for ahXX, ahXXX,ahYX,ahYXX and ahXYX

2012-07-07
----------

     Add the Sequence bhXJX and related files. 

     

==================================================================================
Known problems that are uncorrected and workarounds as of 2007-06-21
==================================================================================

 1. (VNMRJ2.1B only) The v-variables that correspond to 'zero', 'one', 'two' etc share the.
   space of v-variables 1 to 32. Some sequences use the commands below to.
   "dynamically" assign phase tables and V variables in functions.  The.
   argument is the highest table or V-variable number and subsequent.
   tables and variables are assigned with a descending index. Use of 30.
   below seems to overwrite the constant v-variables above.

   // Set the Maximum Dynamic Table and v-var Numbers

   settablenumber(10);
   setvvarnumber(30);

   When setvvarnumber(30) is used, avoid the constants and use initval(0.0,v#); 
   where v# is an unused v-variable when 'zero' is needed. Another approach to
   creating a zero V-variable is to use the command: 

      int phXzero = int phXzero = initphase(0.0, obsstep); 
   
   and use phXzero in place of v#.  initphase() is defined in solidselements.h.  
   The command setvvarnumber(); must be used previously inorder to use initphase(). 
