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: | ||
− | |||
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: # | + | </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: # | + | </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 123: | Line 130: | ||
== Setup == | == Setup == | ||
− | * Place all components listed above and connect them using [[Cables]] and [[Chutes]] as shown in the picture | + | * Place all components listed above and connect them using [[Cables]] and [[Chutes]] as shown in the picture |
* Load the code into the IC and turn everything on | * Load the code into the IC and turn everything on | ||
− | |||
== Usage == | == Usage == | ||
Line 137: | Line 143: | ||
== How It Works == | == How It Works == | ||
− | === | + | === Control And Initialization === |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | * | + | * 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. |
− | === | + | === 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 | + | * Calculate the setting the stacker depending on the remaining items, the count inside the stacker and the maximum stacking size (in manual mode, it won't do anything until we set Output to 1) |
* Either make another request from the vender, or flush the stacker if it's full. | * Either make another request from the vender, or flush the stacker if it's full. | ||
* Make more requests if there are remaining items, or empty the stacker and route any excess items back into the vender. | * Make more requests if there are remaining items, or empty the stacker and route any excess items back into the vender. | ||
=== _RunStacker === | === _RunStacker === | ||
− | * Set the output of the sorter, run the stacker and wait for the item to arrive in the sorter | + | * Set the output of the sorter, run the stacker and wait for the item to arrive in the sorter |
=== _WaitForDevices === | === _WaitForDevices === | ||
* Makes sure none of the devices have occupied import/export slots - the exception being the stacker, since it may have a full processing slot and items stuck in the import slot (for example when the vender exports 30 coal twice in a row. 50 will be in the processing slot and 10 in import.) | * Makes sure none of the devices have occupied import/export slots - the exception being the stacker, since it may have a full processing slot and items stuck in the import slot (for example when the vender exports 30 coal twice in a row. 50 will be in the processing slot and 10 in import.) |