<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://stationeers-wiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Duke</id>
	<title>Stationeers Community Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://stationeers-wiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Duke"/>
	<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/Special:Contributions/Duke"/>
	<updated>2026-04-05T16:53:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Worlds&amp;diff=22466</id>
		<title>Worlds</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Worlds&amp;diff=22466"/>
		<updated>2025-02-23T12:17:34Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Venus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Worlds]]&lt;br /&gt;
= [[Mars]] =&lt;br /&gt;
&lt;br /&gt;
The thin martian atmosphere contains useful gasses for growing plants and base pressurization. Mars suffers from [[storm]]s that damage [[solar cells]] and blow away loose items. The temperature is Earthlike during the day.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;A desolate dusty red ball, Mars features more varied terrain that can reach into the sky, and a chilly atmosphere that&#039;s no good for breathing, but maybe it can be used for something ...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Gravity || 38% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || -53 to 19°C (220K to 292K)&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || 2-3 kPa&lt;br /&gt;
|-&lt;br /&gt;
| Solar Energy || 495-720W/m²&lt;br /&gt;
|-&lt;br /&gt;
| Solar Angle || 78°&lt;br /&gt;
|-&lt;br /&gt;
| [[Storm|Storms]] || Dust Storms&lt;br /&gt;
|-&lt;br /&gt;
| Orbital Period|| 2,3 Weeks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atmosphere&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element !! Concentration || mol&lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon Dioxide]] || 95% || 9&lt;br /&gt;
|-&lt;br /&gt;
| [[Nitrogen]] || 3% || 0.3&lt;br /&gt;
|-&lt;br /&gt;
| [[Oxygen]] || 1% || 0.1&lt;br /&gt;
|-&lt;br /&gt;
| [[Pollutant]] || 1% || 0.06&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= [[Moon]] =&lt;br /&gt;
&lt;br /&gt;
The Moon is a vacuum, so the challenge is to capture gases. Fortunately the Sun is at a 0° so it&#039;s easy to capture power with a simple solar setup.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;While the presence of coal isn&#039;t typical of Earth&#039;s Moon, the relatively flat terrain full of various sizable craters and lack of atmosphere may be more familiar in this grey landscape. A great location for the budding Stationeer to begin their journey, with fewer of the hazards and complexities offered on more exotic worlds&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Gravity || 17% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || None&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || None&lt;br /&gt;
|-&lt;br /&gt;
| Solar Energy || 1315-1407 W/m²&lt;br /&gt;
|-&lt;br /&gt;
| Solar Angle || 0°&lt;br /&gt;
|-&lt;br /&gt;
| [[Storm|Storms]] || No&lt;br /&gt;
|-&lt;br /&gt;
| Orbital Period || 20,3 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atmosphere&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Vacuum&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= [[Europa]] =&lt;br /&gt;
&lt;br /&gt;
Europa is a freezing hellscape. The extreme temperatures drain batteries and it takes a lot of power to keep warm. The weak Sun makes it hard to use solar. It&#039;s recommended to start with coal power.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;﻿Melting some of the ice on this cold world has finally given it an atmosphere, but its extremely frigid environment presents a serious challenge for the stationeers.The extreme cold will cause batteries to rapidly lose power, so getting a steady power source and warm location are your priorities.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Gravity || 13% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || -149 to -140 °C (124K to 133K)&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || 44-47 kPa&lt;br /&gt;
|-&lt;br /&gt;
| Solar Energy || 46-56 W/m²&lt;br /&gt;
|-&lt;br /&gt;
| Solar Angle || 54°&lt;br /&gt;
|-&lt;br /&gt;
| [[Storm|Storms]] || Snow Storms&lt;br /&gt;
|-&lt;br /&gt;
| Orbital Period || 4 hours&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Atmosphere ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element !! Concentration !! mol&lt;br /&gt;
|-&lt;br /&gt;
| [[Oxygen]] || 100% || 340 &amp;lt;strike&amp;gt;640&amp;lt;/strike&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Europa]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Mimas =&lt;br /&gt;
Mimas has no atmosphere requiring collection of gases elsewhere. The extreme solar angle and distance from the Sun will make solar far less reliable. The low gravity will make you fly in the air some distance before coming back down again. The breathtaking view of Saturn provides a spectacular place to build a base.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;﻿A barren rock nestled under the wing of Saturn&#039;s spectacular rings. Mimas tiny stature is reflected in its extremely low gravity, and the Mimantean surface is saturated with impact craters from wayward ring occupants. It&#039;s distance from the sun provides little power from solar devices. Be very careful when walking or jumping, as you can travel a long way and gain a lot of speed due to the extremely low gravity.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
| Gravity || 10% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || None&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || None&lt;br /&gt;
|-&lt;br /&gt;
| Solar Energy || 13-17 W/m²&lt;br /&gt;
|-&lt;br /&gt;
| Solar Angle || 30°&lt;br /&gt;
|-&lt;br /&gt;
| [[Storm|Storms]] || No&lt;br /&gt;
|-&lt;br /&gt;
| Orbital Period || 10 hours&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Atmosphere&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Vacuum&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Vulcan =&lt;br /&gt;
&lt;br /&gt;
For those looking for a harder challenge, Vulcan should fit the bill. The atmosphere is mostly volatiles, and it&#039;s very hot. Be very careful with oxygen, because it can and will combust if it is released in the atmosphere. For that reason, the planet lacks ice, and one must trade instead of mine to obtain gases such as oxygen and nitrogen.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;﻿A world torn apart due to massive tidal forces from the supermassive black hole it orbits. Vulcan offers little hope for any organism that ends up here, but it&#039;s fractured surface and rich mineral deposits make it a risky but profitable venture for enterprising traders.Watch out for the deep crevasses that lead to deadly magma flows beneath the surface!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
| Gravity || 56% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || 127 to 1452 °C (400K to 1725.15)&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || 24-56 kPa&lt;br /&gt;
|-&lt;br /&gt;
| Solar Energy || 987-3404 W/m²&lt;br /&gt;
|-&lt;br /&gt;
| Solar Angle || 41°&lt;br /&gt;
|-&lt;br /&gt;
| [[Storm|Storms]] || Ash Storms&lt;br /&gt;
|-&lt;br /&gt;
| Orbital Period || 2,4 days&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atmosphere&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element !! Concentration !! mol&lt;br /&gt;
|-&lt;br /&gt;
| [[Volatiles]] || 53% || 30&lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon Dioxide]] || 21% || 12&lt;br /&gt;
|-&lt;br /&gt;
| [[Pollutant]] || 26% || 15&lt;br /&gt;
|}&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Vulcan planet]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Loulan =&lt;br /&gt;
&lt;br /&gt;
DISCONTINUED&lt;br /&gt;
(To play on Loulan click custom world underneath the description of the planet selection, and select the Loulan preset. (This is no longer possible due to the custom world option being removed.))&lt;br /&gt;
&lt;br /&gt;
Loulan has a breathable atmosphere and the temperature range is not hazardous.  It has ruined structures scattered across the terrain which can be scavenged for building supplies.  The player starts with a [[Hardsuit_Backpack|Hardsuit Backpack]], and a [[Headlamp]], but without a helmet or suit and this is not a serious handicap.  A Jetpack is not part of the starting equipment.  Battery charging is not a matter of life and death, but without batteries the headlamp will not light your way at night.  &lt;br /&gt;
&lt;br /&gt;
The greatest challenge is food since seeds are not part of the starting equipment.  The player must either scavenge some seeds from ruins, trade, or use an [[Organics Printer]] to create them.  While the gas mix is compatible with farming, the low night temperature is not, so a greenhouse must be operated at the right temperature. The easiest way is to open up the airlock during the day with warm 20 degrees air, and close it at night.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Gravity || 38% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || -9 to 20C (264K to 293K)&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || 162 kPa&lt;br /&gt;
|-&lt;br /&gt;
| Solar Energy || 91% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Solar Angle || 8°&lt;br /&gt;
|-&lt;br /&gt;
| [[Storm|Storms]] || Yes (Unknown Type)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atmosphere&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element !! Concentration !! mol&lt;br /&gt;
|-&lt;br /&gt;
| [[Oxygen]] || 62% || 350&lt;br /&gt;
|-&lt;br /&gt;
| [[Nitrogen]] || 27% || 150&lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon Dioxide]] || 11% || 60&lt;br /&gt;
|-&lt;br /&gt;
| [[Pollutant]] || 0% || 0.05&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Space =&lt;br /&gt;
&lt;br /&gt;
Very similar to the moon, instead of a single body there are scattered  Asteroids the challenge in addition to collecting gases is maintaining jetpack fuel needed to move between Asteroids&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Gravity || 0% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || None&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || None&lt;br /&gt;
|-&lt;br /&gt;
| Solar Energy || 100% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Solar Angle || 0°&lt;br /&gt;
|-&lt;br /&gt;
| [[Storm|Storms]] || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atmosphere&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Vacuum&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Asteroid Belt =&lt;br /&gt;
&lt;br /&gt;
&amp;quot;﻿While there&#039;s no gravity or atmosphere, at least there&#039;s a lot of space to build! You&#039;ll find yourself among several asteroids that may contain various ores and ices you can use to survive out here.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Gravity || 0% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || None&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || None&lt;br /&gt;
|-&lt;br /&gt;
| Solar Energy || 152-342 W/m²&lt;br /&gt;
|-&lt;br /&gt;
| Solar Angle || NaN (Possibly 0)° &lt;br /&gt;
|-&lt;br /&gt;
| [[Storm|Storms]] || No&lt;br /&gt;
|-&lt;br /&gt;
| Orbital Period || 2,3 months&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atmosphere&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Vacuum&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= [[Venus]] =&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Unvarying extreme temperatures and ultra-high pressures make Venus no place for the faint-hearted.  Only the most accomplished Stationeers will survive on this hellscape a barren rock. Dig deep, or go home.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The starting kit doesn&#039;t contain seeds, but it contains the equipment required for trading. And unlike on some other worlds, a portable water tank is also provided in the starting kit, however setting up water bottle filling will require some work.&lt;br /&gt;
&lt;br /&gt;
One of the main difficulties of Venus is that it doesn&#039;t contain any ice. &amp;lt;!-- checked online, and seems to be true (was recently edited by someone) -N --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&lt;br /&gt;
|-&lt;br /&gt;
| Gravity || 91% Earth&lt;br /&gt;
|-&lt;br /&gt;
| Temperature || 464 °C (737K)&lt;br /&gt;
|-&lt;br /&gt;
| Temperature (Storm) || 365.9 °C&lt;br /&gt;
|-&lt;br /&gt;
| Pressure || 239 kPa&lt;br /&gt;
|-&lt;br /&gt;
| Pressure (Storm) || 206.9 kPa&lt;br /&gt;
|-&lt;br /&gt;
| Solar Energy || 2601-2673 W/m²&lt;br /&gt;
|-&lt;br /&gt;
| Solar Angle || -43°&lt;br /&gt;
|-&lt;br /&gt;
| [[Storm|Storms]] || Dust Storms&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Orbital Period || 36,6 minutes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Atmosphere&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element !! Concentration !! mol&lt;br /&gt;
|-&lt;br /&gt;
| [[Carbon Dioxide]] || 93.1% || 290&lt;br /&gt;
|-&lt;br /&gt;
| [[Nitrogen]] || 6.9% || 21.5&lt;br /&gt;
|-&lt;br /&gt;
| [[Pollutant]] || 0.016% || 0.05&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Stirling_Engine&amp;diff=22432</id>
		<title>Stirling Engine</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Stirling_Engine&amp;diff=22432"/>
		<updated>2025-02-13T21:09:38Z</updated>

		<summary type="html">&lt;p&gt;Duke: minor edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Stirling Engine) [[File:Kit (Stirling Engine).jpg|thumb|Creates a Stirling Engine]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5 [[Gold]], 20 [[Copper]], 30 [[Steel]]&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Stirling Engine [[File:Stirling Engine Front.jpg|thumb|Front]] [[File:Stirling Engine Back.jpg|thumb|Back]]&lt;br /&gt;
 | power_usage      = 1W&lt;br /&gt;
 | placed_with_item = [[Kit (Stirling Engine)]]&lt;br /&gt;
 | placed_on_grid   = Large Grid&lt;br /&gt;
 | build states     = Three&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = 2x [[Electronic Parts]]&lt;br /&gt;
 | decon_with_tool2 = [[Wrench]]&lt;br /&gt;
 | item_rec2        = 2x [[Steel Sheets]]&lt;br /&gt;
 | decon_with_tool3 = [[Hand Drill]]&lt;br /&gt;
 | item_rec3        = [[Kit (Stirling Engine)]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Overall Stirling Engine Cost/Requirements [[File:Stirling Engine Front.jpg|thumb|Front]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]], [[Autolathe]]&lt;br /&gt;
 | cost        =  6 [[Iron]], 9 [[Gold]], 26 [[Copper]], 31 [[Steel]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Harnessing an ancient thermal exploit, the Recurso &#039;Libra&#039; Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.&lt;br /&gt;
&lt;br /&gt;
When high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room&#039;s ambient atmosphere, which must be kept at a lower temperature in order to create a differential. Add a working gas by inserting a gas canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.&lt;br /&gt;
&lt;br /&gt;
Gases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have... sub-optimal results.&lt;br /&gt;
&lt;br /&gt;
== Efficiency ==&lt;br /&gt;
The Stirling Engine has an efficiency curve that is dependent on three factors:&lt;br /&gt;
* Environment&lt;br /&gt;
* Working Gas&lt;br /&gt;
* Input to Output efficiency&lt;br /&gt;
The best a Stirling Engine can provide in power is 15% efficiency of the input heat, whereas a [[Kit (Gas Fuel Generator)|Gas Fuel Generator]] has a much higher efficiency ratio per Mol of fuel.&lt;br /&gt;
&lt;br /&gt;
== Environment ==&lt;br /&gt;
The Stirling engine itself is best placed in a 13-25 Celcius environment to provide the highest efficiency. The only planets where it cannot effectively be used outside are: Venus, Moon and Mimas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Stirling_temp.png|Temperature dependency&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== In World ===&lt;br /&gt;
* Moon (Vacuum): 0%&lt;br /&gt;
* [[Venus]]: 12% efficiency @ 463 Celcius&lt;br /&gt;
* Vulcan (Night): 91% efficiency @ 126 Celcius&lt;br /&gt;
* Mars: 100%&lt;br /&gt;
* Loulan: 100%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== In Room ===&lt;br /&gt;
The Stirling engine can be kept in a room to cool it down at maximum efficiency, since the exposed working gas canister heats the room up, it requires an effective cooling system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Working Gas ==&lt;br /&gt;
The working gas is a canister of gas that must be provided to the machine before it can be used. The gas itself is not lost, only used as a heat transfer gas.&lt;br /&gt;
When filling it, 60 mols of gas in the canister is needed, which is usually around 2.4MPa when it is pressurized at room temperature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;If the canister&#039;s pressure ever reaches 11 MPa, the machine will instantly explode.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here are the efficiencies of several gasses:&lt;br /&gt;
* Pollutants: 5%&lt;br /&gt;
* Carbon Dioxide: 8%&lt;br /&gt;
* Oxygen: 12%&lt;br /&gt;
* Nitrogen: 12%&lt;br /&gt;
* Nitrous Oxide: 12%&lt;br /&gt;
* Hydrogen: 15% (Best)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User Comments== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
The Stirling Generator has a maximum pressure differential of 11000 KPa (11 MPa), if the difference between the internal and external pressure exceeds this it will explode in a radius of more than 3x3, destroying everything in its path and killing players. It works on Temperature difference between two pipes. There needs to be one Canister that is used to transfer the heat, it explodes easily if overpressure is reached, unlike normal canisters it doesn&#039;t take time to explode as it is instant. Due to its explosive nature steps of caution i.e. pressure regulators are advised to be placed before the generator input. The Energy output scales on How fast it can transfer that heat(higher pressure in the transfer canister, gases with higher heat transfer rate (due to water no longer being a gas, volatiles is the best) and higher temperature difference). The output Gases need to be connected to a room(or planet with atmosphere) to function it does not work in space or on moons without atmospheres. The new Thermogenic Plants are an option to generate semi free power.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Details&amp;lt;br&amp;gt;&lt;br /&gt;
Max power: 8000W&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maximum internal-external pressure differential: 11000kPa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Environment operating efficiency: Around 300K for 100%&amp;lt;br&amp;gt;&lt;br /&gt;
Minimum power for maximum internal pressure differential efficiency: 4600.452W ((0.15×20.4×2500×5)÷8.3144)&amp;lt;br&amp;gt;&lt;br /&gt;
Maximum working gas efficiency: 15% (0.15) with volatiles&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Technical details&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ideal pressure differential: 2500&amp;lt;br&amp;gt;&lt;br /&gt;
Internal volume: 54L&amp;lt;br&amp;gt;&lt;br /&gt;
Piston volume: 5L&amp;lt;br&amp;gt;&lt;br /&gt;
Heat exchanger volume: 10L&amp;lt;br&amp;gt;&lt;br /&gt;
Hot side area: 2&amp;lt;br&amp;gt;&lt;br /&gt;
Cold side area: 3.5&amp;lt;br&amp;gt;&lt;br /&gt;
Convection factor: 0.15&amp;lt;br&amp;gt;&lt;br /&gt;
Radiation factor: 0.15&amp;lt;br&amp;gt;&lt;br /&gt;
Surface area: 8.499227&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Vulcan&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Stirling Engine is a reasonable way to generate night time power on Vulcan when solar power is unavailable. Place it outside so it&#039;s in night time (400K) atmosphere, and capture mid-day (900 to 950K) atmosphere into a tank and run the Stirling Generator from that hot air at night, the generator can produce around 1.8 kW from the temperature difference.  For the working gas, a good starting point is 70 moles of H2 in the canister.  You can boost the power output to about 2.1kW by using an active vent to blow cold night air into the large grid that the Stirling Engine is in to cool it down.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Stirling_Engine&amp;diff=22431</id>
		<title>Stirling Engine</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Stirling_Engine&amp;diff=22431"/>
		<updated>2025-02-13T20:22:43Z</updated>

		<summary type="html">&lt;p&gt;Duke: removed missleading information concerning working environment.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Stirling Engine) [[File:Kit (Stirling Engine).jpg|thumb|Creates a Stirling Engine]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]]&lt;br /&gt;
 | cost        = 5 [[Gold]], 20 [[Copper]], 30 [[Steel]]&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Stirling Engine [[File:Stirling Engine Front.jpg|thumb|Front]] [[File:Stirling Engine Back.jpg|thumb|Back]]&lt;br /&gt;
 | power_usage      = 1W&lt;br /&gt;
 | placed_with_item = [[Kit (Stirling Engine)]]&lt;br /&gt;
 | placed_on_grid   = Large Grid&lt;br /&gt;
 | build states     = Three&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = 2x [[Electronic Parts]]&lt;br /&gt;
 | decon_with_tool2 = [[Wrench]]&lt;br /&gt;
 | item_rec2        = 2x [[Steel Sheets]]&lt;br /&gt;
 | decon_with_tool3 = [[Hand Drill]]&lt;br /&gt;
 | item_rec3        = [[Kit (Stirling Engine)]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Overall Stirling Engine Cost/Requirements [[File:Stirling Engine Front.jpg|thumb|Front]]&lt;br /&gt;
 | createdwith = [[Electronics Printer]], [[Autolathe]]&lt;br /&gt;
 | cost        =  6 [[Iron]], 9 [[Gold]], 26 [[Copper]], 31 [[Steel]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
Harnessing an ancient thermal exploit, the Recurso &#039;Libra&#039; Stirling Engine generates power via the expansion and contraction of a working gas to drive pistons operating an electrical generator.&lt;br /&gt;
&lt;br /&gt;
When high pressure hot gas is supplied into the input pipe, this gas will heat the hot side of the unit, then pass into the output pipe. The cooler side uses the room&#039;s ambient atmosphere, which must be kept at a lower temperature and pressure in order to create a differential. Add a working gas by inserting a gas canister. The unit must be deactivated when adding or removing canisters, or the working gas may leak into the surrounding atmosphere.&lt;br /&gt;
&lt;br /&gt;
Gases with a low molecular mass make the most efficient working gases. Increasing the moles of working gas can result in a greater potential power output. However, overpressuring the unit may have... sub-optimal results.&lt;br /&gt;
&lt;br /&gt;
== Efficiency ==&lt;br /&gt;
The Stirling Engine has an efficiency curve that is dependent on three factors:&lt;br /&gt;
* Environment&lt;br /&gt;
* Working Gas&lt;br /&gt;
* Input to Output efficiency&lt;br /&gt;
The best a Stirling Engine can provide in power is 15% efficiency of the input heat, whereas a [[Kit (Gas Fuel Generator)|Gas Fuel Generator]] has a much higher efficiency ratio per Mol of fuel.&lt;br /&gt;
&lt;br /&gt;
== Environment ==&lt;br /&gt;
The Stirling engine itself is best placed in a 13-25 Celcius environment to provide the highest efficiency. The only planets where it cannot effectively be used outside are: Venus, Moon and Mimas&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Stirling_temp.png|Temperature dependency&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== In World ===&lt;br /&gt;
* Moon (Vacuum): 0%&lt;br /&gt;
* [[Venus]]: 12% efficiency @ 463 Celcius&lt;br /&gt;
* Vulcan (Night): 91% efficiency @ 126 Celcius&lt;br /&gt;
* Mars: 100%&lt;br /&gt;
* Loulan: 100%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== In Room ===&lt;br /&gt;
The Stirling engine can be kept in a room to cool it down at maximum efficiency, since the exposed working gas canister heats the room up, it requires an effective cooling system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Working Gas ==&lt;br /&gt;
The working gas is a canister of gas that must be provided to the machine before it can be used. The gas itself is not lost, only used as a heat transfer gas.&lt;br /&gt;
When filling it, 60 mols of gas in the canister is needed, which is usually around 2.4MPa when it is pressurized at room temperature.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;If the canister&#039;s pressure ever reaches 11 MPa, the machine will instantly explode.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Here are the efficiencies of several gasses:&lt;br /&gt;
* Pollutants: 5%&lt;br /&gt;
* Carbon Dioxide: 8%&lt;br /&gt;
* Oxygen: 12%&lt;br /&gt;
* Nitrogen: 12%&lt;br /&gt;
* Nitrous Oxide: 12%&lt;br /&gt;
* Hydrogen: 15% (Best)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User Comments== &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
The Stirling Generator has a maximum pressure differential of 11000 KPa (11 MPa), if the difference between the internal and external pressure exceeds this it will explode in a radius of more than 3x3, destroying everything in its path and killing players. It works on Temperature difference between two pipes. There needs to be one Canister that is used to transfer the heat, it explodes easily if overpressure is reached, unlike normal canisters it doesn&#039;t take time to explode as it is instant. Due to its explosive nature steps of caution i.e. pressure regulators are advised to be placed before the generator input. The Energy output scales on How fast it can transfer that heat(higher pressure in the transfer canister, gases with higher heat transfer rate (due to water no longer being a gas, volatiles is the best) and higher temperature difference). The output Gases need to be connected to a room(or planet with atmosphere) to function it does not work in space or on moons without atmospheres. The new Thermogenic Plants are an option to generate semi free power.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Details&amp;lt;br&amp;gt;&lt;br /&gt;
Max power: 8000W&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maximum internal-external pressure differential: 11000kPa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Environment operating efficiency: Around 300K for 100%&amp;lt;br&amp;gt;&lt;br /&gt;
Minimum power for maximum internal pressure differential efficiency: 4600.452W ((0.15×20.4×2500×5)÷8.3144)&amp;lt;br&amp;gt;&lt;br /&gt;
Maximum working gas efficiency: 15% (0.15) with volatiles&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Technical details&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ideal pressure differential: 2500&amp;lt;br&amp;gt;&lt;br /&gt;
Internal volume: 54L&amp;lt;br&amp;gt;&lt;br /&gt;
Piston volume: 5L&amp;lt;br&amp;gt;&lt;br /&gt;
Heat exchanger volume: 10L&amp;lt;br&amp;gt;&lt;br /&gt;
Hot side area: 2&amp;lt;br&amp;gt;&lt;br /&gt;
Cold side area: 3.5&amp;lt;br&amp;gt;&lt;br /&gt;
Convection factor: 0.15&amp;lt;br&amp;gt;&lt;br /&gt;
Radiation factor: 0.15&amp;lt;br&amp;gt;&lt;br /&gt;
Surface area: 8.499227&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Vulcan&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Stirling Engine is a reasonable way to generate night time power on Vulcan when solar power is unavailable. Place it outside so it&#039;s in night time (400K) atmosphere, and capture mid-day (900 to 950K) atmosphere into a tank and run the Stirling Generator from that hot air at night, the generator can produce around 1.8 kW from the temperature difference.  For the working gas, a good starting point is 70 moles of H2 in the canister.  You can boost the power output to about 2.1kW by using an active vent to blow cold night air into the large grid that the Stirling Engine is in to cool it down.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=User:Duke&amp;diff=22365</id>
		<title>User:Duke</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=User:Duke&amp;diff=22365"/>
		<updated>2025-01-17T16:24:29Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, I&#039;m Duke, this is my page.&lt;br /&gt;
&lt;br /&gt;
Sometimes known as dukeironhelm or Duke_Ironhelm.&lt;br /&gt;
&lt;br /&gt;
Also see: https://dukeironhelm.uk&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=IC10&amp;diff=21734</id>
		<title>IC10</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=IC10&amp;diff=21734"/>
		<updated>2024-07-25T16:32:30Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Accessing devices via batch or ReferenceId */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IC10 Programming]]&lt;br /&gt;
