planetfall/misc.zap
historicalsource e85ca899aa Final Revision
2019-04-13 21:35:51 -04:00

367 lines
7.7 KiB
Plaintext

.FUNCT PICK-ONE,FROB
GET FROB,0
RANDOM STACK
GET FROB,STACK
RSTACK
.FUNCT GO
START::
?FCN: PUTB P-LEXV,0,59
CALL QUEUE,I-BLATHER,-1
PUT STACK,0,1
CALL QUEUE,I-AMBASSADOR,-1
PUT STACK,0,1
CALL QUEUE,I-RANDOM-INTERRUPTS,1
PUT STACK,0,1
CALL QUEUE,I-SLEEP-WARNINGS,3600
PUT STACK,0,1
CALL QUEUE,I-HUNGER-WARNINGS,2000
PUT STACK,0,1
CALL QUEUE,I-SICKNESS-WARNINGS,1000
PUT STACK,0,1
SET 'SPOUT-PLACED,GROUND
GETB 0,56
ZERO? STACK \?CCL3
RANDOM 180
ADD 4450,STACK >INTERNAL-MOVES
JUMP ?CND1
?CCL3: SET 'INTERNAL-MOVES,4540
?CND1: SET 'MOVES,INTERNAL-MOVES
SET 'LIT,TRUE-VALUE
SET 'WINNER,ADVENTURER
SET 'HERE,DECK-NINE
SET 'P-IT-LOC,DECK-NINE
SET 'P-IT-OBJECT,POD-DOOR
FSET? HERE,TOUCHBIT /?CND4
CALL V-VERSION
CRLF
PRINTI "Another routine day of drudgery aboard the Stellar Patrol Ship Feinstein. This morning's assignment for a certain lowly Ensign Seventh Class: scrubbing the filthy metal deck at the port end of Level Nine. With your Patrol-issue self-contained multi-purpose all-weather scrub brush you shine the floor with a diligence born of the knowledge that at any moment dreaded Ensign First Class Blather, the bane of your shipboard existence, could appear."
CRLF
CRLF
?CND4: CALL V-LOOK
CALL MAIN-LOOP
JUMP ?FCN
.FUNCT I-RANDOM-INTERRUPTS
RANDOM 90
ADD STACK,240
CALL QUEUE,I-BLOWUP-FEINSTEIN,STACK
PUT STACK,0,1
CALL COMM-SETUP
RANDOM 1000 >NUMBER-NEEDED
RETURN NUMBER-NEEDED
.FUNCT MAIN-LOOP,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,?TMP1
?PRG1: SET 'C-ELAPSED,C-ELAPSED-DEFAULT
SET 'CNT,0
SET 'OBJ,FALSE-VALUE
SET 'PTBL,TRUE-VALUE
CALL PARSER >P-WON
ZERO? P-WON /?CCL5
GET P-PRSI,P-MATCHLEN >ICNT
GET P-PRSO,P-MATCHLEN >OCNT
ZERO? P-IT-OBJECT /?CND6
CALL ACCESSIBLE?,P-IT-OBJECT
ZERO? STACK /?CND6
SET 'TMP,FALSE-VALUE
?PRG10: IGRTR? 'CNT,ICNT /?REP11
GET P-PRSI,CNT
EQUAL? STACK,IT \?PRG10
PUT P-PRSI,CNT,P-IT-OBJECT
SET 'TMP,TRUE-VALUE
?REP11: ZERO? TMP \?CND17
SET 'CNT,0
?PRG19: IGRTR? 'CNT,OCNT /?CND17
GET P-PRSO,CNT
EQUAL? STACK,IT \?PRG19
PUT P-PRSO,CNT,P-IT-OBJECT
?CND17: SET 'CNT,0
?CND6: ZERO? OCNT \?CCL28
SET 'NUM,OCNT
JUMP ?CND26
?CCL28: GRTR? OCNT,1 \?CCL30
SET 'TBL,P-PRSO
ZERO? ICNT \?CCL33
SET 'OBJ,FALSE-VALUE
JUMP ?CND31
?CCL33: GET P-PRSI,1 >OBJ
?CND31: SET 'NUM,OCNT
JUMP ?CND26
?CCL30: GRTR? ICNT,1 \?CCL35
SET 'PTBL,FALSE-VALUE
SET 'TBL,P-PRSI
GET P-PRSO,1 >OBJ
SET 'NUM,ICNT
JUMP ?CND26
?CCL35: SET 'NUM,1
?CND26: ZERO? OBJ \?CND36
EQUAL? ICNT,1 \?CND36
GET P-PRSI,1 >OBJ
?CND36: EQUAL? PRSA,V?WALK \?CCL42
CALL PERFORM,PRSA,PRSO >V
JUMP ?CND40
?CCL42: ZERO? NUM \?CCL44
GETB P-SYNTAX,P-SBITS
BAND STACK,P-SONUMS
ZERO? STACK \?CCL47
CALL PERFORM,PRSA >V
SET 'PRSO,FALSE-VALUE
JUMP ?CND40
?CCL47: PRINTI "There isn't anything to "
GET P-ITBL,P-VERBN >TMP
ZERO? P-OFLAG \?CTR49
ZERO? P-MERGED /?CCL50
?CTR49: GET TMP,0
PRINTB STACK
JUMP ?CND48
?CCL50: GETB TMP,2 >?TMP1
GETB TMP,3
CALL WORD-PRINT,?TMP1,STACK
?CND48: PRINTC 33
CRLF
SET 'V,FALSE-VALUE
JUMP ?CND40
?CCL44: SET 'TMP,0
SET 'ICNT,FALSE-VALUE
?PRG53: IGRTR? 'CNT,NUM \?CCL57
GRTR? TMP,0 \?CCL60
PRINTI "The "
EQUAL? TMP,NUM /?CND61
PRINTI "other "
?CND61: PRINTI "object"
EQUAL? TMP,1 /?CND63
PRINTC 115
?CND63: PRINTI " that you mentioned "
EQUAL? TMP,1 /?CCL67
PRINTI "are"
JUMP ?CND65
?CCL67: PRINTI "is"
?CND65: PRINTI "n't here."
CRLF
JUMP ?CND40
?CCL60: ZERO? ICNT \?CND40
PRINTI "There's nothing there."
CRLF
JUMP ?CND40
?CCL57: ZERO? PTBL /?CCL71
GET P-PRSO,CNT >OBJ1
JUMP ?CND69
?CCL71: GET P-PRSI,CNT >OBJ1
?CND69: ZERO? PTBL /?CCL74
SET 'PRSO,OBJ1
JUMP ?CND72
?CCL74: SET 'PRSO,OBJ
?CND72: ZERO? PTBL /?CCL77
SET 'PRSI,OBJ
JUMP ?CND75
?CCL77: SET 'PRSI,OBJ1
?CND75: GRTR? NUM,1 /?CCL79
GET P-ITBL,P-NC1
GET STACK,0
EQUAL? STACK,W?ALL \?CND78
?CCL79: EQUAL? OBJ1,NOT-HERE-OBJECT \?CCL84
INC 'TMP
JUMP ?PRG53
?CCL84: EQUAL? PRSA,V?TAKE \?CCL86
ZERO? PRSI /?CCL86
GET P-ITBL,P-NC1
GET STACK,0
EQUAL? STACK,W?ALL \?CCL86
IN? PRSO,PRSI \?PRG53
?CCL86: EQUAL? P-GETFLAGS,P-ALL \?CCL92
EQUAL? PRSA,V?TAKE \?CCL92
LOC OBJ1
EQUAL? STACK,WINNER,HERE \?PRG53
?CCL92: EQUAL? OBJ1,IT \?CCL98
PRINTD P-IT-OBJECT
JUMP ?CND96
?CCL98: PRINTD OBJ1
?CND96: PRINTI ": "
?CND78: SET 'ICNT,TRUE-VALUE
CALL PERFORM,PRSA,PRSO,PRSI >V
EQUAL? V,M-FATAL \?PRG53
?CND40: EQUAL? V,M-FATAL /?CND101
LOC WINNER
GETP STACK,P?ACTION
CALL STACK,M-END >V
?CND101: EQUAL? PRSA,V?AGAIN /?CND103
SET 'L-PRSA,PRSA
SET 'L-PRSO,PRSO
SET 'L-PRSI,PRSI
?CND103: CALL INT,I-POD-TRIP
GET STACK,C-ENABLED?
ZERO? STACK /?CCL107
SET 'C-ELAPSED,54
JUMP ?CND105
?CCL107: GRTR? SHUTTLE-VELOCITY,0 \?CCL109
DIV 600,SHUTTLE-VELOCITY >C-ELAPSED
JUMP ?CND105
?CCL109: EQUAL? PRSA,V?TELL /?CTR110
CALL TIMELESS-VERB?,PRSA
ZERO? STACK /?CCL111
?CTR110: SET 'C-ELAPSED,0
JUMP ?CND105
?CCL111: EQUAL? PRSA,V?AGAIN \?CND105
CALL TIMELESS-VERB?,L-PRSA
ZERO? STACK /?CND105
SET 'C-ELAPSED,0
?CND105: ADD INTERNAL-MOVES,C-ELAPSED >INTERNAL-MOVES
EQUAL? V,M-FATAL \?CND3
SET 'P-CONT,FALSE-VALUE
JUMP ?CND3
?CCL5: SET 'P-CONT,FALSE-VALUE
?CND3: IN? CHRONOMETER,ADVENTURER /?CCL121
SET 'MOVES,0
JUMP ?CND119
?CCL121: FSET? CHRONOMETER,MUNGEDBIT \?CCL123
SET 'MOVES,MUNGED-TIME
JUMP ?CND119
?CCL123: SET 'MOVES,INTERNAL-MOVES
?CND119: ZERO? P-WON /?PRG1
ZERO? C-ELAPSED /?PRG1
CALL CLOCKER >V
JUMP ?PRG1
.FUNCT TIMELESS-VERB?,VRB
EQUAL? VRB,V?BRIEF,V?SUPER-BRIEF,V?VERBOSE /TRUE
EQUAL? VRB,V?SAVE,V?RESTORE,V?SCORE /TRUE
EQUAL? VRB,V?SCRIPT,V?UNSCRIPT,V?TIME /TRUE
EQUAL? VRB,V?QUIT,V?RESTART,V?VERSION /TRUE
EQUAL? VRB,V?$RANDOM,V?$RECORD,V?$UNRECORD /TRUE
EQUAL? VRB,V?$COMMAND /TRUE
RFALSE
.FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI
SET 'OA,PRSA
SET 'OO,PRSO
SET 'OI,PRSI
EQUAL? IT,I,O \?CND1
PRINTI "I don't see what you are referring to."
CRLF
SET 'P-IT-OBJECT,FALSE-VALUE
RETURN 2
?CND1: SET 'PRSA,A
SET 'PRSO,O
ZERO? PRSO /?CND5
EQUAL? PRSA,V?WALK /?CND5
SET 'P-IT-OBJECT,PRSO
SET 'P-IT-LOC,HERE
?CND5: SET 'PRSI,I
EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?CCL11
CALL NOT-HERE-OBJECT-F >V
ZERO? V /?CCL11
SET 'P-WON,FALSE-VALUE
JUMP ?CND9
?CCL11: SET 'O,PRSO
ZERO? O /?CCL15
SET 'I,PRSI
ZERO? I /?CCL15
CALL NULL-F
ZERO? STACK /?CCL15
PRINTI "[in case last clause changed PRSx]"
JUMP ?CND9
?CCL15: GETP WINNER,P?ACTION
CALL STACK >V
ZERO? V \?CND9
LOC WINNER
GETP STACK,P?ACTION
CALL STACK,M-BEG >V
ZERO? V \?CND9
GET PREACTIONS,A
CALL STACK >V
ZERO? V \?CND9
ZERO? I /?CCL26
GETP I,P?ACTION
CALL STACK >V
ZERO? V \?CND9
?CCL26: ZERO? O /?CCL30
EQUAL? A,V?WALK /?CCL30
GETP O,P?ACTION
CALL STACK >V
ZERO? V \?CND9
?CCL30: GET ACTIONS,A
CALL STACK >V
ZERO? V /?CND9
?CND9: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
.FUNCT META-LOC,OBJ
?PRG1: ZERO? OBJ /FALSE
IN? OBJ,GLOBAL-OBJECTS \?CND3
RETURN GLOBAL-OBJECTS
?CND3: IN? OBJ,ROOMS \?CCL9
RETURN OBJ
?CCL9: LOC OBJ >OBJ
JUMP ?PRG1
.FUNCT QUEUE,RTN,TICK,CINT
CALL INT,RTN >CINT
PUT CINT,C-TICK,TICK
RETURN CINT
.FUNCT INT,RTN,DEMON=0,E,C,INT
ADD C-TABLE,C-TABLELEN >E
ADD C-TABLE,C-INTS >C
?PRG1: EQUAL? C,E \?CCL5
SUB C-INTS,C-INTLEN >C-INTS
ZERO? DEMON /?PEN6
SUB C-DEMONS,C-INTLEN >C-DEMONS
?PEN6: ADD C-TABLE,C-INTS >INT
PUT INT,C-RTN,RTN
RETURN INT
?CCL5: GET C,C-RTN
EQUAL? STACK,RTN \?CND3
RETURN C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT CLOCKER,C,E,TICK,FLG=0
ZERO? P-WON /?CCL3
PUSH C-INTS
JUMP ?CND1
?CCL3: PUSH C-DEMONS
?CND1: ADD C-TABLE,STACK >C
ADD C-TABLE,C-TABLELEN >E
?PRG4: EQUAL? C,E \?CCL8
RETURN FLG
?CCL8: GET C,C-ENABLED?
ZERO? STACK /?CND6
GET C,C-TICK >TICK
ZERO? TICK /?CND6
EQUAL? TICK,-1 \?CCL13
GET C,C-RTN
CALL STACK
ZERO? STACK /?CND6
SET 'FLG,TRUE-VALUE
JUMP ?CND6
?CCL13: SUB TICK,C-ELAPSED >TICK
PUT C,C-TICK,TICK
GRTR? TICK,1 /?CND6
PUT C,C-TICK,0
GET C,C-RTN
CALL STACK
ZERO? STACK /?CND6
SET 'FLG,TRUE-VALUE
?CND6: ADD C,C-INTLEN >C
JUMP ?PRG4
.FUNCT NULL-F,A1,A2
RFALSE
.ENDI