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. Typische IC10-Fehler

IC10

Typische IC10-Fehler

Die Fehler, die fast jeder einmal macht, woran man sie erkennt und wie man sie behebt, dazu die Fehlercodes des Chips.

Zuletzt geändert: 07.10.2026

Manche Fehler meldet der Chip sofort mit Fehlercode. Die gemeinen melden gar nichts: Das Programm läuft, tut aber nicht, was es soll. Hier die Klassiker, sortiert nach Gemeinheit.

Die stillen Fehler

Programm läuft hinter die letzte Zeile

Symptom: Der Chip hat einmal funktioniert und tut seitdem nichts mehr. Keine Fehlerlampe.

Ursache: Erreicht der Chip das Programmende, bleibt er dort stehen. Er fängt nicht von selbst wieder oben an. Erst Rausnehmen und Wiedereinsetzen des Chips setzt ihn zurück.

Lösung: Jede Hauptschleife endet mit einem Sprung zurück, etwa j start.

NaN, weil kein Gerät passt

Symptom: Eine Regelung schaltet nie, obwohl der Wert eindeutig über der Grenze liegt.

Ursache: lbn mit Batchmodus 0 (Average) liefert NaN, wenn kein Gerät mit diesem Typ und Namen im Datennetz hängt. Ein Buchstabe falsch, ein Leerzeichen zu viel, Groß- statt Kleinschreibung, falscher Prefab-Hash, und schon ist es so weit. Jeder Vergleich mit NaN ist falsch, deshalb springt kein blt und kein bgt.

Lösung: Nach jedem Lesen prüfen:

lbn tRaum SENSOR HASH("Raum") Temperature 0
bnan tRaum start

Zum Nachzählen gibt es Batchmodus 4 (Count). Er liefert die Anzahl der passenden Geräte:

lbn anzahl SENSOR HASH("Raum") Temperature 4

Kommt 0 heraus, stimmt der Name oder der Typ nicht.

Hinweis

Batchmodus 3 (Maximum) liefert ohne Treffer nicht NaN, sondern minus unendlich. Minimum und Sum liefern 0. Auch das sieht harmlos aus und ist es nicht.

Sum statt Average

Symptom: Alles lief, bis jemand einen zweiten Sensor mit demselben Namen gebaut hat. Seitdem zeigt der Raum 600 K.

Ursache: Batchmodus 1 (Sum) addiert. Mit einem Gerät fällt das nicht auf, mit zwei verdoppelt sich der Wert.

Lösung: Für Messwerte immer 0 (Average).

Exakter Vergleich mit Kommazahlen

Symptom: beq tRaum 293.15 ziel springt nie.

Ursache: Messwerte und Rechenergebnisse landen praktisch nie genau auf einer Zahl. 293.1500001 ist nicht 293.15.

Lösung: Mit Grenzen arbeiten (blt, bgt) oder mit Toleranz vergleichen (bap, sap):

bap tRaum 293.15 0.01 ziel

Relativer Sprung mit Label

Symptom: Das Programm springt irgendwohin.

Ursache: Befehle mit r im Namen (jr, breq, brlt …) springen relativ, also um eine Anzahl Zeilen. Ein Label dahinter wird als Zahl genommen und zur aktuellen Zeile addiert. Kein Fehler, nur Chaos.

Lösung: Mit Labels nur j, jal und die b…-Befehle ohne r benutzen.

Zeilennummern als Sprungziel

Symptom: Nach dem Einfügen einer Kommentarzeile ist alles kaputt.

Ursache: j 12 springt zu Zeile 12. Jede eingefügte Zeile, auch eine leere oder ein Kommentar, verschiebt alles darunter.

Lösung: Labels.

Kein yield

Symptom: Keins, oder ein seltsam zuckendes Verhalten.

Ursache: Ohne yield führt der Chip pro Takt 128 Anweisungen aus und macht im nächsten Takt mitten in der Schleife weiter. Er liest dabei immer wieder dieselben, noch nicht aktualisierten Werte.

Lösung: yield an den Anfang der Hauptschleife.

Umlaute in HASH

Symptom: HASH("Küche") findet das Gerät „Küche“ nicht.

Ursache: Der Chip speichert nur einfache Zeichen. Beim Schreiben auf den Chip wird aus dem Umlaut etwas anderes, und der Hash passt nicht mehr zum Namen am Gerät.

