Files
ic10-collection/airctl.ic10
2024-10-09 20:54:28 +02:00

42 lines
686 B
Plaintext

alias Bypass d0
alias Radiator d1
define minTemp 293.15
define maxTemp 295.15
s db Open 0
s Bypass Lock 1
s Radiator Lock 1
start:
yield
jal safety
pop r0
bnez r0 start #safety triggerd. Do not continue
l r0 db TemperatureOutput
sgt r1 r0 maxTemp
bgtzal r1 cooling
slt r1 r0 minTemp
seqz r1 r1
beqzal r1 cooling
j start
#safety():0|1 -> 0 : ok, 1 : overpressure
safety:
l r1 db PressureOutput #check the output pressure
sgt r0 r1 50000
push r0 # r0 == 1 if too high. Use the stack as resturn value
s Radiator On r0
seqz r0 r0
s Bypass On r0
slt r0 r1 55000
s db Mode r0 #emergency stop
j ra #return
#cooling(r1:0|1)
cooling:
s Radiator On r1
seqz r1 r1
s Bypass On r1
j ra