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

stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Glossar & Kurzreferenz

Lernen · IC10

Glossar & Kurzreferenz

Begriffe von A wie alias bis Y wie yield – und alle Befehle mit Syntax auf einen Blick.

Begriffe

alias

Gibt einem Register oder Pin einen Namen.

Lektion 9: define und alias: Code mit Namen
Batchmodus

Wie lb/lbn viele Werte zusammenfassen: Average, Sum, Minimum, Maximum, Count.

Lektion 11: Batchmodus und die NaN-Falle
Datennetz

Alle Geräte, die über Datenkabel mit dem Gehäuse verbunden sind. lb/lbn/sb/sbn erreichen sie ohne Pins.

Lektion 10: HASH() und Geräte mit Namen: lbn und sbn
db

Das Gehäuse selbst als Gerät. Hat eigene Werte wie Setting und einen eigenen Stack.

Lektion 1: Chip und Gehäuse
define

Gibt einer festen Zahl einen Namen. Kostet kein Register.

Lektion 9: define und alias: Code mit Namen
Hash / HASH()

Aus einem Namen berechnete Zahl (CRC32). HASH("…") rechnet sie beim Laden aus – für Prefabs und Gerätenamen.

Lektion 10: HASH() und Geräte mit Namen: lbn und sbn
Hauptschleife

Der Programmteil zwischen Start-Label und j start, der endlos wiederholt wird.

Lektion 6: yield und die Hauptschleife
Hysterese

Regelung mit zwei Schwellen, damit ein Gerät nicht ständig an- und ausgeht.

Lektion 12: Hysterese: Heizen ohne Flackern
IC-Gehäuse (Housing)

Das Bauteil, in das der Chip gesteckt wird. Braucht Strom und Datenkabel, hat die Pins d0–d5.

Lektion 1: Chip und Gehäuse
IC10

Der programmierbare Chip (Integrated Circuit). Steckt im IC-Gehäuse und führt dein Programm aus.

Lektion 1: Chip und Gehäuse
Kelvin

Temperatureinheit im Spiel. 0 °C = 273,15 K.

Lektion 3: Rechnen: move, add, sub, mul, div
Label

Sprungmarke: Name mit Doppelpunkt, allein auf seiner Zeile.

Lektion 7: Labels und Sprünge
LogicSlotType

Name eines Werts in einem Slot, z. B. Occupied oder Quantity.

Lektion 14: Slots: was in den Fächern liegt
LogicType

Name eines Gerätewerts, z. B. Temperature, On oder Setting. Groß-/Kleinschreibung zählt.

Lektion 5: LogicTypes: was Geräte verraten
NaN

„Keine Zahl“. Entsteht z. B. bei Average ohne passendes Gerät. Mit snan/bnan abfangen.

Lektion 11: Batchmodus und die NaN-Falle
Pin (d0–d5)

Feste Geräteanschlüsse am Gehäuse, per Schraubendreher belegt. Sechs Stück.

Lektion 4: Geräte lesen und schalten: l und s
Prefab

Interner Name eines Gerätetyps, z. B. StructureGasSensor.

Lektion 10: HASH() und Geräte mit Namen: lbn und sbn
Prüfer (Linter)

Teil des IC10-Coders, der Fehler und Fallen schon beim Tippen anzeigt.

Lektion 17: Fehlersuche und typische Fallen
ra

Rücksprungadresse (r17). jal schreibt hier die Zeile nach dem Aufruf hinein.

Lektion 16: Unterprogramme mit jal und ra
ReferenceId

Feste Nummer jedes Geräts. Mit l r0 d0 ReferenceId auslesbar und als Geräteangabe nutzbar.

Lektion 4: Geräte lesen und schalten: l und s
Register

Speicherplatz für eine Zahl. r0–r15 sind frei, sp und ra haben Sonderaufgaben.

Lektion 2: Register und Zahlen
Slot

Fach eines Geräts, nummeriert ab 0.

