GDEF*INE -- This is the command to define a gate for the program’s use.

‘Gat?’ asks for each gate you wish to define individually.

Note; If the gate 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 gate definition can be up to seven lines long.

A gate for this program is nothing more than a Boolian expression using the constraint or gate as the variables. Any constraint or gate that is referenced should have been previously defined.

gat -name : (\c-nam\ b-op \c-nam\) b-op ((b—op \c-nam\) b-op \c-nam\)
gat-name-- The name of the gate, terminated by the : symbol
c-nam-- The name of the constraint or gate whose truth value you wish to use.
b-op-- The Boolian operation you wish the program to perform
Gates as used here require some additional explanation. Aside from the symbol \ which is used to tell the program that there is a constraint or gate name present, there is no set format to type the equation.

The valid Boolian operators and their requirements are;

Operator                      Format                        Result

NOT or N                   NOT op1                    Returns a Boolian NOT result
NAND op1                 NAND op2                 Returns a Boolian NAND result
AND or A op1            AND op2                    Returns a Boolian AND result
NOR op1                    NOR op2                    Returns a Boolian NOR result
EOR or E op1             EOR op2                     Returns a Boolian exclusive OR result
OR op1                       OR op2                       Returns a Boolian OR result

The operators are listed in order of priority. This means that the paired gate definitions below will have the same result.
G One : \C One\ NAND \C Two\ OR \C Three\ NAND \C Four\
G One : (\C One\ NAND \C Two\) OR (\C Three\ NAND \C Four\)
G Two : \C One\ NAND NOT \C Two\ NOT AND \C Four\
G Two : (\C One\ NAND (NOT NOT \C Two\)) AND \C Four\
G Thr : NOT \G One\ NAND NOT \C Two\ OR NOT (\C Three\ AND \C Four\)
G Thr : ((NOT \G One\) NAND (NOT \C Two\)) OR (NOT (\C Three\ AND \C Four\))
The above are boolian algebraic equations. The examples shown above introduce the fact that the use of parentheses are permitted. With the use of parentheses it is possible to override the default priority.

Example G Thr shows that a gate can use the truth value of another gate. This is allowed as tong as the gate given has already been defined.

Important; An examination of G Two will show that the gate is faulty. There is a NOT immediately followed by an AND which is incorrect. In these cases, the parse will assign the NOT to the previous operand (as shown in the second version of G Two).

The parse subroutine that is used will try to parse any algebraic equation that is given to it. Due to the time and size limitations, the parse subroutine will attempt to read in any equation and use it (G Two is an example). But the parse subroutine will not issue an error message. This is one of the few places that the program does not catch the user errors immediately so users BEWARE.

GDEL*ETE -- This will delete a gate from the program for the user.
‘Gat to delete?’ asks for the full name of the gate that the user wishes the program to delete.

GEN*TEST -- This is a debugging tool for the program to generate some data to the defined histograms. It is not normally used by the users.
‘Enter X[,Y] value(s)?’ asks for the X and Y values to use. If only one value is given then it is assumed to be the value for both the X and Y values.

G*LIST -- This will type out a list of the first lines of any gates defined.

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

GP*RINT -- This will print all of the gate definitions out to the machine’s console.

GRE*NAME -- This will allow the user to replace a gate’s present name with a different name that is of the same or shorter length. See BRENAME for explanation of prompts.

GWR*ITE -- This will write all of the gate definitions presently in the program out to a file.
‘File name?’ asks for the file name that it is to the definitions to.