Actions

Difference between revisions of "MIPS"

From Unofficial Stationeers Wiki

(Added functions, slot variables and examples section headers, added slot variables, and provided examples for various slot variables.)
(Created collapsible sections, added device variables, various definitions and examples. Minor formatting tweaks. This is my first wiki post, so hopefully things look OK for the moment.)
Line 2: Line 2:
  
 
{|
 
{|
|+Functions
+
|+Functions  
 
<div class="mw-collapsible mw-collapsed">
 
<div class="mw-collapsible mw-collapsed">
 
*[[#abs|abs]]
 
*[[#abs|abs]]
Line 47: Line 47:
 
*[[##|#]]
 
*[[##|#]]
 
</div>
 
</div>
 +
 +
 +
|+Device Variables
 +
<div  class="mw-collapsible mw-collapsed">
 +
*[[MIPS:Device Variables#Activate|Activate]]
 +
*[[#AirRelease|AirRelease]]
 +
*[[#Charge|Charge]]
 +
*[[#CLearMemory|CLearMemory]]
 +
*[[#Color|Color]]
 +
*[[#CompletionRatio|CompletionRatio]]
 +
*[[#ElevatorLevel|ElevatorLevel]]
 +
*[[#ElevatorSpeed|ElevatorSpeed]]
 +
*[[#Error|Error]]
 +
*[[#ExportCount|ExportCount]]
 +
*[[#Filtration|Filtration]]
 +
*[[#Harvest|Harvest]]
 +
*[[#Horizontal|Horizontal]]
 +
*[[#HorizontalRatio|HorizontalRatio]]
 +
*[[#Idle|Idle]]
 +
*[[#ImportCount|ImportCount]]
 +
*[[#Lock|Lock]]
 +
*[[#Maximum|Maximum]]
 +
*[[#Mode|Mode]]
 +
*[[#On|On]]
 +
*[[#Open|Open]]
 +
*[[#Output|Output]]
 +
*[[#Plant|Plant]]
 +
*[[#PositionX|PositionX]]
 +
*[[#PositionY|PositionY]]
 +
*[[#PositionZ|PositionZ]]
 +
*[[#Power|Power]]
 +
*[[#PowerActual|PowerActual]]
 +
*[[#PowerPotential|PowerPotential]]
 +
*[[#PowerRequired|PowerRequired]]
 +
*[[#Pressure|Pressure]]
 +
*[[#PressureExternal|PressureExternal]]
 +
*[[#PressureInteral|PressureInteral]]
 +
*[[#PressureSetting|PressureSetting]]
 +
*[[#Quantity|Quantity]]
 +
*[[#Ratio|Ratio]]
 +
*[[#RatioCarbonDioxide|RatioCarbonDioxide]]
 +
*[[#RatioNitrogen|RatioNitrogen]]
 +
*[[#RatioOxygen|RatioOxygen]]
 +
*[[#RatioPollutant|RatioPollutant]]
 +
*[[#RatioVolatiles|RatioVolatiles]]
 +
*[[#RatioWater|RatioWater]]
 +
*[[#Reagents|Reagents]]
 +
*[[#RecipeHash|RecipeHash]]
 +
*[[#RequestHash|RequestHash]]
 +
*[[#RequiredPower|RequiredPower]]
 +
*[[#Setting|Setting]]
 +
*[[#SolarAngle|SolarAngle]]
 +
*[[#Temperature|Temperature]]
 +
*[[#TemperatureSettings|TemperatureSettings]]
 +
*[[#TotalMoles|TotalMoles]]
 +
*[[#VelocityMagnitude|VelocityMagnitude]]
 +
*[[#VelocityRelativeX|VelocityRelativeX]]
 +
*[[#VelocityRelativeY|VelocityRelativeY]]
 +
*[[#VelocityRelativeZ|VelocityRelativeZ]]
 +
*[[#Vertical|Vertical]]
 +
*[[#VerticalRatio|VerticalRatio]]
 +
*[[#Volume|Volume]]
 +
 +
 +
 +
</div>
 +
 
|+Slot Variables  
 
|+Slot Variables  
 
<div  class="mw-collapsible mw-collapsed">
 
<div  class="mw-collapsible mw-collapsed">
Line 66: Line 133:
 
*[[#Mature|Mature]]
 
*[[#Mature|Mature]]
 
</div>
 
</div>
 +
 
|}
 
|}
  
Line 72: Line 140:
 
// space between arguments isn't important, but new lines start a new command.
 
// space between arguments isn't important, but new lines start a new command.
 
</pre>
 
</pre>
 +
 
<br>
 
<br>
 +
  
 
==Functions==
 
==Functions==
 
----
 
----
 
+
<div  class="mw-collapsible mw-collapsed">
  
 
<div id="alias"></div>
 
<div id="alias"></div>
Line 209: Line 279:
 
; #
 
; #
 
:    // The following text will be ignored during compiling; use this to create comments.
 
:    // The following text will be ignored during compiling; use this to create comments.
 +
 +
</div>
 +
 +
 +
 +
==Device Variables==
 +
-----
 +
<div class="mw-collapsible mw-collapsed">
 +
 +
<div id="Activate"></div>
 +
;Activate
 +
:1 if device is activated (usually means running), otherwise 0
 +
:<code>l r0 d0 Activate # sets r0 to 1 if on or 0 of off</code>
 +
 +
<div id="AirRelease"></div>
 +
;AirRelease
 +
<div id="Charge"></div>
 +
;Charge
 +
:    The current charge the device has.
 +
<div id="CLearMemory"></div>
 +
;CLearMemory
 +
:    When set to 1, clears the counter memory (e.g. ExportCount).  Will set itself back to 0 when triggered.
 +
<div id="Color"></div>
 +
;Color
 +
<div id="CompletionRatio"></div>
 +
;CompletionRatio
 +
<div id="ElevatorLevel"></div>
 +
;ElevatorLevel
 +
<div id="ElevatorSpeed"></div>
 +
;ElevatorSpeed
 +
<div id="Error"></div>
 +
;Error
 +
: 1 if device is in error state, otherwise 0
 +
<div id="ExportCount"></div>
 +
;ExportCount
 +
:    How many items exporfted since last ClearMemory.
 +
<div id="Filtration"></div>
 +
;Filtration
 +
: The current state of the filtration system.  For example filtration = 1 for a Hardsuit when filtration is On.
 +
<div id="Harvest"></div>
 +
;Harvest
 +
: Performs the harvesting action for any plant based machinery.
 +
:  <code>s d0 Harvest 1 # Performs 1 harvest action on device d0</code>
 +
<div id="Horizontal"></div>
 +
;Horizontal
 +
<div id="HorizontalRatio"></div>
 +
;HorizontalRatio
 +
<div id="Idle"></div>
 +
;Idle
 +
<div id="ImportCount"></div>
 +
;ImportCount
 +
<div id="Lock"></div>
 +
;Lock
 +
<div id="Maximum"></div>
 +
;Maximum
 +
<div id="Mode"></div>
 +
;Mode
 +
<div id="On"></div>
 +
;On
 +
<div id="Open"></div>
 +
;Open
 +
<div id="Output"></div>
 +
;Output
 +
<div id="Plant"></div>
 +
;Plant
 +
:    Performs the planting operation for any plant based machinery.
 +
:  <code>s d0 Plant 1 # Plants one crop in device d0</code>
 +
<div id="PositionX"></div>
 +
;PositionX
 +
<div id="PositionY"></div>
 +
;PositionY
 +
<div id="PositionZ"></div>
 +
;PositionZ
 +
<div id="Power"></div>
 +
;Power
 +
<div id="PowerActual"></div>
 +
;PowerActual
 +
<div id="PowerPotential"></div>
 +
;PowerPotential
 +
<div id="PowerRequired"></div>
 +
;PowerRequired
 +
<div id="Pressure"></div>
 +
;Pressure
 +
<div id="PressureExternal"></div>
 +
;PressureExternal
 +
<div id="PressureInteral"></div>
 +
;PressureInteral
 +
<div id="PressureSetting"></div>
 +
;PressureSetting
 +
<div id="Quantity"></div>
 +
;Quantity
 +
: Total quantity in the device.
 +
<div id="Ratio"></div>
 +
;Ratio
 +
: Context specific value depending on device, 0 to 1 based ratio.
 +
<div id="RatioCarbonDioxide"></div>
 +
;RatioCarbonDioxide
 +
<div id="RatioNitrogen"></div>
 +
;RatioNitrogen
 +
: The ratio of nitrogen in device atmosphere.
 +
<div id="RatioOxygen"></div>
 +
;RatioOxygen
 +
: The ratio of oxygen in device atmosphere.
 +
<div id="RatioPollutant"></div>
 +
;RatioPollutant
 +
: The ratio of pollutant in device atmosphere.
 +
<div id="RatioVolatiles"></div>
 +
;RatioVolatiles
 +
: The ratio of volatiles in device atmosphere.
 +
<div id="RatioWater"></div>
 +
;RatioWater
 +
: The ratio of water in device atmosphere.
 +
<div id="Reagents"></div>
 +
;Reagents
 +
<div id="RecipeHash"></div>
 +
;RecipeHash
 +
<div id="RequestHash"></div>
 +
;RequestHash
 +
<div id="RequiredPower"></div>
 +
;RequiredPower
 +
<div id="Setting"></div>
 +
;Setting
 +
<div id="SolarAngle"></div>
 +
;SolarAngle
 +
:    Solar angle of the device.
 +
:  <code>l r0 d0 SolarAngle # Sets r0 to the solar angle of d0.</code>
 +
<div id="Temperature"></div>
 +
;Temperature
 +
<div id="TemperatureSettings"></div>
 +
;TemperatureSettings
 +
<div id="TotalMoles"></div>
 +
;TotalMoles
 +
<div id="VelocityMagnitude"></div>
 +
;VelocityMagnitude
 +
<div id="VelocityRelativeX"></div>
 +
;VelocityRelativeX
 +
<div id="VelocityRelativeY"></div>
 +
;VelocityRelativeY
 +
<div id="VelocityRelativeZ"></div>
 +
;VelocityRelativeZ
 +
<div id="Vertical"></div>
 +
;Vertical
 +
: Vertical setting of the device.
 +
<div id="VerticalRatio"></div>
 +
;VerticalRatio
 +
: Ratio of vertical setting for device.
 +
<div id="Volume"></div>
 +
;Volume
 +
: Returns the device atmosphere volume
 +
 +
</div>
 +
 +
 +
  
 
==Slot Variables==
 
==Slot Variables==
 
-----
 
-----
 +
<div  class="mw-collapsible mw-collapsed">
 +
  
 
<div id="Occupied"></div>
 
<div id="Occupied"></div>
Line 252: Line 478:
 
:<code>ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop</code>
 
:<code>ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop</code>
  
 +
 +
</div>
  
  
  
==Example==
+
==Examples==
 
-----
 
-----
 +
<div  class="mw-collapsible mw-collapsed">
 +
  
 
This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).
 
This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).
Line 302: Line 532:
 
ls r3 db 0 OccupantHash
 
ls r3 db 0 OccupantHash
 
</pre>
 
</pre>
 +
</div>
  
 +
==Links==
 +
-----
 +
<div  class="mw-collapsible mw-collapsed">
 
* [https://hastebin.com/uwuhidozun.md]
 
* [https://hastebin.com/uwuhidozun.md]
 
* [http://www.easy68k.com/]
 
* [http://www.easy68k.com/]
 +
</div>

Revision as of 01:06, 23 October 2018

=MIPS scripting language for IC10 housings / chips

Functions


Device Variables

Slot Variables

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



Functions


alias
alias str r? d? // labels register or device reference with name. When alias is applied to a device, it will effect what shows on the screws in the IC base. (housing)

alias vTemperature r0
alias dAutoHydro1 d0

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

move r0 42 # Store 42 in register 0

add
d s t // calculates s + t and stores the result in d

add r0 r1 1 # add 1 to r1 and store the result as r0
add r0 r0 1 # increment r0 by one

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
bdseal
d? a(r?|num) // Jump execution to line a and store current line number if device d? is set.

bdseal d0 32 #Store line number and jump to line 32 if d0 is assigned.
bdseal dThisVictim HarvestCrop #Store line in ra and jump to sub HarvestCrop if device dThisVictim is assigned.

yield
// ceases code execution for this power tick
#
// The following text will be ignored during compiling; use this to create comments.


Device Variables


Activate
1 if device is activated (usually means running), otherwise 0
l r0 d0 Activate # sets r0 to 1 if on or 0 of off
AirRelease
Charge
The current charge the device has.
CLearMemory
When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when triggered.
Color
CompletionRatio
ElevatorLevel
ElevatorSpeed
Error
1 if device is in error state, otherwise 0
ExportCount
How many items exporfted since last ClearMemory.
Filtration
The current state of the filtration system. For example filtration = 1 for a Hardsuit when filtration is On.
Harvest
Performs the harvesting action for any plant based machinery.
s d0 Harvest 1 # Performs 1 harvest action on device d0
Horizontal
HorizontalRatio
Idle
ImportCount
Lock
Maximum
Mode
On
Open
Output
Plant
Performs the planting operation for any plant based machinery.
s d0 Plant 1 # Plants one crop in device d0
PositionX
PositionY
PositionZ
Power
PowerActual
PowerPotential
PowerRequired
Pressure
PressureExternal
PressureInteral
PressureSetting
Quantity
Total quantity in the device.
Ratio
Context specific value depending on device, 0 to 1 based ratio.
RatioCarbonDioxide
RatioNitrogen
The ratio of nitrogen in device atmosphere.
RatioOxygen
The ratio of oxygen in device atmosphere.
RatioPollutant
The ratio of pollutant in device atmosphere.
RatioVolatiles
The ratio of volatiles in device atmosphere.
RatioWater
The ratio of water in device atmosphere.
Reagents
RecipeHash
RequestHash
RequiredPower
Setting
SolarAngle
Solar angle of the device.
l r0 d0 SolarAngle # Sets r0 to the solar angle of d0.
Temperature
TemperatureSettings
TotalMoles
VelocityMagnitude
VelocityRelativeX
VelocityRelativeY
VelocityRelativeZ
Vertical
Vertical setting of the device.
VerticalRatio
Ratio of vertical setting for device.
Volume
Returns the device atmosphere volume



Slot Variables



Occupied
ls r0 d0 2 Occupied #Stores 1 in r0 if d0 has more seeds
ls vOccupied dThisVictim 2 Occupied #stores 1 in vOccupied if dThisVictim has more seeds
OccupantHash
Quantity
Damage
Efficiency
Health
Growth
ls r0 d0 0 Growth # Store the numerical growth stage of d0 in r0
Pressure
Temperature
Charge
ChargeRatio
Class
PressureWaste
PressureAir
MaxQuantity
Mature
ls r0 d0 0 Mature # Store 1 in r0 if d0 has a mature crop
ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop



Examples



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	

Example:

so you will do l r0 d0 SolarAngle
Sorry had last args swapped
That would read in the value
while,
s d1 Vertical r0
Would write the contents of r0 into the devices 1's Vertical property
additionally you can make some aliases
alias SolarSensor d0
l r0 SolarSensor SolarAngle

Another example:

Now the IC is inserted into the housing. The screws D0-D5 can be adjusted directly to the equipment (sensor, console, solar panel, etc.). The ports 'o' and 'i0-i2' have been removed. Instead, commands that directly read and write hardware parameters are added.
l <register> <data_channel> <parameter>
 reads the value of the parameter
s <data_channel> <parameter> <register_or_value>
 writes the value of the parameter
ls <register> <data_channel> <slot_number> <parameter> 
 reads the parameter value from the slot
For example, 
l r0 d0 Horizontal
 
s d5 Activate 1
 
ls r3 db 0 OccupantHash

Links