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 mode r15
alias furnace_temperature r14
alias furnace_moles r13
alias furnace_remove r12
alias target_moles r11
alias target_temperature r10
alias target_pressure r9
alias hot_temperature r8
alias cold_temperature r7
alias hot_moles r6
alias cold_moles r5

define HASH_LED_s HASH("StructureConsoleLED5")
define HASH_TANK_si HASH("StructureTankSmallInsulated")
define HASH_MEMORY HASH("StructureLogicMemory")
define R 8.3145
define HASH_FURNACE HASH("StructureAdvancedFurnace")

sbn HASH("StructureConsoleLED5") HASH("ColdTemp") Setting -1

start:
move sp 10
yield

lbn cold_temperature HASH_TANK_si HASH("cold tank") Temperature Average
lbn hot_temperature HASH_TANK_si HASH("hot tank") Temperature Average

lb furnace_temperature HASH_FURNACE Temperature Average
lb furnace_moles HASH_FURNACE TotalMoles Average
get target_temperature db 0
get target_pressure db 1
s db Setting target_pressure


jal calc1

put db 480 hot_moles
put db 481 cold_moles
put db 482 furnace_remove

get target_pressure db 2
jal calc1

put db 490 hot_moles
put db 491 cold_moles
put db 492 furnace_remove

jal calc2

put db 500 hot_moles
put db 501 cold_moles
put db 502 furnace_remove

j start

#

calc1: # achieve target_temperature @ target_pressure using +hot_moles+cold_moles - furnac

# n=PV/(RT)
mul r0 R target_temperature
div r0 target_pressure r0
mul target_moles 1000 r0

sbn HASH_LED_s HASH("Target Moles") Setting target_moles
sbn HASH_LED_s HASH("Furnace Temperature") Setting furnace_temperature

sub r1 hot_temperature target_temperature
mul r1 target_moles r1
sub r2 furnace_temperature hot_temperature
mul r2 furnace_moles r2
add r1 r1 r2
sub r2 hot_temperature cold_temperature
div cold_moles r1 r2
sub r0 target_moles furnace_moles
sub hot_moles r0 cold_moles

move furnace_remove 0

sgtz r0 hot_moles
sgtz r1 cold_moles
and r0 r1 r0
bgtz r0 ra

# must depressurize

sub r0 target_temperature furnace_temperature
mul r0 r0 target_moles

slt r1 furnace_temperature target_temperature
select r1 r1 hot_temperature cold_temperature
sub r1 r1 furnace_temperature

div r0 r0 r1
add r0 furnace_moles r0
sub furnace_remove r0 target_moles

#move hot_moles 0
#move cold_moles 0
j ra

calc2: # achieve target_temperature using +hot_moles

sub r0 target_temperature furnace_temperature
sub r1 hot_temperature target_temperature
div r0 r0 r1
mul hot_moles furnace_moles r0
move cold_moles 0
move furnace_remove 0

j ra


#
# min pressure
# 480 = V_h
# 481 = V_c
# 482 = -V_f
#
# max pressure
# 480 = V_h
# 491 = V_c
# 492 = -V_f
#
# target temperature, no drain
# 500 = V_h
# 501 = V_c
# 502 = -V_f

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.