=Scripting language for IC10 housings / chips=&lt;br /&gt;
MIPS is [[Stationeers]]&#039; inspiration for the in-game scripting language called IC10. It runs on [[Integrated Circuit (IC10)|IC10 chips]] crafted at the [[Electronics Printer]]. &lt;br /&gt;
&lt;br /&gt;
==Registers==&lt;br /&gt;
Internal registers &#039;&#039;&#039;r?&#039;&#039;&#039;: The IC contains 16 CPU registers, numbered &#039;&#039;&#039;r0&#039;&#039;&#039; to &#039;&#039;&#039;r15&#039;&#039;&#039;. From now on referred to as &#039;&#039;&#039;r?&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Device registers &#039;&#039;&#039;d? logicType&#039;&#039;&#039;: Device registers are written to and from the IC. A device register is numbered &#039;&#039;&#039;d0&#039;&#039;&#039; to &#039;&#039;&#039;d5&#039;&#039;&#039; (select via screw), or &#039;&#039;&#039;db&#039;&#039;&#039; (connected device). From now on referred to as &#039;&#039;&#039;d?&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Logic and algorithmic with &#039;&#039;&#039;Internal registers&#039;&#039;&#039; ===&lt;br /&gt;
All calculations are exclusively performed to and from &#039;&#039;&#039;r?&#039;&#039;&#039; registers, or generally more understood as variables in programming. You can use aliases to give convenient names with the &amp;lt;code&amp;gt;alias string r?|d?&amp;lt;/code&amp;gt;command (see below). &lt;br /&gt;
&lt;br /&gt;
Internal registers can be manipulated in various ways. &lt;br /&gt;
* Write constant values &amp;lt;code&amp;gt;move r? (r?|num)&amp;lt;/code&amp;gt;: Example: &amp;lt;code&amp;gt;move r0 2&amp;lt;/code&amp;gt; sets r0 to the number 2.&lt;br /&gt;
* Calculate: Calculations are done to- and from these registers, like &amp;lt;code&amp;gt;add r? a(r?|num) b(r?|num)&amp;lt;/code&amp;gt;. Example: &amp;lt;code&amp;gt;add r1 r0 3&amp;lt;/code&amp;gt; adds 3 to r0, and writes to r1.&lt;br /&gt;
&lt;br /&gt;
Note, for any kind of if statements or loop behaviours, knowing about labels, branching, and jumps is essential knowledge. See below.&lt;br /&gt;
&lt;br /&gt;
=== IO to &#039;&#039;&#039;Device registers&#039;&#039;&#039; ===&lt;br /&gt;
Acronym &#039;&#039;&#039;d?&#039;&#039;&#039; stands for device, where ? is a number corresponding to the screw device selector on the socket.&lt;br /&gt;
You can also read/write to the device where the IC is planted in using device &#039;&#039;&#039;db&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Generally, there are up to 6 devices which can be set using the screwdriver &#039;&#039;&#039;d0&#039;&#039;&#039; to &#039;&#039;&#039;d5&#039;&#039;&#039;. A special device register &#039;&#039;&#039;db&#039;&#039;&#039; is the device wherever the IC is mounted upon. Very convenient for atmospheric devices where no separate IC socket is required.&lt;br /&gt;
&lt;br /&gt;
Note, the IC is completely unaware where d? is actually connected to. So if you get a logicType error, check d? number, or check if the screw has been set opn the socket. An alias is only convenient to convey what is expected to be set on the d? screw, it does not actually set or program the screq.&lt;br /&gt;
&lt;br /&gt;
* Read from device (load) &amp;lt;code&amp;gt;l r? d? logicType&amp;lt;/code&amp;gt;: Reads logicType, like Pressure from a [[Sensors|gas sensor]], from device d? to register r?. Values can be read from connected devices and put into the register using the &#039;&#039;&#039;l&#039;&#039;&#039; (load) command. For example, if you want to load the state of a door. &amp;lt;br&amp;gt; Example: &amp;lt;code&amp;gt;l r0 Door Open&amp;lt;/code&amp;gt; reads the &#039;Open&#039; field of an object named &#039;Door&#039;, that would be connected to the IC housing of the chip.&lt;br /&gt;
* Write to a device (set) &amp;lt;code&amp;gt;s d? logicType r?&amp;lt;/code&amp;gt;: Write a value from a register back to a device using the command &amp;lt;code&amp;gt;s d? logicType r?&amp;lt;/code&amp;gt;. For example, if d0 is set to a door using the screwdriver, &amp;lt;code&amp;gt;s d0 Open 0&amp;lt;/code&amp;gt; sets the &#039;Open&#039; status of the d0 (a door) to 0, effectively closing the door.&lt;br /&gt;
&lt;br /&gt;
=== batch IO to - &#039;&#039;&#039;Device registers&#039;&#039;&#039; ===&lt;br /&gt;
&#039;&#039;&#039;Batch writing&#039;&#039;&#039; needs to be done to a specific &#039;&#039;&#039;deviceHash&#039;&#039;&#039; instead of d?. Is unique per device type, which you can find in the [[Stationpedia]] entries.&lt;br /&gt;
* &amp;lt;code&amp;gt;lb r? deviceHash logicType batchMode&amp;lt;/code&amp;gt; &lt;br /&gt;
* &amp;lt;code&amp;gt;sb deviceHash logicType r?&amp;lt;/code&amp;gt;&lt;br /&gt;
Additionally, using the following batch commands, a &#039;&#039;&#039;nameHash&#039;&#039;&#039; can be provided to only modify devices with a certain name.&lt;br /&gt;
* &amp;lt;code&amp;gt;lbn r? deviceHash nameHash logicType batchMode &amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sbn deviceHash nameHash logicType r?&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;batchMode&#039;&#039;&#039; is a parameter equal to 0, 1, 2, or 3. These are also defined as the constants &#039;&#039;&#039;Average&#039;&#039;&#039;, &#039;&#039;&#039;Sum&#039;&#039;&#039;, &#039;&#039;&#039;Minimum&#039;&#039;&#039;, and &#039;&#039;&#039;Maximum&#039;&#039;&#039; respectively. The word or number can be used.&lt;br /&gt;
&lt;br /&gt;
Combining one of these functions with the &amp;lt;code&amp;gt;HASH()&amp;lt;/code&amp;gt; function can be advantageous:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lbn r0 HASH(&amp;quot;StructureGasSensor&amp;quot;) HASH(&amp;quot;Sensor 1&amp;quot;) Temperature Average&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code will load the average temperature of all gas sensors on the network named &amp;quot;Sensor 1&amp;quot; onto register &#039;&#039;&#039;r0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If the batch read (lb/lbn) is done on a network without any matching devices the results will be as specified in the table:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Batch read with no devices&lt;br /&gt;
|-&lt;br /&gt;
! Batch Mode !! Result&lt;br /&gt;
|-&lt;br /&gt;
| Average (0) || nan&lt;br /&gt;
|-&lt;br /&gt;
| Sum (1) || 0&lt;br /&gt;
|-&lt;br /&gt;
| Minimum (2) || 0&lt;br /&gt;
|-&lt;br /&gt;
| Maximum (3) || ninf&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Here are some examples demonstrating all three operations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Sets register &#039;&#039;&#039;r0&#039;&#039;&#039; to the value 10&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 r1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Copies the value of register &#039;&#039;&#039;r1&#039;&#039;&#039; to register &#039;&#039;&#039;r0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;l r0 d0 Temperature&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Reads the Temperature parameter from device &#039;&#039;&#039;d0&#039;&#039;&#039; and places the value in register &#039;&#039;&#039;r0&#039;&#039;&#039;.&lt;br /&gt;
Note: not all devices have a Temperature parameter, check the in-game stationpedia.&lt;br /&gt;
&lt;br /&gt;
To set a device specific value (like &#039;&#039;&#039;On&#039;&#039;&#039;), you can write into this value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s d0 On r0&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Writes the value from register &#039;&#039;&#039;r0&#039;&#039;&#039; out to &#039;&#039;&#039;On&#039;&#039;&#039; parameter of device &#039;&#039;&#039;d0&#039;&#039;&#039;. In this example the device will be turned On, if valve of register r0 equals 1, otherwise (register r0 equals 0) it will turned off. See section [[IC10#Device_Variables|Device Variables]].&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to use labels (like: &#039;&#039;someVariable&#039;&#039;) instead of a direct reference to the register. See &#039;&#039;&#039;alias&#039;&#039;&#039; in section [[IC10#Instructions|Instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Special registers ===&lt;br /&gt;
There are two more registers. One called &#039;&#039;&#039;ra&#039;&#039;&#039; (return address) and one called &#039;&#039;&#039;sp&#039;&#039;&#039; (stack pointer). The &#039;&#039;&#039;ra&#039;&#039;&#039; is used by certain jump and branching instructions (those ending with &#039;&#039;&#039;-al&#039;&#039;&#039;) to remember which line in the script it should return to. The &#039;&#039;&#039;sp&#039;&#039;&#039; tracks the next index within the stack (a memory that can store up to 512 values) to be pushed (written) to or popped (read) from. Neither &#039;&#039;&#039;ra&#039;&#039;&#039; or &#039;&#039;&#039;sp&#039;&#039;&#039; is protected, their values can be changed by instructions like any other register.&lt;br /&gt;
&lt;br /&gt;
==Stack Memory==&lt;br /&gt;
;push r?: adds the value  &#039;&#039;&#039;r?&#039;&#039;&#039; and increments the &#039;&#039;&#039;sp&#039;&#039;&#039; by 1.&lt;br /&gt;
;pop r?: loads the value in the stack memory at index &amp;lt;code&amp;gt;sp-1&amp;lt;/code&amp;gt; into register &#039;&#039;&#039;r?&#039;&#039;&#039; and decrements the &#039;&#039;&#039;sp&#039;&#039;&#039; by 1.&lt;br /&gt;
;peek r?: loads the value in the stack memory at index &amp;lt;code&amp;gt;sp-1&amp;lt;/code&amp;gt; into register &#039;&#039;&#039;r?&#039;&#039;&#039;.&lt;br /&gt;
;get r? d? address(r?|num): loads the value in the stack memory at index &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; on provided device into register &#039;&#039;&#039;r?&#039;&#039;&#039;.&lt;br /&gt;
;getd r? id(r?|num) address(r?|num): loads the value in the stack memory at index &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; on provided device id into register &#039;&#039;&#039;r?&#039;&#039;&#039;.&lt;br /&gt;
;put d? address(r?|num) value(r?|num): adds the value to the stack memory off the provided device at index &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt;.&lt;br /&gt;
;putd id(r?|num) address(r?|num) value(r?|num) : adds the value to the stack memory off the provided device id at index &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
As mentioned previously, &#039;&#039;&#039;sp&#039;&#039;&#039; can be both written to and read from any time. When reading (&#039;&#039;&#039;peek&#039;&#039;&#039; or &#039;&#039;&#039;pop&#039;&#039;&#039;), &#039;&#039;&#039;sp&#039;&#039;&#039; must be between 1 and 512, inclusive. While writing (&#039;&#039;&#039;push&#039;&#039;&#039;), &#039;&#039;&#039;sp&#039;&#039;&#039; must be between 0 and 511, inclusive.&lt;br /&gt;
&lt;br /&gt;
Stack memory is persistent on logic chips. This means that if you have a logic chip and push values to the stack, the code that pushes those values can be removed and the stack will retain those values.&lt;br /&gt;
&lt;br /&gt;
Note that this does not carry over to any other logic chips which receive the program of the original; They will need to have their stack memories programmed individually.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stack Traversing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Traversing the stack can be done similarly to how an array would be traversed in some other languages:&lt;br /&gt;
{{ICCode|&lt;br /&gt;
#this will traverse indices {min value} through {max value}-1&lt;br /&gt;
move sp {min value}&lt;br /&gt;
loop:&lt;br /&gt;
add sp sp 1&lt;br /&gt;
peek r0&lt;br /&gt;
&lt;br /&gt;
#do something here with your stack values (loaded into r0)&lt;br /&gt;
&lt;br /&gt;
blt sp {max value} loop&lt;br /&gt;
&lt;br /&gt;
#continue on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the pop function&#039;s decrementing to make a more efficient loop:&lt;br /&gt;
{{ICCode|&lt;br /&gt;
move sp {max value}&lt;br /&gt;
add sp sp 1&lt;br /&gt;
loop:&lt;br /&gt;
pop r0&lt;br /&gt;
&lt;br /&gt;
#do something here with your stack values (loaded into r0)&lt;br /&gt;
&lt;br /&gt;
bgt sp {min value} loop&lt;br /&gt;
&lt;br /&gt;
#continue on&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Device Ports==&lt;br /&gt;
ICs can interact with up to 6 other devices via d0 - d5, as well as the device it&#039;s attached to via db. To change or set a device, use a screwdriver and adjust the device in the IC housing. You can read or set any of the device&#039;s properties, so it is possible to do things like read the pressure or oxygen content of a room on the same Device port. &lt;br /&gt;
&lt;br /&gt;
Additionally, is possible to set other IC housings as devices, allowing you to create programs that run across multiple ICs together. For example, an Gas Mixing IC could check the &#039;&#039;&#039; Setting&#039;&#039;&#039;  field of a Atmosphere Sensor IC and act based on the value of the sensor chip.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;l&#039;&#039;&#039; (load) or &#039;&#039;&#039;s&#039;&#039;&#039; (set) instructions you have to read or set these values to your device. Examples:&lt;br /&gt;
{{ICCode|&lt;br /&gt;
#Reads the &#039;Temperature&#039; from an atmosphere sensor&lt;br /&gt;
# at device port &#039;d0&#039; into register &#039;r0&#039;.&lt;br /&gt;
l r0 d0 Temperature&lt;br /&gt;
}} &lt;br /&gt;
{{ICCode|&lt;br /&gt;
# Writes the value of the register &#039;r0&#039; to the&lt;br /&gt;
# device on port &#039;d1&#039; into the variable &#039;Setting&#039;.&lt;br /&gt;
s d1 Setting r0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Labels==&lt;br /&gt;
Labels are used to make it easier to jump between lines in the script. The label will have a numerical value that is the same as its line number. Even though it&#039;s possible to use a labels value for calculations, doing so is a bad idea since any changes to the code can change the line numbers of the labels.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
main: # define a jump mark with label &#039;main&#039;&lt;br /&gt;
j main # jumps back to &#039;main&#039;&lt;br /&gt;
}}&lt;br /&gt;
==Constants==&lt;br /&gt;
Instead of using a register to store a fixed value, a constant can be made. Using this name will refer to the assigned value. With the help of Constants you can save register places.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# defines a Constant with name &#039;pi&#039;&lt;br /&gt;
# and set its value to 3.14159&lt;br /&gt;
define pi 3.14159&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
You can use these constants like any other variables (see: alias in section [[IC10#Instructions|Instructions]]). Example:&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# set the value of register &#039;r0&#039; to the value of constant named &#039;pi&#039;.&lt;br /&gt;
move r0 pi &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Indirect referencing==&lt;br /&gt;
This is a way of accessing a register by using another register as a pointer. Adding an additional r in front of the register turns on this behaviour. The value stored in the register being used as the pointer must be between 0 to 15, this will then point to a register from r0 to r15, higher or lower values will cause an error.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
move r0 5 # stores the value 5 in r0&lt;br /&gt;
move rr0 10 &lt;br /&gt;
# is now the same as &#039;move r5 10&#039; &lt;br /&gt;
# since r0 has the value 5, rr0 points at the register r5&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Additional r&#039;s can be added to do indirect referencing multiple times in a row.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
move r1 2&lt;br /&gt;
move r2 3&lt;br /&gt;
move rrr1 4&lt;br /&gt;
# is now the same as &#039;move r3 4&#039;&lt;br /&gt;
# since r1 points at r2 which points at r3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This also works with devices&lt;br /&gt;
{{ICCode|&lt;br /&gt;
move r0 2 # stores the value 2 in r0&lt;br /&gt;
s dr0 On 1 &lt;br /&gt;
# is now the same as &#039;s d2 On 1&#039;&lt;br /&gt;
# r0 has the value 2 so dr0 points at d2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Network Referencing / Channels==&lt;br /&gt;
&lt;br /&gt;
All cable networks have 8 Channels which can have data loaded from/stored to via a device and connection reference. Connections for each supported device are listed in the stationpedia. All &#039;connections&#039; a device can make are a connection (pipe, chute, cable), but only cable networks have channels.&lt;br /&gt;
&lt;br /&gt;
The 8 channels (Channel0 to Channel7) are however volatile, in that data is destroyed if any part of the cable network is changed, removed, or added to, and also whenever the world is exited. All these channels default to NaN. Strictly speaking, they default to what we would call &amp;quot;quiet NaN&amp;quot;, in that its not an error it simply means its not a number yet. Recommend you use these channels for reading and writing between networks, rather than as a data store. This effectively means an IC can read all the networks for all devices to connected to it, so not just their own local network, but any networks any device they can reference is connected to.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
# d0 is device zero, and the :0 refers&lt;br /&gt;
# to that device&#039;s 0 connection&lt;br /&gt;
l r0 d0:0 Channel0}}&lt;br /&gt;
&lt;br /&gt;
For example: on an IC Housing, the 0 connection is the data port and 1 is power, so you could write out r0 to Channel0 of the power network of the Housing using &amp;lt;code&amp;gt;s db:1 Channel0 r0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
Comments can be placed using a &#039;&#039;&#039;#&#039;&#039;&#039; symbol. All comments are ignored by the game when it reads commands. Below is an example of valid code with two comments.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
alias MyAlias r0 # Text after the hash tag will be ignored to the end of the line.&lt;br /&gt;
# You can also write comments on their own lines, like this.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Debugging advices==&lt;br /&gt;
The value stored in a register or variable can easily be displayed by writing it to the Setting parameter of the IC housing. This has no side effects. To see the value, just stand close to the IC housing and look directly at the housing.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;s db Setting r0&amp;lt;/code&amp;gt;. # sets/writes the value of register &#039;&#039;&#039;r0&#039;&#039;&#039; into the parameter &#039;&#039;&#039;Setting&#039;&#039;&#039; of the IC Housing(&#039;&#039;&#039;db&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
To check if a certain block of code is executed, use the above trick but with a random number that you choose, like the line number.&amp;lt;br&amp;gt; This example will display the number 137 on the IC housing.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;s db Setting 137&amp;lt;/code&amp;gt;  # sets/writes the number 137 into the parameter &#039;&#039;&#039;Setting&#039;&#039;&#039; of the IC Housing(&#039;&#039;&#039;db&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Always use unique names for labels. When a label is named after a IC10 keyword like &amp;quot;Temperature:&amp;quot; or &amp;quot;Setting:&amp;quot; the original meaning of the keyword is overwritten, so when an instruction tries to use it an error will occur.&lt;br /&gt;
&lt;br /&gt;
A [[Cartridge#Configuration|configuration cartridge]] installed in a [[Handheld_Tablet|tablet]]  can be used to see all available values and configuration parameter for all devices you focus on.&lt;br /&gt;
&lt;br /&gt;
==Learning IC10==&lt;br /&gt;
IC10 can be difficult to get started with. So here is a list of instructions that are useful for beginners. These can be used to write many different scripts.&lt;br /&gt;
&lt;br /&gt;
General:&lt;br /&gt;
* &amp;lt;code&amp;gt;alias&amp;lt;/code&amp;gt; make the script easier to read by assigning a name to a register or device, example: &amp;lt;code&amp;gt;alias rTemperature r15&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label:&amp;lt;/code&amp;gt; where &amp;quot;label&amp;quot; can be replaced with almost any word, jump and branch instructions can use these in place of line numbers, example: &amp;lt;code&amp;gt;start:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt; pause for 1-tick and then resume, if not used the script will automatically pause for 1-tick after 128 lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Jumps:&lt;br /&gt;
*&amp;lt;code&amp;gt;j someLabelName&amp;lt;/code&amp;gt; jump to line with &#039;&#039;&#039;someLabelName&#039;&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;jal someLabelName&amp;lt;/code&amp;gt; stores the next line number into the register ra (return address) and then jump to &#039;&#039;&#039;someLabelName&#039;&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;j ra&amp;lt;/code&amp;gt; jump to register ra (return address)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Branching (jump-if):&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;beq a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if &#039;&#039;&#039;a&#039;&#039;&#039; is equal to &#039;&#039;&#039;b&#039;&#039;&#039; goto &#039;&#039;&#039;c&#039;&#039;&#039;  (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;bne a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if  &#039;&#039;&#039;a&#039;&#039;&#039; not-equal &#039;&#039;&#039;b&#039;&#039;&#039; goto  &#039;&#039;&#039;c&#039;&#039;&#039; (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;bgt a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if  &#039;&#039;&#039;a&#039;&#039;&#039; greater than &#039;&#039;&#039;b&#039;&#039;&#039; goto   &#039;&#039;&#039;c&#039;&#039;&#039; (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;blt a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if  &#039;&#039;&#039;a&#039;&#039;&#039; less than &#039;&#039;&#039;b&#039;&#039;&#039; goto &#039;&#039;&#039;c&#039;&#039;&#039; (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
The suffix -al can be added to each of these (example: beqal) to save the &#039;&#039;&#039;next&#039;&#039;&#039; line number into the &amp;quot;return address&amp;quot; register. this is called using &amp;lt;code&amp;gt;j ra&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Device interactions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
l (load)&lt;br /&gt;
lb (load batch, requires one of the following: 0(Average) / 1(Sum) / 2(Minimum) / 3(Maximum))&lt;br /&gt;
ls (load slot)&lt;br /&gt;
s (store)&lt;br /&gt;
sb (store batch)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Logic and Math:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
seqz (common NOT-gate: turns 0 into 1, and all other values into 0)&lt;br /&gt;
move&lt;br /&gt;
add (addition)&lt;br /&gt;
sub (subtraction)&lt;br /&gt;
mul (multiplication)&lt;br /&gt;
div (division)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Common device variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
On (1 is on, 0 is off)&lt;br /&gt;
Open (1 is open, 0 is closed)&lt;br /&gt;
Setting (meaning varies between devices, example: a LED display(console) will show this value)&lt;br /&gt;
Activate (1 usually means running, example: a Daylight sensor is 1 when the sun shines on it)&lt;br /&gt;
Temperature (in Kelvin, Celsius - 273.15)&lt;br /&gt;
Pressure (in kPa)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Notes:&lt;br /&gt;
&amp;lt;br&amp;gt;-All instructions and variables can be seen in-game in the IC editor window by clicking the &amp;quot;f&amp;quot;, &amp;quot;x&amp;quot; and &amp;quot;s(x)&amp;quot; buttons on the top right.&lt;br /&gt;
&amp;lt;br&amp;gt;-The stationpedia is the best source to see which variables are available to each device.&lt;br /&gt;
&amp;lt;br&amp;gt;-Most scripts are loops, they end with a jump instruction that leads back up to the start. Otherwise they will just run once and then stop.&lt;br /&gt;
&lt;br /&gt;
Two practice scripts:&lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Night Light: Load &amp;quot;Activate&amp;quot; from a Daylight sensor, flip the value with a NOT-gate, store the value to the &amp;quot;On&amp;quot; variable of one or more lights.&lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Wall Cooler: Read &amp;quot;Temperature&amp;quot; from a Gas Sensor. Branch if the value is greater than X, turn on the cooler. Branch if the value is less than Y, turn off the cooler. (Wall coolers need a minimum of 12.5 kPa pressure in the connected pipe)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Accessing devices via batch or ReferenceId ==&lt;br /&gt;
&lt;br /&gt;
The IC housing has 6 pins you can use to configure the devices it&lt;br /&gt;
uses.  This provides flexibility to let the installer configure which&lt;br /&gt;
devices will be controlled by the IC.&lt;br /&gt;
&lt;br /&gt;
Alternatives for accessing devices include the batch load/store and&lt;br /&gt;
the ReferenceId load/store instructions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# get the average charge ratio across station batteries&lt;br /&gt;
lb r0 HASH(&amp;quot;StructureBattery&amp;quot;) Ratio Average&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# get the ReferenceId for the sorter named &amp;quot;Sorter Corn&amp;quot;&lt;br /&gt;
lbn r1 HASH(&amp;quot;StructureLogicSorter&amp;quot;) HASH(&amp;quot;Sorter Corn&amp;quot;) ReferenceId Maximum&lt;br /&gt;
ble r1 ninf ra&lt;br /&gt;
#use the ReferenceId to set that sorter&#039;s mode.&lt;br /&gt;
sd r1 Mode 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the 6 configuration pins makes it easy to write reusable MIPS&lt;br /&gt;
scripts where the installer uses the pins to select the devices that&lt;br /&gt;
will be managed.&lt;br /&gt;
&lt;br /&gt;
Using batch-name instructions frees you from the hassle of adjusting&lt;br /&gt;
the pins, but requires you to name the devices via the [[Labeller]].  It&lt;br /&gt;
can also allow you to control more than 6 devices.&lt;br /&gt;
&lt;br /&gt;
=== Batch instructions ===&lt;br /&gt;
&lt;br /&gt;
lb, lbs, sb, sbs&lt;br /&gt;
lbn, lbns, sbn (missing: sbns)&lt;br /&gt;
&lt;br /&gt;
=== foreign device instructions ===&lt;br /&gt;
&lt;br /&gt;
clrd, getd, putd,&lt;br /&gt;
ld, sd, (no slot access yet)&lt;br /&gt;
&lt;br /&gt;
=Instructions=&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
See [[IC10/instructions]]&lt;br /&gt;
&lt;br /&gt;
{{:IC10/instructions}}&lt;br /&gt;
&lt;br /&gt;
[https://www.cs.tufts.edu/comp/140/lectures/Day_3/mips_summary.pdf Other examples]&lt;br /&gt;
&lt;br /&gt;
== Conditional functions cheatsheet ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! suffix !! description !! branch to line !! branch and store return address !! relative jump to line !! set register&lt;br /&gt;
|-&lt;br /&gt;
| prefix: ||  || b- || b-al || br- || s-&lt;br /&gt;
|-&lt;br /&gt;
|  || unconditional || j    || jal    || jr    || &lt;br /&gt;
|-&lt;br /&gt;
| -eq  || if a == b || beq  || beqal  || breq  || seq&lt;br /&gt;
|-&lt;br /&gt;
| -eqz || if a == 0 || beqz || beqzal || breqz || seqz&lt;br /&gt;
|-&lt;br /&gt;
| -ge  || if a &amp;gt;= b || bge  || bgeal  || brge  || sge&lt;br /&gt;
|-&lt;br /&gt;
| -gez || if a &amp;gt;= 0 || bgez || bgezal || brgez || sgez&lt;br /&gt;
|-&lt;br /&gt;
| -gt  || if a &amp;gt; b  || bgt  || bgtal  || brgt  || sgt&lt;br /&gt;
|-&lt;br /&gt;
| -gtz || if a &amp;gt; 0  || bgtz || bgtzal || brgtz || sgtz&lt;br /&gt;
|-&lt;br /&gt;
| -le  || if a &amp;lt;= b || ble  || bleal  || brle  || sle&lt;br /&gt;
|-&lt;br /&gt;
| -lez || if a &amp;lt;= 0 || blez || blezal || brlez || slez&lt;br /&gt;
|-&lt;br /&gt;
| -lt  || if a &amp;lt; b  || blt  || bltal  || brlt  || slt&lt;br /&gt;
|-&lt;br /&gt;
| -ltz || if a &amp;lt; 0  || bltz || bltzal || brltz || sltz&lt;br /&gt;
|-&lt;br /&gt;
| -ne  || if a != b || bne  || bneal  || brne  || sne&lt;br /&gt;
|-&lt;br /&gt;
| -nez || if a != 0 || bnez || bnezal || brnez || snez&lt;br /&gt;
|-&lt;br /&gt;
| -nan || if a == NaN || bnan ||  || brnan || snan&lt;br /&gt;
|-&lt;br /&gt;
| -nanz || if a != NaN ||  ||  || || snanz&lt;br /&gt;
|-&lt;br /&gt;
| -dns || if device d is not set          || bdns || bdnsal || brdns || sdns&lt;br /&gt;
|-&lt;br /&gt;
| -dse || if device d is set              || bdse || bdseal || brdse || sdse&lt;br /&gt;
|-&lt;br /&gt;
| -ap  || if a approximately equals b     || bap  || bapal  || brap  || sap&lt;br /&gt;
|-&lt;br /&gt;
| -apz || if a approximately equals 0     || bapz || bapzal || brapz || sapz&lt;br /&gt;
|-&lt;br /&gt;
| -na  || if a not approximately equals b || bna  || bnaal  || brna  || sna&lt;br /&gt;
|-&lt;br /&gt;
| -naz || if a not approximately equals 0 || bnaz || bnazal || brnaz || snaz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All &amp;lt;code&amp;gt;b-&amp;lt;/code&amp;gt; commands require target line as last argument, all &amp;lt;code&amp;gt;s-&amp;lt;/code&amp;gt; commands require register to store result as first argument. All &amp;lt;code&amp;gt;br-&amp;lt;/code&amp;gt; commands require number to jump relatively as last argument. e.g. &amp;lt;code&amp;gt;breq a b 3&amp;lt;/code&amp;gt; means if a=b then jump to 3 lines after.&lt;br /&gt;
&lt;br /&gt;
All approximate functions require additional argument denoting how close two numbers need to be considered equal. E.g.: &amp;lt;code&amp;gt;sap r0 100 101 0.01&amp;lt;/code&amp;gt; will consider 100 and 101 almost equal (not more than 1%=0.01 different) and will set r0 to 1. The exact formula is &amp;lt;code&amp;gt;if abs(a - b) &amp;lt;= max(c * max(abs(a), abs(b)), float.epsilon * 8)&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;-ap&amp;lt;/code&amp;gt; and is similar for other approximate functions.&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Machine_epsilon&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
  FLT_EPSILON = 2^(−23) ≈ 1.19e−07;        &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;float (32 bit)&amp;lt;/span&amp;gt;&lt;br /&gt;
  DBL_EPSILON = 2^(−52) ≈ 2.20e−16;        &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;double (64 bit)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;if abs(100 - 101) &amp;lt;= max(0.01 * max(abs(100), abs(101)), float.epsilon * 8)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;if abs(-1) &amp;lt;= max(0.01 * 101), float.epsilon * 8)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;if 1 &amp;lt;= max(0.01 * 101, float.epsilon * 8)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  if 1 &amp;lt;= max(1.01, FLT_EPSILON * 8)&lt;br /&gt;
  if 1 &amp;lt;= max(1.01, DBL_EPSILON * 8)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 1.19e−07 * 8)&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 2.20e−16 * 8)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 0.000000952)&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 0.00000000000000176)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;if 1 &amp;lt;= 1.01   TRUE   1&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;if 1 &amp;lt;= 1.01   TRUE   1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Device Variables==&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Activate&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Activate&lt;br /&gt;
:1 if device is activated (usually means running), otherwise 0&lt;br /&gt;
:&amp;lt;code&amp;gt;l r0 d0 Activate # sets r0 to 1 if on or 0 if off&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;AirRelease&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;AirRelease&lt;br /&gt;
&amp;lt;div id=&amp;quot;Charge&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Charge&lt;br /&gt;
:    The current charge the device has.&lt;br /&gt;
&amp;lt;div id=&amp;quot;CLearMemory&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ClearMemory&lt;br /&gt;
:    When set to 1, clears the counter memory (e.g. ExportCount).  Will set itself back to 0 when triggered.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Color&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Color&lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#212AA5;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;0 (or lower) = Blue&lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#7B7B7B;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;1 = Grey &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#3F9B39;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;2 = Green &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#FF662B;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;3 = Orange &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#E70200;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;4 = Red &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#FFBC1B;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;5 = Yellow &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#E7E7E7;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;6 = White &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#080908;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;7 = Black &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#633C2B;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;8 = Brown &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#63633F;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;9 = Khaki &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#E41C99;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;10 = Pink &lt;br /&gt;
:    &amp;lt;div style=&amp;quot;display: inline-block; vertical-align: top; height: 20px; width: 20px; border: 1px solid black; margin-right: 5px; background-color:#732CA7;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;11 (or higher) = Purple &lt;br /&gt;
&amp;lt;div id=&amp;quot;CompletionRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;CompletionRatio&lt;br /&gt;
&amp;lt;div id=&amp;quot;ElevatorLevel&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ElevatorLevel&lt;br /&gt;
&amp;lt;div id=&amp;quot;ElevatorSpeed&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ElevatorSpeed&lt;br /&gt;
&amp;lt;div id=&amp;quot;Error&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Error&lt;br /&gt;
:	1 if device is in error state, otherwise 0&lt;br /&gt;
&amp;lt;div id=&amp;quot;ExportCount&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ExportCount&lt;br /&gt;
:    How many items exporfted since last ClearMemory.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Filtration&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Filtration&lt;br /&gt;
:	The current state of the filtration system.  For example filtration = 1 for a Hardsuit when filtration is On.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Harvest&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Harvest&lt;br /&gt;
:	Performs the harvesting action for any plant based machinery.&lt;br /&gt;
:  &amp;lt;code&amp;gt;s d0 Harvest 1 # Performs 1 harvest action on device d0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;Horizontal&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Horizontal&lt;br /&gt;
&amp;lt;div id=&amp;quot;HorizontalRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;HorizontalRatio&lt;br /&gt;
&amp;lt;div id=&amp;quot;Idle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Idle&lt;br /&gt;
&amp;lt;div id=&amp;quot;ImportCount&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ImportCount&lt;br /&gt;
&amp;lt;div id=&amp;quot;Lock&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Lock&lt;br /&gt;
&amp;lt;div id=&amp;quot;Maximum&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Maximum&lt;br /&gt;
&amp;lt;div id=&amp;quot;Mode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Mode&lt;br /&gt;
&amp;lt;div id=&amp;quot;On&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;On&lt;br /&gt;
&amp;lt;div id=&amp;quot;Open&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Open&lt;br /&gt;
&amp;lt;div id=&amp;quot;Output&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Output&lt;br /&gt;
&amp;lt;div id=&amp;quot;Plant&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Plant&lt;br /&gt;
:    Performs the planting operation for any plant based machinery.&lt;br /&gt;
:  &amp;lt;code&amp;gt;s d0 Plant 1 # Plants one crop in device d0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;PositionX&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PositionX&lt;br /&gt;
&amp;lt;div id=&amp;quot;PositionY&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PositionY&lt;br /&gt;
&amp;lt;div id=&amp;quot;PositionZ&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PositionZ&lt;br /&gt;
&amp;lt;div id=&amp;quot;Power&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Power&lt;br /&gt;
&amp;lt;div id=&amp;quot;PowerActual&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PowerActual&lt;br /&gt;
&amp;lt;div id=&amp;quot;PowerPotential&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PowerPotential&lt;br /&gt;
&amp;lt;div id=&amp;quot;PowerRequired&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PowerRequired&lt;br /&gt;
&amp;lt;div id=&amp;quot;Pressure&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Pressure&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureExternal&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureExternal&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureInteral&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureInteral&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureSetting&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureSetting&lt;br /&gt;
&amp;lt;div id=&amp;quot;Quantity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Quantity&lt;br /&gt;
:	Total quantity in the device.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Ratio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Ratio&lt;br /&gt;
:	Context specific value depending on device, 0 to 1 based ratio.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioCarbonDioxide&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioCarbonDioxide&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioNitrogen&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioNitrogen&lt;br /&gt;
:	The ratio of nitrogen in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioOxygen&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioOxygen&lt;br /&gt;
:	The ratio of oxygen in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioPollutant&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioPollutant&lt;br /&gt;
:	The ratio of pollutant in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioVolatiles&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioVolatiles&lt;br /&gt;
:	The ratio of volatiles in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioWater&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioWater&lt;br /&gt;
:	The ratio of water in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reagents&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Reagents&lt;br /&gt;
&amp;lt;div id=&amp;quot;RecipeHash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RecipeHash&lt;br /&gt;
&amp;lt;div id=&amp;quot;RequestHash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ReferenceId&lt;br /&gt;
:    Unique Identifier of a Device, this value is different for every device in a save.&lt;br /&gt;
&amp;lt;div id=&amp;quot;ReferenceId&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RequestHash&lt;br /&gt;
&amp;lt;div id=&amp;quot;RequiredPower&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RequiredPower&lt;br /&gt;
&amp;lt;div id=&amp;quot;Setting&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Setting&lt;br /&gt;
&amp;lt;div id=&amp;quot;SolarAngle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;SolarAngle&lt;br /&gt;
:    Solar angle of the device.&lt;br /&gt;
:  &amp;lt;code&amp;gt;l r0 d0 SolarAngle # Sets r0 to the solar angle of d0.&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;Temperature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Temperature&lt;br /&gt;
&amp;lt;div id=&amp;quot;TemperatureSettings&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;TemperatureSettings&lt;br /&gt;
&amp;lt;div id=&amp;quot;TotalMoles&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;TotalMoles&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityMagnitude&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityMagnitude&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityRelativeX&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityRelativeX&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityRelativeY&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityRelativeY&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityRelativeZ&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityRelativeZ&lt;br /&gt;
&amp;lt;div id=&amp;quot;Vertical&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Vertical&lt;br /&gt;
:	Vertical setting of the device.&lt;br /&gt;
&amp;lt;div id=&amp;quot;VerticalRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VerticalRatio&lt;br /&gt;
:	Ratio of vertical setting for device.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Volume&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Volume&lt;br /&gt;
:	Returns the device atmosphere volume&lt;br /&gt;
&lt;br /&gt;
==Slot Variables==&lt;br /&gt;
In general (always?) slots are assigned as follows.&lt;br /&gt;
:Slot 0: Import&lt;br /&gt;
:Slot 1: Export&lt;br /&gt;
:Slot 2: Inside Machine&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Occupied&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Occupied&lt;br /&gt;
:&amp;lt;code&amp;gt;ls r0 d0 2 Occupied #Stores 1 in r0 if d0 has more seeds&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls vOccupied dThisVictim 2 Occupied #stores 1 in vOccupied if dThisVictim has more seeds&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;OccupantHash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;OccupantHash&lt;br /&gt;
&amp;lt;div id=&amp;quot;Quantity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Quantity&lt;br /&gt;
&amp;lt;div id=&amp;quot;Damage&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Damage&lt;br /&gt;
&amp;lt;div id=&amp;quot;Efficiency&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Efficiency&lt;br /&gt;
&amp;lt;div id=&amp;quot;Health&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Health&lt;br /&gt;
&amp;lt;div id=&amp;quot;Growth&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Growth&lt;br /&gt;
:&amp;lt;code&amp;gt;ls r0 d0 0 Growth # Store the numerical growth stage of d0 in r0&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;div id=&amp;quot;Pressure&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Pressure&lt;br /&gt;
&amp;lt;div id=&amp;quot;Temperature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Temperature&lt;br /&gt;
&amp;lt;div id=&amp;quot;Charge&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Charge&lt;br /&gt;
&amp;lt;div id=&amp;quot;ChargeRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ChargeRatio&lt;br /&gt;
&amp;lt;div id=&amp;quot;Class&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Class&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureWaste&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureWaste&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureAir&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureAir&lt;br /&gt;
&amp;lt;div id=&amp;quot;MaxQuantity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;MaxQuantity&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Mature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Mature&lt;br /&gt;
:&amp;lt;code&amp;gt;ls r0 d0 0 Mature # Store 1 in r0 if d0 has a mature crop&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop&amp;lt;/code&amp;gt;&lt;br /&gt;
;ReferenceId&lt;br /&gt;
:    Unique Identifier of a Device, this value is different for every device in a save.&lt;br /&gt;
&amp;lt;div id=&amp;quot;ReferenceId&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
Previous examples were obsolete due to game changes, or confusing, they have been moved into the Discussions section&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvie automation===&lt;br /&gt;
This script uses the batch instruction &amp;lt;code&amp;gt;sb ...&amp;lt;/code&amp;gt; to control all Harvie devices on the network. But only one Harvie and one Tray will be the &#039;&#039;master&#039;&#039; and have their values read, the rest of the Harvies will repeat exactly what this unit does. Some problems with this design is that different types of crops mature at different speeds, and if seeds were manually planted and the master unit recieved the first seed, the harvesting action will be performed too early on all the other plants since they are growing a few seconds slower.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:Expand, Automated Harvie Script}}&amp;quot; data-collapsetext=&amp;quot;{{int:Collapse, Automated Harvie Script}}&amp;quot;&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
alias dHarvie d0&lt;br /&gt;
alias dTray d1&lt;br /&gt;
&lt;br /&gt;
alias rHarvieHash r8&lt;br /&gt;
alias rTrayHash r9&lt;br /&gt;
l rHarvieHash dHarvie PrefabHash&lt;br /&gt;
l rTrayHash dTray PrefabHash&lt;br /&gt;
&lt;br /&gt;
main:&lt;br /&gt;
yield&lt;br /&gt;
#read plant data from the Tray&lt;br /&gt;
ls r0 dTray 0 Mature&lt;br /&gt;
#harvestable plants return 1, young plants return 0&lt;br /&gt;
#nothing planted returns -1&lt;br /&gt;
beq r0 -1 plantCrop&lt;br /&gt;
beq r0 1 harvestCrop&lt;br /&gt;
ls r0 dTray 0 Seeding&lt;br /&gt;
#seeds available returns 1, all seeds picked returns 0&lt;br /&gt;
#plants too young or old for seeds returns -1&lt;br /&gt;
beq r0 1 harvestCrop&lt;br /&gt;
j main&lt;br /&gt;
&lt;br /&gt;
plantCrop:&lt;br /&gt;
#stop the planting if no seeds available&lt;br /&gt;
#otherwise it will plant nothing repeatedly&lt;br /&gt;
ls r0 dHarvie 0 Occupied&lt;br /&gt;
beq r0 0 main&lt;br /&gt;
sb rHarvieHash Plant 1&lt;br /&gt;
j main&lt;br /&gt;
&lt;br /&gt;
harvestCrop:&lt;br /&gt;
sb rHarvieHash Harvest 1&lt;br /&gt;
j main&lt;br /&gt;
&lt;br /&gt;
### End Script ###&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===Solar Panel 2-axis tracking===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:Expand, Solar Panel 2-axis tracking}}&amp;quot; data-collapsetext=&amp;quot;{{int:Collapse, Solar Panel 2-axis tracking}}&amp;quot;&amp;gt;&lt;br /&gt;
{{ICCode|&lt;br /&gt;
#2 Axis Solar Tracking adapted from CowsAreEvil.&lt;br /&gt;
#Place all panels in uniform manner.&lt;br /&gt;
#Set one to 15 Vertical(Min value). 0 Horizontal.&lt;br /&gt;
#Take note direction panel faces.&lt;br /&gt;
#Place daylight sensor flat pointing in the direction&lt;br /&gt;
#the panel now faces. (Cable port facing opposite)&lt;br /&gt;
&lt;br /&gt;
#Alias the sensor to d0&lt;br /&gt;
alias sensor d0&lt;br /&gt;
&lt;br /&gt;
# define the Panel variants&lt;br /&gt;
define Heavy -934345724&lt;br /&gt;
define HeavyDual -1545574413&lt;br /&gt;
define Solar -2045627372&lt;br /&gt;
define SolarDual -539224550&lt;br /&gt;
&lt;br /&gt;
start:&lt;br /&gt;
yield&lt;br /&gt;
#Check for daylight.&lt;br /&gt;
l r0 sensor Activate&lt;br /&gt;
beqz r0 reset&lt;br /&gt;
#Read the Horizontal data.&lt;br /&gt;
l r0 sensor Horizontal&lt;br /&gt;
#Set batch to the panels.&lt;br /&gt;
sb Heavy Horizontal r0&lt;br /&gt;
sb HeavyDual Horizontal r0&lt;br /&gt;
sb Solar Horizontal r0&lt;br /&gt;
sb SolarDual Horizontal r0&lt;br /&gt;
#Read the Vertical data and subtract 90&lt;br /&gt;
l r0 sensor Vertical&lt;br /&gt;
sub r0 90 r0&lt;br /&gt;
#Set batch to the panels.&lt;br /&gt;
sb Heavy Vertical r0&lt;br /&gt;
sb HeavyDual Vertical r0&lt;br /&gt;
sb Solar Vertical r0&lt;br /&gt;
sb SolarDual Vertical r0&lt;br /&gt;
j start&lt;br /&gt;
&lt;br /&gt;
reset:&lt;br /&gt;
yield&lt;br /&gt;
sb Heavy Horizontal 270 #Edit this to face sunrise.&lt;br /&gt;
sb HeavyDual Horizontal 270 #Edit this&lt;br /&gt;
sb Solar Horizontal 270 #Edit this&lt;br /&gt;
sb SolarDual Horizontal 270 #Edit this&lt;br /&gt;
sb Heavy Vertical 0&lt;br /&gt;
sb HeavyDual Vertical 0&lt;br /&gt;
sb Solar Vertical 0&lt;br /&gt;
sb SolarDual Vertical 0&lt;br /&gt;
sleep 10&lt;br /&gt;
j start&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===Example experiment: how many lines of code are executed each tick?===&lt;br /&gt;
To determine this, a script without &amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt; will be used. It should have as few lines as possible (so no labels are used, but a reset value at the top will be needed) and count the number of lines, the IC Housing will be used to display the result.&lt;br /&gt;
{{ICCode|&lt;br /&gt;
move r0 1   #the first line has number 0&lt;br /&gt;
add r0 r0 3&lt;br /&gt;
s db Setting r0&lt;br /&gt;
j 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result (the numbers appears every 0.5 seconds):&lt;br /&gt;
&amp;lt;br&amp;gt;127&lt;br /&gt;
&amp;lt;br&amp;gt;256 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;385 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;511 (+126)&lt;br /&gt;
&amp;lt;br&amp;gt;640 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;769 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;895 (+126)&lt;br /&gt;
&amp;lt;br&amp;gt;1024 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;1153 (+129)&lt;br /&gt;
&lt;br /&gt;
There is a repeating +129, +129, +126 sequence, a hint that the real value is 128. Which also happens to be the number of lines in a script, which makes sense. A variation of this experiment will show that empty rows are also counted towards this number.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Links=&lt;br /&gt;
----&lt;br /&gt;
* Stationeers online IC10 Emulators so you can develop your code without repeatedly dying in game&lt;br /&gt;
** [https://ic10.dev/] Stationeers Code Simulator&lt;br /&gt;
** [https://ic10emu.dev] Stationeers IC10 Editor &amp;amp; Emulator - A feature packed code editor for Stationeers IC10 code, paired with a robust debugger and emulator. Edit, test, and share code.&lt;br /&gt;
** [https://stationeering.com/tools/ic] Stationeering provides a simulation of the IC10 chip inside Stationeers. IDE with error checking, full visibility of stack and registers.&lt;br /&gt;
* [http://www.easy68k.com/] EASy68K is a 68000 Structured Assembly Language IDE.&lt;br /&gt;
* [https://marketplace.visualstudio.com/items?itemName=Traineratwot.stationeers-ic10] syntax highlighting for IC10 MIPS for Visual Studio Code (updated Feb 10th 2022)&lt;br /&gt;
* [https://pastebin.com/6Uw1KSRN] syntax highlighting for IC10 MIPS for KDE kwrite/kate text editor&lt;br /&gt;
* [https://drive.google.com/file/d/1yEsJ-u94OkuMQ8K6fY7Ja1HNpLcAdjo_/view] syntax highlighting for IC10 MIPS for Notepad++&lt;br /&gt;
* [https://drive.google.com/file/d/1Xrv5U0ZI5jDcPv7yX7EAAxaGk5hKP0xO/view?usp=sharing] syntax highlighting for IC10 MIPS for Notepad++ (updated: 11/08/2022)&lt;br /&gt;
* [https://pastebin.com/3kmGy0NN] syntax highlighting for IC10 MIPS for Notepad++ (updated: 23/03/2024)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Index=&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+Functions &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
*[[#abs|abs]]&lt;br /&gt;
*[[#add|add]]&lt;br /&gt;
*[[#alias|alias]]&lt;br /&gt;
*[[#and|and]]&lt;br /&gt;
*[[#beq|beq]]&lt;br /&gt;
*[[#bgez|bgez]]&lt;br /&gt;
*[[#bgtz|bgtz]]&lt;br /&gt;
*[[#blez|blez]]&lt;br /&gt;
*[[#bltz|bltz]]&lt;br /&gt;
*[[#bne|bne]]&lt;br /&gt;
*[[#breq|breq]]&lt;br /&gt;
*[[#brgez|brgez]]&lt;br /&gt;
*[[#brgtz|brgtz]]&lt;br /&gt;
*[[#brlez|brlez]]&lt;br /&gt;
*[[#brltz|brltz]]&lt;br /&gt;
*[[#brne|brne]]&lt;br /&gt;
*[[#ceil|cell]]&lt;br /&gt;
*[[#div|div]]&lt;br /&gt;
*[[#exp|exp]]&lt;br /&gt;
*[[#floor|floor]]&lt;br /&gt;
*[[#j|j]]&lt;br /&gt;
*[[#jr|jr]]&lt;br /&gt;
*[[#l|l]]&lt;br /&gt;
*[[#log|log]]&lt;br /&gt;
*[[#ls|ls]]&lt;br /&gt;
*[[#max|max]]&lt;br /&gt;
*[[#min|min]]&lt;br /&gt;
*[[#mod|mod]]&lt;br /&gt;
*[[#move|move]]&lt;br /&gt;
*[[#mul|mul]]&lt;br /&gt;
*[[#nor|nor]]&lt;br /&gt;
*[[#or|or]]&lt;br /&gt;
*[[#rand|rand]]&lt;br /&gt;
*[[#round|round]]&lt;br /&gt;
*[[#s|s]]&lt;br /&gt;
*[[#slt|slt]]&lt;br /&gt;
*[[#sqrt|sqrt]]&lt;br /&gt;
*[[#sub|sub]]&lt;br /&gt;
*[[#trunc|trunc]]&lt;br /&gt;
*[[#xor|xor]]xor&lt;br /&gt;
*[[#yield|yield]]&lt;br /&gt;
*[[##|#]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|+Device Variables &lt;br /&gt;
&amp;lt;div  class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
*[[#Activate|Activate]]&lt;br /&gt;
*[[#AirRelease|AirRelease]]&lt;br /&gt;
*[[#Charge|Charge]]&lt;br /&gt;
*[[#CLearMemory|CLearMemory]]&lt;br /&gt;
*[[#Color|Color]]&lt;br /&gt;
*[[#CompletionRatio|CompletionRatio]]&lt;br /&gt;
*[[#ElevatorLevel|ElevatorLevel]]&lt;br /&gt;
*[[#ElevatorSpeed|ElevatorSpeed]]&lt;br /&gt;
*[[#Error|Error]]&lt;br /&gt;
*[[#ExportCount|ExportCount]]&lt;br /&gt;
*[[#Filtration|Filtration]]&lt;br /&gt;
*[[#Harvest|Harvest]]&lt;br /&gt;
*[[#Horizontal|Horizontal]]&lt;br /&gt;
*[[#HorizontalRatio|HorizontalRatio]]&lt;br /&gt;
*[[#Idle|Idle]]&lt;br /&gt;
*[[#ImportCount|ImportCount]]&lt;br /&gt;
*[[#Lock|Lock]]&lt;br /&gt;
*[[#Maximum|Maximum]]&lt;br /&gt;
*[[#Mode|Mode]]&lt;br /&gt;
*[[#On|On]]&lt;br /&gt;
*[[#Open|Open]]&lt;br /&gt;
*[[#Output|Output]]&lt;br /&gt;
*[[#Plant|Plant]]&lt;br /&gt;
*[[#PositionX|PositionX]]&lt;br /&gt;
*[[#PositionY|PositionY]]&lt;br /&gt;
*[[#PositionZ|PositionZ]]&lt;br /&gt;
*[[#Power|Power]]&lt;br /&gt;
*[[#PowerActual|PowerActual]]&lt;br /&gt;
*[[#PowerPotential|PowerPotential]]&lt;br /&gt;
*[[#PowerRequired|PowerRequired]]&lt;br /&gt;
*[[#Pressure|Pressure]]&lt;br /&gt;
*[[#PressureExternal|PressureExternal]]&lt;br /&gt;
*[[#PressureInteral|PressureInteral]]&lt;br /&gt;
*[[#PressureSetting|PressureSetting]]&lt;br /&gt;
*[[#Quantity|Quantity]]&lt;br /&gt;
*[[#Ratio|Ratio]]&lt;br /&gt;
*[[#RatioCarbonDioxide|RatioCarbonDioxide]]&lt;br /&gt;
*[[#RatioNitrogen|RatioNitrogen]]&lt;br /&gt;
*[[#RatioOxygen|RatioOxygen]]&lt;br /&gt;
*[[#RatioPollutant|RatioPollutant]]&lt;br /&gt;
*[[#RatioVolatiles|RatioVolatiles]]&lt;br /&gt;
*[[#RatioWater|RatioWater]]&lt;br /&gt;
*[[#Reagents|Reagents]]&lt;br /&gt;
*[[#RecipeHash|RecipeHash]]&lt;br /&gt;
*[[#RequestHash|RequestHash]]&lt;br /&gt;
*[[#RequiredPower|RequiredPower]]&lt;br /&gt;
*[[#Setting|Setting]]&lt;br /&gt;
*[[#SolarAngle|SolarAngle]]&lt;br /&gt;
*[[#Temperature|Temperature]]&lt;br /&gt;
*[[#TemperatureSettings|TemperatureSettings]]&lt;br /&gt;
*[[#TotalMoles|TotalMoles]]&lt;br /&gt;
*[[#VelocityMagnitude|VelocityMagnitude]]&lt;br /&gt;
*[[#VelocityRelativeX|VelocityRelativeX]]&lt;br /&gt;
*[[#VelocityRelativeY|VelocityRelativeY]]&lt;br /&gt;
*[[#VelocityRelativeZ|VelocityRelativeZ]]&lt;br /&gt;
*[[#Vertical|Vertical]]&lt;br /&gt;
*[[#VerticalRatio|VerticalRatio]]&lt;br /&gt;
*[[#Volume|Volume]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|+Slot Variables &lt;br /&gt;
&amp;lt;div  class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
*[[#Occupied|Occupied]]&lt;br /&gt;
*[[#OccupantHash|OccupantHash]]&lt;br /&gt;
*[[#Quantity|Quantity]]&lt;br /&gt;
*[[#Damage|Damage]]&lt;br /&gt;
*[[#Efficiency|Efficiency]]&lt;br /&gt;
*[[#Health|Health]]&lt;br /&gt;
*[[#Growth|Growth]]&lt;br /&gt;
*[[#Pressure|Pressure]]&lt;br /&gt;
*[[#Temperature|Temperature]]&lt;br /&gt;
*[[#Charge|Charge]]&lt;br /&gt;
*[[#ChargeRatio|ChargeRatio]]&lt;br /&gt;
*[[#Class|Class]]&lt;br /&gt;
*[[#PressureWaste|PressureWaste]]&lt;br /&gt;
*[[#PressureAir|PressureAir]]&lt;br /&gt;
*[[#MaxQuantity|MaxQuantity]]&lt;br /&gt;
*[[#Mature|Mature]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=User:Duke&amp;diff=21726</id>
		<title>User:Duke</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=User:Duke&amp;diff=21726"/>
		<updated>2024-07-24T16:32:16Z</updated>

		<summary type="html">&lt;p&gt;Duke: user page creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, I&#039;m Duke, this is my page.&lt;br /&gt;
&lt;br /&gt;
Sometimes known as dukeironhelm or Duke_Ironhelm.&lt;br /&gt;
&lt;br /&gt;
Also see: https://duke-ironhelm.neocities.org/&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Cryotube&amp;diff=21725</id>
		<title>Cryotube</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Cryotube&amp;diff=21725"/>
		<updated>2024-07-24T16:27:51Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Reviving Dead Players */ source&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
[[Category:Machines]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Cryotube)&lt;br /&gt;
 | createdwith = [[Hydraulic Pipe Bender]] &#039;&#039;&#039;MK2&#039;&#039;&#039;&lt;br /&gt;
 | cost        = 10g [[Gold]], 10g [[Copper]], 35g [[Steel]], 5g [[Silver]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Cryotube&lt;br /&gt;
 | image            = [[File:Cyrotube.jpg|133KBpx|frameless|center|Cyrotube]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Cryotube)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Kit (Cryotube)]]&lt;br /&gt;
}}&lt;br /&gt;
== Description == &lt;br /&gt;
A Cryotube can heal players and organs as well as revive dead players, the cryotube also functions as a [[sleeper]]; has one gas input, one power input, and one data input.&lt;br /&gt;
&lt;br /&gt;
When opened the cryotube will expel its gas from the tube into the room it is in, it does not appear to backflow.&lt;br /&gt;
&lt;br /&gt;
=== Healing Players ===&lt;br /&gt;
For healing, feed the cryotube any breathable air mix (Pure 02, O2/N2 mix etc.) at room temperature (0-30C). this will heal a player and repair damaged lungs. Be sure to have a system to filter out the C02.&lt;br /&gt;
&lt;br /&gt;
=== Reviving Dead Players ===&lt;br /&gt;
To Revive a player, the cryotube must be fed more than 80Kpa of [[Nitrogen]] at a temperature of less than -150C, other gasses can be included so long as there is at least a partial pressure of 80kpa Nitrogen.&amp;lt;ref&amp;gt;[https://discord.com/channels/276525882049429515/811149668729356350/1138252121377079367 Discord] it&#039;s expecting 80 kPa of N2 at -150C - Risu&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
&lt;br /&gt;
{{Data Parameters}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Open || Boolean || Opens the CryoTube, when set to 1. Closes it, when set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Turns the CryoTube on, when set to 1. Turns it off, when set to 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Data Outputs}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Power || Boolean || Returns whether the CryoTube is turned on and receives power. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Open || Boolean || Returns whether the CryoTube is open. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Error || Boolean || Returns whether the CryoTube is flashing an error. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Returns whether the CryoTube is turned on. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| RequiredPower || Integer || Returns the current amount of power, required by the CryoTube, in watts.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== References === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Cryotube&amp;diff=21724</id>
		<title>Cryotube</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Cryotube&amp;diff=21724"/>
		<updated>2024-07-24T16:14:04Z</updated>

		<summary type="html">&lt;p&gt;Duke: fixed cost&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
[[Category:Machines]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Cryotube)&lt;br /&gt;
 | createdwith = [[Hydraulic Pipe Bender]] &#039;&#039;&#039;MK2&#039;&#039;&#039;&lt;br /&gt;
 | cost        = 10g [[Gold]], 10g [[Copper]], 35g [[Steel]], 5g [[Silver]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Cryotube&lt;br /&gt;
 | image            = [[File:Cyrotube.jpg|133KBpx|frameless|center|Cyrotube]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Cryotube)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Kit (Cryotube)]]&lt;br /&gt;
}}&lt;br /&gt;
== Description == &lt;br /&gt;
A Cryotube can heal players and organs as well as revive dead players, the cryotube also functions as a [[sleeper]]; has one gas input, one power input, and one data input.&lt;br /&gt;
&lt;br /&gt;
When opened the cryotube will expel its gas from the tube into the room it is in, it does not appear to backflow.&lt;br /&gt;
&lt;br /&gt;
=== Healing Players ===&lt;br /&gt;
For healing, feed the cryotube any breathable air mix (Pure 02, O2/N2 mix etc.) at room temperature (0-30C). this will heal a player and repair damaged lungs. Be sure to have a system to filter out the C02.&lt;br /&gt;
&lt;br /&gt;
=== Reviving Dead Players ===&lt;br /&gt;
To Revive a player, the cryotube must be fed more than 80Kpa of [[Nitrogen]] at a temperature of less than -150C, other gasses can be included so long as there is at least a partial pressure of 80kpa Nitrogen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
&lt;br /&gt;
{{Data Parameters}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Open || Boolean || Opens the CryoTube, when set to 1. Closes it, when set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Turns the CryoTube on, when set to 1. Turns it off, when set to 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Data Outputs}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Power || Boolean || Returns whether the CryoTube is turned on and receives power. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Open || Boolean || Returns whether the CryoTube is open. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Error || Boolean || Returns whether the CryoTube is flashing an error. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Returns whether the CryoTube is turned on. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| RequiredPower || Integer || Returns the current amount of power, required by the CryoTube, in watts.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== References === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Cryotube&amp;diff=21723</id>
		<title>Cryotube</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Cryotube&amp;diff=21723"/>
		<updated>2024-07-24T16:12:43Z</updated>

		<summary type="html">&lt;p&gt;Duke: Changes to how information is displayed, removing outdated information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
[[Category:Machines]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Kit (Cryotube)&lt;br /&gt;
 | createdwith = [[Hydraulic Pipe Bender]] &#039;&#039;&#039;MK2&#039;&#039;&#039;&lt;br /&gt;
 | cost        = 10g [[Gold]], 10g [[Copper]], 10g [[Steel]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Cryotube&lt;br /&gt;
 | image            = [[File:Cyrotube.jpg|133KBpx|frameless|center|Cyrotube]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Cryotube)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
 | item_rec1        = [[Kit (Cryotube)]]&lt;br /&gt;
}}&lt;br /&gt;
== Description == &lt;br /&gt;
A Cryotube can heal players and organs as well as revive dead players, the cryotube also functions as a [[sleeper]]; has one gas input, one power input, and one data input.&lt;br /&gt;
&lt;br /&gt;
When opened the cryotube will expel its gas from the tube into the room it is in, it does not appear to backflow.&lt;br /&gt;
&lt;br /&gt;
=== Healing Players ===&lt;br /&gt;
For healing, feed the cryotube any breathable air mix (Pure 02, O2/N2 mix etc.) at room temperature (0-30C). this will heal a player and repair damaged lungs. Be sure to have a system to filter out the C02.&lt;br /&gt;
&lt;br /&gt;
=== Reviving Dead Players ===&lt;br /&gt;
To Revive a player, the cryotube must be fed more than 80Kpa of [[Nitrogen]] at a temperature of less than -150C, other gasses can be included so long as there is at least a partial pressure of 80kpa Nitrogen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
&lt;br /&gt;
{{Data Parameters}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Open || Boolean || Opens the CryoTube, when set to 1. Closes it, when set to 0.&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Turns the CryoTube on, when set to 1. Turns it off, when set to 0.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Data Outputs}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Output Name !! Data Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Power || Boolean || Returns whether the CryoTube is turned on and receives power. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Open || Boolean || Returns whether the CryoTube is open. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| Error || Boolean || Returns whether the CryoTube is flashing an error. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| On || Boolean || Returns whether the CryoTube is turned on. (0 for no, 1 for yes)&lt;br /&gt;
|-&lt;br /&gt;
| RequiredPower || Integer || Returns the current amount of power, required by the CryoTube, in watts.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== References === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Powered_Chutes&amp;diff=21672</id>
		<title>Powered Chutes</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Powered_Chutes&amp;diff=21672"/>
		<updated>2024-07-19T22:05:49Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Chute Digital Flip Flop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Import/Export]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | image       = [[File:ItemKitPoweredChute.png]]&lt;br /&gt;
 | name        = Kit (Powered Chutes)&lt;br /&gt;
 | createdwith = [[Autolathe]], [[Hydraulic Pipe Bender]]&lt;br /&gt;
 | cost        = 3g [[Iron]], 2g [[Electrum]], 2g [[Constantan]]&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Chute&lt;br /&gt;
 | placed_with_item = [[Kit (Powered Chutes)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Wrench]]&lt;br /&gt;
 | item_rec1        = [[Kit (Powered Chutes)]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute =&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Used to transport items. The Kit can be used to create 5 different variants, all of which require power and can connect to data ports. &lt;br /&gt;
&lt;br /&gt;
* Chute Digital Valve Right: Allows a certain number of items through, then closes until reopened either manually or via data network.&lt;br /&gt;
* Chute Digital Valve Left: Allows a certain number of items through, then closes until reopened either manually or via data network.&lt;br /&gt;
* Chute Digital Flip Flop Splitter Right: Splits items between two directions. Ratio can be configured.&lt;br /&gt;
* Chute Digital Flip Flop Splitter Left: Splits items between two directions. Ratio can be configured.&lt;br /&gt;
* Chute Import Bin: Acts as a manual entry point to the Chute network. Can hold one item, and will not insert the item into the network until the lever on the side is pulled.&lt;br /&gt;
* Chute Export Bin: Acts as an exit point to the Chute network. Can hold one item, usually used with a [[LARrE]]&lt;br /&gt;
&lt;br /&gt;
== Recipes ==&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
{{Recipe&lt;br /&gt;
|{{Recipe/row |machine = Autolathe |mats = 3g [[Iron]], 2g [[Electrum]], 2g [[Constantan]] |time = 5 |energy = 500}}&lt;br /&gt;
|{{Recipe/row |machine = Hydraulic Pipe Bender |mats = 3g [[Iron]], 2g [[Electrum]], 2g [[Constantan]] |time = 5 |energy = 500}}&lt;br /&gt;
|{{Recipe/row |machine = Recycler |mats = 1.5g [[Iron]], 1g [[Electrum]], 1g [[Constantan]] |time = 5 |energy = 1000}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Import/Export Bin =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Chute Bin is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Open|Integer|1 if device is open, otherwise 0}}&lt;br /&gt;
{{Data Parameters/row|Error|Boolean|w=0|1 if device is in error state, otherwise 0|multiple=2|0|&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;|1|Error}}&lt;br /&gt;
{{Data Parameters/row|Lock|Boolean|Disable manual operation of the Chute Bin.|multiple=2|0|Unlocked|1|Locked}}&lt;br /&gt;
{{Data Parameters/row|On|Boolean|The current state of the Chute Bin.|multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Digital Valve =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Chute Bin is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Open|Integer|1 if device is open, otherwise 0}}&lt;br /&gt;
{{Data Parameters/row|Lock|Boolean|Disable manual operation of the Chute Bin.|multiple=2|0|Unlocked|1|Locked}}&lt;br /&gt;
{{Data Parameters/row|Setting|Boolean|The amount of items the chute will let pass before closing}}&lt;br /&gt;
{{Data Parameters/row|Quantity|Boolean|The amount of items that have passed through since last opened}}&lt;br /&gt;
{{Data Parameters/row|On|Boolean|The current state of the Chute Bin.|multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Digital Flip Flop =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Chute Bin is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Mode|Integer|Current output direction, 0 straight through, 1 left/right}}&lt;br /&gt;
{{Data Parameters/row|Setting|Boolean|the amount of items that will be passed straight through before switching Mode, 0 will never switch Mode}}&lt;br /&gt;
{{Data Parameters/row|Quantity|Boolean|The amount of items that have passed through since last opened}}&lt;br /&gt;
{{Data Parameters/row|On|Boolean|The current state of the Chute Bin.|multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|SettingOutput|Boolean|the amount of items that will be passed to the left/right before switching Mode, 0 will never switch Mode}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Powered_Chutes&amp;diff=21671</id>
		<title>Powered Chutes</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Powered_Chutes&amp;diff=21671"/>
		<updated>2024-07-19T22:00:22Z</updated>

		<summary type="html">&lt;p&gt;Duke: minor change to infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Import/Export]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | image       = [[File:ItemKitPoweredChute.png]]&lt;br /&gt;
 | name        = Kit (Powered Chutes)&lt;br /&gt;
 | createdwith = [[Autolathe]], [[Hydraulic Pipe Bender]]&lt;br /&gt;
 | cost        = 3g [[Iron]], 2g [[Electrum]], 2g [[Constantan]]&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Chute&lt;br /&gt;
 | placed_with_item = [[Kit (Powered Chutes)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Wrench]]&lt;br /&gt;
 | item_rec1        = [[Kit (Powered Chutes)]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute =&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Used to transport items. The Kit can be used to create 5 different variants, all of which require power and can connect to data ports. &lt;br /&gt;
&lt;br /&gt;
* Chute Digital Valve Right: Allows a certain number of items through, then closes until reopened either manually or via data network.&lt;br /&gt;
* Chute Digital Valve Left: Allows a certain number of items through, then closes until reopened either manually or via data network.&lt;br /&gt;
* Chute Digital Flip Flop Splitter Right: Splits items between two directions. Ratio can be configured.&lt;br /&gt;
* Chute Digital Flip Flop Splitter Left: Splits items between two directions. Ratio can be configured.&lt;br /&gt;
* Chute Import Bin: Acts as a manual entry point to the Chute network. Can hold one item, and will not insert the item into the network until the lever on the side is pulled.&lt;br /&gt;
* Chute Export Bin: Acts as an exit point to the Chute network. Can hold one item, usually used with a [[LARrE]]&lt;br /&gt;
&lt;br /&gt;
== Recipes ==&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
{{Recipe&lt;br /&gt;
|{{Recipe/row |machine = Autolathe |mats = 3g [[Iron]], 2g [[Electrum]], 2g [[Constantan]] |time = 5 |energy = 500}}&lt;br /&gt;
|{{Recipe/row |machine = Hydraulic Pipe Bender |mats = 3g [[Iron]], 2g [[Electrum]], 2g [[Constantan]] |time = 5 |energy = 500}}&lt;br /&gt;
|{{Recipe/row |machine = Recycler |mats = 1.5g [[Iron]], 1g [[Electrum]], 1g [[Constantan]] |time = 5 |energy = 1000}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Import/Export Bin =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Chute Bin is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Open|Integer|1 if device is open, otherwise 0}}&lt;br /&gt;
{{Data Parameters/row|Error|Boolean|w=0|1 if device is in error state, otherwise 0|multiple=2|0|&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;|1|Error}}&lt;br /&gt;
{{Data Parameters/row|Lock|Boolean|Disable manual operation of the Chute Bin.|multiple=2|0|Unlocked|1|Locked}}&lt;br /&gt;
{{Data Parameters/row|On|Boolean|The current state of the Chute Bin.|multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Digital Valve =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Chute Bin is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Open|Integer|1 if device is open, otherwise 0}}&lt;br /&gt;
{{Data Parameters/row|Lock|Boolean|Disable manual operation of the Chute Bin.|multiple=2|0|Unlocked|1|Locked}}&lt;br /&gt;
{{Data Parameters/row|Setting|Boolean|The amount of items the chute will let pass before closing}}&lt;br /&gt;
{{Data Parameters/row|Quantity|Boolean|The amount of items that have passed through since last opened}}&lt;br /&gt;
{{Data Parameters/row|On|Boolean|The current state of the Chute Bin.|multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Digital Flip Flop =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Chute Bin is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Mode|Integer|Current output direction, 0 straight through, 1 left/right}}&lt;br /&gt;
{{Data Parameters/row|Setting|Boolean|the amount of items that will be passed straight through before switching Mode}}&lt;br /&gt;
{{Data Parameters/row|Quantity|Boolean|The amount of items that have passed through since last opened}}&lt;br /&gt;
{{Data Parameters/row|On|Boolean|The current state of the Chute Bin.|multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|SettingOutput|Boolean|the amount of items that will be passed to the left/right before switching Mode}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Powered_Chutes&amp;diff=21670</id>
		<title>Powered Chutes</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Powered_Chutes&amp;diff=21670"/>
		<updated>2024-07-19T21:58:35Z</updated>

		<summary type="html">&lt;p&gt;Duke: Added data values for all devices in kit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Import/Export]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | image       = [[File:ItemKitPoweredChute.png]]&lt;br /&gt;
 | name        = Kit (Powered Chutes)&lt;br /&gt;
 | createdwith = [[Autolathe]], [[Fabricator]], [[Hydraulic Pipe Bender]]&lt;br /&gt;
 | cost        = 1g [[Iron]]*&lt;br /&gt;
 | stacks      = 10&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Chute&lt;br /&gt;
 | placed_with_item = [[Kit (Powered Chutes)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Wrench]]&lt;br /&gt;
 | item_rec1        = [[Kit (Powered Chutes)]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute =&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Used to transport items. The Kit can be used to create 5 different variants, all of which require power and can connect to data ports. &lt;br /&gt;
&lt;br /&gt;
* Chute Digital Valve Right: Allows a certain number of items through, then closes until reopened either manually or via data network.&lt;br /&gt;
* Chute Digital Valve Left: Allows a certain number of items through, then closes until reopened either manually or via data network.&lt;br /&gt;
* Chute Digital Flip Flop Splitter Right: Splits items between two directions. Ratio can be configured.&lt;br /&gt;
* Chute Digital Flip Flop Splitter Left: Splits items between two directions. Ratio can be configured.&lt;br /&gt;
* Chute Import Bin: Acts as a manual entry point to the Chute network. Can hold one item, and will not insert the item into the network until the lever on the side is pulled.&lt;br /&gt;
* Chute Export Bin: Acts as an exit point to the Chute network. Can hold one item, usually used with a [[LARrE]]&lt;br /&gt;
&lt;br /&gt;
== Recipes ==&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
{{Recipe&lt;br /&gt;
|{{Recipe/row |machine = Autolathe |mats = 3g [[Iron]], 2g [[Electrum]], 2g [[Constantan]] |time = 5 |energy = 500}}&lt;br /&gt;
|{{Recipe/row |machine = Hydraulic Pipe Bender |mats = 3g [[Iron]], 2g [[Electrum]], 2g [[Constantan]] |time = 5 |energy = 500}}&lt;br /&gt;
|{{Recipe/row |machine = Recycler |mats = 1.5g [[Iron]], 1g [[Electrum]], 1g [[Constantan]] |time = 5 |energy = 1000}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Import/Export Bin =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Chute Bin is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Open|Integer|1 if device is open, otherwise 0}}&lt;br /&gt;
{{Data Parameters/row|Error|Boolean|w=0|1 if device is in error state, otherwise 0|multiple=2|0|&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;|1|Error}}&lt;br /&gt;
{{Data Parameters/row|Lock|Boolean|Disable manual operation of the Chute Bin.|multiple=2|0|Unlocked|1|Locked}}&lt;br /&gt;
{{Data Parameters/row|On|Boolean|The current state of the Chute Bin.|multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Digital Valve =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Chute Bin is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Open|Integer|1 if device is open, otherwise 0}}&lt;br /&gt;
{{Data Parameters/row|Lock|Boolean|Disable manual operation of the Chute Bin.|multiple=2|0|Unlocked|1|Locked}}&lt;br /&gt;
{{Data Parameters/row|Setting|Boolean|The amount of items the chute will let pass before closing}}&lt;br /&gt;
{{Data Parameters/row|Quantity|Boolean|The amount of items that have passed through since last opened}}&lt;br /&gt;
{{Data Parameters/row|On|Boolean|The current state of the Chute Bin.|multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Digital Flip Flop =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Chute Bin is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}&lt;br /&gt;
{{Data Parameters/row|Mode|Integer|Current output direction, 0 straight through, 1 left/right}}&lt;br /&gt;
{{Data Parameters/row|Setting|Boolean|the amount of items that will be passed straight through before switching Mode}}&lt;br /&gt;
{{Data Parameters/row|Quantity|Boolean|The amount of items that have passed through since last opened}}&lt;br /&gt;
{{Data Parameters/row|On|Boolean|The current state of the Chute Bin.|multiple=2|0|Off|1|On}}&lt;br /&gt;
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|SettingOutput|Boolean|the amount of items that will be passed to the left/right before switching Mode}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Basic_Chutes&amp;diff=21669</id>
		<title>Basic Chutes</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Basic_Chutes&amp;diff=21669"/>
		<updated>2024-07-19T21:45:51Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Chute Bin */ removed info on chute bin, moving to powered chutes page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Import/Export]]&lt;br /&gt;
{{Itembox&lt;br /&gt;
| name = Kit (Basic Chutes)&lt;br /&gt;
| image = [[File:ItemKitChute.png]]&lt;br /&gt;
| prefabhash = 1025254665&lt;br /&gt;
| prefabname = ItemKitChute&lt;br /&gt;
| stacks = 10&lt;br /&gt;
| slot_class = SlotClass.None&lt;br /&gt;
| sorting_class = SortingClass.Kits&lt;br /&gt;
| recipe_machine1 = Autolathe&lt;br /&gt;
| recipe_cost1 = 3g [[Iron]]&lt;br /&gt;
| recipe_machine2 = Hydraulic Pipe Bender&lt;br /&gt;
| recipe_cost2 = 3g [[Iron]]&lt;br /&gt;
| constructs = [[Chute (Straight)]], [[Chute (Corner)]], [[Chute (Window)]], [[Chute (Junction)]], [[Chute Flip Flop Splitter]], [[Chute Valve]], [[Chute Overflow]], [[Chute Inlet]], [[Chute Outlet]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Chute&lt;br /&gt;
 | placed_with_item = [[Kit (Chutes)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid&lt;br /&gt;
 | decon_with_tool1 = [[Wrench]]&lt;br /&gt;
 | item_rec1        = [[Kit (Chutes)]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute =&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Used to transport items. The Kit can be used to create 9 different variants, some of them are able to connect to power and logic network.&lt;br /&gt;
&lt;br /&gt;
* Straight chute: transports items on a straight line&lt;br /&gt;
* Window chute: transports items on a straight line, and the items are visible inside the chute&lt;br /&gt;
* Corner chute: transports items on a perpendicular line&lt;br /&gt;
* Junction (consumes two kits): transports items on a straight and perpendicular line (merges two lines into one)&lt;br /&gt;
* Flip flop Splitter: alternates between transporting an item on a straight and perpendicular line (splits one line in two)&lt;br /&gt;
* Chute Valve: transports items on a straight line. Can be open and closed&lt;br /&gt;
* Chute overflow: transports items on a straight and perpendicular line, where priority is given to the straight line (similar to a flip flop, but instead of 50%, it only goes perpendicular if straight is full)&lt;br /&gt;
* Chute inlet: items can be dropped on it and will transport them on a perpendicular line&lt;br /&gt;
* Chute outlet: items are dropped from the chute to the floor&lt;br /&gt;
&lt;br /&gt;
== Recipes ==&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
{{Recipe&lt;br /&gt;
|{{Recipe/row |machine = Autolathe |mats = 3g [[Iron]] |time = 5 |energy = 500}}&lt;br /&gt;
|{{Recipe/row |machine = Hydraulic Pipe Bender |mats = 3g [[Iron]] |time = 5 |energy = 500}}&lt;br /&gt;
|{{Recipe/row |machine = Recycler |mats = 1,5g [[Iron]] |time = 5 |energy = 1000}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Outlet =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Lock|Boolean|Disable manual operation of the Chute Outlet.|multiple=2|0|Unlocked|1|Locked}}&lt;br /&gt;
{{Data Parameters/row|ClearMemory|Integer|r=0|When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned}}&lt;br /&gt;
{{Data Parameters/row|ExportCount|Integer|w=0|How many items exported since last ClearMemory}}&lt;br /&gt;
{{Data Parameters/row|ImportCount|Integer|w=0|How many items imported since last ClearMemory}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Chute Inlet =&lt;br /&gt;
&lt;br /&gt;
{{Data Network Header}}&lt;br /&gt;
{{Data Parameters|&lt;br /&gt;
{{Data Parameters/row|Lock|Boolean|Disable manual operation of the Chute Inlet.|multiple=2|0|Unlocked|1|Locked}}&lt;br /&gt;
{{Data Parameters/row|ClearMemory|Integer|r=0|When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned}}&lt;br /&gt;
{{Data Parameters/row|ImportCount|Integer|w=0|How many items imported since last ClearMemory}}&lt;br /&gt;
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}&lt;br /&gt;
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}&lt;br /&gt;
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=IC10&amp;diff=19892</id>
		<title>IC10</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=IC10&amp;diff=19892"/>
		<updated>2024-02-01T19:01:16Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Network Referencing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:MIPS Programming]]&lt;br /&gt;
=MIPS scripting language for IC10 housings / chips=&lt;br /&gt;
MIPS is [[Stationeers]]&#039; in-game scripting language. It runs on [[Integrated Circuit (IC10)|IC10 chips]] crafted at the [[Electronics Printer]]. &lt;br /&gt;
&lt;br /&gt;
==Registers==&lt;br /&gt;
Internal registers &#039;&#039;&#039;r?&#039;&#039;&#039;: The IC contains 16 CPU registers, numbered &#039;&#039;&#039;r0&#039;&#039;&#039; to &#039;&#039;&#039;r15&#039;&#039;&#039;. From now on referred to as &#039;&#039;&#039;r?&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Device registers &#039;&#039;&#039;d? logicType&#039;&#039;&#039;: Device registers are written to and from the IC. A device register is numbered &#039;&#039;&#039;d0&#039;&#039;&#039; to &#039;&#039;&#039;d5&#039;&#039;&#039; (select via screw), or &#039;&#039;&#039;db&#039;&#039;&#039; (connected device). From now on referred to as &#039;&#039;&#039;d?&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Logic and algorithmic with &#039;&#039;&#039;Internal registers&#039;&#039;&#039; ===&lt;br /&gt;
All calculations are exclusively performed to and from &#039;&#039;&#039;r?&#039;&#039;&#039; registers, or generally more understood as variables in programming. You can use aliases to give convenient names with the &amp;lt;code&amp;gt;alias string r?|d?&amp;lt;/code&amp;gt;command (see below). &lt;br /&gt;
&lt;br /&gt;
Internal registers can be manipulated in various ways. &lt;br /&gt;
* Write constant values &amp;lt;code&amp;gt;move r? (r?|num)&amp;lt;/code&amp;gt;: Example: &amp;lt;code&amp;gt;move r0 2&amp;lt;/code&amp;gt; sets r0 to the number 2.&lt;br /&gt;
* Calculate: Calculations are done to- and from these registers, like &amp;lt;code&amp;gt;add r? a(r?|num) b(r?|num)&amp;lt;/code&amp;gt;. Example: &amp;lt;code&amp;gt;add r1 r0 3&amp;lt;/code&amp;gt; adds 3 to r0, and writes to r1.&lt;br /&gt;
&lt;br /&gt;
Note, for any kind of if statements or loop behaviours, knowing about labels, branching, and jumps is essential knowledge. See below.&lt;br /&gt;
&lt;br /&gt;
=== IO to &#039;&#039;&#039;Device registers&#039;&#039;&#039; ===&lt;br /&gt;
Acronym &#039;&#039;&#039;d?&#039;&#039;&#039; stands for device, where ? is a number corresponding to the screw device selector on the socket.&lt;br /&gt;
You can also read/write to the device where the IC is planted in using device &#039;&#039;&#039;db&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Generally, there are up to 6 devices which can be set using the screwdriver &#039;&#039;&#039;d0&#039;&#039;&#039; to &#039;&#039;&#039;d5&#039;&#039;&#039;. A special device register &#039;&#039;&#039;db&#039;&#039;&#039; is the device wherever the IC is mounted upon. Very convenient for atmospheric devices where no separate IC socket is required.&lt;br /&gt;
&lt;br /&gt;
Note, the IC is completely unaware where d? is actually connected to. So if you get a logicType error, check d? number, or check if the screw has been set opn the socket. An alias is only convenient to convey what is expected to be set on the d? screw, it does not actually set or program the screq.&lt;br /&gt;
&lt;br /&gt;
* Read from device (load) &amp;lt;code&amp;gt;l r? d? logicType&amp;lt;/code&amp;gt;: Reads logicType, like Pressure from a [[Sensors|gas sensor]], from device d? to register r?. Values can be read from connected devices and put into the register using the &#039;&#039;&#039;l&#039;&#039;&#039; (load) command. For example, if you want to load the state of a door. &amp;lt;br&amp;gt; Example: &amp;lt;code&amp;gt;l r0 Door Open&amp;lt;/code&amp;gt; reads the &#039;Open&#039; field of an object named &#039;Door&#039;, that would be connected to the IC housing of the chip.&lt;br /&gt;
* Write to a device (set) &amp;lt;code&amp;gt;s d? logicType r?&amp;lt;/code&amp;gt;: Write a value from a register back to a device using the command &amp;lt;code&amp;gt;s d? logicType r?&amp;lt;/code&amp;gt;. For example, if d0 is set to a door using the screwdriver, &amp;lt;code&amp;gt;s d0 Open 0&amp;lt;/code&amp;gt; sets the &#039;Open&#039; status of the d0 (a door) to 0, effectively closing the door.&lt;br /&gt;
&lt;br /&gt;
=== batch IO to - &#039;&#039;&#039;Device registers&#039;&#039;&#039; ===&lt;br /&gt;
&#039;&#039;&#039;Batch writing&#039;&#039;&#039; needs to be done to a specific &#039;&#039;&#039;deviceHash&#039;&#039;&#039; instead of d?. Is unique per device type, which you can find in the [[Stationpedia]] entries.&lt;br /&gt;
* &amp;lt;code&amp;gt;lb r? deviceHash logicType batchMode&amp;lt;/code&amp;gt; &lt;br /&gt;
* &amp;lt;code&amp;gt;sb deviceHash logicType r?&amp;lt;/code&amp;gt;&lt;br /&gt;
Additionally, using the following batch commands, a &#039;&#039;&#039;nameHash&#039;&#039;&#039; can be provided to only modify devices with a certain name.&lt;br /&gt;
* &amp;lt;code&amp;gt;lbn r? deviceHash nameHash logicType batchMode &amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;sbn deviceHash nameHash logicType r?&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;batchMode&#039;&#039;&#039; is a parameter equal to 0, 1, 2, or 3. These are also defined as the constants &#039;&#039;&#039;Average&#039;&#039;&#039;, &#039;&#039;&#039;Sum&#039;&#039;&#039;, &#039;&#039;&#039;Minimum&#039;&#039;&#039;, and &#039;&#039;&#039;Maximum&#039;&#039;&#039; respectively. The word or number can be used.&lt;br /&gt;
&lt;br /&gt;
Combining one of these functions with the &amp;lt;code&amp;gt;HASH()&amp;lt;/code&amp;gt; function can be advantageous:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lbn r0 HASH(&amp;quot;StructureGasSensor&amp;quot;) HASH(&amp;quot;Sensor 1&amp;quot;) Temperature Average&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code will load the average temperature of all gas sensors on the network named &amp;quot;Sensor 1&amp;quot; onto register &#039;&#039;&#039;r0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some examples demonstrating all three operations:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 10&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Sets register &#039;&#039;&#039;r0&#039;&#039;&#039; to the value 10&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 r1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Copies the value of register &#039;&#039;&#039;r1&#039;&#039;&#039; to register &#039;&#039;&#039;r0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;l r0 d0 Temperature&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Reads the Temperature parameter from device &#039;&#039;&#039;d0&#039;&#039;&#039; and places the value in register &#039;&#039;&#039;r0&#039;&#039;&#039;.&lt;br /&gt;
Note: not all devices have a Temperature parameter, check the in-game stationpedia.&lt;br /&gt;
&lt;br /&gt;
To set a device specific value (like &#039;&#039;&#039;On&#039;&#039;&#039;), you can write into this value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s d0 On r0&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Writes the value from register &#039;&#039;&#039;r0&#039;&#039;&#039; out to &#039;&#039;&#039;On&#039;&#039;&#039; parameter of device &#039;&#039;&#039;d0&#039;&#039;&#039;. In this example the device will be turned On, if valve of register r0 equals 1, otherwise (register r0 equals 0) it will turned off. See section [[MIPS#Device_Variables|Device Variables]].&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to use labels (like: &#039;&#039;someVariable&#039;&#039;) instead of a direct reference to the register. See &#039;&#039;&#039;alias&#039;&#039;&#039; in section [[MIPS#Instructions|Instructions]].&lt;br /&gt;
&lt;br /&gt;
=== Special registers ===&lt;br /&gt;
There are two more registers. One called &#039;&#039;&#039;ra&#039;&#039;&#039; (return address) and one called &#039;&#039;&#039;sp&#039;&#039;&#039; (stack pointer). The &#039;&#039;&#039;ra&#039;&#039;&#039; is used by certain jump and branching instructions (those ending with &#039;&#039;&#039;-al&#039;&#039;&#039;) to remember which line in the script it should return to. The &#039;&#039;&#039;sp&#039;&#039;&#039; tracks the next index within the stack (a memory that can store up to 512 values) to be pushed (written) to or popped (read) from. Neither &#039;&#039;&#039;ra&#039;&#039;&#039; or &#039;&#039;&#039;sp&#039;&#039;&#039; is protected, their values can be changed by instructions like any other register.&lt;br /&gt;
&lt;br /&gt;
==Stack Memory==&lt;br /&gt;
;push r?: adds the value of register &#039;&#039;&#039;r?&#039;&#039;&#039; to the stack memory at index &#039;&#039;&#039;sp&#039;&#039;&#039; and increments the &#039;&#039;&#039;sp&#039;&#039;&#039; by 1.&lt;br /&gt;
;pop r?: loads the value in the stack memory at index &amp;lt;code&amp;gt;sp-1&amp;lt;/code&amp;gt; into register &#039;&#039;&#039;r?&#039;&#039;&#039; and decrements the &#039;&#039;&#039;sp&#039;&#039;&#039; by 1.&lt;br /&gt;
;peek r?: loads the value in the stack memory at index &amp;lt;code&amp;gt;sp-1&amp;lt;/code&amp;gt; into register &#039;&#039;&#039;r?&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
As mentioned previously, &#039;&#039;&#039;sp&#039;&#039;&#039; can be both written to and read from any time. When reading (&#039;&#039;&#039;peek&#039;&#039;&#039; or &#039;&#039;&#039;pop&#039;&#039;&#039;), &#039;&#039;&#039;sp&#039;&#039;&#039; must be between 1 and 512, inclusive. While writing (&#039;&#039;&#039;push&#039;&#039;&#039;), &#039;&#039;&#039;sp&#039;&#039;&#039; must be between 0 and 511, inclusive.&lt;br /&gt;
&lt;br /&gt;
Stack memory is persistent on logic chips. This means that if you have a logic chip and push values to the stack, the code that pushes those values can be removed and the stack will retain those values.&lt;br /&gt;
&lt;br /&gt;
Note that this does not carry over to any other logic chips which receive the program of the original; They will need to have their stack memories programmed individually.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stack Traversing&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Traversing the stack can be done similarly to how an array would be traversed in some other languages:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#this will traverse indices {min value} through {max value} - 1&lt;br /&gt;
&lt;br /&gt;
move sp {min value}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
loop:&lt;br /&gt;
&lt;br /&gt;
add sp sp 1&lt;br /&gt;
&lt;br /&gt;
peek r0&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#do something here with your stack values (loaded into r0)&lt;br /&gt;
&lt;br /&gt;
blt sp {max value} loop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#continue on&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use the pop function&#039;s decrementing to make a more efficient loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
move sp {max value}&lt;br /&gt;
&lt;br /&gt;
add sp sp 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
loop:&lt;br /&gt;
&lt;br /&gt;
pop r0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#do something here with your stack values (loaded into r0)&lt;br /&gt;
&lt;br /&gt;
bgt sp {min value} loop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki /&amp;gt;#continue on&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Device Ports==&lt;br /&gt;
ICs can interact with up to 6 other devices via d0 - d5, as well as the device it&#039;s attached to via db. To change or set a device, use a screwdriver and adjust the device in the IC housing. You can read or set any of the device&#039;s properties, so it is possible to do things like read the pressure or oxygen content of a room on the same Device port. &lt;br /&gt;
&lt;br /&gt;
Additionally, is possible to set other IC housings as devices, allowing you to create programs that run across multiple ICs together. For example, an Gas Mixing IC could check the &#039;&#039;&#039; Setting&#039;&#039;&#039;  field of a Atmosphere Sensor IC and act based on the value of the sensor chip.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;l&#039;&#039;&#039; (load) or &#039;&#039;&#039;s&#039;&#039;&#039; (set) instructions you have to read or set these values to your device. Examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;l r0 d0 Temperature&amp;lt;/code&amp;gt; #Reads the &#039;&#039;&#039;Temperature&#039;&#039;&#039; from an atmosphere sensor at device port &#039;&#039;&#039;d0&#039;&#039;&#039; into register &#039;&#039;&#039;r0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s d1 Setting r0 &amp;lt;/code&amp;gt; # Writes the value of the register &#039;&#039;&#039;r0&#039;&#039;&#039; to the device on port &#039;&#039;&#039;d1&#039;&#039;&#039; into the variable &#039;&#039;&#039;Setting&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Labels==&lt;br /&gt;
Labels are used to make it easier to jump between lines in the script. The label will have a numerical value that is the same as its line number. Even though it&#039;s possible to use a labels value for calculations, doing so is a bad idea since any changes to the code can change the line numbers of the labels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;main:&amp;lt;/code&amp;gt; # define a jump mark with label &#039;&#039;&#039;main&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;j main&amp;lt;/code&amp;gt; # jumps back to &#039;&#039;&#039;main&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
Instead of using a register to store a fixed value, a constant can be made. Using this name will refer to the assigned value. With the help of Constants you can save register places.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;define pi 3.14159&amp;lt;/code&amp;gt; # defines a Constant with name &#039;&#039;&#039;pi&#039;&#039;&#039; and set it&#039;s value to 3.14159&lt;br /&gt;
&lt;br /&gt;
You can use these constants like any other variables (see: alias in section [[MIPS#Instructions|Instructions]]). Example:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move r0 pi&amp;lt;/code&amp;gt; # set the value of register &#039;&#039;&#039;r0&#039;&#039;&#039; to the value of constant named &#039;&#039;&#039;pi&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Indirect referencing==&lt;br /&gt;
This is a way of accessing a register by using another register as a pointer. Adding an additional r in front of the register turns on this behaviour. The value stored in the register being used as the pointer must be between 0 to 15, this will then point to a register from r0 to r15, higher or lower values will cause an error.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 5&amp;lt;/code&amp;gt; stores the value 5 in r0&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move rr0 10&amp;lt;/code&amp;gt; is now the same as &amp;lt;code&amp;gt;move r5 10&amp;lt;/code&amp;gt; since r0 has the value 5, rr0 points at the register r5&lt;br /&gt;
&lt;br /&gt;
Additional r&#039;s can be added to do indirect referencing multiple times in a row.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move r1 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move r2 3&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move rrr1 4&amp;lt;/code&amp;gt; is now the same as &amp;lt;code&amp;gt;move r3 4&amp;lt;/code&amp;gt; since r1 points at r2 which points at r3&lt;br /&gt;
&lt;br /&gt;
This also works with devices&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;move r0 2&amp;lt;/code&amp;gt; stores the value 2 in r0&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;s dr0 On 1&amp;lt;/code&amp;gt; is now the same as &amp;lt;code&amp;gt;s d2 On 1&amp;lt;/code&amp;gt;, r0 has the value 2 so dr0 points at d2&lt;br /&gt;
&lt;br /&gt;
==Network Referencing / Channels==&lt;br /&gt;
&lt;br /&gt;
All cable networks have 8 Channels which can have data loaded from/stored to via a device and connection reference. Connections for each supported device are listed in the stationpedia. All &#039;connections&#039; a device can make are a connection (pipe, chute, cable), but only cable networks have channels.&lt;br /&gt;
&lt;br /&gt;
The 8 channels (Channel0 to Channel7) are however volatile, in that data is destroyed if any part of the cable network is changed, removed, or added to, and also whenever the world is exited. All these channels default to NaN. Strictly speaking, they default to what we would call &amp;quot;quiet NaN&amp;quot;, in that its not an error it simply means its not a number yet. Recommend you use these channels for reading and writing between networks, rather than as a data store. This effectively means an IC can read all the networks for all devices to connected to it, so not just their own local network, but any networks any device they can reference is connected to.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;l r0 d0:0 Channel0&amp;lt;/code&amp;gt; d0 is device zero, and the :0 refers to that device&#039;s 0 connection&lt;br /&gt;
&lt;br /&gt;
For example: on an IC Housing, the 0 connection is the data port and 1 is power, so you could write out r0 to Channel0 of the power network of the Housing using &amp;lt;code&amp;gt;s db:1 Channel0 r0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
Comments can be placed using a &#039;&#039;&#039;#&#039;&#039;&#039; symbol. All comments are ignored by the game when it reads commands. Below is an example of valid code with two comments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; alias MyAlias r0 # Text after the hash tag will be ignored to the end of the line. &amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt; # You can also write comments on their own lines, like this. &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Debugging advices==&lt;br /&gt;
The value stored in a register or variable can easily be displayed by writing it to the Setting parameter of the IC housing. This has no side effects. To see the value, just stand close to the IC housing and look directly at the housing.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;s db Setting r0&amp;lt;/code&amp;gt;. # sets/writes the value of register &#039;&#039;&#039;r0&#039;&#039;&#039; into the parameter &#039;&#039;&#039;Setting&#039;&#039;&#039; of the IC Housing(&#039;&#039;&#039;db&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
To check if a certain block of code is executed, use the above trick but with a random number that you choose, like the line number.&amp;lt;br&amp;gt; This example will display the number 137 on the IC housing.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;s db Setting 137&amp;lt;/code&amp;gt;  # sets/writes the number 137 into the parameter &#039;&#039;&#039;Setting&#039;&#039;&#039; of the IC Housing(&#039;&#039;&#039;db&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Always use unique names for labels. When a label is named after a MIPS keyword like &amp;quot;Temperature:&amp;quot; or &amp;quot;Setting:&amp;quot; the original meaning of the keyword is overwritten, so when an instruction tries to use it an error will occur.&lt;br /&gt;
&lt;br /&gt;
A [[Cartridge#Configuration|configuration cartridge]] installed in a [[Handheld_Tablet|tablet]]  can be used to see all available values and configuration parameter for all devices you focus on.&lt;br /&gt;
&lt;br /&gt;
==Learning MIPS==&lt;br /&gt;
MIPS can be difficult to get started with. So here is a list of instructions that are useful for beginners. These can be used to write many different scripts.&lt;br /&gt;
&lt;br /&gt;
General:&lt;br /&gt;
* &amp;lt;code&amp;gt;alias&amp;lt;/code&amp;gt; make the script easier to read by assigning a name to a register or device, example: &amp;lt;code&amp;gt;alias rTemperature r15&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label:&amp;lt;/code&amp;gt; where &amp;quot;label&amp;quot; can be replaced with almost any word, jump and branch instructions can use these in place of line numbers, example: &amp;lt;code&amp;gt;start:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt; pause for 1-tick and then resume, if not used the script will automatically pause for 1-tick after 128 lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Jumps:&lt;br /&gt;
*&amp;lt;code&amp;gt;j someLabelName&amp;lt;/code&amp;gt; jump to line with &#039;&#039;&#039;someLabelName&#039;&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;jal someLabelName&amp;lt;/code&amp;gt; stores the next line number into the register ra (return address) and then jump to &#039;&#039;&#039;someLabelName&#039;&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;j ra&amp;lt;/code&amp;gt; jump to register ra (return address)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Branching (jump-if):&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;beq a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if &#039;&#039;&#039;a&#039;&#039;&#039; is equal to &#039;&#039;&#039;b&#039;&#039;&#039; goto &#039;&#039;&#039;c&#039;&#039;&#039;  (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;bne a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if  &#039;&#039;&#039;a&#039;&#039;&#039; not-equal &#039;&#039;&#039;b&#039;&#039;&#039; goto  &#039;&#039;&#039;c&#039;&#039;&#039; (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;bgt a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if  &#039;&#039;&#039;a&#039;&#039;&#039; greater than &#039;&#039;&#039;b&#039;&#039;&#039; goto   &#039;&#039;&#039;c&#039;&#039;&#039; (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;blt a(r?|num) b(r?|num) c(r?|num)&amp;lt;/code&amp;gt; if  &#039;&#039;&#039;a&#039;&#039;&#039; less than &#039;&#039;&#039;b&#039;&#039;&#039; goto &#039;&#039;&#039;c&#039;&#039;&#039; (label or linenumber) &amp;lt;br&amp;gt;&lt;br /&gt;
The suffix -al can be added to each of these (example: beqal) to save the &#039;&#039;&#039;next&#039;&#039;&#039; line number into the &amp;quot;return address&amp;quot; register. this is called using &amp;lt;code&amp;gt;j ra&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Device interactions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
l (load)&lt;br /&gt;
lb (load batch, requires one of the following: 0(Average) / 1(Sum) / 2(Minimum) / 3(Maximum))&lt;br /&gt;
ls (load slot)&lt;br /&gt;
s (store)&lt;br /&gt;
sb (store batch)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Logic and Math:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
seqz (common NOT-gate: turns 0 into 1, and all other values into 0)&lt;br /&gt;
move&lt;br /&gt;
add (addition)&lt;br /&gt;
sub (subtraction)&lt;br /&gt;
mul (multiplication)&lt;br /&gt;
div (division)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Common device variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
On (1 is on, 0 is off)&lt;br /&gt;
Open (1 is open, 0 is closed)&lt;br /&gt;
Setting (meaning varies between devices, example: a LED display(console) will show this value)&lt;br /&gt;
Activate (1 usually means running, example: a Daylight sensor is 1 when the sun shines on it)&lt;br /&gt;
Temperature (in Kelvin, Celsius - 273.15)&lt;br /&gt;
Pressure (in kPa)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Notes:&lt;br /&gt;
&amp;lt;br&amp;gt;-All instructions and variables can be seen in-game in the MIPS editor window by clicking the &amp;quot;f&amp;quot;, &amp;quot;x&amp;quot; and &amp;quot;s(x)&amp;quot; buttons on the top right.&lt;br /&gt;
&amp;lt;br&amp;gt;-The stationpedia is the best source to see which variables are available to each device.&lt;br /&gt;
&amp;lt;br&amp;gt;-Most scripts are loops, they end with a jump instruction that leads back up to the start. Otherwise they will just run once and then stop.&lt;br /&gt;
&lt;br /&gt;
Two practice scripts:&lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Night Light: Load &amp;quot;Activate&amp;quot; from a Daylight sensor, flip the value with a NOT-gate, store the value to the &amp;quot;On&amp;quot; variable of one or more lights.&lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Wall Cooler: Read &amp;quot;Temperature&amp;quot; from a Gas Sensor. Branch if the value is greater than X, turn on the cooler. Branch if the value is less than Y, turn off the cooler. (Wall coolers need a minimum of 12.5 kPa pressure in the connected pipe)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Instructions=&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;alias&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;alias&lt;br /&gt;
:alias str r? d? # labels register or device reference with name.  When alias is applied to a device, it will affect what shows on the screws in the IC base.  (housing)&lt;br /&gt;
&amp;lt;code&amp;gt;alias vTemperature r0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;alias dAutoHydro1 d0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;move&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;move    &lt;br /&gt;
:d s     # stores the value of s in d&lt;br /&gt;
&amp;lt;code&amp;gt;move r0 42 # Store 42 in register 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;l&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;load&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;l (load)&lt;br /&gt;
:l r# d# parameter&lt;br /&gt;
Reads from a device (d#) and stores the value in a register (r#)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;l r0 d0 Setting&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Read from the device on d0 into register 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;l r1 d5 Pressure&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Read the pressure from a sensor&lt;br /&gt;
&lt;br /&gt;
This also works with aliases. For example:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
alias Sensor d0 &amp;lt;br/&amp;gt;&lt;br /&gt;
l r0 Sensor Temperature&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ls&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;load slot&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ls (load slot)&lt;br /&gt;
:ls r# d# slotNum parameter&lt;br /&gt;
Reads from a slot (slotNum) of a device (d#)  and stores the value in a register (r#)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls r0 d0 2 Occupied&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;Read from the second slot of device on d0, stores 1 in r0 if it&#039;s occupied, 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
And here is the code to read the charge of an AIMeE:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
alias robot d0 &amp;lt;br/&amp;gt;&lt;br /&gt;
alias charge r0 &amp;lt;br/&amp;gt;&lt;br /&gt;
ls charge robot 0 Charge &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;s&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;set&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;s (set)&lt;br /&gt;
:s d# parameter r#&lt;br /&gt;
Writes a setting to a device. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s d0 Setting r0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;add&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;add     &lt;br /&gt;
:d s t   # calculates s + t and stores the result in d&lt;br /&gt;
&amp;lt;code&amp;gt;add r0 r1 1 # add 1 to r1 and store the result as r0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;add r0 r0 1 # increment r0 by one&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;sub&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;sub     &lt;br /&gt;
:d s t   # calculates s - t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;mul&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;mul     &lt;br /&gt;
:d s t   # calculates s * t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;div&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;div     &lt;br /&gt;
:d s t   # calculates s / t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;mod&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;mod     &lt;br /&gt;
:d s t   &lt;br /&gt;
::# calculates s mod t and stores the result in d. Note this&lt;br /&gt;
::# doesn&#039;t behave like the % operator - the result will be &lt;br /&gt;
::# positive even if the either of the operands are negative&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;slt&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;slt     &lt;br /&gt;
:d s t   # stores 1 in d if s &amp;lt; t, 0 otherwise&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;sqrt&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;sqrt    &lt;br /&gt;
:d s     # calculates sqrt(s) and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;round&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;round   &lt;br /&gt;
:d s     # finds the rounded value of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;trunc&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;trunc   &lt;br /&gt;
:d s     # finds the truncated value of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;ceil&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ceil   &lt;br /&gt;
: d s     # calculates the ceiling of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;floor&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;floor  &lt;br /&gt;
: d s     # calculates the floor of s and stores the result in d&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;max&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;max    &lt;br /&gt;
: d s t   # calculates the maximum of s and t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;min&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;min    &lt;br /&gt;
: d s t   # calculates the minimum of s and t and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;abs&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;abs    &lt;br /&gt;
: d s     # calculates the absolute value of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;log&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;log    &lt;br /&gt;
: d s     # calculates the natural logarithm of s and stores the result&lt;br /&gt;
::# in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;exp&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;exp    &lt;br /&gt;
: d s     # calculates the exponential of s and stores the result in d&lt;br /&gt;
&amp;lt;div id=&amp;quot;rand&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;rand   &lt;br /&gt;
: d       # selects a random number uniformly at random between 0 and 1&lt;br /&gt;
::# inclusive and stores the result in d&lt;br /&gt;
&lt;br /&gt;
::# boolean arithmetic uses the C convention that 0 is false and any non-zero&lt;br /&gt;
::# value is true.&lt;br /&gt;
&amp;lt;div id=&amp;quot;and&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;and    &lt;br /&gt;
: d s t   # stores 1 in d if both s and t have non-zero values,&lt;br /&gt;
::# 0 otherwise&lt;br /&gt;
&amp;lt;div id=&amp;quot;or&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;or     &lt;br /&gt;
: d s t   # stores 1 in d if either s or t have non-zero values,&lt;br /&gt;
::# 0 otherwise&lt;br /&gt;
&amp;lt;div id=&amp;quot;xor&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;xor    &lt;br /&gt;
: d s t   # stores 1 in d if exactly one of s and t are non-zero,&lt;br /&gt;
::# 0 otherwise&lt;br /&gt;
&amp;lt;div id=&amp;quot;nor&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;nor &lt;br /&gt;
:    d s t   # stores 1 in d if both s and t equal zero, 0 otherwise&lt;br /&gt;
::# Lines are numbered starting at zero&lt;br /&gt;
&amp;lt;div id=&amp;quot;j&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;j&lt;br /&gt;
:             a # jumps to line a.&lt;br /&gt;
&amp;lt;div id=&amp;quot;bltz&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bltz&lt;br /&gt;
:      s   a # jumps to line a if s &amp;lt;  0&lt;br /&gt;
&amp;lt;div id=&amp;quot;blez&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;blez &lt;br /&gt;
:     s   a # jumps to line a if s &amp;lt;= 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;bgez&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bgez &lt;br /&gt;
:     s   a # jumps to line a if s &amp;gt;= 0&lt;br /&gt;
&amp;lt;div id=&amp;quot;bgtz&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bgtz&lt;br /&gt;
:      s   a # jumps to line a if s &amp;gt;  0&lt;br /&gt;
&amp;lt;div id=&amp;quot;beq&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;beq &lt;br /&gt;
:      s t a # jumps to line a if s == t&lt;br /&gt;
&amp;lt;div id=&amp;quot;bne&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bne &lt;br /&gt;
:      s t a # jumps to line a if s != t&lt;br /&gt;
&amp;lt;div id=&amp;quot;bdseal&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;bdseal&lt;br /&gt;
:    d? a(r?|num) # Jump execution to line a and store current line number if device d? is set.&lt;br /&gt;
&amp;lt;code&amp;gt;bdseal d0 32 #Store line number and jump to line 32 if d0 is assigned.&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;bdseal dThisVictim HarvestCrop #Store line in ra and jump to sub HarvestCrop if device dThisVictim is assigned.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;yield&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;yield           &lt;br /&gt;
: 	# ceases code execution for this power tick&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;lb&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;lb&lt;br /&gt;
:      r? deviceHash logicType batchMode # Loads LogicType from all output network devices with the provided type hash using the provided batch mode. Average (0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number. The result is stored into r?.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;sb&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;sb&lt;br /&gt;
:      deviceHash logicType r? # Stores the register value to LogicType on all output network devices with the provided type hash.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;lbn&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;lbn&lt;br /&gt;
:      r? deviceHash nameHash logicType batchMode # Loads LogicType from all output network devices with the provided type and name hashes using provided batch mode. Average(0), Sum (1), Minimum (2), Maximum (3). Can use either the word, or the number. The result is stored into r?.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;sbn&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;sbn&lt;br /&gt;
:      deviceHash nameHash logicType r? # Stores the register value to LogicType on all output network devices with the provided type and name hashes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;#&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
; #&lt;br /&gt;
:     # The following text will be ignored during compiling; use this to create comments.&lt;br /&gt;
&lt;br /&gt;
[https://www.cs.tufts.edu/comp/140/lectures/Day_3/mips_summary.pdf Other examples]&lt;br /&gt;
&lt;br /&gt;
== Conditional functions cheatsheet ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! suffix !! description !! branch to line !! branch and store return address !! relative jump to line !! set register&lt;br /&gt;
|-&lt;br /&gt;
| prefix: ||  || b- || b-al || br- || s-&lt;br /&gt;
|-&lt;br /&gt;
|  || unconditional || j    || jal    || jr    || &lt;br /&gt;
|-&lt;br /&gt;
| -eq  || if a == b || beq  || beqal  || breq  || seq&lt;br /&gt;
|-&lt;br /&gt;
| -eqz || if a == 0 || beqz || beqzal || breqz || seqz&lt;br /&gt;
|-&lt;br /&gt;
| -ge  || if a &amp;gt;= b || bge  || bgeal  || brge  || sge&lt;br /&gt;
|-&lt;br /&gt;
| -gez || if a &amp;gt;= 0 || bgez || bgezal || brgez || sgez&lt;br /&gt;
|-&lt;br /&gt;
| -gt  || if a &amp;gt; b  || bgt  || bgtal  || brgt  || sgt&lt;br /&gt;
|-&lt;br /&gt;
| -gtz || if a &amp;gt; 0  || bgtz || bgtzal || brgtz || sgtz&lt;br /&gt;
|-&lt;br /&gt;
| -le  || if a &amp;lt;= b || ble  || bleal  || brle  || sle&lt;br /&gt;
|-&lt;br /&gt;
| -lez || if a &amp;lt;= 0 || blez || blezal || brlez || slez&lt;br /&gt;
|-&lt;br /&gt;
| -lt  || if a &amp;lt; b  || blt  || bltal  || brlt  || slt&lt;br /&gt;
|-&lt;br /&gt;
| -ltz || if a &amp;lt; 0  || bltz || bltzal || brltz || sltz&lt;br /&gt;
|-&lt;br /&gt;
| -ne  || if a != b || bne  || bneal  || brne  || sne&lt;br /&gt;
|-&lt;br /&gt;
| -nez || if a != 0 || bnez || bnezal || brnez || snez&lt;br /&gt;
|-&lt;br /&gt;
| -dns || if device d is not set          || bdns || bdnsal || brdns || sdns&lt;br /&gt;
|-&lt;br /&gt;
| -dse || if device d is set              || bdse || bdseal || brdse || sdse&lt;br /&gt;
|-&lt;br /&gt;
| -ap  || if a approximately equals b     || bap  || bapal  || brap  || sap&lt;br /&gt;
|-&lt;br /&gt;
| -apz || if a approximately equals 0     || bapz || bapzal || brapz || sapz&lt;br /&gt;
|-&lt;br /&gt;
| -na  || if a not approximately equals b || bna  || bnaal  || brna  || sna&lt;br /&gt;
|-&lt;br /&gt;
| -naz || if a not approximately equals 0 || bnaz || bnazal || brnaz || snaz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All &amp;lt;code&amp;gt;b-&amp;lt;/code&amp;gt; commands require target line as last argument, all &amp;lt;code&amp;gt;s-&amp;lt;/code&amp;gt; commands require register to store result as first argument. All &amp;lt;code&amp;gt;br-&amp;lt;/code&amp;gt; commands require number to jump relatively as last argument. e.g. &amp;lt;code&amp;gt;breq a b 3&amp;lt;/code&amp;gt; means if a=b then jump to 3 lines after.&lt;br /&gt;
&lt;br /&gt;
All approximate functions require additional argument denoting how close two numbers need to be considered equal. E.g.: &amp;lt;code&amp;gt;sap r0 100 101 0.01&amp;lt;/code&amp;gt; will consider 100 and 101 almost equal (not more than 1%=0.01 different) and will set r0 to 1. The exact formula is &amp;lt;code&amp;gt;if abs(a - b) &amp;lt;= max(c * max(abs(a), abs(b)), float.epsilon * 8)&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;-ap&amp;lt;/code&amp;gt; and is similar for other approximate functions.&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Machine_epsilon&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
  FLT_EPSILON = 2^(−23) ≈ 1.19e−07;        &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;float (32 bit)&amp;lt;/span&amp;gt;&lt;br /&gt;
  DBL_EPSILON = 2^(−52) ≈ 2.20e−16;        &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;double (64 bit)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;if abs(100 - 101) &amp;lt;= max(0.01 * max(abs(100), abs(101)), float.epsilon * 8)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;if abs(-1) &amp;lt;= max(0.01 * 101), float.epsilon * 8)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;code&amp;gt;if 1 &amp;lt;= max(0.01 * 101, float.epsilon * 8)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  if 1 &amp;lt;= max(1.01, FLT_EPSILON * 8)&lt;br /&gt;
  if 1 &amp;lt;= max(1.01, DBL_EPSILON * 8)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 1.19e−07 * 8)&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 2.20e−16 * 8)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 0.000000952)&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;if 1 &amp;lt;= max(1.01, 0.00000000000000176)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;if 1 &amp;lt;= 1.01   TRUE   1&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span style=&amp;quot;color:#4c9700;&amp;quot;&amp;gt;if 1 &amp;lt;= 1.01   TRUE   1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Device Variables==&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Activate&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Activate&lt;br /&gt;
:1 if device is activated (usually means running), otherwise 0&lt;br /&gt;
:&amp;lt;code&amp;gt;l r0 d0 Activate # sets r0 to 1 if on or 0 if off&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;AirRelease&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;AirRelease&lt;br /&gt;
&amp;lt;div id=&amp;quot;Charge&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Charge&lt;br /&gt;
:    The current charge the device has.&lt;br /&gt;
&amp;lt;div id=&amp;quot;CLearMemory&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ClearMemory&lt;br /&gt;
:    When set to 1, clears the counter memory (e.g. ExportCount).  Will set itself back to 0 when triggered.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Color&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Color&lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:blue;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp; 0 (or lower) = Blue&lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:grey;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;1 = Grey &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;2 = Green &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:orange;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;3 = Orange &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;4 = Red &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:yellow;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;5 = Yellow &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;6 = White &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:black;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;7 = Black &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:brown;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;8 = Brown &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:khaki;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;9 = Khaki &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:pink;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;10 = Pink &lt;br /&gt;
:    &amp;lt;span style=&amp;quot;color:purple;&amp;quot;&amp;gt;▇▇▇&amp;lt;/span&amp;gt;&amp;amp;nbsp;11 (or higher) = Purple &lt;br /&gt;
&amp;lt;div id=&amp;quot;CompletionRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;CompletionRatio&lt;br /&gt;
&amp;lt;div id=&amp;quot;ElevatorLevel&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ElevatorLevel&lt;br /&gt;
&amp;lt;div id=&amp;quot;ElevatorSpeed&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ElevatorSpeed&lt;br /&gt;
&amp;lt;div id=&amp;quot;Error&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Error&lt;br /&gt;
:	1 if device is in error state, otherwise 0&lt;br /&gt;
&amp;lt;div id=&amp;quot;ExportCount&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ExportCount&lt;br /&gt;
:    How many items exporfted since last ClearMemory.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Filtration&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Filtration&lt;br /&gt;
:	The current state of the filtration system.  For example filtration = 1 for a Hardsuit when filtration is On.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Harvest&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Harvest&lt;br /&gt;
:	Performs the harvesting action for any plant based machinery.&lt;br /&gt;
:  &amp;lt;code&amp;gt;s d0 Harvest 1 # Performs 1 harvest action on device d0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;Horizontal&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Horizontal&lt;br /&gt;
&amp;lt;div id=&amp;quot;HorizontalRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;HorizontalRatio&lt;br /&gt;
&amp;lt;div id=&amp;quot;Idle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Idle&lt;br /&gt;
&amp;lt;div id=&amp;quot;ImportCount&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ImportCount&lt;br /&gt;
&amp;lt;div id=&amp;quot;Lock&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Lock&lt;br /&gt;
&amp;lt;div id=&amp;quot;Maximum&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Maximum&lt;br /&gt;
&amp;lt;div id=&amp;quot;Mode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Mode&lt;br /&gt;
&amp;lt;div id=&amp;quot;On&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;On&lt;br /&gt;
&amp;lt;div id=&amp;quot;Open&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Open&lt;br /&gt;
&amp;lt;div id=&amp;quot;Output&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Output&lt;br /&gt;
&amp;lt;div id=&amp;quot;Plant&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Plant&lt;br /&gt;
:    Performs the planting operation for any plant based machinery.&lt;br /&gt;
:  &amp;lt;code&amp;gt;s d0 Plant 1 # Plants one crop in device d0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;PositionX&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PositionX&lt;br /&gt;
&amp;lt;div id=&amp;quot;PositionY&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PositionY&lt;br /&gt;
&amp;lt;div id=&amp;quot;PositionZ&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PositionZ&lt;br /&gt;
&amp;lt;div id=&amp;quot;Power&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Power&lt;br /&gt;
&amp;lt;div id=&amp;quot;PowerActual&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PowerActual&lt;br /&gt;
&amp;lt;div id=&amp;quot;PowerPotential&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PowerPotential&lt;br /&gt;
&amp;lt;div id=&amp;quot;PowerRequired&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PowerRequired&lt;br /&gt;
&amp;lt;div id=&amp;quot;Pressure&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Pressure&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureExternal&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureExternal&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureInteral&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureInteral&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureSetting&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureSetting&lt;br /&gt;
&amp;lt;div id=&amp;quot;Quantity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Quantity&lt;br /&gt;
:	Total quantity in the device.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Ratio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Ratio&lt;br /&gt;
:	Context specific value depending on device, 0 to 1 based ratio.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioCarbonDioxide&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioCarbonDioxide&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioNitrogen&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioNitrogen&lt;br /&gt;
:	The ratio of nitrogen in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioOxygen&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioOxygen&lt;br /&gt;
:	The ratio of oxygen in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioPollutant&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioPollutant&lt;br /&gt;
:	The ratio of pollutant in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioVolatiles&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioVolatiles&lt;br /&gt;
:	The ratio of volatiles in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;RatioWater&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RatioWater&lt;br /&gt;
:	The ratio of water in device atmosphere.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Reagents&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Reagents&lt;br /&gt;
&amp;lt;div id=&amp;quot;RecipeHash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RecipeHash&lt;br /&gt;
&amp;lt;div id=&amp;quot;RequestHash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ReferenceId&lt;br /&gt;
:    Unique Identifier of a Device, this value is different for every device in a save.&lt;br /&gt;
&amp;lt;div id=&amp;quot;ReferenceId&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RequestHash&lt;br /&gt;
&amp;lt;div id=&amp;quot;RequiredPower&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;RequiredPower&lt;br /&gt;
&amp;lt;div id=&amp;quot;Setting&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Setting&lt;br /&gt;
&amp;lt;div id=&amp;quot;SolarAngle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;SolarAngle&lt;br /&gt;
:    Solar angle of the device.&lt;br /&gt;
:  &amp;lt;code&amp;gt;l r0 d0 SolarAngle # Sets r0 to the solar angle of d0.&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;Temperature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Temperature&lt;br /&gt;
&amp;lt;div id=&amp;quot;TemperatureSettings&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;TemperatureSettings&lt;br /&gt;
&amp;lt;div id=&amp;quot;TotalMoles&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;TotalMoles&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityMagnitude&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityMagnitude&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityRelativeX&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityRelativeX&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityRelativeY&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityRelativeY&lt;br /&gt;
&amp;lt;div id=&amp;quot;VelocityRelativeZ&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VelocityRelativeZ&lt;br /&gt;
&amp;lt;div id=&amp;quot;Vertical&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Vertical&lt;br /&gt;
:	Vertical setting of the device.&lt;br /&gt;
&amp;lt;div id=&amp;quot;VerticalRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;VerticalRatio&lt;br /&gt;
:	Ratio of vertical setting for device.&lt;br /&gt;
&amp;lt;div id=&amp;quot;Volume&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Volume&lt;br /&gt;
:	Returns the device atmosphere volume&lt;br /&gt;
&lt;br /&gt;
==Slot Variables==&lt;br /&gt;
In general (always?) slots are assigned as follows.&lt;br /&gt;
:Slot 0: Import&lt;br /&gt;
:Slot 1: Export&lt;br /&gt;
:Slot 2: Inside Machine&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Occupied&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Occupied&lt;br /&gt;
:&amp;lt;code&amp;gt;ls r0 d0 2 Occupied #Stores 1 in r0 if d0 has more seeds&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls vOccupied dThisVictim 2 Occupied #stores 1 in vOccupied if dThisVictim has more seeds&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;OccupantHash&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;OccupantHash&lt;br /&gt;
&amp;lt;div id=&amp;quot;Quantity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Quantity&lt;br /&gt;
&amp;lt;div id=&amp;quot;Damage&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Damage&lt;br /&gt;
&amp;lt;div id=&amp;quot;Efficiency&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Efficiency&lt;br /&gt;
&amp;lt;div id=&amp;quot;Health&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Health&lt;br /&gt;
&amp;lt;div id=&amp;quot;Growth&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Growth&lt;br /&gt;
:&amp;lt;code&amp;gt;ls r0 d0 0 Growth # Store the numerical growth stage of d0 in r0&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;div id=&amp;quot;Pressure&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Pressure&lt;br /&gt;
&amp;lt;div id=&amp;quot;Temperature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Temperature&lt;br /&gt;
&amp;lt;div id=&amp;quot;Charge&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Charge&lt;br /&gt;
&amp;lt;div id=&amp;quot;ChargeRatio&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;ChargeRatio&lt;br /&gt;
&amp;lt;div id=&amp;quot;Class&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Class&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureWaste&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureWaste&lt;br /&gt;
&amp;lt;div id=&amp;quot;PressureAir&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;PressureAir&lt;br /&gt;
&amp;lt;div id=&amp;quot;MaxQuantity&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;MaxQuantity&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Mature&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
;Mature&lt;br /&gt;
:&amp;lt;code&amp;gt;ls r0 d0 0 Mature # Store 1 in r0 if d0 has a mature crop&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop&amp;lt;/code&amp;gt;&lt;br /&gt;
;ReferenceId&lt;br /&gt;
:    Unique Identifier of a Device, this value is different for every device in a save.&lt;br /&gt;
&amp;lt;div id=&amp;quot;ReferenceId&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
Previous examples were obsolete due to game changes, or confusing, they have been moved into the Discussions section&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Harvie automation===&lt;br /&gt;
This script uses the batch instruction &amp;lt;code&amp;gt;sb ...&amp;lt;/code&amp;gt; to control all Harvie devices on the network. But only one Harvie and one Tray will be the &#039;&#039;master&#039;&#039; and have their values read, the rest of the Harvies will repeat exactly what this unit does. Some problems with this design is that different types of crops mature at different speeds, and if seeds were manually planted and the master unit recieved the first seed, the harvesting action will be performed too early on all the other plants since they are growing a few seconds slower.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:Expand, Automated Harvie Script}}&amp;quot; data-collapsetext=&amp;quot;{{int:Collapse, Automated Harvie Script}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
alias dHarvie d0&lt;br /&gt;
alias dTray d1&lt;br /&gt;
&lt;br /&gt;
alias rHarvieHash r8&lt;br /&gt;
alias rTrayHash r9&lt;br /&gt;
l rHarvieHash dHarvie PrefabHash&lt;br /&gt;
l rTrayHash dTray PrefabHash&lt;br /&gt;
&lt;br /&gt;
main:&lt;br /&gt;
yield&lt;br /&gt;
 #read plant data from the Tray&lt;br /&gt;
ls r0 dTray 0 Mature&lt;br /&gt;
 #harvestable plants return 1, young plants return 0&lt;br /&gt;
 #nothing planted returns -1&lt;br /&gt;
beq r0 -1 plantCrop&lt;br /&gt;
beq r0 1 harvestCrop&lt;br /&gt;
ls r0 dTray 0 Seeding&lt;br /&gt;
 #seeds available returns 1, all seeds picked returns 0&lt;br /&gt;
 #plants too young or old for seeds returns -1&lt;br /&gt;
beq r0 1 harvestCrop&lt;br /&gt;
j main&lt;br /&gt;
&lt;br /&gt;
plantCrop:&lt;br /&gt;
 #stop the planting if no seeds available&lt;br /&gt;
 #otherwise it will plant nothing repeatedly&lt;br /&gt;
ls r0 dHarvie 0 Occupied&lt;br /&gt;
beq r0 0 main&lt;br /&gt;
sb rHarvieHash Plant 1&lt;br /&gt;
j main&lt;br /&gt;
&lt;br /&gt;
harvestCrop:&lt;br /&gt;
sb rHarvieHash Harvest 1&lt;br /&gt;
j main&lt;br /&gt;
&lt;br /&gt;
### End Script ###&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===Solar Panel 2-axis tracking===&lt;br /&gt;
This script was copied from the [[Solar_Logic_Circuits_Guide]] (code provided by bti, comments and readability changes by Fudd79)&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:Expand, Solar Panel 2-axis tracking}}&amp;quot; data-collapsetext=&amp;quot;{{int:Collapse, Solar Panel 2-axis tracking}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This code assumes the following:&lt;br /&gt;
# Daylight Sensor data-port points north&lt;br /&gt;
# Solar Panel data-port points east&lt;br /&gt;
&lt;br /&gt;
alias sensor d0&lt;br /&gt;
alias v_angle r0&lt;br /&gt;
alias h_angle r1&lt;br /&gt;
alias sun_up r2&lt;br /&gt;
&lt;br /&gt;
define solar_panel_hash -539224550&lt;br /&gt;
define heavy_solar_panel_hash -1545574413&lt;br /&gt;
&lt;br /&gt;
start:&lt;br /&gt;
# Check to see if sun is up&lt;br /&gt;
l sun_up sensor Activate&lt;br /&gt;
# Go to reset if it&#039;s not&lt;br /&gt;
beqz sun_up reset&lt;br /&gt;
&lt;br /&gt;
# Calculate vertical angle&lt;br /&gt;
l v_angle sensor Vertical&lt;br /&gt;
div v_angle v_angle 1.5&lt;br /&gt;
sub v_angle 50 v_angle&lt;br /&gt;
&lt;br /&gt;
# Write vertical angle to all solar panels&lt;br /&gt;
sb solar_panel_hash Vertical v_angle&lt;br /&gt;
sb heavy_solar_panel_hash Vertical v_angle&lt;br /&gt;
&lt;br /&gt;
# Obtain horizontal angle&lt;br /&gt;
l h_angle sensor Horizontal&lt;br /&gt;
&lt;br /&gt;
# Write horizontal angle to all solar panels&lt;br /&gt;
sb solar_panel_hash Horizontal h_angle&lt;br /&gt;
sb heavy_solar_panel_hash Horizontal h_angle&lt;br /&gt;
&lt;br /&gt;
# Go to start again&lt;br /&gt;
yield&lt;br /&gt;
j start&lt;br /&gt;
&lt;br /&gt;
reset:&lt;br /&gt;
# Park solar panels vertically facing sunrise&lt;br /&gt;
sb solar_panel_hash Vertical 0&lt;br /&gt;
sb heavy_solar_panel_hash Vertical 0&lt;br /&gt;
# Park solar panels horizontally facing sunrise&lt;br /&gt;
sb solar_panel_hash Horizontal -90&lt;br /&gt;
sb heavy_solar_panel_hash Horizontal -90&lt;br /&gt;
# Wait 10 seconds&lt;br /&gt;
sleep 10&lt;br /&gt;
# Go to start again&lt;br /&gt;
j start&lt;br /&gt;
&lt;br /&gt;
### End Script ###&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
===Example experiment: how many lines of code are executed each tick?===&lt;br /&gt;
To determine this, a script without &amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt; will be used. It should have as few lines as possible (so no labels are used, but a reset value at the top will be needed) and count the number of lines, the IC Housing will be used to display the result.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
move r0 1   #the first line has number 0&lt;br /&gt;
add r0 r0 3&lt;br /&gt;
s db Setting r0&lt;br /&gt;
j 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result (the numbers appears every 0.5 seconds):&lt;br /&gt;
&amp;lt;br&amp;gt;127&lt;br /&gt;
&amp;lt;br&amp;gt;256 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;385 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;511 (+126)&lt;br /&gt;
&amp;lt;br&amp;gt;640 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;769 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;895 (+126)&lt;br /&gt;
&amp;lt;br&amp;gt;1024 (+129)&lt;br /&gt;
&amp;lt;br&amp;gt;1153 (+129)&lt;br /&gt;
&lt;br /&gt;
There is a repeating +129, +129, +126 sequence, a hint that the real value is 128. Which also happens to be the number of lines in a script, which makes sense. A variation of this experiment will show that empty rows are also counted towards this number.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Links=&lt;br /&gt;
----&lt;br /&gt;
* [https://stationeering.com/tools/ic] Stationeering.com offers a programmable circuits simulator so you can develop your code without repeatedly dying in game!&lt;br /&gt;
* [http://www.easy68k.com/] EASy68K is a 68000 Structured Assembly Language IDE.&lt;br /&gt;
* [https://marketplace.visualstudio.com/items?itemName=Traineratwot.stationeers-ic10] syntax highlighting for IC10 MIPS for Visual Studio Code (updated Feb 10th 2022)&lt;br /&gt;
* [https://pastebin.com/6Uw1KSRN] syntax highlighting for IC10 MIPS for KDE kwrite/kate text editor&lt;br /&gt;
* [https://drive.google.com/file/d/1yEsJ-u94OkuMQ8K6fY7Ja1HNpLcAdjo_/view] syntax highlighting for IC10 MIPS for Notepad++&lt;br /&gt;
* [https://pastebin.com/3kmGy0NN] syntax highlighting for IC10 MIPS for Notepad++ (updated: 05/05/2021)&lt;br /&gt;
* [https://drive.google.com/file/d/1Xrv5U0ZI5jDcPv7yX7EAAxaGk5hKP0xO/view?usp=sharing] syntax highlighting for IC10 MIPS for Notepad++ (updated: 11/08/2022)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Index=&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|+Functions &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
*[[#abs|abs]]&lt;br /&gt;
*[[#add|add]]&lt;br /&gt;
*[[#alias|alias]]&lt;br /&gt;
*[[#and|and]]&lt;br /&gt;
*[[#beq|beq]]&lt;br /&gt;
*[[#bgez|bgez]]&lt;br /&gt;
*[[#bgtz|bgtz]]&lt;br /&gt;
*[[#blez|blez]]&lt;br /&gt;
*[[#bltz|bltz]]&lt;br /&gt;
*[[#bne|bne]]&lt;br /&gt;
*[[#breq|breq]]&lt;br /&gt;
*[[#brgez|brgez]]&lt;br /&gt;
*[[#brgtz|brgtz]]&lt;br /&gt;
*[[#brlez|brlez]]&lt;br /&gt;
*[[#brltz|brltz]]&lt;br /&gt;
*[[#brne|brne]]&lt;br /&gt;
*[[#ceil|cell]]&lt;br /&gt;
*[[#div|div]]&lt;br /&gt;
*[[#exp|exp]]&lt;br /&gt;
*[[#floor|floor]]&lt;br /&gt;
*[[#j|j]]&lt;br /&gt;
*[[#jr|jr]]&lt;br /&gt;
*[[#l|l]]&lt;br /&gt;
*[[#log|log]]&lt;br /&gt;
*[[#ls|ls]]&lt;br /&gt;
*[[#max|max]]&lt;br /&gt;
*[[#min|min]]&lt;br /&gt;
*[[#mod|mod]]&lt;br /&gt;
*[[#move|move]]&lt;br /&gt;
*[[#mul|mul]]&lt;br /&gt;
*[[#nor|nor]]&lt;br /&gt;
*[[#or|or]]&lt;br /&gt;
*[[#rand|rand]]&lt;br /&gt;
*[[#round|round]]&lt;br /&gt;
*[[#s|s]]&lt;br /&gt;
*[[#slt|slt]]&lt;br /&gt;
*[[#sqrt|sqrt]]&lt;br /&gt;
*[[#sub|sub]]&lt;br /&gt;
*[[#trunc|trunc]]&lt;br /&gt;
*[[#xor|xor]]xor&lt;br /&gt;
*[[#yield|yield]]&lt;br /&gt;
*[[##|#]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|+Device Variables &lt;br /&gt;
&amp;lt;div  class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
*[[#Activate|Activate]]&lt;br /&gt;
*[[#AirRelease|AirRelease]]&lt;br /&gt;
*[[#Charge|Charge]]&lt;br /&gt;
*[[#CLearMemory|CLearMemory]]&lt;br /&gt;
*[[#Color|Color]]&lt;br /&gt;
*[[#CompletionRatio|CompletionRatio]]&lt;br /&gt;
*[[#ElevatorLevel|ElevatorLevel]]&lt;br /&gt;
*[[#ElevatorSpeed|ElevatorSpeed]]&lt;br /&gt;
*[[#Error|Error]]&lt;br /&gt;
*[[#ExportCount|ExportCount]]&lt;br /&gt;
*[[#Filtration|Filtration]]&lt;br /&gt;
*[[#Harvest|Harvest]]&lt;br /&gt;
*[[#Horizontal|Horizontal]]&lt;br /&gt;
*[[#HorizontalRatio|HorizontalRatio]]&lt;br /&gt;
*[[#Idle|Idle]]&lt;br /&gt;
*[[#ImportCount|ImportCount]]&lt;br /&gt;
*[[#Lock|Lock]]&lt;br /&gt;
*[[#Maximum|Maximum]]&lt;br /&gt;
*[[#Mode|Mode]]&lt;br /&gt;
*[[#On|On]]&lt;br /&gt;
*[[#Open|Open]]&lt;br /&gt;
*[[#Output|Output]]&lt;br /&gt;
*[[#Plant|Plant]]&lt;br /&gt;
*[[#PositionX|PositionX]]&lt;br /&gt;
*[[#PositionY|PositionY]]&lt;br /&gt;
*[[#PositionZ|PositionZ]]&lt;br /&gt;
*[[#Power|Power]]&lt;br /&gt;
*[[#PowerActual|PowerActual]]&lt;br /&gt;
*[[#PowerPotential|PowerPotential]]&lt;br /&gt;
*[[#PowerRequired|PowerRequired]]&lt;br /&gt;
*[[#Pressure|Pressure]]&lt;br /&gt;
*[[#PressureExternal|PressureExternal]]&lt;br /&gt;
*[[#PressureInteral|PressureInteral]]&lt;br /&gt;
*[[#PressureSetting|PressureSetting]]&lt;br /&gt;
*[[#Quantity|Quantity]]&lt;br /&gt;
*[[#Ratio|Ratio]]&lt;br /&gt;
*[[#RatioCarbonDioxide|RatioCarbonDioxide]]&lt;br /&gt;
*[[#RatioNitrogen|RatioNitrogen]]&lt;br /&gt;
*[[#RatioOxygen|RatioOxygen]]&lt;br /&gt;
*[[#RatioPollutant|RatioPollutant]]&lt;br /&gt;
*[[#RatioVolatiles|RatioVolatiles]]&lt;br /&gt;
*[[#RatioWater|RatioWater]]&lt;br /&gt;
*[[#Reagents|Reagents]]&lt;br /&gt;
*[[#RecipeHash|RecipeHash]]&lt;br /&gt;
*[[#RequestHash|RequestHash]]&lt;br /&gt;
*[[#RequiredPower|RequiredPower]]&lt;br /&gt;
*[[#Setting|Setting]]&lt;br /&gt;
*[[#SolarAngle|SolarAngle]]&lt;br /&gt;
*[[#Temperature|Temperature]]&lt;br /&gt;
*[[#TemperatureSettings|TemperatureSettings]]&lt;br /&gt;
*[[#TotalMoles|TotalMoles]]&lt;br /&gt;
*[[#VelocityMagnitude|VelocityMagnitude]]&lt;br /&gt;
*[[#VelocityRelativeX|VelocityRelativeX]]&lt;br /&gt;
*[[#VelocityRelativeY|VelocityRelativeY]]&lt;br /&gt;
*[[#VelocityRelativeZ|VelocityRelativeZ]]&lt;br /&gt;
*[[#Vertical|Vertical]]&lt;br /&gt;
*[[#VerticalRatio|VerticalRatio]]&lt;br /&gt;
*[[#Volume|Volume]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|+Slot Variables &lt;br /&gt;
&amp;lt;div  class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
*[[#Occupied|Occupied]]&lt;br /&gt;
*[[#OccupantHash|OccupantHash]]&lt;br /&gt;
*[[#Quantity|Quantity]]&lt;br /&gt;
*[[#Damage|Damage]]&lt;br /&gt;
*[[#Efficiency|Efficiency]]&lt;br /&gt;
*[[#Health|Health]]&lt;br /&gt;
*[[#Growth|Growth]]&lt;br /&gt;
*[[#Pressure|Pressure]]&lt;br /&gt;
*[[#Temperature|Temperature]]&lt;br /&gt;
*[[#Charge|Charge]]&lt;br /&gt;
*[[#ChargeRatio|ChargeRatio]]&lt;br /&gt;
*[[#Class|Class]]&lt;br /&gt;
*[[#PressureWaste|PressureWaste]]&lt;br /&gt;
*[[#PressureAir|PressureAir]]&lt;br /&gt;
*[[#MaxQuantity|MaxQuantity]]&lt;br /&gt;
*[[#Mature|Mature]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Data_Network_Colors&amp;diff=8574</id>
		<title>Data Network Colors</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Data_Network_Colors&amp;diff=8574"/>
		<updated>2019-06-25T21:27:57Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Data Network]]&lt;br /&gt;
== Description ==&lt;br /&gt;
This is a list of the colors used by various items with the logic network. These are the same colors that can be applied to physical items with a [[Spray_Can|Spray Can]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Color&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Blue&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Gray&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Green&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Orange&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Red&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Yellow&lt;br /&gt;
|-&lt;br /&gt;
| 6 || White&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Black&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Brown&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Khaki&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Pink&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Purple&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Logic_I/O&amp;diff=4520</id>
		<title>Logic I/O</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Logic_I/O&amp;diff=4520"/>
		<updated>2018-07-05T16:54:21Z</updated>

		<summary type="html">&lt;p&gt;Duke: Batch Reader &amp;amp; Slot Reader now on stable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Structurebox&lt;br /&gt;
 | name             = Logic Reader&lt;br /&gt;
 | image            = [[File:LogicReader.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Logic Writer&lt;br /&gt;
 | image            = [[File:LogicWriter.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Batch Writer&lt;br /&gt;
 | image            = [[File:BatchWriter.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Logic Mirror&lt;br /&gt;
 | image            = [[File:LogicMirror.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Slot Reader&lt;br /&gt;
 | image            = [[File:SlotReader.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Batch Reader&lt;br /&gt;
 | image            = [[File:BatchReader.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Logic Input/Output Unit is used to &#039;&#039;&#039;Read&#039;&#039;&#039; (input) data from any machine with a data port connected through the data network, or &#039;&#039;&#039;Write&#039;&#039;&#039; (output) data to any machine with a data port connected to trough the data network. The Input, Output and Power networks can be completely separated.&lt;br /&gt;
&lt;br /&gt;
== Logic Reader ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Left: Input Selector. Click with [[Screwdriver]] to select from which machine to read from. Only machines with a data port connected though the cables connected to the left port can be read from.&lt;br /&gt;
* Right: Variable Selector: Click to select what Variable to output into the network on the right. Different machines will have different available variables to read from. &lt;br /&gt;
&lt;br /&gt;
== Logic Writer ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Bottom Left: Variable Input Selector: Click with [[Screwdriver]] to select the value to input. This can be directly from a machine, another logic circuit, a computer, etc.&lt;br /&gt;
* Top Right: Machine Write Selector. Click to select what machine to write to. Only machines with a data port connected though the cables connected to the right port can be written to.&lt;br /&gt;
* Bottom Right: Variable Selector: Click to select what variable to write to the machine. The value written will be what is captured by the Variable Input Selector.&lt;br /&gt;
&lt;br /&gt;
== Batch Writer ==&lt;br /&gt;
&lt;br /&gt;
The Batch Writer writes to all conected devices of a device type. &lt;br /&gt;
For example: One can control all digital valves connected in its network with a single Batch Writer.&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Bottom Left: Variable Input Selector: Click with [[Screwdriver]] to select the value to input. This can be directly from a machine, another logic circuit, a computer, etc.&lt;br /&gt;
* Top Right: Machine Type Selector. Click to select what machine type to write to. All machines of that type will recieve the exact same data. For example selecting &#039;&#039;Solar Panel&#039;&#039; will write to all solar panels on the network.&lt;br /&gt;
* Bottom Right: Variable Selector: Click to select what variable to write to the machines. The value written will be what is captured by the Variable Input Selector.&lt;br /&gt;
&lt;br /&gt;
== Logic Mirror ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Mirrored Device&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Input/Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Centre: Variable Mirroring Selector: Click with [[Screwdriver]] to select the device to mirror. This can be any machine, logic circuit, computer, etc.&lt;br /&gt;
&lt;br /&gt;
== Slot Reader ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Left: Variable Input Selector: Click with [[Screwdriver]] to select the value to input. This can be from any device that has inventory slots, etc.&lt;br /&gt;
* Centre: Slot Selector: Click to Select which slot to read from.&lt;br /&gt;
* Right: Variable Selector: Click to select what variable to output into the network on the right.&lt;br /&gt;
&lt;br /&gt;
== Batch Reader ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Bottom Left: Variable Input Selector: Click with [[Screwdriver]] to select from which machine type to read from.&lt;br /&gt;
* Top Right: Method Selector. Click to select by which method to pull data.&lt;br /&gt;
* Bottom Right: Variable Selector: Click to select what variable to output into the network on the right.&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Logic_I/O&amp;diff=4474</id>
		<title>Logic I/O</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Logic_I/O&amp;diff=4474"/>
		<updated>2018-07-02T14:44:39Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Structurebox&lt;br /&gt;
 | name             = Logic Reader&lt;br /&gt;
 | image            = [[File:LogicReader.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Logic Writer&lt;br /&gt;
 | image            = [[File:LogicWriter.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Batch Writer&lt;br /&gt;
 | image            = [[File:BatchWriter.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Logic Mirror&lt;br /&gt;
 | image            = [[File:LogicMirror.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Slot Reader&lt;br /&gt;
 | image            = [[File:SlotReader.jpg]]&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name             = Batch Reader&lt;br /&gt;
 | image            = [[File:BatchReader.jpg]]&lt;br /&gt;
 | other            = beta only&lt;br /&gt;
 | power_usage      = 10W&lt;br /&gt;
 | placed_with_item = [[Kit (Logic I/O)]]&lt;br /&gt;
 | placed_on_grid   = Small Grid, On Frames&lt;br /&gt;
 | decon_with_tool1 = [[Hand Drill]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Logic Input/Output Unit is used to &#039;&#039;&#039;Read&#039;&#039;&#039; (input) data from any machine with a data port connected through the data network, or &#039;&#039;&#039;Write&#039;&#039;&#039; (output) data to any machine with a data port connected to trough the data network. The Input, Output and Power networks can be completely separated.&lt;br /&gt;
&lt;br /&gt;
== Logic Reader ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Left: Input Selector. Click with [[Screwdriver]] to select from which machine to read from. Only machines with a data port connected though the cables connected to the left port can be read from.&lt;br /&gt;
* Right: Variable Selector: Click to select what Variable to output into the network on the right. Different machines will have different available variables to read from. &lt;br /&gt;
&lt;br /&gt;
== Logic Writer ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Bottom Left: Variable Input Selector: Click with [[Screwdriver]] to select the value to input. This can be directly from a machine, another logic circuit, a computer, etc.&lt;br /&gt;
* Top Right: Machine Write Selector. Click to select what machine to write to. Only machines with a data port connected though the cables connected to the right port can be written to.&lt;br /&gt;
* Bottom Right: Variable Selector: Click to select what variable to write to the machine. The value written will be what is captured by the Variable Input Selector.&lt;br /&gt;
&lt;br /&gt;
== Batch Writer ==&lt;br /&gt;
&lt;br /&gt;
The Batch Writer writes to all conected devices of a device type. &lt;br /&gt;
For example: One can control all digital valves connected in its network with a single Batch Writer.&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Bottom Left: Variable Input Selector: Click with [[Screwdriver]] to select the value to input. This can be directly from a machine, another logic circuit, a computer, etc.&lt;br /&gt;
* Top Right: Machine Type Selector. Click to select what machine type to write to. All machines of that type will recieve the exact same data. For example selecting &#039;&#039;Solar Panel&#039;&#039; will write to all solar panels on the network.&lt;br /&gt;
* Bottom Right: Variable Selector: Click to select what variable to write to the machines. The value written will be what is captured by the Variable Input Selector.&lt;br /&gt;
&lt;br /&gt;
== Logic Mirror ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Mirrored Device&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Input/Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Centre: Variable Mirroring Selector: Click with [[Screwdriver]] to select the device to mirror. This can be any machine, logic circuit, computer, etc.&lt;br /&gt;
&lt;br /&gt;
== Slot Reader ==&lt;br /&gt;
&lt;br /&gt;
Currently beta only&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Left: Variable Input Selector: Click with [[Screwdriver]] to select the value to input. This can be from any device that has inventory slots, etc.&lt;br /&gt;
* Centre: Slot Selector: Click to Select which slot to read from.&lt;br /&gt;
* Right: Variable Selector: Click to select what variable to output into the network on the right.&lt;br /&gt;
&lt;br /&gt;
== Batch Reader ==&lt;br /&gt;
&lt;br /&gt;
Currently beta only&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Bottom Left: Variable Input Selector: Click with [[Screwdriver]] to select from which machine type to read from.&lt;br /&gt;
* Top Right: Method Selector. Click to select by which method to pull data.&lt;br /&gt;
* Bottom Right: Variable Selector: Click to select what variable to output into the network on the right.&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=File:BatchReader.jpg&amp;diff=4473</id>
		<title>File:BatchReader.jpg</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=File:BatchReader.jpg&amp;diff=4473"/>
		<updated>2018-07-02T14:37:13Z</updated>

		<summary type="html">&lt;p&gt;Duke: Image of a batch reader&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image of a batch reader&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Logic_I/O&amp;diff=4401</id>
		<title>Logic I/O</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Logic_I/O&amp;diff=4401"/>
		<updated>2018-07-01T18:09:28Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Structurebox&lt;br /&gt;
 | name = Logic Reader&lt;br /&gt;
 | image =  [[File:LogicReader.jpg]]&lt;br /&gt;
 | placement = Small Grid&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name = Logic Writer&lt;br /&gt;
 | image =  [[File:LogicWriter.jpg]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name = Batch Writer&lt;br /&gt;
 | image =  [[File:BatchWriter.jpg]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name = Logic Mirror&lt;br /&gt;
 | image =  [[File:LogicMirror.jpg]]&lt;br /&gt;
 | other = beta only&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name = Slot Reader&lt;br /&gt;
 | image =  [[File:SlotReader.jpg]]&lt;br /&gt;
 | other = beta only&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Logic Input/Output Unit is used to &#039;&#039;&#039;Read&#039;&#039;&#039; (input) data from any machine with a data port connected through the data network, or &#039;&#039;&#039;Write&#039;&#039;&#039; (output) data to any machine with a data port connected to trough the data network. The Input, Output and Power networks can be completely separated.&lt;br /&gt;
&lt;br /&gt;
== Logic Reader ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Left: Input Selector. Click with [[Screwdriver]] to select from which machine to read from. Only machines with a data port connected trought the cables connected to the left port can be read from.&lt;br /&gt;
* Right: Variable Selector: Click to select what &amp;quot;variable&amp;quot; to output into the network on the right. Different machines will have different available variables to read from. &lt;br /&gt;
&lt;br /&gt;
== Logic Writer ==&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Bottom Left: Variable Input Selector: Click with [[Screwdriver]] to select the value to input. This can be directly from a machine, another logic circuit, a computer, etc.&lt;br /&gt;
* Top Right: Machine Write Selector. Click to select what machine to write to. Only machines with a data port connected trought the cables connected to the right port can be written to.&lt;br /&gt;
* Bottom Right: Variable Selector: Click to select what variable to write to the machine. The value written will be what is captured by the Variable Input Selector.&lt;br /&gt;
&lt;br /&gt;
== Batch Writer ==&lt;br /&gt;
&lt;br /&gt;
The Batch Writer writes to all conected devices of a device type. &lt;br /&gt;
For example: One can control all digital valves connected in its network with a single Batch Writer.&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Bottom Left: Variable Input Selector: Click with [[Screwdriver]] to select the value to input. This can be directly from a machine, another logic circuit, a computer, etc.&lt;br /&gt;
* Top Right: Machine Type Selector. Click to select what machine type to write to. All machines of that type will recieve the exact same data. For example selecting &#039;&#039;Solar Panel&#039;&#039; will write to all solar panels on the network.&lt;br /&gt;
* Bottom Right: Variable Selector: Click to select what variable to write to the machines. The value written will be what is captured by the Variable Input Selector.&lt;br /&gt;
&lt;br /&gt;
== Logic Mirror ==&lt;br /&gt;
&lt;br /&gt;
(beta)&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Mirrored Device&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Input/Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Centre: Variable Mirroring Selector: Click with [[Screwdriver]] to select the device to mirror. This can be any machine, logic circuit, computer, etc.&lt;br /&gt;
&lt;br /&gt;
== Slot Reader ==&lt;br /&gt;
&lt;br /&gt;
(beta)&lt;br /&gt;
&lt;br /&gt;
=== Connectors ===&lt;br /&gt;
&lt;br /&gt;
* Left: Data Input&lt;br /&gt;
* Top: Power Input (10w)&lt;br /&gt;
* Right: Data Output&lt;br /&gt;
&lt;br /&gt;
=== Screws ===&lt;br /&gt;
&lt;br /&gt;
* Left: Variable Input Selector: Click with [[Screwdriver]] to select the value to input. This can be from any device that has inventory slots, etc.&lt;br /&gt;
* Centre: Slot Selector: Click to Select which slot to read from.&lt;br /&gt;
* Right: Variable Selector: Click to select what variable to output into the network on the right.&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=File:SlotReader.jpg&amp;diff=4391</id>
		<title>File:SlotReader.jpg</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=File:SlotReader.jpg&amp;diff=4391"/>
		<updated>2018-07-01T17:08:35Z</updated>

		<summary type="html">&lt;p&gt;Duke: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Image of a slot reader}}&lt;br /&gt;
|date=2018-07-01&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Duke|Duke]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{licensing|generic}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=File:LogicMirror.jpg&amp;diff=4390</id>
		<title>File:LogicMirror.jpg</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=File:LogicMirror.jpg&amp;diff=4390"/>
		<updated>2018-07-01T17:08:35Z</updated>

		<summary type="html">&lt;p&gt;Duke: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Image of a logic mirror}}&lt;br /&gt;
|date=2018-07-01&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Duke|Duke]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{licensing|generic}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=File:BatchWriter.jpg&amp;diff=4389</id>
		<title>File:BatchWriter.jpg</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=File:BatchWriter.jpg&amp;diff=4389"/>
		<updated>2018-07-01T17:08:35Z</updated>

		<summary type="html">&lt;p&gt;Duke: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Image of batch writer}}&lt;br /&gt;
|date=2018-07-01&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Duke|Duke]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{licensing|generic}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=File:LogicWriter.jpg&amp;diff=4388</id>
		<title>File:LogicWriter.jpg</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=File:LogicWriter.jpg&amp;diff=4388"/>
		<updated>2018-07-01T17:08:35Z</updated>

		<summary type="html">&lt;p&gt;Duke: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Image of a logic writer}}&lt;br /&gt;
|date=2018-07-01&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Duke|Duke]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{licensing|generic}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=File:LogicReader.jpg&amp;diff=4387</id>
		<title>File:LogicReader.jpg</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=File:LogicReader.jpg&amp;diff=4387"/>
		<updated>2018-07-01T17:08:35Z</updated>

		<summary type="html">&lt;p&gt;Duke: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Image of a logic reader}}&lt;br /&gt;
|date=2018-07-01&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Duke|Duke]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{licensing|generic}}&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Ore_(Iron)&amp;diff=4362</id>
		<title>Ore (Iron)</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Ore_(Iron)&amp;diff=4362"/>
		<updated>2018-07-01T12:34:59Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Ore]]&lt;br /&gt;
&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
{{Itembox&lt;br /&gt;
 | name        = Iron Ore&lt;br /&gt;
 | image       =  [[File:ItemIronOre.png]]&lt;br /&gt;
 | stacks      = 50x&lt;br /&gt;
 | usedwith    = [[Arc Furnace]], [[Furnace]]&lt;br /&gt;
}}&lt;br /&gt;
{{Structurebox&lt;br /&gt;
 | name = Iron Ore (Unmined)&lt;br /&gt;
 | image =  [[File:Iron_ore.jpg]]&lt;br /&gt;
 | placement = Terrain&lt;br /&gt;
 | other = Requires [[Mining Drill]] or [[Pickaxe]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Iron Ore]] is the most basic ore type in Stationeers and most used.&lt;br /&gt;
&lt;br /&gt;
== Obtaining == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[[Iron Ore]] is mined throughout the surface of the moon using a [[Mining Drill]].&lt;br /&gt;
&lt;br /&gt;
== Processing == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Iron ore can be turned into an [[Iron Ingot]] by smelting it in an [[Arc Furnace]] or [[Furnace]]. It can be smelted into [[Steel Ingot]] using [[Coal Ore|Coal]] and [[Iron Ore]] in a Furnace (not Arc Furnace) that has [[Ice(Oxite)|Oxygen]] and gas from [[Volatile Ore]].&lt;br /&gt;
&lt;br /&gt;
Smelting one Iron Ore produces the following gases:&lt;br /&gt;
{|&lt;br /&gt;
|2 mol&lt;br /&gt;
|[[Pollutant]]&lt;br /&gt;
|-&lt;br /&gt;
|0.5 mol&lt;br /&gt;
|[[Carbon Dioxide]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Cable_Analyser&amp;diff=4360</id>
		<title>Cable Analyser</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Cable_Analyser&amp;diff=4360"/>
		<updated>2018-07-01T12:23:25Z</updated>

		<summary type="html">&lt;p&gt;Duke: Redirected page to Kit (Cable Analyzer)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Kit_(Cable_Analyzer)]]&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Composite_Walls&amp;diff=4351</id>
		<title>Composite Walls</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Composite_Walls&amp;diff=4351"/>
		<updated>2018-06-28T21:12:52Z</updated>

		<summary type="html">&lt;p&gt;Duke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;Construction Kit (Walls)&#039;&#039;&#039; is used to build 3 different type of walls in the game: [[Composite Walls]], [[Railings]] and [[Composite Windows]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
[[File:Construction Kit (Walls).png|frameless|A railing, Window, and Wall, all finished.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
All variants of the walls can be painted to various colors with [[Spray Paint]].&lt;br /&gt;
&lt;br /&gt;
== Recipe == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;1g [[Steel]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
This block can be made in: [[Autolathe]], [[Fabricator]]&lt;br /&gt;
&lt;br /&gt;
== Usage == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Railing === &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
With the &#039;&#039;&#039;Construction Kit (Walls)&#039;&#039;&#039; in hand, right click to activate build mode. Use the &#039;&#039;&#039;Scroll Wheel&#039;&#039;&#039; on your mouse to select &#039;&#039;&#039;Railing&#039;&#039;&#039;. Use the rotation keys to place the railing in the appropriate location. Railings are single-step constructs.&lt;br /&gt;
&lt;br /&gt;
=== Composite Window === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
With the &#039;&#039;&#039;Construction Kit (Walls)&#039;&#039;&#039; in hand, right click to activate build mode. Use the &#039;&#039;&#039;Scroll Wheel&#039;&#039;&#039; on your mouse to select &#039;&#039;&#039;Composite Window&#039;&#039;&#039;. Use the rotation keys to place the window in the appropriate location. Composite Windows have 3 build steps. To complete the window, first right-click on it with an [[Iron Sheet]] to add the white facade. Then, finish the window with a [[Glass Sheet]]. Composite Windows will only finish one &amp;quot;side&amp;quot; of that window. To get proper finishing on both sides, you would need two of each of the three materials (one set for each side).&lt;br /&gt;
&lt;br /&gt;
=== Composite Wall === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
With the &#039;&#039;&#039;Construction Kit (Walls)&#039;&#039;&#039; in hand, right click to activate build mode. Use the &#039;&#039;&#039;Scroll Wheel&#039;&#039;&#039; on your mouse to select &#039;&#039;&#039;Composite Wall&#039;&#039;&#039;. Use the rotation keys to place the wall in the appropriate location. Composite Walls have 2 build steps. To complete the wall, right-click on it with a [[Steel Sheet]] to add the white facade. Composite Walls will only finish one &amp;quot;side&amp;quot; of that wall. To get proper finishing on both sides, you would need two of each of the two materials (one set for each side).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Solar_Logic_Circuits_Guide&amp;diff=4294</id>
		<title>Solar Logic Circuits Guide</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Solar_Logic_Circuits_Guide&amp;diff=4294"/>
		<updated>2018-06-22T14:31:54Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Easy/Compact Solar Setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
Due to the frequency of game updates, all solutions are subject to change and may or may not be functional.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Accurate Solar Setup ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Wooodiii, Corvus_bkgk, Enfantcool, Baksch&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Properties:&#039;&#039;&#039; Accurate (average error 1.3°), Auto-reset (variant), Power conserving (variant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Number of Components:&#039;&#039;&#039; 10-12&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Math Formula:&#039;&#039;&#039; &amp;lt;code&amp;gt;f(x) = min((x-min(x,15))/1.5, 100)&amp;lt;/code&amp;gt; where &#039;&#039;&#039;x&#039;&#039;&#039; is the solar angle.&lt;br /&gt;
&lt;br /&gt;
This setup is accurate, giving 495-500W throughout the day, with lower output only when the sun is lower than the panels can physically aim at. &lt;br /&gt;
&lt;br /&gt;
This setup adjusts for the fact that solar panels rotate through only 150 degrees. Instead of converting using 180/100, this setup converts by doing 150/100. It then clips the value at the edges, where the prior calculation would give elevations that are negative or greater than 100 (representing the fact that we would prefer the panel to track past 0 or 100, aiming all the way down to the horizon instead of stopping 15° short). The listed average error is nonzero only because of this completely unavoidable portion; the error is 0 throughout the 15°-165° portion of the day.&lt;br /&gt;
&lt;br /&gt;
This setup produces the equivalent of 274W averaged over a whole day/night cycle.&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
* 1 [[ Sensors| Construction Kit (Sensors)]] (&amp;quot;Daylight Sensor&amp;quot;)&lt;br /&gt;
* 2 [[Kit (Logic I/O)]] (1 &amp;quot;Logic Reader&amp;quot;, 1 &amp;quot;Batch Writer&amp;quot;)&lt;br /&gt;
* 3 [[Kit (Logic Memory)]]&lt;br /&gt;
* 4 [[Kit (Logic Processor)]] (2 &amp;quot;Math Unit&amp;quot;, 2 &amp;quot;Min/Max Unit&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* The [[Sensors#Daylight_Sensor|Daylight Sensor]] should face the sunrise.&lt;br /&gt;
* Solar panels should be rotated such that 0% vertical faces the sunrise.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Component (Name) !! Settings !! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| Logic Reader (A) || Daylight sensor, Solar angle || Sun&#039;s angle above the horizon&lt;br /&gt;
|-&lt;br /&gt;
| Memory (15) || 15 || True angle of solar panels at 0 elevation&lt;br /&gt;
|-&lt;br /&gt;
| Memory (1.5) || 1.5 || 150/100, the conversion constant from solar angle (range:15-165, i.e. 150) to panel elevation (range:0-100)&lt;br /&gt;
|-&lt;br /&gt;
| Min/Max Unit (B) || min(A,15) || Adjustment amount: 15, unless that would take A-B negative, in which case only enough to reach 0  (low edge case). Equivalent to min(A-B,0) but doesn&#039;t require storing 0. &lt;br /&gt;
|-&lt;br /&gt;
| Math Unit (C) || A-B || Adjusted solar angle&lt;br /&gt;
|-&lt;br /&gt;
| Math Unit (D) || C/1.5 || Conversion from solar angle to panel elevation&lt;br /&gt;
|-&lt;br /&gt;
| Memory (100) || 100 || Maximum possible panel elevation&lt;br /&gt;
|-&lt;br /&gt;
| Min/Max Unit (E) || min(D,100) || Cap elevation to 100 for solar angles past 165° (high edge case). Equivalent to doing min(A-B,165) before step D, but 100 is easier to set in memory than 165.&lt;br /&gt;
|-&lt;br /&gt;
| Batch Writer || E -&amp;gt; Solar panels, Vertical angle || Send elevation to solar panels&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Accurate Solar Control.png]]&lt;br /&gt;
&lt;br /&gt;
=== Auto-Reset Variant ===&lt;br /&gt;
For panels that automatically reset their facing upon sunset, use two more components, and adjust the final min/max unit:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Component (Name) !! Settings !! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| Logic Reader (L) || Daylight sensor, Activation || 1 while daytime, 0 while nighttime&lt;br /&gt;
|-&lt;br /&gt;
| Math Unit (F)  || 100*L || Maximum panel elevation, now 100 during day and 0 at night&lt;br /&gt;
|-&lt;br /&gt;
| (from above) Min/Max Unit (E) || min(D,&#039;&#039;&#039;F&#039;&#039;&#039;) || Adjusted panel elevation (high edge adjustment)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Power-Conserving Variant ===&lt;br /&gt;
To conserve power, it&#039;s possible to avoid running the entire circuit at night. A transformer can be controlled to power the main logic network above. In this way, only the two new components need to remain powered at all times.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Component (Name) !! Settings !! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| Logic Reader (L) || Daylight sensor, Activation || As in the auto-reset variant above&lt;br /&gt;
|-&lt;br /&gt;
| Logic Writer || L -&amp;gt; Transformer, On  || Transformer powers main logic network&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Easy/Compact Solar Setup ==&lt;br /&gt;
&#039;&#039;&#039;Author:&#039;&#039;&#039; Evie&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Stationeers Version:&#039;&#039;&#039; 0.1.1068.5451&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Properties:&#039;&#039;&#039; Simple, Inaccurate (Average error: 7.5°)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Number of Components:&#039;&#039;&#039; 5&lt;br /&gt;
&lt;br /&gt;
This imperfect setup is a common starting point. It starts off at 375w of power in the morning, builds up to 500w at zenith (noon) then back to 375. This is due to the fact that solars rotate through only 150 degrees of elevation and that this setup&#039;s math is correct only if they rotated through all 180 degrees of solar angle.&lt;br /&gt;
&lt;br /&gt;
This setup produces the equivalent of 239W averaged over a whole day/night cycle.&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
* 1 [[Construction Kit (Sensors)]]&lt;br /&gt;
* 2 [[Kit (Logic I/O)]]&lt;br /&gt;
* 1 [[Kit (Logic Memory)]]&lt;br /&gt;
* 1 [[Kit (Logic Processor)]] (&amp;quot;Math Unit&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
[[File:Evie&#039;s Solar Circuit Setup.jpg|none|Solar Setup Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* The [[Daylight Sensor]] MUST be facing West (sunrise), but its rotation doesn&#039;t matter.&lt;br /&gt;
* Solar panels should be rotated such as that 0% VERTICAL rotation faces west/sunrise, and 100% VERTICAL faces east/sunset. &lt;br /&gt;
* The [[Area Power Control]] is necessary for the circuit to stay powered during the night. It also hides all the modules from the rest of your system.&lt;br /&gt;
* Importantly, the solar input power doesn&#039;t directly connect to any of the logic writers. This not only ensures your system doesn&#039;t lose power but also prevents short-circuiting that would burn cables.&lt;br /&gt;
* Using 1.7 instead of 1.8 reduces the average error of this design to 6.5° and increases overall power generation, particularly in the afternoon.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
	<entry>
		<id>https://stationeers-wiki.com/index.php?title=Solar_Logic_Circuits_Guide&amp;diff=4293</id>
		<title>Solar Logic Circuits Guide</title>
		<link rel="alternate" type="text/html" href="https://stationeers-wiki.com/index.php?title=Solar_Logic_Circuits_Guide&amp;diff=4293"/>
		<updated>2018-06-22T14:30:47Z</updated>

		<summary type="html">&lt;p&gt;Duke: /* Accurate Solar Setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
&lt;br /&gt;
Due to the frequency of game updates, all solutions are subject to change and may or may not be functional.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Accurate Solar Setup ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Wooodiii, Corvus_bkgk, Enfantcool, Baksch&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Properties:&#039;&#039;&#039; Accurate (average error 1.3°), Auto-reset (variant), Power conserving (variant)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Number of Components:&#039;&#039;&#039; 10-12&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Math Formula:&#039;&#039;&#039; &amp;lt;code&amp;gt;f(x) = min((x-min(x,15))/1.5, 100)&amp;lt;/code&amp;gt; where &#039;&#039;&#039;x&#039;&#039;&#039; is the solar angle.&lt;br /&gt;
&lt;br /&gt;
This setup is accurate, giving 495-500W throughout the day, with lower output only when the sun is lower than the panels can physically aim at. &lt;br /&gt;
&lt;br /&gt;
This setup adjusts for the fact that solar panels rotate through only 150 degrees. Instead of converting using 180/100, this setup converts by doing 150/100. It then clips the value at the edges, where the prior calculation would give elevations that are negative or greater than 100 (representing the fact that we would prefer the panel to track past 0 or 100, aiming all the way down to the horizon instead of stopping 15° short). The listed average error is nonzero only because of this completely unavoidable portion; the error is 0 throughout the 15°-165° portion of the day.&lt;br /&gt;
&lt;br /&gt;
This setup produces the equivalent of 274W averaged over a whole day/night cycle.&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
* 1 [[ Sensors| Construction Kit (Sensors)]] (&amp;quot;Daylight Sensor&amp;quot;)&lt;br /&gt;
* 2 [[Kit (Logic I/O)]] (1 &amp;quot;Logic Reader&amp;quot;, 1 &amp;quot;Batch Writer&amp;quot;)&lt;br /&gt;
* 3 [[Kit (Logic Memory)]]&lt;br /&gt;
* 4 [[Kit (Logic Processor)]] (2 &amp;quot;Math Unit&amp;quot;, 2 &amp;quot;Min/Max Unit&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* The [[Sensors#Daylight_Sensor|Daylight Sensor]] should face the sunrise.&lt;br /&gt;
* Solar panels should be rotated such that 0% vertical faces the sunrise.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Component (Name) !! Settings !! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| Logic Reader (A) || Daylight sensor, Solar angle || Sun&#039;s angle above the horizon&lt;br /&gt;
|-&lt;br /&gt;
| Memory (15) || 15 || True angle of solar panels at 0 elevation&lt;br /&gt;
|-&lt;br /&gt;
| Memory (1.5) || 1.5 || 150/100, the conversion constant from solar angle (range:15-165, i.e. 150) to panel elevation (range:0-100)&lt;br /&gt;
|-&lt;br /&gt;
| Min/Max Unit (B) || min(A,15) || Adjustment amount: 15, unless that would take A-B negative, in which case only enough to reach 0  (low edge case). Equivalent to min(A-B,0) but doesn&#039;t require storing 0. &lt;br /&gt;
|-&lt;br /&gt;
| Math Unit (C) || A-B || Adjusted solar angle&lt;br /&gt;
|-&lt;br /&gt;
| Math Unit (D) || C/1.5 || Conversion from solar angle to panel elevation&lt;br /&gt;
|-&lt;br /&gt;
| Memory (100) || 100 || Maximum possible panel elevation&lt;br /&gt;
|-&lt;br /&gt;
| Min/Max Unit (E) || min(D,100) || Cap elevation to 100 for solar angles past 165° (high edge case). Equivalent to doing min(A-B,165) before step D, but 100 is easier to set in memory than 165.&lt;br /&gt;
|-&lt;br /&gt;
| Batch Writer || E -&amp;gt; Solar panels, Vertical angle || Send elevation to solar panels&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Accurate Solar Control.png]]&lt;br /&gt;
&lt;br /&gt;
=== Auto-Reset Variant ===&lt;br /&gt;
For panels that automatically reset their facing upon sunset, use two more components, and adjust the final min/max unit:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Component (Name) !! Settings !! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| Logic Reader (L) || Daylight sensor, Activation || 1 while daytime, 0 while nighttime&lt;br /&gt;
|-&lt;br /&gt;
| Math Unit (F)  || 100*L || Maximum panel elevation, now 100 during day and 0 at night&lt;br /&gt;
|-&lt;br /&gt;
| (from above) Min/Max Unit (E) || min(D,&#039;&#039;&#039;F&#039;&#039;&#039;) || Adjusted panel elevation (high edge adjustment)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Power-Conserving Variant ===&lt;br /&gt;
To conserve power, it&#039;s possible to avoid running the entire circuit at night. A transformer can be controlled to power the main logic network above. In this way, only the two new components need to remain powered at all times.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Component (Name) !! Settings !! Explanation&lt;br /&gt;
|-&lt;br /&gt;
| Logic Reader (L) || Daylight sensor, Activation || As in the auto-reset variant above&lt;br /&gt;
|-&lt;br /&gt;
| Logic Writer || L -&amp;gt; Transformer, On  || Transformer powers main logic network&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Easy/Compact Solar Setup ==&lt;br /&gt;
&#039;&#039;&#039;Author:&#039;&#039;&#039; Evie&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Stationeers Version:&#039;&#039;&#039; 0.1.1068.5451&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Properties:&#039;&#039;&#039; Simple, Inaccurate (Average error: 7.5°)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Number of Components:&#039;&#039;&#039; 5&lt;br /&gt;
&lt;br /&gt;
This imperfect setup is a common starting point. It starts off at 375w of power in the morning, builds up to 500w at zenith (noon) then back to 375. This is due to the fact that solars rotate through only 150 degrees of elevation and that this setup&#039;s math is correct only if they rotated through all 180 degrees of solar angle.&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
* 1 [[Construction Kit (Sensors)]]&lt;br /&gt;
* 2 [[Kit (Logic I/O)]]&lt;br /&gt;
* 1 [[Kit (Logic Memory)]]&lt;br /&gt;
* 1 [[Kit (Logic Processor)]] (&amp;quot;Math Unit&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
[[File:Evie&#039;s Solar Circuit Setup.jpg|none|Solar Setup Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* The [[Daylight Sensor]] MUST be facing West (sunrise), but its rotation doesn&#039;t matter.&lt;br /&gt;
* Solar panels should be rotated such as that 0% VERTICAL rotation faces west/sunrise, and 100% VERTICAL faces east/sunset. &lt;br /&gt;
* The [[Area Power Control]] is necessary for the circuit to stay powered during the night. It also hides all the modules from the rest of your system.&lt;br /&gt;
* Importantly, the solar input power doesn&#039;t directly connect to any of the logic writers. This not only ensures your system doesn&#039;t lose power but also prevents short-circuiting that would burn cables.&lt;br /&gt;
* Using 1.7 instead of 1.8 reduces the average error of this design to 6.5° and increases overall power generation, particularly in the afternoon.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Duke</name></author>
	</entry>
</feed>