Software versions and updates for the motorized telescope control program, scope.exe, from January 1, 2002 onward

...by Mel Bartels

Version compiled August 15, 2008 (suggested improvement by Carl Morecshi):
1. Added ability to set different step sizes for CW and CCW motion in the altazimuth/Right Ascension/primary axis.

Version compiled August 15, 2007 (suggested improvement by Jan van Gastel):
1. Revised the scroll command routines to add saving and retrieving of a second current coordinates position (save2/restore2).
2. Revised the scroll command routines to add ability to move to the retrieved coordinates position (move_equat).

Version compiled May 7 2006:
1. Fixed a problem with the LX200 report the timezone command.

Version compiled May 2, 2006 (code updates by Don Ware):
1. Horizon Limit check. Can be selected in config.dat.
2. Asymmetric fuzzy zone.
3. Fix to GEMNeedsFlipping which didn't work if AutoGEMFlipFuzzDeg is negative and in Flip Off state.
4. Implement Safety Zone.  Aborts MoveToCurrentRaDec if move takes scope into Safety Zone.  Works same way as Az/Alt High/Low limit movement.
5. Totally revised Polar Alignment Routine.  Now uses only two stars.  I've also attached a draft of a monograph describing the solution.

Version compiled April 13, 2006:
1. Added AlignACK command to the LX200 supported protocol.

Version compiled Feb 13, 2006:
1. Fixed a problem with the field rotator drive introduced with the phase 5 stepper motor fix.

Version compiled Feb 5, 2006:
1. Planet/Asteroid/Comet calculations migrated from VSOP87 orbital elements to DE403.  File PS1996.PTT and code basics courtesy Ken Gray.
2.  Asteroid/Comet calculations now topocentric.  Observer's elevation above sea level in meters entered into CONFIG.DAT, (default = 0).
3. Precession calculations done using rigorous method.  This allows precession from any epoch to epoch-of-date.  Assumption now is that datafile positions are barycentric for database epoch and not corrected for nutation/abberation.
4.  Users modifying program are encouraged to edit the char SubVersionStr[] = ""; found at the beginning of KBMAIN.C.  Text between the quotes will be printed at the bottom of the main screen.

Version compiled Sept 6, 2005:
1. Fixed problems with phase 5 stepper motors.
2. Fixed problem in set Z123 where simply hitting return would bomb the program. Now, hitting return selects for the current values.

Version compiled Feb 23, 2005:
1. Fixed a bug with the new planet calculations per Don Ware.

Version compiled Feb 21, 2005:
1. Fixed a bug introduced about a year ago where guiding modes that include 'stay' at current position when ending guide no longer stayed as they should.
2. Thanks to extensive work by Don Ware, the following features have been added to Scope:
a. Positions of planets calculated. Use file Planet.dat to select planet.
b. Menu option CometFile changed to MinorPlanets.
- Select a comet or asteroid from a file
- This is the comet file *.cdf option
- Select comet orbital elements from a file
- Select asteroid orbital elements from a file
- orbital elements downloadable from Minor Planet Center http://cfa-www.harvard.edu/iau/Ephemerides/Soft01.html
- create a file with extension *.edf
- Input comet orbital elements
- Input asteroid orbital elements
- you will be prompted to input relevent elements
All calculations are geocentric for epoch of date, taken from system clock.
File VSOP87.PTT must be installed in same directory as SCOPE.EXE.

Version compiled Nov 23, 2004:
1. Added new config variable: GEMFlipPossible, which controls whether the GEM meridian flip can occur at all. Before, GEMFlip possible set from initialization state equal to equatorial. This allows GEM flip to be possible with user defined initialization state. If AutoGEMFlip is set to true, then GEMFlipPossible will also be set to true.
2. Added two new config variables: AutoAltPECDeBounce and AutoAzPECDeBounce : if 1 or on, then software will debounce the synchronizing signal: the debounce period ends when the PEC index is between the ¼ and ¾ point of the PEC cycle

