- Start
- IC10-Akademie
- 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
| Syntax | Bedeutung |
|---|---|
| alias name r?|d? | Gibt einem Register oder Pin einen eigenen, lesbaren Namen. |
| define name value | Gibt einer festen Zahl einen Namen. |
| hcf | Hält den Chip sofort mit einer Fehlermeldung an. |
| sleep a | Pausiert den Chip für eine Anzahl Sekunden. |
| yield | Pausiert den Chip für genau einen Tick (0,5 Sekunden). |
Rechnen
| Syntax | Bedeutung |
|---|---|
| abs r? a | Macht aus a eine positive Zahl (Betrag). |
| acos r? a | Winkel (Bogenmaß), dessen Kosinus a ist. |
| add r? a b | Addiert zwei Zahlen: a + b. |
| asin r? a | Winkel (Bogenmaß), dessen Sinus a ist. |
| atan r? a | Winkel (Bogenmaß), dessen Tangens a ist. |
| atan2 r? a b | Winkel (Bogenmaß) zu einem Punkt aus y (a) und x (b). |
| ceil r? a | Rundet a auf die nächste ganze Zahl auf. |
| clamp r? a min max | Begrenzt a auf den Bereich von min bis max. |
| cos r? a | Kosinus eines Winkels in Bogenmaß (Radiant). |
| div r? a b | Teilt a durch b: a / b. |
| exp r? a | Rechnet e hoch a. |
| floor r? a | Rundet a auf die nächste ganze Zahl ab. |
| lerp r? a b c | Mischt zwischen a und b im Verhältnis c (0 bis 1). |
| log r? a | Natürlicher Logarithmus von a (Basis e). |
| max r? a b | Nimmt die größere von zwei Zahlen. |
| min r? a b | Nimmt die kleinere von zwei Zahlen. |
| mod r? a b | Rest einer Division: a mod b. |
| move r? a | Kopiert eine Zahl oder einen Registerinhalt in ein Register. |
| mul r? a b | Multipliziert zwei Zahlen: a * b. |
| pow r? a b | Rechnet a hoch b. |
| rand r? | Erzeugt eine Zufallszahl von 0 bis knapp unter 1. |
| round r? a | Rundet a auf die nächste ganze Zahl. |
| select r? a b c | Wählt b, wenn a nicht 0 ist, sonst c. |
| sgn r? a | Vorzeichen von a: -1, 0 oder 1. |
| sin r? a | Sinus eines Winkels in Bogenmaß (Radiant). |
| sqrt r? a | Zieht die Quadratwurzel aus a. |
| sub r? a b | Subtrahiert b von a: a - b. |
| tan r? a | Tangens eines Winkels in Bogenmaß (Radiant). |
| trunc r? a | Schneidet die Nachkommastellen von a ab. |
Vergleichen
| Syntax | Bedeutung |
|---|---|
| sap r? a b c | Setzt das Register auf 1, wenn a und b ungefähr gleich sind (Toleranz c). |
| sapz r? a b | Setzt das Register auf 1, wenn a (praktisch genau) 0 ist, sonst auf 0. |
| sdns r? device | Setzt das Register auf 1, wenn am Pin kein Gerät eingestellt ist, sonst auf 0. |
| sdse r? device | Setzt das Register auf 1, wenn am Pin ein Gerät eingestellt ist, sonst auf 0. |
| seq r? a b | Setzt das Register auf 1, wenn a genau gleich b ist, sonst auf 0. |
| seqz r? a | Setzt das Register auf 1, wenn a genau 0 ist, sonst auf 0. |
| sge r? a b | Setzt das Register auf 1, wenn a größer oder gleich b ist, sonst auf 0. |
| sgez r? a | Setzt das Register auf 1, wenn a größer oder gleich 0 ist, sonst auf 0. |
| sgt r? a b | Setzt das Register auf 1, wenn a größer als b ist, sonst auf 0. |
| sgtz r? a | Setzt das Register auf 1, wenn a größer als 0 ist, sonst auf 0. |
| sle r? a b | Setzt das Register auf 1, wenn a kleiner oder gleich b ist, sonst auf 0. |
| slez r? a | Setzt das Register auf 1, wenn a kleiner oder gleich 0 ist, sonst auf 0. |
| slt r? a b | Setzt das Register auf 1, wenn a kleiner als b ist, sonst auf 0. |
| sltz r? a | Setzt das Register auf 1, wenn a kleiner als 0 ist, sonst auf 0. |
| sna r? a b c | Setzt das Register auf 1, wenn a und b deutlich verschieden sind (Toleranz c). |
| snan r? a | Setzt das Register auf 1, wenn a NaN (keine gültige Zahl) ist, sonst auf 0. |
| snanz r? a | Setzt das Register auf 0, wenn a NaN ist, sonst auf 1 – also 1 = gültig. |
| snaz r? a b | Setzt das Register auf 1, wenn a nicht (praktisch genau) 0 ist, sonst auf 0. |
| sne r? a b | Setzt das Register auf 1, wenn a ungleich b ist, sonst auf 0. |
| snez r? a | Setzt das Register auf 1, wenn a nicht 0 ist, sonst auf 0. |
Springen
| Syntax | Bedeutung |
|---|---|
| bap a b c line | Springt zu einem Label, wenn a ungefähr gleich b ist. |
| bapal a b c line | Ruft ein Unterprogramm auf, wenn a ungefähr gleich b ist (Rückweg in ra). |
| bapz a b line | Springt zu einem Label, wenn a (praktisch genau) 0 ist. |
| bapzal a b line | Ruft ein Unterprogramm auf, wenn a (praktisch genau) 0 ist (Rückweg in ra). |
| bdns device line | Springt zu einem Label, wenn am Anschluss kein Gerät eingestellt ist. |
| bdnsal device line | Ruft ein Unterprogramm auf, wenn kein Gerät eingestellt ist (Rückweg in ra). |
| bdnvl device logicType line | Springt zu einem Label, wenn das Gerät diesen Wert nicht liefern kann. |
| bdnvs device logicType line | Springt zu einem Label, wenn das Gerät diesen Wert nicht annehmen kann. |
| bdse device line | Springt zu einem Label, wenn am Anschluss ein Gerät eingestellt ist. |
| bdseal device line | Ruft ein Unterprogramm auf, wenn ein Gerät eingestellt ist (Rückweg in ra). |
| beq a b line | Springt zu einem Label, wenn a gleich b ist. |
| beqal a b line | Ruft ein Unterprogramm auf, wenn a gleich b ist (Rückweg in ra). |
| beqz a line | Springt zu einem Label, wenn a gleich 0 ist. |
| beqzal a line | Ruft ein Unterprogramm auf, wenn a gleich 0 ist (Rückweg in ra). |
| bge a b line | Springt zu einem Label, wenn a größer oder gleich b ist. |
| bgeal a b line | Ruft ein Unterprogramm auf, wenn a größer oder gleich b ist (Rückweg in ra). |
| bgez a line | Springt zu einem Label, wenn a größer oder gleich 0 ist. |
| bgezal a line | Ruft ein Unterprogramm auf, wenn a größer oder gleich 0 ist (Rückweg in ra). |
| bgt a b line | Springt zu einem Label, wenn a größer als b ist. |
| bgtal a b line | Ruft ein Unterprogramm auf, wenn a größer als b ist (Rückweg in ra). |
| bgtz a line | Springt zu einem Label, wenn a größer als 0 ist. |
| bgtzal a line | Ruft ein Unterprogramm auf, wenn a größer als 0 ist (Rückweg in ra). |
| ble a b line | Springt zu einem Label, wenn a kleiner oder gleich b ist. |
| bleal a b line | Ruft ein Unterprogramm auf, wenn a kleiner oder gleich b ist (Rückweg in ra). |
| blez a line | Springt zu einem Label, wenn a kleiner oder gleich 0 ist. |
| blezal a line | Ruft ein Unterprogramm auf, wenn a kleiner oder gleich 0 ist (Rückweg in ra). |
| blt a b line | Springt zu einem Label, wenn a kleiner als b ist. |
| bltal a b line | Ruft ein Unterprogramm auf, wenn a kleiner als b ist (Rückweg in ra). |
| bltz a line | Springt zu einem Label, wenn a kleiner als 0 ist. |
| bltzal a line | Ruft ein Unterprogramm auf, wenn a kleiner als 0 ist (Rückweg in ra). |
| bna a b c line | Springt zu einem Label, wenn a nicht ungefähr gleich b ist. |
| bnaal a b c line | Ruft ein Unterprogramm auf, wenn a nicht ungefähr gleich b ist (Rückweg in ra). |
| bnan a line | Springt zu einem Label, wenn a keine gültige Zahl (NaN) ist. |
| bnaz a b line | Springt zu einem Label, wenn a nicht 0 ist. |
| bnazal a b line | Ruft ein Unterprogramm auf, wenn a nicht 0 ist (Rückweg in ra). |
| bne a b line | Springt zu einem Label, wenn a ungleich b ist. |
| bneal a b line | Ruft ein Unterprogramm auf, wenn a ungleich b ist (Rückweg in ra). |
| bnez a line | Springt zu einem Label, wenn a ungleich 0 ist. |
| bnezal a line | Ruft ein Unterprogramm auf, wenn a ungleich 0 ist (Rückweg in ra). |
| brap a b c offset | Springt d Zeilen vor oder zurück, wenn a ungefähr gleich b ist. |
| brapz a b offset | Springt c Zeilen vor oder zurück, wenn a (praktisch genau) 0 ist. |
| brdns device offset | Springt a Zeilen vor oder zurück, wenn kein Gerät eingestellt ist. |
| brdse device offset | Springt a Zeilen vor oder zurück, wenn ein Gerät eingestellt ist. |
| breq a b offset | Springt c Zeilen vor oder zurück, wenn a gleich b ist. |
| breqz a offset | Springt b Zeilen vor oder zurück, wenn a gleich 0 ist. |
| brge a b offset | Springt c Zeilen vor oder zurück, wenn a größer oder gleich b ist. |
| brgez a offset | Springt b Zeilen vor oder zurück, wenn a größer oder gleich 0 ist. |
| brgt a b offset | Springt c Zeilen vor oder zurück, wenn a größer als b ist. |
| brgtz a offset | Springt b Zeilen vor oder zurück, wenn a größer als 0 ist. |
| brle a b offset | Springt c Zeilen vor oder zurück, wenn a kleiner oder gleich b ist. |
| brlez a offset | Springt b Zeilen vor oder zurück, wenn a kleiner oder gleich 0 ist. |
| brlt a b offset | Springt c Zeilen vor oder zurück, wenn a kleiner als b ist. |
| brltz a offset | Springt b Zeilen vor oder zurück, wenn a kleiner als 0 ist. |
| brna a b c offset | Springt d Zeilen vor oder zurück, wenn a nicht ungefähr gleich b ist. |
| brnan a offset | Springt b Zeilen vor oder zurück, wenn a NaN (keine Zahl) ist. |
| brnaz a b offset | Springt c Zeilen vor oder zurück, wenn a nicht 0 ist. |
| brne a b offset | Springt c Zeilen vor oder zurück, wenn a ungleich b ist. |
| brnez a offset | Springt b Zeilen vor oder zurück, wenn a ungleich 0 ist. |
| j line | Springt immer zu einem Label - ohne Bedingung. |
| jal line | Ruft ein Unterprogramm auf und merkt sich den Rückweg in ra. |
| jr offset | Springt immer um eine feste Anzahl Zeilen vor oder zurück. |
Geräte
| Syntax | Bedeutung |
|---|---|
| l r? device logicType | Liest einen Wert aus einem Gerät in ein Register. |
| lr r? device reagentMode reagentHash | Liest, wie viel einer Zutat (Reagenz) ein Gerät hat oder braucht. |
| ls r? device slotIndex logicSlotType | Liest einen Wert aus einem Fach (Slot) eines Geräts. |
| rmap r? d? reagentHash | Findet zu einer Zutat das Item, das ein Gerät dafür annimmt. |
| s device logicType value | Schreibt einen Wert aus einem Register in ein Gerät. |
| ss device slotIndex logicSlotType value | Schreibt einen Wert in das Teil, das in einem Fach eines Geräts steckt. |
Batch
| Syntax | Bedeutung |
|---|---|
| lb r? deviceHash logicType batchMode | Liest einen Wert von allen Geräten eines Typs im Datennetz. |
| lbn r? deviceHash nameHash logicType batchMode | Liest einen Wert von allen Geräten eines Typs mit einem bestimmten Namen. |
| lbns r? deviceHash nameHash slotIndex logicSlotType batchMode | Liest einen Fach-Wert von allen Geräten eines Typs mit bestimmtem Namen. |
| lbs r? deviceHash slotIndex logicSlotType batchMode | Liest einen Fach-Wert von allen Geräten eines Typs im Datennetz. |
| sb deviceHash logicType value | Schreibt einen Wert in alle Geräte eines Typs im Datennetz. |
| sbn deviceHash nameHash logicType value | Schreibt einen Wert in alle Geräte eines Typs mit einem bestimmten Namen. |
| sbs deviceHash slotIndex logicSlotType value | Schreibt einen Fach-Wert in alle Geräte eines Typs im Datennetz. |
Speicher
| Syntax | Bedeutung |
|---|---|
| clr d? | Löscht den ganzen Speicher (Stack) eines Geräts an einem Pin. |
| clrd id | Löscht den Speicher (Stack) eines Geräts über seine ReferenceId. |
| get r? device address | Liest 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 value | Schreibt eine Zahl an eine bestimmte Stelle im Stack. |
| pop r? | Nimmt die oberste Zahl vom Stack und legt sie in ein Register. |
| push a | Legt eine Zahl oben auf den Stack (Stapelspeicher). |
| put device address value | Schreibt eine Zahl in den Speicher eines Geräts, z. B. eines anderen Chips. |
Bits
| Syntax | Bedeutung |
|---|---|
| and r? a b | Bitweises UND: nur Bits, die in a und in b 1 sind. |
| ext r? a b c | Holt ein Bitfeld aus a: ab Bit b, c Bits lang. |
| ins r? a b c | Setzt die unteren c Bits von a ab Bit b ins Register ein. |
| nor r? a b | Bitweises NICHT-ODER: Bits, die in a und in b 0 sind. |
| not r? a | Bitweises NICHT: dreht jedes Bit von a um. |
| or r? a b | Bitweises ODER: Bits, die in a oder in b 1 sind. |
| rol r? a b | Rotiert die Bits von a um b Stellen nach links. |
| ror r? a b | Rotiert die Bits von a um b Stellen nach rechts. |
| sla r? a b | Schiebt die Bits von a um b Stellen nach links (wie sll). |
| sll r? a b | Schiebt die Bits von a um b Stellen nach links. |
| sra r? a b | Schiebt die Bits von a nach rechts, das Vorzeichen bleibt. |
| srl r? a b | Schiebt die Bits von a nach rechts, links kommen Nullen nach. |
| xor r? a b | Bitweises Entweder-oder: Bits, die in a und b verschieden sind. |