Lösung: Geräte ohne Umlaute benennen: „Kueche“.

LED-Anzeige zeigt 294 °C

Ursache: Die LED-Anzeige im Celsius-Modus hängt nur „°C“ an den Wert, rechnet aber nicht um.

Lösung: Vor dem Schreiben 273.15 abziehen.

sleep wartet viel zu lange

Ursache: sleep rechnet in Sekunden, nicht in Takten. sleep 10 sind 10 Sekunden, also 20 Takte.

Die lauten Fehler

Befehl unbekannt

Befehle sind exakt und klein geschrieben. L r0 d0 Setting ist falsch, l r0 d0 Setting richtig. Häufige Verwechslungen aus anderen Sprachen:

FalschRichtig
movmove
jmpj
call, retjal und j ra
inc r0add r0 r0 1
log10gibt es nicht; log ist der natürliche Logarithmus
nopgibt es nicht

Zahl mit Exponent

1e5 ist für den Chip keine Zahl. Ausschreiben: 100000.

LogicType an einer Zahlenstelle

An der Stelle, wo ein LogicType erwartet wird, reicht der Name: l r0 d0 Temperature. Überall sonst braucht er den Vorsatz: move r0 LogicType.Temperature.

Gerät kann den Wert nicht

Nicht jedes Gerät kennt jeden LogicType, und längst nicht jeder Wert lässt sich schreiben. Liest oder schreibt der Chip etwas, das das Gerät nicht kann, hält er an. Welche Werte ein Gerät hat, zeigt die Stationpedia im Spiel.

Register außerhalb von r0 bis r15

r16 ist sp, r17 ist ra. Wer sie als normale Register benutzt, zerschießt sich Stapel und Unterprogramme. Mehr als r17 gibt es nicht.

Kein Datenkabel am Gehäuse

lbn, sbn und Co. laufen über das Datennetz. Hängt das IC-Gehäuse an keinem Datenkabel, hält der Chip mit Fehler an.

Doppelte Namen

Zweimal dasselbe define oder zweimal dasselbe Label ergibt einen Fehler.

put mit vertauschten Werten

Die Reihenfolge ist put gerät adresse wert. Wer Adresse und Wert tauscht, schreibt an eine falsche Stelle.

Programm zu lang

GrenzeWert
Zeilen128
Zeichen pro Zeile90
Zeichen gesamt4096

Alles zählt mit, auch Kommentare und Leerzeilen. Bei vielen Kommentaren platzt meist zuerst das Zeichenlimit.

Die Fehlercodes

Bricht der Chip mit Fehler ab, gehört dazu ein Fehlercode. Die wichtigsten:

CodeNameBedeutung
2IncorrectVariableOperand ist an dieser Stelle falsch
3IncorrectVariableTypefalscher Typ, etwa Register statt Gerät
4IncorrectLogicTypeunbekannter oder unpassender LogicType
6IncorrectArgumentCountzu viele oder zu wenige Operanden
7DeviceNotSetam Pin hängt kein Gerät
8JumpTagDuplicateLabel doppelt
9UnrecognisedInstructionBefehl unbekannt (Tippfehler, Großschreibung)
11OutOfRegisterBoundsRegister außerhalb des Bereichs
12OutOfDeviceBoundsPin außerhalb von d0–d5
17StackOverFlowStapel voll
18StackUnderFlowpop auf leeren Stapel
19ExtraDefineName schon vergeben
20DeviceListNullkein Datennetz am Gehäuse
25DeviceNotFoundGerät mit dieser ReferenceId nicht gefunden
38AliasNotFoundalias-Name unbekannt

Fehler schneller finden

  • Werte sichtbar machen: Zwischenergebnisse auf eine LED-Anzeige schreiben (sbn mit Setting) oder mit s db Setting r0 ins Gehäuse.
  • Klein anfangen: Erst nur lesen und anzeigen, dann schalten.
  • Mit Count zählen, ob die Geräte überhaupt gefunden werden.
  • Im Tablet testen: Das IC10 Editor-Tablet zeigt Fehler und Warnungen schon beim Tippen, kennt die stillen Fallen von oben und hat einen Simulator mit dem echten Interpreter des Spiels.
Fehler entdeckt? Sag Bescheid. Support
Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall