1. Introduction

This document covers changes in FS 10.0.0 compared to the latest versions of FS9. There are separate sections for the changes in the FS and drudg. Each section is divided into three sub-sections:

  1. Changes that are in common since FS9

    These parts cover changes compared to both FS9 branches, main and VGOS. These are changes that have been introduced in version 10.0.0.

  2. Changes relative to the main branch

    These parts cover changes in comparison to the old main branch, specifically version 9.13.2. These are primarily features that were in the VGOS branch but not in the main branch.

  3. Changes relative to the VGOS branch

    These parts cover changes in comparison to the VGOS branch, typically version 9.12.13. The VGOS branch diverged from the main branch at 9.11.2. These parts primarily cover features that were introduced into the main branch after 9.11.2.

Clickable links such as #36 connect to specific issues reported at https://github.com/nvi-inc/fs/issues.

A complete history of changes can be found using the git log command from within the FS git archive directory, usually /usr2/fs-git.

The file /usr2/fs/misc/changes.txt contains the old history of changes in FS9. The file /usr2/fs/misc/VENIX_changes.txt contains the old history of changes in FS8. However these two files have been merged into the history given by git log.

The history of drudg is also described in more detail in /usr2/fs/drudg/change_log.txt.

2. FS changes

This section is divided into three sub-sections. Please see the Introduction section above for an explanation of the sub-sections.