Lektion 14: Slots: was in den Fächern liegt
sp

Stapelzeiger (r16). Zeigt auf den nächsten freien Platz im Stack.

Lektion 15: Der Stack: push, pop, peek
Spielfassung

Kompaktierte Fassung ohne Kommentare und Leerzeilen, damit ein Programm in die Grenzen passt.

Lektion 17: Fehlersuche und typische Fallen
Sprung (absolut/relativ)

j, beq, bgt … springen zu einem Label. br…-Befehle und jr springen um eine Anzahl Zeilen.

Lektion 7: Labels und Sprünge
Stack

512 zusätzliche Speicherplätze pro Chip, als Stapel (push/pop) oder direkt (get/put) nutzbar.

Lektion 15: Der Stack: push, pop, peek
Takt (Tick)

Ein Rechenschritt des Spiels, 0,5 Sekunden. Pro Takt höchstens 128 Befehle.

Lektion 6: yield und die Hauptschleife
Unterprogramm

Codeblock, der mit jal aufgerufen wird und mit j ra zurückkehrt.

Lektion 16: Unterprogramme mit jal und ra
yield

Beendet den aktuellen Takt. Gehört in jede Hauptschleife.

Lektion 6: yield und die Hauptschleife

Befehle nach Gruppen

Kurzfassung aller aktuellen Befehle. Die ausführliche Beschreibung steht im IC10-Coder unter „Doku“.

Programm

SyntaxBedeutung
alias name r?|d?Gibt einem Register oder Pin einen eigenen, lesbaren Namen.
define name valueGibt einer festen Zahl einen Namen.
hcfHält den Chip sofort mit einer Fehlermeldung an.
sleep aPausiert den Chip für eine Anzahl Sekunden.
yieldPausiert den Chip für genau einen Tick (0,5 Sekunden).

Rechnen

SyntaxBedeutung
abs r? aMacht aus a eine positive Zahl (Betrag).
acos r? aWinkel (Bogenmaß), dessen Kosinus a ist.
add r? a bAddiert zwei Zahlen: a + b.
asin r? aWinkel (Bogenmaß), dessen Sinus a ist.
atan r? aWinkel (Bogenmaß), dessen Tangens a ist.
atan2 r? a bWinkel (Bogenmaß) zu einem Punkt aus y (a) und x (b).
ceil r? aRundet a auf die nächste ganze Zahl auf.
clamp r? a min maxBegrenzt a auf den Bereich von min bis max.
cos r? aKosinus eines Winkels in Bogenmaß (Radiant).
div r? a bTeilt a durch b: a / b.
exp r? aRechnet e hoch a.
floor r? aRundet a auf die nächste ganze Zahl ab.
lerp r? a b cMischt zwischen a und b im Verhältnis c (0 bis 1).
log r? aNatürlicher Logarithmus von a (Basis e).
max r? a bNimmt die größere von zwei Zahlen.
min r? a bNimmt die kleinere von zwei Zahlen.
mod r? a bRest einer Division: a mod b.
move r? aKopiert eine Zahl oder einen Registerinhalt in ein Register.
mul r? a bMultipliziert zwei Zahlen: a * b.
pow r? a bRechnet a hoch b.
rand r?Erzeugt eine Zufallszahl von 0 bis knapp unter 1.
round r? aRundet a auf die nächste ganze Zahl.
select r? a b cWählt b, wenn a nicht 0 ist, sonst c.
sgn r? aVorzeichen von a: -1, 0 oder 1.
sin r? aSinus eines Winkels in Bogenmaß (Radiant).
sqrt r? aZieht die Quadratwurzel aus a.
sub r? a bSubtrahiert b von a: a - b.
tan r? aTangens eines Winkels in Bogenmaß (Radiant).
trunc r? aSchneidet die Nachkommastellen von a ab.

Vergleichen

