Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Fast Dual-Type Airlock Control Script v7
- # by SemlerPDX Nov2023/Feb2025
- # glass doors (East) and composite doors (West)
- #This style Airlock system expects dedicated active
- # vents for each phase of the cycle:
- # (Vent out to World) (Vent out to Base) (Vent in from Base)
- # Doors should be pre-set to Logic Mode (1)
- # Active Vents should also be pre-set to appropriate mode respectively
- # === Stack Loading Section ===
- define GlassDoors -324331872 #(change as needed per airlock)
- define CompositeDoors -793837322 #(change as needed per airlock)
- define Lights 797794350 #long thin (change as needed)
- move sp 0
- push HASH("VentMarsWest")
- push HASH("VentOutWest")
- push HASH("VentInWest")
- push HASH("PowerStationWest") #this airlock light & gas sensor name
- push Lights #this airlock light type
- push HASH("Airlock West") #DoorOutWest
- push HASH("Power Station") #DoorInWest
- push CompositeDoors
- push HASH("VentMarsEast")
- push HASH("VentOutEast")
- push HASH("VentInEast")
- push HASH("PowerStationEast") #this airlock light & gas sensor name
- push Lights #this airlock light type
- push HASH("DoorOutEast")
- push HASH("DoorInEast")
- push GlassDoors
- s db Setting sp
- #(these are just example device names above, from my Power Station)
- # Stack loading section above could be on a different script to fit more lines
- # -just export the stack loader script, run it, then export control script
- # === Airlock Control Section ===
- define ActiveVents -1129453144
- define GasSensors -1252983604
- define SensorIn HASH("GasSensorIn")
- alias ThisDoor r3
- alias ThisVent r4
- alias FirstDoor r5
- alias SecondDoor r6
- alias ThisVentMars r7
- alias ThisVentOut r8
- alias ThisVentIn r9
- alias ThisAirlock r10
- alias ThisLightType r11
- alias ThisDoorOut r12
- alias ThisDoorIn r13
- alias ThisDoorType r14
- alias STACK r15
- define PressureMin 15 #kPa (for CanAirlock)
- l STACK db Setting
- start:
- move sp STACK
- yield
- checkAirlocks:
- pop ThisDoorType
- pop ThisDoorIn
- pop ThisDoorOut
- pop ThisLightType
- pop ThisAirlock
- pop ThisVentIn
- pop ThisVentOut
- pop ThisVentMars
- move ThisDoor ThisDoorIn
- jal checkDoors #check interior door
- move ThisDoor ThisDoorOut
- jal checkDoors #check exterior door
- bge sp 8 checkAirlocks
- j start
- checkDoors:
- lbn r0 ThisDoorType ThisDoor Setting Maximum
- lbn r1 ThisDoorType ThisDoor Open Maximum
- beq r0 r1 ra
- #Check the Outer Door to determine which direction to cycle
- lbn r0 ThisDoorType ThisDoorOut Open Maximum
- select ThisVent r0 ThisVentMars ThisVentOut
- select FirstDoor r0 ThisDoorOut ThisDoorIn
- select SecondDoor r0 ThisDoorIn ThisDoorOut
- #Cycle this Airlock (or just the doors)
- sbn ThisDoorType FirstDoor Open 0
- sbn ThisLightType ThisAirlock On 1
- sleep 1
- #Check if we CAN cycle the airlock, or just the doors
- lbn r0 GasSensors SensorIn Pressure Average
- blt r0 PressureMin cycleComplete
- #A simple sub-loop to de-pressurize the Airlock
- sbn ActiveVents ThisVent On 1
- yield
- lbn r0 GasSensors ThisAirlock Pressure Maximum
- brgtz r0 -2
- sleep 1
- sbn ActiveVents ThisVent On 0
- beq ThisVent ThisVentOut cycleComplete
- #A simple sub-loop to pressurize the Airlock
- sbn ActiveVents ThisVentIn On 1
- yield
- lbn r0 GasSensors ThisAirlock Pressure Maximum
- lbn r1 GasSensors SensorIn Pressure Average
- sub r1 r1 5
- brlt r0 r1 -4
- sbn ActiveVents ThisVentIn On 0
- cycleComplete:
- sbn ThisDoorType SecondDoor Open 1
- sbn ThisLightType ThisAirlock On 0
- j start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement