Actions

Difference between revisions of "Logic Sorter"

From Unofficial Stationeers Wiki

(Created page with "Category:Machines Category:Import/Export {{Itembox | name = Kit (Sorter) | image = File:ItemKitSorter.png | prefabhash = 969522478 | prefabname = ItemKitSorter | s...")
 
(MIPS -> IC10)
 
(14 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:Machines]]
 
[[Category:Machines]]
 
[[Category:Import/Export]]
 
[[Category:Import/Export]]
{{Itembox
 
| name = Kit (Sorter)
 
| image = [[File:ItemKitSorter.png]]
 
| prefabhash = 969522478
 
| prefabname = ItemKitSorter
 
| stacks = 10
 
| recipe_machine1 = Autolathe
 
| recipe_cost1 = 10g [[Iron]], 1g [[Gold]], 5g [[Copper]]
 
| constructs = [[Sorter]], [[Logic Sorter]]
 
}}
 
{{Structurebox
 
| name = Sorter
 
| image = [[File:StructureSorter.png]]
 
| prefab_hash = -1009150565
 
| prefab_name = StructureSorter
 
| power_usage = 5W
 
| placed_on_grid = Small Grid
 
| decon_with_tool1 = [[Hand Drill]]
 
| placed_with_item = [[Kit (Sorter)]]
 
| item_rec1 = [[Kit (Sorter)]]
 
}}
 
 
{{Structurebox
 
{{Structurebox
 
| name = Logic Sorter
 
| name = Logic Sorter
Line 33: Line 12:
 
| item_rec1 = [[Kit (Sorter)]]
 
| item_rec1 = [[Kit (Sorter)]]
 
}}
 
}}
 +
{{Distinguish|Sorter}}
  
 +
==Description==
  
==Description==
+
<blockquote><q>Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the Import slot Slot, the stack is checked and if result is true the thing is moved to the Export2 slot slot, otherwise it is moved to the Export slot slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true.</q><br>
*This section is still a work in progress.  
+
'''- Stationpedia'''</blockquote>
Logic sorter is similar in almost every way to the previous sorter but has a internal memory, a.k.a stack, that can be accessed with logic and bit shifting to sort items passing through. When an item enters the import slot, its checked against the stack and if the result is true, moves the item to the export 2 slot, otherwise its moved to the export slot. The mode is how the stack is assessed. If mode is set to "ALL", every instruction in the stack would need to return as true.
+
 +
Logic sorter is similar in almost every way to the previous sorter but has a internal memory that can be configured with logic and bit shifting to sort items passing through. When an item enters the import slot, it is checked against the filters in memory.  If the Mode is 0(All) then every filter must return true for the item to be sent to the export 2 slot.  If the mode is 1(Any) then as long as one of the filters returns true, the item matches and will be sent to the export 2 slot.
  
Changing Output or Mode via logic or IC can cause an item to get stuck in the sorter until the logic circuit or IC command the Output to either 0 or 1.  This behavior is normalAfter the first output, the Output variable is set to -1. This is normal behavior and a reset circuit (using logic chips) or Output loop (using IC) will serve the purpose of using the ports properly so long as they send the Output variable after each item enters the sorter.
+
==Filter Instructions==
 +
Check the in game Stationpedia [F1 on your keyboard] for formatting and instruction sizes to determine how to populate the memory.  Be warned that the stationpedia fails to document the endianness (bit 0 is the least significant bit)While the stationpedia does document that the Logic Sorter has 256 bytes of memory, it is addressed as 32 x 8-byte (64-bit) numbers.
  
==Logic Parameters==
+
If you wish your sorter to send [[Steel Ingot]]s to the second output you should place the value 0xd8f8af8d_01 ( = 931885190401 decimal ) into memory 0.  More complicated programs will have to consider whether they want to use Mode 0 (match All), Mode 1 (match Any), or Mode 2 (match None).
  
{{Data Network Header}}
+
It is more readable to calculate the instructions using [[IC10]] like this:
  