SyntaxBedeutung
sap r? a b cSetzt das Register auf 1, wenn a und b ungefähr gleich sind (Toleranz c).
sapz r? a bSetzt das Register auf 1, wenn a (praktisch genau) 0 ist, sonst auf 0.
sdns r? deviceSetzt das Register auf 1, wenn am Pin kein Gerät eingestellt ist, sonst auf 0.
sdse r? deviceSetzt das Register auf 1, wenn am Pin ein Gerät eingestellt ist, sonst auf 0.
seq r? a bSetzt das Register auf 1, wenn a genau gleich b ist, sonst auf 0.
seqz r? aSetzt das Register auf 1, wenn a genau 0 ist, sonst auf 0.
sge r? a bSetzt das Register auf 1, wenn a größer oder gleich b ist, sonst auf 0.
sgez r? aSetzt das Register auf 1, wenn a größer oder gleich 0 ist, sonst auf 0.
sgt r? a bSetzt das Register auf 1, wenn a größer als b ist, sonst auf 0.
sgtz r? aSetzt das Register auf 1, wenn a größer als 0 ist, sonst auf 0.
sle r? a bSetzt das Register auf 1, wenn a kleiner oder gleich b ist, sonst auf 0.
slez r? aSetzt das Register auf 1, wenn a kleiner oder gleich 0 ist, sonst auf 0.
slt r? a bSetzt das Register auf 1, wenn a kleiner als b ist, sonst auf 0.
sltz r? aSetzt das Register auf 1, wenn a kleiner als 0 ist, sonst auf 0.
sna r? a b cSetzt das Register auf 1, wenn a und b deutlich verschieden sind (Toleranz c).
snan r? aSetzt das Register auf 1, wenn a NaN (keine gültige Zahl) ist, sonst auf 0.
snanz r? aSetzt das Register auf 0, wenn a NaN ist, sonst auf 1 – also 1 = gültig.
snaz r? a bSetzt das Register auf 1, wenn a nicht (praktisch genau) 0 ist, sonst auf 0.
sne r? a bSetzt das Register auf 1, wenn a ungleich b ist, sonst auf 0.
snez r? aSetzt das Register auf 1, wenn a nicht 0 ist, sonst auf 0.

Springen

