PROBE for Windows NT (32 bit) Version Changes Last Updated 9/2002 8/19/97 Edit constants for VB5. 8/20/97 Add call to RealTimeGetCrystalStatus in PeakCAPInitInterface routine. v. 4.00 Add beam current and beam size to sample description to TypeLoadDescription. Create Tracor2.bas for TestTrac.bas. Add SX50.INI to MAKTEST.BAT. Add check in UserFormLoadSearch to check for ListCount < zero if loading custom text fields. Modify ACQUIRE.BAS and WAVE.BAS for additional move centroid steps for ROM peaking. Add to GLOBAL.BAS. Remove "Probe for Windows" from Status form captions. Correct "Travese" typo" 9/7/97 Fix bug in ROM peaking procedures if insufficient P/B was determined. An "exit sub" was missing from the routine (both ProbeWin and StartWin). Fix TracorGetAbsorbed routine. 9/8/97 Create MakeXray.exe applet for creating new Xray.MDB files. 9/15/97 Create workaround for grid_click event - load modal form bug (VB5). Requires the use of a timer for each modal form load from grid_click event. Fix display glitch when less than three spectrometers are installed and wavescan is performed. 9/25/97 Add temp variable to New FileSetupLoad to store AutomateNewSampleBasisFlag so that loading an automated file setup does not change. Modify AcquireDoAutomateNext to load parameters based on AutomatenewSampleBasisFlag even for peaking automation. Modify AcquireStartPeak to load sample or file setups based on AutomateNewSample BasisFlag. Set FormSETUPRUN!DirFileList.Path to CurDir$. Remove extra Rollback statement from DataSampleSetup (not found error). Fix InterfSave (Standard.Exe) to skip hydrogen/helium. 9/27/97 Add import and export buttons to FormSETUP. Add fields for wavescan and peaking parameters. 10/1/97 Begin coding Grid Minerals form and modules for Brimhall digitizing microscope. 10/5/97 Remove Probe for DOS import format (*.IMP). Add max counts fields and variables for statistics based counting. 10/6/97 Additional coding of Grid Minerals in Stage app. Add additional interface specific EDS code. See EDAX.BAS, KEVEX.BAS, OXFORD.BAS and PGT.BAS. Note that RealTime routines for EDS are renamed. 10/14/97 Additional coding for Brimhall's Grid Minerals feature. Fix EDS element loading in AnalyzeCalculate. Add confirm to DataCompact. 10/15/97 Remove demo expire code from InitData 10/16/97 Fix DataCurrent code to handle canceled volatile samples correctly. Add code to FileInfoGetVersion to handle opening 16 bit Probe databases in Realtime mode. 10/18/97 Add documentation on installation files, copy protection and element setup and count time parameter changes. 10/23/97 Add CommandPacingInterval parameter to .INI files. See RealTime.BAS. Change some ZAFFlu warnings to only print if in debug mode. Check for Limit error in AMGetMotorStatus also when turning off stage motors. Check for presence of GRIDMIN.DAT file in Stage GridMineralsLoad code. Increase size of input and output serial port buffers to 2048 bytes. 10/26/97 Add variables for database "exclusive" opendatabase modes for each application. Increase SX50 timeouts (especially for character timeout when changing beam current). Add check for no hotkeys assigned in GridMin. Add GRIDMIN.DAT to distribution. Fix missing code in DataCurrent!! 11/12/97 Modify TracorCheckPACResponse and TracorInputString to add extra error message text. Modify MoveUpdateFaraday to change button label to Faraday Is In or Faraday Is Out. 11/13/97 Add call to update spectrometer motor position in AcquirePeakROM and WavePeakROM routines. Add extra msgbox error text to TracorConvertReal. 11/17/97 Move Call RealTimeStringClear ahead of calls to RealTimeStopAllMotors and RealTimeFreeAllMotors in Free/Clear button click event. Modify Tracor routines to check that status byte returned is <> 1. Modify TracorGetStatusErrorText to subtract 256 from integer to give negative integers. Modify Move dialog activate event to skip reloading of fields if using serial interfaces (TRACOR and SESAME) Move Call to RealTimeGetAllPositions to Move dialog activate event from MoveLoad. 11/18/97 Move call to set PAC system variable for number of ROM peak scan points to TracorSetConditions since it can't be changed while another spectrometer is being peaked. 11/29/97 Increase maximum number of standardizations "MAXSET" from 20 to 30. Increase maximum number of samples "MAXSAMPLE" from 1000 to 2000. 12/1/97 Add call to RealTimeBacklash in CountDoCountTime for program StartWin to use "smart" backlash also. 12/6/97 Add code to update sample arrays when adding standards in DataFileSetupLoadData. Turn off autoanalyze option in NewFilesSetupLoad, if case no standard intensities are loaded. Display calculated hi and lo off-peaks in WaveListSpectrometerSetup for StartWin. Modify AcquireStartPeak and PeakLoad to use last unknown, then last wavescan, then last standard for peaking setup. Modify ZIPDIST.BAT to create and copy a text file called DISK31.ID containing the date that the distribution was made to the distribution disk containing DISK31.ZIP. Update PFW documentation and help file to explain the % interference calculations for the Standard "Interferences" dialog and for the Probe for Windows "Calculate Interferences" button in the Elements/cations and Standard Assignments dialogs. 12/8/97 Modify TestTrac to handle integer string conversions to floats and integers. Fix bug regarding 32 version of TestTrac for integer and float conversion for TRACOR. Needed to switch from string UDT to byte UDT. 12/19/97 Add types to AM.BAS code for DCX version checking since it was removed from TRACOR code on 12/8/97 : Dim tint4 As TypeInt4 ' version number info Dim tstr4 As TypeStr4 ' version number info Add checking for position and grainnumber in PositionAddPosition code. Add new routine PositionEditgetSetupNumbers to POSITION.BAS to allow user to "browse" MDB probe files for sample numbers from Position Edit dialog. Required moderate code changes to PositionEditLoad and PositionEditSave codes regarding setup numbers. Change common dialog control (StartWin) to have cancel error = true as default. Modify GetPHASetPHAMoveOnPeak to wait for move to finish before enabling Set, Get and Graph PHA buttons. Disable Move To On Peak button if using selected elements. Also add wait code to GetPeakSetPeakMoveOnpeak also. 1/16/98 Modify faraday button captions to indicate action rather than state (insert/remove or blank/unblank). Modify AM.BAS DLL version check of MCAPI to use byte rather than string UDT since NT uses unicode internally. Modify help file per Kremser request. 2/21/98 Change xyzw array to static in StagFormDoGridMineralsNext. Add call to MCGo in AMPauseMotor. Add GridMineralsEnable to disable form controls during grid minerals. Add routine EditMakeNewMACTable for creating MCMASTER.DAT and MAC30.DAT MAC tables. Add additional options to MAC dialog from ZAF selections. Increase MAXSTD% to 42. Implement FRAME MAC (JTA) and MAC30 C_MAC.C (Carpenter) equations in Absorb.bas. Modify Edit x-ray and Mac dialogs to load modally. 3/1/98 Fix minor bug that prevents original sample name from being loaded when acquiring multiple digitized wavescan samples (add "or sample(1).Type = 3" in AutomateDoAutomateNext). Thanks to Paul C. 3/19/98 Add FormMSGBOXALL to provide a Yes To All button for deleting analysis and position samples. See MiscMsgBoxAll function. Fix TestPHA button code per Dave Stanford bug report. Allow Volatile step size of zero for x or y but not both. Fix bug that cleared standards in run when they had not been acquired yet and an unknown sample was renamed. See GetNameAll. Add INI file parameter to [software] section to default the Automate window PeakOnAssignedStandardsFlag. 3/27/98 Add code to Standard.exe (Stagform.bas) to calculate and printout the z-bar (atomic fraction) if in debug mode. 4/1/98 Modify Realtime.bas to utilize backlash tolerance for checking crystal flipping position before flipping if using flip flags of 3 (flip above position) or 4 (flip below position). Modify SETOPT form to change EDS label color when EDS element is clicked. Modify COND.BAS to leave takeoff angle field enabled if running CalcZAF. Fix problem when modifying a previously loaded sample or file setup and the sample is "continued" for more than 50 points. Added code and warning to AcquireChangeElements and AcquireChangeConditions to blank sample and file setups. Thanks to Paul C. Comment out version check for Probe database files to allow them to be opened even in real time mode. Add additional "AcquisitionOn" global variables to QueryUnLoad event of FormSTATUSAU to prevent losing cancel button during extended acquisitions that are not running from Automate! window (wavescans, etc.). 4/18/98 Modify saved file name for FormMSGBOXALL to keep f8.3 format. Modify AcquireDoPeakROM and TracorROMWaitPeak to not return an error if returned centroid is zero (failed). Instead, use this as a flag to print a warning message to the log window and skip to the next element. Modify AcquireCheckNominal to use DefaultBeamCurrent (from INI file) if user clicked cancel (and interface is not demo or AM using cps beam). 4/19/98 Fix bug in NewmakeNewSample (also modify NewSampleLoadSetup) to ensure that NewSampleSetupLoadedFlag is set when manually loading a sample setup. 5/2/98 Disable GET/Set PHA buttons in both StartWin and ProbeWin during Get PHA Distribution process. Add label text to FormDISPLAY (StartWin) to 3 S.D. checkbox. Modify contact information and Minimum and preferred system requirements in documentation and help file. 5/5/98 Test PFW for Year 2000 compliance. Tested OK, see 2000.MDB. Modify Register.Bas to accept any entry greater than 2 characters. 5/6/98 Add calculations for alternative z-bar calculations in StanForm.Bas 5/7/98 Add additional zbar calculations in StanFormCalculateZbars. 5/11/98 Add to Standard.mak new routine (StanForm.bas) StanFormCalculateContinuum to calculate continuum (and characteristic) absorption and anisotropy. Modify CalMac to calculate range of macs (+- 100 eV). 5/13/98 Considerable modifications to Absorb.bas and CalMAC.bas so that calculations can be performed using MAC30 and MACJTA routines for mass absorption coefficients also. Add continuum absorption calculations to StanForm.bas in DebugMode. 5/15/98 Add option (check box) for outputting averages only from Plot! window. See code changes in PlotGetData. Modify CalMac (Absorb.bas) to also calculate MAC range for JTA MACs. Rename emt and gen to genstd and gensmp in ZAF.bas. Create new routine in ZAF.bas called ZAFGetContinuumAbsorption (not implemented yet) for future use with the MAN correction? 5/17/98 Modify continuum calculations in StanForm.bas again. Modify Peak.bas (move to peaks) to display element name in acquire window after moving. Change default extension of Canada position files from .POS to .LEP. 6/4/98 Fix eds bug in AcquireDoSample that inserted faraday cup before eds was finished. Add commands to SX50AutoFocus to set light before starting auto- focus. Add commands to SX50SetConditions and SX50StopCounters to turn off light if EDSThinWindowPresent flag (from INI file) is set during combined EDS-WDS acquisition. Thanks to Ken Severin! Modify interval halving peak center routine to use previous count and position in both ProbeWin and StartWin upon completion. Thanks to Dan Kremser! 6/7/98 Minor change to DataMotor to deal with motor table when loading a file that was created with a different motor setup. No effect to users. Add divide by zero error trapping to XrayGetOffsets (XRAY3.BAS). Add EDSThinWindowPresent to sample INI files. Add check for same beamcurrent and beam size to VolatileCalculateFit. Add projected detection limits calculations to TypeDetection limits. 6/20/98 Modify StanFormCalculateZbars to calculate range of exponents for zed fractions and write to file (StanFormCalculateZedfracsToFile). Fix input past end of file problem with ModalDoModal (Standard). 6/21/98 Fix StanFormCalculateZbars to output range of exponent zed fraction z-bars using range of exponent zed fractions. 7/2/98 Create new routine ZED.BAS for future use in development of a new zed fraction based matrix correction. Only implemented in CalcZAF so far. 7/20/98 Modify TestType to add ability to shutdown microprobe from command line and menu item. See routine TestTypeShutdown. Remove "halt" command in SX50Shutdown per cameca instructions. 9/12/98 Add ElectronFractions flag. v. 4.02 9/13/98 Add UseAutomaticFormatForResults flag and PrintAnalyzedAndSpecifiedOnSameLine flag. v. 4.03 9/16/98 Add new flag "NoMotorPositionLimitsChecking" to PROBEWIN.INI to turn off electrical limits checking for Advanced Microbeam interface using the original JEOL crystal flipping hardware. See [software] section in INI file. This flag is intended only for Dan Kremser's site, since subsequent JEOL installations use a new crystal flipping electronics that does not require an electrical limit signal. Fix minor bugs in UserWin. 10/9/98 Modify TestTC to run multiple copies for testing purposes. Fix problem with calling TestTCCloseCounterTimer without open handle. 10/10/98 Modify TestTC to support maxcount feature. Changes to AM.BAS. 10/11/98 Modify PHA.BAS for PHA_32.DLL. 10/12/98 Modify Edax.bas to use isw%=2. 10/21/98 Fix bug DataCorrectData where ProbeWin would drop into an endless loop if the sample was a volatile element calibration sample and the exponential background correction option was selected. 10/27/98 Modify PHA.BAS to not pass returned handle. Modify CalcZAFBinary to use new flag for filtering output. 10/29/98 Modify TC.BAS and PHA.BAS to use new device names for IOMapper. Modify SX50.BAS (preliminary changes for Gaynor). 11/4/98 Add error trap in InitINI for empty stage bit map file string. 11/11/98 Add check for Brown/bastin atomic number correction (requires "no phi equation" and a pr-z expression). Modify electron fraction flag to only affect atomic number correction. 11/17/98 Add buttons to Locate dialog to export analysis positions. 11/21/98 Modify all applications to use a Rich Text control for greater text v. 4.04 capabilities (> 64K characters). Add comment capability. Any text that is typed in the log window using the keyboard is automatically sent to the log file if specified. Fix bug that cause extra to be added to log file (needed semi-colon in print# statement. v. 4.05 Fix problem in Element Setup dialog with null values being exported and imported. Add display of background offsets and background type and off-peak type using change event on unbound data labels in Element Setup dialog. Add element and x-ray combo controls to MOVE dialog. Add to New Sample dialog for description field. Add background type to List Run Summary. Add first 18 characters of standard name to List Standard Counts. Remove extra blank lines in log window output for count display. Make standard list taller. Fix documentation per Scotty Cornelius's comments (also many of the above were suggestions from him). Add confirm to JoyWin QueryUnload event. 11/28/98 Modify batch files to use pkzip v. 2.5 command line in order to handle long file names. This version is compatible with Win95/NT GUI version of pkzip. Modify TypeCounts to also output hi and lo off-peak offsets. Modify PlotGetData to add sample type and number (and set) to sample name output. Modify GetElmUpdate to list "MAN" if not an off-peak type background. 11/29/98 Fix pause Between Sample glitch in Analyze (32 bit only). Add Excel OLE link to StartWin and PFW. 12/2/98 Add "demo" code to TESTTC, fix placeholder bug reported by Dave Stanford. 12/8/98 Adjust PHA code to calculate window/baseline intervals differently for PHA v. 4.06 distributions. Modify TestTC to add Normalize (to cps) checkbox. 12/13/98 Modify SETELM form to use auto formatting for relative and absolute peak v. 4.10 positions. Add volatile table for internal calibration of volatile element samples. Modify some window layouts. 12/15/98 Modify interval halving peak center to base change in increment direction based on 1/2 the standard deviation rather than just the standard deviation. This should allow the peak center to interate quicker and prevent the software from going past the peak so far. 12/17/98 Implement new volatile self calibration correction. Numerous modifications to Volatile.bas, volatile.frm and Data3.bas (new volatile table in the database). Separate Type.bas into Type.bas and Type2.bas. 1/10/99 Add extra slow speed option for JoyWin. v. 4.20 Add output of beam current if filament blown error. Add user defined Minimum Faraday Current to INI file to define threshold for blown filament message. Add e-mail notification for realtime error messages during automation. See new INI file entries under [General] section. 1/18/99 Add code to JoyWin timer event (see JoyMoveStageStarted global) to check for when joystick stage move has started to de-energize stage motors when finished. Not enabled if "StageMotorsAlwaysOn" is true. 2/7/99 Add new INI file parameter FaradayCountsToCurrentFactor for specifying the v. 4.21 conversion factor for converting counts to beam current. Used only by the demo and AM interfaces. By default the software sets the factor to 100 for the demo and AM interfaces and 1 for all other interfaces. If it is preferred to view the beam counts directly, the keyword should be added to the [Faraday] section in the Probewin.ini file and set to 1.0. Requested by D. Lesher. See new variable FaradayCountsToCurrentFactor used in both ProbeWin and StartWin. Fix Joywin so that z motors axis is also de-energized automatically in X/Y mode (D. Stanford). Add drive list control to File Find and File Setup dialog (D. Kremser). 2/22/99 Extend size of Digitize form. Minimize Acquire window to allow wavescan form to be visible during peakscan selection. v. 4.30 Finalize SX50 32 bit interface per Brian Gaynor specs. Massive changes to restructure PFW installation directories. As of this version all files are installed to the install directory (usually C:\Program Files\Probe for Windows) without the prior XrayData sub-directory. Instead a directory for user created files called UserData is created and used for this purpose. Add individual icons for applications. Change fileviewer launch to use double quotes enclosed filename for Programmer's Editor compatibility. 2/24/99 Add double quotes to ProbFormRunStandard for shelling Standard.exe (fails on D. Kremser's system but not mine!). Add Image List control to FormABOUT to store icon images for applications. Add load picture statement to each forms load event. Make main window captions more consistent. 4/3/99 Add check for zero handle returned in SX50InitInterface if SX50 Interface Board Type is NOT zero. Move "get all motor positions" code from RealInitInterface to RealTimeSetDefaultState. 4/8/99 Small changes to TestType to handle shutdown command line argument under NT. Moved TestTypeShutdown code to RealTime.bas. 4/13/99 Fix line bug in AnalyzeTypeResults (Call IOWriteLog in wrong place). 4/14/99 Modify RealTimeGetMotorPosition to add a loop to re-poll interface (InterfaceType%=2 and higher) if the returned position is out of bounds. This should add to the robustness of certain slower and "flaky" interfaces (DRV-11, serial). Modify MoveReturnToOnPeak to always use a "hidden move". 4/17/99 Numerous small bug fixes. v. 4.40 Add call in NewMakeNewSample to NewLoadLast if sample is automated and no setup was loaded. Use a new "timed" msgbox for warning about loaded of default standards when running in automated mode. Disable Sample name text filed in Digitize! if standard is selected. Fix Return To On Peaks status window display problem. Add position and motor printout to multiple attempts warnings in RealTimeGetMotorPosition. 4/27/99 Add check for zero handle returned from TCOpenCounterTimer. 4/28/99 Add "Update All Motor Positions" button to TestType. 4/29/99 Fix errors when modal dialog is loaded and automation is running. This requires changing v. 4.41 all FormSTATUSAUTO.Hide (and FormSTATUSANAL) statements to use Visible = False property. Major changes to calls in NewMakeNewSample to handle original (4.40) background type problem with standards and new problem with quick standards. Basically use call to NewLoadLast and remove extra calls for updating sample since we are already doing so in NewLoadLast. Fix spelling of "argument" in TestType. 5/4/99 Modify button sizes in UserWin. 5/8/99 Re-arrange volatile and quick wavescan code and forms (remove volatile and quick v. 4.42 forms and replace with special.frm, see special.bas also). Update documentation. Needs D2HTOOLS.DLL (32 bit) now for help file. 5/11/99 Modify PositionGetSampleData to improve position grid loading speed. 5/12/99 Modify PositionGetSampleData to skip loading position sample if it is already loaded. Add RealTimeUpdateRemoteDisplay to update SX50 element display. Modify Joywin to fix problem when error is returned from motor status (in Timer event). 5/13/99 Modify loading and unloading for FormSTATUSANAL in PlotGetData and PlotGetDigitized. Make Yes To All button larger. 5/15/99 Add RealTimeUpdateremoteDisplay function (for SX50 element symbol display). Use FindWindowLike in Joywin for checking for other PFW apps already running. 5/18/99 Add binary output options to histogram output. Fix FindWindowLike (use "*" in call). 5/19/99 Remove check for six character or less filename length in PlotOutputBASFile. Add UCASE$() function to GRIDBB.BAS file to handle lower case returned from DIR$ function. Force reload of position sample if deleting point(s). 5/20/99 Add SX50Pre and PostAcquireString globals to INI file to set special conditions for SX50 acquisition. 5/24/99 Add checks for SX50 and PHA and AM "zero" handles. Add call to SX50StringInput after all calls to SX50StringOutput to remove status byte from buffer. Add code to SX50 for crystal flip and motor move time out. Default timeout is 300 seconds for crystal flip and 100 seconds for motor move. Add progress report e-mail notification to PFW (.3 day (8 hour) intervals). Add Pause button to Automation status form. 5/25/99 Add "Moving to on-peak positions" to status window during automation. v. 4.45 Add A/Z output in StanFormCalculateZbars. 5/29/99 Add Ucase$ to SC50ChangeCrystal and SX50UpdateRemoteDisplay. Modify Automation to run quicker by skipping if sample is not selected rather than exiting (add "goto 500" in AutomateDoAutomateNext). 6/3/99 Fix loop problem in UserFormCalculateUsage (UserWin). Fix FileInfo problem with loading info from user with same name (use UCase$). Add "Automation Completed" to e-mail notification. 6/6/99 Add "Exit Sub" to AcquireDoAutomateNext to prevent looping at end of automation. 6/8/99 Modify StanFormCalculateZbars to output MQ input file. 6/9/99 Remove wait in MovereturnToOnPeak (assume that peaks return). This was causing a 5-10 sec. wait sometimes in demo mode. Change faraday count time in sample JEOL.INI file to 1.0. Remove DemoUpdateRemoteDisplay code. Modify Standard to add options for calculate z-bar output. Fix problem in StanFormSendCompToFile id standard name has slashes. 6/10/99 Fix problem in MqOptionsSendCompToFile if concentration was small. 6/11/99 Add all elements output option to MQOPTIONS form. Fix bug that prevented first position of standard getting updated using Y increment for re-standizations. Added force reload in PositionUpdate Positions. Replace calls to MiscSelectText to use "Screen.ActiveForm.ActiveControl". 6/14/99 Modify AnalyzeTypeResults to not print "LIN" for specified elements when using "PrintAnalyzedandSpecifiedOnSameLine" option. 6/16/99 Add option to MQOptions to parse a MQ output file and save results to a comma delimited file. 6/19/99 Modify CalcZAF to add options for maximum absorption/fluorescence and atomic number correction output filters separately. Also fix focus problem in CalcZAF when running long calculations. 6/21/99 Add "If Not TypeOf tText Is TextBox Then Exit Sub" to MiscSelectText in case the got focus events are coming fast and furious. 6/23/99 Add additional MQ output option in Standard. 6/28/99 Modify electron fraction adjustment to only apply to the ZAF scaling. This is only done in the ZAFStd routine so far. Add Zbar difference output filters for binary calculations in CalcZAF. 6/29/99 Fix problem with applying correction factors to 1st approx. calculations in CalcZAFBinary. 7/1/99 Implement a "simulation" mode for the counter-timer interface. To enable set "CounterTimerType" to "1". This will allow demo counting but still enable the DCX motor interface to be used. Add code to allow cancel button to work even if in pause mode during automation. 7/10/99 Add fix to SetupLoad and SetupSearch to load setup database sorted by date-time v. 4.5 (evidently the 32 bit data control, does not load records in order as the 16 bit did). Add Mg Ka (Henke) and Si ka (Heinrich) to emp data files so they can be added if using the other MAC table. Modify several routines to allow running acquisition without no WDS analyzed elements in order that only EDS elements may be acquired. Fix typo in AbsorbGetMAC30 routine (region 1). Note that additional changes from Carpenter regarding N1, N2, N3 edges not yet implemented (still using Armstrong fit) because absorption edge data file does not contain N edge values. 7/12/99 Fix disables in Acquire and JoyWin MAIN dialogs if no stage motors. 7/26/99 Add SX50nPacing to INI file for Sx50 interface character pacing (default=2). Use v. 4.51 larger values for older SX50s with communication problems. Update documentation. Remove electron fraction flag. Modify AbsorbGetMAC30 routine per Paul Carpenter's instructions. New full distribution. Uses 9 zip files (floppy disks) now. 8/8/99 Create CALCZAF distribution. v. 4.52 Modify Calczaf to use separate filename for composition input and binary compositions. Fix EMPMAC.DAT file. Rearrange debug output in ZAFSMP (and ZEDSMP). Make copying of JEOLOX/JEOLEL.MDB optional during installation. 8/12/99 Add documentation of MQ options in Standard. 8/15/99 Add electron and x-ray range calculations to Standard.exe. Modify x-ray range calculation to only print out for densities where the transmission is greater than a few tenths of a percent. Update documentation and help file. 8/19/99 Add Kremser icons. Fix reference for Heinrich MACs. Add MQ (NIST Monte-carlo) to distribution. Document MAC data file. Add improved error message to PositionAddPosition "out of bounds" condition. Modify call to NewUpdateConditions from NewLoadLast to handle "Use digitized conditions". Have electron and x-ray range in Standard only called if in debug mode. Add graph title in FormGRAPH if one sample loaded. Add improved master reset error message in TC.BAS. 8/24/99 Modify PositionLoadType to use new function PositionGetNumberofSamples to v. 4.6 ensure that sample positions are reloaded correctly if only one sample is in the position database. Modify help context items for CalcZAF. Start interface for simple imaging. Add [Image} INI file section. Add splash screen to PFW. Additional documentation on MQ (add source to distribution with permission of Dale Newbury). Add TCP/IP socket interface for PGT EDS. 9/11/99 Fix mistake in x-ray range calculations. 9/13/99 Add PGT IP open and close (new INI parameters). Create separate TestSocket and TestPGT apps. Create PFWNT3.ZIP (need more files). 9/15/99 Start CalcImage (MDI) application. 9/18/99 Update PMC functions for 32-bit changes. See AM.BAS. v. 4.61 Disable call to MCReset because it causes a problem under Win95 with PC100 boards (temporary). 9/22/99 Repaired Help document. Create new help document. Add calls to Oxford EDS interface. Fix select text bug in CalcZAF (ZAFELM form). 9/28/99 Received repaired help document, add to latest distribution. 10/5/99 Modify Analyze.bas to separate analytical specific routines out for use in CalcImage. See Analyze3.bas. New AfactorAFALoadFactors routine. 10/12/99 First working version of CalcImage. v. 4.70 10/19/99 Fix printout bug in ZAFSmp for atomic percents if calculated oxygen. 10/21/99 Add calculation of equivalent oxygen from halogens and add v. 4.71 analysis option to subtract during matrix correction. Fix bug in Standard, interference calcualtions, when run subsequent times. Fix bug when calculating water by difference using Bence-Albee on oxide samples. (Thanks, Don) Add check for ASCII GRD file in CalcImage. Modify TypeSample Flag to not type halogen equivalent if zero. Modify ProbFormLoadDemoComposition to handle calibration curve and ProbFormGetDemoComposition to handle oxide compositions for unknowns in demo mode. 10/28/99 Fix problem where EDS interface could be called even if not present (EDSInterfacePresent=false and EDSInterfaceType>0). 11/1/99 Add global flag (IgnoreZAForAlphaWarnings) and allow user to abort, retry, or ignore the situation where a correction factor for the interference correction is calculated to be less then zero (usually only when the total is very close to zero). Slight change to AMMoveMotor to eliminate duplication of units to steps calculation for w-motor. 11/2/99 Add additional debug statements to AMGetMotorStatus. 11/4/99 Move statements to re-enable limit and position checking until after first move after the crystal flip. This is to ensure that the out of bounds error is not triggered before the spectrometer has a chance to move back in bounds. Remove check for out of bounds in RealTimeGetPosition that was added last version (this caused crystal flip problems). Modify AMMoveMotor to fix rotation motor issues. 11/8/99 Add option to use alternating on and off peak acquisition for trace v. 4.72 element measurements. See Acquisition Options dialog. Replace single quotes (Irish surnames) with "?" for string search in UserGetRecord. Add DemoSetConditions to test cancel from STATUSAUTO form. Modify Activate event in STATUSAUTO to reset Pause/Continue button caption. Fix problems in Standard when no standards have been entered yet (Options Interference menu). 11/15/99 Modify Fiducial select dialog to check for already referenced fiducial sets in probe database, allow user to only view fiducials (new button). This is for modify, confirm and new fiducial sets. Make Data5.Bas for separate fiducial routines. Create new help files using Word 97. Modify TestType to add Loop get position and move motor buttons. 11/16/99 Fix problem introduced on 11/15/99 where exit from DataFiducials caused an uncommitted transaction. Add call to RealTimeSetConditions to AcquireStartQuickscan. It was never added before. (Thanks to John Fournelle). Fix motor time out when running slow "quick" wavescan (sx50 interface). Add stage increment option to StartWin (see Modes menu). 11/20/99 Fix Custom import/export so that Canadian Geological Survey files use .LEP extension. Add Print button to FormGRAPH. Add Update buttons to FormFIDUCONF (Fiducial Confirm) dialog. Fix bug in MQOptionsSendCompToFile where invalid characters (:,?*) are in standard name string (Thanks John Fournelle). 11/29/99 A serious bug in the plotting of wavescan samples was reported by John v. 4.73 Fournelle. This bug caused wavescan data that was plotted versus angstroms to be off by the on-peak offset, that is the difference between the actual on-peak position on the spectrometer and it's theoretical peak position (it was using a zero offset). This was fixed for normal wavescan samples and also for quickscan samples. Also added a fix to handle improperly saved data from previous version data files so that bad angstrom data is made good (in DataGetMDBSample). Added printout of on/offset and off-peak positions for wavescan samples in TypeWaveCounts. 12/5/99 Modify ZAFSmp to increase magnitude of ZAF iteration tolerance for minimum concentration and minimum difference. Modify UpdateCalculateUpdateStandard to load all sample x-ray lines (including non (blank) analyzed lines to the standard k-ratio calculation. This is to prevent spurious warnings about unanalyzed elements in the standard k-ratio calculations if the overvoltage is too low. Add GetElmSaveAll routine to allow internal call to GetElmSaveSample in separate module. See GetElm2.bas. Split EDS and Image routines out of RealTime.bas. Add code to check actual crystal position for Sx50 code. Add call to RealTimeGetAllPositions. Add code to check for actual HV and CURR in SX50 code to determine whether HV and CURR commands need to be sent to SX50. Add code and checkbox for use "Beam Deflection For Position" in Stage and Probewin. See UseBeamDeflectionFlag. Create outline for SX50 image interface for use as an alternative to MI32 image interface (ImageInterfaceType=2). Add check for out of bounds in AcquireDoPeak for hi and lo off-peaks and hi and lo current wavescan ranges. Set to motor limits if out of bounds. Add call to RecalbLoadCrystalMotorPositions in TestType activate event so that motor offsets get loaded properly for AM motor interfaces. Add call to MoveLoad to get actual crystal positions (SX50 only). 12/7/99 Add flags to warn user if off-peak, peakscan or wavescan were set to the spectrometer limits after a peak center. Add DefaultMagnification INI parameter and Operating Voltage and Beam Current tolerances for SX50SetConditions in INI file. Add routines for get and set magnification SX50 only). 12/9/99 Add "Magnification" field to position database. Add MagnificationPresent and v. 4.75 MagnificationType to INI file. 12/12/99 Add additional image interface parameters to INI file (see documentation). Implement WIN30 specific calls for integrated imaging. Add Beam Center stage position parameters to position and probe database. 12/14/99 Implement new sx50 DLL interface (Logical boards). Requires changes to PROBEWIN.INI, IOMapper and new sx50 DLLs. 12/15/99 Add stage traverse to StartWin. Separate traverse code to DIGITIZE3.bas. 12/19/99 Fix bug that caused status window to disappear if no faraday cup is present and not running automation during manual acquisition (thanks to Scotty C.). Add data and time output to List Samples Names menu. Start off-peak background modeling code and form. 12/20/99 Tweak beam deflection code (major change: move call to PositionUpdatePositions from FormCONFIRM to automation routines). 12/30/99 Add print button to FormWAVESCAN (only visible when graph is full size). Allow multiple same elements for wavescan samples. This entailed modifying the warning in GetElmSave (GETELM2.BAS). Also modifications to NewUpdate Conditions and PlotLoadLists and PlotGetSelectedData and Xray plot routines to handle spectrometer number in addition to element symbol to eliminate the ambiguity in certain situations. Change routine NewGetLastSample to actually return the last unknown or wavescan sample, if the last sample is an unknown or wavescan sample. Hope this doesn't cause a problem. Should only affect manual wavescan samples in any case. Modify batch file MAKTEST.BAT to save all sample config files. 12/31/99 Add code to support database handling of slope and polynomial coefficients. v. 4.80 Also add capability to update selected samples based on background modeling. Finish data handling in Elements/Cations dialog. Add display of off-peak correction types to FormModel. Check it out! Add flag for AutoAnalyze to INI for John Fournelle. See [software] section. 01/01/00 Convert all bangs (!) to dots (.) in Form expressions. Will help resolve some expressions at design time. New help and pdf files. 01/3/00 Fix bus in ModelPolynomialPosition and SetupNewElement. Add stage position and spec number output for wavescan samples (TypeWaveCounts and AcquireDoWavescan). Remove DISK*.ZIP distribution and SOURCE31, 32, 33 source distributions. Update version on help file. 01/5/00 First draft of Remote Automation application using Active X Technology (Remote.exe). This application will allow users to control the automation interface by creating Active X clients using Word, Excel, etc. 1/6/00 Add print button to FormMODEL. Add TimerPositionCount to Remote.frm to make sure that demo mode can update motor position. Fix conversion file paths in TestTrac.exe. 1/8/00 Additional work on Remote Automation Interface (almost ready). Minor changes to Realtime.bas to handle remote interface. Split FormMOVE into Move and Confirm forms. 1/11/00 Fix confirm position and KLM marker bugs. Add disable to off-peaks for wavescans in Elements/Cations. Skip duplicate element warning for wavescans in GetElmSave if datarows > 0. Add icancelauto in Cancel button for SETPHA and SETPEAK in case PHA distribution or move on peak is running. Remove extra exit sub statements in Form events. 1/12/00 Modify SetupRun form and code, split data.bas into data6.bas (file setups) and data7.bas v. 4.81 sample setups, to handle filesetup numbers so that user can select specific samples to load from a file setup run. Modifications to position database and sample structure. Also modify DataFileSetupGetData so that only standard data that contains an exact match for element, x-ray, motor and crystal (and Kev) is actually loaded . 1/18/00 Significant changes to ZAF code regarding multiple condition samples. 1/22/00 Modify Automate window (and underlying code in Position, New and Acquire) to handle multiple v. 4.82 sample setups. Extensive code changes. Samples acquired in this way can be combined for quantitative analysis using the new Combined analysis code in the Analyze! window. Fix Startwin traverse in demo mode. Modify stage/spec jog (backlash) to be more snappy. Add analog "block mode" code for WIN30 in Digitize Image. 1/24/00 Add new wrapper functions for begin, commit and rollback database functions that includes "parity" to ensure that these methods are not called out of sequence. Move MAN Clear call to Analytical menu. Add warning to NewMakeQuickStandards if off-peak element has MAN assignments. Fix PHA distribution code. Add special path for Remote.exe so it can run from the windows system folder and still find PFW support files. 1/25/00 Modify SX50ROMWait to send "disp off" when ROM peaking is completed. Modify PlotGetData to load first sample name if subsequent names are "continued". Fix Print function to print KLM and off-peak lines as black. Modify UserWin to work even if two digit Short Date is used in Regional Settings. 1/28/00 Remove doevents statements from DataReplaceAddSample procedure (caused a memory problem where sample(1).Type was zeroed. 1/31/00 Fix FormMOVE bug where goto fields were disabled if sx50. Fix ZAFSTD bug for kilovolts array if demo mode. Modify Print button in FormGRAPH and FormMODEL to only force monochrome if no color printer if present. Remove some Doevents statements from code. Add Print buttons to MAN and Polygon forms. Ad default selections for FormPLOT lists. Fix PositionDigitize transaction bug. Modify .BAS Surfer output to handle more than 10 columns. New routine for getting just x,y and z positions for Plot routine (PositionGetSampleDataOnly). 2/1/00 Move print graph code to ZoomPrintGraph. Add actual row numbers to Automate plot labels. 2/2/00 Fix munged element symbol code for sx50. 2/4/00 Extensive modifications to count arrays. Keep old arrays for data only. Create new "last" v. 4.83 arrays for storing current count times and factors for each sample. 2/7/00 Fix some problems loading file setups. New PDF files. Fix data print out to skip maxcounts, unknown factors and vol# if all same (unless debug mode). 2/8/00 Fix AcquireDoPeak where if UpdatePeakWavescanPositionsFlag was not set, then peaking had no effect! Add Loop Get All Motor position button to TestType. Add code to increase reliability of sx50 interface by getting two (or three) opinions for motor position and scaler count and time. 2/9/00 Add check for existing UserDataDirectory. Fix PHA distribution in Startwin (differential mode was not getting forced). 2/13/00 Finish Custom output #2 format file creation. Add error bar display to plot. Fix FormGRAPH bottom title bug. 2/16/00 Fix List report bug. Fix DISP CAME MARK bug. Add additional elements as user clicks in Plot! sample list Modify Automate setups to allow user to modify conditions or setups on existing position samples. 2/17/00 Fix bugs in combined analysis. Modify volatile corrections to handle negative or zero counts. Add "demo scatter" for motion to simulate motor tolerance. 2/20/00 Add unblank faraday just before starting on-peak counts in AcquireDoSampleTunable if running synchronized elements. Modify Volatile correction to skip points that are zero (or negative) in fit. Make insufficient number of points a warning (this can occur with low concentration elements). Fix SpecialSave to save volatile correction flag to Run table (DataRun). 2/21/00 Add flags to ensure that volatile assignments are made to the correct sample types. v. 4.84 Fix bug that didn't zero out volatile assignments for unknowns if the order was changed for new samples (thanks Ken Severin). Modify FiducialConfirm and FiducialVerify to check for modified fiducials if they are already referenced in the probe database. If so, then the program will automatically create a new fiducial set and change the default fiducial set to it. (thanks to Jim Eckert). Add two new flags to separately turn on or off the "triple redundancy" code in the SX50 interface. See SX50UseTripleRedundancyMotor and SX50UseTripleRedundancyCounter in the [hardware] section of the Probewin.ini file. Add extra SX50ReadString calls for when the StringOutput call generates both data and status. Make default not use use "triple redundancy code" for sx50 interface now that driver is fixed. Add Remove from List button to AddStd form. 2/24/00 Add fancy test polygon for demonstration mode. See Test button in demo mode. Add Load button to Polygon Grid dialog to allow user to re-use a previously digitized polygon boundary in order to change the grid spacing. Fix Remove feature in AddStd dialog. Add SX50 driver locking option to code and INI file. See SX50UseDriverLocking keyword in [hardware] section. Requires new SX50_32.DLL file. Modify string calling in sx50 to use sx driver locking if enabled. 3/5/00 Add Positions and Stage buttons to Digitize window. Add slope and polynomial coefficients v. 4.85 to Setup Database (requires change to PFW-16 for importing element setups into PFW-32 when upgrading to PFW-32, that is, use PFW-16 v. 3.51 or later). Fix display issue for slope and polynomial in getElm form. Fix bug in Combined Analysis that was not properly beam drift correcting samples with different beam currents. (Thanks John Fournelle). Fix SX_Unlock call. Fix bug where SX50PreAcquireString is ignored after peak prescan. Make status windows always on top. Fix H and he bugs that were introduced after adding arrays for assigned standard ZAF correction factors. 3/6/00 Modify UserWin to sort by Created, Modified or Start Date/Time. Add search for file description string. Add StatusAlwaysOnTop flag in [software] section for STATUS form in Probewin.ini 3/12/00 Add column condition code to all routines (probe database and position database). v. 4.86 Update index in documentation. Fix beam polarity and analog polarity bug in WIN30 digitize image interface. 3/13/6/00 Add column condition change delay to [software] section of INI file. 3/14/00 Work on excel link for topsoe. Fix display of modified fiducials. Modify SX50GetConditions to make sure that current hv and curr are returned. Modify AuotmateGetNextPosition to make current selection top most in ListDigitize. 3/25/00 Fix problem in grid digitizing if x or y step is zero. Modify Demo mode to use DefaultBeamCurrent and handle changed beam current and read direct in nA. This required changes to JEOLOX.MDB and JEOLEL.MDB demo databases for the OnbeamCounts fields. 3/26/00 Modify faraday and absorbed current routines to handle averaging of current measurements more consistently. 3/27/00 Minor bug fixes. Modify TestType to use separate output and input text fields. 3/28/00 Fix problem with self volatile correction flag on standard samples. 3/29/00 Add faradayCurrentUnits string to MDB file structure. Move conversion of v. 4.87 beam current using FaradayCountsToCurrentFactor to Data routines. 3/30/00 Slight tweak to nominal beam labels and conversion method. Fix kilovolt array problems with formula to weight calculations in Standard interference corrections. 4/9/00 Fix saving/loading nominal beam problem. Fix save unacquired standards problem. Add better context sensitive help for single and multiple sample setups. Add documentation about column conditions. Modify UserWin to force sort by Start Date when calculating Hourly Usage. 4/10/00 Add multiple setup number load/save in POSEDIT form. Add blank beam to RealTimeStartCount if zero count time error occurs. 4/18/00 Remove above item and add blank beam call to IOMsgBox so that beam is blanked if ANY error occurs in Realtime mode. Add integer rounding function to SX50MoveMotor. 4/19/00 Modify XrayGetOffets and RateUpdate to avoid division by zero. 4/20/00 Allow file setups with only EDS elements (SetupRunSave). Add e-mail notification of errors menu to TestType.exe. 4/27/00 Change CalcZAF (ZAF.BAS) to print oxides even if not calculating oxygen. Reverse displayed polarity of offsets in Peak/Scan Options. Fix focus issue in StartWin when running in Cycle mode. Modify TestDeadtime.xls to create a spreadsheet with exact data format required by Paul Carpenter's Deatime.xls spreadsheet. Add time stamp option to StartWin. Update reference manual per Cornelius's suggestions. 4/29/00 Fix JEOL 6400 input function to handle bang character properly. v. 4.88 Add use defined base for exponential off-peak background. Add Stage menu to Window menu in Stage.exe. 5/2/00 Fix problem reading scaler number for gain/bias in TestPHA.exe. Fix error trapping in IOMsgBox by not using global "msg" in RealTimeFaraday. 5/3/00 Finish new exponential fit equation. Add "old-timers" warning for unblanking beam. See "FaradaybeamCurrentSafeThreshold" in INI file [faraday] section. 5/4/00 Fix problem with calibration curve (std percents not loaded automatically if ZAF method not used). Start Evaluate Standards graph dialog (suggested by John Fournelle). 5/15/00 Modify single line detection limit calculation so that beam drift correction v. 4.89 is un-normalized. Add un-normalization for count time also. Fix Stage to read current motor positions before confirm positions. Add COLUMN.DAT file to load default column conditions based on last analytical conditions used for that column condition string. 5/16/00 Also add time and beam denomalization to analytical sensitivity (error) calculation. Add "mov stag" command to RealTimeGetMotorPosition (SX50 only) if stage position is consistently out of range to handle stage glitch. 5/17/00 Fix problem loading wavescan count times from element setups. Add debug output for detection limit calculations Have program skip sending SX50PostAcquireString if using column condition string. 5/18/00 Modify background slope fits to not be affected by changes in Nominal beam. 5/20/00 Allow program to print all channels of single line detection limits. 5/21/00 Add support for combined multiple sample setups in Automate! window. Many changes v. 5.01 to Acquire.bas (AcquireDoSample and AcquireDoSampleTunable and AcquireDoSampleFixed). 5/28/00 Add support for multiple beam currents in AcquireDoSampleTunable. v. 5.02 Add text field to allow user to change e-mail notification of errors address. Fix demo mode so continued samples have the same composition. Disable scatter for motor position if wmotor and in demo mode. 6/1/00 Disable e-mail notification checkbox and field if SMTPServerAddresss and SMTPAddressFrom values are blank in INI file. Disable "Combine Multiple Setups" checkbox and Load Multiple Setups button if column control is not available. Add support for Surfer 7.0 grid files in CalcImage. Add support for Surfer 7.0 script output in Plot2.bas. 6/3/00 Modify AutomateGetnextPosition to allow multiple (not combined samples) for standards and wavescans also. Modify UpdateGetStanards and UpdateGetMAN standards to support loading data for standards that are combined multiple setups. 6/4/00 Modify SX50SetConditions to ignore tbeamsize parameter (from SX50GetConditions) since there is currently no way to detect the beam size. Finish Evaluate.exe for evaluation of standards. 6/6/00 Fix boo-boo in AcquireDoPeakParabolic (jump to taskstep 19). Improve speed of file scanning in Evaluate.exe. 6/8/00 Update StartWin for Stage Increment Interval. Fix zero wave and peak time in Load Element Setup if old database. Add SX50StopMotor call (direct) to RealTimeStringClear. 6/10/00 Modify SX50GetError to just exit if returned error is "No error". 6/13/00 Create Faraday.exe applet. Modify GetPeak to check that high wavescan is higher than the lo wavescan. Fix printout problem for wavescans if no data. Add call to DataMotor to save motor parameters when closing file (wasn't being saved before). Fix H.T. custom output. 6/16/00 Limit SX50 slow speed for spectrometers to a value of 3 (0-127) because lower v. 5.03 values can result in no movement. Fix Digitize Image (from new BMP3.BAS code). Add sample flag for quickscans (for time printout if no data). Modify unknown data printout to print multiplied count time if unknown factors are not all 1. Modify background modeling dialog to support multiple samples. Create rough outline of VideoGrab.exe for Matrox frame grabber. 6/19/00 Modify CalcImage to save images as BMP files. Modify Evaluate to handle "quick" standards and add run filename to graph title and form caption. 6/20/00 Fix calibration curve glitch when switching between Analyze! and Plot! windows and the samples are not different (see change to AnalyzeSampleCurve). Add CalcZAF output to Probe for Windows (Output menu). Modify error bar calculations. 6/21/00 Add code to "get" magnification for SX50. Update documentation. 6/23/00 Add error bar "spacing" option to Plot!. Fix select list after adding new standard. Fix MAN fit for new kilovolt arrays. Check that MAN works for combined samples. Fix SampleTypeIntensities to work better with combined samples (modify UpdateChangeSample). 6/24/00 Add Send Data to Printer option in Plot! window. Update document and help file. 6/28/00 New icons for Faraday.exe, CalcImage, VideoGrab and Evaluate. Add line to unload FormLOCATE if FormACQUIRE is unloaded. Add counts to current correction for Faraday.exe. Replace most occurrences of "motor" with "spectrometer" or "spectro" in GUI. 7/1/00 Add stage increment for peaking also in StartWin and ProbeWin. Add axis backlash for sx50 get position when bad value is returned (to fix large integer problem). Add expanded .ELM file support for MI-32 (v. 5.0). 7/20/00 Add MACJTA to ZAF selections MACs form. Add modified Duncumb/Reed atomic number correction based on Z^1.3 electron fraction. Fix CalcMac.exe for kilovolts array. Add "Always On Top" option to Faraday.exe. Update documentation and sample INI files. Fix error bar bug for EDS elements in PFW. 7/21/00 Create rough TestJeol applet for testing Jeol 8900 IP interface. Modify realtime routines (move call to RealTimeFaraday in IOMsgBox) to actual low level routines. This allows compiling without conditional "if" for test apps. Increase MAXSTD to 48. 8/3/00 Fix minor problems in Evaluate and add some features. Modify Probewin so that RealTimeInterfaceBusy flag is set true before loading most modal forms and reset to false afterwards. Also enable most menus in Analytical, Run and Output menus even if running acquisition. Modify AutoAnalyze to perform only unknown sample analyses and fix how the EnterPositionsRelativeFlag functions in FormSETELM (thanks Dave). Add modified Duncumb/Reed atomic number correction that uses Z^0.85 electron fraction for backscatter loss factor (works especially well for large differences in z-bar between standard and sample. 8/6/00 Add more analytical menu items and fit coefficients display to Evaluate.exe. 8/10/00 Modify atomic and formula error messages in ConvertWeight to use a timed msgbox. v. 5.04 Add fit deviation output to Evaluate.exe. 8/13/00 Fix MAN array problem). Change database fields to "single" from "integer" v. 5.05 for kilovolts, takeoff, beamcurrent and beamsize. Also fix database query in DataLoadAllMAN. Modify UpdateGetMANStandards and UpdateGetStandards to only use sample conditions if both sample and standard are not "combined conditions" and to use "combined conditions" if either are. Note that because element conditions stored in the probe database used integer database fields for versions from v. 4.89 to 5.04, any run that used MAN samples created with those versions may not be able to assign MAN standards properly for those sites using a non-integer takeoff angle (ARL=52.5) or samples with non-integer kilovolts conditions. Modify CalcImage to allow user to specify off-peak images for background correction of images. Each on or off-peak image may have a different count time per pixel and beam current. The background correction used is specified in the Probe for Windows run. Modify modal forms loading (again) to be more robust. Only change MAIN, Analyze and Plot forms. Extensive modifications to Evaluate.exe to use actual corrected intensities for all standards as though they were unknowns. Add capability to select different standard databases for testing purposes. Modify all apps that use the faraday button to communicate inter-process to change and set enable properties. 8/20/00 Modify the unloading of certain modal forms to use global variable "icancelload" to indicate that the user clicked the 'Cancel' button to unload the form. This is to prevent the ierror variable from being set and killing any on-going automation. Modify the Pause button in the STATUSAUTO form to use a different global from RealtimeInterfaceBusy. Add digitize random cluster to Digitize form. 8/23/00 Modify TestJeol to use correct default ip address and port number. Modify LeastExponential to handle negative count or spectrometer data. Modify Cluster digitization to include boundary output. Modify ExcelClose to allow user to skip saving excel file in case the user closed Excel externally. Modify Custom Output Format #1 (CGS) so that data file is saved to the UserDataDirectory by default. 8/24/00 Modify SesameFaraday to use "IN" and "OUT" command instead of "CUPIN" and "CUPOUT". Modify Evaluate for option to select count intensity or k-raws. 8/29/00 Modify counter-timer code to support multiple device names for PCI cards that cannot have contiguous I/O space. Continue work on Jeol 8900 interfaces. 9/1/00 Modify Testtc to handle multiple DCC board devices. 9/2/00 Continue work on Jeol socket and telnet interfaces. Add minimum distance parameter to random cluster digitizing. Add "average" option to Evaluate program. 9/5/00 Fix event glitch that was changing standard sample types to wavescan in NEW dialog. Add display of off-peak slope and exponential coefficients in SETUP. Add call to GetOptOrder in NewCombined to resort in case elements are dropped. Fix TESTTC to handle new DCC dll correctly. 9/8/00 Start implementing Jeol 8900 xm_command telnet interface. 9/12/00 Add check box for forcing B and W printing in FormPLOT. Fix display in AnalyzeAverage grid so it matches log window. Fix AM counter-timer code for new DLL. Add option for un-corrected intensities in Evaluate. 9/13/00 Continue Jeol Telnet interface testing. 9/16/00 Fix pause bug in StartWin (thanks Dan). Fix Faraday bug also. Fix problem in TestTelnet/TestJeoltelnet (Telnet control needs Binary property set to false to strip high bits off characters). 9/18/00 Add SelPrintStartDoc flag to INI file for printers that have difficulty with nested StartDoc and EndDoc commands. This will apparently only work with VB6. Confirm that v. 2.23 of MCAPI allows multi-threading of the motion control driver under NT when both PFW-32 and MI-32 are running. Fix subtle bug in MANFitData where element channels for the sample loaded for display of MAN fits does not match the last analysis channel list. This can only occur from the MAN Fits menu so it was only a display issue. But a confusing one. Thanks to Jim Eckert and Jay Ague. Modify TestJeolRlogin app to work with Rlogin control array using separate logins for each spectrometer on the JEOL 8900 (to allow xm_command spec_xrcnt command to run concurrently). 9/23/00 Fix order sort bug in GetOpt2 for combined condition samples (thanks Claudio). Modify FormGETOPT to disable acquisition order controls if sample is combined conditions. 9/24/00 Add error trapping in GetElmAll to check for problems in volatile correction assignments. 9/28/00 Fix position database update issue. Add current sample conditions to List Run Summary. Change default button for deleting unreferenced fiducials from "Yes" to "No" per J. Eckert's (repeated) requests. 10/4/00 Add initialization of sample conditions to ElementLoadArrays in case not already loaded. 10/5/00 Add peak and integrated intensity calculations for wavescan data in Model code. Fix Jeol Rlogin issue with "false prompt". 10/8/00 Add fix for update issue in MAN dialog if user clicks "Cancel" instead of "Ok" (added AllAnalysisUpdateNeeded = True to cancel event). Thanks Jim E. Do not load APF calculations if angstrom spectrometer plot in Model.bas. 10/09/00 Fix APF calculation in Model.Bas to calculate peak intensity based on actual on-peak position. (thanks John F.) Fix change drive problem if path is a shared folder. (thanks Jim E.) See new routine MiscChangePath. Small changes to TestType. 10/11/00 Fix SetupRunLoadList to use folder path. Add JeolRloginWaitResponse procedure (use time for command response). Add stg_bmcur and eos_pcd case statements in JeolRloginGetResponse. 10/17/00 Fix XrayGetOffSets to print negated offset. Add column condition code to JeolRlogin interface. 10/18/00 Add get/save column conditions to Faraday.exe for Jeol 8900. 10/22/00 Add support for a crude charge balance calculation. See Analysis Options. v. 5.06 Start Elionix interface. 10/23/00 Add elapsed time calculation for JeolRlogin and Elionix interfaces. v. 5.07 Add Scan rotation options to INI file (sx50 only at this time). Modify atomic charge balance calculation to store in float. Add copy grid to clipboard button to PHA display in StartWin. 10/28/00 Add copy protection to PFW if realtime and not demo mode. v. 5.10 Fix SESAME get crystal function. Fix digitize cluster ok button (default=true). 10/30/00 Fix copy protection "control box" problem. Thanks John Fournelle. 11/1/00 Tweak Jeol 8900 interface. Add Analytical conditions dialog to Faraday app. 11/2/00 Tweak "1SIG" calculation to handle changes in nominal beam current. Tweak save column condition for Jeol 8900. 11/8/00 Add 00index.txt file to PFWBETA.BAT for update file descriptions. Update Gridcc.bas for Surfer 7.0 when no BLN file is present. Add update magnification for digitize image routines (DigitizeNewSample) Modify exponential display to use both + and - for exponent. 11/9/00 Add Zero point flag for calibration curve calculations. v. 5.11 Add wait for prompt in Jeol Rlogin code after string output. 11/10/00 Modify AnalyzeSampleCurve to precalculate ALL standard k-factors and load ALL standard percents for calibration curve calculations. 11/16/00 Add Set Wavescan Full Range button to Set Peak dialog. Fix MAN fit bug when MAN table does not match last sample. Modify print log code. 12/12/00 Make on and off-peak markers a little thicker so they print better. 12/14/00 Modify XrayPlotXray to draw KLM markers after on/off-peak markers. Modify JeolRloginGetCrystalPosition and move crystal name check code to new routine JeolRloginInitSpectrometer that is called after connection event. Add check for zero elapsed time in JeolRloginGetCounts. 12/22/00 Modify (fix) AcquiureSaveData to also save Z (and W) position if using beam deflection. 01/16//01 Add custom format #3 (John Hanchar). Outputs the usual data plus detection limits and analytical error (single line calculations). Modify oxygen in custom format #2 and #3 to subtract oxygen from cations for oxide output. Modify >>Excel button in Analyze! window to export data type seen in grid instead of just the elemental weight percents. Fix problem with beamsize when trying to change to zero from non-zero (sx50 and jeol8900 only). Modify custom #3 for either standard or unknown output. 01/23/01 Add new alternative z-bar calculations and new menu flags for output in Standard. 01/26/01 Add Elionix interface (Edax stage control) to all v. 5.12 hardware software. Turn off MAC and APF warnings if using calibration curve. 02/3/01 Modify AnalyzeTypeResults to use average of composition for electron range calculation. Modify Elionix/EdaxStage code. 02/13/01 Re-compile all apps for new Elionix interface code changes. 02/14/01 Modify EdaxStage code for conversion to and from um to mm. v. 5.13 02/15/01 Add detector parameter file support. See InitDetectors. 02/16/01 Modify GetCmpSetCmpUpdateCombo code to adjust cation charge when element changes. 02/18/01 Modify Probewin code to support detector parameters (also Startwin). v. 5.15 Numerous modifications to databases, tables, dialogs, etc. Final touches to PFW for Elionix detector modifications. 3/6/01 Modify getUpdateUpdateMotorCrystal to allow default slit size, position and detector mode to be loaded even if automation hardware is not present. Modify PositionUpdatePositions to update beam deflection center position for all situations (suggested by J. Fournelle). 3/9/01 Start coding "integrated intensity" acquisition. See RealTime3.bas. Fix Edax oxygen problem in ZAF routines. Fix eds flag problem in GetOptSave for standards. Thanks Bente. 3/10/01 Add peak intensity calculation to integrated debug output. Modify APF calculation to report in units of angstroms * 1000. Fix type mismatch problem in Standard GetCmpSetCmpUpdateCombo. Modify APF calculation code (in Model.bas) to subtract background for peak intensity. 3/12/01 Modify RealtimeFaraday to set BeamOnFlag there (remove from hardware dependent routines). Modify loops where extended moves are required (didn't work properly in Demo mode, it took too long for an unknown reason). Add position output to error message in MoveXrayUpdate. Add confirm to Cancel button in automation status dialog. Fix ElionixUpdateConversion bug and add demo simulation for testing. Fix bug in CurrentCheckRealtime and add "simple" registration option for unicode OS problems (like Japanese NT). 3/13/01 Fix get count status for Elionix interface. 3/14/01 Add "UseBeamDeflectionFlag" to Run table. v. 5.16 Fix Elionix crystal and detector status issue. 3/15/01 Add fix for position save after init for Elionix interface. Add turn off detector, move to 250 when closing Elionix interface. 3/19/01 Fix polynomial background calculation in DataCorrectBackground routine (thanks John Fournelle). 3/22/01 Add integrated intensity option for acquiring integrated element v. 3.21 intensities. (for Claudio C.) Includes neat feature where step size of scan is inversely proportional to measured intensity. 3/26/01 Modify CalcZAF to display specified elements in ZAF window. Modify XrayPlotXray to use global MinimumKLMIntensityDisplay when re- drawing the KLM markers in case the user changed it from the FormXRAY dialog. 3/28/01 Fix old bug that did not update offsets in AcquireDoWavescanSpec (because v. 5.22 call to DataGetMDBSampleOnly does not update the spectrometer offsets, only DataGetMDBSample does that). Fix display of FormWAVESCAN window to utilize current offset for spectrometer. Fix problem if counts are exactly zero for exponential background calculation. Begin work on multiple peak calibration procedure 4/2/01 Add spin button to change sort order of unknowns and standard position samples in Automate and Position windows. 4/5/01 Disable spin button if running automation. Modify integrated acquisition to acquire last point at stop position for correct integration. Modify import of sample positions to calculate correct beam center for beam deflection since it is not imported. (J. Fournelle) Add tables and code to support storing of raw integrated intensity data to MDB files. This is to allow for proper deadtime correction to raw integrated data. Modify DigitizeUpdateBeamCenter for cluster and random samples. (thanks to J. Fournelle) Add checkbox to reverse order sample setups for changing the order in which sample setups are combined when using multiple setups. 4/8/01 Modify PositionUpdatePosition to have a "method" parameter based on whether using beam deflection confirm or not. Modify DigitizeUpdatebeamCenter to based beam center on actual digitized positions. Update copyright splash screen. 4/11/01 Add extra checks for APF and on/off alternating backgrounds with integrated intensity acquisitions. Type out Integrated Intensity "Use" flag in TypeCounts. Add checks for Use integrated intensity flags in UpdateChangedSample and AnalyzeWeightCorrect and add warnings to TypeWarnings. 4/12/01 Modify FormNEW to always load last sample of given type. See new routine NewLoadLastName. 4/15/01 Continue work on multiple peak calibration option is StartWin.exe. 4/18/01 Modify Surfer .BAS output and GRID*.BAS files to use full ZLabel text for titles. 4/21/01 Fix problems with file names for Surfer OLE output (GRIDBB.BAS and GRIDCC.BAS) and also sample OLE files (XYSCAN.BAS and XYSCAN2.BAS). Modify UpdateChangedSample to check for change in number of analyzed elements in case the user simply deleted an element from the end. (thanks to J. Fournelle) Continue work on multiple peak calibration. 4/24/01 Fix problem with position database if importing standards caused by UpdateBeamCenter call. Add ability to play .WAV file after automation, see UseWavFileAfterAutomationString in Probewin.ini. 5/4/01 Modify TC.BAS to dimension MaxCounts array to MAXSPEC+1 to include 9 spectrometers plus a beam channel. 5/9/01 Tweak JEOL 8900 interface at USGS (Meeker). Some timing issues and major changes to MOVE 5.31 code to handle moving all stage motors at once (see MoveAllStageMotorsHardwarePresent flag in INI file). Add pasword form for Jeol 8900 interface if password is blank. Add delete PROCESS.DAT in Free/Clear button and Joywin startup. Do not ask for motor confirm if Cameca or jeol interface. Preload surfer defaults if clicked in Plot window. Add double quotes to OLE script for file names. 5/14/01 Add RealTimeGetStageMotorPositions code for Jeol and Edax stage interfaces. Modify MAKDOC.BAT file (docum32.zip). Modify GRIDCC.BAT file for long filenames with spaces. Fix Custom output #2 and #3 for combined samples beam current output. 5/16/01 Modify Standard to allow user to specify defaultcrystal for interference calculations. Modify VolatileUpdate code to only assign all order=1 elements if the previous unknown has no volatile assignment or does not exist. Fix splash screen. 5/17/01 Modifications to Convert2.bas and Analyze3.bas to support the use of percent precision and v. 5.32 detection limits for printout of quantitative data. Add custom output #4 menu for averages. Update documentation, pdf and help file. Fix plot problem is Startwin if Use Time Stamp was selected. Add hourglass cursor for RealTimegetAllPosition code. Modify custom output #4 for number of significant digits. Remove call to load .COR crystals and update actual crystal positions in MoveLoadMove (OK?) 5/29/01 Add "Duplicate" menu to Standard (idea from J. Fournelle). Modify precision format to print " - " if precision or detection limit is zero. 5/31/01 Fix AnalyzeTypeResults to not default to maximum precision format when "Print analyzed and specified on same line" and "Use automatic format (significant digits)" are both selected. Thanks to Jim Eckert. Work on multiple peak calibration automation code (seems to work now)- next work will be on fit code. 6/3/01 Finish new UseMultiplePeakCalibrationOffset code. See help file for details under Configuration Files | Probewin.ini | [software] section. Needs to be tested. 6/6/01 Add call to RealtimeStopAllCounters to reset EDS/Light condition. Fix error messages in fit routines. Document Alignment and Calibrate Peak Center procedures in StartWin section. 6/14/01 Add more error checking to x-ray line selection in multiple calibration in StartWin. 6/16/01 Add check if ZAFFlu for problem with MACs (negative). Fix StartWin multiple peak calibration where more than one element is assigned to a standard for a single spectrometer. Add recursive directory search for Drift.exe. 6/18/01 Improve precision of position display (thanks to John Fournelle). Modify Drift to add spectrometer position/offset and formmated output. Add setting pha to status window. 6/20/01 Modify automation routines in Probewin and Stage to allow the user to perform a "confirm" on EVERY point in each selected position sample. Modify peaking routines to send a remote display when moved on-peak. Fix confirm all position in sample so that only one point is used for peaking and automatically generated points for standards are skipped when doing an "explicit" confirm. Add deadtime correction to Drift program. 6/26/01 Fix StartWin multiple peaking code (again). Thanks Ken. Add element labels when peaking. Add holiday greetings for a few special users (I must have way too much free time on my hands I guess). 6/27/01 Fix minor problem with Evaluate when standard does not use itself in assignments. Modify UpdateStandardInterferences to use full ZAF correction (like AnalyzeWeightCorrect). 7/4/01 Add new properties to Remote (NumberofCrystals and CrystalNames). 7/5/01 Add two more properties to Remote (CrystalFlipTypes and CrystalFlipPositions). 7/7/01 Fix call to XrayCalculateActualPosition in GetElmSetElmCrystalUpdate. Modify AcquireDoWavescanSpec to use variable offset for angstrom conversion if available. Add calls to all other interfaces to use RealtimeGetCrystalPosition even if not supported (just return RealTimeCrystalPositions). 7/11/01 Modify SX50 code to return small number if counttime is zero. Also to use separate timeout array for crystal timeout (needed for Remote interface). 7/17/01 Modify Combine sample option in Analyze! window to append full names also. Add relative line numbers to Plot! window lists. 7/18/01 Create new more complete x-ray database (from Eric Steele at NIST with some prodding by John Fournelle). Includes absorption edges and the ability to display them in another color. Extend ELEMENTS.DAT to element 98. 8/4/01 Extend Jeol timeouts for command response. Only check intergarted intensity step sizes if not MAN and not wavescan sample. 8/7/01 Modify RealTimeSetConditions (and hardware specific routines) to use new global "ForceAnalyticalColumnCondition" to force analytical update if changing column condition method. Fix problem in fiducial modify and confirm where modified fiducial set number needs to be applied to existing position samples. Add display of fiducials in FormLOCATE. 8/19/01 Modify EdaxStage to use mode 2 (X/Y only) instead of 13 (X/Y/Z) for stage motion for 8800. Fix bugs in CalcZAF for manual entry. Increase JeolRlogin timeouts and make them double precision. Allow beam defelction enabled for unknown/wavescan confirm in Automate. 8/20/01 Modify program to utilize variable spectrometer calibration offsets from .CAL files. v. 5.34 This required changes to XrayConvertSpecAng and XrayGetActualPosition and new routine called DataCoefficient to support the new data tables for storing calibration coefficients which are only created when a new MDB file is opened. This feature utilizes the fixed offset based on the on-peak position so that the program always calculates a variable offset equal to the fixed offset at the on-peak position, but if the converted position is greater or less than the on-peak, the variable calibration is applied using the curve fit. This allows for accurate angstrom calculations over the entire spectrometer range even if the calibration offset is not constant and still utilizes any peak center the user applies in the future. This is complicated code let me tell you, but it seems to work! 8/26/01 Final adjustment for angstrom to spec conversion XrayConvertSpecAng (XRAY3.BAS) to convert passed angstrom to spec position before calculating offset from polynomial coefficients. 9/01/01 Improve error trapping in cprotect module. Added a line to SCALERS.DAT file to explicitly specify the integer deadtime constants to be used to set the Cameca PHA hardware (line 35). This is distinct from the original single precision deadtime specified on line 13 which is used to perform the actual deadtime correction in the analysis routines. This new integer deadtime is the value actually written to the hardware interface for the PHA electronics and applies only to the SX50/51 interface. See the new help file for more details. 9/23/01 Fix small problem in SX50GetPHAParameters (do not return deadtime in passed parameters). Change JEOL 8900 timeouts to debug values. Fix small problem where extra warnings are printed out when using "multiple peak calibration" option. 9/29/01 Fix line renumbering problem in DataFileSetupLoadData which could cause a problem when loading standard intensities along with a file setup. Changes to DataFileSetupLoadSampleList to show samples with no data and also to leave sample listbox "unsorted". 10/16/01 Fix problem with electron range calculation in AnalyzeType (thanks Claudio). Fix spurious warning when adding data to a standard when self calibration is selected. 10/27/01 Fix problem in Standard when calculating interferences and the "UseMultiplePeakCalibrationOffsetFlag = True". Fix by setting flag false for just program Standard.exe. Fix problem in Standard where MQ input file was only being created if the use alternative zbars menu was checked. Fix problem is Probewin where Stage Y increment was not being applied for standards when using mutiple setups (uncombined). Modify Probewin to skip confirm positions when using uncombined multiple sample setups. Modify JoyWin to check difference between motor target and actual position before sending move to controller. This should prevent motor overruns if the user leans on the joystick. See new INI file variables: JoyStickXBufferSize, etc. Modify CalcZAF to print out all MAC values from various databases for a single emitter-absorber pair from Xray menu. 12/17/01 Modify integrated peak size limits to allow greater range (J. Fournelle). 1/12/02 Modify Multiple Peak Calibration in Startwin to allow user to specify start position for v. 5.35 peak center. User can decide whether to load theoritical or previous peak positions (Kremser). Modify combined analsis to skip bad lines in corresponding samples (Fournelle). Add Model Detection Limits dialog in CalcZAF under Run menu. Add faraday stage dialog if using faraday stage just before nominal beam measurement (Elionix). Add alternative garnet end-member calculation in calculation Options (Fournelle). 1/17/02 Add context help for Model Detection Limits in CalcZAF. Update documentation for multiple peak calibration in StartWin. Correct numerous typos in document. 1/19/02 Add "specified" APF factors for area-peak factors based on a fixed composition. See elements/ cations dialog. (note option in Analysis Options dialog). Move "NewMDB" database code to DATA8.bas and rewrite completely to use less memory. Program was starting to get unstable. Also modified some globals from static to dynamic allocation. Also rewrite other database codes, Xray, Setup, Position. 2/4/02 Add virtual standard intensity calculation feature in probewin for situations were a physical v. 5.37 standard is not available (e.g., Ar). See under "Analytical" menu. Add StrataGem output format for thin film processing. 2/5/02 Update documentation for virtual standard and Stratagem output. Note help file conversion must now be performed in several steps because of the size of the help document. Also documentation for specified APFs. 2/9/02 Remove empfac.dat and emppha.dat fro update files. Fix problem with MoveXrayUpdate where Fe La on LIF (for example) causes an error. Instead allow it to fail silently without updating the spectrometer position. Modify error bar calculation to divide standard intensity by standard k-ratio to obtain pure element intensity and also divide by standard ZAF factor. Modify plot code to use +/- one full standard deviation. Add renormalization factor for loading APFs when the primary standard is different. 3/12/02 Fix multiple peak calibration for configurations with fixed spectrometers. Fix problem with fixed spectrometers when using multiple peak calibrations. Change "Atomic Weight Percent" to "Atomic Percent" in SampleLoadGrid. 3/13/02 Remove line: If Conc!(ip%) = 0# Then GoTo 8500 from ZAFStd routine. It was preventing the v. 5.38 proper loading of the std K-factor for interference calculations! Small effect on interference correction when large matrix correction between unknown and interference standard. Split dual use of overvoltage and fluorescence term "v!()". Fix ZAFZed routine to calculate atomic number correction even if concentration is zero. 5/27/02 Modify DataFileSetupCheck to indicate standard as not loaded if all lines in sample are deleted. This means that if you want to force a standard intensity to get loaded when loading a "File Setup" then just delete all occurances of that standard in the current run. 7/10/02 Add "setu wait" to SX50SetColumnCondition code. Fix PHAGetPHADistribution window save problem. Set Joystick "period" to 55 millisec to prevent problems with faster CPUs. 7/25/02 Add support for DCX PCI100 board (copy over AM.BAS and AM2.BAS). v. 5.39 Modify StartWin Calibrate Peak features to avoid extra event checks on x-ray and position. Add Type = 2 for kilovolts, current and size (AM2.BAS). Fix AMInitINterface for opening serial port for different "types". 8/14/02 Fix crystal flip busy inputs channel for PCI100 Fix problem of automation killed by Type Run Summary (J. Fournelle). Add display of sample number and name to analysis status. 8/20/02 Add extra error check in AMGetMotorStatus code. 8/23/02 Modify JoyWin to support joystick control in velocity mode. Many changes to AM.BAS, DEMO.BAS, JOYFORM.BAS and JOYWIN.FRM. 9/08/02 Add code to not call Get/SetMCOperatingMode if not using JoystickType=1 because older ISA boards do not support 3.2 driver that has these functions. This is for velocity mode motion for joystick. Fix problem with Startwin and Calibrate peak with fixed specs. 9/26/02 Add motor off command to prevent "runaway" problems with PCI controller when motor is moved next time (AMStopAllMotors). 10/2/02 Fix RECALB.BAS bugs in .ELM file and Sample Setup issues in AcquireChangeElements. Add code to check for database table (FILE) in MISC4.BAS. Skip "wrong axis type" errors. 10/17/02 Modify interference correction to not apply if interference counts are negative (J. Eckert). Modify Grid Mineral (Assisted Phase Mapping) code to offer both scan and grid modes. Note that the scan mode is statistically more rigorous and provides more information for subsequent data analysis. 11/2/02 Fix velocity problem qith quickscan by changing AMMoveMotor to only set full velocity for stage motors. Fix file open problem for grdimin output file. Add beam blank option for Grid Mineral form. 11/13/02 Modify AFACTOR.BAS to not load negative alpha values when using alpha factor calculations. Seems to be caused by k-ratios greater than 1.0 (e.g., 99% Cl and 1% Si). Problem with fluorescence correction (ZAFFLU routine reports Cl Ka by Cl)? 11/14/02 Add code in ZAFFlu to skip fluorescence when emitting line and absorber line are the same Z. This v. 5.40 bug has existed since the 16 bit Windows version and most likly even with the DOS version. The result appears to be that an element like Cl will report a spurious fluorescence resulting in a k-ratio that is larger than one in the almost pure element. PS. After checking numerous compositions, this bug only appears to affect high Cl concentrations. 11/17/02 Found the problem. The Cl Ka edge in the Xedge.dat table was wrong- apparently a typo. Edited table but left ZAFFlu code to fix problem for those who only update. 12/08/02 Fix bug where kilovolt arrays were not updated when using Conditions button in Analyze! window (see GetCondAll in GETCOND.BAS)). Remove mcapi32.dll from distribution. 12/21/02 Modify AMMoveMoter and AMSetVelocity to detect operating mode (position versus velocity) conflicts and print a warning only. Modify Joywin code to use button 4 to cycle through speed sensitivity settings. 1/13/03 Major changes to joystick code. Streamline JoyForm.bas, change event code, RealTime.bas code, etc. v. 5.41 END