Skip to main content
Untitled Document




The following abbreviations are used throughout this guide:


A bit within a byte, 0 <= bit <= 7


Comments begin with either "--" or ";" and continue through the end of the line.


A numeric constant.


An expression is a sequence of values and operations.Expressions are subdivided into:

cexpr -- constant expression. An expression that can be fully evaluated at compile time. For example 1 + 2.
expr -- any expression. An expression is anything that evaluates to a value, for example: b + c, x + 1, etc.
lexpr -- logical expression. A logical expression. This differs from an expression in that the result is 0 if the expression is zero, and 1 if the expression is anything other than 0.


Identifies a variable, constant procedure, function, label, etc. Must begin with a letter or '_' followed by any number of of letters (a-z), digits (0-9), or '_'. Note that identifiers beginning with '_' are reserved for the compiler.


A program is simply a sequence of statements. Unlike other languages, in JAL, if the execution runs out of statements, the processor will be put to sleep.


Scope is the `visibility' of an identifier. Each statement_block creates a new scope. Anything declared within this scope will not be visible once the scope ends.
A variable can be redefined in a block as follows:
          VAR BYTE x, z
          IF (x) THEN
             VAR WORD x, y ; all references to x will refer
                        ; to this definition
          END IF
          VAR WORD x ; this is illegal because x already exists


A single assignment, definition, control (BLOCK, CASE, IF) or looping (FOR, FOREVER, REPEAT, WHILE).


A sequence of statements. Variables, constants, procedures, and functions defined in a statement_block will not be visible outside of the statement_block.


The JAL compiler sees only a stream of tokens. An entire program can be written without any line breaks or extra spaces, except of course for comments which are terminated by and end of line.

var – variable