{{Data Parameters}}
+
{{ICCode|
{| class="wikitable"
+
alias sorter d0
|-
+
define steel HASH("ItemSteelIngot")
! Parameter Name !! Data Type !! Description
+
s sorter Mode 1 # Any
|-
+
clr sorter # erase any stale instructions in RAM
| Mode || Integer || 0 = All, 1 = Any, 2 = None; Set to 0 by default.
+
sll r0 steel 8
|-
+
or r0 r0 SorterInstruction.FilterPrefabHashEquals
| Lock || Boolean || Disable manual control of surface buttons
+
put sorter 0 r0
|-
+
}}
| On || Boolean ||
 
|-
 
| ClearMemory || Boolean || Writing on this Parameter will reset the ExportCount and ImportCount values to zero.
 
|-
 
|}
 
  
{{Data Outputs}}
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Output Name !! Data Type !! Description
+
! Sorter Instruction !! OP Code !! Description
|-
 
| Mode || Integer ||
 
|-
 
| Lock || Boolean ||
 
|-
 
| ImportCount || Integer || Incremented each time an item stack enter by the Import slot
 
|-
 
| ExportCount || Integer || Incremented each time an item stack exit by the rejected Export Slot (as in : every time a non whitelisted item is sorted.
 
 
|-
 
|-
| Error || Boolean ||  
+
| FilterPrefabHashEquals || 1 || Compares Hash of item in import slot to the set hash and returns true if equal.
 
|-
 
|-
| Requiredpower || Integer || In Watts. The Sorter requires 100W of power to function
+
| FilterPrefabHashNotEquals || 2 || Compares Hash of item in import slot to the set hash and returns true if not equal.
 
|-
 
|-
| PrefabHash || Integer || Returns [[ItemHash]] of device
+
| FilterSortingClassCompare || 3 || Compares the sorting class of an object in input slot. Example would be all ores.
 
|-
 
|-
| Power || Boolean || Device on and receiving power (true\false)
+
| FilterSlotTypeCompare || 4 || Compares the item type of an object in the input slot. See slot type table below for item comparisons.
 
|-
 
|-
| On || Boolean ||  
+
| FilterQuantityCompare || 5 || Compares the stack size of the items in the import slot.
 
|-
 
|-
 +
|LimitNextExecutionCount || 6 || Ensures the next executable instruction will only return true a specified number of times. Each time it returns true, it decrements by one.
 
|}
 
|}
  
==== Data Slots ====
+
<pre>
 +
MSB                                                          LSB
 +
6666555555555544444444443333333333222222222211111111110000000000
 +
3210987654321098765432109876543210987654321098765432109876543210
 +
FilterPrefabHashEquals
 +
########################(                  PREFAB_HASH)(    1)
 +
FilterPrefabHashNotEquals
 +
########################(                  PREFAB_HASH)(    2)
 +
FilterSortingClassCompare
 +
################################( SORTING_CLASS)(CONDOP)(    3)
 +
FilterSlotTypeCompare
 +
################################(    SLOT_TYPE)(CONDOP)(    4)
 +
FilterQuantityCompare
 +
################################(      QUANTITY)(CONDOP)(    5)
 +
LimitNextExecutionByCount
 +
########################(                        COUNT)(    6)
 +
</pre>
 +
 
 +
{{Data Network Header}}
 +
 
 +
{{Data Parameters|
 +
{{Data Parameters/row|Power|Boolean|w=0|Can be read to return if the Logic Sorter is correctly powered or not, set via the power system, return 1 if powered and 0 if not|multiple=2|0|Unpowered|1|Powered}}
 +
{{Data Parameters/row|Mode|Integer|The mode of the Logic Sorter.|multiple=3|0|All|1|Any|2|None}}
 +
{{Data Parameters/row|Error|Boolean|w=0|1 if device is in error state, otherwise 0|multiple=2|0|<p></p>|1|Error}}
 +
{{Data Parameters/row|Lock|Boolean|Disable manual operation of the Logic Sorter.|multiple=2|0|Unlocked|1|Locked}}
 +
{{Data Parameters/row|On|Boolean|The current state of the Logic Sorter.|multiple=2|0|Off|1|On}}
 +
{{Data Parameters/row|RequiredPower|Integer|w=0|Idle operating power quantity, does not necessarily include extra demand power}}
 +
{{Data Parameters/row|ClearMemory|Integer|r=0|When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned}}
 +
{{Data Parameters/row|ExportCount|Integer|w=0|How many items exported since last ClearMemory}}
 +
{{Data Parameters/row|ImportCount|Integer|w=0|How many items imported since last ClearMemory}}
 +
{{Data Parameters/row|PrefabHash|Integer|w=0|The hash of the structure}}
 +
{{Data Parameters/row|ReferenceId|Integer|w=0|Unique Reference Identifier for this object}}
 +
{{Data Parameters/row|NameHash|Integer|w=0|Provides the hash value for the name of the object as a 32 bit integer.}}
 +
}}
 +
 
 +
