The following list enumerates all of Yazoo's bytecode operators. Each entry consists of: a signed-long bytecode ID, a name in brackets, and then the arguments for that operator separated by commas. Arguments in plain text are `fixed-width' -- that is, takes up a set number of long words. Unless otherwise indicated, a fixed-width argument is one long word in size and should be read as an signed long. Arguments in italics are themselves bytecode expressions, which can span arbitrary word-lengths.
0 [ null ] : marks the end of a code block
1 [ return ], return_variable : exits the function and returns the specified variable
2 [ register ], ID : returns the register variable with the specified ID
3 [ built-in function ], ID, args_variable : runs the built-in Yazoo function with the given ID and arguments, and returns the appropriate register (if any)
5 [ user function ], code_skip, function_variable, args_variable : runs the given user function with the specified arguments, and returns the return variable (if any). Runs the coding block after code_skipcode markers or semicolons -- i.e. the constructor if this is 0, the normal function if it is 1, etc.
6 [ args ] : returns the args variable for the current function
7 [ jump ], offset : jumps the program counter to the position of the offset word plus offset (a signed long) long words
8 [ jump-if-true ], offset, condition : jumps the program counter to the position of the offset word plus offset long words (offset is a signed long), if the conditional expression evaluates to true
9 [ jump-if-false ], offset, condition : moves the program counter to the position of the offset word plus offset long words (offset is a signed long), if condition is false
10 [ exit ] : throws error 47 which, unless caught by trap(), causes Yazoo to exit with no error
11 [ def-general ], flags, LH_var, RH_var : applies the define/equate command specified by the flags from the source RH_var to the target LH_var
12 [ forced_equate ], LH_var, RH_var : copies the raw data from the source RH_var into the target LH_var if their byte-sizes match
13 [ code number ], var, code number : causes an enclosing function call to execute the given code number of var
14 [ substitute code ], var, code : returns var but with the given code instead of its native code
15 [ append code ], f1, f2 : returns f1 but with the concatenated code f1 + f2
16 [ remove ], member : removes the specified member
17 [ search member ], ID : searches backwards from the current function for the member with the given ID (a signed long)
18 [ step to member ], starting_variable, ID : steps to the member with the given ID (signed long) of the given starting variable
19 [ step to index ], starting_variable, index : steps into the given index of the starting variable
20 [ step to indices ], starting_variable, low_index, high_index : steps into the given indices of the starting variable
21 [ step to all indices ], starting_variable : steps into all indices of the starting variable
22 [ resize ], variable, top_index : resizes the variable's member to have the given number of indices, and steps into these indices
23 [ insert indices below ], variable, new_low_index, new_high_index : adds the new range of indices to the member above the insertion point
24 [ insert indices above ], variable, new_low_index, new_high_index : adds the new range of indices to the member with old indices just below the insertion point
25 [ delete ], variable : deletes the part of variable that was stepped into
27 [ this ] : returns the function variable that is currently running
28 [ that ] : returns the variable on the left-hand side of the equate statement
29 [ nothing ] : returns no variable
30 [ if equal ], expr1, expr2 : returns true if the two expressions' data are equal; false otherwise
31 [ if not equal ], expr1, expr2 : returns false if the two expressions' data are equal and true otherwise
32 [ if greater-than ], num1, num2 : returns true if and only if num1 is greater than num2
33 [ if greater-than-or-equal ], num1, num2 : returns true if and only if num1 is greater than or equal to num2
34 [ if less-than ], num1, num2 : returns true if and only if num1 is less than num2
35 [ if less-than-or-equal ], num1, num2 : returns true if and only if num1 is less than or equal to num2
36 [ and ], cond1, cond2 : returns true if and only if both conditions are true (both are always evaluated)
37 [ or ], cond1, cond2 : returns true if and only if one or both of the conditions are true (both are always evaluated)
38 [ xor ], cond1, cond2 : returns true if and only if one, but not both, conditions are true
39 [ not ], cond1 : returns true if the condition is false and false if the condition is true
40 [ if same reference ], expr1, expr2 : returns true if the two members point to the same data; false otherwise
41 [ if different reference ], expr1, expr2 : returns false if the two members point to the same data and true otherwise
42 [ add ], num1, num2 : returns the sum of its numeric arguments
46 [ power ], num1, num2 : returns num1 raised to the power num2
47 [ modulo ], num1, num2 : returns the remainder of num1 divided by num2 after they have been truncated to integers
50 [ constant slong ], num : returns the given number, read as a signed long
51 [ constant double ], num : returns the given number, read as a double-precision floating point number
52 [ constant string ], characters_num, string_data : returns an inlined string having the given number of characters. The string_data field occupies one long word for every four characters.
53 [ code block ] : returns the inlined code beginning with the next bytecode sentence and ending with a null sentence
54 [ ubyte ] : signals an unsigned byte primitive type
55 [ sbyte ] : signals a signed byte primitive type
56 [ ushort ] : signals an unsigned short integer primitive type
57 [ sshort ] : signals a signed short integer primitive type
58 [ ulong ] : signals an unsigned long integer primitive type
59 [ slong ] : signals a signed long integer primitive type
60 [ single ] : signals a single-precision primitive type
61 [ double ] : signals a double-precision primitive type
62 [ block ], byte_length : signals a block type with the specified number of bytes
63 [ string ] : signals a string data type
65 [ code ] : delineates the boundary between two code blocks