Difference between revisions of "IC10"
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> | ||
− | == | + | ==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 00: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 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