SyntaxBedeutung
bap a b c lineSpringt zu einem Label, wenn a ungefähr gleich b ist.
bapal a b c lineRuft ein Unterprogramm auf, wenn a ungefähr gleich b ist (Rückweg in ra).
bapz a b lineSpringt zu einem Label, wenn a (praktisch genau) 0 ist.
bapzal a b lineRuft ein Unterprogramm auf, wenn a (praktisch genau) 0 ist (Rückweg in ra).
bdns device lineSpringt zu einem Label, wenn am Anschluss kein Gerät eingestellt ist.
bdnsal device lineRuft ein Unterprogramm auf, wenn kein Gerät eingestellt ist (Rückweg in ra).
bdnvl device logicType lineSpringt zu einem Label, wenn das Gerät diesen Wert nicht liefern kann.
bdnvs device logicType lineSpringt zu einem Label, wenn das Gerät diesen Wert nicht annehmen kann.
bdse device lineSpringt zu einem Label, wenn am Anschluss ein Gerät eingestellt ist.
bdseal device lineRuft ein Unterprogramm auf, wenn ein Gerät eingestellt ist (Rückweg in ra).
beq a b lineSpringt zu einem Label, wenn a gleich b ist.
beqal a b lineRuft ein Unterprogramm auf, wenn a gleich b ist (Rückweg in ra).
beqz a lineSpringt zu einem Label, wenn a gleich 0 ist.
beqzal a lineRuft ein Unterprogramm auf, wenn a gleich 0 ist (Rückweg in ra).
bge a b lineSpringt zu einem Label, wenn a größer oder gleich b ist.
bgeal a b lineRuft ein Unterprogramm auf, wenn a größer oder gleich b ist (Rückweg in ra).
bgez a lineSpringt zu einem Label, wenn a größer oder gleich 0 ist.
bgezal a lineRuft ein Unterprogramm auf, wenn a größer oder gleich 0 ist (Rückweg in ra).
bgt a b lineSpringt zu einem Label, wenn a größer als b ist.
bgtal a b lineRuft ein Unterprogramm auf, wenn a größer als b ist (Rückweg in ra).
bgtz a lineSpringt zu einem Label, wenn a größer als 0 ist.
bgtzal a lineRuft ein Unterprogramm auf, wenn a größer als 0 ist (Rückweg in ra).
ble a b lineSpringt zu einem Label, wenn a kleiner oder gleich b ist.
bleal a b lineRuft ein Unterprogramm auf, wenn a kleiner oder gleich b ist (Rückweg in ra).
blez a lineSpringt zu einem Label, wenn a kleiner oder gleich 0 ist.
blezal a lineRuft ein Unterprogramm auf, wenn a kleiner oder gleich 0 ist (Rückweg in ra).
blt a b lineSpringt zu einem Label, wenn a kleiner als b ist.
bltal a b lineRuft ein Unterprogramm auf, wenn a kleiner als b ist (Rückweg in ra).
bltz a lineSpringt zu einem Label, wenn a kleiner als 0 ist.
bltzal a lineRuft ein Unterprogramm auf, wenn a kleiner als 0 ist (Rückweg in ra).
bna a b c lineSpringt zu einem Label, wenn a nicht ungefähr gleich b ist.
bnaal a b c lineRuft ein Unterprogramm auf, wenn a nicht ungefähr gleich b ist (Rückweg in ra).
bnan a lineSpringt zu einem Label, wenn a keine gültige Zahl (NaN) ist.
bnaz a b lineSpringt zu einem Label, wenn a nicht 0 ist.
bnazal a b lineRuft ein Unterprogramm auf, wenn a nicht 0 ist (Rückweg in ra).
bne a b lineSpringt zu einem Label, wenn a ungleich b ist.
bneal a b lineRuft ein Unterprogramm auf, wenn a ungleich b ist (Rückweg in ra).
bnez a lineSpringt zu einem Label, wenn a ungleich 0 ist.
bnezal a lineRuft ein Unterprogramm auf, wenn a ungleich 0 ist (Rückweg in ra).
brap a b c offsetSpringt d Zeilen vor oder zurück, wenn a ungefähr gleich b ist.
brapz a b offsetSpringt c Zeilen vor oder zurück, wenn a (praktisch genau) 0 ist.
brdns device offsetSpringt a Zeilen vor oder zurück, wenn kein Gerät eingestellt ist.
brdse device offsetSpringt a Zeilen vor oder zurück, wenn ein Gerät eingestellt ist.
breq a b offsetSpringt c Zeilen vor oder zurück, wenn a gleich b ist.
breqz a offsetSpringt b Zeilen vor oder zurück, wenn a gleich 0 ist.
brge a b offsetSpringt c Zeilen vor oder zurück, wenn a größer oder gleich b ist.
brgez a offsetSpringt b Zeilen vor oder zurück, wenn a größer oder gleich 0 ist.
brgt a b offsetSpringt c Zeilen vor oder zurück, wenn a größer als b ist.
brgtz a offsetSpringt b Zeilen vor oder zurück, wenn a größer als 0 ist.
brle a b offsetSpringt c Zeilen vor oder zurück, wenn a kleiner oder gleich b ist.
brlez a offsetSpringt b Zeilen vor oder zurück, wenn a kleiner oder gleich 0 ist.
brlt a b offsetSpringt c Zeilen vor oder zurück, wenn a kleiner als b ist.
brltz a offsetSpringt b Zeilen vor oder zurück, wenn a kleiner als 0 ist.
brna a b c offsetSpringt d Zeilen vor oder zurück, wenn a nicht ungefähr gleich b ist.
brnan a offsetSpringt b Zeilen vor oder zurück, wenn a NaN (keine Zahl) ist.
brnaz a b offsetSpringt c Zeilen vor oder zurück, wenn a nicht 0 ist.
brne a b offsetSpringt c Zeilen vor oder zurück, wenn a ungleich b ist.
brnez a offsetSpringt b Zeilen vor oder zurück, wenn a ungleich 0 ist.
j lineSpringt immer zu einem Label - ohne Bedingung.
jal lineRuft ein Unterprogramm auf und merkt sich den Rückweg in ra.
jr offsetSpringt immer um eine feste Anzahl Zeilen vor oder zurück.

