stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 241

Tag 241 von 365 · Profi · Monat 9: Logistik und Gewächshaus

Der Logic Sorter

Der Logiksortierer entscheidet selbst – nach Regeln, die ein Chip in seinen Speicher schreibt. Jede Regel ist eine Zahl aus Befehl, Vergleich und Wert.

Lektion 25 Min. Woche 35

Das lernst du heute

  • Sortieranweisungen im Speicher
  • SorterInstruction-Werte
  • Regeln kombinieren

Der Sortierer im Logikmodus braucht für jedes Teil eine Entscheidung vom Chip. Der Logiksortierer (StructureLogicSorter) entscheidet selbst – nach Regeln in seinem eigenen Speicher. Der Chip schreibt die Regeln einmal hinein, und danach sortiert die Maschine allein.

Wie er entscheidet

Der Logiksortierer hat einen Speicher mit 32 Plätzen. Jeder Platz ist eine Regel. Passt das Teil im Eingang zu den Regeln, geht es an Ausgang 2, sonst an Ausgang 1. Wie die Regeln zusammenwirken, bestimmt Mode:

ModeNameAusgang 2, wenn …
0Allalle Regeln zutreffen
1Anymindestens eine Regel zutrifft
2Nonekeine Regel zutrifft

Ein Platz mit 0 ist leer und wird übersprungen.

SorterInstruction-Werte

Jede Regel ist eine Zahl, die aus Teilen zusammengesetzt ist. Das unterste Byte ist der Befehl aus dem Namensraum SorterInstruction.:

BefehlZahlAufbau der Regel
FilterPrefabHashEquals1Prefab-Hash · 256 + 1
FilterPrefabHashNotEquals2Prefab-Hash · 256 + 2
FilterSortingClassCompare3Klasse · 65 536 + Vergleich · 256 + 3
FilterSlotTypeCompare4Fachtyp · 65 536 + Vergleich · 256 + 4
FilterQuantityCompare5Menge · 65 536 + Vergleich · 256 + 5

Der Vergleich ist 0 für gleich (Equals), 1 für größer (Greater), 2 für kleiner (Less), 3 für ungleich (NotEquals). „Größer“ heißt dabei: Der Wert des Teils ist größer als der Wert in der Regel. „Menge größer 10“ trifft also Stapel ab 11 Stück.

Mal 256 schiebt eine Zahl um ein Byte nach links, mal 65 536 um zwei. Bitbefehle lernst du später im Jahr – für diese Regeln reicht Multiplizieren und Addieren. Auch negative Prefab-Hashes funktionieren so, weil der Sortierer nur die richtigen Bytes ausliest.

mul b1 ERZE ZWEI_BYTE
mul tmp GLEICH BYTE
add b1 b1 tmp
add b1 b1 KLASSE_VGL

ERZE ist 9, KLASSE_VGL ist 3. Die Regel „Klasse gleich Erze“ ist also die Zahl 589 827.

In den Speicher schreiben

Der Speicher eines anderen Geräts wird mit put gerät adresse wert beschrieben. Das Gerät ist hier die ReferenceId:

put id 0 b1
put id 1 b2

Mit Mode 0 (All) und den zwei Regeln „Klasse Erze“ und „nicht schmutziges Erz“ gehen alle echten Erze an Ausgang 2.

Achtung

Alte Regeln bleiben im Speicher, bis sie überschrieben werden. Stand vorher auf Platz 2 etwas, gilt es weiter. Mit clrd id löschst du den ganzen Speicher – einmal vor dem Neuschreiben, nicht jeden Takt.

Schaubild

Der Stack mit Stapelzeiger Platz 0 10 Platz 1 20 Platz 2 30 Platz 3 Platz 4 sp = 3 nächster freier Platz push 40 pop r0 r0 = 30 zuletzt rein, zuerst raus
32 Speicherplätze, jeder eine Regel. Ein leerer Platz (0) wird übersprungen.

Übung

Aufgabe

Programmiere den Logiksortierer „Erzfilter“: Regel 1 (Adresse 0) prüft „Klasse gleich Ores“, Regel 2 (Adresse 1) „Prefab-Hash ungleich ItemDirtyOre“. Berechne die Regeln in b1 und b2, schreibe sie mit put über die ReferenceId und setze Mode 0 (All). Fehlt der Sortierer (bdns), leuchtet „Filterfehler“, sonst ist sie aus.

Hinweise

Hinweis 1

Regel 1: Klasse mal 65536, Vergleich mal 256, dazu der Befehl 3.

Hinweis 2

Regel 2: Hash mal 256 plus Befehl 2 – auch mit negativem Hash.

Hinweis 3

put id 0 b1, put id 1 b2, dann Mode schreiben.

Quiz

5 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.

Tag abschließen

  • Übung im Simulator bestanden
  • Quiz mit mindestens 60 % bestanden

Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.

Fehler in dieser Lektion melden

Zum Melden bitte anmelden. Anmelden

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall