Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

IC10

From Stationeers Wiki
Revision as of 04:33, 14 September 2018 by Onebit (talk | contribs)

Keywords:

l
s
ls
alias
move
add
sub
slt
and
or
xor
nor
mul
div
mod
j
bltz
bgez
blez
bgtz
beq
bne
jr
brltz
brgez
brlez
brgtz
breq
brne
sqrt
round
trunc
ceil
floor
max
min
abs
log
exp
rand
yield
// Text after a // will be ignored to the end of the line. The amount of white
// space between arguments isn't important, but new lines start a new command.

move    d s     // stores the value of s in d

add     d s t   // calculates s + t and stores the result in d
sub     d s t   // calculates s - t and stores the result in d
mul     d s t   // calculates s * t and stores the result in d
div     d s t   // calculates s / t and stores the result in d
mod     d s t   // calculates s mod t and stores the result in d. Note this
                // doesn't behave like the % operator - the result will be
                // positive even if the either of the operands are negative

slt     d s t   // stores 1 in d if s < t, 0 otherwise

sqrt    d s     // calculates sqrt(s) and stores the result in d
round   d s     // finds the rounded value of s and stores the result in d
trunc   d s     // finds the truncated value of s and stores the result in d
ceil    d s     // calculates the ceiling of s and stores the result in d
floor   d s     // calculates the floor of s and stores the result in d

max     d s t   // calculates the maximum of s and t and stores the result in d
min     d s t   // calculates the minimum of s and t and stores the result in d
abs     d s     // calculates the absolute value of s and stores the result in d
log     d s     // calculates the natural logarithm of s and stores the result
                // in d
exp     d s     // calculates the exponential of s and stores the result in d
rand    d       // selects a random number uniformly at random between 0 and 1
                // inclusive and stores the result in d

// boolean arithmetic uses the C convention that 0 is false and any non-zero
// value is true.
and     d s t   // stores 1 in d if both s and t have non-zero values,
                // 0 otherwise
or      d s t   // stores 1 in d if either s or t have non-zero values,
                // 0 otherwise
xor     d s t   // stores 1 in d if exactly one of s and t are non-zero,
                // 0 otherwise
nor     d s t   // stores 1 in d if both s and t equal zero, 0 otherwise


// Lines are numbered starting at zero
j             a // jumps to line a.
bltz      s   a // jumps to line a if s <  0
blez      s   a // jumps to line a if s <= 0
bgez      s   a // jumps to line a if s >= 0
bgtz      s   a // jumps to line a if s >  0
beq       s t a // jumps to line a if s == t
bne       s t a // jumps to line a if s != t

yield           // ceases code execution for this power tick

This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).

move r0 0		// Line 0: move the value 0 to register0
sub r1 r0 3		// Line 1: subtract 3 from the value in r0 and write it to r1
bltz r1 4		// Line 2: jump to line 4 if r1 < 0 (skip the next line)
move r0 0		// Line 3: move the value 0 to register0 
slt o r0 1		// Line 4: if r0 < 1 write 1 to the output, otherwise 0.
add r0 r0 1		// Line 5: increment r0 by 1
yield			// Line 6: wait until next power tick (0.5s)
j 1			// Line 7: jump back to line 1