Geräte

SyntaxBedeutung
l r? device logicTypeLiest einen Wert aus einem Gerät in ein Register.
lr r? device reagentMode reagentHashLiest, wie viel einer Zutat (Reagenz) ein Gerät hat oder braucht.
ls r? device slotIndex logicSlotTypeLiest einen Wert aus einem Fach (Slot) eines Geräts.
rmap r? d? reagentHashFindet zu einer Zutat das Item, das ein Gerät dafür annimmt.
s device logicType valueSchreibt einen Wert aus einem Register in ein Gerät.
ss device slotIndex logicSlotType valueSchreibt einen Wert in das Teil, das in einem Fach eines Geräts steckt.

Batch

SyntaxBedeutung
lb r? deviceHash logicType batchModeLiest einen Wert von allen Geräten eines Typs im Datennetz.
lbn r? deviceHash nameHash logicType batchModeLiest einen Wert von allen Geräten eines Typs mit einem bestimmten Namen.
lbns r? deviceHash nameHash slotIndex logicSlotType batchModeLiest einen Fach-Wert von allen Geräten eines Typs mit bestimmtem Namen.
lbs r? deviceHash slotIndex logicSlotType batchModeLiest einen Fach-Wert von allen Geräten eines Typs im Datennetz.
sb deviceHash logicType valueSchreibt einen Wert in alle Geräte eines Typs im Datennetz.
sbn deviceHash nameHash logicType valueSchreibt einen Wert in alle Geräte eines Typs mit einem bestimmten Namen.
sbs deviceHash slotIndex logicSlotType valueSchreibt einen Fach-Wert in alle Geräte eines Typs im Datennetz.

Speicher

SyntaxBedeutung
clr d?Löscht den ganzen Speicher (Stack) eines Geräts an einem Pin.
clrd idLöscht den Speicher (Stack) eines Geräts über seine ReferenceId.
get r? device addressLiest eine Zahl aus dem Speicher eines Geräts, z. B. eines anderen Chips.
peek r?Liest die oberste Zahl vom Stack, ohne sie zu entfernen.
poke address valueSchreibt eine Zahl an eine bestimmte Stelle im Stack.
pop r?Nimmt die oberste Zahl vom Stack und legt sie in ein Register.
push aLegt eine Zahl oben auf den Stack (Stapelspeicher).
put device address valueSchreibt eine Zahl in den Speicher eines Geräts, z. B. eines anderen Chips.

Bits

SyntaxBedeutung
and r? a bBitweises UND: nur Bits, die in a und in b 1 sind.
ext r? a b cHolt ein Bitfeld aus a: ab Bit b, c Bits lang.
ins r? a b cSetzt die unteren c Bits von a ab Bit b ins Register ein.
nor r? a bBitweises NICHT-ODER: Bits, die in a und in b 0 sind.
not r? aBitweises NICHT: dreht jedes Bit von a um.
or r? a bBitweises ODER: Bits, die in a oder in b 1 sind.
rol r? a bRotiert die Bits von a um b Stellen nach links.
ror r? a bRotiert die Bits von a um b Stellen nach rechts.
sla r? a bSchiebt die Bits von a um b Stellen nach links (wie sll).
sll r? a bSchiebt die Bits von a um b Stellen nach links.
sra r? a bSchiebt die Bits von a nach rechts, das Vorzeichen bleibt.
srl r? a bSchiebt die Bits von a nach rechts, links kommen Nullen nach.
xor r? a bBitweises Entweder-oder: Bits, die in a und b verschieden sind.
Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall