Slimmed code, made it less fancy and more robust

This commit is contained in:
Snorre Selmer 2021-08-30 13:28:41 +02:00
parent 956a7790c8
commit e4319e6236

View File

@ -4,54 +4,51 @@
# analyzer is on a pipe between punps and tank # analyzer is on a pipe between punps and tank
# !!! Remember to set volume pump to 10l !!! # !!! Remember to set volume pump to 10l !!!
alias tank_storage d0 alias tank_stor d0
alias fill_pump d1 alias fill_pump d1
alias evac_pump d2 alias evac_pump d2
alias analyzer d3 alias analyzer d3
alias tank_present r0 alias tank_in r0
alias tank_hash r1 alias tank_hash r1
alias storage_pressure r2 alias stor_press r2
alias gas_to_move r3 alias gas_move r3
alias fill_pressure r4 alias fill_press r4
alias pump_active r5
define canister_hash 42280099 define canister_hash 42280099
define smart_canister_hash -668314371 define smart_canister_hash -668314371
start: start:
# check if canister is present ls tank_in tank_stor 0 Occupied # check tank in
ls tank_present tank_storage 0 Occupied
# identify canister beqz tank_in evac
ls tank_hash tank_storage 0 OccupantHash bgtz tank_in setpress
evac:
l stor_press analyzer Pressure # get pipe pressure
s evac_pump On 1 # run evac_pump
s fill_pump On 0 # stop fill_pump
bgtz stor_press evac # pressure >0, evac more
# else, shut off evac_pump and go to start
s evac_pump On 0
j start
setpress:
ls tank_hash tank_stor 0 OccupantHash # ident tank
# set safe fill-pressure # set safe fill-pressure
beq tank_hash canister_hash regular beq tank_hash canister_hash regular
beq tank_hash smart_canister_hash smart beq tank_hash smart_canister_hash smart
regular: regular:
move fill_pressure 8000000 # regular tank safe max move fill_press 8000000 # regular tank safe max
j fill # start filling j fill # start filling
smart: smart:
move fill_pressure 18000000 # smart tank safe max move fill_press 18000000 # smart tank safe max
j fill # start filling j fill # start filling
fill: # fills tank if present and has room fill:
# get tank pressure in Pa ls stor_press tank_stor 0 Pressure # get tank press
ls storage_pressure tank_storage 0 Pressure slt gas_move stor_press fill_press # room for more?
# is there room in the tank for more gas? s fill_pump On gas_move # trigger fill pump
slt gas_to_move storage_pressure fill_pressure
# is there a tank in the slot that has room?
and pump_active gas_to_move tank_present
# trigger fill pump
s fill_pump On pump_active
beqz tank_present evac # break if no tank
j start
evac: # evacuates pipe on tank removed and >0Pa
l storage_pressure analyzer Pressure
# is there gas in the pipe?
sgt gas_to_move storage_pressure 0
# trigger evac pump
s evac_pump On gas_to_move
j start j start