Compatible with:

DOS Maximite CMM MM150 MM170 MM+ MMX Picromite ArmiteL4
Armite F4 ArmiteH7 CMM2

The following operators are listed in order of precedence. Operators that are
on the same level (for example +

and -) are processed with a left to right precedence as they occur on the
program line.

Numeric Operators (Float or Integer)

NOT INV | NOT will invert the logical value on the right. INV will perform a bitwise inversion of the value on the right. Both of these have the highest precedence so if the value being operated on is an expression it should be surrounded by brackets. For example, IF NOT (A = 3 OR A = 8) THEN … |

^ | Exponentiation (eg, b^n means b raised to the power n) |

* / \ MOD | Multiplication, division, integer division and modulus (remainder) |

+ - | Addition and subtraction |

x << y x >> y | These operate in a special way. << means that the
value returned will be the value of x shifted by y bits to the left while
>> means the same only right shifted. They are integer functions and any bits shifted off are discarded. For a right shift any bits introduced are set to the value of the top bit (bit 63). For a left shift any bits introduced are set to zero. |

<> < > <= =< >= => | Inequality, less than, greater than, less than or equal to, less than or equal to (alternative version), greater than or equal to, greater than or equal to (alternative version) |

= | Equality (also used in assignment to a variable, eg implied LET). |

AND OR XOR | Conjunction, disjunction, exclusive or. These are bitwise operators and can be used on 64-bit unsigned integers. |

The operators AND, OR and XOR are integer bitwise operators. For example
PRINT (3 AND 6) will output 2.

The other logical operations result in the integer 0 (zero) for false and 1 for
true.

For example the statement PRINT 4 >= 5 will print the number zero on the
output and the expression A = 3 > 2 will store +1 in A.

String Operators

+ | Join two strings |

<> < > <= =< >= => | Inequality, less than, greater than, less than or equal to, less than or equal to (alternative version), greater than or equal to, greater than or equal to (alternative version). |

= | Equality |

String comparisons respect the case of the characters (ie "A" is greater than "a").

The shift operators should only be used with Integers. Floats will give unreliable results.

DIM INTEGER x , y

x = 1234

y = x << 8

PRINT "x= ";BIN$(x,64);" ";x

PRINT "y= ";BIN$(y,64);" ";y

PRINT

x = &h7FFFFFFFFFFF7F

y = x << 8

PRINT "x= ";BIN$(x,64);" ";x

PRINT "y= ";BIN$(y,64);" ";y

y = x << 9

PRINT "y= ";BIN$(y,64);" ";y

Output:

x= 0000000000000000000000000000000000000000000000000000010011010010 1234

y= 0000000000000000000000000000000000000000000001001101001000000000 315904

x= 0000000001111111111111111111111111111111111111111111111101111111
36028797018963839

y= 0111111111111111111111111111111111111111111111110111111100000000
9223372036854742784

y= 1111111111111111111111111111111111111111111111101111111000000000 -66048

Last edited: 29 September, 2020