Version compiled Nov 7, 2004:
1. Added LX200 commands per Renato Bonomini's contribution:
GetFfspeed (Xgf) sends back slow focusing speed
GetFFspeed (XgF) sends back fast focusing speed
SetFfspeed (Xsf) sets slow focusing speed
SetFFspeed (XsF) sets fast focusing speed
GetFocusPos (Xgp) sends back current focuser position
2. Fixed an issue with external encoders reading altitude when GEM flip is on.

Version compiled Sept 22, 2004:
1. Fixed LX200 command bug introduced this May/June where find/center altazimuth moves paused LX200 processing.
2. Fixed LX200 command bug where when tracking is paused, after a focus command, LX200 processing was paused.

Version compiled Sept 14, 2004:
1. Changed handpad button timer that prevents repeated similar actions from 5 seconds to 2 seconds.

Version compiled Sept 5, 2004:
1. Courtesy Don Ware: added ability in grand tour files to toggle the righthand mode key press between previous grand tour object and reset equat coordinates to grand tour position with '@' key.

Version compiled August 24, 2004:
1. Added 'Saving' Saved ' and ' ' status to end of AccumGuide Alt/Az display to indicate when saving of guiding efforts is occuring.

Version compiled August 19, 2004:
1. Courtesy Don Ware's programming: added ability to resume scroll files if interrupted with a keystroke with a '&' shortcut key.

Version compiled July 26, 2004:
1. Changed the behavior of the adjust MS parms menu option so that if tracking is on when selecting the menu option, tracking will continue. Otherwise, as changed on March 8, 2004, the menu option if 2 motor tracking is not on, will adopt default values of zero and start the 2 motor tracking routine.

Version compiled July 25, 2004:
1. Per Renato Bonomini's contribution, added LX200 commands: GVP# -> gives 'Scope.exe' as production version; GVD# -> it tries to extrapolate current release date from MainFrame.title and returns it as firmware release date; RgSS.S# -> Set Guide Rate (reused custom command code, ignoring decimal); TQ# -> default tracking rate (interpreted as zero drift).
2. Per Renato Bonomini's contribution, added beeps to signal proper moment to power on/off motors.
3. Per Renato Bonomini's contribution, added LX200 commands: GetProductName = "GVP", PecOnOff = “$Q", MoveHomePosition = "hP", FROn = "r+", FROff = "r-".
4. Added configuration flag precessionNutationAberration that turns on/off precession, nutation, and annual aberration correction.
5. Added awareness of focus motor reverse option to the different menu driven focus moves.

Version compiled June 11, 2004:
1. Fixed an issue with heavy handpad use where the lx200 commands were not being answered in a timely fashion.

Version compiled May 18, 2004:
1. Fixed some issues with precession/nutation/annual aberration per Ben Davies.
2. Added custom LX200 commands: XGR to get field rotation in degrees; XSN to set object name.

Version compiled May 14, 2004:
1. Worked more on the LX200 interfacing, specifically, to balance the processing between returning lx200 commands in a timely matter whether slewing or tracking, and the processing required for smooth tracking. NOTE: be certain that in the scope.cfg file CMOS_RTC_Access is set to 1, not 0.
2. Fixed problem with calculation of Z123 errors from position init 3.

Version compiled May 11, 2004:
1. Fixed a problem with the precession, nutation, annual aberration routines per Ben Davies.
2. Worked on the LX200 interface at end of slewing to improve responsiveness.
3. Verified that auto guiding / guide efforts save work.

Version compiled March 8, 2004:
1. Increased number of eyepieces available to 12 , per Renato Bonomini.
2. Changed startup behavior so that absence of config.dat file gives a warning, and does not cause the program to immediately exit.
3. Changed menu option adjust microstepping parameters such that the 2motorTrack no longer has to be started separately beforehand.
4. Added back in the TestString option of 'Track', which automatically starts the 2motorTrack routine.

Version compiled Feb 23, 2004:
1. Added code for encoders to work with GEM flipped where declination places the scope below the celestial equator.

Version compiled Feb 21, 2004:
1. Fixed the bad compile on Feb 20.

Version compiled Feb 20, 2004:
1. Fixed a bug where encoder position in altitude is erroneous for negative altitudes.

