Actions

Editing Vending Machine Export IC10

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
[[Category:MIPS Programming]]
 
 
This solution will export a given quantity of the specified item from a vending machine.
 
This solution will export a given quantity of the specified item from a vending machine.
 
[[File:VendingExporterSetup.png|thumb|right|Connect the three devices with chutes as shown in the diagram.]]
 
[[File:VendingExporterSetup.png|thumb|right|Connect the three devices with chutes as shown in the diagram.]]
Line 18: Line 17:
 
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rTemp</span><span> </span><span>r0</span><span>
 
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rTemp</span><span> </span><span>r0</span><span>
 
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rTemp2</span><span> </span><span>r1</span><span>
 
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rTemp2</span><span> </span><span>r1</span><span>
 +
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rSorterBusy</span><span> </span><span>r6</span><span>
 +
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rSorterOutput</span><span> </span><span>r7</span><span>
 
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rBusy</span><span> </span><span>r2</span><span>
 
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rBusy</span><span> </span><span>r2</span><span>
 
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rReqHash</span><span> </span><span>r9</span><span>
 
</span><span style="color: #00FFFF;">alias</span><span> </span><span>rReqHash</span><span> </span><span>r9</span><span>
Line 64: Line 65:
 
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rMaxUnitStack</span><span> </span><span>dStacker</span><span> </span><span>2</span><span> </span><span>MaxQuantity</span><span>
 
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rMaxUnitStack</span><span> </span><span>dStacker</span><span> </span><span>2</span><span> </span><span>MaxQuantity</span><span>
 
</span><span style="color: #FF0000;">jal</span><span> </span><span>_WaitForDevices</span><span>
 
</span><span style="color: #FF0000;">jal</span><span> </span><span>_WaitForDevices</span><span>
 +
</span><span style="color: #00FFFF;">s</span><span> </span><span>db</span><span> </span><span>Setting</span><span> </span><span>rMaxUnitStack</span><span>
 
</span><span style="color: #6666FF;">min</span><span> </span><span>rStackerSetting</span><span> </span><span>rReqCount</span><span> </span><span>rMaxUnitStack</span><span>
 
</span><span style="color: #6666FF;">min</span><span> </span><span>rStackerSetting</span><span> </span><span>rReqCount</span><span> </span><span>rMaxUnitStack</span><span>
 
</span><span style="color: #6666FF;">min</span><span> </span><span>rStackerSetting</span><span> </span><span>rStackerSetting</span><span> </span><span>rStackerCount</span><span>
 
</span><span style="color: #6666FF;">min</span><span> </span><span>rStackerSetting</span><span> </span><span>rStackerSetting</span><span> </span><span>rStackerCount</span><span>
Line 69: Line 71:
 
</span><span style="color: #FF0000;">bgt</span><span> </span><span>rReqCount</span><span> </span><span>rStackerCount</span><span> </span><span>ExportItemLoop</span><span>
 
</span><span style="color: #FF0000;">bgt</span><span> </span><span>rReqCount</span><span> </span><span>rStackerCount</span><span> </span><span>ExportItemLoop</span><span>
 
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Setting</span><span> </span><span>rStackerSetting</span><span>
 
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Setting</span><span> </span><span>rStackerSetting</span><span>
</span><span style="color: #00FFFF;">s</span><span> </span><span>dSorter</span><span> </span><span>Output</span><span> </span><span>0</span><span>
+
</span><span style="color: #6666FF;">move</span><span> </span><span>rSorterOutput</span><span> </span><span>0</span><span>
 
</span><span style="color: #FF0000;">jal</span><span> </span><span>_RunStacker</span><span>
 
</span><span style="color: #FF0000;">jal</span><span> </span><span>_RunStacker</span><span>
 
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rStackerCount</span><span> </span><span>dStacker</span><span> </span><span>2</span><span> </span><span>Quantity</span><span>
 
</span><span style="color: #00FFFF;">ls</span><span> </span><span>rStackerCount</span><span> </span><span>dStacker</span><span> </span><span>2</span><span> </span><span>Quantity</span><span>
Line 77: Line 79:
 
</span><span style="color: #FF0000;">beqz</span><span> </span><span>rStackerCount</span><span> </span><span>ExportItemExit</span><span>
 
