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
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

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

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


airlock-tank-accelerator-mgmt.mips
batch-solar-control.mips
centrifuge-miner-manager.mips
chamber-liquification-mgr.mips
cooling-gas-buffer-room.mips
cooling-gas-buffer.mips
display-avionics.mips
exhaust-gas-cooler-control.mips
fuel-mixer-n2o.mips
fuel-mixer-o2.mips
larre-config-1.mips
larre-farming-hardcoded.mips
larre-farming-stack.mips
light-console.manager.mips
light-manager.mips
loulan-airlock.mips
loulan-arc-furnace-room.mips
loulan-greenhouse.mips
measure-condensation-rate.mips
nitrolyzer-battery-threshold.mips
nitrous-warmer.mips
power-consumption-triple.mips
radiator-control.mips
simpler-gate.mips
sorter-feeding-autooven.mips
trader-scanner.mips
vend-ingots-to-printer-2.mips

alias dRadar d0
alias dLight d1 #diode slide
alias rVertDir r1
alias rHorDir r2
alias rHor r3
alias rVert r4
alias rStr r7
alias rPrevStr r8
alias rCurSig r10
alias rPrevSig r11
move rVertDir -1
move rHorDir 1
move rVert 80
move rHor 0
main:
s dLight On 0
s db Setting 1
mul r0 20 rHorDir
add rHor rHor r0
brgt rVert 30 3
move rVert 80
move rVertDir -1
jal _rangeCheck
jal _alignDish
l rCurSig dRadar SignalID
beqz rCurSig main #no signal, we keep looking
beq rCurSig rPrevSig main #already scanned, ignoring
s dLight On 1
push rVertDir
push rHorDir
push rVert
push rHor
search_loop:
jal _vertSeek
jal _horSeek
s dLight Setting rStr
wait_loop:
l r0 dLight On
beqz r0 exit_search
l r0 dRadar SignalStrength
bge r0 0.96 wait_loop
j search_loop
exit_search:
l rCurSig dRadar SignalID
move rPrevSig rCurSig
pop rHor
pop rVert
pop rHorDir
pop rVertDir
jal _alignDish
j main

_vertSeek:
push ra
s db Setting 2
l rHor dRadar Horizontal
l rVert dRadar Vertical
l rPrevStr dRadar SignalStrength
sub r0 1 rPrevStr
mul r0 r0 30
mul r0 r0 rVertDir
add rVert rVert r0
jal _rangeCheck
jal _alignDish
l rStr dRadar SignalStrength
brge rStr rPrevStr 2
mul rVertDir rVertDir -1
pop ra
j ra

_horSeek:
push ra
s db Setting 3
l rHor dRadar Horizontal
l rVert dRadar Vertical
l rPrevStr dRadar SignalStrength
sub r0 1 rPrevStr
mul r0 r0 30
mul r0 r0 rHorDir
add rHor rHor r0
jal _rangeCheck
jal _alignDish
l rStr dRadar SignalStrength
brge rStr rPrevStr 2
mul rHorDir rHorDir -1
pop ra
j ra

_rangeCheck:
brgt rHor 0 5
mul rHorDir rHorDir -1
s dLight On 0
move rHor 0
sub rVert rVert 30
brlt rHor 360 5
mul rHorDir rHorDir -1
s dLight On 0
move rHor 360
sub rVert rVert 30
brgt rVert 0 4
mul rVertDir rVertDir -1
s dLight On 0
move rVert 0
brle rVert 90 3
mul rVertDir rVertDir -1
move rVert 90
j ra

_alignDish:
s db Setting 4
round rVert rVert
round rHor rHor
s dRadar Vertical rVert
s dRadar Horizontal rHor
alignDishLoop:
l r5 dRadar Vertical
l r6 dRadar Horizontal
round r5 r5
round r6 r6
bne r5 rVert alignDishLoop
bne r6 rHor alignDishLoop
aligned:
l rVert dRadar Vertical
l rHor dRadar Horizontal
j ra

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.