CDEF*INE -- This is the command to define a constraint for the program’s use.
'Con?' ' asks for each constraint you wish to define individually. The various constraints allowed are shown below.

Note; If the constraint is going to take more than one line to define, then at the end of the line you are entering type a '&'. This will tell the program that you wish to continue the present definition on a new line. In this case the program will prompt 'Nxt?' for the next line of the definition. A definition can be up to seven lines long.

(i) One Dimensional Constraints

con-name : par / div (x1, x2)
con-name : par
con-name - The name of the constraint, terminated by the : symbol
par - The parameter number that the constraint will be checking
div - The division factor (has to be a power of 2) for the parameter specified (div will be set to 1 if not specified)
x1, x2 - The coordinate points of the constraint.

A one dimensional constraint is composed of a series of line segments. If the constraint is to be satisfied, the specified parameter must have a value (after the division) that will fall between one of the line segments. If the parameter is not present, or if the parameter does not fall into one of the line segments, then the constraint is not satisfied.
Note: () and , can be absent.

(ii) Two Dimensional Constraints

con—name : x-par / x-div, y-par / y—div (x1, y1) (x2, y2)... . con-name : x-par / x-div, y-par / y-div \band-one\ \band-two\
con-name - The name of the constraint, terminated by the : symbol
x-par - The parameter in the x direction that the constraint will check
x-div - The x parameter's division factor
y-par — The parameter in the y direction that the constraint will check
y-div - The y parameter's division factor
band-one- The first band name to use the points of x1, y1
band-two- The second band name to use the points of x1, y1, etc.- The (x,y) co-ordinate of the constraint

A two dimensional constraint uses its point list to draw a polygonal shape. The shape can be of any complexity as long as no lines intersect. SMAUG is presently limited to process up to sixty coordinates.  SMAUG will check the coordinates formed by the appropriate parameters (after division if necessary). If the coordinates formed by these two values fall within the polygonal shape drawn earlier, then the constraint will have a value of TRUE, otherwise it will have a value of FALSE. If neither parameter is present the constraint will have a value of FALSE.

One will notice that the second format shown has the ‘variables" of band-one and band—two. These are the names of some bands from which the points are to be taken instead of reading them directly. The program will take the point list of the two bands, match which ends are the closest to each other and then write this point list back into the definition. This is one of the few cases where the program will automatically alter the user’s input definition.

Special note; To avoid double counting in boundary shared by two different constraints (mainly those formed by bands), the following convention is adopted. The points lying on the line formed by the lower values of y-coordinates are excluded from the constraints evaluation while the points lying on the line formed by the upper values of y-coordinates are included. Points lying on the left and right boundaries formed by the high and low values of x-coordinates are included.

(iii) Bitmask Constraints

con-name : par op mask
con—name— The name of the constraint, terminated by the : symbol
par- The parameter that the constraint will be checking, normally this parameter should be a bit mask.
op- Operator which can be AND (A) or OR (0)
mask— The mask (I*2 in hex) that the constraint will use for checking

A bit mask constraint will take the parameter specified and do an AND or OR operation with the mask provided.

CDEL*ETE - This will delete a constraint from the program
‘Con to delete?’ ‘ asks for the full name of the constraint that the user wishes to delete.

CLE*ARBUFFERS-- This will flush the intermediate buffers.

C*LIST-- This will list the first line of any constraints defined

CLISTF*ULL-- This is a debug style list command that will act as CLIST but will in addition display pointer values that the user is not normally interested in. This function can also accessed by typing CLF.

CO*MMANDS— This will list all of the valid commands (without the *'s inserted)

COMP*RESS-- This will allow the user to compress any spectrum by an integer value.
‘Spectrum to compress? ' asks for the name of the spectrum you wish to compress and the result will be stored in this spectrum (i.e. the original spectrum will be destroyed if the compression factor is greater than 1).

‘Compression values?’ asks you for the integer value that you wish the spectrum to be compressed by. This value must be power of 2. If only one value is provided and the spectrum is two dimensional, then the program will assume the value is both the x and y compression values.

CON*NECT -- This option will allow the user to connect a previously disconnected spectrum to the data stream for further incrementation.
Note: When a spectrum is defined, it is automatically connected to the data stream. This command is provided to allow a spectrum that was read from a file to be connected to a data stream, or to reconnect a spectrum the user has explicitly disconnected from the data stream.
‘What spectrum to connect? ‘ asks for the name of the spectrum to reconnect.

COV*ERLAY-- This command will allow the user to take a constraint definition and write over the definition of an entirely different constraint. This function is available to allow a user to change constraint data without having to stop the data acquisition.

‘Old Constraint? ‘ asks you for the name constraint that is to be altered.
‘New Constraint? ‘ asks you for the name of the new constraint.
 
CP*RINT-- This will print all of the constraint definitions out to the machine’s console.

CRE*NAME-- This will allow the user to replace a constraint’s present name with a different name that is of the same or shorter Length. See BRE*NAME for an explanation of the prompts.

CWR*ITE-- This viii write all the constraint definitions presently in the program out to a file.
‘File name? asks for the file name to write the definitions to.