T21 - Basic Execution Node Instruction Set

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 TEXTAll 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.
Category:
==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.