IC10: Difference between revisions
From Stationeers Wiki
More actions
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> | |||
== | ==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 06:06, 23 October 2018
=MIPS scripting language for IC10 housings / chips
// 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 seedsls 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 cropls 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