2.1. FS changes that are in common since FS9

  1. One unified version for all FS users.

    Both non-VGOS and VGOS operations are supported by the new version. Previous installations of the main (non-VGOS) branch will need to have some new local control files added.

    The most significant change for users is that previous main branch users will find that input is case sensitive, as it was already in the VGOS branch.

    Caution
    While it is possible to have different SNAP commands or procedures with names that differ only in case, it is strongly discouraged. In the future, case insensitivity may be introduced for command and procedure names.
  2. Support for use on both 32- and 64-bit systems.

    The new version should run on 32-bit systems that currently support the FS (we support as far back as FSL8, we have not yet been able to test with FSL7 or other even older systems), as well as on 64-bit systems. The Converting to a 64-bit System document contains instructions for transitioning to a 64-bit system.

    The key change to the source code to make this compatibility possible is removing use of longs as 32-bit ints in C, particularly in fixed length data structures. Note that some system calls do require longs. A tool, unlongify was developed by Dave Horsley to help convert the FS code. It is available to help convert station code. Its use is described in the Conversion of C code sub-step of the Converting to a 64-bit System document.

    A second important issue is that pointers and time_t variables in C are 64-bits on 64-bit systems and 32-bits on 32-bit systems. Care must be taken if these are passed back to FORTRAN callers or used in fixed length data structures.

  3. Version control with git.

    The FS source is now managed using git and github is used for distribution. The source code is now under the GPL3 license.

    The details of the model used for FS releases under git are described in the Release Model document.

    We expect updates in the future to require fewer steps, typically less than in FS9 updates. This is in part due to the fact that distributing the FS via github will make it easier to have smaller incremental updates instead of having to collect lots of changes for infrequent updates.

    This change increases the importance of not modifying the /usr2/fs directory tree since such changes will make it more difficult to simply pull updates to install bug fixes and new features.

  4. The FS display server is now recommended for normal use.

  5. Reorganize update notes as HTML viewable on the web (closing #71).

    Hopefully, this change will make the update notes easier to read and navigate. Among other improvements, there are clickable links to other sections within a document, as well as to sections in other related documents, and a clickable table of contents. The major points of the change are:

    1. Reorganized update notes as .adoc files in the docs/ sub-directory.

    2. All of the .adoc files are viewable as HTML, and are hierarchically indexed, at https://nvi-inc.github.io/fs/.

    3. The first update notes available in HTML were for 10.0.0-beta2.

    4. Add FS Document Font Conventions document. These conventions are similar to the ones in the traditional printed FS manuals.

    5. Add Release Model document describing steps in making a release.

    6. Add FS Environment Variables document. This document describes user settable environment variables for both make time and runtime.

    7. Convert the old "Installation Reference Appendix" into the Installation Reference document. Additionally:

      1. Update Making a back-up before installing section to include using symbolic links for switching back-and-forth between operational and test installs.

      2. Update Copy-and-paste installation tips section for working from HTML or PDF instructions.

      3. Add strategy for setting the geometry resource for an xterm window (and others with a name property) in the Setting geometry values in .Xresources section.

      4. Add section covering how to configure opening of new windows in the Opening additional windows section.

    8. Improve structure and correct some errors from original .txt version.

    9. Make many typo/wording fixes.

  6. Change the name of the go program to rte_go.

    The go program emulates a facility of the RTE operating system that was used to support passing control from SNAP back to an external program (typically aquire, fivpt, holog, and onoff) after it had suspended itself to wait for FS commands to be executed. The program was renamed to rte_go to make room for the go compiler, which is now being used for some software.

    Instructions for updating local .prc files for this change are included in the Convert from go to rte_go sub-step of the Update .prc files step of the Upgrading from an FS9 version section of the FS 10.0.0 Update Notes document.

  7. Update and expand fesh.

    These changes include support for encrypted access to cddis, support for other data centers, respecting skedf.ctl, and answering optional drudg prompts for geodesy schedules. Please see the FS 10.0.0 fesh Changes document for full details.

  8. Add .rxg file logging to lo command.

    1. Summary information logging.

      When an LO is configured (or monitored) with the lo command, a summary of information from the matching .rxg file is displayed and logged. Details of the format are available with help=lo. This is intended to give the operator feedback that the correct version of the .rxg file is in use. The format of these lines may be adjusted in future releases based on feedback from users about what is most useful. Thanks to Alastair Gunn (Jodrell Bank) for suggesting this.

    2. Full logging of .rxg file non-comment lines.

      When an LO is configured with the lo command, the contents of the corresponding .rxg file are logged, but not displayed. This only occurs the first time this .rxg file matched an LO being configured since the most recent opening of the current log. After the time-tag, each logged line starts with :rxg_file, followed by the name of the .rxg file, and then the values from a single non-comment line in the file. The lines are logged in the order from the .rxg file. This is intended to provide historical information about the values being used in FS calculations.

  9. Add hooks for local LO control to lo and lo_config commands.

    1. Hook in lo command.

      While the FS has an option for any built-in command to have a local version, having such a local overriding command can create a maintenance burden if the FS command is updated. Some commands very rarely change, but others change fairly often. The more often they change, the more maintenance burden there is. Unfortunately the lo command changes fairly often.

      To address this issue, a hook has been added to the FS version of the lo command to run antcn in a particular local mode to configure an LO when it is commanded. This is triggered with the environment variable FS_LO_ANTCN_MODE. The details of the interface are available in the Comments section shown with help=lo.

      Using the hook may remove the need to have a local version of the lo command. This may not be a suitable solution for all stations. If you have (or need) a local lo command you can continue to use it (or implement one), but it will need to be updated to get new capabilities such as new racks, which occurs in this update, and the logging .rxg files change, described above, when they come along.

      Note
      This feature does not currently provide a way to read back information from the device for display.
    2. Hook in lo_config command.

      The drudg program provides a means to include the calling of a lo_config command at the end of each IF setup procedure it generates. This is intended to provide stations that implement commanding the LO configuration to device(s) with a way to do it in one step for a mode as to opposed individually with lo=…​ commands. It can also be used to implement command of the LO setup for a mode instead of with the lo command to reduce (but not eliminate) the maintenance burden that is needed if a local lo command is used. See the example /usr2/fs/st.default/control/skedf.ctl file for how to trigger drudg's use of this command (also see the related skedf.ctl fix change in this sub-section.

      Until now the lo_config command has been a station only command, i.e., it had to be implemented as a local command. With this update, there is now a built-in command that can used for this functionality, if it is suitable. If it is not suitable, the local command can still be used or implemented.

      By default the built-in lo_config command is a no-op. However, it has a hook that can used to run antcn in a particular local mode to implement configuring the LOs. This is triggered with the environment variable FS_LO_CONFIG_ANTCN_MODE. The details of the interface are available in the Comments section shown with help=lo_config.

  10. Add fsserver improvements and log support.

    These changes introduce new functionality to fsserver, including an FS log stream, as well as simplifying some use cases. Please see FS 10.0.0 fsserver Changes document for more details.

  11. fsclient fixes

    1. Make fsclient honor the -n flag properly.

      This eliminates opening “double” windows if fsclient is run with -n under an already running fsclient (closing #48).

    2. Make fsclient ignore prompt in no-X11 mode.

      If an fslcient was in no-X11 mode, it created a fs.prompt when instructed by the server. This change removes that behaviour (closing #49), though it may cause an issue if no other clients exist to dismiss a blocking prompt, as discussed in issue #49. If this is a problem for anyone’s use case we will need a new feature here.

  12. Improve gnplt.

    1. Fix labels in gnplt windows that display the gain curve coefficients (closing #51).

      Previously the labels, when displayed were in reverse order. In one window, there were no coefficient labels at all. Thanks to Beppe Maccaferri (Medicina) for reporting this and testing the solution.

    2. gnplt now updates the date in updated .rxg files (closing #72).

      The original developer, (Tomas Gille), did very good work developing this second version of gnplt, but ran out of time in his internship and was unable to include this minor but important feature. Thanks to Beppe Maccaferri (Medicina) for reporting this.

  13. Improvements to msg:

    1. Add checking in msg for the FS being active just before writing to the log (closes #86).

      This allows msg to send its output to the log if it is started before the FS. Previously, it had to be started after the FS. Thanks to Jon Quick (HartRAO) for suggesting this.

    2. Add feature to msg to allow switching from “manual start” to “auto-start” (closes #87).

      By design, msg only allowed “auto-start” to be entered from the Ready form. If the connection to the FS computer is lost (killing msg) while waiting for “auto-start” to complete, it was difficult to re-enter “auto-start” without sending a new Ready message. To help with this an Auto-start button was added to “manual start”. When msg is restarted, the user can go to the Start form and use the Auto-start button to re-enter “auto-start”. The log must already be open to the experiment log when msg restarted for this to work. Thanks to Jon Quick (HartRAO) for suggesting this.

  14. Move X resources for helpsh to ~/.Xresources.

    This allows the geometry and other parameter of the FS help display xterm to be controlled locally.

  15. Change default .Xresource files to prevent overwriting of login shell window title by bash.

    This maintains consistent window naming for agreement with existing documentation. This only affects bash users.

  16. Always check for “day 248” issue in setcl.

    Previously setcl only checked for this issue (which is due to use of 32-bit arithmetic in the time handling code), if the time model was not computer. In principle, when the model is computer there is no need to check for this issue. However, since the time is still managed with the same 32-bit arithmetic (on both 32- and 64-bit systems) as for the non-computer models, it is still necessary to check. Not doing so was an oversight. The result was that there were no warnings of an impending 248 day time issue if the model was computer. This is now fixed (closing #56). Thanks to Richard Blaauw (WSRT), and subsequently Jon Quick (HartRAO) for reporting this.

  17. Add checking for a procedure or schedule file before attempting to open it.

    This change is to avoid accidentally closing an active procedure or schedule file if the new one specified in the proc=…​ or schedule=…​ commands, respectively, does not exist or has incorrect permissions (closing #45). Previously, if the new file did not exist, or did not have the correct permissions, the old file would still be closed. Thanks to Jon Quick (HartRAO) for pointing out this inconsistency.

    Caution
    This is a non-backward compatible change in how the SNAP commands behave. Previously supplying a non-existent procedure or schedule file name would cause the closure of the corresponding file. Now to close an open procedure or schedule without opening a new one, a null parameter must be supplied, i.e., proc= or schedule=. As before, the latter will not close an open schedule procedure library.
    Note
    The old behavior was partly a consequence of how the original file handling worked on HP-RTE systems, but is not sensible for how the SNAP commands should work.
  18. Improve help command.

    1. Remove usage of system() call to find help files (closing #3, and #40).

    2. Update help pages for onoff and fivpt.

      1. Add section on switching between continuous and non-continuous cal.

      2. Remove if=cont_cal,, in calon/off-nf/fp procedures.

      3. Add recovery method for misconfigured cal.

    3. Improve DBBC2 ifx command help files.

      1. The fact that the IF target level is not command as the default was added.

      2. The range for IF filter 3 was corrected to 1536-2048.

      3. The description of the scaling of the IF power measurements was brought up to date.

  19. Improve plog.

    1. Use of an environment variable NETRC_DIR was added to support not having the .netrc file in the user’s home directory.

      Please see plog -h for details on how to use this. The same variable is used by the fesh script for the same purpose.

      Note
      Normally, the .netrc file would be in the user’s home directory. However, some systems have security policies that forbid that. This variable provides a way to have the .netrc file in a different directory, perhaps /usr2/control.
    2. The format of the version print-out was changed.

  20. Add popen time-out feature.

    There is a now a -t …​ time-out option. If the command being run by popen has a time-out feature, it is generally better to use that command’s feature. See help=sy for more details.

  21. Fix the remaining case of attempting to execute a procedure from a closed library causing a crash.

    There are very few cases in the code where a procedure library is closed; one was overlooked in the previous fix of this issue in 9.13.1. This case could happen if the schedule that was opened was named station, which would lead to the automatic closure of an already open schedule procedure library (there cannot be a station schedule procedure library since station is already the station procedure library).

  22. Fix year wrap error message in procedure logging.

    This fixed a benign and spurious error message if a log was kept open past the end of the year and any procedures that had last been logged in the previous year were executed again (closing #23). Thanks to Eskil Varenius (Onsala) and Alexander Neidhardt (Wettzell) for reporting this.

  23. Add more log header lines.

    1. A log header line was added for uname() system information.

    2. A log header line was added for the compile time value of the FC environment variable.

  24. Improve holog/MASK.

    1. The elevation spacing was corrected for the example in step (3) of mask-HOWTO.txt.

    2. Axis titles were added to plot_mask.m.

  25. Fix ignoring antcn errors in the satellite and satoff commands.

    This bug caused errors from antcn to be ignored for only these commands. It has been fixed (closing #82).

  26. Eliminate cls_chk error from inject_snap -w …​ command when an error occurs (partly closing #50).

    This was caused by inject_snap not implementing the new linkage that was added for fserr. To correctly retrieve the error message would have required making a new interface to fserr or subsuming it into a library routine that both ddout and inject_snap could use. It was not possible to do either in the available time. Instead inject_snap was modified to output the error without the message, but pointing out that the message can be found in the log and display. This is covered in more detail in issue #50. Thanks to Dave Horsley (Hobart) for reporting this.

  27. Fix some errors in control/fserr.ctl.

    1. Errors in some double double-quote ("") lines and some incorrectly reused error codes were fixed (closing #43). Thanks to Alexander Neidhardt (Wettzell) for reporting these.

    2. The error messages for a error not being found when attempting to manipulate its display setting (with tnx) were clarified (closing #22). Thanks to Jon Quick (HartRAO) for reporting this.

    3. Obsolete errors for the, no longer used, sw.ctl control file were removed.

  28. Improve start-up error message from fserr if an error message line is too long in fsser.ctl or sterr.ctl.

    Previously, it reported the error as being in the following "" line.

  29. Fix example /usr2/fs/st.default/control/skedf.ctl.

    The example sked.ctl file incorrectly identified the lo_config keyword as if_config. This has been fixed (closing #81). It is recommended that you check and, if needed, update your local copy in /usr2/control/skedf.ctl appropriately, including the comments.

  30. The FS uses a new Makefile scheme.

    This is accomplished by including the /usr2/fs/include.mk file in every Makefile except for drudg, its libraries, and third_party/. The scheme is opt-in so it is not necessary for every program or station programs to participate. An explanation of the new scheme is provided in /usr2/fs/misc/fs10_makefile.md.

    For programs that are opted-in, the most significant consequence of this is that a make at the top-level will re-compile anything that depends on a library or include file that has changed. Since drudg has not yet opted-in, updates to it, and its libraries and include files, will require remaking all of the libraries and drudg to be sure they are consistent. The drudg program has its own separate ecosystem within the FS source tree, consisting of the skdrincl/, skdrlnfch/, skdrutil/, vex/, and drudg/ sub-directories

    Note
    Since third_party/ has no FS dependencies, it is not affected by this issue.
  31. Add option to not build the display server into the FS.

    The latest version of the server may not make successfully on some older Linux distributions such as FSL7. To help users in that situation, an option was added to disable inclusion of the server by setting the FS_DISPLAY_SERVER_NO_MAKE environment variable before make-ing the FS (partially closing #76). Follow the steps below to remove the server.

    1. As prog:

      • If you use tcsh, add the following to ~/.login:

        setenv FS_DISPLAY_SERVER_NO_MAKE 1
      • If you use bash, add the following to ~/.profile:

        export FS_DISPLAY_SERVER_NO_MAKE=1
    2. Logout of and then back into the prog account before make-ing the FS.

    3. It is also necessary to also make sure that users running the FS do not have the FS_DISPLAY_SERVER environment variable set.

      1. As oper:

        1. Delete or comment out any lines in the ~/.login file (if using tcsh) or ~/.profile (if using bash) setting the variable.

        2. Logout and back in before attempting to run the FS.

      2. Repeat the above steps as prog.

  32. Add save to all fslb/novas.f routines.

    This is defensive in case local variable are changed to being automatic. The NOVAS routines seem to require static variables.

  33. No longer set /usr2/fs and /usr2/st to be owned by prog.

    This was a long standing but benign error in the misc/fsinstall script.

2.2. FS changes relative to the main branch

This update merges the VGOS branch into the main branch. The VGOS branch diverged from the main branch just after 9.11.2. This sub-section covers FS changes that were introduced in the VGOS branch and have been incorporated into the main branch as of 10.0.0.

  1. Input is now case sensitive.

    As was the case for the VGOS branch, input from the operator, schedules, and procedures is now case sensitive. This change should present no difficulties if all normal input is in lower case. All SNAP commands and most parameters are lower case.

    The change was made because in some cases it necessary to send upper or mixed case input to devices and other computers from SNAP commands. For MAT and GPIB communication, all communications sent to the devices is still mapped to upper case.

    The biggest consequence of this change is perhaps that strings sent in antenna=…​ commands to the antenna are not by default mapped to upper case. If this an issue for your antenna, it may require changes to your antcn program. This is covered in the Case sensitive strings in antenna= commands sub-step of the FS 10.0.0 Update Notes document.

    Caution
    While it is possible to have different SNAP commands or procedures with names that differ only in case, it is strongly discouraged. In the future, case insensitivity may be introduced for command and procedure names.
  2. tpicd=no now requires a running (not halted) schedule to log data.

    This was added to avoid logging very large amounts of data for RDBE systems if the schedule ends or is halted while tpicd is recording data i.e., when data_valid is on. It is probably beneficial for all back-ends, so has been made a general feature. Data can still be logged when a schedule is not running using tpicd=yes (which does not depend on data_valid).

  3. Parallel execution of commands for multiple instances of a few specific devices.

    Currently this is only supported for RDBE racks and Mark 6 recorders. Please see the Parallel command execution sub-section of the FS RDBE support document and the Parallel command execution sub-section of the FS Mark 6 support document for more details.

  4. Partial support for RDBE racks.

    This support does not provide the complete command set and functionality usually provided by the FS for a rack. However, it is sufficient for normal FS operations for VGOS observations if the schedule procedure library is provided by a specially crafted .skd schedule file (see the $PROCS block change in the drudg changes relative to the main branch sub-section below for more details).

    The details of RDBE features are described in the FS RDBE support features section of the FS RDBE support document.

  5. Partial support for DBBC3 racks.

    This support does not provide the complete command set and functionality usually provided by the FS for a rack. However, it is sufficient for normal FS operations for VGOS observations if the schedule procedure library is provided by a specially crafted .skd schedule file (see the $PROCS block change in the drudg changes relative to the main branch sub-section below for more details).

    The details of DBBC3 features are described in the FS DBBC3 support features section of the FS 10.0 DBBC3 support document.

  6. Partial support for Mark 6 recorders

    This support does not provide the complete command set and functionality usually provided by the FS for a recorder. However, it is sufficient for normal FS operations for VGOS observations. (see the Mark 6 change in the drudg changes relative to the main branch sub-section below for more details).

    The details of the FS Mark 6 features are described in the FS Mark 6 support features section of the FS Mark 6 support document.

  7. The scnch window was added to provide a display of the scan_check results.

    This was originally developed for Mark 6 recorders in the VGOS branch, but has now been expanded to support Mark 5 recorders as well (closing #61).

  8. Limited support for a second DBBC2 and Fila10G.

    To support VGOS operations with two DBBC2s, limited support for a second DBBC2 was added. This consists of the low-level device communication commands dbbc2 and fila10g2 and time and configuration setting of a FiLa10G attached to the second DBBC2 with fmset.

    This support is sufficient for normal FS operations for VGOS observations with two DBBC2/FiLa10G units if the schedule procedure library is provided by a specially crafted .skd schedule file (see the $PROCS block change in the drudg changes relative to the main branch sub-section below for more details).

    A second instance, dbbc2, of the DBBC2 control program, dbbcn, is used for communication with the second DBBC2. The dbba2.ctl control file is used for the second DBBC2.

  9. Ignore leading spaces in keyword parameters for C based FS commands.

    This allows leading spaces in parameters that are parsed as strings to be ignored, as they were already for integer and real numbers. Since FORTRAN commands already had this feature, it should be universal now.

  10. Error messages from commands are now printed after command responses when both are present.

    This change was made so that the last output from a command will always be the error message, if an error occurred. This should make the error more visible when the command also produces non-error log responses. This is particularly import for parallel execution commands for RDBE racks and Mark 6 recorders, but should be beneficial in general.

  11. Remove carriage returns (0x13) and line-feeds (0x10) from responses in the commands form4, decode4, hpib, and mat, even if there was error.

    Previously the responses were handled by the general processing (in boss) which did not remove these characters. Instead the responses are now processed with the code that would handle this if there were no error, which does remove these characters.

  12. Recursive average calculation in onoff updated.

    The order of operations was changed to provide better fractional accuracy for very large numbers of samples.

  13. Increase some limits:

    • The maximum number of LOs was increased to eight.

      This change was made to accomodate having eight IFs for VGOS.

    • Increase number of possible commands to 1024.

    • Increase the number of command subroutines available to 1000.

      This impacted the format of the control/fscmd.ctl and /usr2/st/stcmd.ctl.

  14. A few experimental, user beware, utilities were added.

    Caution
    These may not work well for their intended purpose or at all. They are only intended for developers. They may change in the future.

    In misc/:

    • ntpmon — Simple NTP monitoring

    • time_delay — Simple source acquisition time delay listing

    • tpcont_rdbe — Simple RDBE continuous TP extraction

    In chk_time/:

    • chk_time a simple utility for checking for NTP time jumps.

  15. Some bugs inherited from the main branch were fixed in the VGOS branch. These fixes have now been included in the main branch.

    1. Missing argument in int2str() for TPI value logging supplied.

      This was occurring for VLBA, LBA, DBBC, and user detectors, but apparently was relatively benign. Incorrect behavior, if any, was probably limited to using leading zeros, instead of blanks, in some fields.

    2. For the DBBC, incorrect logging of errors if there was a problem retrieving class buffers of TPI data.

    3. The DBBC2 cont_cal error responses were incorrectly using the df code instead of dd.

    4. The disk_record, disk2file, in2net commands incorrectly cleared the class number of responses twice if there was an error retrieving them when the recorder was commanded.

      Note
      The disk_pos command still has this error.
    5. Fixed checking uninitialized variable for an error when returning to nominal position after an error in fivpt.

      This was apparently a benign bug.

    6. Fixed Tsys always being 100 for continuous cal in fivpt.

      This bug did not affect the ability of fivpt to find pointing offsets. In addition to the Tsys value being wrong, it caused Tsys derived values (Tant, fitted peak Tant values, and Tsys related values in the perform records) to be displayed in terms of a percentage of Tsys. This was basically the same effect as having a Tcal value of -100. Only DBBC racks had continuous cal in FS9. While not entirely a cosmetic issue, it was fairly benign.

    7. Corrected the order of wait and cal response fields in fivept help page,

    8. Report errors decoding times for schedule command and ignore relative waits

      When the schedule command was looking for the next scan to start at, it was ignoring errors when decoding the times in the .snp file. This could lead to some confusion about why no scans were found to start at. This was especially true if there were relative waits (!+…​) in the file which would cause errors. Relative waits are now ignored.

2.3. FS changes relative to the VGOS branch

This update merges the VGOS branch into the main branch. The VGOS branch diverged from the main branch at 9.11.2. Except for the first nine items below, this sub-section covers FS changes that occurred in the main branch from 9.11.2 through 9.13.2. These changes are covered extensively in several update notes in the misc/ subdirectory:

  • fs9116up.txt

  • fs9118up.txt

  • fs91119up.txt

  • fs9132up.txt

Rather that cover them fully here as well, only a brief summary is provided below. Please check the files listed above for the full details. The first nine items below are changes to VGOS branch features, the remainder are the changes inherited from the main branch.

  1. Add rdbemsg utility for RDBE VGOS users.

    This utility was developed by Jason Soohoo (Haystack) as vgos-msg-gui.py. It is an RDBE oriented version of the FS msg utility for sending operations emails. Originally it ran on a different back-end computer. It was ported to the FS computer, expanded to provide pointing data, and generalized to support more systems. For more informaion, please see the rdbemsg utility sub-section of the FS RDBE support document.

  2. Generalize the scnch window to cover Mark 5 recorders.

    The scnch window was initially developed for Mark 6 recorders. The form has now been generalized to cover Mark 5 recorders as well (closing #61).

  3. Replace deprecated TCP clients with s_client.

    The s_client script should be used to replace other similar, new but now deprecated, TCP scripts from the VGOS branch: be_client and mcicn.

    The s_client script was already present in both the main and VGOS branches. It is a generalization of the be_client script written by Chet Ruszczyk (Haystack). Errors are reported as lg -1 errors in the log if the FS is running. The details on its use are available from help=sy.

  4. Add new_ifdbb script for VGOS stations.

    This script is intended as a tool to allow stations, and schedule writers, a way to update schedules for changes in the ifdbb procedure used by VGOS stations, particularly those with RDBE back-ends. For RDBE stations, the attenuation used in the signal chain, which is set by the schedule, depends on the observing mode being used and the conditions at the station. The provides a way to incorporate needed changes into schedules. If the script is run without other command line arguments, it will output “help” information.

  5. Add support for DBBC3 to if=cont_cal,…​ (closing #54).

    Thanks to Eskil Varenius (Onsala) for reporting that this was missing.

  6. Improve help command.

    1. Improve help page for tpicd.

      Made it clearer that when in the no mode, data_valid=on will only start logging of tpicd data when a schedule is running and not-blocked. Accidentally leaving tpicd logging RDBE multi-cast data after closing or halting a schedule creates a lot of extra log entries. This is probably beneficial for all back-ends.

    2. The help file for the ddbc command was expanded to also describe the dbbc2 and dbbc3 commands and now includes a description of the output for multi-line responses for all of these commands (closing #75). The help command now works for the dbbc2 and dbbc3 commands.

    3. The help file for the fila10g command was expanded to also support the fila10g2 command. The help command now works for the fila10g2 command.

  7. Change the flags for the mon<x> programs in clpgm.ctl from a to d.

    Since these external programs do not depend on the FS, they can continue running (detached) after the client is closed.

  8. Improve error logging for dbbcn initialization.

    The instance of the program is now correctly reported. It can be dbbcn or dbbc2.

  9. Fix some errors in control/fserr.ctl.

    Error messages that should refer to the active_rdbes and active_mk6s commands were corrected to no longer incorrectly refer to the rdbe_active and mk5_active commands, respectively.

  10. Fix Tsys to work if the recorder type is none.

  11. Prevent changing schedules while recording.

  12. Fix a bug that caused tpicd to crash for DBBC2.

  13. Add a time-out feature in the onsource command to enable waiting for the source to be reached.

  14. Add support for FSL9.

  15. Change format of DBBC2 CoMo line in equip.ctl.

  16. Update minimum version of DBBC2 PFB firmware in equip.ctl.

  17. Add FiLa10G input select line to equip.ctl.

  18. Add 128 as a clock rate and add new nominal cases to equip.ctl.

  19. Add support for FlexBuff recorders.

  20. Add partial support for VLBAC and CDAS racks.

  21. Change dbbc rack type to dbbc_ddc.

  22. Add support for DBBC2 racks with FiLa10G units, rack type: dbbc_ddc/fila10g.

  23. Add support for the DBBC2 PFB personality, rack types: dbbc_pfb and dbbc_pfb/fila10g.

  24. Add support for two VSI outputs from a DBBC2 rack feeding a FiLa10G.

  25. Add support for DBBC2 geo2 mode.

  26. Add a new termination mode in antcn.

  27. Make use of the mk5_status command standard in place of mk5=status?.

  28. Fix a bug that prevented scan_check from reporting an error for non-zero missing bytes for Mark 5B.

  29. Add unification of station procedures for DBBC2 DDC with continuous and non-continuous calibration, as well as with PFB (non-continuous calibration).

  30. Add new if command for conditional execution of SNAP commands.

  31. Change the scan_check command to only give a warning if there are missing bytes from 5C and FlexBuff recorders.

  32. Add improvements in the holog program (some VGOS branch versions had these improvements).

  33. Fix a bug that caused local versions of sterp to fail if an error message was longer than 256 characters.

  34. The s_client utility was made Python 2.5 (FSL8, Lenny) compatible.

  35. Change the fmset programs to offer a set of (station defined) FiLa10G configurations to send as part of syncing.

  36. Add support for DBBC2 DDC firmware versions v105, v105_1, v105E, v105F, v106, and v107.

  37. Add the FS display server (some VGOS branch versions also had this feature).

  38. Provide support in the mk5c_mode command for the full range of total data rates that can be specified in a 64-bit integer for jive5ab with VDIF and 5B/Ethernet recording.

  39. Add a case specific error message to fmset if jive5ab complains that there has been no dot_set=…​ yet for a Mark 5B recorder.

  40. Improve gnplt to allow more Tcal points per band, support user define font sizes, and use better plot axis labels for large values.

  41. Add support for user devices that can’t (or don’t need to) measure a zero level for Tsys.

  42. In metserver, add command line argument for suppressing errors from specific devices, if broken; add support for FS_SERIAL_CLOCAL make time environment variable for FSL9 and later.

3. drudg changes

This section is divided into three sub-sections. Please see the Introduction section above for an explanation of the sub-sections.

3.1. drudg changes that are in common since FS9

drudg opening message date is 2021Feb18.

  1. Source code now works on 32- and 64-bit platforms.

    For 64-bit use of FORTRAN, eight-byte integers are needed to support some calls in the VEX library. As a result, drudg and its libraries are configured to automatically use four byte integers for 32-bit and eight byte integers for 64-bit. The rest of the FS uses four byte integers for both. This made it necessary to give drudg it own version of lnfch/, in skdrlnfch/.

  2. Source version control is maintained with git.

    The drudg program source is maintained external to the FS. For each drudg update the source in imported into the FS git repo for distribution with the FS. This does not provide the same level of tracking as having drudg itself in git but it is still useful.

  3. Fix uninitialized variables.

    Several previously uninitialized variables are now initialized. As part of this implicit none was added to all FORTRAN routines that did not have it before, except for xat.f.

  4. Update comment on line three of .snp files.

    Previously at the end of line, the number of passes and the tape length were listed. Since there is no tape support, these fields were replaced with the recorder type.

  5. Fix crash if $HEAD is the last block in a .skd file.

    Fixed bug in reads.f.

  6. Fix crash due to an error in a mask (closing #74).

    A particular error in the mask format intermittently excited an uninitialized variable bug. Thanks to Beppe Maccaferri (Medicina) for reporting this. He discovered it while testing with r1971.skd (which was not an experiment that included Medicina).

  7. Allow the $PARAMS block to occur after other blocks in .skd files.

    Previously it has to be the first block.

  8. Clean-up source.

    1. Remove references to pass, headstacks, and S2.

    2. Add the GPL to files it was missing from.

    3. Remove source files no longer used.

    4. Unify source between sked and the FS.

3.2. drudg changes relative to the main branch

This update merges the VGOS branch into the main branch. The VGOS branch diverged from the main branch just after 9.11.2. Except for the first item, this sub-section covers drudg changes that were introduced in the VGOS branch and have been incorporated into the main branch as of 10.0.0. The first item is a fix for a bug that originated on the main branch.

  1. Fix missing preob when EARLY start is non-zero.

    This was broken in the implementation of staggered start for FS 9.13.0 and has been restored.

  2. Effective support for broad band racks

    drudg provides effective, but not complete, support for broad band (VGOS) systems with .skd schedule files. The support is not complete because the FS commands for the broad band systems are under development. As a result, drudg does not currently generate the schedule procedures. Instead they are provided verbatim by the .skd schedule file. Additionally, drudg only provides preliminary support for Mark 6 recorders (see the Mark 6 recorder support change below) for use with RDBEs. The features for broad band support are:

    • New $BROADBAND block in .skd file.

      This block has one line with four fields for each broad band station in the schedule:

      1. The eight character, upper case, station name.

      2. The IF bandwidth used per band.

      3. The total data rate used for observing

      4. The drain rate, the rate at which data is recorded.

        If smaller than the total rate, it is necessary to allow time after scan for the record buffer to drain.

      Note
      In version 10.0.0, an optional fifth field was added for the number of extra seconds to allow after the record or buffer time for slow disks.
    • New $PROCS block in .skd file.

      This block holds verbatim copies of the procedures for each broad band station. They are used if the rack type in drudg is set to BB. For this case, the setup procedure’s name in the .snp file is setupbb.

      Important
      The procedures in $PROCS block must use setupbb as the name of the setup procedure.

      The $PROCS block has a section for procedures that are the same at all broad band stations and a section for procedures that are unique to each station. The procedures that are common to all the stations are delimited by lines: BEGIN COMMON and END COMMON. All lines between those two are included in every broad band station’s schedule procedure file.

      For each station there are sections for procedures that are unique to that station. They are delimited by lines: BEGIN STATION and END STATION, where STATION is the eight character, upper case, station name. All lines between those two are included in the station’s schedule procedure library.

      The procedures between the BEGIN and END lines must be complete procedures, starting with define line, including the time stamp field, and the enddef line. Both lines are required parts of the structure of a SNAP .prc procedure library for each procedure.

  3. Mark 6 recorder support

    The drudg Mark 6 support is selected by using the Mark6 recorder type in drudg. Currently this is only for use with RDBE racks. It is implemented using low-level mk6 device communication commands in the .snp file. These are direct commands to the recorder using its communication protocol. It is assumed that the recorder had been initialized and modules mounted and grouped before the schedule starts. drudg inserts commands at the following points for each scan:

    1. After the setup procedure

      The start time and duration of the next recording, as well as the information needed to form the scan label, are sent. For example:

      mk6=record=2020y357d18h00m00s:30:30:357-1800:vo0357:gs;
    2. After the call to the preob procedure

      The remaining recording capacity at the total bit rate is queried. For example:

      mk6=rtime?8192;
    3. After data_valid=on

      The remaining recording capacity is queried.

    4. After the next source=…​ command, but also after the end of the data buffering period if there is one

      The remaining recording capacity is queried.

    5. After the third recording capacity query

      A call to checkmk6 is inserted. This would be just before the next setup procedure. The checkmk6 procedure comes from the station or schedule procedure library and usually contains:

      mk6=record=off;
      !+2s
      mk6=scan_check?;

      The record=off command is sent to make sure the recording or buffering is stopped before the scan_check? and, more importantly, before the next scan, in case there are slow disks. The two second wait (!+2s) is intended to give the Mark 6 more time to close the scan files, in case there are slow disks. Finally, the scan_check? is used to check the recording quality.

3.3. drudg changes relative to the VGOS branch

This update merges the VGOS branch into the main branch. The VGOS branch diverged from the main branch just after 9.11.2. Except for the first three items, this sub-section covers drudg changes that occurred in the main branch from 9.11.2 through 9.13.2. Those changes are covered extensively in several update notes in the misc/ subdirectory:

  • fs9116up.txt

  • fs9118up.txt

  • fs91119up.txt

  • fs9132up.txt

Rather that cover them fully here as well, only a brief summary is provided below. Please check the files listed above for the full details. The first three items below are improvements to support for VGOS.

  1. Add support for an additional wait at the end of recording for broadband.

    This allows schedules to include a fixed amount of additional wait for buffering per station. This seems to be needed for Mark 6 recorders in configurations that otherwise would require no buffer time for disks that are slower than nominal.

  2. Fix the GB shown in drudg listings (closes #88). The values had been incorrectly scaled by 1000/1024 in the VGOS branch. This was fixed.

    The size of the GB being recorded in mk6=record=…​ commands had the same issue in the VGOS branch as well. This was also fixed. This error had no impact since the value is only used by the recorder to determine whether the disk module has enough room for the recording and the Mark 6 modules were not being used near their capacity limit.

  3. Correct the name of the setup procedure used for BB racks to always be setupbb regardless of the recorder selected (closes #57).

    This makes schedules more useful with other recorders, particularly none (which is used for single dish tests).

  4. Fix for a bug that caused the IF configuration to be lost if the schedule specified an unrecognized rack type.

  5. Allow different stations to use different BWs.

  6. Avoid failing if some stations have unsupported rack and recorder types in the schedule.

  7. Allow more than 16 phase-cal tones in a channel.

  8. Fix Tsys to work if the recorder type is none.

  9. Add support for FlexBuff recorders.

  10. Add partial support for VLBAC and CDAS racks.

  11. Add support for DBBC2 racks with FiLa10G units.

  12. Change to using DBBC2 rack types dbbc_ddc and dbbc_ddc/fila10g, but accepting old types dbbc and dbbc/fila10g, respectively, in schedules for backward compatibility.

  13. Add support for the DBBC2 PFB personality, rack types: dbbc_pfb and dbbc_pfb/fila10g.

  14. Add support for two VSI outputs for DBBC2 racks feeding a FiLa10G.

  15. Add support for DBBC2 use of the VSI2 output by itself.

  16. Add support for DBBC2 geo2 mode.

  17. Change to always treating equipment types as case insensitive.

  18. Fix bugs preventing use of .skd schedules that used non-Nyquist sampling rates.

  19. Add ad hoc support for so-called “staggered start” mode.

  20. Use only the skedf.ctl control file in /usr2/control/.