TIS-100 Wiki
TIS-100 Wiki
Advertisement

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.
Advertisement