</span><span style="color: #FF0000;">beqz</span><span> </span><span>rStackerCount</span><span> </span><span>ExportItemExit</span><span>
 
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Setting</span><span> </span><span>rStackerCount</span><span>
 
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Setting</span><span> </span><span>rStackerCount</span><span>
</span><span style="color: #00FFFF;">s</span><span> </span><span>dSorter</span><span> </span><span>Output</span><span> </span><span>1</span><span>
+
</span><span style="color: #6666FF;">move</span><span> </span><span>rSorterOutput</span><span> </span><span>1</span><span>
 
</span><span style="color: #FF0000;">jal</span><span> </span><span>_RunStacker</span><span>
 
</span><span style="color: #FF0000;">jal</span><span> </span><span>_RunStacker</span><span>
 +
</span><span style="color: #FF8000;">#wait for item to arrive
 +
</span><span style="color: #00FFFF;">l</span><span> </span><span>rTemp</span><span> </span><span>dVender</span><span> </span><span>ImportCount</span><span>
 +
</span><span style="color: #00FFFF;">l</span><span> </span><span>rTemp2</span><span> </span><span>dVender</span><span> </span><span>ImportCount</span><span>
 +
</span><span style="color: #FF0000;">breq</span><span> </span><span>rTemp</span><span> </span><span>rTemp2</span><span> </span><span>-1</span><span>
 
</span><span>ExportItemExit:</span><span>
 
</span><span>ExportItemExit:</span><span>
 
</span><span style="color: #6666FF;">pop</span><span> </span><span>ra</span><span>
 
</span><span style="color: #6666FF;">pop</span><span> </span><span>ra</span><span>
Line 85: Line 91:
 
</span><span>_RunStacker:</span><span>
 
</span><span>_RunStacker:</span><span>
 
</span><span style="color: #6666FF;">push</span><span> </span><span>ra</span><span>
 
</span><span style="color: #6666FF;">push</span><span> </span><span>ra</span><span>
 +
</span><span style="color: #00FFFF;">s</span><span> </span><span>dSorter</span><span> </span><span>Output</span><span> </span><span>rSorterOutput</span><span>
 
</span><span style="color: #00FFFF;">l</span><span> </span><span>rTemp</span><span> </span><span>dSorter</span><span> </span><span>ImportCount</span><span>
 
</span><span style="color: #00FFFF;">l</span><span> </span><span>rTemp</span><span> </span><span>dSorter</span><span> </span><span>ImportCount</span><span>
 
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Output</span><span> </span><span>1</span><span>
 
</span><span style="color: #00FFFF;">s</span><span> </span><span>dStacker</span><span> </span><span>Output</span><span> </span><span>1</span><span>
Line 125: Line 132:
 
* Place all components listed above and connect them using [[Cables]] and [[Chutes]] as shown in the picture. (For cables just connect everything)
 
* Place all components listed above and connect them using [[Cables]] and [[Chutes]] as shown in the picture. (For cables just connect everything)
 
* Load the code into the IC and turn everything on
 
* Load the code into the IC and turn everything on
* You may want to put a junction and an inlet to the import of the vending machine so you can restock it.
 
  
 
== Usage ==
 
== Usage ==
Line 137: Line 143:
 
== How It Works ==
 
== How It Works ==
  
=== Main loop ===
+
=== Control And Initialization ===
 
 
* Wait until both memory modules have a non-zero value.
 
* Run device configuration.
 
* Store request hash and quantity.
 
* Reset the memory for quantity to indicate the start of the export (and so we don't keep exporting the same item)
 
* Run the item export function.
 
 
 
=== _Configuration ===
 
  
* Configure the sorter for default mode, and the stacker for manual.
+
* Wait until both memory modules have a non-zero value, then configure the sorter and stacker with the right mode and reset their counters. Reset the memory module for quantity.
  
=== _ExportItem ===
+
=== Main ExportItem Loop ===
 
* Request the item from the vender and wait for it to arrive into the stacker, then run _WaitForDevices​ to make sure nothing is busy.
 
* Request the item from the vender and wait for it to arrive into the stacker, then run _WaitForDevices​ to make sure nothing is busy.
 
* Calculate the setting for the stacker depending on the remaining items, the quantity inside the stacker and the maximum stacking size (in manual mode, it won't do anything until the Output parameter is set to 1)
 
* Calculate the setting for the stacker depending on the remaining items, the quantity inside the stacker and the maximum stacking size (in manual mode, it won't do anything until the Output parameter is set to 1)

Please note that all contributions to Unofficial Stationeers Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Unofficial Stationeers Wiki:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel | Editing help (opens in new window)