The T21 - Basic Execution Node comes with its own instruction set. <SRC> (source) and <DST> (Destination) instruction parameters may specify a port or internal register. Any use of a port will block until the corresponding node connected to that port completes the communication by reading or writing a value. Additionally, a <SRC> parameter may be a literal integer value between -999 and 999 (inclusive).
Comments[]
# COMMENT TEXT
All text including and after the comment symbol (#) is ignored.
Labels[]
<LABEL>:
Labels are used to identify targets for jump instructions. When used as a jump target, the instruction following the label will be executed next.
Breakpoints[]
Breakpoints are used to halt a program at a specific instruction index. To set a breakpoint, put an exclamation mark (!) at the front of a line. This will cause a program in "Run" mode (as opposed to "Step Mode") to halt on the current line without halting current execution. From here, the user can either resume the program with run or run it in step mode from the current instruction.
Instructions[]
Instruction parameters | Long Name | Syntax | Description |
---|---|---|---|
NOP | No Operation | NOP
|
NOP is a pseudo-instruction that has no effect on the node's internal state or communication ports. NOP is automatically converted to the instruction ADD NIL. |
MOV | Move | MOV <SRC>, <DST>
|
<SRC> is read and the resulting value is written to <DST>. |
SWP | Swap | SWPLAMA
|
The values of ACC and BAK are exchanged. |
SAV | Save | SAV
|
The value of ACC is written to BAK. |
ADD | Add | ADD <SRC>
|
The value of <SRC> is added to the value of ACC and the result is stored to ACC. |
SUB | Subtract | SUB <SRC>
|
The value of <SRC> is subtracted from the value of ACC and the result is stored to ACC. |
NEG | Negate | NEG
|
The value of ACC is arithmetically negated. A value of zero remains the same. |
JMP | Jump | JMP <LABEL>
|
Transfer execution unconditionally. The instruction after the label <LABEL> will be executed next. |
JEZ | Jump if Equals Zero | JEZ <LABEL>
|
Transfer execution conditionally. The instruction after the label <LABEL> will be executed next if the value of ACC is zero. |
JNZ | Jump if Not Zero | JNZ <LABEL>
|
Transfer execution conditionally. The instruction after the label <LABEL> will be executed next if the value of ACC is not zero. |
JGZ | Jump if Greater then Zero | JGZ <LABEL>
|
Transfer execution conditionally. The instruction after the label <LABEL> will be executed next if the value of ACC is positive (greater than zero). |
JLZ | Jump if Less than Zero | JLZ <LABEL>
|
Transfer execution conditionally. The instruction after the label <LABEL> will be executed next if the value of ACC is negative (less than zero). |
JRO | Jump Relative to Offset | JRO <SRC>
|
Transfer execution unconditionally. The instruction at the offset specified by <SRC> relative to the current instruction will be executed next. |
Notes[]
- BAK cannot be specified as a <SRC> or <DST> operand. The value of BAK is only accessible through special instructions SAV and SWP.
- <LABEL> parameters are arbitrary textual names used to specify jump targets within the program.