Version compiled Feb 7, 2004:
1. Changed and enhanced how guiding efforts are recorded for periodic error correction. Now, any handpad guide mode and guide commands from the LX200 command input can be used to start guiding. After guiding has begun, a second push of the handpad left mode key will initiate the saving of guiding efforts for periodic error analysis. A push of the right hand mode key will end the save, as will filling the guiding arrays. The underlying guiding commands will continue without interruption until the right hand mode key is pressed for the second time, or the LX200 command input changes from guiding rate commands. In the past, scope.exe did all, consequently it made best sense to make the save of guiding efforts a handpad mode. Now, guiding commands can come from external sources, so the process of recording guiding efforts is decoupled. The handpad mode GuideSave (also called GuideStaySave) is defunct.

Procedure is:
1. start guiding either with a handpad left mode key press (requires that the handpad is already in a guide mode), or, have the controlling program begin issuing guiding instructions via the LX200 channel
2. when ready, press the handpad left key mode again to start the recording of guiding efforts
3. when finished, press the handpad right mode key to stop the recording of guiding efforts
4. at your leisure, end guiding with a handpad right mode key or the stoppage of guiding commands from the LX200 command channel

Version compiled Feb 1, 2004:
1. Changed the behavior of the guide mode GuideStaySaveOn to be aware of LX200 guiding commands. Now, if LX200 guiding is already underway by a master controlling program, when GuideStaySaveOn is turned 'On', the current guided to position by the LX200 guiding commands will be adopted as the base position, setting drift to zero, starting the guiding arrays from scratch, and guiding will proceed as before. When GuideStaySaveOn is turned 'Off' the guiding efforts are preserved in memory ready for analysis. Previously, the only way to access the guiding efforts was to restart the program using the command line option to load in a guiding efforts file.
2. Added eyepiece and focus-to/save eyepiece position. Code courtesy of Renato Bonomini.

Version compiled Jan 28, 2004:
1. Changed the cmos clock default to be off.
2. Changed the meridian flip so that the direction in right ascension is consistent between the auto move and the manual move.

Version compiled Jan 20, 2004:
1. Added ability to read right ascension seconds to three decimal places in the LX200 protocol, ie, :Sr 05:16:59.345#.

Version compiled Jan 19, 2004:
1. Fixed the RA direction when executing the menu option GEM flip.
2. Added corrections for precession, nutation, and annual aberration.
3. Added new config.dat variable, DataFileCoordYear. Default is 2000.

Version compiled Jan 4, 2004:
1. Rearranged the GEM flip process. Now, the displayed GEM flip reflects the mount's actual GEM flip state. Before, it reflected the intent of the motion. Removed GEM flip compensation from the encoder coordinate processing routine.

Version compiled Dec 23, 2003:
1. Fixed situation where repeated 'halfstep move greater than <MoveHsMsgDeg> occur during GEM flip.
2. Added sensing of GEM flip state at end of slew_home and reset_home processes.

Version compiled Dec 20, 2003:
1. Fixed bug where LX200 responses ignored in the data file menu sections.

Version compiled Dec 18, 2003:
1. Fixed bug in close steppers routine where the program will bomb if there is no configuration file.
2. Fixed bug introduced in Oct 8 version where scroll files ignore the negative sign on coordinates.
3. Changed how coordinate translation occurs when the GEM meridian flip is 'on', fixing some GEM flip issues in southern hemisphere.

Version compiled Nov 11, 2003:
1. Fixed auto GEM flip for southern hemisphere.
2. Tweaked LX200 get firmware function per Marty Niemi so that Larry Weber's FocusMax will work with scope.exe

Version compiled Nov 9, 2003:
1. Added LX200 command check while waiting for keyboard input. This prevents the stalling out and calling program possibly issuing an error message that the LX200 commands no longer respond.

Version compiled Oct 27, 2003:
1. Fixed bug where equatorial refraction correction is turned off if equatorial alignment is selected at startup time.

Version compiled Oct 17, 2003:
1. Added ability to read hundreds of a second in the LX200 command Set Right Ascension. This gives better than arcsecond precision to Right Ascension coordinates. Now, a 'Sr 10:11:12.13' will read in the hundreds of a second as 13.