=== Data Slots ===
 
These are all parameters, that can be read with a [[Kit_(Logic_I/O)#Slots_Reader|Slots Reader]]. The outputs are listed in the order a Slots Reader's "VAR" setting cycles through them.
 
These are all parameters, that can be read with a [[Kit_(Logic_I/O)#Slots_Reader|Slots Reader]]. The outputs are listed in the order a Slots Reader's "VAR" setting cycles through them.
 
{| class="wikitable"
 
{| class="wikitable"
Line 112: Line 117:
 
| SortingClass || Integer || Class group of items.  
 
| SortingClass || Integer || Class group of items.  
 
|-
 
|-
| Quantity || Integer || Size of stack.
+
| Quantity || Integer || Size of item stack.
 
|-
 
|-
 
| PrefabHash || Integer || Returns [[ItemHash]] of item in slot.
 
| PrefabHash || Integer || Returns [[ItemHash]] of item in slot.
Line 159: Line 164:
 
| ScanningHead || 36 || || Flare || 37 || || Blocked || 38 ||
 
| ScanningHead || 36 || || Flare || 37 || || Blocked || 38 ||
 
|-
 
|-
| SuitMod || 39 || || || || ||
+
| SuitMod || 39 || || Crate || 40 || || Portables || 41 ||
 
|}
 
|}

Latest revision as of 17:52, 1 August 2024

Logic Sorter
File:StructureLogicSorter.png
Operation
Power Usage 5W
Prefab Hash 873418029
Prefab Name StructureLogicSorter
Construction
Placed with Kit (Sorter)
Placed on Small Grid
Stage 1
Deconstruction
Deconstructed with Hand Drill
Item received Kit (Sorter)


Description[edit]

Contains an Internal Memory which is assessed to check whether something should be sorted. When an item is in the Import slot Slot, the stack is checked and if result is true the thing is moved to the Export2 slot slot, otherwise it is moved to the Export slot slot. The Mode is used in how the stack is assessed, by default the mode is ALL, so every instruction in the stack would need to return true.
- Stationpedia

Logic sorter is similar in almost every way to the previous sorter but has a internal memory that can be configured with logic and bit shifting to sort items passing through. When an item enters the import slot, it is checked against the filters in memory. If the Mode is 0(All) then every filter must return true for the item to be sent to the export 2 slot. If the mode is 1(Any) then as long as one of the filters returns true, the item matches and will be sent to the export 2 slot.

Filter Instructions[edit]

Check the in game Stationpedia [F1 on your keyboard] for formatting and instruction sizes to determine how to populate the memory. Be warned that the stationpedia fails to document the endianness (bit 0 is the least significant bit). While the stationpedia does document that the Logic Sorter has 256 bytes of memory, it is addressed as 32 x 8-byte (64-bit) numbers.

If you wish your sorter to send Steel Ingots to the second output you should place the value 0xd8f8af8d_01 ( = 931885190401 decimal ) into memory 0. More complicated programs will have to consider whether they want to use Mode 0 (match All), Mode 1 (match Any), or Mode 2 (match None).

It is more readable to calculate the instructions using IC10 like this:


alias sorter d0
define steel HASH("ItemSteelIngot")
s sorter Mode 1 # Any
clr sorter # erase any stale instructions in RAM
sll r0 steel 8
or r0 r0 SorterInstruction.FilterPrefabHashEquals
put sorter 0 r0


Sorter Instruction OP Code Description
FilterPrefabHashEquals 1 Compares Hash of item in import slot to the set hash and returns true if equal.
FilterPrefabHashNotEquals 2 Compares Hash of item in import slot to the set hash and returns true if not equal.
FilterSortingClassCompare 3 Compares the sorting class of an object in input slot. Example would be all ores.
FilterSlotTypeCompare 4 Compares the item type of an object in the input slot. See slot type table below for item comparisons.
FilterQuantityCompare 5 Compares the stack size of the items in the import slot.
LimitNextExecutionCount 6 Ensures the next executable instruction will only return true a specified number of times. Each time it returns true, it decrements by one.
MSB                                                          LSB
6666555555555544444444443333333333222222222211111111110000000000
3210987654321098765432109876543210987654321098765432109876543210
FilterPrefabHashEquals
########################(                   PREFAB_HASH)(     1)
FilterPrefabHashNotEquals
########################(                   PREFAB_HASH)(     2)
FilterSortingClassCompare
################################( SORTING_CLASS)(CONDOP)(     3)
FilterSlotTypeCompare
################################(     SLOT_TYPE)(CONDOP)(     4)
FilterQuantityCompare
################################(      QUANTITY)(CONDOP)(     5)
LimitNextExecutionByCount
########################(                         COUNT)(     6)

Data Network Properties[edit]

These are all Data Network properties of this device.

Data Parameters[edit]

These are all parameters that can be written with a Logic Writer, Batch Writer, or Integrated Circuit (IC10), and can be read with a Logic Reader, Batch Reader, or Integrated Circuit (IC10).

Click here to see/hide all the data network properties
Parameter Name Data Type Access Value Description
Power Boolean
Read
0 Unpowered Can be read to return if the Logic Sorter is correctly powered or not, set via the power system, return 1 if powered and 0 if not
1 Powered
Mode Integer
Read Write
0 All The mode of the Logic Sorter.
1 Any
2 None
Error Boolean
Read
0

1 if device is in error state, otherwise 0
1 Error
Lock Boolean
Read Write
0 Unlocked Disable manual operation of the Logic Sorter.
1 Locked
On Boolean
Read Write
0 Off The current state of the Logic Sorter.
1 On
RequiredPower Integer
Read
Idle operating power quantity, does not necessarily include extra demand power
ClearMemory Integer
Write
When set to 1, clears the counter memory (e.g. ExportCount). Will set itself back to 0 when actioned
ExportCount Integer
Read
How many items exported since last ClearMemory
ImportCount Integer
Read
How many items imported since last ClearMemory
PrefabHash Integer
Read
The hash of the structure
ReferenceId Integer
Read
Unique Reference Identifier for this object
NameHash Integer
Read
Provides the hash value for the name of the object as a 32 bit integer.


Data Slots[edit]

These are all parameters, that can be read with a Slots Reader. The outputs are listed in the order a Slots Reader's "VAR" setting cycles through them.

Number Name Description
0 Import Import slot.
1 Export (reject) Export slot.
2 Export (accept) Export slot.
3 Data Disk Diskslot
Name Data Type Description
MaxQuantity Integer Returns maximum stacksize.
Damage Integer Item durability in percent.
Class Integer Item class ID for slot type comparison.
SortingClass Integer Class group of items.
Quantity Integer Size of item stack.
PrefabHash Integer Returns ItemHash of item in slot.
Occupied Boolean Returns whether the slot occupied. (0 for no, 1 for yes).
OccupantHash Integer Returns ItemHash of item in slot.

Item Slot Classes / Types[edit]

Reading the class attribute of the input slot will give one of the following values:

Note that you can use
SlotClass.<Item>
directly in IC code instead of the numeric value
  • NOTE The classes listed in this section are FilterSlotTypeCompare and NOT sorting class. eg: SortingClass.Ores vs SlotClass.Ore
Item values and descriptions
Item Value Description Item Value Description Item Value Description
None 0 Helmet 1 Suit 2
Back 3 GasFilter 4 GasCanister 5
Motherboard 6 Circuitboard 7 DataDisk 8
Organ 9 Ore 10 Includes reagent mixes from recycler and ices Plant 11
Uniform 12 Entity 13 Battery 14
Egg 15 Belt 16 Tool 17
Appliance 18 Ingot 19 Torpedo 20
Cartridge 21 AccessCard 22 Magazine 23
Circuit 24 Bottle 25 ProgrammableChip 26
Glasses 27 CreditCard 28 DirtCanister 29
SensorProcessingUnit 30 LiquidCanister 31 LiquidBottle 32
Wreckage 33 SoundCartridge 34 DrillHead 35
ScanningHead 36 Flare 37 Blocked 38
SuitMod 39 Crate 40 Portables 41