Aktuell kommt es zu Probleme mit dem Email Versand dies wird schnellstmöglich behoben.

stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. Wiki
  3. IC10
  4. So schreibe ich IC10

IC10

So schreibe ich IC10

Die Regeln, nach denen alle meine Chips aufgebaut sind, mit einem vollständigen Beispielprogramm zum Nachbauen.

Zuletzt geändert: 07.10.2026

IC10-Code wird selten einmal geschrieben und nie wieder angefasst. Spätestens wenn die Basis wächst, öffnet man den Chip wieder und fragt sich, was blt r3 r7 12 eigentlich tun sollte. Die Regeln hier sorgen dafür, dass man es auch nach Wochen noch auf einen Blick sieht.

Die Regeln

1. Jede Zahl bekommt ein define

Jeder Prefab-Hash und jeder Schwellwert steht oben als define, mit einem Kommentar dahinter, was er bedeutet. Im eigentlichen Programm steht nie eine rohe Hash-Zahl.

define AKKU -1388288459     # Stationsbatterie (gross)
define START_UNTER 0.30     # unter 30 % Generator an

2. Jedes Register bekommt ein alias

Direkt nach den define-Zeilen folgt der alias-Block. Jedes Register, das im Programm vorkommt, hat einen Namen. r0 liest sich schlecht, akku sofort.

alias akku r0
alias laeuft r1

3. Geräte über lbn und sbn mit Namen

Geräte werden über das Datennetz mit Typ und Namen angesprochen, nicht über die Pins d0–d5:

lbn akku AKKU HASH("Akku") Ratio 0

Das hat drei Vorteile: kein Limit von sechs Geräten, keine Pin-Einstellung am Gehäuse, die beim Umbauen verloren geht, und mehrere gleichnamige Geräte werden automatisch zusammen behandelt. Die Geräte benennst du im Spiel mit dem Beschriftungsgerät. Ohne Umlaute, siehe unten.

4. Batchmodus immer 0

Beim Lesen mit lbn steht am Ende immer 0 (Average). Hängen drei Batterien namens „Akku“ im Netz, kommt der Durchschnitt heraus, und der ist bei einer Füllstandsangabe genau das, was man will. Mit Sum würde aus drei halbvollen Batterien eine anderthalbfach volle.

5. yield in jeder Hauptschleife

Ohne yield arbeitet der Chip seine 128 Anweisungen pro Takt stur ab und liest dabei immer wieder dieselben, noch nicht aktualisierten Werte. Mit yield läuft die Schleife genau einmal pro Takt.

6. Endlosschleife ist Pflicht

Erreicht der Chip das Ende des Programms, bleibt er stehen und startet nicht von selbst neu. Kein Fehler, keine Warnung, einfach Stille. Jedes Programm endet deshalb mit j start.

7. Nur Labels als Sprungziel

Gesprungen wird zu start:, an:, aus:, nie zu einer Zeilennummer.

8. Temperaturen als Kelvin mit Celsius im Kommentar

Das Spiel rechnet in Kelvin. Schwellwerte stehen deshalb als Kelvin-Zahl im define, die Celsius-Angabe dahinter im Kommentar:

define WARM 298.15          # 25 C

Wer lieber in Celsius denkt, rechnet einmal am Anfang um:

define CELSIUSOFFSET 273.15 # 0 C in Kelvin
alias ziel r2
add ziel 21 CELSIUSOFFSET   # 21 C

9. Ordnung im Code

  • Deutsche Kommentare, ohne Umlaute im Code (ae, oe, ue, ss).
  • Abschnitte mit einer Überschrift als Kommentar: # --- 1. Messen ---.
  • Keine veralteten Befehle wie ld, sd, getd, putd oder label. l, s, get und put können dasselbe.

Das Beispiel: Notstrom-Generator

Der Gas-Generator des Spiels (Gas Fuel Generator) soll anspringen, wenn die Batterien unter 30 % fallen, und erst wieder ausgehen, wenn sie über 90 % sind. Eine kleine LED-Anzeige zeigt den Ladestand in Prozent.

Geräte im Spiel benennen:

GerätName
Stationsbatterie (groß), eine oder mehrereAkku
Gas Fuel GeneratorGenerator
LED-Anzeige (klein)Akkustand

Alle hängen mit dem IC-Gehäuse am selben Datennetz.

# Notstrom: Generator nach Akkustand
# --- 0. Konstanten ---
define AKKU -1388288459     # Stationsbatterie (gross)
define GENERATOR 1165997963 # Gas Fuel Generator
define ANZEIGE -815193061   # LED-Anzeige (klein)
define START_UNTER 0.30     # unter 30 % an
define STOPP_UEBER 0.90     # ueber 90 % aus
# --- Register ---
alias akku r0
alias laeuft r1
alias prozent r2
move laeuft 0
start:
yield
# --- 1. Messen ---
lbn akku AKKU HASH("Akku") Ratio 0
bnan akku start
# --- 2. Entscheiden ---
blt akku START_UNTER an
bgt akku STOPP_UEBER aus
j schalten
an:
move laeuft 1
j schalten
aus:
move laeuft 0
# --- 3. Schalten und anzeigen ---
schalten:
sbn GENERATOR HASH("Generator") On laeuft
mul prozent akku 100
sbn ANZEIGE HASH("Akkustand") Setting prozent
j start

Was du verstellen darfst:

  • START_UNTER und STOPP_UEBER: die Schaltschwellen als Anteil von 0 bis 1. Der Abstand dazwischen verhindert ständiges An und Aus.
  • Die Namen in HASH("..."), wenn deine Geräte anders heißen.

Wenn ein Gerät fehlt:

  • Keine Batterie namens „Akku“ im Netz: lbn liefert NaN, bnan springt zurück, es wird nichts geschaltet. Der Generator bleibt, wie er war.
  • Kein Generator namens „Generator“: sbn schreibt ins Leere, das Programm läuft trotzdem weiter.

Warum dieser Aufwand?

Weil man Fehler in so einem Programm in Sekunden findet. Jede Zahl hat einen Namen, jedes Register eine Bedeutung, jeder Sprung ein Ziel mit Sinn. Und wer das Programm für seine Basis anpassen will, ändert oben zwei Zeilen statt unten zwanzig.

Das IC10 Editor-Tablet prüft diese Regeln auf Wunsch mit und baut aus seinen Vorlagen Code genau in diesem Stil. Die häufigsten Fehler stehen unter Typische Fehler.

Fehler entdeckt? Sag Bescheid. Support
Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall