furnace
advanced-furnace.mips
arc-furnace-room-control.mips
furnace-calc-pre.mips
furnace-ingot-recipe.mips
furnace-operate.mips
furnace-room-vacuum-pump.mips
hot-cold-waste-tank-manager.mips
hot-tank-filler.mips
pressurize-furnace.mips
waste-tank-to-cold-tank-with-chiller.mips
furnace-waste-chiller.mips

manufacturing
vend-ingots-to-printer.mips
vending-ore-counter-omni-fast.mips
vending-ore-counter-omni-slow.mips
vending-ore-counter-single.mipsr
vending-ore-counter-triple.mips

greenhouse
larre-config-1.mips
larre-config-2.mips
larre-config-mars-a.mips
larre-config-mars-bdef.mips
larre-config-mars-c.mips
larre-farming-hardcoded.mips
larre-farming-stack.mips
larre-farming.mips
hydrolarre-farming.mips
greenhouse-ac.mips
greenhouse-o2-pressure-display.mips
greenhouse-oxygen-harvest.mips
greenhouse-temperature.mips
harvie-triple.mips
seed-distributer.mips
seed-sorter-old.mips
seed-sorter.mips
stacker-vending-button.mips

atmospherics
base-atmosphere-control.mips
battery-room-atmosphere.mips
battery-room-vent-setter.mips
harvest-cold-atmosphere.mips
harvest-liquid-from-atmosphere.mips
refrigeration-room.mips

mining rocket
rocket-driving.mips
rocket-miner-readout.mips

ore warehousing
ore-sorter-multi.mips
ore-sorter2-multi.mips
gas-rock-sorter.mips
centrifuge-ore.mips

gas handling
gas-filter-chain.mips
co2-tank-pressure-management.mips
fuel-mixer.mips
gas-harvester.mips
gas-mixer-nitrous.mips
n2o-heater.mips
pump-feed-nitrolyzer.mips
show-gas-pressure-triple.mips
manage-coolant-from-atmosphere.mips

doors
weather-gate.mips
door-switch-logic.mips

solar
solar-old.mips
1-axis-solar-panel-control.mips
2-axis-solar-panel-control.mips
batch-solar-control-dumb.mips
batch-solar-control.mips

biomass fuel
biomass-generator-pipeline.mips
biomass-generator-silo.mips
biomass-recycler.mips
charcoal-stockpile-display.mips

gas liquification
condenser-pollutant-limiter.mips
condenser-volatiles-limiter.mips
measure-condensation-rate.mips
cybernetic-regulator-clumsy-batch.mips
cybernetic-regulator-clumsy.mips
cybernetic-regulator-pid.mips
liquid-delta-volume-graph.mips
liquification-power-mgmt.mips
mars-nighttime-liquid-harvest.mips

H2 combuster / water
h2-combuster-condense.mips
h2-combuster-mixer.mips
h2-combuster-operate.mips

stockboy
stockboy-coalesce.mips
stockboy-config.mips
stockboy-fabricator.mips
stockboy-pre-fabricator.mips
stockboy-stacker.mips
stockboy-trucker.mips

AIMeE
aimee-old.mips
aimee-position-display.mips
aimee.mips


airlock-speed-vent.mips
airlock-tank-accelerator-mgmt.mips
battery-leveling.mips
centrifuge-miner-manager.mips
chamber-liquification-mgr.mips
chiller-purge-pump-controll.mips
cooling-gas-buffer-room.mips
cooling-gas-buffer.mips
display-avionics.mips
exhaust-gas-cooler-control.mips
flashing-light-mirror.mips
fuel-mixer-n2o.mips
fuel-mixer-o2.mips
gas-pressure-display.mips
greenhouse-parasite-battery-manager.mips
ice-logic-sorter.mips
ingot-divider.mips
light-console.manager.mips
light-manager.mips
loulan-airlock.mips
loulan-arc-furnace-room.mips
loulan-greenhouse.mips
low-gas-cutoff.mips
mars-atmosphere-harvest-n2-o2.mips
memorize-sunrise-sunset.mips
nitrolyzer-battery-threshold.mips
nitrous-warmer.mips
ore-sorter-1.mips
ore-sorter-2.mips
ore-sorter-logic.mips
power-charge-average.mips
power-consumption-triple.mips
radiator-control.mips
rocket-landing.mips
rocket-umbilical-safety.mips
seed-logic-sorter.mips
simpler-gate.mips
sorter-feeding-autooven.mips
trader-scanner.mips
vacuum-enforcer.mips
vend-ingots-to-printer-2.mips
vending-ore-counter-omni-hash.mips
workshop-off-button.mips

alias larre d0
alias stacker d1
alias import d2
alias export d3
alias hash r15
alias address r14
alias lockerIndex r13
alias oldIndex r12
alias hashToStack r11
alias qty r10

define lockerStation 4
define importStation 3
define exportStation 2
define MODULUS 55

mul sp 2 MODULUS
add sp sp 5

handoff:
put db 120 4 # activate pre-fabrication counter
s db Setting -99
waitMyTurn:
yield
get r0  db 120
bne r0 0 waitMyTurn # some other IC has larre
larreDeposit:
s db Setting -1
yield
ls r0 larre 0 Occupied
beqz r0 checkExport # nothing in my claw
ls r0 larre 0 OccupantHash
s db Setting r0
s larre Setting lockerStation
jal waitLarreIdle
move lockerIndex 0
stowScan:
s db Setting lockerIndex
#yield
s larre TargetSlotIndex lockerIndex
ls r0 larre 255 Occupied
add lockerIndex 1 lockerIndex
bnez r0 stowScan
s db Setting 73
s larre Activate 1
jal waitLarreIdle

checkExport:
s db Setting 2
# check export
ls r0 export 0 Occupied
blez r0 survey
s larre Setting exportStation
s larre TargetSlotIndex 0
jal waitLarreIdle
s larre Activate 1
jal waitLarreIdle
j larreDeposit

survey:
yield
s db Setting 3

s larre Setting lockerStation
move address 0
zeroram:
put db address -1
add address address 1
blt address MODULUS zeroram
#
jal waitLarreIdle
move lockerIndex 0
inventory:
#s db Setting lockerIndex
s larre TargetSlotIndex lockerIndex
ls hash larre 255 OccupantHash
beqz hash skipSlot # nothing in the slot
ls r1 larre 255 Quantity
mod address hash MODULUS
add r2 address MODULUS
get qty db r2 # what is the stack size
bge r1 qty skipSlot #skip if full stack
get oldIndex db address
s db Setting oldIndex
bgez oldIndex coalesce
put db address lockerIndex
skipSlot:
add lockerIndex lockerIndex 1
blt lockerIndex 30 inventory

s stacker Activate 1

j handoff

coalesce:
s db Setting -4
move hashToStack hash
s larre Activate 1
jal waitLarreIdle
put db 120 2 # activate coalesce IC
j waitMyTurn

waitLarreIdle:
#s db Setting 10
yield
l r0 larre Idle
blez r0 waitLarreIdle
j ra

# stockcount in ram from 0..MODULUS


# SUBTASKS
# scan locker for duplicates
# coalesce specific hash
# scan export bins
# schedule fabrication

# mode 0 = stacker
# mode 1 = fabricator
# mode 2 = coalesce
# mode 3 = trucker
# mode 4 = pre-fabricator
# = stacker config

MIPS is the programming language used by IC (integrated circuits) in the game Stationeers. Stationeering web site has a MIPS emulator with syntax highlighting and error detection.