Version compiled Oct 12, 2003:
1. Fixed problem where sidereal time could jump ahead at end of slews.
2. Changed backlash behavior so that when tracking but declination motor not moving, backlash always taken up in direction of handpad button push.

Version compiled Oct 10, 2003:
1. Zero out backlash shortcut key should be displayed as '%'.
2. Fixed backlash oscillation when equatorially aligned and using the dec motor.

Version compiled Oct 8, 2003:
1. Fixed the AZOff+Axis menu option.
2. Added a check for proper initialization when calling menu option convert input equatorial to altazimuth.
3. Fixed bug in refraction routine where altitude of 90 deg or more blew up.
4. Added menu option to the motor category to zero out backlash.
5. Added shortcut key '%' to zero out backlash.
6. Adopted new backlash takeup algorithm. Previously, when motor reversed direction, the move motor software code detected the changed direction and caused the backlash to be taken up in the new direction. However, this was done in a standalone routine where any backlash to be taken up by either motor was made into a standalone movement. The software was not tracking the object during this backlash takeup. This is not satisfactory for equatorial users whose autoguiders command a Declination guiding movement and expect the Right Ascension motor to continue precision tracking. Hence, a new algorithm. Now, the tracking function adds backlash to takeup to the tracking move to make. Backlash takeup is thus one continuous combined motion with the tracking motion. The other motor continues to track without entering a special backlash takeup routine. It is important to set good MaxIncrMsPerPWM and MsHsToggleIncrMsPerPWM values, as these determine how the microstepping takes up the backlash as quickly as possible. Set MaxIncrMsPerPWM to 2, 3, 4, or 5. Higher means faster takeup but at some point the motor will not be able to get up to speed and will jitter. Set MsHsToggleIncrMsPerPWM to MaxIncrMsPerPWM unless you want to experiment with halfstep tracking.
7. UpDownButtonsReversedFlag added to the configuration file config.dat.
8. Fixed bug where LX200 commands improperly handled at end of long slews, causing the commanding program to think that communications has been lost. Scope.exe's LX200 receive function has a time out check, which is upset when the DOS clock is reset at the end of long slews. The fix is to ignore the time out check when the DOS clock is being reset.

Version compiled June 19, 2003:
1. Fixed a problem when calling the menu option Z123 error correction values from the analysis file.

Version compiled June 13, 2003:
1. Changed the compute Z3 error routine. Continuing to investigate, it appears that the most accurate Z3 value is calculated from averaging all the altitude offsets as found by comparing all the positions with each other as found in the analysis file. It is important that the analysis file contains a wide range of positions all around the sky so that effects of Z1 Z2 errors are minimized while calculating the averaged altitude offset. Obtaining accurate Z2 Z3 error values depend critically on a very accurate Z3 or altitude offset value. Since Z1 Z2 depends on very slight azimuth differences as the altitude is varied from equator to pole, an inaccurate Z3 value will obscure the untangling of Z1 Z2.
2. Fixed a problem in the kill inits routine where tracking could remain on.
3. Added kill inits to the menu (was just a hotkey until now).
4. Enhanced and changed the initialization display to include offset from zenith (for altazimuth mounts, the offset should be very little assuming the scope was setup eyeball level), and equatorial pole offset (for equatorial mounts using manual initializations, will give an indication of where to adjust the mount for better polar alignment).

Version compiled June 9, 2003:
1. Fixed a problem where Z123 errors in config.dat are non-zero and a pure equatorial alignment at startup is selected.

Version compiled June 7, 2003:
1. Changed the program so that when too many iterations involving the Z123 errors using one conversion subroutine occur, another conversion subroutine conversion is tried.
2. Cleaned up some code relating to HoldReps.

