611 lines
13 KiB
Plaintext
611 lines
13 KiB
Plaintext
|
|
|
|
.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
|