What the VLBI Community Needs Jon Hagen April 2, 2002

SNAP The control language. A cute name. Could also have been called SNAF(U). Most commands have several versions, one of which is appropriate for the VLBI terminal at any given site. Lists of commands always include all version of any command; all but the relevant versions should be stripped away to produce a smaller and simpler manual for any station.

The syntaxt is surprisingly crude - short ambiguous command names, strange conventions for arugments, etc. Examples:

"st" This is start tape, though you might also guess stop tape or status. The inverse of this command is "et" (end tape).

Arguments are passed after an equal sign. Example

"enable= " Without an argument, enable= is the command to disable. What is disabled is the write head. The current to the write head is turned off and any data on a track under the head will be left unaltered.

"rec=500" Move the tape 500 feet in the direction of the last commanded motion.

Needed Test Procedures

The SNAP language has no looping or branching commands, making it impossible to write automatic test procedures in SNAP. The procedure parity is a hardwired command, probably written in C.

This test procedure, the parity command takes several minutes to run. While it is running, the operator input terminal is locked out. Is there a way to interrupt parity. Escape, maybe?

If not, the tape may run off the end of the reel while parity is running.

To: File

From: Jon Hagen

Date: April 3, 2002

Subject: Stand alone BBC/formatter/decoder test/training exercise: How to get formatted data to the Decoder without running the tape.

The formatter does not constantly output data. Its output drivers must be enabled. The formatter vocabulary includes the /ENAble_track command, which can selectively enable any or all tracks. Example 1 : "/ENA 1,2,14". Example 2: "ENA" enables all tracks. But this can be done at a higher level using the SNAP command tracks. Example: "tracks = v1,v2,v3,v4" enables the four VLBA track groups in the formatter.

Formatted data from the formatter can reach the decoder only via the bypass connection that is made in the Monitor Module in the recorder rack. The data proceeds from the formatter to the two Write Modules (one for each headstack). In each Write Module, two sign/mag pairs are selected (via" repro = .....") for transmission (bypass) to the Monitor Module. The Monitor Module also receives two sign/mag pairs selected from the Read Module(s), and the "repro= ...." command specifies whether the bypass signals or the read head signals are to be sent from the Monitor Module back to the decoder.

The signals selected for monitoring will, however, not get from the write module to the monitor module unless the write module is enabled. This enabling can be done with the SNAP "enable=...." command. Example1 : " enable=g0,g1,g2,g3" enables all four groups in Headstack 1. Example 2: enable=g0,g7" enables Group 1 in Headstack 1 and Group 3 in Headstack 2.

Example Test

Suppose we want the A channel of the decoder to monitor BBC3 USB SIGN and the B channel of the decoder to monitor BBC7 LSB MAG. We will assign these two bits to heads 24 and 25 of Headstack 1. (It might be that we are more interested in testing these particular data paths than in testing the BBCs).

Get the field system started; the user name is oper and the password is vlba4oper .

Start the field system with the command fs .

1. Assign the BBC data to selected paths using the SNAP command trackform:

trackform=24,3us,25,7lm (note, "24,3us" rather than "24,03us"; leading zeros are not accepted)

2. Enable the formatter output drivers using the SNAP command tracks:

tracks=v0,v1,v2,v3

This enables all the formatter signal groups destined for Headstack 1. (We could have enabled only the group(s) that include the signals destined for heads 24 and 25).

3. Now tell the formatter to act on the preceding two commnds:

form=m

4. Enable the write drivers in the recorder rack

enable=g0,g1,g2,g3

This enables all the heads in Headstack 1. (We could have enabled only the group(s)

that include heads 24 and 25).

5. Select the head signals for the decoder channels, A and B.

repro= byp,24,25,byp

The decoder should now be displaying the time, aux data, errs (none), and pcal (pcal always display an answer, even if there is no tone present). Check that the aux data is correct. If you don't want to get up to look at the decoder display, you can read it using

decode4=aux

The screen will display the aux data for both decoder channels. Refer to Alan R. Whitney's unnumbered memo, "Mark IIIA/IV/VLBA Tape Formats, Recodrding Modes and Compatibility, Rev. 1.2, 29 Sep. 2000".

When this procedure was performed, the aux data displayed were as follows:

aaaa bbbb rrss	ttuu

Decoder Channel A 1122 3344 2402 006D

Decoder Channel B 1122 3344 2536 006D

The last two hex characters, uu, show the system ID. Arecibo's VLBA4 system is 109 (set by hard wiring in the DAS rack). This is displayed in the last field as the hexadecimal number 6D.

The bits in the two zeros, tt, in front of the 6Ds show , from left to right, that there were no tyme sync errors, no internal clock errors, no processor time-out error, no communications errors, unused, unused, that barrel roll was not enabled, and that the sequence was not suspended for command processing.

The rrss field for the A Channel indicates that the A Channel was getting data from head stack 1, head 24 and that that head was getting the sign bit of the USB signal from BBC3, just as had been commanded. Likewise, the rrss field for the B Channel indicates headstack 1, head 25, and magnitude bit from the lower sideband of BBC7.

The aaaa and bbbb fields indicate the positions, in microns, of headstacks 1 and 2. These particular numbers must be the defaults used when the field system starts.

The head positioners can be tested as follows:

Define a couple of pass positions using

tapeform=1,−150,2,0,3,120

This assigns pass 1, pass 2, and pass 3 the respective positions -100 microns, 0 microns, and 100microns. (These positions will be relative to an offset position stored the file head.ctl. Move head 1 to the pass 1 position and head 2 to the pass 3 position using

pass=1,3

The head position fields in the aux data from the decoder will read 4150 and 0120.