Version compiled June 5, 2003:
1. Updated conversion routines to include option for Taki's iterative solution to Z1Z2. Z1Z2 GetAltaz() can now be done by Taki's simple routine, Taki's complex routine, Taki's iterative routine, Larry Bell's iterative routine, or a combination of Bell and Taki. Accurate translation back to altazimuth coordinates using Z1Z2 values now is not only accurate to much better than tenths of an arcsecond, but also done in as fewest cpu cycles as possible.
2. Fixed a typo that could affect coordinate conversions where azimuth or hour angle exactly = 90 degrees.
3. Updated altazimuth refraction calculation routines.
4. Re-arranged order of error corrections in the routines that translate between motor positions and corrected sky conditions. The sequence of adding or removing errors should be consistent whether translating between motor and corrected sky, or, between corrected sky and motors.
5. Added equatorial refraction correction. Correction based on site coordinates as found in config.dat and on the computer's time and date. Set RefractFlag in config.dat to 2 if you wish equatorial refraction correction to be turned on.
6. Redesigned the calculations of best Z1 Z2 Z3 corrections because Bell's and Taki's iterative solutions now return slightly different results from coordinate conversions when Z1 Z2 Z3 error corrections are utilized. Range is +-5 degrees for Z1 Z2 and +- 1 degree from the calculated iterative altitude offset. Function should calculate very quickly (runs nearly instantly on P166 processor).
7. Added an option for AltAlt alignment.
8. Adding function for 3 axis tracking. Does not move motors. The test function can be uncommented, the source recompiled, and run, to give an idea of my thinking. It reports changes in coordinates.
9. Turned off the halfstep too long of slew message when in the polar alignment routine.

Version compiled May 6, 2003:
1. Fixed a formatting issue with the site configuration data entry window.
2. Fixed an issue with the 'press key to continue' routine – now it can handle 'extended' characters.
3. Added “*” for polar alignment method hotkey.
4. Added “$” for manual gem flip set.
5. Consolidated hotkey displays into one menu option where the arrow keys now show subsections of hotkeys based on main menu category.

Version compiled April 26, 2003:
1. Added user defined hotkeys F9-F12 and separated the hotkey display by main menu category – code and idea courtesy Don Ware.
2. Added ability to define address and IRQ of serial ports com3 and com4. Com1 and com2 continue to be hardcoded to standard values.
3. Fixed grandtour so that it will use datafiles not in scope.exe's file directory
4. Added polar alignment procedure, extensive code and documentation courtesy Don Ware. Procedure is: “Polar Alignment is split into five parts to allow operator intervention between stages. The process is started via the Init Menu or via hotkey '*'. Subsequent stages are entered via hotkey '*' or via the handpad left key. In Stage 0, three stars are selected from the databases and the coordinates of the first star entered as input. After slewing to start#1, the operator then centers this star in the eyepiece with the handpad. In Stage 1, a ResetEquatorial is executed, the coordinates of the second star entered as input and a slew to those coordinates executed. The operator then centers this star in the eyepiece using the handpad. In Stage 2, the apparent coordinates of the second star are read and the offset of the polar axis calculated. Then a set of coordinates are calculated for the third star which are offset so that when the polar axis is moved to correct alignment the star will be centered in the eyepiece. A slew to these coordinates now takes place. The operator then adjusts the polar axis using altazimuth mount corrections only. In Stage 3, a Reset Equatorial is performed using Star 3's correct coordinates. Finally, a slew back to the first star takes place. In Stage 4, the operator is given the choice of repeating the process or of quitting. If the handpad is to be used, the Select HP Option "Polar Alignment" should be set prior to the start of the polar alignment process.”

Version compiled Feb 26, 2003:
1. Fixed situation where invalid TestString in config.dat caused program to hang.

Version compiled Feb 23, 2003:
1. Fixed bug where initialization having an axis pointing very close to 90 degrees caused the new Taki error correction routine to die.
2. Enhanced LX200 commands to check for missing leading blank. Xephrem does not send this blank.

Version compiled Jan 20, 2003:
1. Fixed bug where Z1 Z2 and Z3 values were not being saved to config.dat after updating via menu option.

Version compiled Jan 10, 2003:
1. Fixed the hysteresis problem in the coordinate conversion routines when large values of Z1 and Z2 are used. Derivation and formulae courtesy Larry Bell.
2. Fixed bug with mouse where program crashed after converting guiding efforts to PEC files if mouse control is active and mouse click occurs during conversion.
3. Added new configuration HandpadFlipUpDownWithGEMFlip variable to allow handpad to follow the GEM flip. When the GEM is flipped, the declination direction is reversed, so this flag allows the handpad's up/down buttons to follow the reversal.
4. Added new LX200 protocol commands: :D# causes scope.exe to return the slew state; :VF# causes scope.exe to return a version string.
5. Added two new menu items to allow individual re-synchronizing of altitude and azimuth PEC.

