minizork2-1988/globals.zap
historicalsource a24d33a0ad Final Revision
2019-04-13 21:54:32 -04:00

310 lines
6.1 KiB
Plaintext

.FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ
EQUAL? PRSO,NOT-HERE-OBJECT \?CCL3
EQUAL? PRSI,NOT-HERE-OBJECT \?CCL3
PRINTR "Those things aren't here!"
?CCL3: EQUAL? PRSO,NOT-HERE-OBJECT \?CCL9
SET 'TBL,P-PRSO
JUMP ?CND1
?CCL9: SET 'TBL,P-PRSI
SET 'PRSO?,FALSE-VALUE
?CND1: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
EQUAL? WINNER,ADVENTURER \?PRG17
PRINTI "You can't see any "
CALL NOT-HERE-PRINT,PRSO?
PRINTR " here!"
?PRG17: PRINTI "The "
PRINTD WINNER
PRINTI " seems confused. ""I don't see any "
CALL NOT-HERE-PRINT,PRSO?
PRINTR " here!"""
.FUNCT NOT-HERE-PRINT,PRSO?,?TMP1
ZERO? P-OFLAG /?CCL3
ZERO? P-XADJ /?CND4
PRINTB P-XADJN
?CND4: ZERO? P-XNAM /FALSE
PRINTB P-XNAM
RTRUE
?CCL3: ZERO? PRSO? /?CCL10
GET P-ITBL,P-NC1 >?TMP1
GET P-ITBL,P-NC1L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
?CCL10: GET P-ITBL,P-NC2 >?TMP1
GET P-ITBL,P-NC2L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
.FUNCT GROUND-F
EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
EQUAL? PRSI,GROUND \FALSE
CALL PERFORM,V?DROP,PRSO
RTRUE
.FUNCT WATER-F,AV,W,PI?
EQUAL? PRSA,V?SGIVE /FALSE
EQUAL? PRSA,V?ENTER \?CCL5
CALL PERFORM,V?SWIM,PRSO
RTRUE
?CCL5: EQUAL? PRSA,V?FILL \?CCL7
SET 'W,PRSI
SET 'PRSA,V?PUT
SET 'PRSI,PRSO
SET 'PRSO,W
SET 'PI?,FALSE-VALUE
JUMP ?CND1
?CCL7: EQUAL? PRSO,GLOBAL-WATER,WATER \?CCL9
SET 'W,PRSO
SET 'PI?,FALSE-VALUE
JUMP ?CND1
?CCL9: ZERO? PRSI /?CND1
SET 'W,PRSI
SET 'PI?,TRUE-VALUE
?CND1: EQUAL? W,GLOBAL-WATER \?CND11
SET 'W,WATER
EQUAL? PRSA,V?PUT,V?TAKE \?CND11
REMOVE W
?CND11: ZERO? PI? /?CCL17
SET 'PRSI,W
JUMP ?CND15
?CCL17: SET 'PRSO,W
?CND15: LOC WINNER >AV
FSET? AV,VEHBIT /?CND18
SET 'AV,FALSE-VALUE
?CND18: EQUAL? PRSA,V?PUT,V?TAKE \?CCL22
ZERO? PI? \?CCL22
ZERO? AV /?CCL27
EQUAL? AV,PRSI \?CCL27
CALL PUDDLE,AV
RSTACK
?CCL27: ZERO? AV /?CCL31
ZERO? PRSI \?CCL31
IN? W,AV /?CCL31
CALL PUDDLE,AV
RSTACK
?CCL31: ZERO? PRSI /?CCL36
EQUAL? PRSI,TEAPOT /?CCL36
PRINTI "The water leaks out of the "
PRINTD PRSI
PRINTI " and evaporates immediately."
CRLF
REMOVE W
RTRUE
?CCL36: IN? TEAPOT,WINNER \?CCL42
FIRST? TEAPOT /?PRG48
MOVE WATER,TEAPOT
PRINTR "The teapot is now full of water."
?PRG48: PRINTR "The teapot isn't currently empty."
?CCL42: IN? PRSO,TEAPOT \?PRG55
EQUAL? PRSA,V?TAKE \?PRG55
ZERO? PRSI \?PRG55
SET 'PRSO,TEAPOT
CALL ITAKE
SET 'PRSO,W
RETURN PRSO
?PRG55: PRINTR "The water slips through your fingers."
?CCL22: ZERO? PI? /?CCL58
PRINTR "Nice try."
?CCL58: EQUAL? PRSA,V?GIVE,V?DROP \?CCL62
EQUAL? PRSO,WATER \?CND63
CALL HELD?,WATER
ZERO? STACK \?CND63
PRINTR "You don't have any water."
?CND63: REMOVE WATER
ZERO? AV /?PRG72
CALL PUDDLE,AV
RSTACK
?PRG72: PRINTI "The water spills to the floor and evaporates."
CRLF
REMOVE WATER
RTRUE
?CCL62: EQUAL? PRSA,V?THROW \FALSE
PRINTI "The water splashes on the walls and evaporates."
CRLF
REMOVE WATER
RTRUE
.FUNCT PUDDLE,AV
PRINTI "There is now a puddle in the bottom of the "
PRINTD AV
PRINT PERIOD-CR
MOVE PRSO,AV
RTRUE
.FUNCT GRUE-F
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "The grue is a sinister, lurking presence in the dark places of the earth. Its favorite diet is adventurers, but its insatiable appetite is tempered by its fear of light."
?CCL3: EQUAL? PRSA,V?FIND \FALSE
PRINTR "There's probably one lurking in the darkness nearby. Don't let your light go out!"
.FUNCT ME-F
EQUAL? PRSA,V?TELL \?CCL3
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
PRINTR "Talking to yourself is a sign of impending mental collapse."
?CCL3: EQUAL? PRSA,V?GIVE \?CCL7
EQUAL? PRSI,ME \?CCL7
CALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL7: EQUAL? PRSA,V?EAT \?CCL11
PRINTR "Auto-cannibalism is not the answer."
?CCL11: EQUAL? PRSA,V?MUNG,V?ATTACK \?CCL15
CALL JIGS-UP,STR?22
RSTACK
?CCL15: EQUAL? PRSA,V?TAKE \?CCL17
PRINTR "How romantic!"
?CCL17: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "Difficult, unless your eyes are prehensile."
.FUNCT PATH-OBJECT-F
EQUAL? PRSA,V?FOLLOW,V?TAKE \FALSE
CALL V-WALK-AROUND
RSTACK
.FUNCT ZORKMID-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "The zorkmid is the unit of currency of"
PRINT GUE-NAME
PRINT PERIOD-CR
RTRUE
.FUNCT STREAM-F
EQUAL? PRSA,V?ENTER \FALSE
CALL V-SWIM
RSTACK
.FUNCT CHASM-F
EQUAL? PRSA,V?LEAP /?CTR2
EQUAL? PRSA,V?PUT \?CCL3
EQUAL? PRSO,ME \?CCL3
?CTR2: CALL JIGS-UP,STR?7
RSTACK
?CCL3: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,PSEUDO-OBJECT \FALSE
REMOVE PRSO
PRINTI "The "
PRINTD PRSO
PRINTR " disappears into the chasm."
.FUNCT BRIDGE-F
EQUAL? PRSA,V?LEAP \FALSE
CALL JIGS-UP,STR?7
RSTACK
.FUNCT OPEN-CLOSE
EQUAL? PRSA,V?OPEN \?CCL3
FSET? PRSO,OPENBIT \?CCL6
PRINT LOOK-AROUND
RTRUE
?CCL6: FSET PRSO,OPENBIT
PRINTI "The "
PRINTD PRSO
PRINTR " is now open."
?CCL3: FSET? PRSO,OPENBIT \?PRG15
FCLEAR PRSO,OPENBIT
PRINTI "The "
PRINTD PRSO
PRINTR " is now closed."
?PRG15: PRINT LOOK-AROUND
RTRUE
.FUNCT HELLO?,WHO
EQUAL? WINNER,WHO /?CCL3
EQUAL? PRSA,V?HELLO,V?SAY,V?TELL /?CCL3
EQUAL? PRSA,V?INCANT \FALSE
?CCL3: EQUAL? PRSA,V?INCANT,V?SAY,V?TELL \TRUE
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RTRUE
.FUNCT FIND-TARGET,TARGET,P,TX,L,ROOM
IN? TARGET,HERE \?CCL3
RETURN HERE
?CCL3: SET 'P,0
?PRG4: NEXTP HERE,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /?PRG4
GETPT HERE,P >TX
PTSIZE TX >L
EQUAL? L,UEXIT,CEXIT,DEXIT \?PRG4
GETB TX,0 >ROOM
IN? TARGET,ROOM \?PRG4
RETURN ROOM
.FUNCT NOW-DARK?
CALL LIT?,HERE >LIT
ZERO? LIT \TRUE
PRINTR "It is now pitch black."
.FUNCT DO-WALK,DIR
SET 'P-WALK-DIR,DIR
CALL PERFORM,V?WALK,DIR
RSTACK
.FUNCT GLOBAL-IN?,OBJ1,OBJ2,TX
GETPT OBJ2,P?GLOBAL >TX
ZERO? TX /FALSE
PTSIZE TX
SUB STACK,1
CALL ZMEMQB,OBJ1,TX,STACK
RSTACK
.FUNCT FIND-IN,WHERE,WHAT,W
FIRST? WHERE >W /?BOGUS1
?BOGUS1: ZERO? W /FALSE
?PRG4: FSET? W,WHAT \?CCL8
EQUAL? W,ADVENTURER /?CCL8
RETURN W
?CCL8: NEXT? W >W /?PRG4
RFALSE
.FUNCT HELD?,CAN
?PRG1: LOC CAN >CAN
ZERO? CAN /FALSE
EQUAL? CAN,WINNER \?PRG1
RTRUE
.FUNCT OTHER-SIDE,DOBJ,P=0,TX
?PRG1: NEXTP HERE,P >P
LESS? P,LOW-DIRECTION /FALSE
GETPT HERE,P >TX
PTSIZE TX
EQUAL? STACK,DEXIT \?PRG1
GETB TX,DEXITOBJ
EQUAL? STACK,DOBJ \?PRG1
RETURN P
.FUNCT HACK-HACK,STR
PRINT STR
PRINTD PRSO
CALL PICK-ONE,HO-HUM
PRINT STACK
CRLF
RTRUE
.ENDI