Difference between revisions of "IC10"
From Unofficial Stationeers Wiki
(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.) |
(removed collapsible sections as that broke internal links, moved index to the end so it wouldn't precede table of contents, and added an 'index' section so it is easily reached from the table of contents.) |
||
Line 1: | Line 1: | ||
=MIPS scripting language for IC10 housings / chips | =MIPS scripting language for IC10 housings / chips | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<pre> | <pre> | ||
Line 146: | Line 11: | ||
==Functions== | ==Functions== | ||
---- | ---- | ||
− | |||
<div id="alias"></div> | <div id="alias"></div> | ||
Line 280: | Line 144: | ||
: // 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. | ||
− | |||
Line 286: | Line 149: | ||
==Device Variables== | ==Device Variables== | ||
----- | ----- | ||
− | |||
<div id="Activate"></div> | <div id="Activate"></div> | ||
Line 429: | Line 291: | ||
: Returns the device atmosphere volume | : Returns the device atmosphere volume | ||
− | |||
Line 436: | Line 297: | ||
==Slot Variables== | ==Slot Variables== | ||
----- | ----- | ||
− | |||
Line 479: | Line 339: | ||
− | |||
Line 485: | Line 344: | ||
==Examples== | ==Examples== | ||
----- | ----- | ||
− | |||
Line 532: | Line 390: | ||
ls r3 db 0 OccupantHash | ls r3 db 0 OccupantHash | ||
</pre> | </pre> | ||
− | |||
==Links== | ==Links== | ||
Line 540: | Line 397: | ||
* [http://www.easy68k.com/] | * [http://www.easy68k.com/] | ||
</div> | </div> | ||
+ | |||
+ | |||
+ | ==Index== | ||
+ | |||
+ | |||
+ | {| | ||
+ | |+Functions | ||
+ | <div class="mw-collapsible mw-collapsed"> | ||
+ | *[[#abs|abs]] | ||
+ | *[[#add|add]] | ||
+ | *[[#alias|alias]] | ||
+ | *[[#and|and]] | ||
+ | *[[#beq|beq]] | ||
+ | *[[#bgez|bgez]] | ||
+ | *[[#bgtz|bgtz]] | ||
+ | *[[#blez|blez]] | ||
+ | *[[#bltz|bltz]] | ||
+ | *[[#bne|bne]] | ||
+ | *[[#breq|breq]] | ||
+ | *[[#brgez|brgez]] | ||
+ | *[[#brgtz|brgtz]] | ||
+ | *[[#brlez|brlez]] | ||
+ | *[[#brltz|brltz]] | ||
+ | *[[#brne|brne]] | ||
+ | *[[#ceil|cell]] | ||
+ | *[[#div|div]] | ||
+ | *[[#exp|exp]] | ||
+ | *[[#floor|floor]] | ||
+ | *[[#j|j]] | ||
+ | *[[#jr|jr]] | ||
+ | *[[#l|l]] | ||
+ | *[[#log|log]] | ||
+ | *[[#ls|ls]] | ||
+ | *[[#max|max]] | ||
+ | *[[#min|min]] | ||
+ | *[[#mod|mod]] | ||
+ | *[[#move|move]] | ||
+ | *[[#mul|mul]] | ||
+ | *[[#nor|nor]] | ||
+ | *[[#or|or]] | ||
+ | *[[#rand|rand]] | ||
+ | *[[#round|round]] | ||
+ | *[[#s|s]] | ||
+ | *[[#slt|slt]] | ||
+ | *[[#sqrt|sqrt]] | ||
+ | *[[#sub|sub]] | ||
+ | *[[#trunc|trunc]] | ||
+ | *[[#xor|xor]]xor | ||
+ | *[[#yield|yield]] | ||
+ | *[[##|#]] | ||
+ | </div> | ||
+ | |||
+ | |||
+ | |+Device Variables | ||
+ | <div class="mw-collapsible mw-collapsed"> | ||
+ | *[[#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 | ||
+ | <div class="mw-collapsible mw-collapsed"> | ||
+ | *[[#Occupied|Occupied]] | ||
+ | *[[#OccupantHash|OccupantHash]] | ||
+ | *[[#Quantity|Quantity]] | ||
+ | *[[#Damage|Damage]] | ||
+ | *[[#Efficiency|Efficiency]] | ||
+ | *[[#Health|Health]] | ||
+ | *[[#Growth|Growth]] | ||
+ | *[[#Pressure|Pressure]] | ||
+ | *[[#Temperature|Temperature]] | ||
+ | *[[#Charge|Charge]] | ||
+ | *[[#ChargeRatio|ChargeRatio]] | ||
+ | *[[#Class|Class]] | ||
+ | *[[#PressureWaste|PressureWaste]] | ||
+ | *[[#PressureAir|PressureAir]] | ||
+ | *[[#MaxQuantity|MaxQuantity]] | ||
+ | *[[#Mature|Mature]] | ||
+ | </div> | ||
+ | |||
+ | |} |
Revision as of 00:13, 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
Links