Version compiled Dec 12, 2002:
1. Fixed bug in GetDec when in LX200 long format.

Version compiled Dec 8, 2002:
1. Fixed problem with sidereal time that caused telescope to track too slow.

Version compiled Nov 14, 2002:
1. Added hotkey for gem meridian flip: either '[' or '{'.
2. Added F5/F6 function key focusing control, courtesy Marty Niemi.

Version compiled Oct 16, 2002:
1. Fixed bug in KeepAlive function that was obstructing the OverVoltage action.
2. Changed the refraction table values in a very insignificant manner.

Version compiled Sept 30, 2002:
1. Fixed bug in LX200 protocol get altazimuth functions.
2. Added ability to page backwards lists of data files and objects inside the data files. Code courtesy of Don Ware.
3. Fixed bug in latitude setting.
4. Fixed bug in error correcting routines involving Z1Z2Z3.
5. Fixed bug where keyboard entry caused scroll file to skip immediately to next scroll command, instead of waiting for next keystroke.
6. Added new config.dat variable: KeepAlivePPortPin. To disable, leave at default value of zero. When 1, 14, 16, or 17, a repetitive signal is generated on this parallel port pin, to be used as a keep alive signal to external circuitry that otherwise will shut down the power to the motors. This prevents the motors from being powered unless the software is actively running.
7. Fixed bug involving limits where a limit would be falsely triggered if other axis asked to make large slew and the axis in question had zero steps to move.

Version compiled June 28, 2002:
1. Added ability to detect if gem flip is 'on' at startup time by checking the altitude setting (if > 90 deg, then it is).
2. Fixed bug in pulse step and direction control mode, where reverse motor option did not work properly.

Version compiled June 7, 2002:
1. Fixed 'Using Mouse Control' message so that it doesn't overwrite the menu area when returning from the planetarium program Guide.
2. Added a polar alignment message to the init window showing how much to move the scope to bring it into precise polar alignment.

Version compiled May 28, 2002:
1. Enhanced LX200 compatible fast/slow focus commands to work for every focuser motor type as definable in config.dat.
2. In pulse/dir motor control method, fixed motor power on control lines to stay on during microstepping. Turning tracking off and mspowerdown turn off the power on control lines.
3. Added display of motor control method at startup.
4. If inappropriate motor control method, changed program to default to microstepping control via PCB.

Version compiled May 21, 2002:
1. Fixed bug found by Chris Rowland where negative longitudes were not being handled properly.
2. Changed accumulated drift reset so that it does not occur when drift values are updated. It is now up to the user to keep track of accumulated drift and to zero it out via the menu option when desired.

Version compiled May 9, 2002:
1. Made the timezone variable able to accept decimal values, ie, 5.5.
2. Fixed a recently introduced bug in the routine that determines if a handpad is not connected. The handpad would be correctly detected as not present, but the phantom button action was not erased, causing the program to enter a microstepping move mode that was difficult to break out of.

Version compiled April 20, 2002:
1. Discovered and fixed bug in field rotation motor tracking routine. Symptom is motor that jitters several times per second when FR step size is large. This was due to the FR direction line being lowered and raised when less than one step to move per bios clock tick. FR direction line now held consistent when less than 1 step to move.

Version compiled April 19, 2002:
1. Fixed coordinate conversion routines when GEM meridian flip active so that Z1 Z2 Z3 are inverted. Uses who wish to adjust Z1 Z2 Z3 for their mount should do both initializations without GEM meridian flip after selecting equatorial mount option at startup time. Then enter or analyze for new Z1 Z2 Z3 errors. Once these new initializations are accomplished, then select re-use initializations from configuration file at subsequent startups.

Version compiled April 17, 2002:
1. Added menu option to swap between handpad speed settings. This is most applicable to the 4-direction handpad design, where the handpad does not sport a speed switch.
2. Added smart GEM meridian flip for move to equatorial coordinates, so that scope travels minimum distance when needing to slew to an object that requires the meridian flip. To enable this, set AutoGEMFlip to 1 in config.dat.
3. Added an abort if a halfstep slew attempts to cross the GEM meridian flip boundary. To enable this, set AutoGEMFlip to 1 in config.dat.
4. Added an automatic handpad disable if a key press is detected at program startup.

