An IC10 chip reads values, does math and switches devices – twice per second, even while you are out mining ore. This page is about the hardware: which parts you need, how they connect and what a first program looks like that actually runs. The language itself is taught step by step in the IC10 academy.
What you need
| Part | Job | made in |
|---|---|---|
| Kit (IC Housing) | builds the IC Housing or the IC Housing (Compact) | Electronics Printer |
| Integrated Circuit (IC10) | the chip that holds the program | Electronics Printer |
| IC Editor Motherboard | turns a computer into a code editor | Electronics Printer |
| Computer (Modern) | the screen where you write the code | kit from the Electronics Printer |
| Cable Coil | ties everything into one network | – |
According to the game data all of these only need the first printer tier. The portable Laptop is the exception: it requires tier two.
How it all connects
The normal IC housing mounts on a wall or floor and has two ports: one for data and one for power. It draws 50 W. The compact housing also draws 50 W but has only one shared port for power and data. Both are built from the same kit.
A cable network carries power and data at the same time. Everything attached to the same cables is a device on the data network as far as the chip is concerned. The Gas Sensor shows this nicely: it only has a data port and still gets its 1 W through it.
The chip goes into the housing's only slot. After that the program reaches devices in two ways:
- through the six pins
d0tod5, which you assign to a device on the housing, - by name with
lbnandsbn– without a pin limit, see IC10: control a device by name.
Inside the program the housing itself is called db. Its Setting appears on the small display of the housing – the simplest way to make a value visible.
The output of an Area Power Control only carries power. Devices behind it sit in a separate network that the chip on the main network cannot see.
Uploading the code
Put the IC Editor Motherboard into the computer's motherboard slot. The computer has its own slot for it, plus two slots for data disks, and needs 200 W. Computer and housing must be on the same data network. On the screen you pick the housing, type or paste the code and transfer it to the chip.
On the move the laptop does the job: it has one slot each for a chip, a battery and a motherboard.
It is more comfortable to write in the IC10 editor on this site and copy the finished code into the game. The lesson editor workflow shows the details. Since July 2026 the game also shows an error in the chip's tooltip.
The hard limits
| Limit | Value |
|---|---|
| Lines per program | 128 |
| Characters per line | 90 |
| Characters in total | 4096 |
| Free registers | r0 to r15 (plus sp = r16, ra = r17) |
| Instructions per tick | 128 |
| Tick length | 0.5 s |
| Stack | 512 entries |
Everything counts: blank lines, comments, labels, define and alias lines.
A quick calculation shows which limit hits you first: 4096 characters divided by 128 lines is an average of 32 characters per line. A line like lbn pressure SENSOR NSENSOR Pressure 0 # storage pressure already has 59. With detailed comments the character limit is almost always the one that binds, not the line count.
Three traps that catch everyone once
1. The program must never run to its end. Once the program counter is past the last line, the chip stays stopped for good – without an error message. Only taking the chip out and putting it back restarts it. That is why every program ends with a jump back, for example j start.
2. Every loop needs yield. Without yield the chip runs exactly 128 instructions, stops in the middle of the loop and carries on there in the next tick. There is no error. But device values only change once per tick – the loop reads the same value 128 times. yield waits exactly one tick.
3. define only takes real numbers. Allowed are numbers, constants such as pi or nan, names such as Color.Red and anything that becomes a number when the script is saved (HASH("…"), STR("…")). Another define as the value is not allowed – the game reports no error, the value simply becomes NaN:
define TARGET 101 # good: a number
define NSTORE HASH("Storage Sensor") # good: becomes a number on save
If you need the same value twice, write the number out twice. A define with another define behind it gives NaN, and NaN breaks every comparison after it.
Your first program: showing the temperature
A gas sensor named “Lab Sensor” measures the air. The housing shows the temperature in degrees Celsius. If the sensor is missing, −999 appears as a warning.
# Show a gas sensor's temperature on the housing
define SENSOR -1252983604 # Gas Sensor (StructureGasSensor)
define NSENSOR HASH("Lab Sensor") # name in game
define CELSIUSOFFSET 273.15 # kelvin minus 273.15 = degrees Celsius
define MISSING -999 # shown when no sensor is found
alias kelvin r0
alias celsius r1
start:
yield
lbn kelvin SENSOR NSENSOR Temperature 0
bnan kelvin nosensor # NaN: wrong name or sensor gone
sub celsius kelvin CELSIUSOFFSET
s db Setting celsius # show on the housing
j start
nosensor:
s db Setting MISSING
j start
How the program works:
lbnreads the temperature of all gas sensors with this name, batch mode 0 takes the average.- If there is no such sensor, mode 0 returns NaN.
bnanthen jumps tonosensor. subconverts: if the sensor measures 293.15 K, then after 293.15 − 273.15 the housing shows 20.- Both paths end with
j start, andyieldsits at the top of the loop.
You give the name with the Labeller. Keep it to plain ASCII letters, without accents or umlauts. The code is converted to ASCII when it is transferred, and with one changed letter the hash no longer matches the name in the game.
When it does not run
- The display stays dark: does the housing have power? Is the chip inserted? Is the housing switched on (
On)? - The chip stops with an error:
ErrorandLineNumberof the housing show whether and where it stalls. If the housing is not on any data network at all, every by-name instruction stops the chip. The same happens when a device does not know a logic type – which values a device has is listed on its page under “IC10 and logic”. - −999 appears: the name does not match. Check for typos, spaces and special letters.
- The value never changes: without
j startthe chip has stopped at the end of the program.
Next steps
- IC10: control a device by name – many devices by name, batch mode, a complete control example
- Displays and consoles: LED displays, consoles, circuit boards – values on LED displays instead of only on the housing
- Logic without a chip: reader, writer, memory, compare, math – simple tasks with no program at all
- Academy: chip and housing, yield and the loop, define and alias
- Try code: IC10 editor