Integrated Circuit (IC10): Difference between revisions
More actions
typo |
Equipment with IC slots |
||
| (35 intermediate revisions by 20 users not shown) | |||
| Line 1: | Line 1: | ||
The [[MIPS]] language is used. | |||
[[Category:Circuits]][[Category:Electronic]] | |||
[[Category:IC10 Programming]] | |||
{{Itembox | |||
| name = Integrated Circuit (IC10) | |||
| image = [[File:IC 10.png|thumb|IC Housing and IC10 disassembled]] | |||
| createdwith = [[Electronics Printer]] | |||
| cost = 10 [[Gold]], 4 [[Steel]], 5 [[Electrum]], 2 [[Solder]] | |||
| stacks = No | |||
}} | |||
A chip that is programmed with a computer. Place the circuit in a [[Kit (IC Housing)|IC Housing]] or directly into the programmable slot of certain devices, e.g. [[Kit (Atmospherics)|Atmospherics]]. The [[IC10]] language is used. | |||
= Where to get programs = | |||
* Write one by yourself using the [[Computer]] or [[Laptop]]. | |||
* Paste whatever you have found on the internet into your computer. | |||
* Load from your private library program you have saved previously (even from different savegame). | |||
* Get one from Steam Workshop (first subscribe in steam, then in game it will be available in "library" on computer). | |||
= How to create programs = | |||
== You'll need == | |||
# Basic knowledge about math and [[logic]] | |||
# Whatever you're intending to program (e.g.: cycling [[airlock]]) you must learn to do manually (e.g.: close doors, turn on vents, etc.) | |||
# (Optional) Learn some of the basics of 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 really not going to develop those in the game anyways. | |||
== How to start getting in IC10 programing == | |||
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. IC10 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". | |||
= How to flash program onto the IC chip = | |||
# Setup a [[Computer]], wire it to [[power]]. | |||
# Insert a [[Motherboard (IC Editor)]] in it. | |||
# Place [[Kit (IC Housing)|IC Housing]]. | |||
# Wire DATA (green, right) port of the computer to DATA (green, bottom) port on the [[IC Housing]]. | |||
## Unless you're going to actually use/test your program in this particular IC Housing you do not need to power it. | |||
# Insert [[Integrated Circuit (IC10)]] into [[Kit (IC Housing)|IC Housing]]. | |||
# 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). | |||
## Optional: click "Import" to retrieve a program from the [[Integrated Circuit (IC10)]] into the computer. | |||
# Click "Edit" to open the code editor. Write/load from "Library"/paste your program, click "Confirm". | |||
# 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]]. | |||
# When Circuit is picked up size of the stored program in bytes is shown. | |||
Note: Steps 1-6 can be used with a [[Laptop]] now as well. The laptop includes an IC housing so you don't have to place your own and wire it to edit chips. This is limited to editing chips that are in the laptop (1 at a [[time]]) and cannot be used to edit chips already on the network. | |||
= How to make use of programmed IC Integrated Circuit = | |||
# Place [[Kit (IC Housing)|IC Housing]], wire it to power, insert the Circuit | |||
# 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. | |||
# Unless you're going to modify/debug your program on place you do not require a [[Computer]] here. | |||
# 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. | |||
# Turn on the IC Housing. | |||
= How large a program can be = | |||
There are 128 lines each being 90 characters long. Each character takes 1 byte. Line breaks take 2 bytes. The Maximum size an IC chip can be is limited to 4096 bytes. | |||
= What is kept and what resets = | |||
Contrary to what maybe some players expect, the internal states of a Integrated Circuit do not get reset upon various events; furthermore, turning it off and on again does not always helps to resolve issues. The table below explains what and when is reset if ever: | |||
{| class="wikitable" | |||
|+ Circuit state | |||
|- | |||
! !! Program code !! Current line<ref name=note1>Technically the current line and error state belong to the IC housing and can be read from it via the data parameters.</ref> !! Registers !! Stack !! Error state<ref name=note1/> | |||
|- | |||
| On insertion || kept || ''resets to 0'' || kept || kept || ''cleared'' | |||
|- | |||
| On power switched or external power regained || kept || kept || kept || kept || ''cleared'' | |||
|- | |||
| On error || kept || kept || kept || kept || ''error state raised, execution paused'' | |||
|- | |||
| On program flashed from computer || ''new'' || ''resets to 0'' || kept || kept || ''cleared'' | |||
|- | |||
| On program end || kept || ''current (last) line held forever'' || kept || kept || kept | |||
|} | |||
As one can see, the chip's stack and registers are never cleared automatically. A chip that was used and repurposed multiple times might have stored all kinds of data in its memory instead of some nice and comfortable initial zeroes. If a program in its working loop relies on the certain registers being initially zeroed it might not be the case which leads to program displaying a confusing behavior. Never use initialized variables, unless you know what you're doing (which might be some high order digital wizardry like initializing the registers and stack once with some ''program1'' and then utilizing it by the ''program2''). | |||
The IC Housing's screw names set via <code>alias</code> and the <code>Setting</code> parameter are also kept in all cases unless the IC Housing gets disassembled. | |||
= Equipment with IC slots = | |||
* [[Kit (IC Housing)|IC Housing]] | |||
* [[Laptop]] | |||
* [[Hardsuit]] and [[ HARM Suit]] | |||
* [[Filtration]] | |||
* [[Combustor]] | |||
* [[Fermenter]] | |||
* [[AIMEe]] | |||
* [[Combustion Centrifuge]] | |||
''To be expanded'' | |||
= See also = | |||
* [[IC10]] — basic info and command reference | |||
* [[Advanced IC10 Programming]] | |||
* [[WebEditor]] - Various web simulators and editors for IC10. Support partially simulating presence of different devices. | |||
** [https://stationeering.com/tools/ic stationeering.com] by Melair - IC simulator and a web version of the in-game guidebook | |||
** [https://ic10.dev/ ic10.dev] by Traineratwot | |||
** [https://ic10emu.dev ic10emu.dev] by Ryex | |||
* Syntax highlighting plugins for various editors | |||
** [https://marketplace.visualstudio.com/items?itemName=Traineratwot.stationeers-ic10 Visual Studio Code] - (Dec 12th 2023) | |||
** [https://pastebin.com/6Uw1KSRN KDE kwrite/kate text editor] - (Oct 5th 2020) | |||
** [https://pastebin.com/3kmGy0NN Notepad++] - (Mar 23rd 2024) | |||
** [https://drive.google.com/file/d/1Xrv5U0ZI5jDcPv7yX7EAAxaGk5hKP0xO/view?usp=sharing Notepad++] - (Aug 11th 2022) | |||
** [https://drive.google.com/file/d/1yEsJ-u94OkuMQ8K6fY7Ja1HNpLcAdjo_/view Notepad++] - (Dec 1st 2018) | |||
* [https://github.com/jtwm-0677/Basic-10-Download BasIC-10 Download] A modernized BASIC to IC-10 compiler released in late 2025, for Stationeers MIPS Programming, Open Source, Developed in C#, no unity dependencies, By Dog Tired Studios | |||
* [https://github.com/exca/Stationeers-IC10-Automation/tree/main/Basic-IC10 BASIC compiler] A BASIC compiler for Stationeers MIPS IC10 code, developed in C#, in Unity, by Exca | |||
<references /> | |||
Latest revision as of 19:28, 9 April 2026
|
| |
| Properties | |
|---|---|
| Stacks | No |
| Recipe | |
| Created With | Electronics Printer |
| Cost | 10 Gold, 4 Steel, 5 Electrum, 2 Solder |
A chip that is programmed with a computer. Place the circuit in a IC Housing or directly into the programmable slot of certain devices, e.g. Atmospherics. The IC10 language is used.
Where to get programs
- Write one by yourself using the Computer or Laptop.
- Paste whatever you have found on the internet into your computer.
- Load from your private library program you have saved previously (even from different savegame).
- Get one from Steam Workshop (first subscribe in steam, then in game it will be available in "library" on computer).
How to create programs
You'll need
- Basic knowledge about math and logic
- Whatever you're intending to program (e.g.: cycling airlock) you must learn to do manually (e.g.: close doors, turn on vents, etc.)
- (Optional) Learn some of the basics of 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 really not going to develop those in the game anyways.
How to start getting in IC10 programing
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. IC10 keywords are abbreviations of English words and mostly make sense, eg. beqz r0 foobar means "Branch (jump) to line labeled foobar if r0 EQuals to Zero".
How to flash program onto the IC chip
- Setup a Computer, wire it to power.
- Insert a Motherboard (IC Editor) in it.
- Place IC Housing.
- Wire DATA (green, right) port of the computer to DATA (green, bottom) port on the IC Housing.
- Unless you're going to actually use/test your program in this particular IC Housing you do not need to power it.
- Insert Integrated Circuit (IC10) into IC Housing.
- 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).
- Optional: click "Import" to retrieve a program from the Integrated Circuit (IC10) into the computer.
- Click "Edit" to open the code editor. Write/load from "Library"/paste your program, click "Confirm".
- 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.
- When Circuit is picked up size of the stored program in bytes is shown.
Note: Steps 1-6 can be used with a Laptop now as well. The laptop includes an IC housing so you don't have to place your own and wire it to edit chips. This is limited to editing chips that are in the laptop (1 at a time) and cannot be used to edit chips already on the network.
How to make use of programmed IC Integrated Circuit
- Place IC Housing, wire it to power, insert the Circuit
- 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.
- Unless you're going to modify/debug your program on place you do not require a Computer here.
- Using Screwdriver adjust six (or less) screws according to program description/purpose. Many programs do assign labels to screws using
aliascommand (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. - Turn on the IC Housing.
How large a program can be
There are 128 lines each being 90 characters long. Each character takes 1 byte. Line breaks take 2 bytes. The Maximum size an IC chip can be is limited to 4096 bytes.
What is kept and what resets
Contrary to what maybe some players expect, the internal states of a Integrated Circuit do not get reset upon various events; furthermore, turning it off and on again does not always helps to resolve issues. The table below explains what and when is reset if ever:
| Program code | Current line[1] | Registers | Stack | Error state[1] | |
|---|---|---|---|---|---|
| On insertion | kept | resets to 0 | kept | kept | cleared |
| On power switched or external power regained | kept | kept | kept | kept | cleared |
| On error | kept | kept | kept | kept | error state raised, execution paused |
| On program flashed from computer | new | resets to 0 | kept | kept | cleared |
| On program end | kept | current (last) line held forever | kept | kept | kept |
As one can see, the chip's stack and registers are never cleared automatically. A chip that was used and repurposed multiple times might have stored all kinds of data in its memory instead of some nice and comfortable initial zeroes. If a program in its working loop relies on the certain registers being initially zeroed it might not be the case which leads to program displaying a confusing behavior. Never use initialized variables, unless you know what you're doing (which might be some high order digital wizardry like initializing the registers and stack once with some program1 and then utilizing it by the program2).
The IC Housing's screw names set via alias and the Setting parameter are also kept in all cases unless the IC Housing gets disassembled.
Equipment with IC slots
To be expanded
See also
- IC10 — basic info and command reference
- Advanced IC10 Programming
- WebEditor - Various web simulators and editors for IC10. Support partially simulating presence of different devices.
- stationeering.com by Melair - IC simulator and a web version of the in-game guidebook
- ic10.dev by Traineratwot
- ic10emu.dev by Ryex
- Syntax highlighting plugins for various editors
- Visual Studio Code - (Dec 12th 2023)
- KDE kwrite/kate text editor - (Oct 5th 2020)
- Notepad++ - (Mar 23rd 2024)
- Notepad++ - (Aug 11th 2022)
- Notepad++ - (Dec 1st 2018)
- BasIC-10 Download A modernized BASIC to IC-10 compiler released in late 2025, for Stationeers MIPS Programming, Open Source, Developed in C#, no unity dependencies, By Dog Tired Studios
- BASIC compiler A BASIC compiler for Stationeers MIPS IC10 code, developed in C#, in Unity, by Exca