Version compiled April 10, 2002:
1. Added menu option to swap between handpad designs on the fly.

Version compiled April 9, 2002:
1. Accumulated drift now reset to zero whenever a slew occurs.
2. If inverted output on parallel port set, pulse direction motor enable lines always high.
3. Microstepping power down now occurs regardless of motor's shaft or rotor positioning. Before, power down would only occur if rotor positioned on a fullstep. If the motor is not commanded to move in microsteps during an interval lasting MsPowerDownSec, motor will be powered down. Any subsequent microstep command will power up the motor.
4. Added new configuration variable: LX200BaudRate. Some controlling programs now offer a choice of baud rates for LX200 control, allowing for faster transfer of information with less consequent impact on microstepping.
5. Changed serial interface transmit function to interrupt driven, so that it no longer waits until all data transmitted before returning control. This eliminates the pausing during microstepping when external control via LX200 protocol is activated.
6. Added new handpad configuration variable called HandpadDesign. It can be either StandardHandPad (value of 0) or DirectionOnlyHandPad (value of 1). If DirectionOnlyHandPad, more than one direction line can be active at a time, allowing for guiding motions in two axes simultaneously. The 4 motion direction input data lines should be hooked up as follows:

upper button = Up, activates bit 16 or pin 13 of the parallel port
lower button = Down, activates bit 32 or pin 12 of the parallel port
left button = CCW, activates bit 64 or pin 10 of the parallel port
right button = CW, activates bit 128 or pin 11 of the parallel port

7. Guiding function changed so that it will accept multiple simultaneous directions.
8. Added menu item: coordinates|convert input equatorial to input altazimuth. This menu selection calculates input altazimuth coordinates based on input equatorial coordinates. Used for encoder only and other situations where the scope is moved such that the current altazimuth coordinates match the input altazimuth coordinates.

Version compiled Feb 22, 2002:
1. For comet goto and tracking: fixed bug in drift equatorial coordinates that prevented a negative RA; added menu options to zero drift and accumulated drift.
2. Changed LX200 acknowledgements to issuing device to occur as early as possible.

Version compiled Feb 17, 2002:
1. Added keystroke cancel to GEM flip.
2. GEM flip display now says either “Off E->W” or “On W->E” indicating either east side of pier facing west, or west side of pier facing east.

Version compiled Feb 8, 2002:
1. Added query to choose direction of azimith/right ascension axis during meridian flip. If display opening messages set to off, or lx200 control enabled, this query is bypassed. Default directions are clockwise motion when transitioning from not gem flipped to gem flipped, and counterclockwise motion when returning from flipped state to not flipped state.

Version compiled January 29, 2002:
1. Updated to exact error correction routines for Z1, Z2, and Z3, per Taki.
2. Changed the menu option for site configuration such that the full data set is displayed at the start, and the Return key keeps current values (code courtesy of Mark Ewert).
3. Fixed bug in routine that converts guiding history into PE correction values when motor moving in counterclockwise direction.

Version compiled January 3, 2002:
1. Added power on control lines to pulse/direction motor control option. Parallel port pins 6, 7 are altitude/declination, and, azimuth/right ascension power on control lines respectively.
2. Added new menu item that searches data files for match with user entered object name string. Code courtesy Chris Rowland.
3. Added up/down cursor control to data file selection boxes.
4. Changed two code lines per Taki's bug fix of his coordinate conversion routines.
5. Added custom LX200 serial line protocol commands. All custom commands start with an 'X'. They are:

XGG = get GuideArcsecSec
XGM = get MsArcsecSec
XHa through XHz = set handpad mode 0 to 26 respectively
XHL = simulate handpad left mode key
XHR = simulate handpad right mode key
XI1 through XI3 = initialize point 1 through 3 using already sent equatorial coordinates
XSG = set GuideArcsecSec
XSM = set MsArcsecSec
XX = clear LX200 display area

eof