https://stationeers-wiki.com/api.php?action=feedcontributions&user=Legolegs&feedformat=atomUnofficial Stationeers Wiki - User contributions [en]2024-03-29T15:38:24ZUser contributionsMediaWiki 1.30.0https://stationeers-wiki.com/index.php?title=Integrated_Circuit_(IC10)&diff=10834Integrated Circuit (IC10)2021-06-22T21:26:30Z<p>Legolegs: /* How to flash program onto the IC chip */ added some clarification</p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:1--><br />
[[Category:Circuits]]<br />
[[Category:MIPS Programming]]<br />
</translate><br />
{{Itembox<br />
| name = Integrated Circuit (IC10)<br />
| image = [[File:IC 10.png|thumb|IC Housing and IC10 disassembled]]<br />
| createdwith = [[Electronics Printer]]<br />
| cost = 10 [[Gold]], 4 [[Steel]], 5 [[Electrum]], 2 [[Solder]]<br />
| stacks = No<br />
}}<br />
<br />
<translate><br />
<!--T:2--><br />
A chip that is programmed with a [[computer]]. Place the circuit in a [[Kit (IC Housing)|IC Housing]]. The [[MIPS]] language is used.<br />
</translate><br />
<br />
= Where to get programs =<br />
* Write one by yourself using the [[computer]].<br />
* Paste whatever you have found on the internet into your [[computer]].<br />
* Load from your private library program you have saved previously (even from different savegame).<br />
* Get one from Steam Workshop (first subscribe in steam, then in game it will be available in "library" on computer).<br />
<br />
= How to create programs =<br />
== You'll need ==<br />
# Basic knowledge about math and logic<br />
# Whatever you're intending to program (e.g.: cycling airlock) you must be learnt to do manually (e.g.: close doors, turn on vents, etc)<br />
# Learn the MIPS programming language. MIPS is real world low-level (i.e. close to hardware) programming language. IC10 is MIPS with some Stationeers flavor added. It is fairly simple and compact. Due to its simplicity MIPS is not suitable for big programs but you re not going to develop those in the game anyways.<br />
<br />
== How to start getting in the MIPS programing ==<br />
Get some simple program (even 10 lines will do), run it in Stationeers to see what it does and then read the text. Look into ingame editor help pages to decrypt keywords. MIPS keywords are abbreviations of English words and mostly make sense, eg. <code>beqz r0 foobar</code> means "'''B'''ranch (jump) to line labeled foobar if r0 '''EQ'''uals to '''Z'''ero".<br />
<br />
= How to flash program onto the IC chip =<br />
# Setup a [[Computer]], wire it to power.<br />
# Insert a [[Motherboard (IC Editor)]] in it.<br />
# Place [[Kit (IC Housing)|IC Housing]].<br />
# Wire DATA (green, right) port of the computer to DATA (green, bottom) port on the IC Housing.<br />
## Unless you're going to actually use/test your program in this particular IC Housing you do not need to power it.<br />
# Insert [[Integrated Circuit (IC10)]] into [[Kit (IC Housing)|IC Housing]].<br />
# Turn on the Computer, look at its screen and see if your IC Housing is listed and selected in the drop-down selector. You can have several IC Housings on the same data network, in that case better be renaming them using [[Labeller]]. The IC10 Integrated Circuit itself can also be labeled (and painted).<br />
## Optional: click "Import" to retrieve a program from the [[Integrated Circuit (IC10)]] into the computer.<br />
# Click "Edit" to open the code editor. Write/load from "Library"/paste your program, click "Confirm".<br />
# Now Computer contains the new program and Integrated Circuit still contains old one (or empty program). Click "Export" on the computer to copy the program into the Circuit. If the IC housing is powered the program will immediately run. You can repeat "Export" as many times as you want and reuse old Circuits.<br />
# When Circuit is picked up size of the stored program in bytes is shown.<br />
<br />
= How to make use of programmed IC Integrated Circuit =<br />
# Place [[Kit (IC Housing)|IC Housing]], wire it to power, insert the Circuit<br />
# Connect DATA (green, bottom) port on the IC Housing to machines you want to control. Some machines like an [[Autolathe]] have a DATA port, you need to use it (or both DATA and POWER). Some machines like a [[Stacker]] only have "universal" port.<br />
# Unless you're going to modify/debug your program on place you do not require a [[Computer]] here.<br />
# Using [[Screwdriver]] adjust six (or less) screws according to program description/purpose. Many programs do assign labels to screws using <code>alias</code> command (that's considered good style), to take benefit of it you can turn on IC Housing for a short time (that way it will blink yellow, it's okay). If all screws are set to "None" a misconfigured program can do no harm.<br />
# Turn on the IC Housing.<br />
<br />
= How large a program can be =<br />
There are 128 lines each being 52 characters long. Each character (incl. line break) takes 2 bytes. Maximum size IC chip will show is 13566.<br />
<br />
= See also =<br />
* [[MIPS]] — basic info and command reference<br />
* [[Advanced IC10 Programming]]<br />
* [https://stationeering.com/tools/ic Stationeering.com] by Melair — online emulator and command reference.<br />
<references /></div>Legolegshttps://stationeers-wiki.com/index.php?title=Kit_(Iron_Wall)&diff=10347Kit (Iron Wall)2021-02-14T10:09:15Z<p>Legolegs: /* Notes */ You can attach devices on the wall</p>
<hr />
<div>{{Itembox<br />
| name = Iron Walls<br />
| image = [[File:ItemKitWall.png]]<br />
| stacks = 30<br />
| createdwith = [[Autolathe]], [[Fabricator]]<br />
| cost = 1g [[Iron]]<br />
| maxpressure = 150kpa<br />
}}<br />
<br />
== Description ==<br />
<br />
Basic walls, they are airproof.<br />
<br />
Once the Iron Walls are placed, the walls are then completed by placing [[Iron Sheets]] over them, the placement of which does not require tools.<br />
<br />
In order to disassemble, the [[Crowbar]] is needed to remove the Iron Sheets, then the [[Angle Grinder]] is used to remove the Iron Walls.<br />
<br />
[[File:Kit iron wall.png|thumb|An Iron Wall and an Iron Composite Window, finished]]<br />
<br />
The kit offer two variants : an opaque wall or a composite window : <br />
* The wall require one [[Iron Sheets|IronSheet]] to complete<br />
* The composite window require one [[Iron Sheets|Iron Sheet]], then one [[Glass Sheets|Glass Sheet]] to complete. This window is similar to the steel one, except there is no white border around the glass<br />
<br />
== Notes ==<br />
* You can attach devices on the face side of the wall.<br />
* Composite walls appear to resist temperatures up to 2000K on the finished side. The temperature resistance on the unfinished side seems to be infinite.<br />
<br />
[[Category:Construction]]<br />
[[Category:Structures]]</div>Legolegshttps://stationeers-wiki.com/index.php?title=Beginner%27s_Guide&diff=10317Beginner's Guide2021-02-06T08:51:16Z<p>Legolegs: rollback vandalism</p>
<hr />
<div>[[Category:Tutorials]]<br />
<languages /><br />
<translate><br />
<!--T:1--><br />
''' This page is a work-in-progress, add Tips to the bottom 😎 '''<br />
<br />
<!--T:2--><br />
This should be a crash-course primer to getting started in Stationeers. You can find more guides in the Steam community, several of which are linked from the front page of this wiki.<br />
<br />
<!--T:3--><br />
''This guide assumes that you've selected Moon as your scenario.''<br />
<br />
=== Basic Controls === <!--T:4--><br />
<br />
<!--T:5--><br />
* Players interact with the world, items, and structures in Stationeers with an active hand system.<br />
* Your left and right hands are represented in the bottom middle of the screen. <br />
** '''WASD''' movement<br />
** '''Left Click''' interacts with the world using the current hand or tool in the current hand (ex: you can't interact with buttons while holding an item)<br />
** '''Right Click''' starts placement mode when holding a structure (ex: [[Iron Frames]] or [[Autolathe]])<br />
** '''Mouse Wheel'''<br />
*** With an open inventory - changes active slot<br />
*** When placing a structure - changes the mode for an item in placement mode (use this with [[Cables]] to change their shape)<br />
*** When using some consoles or computers - scrolls the active menu<br />
** '''E''' swaps current active hand<br />
** '''R''' opens the item in the current hand, or goes to its options<br />
** '''F''' swaps between held items and items in your inventory on the side (accessed through the number keys)<br />
** '''Q''' drops the currently held item in the active hand, holding '''Q''' will cause you to throw the item<br />
** '''1-6''' will open menus for worn items similar to pressing R, holding 1-6 will cause it to swap with the item in the current hand, or simply go in the current hand - ''don't do this with the helmet or suit in a vacuum''<br />
*** You can swap the [[Toolbelt|Tool Belt]] and the [[Mining Belt]] by holding a belt in your hand and then holding '''6'''<br />
** '''Delete, End, Insert, Home, Page Up, Page Down''' rotate item in placement mode. '''C''' is usefull for autorotate when placing cables or pipes.<br />
** '''G''' grab - not the same as drag, which is triggered by clicking on a portable item's handle with an empty hand<br />
** '''I''' quick open the helmet - ''don't do this in a vacuum''. You can lock the helmet in it's menu to avoid this.<br />
** '''O''' or '''Right Click''' turn held item on or off<br />
** '''J''' turn jet pack on or off. The propulsion tank will last for many hours use, use it freely for building or mining. Still, make '''sure''' you turn off the jet pack when not using it, as the jet pack will continue to drain the propulsion tank.<br />
<br />
=== Getting your Bearings === <!--T:6--><br />
<br />
<!--T:7--><br />
'' See also: [[Starting Gear]] and [[Constructing and Deconstructing Walls]] ''<br />
<br />
<!--T:8--><br />
When you spawn into the world you will see several crates and [[Road Flares]]. There's a lot to take in, but you have some time to get a feel for the controls and explore the crates. You will want to at least get started on a basic platform before sunrise though.<br />
<br />
=== Surviving the First Night === <!--T:9--><br />
<br />
<!--T:10--><br />
# Grab the [[Iron Frames]] from construction crate 1 by clicking on the lid and letting it open<br />
# Find a place where the blocks don't clip too much into the ground and place a 2x2 or a 3x3<br />
## You can create stairs later, so it's okay if your block is not placed too well right now<br />
## You can also deconstruct everything easily later on, only expending battery charge in the process<br />
# Put the [[Iron Frames]] back and grab the [[Iron Sheets]]<br />
# Switch to your free hand using '''E'''<br />
## Open your [[Toolbelt|Tool Belt]] by hitting '''6'''<br />
## Use the '''Mouse Wheel''' to highlight the [[Welder]] and press '''F''' to move it to your active / empty hand<br />
## Press '''O''' or '''R''', '''R''', then '''F''' to turn the torch on<br />
## Hover over the frame until prompted to construct the frame, then '''left click''' and hold<br />
## ''You only need to build the first level to be able to walk on it, the second level is considered airtight<br />
## Turn off the [[Welding Torch]] when you're done, otherwise it will stay on in your belt and either blow up or run out of fuel<br />
# Put the [[Iron Frames]] and [[Iron Sheets]] back in the crate<br />
# Grab the [[Kit (Solar Panel)]] from construction crate 1 and place it on your platform<br />
## You will need to finish constructing it by holding a [[Glass Sheets|Glass Sheet]] in your hand and hold down '''left mouse button''' while it constructs<br />
## You can use the [[Wrench]] from your [[Toolbelt|Tool Belt]] to rotate the [[Solar Panel]]<br />
##*Basic Solar panels that come in your spacecraft are now fixed mount. You will need steel to craft the adjustable ones. So skip the adjusting till you get your first batch of steel (see below).<br />
## The top parts are for vertical orientation, the base of the solar panel can be rotated for horizontal positioning<br />
## If you see the sun, make the panel face it! You can see its current generation by hovering over the structure<br />
# Grab the [[Area Power Controller]] from construction crate 1<br />
## Place it on the frames and open it with the [[Crowbar]]<br />
## Grab the empty [[Battery Cell (Large)]] from construction crate 2 and place it inside the [[Area Power Controller]]<br />
## The switch starts in "Off" - make sure to turn it on!<br />
## If the light is blinking red - you're running on battery power<br />
## If the light is blinking blue - you're charging the battery power from external sources (ex: [[Solar Panel]], [[Solid Fuel Generator]], [[Stationary Battery]])<br />
#* '''Do not connect the input (raw power) and output from the APC - you will cause a short circuit!'''<br />
# Switch back to the [[Toolbelt|Tool Belt]] and put the [[Cables]] in a free hand<br />
## Use the '''mouse wheel''' to change the shape and '''delete, insert, home, end, pgup, pgdown''' to rotate<br />
## You can use the [[Cable Cutters]] to "pick up" bad placement<br />
# When your battery runs low, switch it with the battery in the APC, if you do this early enough in the solar day and track the sun, then the battery should be high or full charge by the end of the day<br />
<br />
<!--T:11--><br />
You will now probably survive the first night. But that's not exciting.. you're here to build cool stuff!<br />
<br />
=== Surviving the First Week === <!--T:12--><br />
<br />
<!--T:13--><br />
During the day, you will want to aggressively find Ores since visibility is very low at night.<br />
<br />
<!--T:14--><br />
# Find ores such as [[Iron Ore]], [[Copper Ore]], [[Gold Ore]]<br />
#* You can ignore [[Silver Ore]], [[Nickel Ore]], [[Lead Ore]], [[Ice]], and all others for now<br />
# Setup the [[Battery Charger]] to recharge small batteries for your tools such as [[Hand Drill]] and [[Mining Drill]]<br />
# Setup your [[Arc Furnace]] by connecting [[Cables]] from your [[Area Power Controller]]<br />
#* You can turn it on by clicking on the switch to the left (it will turn green)<br />
#* Insert the ore and click on the 'activate' button<br />
#* If it stops working immediately, then your power is not consistent - did you skip setting up the APC? Is the battery in the APC out of power?<br />
#* In this case, you will need to rely on the [[Solid Fuel Generator]] to power the APC<br />
# Setup the [[Solid Fuel Generator]] for emergency power until a [[Stationary Battery]] can be setup<br />
#* Make sure you hook it up to the input side of the [[Power Controller|APC]] - '''do not mix the networks!'''<br />
#* The [[Solid Fuel Generator]] eats coal quickly, so try to move to solar asap<br />
<br />
<!--T:15--><br />
During the night, if you need to get minerals, use the [[Tracking Beacon]]!<br />
<br />
<!--T:16--><br />
* The [[Tracking Beacon]] uses a [[Battery Cell (Small)]] which can be taken from the [[Hand Drill]] or [[Angle Grinder]]<br />
* A [[Cartridge (Tracker)|Cartridge]] starts in the player's suit inventory and can be inserted into the [[Handheld Tablet]]<br />
** '''Heads up:''' the tablet uses power if left On when put away<br />
<br />
===== Goals ===== <!--T:17--><br />
<br />
<!--T:18--><br />
# Setup the remaining structures: [[Arc Furnace]], [[Solid Fuel Generator]], [[Autolathe]]<br />
# Get the materials to produce an [[Electronics Printer]] asap<br />
#* Print out a [[Battery Cell (Large)]] from the [[Electronics Printer]] so you don't have to swap suit power with the APC and can charge it with minimal interaction<br />
#* Print out a [[Kit_(Battery)|Battery]] and hook it up to the '''incoming''' side of the APC<br />
#* Use [[Cables|Heavy Cables]] to transfer a higher wattage to the [[Kit_(Battery)|Battery]]<br />
# Setup a basic room with an [[Airlock]] and a [[Gas Tank Storage]] to collect some oxygen if low<br />
<br />
=== Getting Steel === <!--T:19--><br />
<br />
<!--T:20--><br />
Here's the first obstacle in your way: getting your first run of [[Steel Ingot|Steel]].<br />
<br />
<!--T:21--><br />
# Create a [[Furnace]] from the [[Autolathe]] - nice<br />
# You will need the following items to start the furnace<br />
#* 2 volatile ice<br />
#* 1 oxite ice<br />
# You need a ratio of these items to get steel<br />
#* 3 iron ore<br />
#* 1 coal<br />
#* ''you can double check the ratio with the [[Cartridges|Cartridge (eReader)]] in the [[Handheld Tablet]]<br />
# Insert 2 volatile ice and 1 oxite ice into the furnace (this will be easier to do at night otherwise the ice might melt)<br />
# Insert iron ore and coal at a ratio of 3-1 (3 iron - 1 coal)<br />
#* Check the contents view on the furnace and you should see hydrocarbons and iron listed<br />
#* Hit '''Activate''' and enjoy the light show<br />
#* Pull the lever and enjoy your [[Steel Ingot|Steel]] - 100g lasted me for a long time 😎<br />
#* You can run multiple batches as long as you're in the right pressure & temperature range<br />
# '''Warning''' ore cannot be recovered from the [[Furnace]] unless you use a [[Centrifuge]] - '''make sure you measure it out!'''<br />
<br />
=== Surviving Forever === <!--T:22--><br />
<br />
<!--T:23--><br />
Once you've gotten past the early part of the game, the world is your oyster. Here's some overall goals:<br />
<br />
<!--T:24--><br />
# Create one or more [[Station Batteries|Battery]] units to store power more consistently<br />
# Automate solar power collection using [[Circuits|Logic Circuits]] and a [[Sensors|Daylight Sensor]] - use the [[Solar Logic Circuits Guide]] to get started<br />
# Create a hydroponics system to extend your supply of food indefinitely - the [[Guide (Farming)]] is a good place to start (but don't forget you will eventually need another source of water!)<br />
# Use [[Chutes]], [[Conveyor|Conveyors]], and [[Stacker|Stackers]] if you're interested in the ol' Factorio feel<br />
# Create an actual ship! (Using [[Furniture]], [[Rocket Engine]], [[Stellar Anchor]] and some other parts)<br />
# Create advanced ingots such as [[Solder]], [[Invar]], [[Electrum]], [[Constantan]]<br />
# Create more advanced life support systems, like automated heating and cooling, automated air filtering, and automated farming, to not only survive but ''thrive''!<br />
<br />
=== Multiplayer === <!--T:25--><br />
<br />
<!--T:26--><br />
''"tbd - but yeah, Don't grief!"''<br />
<br />
=== Tips === <!--T:27--><br />
* Your starting Oxygen will last you for more than a week, so oxygen recovery can wait<br />
* An [[Area Power Controller]] will effectively "split" a power & data network<br />
** Power and data are transferred on the same network - no need to run parallel power lines<br />
* The waste canister can be used to power the jet pack - simply switch the canisters over for an emergency fix<br />
* A locker holds 30 items and is very useful in the early game<br />
* Ice will melt in hands, in the world, or in lockers - ice will '''not'' melt inside of a [[Mining Belt]] or in a cold environment.<br />
* Help, I can't deconstruct something! - check that the [[Hand Drill|Hand Drill's]] battery is not Empty<br />
* A battery will charge twice as fast in an [[Power Controller | Area Power Controller]] than in a [[Battery Charger]] (Nuclear is only 73% faster) according to [https://www.reddit.com/r/Stationeers/comments/hoku8r/really_useful_cheat_sheet_of_stats_and_figures/ this helpfull reddit post by u/Chrisbitz]<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=Main_Page&diff=9886Main Page2020-12-26T20:30:24Z<p>Legolegs: +Energy Storage Reference</p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<!--T:10--><br />
<div class="row"><br />
<br />
<!--T:11--><br />
<div class="small-12 column main-banner text-center"><br />
[[Image:Wiki_home_banner.png|center|link=https://stationeers.com/]]<br />
</div><br />
<br />
</div><br />
<!--T:20--><br />
<div class="row"><br />
<br />
<!--T:21--><br />
<div class="small-12 column"><br />
<p>Welcome to [[Special:MyLanguage/Stationeers|Stationeers]] Unofficial Wiki.<br><br />
[[Special:MyLanguage/Stationeers|Stationeers]] is being developed by RocketWerkz Ltd., directed by Dean 'rocket2guns' Hall!<br />
To obtain your copy, go to https://stationeers.com or purchase Early Access on [http://store.steampowered.com/app/544550/Stationeers/ Steam].<br><br />
<br><br />
Keep in touch on [https://discordapp.com/invite/stationeers Discord] or [https://www.reddit.com/r/Stationeers/ Reddit].<br />
</p><br />
<p><br />
[https://stationeering.com/versions/recent Stationeers Version History]<br />
</p><br />
</div><br />
<br />
</div><br />
<!--T:30--><br />
<div class="row"><br />
<br />
<!--T:31--><br />
<div class="small-12 columns"><br />
<h4 class="subheader"><span class="fa fa-tasks fa-lg"></span>Guides</h4><br />
<div class="large-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>'''[[Special:MyLanguage/Beginner's Guide|Beginner's Guide]]'''</li><br />
<li>[[Special:MyLanguage/Guide (Airlock)|Guide (Airlock)]]</li><br />
<li>[[Special:MyLanguage/Guide (Farming)|Guide (Farming)]]</li><br />
</ul><br />
</div><br />
<div class="large-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Air_Filtration_System|Air Filtration System]]</li><br />
<li>[[Special:MyLanguage/Craftable items|List of all craftable items]]</li><br />
<li>[[Special:MyLanguage/Constructing and Deconstructing Walls|Constructing and Deconstructing Walls]]</li><br />
<li>[[Special:MyLanguage/Dedicated_Server_Guide|Dedicated server guide]]</li><br />
<li>[[Special:MyLanguage/Solar_Logic_Circuits_Guide|Solar Panel Control using Logic Gates]]</li><br />
<li>[[Special:MyLanguage/Starting Gear|Starting Gear]]</li><br />
<li>[[Special:MyLanguage/Guide_(Modding)|Modding the Game]]</li><br />
</ul><br />
</div><br />
</div><br />
<br />
</div><br />
<!--T:40--><br />
<div class="row"><br />
<br />
<!--T:41--><br />
<div class="small-12 columns"><br />
<h4 class="subheader"><span class="fa fa-book fa-lg"></span>User Made Guides</h4><br />
<div class="large-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Cheat Sheets</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Research Tree]] (Wiki Page)</li><br />
<li>[https://goo.gl/TsdqfM Silent1's Cheat Sheet] by silent1 (Reference sheet)</li><br />
<li>[[Atmospheric Components Quick Reference]]</li><br />
<li>[[Energy Storage Reference]]</li><br />
</ul><br />
<li>Tutorial</li><br />
<ul style="margin-left:8px;"><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1230358763 Building your first base] by Sunspots (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1230373894 Hardly's List of Lamentable Mistakes] by Hardly (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1253687517 Tutorial Video Series] by Rhadamant (Steam Guide)</li><br />
</ul><br />
<li>Modding</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Adding new worlds]]</li><br />
</ul><br />
<li>Automation</li><br />
<ul style="margin-left:8px;"><br />
<li>[https://stationeers-wiki.com/Auto_Night_Lights Auto Night Lights circuit] by DocRabbit (Wiki Guide)</li><br />
<li>[https://stationeers-wiki.com/Automated_Arc_Furnace Automated Arc Furnace] by JavaSkeptre (Wiki Guide)</li><br />
<li>[https://stationeers-wiki.com/Automated_Coal_Generator Automated Coal Generator] by JavaSkeptre (Wiki Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1231053369 Manual No More! Quick Guide to Auto-Solar Power] by {LEO} SuPeR GunshotXxX (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1254363900 The most effective automation of solar panels] by H_Sage (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1251261186 Simple Stacker Automatisation] by Arran Chace (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1232888907 Super Simple Autocycling Airlock] by Hardly (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1231660909 Super Simple Steel Smelting] by Hardly (Steam Guide)</li><br />
<li>[http://stationeers-wiki.com/Semi-Automatic_Autolathe Semi-Automatic Autolathe] by Korbah (Wiki Guide)</li><br />
<li>[https://stationeers-wiki.com/Satellite_Tracking Automatic Satellite Tracking] by JedBolt (Wiki Guide)</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="large-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Atmospherics</li><br />
<ul style="margin-left:8px;"><br />
<li>[https://steamcommunity.com/sharedfiles/filedetails/?id=1283505695 25 Watt Passive Cooling Solution] By Amallore (Steam Guide)</li><br />
<li>[[Automated Temperature Regulation]] by Jaffa (Wiki Guide)</li><br />
<li>[[Basic Canister Mixing Setup]] by Viperel (Wiki Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1271148797 Canister handling made easy] by Gears (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1232718432 HELP! My welder fuel is gone!] by Moomanji (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1256512507 Logic Thermostat 20-25C] by Gears (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1248037824 Pipe Regulators 101] by NugunsKnight (Steam Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1245663146 Simple Gas Filtration System] by Wesir (Steam Guide)</li><br />
<li>[https://steamcommunity.com/sharedfiles/filedetails/?id=1293043168 Thermostat or Filtration with Buffer] By Amallore (Steam Guide)</li><br />
<li>[https://stationeers-wiki.com/Custom_Airlock_IC10 Custom Airlock with IC10] by JedBolt (Wiki Guide)</li><br />
</ul><br />
<li>Logic</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Always-on circuit guide|Always-On- / Auto-Restart- Circuit]] by Raumfahrtdoc (Wiki Guide)</li><br />
<li>[[Dead Simple Light Switch]] by Evie Codes (Wiki Guide)</li><br />
<li>[https://steamcommunity.com/workshop/filedetails/discussion/1517633472/1735465524705571551/ How to use IC scripts from the workshop] By DirtyRat (Steam Guide)</li><br />
<li>[[Logic Pulse Former]] by Evie Codes (Wiki Guide)</li><br />
<li>[[Timing Circuit|Timer circuit]] by MrBigras (Wiki Guide)</li><br />
<li>[http://steamcommunity.com/sharedfiles/filedetails/?id=1236169037 Slightly-Less-Simple Logic Units] by Hardly (Steam Guide)</li><br />
<li>[https://steamcommunity.com/sharedfiles/filedetails/?id=1536155985 The ultimate power display] by adamkk03 (Steam Guide)</li><br />
<li>[[Advanced IC10 Programming]] by JedBolt (Wiki Guide)</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
</div><br />
<!--T:50--><br />
<div class="row"><br />
<br />
<!--T:51--><br />
<div class="large-4 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-cubes fa-lg" style="display:inline;"></span>Ores</h3><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Ores|Ores]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Ore (Cobalt)|Cobalt]]</li><br />
<li>[[Special:MyLanguage/Ore (Copper)|Copper]]</li><br />
<li>[[Special:MyLanguage/Ore (Gold)|Gold]]</li><br />
<li>[[Special:MyLanguage/Ore (Iron)|Iron]]</li><br />
<li>[[Special:MyLanguage/Ore (Lead)|Lead]]</li><br />
<li>[[Special:MyLanguage/Ore (Nickel)|Nickel]]</li><br />
<li>[[Special:MyLanguage/Ore (Silicon)|Silicon]]</li><br />
<li>[[Special:MyLanguage/Ore (Silver)|Silver]]</li><br />
<li>[[Special:MyLanguage/Reagent Mix|Reagent Mix]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Solid Fuels</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Ore (Coal)|Coal]]</li><br />
<li>[[Special:MyLanguage/Ore (Uranium)|Uranium]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Frozen Gases</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Ice (Oxite)|Oxite]]</li><br />
<li>[[Special:MyLanguage/Ice (Volatiles)|Volatiles]]</li><br />
<li>[[Special:MyLanguage/Ice (Water)|Water]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
<!--T:52--><br />
<div class="large-4 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-filter fa-lg" style="display:inline;"></span>Ingots</h3><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Elements</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Ingot (Copper)|Copper]]</li><br />
<li>[[Special:MyLanguage/Ingot (Gold)|Gold]]</li><br />
<li>[[Special:MyLanguage/Ingot (Iron)|Iron]]</li><br />
<li>[[Special:MyLanguage/Ingot (Lead)|Lead]]</li><br />
<li>[[Special:MyLanguage/Ingot (Nickel)|Nickel]]</li><br />
<li>[[Special:MyLanguage/Ingot (Silicon)|Silicon]]</li><br />
<li>[[Special:MyLanguage/Ingot (Silver)|Silver]]</li><br />
<li><del>[[Special:MyLanguage/Ingot (Waste)|Waste]]</del></li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Alloys</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Ingot (Constantan)|Constantan]]</li><br />
<li>[[Special:MyLanguage/Ingot (Electrum)|Electrum]]</li><br />
<li>[[Special:MyLanguage/Ingot (Invar)|Invar]]</li><br />
<li>[[Special:MyLanguage/Ingot (Solder)|Solder]]</li><br />
<li>[[Special:MyLanguage/Ingot (Steel)|Steel]]</li><br />
</ul><br />
<li>Superalloys</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Ingot (Astroloy)|Astroloy]]</li><br />
<li>[[Special:MyLanguage/Ingot (Hastelloy)|Hastelloy]]</li><br />
<li>[[Special:MyLanguage/Ingot (Inconel)|Inconel]]</li><br />
<li>[[Special:MyLanguage/Ingot (Stellite)|Stellite]]</li><br />
<li>[[Special:MyLanguage/Ingot (Waspaloy)|Waspaloy]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
<!--T:53--><br />
<div class="large-4 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-spinner fa-lg" style="display:inline;"></span>Gases</h3><br />
<div class="medium-5 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Elements</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Hydrogen|Hydrogen (H<sub>2</sub>)]]</li><br />
<li>[[Special:MyLanguage/Nitrogen|Nitrogen (N<sub>2</sub>)]]</li><br />
<li>[[Special:MyLanguage/Oxygen|Oxygen (O<sub>2</sub>)]]</li><br />
<li>[[Special:MyLanguage/Pollutant|Pollutants (X)]]</li><br />
<li>[[Special:MyLanguage/Volatiles|Volatiles]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-7 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Compounds</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Carbon Dioxide|Carbon Dioxide (CO<sub>2</sub>)]]</li><br />
<li>[[Special:MyLanguage/Nitrous Oxide|Nitrous Oxide (N<sub>2</sub>O)]]</li><br />
<li>[[Special:MyLanguage/Water|Water (H<sub>2</sub>O)]]</li><br />
</ul><br />
</ul><br />
<ul style="margin-left:8px;"><br />
<li>Mixtures</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Fuel|Fuel (66.6% H<sub>2</sub> + 33.3% O<sub>2</sub>)]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
</div><br />
<!--T:60--><br />
<div class="row"><br />
<br />
<!--T:61--><br />
<div class="large-4 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-wrench fa-lg" style="display:inline;"></span>Hand Tools</h3><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Construction</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Arc Welder|Arc Welder]]</li><br />
<li>[[Special:MyLanguage/Angle Grinder|Angle Grinder]]</li><br />
<li><del>[[Special:MyLanguage/Authoring Tool|Authoring Tool]]</del></li><br />
<li>[[Special:MyLanguage/Crowbar|Crowbar]]</li><br />
<li>[[Special:MyLanguage/Data Disk|Data Disk]]</li><br />
<li>[[Special:MyLanguage/Hand Drill|Hand Drill]]</li><br />
<li>[[Special:MyLanguage/Screwdriver|Screwdriver]]</li><br />
<li>[[Special:MyLanguage/Spray Paint|Spray Paint]]</li><br />
<li>[[Special:MyLanguage/Welding Torch|Welding Torch]]</li><br />
<li>[[Special:MyLanguage/Wire Cutters|Wire Cutters]]</li><br />
<li><del>[[Special:MyLanguage/Wreckage Constructor|Wreckage Constructor]]</del></li><br />
<li>[[Special:MyLanguage/Wrench|Wrench]]</li><br />
</ul><br />
<li>Mining</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Ground Penetrating Radar|Ground Penetrating Radar]]</li><br />
<li>[[Special:MyLanguage/Mining Drill|Mining Drill]]</li><br />
<li>[[Special:MyLanguage/Mining Drill (Heavy)|Mining Drill (Heavy)]]</li><br />
<li>[[Special:MyLanguage/Pickaxe|Pickaxe]]</li><br />
</ul><br />
<li>Location Markers</li><br />
<ul style="margin-left:8px;"><br />
<li><del>[[Special:MyLanguage/Chem Light|Chem Light]]</del></li><br />
<li>[[Special:MyLanguage/Kit (Small Flag)|Kit () Small Flag]]</li><br />
<li>[[Special:MyLanguage/Road Flare|Road Flare]]</li><br />
<li>[[Special:MyLanguage/Tracking Beacon|Tracking Beacon]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Others</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Duct Tape|Duct Tape]]</li><br />
<li>[[Special:MyLanguage/Fire Extinguisher|Fire Extinguisher]]</li><br />
<li>[[Special:MyLanguage/Handheld Tablet|Handheld Tablet]]</li><br />
<li><del>[[Special:MyLanguage/Handheld Scanner|Handheld Scanner]]</del></li><br />
<li>[[Special:MyLanguage/Labeller|Labeller ]]</li><br />
<li>[[Special:MyLanguage/Portable Light|Portable Light]]</li><br />
<li><del>[[Special:MyLanguage/Space Cleaner|Space Cleaner]]</del></li><br />
</ul><br />
<li>Weapons</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Ammo Box|Ammo Box]]</li><br />
<li>[[Special:MyLanguage/Energy Pistol|Energy Pistol]]</li><br />
<li>[[Special:MyLanguage/Energy Rifle|Energy Rifle]]</li><br />
<li>[[Special:MyLanguage/Fire Arm SMG|Fire Arm SMG]]</li><br />
<li>[[Special:MyLanguage/Hand Grenade|Hand Grenade]]</li><br />
<li>[[Special:MyLanguage/Handgun|Handgun]]</li><br />
<li>[[Special:MyLanguage/Handgun Magazine|Handgun Magazine]]</li><br />
<li>[[Special:MyLanguage/Lightsword|Lightsword]]</li><br />
<li>[[Special:MyLanguage/Remote Detonator|Remote Detonator]]</li><br />
<li>[[Special:MyLanguage/Remote Explosive|Remote Explosive]]</li><br />
<li>[[Special:MyLanguage/SMG Magazine|SMG Magazine]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
<!--T:62--><br />
<div class="large-2 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-tasks fa-lg" style="display:inline;"></span>Cartridges</h3><br />
<div class="medium-12 columns"><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Cartridge|Cartridges]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Cartridge (Access Control)#Access_Control|Access Control]]</li><br />
<li>[[Special:MyLanguage/Cartridge (Atmos Analyzer)#Atmos_Analyzer|Atmos Analyzer]]</li><br />
<li>[[Special:MyLanguage/Cartridge (Configuration)#Configuration|Configuration]]</li><br />
<li>[[Special:MyLanguage/Cartridge (eReader)#eReader|eReader]]</li><br />
<li>[[Special:MyLanguage/Cartridge (GPS)#GPS|GPS]]</li><br />
<li>[[Special:MyLanguage/Cartridge (Medical Analyzer)#Medical_Analyzer|Medical Analyzer]]</li><br />
<li>[[Special:MyLanguage/Cartridge (Network Analyzer)#Network_Analyzer|Network Analyzer]]</li><br />
<li>[[Special:MyLanguage/Cartridge (Ore Scanner)#Ore_Scanner|Ore Scanner]]</li><br />
<li>[[Special:MyLanguage/Cartridge (Ore Scanner (Color))|Ore Scanner (Color)]]</li><!--Cannot have a proper hashtag directive to autoscroll to the content on cartridge page--><br />
<li>[[Special:MyLanguage/Cartridge (Tracker)#Tracker|Tracker]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
<!--T:63--> <div class="large-6 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-thermometer fa-lg" style="display:inline;"></span>Atmospherics</h3><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Pipes</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Pipe)|Pipe]]</li><br />
<li>[[Special:MyLanguage/Kit (Pipe Label)|Pipe Label]]</li><br />
</ul><br />
<li>Vents</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Active Vent)|Active Vent]]</li><br />
<li>[[Special:MyLanguage/Kit (Passive Vent)|Passive Vent]]</li><br />
</ul><br />
<li>Regulators</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Digital Valve)|Digital Valve]]</li><br />
<li>[[Special:MyLanguage/Kit (Gas Mixer)|Gas Mixer]]</li><br />
<li>[[Special:MyLanguage/Kit (Pipe Valve)|Pipe Valve]]</li><br />
<li>[[Special:MyLanguage/Kit (Pressure Regulator)|Pressure Regulator]]</li><br />
<li>[[Special:MyLanguage/Kit (Pressure Regulator)|Back Pressure Regulator]]</li><br />
<li>[[Special:MyLanguage/Kit (Volume Pump)|Volume Pump]]</li><br />
</ul><br />
<li>Radiators</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Radiator)|Radiator]]</li><br />
<li>[[Special:MyLanguage/Kit (Wall Cooler)|Wall Cooler]]</li><br />
<li>[[Special:MyLanguage/Kit (Wall Heater)|Wall Heater]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Processors</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Atmospherics)|Air Conditioner]]</li><br />
<li>[[Special:MyLanguage/Kit (Atmospherics)|Electrolyzer]]</li><br />
<li>[[Special:MyLanguage/Kit (Atmospherics)|Filtration]]</li><br />
<li>[[Special:MyLanguage/Kit (Atmospherics)|H2 Combustor]]</li><br />
<li>[[Special:MyLanguage/Kit (Portable Air Conditioner)|Portable Air Conditioner]]</li><br />
<li>[[Special:MyLanguage/Kit (Portable Scrubber)|Portable Scrubber]]</li><br />
</ul><br />
<li>Analyzers</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Pipe Analyzer)|Pipe Analyzer]]</li><br />
<li>[[Special:MyLanguage/Kit (Pipe Meter)|Pipe Meter]]</li><br />
</ul><li>Storage</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Canister|Canister]]</li><br />
<li>[[Special:MyLanguage/Gas Canister (Smart)|Gas Canister (Smart)]]</li><br />
<li>[[Special:MyLanguage/Kit (Canister Storage)|Canister Storage]]</li><br />
<li>[[Special:MyLanguage/Kit (Portable Tank)|Portable Tank]]</li><br />
<li>[[Special:MyLanguage/Kit (Tank)|Large Tank]]</li><br />
<li>[[Special:MyLanguage/Kit (Tank)|Small Tank]]</li><br />
<li>[[Special:MyLanguage/Kit (Tank Connector)|Tank Connector]]</li><br />
</ul><br />
<li>Filters</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Filter|Filter]]</li><br />
<li>[[Special:MyLanguage/Heavy Filter|Heavy Filter]]</li><br />
<li>[[Special:MyLanguage/Medium Filter|Medium Filter]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
</div><br />
<!--T:70--><br />
<div class="row"><br />
<br />
<!--T:71--><br />
<div class="large-4 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-cogs fa-lg" style="display:inline;"></span>Manufacturing</h3><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Printers</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Autolathe)|Autolathe]]</li><br />
<li>[[Special:MyLanguage/Kit (Electronics Printer)|Electronics Printer]]</li><br />
<li><del>[[Special:MyLanguage/Kit (Fabricator)|Fabricator]]</del></li><br />
<li>[[Special:MyLanguage/Kit (Hydraulic Pipe Bender)|Hydraulic Pipe Bender]]</li><br />
<li>[[Special:MyLanguage/Kit (Organics Printer)|Organics Printer]]</li><br />
<li>[[Special:MyLanguage/Kit (Security Printer)|Security Printer]]</li><br />
<li>[[Special:MyLanguage/Kit (Tool Manufactory)|Tool Manufactory]]</li><br />
</ul><br />
<li>MK2</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Autolathe Mk. II]]</li><br />
<li>[[Electronics Printer Mk. II]]</li><br />
<li>[[Hydraulic Pipe Bender Mk. II]]</li><br />
<li>[[Tool Manufactory Mk. II]]</li><br />
</ul><br />
<li>Mods</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Autolathe Printer Mod]]</li><br />
<li>[[Electronic Printer Mod]]</li><br />
<li>[[Pipe Bender Mod]]</li><br />
<li>[[Tool Printer Mod]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Appliances</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Chemistry Station|Chemistry Station]]</li><br />
<li>[[Special:MyLanguage/Microwave|Microwave]]</li><br />
<li>[[Special:MyLanguage/Paint Mixer|Paint Mixer]]</li><br />
<li>[[Special:MyLanguage/Reagent Processor|Reagent Processor]]</li><br />
</ul><br />
<li>Smelting</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Advanced Furnace)|Advanced Furnace]]</li><br />
<li>[[Special:MyLanguage/Kit (Arc Furnace)|Arc Furnace]]</li><br />
<li>[[Special:MyLanguage/Kit (Furnace)|Furnace]]</li><br />
</ul><br />
<li>Recycling</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Centrifuge)|Centrifuge]]</li><br />
<li>[[Special:MyLanguage/Kit (Recycler)|Recycler]]</li><br />
</ul><br />
<li>Regulators</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Chutes)|Chutes]]</li><br />
<li>[[Special:MyLanguage/Kit (Conveyors)|Conveyors]]</li><br />
<li>[[Special:MyLanguage/Kit (Sorter)|Sorter]]</li><br />
<li>[[Special:MyLanguage/Kit (Stacker)|Stacker]]</li><br />
<li>[[Special:MyLanguage/Kit (Vending Machine)|Vending Machine]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
<!--T:72--><br />
<div class="large-8 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-building fa-lg" style="display:inline;"></span>Structure</h3><br />
<div class="medium-4 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Doors</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Airlock)|Airlock]]</li><br />
<li>[[Special:MyLanguage/Kit (Blast Door)|Blast Door]]</li><br />
<li><del>[[Special:MyLanguage/Kit (Docking Port)|Dock Port Side]]</del></li><br />
<li><del>[[Special:MyLanguage/Kit (Docking Port)|Dock Ship Side]]</del></li><br />
<li>[[Special:MyLanguage/Kit (Door)|Composite Door]]</li><br />
<li>[[Special:MyLanguage/Kit (Door)|Composite Roll Cover]]</li><br />
<li>[[Special:MyLanguage/Kit (Door)|Glass Door]]</li><br />
</ul><br />
<li>Elevators</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Elevator)|Elevator Level]]</li><br />
<li>[[Special:MyLanguage/Kit (Elevator)|Elevator Shaft]]</li><br />
<li>[[Special:MyLanguage/Kit (Ladder)|Ladder]]</li><br />
<li>[[Special:MyLanguage/Kit (Ladder)|Ladder End]]</li><br />
<li>[[Special:MyLanguage/Kit (Ladder)|Ladder Platform]]</li><br />
<li>[[Special:MyLanguage/Kit (Stairs)|Stairs]]</li><br />
</ul><br />
<li>Frames</li><br />
<ul style="margin-left:8px;"><br />
<li><del>[[Special:MyLanguage/Kit (Cube)|Cube]]</del></li><br />
<li>[[Special:MyLanguage/Iron Frames|Iron Frames]]</li><br />
<li>[[Special:MyLanguage/Steel Frames|Steel Frames]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-4 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Floors & Walls</li><br />
<ul style="margin-left:8px;"><br />
<li><del>[[Special:MyLanguage/Insulation|Insulation]]</del></li><br />
<li>[[Special:MyLanguage/Kit (Arched Wall)|Arched Wall]]</li><br />
<li>[[Special:MyLanguage/Kit (Cladding)|Cladding]]</li><br />
<li>[[Special:MyLanguage/Kit (Flat Wall)|Flat Wall]]</li><br />
<li>[[Special:MyLanguage/Kit (Floor Grating)|Floor Grating]]</li><br />
<li>[[Special:MyLanguage/Kit (Geometric Wall)|Geometric Wall]]</li><br />
<li>[[Special:MyLanguage/Kit (Iron Walls)|Iron Walls]]</li><br />
<li>[[Special:MyLanguage/Kit (Padded Wall)|Padded Wall]]</li><br />
<li>[[Special:MyLanguage/Kit (Wall)|Wall]]</li><br />
</ul><br />
<li>Lights</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Flashing Light)|Flashing Light]]</li><br />
<li>[[Special:MyLanguage/Kit (Lights)|Diode Slide]]</li><br />
<li>[[Special:MyLanguage/Kit (Lights)|LED]]</li><br />
<li>[[Special:MyLanguage/Kit (Lights)|Wall Light]]</li><br />
<li>[[Special:MyLanguage/Kit (Lights)|Wall Light (Battery)]]</li><br />
<li>[[Special:MyLanguage/Kit (Lights)|Wall Light (Long)]]</li><br />
<li>[[Special:MyLanguage/Kit (Lights)|Wall Light (Long Angled)]]</li><br />
<li>[[Special:MyLanguage/Kit (Lights)|Wall Light (Long Wide)]]</li><br />
</ul><br />
<li>Signs</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Sign)|Sign]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-4 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Rovers and Shuttles</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Landing Pad)|Landing Pad]]</li><br />
<li>[[Special:MyLanguage/Kit (Rover Frame)|Rover (Cargo)]]</li><br />
<li><del>[[Special:MyLanguage/Lander|Lander]]</del></li><br />
<li><del>[[Special:MyLanguage/Robot|Robot]]</del></li><br />
</ul><br />
<li>Sheets</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Glass Sheets|Glass Sheets]]</li><br />
<li>[[Special:MyLanguage/Iron Sheets|Iron Sheets]]</li><br />
<li>[[Special:MyLanguage/Plastic Sheets|Plastic Sheets]]</li><br />
<li>[[Special:MyLanguage/Steel Sheets|Steel Sheets]]</li><br />
</ul><br />
<li>Motherships</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Engine Large)|Engine Large]]</li><br />
<li>[[Special:MyLanguage/Kit (Engine Medium)|Engine Medium]]</li><br />
<li>[[Special:MyLanguage/Kit (Engine Small)|Engine Small]]</li><br />
<li>[[Special:MyLanguage/Kit (Furniture)|Control Chair]]</li><br />
<li>[[Special:MyLanguage/Kit (Gyroscope)|Gyroscope]]</li><br />
<li>[[Special:MyLanguage/Kit (Mothership)|Mothership]]</li><br />
<li>[[Special:MyLanguage/Kit (Stellar Anchor)|Stellar Anchor]]</li><br />
<li>[[Special:MyLanguage/Kit (Torpedo Launcher)|Torpedo Launcher]]</li><br />
<li>[[Special:MyLanguage/Kit (Turret)|Turret]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
</div><br />
<!--T:80--><br />
<div class="row"><br />
<br />
<!--T:81--><br />
<div class="large-2 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-cogs fa-lg" style="display:inline;"></span>Personal</h3><br />
<div class="medium-12 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Soft Suit</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/EVA Suit|EVA Suit]]</li><br />
<li>[[Special:MyLanguage/Space Helmet|Space Helmet]]</li><br />
<li>[[Special:MyLanguage/Spacepack|Spacepack]]</li><br />
</ul><br />
<li>Hard Suit</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Hardsuit|Hardsuit]]</li><br />
<li>[[Special:MyLanguage/Hardsuit Backpack|Hardsuit Backpack]]</li><br />
<li>[[Special:MyLanguage/Hardsuit Helmet|Hardsuit Helmet]]</li><br />
<li>[[Special:MyLanguage/Hardsuit Jetpack|Hardsuit Jetpack]]</li><br />
</ul><br />
<li>Marine</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Marine Armor|Marine Armor]]</li><br />
<li>[[Special:MyLanguage/Marine Helmet|Marine Helmet]]</li><br />
</ul><br />
<li>Uniforms</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Jump Suit (Orange)|Jump Suit (Orange)]]</li><br />
<li>[[Special:MyLanguage/Uniform Comander|Uniform Comander]]</li><br />
<li>[[Special:MyLanguage/Marine Uniform|Marine Uniform]]</li><br />
</ul><br />
<li>Accessories</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Glasses|Glasses]]</li><br />
<li>[[Special:MyLanguage/Night Vision Goggles|Night Vision Goggles]]</li><br />
<li>[[Special:MyLanguage/Access Card|Access Card]]</li><br />
<li>[[Special:MyLanguage/Credit Card|Credit Card]]</li><br />
<li>[[Special:MyLanguage/Mining Belt|Mining Belt]]</li><br />
<li>[[Special:MyLanguage/Tool Belt|Tool Belt]]</li><br />
</ul><br />
<li>Headwear</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Headlamp|Headlamp]]</li><br />
<li><del>[[Special:MyLanguage/Hat|Hat]]</del></li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
<!--T:82--><br />
<div class="large-2 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-cogs fa-lg" style="display:inline;"></span>Power</h3><br />
<div class="medium-12 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Batteries</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Battery Cell (Large)|Battery Cell (Large)]]</li><br />
<li>[[Special:MyLanguage/Battery Cell (Nuclear)|Battery Cell (Nuclear)]]</li><br />
<li>[[Special:MyLanguage/Battery Cell (Small)|Battery Cell (Small)]]</li><br />
<li>[[Special:MyLanguage/Kit (Battery)|Battery]]</li><br />
<li>[[Special:MyLanguage/Kit (Battery Large)|Battery Large]]</li><br />
<li>[[Special:MyLanguage/Kit (Battery Charger)|Battery Charger]]</li><br />
</ul><br />
<li>Cables</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Cable Coil|Cable Coil]]</li><br />
<li>[[Special:MyLanguage/Cable Coil (Heavy)|Cable Coil (Heavy)]]</li><br />
<li>[[Special:MyLanguage/Kit (Cable Analyser)|Cable Analyser]]</li><br />
<li>[[Special:MyLanguage/Kit (Cable Fuses)|Cable Fuses]]</li><br />
<li>[[Special:MyLanguage/Kit (Power Connector)|Power Connector]]</li><br />
</ul><br />
<li>Generators</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Gas Fuel Generator)|Gas Fuel Generator]]</li><br />
<li>[[Special:MyLanguage/Kit (Portable Generator)|Portable Generator]]</li><br />
<li>[[Special:MyLanguage/Kit (Solar Panel)|Solar Panel]]</li><br />
<li>[[Special:MyLanguage/Kit (Solid Generator)|Solid Generator]]</li><br />
<li>[[Special:MyLanguage/Kit (Turbine Generator)|Turbine Generator]]</li><br />
<li>[[Special:MyLanguage/Portable Solar Panel|Portable Solar Panel]]</li><br />
<li><del>[[Special:MyLanguage/RTG|RTG]]</del></li><br />
</ul><br />
<li>Regulators</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Power Controller)|Power Controller]]</li><br />
<li>[[Special:MyLanguage/Kit (Transformer)|Transformer]]</li><br />
<li>[[Special:MyLanguage/Kit (Transformer Small)|Transformer Small]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
<!--T:83--><br />
<div class="large-8 medium-4 columns"><br />
<h3 class="subheader"><span class="fa fa-cogs fa-lg" style="display:inline;"></span>Electronics</h3><br />
<div class="medium-4 columns"><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Circuitboard|Circuitboards]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Circuitboard (Advanced Airlock)|Advanced Airlock]]</li><br />
<li>[[Special:MyLanguage/Circuitboard (Air Control)|Air Control]]</li><br />
<li>[[Special:MyLanguage/Circuitboard (Airlock)|Airlock]]</li><br />
<li><del>[[Special:MyLanguage/Circuitboard (Camera Display)|Camera Display]]</del></li><br />
<li>[[Special:MyLanguage/Circuitboard (Door Control)|Door Control]]</li><br />
<li>[[Special:MyLanguage/Circuitboard (Gas Display)|Gas Display]]</li><br />
<li>[[Special:MyLanguage/Circuitboard (Graph Display)|Graph Display]]</li><br />
<li>[[Special:MyLanguage/Circuitboard (Hash Display)|Hash Display]]</li><br />
<li>[[Special:MyLanguage/Circuitboard (Mode Control)|Mode Control]]</li><br />
<li>[[Special:MyLanguage/Circuitboard (Power Control)|Power Control]]</li><br />
<li>[[Special:MyLanguage/Circuitboard (Ship Display)|Ship Display]]</li><br />
<li>[[Special:MyLanguage/Circuitboard (Solar Control)|Solar Control]]</li><br />
</ul><br />
<li>[[Special:MyLanguage/Integrated Circuit|Integrated Circuits]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Integrated Circuit (IC10)|Integrated Circuit (IC10)]]</li><br />
<li>[[Special:MyLanguage/Kit (IC Housing)|IC Housing]]</li><br />
</ul><br />
<li>[[Special:MyLanguage/Kit (Consoles)|Consoles]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Consoles)|Console]]</li><br />
<li>[[Special:MyLanguage/Kit (Consoles)|Console Dual]]</li><br />
<li>[[Special:MyLanguage/Kit (Consoles)|Console Monitor]]</li><br />
<li>[[Special:MyLanguage/Kit (Consoles)|LED Display]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-4 columns"><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Logic I/O's]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Batch Reader]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Batch Slot Reader]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Batch Writer]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Logic Mirror]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Logic Writer Switch]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Reader]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Reagent Reader]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Slot Reader]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic I/O)|Writer]]</li><br />
</ul><br />
<li>[[Special:MyLanguage/Kit (Logic Memory)|Logic Memory]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Logic Memory)|Hash Generator]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic Memory)|Logic Memory]]</li><br />
</ul><br />
<li>[[Special:MyLanguage/Kit (Logic Processor)|Logic Processors]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Logic Processor)|Logic Compare]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic Processor)|Logic Math]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic Processor)|Logic Min/Max]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic Processor)|Logic Select]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic Processor)|Math Unary]]</li><br />
</ul><br />
<li>[[Special:MyLanguage/Kit (Logic Switch)|Logic Switches]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Logic Switch)|Button]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic Switch)|Dial]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic Switch)|Lever]]</li><br />
<li>[[Special:MyLanguage/Kit (Logic Switch)|Switch]]</li><br />
</ul><br />
<li>[[Special:MyLanguage/Logic Transmitter)|Logic Transmitters]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Logic Transmitter)|Logic Transmitter]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-4 columns"><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Motherboards|Motherboards]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Motherboard (Communications)|Communications]]</li><br />
<li>[[Special:MyLanguage/Motherboard (IC Editor)|IC Editor]]</li><br />
<li>[[Special:MyLanguage/Motherboard (Logic)|Logic]]</li><br />
<li>[[Special:MyLanguage/Motherboard (Manufacturing)|Manufacturing]]</li><br />
<li>[[Special:MyLanguage/Motherboard (Sorter)|Sorter]]</li><br />
</ul><br />
<li>[[Special:MyLanguage/Sensors|Sensors]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Sensors)|Daylight Sensor]]</li><br />
<li>[[Special:MyLanguage/Kit (Sensors)|Gas Sensor]]</li><br />
<li>[[Special:MyLanguage/Kit (Sensors)|Motion Sensor]]</li><br />
<li>[[Special:MyLanguage/Kit (Trigger Plate)|Trigger Plate (Large)]]</li><br />
<li>[[Special:MyLanguage/Kit (Trigger Plate)|Trigger Plate (Medium)]]</li><br />
<li>[[Special:MyLanguage/Kit (Trigger Plate)|Trigger Plate (Small)]]</li><br />
<li><del>[[Special:MyLanguage/Security Camera|Security Camera]]</del></li><br />
</ul><br />
<li>Others</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Beacon)|Beacon]]</li><br />
<li>[[Special:MyLanguage/Kit (Computer)|Computer]]</li><br />
<li>[[Special:MyLanguage/Kit (Igniter)|Igniter]]</li><br />
<li>[[Special:MyLanguage/Kit (Speaker)|Klaxon Speaker]]</li><br />
<li>[[Special:MyLanguage/Kit (Satellite Dish)|Satellite Dish]]</li><br />
<br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
</div><br />
<!--T:90--><br />
<div class="row"><br />
<br />
<!--T:91--><br />
<div class="large-4 medium-6 columns"><br />
<h3 class="subheader"><span class="fa fa-cogs fa-lg" style="display:inline;"></span>Furniture</h3><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Entertainment</li><br />
<ul style="margin-left:8px;"><br />
<li><del>[[Special:MyLanguage/Book|Book]]</del></li><br />
<li>[[Special:MyLanguage/Basket|Basket]]</li><br />
<li>[[Special:MyLanguage/Basket Ball|Basket Ball]]</li><br />
<li>[[Special:MyLanguage/Coffee Mug|Coffee Mug]]</li><br />
<li><del>[[Special:MyLanguage/Meteorite|Meteorite]]</del></li><br />
</ul><br />
<li>[[Special:MyLanguage/Kit (Furniture)|Furniture]]</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Furniture)|Bench]]</li><br />
<li>[[Special:MyLanguage/Kit (Furniture)|Chair]]</li><br />
</ul><br />
<li>Medical</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Cryo Tube)|Cryo Tube]]</li><br />
<li>[[Special:MyLanguage/Kit (Sleeper)|Sleeper]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-6 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Storage</li><br />
<ul style="margin-left:8px;"><br />
<li><del>[[Special:MyLanguage/Cardboard Box|Cardboard Box]]</del></li><br />
<li>[[Special:MyLanguage/Kit (Container Mount)|Container Mount]]</li><br />
<li>[[Special:MyLanguage/Kit (Crate)|Crate]]</li><br />
<li>[[Special:MyLanguage/Kit (Locker)|Locker]]</li><br />
<li>[[Special:MyLanguage/Kit (Locker)|Locker (Small)]]</li><br />
<li>[[Special:MyLanguage/Kit (Suit Storage)|Suit Storage]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
<br />
<!--T:92--><br />
<div class="large-8 medium-4 columns"><br />
<h3 class="subheader"><span class="fa fa-cogs fa-lg" style="display:inline;"></span>Farming, Plants, Animals & Foods</h3><br />
<div class="medium-4 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Animals</li><br />
<ul style="margin-left:8px;"><br />
<li><del>[[Special:MyLanguage/Character Player|Character Player]]</del></li><br />
<li>[[Special:MyLanguage/Chick|Chick]]</li><br />
<li>[[Special:MyLanguage/Chicken|Chicken]]</li><br />
<li>[[Special:MyLanguage/Fertilized Egg|Fertilized Egg]]</li><br />
<li><del>[[Special:MyLanguage/Grounder|Grounder]]</del></li><br />
<li><del>[[Special:MyLanguage/Skeleton|Skeleton]]</del></li><br />
</ul><br />
</ul><br />
<ul style="margin-left:8px;"><br />
<li>Cooked Foods</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Baked Potato|Baked Potato]]</li><br />
<li>[[Special:MyLanguage/Cereal Bar|Cereal Bar]]</li><br />
<li>[[Special:MyLanguage/Fries|Fries]]</li><br />
<li>[[Special:MyLanguage/Milk|Milk]]</li><br />
<li>[[Special:MyLanguage/Muffin|Muffin]]</li><br />
<li>[[Special:MyLanguage/Pumpkin Pie|Pumpkin Pie]]</li><br />
<li>[[Special:MyLanguage/Tomato Soup|Tomato Soup]]</li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-4 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Ingredients</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Color Dye|Color Dye]]</li><br />
<li>[[Special:MyLanguage/Egg|Egg]]</li><br />
<li>[[Special:MyLanguage/Egg Carton|Egg Carton]]</li><br />
<li>[[Special:MyLanguage/Flour|Flour]]</li><br />
<li>[[Special:MyLanguage/Soy Oil|Soy Oil]]</li><br />
</ul><br />
<li>Reagents</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Carbon Powder|Carbon Powder]]</li><br />
<li>[[Special:MyLanguage/Cobalt Powder|Cobalt Powder]]</li><br />
<li>[[Special:MyLanguage/Electrum Powder|Electrum Powder]]</li><br />
<li>[[Special:MyLanguage/Fenoxitone Powder|Fenoxitone Powder]]</li><br />
<li>[[Special:MyLanguage/Gold Powder|Gold Powder]]</li><br />
<li>[[Special:MyLanguage/Invar Powder|Invar Powder]]</li><br />
<li>[[Special:MyLanguage/Silver Powder|Silver Powder]]</li><br />
</ul><br />
<li>Medical</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Pill (Medical)|Pill (Medical)]]</li><br />
<li><del>[[Special:MyLanguage/Pill (Stun)|Pill (Stun)]]</del></li><br />
</ul><br />
</ul><br />
</div><br />
<div class="medium-4 columns"><br />
<ul style="margin-left:8px;"><br />
<li>Hydroponics</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Kit (Automated Hydroponics)|Automated Hydroponics]]</li><br />
<li>[[Special:MyLanguage/Kit (Hydroponic Station)|Hydroponic Station]]</li><br />
<li>[[Special:MyLanguage/Kit (Hydroponic Tray)|Hydroponic Tray]]</li><br />
<li>[[Special:MyLanguage/Kit (Portable Hydroponics)|Portable Hydroponics]]</li><br />
</ul><br />
<li>Plants</li><br />
<ul style="margin-left:8px;"><br />
<li>[[Special:MyLanguage/Alien Mushroom|Alien Mushroom]]</li><br />
<li>[[Special:MyLanguage/Corn|Corn]]</li><br />
<li>[[Special:MyLanguage/Fern|Fern]]s</li><br />
<li>[[Special:MyLanguage/Flower|Flower]]s</li><br />
<li>[[Special:MyLanguage/Mushroom|Mushroom]]</li><br />
<li>[[Special:MyLanguage/Potato|Potato]]es</li><br />
<li>[[Special:MyLanguage/Pumpkin|Pumpkin]]s</li><br />
<li>[[Special:MyLanguage/Rice|Rice]]</li><br />
<li>[[Special:MyLanguage/Soybean|Soybean]]s</li><br />
<li>[[Special:MyLanguage/Tomato|Tomato]]es</li><br />
<li>[[Special:MyLanguage/Wheat|Wheat]]</li><br />
</ul><br />
</ul><br />
</div><br />
</div><br />
</div><br />
<br />
<!--T:100--><br />
__NOTOC__ __NOEDITSECTION__<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=Energy_Storage_Reference&diff=9885Energy Storage Reference2020-12-26T20:29:23Z<p>Legolegs: Created page with "{| class="wikitable" |- ! Energy storage !! Amount, Joules<ref>1 Joule = 1 Watt per 1 game Tick = 1 Watt per 0.5 real time seconds</ref> |- | Battery Cell (Small) || 3..."</p>
<hr />
<div>{| class="wikitable"<br />
|-<br />
! Energy storage !! Amount, Joules<ref>1 Joule = 1 Watt per 1 game [[Tick]] = 1 Watt per 0.5 real time seconds</ref><br />
|-<br />
| [[Battery Cell (Small)]] || 36 000<br />
|-<br />
| [[Battery Cell (Large)]] || 288 000<ref name="8times">8 times of previous tier</ref><br />
|-<br />
| [[Battery Cell (Nuclear)]] || 2 304 000<ref name="8times"/><br />
|-<br />
| [[Stationary Battery]] || 3 600 000<ref>100 times small cell</ref><br />
|-<br />
| [[Stationary Battery Large ]] || 9 000 001<br />
|-<br />
| 1 piece of [[coal|coal]] in [[Solid Fuel Generator|generator]] || 220 000<ref>Energy output may vary</ref><br />
|-<br />
! Energy usage !! Amount, Joules<br />
|-<br />
| stack of [[Ore (Iron)|iron]] in [[Arc Furnace]] || 10 000<br />
|-<br />
| stack of [[Ore (Gold)|gold]] in [[Arc Furnace]] || 100 000<br />
|-<br />
| stack of [[Glass Sheet|glass]]/[[Steel Sheets]]/[[Kit (Wall)|walls]]/etc in [[Autolathe]] || 25 000<br />
|-<br />
| stack of [[Cable Coil]] from [[Electronics Printer]] || 5 000<br />
|-<br />
| 50 uses of [[Arc Welder]] || 100 000<br />
|-<br />
! Energy usage per day<ref>Normal day+night cycle is 20 minutes (1200 seconds, 2400 ticks)</ref> !! Amount, Joules<br />
|-<br />
| One [[Solar Panel]] day (ideal setup, 100% [[Earth]] insolation) || 600 000<ref>Not practicaly achievable</ref><br />
|-<br />
| [[Tracking Beacon]] || 24 000<br />
|-<br />
| [[Kit (Beacon)|Stationary Beacon]] || 720 000<ref>This is why some players set beacons to "pulse mode", often by utilization of unused ports of IC10 chips doing something unrelated.</ref><br />
|-<br />
| Idle airlock<ref>Two 10W doors and 50W console</ref> with [[Kit (Door) Composite Door|composite doors]] || 168 000<br />
|-<br />
| Idle airlock<ref>Two 25W doors and 50W console</ref> with other kind of [[Portal|doors]] || 240 000<br />
|-<br />
| [[Wall Heater]] || 2 400 000<br />
|}<br />
== References ==<br />
<references /></div>Legolegshttps://stationeers-wiki.com/index.php?title=Beginner%27s_Guide&diff=9861Beginner's Guide2020-12-19T14:01:07Z<p>Legolegs: Right Click to turn held item on or off</p>
<hr />
<div>[[Category:Tutorials]]<br />
<languages /><br />
<translate><br />
<!--T:1--><br />
''' This page is a work-in-progress, add Tips to the bottom 😎 '''<br />
<br />
<!--T:2--><br />
This should be a crash-course primer to getting started in Stationeers. You can find more guides in the Steam community, several of which are linked from the front page of this wiki.<br />
<br />
<!--T:3--><br />
''This guide assumes that you've selected Moon as your scenario.''<br />
<br />
=== Basic Controls === <!--T:4--><br />
<br />
<!--T:5--><br />
* Players interact with the world, items, and structures in Stationeers with an active hand system.<br />
* Your left and right hands are represented in the bottom middle of the screen. <br />
** '''WASD''' movement<br />
** '''Left Click''' interacts with the world using the current hand or tool in the current hand (ex: you can't interact with buttons while holding an item)<br />
** '''Right Click''' starts placement mode when holding a structure (ex: [[Iron Frames]] or [[Autolathe]])<br />
** '''Mouse Wheel'''<br />
*** With an open inventory - changes active slot<br />
*** When placing a structure - changes the mode for an item in placement mode (use this with [[Cables]] to change their shape)<br />
*** When using some consoles or computers - scrolls the active menu<br />
** '''E''' swaps current active hand<br />
** '''R''' opens the item in the current hand, or goes to its options<br />
** '''F''' swaps between held items and items in your inventory on the side (accessed through the number keys)<br />
** '''Q''' drops the currently held item in the active hand, holding '''Q''' will cause you to throw the item<br />
** '''1-6''' will open menus for worn items similar to pressing R, holding 1-6 will cause it to swap with the item in the current hand, or simply go in the current hand - ''don't do this with the helmet or suit in a vacuum''<br />
*** You can swap the [[Toolbelt|Tool Belt]] and the [[Mining Belt]] by holding a belt in your hand and then holding '''6'''<br />
** '''Delete, End, Insert, Home, Page Up, Page Down''' rotate item in placement mode. '''C''' is usefull for autorotate when placing cables or pipes.<br />
** '''G''' grab - not the same as drag, which is triggered by clicking on a portable item's handle with an empty hand<br />
** '''I''' quick open the helmet - ''don't do this in a vacuum''. You can lock the helmet in it's menu to avoid this.<br />
** '''O''' or '''Right Click''' turn held item on or off<br />
** '''J''' turn jet pack on or off. The propulsion tank will last for many hours use, use it freely for building or mining. Still, make '''sure''' you turn off the jet pack when not using it, as the jet pack will continue to drain the propulsion tank.<br />
<br />
=== Getting your Bearings === <!--T:6--><br />
<br />
<!--T:7--><br />
'' See also: [[Starting Gear]] and [[Constructing and Deconstructing Walls]] ''<br />
<br />
<!--T:8--><br />
When you spawn into the world you will see several crates and [[Road Flares]]. There's a lot to take in, but you have some time to get a feel for the controls and explore the crates. You will want to at least get started on a basic platform before sunrise though.<br />
<br />
=== Surviving the First Night === <!--T:9--><br />
<br />
<!--T:10--><br />
# Grab the [[Iron Frames]] from construction crate 1 by clicking on the lid and letting it open<br />
# Find a place where the blocks don't clip too much into the ground and place a 2x2 or a 3x3<br />
## You can create stairs later, so it's okay if your block is not placed too well right now<br />
## You can also deconstruct everything easily later on, only expending battery charge in the process<br />
# Put the [[Iron Frames]] back and grab the [[Iron Sheets]]<br />
# Switch to your free hand using '''E'''<br />
## Open your [[Toolbelt|Tool Belt]] by hitting '''6'''<br />
## Use the '''Mouse Wheel''' to highlight the [[Welder]] and press '''F''' to move it to your active / empty hand<br />
## Press '''O''' or '''R''', '''R''', then '''F''' to turn the torch on<br />
## Hover over the frame until prompted to construct the frame, then '''left click''' and hold<br />
## ''You only need to build the first level to be able to walk on it, the second level is considered airtight<br />
## Turn off the [[Welding Torch]] when you're done, otherwise it will stay on in your belt and either blow up or run out of fuel<br />
# Put the [[Iron Frames]] and [[Iron Sheets]] back in the crate<br />
# Grab the [[Kit (Solar Panel)]] from construction crate 1 and place it on your platform<br />
## You will need to finish constructing it by holding a [[Glass Sheets|Glass Sheet]] in your hand and hold down '''left mouse button''' while it constructs<br />
## You can use the [[Wrench]] from your [[Toolbelt|Tool Belt]] to rotate the [[Solar Panel]]<br />
## The top parts are for vertical orientation, the base of the solar panel can be rotated for horizontal positioning<br />
## If you see the sun, make the panel face it! You can see its current generation by hovering over the structure<br />
# Grab the [[Area Power Controller]] from construction crate 1<br />
## Place it on the frames and open it with the [[Crowbar]]<br />
## Grab the empty [[Battery Cell (Large)]] from construction crate 2 and place it inside the [[Area Power Controller]]<br />
## The switch starts in "Off" - make sure to turn it on!<br />
## If the light is blinking red - you're running on battery power<br />
## If the light is blinking blue - you're charging the battery power from external sources (ex: [[Solar Panel]], [[Solid Fuel Generator]], [[Stationary Battery]])<br />
#* '''Do not connect the input (raw power) and output from the APC - you will cause a short circuit!'''<br />
# Switch back to the [[Toolbelt|Tool Belt]] and put the [[Cables]] in a free hand<br />
## Use the '''mouse wheel''' to change the shape and '''delete, insert, home, end, pgup, pgdown''' to rotate<br />
## You can use the [[Cable Cutters]] to "pick up" bad placement<br />
# When your battery runs low, switch it with the battery in the APC, if you do this early enough in the solar day and track the sun, then the battery should be high or full charge by the end of the day<br />
<br />
<!--T:11--><br />
You will now probably survive the first night. But that's not exciting.. you're here to build cool stuff!<br />
<br />
=== Surviving the First Week === <!--T:12--><br />
<br />
<!--T:13--><br />
During the day, you will want to aggressively find Ores since visibility is very low at night.<br />
<br />
<!--T:14--><br />
# Find ores such as [[Iron Ore]], [[Copper Ore]], [[Gold Ore]]<br />
#* You can ignore [[Silver Ore]], [[Nickel Ore]], [[Lead Ore]], [[Ice]], and all others for now<br />
# Setup the [[Battery Charger]] to recharge small batteries for your tools such as [[Hand Drill]] and [[Mining Drill]]<br />
# Setup your [[Arc Furnace]] by connecting [[Cables]] from your [[Area Power Controller]]<br />
#* You can turn it on by clicking on the switch to the left (it will turn green)<br />
#* Insert the ore and click on the 'activate' button<br />
#* If it stops working immediately, then your power is not consistent - did you skip setting up the APC? Is the battery in the APC out of power?<br />
#* In this case, you will need to rely on the [[Solid Fuel Generator]] to power the APC<br />
# Setup the [[Solid Fuel Generator]] for emergency power until a [[Stationary Battery]] can be setup<br />
#* Make sure you hook it up to the input side of the [[Power Controller|APC]] - '''do not mix the networks!'''<br />
#* The [[Solid Fuel Generator]] eats coal quickly, so try to move to solar asap<br />
<br />
<!--T:15--><br />
During the night, if you need to get minerals, use the [[Tracking Beacon]]!<br />
<br />
<!--T:16--><br />
* The [[Tracking Beacon]] uses a [[Battery Cell (Small)]] which can be taken from the [[Hand Drill]] or [[Angle Grinder]]<br />
* A [[Cartridge (Tracker)|Cartridge]] starts in the player's suit inventory and can be inserted into the [[Handheld Tablet]]<br />
** '''Heads up:''' the tablet uses power if left On when put away<br />
<br />
===== Goals ===== <!--T:17--><br />
<br />
<!--T:18--><br />
# Setup the remaining structures: [[Arc Furnace]], [[Solid Fuel Generator]], [[Autolathe]]<br />
# Get the materials to produce an [[Electronics Printer]] asap<br />
#* Print out a [[Battery Cell (Large)]] from the [[Electronics Printer]] so you don't have to swap suit power with the APC and can charge it with minimal interaction<br />
#* Print out a [[Kit_(Battery)|Battery]] and hook it up to the '''incoming''' side of the APC<br />
#* Use [[Cables|Heavy Cables]] to transfer a higher wattage to the [[Kit_(Battery)|Battery]]<br />
# Setup a basic room with an [[Airlock]] and a [[Gas Tank Storage]] to collect some oxygen if low<br />
<br />
=== Getting Steel === <!--T:19--><br />
<br />
<!--T:20--><br />
Here's the first obstacle in your way: getting your first run of [[Steel Ingot|Steel]].<br />
<br />
<!--T:21--><br />
# Create a [[Furnace]] from the [[Autolathe]] - nice<br />
# You will need the following items to start the furnace<br />
#* 2 volatile ice<br />
#* 1 oxite ice<br />
# You need a ratio of these items to get steel<br />
#* 3 iron ore<br />
#* 1 coal<br />
#* ''you can double check the ratio with the [[Cartridges|Cartridge (eReader)]] in the [[Handheld Tablet]]<br />
# Insert 2 volatile ice and 1 oxite ice into the furnace (this will be easier to do at night otherwise the ice might melt)<br />
# Insert iron ore and coal at a ratio of 3-1 (3 iron - 1 coal)<br />
#* Check the contents view on the furnace and you should see hydrocarbons and iron listed<br />
#* Hit '''Activate''' and enjoy the light show<br />
#* Pull the lever and enjoy your [[Steel Ingot|Steel]] - 100g lasted me for a long time 😎<br />
#* You can run multiple batches as long as you're in the right pressure & temperature range<br />
# '''Warning''' ore cannot be recovered from the [[Furnace]] unless you use a [[Centrifuge]] - '''make sure you measure it out!'''<br />
<br />
=== Surviving Forever === <!--T:22--><br />
<br />
<!--T:23--><br />
Once you've gotten past the early part of the game, the world is your oyster. Here's some overall goals:<br />
<br />
<!--T:24--><br />
# Create one or more [[Station Batteries|Battery]] units to store power more consistently<br />
# Automate solar power collection using [[Circuits|Logic Circuits]] and a [[Sensors|Daylight Sensor]] - use the [[Solar Logic Circuits Guide]] to get started<br />
# Create a hydroponics system to extend your supply of food indefinitely - the [[Guide (Farming)]] is a good place to start (but don't forget you will eventually need another source of water!)<br />
# Use [[Chutes]], [[Conveyor|Conveyors]], and [[Stacker|Stackers]] if you're interested in the ol' Factorio feel<br />
# Create an actual ship! (Using [[Furniture]], [[Rocket Engine]], [[Stellar Anchor]] and some other parts)<br />
# Create advanced ingots such as [[Solder]], [[Invar]], [[Electrum]], [[Constantan]]<br />
# Create more advanced life support systems, like automated heating and cooling, automated air filtering, and automated farming, to not only survive but ''thrive''!<br />
<br />
=== Multiplayer === <!--T:25--><br />
<br />
<!--T:26--><br />
''tbd - but yeah, Don't grief!'''<br />
<br />
=== Tips === <!--T:27--><br />
* Your starting Oxygen will last you for more than a week, so oxygen recovery can wait<br />
* An [[Area Power Controller]] will effectively "split" a power & data network<br />
** Power and data are transferred on the same network - no need to run parallel power lines<br />
* The waste canister can be used to power the jet pack - simply switch the canisters over for an emergency fix<br />
* A locker holds 30 items and is very useful in the early game<br />
* Ice will melt in hands, in the world, or in lockers - ice will '''not'' melt inside of a [[Mining Belt]] or in a cold environment.<br />
* Help, I can't deconstruct something! - check that the [[Hand Drill|Hand Drill's]] battery is not Empty<br />
* A battery will charge twice as fast in an [[Power Controller | Area Power Controller]] than in a [[Battery Charger]] (Nuclear is only 73% faster) according to [https://www.reddit.com/r/Stationeers/comments/hoku8r/really_useful_cheat_sheet_of_stats_and_figures/ this helpfull reddit post by u/Chrisbitz]<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=Solar_Panel&diff=9720Solar Panel2020-11-01T14:59:49Z<p>Legolegs: Power output of single panel on different planets</p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<br />
<!--T:1--><br />
[[Category:Machines]]<br />
[[Category:Items]]<br />
{{Itembox<br />
| name = Kit (Solar Panel)<br />
| image = [[File:ItemKitSolarPanel.png]]<br />
| createdwith = [[Electronics Printer]], [[Fabricator]]<br />
| cost = 10g [[Iron]], 5g [[Gold]], 20g [[Copper]]<br />
| constructs = [[Solar Panel]]<br />
| stacks = x<br />
}}<br />
{{Structurebox<br />
| name = Solar Panel<br />
| image = [[File:SolarPanel.png]]<br />
| power_usage = 0W to 500W generated<br />
| placed_with_item = [[Kit (Solar Panel)]]<br />
| placed_on_grid = Large Grid<br />
| stage_image1 = [[File:SolarPanelStage1.png]]<br />
| const_with_item1 = [[Glass Sheets|Glass Sheet]]<br />
| decon_with_tool1 = [[Hand Drill]]<br />
| item_rec1 = [[Kit (Solar Panel)]]<br />
| stage_image2 = [[File:SolarPanel.png]]<br />
| decon_with_tool2 = [[Crowbar]]<br />
| item_rec2 = [[Glass Sheets|Glass Sheet]]<br />
}}<br />
<br />
== Description == <!--T:2--><br />
The '''Solar Panel''' generates power by absorbing sunlight, depending on solar intensity, up to 500W per panel on the moon. Can be manually rotated using a [[Wrench]]. Can be built in two configurations, one with opposite side split power/data ports, or two with same side combined power/data ports.<br />
<br />
Data ports can interact with [https://stationeers-wiki.com/Sensors#Daylight_Sensor Daylight Sensors] and logic i/o writers or batch writers to automatically rotate the panel to face the sun.<br />
<br />
At the extreme attitude settings (0/100) the solar panel still faces 15 degrees above the horizon. Thus the total arc of vertical rotation is only 150 degrees from input values 0-100.<br />
[[File:Solar panel yaw-Horizontal setting.png|200x150px|thumb|solar panel horizontal rotation]]<br />
<br />
==Notes== <!--T:3--><br />
After placement be sure to install one [[Glass Sheets|Glass Sheet]] to make it functional.<br />
<br />
See [[Sensors]] and [[Solar_Logic_Circuits_Guide]] for panel automation using logic circuits.<br />
<br />
==Power output of single panel on different planets==<br />
{| class="wikitable"<br />
|-<br />
! World !! Solar Energy !! % of Earth !! Solar Angle<br />
|-<br />
| Moon || 500W || 100% || 0°<br />
|-<br />
| Mars || 455W || 91% || 8°<br />
|-<br />
| Europa || 210W || 42% || 32°<br />
|-<br />
| Mimas || 90W || 18% || 126°<br />
|-<br />
| Asteroid belt || 500W || 100% || 0°<br />
|-<br />
| Loulan || 455W || 91% || 8°<br />
|-<br />
|}<br />
<br />
<br />
{{Data Network Header}}<br />
<br />
{{Data Parameters}}<br />
{| class="wikitable"<br />
|-<br />
! Parameter Name !! Data Type !! Description<br />
|-<br />
| Horizontal || degrees || Set the horizontal rotation of the Solar Panel (clockwise, 0-360°, data port is at 270°)<br />
|-<br />
| Vertical || % || Sets the vertical angle of the Solar Panel (accepts 0-100% which translates to 15°-165°, 50%=90° =zenith)<br />
|-<br />
| On || Boolean || Turns the solar panel on or off<br />
|}<br />
<br />
{{Data Outputs}}<br />
{| class="wikitable"<br />
|-<br />
! Output Name !! Data Type !! Description<br />
|-<br />
| Charge || W || Returns the power generated in Watts<br />
|-<br />
| Horizontal || degrees || Returns the horizontal rotation of the Solar Panel<br />
|-<br />
| Vertical || % || Returns the vertical angle of the Solar Panel<br />
|-<br />
| Maximum || W || Maximum possible power for this planet<br />
|-<br />
| Ratio || || How close to maximum current performance is, 1.0 means panel is perfectly directed and unobstructed<br />
|-<br />
| On || Boolean || Returns the on/off state of the solar panel<br />
|}<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=Solar_Panel&diff=9719Solar Panel2020-11-01T14:45:38Z<p>Legolegs: data parameters</p>
<hr />
<div><languages/><br />
<translate><br />
<br />
<br />
<!--T:1--><br />
[[Category:Machines]]<br />
[[Category:Items]]<br />
{{Itembox<br />
| name = Kit (Solar Panel)<br />
| image = [[File:ItemKitSolarPanel.png]]<br />
| createdwith = [[Electronics Printer]], [[Fabricator]]<br />
| cost = 10g [[Iron]], 5g [[Gold]], 20g [[Copper]]<br />
| constructs = [[Solar Panel]]<br />
| stacks = x<br />
}}<br />
{{Structurebox<br />
| name = Solar Panel<br />
| image = [[File:SolarPanel.png]]<br />
| power_usage = 0W to 500W generated<br />
| placed_with_item = [[Kit (Solar Panel)]]<br />
| placed_on_grid = Large Grid<br />
| stage_image1 = [[File:SolarPanelStage1.png]]<br />
| const_with_item1 = [[Glass Sheets|Glass Sheet]]<br />
| decon_with_tool1 = [[Hand Drill]]<br />
| item_rec1 = [[Kit (Solar Panel)]]<br />
| stage_image2 = [[File:SolarPanel.png]]<br />
| decon_with_tool2 = [[Crowbar]]<br />
| item_rec2 = [[Glass Sheets|Glass Sheet]]<br />
}}<br />
<br />
== Description == <!--T:2--><br />
The '''Solar Panel''' generates power by absorbing sunlight, depending on solar intensity, up to 500W per panel on the moon. Can be manually rotated using a [[Wrench]]. Can be built in two configurations, one with opposite side split power/data ports, or two with same side combined power/data ports.<br />
<br />
Data ports can interact with [https://stationeers-wiki.com/Sensors#Daylight_Sensor Daylight Sensors] and logic i/o writers or batch writers to automatically rotate the panel to face the sun.<br />
<br />
At the extreme attitude settings (0/100) the solar panel still faces 15 degrees above the horizon. Thus the total arc of vertical rotation is only 150 degrees from input values 0-100.<br />
[[File:Solar panel yaw-Horizontal setting.png|200x150px|thumb|solar panel horizontal rotation]]<br />
<br />
==Notes== <!--T:3--><br />
After placement be sure to install one [[Glass Sheets|Glass Sheet]] to make it functional.<br />
<br />
See [[Sensors]] and [[Solar_Logic_Circuits_Guide]] for panel automation using logic circuits.<br />
<br />
{{Data Network Header}}<br />
<br />
{{Data Parameters}}<br />
{| class="wikitable"<br />
|-<br />
! Parameter Name !! Data Type !! Description<br />
|-<br />
| Horizontal || degrees || Set the horizontal rotation of the Solar Panel (clockwise, 0-360°, data port is at 270°)<br />
|-<br />
| Vertical || % || Sets the vertical angle of the Solar Panel (accepts 0-100% which translates to 15°-165°, 50%=90° =zenith)<br />
|-<br />
| On || Boolean || Turns the solar panel on or off<br />
|}<br />
<br />
{{Data Outputs}}<br />
{| class="wikitable"<br />
|-<br />
! Output Name !! Data Type !! Description<br />
|-<br />
| Charge || W || Returns the power generated in Watts<br />
|-<br />
| Horizontal || degrees || Returns the horizontal rotation of the Solar Panel<br />
|-<br />
| Vertical || % || Returns the vertical angle of the Solar Panel<br />
|-<br />
| Maximum || W || Maximum possible power for this planet<br />
|-<br />
| Ratio || || How close to maximum current performance is, 1.0 means panel is perfectly directed and unobstructed<br />
|-<br />
| On || Boolean || Returns the on/off state of the solar panel<br />
|}<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=Spray_Paint&diff=9712Spray Paint2020-10-24T13:38:49Z<p>Legolegs: updatet info on 1g iron recipe, also tips on painting stacks</p>
<hr />
<div>[[Category:Tools]]<br />
<languages/><br />
<translate><br />
<!--T:1--><br />
{{Itembox<br />
| name = Spray Paint<br />
| image = [[File:{{#setmainimage:ItemSprayCan.gif}}]]<br />
| stacks = No<br />
| createdwith = [[Paint Mixer]]<br />
| cost = 5ml [[Soy Oil]] + [[Coloring]] (varying), or 1g [[Ingot_(Iron)|Iron]]<br />
}}<br />
<br />
== Description == <!--T:2--><br />
[[Spray Paint]] allows you to change the color of structures and most items (ex: [[Handheld Tablet]]). For how to set colors to electronic displays and the like, see their respective logic parameters and the [[Data Network Colors]].<br />
<br />
== Use == <!--T:3--><br />
Use left-click while in active hands to use. [[Spray Paint]] starts at 100% and decreases by 5% with each subsequent use. It is possible to paint a whole stack of items (like a cable coil, or pipes, or steel frames) with one use of Spray. When combining stacks the receiving stacks retains its color.<br />
<br />
== Current colors == <!--T:4--><br />
* Black<br />
* Blue<br />
* Brown<br />
* Green<br />
* Grey<br />
* Khaki<br />
* Orange<br />
* Pink<br />
* Purple<br />
* Red<br />
* White<br />
* Yellow<br />
<br />
== Recipes == <!--T:3--><br />
'''All''' recipes below require 5ml of [[Soy Oil]] in addition to the ingredients listed below.<br />
{| class=wikitable<br />
! Black<br />
| 40g [[Carbon Powder]], 10g [[Silver Powder]]<br />
|-<br />
! Blue<br />
| 50g [[Coloring|Coloring (Blue)]]<br />
|-<br />
! Brown<br />
| 20g [[Coloring|Coloring (Red)]], 10g [[Coloring|Coloring (Blue)]], 20g [[Coloring|Coloring (Yellow)]]<br />
|-<br />
! Green<br />
| 50g [[Coloring|Coloring (Green)]]<br />
|-<br />
! Grey<br />
| 20g [[Silver Powder]], 10g [[Coloring|Coloring (Red)]], 10g [[Coloring|Coloring (Blue)]], 10g [[Coloring|Coloring (Yellow)]]<br />
|-<br />
! Khaki<br />
| 10g [[Coloring|Coloring (Red)]], 10g [[Coloring|Coloring (Blue)]], 30g [[Coloring|Coloring (Green)]]<br />
|-<br />
! Orange<br />
| 50g [[Coloring|Coloring (Orange)]]<br />
|-<br />
! Pink<br />
| 30g [[Coloring|Coloring (Red)]], 10g [[Coloring|Coloring (Blue)]], 10g [[Coloring|Coloring (Yellow)]]<br />
|-<br />
! Purple<br />
| 20g [[Coloring|Coloring (Red)]], 30g [[Coloring|Coloring (Blue)]]<br />
|-<br />
! Red<br />
| 50g [[Coloring|Coloring (Red)]]<br />
|-<br />
! White<br />
| 20g [[Gold Powder]], 10g [[Coloring|Coloring (Red)]], 10g [[Coloring|Coloring (Blue)]], 10g [[Coloring|Coloring (Yellow)]]<br />
|-<br />
! Yellow<br />
| 50g [[Coloring|Coloring (Yellow)]]<br />
|}<br />
<br />
== Trivia == <!--T:5--><br />
* As of 0.2.2581.12315, Spray Paint could be made with 1g [[Iron Ingot|Iron]] at a [[Tool Manufactory]]. It seems like a temporary shortcut recipe added (or kept) because the recipes above are too expensive (one must grow 1 flower per paining action).<br />
<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=Autolathe&diff=9693Autolathe2020-10-07T07:52:58Z<p>Legolegs: ClearMemory,Activate,Lock</p>
<hr />
<div><languages /><br />
<translate><br />
<!--T:1--><br />
[[Category:Machines]]<br />
{{Itembox<br />
| name = Kit (Autolathe)<br />
| image = [[File:ItemKitAutolathe.png]]<br />
| createdwith = [[Autolathe]], [[Fabricator]]<br />
| cost = 20g [[Iron]], 10g [[Copper]], 2g [[Gold]]<br />
}}<br />
{{Structurebox<br />
| name = Autolathe<br />
| image = [[File:Autolathe.jpg]]<br />
| power_usage = 100W + Recipe Usage<br />
| placed_with_item = [[Kit (Autolathe)]]<br />
| placed_on_grid = Small Grid<br />
| decon_with_tool1 = [[Hand Drill]]<br />
| item_rec1 = [[Kit (Autolathe)]]<br />
}}<br />
{{Structurebox<br />
| name = Autolathe mk2<br />
| image = [[File:Autolathemk2.png]]<br />
| power_usage = 100W + Recipe Usage<br />
| placed_with_item = [[Autolathe Printer Mod]]<br />
| placed_on_grid = Small Grid with Autolathe<br />
| decon_with_tool1 = [[Hand Drill]]<br />
| item_rec1 = [[Autolathe Printer Mod]]<br />
}}<br />
<br />
== Description == <!--T:2--><br />
Used to craft a variety of items. Takes ingots in the left and spits product out of the right. Power button toggles machine power state. Lever will eject materials inside if machine is powered. Arrow buttons select recipe, push the square button in between to craft. Magnifying glass button below the craft button opens a search interface for easier recipe selection.<br />
<br />
To complete construction you will need 2 [[Iron Sheets]], 4 [[Cable Coil]]s, and 2 [[Plastic Sheets]] and a [[Welder]] tool.<br />
<br />
Since December 2019 there is an option to upgrade the Autolathe to a MK2 Version.<br />
<br />
'''Warning: Machine will continue to craft until button is pushed again, machine is turned off or loses power.'''<br />
<br />
If you want to craft only a single item unattended: start the craft, pull the eject lever, walk away and the craft will progress but stop at 100%. When you return, to finish the item, reset the eject lever and the item will be crafted and pop out, then push the square button to stop the crafting process.<br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:auto; overflow:auto;"><br />
<br />
== Recipes == <!--T:2--><br />
Expand to see the recipes.<br />
<div class="mw-collapsible-content"><br />
<br />
{| class="wikitable"<br />
! '''Item'''<br />
! '''Input'''<br />
! '''Output'''<br />
|-<br />
! scope="row" | '''[[Cable Coil]]'''<br />
| {{Icon|Copper|0.5}}<br />
| {{Icon|cable coil|1}}<br />
|-<br />
! scope="row" | '''[[Chutes]]'''<br />
| {{Icon|Iron|3}}<br />
| {{Icon|chutes|1}}<br />
|-<br />
! scope="row" | '''[[Pipe]]'''<br />
| {{Icon|Iron|0.5}}<br />
| {{Icon|pipes|1}}<br />
|-<br />
! scope="row" | '''[[Glass Sheets]]'''<br />
| {{Icon|Silicon|2}}<br />
| {{Icon|glass sheets|1}}<br />
|-<br />
! scope="row" | '''[[Iron Frames]]'''<br />
| {{Icon|Iron|4}}<br />
| {{Icon|iron frames|1}}<br />
|-<br />
! scope="row" | '''[[Iron Sheets]]'''<br />
| {{Icon|Iron|1}}<br />
| {{Icon|iron sheets|1}}<br />
|-<br />
! scope="row" | '''[[Kit (Arc Furnace)]]'''<br />
| {{Icon|Iron|20}} {{Icon|Copper|5}}<br />
| {{Icon|arc furnace|1}}<br />
|-<br />
! scope="row" | '''[[Autolathe|Kit (Autolathe)]]'''<br />
| {{Icon|Iron|20}} {{Icon|Copper|10}} {{Icon|Gold|2}}<br />
| {{Icon|autolathe|1}}<br />
|-<br />
! scope="row" | '''[[Kit (Centrifuge)]]'''<br />
| {{Icon|Iron|20}} {{Icon|Copper|5}}<br />
| {{Icon|centrifuge|1}}<br />
|-<br />
! scope="row" | '''[[Cladding|Kit (Cladding)]]'''<br />
| {{Icon|Iron|1}}<br />
| {{Icon|kit cladding|1}}<br />
|-<br />
! scope="row" | '''[[Kit (Container Mount)]]'''<br />
| {{Icon|Iron|10}}<br />
| {{Icon|kit container mount|1}}<br />
|-<br />
! scope="row" | '''[[Kit (Crate)]]'''<br />
| {{Icon|Iron|10}}<br />
| {{Icon|kit crate|1}}<br />
|-<br />
! scope="row" | '''[[Kit (Door)]]'''<br />
| {{Icon|Iron|7}} {{Icon|Copper|3}}<br />
| {{Icon|kit door|1}}<br />
|-<br />
! scope="row" | '''[[Electronics Printer|Kit (Electronics Printer)]]'''<br />
| {{Icon|Iron|20}} {{Icon|Copper|10}} {{Icon|Gold|2}}<br />
| {{Icon|electronics printer|1}}<br />
|-<br />
! scope="row" | '''[[Floor Grating |Kit (Floor Grating)]]'''<br />
| {{Icon|Iron|2}}<br />
| {{Icon|floor grating|1}}<br />
|-<br />
! scope="row" | '''[[Furnace|Kit (Furnace)]]'''<br />
| {{Icon|Iron|30}} {{Icon|Copper|10}}<br />
| {{Icon|furnace|1}}<br />
|-<br />
! scope="row" | '''[[Hydraulic Pipe Bender|Kit (Hydraulic Pipe Bender)]]'''<br />
| {{Icon|Iron|20}} {{Icon|Copper|10}} {{Icon|Gold|2}}<br />
| {{Icon|hydraulic pipe bender|1}}<br />
|-<br />
! scope="row" | '''[[Iron Walls|Kit (Iron Wall)]]'''<br />
| {{Icon|Iron|1}}<br />
| {{Icon|iron walls|1}}<br />
|-<br />
! scope="row" | '''[[Kit (Lights)]]'''<br />
| {{Icon|Iron|1}} {{Icon|Copper|2}} {{Icon|Silicon|1}}<br />
| {{Icon|wall light|1}}<br />
|-<br />
! scope="row" | '''[[Locker|Kit (Locker)]]'''<br />
| {{Icon|Iron|10}}<br />
| {{Icon|locker|1}}<br />
|-<br />
! scope="row" | '''[[Kit (Sign)]]'''<br />
| {{Icon|Iron|3}}<br />
| {{Icon|sign|1}}<br />
|-<br />
! scope="row" | '''[[Stacker|Kit (Stacker)]]'''<br />
| {{Icon|Iron|10}} {{Icon|Copper|2}}<br />
| {{Icon|stacker|1}}<br />
|-<br />
! scope="row" | '''[[Stairs|Kit (Stairs)]]'''<br />
| {{Icon|Iron|15}}<br />
| {{Icon|stairs|1}}<br />
|-<br />
! scope="row" | '''[[Tool Manufactory|Kit (Tool Manufactory)]]'''<br />
| {{Icon|Iron|20}} {{Icon|Copper|10}}<br />
| {{Icon|tool manufactory|1}}<br />
|-<br />
! scope="row" | '''[[Kit (Wall)]]'''<br />
| {{Icon|Steel|1}}<br />
| {{Icon|walls|1}}<br />
|-<br />
! scope="row" | '''[[Steel Frames]]'''<br />
| {{Icon|Steel|2}}<br />
| {{Icon|steel frames|1}}<br />
|-<br />
! scope="row" | '''[[Steel Sheets]]'''<br />
| {{Icon|Steel|0.5}}<br />
| {{Icon|steel sheets|1}}<br />
|}<br />
</div><br />
</div><br />
<br />
<div class="toccolours mw-collapsible mw-collapsed" style="width:auto; overflow:auto;"><br />
{{Data Network Header}}<br />
Expand to see the properties.<br />
<div class="mw-collapsible-content"><br />
<br />
{{Data Parameters}}<br />
{| class="wikitable"<br />
|-<br />
! Parameter Name !! Data Type !! Description<br />
|-<br />
| Open || Boolean || Opens the Autolathe, when set to 1. Closes the Autolathe, when set to 0.<br />
|-<br />
| Activate || Boolean || Activates the Autolathe, when set to 1'''Note''': This can cause a minor bug to occur. (See [[#Bugs|Bugs]]). '''Does not''' deactivates the Autolathe, when set to 0, you have to set On=0 instead.<br />
|-<br />
| On || Boolean || Turns the Autolathe on, when set to 1. Turns it off, when set to 0. <br />
|-<br />
| ClearMemory || Boolean trigger || Writing on this Parameter will reset the ExportCount and ImportCount values to zero.<br />
|-<br />
| [[RecipeHash]] || Integer || Set machine to recipe <small>Number is calculated using hash on prefabname</small><br />
|-<br />
| Lock || Boolean || Does nothing<br />
|}<br />
<br />
{{Data Outputs}}<br />
{| class="wikitable"<br />
|-<br />
! Output Name !! Data Type !! Description<br />
|-<br />
| Power || Boolean || Returns whether the Autolathe is turned on and receives power. (0 for no, 1 for yes)<br />
|-<br />
| Open || Boolean || Returns whether the Autolathe is open. (0 for no, 1 for yes)<br />
|-<br />
| Error || Boolean || Returns whether the Autolathe is flashing an error. (0 for no, 1 for yes)<br />
|-<br />
| Activate || Boolean || Returns whether the Autolathe is active. (0 for no, 1 for yes)<br />
|-<br />
| Reagents || Integer || Returns the total amount of all contents, in the Autolathe, in grams.<br />
|-<br />
| On || Boolean || Returns whether the Autolathe is on. (0 for no, 1 for yes)<br />
|-<br />
| ImportQuantity || (Unknown) || (Unknown)<br />
|-<br />
| ImportSlotOccupant || Boolean || Returns whether there is something in the Autolathe import slot. (0 for no, 1 for yes) This outputs 1 only briefly, every time something is inserted in the Autolathe.<br />
|-<br />
| ExportQuantity || Integer || Returns how many items are in the export slot. This will usually only briefly turn 1, shortly before dropping something out of the export slot.<br />
|-<br />
| ExportSlotOccupant || Boolean || Returns whether there is something in the Autolathe export slot. (0 for no, 1 for yes) This will usually only briefly turn 1, shortly before dropping something out of the export slot.<br />
|-<br />
| RequiredPower || Integer || Returns the current amount of power, required by the Autolathe, in Watts. '''Note''': This will not update when active (See [[#Bugs|Bugs]]).<br />
|-<br />
| [[RecipeHash]] || Integer || Reads recipehash of selected recipe <small>Number is calculated using hash on prefabname</small><br />
|}<br />
</div><br />
</div><br />
<br />
== Bugs ==<br />
* Setting the "Activate" parameter to 1, can cause the Autolathe to activate, even when it is empty. Nothing is dropped from the output, once the production is finished in this case and the Autolathe will stop after one production run.<br />
* The "RequiredPower" output only ever outputs 5, when the Autolathe is turned on, 0 otherwise. It does not take into account the raised power required when active. (Still present in version 0.1.1234.6112)<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=MIPS&diff=9692MIPS2020-10-06T07:58:51Z<p>Legolegs: syntax highlighting for notepad++</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
=MIPS scripting language for IC10 housings / chips=<br />
<br />
<pre><br />
# Text after a # will be ignored to the end of the line. The amount of white<br />
# space between arguments isn't important, but new lines start a new command.<br />
</pre><br />
<br />
<br><br />
==Functions==<br />
----<br />
<br />
<div id="alias"></div><br />
;alias<br />
: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)<br />
<code>alias vTemperature r0</code><br />
<br><br />
<code>alias dAutoHydro1 d0</code><br />
<br />
<div id="move"></div><br />
;move <br />
:d s # stores the value of s in d<br />
<code>move r0 42 # Store 42 in register 0</code><br />
<br />
<div id="add"></div><br />
;add <br />
:d s t # calculates s + t and stores the result in d<br />
<code>add r0 r1 1 # add 1 to r1 and store the result as r0</code><br />
<br><br />
<code>add r0 r0 1 # increment r0 by one</code><br />
<div id="sub"></div><br />
;sub <br />
:d s t # calculates s - t and stores the result in d<br />
<div id="mul"></div><br />
;mul <br />
:d s t # calculates s * t and stores the result in d<br />
<div id="div"></div><br />
;div <br />
:d s t # calculates s / t and stores the result in d<br />
<div id="mod"></div><br />
;mod <br />
:d s t <br />
::# calculates s mod t and stores the result in d. Note this<br />
::# doesn't behave like the % operator - the result will be <br />
::# positive even if the either of the operands are negative<br />
<br />
<div id="slt"></div><br />
;slt <br />
:d s t # stores 1 in d if s < t, 0 otherwise<br />
<br />
<div id="sqrt"></div><br />
;sqrt <br />
:d s # calculates sqrt(s) and stores the result in d<br />
<div id="round"></div><br />
;round <br />
:d s # finds the rounded value of s and stores the result in d<br />
<div id="trunc"></div><br />
;trunc <br />
:d s # finds the truncated value of s and stores the result in d<br />
<div id="ceil"></div><br />
;ceil <br />
: d s # calculates the ceiling of s and stores the result in d<br />
<div id="floor"></div><br />
;floor <br />
: d s # calculates the floor of s and stores the result in d<br />
<br />
<div id="max"></div><br />
;max <br />
: d s t # calculates the maximum of s and t and stores the result in d<br />
<div id="min"></div><br />
;min <br />
: d s t # calculates the minimum of s and t and stores the result in d<br />
<div id="abs"></div><br />
;abs <br />
: d s # calculates the absolute value of s and stores the result in d<br />
<div id="log"></div><br />
;log <br />
: d s # calculates the natural logarithm of s and stores the result<br />
::# in d<br />
<div id="exp"></div><br />
;exp <br />
: d s # calculates the exponential of s and stores the result in d<br />
<div id="rand"></div><br />
;rand <br />
: d # selects a random number uniformly at random between 0 and 1<br />
::# inclusive and stores the result in d<br />
<br />
::# boolean arithmetic uses the C convention that 0 is false and any non-zero<br />
::# value is true.<br />
<div id="and"></div><br />
;and <br />
: d s t # stores 1 in d if both s and t have non-zero values,<br />
::# 0 otherwise<br />
<div id="or"></div><br />
;or <br />
: d s t # stores 1 in d if either s or t have non-zero values,<br />
::# 0 otherwise<br />
<div id="xor"></div><br />
;xor <br />
: d s t # stores 1 in d if exactly one of s and t are non-zero,<br />
::# 0 otherwise<br />
<div id="nor"></div><br />
;nor <br />
: d s t # stores 1 in d if both s and t equal zero, 0 otherwise<br />
<br />
<br />
# Lines are numbered starting at zero<br />
<div id="j"></div><br />
;j<br />
: a # jumps to line a.<br />
<div id="bltz"></div><br />
;bltz<br />
: s a # jumps to line a if s < 0<br />
<div id="blez"></div><br />
;blez <br />
: s a # jumps to line a if s <= 0<br />
<br />
<div id="bgez"></div><br />
;bgez <br />
: s a # jumps to line a if s >= 0<br />
<div id="bgtz"></div><br />
;bgtz<br />
: s a # jumps to line a if s > 0<br />
<div id="beq"></div><br />
;beq <br />
: s t a # jumps to line a if s == t<br />
<div id="bne"></div><br />
;bne <br />
: s t a # jumps to line a if s != t<br />
<div id="bdseal"></div><br />
;bdseal<br />
: d? a(r?|num) # Jump execution to line a and store current line number if device d? is set.<br />
<code>bdseal d0 32 #Store line number and jump to line 32 if d0 is assigned.</code><br />
<BR><br />
<code>bdseal dThisVictim HarvestCrop #Store line in ra and jump to sub HarvestCrop if device dThisVictim is assigned.</code><br />
<br />
<div id="yield"></div><br />
;yield <br />
: # ceases code execution for this power tick<br />
<br />
<div id="#"></div><br />
; #<br />
: # The following text will be ignored during compiling; use this to create comments.<br />
<br />
<br />
== Conditional functions cheatsheet ==<br />
{| class="wikitable"<br />
|-<br />
! suffix !! description !! branch to line !! branch and store return address !! relative jump to line !! set register<br />
|-<br />
| prefix: || || b- || b-al || br- || s-<br />
|-<br />
| || unconditional || j || jal || jr || <br />
|-<br />
| -eq || if a == b || beq || beqal || breq || seq<br />
|-<br />
| -eqz || if a == 0 || beqz || beqzal || breqz || seqz<br />
|-<br />
| -ge || if a >= b || bge || bgeal || brge || sge<br />
|-<br />
| -gez || if a >= 0 || bgez || bgezal || brgez || sgez<br />
|-<br />
| -gt || if a > b || bgt || bgtal || brgt || sgt<br />
|-<br />
| -gtz || if a > 0 || bgtz || bgtzal || brgtz || sgtz<br />
|-<br />
| -le || if a <= b || ble || bleal || brle || sle<br />
|-<br />
| -lez || if a <= 0 || blez || blezal || brlez || slez<br />
|-<br />
| -lt || if a < b || blt || bltal || brlt || slt<br />
|-<br />
| -ltz || if a < 0 || bltz || bltzal || brltz || sltz<br />
|-<br />
| -ne || if a != b || bne || bneal || brne || sne<br />
|-<br />
| -nez || if a != 0 || bnez || bnezal || brnez || snez<br />
|-<br />
| -dns || if device d is not set || bdns || bdnsal || brdns || sdns<br />
|-<br />
| -dse || if device d is set || bdse || bdseal || brdse || sdse<br />
|-<br />
| -ap || if a approximately equals b || bap || bapal || brap || sap<br />
|-<br />
| -apz || if a approximately equals 0 || bapz || bapzal || brapz || sapz<br />
|-<br />
| -na || if a not approximately equals b || bna || bnaal || brna || sna<br />
|-<br />
| -naz || if a not approximately equals 0 || bnaz || bnazal || brnaz || snaz<br />
|}<br />
<br />
All <code>b-</code> commands require target line as last argument, all <code>s-</code> commands require register to store result as first argument.<br />
<br />
All approximate functions require additional argument denoting how close two numbers need to be considered equal. E.g.: <code>sap r0 100 101 0.01</code> will consider 100 and 101 almost equal (not more than 1%=0.01 different) and will set r0 to 1. The exact formula is <code>if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8)</code> for <code>-ap</code> and is similar for other approximate functions.<br />
<br />
==Device Variables==<br />
-----<br />
<br />
<div id="Activate"></div><br />
;Activate<br />
:1 if device is activated (usually means running), otherwise 0<br />
:<code>l r0 d0 Activate # sets r0 to 1 if on or 0 of off</code><br />
<br />
<div id="AirRelease"></div><br />
;AirRelease<br />
<div id="Charge"></div><br />
;Charge<br />
: The current charge the device has.<br />
<div id="CLearMemory"></div><br />
;CLearMemory<br />
: When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when triggered.<br />
<div id="Color"></div><br />
;Color<br />
<div id="CompletionRatio"></div><br />
;CompletionRatio<br />
<div id="ElevatorLevel"></div><br />
;ElevatorLevel<br />
<div id="ElevatorSpeed"></div><br />
;ElevatorSpeed<br />
<div id="Error"></div><br />
;Error<br />
: 1 if device is in error state, otherwise 0<br />
<div id="ExportCount"></div><br />
;ExportCount<br />
: How many items exporfted since last ClearMemory.<br />
<div id="Filtration"></div><br />
;Filtration<br />
: The current state of the filtration system. For example filtration = 1 for a Hardsuit when filtration is On.<br />
<div id="Harvest"></div><br />
;Harvest<br />
: Performs the harvesting action for any plant based machinery.<br />
: <code>s d0 Harvest 1 # Performs 1 harvest action on device d0</code><br />
<div id="Horizontal"></div><br />
;Horizontal<br />
<div id="HorizontalRatio"></div><br />
;HorizontalRatio<br />
<div id="Idle"></div><br />
;Idle<br />
<div id="ImportCount"></div><br />
;ImportCount<br />
<div id="Lock"></div><br />
;Lock<br />
<div id="Maximum"></div><br />
;Maximum<br />
<div id="Mode"></div><br />
;Mode<br />
<div id="On"></div><br />
;On<br />
<div id="Open"></div><br />
;Open<br />
<div id="Output"></div><br />
;Output<br />
<div id="Plant"></div><br />
;Plant<br />
: Performs the planting operation for any plant based machinery.<br />
: <code>s d0 Plant 1 # Plants one crop in device d0</code><br />
<div id="PositionX"></div><br />
;PositionX<br />
<div id="PositionY"></div><br />
;PositionY<br />
<div id="PositionZ"></div><br />
;PositionZ<br />
<div id="Power"></div><br />
;Power<br />
<div id="PowerActual"></div><br />
;PowerActual<br />
<div id="PowerPotential"></div><br />
;PowerPotential<br />
<div id="PowerRequired"></div><br />
;PowerRequired<br />
<div id="Pressure"></div><br />
;Pressure<br />
<div id="PressureExternal"></div><br />
;PressureExternal<br />
<div id="PressureInteral"></div><br />
;PressureInteral<br />
<div id="PressureSetting"></div><br />
;PressureSetting<br />
<div id="Quantity"></div><br />
;Quantity<br />
: Total quantity in the device.<br />
<div id="Ratio"></div><br />
;Ratio<br />
: Context specific value depending on device, 0 to 1 based ratio.<br />
<div id="RatioCarbonDioxide"></div><br />
;RatioCarbonDioxide<br />
<div id="RatioNitrogen"></div><br />
;RatioNitrogen<br />
: The ratio of nitrogen in device atmosphere.<br />
<div id="RatioOxygen"></div><br />
;RatioOxygen<br />
: The ratio of oxygen in device atmosphere.<br />
<div id="RatioPollutant"></div><br />
;RatioPollutant<br />
: The ratio of pollutant in device atmosphere.<br />
<div id="RatioVolatiles"></div><br />
;RatioVolatiles<br />
: The ratio of volatiles in device atmosphere.<br />
<div id="RatioWater"></div><br />
;RatioWater<br />
: The ratio of water in device atmosphere.<br />
<div id="Reagents"></div><br />
;Reagents<br />
<div id="RecipeHash"></div><br />
;RecipeHash<br />
<div id="RequestHash"></div><br />
;RequestHash<br />
<div id="RequiredPower"></div><br />
;RequiredPower<br />
<div id="Setting"></div><br />
;Setting<br />
<div id="SolarAngle"></div><br />
;SolarAngle<br />
: Solar angle of the device.<br />
: <code>l r0 d0 SolarAngle # Sets r0 to the solar angle of d0.</code><br />
<div id="Temperature"></div><br />
;Temperature<br />
<div id="TemperatureSettings"></div><br />
;TemperatureSettings<br />
<div id="TotalMoles"></div><br />
;TotalMoles<br />
<div id="VelocityMagnitude"></div><br />
;VelocityMagnitude<br />
<div id="VelocityRelativeX"></div><br />
;VelocityRelativeX<br />
<div id="VelocityRelativeY"></div><br />
;VelocityRelativeY<br />
<div id="VelocityRelativeZ"></div><br />
;VelocityRelativeZ<br />
<div id="Vertical"></div><br />
;Vertical<br />
: Vertical setting of the device.<br />
<div id="VerticalRatio"></div><br />
;VerticalRatio<br />
: Ratio of vertical setting for device.<br />
<div id="Volume"></div><br />
;Volume<br />
: Returns the device atmosphere volume<br />
<br />
<br />
<br />
<br />
<br />
==Slot Variables==<br />
In general (always?) slots are assigned as follows.<br />
:Slot 0: Import<br />
:Slot 1: Export<br />
:Slot 2: Inside Machine<br />
-----<br />
<br />
<br />
<div id="Occupied"></div><br />
;Occupied<br />
:<code>ls r0 d0 2 Occupied #Stores 1 in r0 if d0 has more seeds</code><br />
:<code>ls vOccupied dThisVictim 2 Occupied #stores 1 in vOccupied if dThisVictim has more seeds</code><br />
<div id="OccupantHash"></div><br />
;OccupantHash<br />
<div id="Quantity"></div><br />
;Quantity<br />
<div id="Damage"></div><br />
;Damage<br />
<div id="Efficiency"></div><br />
;Efficiency<br />
<div id="Health"></div><br />
;Health<br />
<div id="Growth"></div><br />
;Growth<br />
:<code>ls r0 d0 0 Growth # Store the numerical growth stage of d0 in r0</code> <br />
<div id="Pressure"></div><br />
;Pressure<br />
<div id="Temperature"></div><br />
;Temperature<br />
<div id="Charge"></div><br />
;Charge<br />
<div id="ChargeRatio"></div><br />
;ChargeRatio<br />
<div id="Class"></div><br />
;Class<br />
<div id="PressureWaste"></div><br />
;PressureWaste<br />
<div id="PressureAir"></div><br />
;PressureAir<br />
<div id="MaxQuantity"></div><br />
;MaxQuantity<br />
<br />
<div id="Mature"></div><br />
;Mature<br />
:<code>ls r0 d0 0 Mature # Store 1 in r0 if d0 has a mature crop</code><br />
:<code>ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop</code><br />
<br />
==Examples==<br />
-----<br />
<br />
<br />
====This example script automates autohydro units and powers the lights off during the day when they're not needed. (Hit Expand)====<br />
Uses aliases, sub-routines and comments to minimize lines of code and adaptability.<br />
<div class="mw-collapsible mw-collapsed" data-expandtext="{{int:Expand Sample AutoHydro Script}}" data-collapsetext="{{int:Collapse Sample AutoHydro Script}}"><br />
<pre><br />
alias vMature r0<br />
alias vOccupied r1<br />
alias isDayLight r2<br />
alias isOccupied r3<br />
alias dSensor d5<br />
<br />
<br />
#start of Program Loop<br />
start:<br />
l isDayLight dSensor Activate #Check if it's daytime or not.<br />
<br />
# For each device, harvest, plant, powerdown, then power on depending on conditions.<br />
alias dThisVictim d0 #Begin processing device 0<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d1 #Begin processing device 1<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d2 #Begin processing device 2<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d3 #Begin processing device 3<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d4 #Begin processing device 4<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
#Can't do a D5 because that's our sensor.<br />
<br />
j start #Return to the beginning of the program loop. (Yields here may save processing power)<br />
<br />
<br />
HarvestCrop:<br />
ls vMature dThisVictim 0 Mature<br />
blez vMature ra #If the crop is not mature, return<br />
s dThisVictim Harvest 1 #If the crop is mature, harvest it (one).<br />
j ra #return<br />
<br />
<br />
PlantCrop:<br />
ls vOccupied dThisVictim 2 Occupied #seeds to plant<br />
blez vOccupied ra #If the machine has no seeds to plant, return.<br />
ls vOccupied dThisVictim 0 Occupied #something growing<br />
bgtz vOccupied ra # If the crop plot is occupied, return.<br />
s dThisVictim Plant 1 # if we made it this far, plant the crop<br />
j ra #return<br />
<br />
<br />
<br />
PowerDown:<br />
s dThisVictim On 0 #Power the machine down.<br />
<br />
j ra #Jump to line we came from<br />
<br />
<br />
TurnitOn:<br />
s dThisVictim On 1 #Power the machine up<br />
j ra<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
</div><br />
<br><br />
-----<br />
<br />
<BR><br />
This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).<br />
<br />
<pre><br />
move r0 0 # Line 0: move the value 0 to register0<br />
sub r1 r0 3 # Line 1: subtract 3 from the value in r0 and write it to r1<br />
bltz r1 4 # Line 2: jump to line 4 if r1 < 0 (skip the next line)<br />
move r0 0 # Line 3: move the value 0 to register0 <br />
slt o r0 1 # Line 4: if r0 < 1 write 1 to the output, otherwise 0.<br />
add r0 r0 1 # Line 5: increment r0 by 1<br />
yield # Line 6: wait until next power tick (0.5s)<br />
j 1 # Line 7: jump back to line 1 <br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
-----<br />
<br />
Example:<br />
<br />
<pre><br />
so you will do l r0 d0 SolarAngle<br />
Sorry had last args swapped<br />
That would read in the value<br />
while,<br />
s d1 Vertical r0<br />
Would write the contents of r0 into the devices 1's Vertical property<br />
additionally you can make some aliases<br />
alias SolarSensor d0<br />
l r0 SolarSensor SolarAngle<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
-----<br />
Another example:<br />
<br />
<pre><br />
Now the IC is inserted into the housing. The screws D0-D5 can be adjusted directly to the equipment (sensor, console, solar panel, etc.). The ports 'o' and 'i0-i2' have been removed. Instead, commands that directly read and write hardware parameters are added.<br />
l <register> <data_channel> <parameter><br />
reads the value of the parameter<br />
s <data_channel> <parameter> <register_or_value><br />
writes the value of the parameter<br />
ls <register> <data_channel> <slot_number> <parameter> <br />
reads the parameter value from the slot<br />
For example, <br />
l r0 d0 Horizontal<br />
<br />
s d5 Activate 1<br />
<br />
ls r3 db 0 OccupantHash<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
<br />
==Links==<br />
-----<br />
* [https://stationeering.com/tools/ic] Stationeering.com offers a programmable circuits simulator so you can develop your code without repeatedly dying in game!<br />
* [https://hastebin.com/uwuhidozun.md]<br />
* [http://www.easy68k.com/]<br />
* [https://pastebin.com/6Uw1KSRN] syntax highlighting for IC10 MIPS for KDE kwrite/kate text editor<br />
* [https://drive.google.com/file/d/1yEsJ-u94OkuMQ8K6fY7Ja1HNpLcAdjo_/view] syntax highlighting for IC10 MIPS for Notepad++<br />
<br />
==Index==<br />
-----<br />
<br />
{|<br />
|+Functions <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#abs|abs]]<br />
*[[#add|add]]<br />
*[[#alias|alias]]<br />
*[[#and|and]]<br />
*[[#beq|beq]]<br />
*[[#bgez|bgez]]<br />
*[[#bgtz|bgtz]]<br />
*[[#blez|blez]]<br />
*[[#bltz|bltz]]<br />
*[[#bne|bne]]<br />
*[[#breq|breq]]<br />
*[[#brgez|brgez]]<br />
*[[#brgtz|brgtz]]<br />
*[[#brlez|brlez]]<br />
*[[#brltz|brltz]]<br />
*[[#brne|brne]]<br />
*[[#ceil|cell]]<br />
*[[#div|div]]<br />
*[[#exp|exp]]<br />
*[[#floor|floor]]<br />
*[[#j|j]]<br />
*[[#jr|jr]]<br />
*[[#l|l]]<br />
*[[#log|log]]<br />
*[[#ls|ls]]<br />
*[[#max|max]]<br />
*[[#min|min]]<br />
*[[#mod|mod]]<br />
*[[#move|move]]<br />
*[[#mul|mul]]<br />
*[[#nor|nor]]<br />
*[[#or|or]]<br />
*[[#rand|rand]]<br />
*[[#round|round]]<br />
*[[#s|s]]<br />
*[[#slt|slt]]<br />
*[[#sqrt|sqrt]]<br />
*[[#sub|sub]]<br />
*[[#trunc|trunc]]<br />
*[[#xor|xor]]xor<br />
*[[#yield|yield]]<br />
*[[##|#]]<br />
</div><br />
<br />
<br />
|+Device Variables <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#Activate|Activate]]<br />
*[[#AirRelease|AirRelease]]<br />
*[[#Charge|Charge]]<br />
*[[#CLearMemory|CLearMemory]]<br />
*[[#Color|Color]]<br />
*[[#CompletionRatio|CompletionRatio]]<br />
*[[#ElevatorLevel|ElevatorLevel]]<br />
*[[#ElevatorSpeed|ElevatorSpeed]]<br />
*[[#Error|Error]]<br />
*[[#ExportCount|ExportCount]]<br />
*[[#Filtration|Filtration]]<br />
*[[#Harvest|Harvest]]<br />
*[[#Horizontal|Horizontal]]<br />
*[[#HorizontalRatio|HorizontalRatio]]<br />
*[[#Idle|Idle]]<br />
*[[#ImportCount|ImportCount]]<br />
*[[#Lock|Lock]]<br />
*[[#Maximum|Maximum]]<br />
*[[#Mode|Mode]]<br />
*[[#On|On]]<br />
*[[#Open|Open]]<br />
*[[#Output|Output]]<br />
*[[#Plant|Plant]]<br />
*[[#PositionX|PositionX]]<br />
*[[#PositionY|PositionY]]<br />
*[[#PositionZ|PositionZ]]<br />
*[[#Power|Power]]<br />
*[[#PowerActual|PowerActual]]<br />
*[[#PowerPotential|PowerPotential]]<br />
*[[#PowerRequired|PowerRequired]]<br />
*[[#Pressure|Pressure]]<br />
*[[#PressureExternal|PressureExternal]]<br />
*[[#PressureInteral|PressureInteral]]<br />
*[[#PressureSetting|PressureSetting]]<br />
*[[#Quantity|Quantity]]<br />
*[[#Ratio|Ratio]]<br />
*[[#RatioCarbonDioxide|RatioCarbonDioxide]]<br />
*[[#RatioNitrogen|RatioNitrogen]]<br />
*[[#RatioOxygen|RatioOxygen]]<br />
*[[#RatioPollutant|RatioPollutant]]<br />
*[[#RatioVolatiles|RatioVolatiles]]<br />
*[[#RatioWater|RatioWater]]<br />
*[[#Reagents|Reagents]]<br />
*[[#RecipeHash|RecipeHash]]<br />
*[[#RequestHash|RequestHash]]<br />
*[[#RequiredPower|RequiredPower]]<br />
*[[#Setting|Setting]]<br />
*[[#SolarAngle|SolarAngle]]<br />
*[[#Temperature|Temperature]]<br />
*[[#TemperatureSettings|TemperatureSettings]]<br />
*[[#TotalMoles|TotalMoles]]<br />
*[[#VelocityMagnitude|VelocityMagnitude]]<br />
*[[#VelocityRelativeX|VelocityRelativeX]]<br />
*[[#VelocityRelativeY|VelocityRelativeY]]<br />
*[[#VelocityRelativeZ|VelocityRelativeZ]]<br />
*[[#Vertical|Vertical]]<br />
*[[#VerticalRatio|VerticalRatio]]<br />
*[[#Volume|Volume]]<br />
<br />
<br />
<br />
</div><br />
<br />
|+Slot Variables <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#Occupied|Occupied]]<br />
*[[#OccupantHash|OccupantHash]]<br />
*[[#Quantity|Quantity]]<br />
*[[#Damage|Damage]]<br />
*[[#Efficiency|Efficiency]]<br />
*[[#Health|Health]]<br />
*[[#Growth|Growth]]<br />
*[[#Pressure|Pressure]]<br />
*[[#Temperature|Temperature]]<br />
*[[#Charge|Charge]]<br />
*[[#ChargeRatio|ChargeRatio]]<br />
*[[#Class|Class]]<br />
*[[#PressureWaste|PressureWaste]]<br />
*[[#PressureAir|PressureAir]]<br />
*[[#MaxQuantity|MaxQuantity]]<br />
*[[#Mature|Mature]]<br />
</div><br />
<br />
|}</div>Legolegshttps://stationeers-wiki.com/index.php?title=MIPS&diff=9690MIPS2020-10-05T21:32:41Z<p>Legolegs: /* Links */</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
=MIPS scripting language for IC10 housings / chips=<br />
<br />
<pre><br />
# Text after a # will be ignored to the end of the line. The amount of white<br />
# space between arguments isn't important, but new lines start a new command.<br />
</pre><br />
<br />
<br><br />
==Functions==<br />
----<br />
<br />
<div id="alias"></div><br />
;alias<br />
: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)<br />
<code>alias vTemperature r0</code><br />
<br><br />
<code>alias dAutoHydro1 d0</code><br />
<br />
<div id="move"></div><br />
;move <br />
:d s # stores the value of s in d<br />
<code>move r0 42 # Store 42 in register 0</code><br />
<br />
<div id="add"></div><br />
;add <br />
:d s t # calculates s + t and stores the result in d<br />
<code>add r0 r1 1 # add 1 to r1 and store the result as r0</code><br />
<br><br />
<code>add r0 r0 1 # increment r0 by one</code><br />
<div id="sub"></div><br />
;sub <br />
:d s t # calculates s - t and stores the result in d<br />
<div id="mul"></div><br />
;mul <br />
:d s t # calculates s * t and stores the result in d<br />
<div id="div"></div><br />
;div <br />
:d s t # calculates s / t and stores the result in d<br />
<div id="mod"></div><br />
;mod <br />
:d s t <br />
::# calculates s mod t and stores the result in d. Note this<br />
::# doesn't behave like the % operator - the result will be <br />
::# positive even if the either of the operands are negative<br />
<br />
<div id="slt"></div><br />
;slt <br />
:d s t # stores 1 in d if s < t, 0 otherwise<br />
<br />
<div id="sqrt"></div><br />
;sqrt <br />
:d s # calculates sqrt(s) and stores the result in d<br />
<div id="round"></div><br />
;round <br />
:d s # finds the rounded value of s and stores the result in d<br />
<div id="trunc"></div><br />
;trunc <br />
:d s # finds the truncated value of s and stores the result in d<br />
<div id="ceil"></div><br />
;ceil <br />
: d s # calculates the ceiling of s and stores the result in d<br />
<div id="floor"></div><br />
;floor <br />
: d s # calculates the floor of s and stores the result in d<br />
<br />
<div id="max"></div><br />
;max <br />
: d s t # calculates the maximum of s and t and stores the result in d<br />
<div id="min"></div><br />
;min <br />
: d s t # calculates the minimum of s and t and stores the result in d<br />
<div id="abs"></div><br />
;abs <br />
: d s # calculates the absolute value of s and stores the result in d<br />
<div id="log"></div><br />
;log <br />
: d s # calculates the natural logarithm of s and stores the result<br />
::# in d<br />
<div id="exp"></div><br />
;exp <br />
: d s # calculates the exponential of s and stores the result in d<br />
<div id="rand"></div><br />
;rand <br />
: d # selects a random number uniformly at random between 0 and 1<br />
::# inclusive and stores the result in d<br />
<br />
::# boolean arithmetic uses the C convention that 0 is false and any non-zero<br />
::# value is true.<br />
<div id="and"></div><br />
;and <br />
: d s t # stores 1 in d if both s and t have non-zero values,<br />
::# 0 otherwise<br />
<div id="or"></div><br />
;or <br />
: d s t # stores 1 in d if either s or t have non-zero values,<br />
::# 0 otherwise<br />
<div id="xor"></div><br />
;xor <br />
: d s t # stores 1 in d if exactly one of s and t are non-zero,<br />
::# 0 otherwise<br />
<div id="nor"></div><br />
;nor <br />
: d s t # stores 1 in d if both s and t equal zero, 0 otherwise<br />
<br />
<br />
# Lines are numbered starting at zero<br />
<div id="j"></div><br />
;j<br />
: a # jumps to line a.<br />
<div id="bltz"></div><br />
;bltz<br />
: s a # jumps to line a if s < 0<br />
<div id="blez"></div><br />
;blez <br />
: s a # jumps to line a if s <= 0<br />
<br />
<div id="bgez"></div><br />
;bgez <br />
: s a # jumps to line a if s >= 0<br />
<div id="bgtz"></div><br />
;bgtz<br />
: s a # jumps to line a if s > 0<br />
<div id="beq"></div><br />
;beq <br />
: s t a # jumps to line a if s == t<br />
<div id="bne"></div><br />
;bne <br />
: s t a # jumps to line a if s != t<br />
<div id="bdseal"></div><br />
;bdseal<br />
: d? a(r?|num) # Jump execution to line a and store current line number if device d? is set.<br />
<code>bdseal d0 32 #Store line number and jump to line 32 if d0 is assigned.</code><br />
<BR><br />
<code>bdseal dThisVictim HarvestCrop #Store line in ra and jump to sub HarvestCrop if device dThisVictim is assigned.</code><br />
<br />
<div id="yield"></div><br />
;yield <br />
: # ceases code execution for this power tick<br />
<br />
<div id="#"></div><br />
; #<br />
: # The following text will be ignored during compiling; use this to create comments.<br />
<br />
<br />
== Conditional functions cheatsheet ==<br />
{| class="wikitable"<br />
|-<br />
! suffix !! description !! branch to line !! branch and store return address !! relative jump to line !! set register<br />
|-<br />
| prefix: || || b- || b-al || br- || s-<br />
|-<br />
| || unconditional || j || jal || jr || <br />
|-<br />
| -eq || if a == b || beq || beqal || breq || seq<br />
|-<br />
| -eqz || if a == 0 || beqz || beqzal || breqz || seqz<br />
|-<br />
| -ge || if a >= b || bge || bgeal || brge || sge<br />
|-<br />
| -gez || if a >= 0 || bgez || bgezal || brgez || sgez<br />
|-<br />
| -gt || if a > b || bgt || bgtal || brgt || sgt<br />
|-<br />
| -gtz || if a > 0 || bgtz || bgtzal || brgtz || sgtz<br />
|-<br />
| -le || if a <= b || ble || bleal || brle || sle<br />
|-<br />
| -lez || if a <= 0 || blez || blezal || brlez || slez<br />
|-<br />
| -lt || if a < b || blt || bltal || brlt || slt<br />
|-<br />
| -ltz || if a < 0 || bltz || bltzal || brltz || sltz<br />
|-<br />
| -ne || if a != b || bne || bneal || brne || sne<br />
|-<br />
| -nez || if a != 0 || bnez || bnezal || brnez || snez<br />
|-<br />
| -dns || if device d is not set || bdns || bdnsal || brdns || sdns<br />
|-<br />
| -dse || if device d is set || bdse || bdseal || brdse || sdse<br />
|-<br />
| -ap || if a approximately equals b || bap || bapal || brap || sap<br />
|-<br />
| -apz || if a approximately equals 0 || bapz || bapzal || brapz || sapz<br />
|-<br />
| -na || if a not approximately equals b || bna || bnaal || brna || sna<br />
|-<br />
| -naz || if a not approximately equals 0 || bnaz || bnazal || brnaz || snaz<br />
|}<br />
<br />
All <code>b-</code> commands require target line as last argument, all <code>s-</code> commands require register to store result as first argument.<br />
<br />
All approximate functions require additional argument denoting how close two numbers need to be considered equal. E.g.: <code>sap r0 100 101 0.01</code> will consider 100 and 101 almost equal (not more than 1%=0.01 different) and will set r0 to 1. The exact formula is <code>if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8)</code> for <code>-ap</code> and is similar for other approximate functions.<br />
<br />
==Device Variables==<br />
-----<br />
<br />
<div id="Activate"></div><br />
;Activate<br />
:1 if device is activated (usually means running), otherwise 0<br />
:<code>l r0 d0 Activate # sets r0 to 1 if on or 0 of off</code><br />
<br />
<div id="AirRelease"></div><br />
;AirRelease<br />
<div id="Charge"></div><br />
;Charge<br />
: The current charge the device has.<br />
<div id="CLearMemory"></div><br />
;CLearMemory<br />
: When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when triggered.<br />
<div id="Color"></div><br />
;Color<br />
<div id="CompletionRatio"></div><br />
;CompletionRatio<br />
<div id="ElevatorLevel"></div><br />
;ElevatorLevel<br />
<div id="ElevatorSpeed"></div><br />
;ElevatorSpeed<br />
<div id="Error"></div><br />
;Error<br />
: 1 if device is in error state, otherwise 0<br />
<div id="ExportCount"></div><br />
;ExportCount<br />
: How many items exporfted since last ClearMemory.<br />
<div id="Filtration"></div><br />
;Filtration<br />
: The current state of the filtration system. For example filtration = 1 for a Hardsuit when filtration is On.<br />
<div id="Harvest"></div><br />
;Harvest<br />
: Performs the harvesting action for any plant based machinery.<br />
: <code>s d0 Harvest 1 # Performs 1 harvest action on device d0</code><br />
<div id="Horizontal"></div><br />
;Horizontal<br />
<div id="HorizontalRatio"></div><br />
;HorizontalRatio<br />
<div id="Idle"></div><br />
;Idle<br />
<div id="ImportCount"></div><br />
;ImportCount<br />
<div id="Lock"></div><br />
;Lock<br />
<div id="Maximum"></div><br />
;Maximum<br />
<div id="Mode"></div><br />
;Mode<br />
<div id="On"></div><br />
;On<br />
<div id="Open"></div><br />
;Open<br />
<div id="Output"></div><br />
;Output<br />
<div id="Plant"></div><br />
;Plant<br />
: Performs the planting operation for any plant based machinery.<br />
: <code>s d0 Plant 1 # Plants one crop in device d0</code><br />
<div id="PositionX"></div><br />
;PositionX<br />
<div id="PositionY"></div><br />
;PositionY<br />
<div id="PositionZ"></div><br />
;PositionZ<br />
<div id="Power"></div><br />
;Power<br />
<div id="PowerActual"></div><br />
;PowerActual<br />
<div id="PowerPotential"></div><br />
;PowerPotential<br />
<div id="PowerRequired"></div><br />
;PowerRequired<br />
<div id="Pressure"></div><br />
;Pressure<br />
<div id="PressureExternal"></div><br />
;PressureExternal<br />
<div id="PressureInteral"></div><br />
;PressureInteral<br />
<div id="PressureSetting"></div><br />
;PressureSetting<br />
<div id="Quantity"></div><br />
;Quantity<br />
: Total quantity in the device.<br />
<div id="Ratio"></div><br />
;Ratio<br />
: Context specific value depending on device, 0 to 1 based ratio.<br />
<div id="RatioCarbonDioxide"></div><br />
;RatioCarbonDioxide<br />
<div id="RatioNitrogen"></div><br />
;RatioNitrogen<br />
: The ratio of nitrogen in device atmosphere.<br />
<div id="RatioOxygen"></div><br />
;RatioOxygen<br />
: The ratio of oxygen in device atmosphere.<br />
<div id="RatioPollutant"></div><br />
;RatioPollutant<br />
: The ratio of pollutant in device atmosphere.<br />
<div id="RatioVolatiles"></div><br />
;RatioVolatiles<br />
: The ratio of volatiles in device atmosphere.<br />
<div id="RatioWater"></div><br />
;RatioWater<br />
: The ratio of water in device atmosphere.<br />
<div id="Reagents"></div><br />
;Reagents<br />
<div id="RecipeHash"></div><br />
;RecipeHash<br />
<div id="RequestHash"></div><br />
;RequestHash<br />
<div id="RequiredPower"></div><br />
;RequiredPower<br />
<div id="Setting"></div><br />
;Setting<br />
<div id="SolarAngle"></div><br />
;SolarAngle<br />
: Solar angle of the device.<br />
: <code>l r0 d0 SolarAngle # Sets r0 to the solar angle of d0.</code><br />
<div id="Temperature"></div><br />
;Temperature<br />
<div id="TemperatureSettings"></div><br />
;TemperatureSettings<br />
<div id="TotalMoles"></div><br />
;TotalMoles<br />
<div id="VelocityMagnitude"></div><br />
;VelocityMagnitude<br />
<div id="VelocityRelativeX"></div><br />
;VelocityRelativeX<br />
<div id="VelocityRelativeY"></div><br />
;VelocityRelativeY<br />
<div id="VelocityRelativeZ"></div><br />
;VelocityRelativeZ<br />
<div id="Vertical"></div><br />
;Vertical<br />
: Vertical setting of the device.<br />
<div id="VerticalRatio"></div><br />
;VerticalRatio<br />
: Ratio of vertical setting for device.<br />
<div id="Volume"></div><br />
;Volume<br />
: Returns the device atmosphere volume<br />
<br />
<br />
<br />
<br />
<br />
==Slot Variables==<br />
In general (always?) slots are assigned as follows.<br />
:Slot 0: Import<br />
:Slot 1: Export<br />
:Slot 2: Inside Machine<br />
-----<br />
<br />
<br />
<div id="Occupied"></div><br />
;Occupied<br />
:<code>ls r0 d0 2 Occupied #Stores 1 in r0 if d0 has more seeds</code><br />
:<code>ls vOccupied dThisVictim 2 Occupied #stores 1 in vOccupied if dThisVictim has more seeds</code><br />
<div id="OccupantHash"></div><br />
;OccupantHash<br />
<div id="Quantity"></div><br />
;Quantity<br />
<div id="Damage"></div><br />
;Damage<br />
<div id="Efficiency"></div><br />
;Efficiency<br />
<div id="Health"></div><br />
;Health<br />
<div id="Growth"></div><br />
;Growth<br />
:<code>ls r0 d0 0 Growth # Store the numerical growth stage of d0 in r0</code> <br />
<div id="Pressure"></div><br />
;Pressure<br />
<div id="Temperature"></div><br />
;Temperature<br />
<div id="Charge"></div><br />
;Charge<br />
<div id="ChargeRatio"></div><br />
;ChargeRatio<br />
<div id="Class"></div><br />
;Class<br />
<div id="PressureWaste"></div><br />
;PressureWaste<br />
<div id="PressureAir"></div><br />
;PressureAir<br />
<div id="MaxQuantity"></div><br />
;MaxQuantity<br />
<br />
<div id="Mature"></div><br />
;Mature<br />
:<code>ls r0 d0 0 Mature # Store 1 in r0 if d0 has a mature crop</code><br />
:<code>ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop</code><br />
<br />
==Examples==<br />
-----<br />
<br />
<br />
====This example script automates autohydro units and powers the lights off during the day when they're not needed. (Hit Expand)====<br />
Uses aliases, sub-routines and comments to minimize lines of code and adaptability.<br />
<div class="mw-collapsible mw-collapsed" data-expandtext="{{int:Expand Sample AutoHydro Script}}" data-collapsetext="{{int:Collapse Sample AutoHydro Script}}"><br />
<pre><br />
alias vMature r0<br />
alias vOccupied r1<br />
alias isDayLight r2<br />
alias isOccupied r3<br />
alias dSensor d5<br />
<br />
<br />
#start of Program Loop<br />
start:<br />
l isDayLight dSensor Activate #Check if it's daytime or not.<br />
<br />
# For each device, harvest, plant, powerdown, then power on depending on conditions.<br />
alias dThisVictim d0 #Begin processing device 0<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d1 #Begin processing device 1<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d2 #Begin processing device 2<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d3 #Begin processing device 3<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d4 #Begin processing device 4<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
#Can't do a D5 because that's our sensor.<br />
<br />
j start #Return to the beginning of the program loop. (Yields here may save processing power)<br />
<br />
<br />
HarvestCrop:<br />
ls vMature dThisVictim 0 Mature<br />
blez vMature ra #If the crop is not mature, return<br />
s dThisVictim Harvest 1 #If the crop is mature, harvest it (one).<br />
j ra #return<br />
<br />
<br />
PlantCrop:<br />
ls vOccupied dThisVictim 2 Occupied #seeds to plant<br />
blez vOccupied ra #If the machine has no seeds to plant, return.<br />
ls vOccupied dThisVictim 0 Occupied #something growing<br />
bgtz vOccupied ra # If the crop plot is occupied, return.<br />
s dThisVictim Plant 1 # if we made it this far, plant the crop<br />
j ra #return<br />
<br />
<br />
<br />
PowerDown:<br />
s dThisVictim On 0 #Power the machine down.<br />
<br />
j ra #Jump to line we came from<br />
<br />
<br />
TurnitOn:<br />
s dThisVictim On 1 #Power the machine up<br />
j ra<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
</div><br />
<br><br />
-----<br />
<br />
<BR><br />
This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).<br />
<br />
<pre><br />
move r0 0 # Line 0: move the value 0 to register0<br />
sub r1 r0 3 # Line 1: subtract 3 from the value in r0 and write it to r1<br />
bltz r1 4 # Line 2: jump to line 4 if r1 < 0 (skip the next line)<br />
move r0 0 # Line 3: move the value 0 to register0 <br />
slt o r0 1 # Line 4: if r0 < 1 write 1 to the output, otherwise 0.<br />
add r0 r0 1 # Line 5: increment r0 by 1<br />
yield # Line 6: wait until next power tick (0.5s)<br />
j 1 # Line 7: jump back to line 1 <br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
-----<br />
<br />
Example:<br />
<br />
<pre><br />
so you will do l r0 d0 SolarAngle<br />
Sorry had last args swapped<br />
That would read in the value<br />
while,<br />
s d1 Vertical r0<br />
Would write the contents of r0 into the devices 1's Vertical property<br />
additionally you can make some aliases<br />
alias SolarSensor d0<br />
l r0 SolarSensor SolarAngle<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
-----<br />
Another example:<br />
<br />
<pre><br />
Now the IC is inserted into the housing. The screws D0-D5 can be adjusted directly to the equipment (sensor, console, solar panel, etc.). The ports 'o' and 'i0-i2' have been removed. Instead, commands that directly read and write hardware parameters are added.<br />
l <register> <data_channel> <parameter><br />
reads the value of the parameter<br />
s <data_channel> <parameter> <register_or_value><br />
writes the value of the parameter<br />
ls <register> <data_channel> <slot_number> <parameter> <br />
reads the parameter value from the slot<br />
For example, <br />
l r0 d0 Horizontal<br />
<br />
s d5 Activate 1<br />
<br />
ls r3 db 0 OccupantHash<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
<br />
==Links==<br />
-----<br />
* [https://stationeering.com/tools/ic] Stationeering.com offers a programmable circuits simulator so you can develop your code without repeatedly dying in game!<br />
* [https://hastebin.com/uwuhidozun.md]<br />
* [http://www.easy68k.com/]<br />
* [https://pastebin.com/6Uw1KSRN] syntax highlighting for IC10 MIPS for KDE kwrite/kate text editor<br />
<br />
==Index==<br />
-----<br />
<br />
{|<br />
|+Functions <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#abs|abs]]<br />
*[[#add|add]]<br />
*[[#alias|alias]]<br />
*[[#and|and]]<br />
*[[#beq|beq]]<br />
*[[#bgez|bgez]]<br />
*[[#bgtz|bgtz]]<br />
*[[#blez|blez]]<br />
*[[#bltz|bltz]]<br />
*[[#bne|bne]]<br />
*[[#breq|breq]]<br />
*[[#brgez|brgez]]<br />
*[[#brgtz|brgtz]]<br />
*[[#brlez|brlez]]<br />
*[[#brltz|brltz]]<br />
*[[#brne|brne]]<br />
*[[#ceil|cell]]<br />
*[[#div|div]]<br />
*[[#exp|exp]]<br />
*[[#floor|floor]]<br />
*[[#j|j]]<br />
*[[#jr|jr]]<br />
*[[#l|l]]<br />
*[[#log|log]]<br />
*[[#ls|ls]]<br />
*[[#max|max]]<br />
*[[#min|min]]<br />
*[[#mod|mod]]<br />
*[[#move|move]]<br />
*[[#mul|mul]]<br />
*[[#nor|nor]]<br />
*[[#or|or]]<br />
*[[#rand|rand]]<br />
*[[#round|round]]<br />
*[[#s|s]]<br />
*[[#slt|slt]]<br />
*[[#sqrt|sqrt]]<br />
*[[#sub|sub]]<br />
*[[#trunc|trunc]]<br />
*[[#xor|xor]]xor<br />
*[[#yield|yield]]<br />
*[[##|#]]<br />
</div><br />
<br />
<br />
|+Device Variables <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#Activate|Activate]]<br />
*[[#AirRelease|AirRelease]]<br />
*[[#Charge|Charge]]<br />
*[[#CLearMemory|CLearMemory]]<br />
*[[#Color|Color]]<br />
*[[#CompletionRatio|CompletionRatio]]<br />
*[[#ElevatorLevel|ElevatorLevel]]<br />
*[[#ElevatorSpeed|ElevatorSpeed]]<br />
*[[#Error|Error]]<br />
*[[#ExportCount|ExportCount]]<br />
*[[#Filtration|Filtration]]<br />
*[[#Harvest|Harvest]]<br />
*[[#Horizontal|Horizontal]]<br />
*[[#HorizontalRatio|HorizontalRatio]]<br />
*[[#Idle|Idle]]<br />
*[[#ImportCount|ImportCount]]<br />
*[[#Lock|Lock]]<br />
*[[#Maximum|Maximum]]<br />
*[[#Mode|Mode]]<br />
*[[#On|On]]<br />
*[[#Open|Open]]<br />
*[[#Output|Output]]<br />
*[[#Plant|Plant]]<br />
*[[#PositionX|PositionX]]<br />
*[[#PositionY|PositionY]]<br />
*[[#PositionZ|PositionZ]]<br />
*[[#Power|Power]]<br />
*[[#PowerActual|PowerActual]]<br />
*[[#PowerPotential|PowerPotential]]<br />
*[[#PowerRequired|PowerRequired]]<br />
*[[#Pressure|Pressure]]<br />
*[[#PressureExternal|PressureExternal]]<br />
*[[#PressureInteral|PressureInteral]]<br />
*[[#PressureSetting|PressureSetting]]<br />
*[[#Quantity|Quantity]]<br />
*[[#Ratio|Ratio]]<br />
*[[#RatioCarbonDioxide|RatioCarbonDioxide]]<br />
*[[#RatioNitrogen|RatioNitrogen]]<br />
*[[#RatioOxygen|RatioOxygen]]<br />
*[[#RatioPollutant|RatioPollutant]]<br />
*[[#RatioVolatiles|RatioVolatiles]]<br />
*[[#RatioWater|RatioWater]]<br />
*[[#Reagents|Reagents]]<br />
*[[#RecipeHash|RecipeHash]]<br />
*[[#RequestHash|RequestHash]]<br />
*[[#RequiredPower|RequiredPower]]<br />
*[[#Setting|Setting]]<br />
*[[#SolarAngle|SolarAngle]]<br />
*[[#Temperature|Temperature]]<br />
*[[#TemperatureSettings|TemperatureSettings]]<br />
*[[#TotalMoles|TotalMoles]]<br />
*[[#VelocityMagnitude|VelocityMagnitude]]<br />
*[[#VelocityRelativeX|VelocityRelativeX]]<br />
*[[#VelocityRelativeY|VelocityRelativeY]]<br />
*[[#VelocityRelativeZ|VelocityRelativeZ]]<br />
*[[#Vertical|Vertical]]<br />
*[[#VerticalRatio|VerticalRatio]]<br />
*[[#Volume|Volume]]<br />
<br />
<br />
<br />
</div><br />
<br />
|+Slot Variables <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#Occupied|Occupied]]<br />
*[[#OccupantHash|OccupantHash]]<br />
*[[#Quantity|Quantity]]<br />
*[[#Damage|Damage]]<br />
*[[#Efficiency|Efficiency]]<br />
*[[#Health|Health]]<br />
*[[#Growth|Growth]]<br />
*[[#Pressure|Pressure]]<br />
*[[#Temperature|Temperature]]<br />
*[[#Charge|Charge]]<br />
*[[#ChargeRatio|ChargeRatio]]<br />
*[[#Class|Class]]<br />
*[[#PressureWaste|PressureWaste]]<br />
*[[#PressureAir|PressureAir]]<br />
*[[#MaxQuantity|MaxQuantity]]<br />
*[[#Mature|Mature]]<br />
</div><br />
<br />
|}</div>Legolegshttps://stationeers-wiki.com/index.php?title=MIPS&diff=9683MIPS2020-09-27T21:07:21Z<p>Legolegs: /* Functions */</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
=MIPS scripting language for IC10 housings / chips=<br />
<br />
<pre><br />
# Text after a # will be ignored to the end of the line. The amount of white<br />
# space between arguments isn't important, but new lines start a new command.<br />
</pre><br />
<br />
<br><br />
==Functions==<br />
----<br />
<br />
<div id="alias"></div><br />
;alias<br />
: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)<br />
<code>alias vTemperature r0</code><br />
<br><br />
<code>alias dAutoHydro1 d0</code><br />
<br />
<div id="move"></div><br />
;move <br />
:d s # stores the value of s in d<br />
<code>move r0 42 # Store 42 in register 0</code><br />
<br />
<div id="add"></div><br />
;add <br />
:d s t # calculates s + t and stores the result in d<br />
<code>add r0 r1 1 # add 1 to r1 and store the result as r0</code><br />
<br><br />
<code>add r0 r0 1 # increment r0 by one</code><br />
<div id="sub"></div><br />
;sub <br />
:d s t # calculates s - t and stores the result in d<br />
<div id="mul"></div><br />
;mul <br />
:d s t # calculates s * t and stores the result in d<br />
<div id="div"></div><br />
;div <br />
:d s t # calculates s / t and stores the result in d<br />
<div id="mod"></div><br />
;mod <br />
:d s t <br />
::# calculates s mod t and stores the result in d. Note this<br />
::# doesn't behave like the % operator - the result will be <br />
::# positive even if the either of the operands are negative<br />
<br />
<div id="slt"></div><br />
;slt <br />
:d s t # stores 1 in d if s < t, 0 otherwise<br />
<br />
<div id="sqrt"></div><br />
;sqrt <br />
:d s # calculates sqrt(s) and stores the result in d<br />
<div id="round"></div><br />
;round <br />
:d s # finds the rounded value of s and stores the result in d<br />
<div id="trunc"></div><br />
;trunc <br />
:d s # finds the truncated value of s and stores the result in d<br />
<div id="ceil"></div><br />
;ceil <br />
: d s # calculates the ceiling of s and stores the result in d<br />
<div id="floor"></div><br />
;floor <br />
: d s # calculates the floor of s and stores the result in d<br />
<br />
<div id="max"></div><br />
;max <br />
: d s t # calculates the maximum of s and t and stores the result in d<br />
<div id="min"></div><br />
;min <br />
: d s t # calculates the minimum of s and t and stores the result in d<br />
<div id="abs"></div><br />
;abs <br />
: d s # calculates the absolute value of s and stores the result in d<br />
<div id="log"></div><br />
;log <br />
: d s # calculates the natural logarithm of s and stores the result<br />
::# in d<br />
<div id="exp"></div><br />
;exp <br />
: d s # calculates the exponential of s and stores the result in d<br />
<div id="rand"></div><br />
;rand <br />
: d # selects a random number uniformly at random between 0 and 1<br />
::# inclusive and stores the result in d<br />
<br />
::# boolean arithmetic uses the C convention that 0 is false and any non-zero<br />
::# value is true.<br />
<div id="and"></div><br />
;and <br />
: d s t # stores 1 in d if both s and t have non-zero values,<br />
::# 0 otherwise<br />
<div id="or"></div><br />
;or <br />
: d s t # stores 1 in d if either s or t have non-zero values,<br />
::# 0 otherwise<br />
<div id="xor"></div><br />
;xor <br />
: d s t # stores 1 in d if exactly one of s and t are non-zero,<br />
::# 0 otherwise<br />
<div id="nor"></div><br />
;nor <br />
: d s t # stores 1 in d if both s and t equal zero, 0 otherwise<br />
<br />
<br />
# Lines are numbered starting at zero<br />
<div id="j"></div><br />
;j<br />
: a # jumps to line a.<br />
<div id="bltz"></div><br />
;bltz<br />
: s a # jumps to line a if s < 0<br />
<div id="blez"></div><br />
;blez <br />
: s a # jumps to line a if s <= 0<br />
<br />
<div id="bgez"></div><br />
;bgez <br />
: s a # jumps to line a if s >= 0<br />
<div id="bgtz"></div><br />
;bgtz<br />
: s a # jumps to line a if s > 0<br />
<div id="beq"></div><br />
;beq <br />
: s t a # jumps to line a if s == t<br />
<div id="bne"></div><br />
;bne <br />
: s t a # jumps to line a if s != t<br />
<div id="bdseal"></div><br />
;bdseal<br />
: d? a(r?|num) # Jump execution to line a and store current line number if device d? is set.<br />
<code>bdseal d0 32 #Store line number and jump to line 32 if d0 is assigned.</code><br />
<BR><br />
<code>bdseal dThisVictim HarvestCrop #Store line in ra and jump to sub HarvestCrop if device dThisVictim is assigned.</code><br />
<br />
<div id="yield"></div><br />
;yield <br />
: # ceases code execution for this power tick<br />
<br />
<div id="#"></div><br />
; #<br />
: # The following text will be ignored during compiling; use this to create comments.<br />
<br />
<br />
== Conditional functions cheatsheet ==<br />
{| class="wikitable"<br />
|-<br />
! suffix !! description !! branch to line !! branch and store return address !! relative jump to line !! set register<br />
|-<br />
| prefix: || || b- || b-al || br- || s-<br />
|-<br />
| || unconditional || j || jal || jr || <br />
|-<br />
| -eq || if a == b || beq || beqal || breq || seq<br />
|-<br />
| -eqz || if a == 0 || beqz || beqzal || breqz || seqz<br />
|-<br />
| -ge || if a >= b || bge || bgeal || brge || sge<br />
|-<br />
| -gez || if a >= 0 || bgez || bgezal || brgez || sgez<br />
|-<br />
| -gt || if a > b || bgt || bgtal || brgt || sgt<br />
|-<br />
| -gtz || if a > 0 || bgtz || bgtzal || brgtz || sgtz<br />
|-<br />
| -le || if a <= b || ble || bleal || brle || sle<br />
|-<br />
| -lez || if a <= 0 || blez || blezal || brlez || slez<br />
|-<br />
| -lt || if a < b || blt || bltal || brlt || slt<br />
|-<br />
| -ltz || if a < 0 || bltz || bltzal || brltz || sltz<br />
|-<br />
| -ne || if a != b || bne || bneal || brne || sne<br />
|-<br />
| -nez || if a != 0 || bnez || bnezal || brnez || snez<br />
|-<br />
| -dns || if device d is not set || bdns || bdnsal || brdns || sdns<br />
|-<br />
| -dse || if device d is set || bdse || bdseal || brdse || sdse<br />
|-<br />
| -ap || if a approximately equals b || bap || bapal || brap || sap<br />
|-<br />
| -apz || if a approximately equals 0 || bapz || bapzal || brapz || sapz<br />
|-<br />
| -na || if a not approximately equals b || bna || bnaal || brna || sna<br />
|-<br />
| -naz || if a not approximately equals 0 || bnaz || bnazal || brnaz || snaz<br />
|}<br />
<br />
All <code>b-</code> commands require target line as last argument, all <code>s-</code> commands require register to store result as first argument.<br />
<br />
All approximate functions require additional argument denoting how close two numbers need to be considered equal. E.g.: <code>sap r0 100 101 0.01</code> will consider 100 and 101 almost equal (not more than 1%=0.01 different) and will set r0 to 1. The exact formula is <code>if abs(a - b) <= max(c * max(abs(a), abs(b)), float.epsilon * 8)</code> for <code>-ap</code> and is similar for other approximate functions.<br />
<br />
==Device Variables==<br />
-----<br />
<br />
<div id="Activate"></div><br />
;Activate<br />
:1 if device is activated (usually means running), otherwise 0<br />
:<code>l r0 d0 Activate # sets r0 to 1 if on or 0 of off</code><br />
<br />
<div id="AirRelease"></div><br />
;AirRelease<br />
<div id="Charge"></div><br />
;Charge<br />
: The current charge the device has.<br />
<div id="CLearMemory"></div><br />
;CLearMemory<br />
: When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when triggered.<br />
<div id="Color"></div><br />
;Color<br />
<div id="CompletionRatio"></div><br />
;CompletionRatio<br />
<div id="ElevatorLevel"></div><br />
;ElevatorLevel<br />
<div id="ElevatorSpeed"></div><br />
;ElevatorSpeed<br />
<div id="Error"></div><br />
;Error<br />
: 1 if device is in error state, otherwise 0<br />
<div id="ExportCount"></div><br />
;ExportCount<br />
: How many items exporfted since last ClearMemory.<br />
<div id="Filtration"></div><br />
;Filtration<br />
: The current state of the filtration system. For example filtration = 1 for a Hardsuit when filtration is On.<br />
<div id="Harvest"></div><br />
;Harvest<br />
: Performs the harvesting action for any plant based machinery.<br />
: <code>s d0 Harvest 1 # Performs 1 harvest action on device d0</code><br />
<div id="Horizontal"></div><br />
;Horizontal<br />
<div id="HorizontalRatio"></div><br />
;HorizontalRatio<br />
<div id="Idle"></div><br />
;Idle<br />
<div id="ImportCount"></div><br />
;ImportCount<br />
<div id="Lock"></div><br />
;Lock<br />
<div id="Maximum"></div><br />
;Maximum<br />
<div id="Mode"></div><br />
;Mode<br />
<div id="On"></div><br />
;On<br />
<div id="Open"></div><br />
;Open<br />
<div id="Output"></div><br />
;Output<br />
<div id="Plant"></div><br />
;Plant<br />
: Performs the planting operation for any plant based machinery.<br />
: <code>s d0 Plant 1 # Plants one crop in device d0</code><br />
<div id="PositionX"></div><br />
;PositionX<br />
<div id="PositionY"></div><br />
;PositionY<br />
<div id="PositionZ"></div><br />
;PositionZ<br />
<div id="Power"></div><br />
;Power<br />
<div id="PowerActual"></div><br />
;PowerActual<br />
<div id="PowerPotential"></div><br />
;PowerPotential<br />
<div id="PowerRequired"></div><br />
;PowerRequired<br />
<div id="Pressure"></div><br />
;Pressure<br />
<div id="PressureExternal"></div><br />
;PressureExternal<br />
<div id="PressureInteral"></div><br />
;PressureInteral<br />
<div id="PressureSetting"></div><br />
;PressureSetting<br />
<div id="Quantity"></div><br />
;Quantity<br />
: Total quantity in the device.<br />
<div id="Ratio"></div><br />
;Ratio<br />
: Context specific value depending on device, 0 to 1 based ratio.<br />
<div id="RatioCarbonDioxide"></div><br />
;RatioCarbonDioxide<br />
<div id="RatioNitrogen"></div><br />
;RatioNitrogen<br />
: The ratio of nitrogen in device atmosphere.<br />
<div id="RatioOxygen"></div><br />
;RatioOxygen<br />
: The ratio of oxygen in device atmosphere.<br />
<div id="RatioPollutant"></div><br />
;RatioPollutant<br />
: The ratio of pollutant in device atmosphere.<br />
<div id="RatioVolatiles"></div><br />
;RatioVolatiles<br />
: The ratio of volatiles in device atmosphere.<br />
<div id="RatioWater"></div><br />
;RatioWater<br />
: The ratio of water in device atmosphere.<br />
<div id="Reagents"></div><br />
;Reagents<br />
<div id="RecipeHash"></div><br />
;RecipeHash<br />
<div id="RequestHash"></div><br />
;RequestHash<br />
<div id="RequiredPower"></div><br />
;RequiredPower<br />
<div id="Setting"></div><br />
;Setting<br />
<div id="SolarAngle"></div><br />
;SolarAngle<br />
: Solar angle of the device.<br />
: <code>l r0 d0 SolarAngle # Sets r0 to the solar angle of d0.</code><br />
<div id="Temperature"></div><br />
;Temperature<br />
<div id="TemperatureSettings"></div><br />
;TemperatureSettings<br />
<div id="TotalMoles"></div><br />
;TotalMoles<br />
<div id="VelocityMagnitude"></div><br />
;VelocityMagnitude<br />
<div id="VelocityRelativeX"></div><br />
;VelocityRelativeX<br />
<div id="VelocityRelativeY"></div><br />
;VelocityRelativeY<br />
<div id="VelocityRelativeZ"></div><br />
;VelocityRelativeZ<br />
<div id="Vertical"></div><br />
;Vertical<br />
: Vertical setting of the device.<br />
<div id="VerticalRatio"></div><br />
;VerticalRatio<br />
: Ratio of vertical setting for device.<br />
<div id="Volume"></div><br />
;Volume<br />
: Returns the device atmosphere volume<br />
<br />
<br />
<br />
<br />
<br />
==Slot Variables==<br />
In general (always?) slots are assigned as follows.<br />
:Slot 0: Import<br />
:Slot 1: Export<br />
:Slot 2: Inside Machine<br />
-----<br />
<br />
<br />
<div id="Occupied"></div><br />
;Occupied<br />
:<code>ls r0 d0 2 Occupied #Stores 1 in r0 if d0 has more seeds</code><br />
:<code>ls vOccupied dThisVictim 2 Occupied #stores 1 in vOccupied if dThisVictim has more seeds</code><br />
<div id="OccupantHash"></div><br />
;OccupantHash<br />
<div id="Quantity"></div><br />
;Quantity<br />
<div id="Damage"></div><br />
;Damage<br />
<div id="Efficiency"></div><br />
;Efficiency<br />
<div id="Health"></div><br />
;Health<br />
<div id="Growth"></div><br />
;Growth<br />
:<code>ls r0 d0 0 Growth # Store the numerical growth stage of d0 in r0</code> <br />
<div id="Pressure"></div><br />
;Pressure<br />
<div id="Temperature"></div><br />
;Temperature<br />
<div id="Charge"></div><br />
;Charge<br />
<div id="ChargeRatio"></div><br />
;ChargeRatio<br />
<div id="Class"></div><br />
;Class<br />
<div id="PressureWaste"></div><br />
;PressureWaste<br />
<div id="PressureAir"></div><br />
;PressureAir<br />
<div id="MaxQuantity"></div><br />
;MaxQuantity<br />
<br />
<div id="Mature"></div><br />
;Mature<br />
:<code>ls r0 d0 0 Mature # Store 1 in r0 if d0 has a mature crop</code><br />
:<code>ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop</code><br />
<br />
==Examples==<br />
-----<br />
<br />
<br />
====This example script automates autohydro units and powers the lights off during the day when they're not needed. (Hit Expand)====<br />
Uses aliases, sub-routines and comments to minimize lines of code and adaptability.<br />
<div class="mw-collapsible mw-collapsed" data-expandtext="{{int:Expand Sample AutoHydro Script}}" data-collapsetext="{{int:Collapse Sample AutoHydro Script}}"><br />
<pre><br />
alias vMature r0<br />
alias vOccupied r1<br />
alias isDayLight r2<br />
alias isOccupied r3<br />
alias dSensor d5<br />
<br />
<br />
#start of Program Loop<br />
start:<br />
l isDayLight dSensor Activate #Check if it's daytime or not.<br />
<br />
# For each device, harvest, plant, powerdown, then power on depending on conditions.<br />
alias dThisVictim d0 #Begin processing device 0<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d1 #Begin processing device 1<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d2 #Begin processing device 2<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d3 #Begin processing device 3<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d4 #Begin processing device 4<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
#Can't do a D5 because that's our sensor.<br />
<br />
j start #Return to the beginning of the program loop. (Yields here may save processing power)<br />
<br />
<br />
HarvestCrop:<br />
ls vMature dThisVictim 0 Mature<br />
blez vMature ra #If the crop is not mature, return<br />
s dThisVictim Harvest 1 #If the crop is mature, harvest it (one).<br />
j ra #return<br />
<br />
<br />
PlantCrop:<br />
ls vOccupied dThisVictim 2 Occupied #seeds to plant<br />
blez vOccupied ra #If the machine has no seeds to plant, return.<br />
ls vOccupied dThisVictim 0 Occupied #something growing<br />
bgtz vOccupied ra # If the crop plot is occupied, return.<br />
s dThisVictim Plant 1 # if we made it this far, plant the crop<br />
j ra #return<br />
<br />
<br />
<br />
PowerDown:<br />
s dThisVictim On 0 #Power the machine down.<br />
<br />
j ra #Jump to line we came from<br />
<br />
<br />
TurnitOn:<br />
s dThisVictim On 1 #Power the machine up<br />
j ra<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
</div><br />
<br><br />
-----<br />
<br />
<BR><br />
This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).<br />
<br />
<pre><br />
move r0 0 # Line 0: move the value 0 to register0<br />
sub r1 r0 3 # Line 1: subtract 3 from the value in r0 and write it to r1<br />
bltz r1 4 # Line 2: jump to line 4 if r1 < 0 (skip the next line)<br />
move r0 0 # Line 3: move the value 0 to register0 <br />
slt o r0 1 # Line 4: if r0 < 1 write 1 to the output, otherwise 0.<br />
add r0 r0 1 # Line 5: increment r0 by 1<br />
yield # Line 6: wait until next power tick (0.5s)<br />
j 1 # Line 7: jump back to line 1 <br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
-----<br />
<br />
Example:<br />
<br />
<pre><br />
so you will do l r0 d0 SolarAngle<br />
Sorry had last args swapped<br />
That would read in the value<br />
while,<br />
s d1 Vertical r0<br />
Would write the contents of r0 into the devices 1's Vertical property<br />
additionally you can make some aliases<br />
alias SolarSensor d0<br />
l r0 SolarSensor SolarAngle<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
-----<br />
Another example:<br />
<br />
<pre><br />
Now the IC is inserted into the housing. The screws D0-D5 can be adjusted directly to the equipment (sensor, console, solar panel, etc.). The ports 'o' and 'i0-i2' have been removed. Instead, commands that directly read and write hardware parameters are added.<br />
l <register> <data_channel> <parameter><br />
reads the value of the parameter<br />
s <data_channel> <parameter> <register_or_value><br />
writes the value of the parameter<br />
ls <register> <data_channel> <slot_number> <parameter> <br />
reads the parameter value from the slot<br />
For example, <br />
l r0 d0 Horizontal<br />
<br />
s d5 Activate 1<br />
<br />
ls r3 db 0 OccupantHash<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
<br />
==Links==<br />
-----<br />
* [https://stationeering.com/tools/ic] Stationeering.com offers a programmable circuits simulator so you can develop your code without repeatedly dying in game!<br />
* [https://hastebin.com/uwuhidozun.md]<br />
* [http://www.easy68k.com/]<br />
<br />
==Index==<br />
-----<br />
<br />
{|<br />
|+Functions <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#abs|abs]]<br />
*[[#add|add]]<br />
*[[#alias|alias]]<br />
*[[#and|and]]<br />
*[[#beq|beq]]<br />
*[[#bgez|bgez]]<br />
*[[#bgtz|bgtz]]<br />
*[[#blez|blez]]<br />
*[[#bltz|bltz]]<br />
*[[#bne|bne]]<br />
*[[#breq|breq]]<br />
*[[#brgez|brgez]]<br />
*[[#brgtz|brgtz]]<br />
*[[#brlez|brlez]]<br />
*[[#brltz|brltz]]<br />
*[[#brne|brne]]<br />
*[[#ceil|cell]]<br />
*[[#div|div]]<br />
*[[#exp|exp]]<br />
*[[#floor|floor]]<br />
*[[#j|j]]<br />
*[[#jr|jr]]<br />
*[[#l|l]]<br />
*[[#log|log]]<br />
*[[#ls|ls]]<br />
*[[#max|max]]<br />
*[[#min|min]]<br />
*[[#mod|mod]]<br />
*[[#move|move]]<br />
*[[#mul|mul]]<br />
*[[#nor|nor]]<br />
*[[#or|or]]<br />
*[[#rand|rand]]<br />
*[[#round|round]]<br />
*[[#s|s]]<br />
*[[#slt|slt]]<br />
*[[#sqrt|sqrt]]<br />
*[[#sub|sub]]<br />
*[[#trunc|trunc]]<br />
*[[#xor|xor]]xor<br />
*[[#yield|yield]]<br />
*[[##|#]]<br />
</div><br />
<br />
<br />
|+Device Variables <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#Activate|Activate]]<br />
*[[#AirRelease|AirRelease]]<br />
*[[#Charge|Charge]]<br />
*[[#CLearMemory|CLearMemory]]<br />
*[[#Color|Color]]<br />
*[[#CompletionRatio|CompletionRatio]]<br />
*[[#ElevatorLevel|ElevatorLevel]]<br />
*[[#ElevatorSpeed|ElevatorSpeed]]<br />
*[[#Error|Error]]<br />
*[[#ExportCount|ExportCount]]<br />
*[[#Filtration|Filtration]]<br />
*[[#Harvest|Harvest]]<br />
*[[#Horizontal|Horizontal]]<br />
*[[#HorizontalRatio|HorizontalRatio]]<br />
*[[#Idle|Idle]]<br />
*[[#ImportCount|ImportCount]]<br />
*[[#Lock|Lock]]<br />
*[[#Maximum|Maximum]]<br />
*[[#Mode|Mode]]<br />
*[[#On|On]]<br />
*[[#Open|Open]]<br />
*[[#Output|Output]]<br />
*[[#Plant|Plant]]<br />
*[[#PositionX|PositionX]]<br />
*[[#PositionY|PositionY]]<br />
*[[#PositionZ|PositionZ]]<br />
*[[#Power|Power]]<br />
*[[#PowerActual|PowerActual]]<br />
*[[#PowerPotential|PowerPotential]]<br />
*[[#PowerRequired|PowerRequired]]<br />
*[[#Pressure|Pressure]]<br />
*[[#PressureExternal|PressureExternal]]<br />
*[[#PressureInteral|PressureInteral]]<br />
*[[#PressureSetting|PressureSetting]]<br />
*[[#Quantity|Quantity]]<br />
*[[#Ratio|Ratio]]<br />
*[[#RatioCarbonDioxide|RatioCarbonDioxide]]<br />
*[[#RatioNitrogen|RatioNitrogen]]<br />
*[[#RatioOxygen|RatioOxygen]]<br />
*[[#RatioPollutant|RatioPollutant]]<br />
*[[#RatioVolatiles|RatioVolatiles]]<br />
*[[#RatioWater|RatioWater]]<br />
*[[#Reagents|Reagents]]<br />
*[[#RecipeHash|RecipeHash]]<br />
*[[#RequestHash|RequestHash]]<br />
*[[#RequiredPower|RequiredPower]]<br />
*[[#Setting|Setting]]<br />
*[[#SolarAngle|SolarAngle]]<br />
*[[#Temperature|Temperature]]<br />
*[[#TemperatureSettings|TemperatureSettings]]<br />
*[[#TotalMoles|TotalMoles]]<br />
*[[#VelocityMagnitude|VelocityMagnitude]]<br />
*[[#VelocityRelativeX|VelocityRelativeX]]<br />
*[[#VelocityRelativeY|VelocityRelativeY]]<br />
*[[#VelocityRelativeZ|VelocityRelativeZ]]<br />
*[[#Vertical|Vertical]]<br />
*[[#VerticalRatio|VerticalRatio]]<br />
*[[#Volume|Volume]]<br />
<br />
<br />
<br />
</div><br />
<br />
|+Slot Variables <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#Occupied|Occupied]]<br />
*[[#OccupantHash|OccupantHash]]<br />
*[[#Quantity|Quantity]]<br />
*[[#Damage|Damage]]<br />
*[[#Efficiency|Efficiency]]<br />
*[[#Health|Health]]<br />
*[[#Growth|Growth]]<br />
*[[#Pressure|Pressure]]<br />
*[[#Temperature|Temperature]]<br />
*[[#Charge|Charge]]<br />
*[[#ChargeRatio|ChargeRatio]]<br />
*[[#Class|Class]]<br />
*[[#PressureWaste|PressureWaste]]<br />
*[[#PressureAir|PressureAir]]<br />
*[[#MaxQuantity|MaxQuantity]]<br />
*[[#Mature|Mature]]<br />
</div><br />
<br />
|}</div>Legolegshttps://stationeers-wiki.com/index.php?title=Integrated_Circuit_(IC10)&diff=9682Integrated Circuit (IC10)2020-09-27T20:29:44Z<p>Legolegs: </p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:1--><br />
[[Category:Circuits]]<br />
[[Category:MIPS Programming]]<br />
</translate><br />
{{Itembox<br />
| name = Integrated Circuit (IC10)<br />
| image = [[File:IC 10.png|thumb|IC Housing and IC10 disassembled]]<br />
| createdwith = [[Electronics Printer]]<br />
| cost = 10 [[Gold]], 4 [[Steel]], 5 [[Electrum]], 2 [[Solder]]<br />
| stacks = No<br />
}}<br />
<br />
<translate><br />
<!--T:2--><br />
A chip that is programmed with a [[computer]]. Place the circuit in a [[Kit (IC Housing)|IC Housing]]. The [[MIPS]] language is used.<br />
</translate><br />
<br />
= Where to get programs =<br />
* Write one by yourself using the [[computer]].<br />
* Paste whatever you have found on the internet into your [[computer]].<br />
* Load from your private library program you have saved previously (even from different savegame).<br />
* Get one from Steam Workshop (first subscribe in steam, then in game it will be available in "library" on computer).<br />
<br />
= How to create programs =<br />
== You'll need ==<br />
# Basic knowledge about math and logic<br />
# Whatever you're intending to program (e.g.: cycling airlock) you must be learnt to do manually (e.g.: close doors, turn on vents, etc)<br />
# Learn the MIPS programming language. MIPS is real world low-level (i.e. close to hardware) programming language. IC10 is MIPS with some Stationeers flavor added. It is fairly simple and compact. Due to its simplicity MIPS is not suitable for big programs but you re not going to develop those in the game anyways.<br />
<br />
== How to start getting in the MIPS programing ==<br />
Get some simple program (even 10 lines will do), run it in Stationeers to see what it does and then read the text. Look into ingame editor help pages to decrypt keywords. MIPS keywords are abbreviations of English words and mostly make sense, eg. <code>beqz r0 foobar</code> means "'''B'''ranch (jump) to line labeled foobar if r0 '''EQ'''uals to '''Z'''ero".<br />
<br />
With due respect to involved people, learning programming by watching video (on youtube, etc) is waste of your time, do not do that.<br />
<br />
= How to flash program onto the IC chip =<br />
# Setup a [[computer]], wire it to power.<br />
# Insert a [[Motherboard (IC Editor)]] in.<br />
# Place [[Kit (IC Housing)|IC Housing]].<br />
# Wire DATA (green, right) port of the computer to DATA (green, bottom) port on the IC Housing.<br />
# Unless you're going to actually use/test your program in this particular IC Housing you do not need to power it.<br />
# Turn on the computer and see if your IC Housing is listed and selected in the drop-down selector. You can have several IC Housings on the same data network, in that case better be renaming them using [[Labeller]]. The IC10 Integrated Circuit itself can also be labeled (and painted).<br />
# Write/download a program and click "Export" on the computer. If IC housing is powered the program will immediately run.<br />
# When Circuit is picked up size of the program in bytes is shown.<br />
<br />
= How to make use of programmed IC Integrated Circuit =<br />
# Place [[Kit (IC Housing)|IC Housing]], wire it to power, insert the Circuit<br />
# Connect DATA (green, bottom) port on the IC Housing to machines you want to control. Some machines like an [[Autolathe]] have a DATA port, you need to use it (or both DATA and POWER). Some machines like a [[Stacker]] only have "universal" port.<br />
# Unless you're going to modify/debug your program on place you do not require a [[Computer]] here.<br />
# Using [[Screwdriver]] adjust six (or less) screws according to program description/purpose. Many programs do assign labels to screws using <code>alias</code> command (that's considered good style), to take benefit of it you can turn on IC Housing for a short time (that way it will blink yellow, it's okay). If all screws are set to "None" a misconfigured program can do no harm.<br />
# Turn on the IC Housing.<br />
<br />
= How large a program can be =<br />
There are 128 lines each being 52 characters long. Each character (incl. line break) takes 2 bytes. Maximum size IC chip will show is 13566.<br />
<br />
= See also =<br />
* [[MIPS]] — basic info and command reference<br />
* [[Advanced IC10 Programming]]<br />
* [https://stationeering.com/tools/ic Stationeering.com] by Melair — online emulator and command reference.<br />
<references /></div>Legolegshttps://stationeers-wiki.com/index.php?title=Integrated_Circuit_(IC10)&diff=9681Integrated Circuit (IC10)2020-09-27T20:22:12Z<p>Legolegs: </p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:1--><br />
[[Category:Circuits]]<br />
[[Category:MIPS Programming]]<br />
</translate><br />
{{Itembox<br />
| name = Integrated Circuit (IC10)<br />
| image = [[File:IC 10.png|thumb|IC Housing and IC10 disassembled]]<br />
| createdwith = [[Electronics Printer]]<br />
| cost = 10 [[Gold]], 4 [[Steel]], 5 [[Electrum]], 2 [[Solder]]<br />
| stacks = No<br />
}}<br />
<br />
<translate><br />
<!--T:2--><br />
A chip that is programmed with a [[Special:MyLanguage/computer|computer]]. Place the circuit in a [[Special:MyLanguage/Kit (IC Housing)|IC Housing]]. The [[Special:MyLanguage/MIPS|MIPS]] language is used.<br />
</translate><br />
<br />
= Where to get programs =<br />
* Write one by yourself using the [[computer]].<br />
* Paste whatever you have found on the internet into your [[computer]].<br />
* Load from your private library program you have saved previously (even from different savegame).<br />
* Get one from Steam Workshop (first subscribe in steam, then in game it will be available in "library" on computer).<br />
<br />
= How to create programs =<br />
== You'l need ==<br />
# Basic knowledge about math and logic<br />
# Whatever you're intending to program (e.g.: cycling airlock) you must be learnt to do manually (e.g.: close doors, turn on vents, etc)<br />
# Learn the MIPS programming language. MIPS is real world low-level (i.e. close to hardware) programming language with some Stationeers flavor added. It is fairly simple and compact. Due to its simplicity MIPS is not suitable for big programs but you re not going to develop those in the game anyways.<br />
<br />
== How to start getting in the MIPS programing ==<br />
Get some simple program (even 10 lines will do), run it in Stationeers to see what it does and then read the text. Look into ingame editor help pages to decrypt keywords. MIPS keywords are abbreviations of English words and mostly make sence, eg. <code>beqz r0 foobar</code> means "'''B'''ranch (jump) to line labeled foobar if r0 '''EQ'''uals to '''Z'''ero".<br />
With due respect to involved people, learning programming by watching video (on youtube, etc) is waste of your time, do not do that.<br />
<br />
= How to flash program onto the IC chip =<br />
# Setup a [[computer]], wire it to power.<br />
# Insert a [[Motherboard (IC Editor)]] in.<br />
# Place [[Kit (IC Housing)|IC Housing]].<br />
# Wire DATA (green, right) port of the computer to DATA (green, bottom) port on the IC Housing.<br />
# Unless you're going to actually use/test your program in this particular IC Housing you do not need to power it.<br />
# Turn on the computer and see if your IC Housing is listed and selected in the drop-down selector. You can have several IC Housings on the same data network, in that case better be renaming them using [[Labeller]]. The IC10 Integrated Circuit itself can also be labeled (and painted).<br />
# Write/download a program and click "Export" on the computer. If IC housing is powered the program will immediately run.<br />
# When Circuit is picked up size of the program in bytes is shown.<br />
<br />
= How to make use of programmed IC Integrated Circuit =<br />
# Place [[Kit (IC Housing)|IC Housing]], wire it to power, insert the Circuit<br />
# Connect DATA (green, bottom) port on the IC Housing to machines you want to control. Some machines like an [[Autolathe]] have a DATA port, you need to use it (or both DATA and POWER). Some machines like a [[Stacker]] only have "universal" port.<br />
# Unless you're going to modify/debug your program on place you do not require a [[Computer]] here.<br />
# Using [[Screwdriver]] adjust six (or less) screws according to program description/purpose. Many programs do assign labels to screws using <code>alias</code> command (that's considered good style), to take benefit of it you can turn on IC Housing for a short time (that way it will blink yellow, it's okay). If all screws are set to "None" a misconfigured program can do no harm.<br />
# Turn on the IC Housing.<br />
<br />
= How large a program can be =<br />
There are 128 lines each being 52 characters long. Each character (incl. line break) takes 2 bytes. Maximum size IC chip will show is 13566.<br />
<br />
= See also =<br />
* [[MIPS]] — basic info and command reference<br />
* [[Advanced IC10 Programming]]<br />
* [https://stationeering.com/tools/ic Stationeering.com] by Melair — online emulator and command reference.<br />
<references /></div>Legolegshttps://stationeers-wiki.com/index.php?title=Integrated_Circuit_(IC10)&diff=9680Integrated Circuit (IC10)2020-09-27T18:55:41Z<p>Legolegs: </p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:1--><br />
[[Category:Circuits]]<br />
[[Category:MIPS Programming]]<br />
</translate><br />
{{Itembox<br />
| name = Integrated Circuit (IC10)<br />
| image = [[File:IC 10.png|thumb|IC Housing and IC10 disassembled]]<br />
| createdwith = [[Electronics Printer]]<br />
| cost = 10 [[Gold]], 4 [[Steel]], 5 [[Electrum]], 2 [[Solder]]<br />
| stacks = No<br />
}}<br />
<br />
<translate><br />
<!--T:2--><br />
A chip that is programmed with a [[Special:MyLanguage/computer|computer]]. Place the circuit in a [[Special:MyLanguage/Kit (IC Housing)|IC Housing]]. The [[Special:MyLanguage/MIPS|MIPS]] language is used.<br />
</translate><br />
<br />
=== Where to get programs ===<br />
* Write one by yourself using the [[computer]].<br />
* Paste whatever you have found on the internet into your [[computer]].<br />
* Load from your private library program you have saved previously (even from different savegame).<br />
* Get one from Steam Workshop (first subscribe in steam, then in game it will be available in "library" on computer).<br />
<br />
=== How to flash program onto the IC chip ===<br />
# Setup a [[computer]], wire it to power.<br />
# Insert a [[Motherboard (IC Editor)]] in.<br />
# Place [[Kit (IC Housing)|IC Housing]].<br />
# Wire DATA (green, right) port of the computer to DATA (green, bottom) port on the IC Housing.<br />
# Unless you're going to actually use/test your program in this particular IC Housing you do not need to power it.<br />
# Turn on the computer and see if your IC Housing is listed and selected in the drop-down selector. You can have several IC Housings on the same data network, in that case better be renaming them using [[Labeller]]. The IC10 Integrated Circuit itself can also be labeled (and painted).<br />
# Write/download a program and click "Export" on the computer. If IC housing is powered the program will immediately run.<br />
# When Circuit is picked up size of the program in bytes is shown.<br />
<br />
=== How to make use of programmed IC Integrated Circuit ===<br />
# Place [[Kit (IC Housing)|IC Housing]], wire it to power, insert the Circuit<br />
# Connect DATA (green, bottom) port on the IC Housing to machines you want to control. Some machines like an [[Autolathe]] have a DATA port, you need to use it (or both DATA and POWER). Some machines like a [[Stacker]] only have "universal" port.<br />
# Unless you're going to modify/debug your program on place you do not require a [[Computer]] here.<br />
# Using [[Screwdriver]] adjust six (or less) screws according to program description/purpose. Many programs do assign labels to screws using `alias` command (that's considered good style), to take benefit of it you can turn on IC Housing for a short time (that way it will blink yellow, it's okay). If all screws are set to "None" a misconfigured program can do no harm.<br />
# Turn on the IC Housing.<br />
<br />
=== How large a program can be ===<br />
There are 128 lines each being 52 characters long. Each character (incl. line break) takes 2 bytes. Maximum size IC chip will show is 13566.</div>Legolegshttps://stationeers-wiki.com/index.php?title=Circuitboard_(Door_Control)&diff=9553Circuitboard (Door Control)2020-07-05T16:29:33Z<p>Legolegs: it can be used with motion sensor</p>
<hr />
<div><languages /><br />
<translate><br />
<!--T:1--><br />
{{Itembox<br />
| name = Circuitboard (Door Control)<br />
| image = [[File:{{#setmainimage:Circuitboard door control.jpg}}]]<br />
| stacks = ??<br />
| createdwith = [[Electronics Printer]], [[Fabricator]]<br />
| cost = 5g [[Copper Ingot|Copper]], 5g [[Gold Ingot|Gold]]<br />
}}<br />
<br />
== Description == <!--T:2--><br />
[[Circuitboard (Door Control)]] can be placed inside of a [[Console]] to form a Door Control Console. It is one of many [[Circuitboard|Circuitboards]] that can be fitted to a Console.<br />
<br />
<!--T:3--><br />
{{Structurebox<br />
| name = Console (Door Control)<br />
| image = [[File:Console door control.jpg]]<br />
| placed_with_item = [[Kit (Consoles)]]<br />
| placed_on_grid = Small Grid<br />
}}<br />
<br />
== Door Control == <!--T:3--><br />
The door control console allows the remote operation (opening and closing) of doors. When connected to one or several [[Sensors|Motion Sensors]] console will open the door when a sensor is activated and close the door when all sensors are clean.<br />
<br />
<!--T:4--><br />
{{Structurebox<br />
| name = Console (Door Control) in setup mode<br />
| image = [[File:Console door control setup.jpg]]<br />
| placed_with_item = [[Kit (Consoles)]]<br />
| placed_on_grid = Small Grid<br />
}}<br />
<br />
== Setup == <!--T:4--><br />
Setup mode can be entered by placing a [[Data Disk]] into the slot on the [[Console]]. <br />
When in setup mode, all objects with data access available to the console are listed, however only doors are available to be selected (highlighted green).<br />
When the console leaves setup mode, doors which had been selected are toggled.<br />
<br />
<!--T:5--><br />
{{Structurebox<br />
| name = Manual Operation Disabled<br />
| image = [[File:Composite door disabled.jpg]]<br />
| placed_with_item = [[Kit (Consoles)]]<br />
| placed_on_grid = Small Grid<br />
}}<br />
<br />
== Manual Operation == <!--T:5--><br />
The setup mode also allows for enabling/disabling manual operation of the doors. If this is chosen, then the configured doors which normally have their own toggle available become visibly disabled.<br />
<br />
== Mode == <!--T:6--><br />
The setup mode also allows for choosing between Link mode and Toggle Mode. IN Link mode, all selected devices will be turned either on or off depending on the current setting.<br />
In Toggle mode, selected devices will be toggled from their current state to the alternate state, allowing for different devices to be in different states at the same time.<br />
<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=AIMEe&diff=9518AIMEe2020-06-18T20:51:31Z<p>Legolegs: Category:MIPS Programming</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
{{Itembox<br />
| name = Robot<br />
| image = [[File:{{#setmainimage:Robot.png}}]]<br />
| stacks = 1<br />
| createdwith = [[Electronics Printer MK2]]<br />
| cost = 5g [[Gold]], 5g [[Copper]], 22g [[Steel]], 15g [[Electrum]], 7g [[Invar]], 8g [[Constantan]], 10g [[Astroloy]]<br />
}}<br />
AIMEe or Automated Independent Mechanical Entity is a small mining robot that can be automated to search, mine and retrieve ores.<br />
<br />
{{Structurebox<br />
| name = Robot<br />
| image = [[File:Robot.png]]<br />
| power_usage = Unknown<br />
| placed_with_item =<br />
| placed_on_grid =<br />
}}<br />
<br />
{{Data Network Header}}<br />
<br />
{{Data Parameters}}<br />
{| class="wikitable"<br />
|-<br />
! Parameter Name !! Data Type !! Description<br />
|-<br />
| TargetX || || Set the target for <code>Mode RobotMode.PathToTarget & RobotMode.MoveToTarget</code><br />
|-<br />
| TargetY || || Set the target for <code>Mode RobotMode.PathToTarget & RobotMode.MoveToTarget</code><br />
|-<br />
| TargetZ || || Set the target for <code>Mode RobotMode.PathToTarget & RobotMode.MoveToTarget</code><br />
|-<br />
| Mode || || 0-6<br />
|-<br />
| On || || <br />
|}<br />
<br />
* robot. RobotMode.None = 0 <br> <i>Do nothing</i><br />
* RobotMode.Follow = 1 <br> <i>Follow nearest player</i><br />
* RobotMode.MoveToTarget = 2 <br> <i>Move to Target in straight line</i><br />
* RobotMode.Roam = 3 <br> <i>Wander around looking for ores in 15 coords radius</i><br />
* RobotMode.Unload = 4 <br> <i>Unload in chute input or chute bin within 3 meters \ 1.5 large grid</i><br />
* RobotMode.PathToTarget = 5 <br> <i>Path(find) to Target</i><br />
* RobotMode.StorageFull = 6 <br> <i>Automatic assigned state that will show when storage slots are full (not stacks)</i></code><br />
<br />
{{Data Outputs}}<br />
{| class="wikitable"<br />
|-<br />
! Output Name !! Data Type !! Description<br />
|-<br />
| PressureExternal || || Read external pressure in Pascal<br />
|-<br />
| TemperatureExternal || || Read external temperature in Kelvin<br />
|-<br />
| PositionX || || Read current position<br />
|-<br />
| PositionY || || Read current position<br />
|-<br />
| PositionZ || || Read current position<br />
|-<br />
| VelocityMagnitude || || <br />
|-<br />
| VelocityRelativeX || || <br />
|-<br />
| VelocityRelativeY || || <br />
|-<br />
| VelocityRelativeZ || || <br />
|-<br />
| Mode || || 0-6<br />
|-<br />
| Power || || <br />
|-<br />
| Error || || <br />
|-<br />
| On || || <br />
|}<br />
<br />
==== Data Slots ====<br />
These are all parameters, that can be read with a [[Kit_(Logic_I/O)#Slots_Reader|Slots Reader]]. The outputs are listed in the order a Slots Reader's "VAR" setting cycles through them.<br />
{| class="wikitable"<br />
|-<br />
! Number || Name !! Description<br />
|-<br />
| 0 || Battery || <br />
|-<br />
| 1 || IC10 || <br />
|-<br />
| 2-9 || Storage || Internal storage slots.<br />
|}<br />
<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! Data Type !! Description<br />
|- <br />
|+ Battery Slot 0<br />
|-<br />
| Occupied || Boolean || Returns whether the slot occupied. (0 for no, 1 for yes).<br />
|-<br />
| OccupantHash|| Integer || Returns [[ItemHash]] of item in slot.<br />
|-<br />
| MaxQuantity || Integer || Max Size of stack.<br />
|-<br />
| Damage || Integer || Item durability in percent.<br />
|-<br />
| Class || Integer || Item class ID.<br />
|-<br />
| Quantity || Integer || Size of stack.<br />
|-<br />
| ChargeRatio || Integer || Ratio of charge 0-1.<br />
|-<br />
| Charge || Integer || Charge in joules.<br />
|-<br />
| PrefabHash || Integer || Returns [[ItemHash]] of item in slot.<br />
|}<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! Data Type !! Description<br />
|- <br />
|+ IC10 Slot 1<br />
|-<br />
| Occupied || Boolean || Returns whether the slot occupied. (0 for no, 1 for yes).<br />
|-<br />
| OccupantHash|| Integer || Returns [[ItemHash]] of item in slot.<br />
|-<br />
| MaxQuantity || Integer || Max Size of stack.<br />
|-<br />
| Damage || Integer || Item durability in percent.<br />
|-<br />
| Class || Integer || Item class ID.<br />
|-<br />
| Quantity || Integer || Size of stack.<br />
|-<br />
| PrefabHash || Integer || Returns [[ItemHash]] of item in slot.<br />
|}<br />
<br />
{| class="wikitable"<br />
|-<br />
! Name !! Data Type !! Description<br />
|-<br />
|+ Inventory Slot 2-9<br />
|-<br />
| Occupied || Boolean || Returns whether the slot occupied. (0 for no, 1 for yes).<br />
|-<br />
| OccupantHash|| Integer || Returns [[ItemHash]] of item in slot.<br />
|-<br />
| MaxQuantity || Integer || Max Size of stack.<br />
|-<br />
| Damage || Integer || Item durability in percent.<br />
|-<br />
| Class || Integer || Item class ID.<br />
|-<br />
| Quantity || Integer || Size of stack.<br />
|-<br />
| PrefabHash || Integer || Returns [[ItemHash]] of item in slot.<br />
|}</div>Legolegshttps://stationeers-wiki.com/index.php?title=Satellite_Tracking&diff=9517Satellite Tracking2020-06-18T20:49:10Z<p>Legolegs: Category:MIPS Programming</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
= Introduction =<br />
<br />
This scripts automatically locks onto the signals using the [[Satellite Dish]].<br />
<br />
= Contents =<br />
<br />
{| class="wikitable"<br />
|-<br />
| [[Integrated Circuit (IC10)]]<br />
|-<br />
| [[Kit (IC Housing)]]<br />
|-<br />
| [[Kit (Lights)| Diode Slide]]<br />
|-<br />
| [[Computer]]<br />
|-<br />
| [[Satellite Dish]]<br />
|-<br />
|}<br />
<br />
= Pin layout =<br />
<br />
{| class="wikitable"<br />
|-<br />
| D0|| [[Satellite Dish]]<br />
|-<br />
| D1|| [[Kit (Lights) | Diode Slide]]<br />
|}<br />
<br />
= Usage =<br />
<br />
The satellite dish will scan the entire sky moving horizontally from end to end, raising the antenna each time it reaches one end. When it finds a signal to track, the light turns on and shows the signal strength while it's locking on to it. Once it reaches 96% strength, it will stop tracking and wait for the stationeer to turn the light off. The dish will rotate back to the last position before it started locking on to the signal and will begin searching a new one (ignoring the signal ID it just tracked). The locking process can be skipped by turning off the light, in case the signal has already been scanned. The script may also cancel locking if it reaches a boundary, and skip to the next signal.<br />
<br />
''Note: Removing the IC from the housing or re-exporting the code will reset the position of the satellite to the start, and make it go through all the satellites you've already scanned.''<br />
<br />
[https://pastebin.com/RKtQw3Vd Source Code]</div>Legolegshttps://stationeers-wiki.com/index.php?title=Custom_Airlock_IC10&diff=9516Custom Airlock IC102020-06-18T20:45:31Z<p>Legolegs: Category:MIPS Programming</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
[[File:Airlockscreen.jpg|thumb]]<br />
<br />
= Contents =<br />
This script controls all functions of an airlock that consists of the following:<br />
<br />
* [[Integrated Circuit (IC10) | IC10]]<br />
* [[Kit (IC Housing) | IC Housing]]<br />
* 2X [[Active Vent]]<br />
* [[Gas Sensor]]<br />
* [[Kit (Lights) | LED Light]]<br />
* 2X [[Door]]<br />
<br />
= Assembly =<br />
<br />
Set up a standard airlock for atmosphere on both sides. Configure the pressures in the first two lines of the script. '''Before exporting the script or resetting the IC, make sure the airlock is cycled to the outside (inner door closed, outer open)'''. The LED serves as trigger for both cycling the airlock and skipping each phase, hence should be placed inside the airlock. The airlock should be a single frame to avoid leftover atmosphere after depressurization. For larger airlocks place the sensor on the far side from the vents. The script supports [[Blast Doors]], but since they lack a door handle you will need a button on each side (outside) of the airlock. Connect a [[Logic Writer]] to each button and use it to toggle the LED.<br />
<br />
IC10 pin layout:<br />
{| class="wikitable"<br />
|-<br />
| D0|| Interior Door<br />
|-<br />
| D1|| Exterior Door<br />
|-<br />
| D2|| Interior Vent<br />
|-<br />
| D3|| Exterior Vent<br />
|-<br />
| D4|| Gas Sensor<br />
|-<br />
| D5|| LED Light<br />
|}<br />
<br />
= Usage =<br />
<br />
The airlock can be cycled by interacting with either door, or turning the LED off. During cycling the doors are locked, and the LED can be used to skip both depressurize (red) and pressurize (yellow) phases.<br />
<br />
[https://pastebin.com/62E7BfqY Source Code]<br />
<br />
{| class="mw-collapsible mw-collapsed"<br />
!Source code:<br />
<br />
|-<br />
|<br><br />
define Int.Pressure 100<br><br />
define Ext.Pressure 0<br><br />
<br><br />
alias Int.Door d0<br><br />
alias Ext.Door d1<br><br />
alias Int.Vent d2<br><br />
alias Ext.Vent d3<br><br />
alias Sensor d4<br><br />
alias LedLight d5<br><br />
<br><br />
define Color.Red 4<br><br />
define Color.Yellow 5<br><br />
define Color.Green 2<br><br />
define Mode.Out 1<br><br />
define Mode.In 0<br><br />
<br><br />
alias rT r0<br><br />
alias rT2 r1<br><br />
alias rTarPressure r2<br><br />
<br><br />
Init:<br><br />
s Int.Vent On 0<br><br />
s Ext.Vent On 0<br><br />
s Ext.Door Mode 1 #Logic mode<br><br />
s Int.Door Mode 1 #Logic mode<br><br />
s LedLight Color Color.Green<br><br />
s LedLight On 1<br><br />
s Int.Door Open 0<br><br />
s Ext.Door Open 1<br><br />
yield<br><br />
<br><br />
main:<br><br />
jal _monitorTrigger<br><br />
jal _cycleToInt<br><br />
jal _monitorTrigger<br><br />
jal _cycleToExt<br><br />
j main<br><br />
<br><br />
_cycleToInt:<br><br />
push ra<br><br />
s Ext.Door Lock 1<br><br />
s Int.Door Lock 1<br><br />
s Ext.Door Open 0<br><br />
s Ext.Vent Mode Mode.Out<br><br />
s Ext.Vent On 1<br><br />
s LedLight Color Color.Red<br><br />
s LedLight On 1<br><br />
jal _dePressurize<br><br />
s Ext.Vent On 0<br><br />
s Int.Vent Mode Mode.In<br><br />
s Int.Vent PressureExternal Int.Pressure<br><br />
move rTarPressure Int.Pressure<br><br />
s Int.Vent On 1<br><br />
s LedLight Color Color.Yellow<br><br />
jal _pressurize<br><br />
s LedLight Color Color.Green<br><br />
s Int.Vent On 0<br><br />
s Int.Door Open 1<br><br />
s Ext.Door Lock 0<br><br />
s Int.Door Lock 0<br><br />
pop ra<br><br />
j ra<br><br />
<br><br />
_cycleToExt:<br><br />
push ra<br><br />
s Int.Door Lock 1<br><br />
s Ext.Door Lock 1<br><br />
s Int.Door Open 0<br><br />
s Int.Vent Mode Mode.Out<br><br />
s Int.Vent On 1<br><br />
s LedLight Color Color.Red<br><br />
s LedLight On 1<br><br />
jal _dePressurize<br><br />
s Int.Vent On 0<br><br />
s Ext.Vent Mode Mode.In<br><br />
s Ext.Vent PressureExternal Ext.Pressure<br><br />
move rTarPressure Ext.Pressure<br><br />
s Ext.Vent On 1<br><br />
s LedLight Color Color.Yellow<br><br />
jal _pressurize<br><br />
s LedLight Color Color.Green<br><br />
s Ext.Vent On 0<br><br />
s Ext.Door Open 1<br><br />
s Int.Door Lock 0<br><br />
s Ext.Door Lock 0<br><br />
pop ra<br><br />
j ra<br><br />
<br><br />
_dePressurize:<br><br />
l rT Sensor Pressure<br><br />
beqz rT dePressurize_end<br><br />
l rT LedLight On<br><br />
beqz rT dePressurize_end<br><br />
j _dePressurize<br><br />
dePressurize_end:<br><br />
s LedLight On 1<br><br />
j ra<br><br />
<br><br />
_pressurize:<br><br />
l rT Sensor Pressure<br><br />
bge rT rTarPressure pressurize_end<br><br />
l rT LedLight On<br><br />
beqz rT pressurize_end<br><br />
j _pressurize<br><br />
pressurize_end:<br><br />
s LedLight On 1<br><br />
j ra<br><br />
<br><br />
_monitorTrigger:<br><br />
l rT Int.Door Setting<br><br />
l rT2 Ext.Door Setting<br><br />
beq rT rT2 monitorTrigger_end<br><br />
l rT LedLight On<br><br />
beqz rT monitorTrigger_end<br><br />
yield<br><br />
j _monitorTrigger<br><br />
monitorTrigger_end:<br><br />
j ra<br><br />
|}</div>Legolegshttps://stationeers-wiki.com/index.php?title=Vending_Machine_Export_IC10&diff=9515Vending Machine Export IC102020-06-18T20:45:09Z<p>Legolegs: Category:MIPS Programming</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
This solution will export a given quantity of the specified item from a vending machine.<br />
[[File:VendingExporterSetup.png|thumb|right|Connect the three devices with chutes as shown in the diagram.]]<br />
== Required Items ==<br />
<br />
* 1 x [[Vending Machine]]<br />
* 1 x [[Integrated Circuit (IC10)]]<br />
* 1 x [[Kit (IC Housing)|IC Housing]]<br />
* 1 x [[Stacker]]<br />
* 1 x [[Sorter]]<br />
* 2 x [[Kit_(Logic_Memory) | Logic Memory]]<br />
* [[Cables]] and [[Chutes]]<br />
{| class="mw-collapsible mw-collapsed"<br />
!Source code:<br />
|-<br />
|<div style="background: #000000; float: none"><br />
<p style="float: none; white-space: pre; line-height: 1; color: #FFFFFF; background: #000000; font-size: 110%;font-family:Consolas; margin-left: 10px;><span style="color: #FF8000;">#Vending machine item exporter<br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rTemp</span><span> </span><span>r0</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rTemp2</span><span> </span><span>r1</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rBusy</span><span> </span><span>r2</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rReqHash</span><span> </span><span>r9</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rReqCount</span><span> </span><span>r10</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rMaxUnitStack</span><span> </span><span>r11</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rStackerCount</span><span> </span><span>r12</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rStackerSetting</span><span> </span><span>r13</span><span><br />
</span><span></span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dVender</span><span> </span><span>d0</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dStacker</span><span> </span><span>d1</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dSorter</span><span> </span><span>d2</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dMemHash</span><span> </span><span>d3</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dMemCount</span><span> </span><span>d4</span><span><br />
</span><span style="color: #FF8000;">#alias dStartExport d5<br />
</span><span></span><span><br />
</span><span>main:</span><span><br />
</span><span>yield</span><span><br />
</span><span style="color: #00FFFF;">l</span><span> </span><span>rBusy</span><span> </span><span>dMemCount</span><span> </span><span>Setting</span><span><br />
</span><span style="color: #FF0000;">beqz</span><span> </span><span>rBusy</span><span> </span><span>main</span><span><br />
</span><span style="color: #00FFFF;">l</span><span> </span><span>rBusy</span><span> </span><span>dMemHash</span><span> </span><span>Setting</span><span><br />
</span><span style="color: #FF0000;">beqz</span><span> </span><span>rBusy</span><span> </span><span>main</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_Configuration</span><span><br />
</span><span style="color: #00FFFF;">l</span><span> </span><span>rReqCount</span><span> </span><span>dMemCount</span><span> </span><span>Setting</span><span><br />
</span><span style="color: #00FFFF;">l</span><span> </span><span>rReqHash</span><span> </span><span>dMemHash</span><span> </span><span>Setting</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dMemCount</span><span> </span><span>Setting</span><span> </span><span>0</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_ExportItem</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>main</span><span><br />
</span><span></span><span><br />
</span><span>_Configuration:</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dSorter</span><span> </span><span>Mode</span><span> </span><span>0</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Mode</span><span> </span><span>1</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>ClearMemory</span><span> </span><span>1</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dSorter</span><span> </span><span>ClearMemory</span><span> </span><span>1</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dVender</span><span> </span><span>ClearMemory</span><span> </span><span>1</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra</span><span><br />
<br />
</span><span>_ExportItem:</span><span><br />
</span><span style="color: #6666FF;">push</span><span> </span><span>ra</span><span><br />
</span><span>ExportItemLoop:</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rTemp</span><span> </span><span>dStacker</span><span> </span><span>2</span><span> </span><span>Quantity</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dVender</span><span> </span><span>RequestHash</span><span> </span><span>rReqHash</span><span><br />
</span><span style="color: #FF8000;">#wait for item to arrive<br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rTemp2</span><span> </span><span>dStacker</span><span> </span><span>2</span><span> </span><span>Quantity</span><span><br />
</span><span style="color: #FF0000;">breq</span><span> </span><span>rTemp</span><span> </span><span>rTemp2</span><span> </span><span>-1</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rStackerCount</span><span> </span><span>dStacker</span><span> </span><span>2</span><span> </span><span>Quantity</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rMaxUnitStack</span><span> </span><span>dStacker</span><span> </span><span>2</span><span> </span><span>MaxQuantity</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_WaitForDevices</span><span><br />
</span><span style="color: #6666FF;">min</span><span> </span><span>rStackerSetting</span><span> </span><span>rReqCount</span><span> </span><span>rMaxUnitStack</span><span><br />
</span><span style="color: #6666FF;">min</span><span> </span><span>rStackerSetting</span><span> </span><span>rStackerSetting</span><span> </span><span>rStackerCount</span><span><br />
</span><span style="color: #FF0000;">breq</span><span> </span><span>rStackerCount</span><span> </span><span>rMaxUnitStack</span><span> </span><span>2</span><span><br />
</span><span style="color: #FF0000;">bgt</span><span> </span><span>rReqCount</span><span> </span><span>rStackerCount</span><span> </span><span>ExportItemLoop</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Setting</span><span> </span><span>rStackerSetting</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dSorter</span><span> </span><span>Output</span><span> </span><span>0</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_RunStacker</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rStackerCount</span><span> </span><span>dStacker</span><span> </span><span>2</span><span> </span><span>Quantity</span><span><br />
</span><span style="color: #6666FF;">sub</span><span> </span><span>rReqCount</span><span> </span><span>rReqCount</span><span> </span><span>rStackerSetting</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rReqCount</span><span> </span><span>ExportItemLoop</span><span><br />
</span><span style="color: #FF8000;">#done, route any leftovers to the vender<br />
</span><span style="color: #FF0000;">beqz</span><span> </span><span>rStackerCount</span><span> </span><span>ExportItemExit</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Setting</span><span> </span><span>rStackerCount</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dSorter</span><span> </span><span>Output</span><span> </span><span>1</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_RunStacker</span><span><br />
</span><span>ExportItemExit:</span><span><br />
</span><span style="color: #6666FF;">pop</span><span> </span><span>ra</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra</span><span><br />
</span><span></span><span><br />
</span><span>_RunStacker:</span><span><br />
</span><span style="color: #6666FF;">push</span><span> </span><span>ra</span><span><br />
</span><span style="color: #00FFFF;">l</span><span> </span><span>rTemp</span><span> </span><span>dSorter</span><span> </span><span>ImportCount</span><span><br />
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Output</span><span> </span><span>1</span><span><br />
</span><span style="color: #FF8000;">#wait for item to arrive<br />
</span><span style="color: #00FFFF;">l</span><span> </span><span>rTemp2</span><span> </span><span>dSorter</span><span> </span><span>ImportCount</span><span><br />
</span><span style="color: #FF0000;">breq</span><span> </span><span>rTemp</span><span> </span><span>rTemp2</span><span> </span><span>-1</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_WaitForDevices</span><span><br />
</span><span style="color: #6666FF;">pop</span><span> </span><span>ra</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra</span><span><br />
</span><span></span><span><br />
</span><span>_WaitForDevices:</span><span><br />
</span><span>yield</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dSorter</span><span> </span><span>0</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>_WaitForDevices</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dSorter</span><span> </span><span>1</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>_WaitForDevices</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dSorter</span><span> </span><span>2</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>_WaitForDevices</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dVender</span><span> </span><span>0</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>_WaitForDevices</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dVender</span><span> </span><span>1</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>_WaitForDevices</span><span><br />
</span><span style="color: #FF8000;">#if the stacker is full so we skip it<br />
</span><span style="color: #FF0000;">beq</span><span> </span><span>rStackerCount</span><span> </span><span>rMaxUnitStack</span><span> </span><span>WaitEnd</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dStacker</span><span> </span><span>0</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>_WaitForDevices</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dStacker</span><span> </span><span>1</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>_WaitForDevices</span><span><br />
</span><span>WaitEnd:</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra<br />
</span><br />
</p><br />
</div><br />
<br />
|}<br />
<br />
<br />
== Setup ==<br />
<br />
* Place all components listed above and connect them using [[Cables]] and [[Chutes]] as shown in the picture. (For cables just connect everything)<br />
* Load the code into the IC and turn everything on<br />
* You may want to put a junction and an inlet to the import of the vending machine so you can restock it.<br />
<br />
== Usage ==<br />
<br />
# Set the two memory modules with the quantity and the hash of the item.<br />
# Unless busy, the IC will set the quantity memory to zero and start the export process.<br />
# Excess items will be routed back into the vending machine.<br />
<br />
''' NOTE: ''' The IC can handle split stacks of small quantities in the vending machine or exporting more than one stack. It does '''NOT''' handle having insufficient items in the vending machine and will halt until you fill it and export it manually (or reset the whole process)<br />
<br />
== How It Works ==<br />
<br />
=== Main loop ===<br />
<br />
* Wait until both memory modules have a non-zero value.<br />
* Run device configuration.<br />
* Store request hash and quantity.<br />
* Reset the memory for quantity to indicate the start of the export (and so we don't keep exporting the same item)<br />
* Run the item export function.<br />
<br />
=== _Configuration ===<br />
<br />
* Configure the sorter for default mode, and the stacker for manual.<br />
<br />
=== _ExportItem ===<br />
* Request the item from the vender and wait for it to arrive into the stacker, then run _WaitForDevices to make sure nothing is busy.<br />
* Calculate the setting for the stacker depending on the remaining items, the quantity inside the stacker and the maximum stacking size (in manual mode, it won't do anything until the Output parameter is set to 1)<br />
* Either make another request from the vender, or flush the stacker if it's full.<br />
* Make more requests if there are remaining items, or empty the stacker and route any excess items back into the vender.<br />
<br />
=== _RunStacker ===<br />
* Set the output of the sorter, run the stacker and wait for the item to arrive in the sorter.<br />
<br />
=== _WaitForDevices ===<br />
* Makes sure none of the devices have occupied import/export slots - the exception being the stacker, since it may have a full processing slot and items stuck in the import slot (for example when the vender exports 30 coal twice in a row. 50 will be in the processing slot and 10 in import.)</div>Legolegshttps://stationeers-wiki.com/index.php?title=Advanced_IC10_Programming&diff=9514Advanced IC10 Programming2020-06-18T20:44:39Z<p>Legolegs: Category:MIPS Programming</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
= Flow Control And Data Manipulation =<br />
''NOTE: This level of coding is NOT needed to play the game to it's full extent. it's aimed at people looking for custom, self-inspired challenges.''<br />
<br />
== Functions ==<br />
<br />
<div style="background: #000000;><br />
<p style="float: none; white-space: pre; line-height: 1; color: #FFFFFF; background: #000000; font-size: 110%;font-family: Consolas; margin-left: 10px;><span>main:</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>MyFunction</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>main</span><span><br />
<br />
</span><span>MyFunction:</span><span><br />
</span><span>...</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra</span><span><br />
<br />
</span><br />
</p><br />
</div><br />
A function is just a label we jump to, but using the -al version of branch instructions (jal, beqzal) as they store the return address into the special '''ra''' register.<br />
When calling a function from another function (or from itself), ra will be overwritten so we have to store it in the stack and take it out when the function completes:<br />
<br />
<div style="background: #000000; float: none"><br />
<p style="float: none; white-space: pre; line-height: 1; color: #FFFFFF; background: #000000; font-size: 110%;font-family:Consolas; margin-left: 10px;><span>main:</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_MyFunction</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>main</span><span><br />
<br />
</span><span>_MyFunction:</span><span><br />
</span><span style="color: #6666FF;">push</span><span> </span><span>ra</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_MySecondFunction</span><span><br />
</span><span style="color: #6666FF;">pop</span><span> </span><span>ra</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra</span><span><br />
<br />
</span><span>_MySecondFunction:</span><span><br />
</span><span>...</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra</span><span><br />
<br />
</span><br />
</p><br />
</div><br />
If we hadn't used the stack, the jump at the end of _MyFunction would take us to the call of _MySecondFunction instead of the main section.<br />
<br />
== Loops ==<br />
<br />
<div style="background: #000000; float: none"><br />
<p style="float: none; white-space: pre; line-height: 1; color: #FFFFFF; background: #000000; font-size: 110%;font-family:Consolas; margin-left: 10px;><span style="color: #00FFFF;">alias</span><span> </span><span>rIterator</span><span> </span><span>r0</span><span><br />
</span><span>main:</span><span><br />
</span><span style="color: #6666FF;">move</span><span> </span><span>rIterator</span><span> </span><span>0</span><span><br />
</span><span>Loop:</span><span><br />
</span><span>...</span><span><br />
</span><span style="color: #6666FF;">add</span><span> </span><span>rIterator</span><span> </span><span>rIterator</span><span> </span><span>1</span><span><br />
</span><span style="color: #FF0000;">bgt</span><span> </span><span>rIterator</span><span> </span><span>3</span><span> </span><span>Loop_End</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>Loop</span><span><br />
</span><span>Loop_End:</span><span><br />
<br />
</span><span style="color: #FF0000;">j</span><span> </span><span>main</span><span><br />
<br />
</span><br />
</p><br />
</div><br />
The challenge with loops is to keep them clean. Relative jumps are a great way to save lines but they can quickly turn code messy and adding lines might break them if you overlook them. If code length is not an issue, stick to labels where possible.<br />
<br />
== Indexing With Relative Jump ==<br />
<br />
<div style="background: #000000; float: none"><br />
<p style="float: none; white-space: pre; line-height: 1; color: #FFFFFF; background: #000000; font-size: 110%;font-family:Consolas; margin-left: 10px;><span style="color: #00FFFF;">alias</span><span> </span><span>rIndex</span><span> </span><span>r0</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rTemp</span><span> </span><span>r1</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rValue</span><span> </span><span>r2</span><span><br />
<br />
</span><span>main:</span><span><br />
</span><span style="color: #6666FF;">move</span><span> </span><span>rIndex</span><span> </span><span>1</span><span><br />
</span><span style="color: #6666FF;">mul</span><span> </span><span>rTemp</span><span> </span><span>rIndex</span><span> </span><span>2</span><span><br />
</span><span style="color: #6666FF;">add</span><span> </span><span>rTemp</span><span> </span><span>rTemp</span><span> </span><span>1</span><span><br />
</span><span style="color: #FF0000;">jr</span><span> </span><span>rTemp</span><span><br />
</span><span style="color: #6666FF;">move</span><span> </span><span>rValue</span><span> </span><span>123</span><span> </span><span style="color: #FF8000;">#Index 0<br />
</span><span style="color: #FF0000;">j</span><span> </span><span>Select_end</span><span><br />
</span><span style="color: #6666FF;">move</span><span> </span><span>rValue</span><span> </span><span>456</span><span> </span><span style="color: #FF8000;">#Index 1<br />
</span><span style="color: #FF0000;">j</span><span> </span><span>Select_end</span><span><br />
</span><span style="color: #6666FF;">move</span><span> </span><span>rValue</span><span> </span><span>789</span><span> </span><span style="color: #FF8000;">#Index 2<br />
</span><span style="color: #FF0000;">j</span><span> </span><span>Select_end</span><span><br />
</span><span>...</span><span><br />
</span><span>Select_end:</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>main</span><span><br />
<br />
</span><br />
</p><br />
</div><br />
Use this to set one or more parameters or call functions using an index number you calculated (or read from a dial button). We multiply it by 2 because we need space for a jump after each move command so we don't run the subsequent ones and we add 1 because for a 0 index "jr 0" would lock up our IC.<br />
<br />
== Redefining Aliases ==<br />
<br />
Say you have a complex function that manipulates a device (reads/writes multiple parameters, controls timing etc) and you want to reuse it for multiple devices. You could copy paste the whole function, or you could redefine the alias you used and point it to another device, like this:<br />
<br />
<div style="background: #000000; float: none"><br />
<p style="float: none; white-space: pre; line-height: 1; color: #FFFFFF; background: #000000; font-size: 110%;font-family:Consolas; margin-left: 10px;><span>main:</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dCurrent</span><span> </span><span>d0</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_MyFunction</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dCurrent</span><span> </span><span>d1</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_MyFunction</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>main</span><span><br />
<br />
</span><br />
</p><br />
</div><br />
''NOTE: This wouldn't work in real languages since aliases and defines are just directives for the (pre)compiler, they're not evaluated during runtime by the CPU''<br />
<br />
You can combine this with a loop and indexing to run your function on multiple devices automatically.<br />
<div style="background: #000000; float: none"><br />
<p style="float: none; white-space: pre; line-height: 1; color: #FFFFFF; background: #000000; font-size: 110%;font-family:Consolas; margin-left: 10px;><span style="color: #00FFFF;">alias</span><span> </span><span>rIterator</span><span> </span><span>r0</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rTemp</span><span> </span><span>r1</span><span><br />
</span><span>main:</span><span><br />
</span><span style="color: #6666FF;">move</span><span> </span><span>rIterator</span><span> </span><span>0</span><span><br />
</span><span>Loop:</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_UpdateReference</span><span><br />
</span><span style="color: #FF0000;">jal</span><span> </span><span>_FunctionForDevice</span><span><br />
</span><span style="color: #6666FF;">add</span><span> </span><span>rIterator</span><span> </span><span>rIterator</span><span> </span><span>1</span><span><br />
</span><span style="color: #FF0000;">bgt</span><span> </span><span>rIterator</span><span> </span><span>3</span><span> </span><span>Loop_End</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>Loop</span><span><br />
</span><span>Loop_End:</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>main</span><span><br />
<br />
</span><span>_UpdateReference:</span><span><br />
</span><span style="color: #6666FF;">mul</span><span> </span><span>rTemp</span><span> </span><span>rIterator</span><span> </span><span>2</span><span><br />
</span><span style="color: #6666FF;">add</span><span> </span><span>rTemp</span><span> </span><span>rTemp</span><span> </span><span>1</span><span><br />
</span><span style="color: #FF0000;">jr</span><span> </span><span>rTemp</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dCurrentDevice</span><span> </span><span>d0</span><span> </span><span style="color: #FF8000;">#Index 0<br />
</span><span style="color: #FF0000;">j</span><span> </span><span>Select_end</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dCurrentDevice</span><span> </span><span>d1</span><span> </span><span style="color: #FF8000;">#Index 1<br />
</span><span style="color: #FF0000;">j</span><span> </span><span>Select_end</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dCurrentDevice</span><span> </span><span>d2</span><span> </span><span style="color: #FF8000;">#Index 2<br />
</span><span style="color: #FF0000;">j</span><span> </span><span>Select_end</span><span><br />
</span><span style="color: #00FFFF;">alias</span><span> </span><span>dCurrentDevice</span><span> </span><span>d3</span><span> </span><span style="color: #FF8000;">#Index 3<br />
</span><span style="color: #FF0000;">j</span><span> </span><span>Select_end</span><span><br />
</span><span>Select_end:</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra</span><span><br />
<br />
</span><span>_FunctionForDevice:</span><span><br />
</span><span style="color: #FF8000;">#Manipulate dCurrentDevice<br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra</span><span><br />
<br />
</span><br />
</p><br />
</div><br />
<br />
= Device Manipulation =<br />
<br />
== Timing And Parameters ==<br />
<br />
Some devices don't react well to having parameters changed while they're performing an action such as import or export. Notable mentions are the stacker, sorter and the vending machine. You can avoid them locking up (or getting jammed with items) either by adding delays (yield, sleep) or by actively waiting for their slots to become unoccupied, or their Activation to become 0.<br />
<div style="background: #000000; float: none"><br />
<p style="float: none; white-space: pre; line-height: 1; color: #FFFFFF; background: #000000; font-size: 110%;font-family:Consolas; margin-left: 10px;><span>WaitForDevices:</span><span><br />
</span><span>yield</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dSorter</span><span> </span><span>0</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>WaitForDevices</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dSorter</span><span> </span><span>1</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>WaitForDevices</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dSorter</span><span> </span><span>2</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>WaitForDevices</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dVender</span><span> </span><span>0</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>WaitForDevices</span><span><br />
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rBusy</span><span> </span><span>dVender</span><span> </span><span>1</span><span> </span><span>Occupied</span><span><br />
</span><span style="color: #FF0000;">bgtz</span><span> </span><span>rBusy</span><span> </span><span>WaitForDevices</span><span><br />
</span><span style="color: #FF0000;">j</span><span> </span><span>ra</span><span><br />
</span><br />
</p><br />
</div><br />
<br />
'''NOTE:''' The slot reader labels slots from 1 but in the IC they start at 0. It is also a good idea to check any device involved in your solution with both a logical and slot reader as the current databases may not list all existing slots or parameters. You should always make use of all data available from devices as they may greatly simplify your project.<br />
<br />
Using delays is convenient, but has downsides. You're giving up real-time control over the process and may miss certain events or react too late and cause a device to jam. You also need to consider that code takes time to run, and for example if you have a complicated condition for setting the output of a sorter depending on the item that entered it, it may be better to leave it OFF by default and only turn it on once the output is correctly set. (Devices react differently to being fed items while powered down. ie the stacker will keep it in the Import slot but the vending machine will completely import it, so make sure to manually test everything you can prior to automating it)<br />
= Sample Projects =<br />
<br />
== Vending Machine Exporter ==<br />
<br />
[[Vending_Machine_Export_IC10]]</div>Legolegshttps://stationeers-wiki.com/index.php?title=Integrated_Circuit_(IC10)&diff=9513Integrated Circuit (IC10)2020-06-18T20:44:15Z<p>Legolegs: Category:MIPS Programming</p>
<hr />
<div><languages/><br />
<translate><br />
<!--T:1--><br />
[[Category:Circuits]]<br />
[[Category:MIPS Programming]]<br />
</translate><br />
{{Itembox<br />
| name = Integrated Circuit (IC10)<br />
| image = <br />
| createdwith = [[Electronics Printer]]<br />
| cost = 10 [[Gold]], 4 [[Steel]], 5 [[Electrum]], 2 [[Solder]]<br />
| stacks = No<br />
}}<br />
<br />
<translate><br />
<!--T:2--><br />
A chip that is programmed with a [[Special:MyLanguage/computer|computer]]. Place the circuit in a [[Special:MyLanguage/Kit (IC Housing)|IC Housing]]. The [[Special:MyLanguage/MIPS|MIPS]] language is used.<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=Motherboard_(IC_Editor)&diff=9512Motherboard (IC Editor)2020-06-18T20:43:39Z<p>Legolegs: Category:MIPS Programming</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
{{Itembox<br />
| name = Motherboard (IC Editor)<br />
| createdwith = [[Electronics Printer]], [[Fabricator]]<br />
| cost = 5g [[Copper]], 5g [[Gold]], 15[[Electrum]]* <small>*fabricator only</small><br />
}}<br />
<br />
The Motherboard (IC Editor) is a [[motherboard]] that can be placed in the front hatch of a [[computer]]. This allows the user to save, load, and edit scripts for [[Special:MyLanguage/Integrated Circuit_(IC10)|Integrated Circuits]]. These scripts are preserved between worlds and game sessions. If the logic output of the computer is connected to a network containing an [[Special:MyLanguage/Kit (IC Housing) IC Housing|IC Housing]] with an [[Special:MyLanguage/Integrated Circuit_(IC10)|Integrated Circuit]] installed, then the computer may also import code from the circuit or export code to it. The circuits are programmed in the [[MIPS]] language; the stationeers website provides a working simulator [https://stationeering.com/tools/ic] with some instructions to get new users started.</div>Legolegshttps://stationeers-wiki.com/index.php?title=Kit_(IC_Housing)&diff=9511Kit (IC Housing)2020-06-18T20:42:47Z<p>Legolegs: Category:MIPS Programming</p>
<hr />
<div>[[Category:Circuits]]<br />
[[Category:MIPS Programming]]<br />
<languages/><br />
<translate><br />
{{Itembox<br />
| name = Kit (IC Housing)<br />
| image = [[File:Kit(IC10).jpg|thumb|Kit (IC Housing)]]<br />
| createdwith = [[Electronics Printer]]<br />
| cost = 10 [[Copper]], 4 [[Steel]], 2 [[Solder]]<br />
| stacks = Yes<br />
}}<br />
{{Structurebox<br />
| name = IC Housing<br />
| image = [[File:Integrated Circuit (IC10) Housingb.jpg|thumb|Integrated Circuit (IC10) Housing]]<br />
| power_usage = 50W<br />
| placed_with_item = <br />
| placed_on_grid = Small grid, On Frames<br />
| const_with_item1 = <br />
| decon_with_tool1 = [[Hand Drill]]<br />
| item_rec1 = <br />
| const_with_item2 = <br />
| item_rec2 = <br />
| decon_with_tool3 = <br />
| item_rec3 = <br />
}}<br />
Holds an [[Integrated_Circuit_(IC10)|integrated circuit]].<br />
<br />
{{Data Network Header}}<br />
<br />
{{Data Parameters}}<br />
{| class="wikitable"<br />
|-<br />
! Parameter Name !! Data Type !! Description<br />
|-<br />
| Activate || Boolean || 0 on placement. Once a 1 is written, it will not change.<br> Can be used as a program start delay?<br />
|-<br />
| Setting || Float ||<br />
|-<br />
| On || Boolean ||<br />
|-<br />
|}<br />
<br />
{{Data Outputs}}<br />
{| class="wikitable"<br />
|-<br />
! Output Name !! Data Type !! Description<br />
|-<br />
| Error || Boolean ||<br />
|-<br />
| Activate || Boolean ||<br />
|-<br />
| Setting || Float ||<br />
|-<br />
| RequiredPower || Integer ||<br />
|-<br />
| PrefabHash || Integer ||<br />
|-<br />
| Power || Integer ||<br />
|-<br />
| On || Boolean ||<br />
|}<br />
The Setting can be adjusted within the code of a socketed IC using an instruction like <code>s db Setting r0</code> which is useful when trying to pass a value from an IC to a [[Kit (Logic I/O)#Batch Writer|Batch Writer]].<br />
</translate></div>Legolegshttps://stationeers-wiki.com/index.php?title=MIPS&diff=9510MIPS2020-06-18T20:41:30Z<p>Legolegs: Category:MIPS Programming</p>
<hr />
<div>[[Category:MIPS Programming]]<br />
=MIPS scripting language for IC10 housings / chips=<br />
<br />
<pre><br />
# Text after a # will be ignored to the end of the line. The amount of white<br />
# space between arguments isn't important, but new lines start a new command.<br />
</pre><br />
<br />
<br><br />
==Functions==<br />
----<br />
<br />
<div id="alias"></div><br />
;alias<br />
:alias str r? d? # labels register or device reference with name. When alias is applied to a device, it will effect what shows on the screws in the IC base. (housing)<br />
<code>alias vTemperature r0</code><br />
<br><br />
<code>alias dAutoHydro1 d0</code><br />
<br />
<div id="move"></div><br />
;move <br />
:d s # stores the value of s in d<br />
<code>move r0 42 # Store 42 in register 0</code><br />
<br />
<div id="add"></div><br />
;add <br />
:d s t # calculates s + t and stores the result in d<br />
<code>add r0 r1 1 # add 1 to r1 and store the result as r0</code><br />
<br><br />
<code>add r0 r0 1 # increment r0 by one</code><br />
<div id="sub"></div><br />
;sub <br />
:d s t # calculates s - t and stores the result in d<br />
<div id="mul"></div><br />
;mul <br />
:d s t # calculates s * t and stores the result in d<br />
<div id="div"></div><br />
;div <br />
:d s t # calculates s / t and stores the result in d<br />
<div id="mod"></div><br />
;mod <br />
:d s t <br />
::# calculates s mod t and stores the result in d. Note this<br />
::# doesn't behave like the % operator - the result will be <br />
::# positive even if the either of the operands are negative<br />
<br />
<div id="slt"></div><br />
;slt <br />
:d s t # stores 1 in d if s < t, 0 otherwise<br />
<br />
<div id="sqrt"></div><br />
;sqrt <br />
:d s # calculates sqrt(s) and stores the result in d<br />
<div id="round"></div><br />
;round <br />
:d s # finds the rounded value of s and stores the result in d<br />
<div id="trunc"></div><br />
;trunc <br />
:d s # finds the truncated value of s and stores the result in d<br />
<div id="ceil"></div><br />
;ceil <br />
: d s # calculates the ceiling of s and stores the result in d<br />
<div id="floor"></div><br />
;floor <br />
: d s # calculates the floor of s and stores the result in d<br />
<br />
<div id="max"></div><br />
;max <br />
: d s t # calculates the maximum of s and t and stores the result in d<br />
<div id="min"></div><br />
;min <br />
: d s t # calculates the minimum of s and t and stores the result in d<br />
<div id="abs"></div><br />
;abs <br />
: d s # calculates the absolute value of s and stores the result in d<br />
<div id="log"></div><br />
;log <br />
: d s # calculates the natural logarithm of s and stores the result<br />
::# in d<br />
<div id="exp"></div><br />
;exp <br />
: d s # calculates the exponential of s and stores the result in d<br />
<div id="rand"></div><br />
;rand <br />
: d # selects a random number uniformly at random between 0 and 1<br />
::# inclusive and stores the result in d<br />
<br />
::# boolean arithmetic uses the C convention that 0 is false and any non-zero<br />
::# value is true.<br />
<div id="and"></div><br />
;and <br />
: d s t # stores 1 in d if both s and t have non-zero values,<br />
::# 0 otherwise<br />
<div id="or"></div><br />
;or <br />
: d s t # stores 1 in d if either s or t have non-zero values,<br />
::# 0 otherwise<br />
<div id="xor"></div><br />
;xor <br />
: d s t # stores 1 in d if exactly one of s and t are non-zero,<br />
::# 0 otherwise<br />
<div id="nor"></div><br />
;nor <br />
: d s t # stores 1 in d if both s and t equal zero, 0 otherwise<br />
<br />
<br />
# Lines are numbered starting at zero<br />
<div id="j"></div><br />
;j<br />
: a # jumps to line a.<br />
<div id="bltz"></div><br />
;bltz<br />
: s a # jumps to line a if s < 0<br />
<div id="blez"></div><br />
;blez <br />
: s a # jumps to line a if s <= 0<br />
<br />
<div id="bgez"></div><br />
;bgez <br />
: s a # jumps to line a if s >= 0<br />
<div id="bgtz"></div><br />
;bgtz<br />
: s a # jumps to line a if s > 0<br />
<div id="beq"></div><br />
;beq <br />
: s t a # jumps to line a if s == t<br />
<div id="bne"></div><br />
;bne <br />
: s t a # jumps to line a if s != t<br />
<div id="bdseal"></div><br />
;bdseal<br />
: d? a(r?|num) # Jump execution to line a and store current line number if device d? is set.<br />
<code>bdseal d0 32 #Store line number and jump to line 32 if d0 is assigned.</code><br />
<BR><br />
<code>bdseal dThisVictim HarvestCrop #Store line in ra and jump to sub HarvestCrop if device dThisVictim is assigned.</code><br />
<br />
<div id="yield"></div><br />
;yield <br />
: # ceases code execution for this power tick<br />
<br />
<div id="#"></div><br />
; #<br />
: # The following text will be ignored during compiling; use this to create comments.<br />
<br />
<br />
<br />
<br />
==Device Variables==<br />
-----<br />
<br />
<div id="Activate"></div><br />
;Activate<br />
:1 if device is activated (usually means running), otherwise 0<br />
:<code>l r0 d0 Activate # sets r0 to 1 if on or 0 of off</code><br />
<br />
<div id="AirRelease"></div><br />
;AirRelease<br />
<div id="Charge"></div><br />
;Charge<br />
: The current charge the device has.<br />
<div id="CLearMemory"></div><br />
;CLearMemory<br />
: When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when triggered.<br />
<div id="Color"></div><br />
;Color<br />
<div id="CompletionRatio"></div><br />
;CompletionRatio<br />
<div id="ElevatorLevel"></div><br />
;ElevatorLevel<br />
<div id="ElevatorSpeed"></div><br />
;ElevatorSpeed<br />
<div id="Error"></div><br />
;Error<br />
: 1 if device is in error state, otherwise 0<br />
<div id="ExportCount"></div><br />
;ExportCount<br />
: How many items exporfted since last ClearMemory.<br />
<div id="Filtration"></div><br />
;Filtration<br />
: The current state of the filtration system. For example filtration = 1 for a Hardsuit when filtration is On.<br />
<div id="Harvest"></div><br />
;Harvest<br />
: Performs the harvesting action for any plant based machinery.<br />
: <code>s d0 Harvest 1 # Performs 1 harvest action on device d0</code><br />
<div id="Horizontal"></div><br />
;Horizontal<br />
<div id="HorizontalRatio"></div><br />
;HorizontalRatio<br />
<div id="Idle"></div><br />
;Idle<br />
<div id="ImportCount"></div><br />
;ImportCount<br />
<div id="Lock"></div><br />
;Lock<br />
<div id="Maximum"></div><br />
;Maximum<br />
<div id="Mode"></div><br />
;Mode<br />
<div id="On"></div><br />
;On<br />
<div id="Open"></div><br />
;Open<br />
<div id="Output"></div><br />
;Output<br />
<div id="Plant"></div><br />
;Plant<br />
: Performs the planting operation for any plant based machinery.<br />
: <code>s d0 Plant 1 # Plants one crop in device d0</code><br />
<div id="PositionX"></div><br />
;PositionX<br />
<div id="PositionY"></div><br />
;PositionY<br />
<div id="PositionZ"></div><br />
;PositionZ<br />
<div id="Power"></div><br />
;Power<br />
<div id="PowerActual"></div><br />
;PowerActual<br />
<div id="PowerPotential"></div><br />
;PowerPotential<br />
<div id="PowerRequired"></div><br />
;PowerRequired<br />
<div id="Pressure"></div><br />
;Pressure<br />
<div id="PressureExternal"></div><br />
;PressureExternal<br />
<div id="PressureInteral"></div><br />
;PressureInteral<br />
<div id="PressureSetting"></div><br />
;PressureSetting<br />
<div id="Quantity"></div><br />
;Quantity<br />
: Total quantity in the device.<br />
<div id="Ratio"></div><br />
;Ratio<br />
: Context specific value depending on device, 0 to 1 based ratio.<br />
<div id="RatioCarbonDioxide"></div><br />
;RatioCarbonDioxide<br />
<div id="RatioNitrogen"></div><br />
;RatioNitrogen<br />
: The ratio of nitrogen in device atmosphere.<br />
<div id="RatioOxygen"></div><br />
;RatioOxygen<br />
: The ratio of oxygen in device atmosphere.<br />
<div id="RatioPollutant"></div><br />
;RatioPollutant<br />
: The ratio of pollutant in device atmosphere.<br />
<div id="RatioVolatiles"></div><br />
;RatioVolatiles<br />
: The ratio of volatiles in device atmosphere.<br />
<div id="RatioWater"></div><br />
;RatioWater<br />
: The ratio of water in device atmosphere.<br />
<div id="Reagents"></div><br />
;Reagents<br />
<div id="RecipeHash"></div><br />
;RecipeHash<br />
<div id="RequestHash"></div><br />
;RequestHash<br />
<div id="RequiredPower"></div><br />
;RequiredPower<br />
<div id="Setting"></div><br />
;Setting<br />
<div id="SolarAngle"></div><br />
;SolarAngle<br />
: Solar angle of the device.<br />
: <code>l r0 d0 SolarAngle # Sets r0 to the solar angle of d0.</code><br />
<div id="Temperature"></div><br />
;Temperature<br />
<div id="TemperatureSettings"></div><br />
;TemperatureSettings<br />
<div id="TotalMoles"></div><br />
;TotalMoles<br />
<div id="VelocityMagnitude"></div><br />
;VelocityMagnitude<br />
<div id="VelocityRelativeX"></div><br />
;VelocityRelativeX<br />
<div id="VelocityRelativeY"></div><br />
;VelocityRelativeY<br />
<div id="VelocityRelativeZ"></div><br />
;VelocityRelativeZ<br />
<div id="Vertical"></div><br />
;Vertical<br />
: Vertical setting of the device.<br />
<div id="VerticalRatio"></div><br />
;VerticalRatio<br />
: Ratio of vertical setting for device.<br />
<div id="Volume"></div><br />
;Volume<br />
: Returns the device atmosphere volume<br />
<br />
<br />
<br />
<br />
<br />
==Slot Variables==<br />
In general (always?) slots are assigned as follows.<br />
:Slot 0: Import<br />
:Slot 1: Export<br />
:Slot 2: Inside Machine<br />
-----<br />
<br />
<br />
<div id="Occupied"></div><br />
;Occupied<br />
:<code>ls r0 d0 2 Occupied #Stores 1 in r0 if d0 has more seeds</code><br />
:<code>ls vOccupied dThisVictim 2 Occupied #stores 1 in vOccupied if dThisVictim has more seeds</code><br />
<div id="OccupantHash"></div><br />
;OccupantHash<br />
<div id="Quantity"></div><br />
;Quantity<br />
<div id="Damage"></div><br />
;Damage<br />
<div id="Efficiency"></div><br />
;Efficiency<br />
<div id="Health"></div><br />
;Health<br />
<div id="Growth"></div><br />
;Growth<br />
:<code>ls r0 d0 0 Growth # Store the numerical growth stage of d0 in r0</code> <br />
<div id="Pressure"></div><br />
;Pressure<br />
<div id="Temperature"></div><br />
;Temperature<br />
<div id="Charge"></div><br />
;Charge<br />
<div id="ChargeRatio"></div><br />
;ChargeRatio<br />
<div id="Class"></div><br />
;Class<br />
<div id="PressureWaste"></div><br />
;PressureWaste<br />
<div id="PressureAir"></div><br />
;PressureAir<br />
<div id="MaxQuantity"></div><br />
;MaxQuantity<br />
<br />
<div id="Mature"></div><br />
;Mature<br />
:<code>ls r0 d0 0 Mature # Store 1 in r0 if d0 has a mature crop</code><br />
:<code>ls vMature dThisVictim 0 Mature # Store 1 in vMature if dThisVictim has a mature crop</code><br />
<br />
==Examples==<br />
-----<br />
<br />
<br />
====This example script automates autohydro units and powers the lights off during the day when they're not needed. (Hit Expand)====<br />
Uses aliases, sub-routines and comments to minimize lines of code and adaptability.<br />
<div class="mw-collapsible mw-collapsed" data-expandtext="{{int:Expand Sample AutoHydro Script}}" data-collapsetext="{{int:Collapse Sample AutoHydro Script}}"><br />
<pre><br />
alias vMature r0<br />
alias vOccupied r1<br />
alias isDayLight r2<br />
alias isOccupied r3<br />
alias dSensor d5<br />
<br />
<br />
#start of Program Loop<br />
start:<br />
l isDayLight dSensor Activate #Check if it's daytime or not.<br />
<br />
# For each device, harvest, plant, powerdown, then power on depending on conditions.<br />
alias dThisVictim d0 #Begin processing device 0<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d1 #Begin processing device 1<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d2 #Begin processing device 2<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d3 #Begin processing device 3<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
alias dThisVictim d4 #Begin processing device 4<br />
bdseal dThisVictim HarvestCrop<br />
bdseal dThisVictim PlantCrop<br />
bgtzal isDayLight PowerDown<br />
blezal isDayLight TurnitOn<br />
#Can't do a D5 because that's our sensor.<br />
<br />
j start #Return to the beginning of the program loop. (Yields here may save processing power)<br />
<br />
<br />
HarvestCrop:<br />
ls vMature dThisVictim 0 Mature<br />
blez vMature ra #If the crop is not mature, return<br />
s dThisVictim Harvest 1 #If the crop is mature, harvest it (one).<br />
j ra #return<br />
<br />
<br />
PlantCrop:<br />
ls vOccupied dThisVictim 2 Occupied #seeds to plant<br />
blez vOccupied ra #If the machine has no seeds to plant, return.<br />
ls vOccupied dThisVictim 0 Occupied #something growing<br />
bgtz vOccupied ra # If the crop plot is occupied, return.<br />
s dThisVictim Plant 1 # if we made it this far, plant the crop<br />
j ra #return<br />
<br />
<br />
<br />
PowerDown:<br />
s dThisVictim On 0 #Power the machine down.<br />
<br />
j ra #Jump to line we came from<br />
<br />
<br />
TurnitOn:<br />
s dThisVictim On 1 #Power the machine up<br />
j ra<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
</div><br />
<br><br />
-----<br />
<br />
<BR><br />
This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).<br />
<br />
<pre><br />
move r0 0 # Line 0: move the value 0 to register0<br />
sub r1 r0 3 # Line 1: subtract 3 from the value in r0 and write it to r1<br />
bltz r1 4 # Line 2: jump to line 4 if r1 < 0 (skip the next line)<br />
move r0 0 # Line 3: move the value 0 to register0 <br />
slt o r0 1 # Line 4: if r0 < 1 write 1 to the output, otherwise 0.<br />
add r0 r0 1 # Line 5: increment r0 by 1<br />
yield # Line 6: wait until next power tick (0.5s)<br />
j 1 # Line 7: jump back to line 1 <br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
-----<br />
<br />
Example:<br />
<br />
<pre><br />
so you will do l r0 d0 SolarAngle<br />
Sorry had last args swapped<br />
That would read in the value<br />
while,<br />
s d1 Vertical r0<br />
Would write the contents of r0 into the devices 1's Vertical property<br />
additionally you can make some aliases<br />
alias SolarSensor d0<br />
l r0 SolarSensor SolarAngle<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
-----<br />
Another example:<br />
<br />
<pre><br />
Now the IC is inserted into the housing. The screws D0-D5 can be adjusted directly to the equipment (sensor, console, solar panel, etc.). The ports 'o' and 'i0-i2' have been removed. Instead, commands that directly read and write hardware parameters are added.<br />
l <register> <data_channel> <parameter><br />
reads the value of the parameter<br />
s <data_channel> <parameter> <register_or_value><br />
writes the value of the parameter<br />
ls <register> <data_channel> <slot_number> <parameter> <br />
reads the parameter value from the slot<br />
For example, <br />
l r0 d0 Horizontal<br />
<br />
s d5 Activate 1<br />
<br />
ls r3 db 0 OccupantHash<br />
<br />
##########<br />
#### End Script<br />
##########<br />
</pre><br />
<br />
==Links==<br />
-----<br />
* [https://stationeering.com/tools/ic] Stationeering.com offers a programmable circuits simulator so you can develop your code without repeatedly dying in game!<br />
* [https://hastebin.com/uwuhidozun.md]<br />
* [http://www.easy68k.com/]<br />
<br />
==Index==<br />
-----<br />
<br />
{|<br />
|+Functions <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#abs|abs]]<br />
*[[#add|add]]<br />
*[[#alias|alias]]<br />
*[[#and|and]]<br />
*[[#beq|beq]]<br />
*[[#bgez|bgez]]<br />
*[[#bgtz|bgtz]]<br />
*[[#blez|blez]]<br />
*[[#bltz|bltz]]<br />
*[[#bne|bne]]<br />
*[[#breq|breq]]<br />
*[[#brgez|brgez]]<br />
*[[#brgtz|brgtz]]<br />
*[[#brlez|brlez]]<br />
*[[#brltz|brltz]]<br />
*[[#brne|brne]]<br />
*[[#ceil|cell]]<br />
*[[#div|div]]<br />
*[[#exp|exp]]<br />
*[[#floor|floor]]<br />
*[[#j|j]]<br />
*[[#jr|jr]]<br />
*[[#l|l]]<br />
*[[#log|log]]<br />
*[[#ls|ls]]<br />
*[[#max|max]]<br />
*[[#min|min]]<br />
*[[#mod|mod]]<br />
*[[#move|move]]<br />
*[[#mul|mul]]<br />
*[[#nor|nor]]<br />
*[[#or|or]]<br />
*[[#rand|rand]]<br />
*[[#round|round]]<br />
*[[#s|s]]<br />
*[[#slt|slt]]<br />
*[[#sqrt|sqrt]]<br />
*[[#sub|sub]]<br />
*[[#trunc|trunc]]<br />
*[[#xor|xor]]xor<br />
*[[#yield|yield]]<br />
*[[##|#]]<br />
</div><br />
<br />
<br />
|+Device Variables <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#Activate|Activate]]<br />
*[[#AirRelease|AirRelease]]<br />
*[[#Charge|Charge]]<br />
*[[#CLearMemory|CLearMemory]]<br />
*[[#Color|Color]]<br />
*[[#CompletionRatio|CompletionRatio]]<br />
*[[#ElevatorLevel|ElevatorLevel]]<br />
*[[#ElevatorSpeed|ElevatorSpeed]]<br />
*[[#Error|Error]]<br />
*[[#ExportCount|ExportCount]]<br />
*[[#Filtration|Filtration]]<br />
*[[#Harvest|Harvest]]<br />
*[[#Horizontal|Horizontal]]<br />
*[[#HorizontalRatio|HorizontalRatio]]<br />
*[[#Idle|Idle]]<br />
*[[#ImportCount|ImportCount]]<br />
*[[#Lock|Lock]]<br />
*[[#Maximum|Maximum]]<br />
*[[#Mode|Mode]]<br />
*[[#On|On]]<br />
*[[#Open|Open]]<br />
*[[#Output|Output]]<br />
*[[#Plant|Plant]]<br />
*[[#PositionX|PositionX]]<br />
*[[#PositionY|PositionY]]<br />
*[[#PositionZ|PositionZ]]<br />
*[[#Power|Power]]<br />
*[[#PowerActual|PowerActual]]<br />
*[[#PowerPotential|PowerPotential]]<br />
*[[#PowerRequired|PowerRequired]]<br />
*[[#Pressure|Pressure]]<br />
*[[#PressureExternal|PressureExternal]]<br />
*[[#PressureInteral|PressureInteral]]<br />
*[[#PressureSetting|PressureSetting]]<br />
*[[#Quantity|Quantity]]<br />
*[[#Ratio|Ratio]]<br />
*[[#RatioCarbonDioxide|RatioCarbonDioxide]]<br />
*[[#RatioNitrogen|RatioNitrogen]]<br />
*[[#RatioOxygen|RatioOxygen]]<br />
*[[#RatioPollutant|RatioPollutant]]<br />
*[[#RatioVolatiles|RatioVolatiles]]<br />
*[[#RatioWater|RatioWater]]<br />
*[[#Reagents|Reagents]]<br />
*[[#RecipeHash|RecipeHash]]<br />
*[[#RequestHash|RequestHash]]<br />
*[[#RequiredPower|RequiredPower]]<br />
*[[#Setting|Setting]]<br />
*[[#SolarAngle|SolarAngle]]<br />
*[[#Temperature|Temperature]]<br />
*[[#TemperatureSettings|TemperatureSettings]]<br />
*[[#TotalMoles|TotalMoles]]<br />
*[[#VelocityMagnitude|VelocityMagnitude]]<br />
*[[#VelocityRelativeX|VelocityRelativeX]]<br />
*[[#VelocityRelativeY|VelocityRelativeY]]<br />
*[[#VelocityRelativeZ|VelocityRelativeZ]]<br />
*[[#Vertical|Vertical]]<br />
*[[#VerticalRatio|VerticalRatio]]<br />
*[[#Volume|Volume]]<br />
<br />
<br />
<br />
</div><br />
<br />
|+Slot Variables <br />
<div class="mw-collapsible mw-collapsed"><br />
*[[#Occupied|Occupied]]<br />
*[[#OccupantHash|OccupantHash]]<br />
*[[#Quantity|Quantity]]<br />
*[[#Damage|Damage]]<br />
*[[#Efficiency|Efficiency]]<br />
*[[#Health|Health]]<br />
*[[#Growth|Growth]]<br />
*[[#Pressure|Pressure]]<br />
*[[#Temperature|Temperature]]<br />
*[[#Charge|Charge]]<br />
*[[#ChargeRatio|ChargeRatio]]<br />
*[[#Class|Class]]<br />
*[[#PressureWaste|PressureWaste]]<br />
*[[#PressureAir|PressureAir]]<br />
*[[#MaxQuantity|MaxQuantity]]<br />
*[[#Mature|Mature]]<br />
</div><br />
<br />
|}</div>Legolegs