.FUNCT VISIBLE?:ANY:1:1,OBJ CALL ACCESSIBLE?,OBJ,TRUE-VALUE RSTACK .FUNCT CLOSED?:ANY:1:2,OBJ,VIS? ZERO? OBJ /TRUE IN? OBJ,ROOMS /FALSE FSET? OBJ,FL-CONTAINER \?CCL7 FSET? OBJ,FL-OPEN /FALSE ZERO? VIS? /TRUE FSET? OBJ,FL-TRANSPARENT /FALSE RTRUE ?CCL7: FSET? OBJ,FL-SURFACE /FALSE FSET? OBJ,FL-ALIVE /FALSE FSET? OBJ,FL-PERSON /FALSE RTRUE .FUNCT ACCESSIBLE?:ANY:1:2,OBJ,VIS?,WLOC,OLOC,CLSD-PTR,PTR,CNT,TBL,END ZERO? OBJ /FALSE EQUAL? OBJ,ROOMS /TRUE SET 'PTR,GL-LOC-TRAIL SET 'OLOC,OBJ ?PRG5: PUT PTR,0,OLOC INC 'CNT ZERO? OLOC /?REP6 EQUAL? OLOC,WINNER /?REP6 IN? OLOC,ROOMS /?REP6 IN? OLOC,LOCAL-GLOBALS /?REP6 IN? OLOC,GLOBAL-OBJECTS /?REP6 IN? OLOC,GENERIC-OBJECTS /?REP6 LOC OLOC >OLOC ADD PTR,2 >PTR ZERO? OLOC /?PRG5 CALL CLOSED?,OLOC,VIS? ZERO? STACK /?PRG5 ZERO? CLSD-PTR \?PRG5 SET 'CLSD-PTR,PTR JUMP ?PRG5 ?REP6: SET 'PTR,FALSE-VALUE SET 'WLOC,WINNER ?PRG21: ZERO? WLOC /FALSE INTBL? WLOC,GL-LOC-TRAIL,CNT >PTR /?REP22 IN? WLOC,ROOMS /?REP22 LOC WLOC >WLOC ZERO? WLOC /?PRG21 CALL CLOSED?,WLOC,VIS? ZERO? STACK /?PRG21 RFALSE ?REP22: ZERO? WLOC /?CND33 IN? WLOC,ROOMS \?CND33 ZERO? PTR \?CND33 GETPT WLOC,P?GLOBAL >TBL ZERO? TBL /?CND33 PTSIZE TBL ADD TBL,STACK >END ?PRG41: LESS? TBL,END \?CND33 GET TBL,0 INTBL? STACK,GL-LOC-TRAIL,CNT >PTR /?CND33 ADD TBL,2 >TBL JUMP ?PRG41 ?CND33: ZERO? WLOC /?CND47 IN? WLOC,ROOMS \?CND47 ZERO? PTR \?CND47 FIRST? GLOBAL-OBJECTS >TBL /?PRG54 ?PRG54: ZERO? TBL /?CND47 INTBL? TBL,GL-LOC-TRAIL,CNT >PTR /?CND47 NEXT? TBL >TBL /?PRG54 JUMP ?PRG54 ?CND47: ZERO? PTR /FALSE ZERO? CLSD-PTR /TRUE GRTR? PTR,CLSD-PTR /FALSE RTRUE .FUNCT RT-PRINT-DESC:ANY:1:1,OBJ FSET? OBJ,FL-HAS-SDESC \?CCL3 GETP OBJ,P?ACTION CALL STACK,M-OBJDESC RSTACK ?CCL3: PRINTD OBJ RTRUE .FUNCT RT-PRINT-ARTICLE:ANY:3:3,OBJ,ART,CAP?,MASK ZERO? CAP? \?CND1 PRINTC 32 SET 'MASK,32 ?CND1: EQUAL? ART,K-ART-A \?CCL5 FSET? OBJ,FL-YOUR \?CCL8 BOR 89,MASK PRINTC STACK PRINTI "our" RTRUE ?CCL8: FSET? OBJ,FL-PLURAL \?CCL10 BOR 83,MASK PRINTC STACK PRINTI "ome" RTRUE ?CCL10: BOR 65,MASK PRINTC STACK FSET? OBJ,FL-VOWEL \FALSE PRINTC 110 RTRUE ?CCL5: EQUAL? ART,K-ART-THE \?CCL15 FSET? OBJ,FL-YOUR \?CCL18 BOR 89,MASK PRINTC STACK PRINTI "our" RTRUE ?CCL18: BOR 84,MASK PRINTC STACK PRINTI "he" RTRUE ?CCL15: EQUAL? ART,K-ART-ANY \?CCL20 BOR 65,MASK PRINTC STACK PRINTI "ny" RTRUE ?CCL20: EQUAL? ART,K-ART-HE \?CCL22 FSET? OBJ,FL-PLURAL \?CCL25 FSET? OBJ,FL-COLLECTIVE /?CCL25 BOR 84,MASK PRINTC STACK PRINTI "hey" RTRUE ?CCL25: FSET? OBJ,FL-PERSON /?CCL29 BOR 73,MASK PRINTC STACK PRINTC 116 RTRUE ?CCL29: EQUAL? OBJ,CH-PLAYER \?CCL31 BOR 89,MASK PRINTC STACK PRINTI "ou" RTRUE ?CCL31: FSET? OBJ,FL-FEMALE \?CCL33 BOR 83,MASK PRINTC STACK PRINTI "he" RTRUE ?CCL33: BOR 72,MASK PRINTC STACK PRINTC 101 RTRUE ?CCL22: EQUAL? ART,K-ART-HIM \?CCL35 FSET? OBJ,FL-PLURAL \?CCL38 FSET? OBJ,FL-COLLECTIVE /?CCL38 BOR 84,MASK PRINTC STACK PRINTI "hem" RTRUE ?CCL38: FSET? OBJ,FL-PERSON /?CCL42 BOR 73,MASK PRINTC STACK PRINTC 116 RTRUE ?CCL42: EQUAL? OBJ,CH-PLAYER \?CCL44 BOR 89,MASK PRINTC STACK PRINTI "ou" RTRUE ?CCL44: FSET? OBJ,FL-FEMALE \?CCL46 BOR 72,MASK PRINTC STACK PRINTI "er" RTRUE ?CCL46: BOR 72,MASK PRINTC STACK PRINTI "im" RTRUE ?CCL35: EQUAL? ART,K-ART-HIS \FALSE FSET? OBJ,FL-PLURAL \?CCL51 FSET? OBJ,FL-COLLECTIVE /?CCL51 BOR 84,MASK PRINTC STACK PRINTI "heir" RTRUE ?CCL51: FSET? OBJ,FL-PERSON /?CCL55 BOR 73,MASK PRINTC STACK PRINTI "ts" RTRUE ?CCL55: EQUAL? OBJ,CH-PLAYER \?CCL57 BOR 89,MASK PRINTC STACK PRINTI "our" RTRUE ?CCL57: FSET? OBJ,FL-FEMALE \?CCL59 BOR 72,MASK PRINTC STACK PRINTI "er" RTRUE ?CCL59: BOR 72,MASK PRINTC STACK PRINTI "is" RTRUE .FUNCT RT-PRINT-OBJ:ANY:0:4,O,ART,CAP?,VERB,MASK ASSIGNED? 'ART /?CND1 SET 'ART,K-ART-THE ?CND1: ZERO? O \?CND3 SET 'O,PRSO ?CND3: FSET? O,FL-HAS-SDESC \?CCL7 GETP O,P?ACTION ICALL STACK,M-OBJDESC,ART,CAP? JUMP ?CND5 ?CCL7: EQUAL? ART,K-ART-HE,K-ART-HIM,K-ART-HIS \?CCL9 FSET O,FL-SEEN ICALL RT-PRINT-ARTICLE,O,ART,CAP? JUMP ?CND5 ?CCL9: FSET? O,FL-NO-ARTICLE /?CCL11 FSET O,FL-SEEN ICALL RT-PRINT-ARTICLE,O,ART,CAP? PRINTC 32 ICALL2 RT-PRINT-DESC,O JUMP ?CND5 ?CCL11: ZERO? CAP? \?CND12 PRINTC 32 SET 'MASK,32 ?CND12: EQUAL? O,CH-PLAYER \?CCL16 BOR 89,MASK PRINTC STACK PRINTI "ou" JUMP ?CND5 ?CCL16: ICALL2 RT-PRINT-DESC,O ?CND5: ZERO? VERB /FALSE CALL RT-PRINT-VERB,O,VERB RSTACK .FUNCT RT-PRINT-VERB:ANY:2:2,OBJ,VERB PRINTC 32 EQUAL? OBJ,CH-PLAYER /?CTR2 FSET? OBJ,FL-PLURAL \?CCL3 FSET? OBJ,FL-COLLECTIVE /?CCL3 ?CTR2: PRINT VERB RTRUE ?CCL3: EQUAL? VERB,STR?56 \?CCL10 PRINTI "is" RTRUE ?CCL10: EQUAL? VERB,STR?61 \?CCL12 PRINTI "has" RTRUE ?CCL12: EQUAL? VERB,STR?62 \?CCL14 PRINTI "tries" RTRUE ?CCL14: EQUAL? VERB,STR?63 \?CCL16 PRINTI "empties" RTRUE ?CCL16: EQUAL? VERB,STR?64 \?CCL18 PRINTI "flies" RTRUE ?CCL18: EQUAL? VERB,STR?65 \?CCL20 PRINTI "dries" RTRUE ?CCL20: PRINT VERB EQUAL? VERB,STR?66,STR?67,STR?68 /?CCL22 EQUAL? VERB,STR?69,STR?70,STR?71 /?CCL22 EQUAL? VERB,STR?72 \?CND21 ?CCL22: PRINTC 101 ?CND21: PRINTC 115 RTRUE .FUNCT THIS-IS-IT:ANY:1:1,OBJ EQUAL? OBJ,FALSE-VALUE,ROOMS,NOT-HERE-OBJECT /TRUE EQUAL? OBJ,CH-PLAYER,INTDIR,GLOBAL-HERE /TRUE EQUAL? PRSA,V?WALK \?CND1 EQUAL? OBJ,PRSO /TRUE ?CND1: FSET? OBJ,FL-PERSON \?CCL11 FSET? OBJ,FL-FEMALE \?CCL14 FSET HER,FL-TOUCHED SET 'P-HER-OBJECT,OBJ RTRUE ?CCL14: FSET HIM,FL-TOUCHED SET 'P-HIM-OBJECT,OBJ RTRUE ?CCL11: FSET? OBJ,FL-PLURAL \?CCL16 FSET? OBJ,FL-COLLECTIVE /?CCL16 FSET THEM,FL-TOUCHED SET 'P-THEM-OBJECT,OBJ RTRUE ?CCL16: FSET IT,FL-TOUCHED SET 'P-IT-OBJECT,OBJ RTRUE .FUNCT RT-IN-ON-MSG:ANY:1:2,OBJ,CAP?,MASK ZERO? CAP? \?CND1 PRINTC 32 SET 'MASK,32 ?CND1: FSET? OBJ,FL-SURFACE \?CCL5 BOR 79,MASK PRINTC STACK JUMP ?CND3 ?CCL5: BOR 73,MASK PRINTC STACK ?CND3: PRINTC 110 RTRUE .FUNCT RT-OUT-OFF-MSG:ANY:1:2,OBJ,CAP? FSET? OBJ,FL-SURFACE /?CCL3 FSET? OBJ,FL-CONTAINER \FALSE ?CCL3: ZERO? CAP? \?CCL8 PRINTI " o" JUMP ?CND6 ?CCL8: PRINTC 79 ?CND6: FSET? OBJ,FL-SURFACE \?CCL11 PRINTI "ff" RTRUE ?CCL11: PRINTI "ut" RTRUE .FUNCT RT-OPEN-MSG:ANY:0:1,OBJ ZERO? OBJ \?CND1 SET 'OBJ,PRSO ?CND1: PRINTC 32 FSET? OBJ,FL-OPEN \?CCL5 PRINTI "open" RTRUE ?CCL5: PRINTI "closed" RTRUE .FUNCT TOUCH-VERB?:ANY:0:0 EQUAL? PRSA,V?UNWEAR,V?WEAR /TRUE EQUAL? PRSA,V?TAKE,V?PUT-IN,V?PUT /TRUE EQUAL? PRSA,V?OPEN,V?DROP,V?CLOSE /TRUE RFALSE .FUNCT CLOCKER:ANY:0:0,NT,RTN,TIME,ANY?,MULT?,DIF,N,VAL,I,Z1,Z2 ZERO? CLOCK-WAIT /?CND1 SET 'CLOCK-WAIT,FALSE-VALUE RFALSE ?CND1: SET 'NT,GL-MOVES SET 'GL-NEW-TIME,NT SET 'VAL,FALSE-VALUE ?PRG3: SET 'RTN,FALSE-VALUE SET 'TIME,NT SET 'ANY?,FALSE-VALUE SET 'MULT?,FALSE-VALUE SET 'I,0 ?PRG5: GET GL-Q-TBL,I >Z1 ADD I,1 GET GL-Q-TBL,STACK >Z2 ZERO? Z1 /?CND7 GRTR? Z2,TIME /?CND7 ZERO? RTN /?CND11 EQUAL? Z2,TIME \?CND11 SET 'MULT?,TRUE-VALUE ?CND11: SET 'RTN,Z1 SET 'TIME,Z2 SET 'N,I SET 'ANY?,TRUE-VALUE ?CND7: ADD I,2 >I LESS? I,K-Q-SIZE \?REP6 LESS? I,GL-Q-MAX /?PRG5 ?REP6: ZERO? ANY? /?REP4 SET 'GL-MOVES,TIME FSET? CH-PLAYER,FL-ASLEEP /?CND22 ICALL1 UPDATE-STATUS-LINE ?CND22: LESS? TIME,NT /?PRD24 PUSH 0 JUMP ?PRD25 ?PRD24: PUSH 1 ?PRD25: SET 'DIF,STACK PUT GL-Q-TBL,N,0 ADD N,1 PUT GL-Q-TBL,STACK,0 ADD N,2 EQUAL? STACK,GL-Q-MAX \?CND26 SUB GL-Q-MAX,2 >GL-Q-MAX ?CND26: SET 'GL-CLK-RUN,TRUE-VALUE CALL RTN ZERO? STACK /?CND28 SET 'VAL,TRUE-VALUE ?CND28: SET 'GL-CLK-RUN,FALSE-VALUE GRTR? GL-MOVES,NT \?CND30 SET 'GL-NEW-TIME,GL-MOVES SET 'NT,GL-MOVES ?CND30: ZERO? VAL /?PRG3 ZERO? MULT? \?PRG3 ZERO? DIF /?PRG3 EQUAL? PRSA,V?WAIT \?PRG3 FSET? CH-PLAYER,FL-ASLEEP /?PRG3 SET 'VAL,FALSE-VALUE CRLF PRINTI "Do you want to continue waiting" CALL1 YES? ZERO? STACK \?CCL41 SET 'NT,TIME ?REP4: SET 'GL-MOVES,NT INC 'GL-MOVES RFALSE ?CCL41: PRINT K-TIME-PASSES-MSG JUMP ?PRG3 .FUNCT RT-QUEUE:ANY:2:3,RTN,TIME,ABS?,I ?PRG1: GET GL-Q-TBL,I ZERO? STACK \?CCL5 PUT GL-Q-TBL,I,RTN ADD I,1 PUT GL-Q-TBL,STACK,TIME ADD I,2 GRTR? STACK,GL-Q-MAX \TRUE ADD I,2 >GL-Q-MAX RTRUE ?CCL5: ADD I,2 >I LESS? I,K-Q-SIZE /?PRG1 RFALSE .FUNCT RT-DEQUEUE:ANY:1:1,RTN,I ?PRG1: GET GL-Q-TBL,I EQUAL? STACK,RTN \?CCL5 PUT GL-Q-TBL,I,0 ADD I,1 PUT GL-Q-TBL,STACK,0 ADD I,2 EQUAL? STACK,GL-Q-MAX \TRUE SUB GL-Q-MAX,2 >GL-Q-MAX RTRUE ?CCL5: ADD I,2 >I LESS? I,K-Q-SIZE \FALSE LESS? I,GL-Q-MAX /?PRG1 RFALSE .FUNCT RT-IS-QUEUED?:ANY:1:1,RTN,TIME,I ?PRG1: GET GL-Q-TBL,I EQUAL? STACK,RTN \?CCL5 ADD I,1 GET GL-Q-TBL,STACK >TIME RETURN TIME ?CCL5: ADD I,2 >I LESS? I,K-Q-SIZE \FALSE LESS? I,GL-Q-MAX /?PRG1 RFALSE .FUNCT C-PIXELS:ANY:1:1,X SUB X,1 MUL STACK,GL-FONT-X ADD STACK,1 RSTACK .FUNCT L-PIXELS:ANY:1:1,Y SUB Y,1 MUL STACK,GL-FONT-Y ADD STACK,1 RSTACK .FUNCT PIXELS-C:ANY:1:1,X SUB X,1 DIV STACK,GL-FONT-X ADD STACK,1 RSTACK .FUNCT PIXELS-L:ANY:1:1,Y SUB Y,1 DIV STACK,GL-FONT-Y ADD STACK,1 RSTACK .FUNCT CCURSET:ANY:2:3,Y,X,W,?TMP1 ASSIGNED? 'W /?CND1 SET 'W,-3 ?CND1: CALL2 L-PIXELS,Y >?TMP1 CALL2 C-PIXELS,X CURSET ?TMP1,STACK,W RTRUE .FUNCT CCURGET:ANY:1:1,TBL CURGET TBL GET TBL,0 CALL2 PIXELS-L,STACK PUT TBL,0,STACK GET TBL,1 CALL2 PIXELS-C,STACK PUT TBL,1,STACK RETURN TBL .FUNCT CSPLIT:ANY:1:1,Y MUL Y,GL-FONT-Y SPLIT STACK RTRUE .FUNCT CWINPOS:ANY:3:3,W,Y,X,?TMP1 CALL2 L-PIXELS,Y >?TMP1 CALL2 C-PIXELS,X WINPOS W,?TMP1,STACK RTRUE .FUNCT CWINSIZE:ANY:3:3,W,Y,X,?TMP1 MUL Y,GL-FONT-Y >?TMP1 MUL X,GL-FONT-X WINSIZE W,?TMP1,STACK RTRUE .FUNCT CSCROLL:ANY:1:2,W,Y ASSIGNED? 'Y /?CND1 SET 'Y,1 ?CND1: MUL Y,GL-FONT-Y SCROLL W,STACK RTRUE .FUNCT RT-SCRIPT-INBUF:ANY:0:1,BUF,CNT,N,CHR ASSIGNED? 'BUF /?CND1 SET 'BUF,P-INBUF ?CND1: GETB BUF,1 >N DIROUT D-SCREEN-OFF INC 'BUF ?PRG3: IGRTR? 'CNT,N /?REP4 GETB BUF,CNT >CHR LESS? CHR,97 /?CCL10 GRTR? CHR,122 /?CCL10 SUB CHR,32 PRINTC STACK JUMP ?PRG3 ?CCL10: PRINTC CHR JUMP ?PRG3 ?REP4: CRLF DIROUT D-SCREEN-ON RTRUE .FUNCT GO:ANY:0:0 ?FCN: GETB 0,33 >GL-SCR-WID LESS? GL-SCR-WID,64 \?CND1 PRINTI "[The screen is too narrow.]" CRLF QUIT ?CND1: WINGET 0,WFSIZE SHIFT STACK,-8 >GL-FONT-Y WINGET 0,WFSIZE BAND STACK,255 >GL-FONT-X DIROUT K-D-TBL-ON,K-DIROUT-TBL PRINTC 32 DIROUT K-D-TBL-OFF GET 0,24 >GL-SPACE-WIDTH ZERO? GL-SPACE-WIDTH \?CND3 GET 0,17 >GL-SPACE-WIDTH GETB 0,33 DIV GL-SPACE-WIDTH,STACK >GL-SPACE-WIDTH ?CND3: MOUSE-LIMIT -1 CLEAR -1 ICALL2 INIT-STATUS-LINE,FALSE-VALUE ICALL1 UPDATE-STATUS-LINE ICALL RT-QUEUE,RT-I-GAS-MIX,GL-MOVES ICALL RT-QUEUE,RT-I-LEAVE-1,GL-MOVES ADD GL-MOVES,90 ICALL RT-QUEUE,RT-I-RETURN-1,STACK ADD GL-MOVES,120 ICALL RT-QUEUE,RT-I-CRANE-1,STACK ADD GL-MOVES,3 ICALL RT-QUEUE,RT-I-NITROGEN-LEAK,STACK ICALL RT-QUEUE,RT-I-TEMP,GL-MOVES ADD GL-MOVES,1320 ICALL RT-QUEUE,RT-I-CAB-FIXED,STACK ICALL1 V-VERSION CRLF PRINTI " 'Catfish' DeVries runs his eye over the gauges on the wall of Deepcore's gas-mix room. ""They're done, Bud,"" he says, ""Cooked to a turn."" He spins the wheel in the steel door to the compression chamber, and it eases open with a sigh. A man with a military haircut quickly steps through the door, apparently undisturbed by the six claustrophobic hours of compression that will enable him to survive the atmosphere 2,000 feet below the sea's surface. He is followed by three other men and one very pretty woman. ""Brigman?"" he says to you. ""Coffey. Team leader."" He gestures to the others. ""Willhite, Schoenick, Monk. I gather you already know the little lady."" Lindsey glares at him. ""Listen, Tarzan,"" she snaps, ""Let's get one thing straight..."" A nervous voice over the intercom interrupts her. ""Bud? It's Hippy. I'm in the Control Module and I got something here on the screen you should take a look at. Pronto."" You run out through the sub-bay with the others close on your heels. When you arrive in the Command Module, Hippy is pointing to the ROV screen. Coffey and the others crowd around behind you, looking over your shoulder. ""It's a small submersible over by the Montana,"" Hippy says. ""I can't make it out real well, but I saw some divers leaving her just a minute ago."" " MARGIN 50,50 PRINTI "[GRAPHIC: A close-up of the ROV screen, with a hint of the controls that surround it. On the screen is a murky picture of a submersible.] " MARGIN 0,0 PRINTI " ""Shit!"" Coffey shouts. ""We've got to secure that boat! Monk, take Willhite and Schoenick and that big rig we saw in the MoonPool. I'll go in the submersible we came down on. Brigman, I need some drivers."" One-Night cuts him off. ""I decide who drives what around here, mister. I'll take your boys over in Flatbed. Hippy will drive you in Cab Three. We leave in two minutes."" One-Night and Hippy leave the Command Module, followed by the SEALs. You are left alone with Lindsey and Catfish. " PRINTI "[MORE]" INPUT 1 CRLF ICALL1 INIT-STATUS-LINE CLEAR 6 WINGET 0,K-W-YSIZE SUB STACK,GL-FONT-Y CURSET STACK,1 ICALL1 MAIN-LOOP JUMP ?FCN .ENDI