abyss/command.zap

511 lines
9.7 KiB
Plaintext

.FUNCT RT-RM-COMMAND-MODULE:ANY:0:1,CONTEXT
EQUAL? CONTEXT,M-F-LOOK,M-V-LOOK,M-LOOK \?CCL3
PRINTC TAB
PRINTI "You "
EQUAL? CONTEXT,M-LOOK \?CCL6
PRINTI "are in"
JUMP ?CND4
?CCL6: PRINTI "enter"
?CND4: ICALL RT-PRINT-OBJ,RM-COMMAND-MODULE,K-ART-THE
PRINTI ", a long narrow cabin like the inside of a Winnebago packed with instrumentation. At the far end, a chair sits in front of a bank of monitors. The only exit is in the aft wall."
CRLF
RFALSE
?CCL3: EQUAL? CONTEXT,M-BEG \?CCL8
EQUAL? PRSA,V?SIT \FALSE
EQUAL? PRSO,ROOMS \FALSE
CALL1 RT-COMMAND-MENU
RSTACK
?CCL8: ZERO? CONTEXT \FALSE
RFALSE
.FUNCT RT-TH-MONITORS:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTC TAB
PRINTR "The monitors glow with data gathered from all over Deepcore."
?CCL5: EQUAL? PRSA,V?SIT \FALSE
CALL1 RT-COMMAND-MENU
RSTACK
.FUNCT RT-TH-COMMAND-CHAIR:ANY:0:1,CONTEXT
ZERO? CONTEXT \FALSE
EQUAL? PRSA,V?EXAMINE \?CCL5
PRINTC TAB
PRINTR "The chair is right in front of the main control panel."
?CCL5: EQUAL? PRSA,V?ENTER,V?SIT \FALSE
CALL1 RT-COMMAND-MENU
RSTACK
.FUNCT RT-COMMAND-MENU:ANY:0:0,C,L,ON?,X1,Y1,X2,Y2,?TMP2,?TMP1
SET 'X1,1
CALL2 L-PIXELS,4 >Y1
CALL2 C-PIXELS,16 >X2
CALL2 L-PIXELS,12 >Y2
MOUSE-LIMIT -1
CLEAR -1
GET 0,18 >?TMP1
MUL 6,GL-FONT-Y
SUB ?TMP1,STACK
ADD 1,STACK
WINPOS 0,STACK,1
MUL 6,GL-FONT-Y >?TMP1
GET 0,17
WINSIZE 0,?TMP1,STACK
ADD GL-FONT-Y,1
WINPOS 2,STACK,1
GET 0,18 >?TMP2
MUL 7,GL-FONT-Y
SUB ?TMP2,STACK >?TMP1
GET 0,17
WINSIZE 2,?TMP1,STACK
WINPOS 7,1,1
GET 0,18 >?TMP1
GET 0,17
WINSIZE 7,?TMP1,STACK
SET 'GL-SL-HERE,FALSE-VALUE
?PRG1: CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Main menu"
ICALL CCURSET,4,1
PRINTI "Emergency"
ICALL CCURSET,4,15
PRINTC 69
ICALL CCURSET,5,1
PRINTI "ROV"
ICALL CCURSET,5,15
PRINTC 82
ICALL CCURSET,6,1
PRINTI "Air"
ICALL CCURSET,6,15
PRINTC 65
ICALL CCURSET,7,1
PRINTI "Power"
ICALL CCURSET,7,15
PRINTC 80
ICALL CCURSET,8,1
PRINTI "Lights"
ICALL CCURSET,8,15
PRINTC 76
ICALL CCURSET,9,1
PRINTI "Life Support"
ICALL CCURSET,9,15
PRINTC 83
ICALL CCURSET,10,1
PRINTI "Pump"
ICALL CCURSET,10,15
PRINTC 77
ICALL CCURSET,11,1
PRINTI "Exit"
ICALL CCURSET,11,15
PRINTC 88
?PRG3: SCREEN 0
SET 'GL-INPUT-TIMEOUT,FALSE-VALUE
INPUT 1,3,RT-STOP-READ >C
ZERO? GL-INPUT-TIMEOUT \?CCL7
EQUAL? C,K-CLICK1,K-CLICK2 \?CCL10
CALL MOUSE-INPUT?,2,X1,Y1,X2,Y2
ZERO? STACK /?CCL13
CALL2 PIXELS-L,GL-MOUSE-Y >L
EQUAL? L,1 \?CCL16
SET 'C,101
JUMP ?REP4
?CCL16: EQUAL? L,2 \?CCL18
SET 'C,114
JUMP ?REP4
?CCL18: EQUAL? L,3 \?CCL20
SET 'C,97
JUMP ?REP4
?CCL20: EQUAL? L,4 \?CCL22
SET 'C,112
JUMP ?REP4
?CCL22: EQUAL? L,5 \?CCL24
SET 'C,108
JUMP ?REP4
?CCL24: EQUAL? L,6 \?CCL26
SET 'C,115
JUMP ?REP4
?CCL26: EQUAL? L,7 \?CCL28
SET 'C,109
JUMP ?REP4
?CCL28: SET 'C,120
JUMP ?REP4
?CCL13: SOUND S-BEEP
JUMP ?PRG3
?CCL10: LESS? C,65 /?CND29
GRTR? C,90 /?CND29
ADD C,32 >C
?CND29: EQUAL? C,101,114,97 /?REP4
EQUAL? C,112,108,115 /?REP4
EQUAL? C,109,120 /?REP4
SOUND S-BEEP
JUMP ?PRG3
?CCL7: SCREEN 2
ICALL CCURSET,4,1
ZERO? ON? /?PRT41
SET 'ON?,0
JUMP ?PRE43
?PRT41: SET 'ON?,1
?PRE43: ZERO? ON? /?CND39
HLIGHT K-H-INV
?CND39: PRINTI "Emergency"
HLIGHT K-H-NRM
JUMP ?PRG3
?REP4: EQUAL? C,101 \?CCL46
ICALL1 RT-EMERGENCY-MENU
JUMP ?PRG1
?CCL46: EQUAL? C,114 \?CCL48
ICALL1 RT-ROV-MENU
JUMP ?PRG1
?CCL48: EQUAL? C,97 \?CCL50
ICALL1 RT-AIR-MENU
JUMP ?PRG1
?CCL50: EQUAL? C,112 \?CCL52
ICALL1 RT-POWER-MENU
JUMP ?PRG1
?CCL52: EQUAL? C,108 \?CCL54
ICALL1 RT-LIGHT-MENU
JUMP ?PRG1
?CCL54: EQUAL? C,115 \?CCL56
ICALL1 RT-SUPPORT-MENU
JUMP ?PRG1
?CCL56: EQUAL? C,109 \?CCL58
ICALL1 RT-PUMP-MENU
JUMP ?PRG1
?CCL58: EQUAL? C,120 \?PRG1
CLEAR -1
ICALL1 INIT-STATUS-LINE
SCREEN 0
PRINTC TAB
PRINTR "You get up from the command chair."
.FUNCT RT-EMERGENCY-MENU:ANY:0:0,X1,Y1,X2,Y2,C,L
SET 'X1,1
CALL2 L-PIXELS,4 >Y1
CALL2 C-PIXELS,25 >X2
CALL2 L-PIXELS,6 >Y2
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Emergency menu"
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-KLAXON-ON /?CCL3
PRINTI "ON "
JUMP ?CND1
?CCL3: PRINTI "OFF"
?CND1: HLIGHT K-H-NRM
ICALL CCURSET,4,4
PRINTI "Emergency klaxons"
ICALL CCURSET,4,24
PRINTC 75
HLIGHT K-H-NRM
ICALL CCURSET,5,4
PRINTI "Exit"
ICALL CCURSET,5,24
PRINTC 88
?PRG4: SCREEN 0
INPUT 1 >C
EQUAL? C,K-CLICK1,K-CLICK2 \?CCL8
CALL MOUSE-INPUT?,2,X1,Y1,X2,Y2
ZERO? STACK /?CND6
CALL2 PIXELS-L,GL-MOUSE-Y >L
EQUAL? L,1 \?CCL13
SET 'C,107
JUMP ?CND6
?CCL13: SET 'C,120
JUMP ?CND6
?CCL8: LESS? C,65 /?CND6
GRTR? C,90 /?CND6
ADD C,32 >C
?CND6: EQUAL? C,107 \?CCL19
SCREEN 2
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-KLAXON-ON /?PRT23
SET 'GL-KLAXON-ON,0
JUMP ?PRE25
?PRT23: SET 'GL-KLAXON-ON,1
?PRE25: ZERO? GL-KLAXON-ON /?CCL22
ADD GL-MOVES,1
ICALL RT-QUEUE,RT-I-KLAXON,STACK
PRINTI "ON "
JUMP ?CND20
?CCL22: ICALL2 RT-DEQUEUE,RT-I-KLAXON
PRINTI "OFF"
?CND20: HLIGHT K-H-NRM
JUMP ?PRG4
?CCL19: EQUAL? C,120 /TRUE
SOUND S-BEEP
JUMP ?PRG4
.FUNCT RT-ROV-MENU:ANY:0:0
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "R.O.V. menu"
SCREEN 0
INPUT 1
RTRUE
.FUNCT RT-AIR-MENU:ANY:0:0
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Breathing Mix menu"
ICALL CCURSET,4,1
PRINTI "Oxygen: "
ICALL RT-PRINT-FLOAT,GL-OXYGEN-QTY,K-OXYGEN-FACTOR
PRINTI "% - "
ICALL RT-GAS-LEVEL-MSG,GL-OXYGEN-QTY,K-OXY-LOW-1,K-OXY-HIGH-1,K-OXY-NOM
PRINTI "
Carbon dioxide: "
ICALL RT-PRINT-FLOAT,GL-CO2-QTY,K-CO2-FACTOR
PRINTI "% - "
ICALL RT-GAS-LEVEL-MSG,GL-CO2-QTY,-1,K-CO2-HIGH-1,K-CO2-NOM
PRINTI "
Nitrogen: "
ICALL RT-PRINT-FLOAT,GL-NITROGEN-QTY,K-NITROGEN-FACTOR
PRINTI "% - "
ICALL RT-GAS-LEVEL-MSG,GL-NITROGEN-QTY,K-NIT-LOW-1,K-NIT-HIGH-1,K-NIT-NOM
PRINTI "
Helium: "
ICALL RT-PRINT-FLOAT,GL-HELIUM-QTY,K-HELIUM-FACTOR
PRINTI "%
"
SCREEN 0
INPUT 1
RTRUE
.FUNCT RT-GAS-LEVEL-MSG:ANY:4:4,QTY,LOW,HIGH,NOM
GRTR? QTY,LOW /?CCL3
PRINTI "low"
RTRUE
?CCL3: LESS? QTY,HIGH /?CCL5
PRINTI "high"
RTRUE
?CCL5: EQUAL? QTY,NOM \?CCL7
PRINTI "nominal"
RTRUE
?CCL7: LESS? QTY,NOM \?CCL9
PRINTI "less than nominal"
RTRUE
?CCL9: PRINTI "more than nominal"
RTRUE
.FUNCT RT-POWER-MENU:ANY:0:0
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Power menu"
SCREEN 0
INPUT 1
RTRUE
.FUNCT RT-LIGHT-MENU:ANY:0:0
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Lighting menu"
SCREEN 0
INPUT 1
RTRUE
.FUNCT RT-SUPPORT-MENU:ANY:0:0,X1,Y1,X2,Y2,C,L
SET 'X1,1
CALL2 L-PIXELS,4 >Y1
CALL2 C-PIXELS,28 >X2
CALL2 L-PIXELS,9 >Y2
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Life support menu"
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-SCRUBBERS-ON /?CCL3
PRINTI "ON "
JUMP ?CND1
?CCL3: PRINTI "OFF"
?CND1: HLIGHT K-H-NRM
ICALL CCURSET,4,4
PRINTI "CO2 scrubbers"
ICALL CCURSET,4,27
PRINTC 83
ICALL CCURSET,5,1
HLIGHT K-H-INV
ZERO? GL-HEATERS-ON /?CCL6
PRINTI "ON "
JUMP ?CND4
?CCL6: PRINTI "OFF"
?CND4: HLIGHT K-H-NRM
ICALL CCURSET,5,4
PRINTI "Heaters"
ICALL CCURSET,5,27
PRINTC 72
ICALL CCURSET,6,1
HLIGHT K-H-INV
PRINTI "ON "
HLIGHT K-H-NRM
ICALL CCURSET,6,4
PRINTI "Helium de-scramblers"
ICALL CCURSET,6,27
PRINTC 68
ICALL CCURSET,7,1
HLIGHT K-H-INV
PRINTI "ON "
HLIGHT K-H-NRM
ICALL CCURSET,7,4
PRINTI "De-humidifiers"
ICALL CCURSET,7,27
PRINTC 77
HLIGHT K-H-NRM
ICALL CCURSET,8,4
PRINTI "Exit"
ICALL CCURSET,8,27
PRINTC 88
ICALL CCURSET,4,50
PRINTI "Interior temp:"
ICALL CCURSET,5,50
ICALL RT-PRINT-FLOAT,GL-DEEPCORE-TEMP,K-TEMP-FACTOR
PRINTI " deg. F"
?PRG7: SCREEN 0
INPUT 1 >C
EQUAL? C,K-CLICK1,K-CLICK2 \?CCL11
CALL MOUSE-INPUT?,2,X1,Y1,X2,Y2
ZERO? STACK /?CND9
CALL2 PIXELS-L,GL-MOUSE-Y >L
EQUAL? L,1 \?CCL16
SET 'C,115
JUMP ?CND9
?CCL16: EQUAL? L,2 \?CCL18
SET 'C,104
JUMP ?CND9
?CCL18: EQUAL? L,3 \?CCL20
SET 'C,100
JUMP ?CND9
?CCL20: EQUAL? L,4 \?CCL22
SET 'C,109
JUMP ?CND9
?CCL22: SET 'C,120
JUMP ?CND9
?CCL11: LESS? C,65 /?CND9
GRTR? C,90 /?CND9
ADD C,32 >C
?CND9: EQUAL? C,115 \?CCL28
ZERO? GL-SCRUBBERS-ON /?PRT29
SET 'GL-SCRUBBERS-ON,0
JUMP ?PRE31
?PRT29: SET 'GL-SCRUBBERS-ON,1
?PRE31: SCREEN 2
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-SCRUBBERS-ON /?CCL34
PRINTI "ON "
JUMP ?CND32
?CCL34: PRINTI "OFF"
?CND32: HLIGHT K-H-NRM
JUMP ?PRG7
?CCL28: EQUAL? C,104 \?CCL36
ZERO? GL-HEATERS-ON /?PRT37
SET 'GL-HEATERS-ON,0
JUMP ?PRE39
?PRT37: SET 'GL-HEATERS-ON,1
?PRE39: SCREEN 2
ICALL CCURSET,5,1
HLIGHT K-H-INV
ZERO? GL-HEATERS-ON /?CCL42
PRINTI "ON "
JUMP ?CND40
?CCL42: PRINTI "OFF"
?CND40: HLIGHT K-H-NRM
JUMP ?PRG7
?CCL36: EQUAL? C,100 /?PRG7
EQUAL? C,109 /?PRG7
EQUAL? C,120 /TRUE
SOUND S-BEEP
JUMP ?PRG7
.FUNCT RT-PUMP-MENU:ANY:0:0,X1,Y1,X2,Y2,C,L
SET 'X1,1
CALL2 L-PIXELS,4 >Y1
CALL2 C-PIXELS,24 >X2
CALL2 L-PIXELS,6 >Y2
CLEAR 2
ICALL1 UPDATE-STATUS-LINE
SCREEN 2
CURSET 1,1
PRINTI "Pump and compressor menu"
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-WATER-PUMP-ON /?CCL3
PRINTI "ON "
JUMP ?CND1
?CCL3: PRINTI "OFF"
?CND1: HLIGHT K-H-NRM
ICALL CCURSET,4,4
PRINTI "Fresh water pumps"
ICALL CCURSET,4,23
PRINTC 80
HLIGHT K-H-NRM
ICALL CCURSET,5,4
PRINTI "Exit"
ICALL CCURSET,5,23
PRINTC 88
?PRG4: SCREEN 0
INPUT 1 >C
EQUAL? C,K-CLICK1,K-CLICK2 \?CCL8
CALL MOUSE-INPUT?,2,X1,Y1,X2,Y2
ZERO? STACK /?CND6
CALL2 PIXELS-L,GL-MOUSE-Y >L
EQUAL? L,1 \?CCL13
SET 'C,112
JUMP ?CND6
?CCL13: SET 'C,120
JUMP ?CND6
?CCL8: LESS? C,65 /?CND6
GRTR? C,90 /?CND6
ADD C,32 >C
?CND6: EQUAL? C,112 \?CCL19
SCREEN 2
ICALL CCURSET,4,1
HLIGHT K-H-INV
ZERO? GL-WATER-PUMP-ON /?PRT23
SET 'GL-WATER-PUMP-ON,0
JUMP ?PRE25
?PRT23: SET 'GL-WATER-PUMP-ON,1
?PRE25: ZERO? GL-WATER-PUMP-ON /?CCL22
PRINTI "ON "
JUMP ?CND20
?CCL22: PRINTI "OFF"
?CND20: HLIGHT K-H-NRM
JUMP ?PRG4
?CCL19: EQUAL? C,120 /TRUE
SOUND S-BEEP
JUMP ?PRG4
.FUNCT RT-TH-DESCRAMBLER-CONTROL-BOX:ANY:0:1,CONTEXT
RFALSE
.ENDI