mirror of
https://github.com/historicalsource/minizork2-1988
synced 2024-04-26 22:19:43 +03:00
1819 lines
33 KiB
Plaintext
1819 lines
33 KiB
Plaintext
|
|
|
|
.FUNCT V-VERBOSE
|
|
SET 'VERBOSITY,2
|
|
PRINTR "Maximum verbosity."
|
|
|
|
|
|
.FUNCT V-BRIEF
|
|
SET 'VERBOSITY,1
|
|
PRINTR "Brief descriptions."
|
|
|
|
|
|
.FUNCT V-SUPER-BRIEF
|
|
SET 'VERBOSITY,0
|
|
PRINTR "Superbrief descriptions."
|
|
|
|
|
|
.FUNCT V-DIAGNOSE
|
|
PRINTI "You are "
|
|
ZERO? DEAD /?CCL5
|
|
PRINTI "dead"
|
|
JUMP ?CND3
|
|
?CCL5: EQUAL? SPELL?,S-FERMENT \?CCL9
|
|
PRINTI "drunk"
|
|
JUMP ?CND3
|
|
?CCL9: EQUAL? SPELL?,S-FEEBLE \?CCL13
|
|
PRINTI "unusually"
|
|
JUMP ?CND3
|
|
?CCL13: EQUAL? SPELL?,S-FLOAT \?CCL17
|
|
PRINTI "floating"
|
|
JUMP ?CND3
|
|
?CCL17: EQUAL? SPELL?,S-FREEZE \?PRG24
|
|
PRINTI "frozen stiff"
|
|
JUMP ?CND3
|
|
?PRG24: PRINTI "in perfect health"
|
|
?CND3: ZERO? DEATHS /?PRG41
|
|
PRINTI ". You have been killed "
|
|
EQUAL? DEATHS,1 \?CCL32
|
|
PRINTI "once"
|
|
JUMP ?PRG41
|
|
?CCL32: EQUAL? DEATHS,2 \?PRG39
|
|
PRINTI "twice"
|
|
JUMP ?PRG41
|
|
?PRG39: PRINTI "an awful lot"
|
|
?PRG41: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-INVENTORY
|
|
FIRST? WINNER \?PRG4
|
|
CALL PRINT-CONT,WINNER
|
|
RSTACK
|
|
?PRG4: PRINTR "You are empty-handed."
|
|
|
|
|
|
.FUNCT FINISH,WRD
|
|
CALL V-SCORE
|
|
?PRG1: CRLF
|
|
PRINTI "Would you like to start over, restore a saved position, or stop playing?
|
|
(Type RESTART, RESTORE, or QUIT):
|
|
>"
|
|
READ P-INBUF,P-LEXV
|
|
GET P-LEXV,1 >WRD
|
|
EQUAL? WRD,W?RESTART \?CCL7
|
|
RESTART
|
|
PRINTI "Failed."
|
|
CRLF
|
|
JUMP ?PRG1
|
|
?CCL7: EQUAL? WRD,W?RESTORE \?CCL11
|
|
RESTORE
|
|
PRINTI "Failed."
|
|
CRLF
|
|
JUMP ?PRG1
|
|
?CCL11: EQUAL? WRD,W?QUIT,W?Q \?PRG1
|
|
QUIT
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT V-QUIT,SCOR
|
|
CALL DO-YOU-WISH,STR?1
|
|
ZERO? STACK /?PRG4
|
|
QUIT
|
|
RTRUE
|
|
?PRG4: PRINTR "Ok."
|
|
|
|
|
|
.FUNCT V-RESTART
|
|
CALL DO-YOU-WISH,STR?2
|
|
ZERO? STACK /FALSE
|
|
PRINTI "Restarting."
|
|
CRLF
|
|
RESTART
|
|
PRINTR "Failed."
|
|
|
|
|
|
.FUNCT DO-YOU-WISH,STRING
|
|
CALL V-SCORE
|
|
PRINTI "Do you wish to "
|
|
PRINT STRING
|
|
PRINTI "? (Y is affirmative): "
|
|
CALL YES?
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT YES?
|
|
PRINTC 62
|
|
READ P-INBUF,P-LEXV
|
|
GET P-LEXV,1
|
|
EQUAL? STACK,W?YES,W?Y /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-RESTORE
|
|
RESTORE
|
|
PRINTR "Failed."
|
|
|
|
|
|
.FUNCT V-SAVE
|
|
SAVE \?PRG6
|
|
PRINTR "Ok."
|
|
?PRG6: PRINTR "Failed."
|
|
|
|
|
|
.FUNCT V-SCORE
|
|
PRINTI "Your score is "
|
|
PRINTN SCORE
|
|
PRINTI " (out of 400 points), in "
|
|
PRINTN MOVES
|
|
PRINTI " move"
|
|
EQUAL? MOVES,1 /?PRG7
|
|
PRINTC 115
|
|
?PRG7: PRINTI ". This score gives you the rank of "
|
|
EQUAL? SCORE,400 \?CCL11
|
|
PRINTI "Wizard"
|
|
JUMP ?PRG32
|
|
?CCL11: GRTR? SCORE,320 \?CCL15
|
|
PRINTI "Master Adventurer"
|
|
JUMP ?PRG32
|
|
?CCL15: GRTR? SCORE,240 \?CCL19
|
|
PRINTI "Senior Adventurer"
|
|
JUMP ?PRG32
|
|
?CCL19: GRTR? SCORE,160 \?CCL23
|
|
PRINTI "Junior Adventurer"
|
|
JUMP ?PRG32
|
|
?CCL23: GRTR? SCORE,80 \?PRG30
|
|
PRINTI "Amateur Adventurer"
|
|
JUMP ?PRG32
|
|
?PRG30: PRINTI "Beginner"
|
|
?PRG32: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SCORE-OBJ,OBJ,TEMP
|
|
GETP OBJ,P?VALUE >TEMP
|
|
GRTR? TEMP,0 \FALSE
|
|
ADD SCORE,TEMP >SCORE
|
|
PUTP OBJ,P?VALUE,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SCRIPT
|
|
GET 0,8
|
|
BOR STACK,1
|
|
PUT 0,8,STACK
|
|
CALL INTERACTION,STR?3
|
|
RSTACK
|
|
|
|
|
|
.FUNCT INTERACTION,STRING
|
|
PRINTI "Here "
|
|
PRINT STRING
|
|
PRINTI "s a transcript of interaction with"
|
|
CRLF
|
|
CALL V-VERSION
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-UNSCRIPT
|
|
CALL INTERACTION,STR?4
|
|
GET 0,8
|
|
BAND STACK,-2
|
|
PUT 0,8,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-VERSION,CNT=17
|
|
PRINTI "Mini-Zork II: The Wizard of Frobozz
|
|
Copyright (c) 1988, Infocom, Inc. All rights reserved.
|
|
ZORK is a registered trademark of Infocom, Inc.
|
|
Release "
|
|
GET 0,1
|
|
BAND STACK,2047
|
|
PRINTN STACK
|
|
PRINTI " / Serial number "
|
|
?PRG5: IGRTR? 'CNT,23 /?REP6
|
|
GETB 0,CNT
|
|
PRINTC STACK
|
|
JUMP ?PRG5
|
|
?REP6: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-VERIFY
|
|
PRINTI "Verifying..."
|
|
CRLF
|
|
VERIFY \?PRG8
|
|
PRINTR "Correct."
|
|
?PRG8: CRLF
|
|
PRINTR "** Failed! **"
|
|
|
|
|
|
.FUNCT V-COMMAND-FILE
|
|
DIRIN 1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RANDOM
|
|
EQUAL? PRSO,INTNUM /?CCL3
|
|
PRINTR "Illegal call to #RND."
|
|
?CCL3: SUB 0,P-NUMBER
|
|
RANDOM STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RECORD
|
|
DIROUT 4
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNRECORD
|
|
DIROUT -4
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ALARM
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " isn't sleeping."
|
|
|
|
|
|
.FUNCT V-ATTACK
|
|
FSET? PRSO,ACTORBIT /?CND1
|
|
PRINTI "Fight a "
|
|
PRINTD PRSO
|
|
PRINTR "!?!"
|
|
?CND1: ZERO? PRSI \?PRG10
|
|
IN? ADVENTURER,SWORD \?CCL9
|
|
SET 'PRSI,SWORD
|
|
JUMP ?PRG10
|
|
?CCL9: SET 'PRSI,HANDS
|
|
?PRG10: PRINTI "Trying to attack a "
|
|
PRINTD PRSO
|
|
PRINTI " with "
|
|
EQUAL? PRSI,HANDS \?PRG17
|
|
PRINTI "your bare hands"
|
|
JUMP ?PRG19
|
|
?PRG17: PRINTI "a "
|
|
PRINTD PRSI
|
|
?PRG19: PRINTR " is suicidal."
|
|
|
|
|
|
.FUNCT V-BLAST
|
|
PRINTR "You can't blast anything by using words."
|
|
|
|
|
|
.FUNCT PRE-BURN
|
|
ZERO? PRSI \?CCL3
|
|
PRINTR "You didn't say with what!"
|
|
?CCL3: FSET? PRSI,FLAMEBIT \?PRG10
|
|
FSET? PRSI,ONBIT /FALSE
|
|
?PRG10: PRINTI "With a "
|
|
PRINTD PRSI
|
|
PRINTR "??!?"
|
|
|
|
|
|
.FUNCT V-BURN
|
|
LOC PRSO
|
|
EQUAL? STACK,RECEPTACLE \?CCL3
|
|
CALL BALLOON-BURN
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,BURNBIT \?PRG24
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " catches fire"
|
|
CALL REMOVE-CAREFULLY,PRSO
|
|
IN? PRSO,WINNER /?PRG13
|
|
IN? WINNER,PRSO \?PRG22
|
|
?PRG13: PRINTI ". Unfortunately, you were "
|
|
IN? WINNER,PRSO \?PRG20
|
|
PRINTI "in"
|
|
JUMP ?CND15
|
|
?PRG20: PRINTI "holding"
|
|
?CND15: CALL JIGS-UP,STR?5
|
|
RSTACK
|
|
?PRG22: PRINTR " and is consumed."
|
|
?PRG24: PRINTI "You can't burn a "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CLIMB-DOWN
|
|
CALL DO-WALK,P?DOWN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB
|
|
CALL DO-WALK,P?UP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-ON
|
|
FSET? PRSO,VEHBIT \?PRG4
|
|
CALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?PRG4: PRINTI "You can't climb onto the "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CLOSE
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
FSET? PRSO,OPENBIT \?PRG9
|
|
FCLEAR PRSO,OPENBIT
|
|
PRINTR "Closed."
|
|
?PRG9: PRINT ALREADY
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,SURFACEBIT /?PRG15
|
|
FSET? PRSO,CONTBIT /?CCL12
|
|
?PRG15: PRINTI "You can't close a "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL12: FSET? PRSO,OPENBIT \?PRG21
|
|
FCLEAR PRSO,OPENBIT
|
|
PRINTI "Closed."
|
|
CRLF
|
|
CALL NOW-DARK?
|
|
RSTACK
|
|
?PRG21: PRINT ALREADY
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-COMMAND
|
|
FSET? PRSO,ACTORBIT \?PRG6
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " pays no attention."
|
|
?PRG6: PRINTR "You cannot talk to that!"
|
|
|
|
|
|
.FUNCT V-COUNT
|
|
PRINTR "You have lost your mind."
|
|
|
|
|
|
.FUNCT V-CURSES
|
|
PRINTR "Such language in a high-class establishment like this!"
|
|
|
|
|
|
.FUNCT V-CUT
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
CALL PERFORM,V?ATTACK,PRSO,PRSI
|
|
RSTACK
|
|
?CCL3: FSET? PRSI,WEAPONBIT /?CCL5
|
|
PRINTI "The ""cutting edge"" of a "
|
|
PRINTD PRSI
|
|
PRINTR " is inadequate."
|
|
?CCL5: FSET? PRSO,BURNBIT \?PRG17
|
|
IN? WINNER,PRSO \?CCL12
|
|
PRINTR "You're in it!"
|
|
?CCL12: CALL REMOVE-CAREFULLY,PRSO
|
|
PRINTI "You skillfully slice the "
|
|
PRINTD PRSO
|
|
PRINTR " into slivers, which blow away."
|
|
?PRG17: PRINTI "Strange concept, cutting the "
|
|
PRINTD PRSO
|
|
PRINTR "...."
|
|
|
|
|
|
.FUNCT V-DEFLATE
|
|
PRINTR "Come on, now!"
|
|
|
|
|
|
.FUNCT V-DISEMBARK
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
LOC WINNER
|
|
FSET? STACK,VEHBIT \?CCL3
|
|
LOC WINNER
|
|
CALL PERFORM,V?DISEMBARK,STACK
|
|
RTRUE
|
|
?CCL3: LOC WINNER
|
|
EQUAL? STACK,PRSO /?CCL7
|
|
PRINT LOOK-AROUND
|
|
RETURN 2
|
|
?CCL7: FSET? HERE,RLANDBIT \?PRG16
|
|
MOVE WINNER,HERE
|
|
PRINTR "You are on your own feet again."
|
|
?PRG16: PRINTI "Getting out here would be fatal."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-DISENCHANT
|
|
IN? PRSO,HERE \TRUE
|
|
EQUAL? SPELL-USED,W?FEEBLE,W?FUMBLE /?CTR4
|
|
EQUAL? SPELL-USED,W?FREEZE,W?FALL,W?FERMENT /?CTR4
|
|
EQUAL? SPELL-USED,W?FENCE,W?FANTASIZE \?CCL5
|
|
?CTR4: FSET? PRSO,ACTORBIT \FALSE
|
|
EQUAL? SPELL-USED,W?FEEBLE \?CCL14
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " seems stronger now."
|
|
?CCL14: EQUAL? SPELL-USED,W?FUMBLE \?CCL18
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " no longer appears clumsy."
|
|
?CCL18: EQUAL? SPELL-USED,W?FREEZE \?CCL22
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " moves again."
|
|
?CCL22: EQUAL? SPELL-USED,W?FERMENT \FALSE
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " stops swaying."
|
|
?CCL5: EQUAL? SPELL-USED,W?FLOAT \?CCL30
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " sinks to the ground."
|
|
?CCL30: EQUAL? SPELL-USED,W?FUDGE \FALSE
|
|
PRINTR "The sweet smell has dispersed."
|
|
|
|
|
|
.FUNCT V-DRINK
|
|
CALL V-EAT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DRINK-FROM
|
|
PRINTR "How peculiar!"
|
|
|
|
|
|
.FUNCT PRE-DROP
|
|
LOC WINNER
|
|
EQUAL? PRSO,STACK \FALSE
|
|
CALL PERFORM,V?DISEMBARK,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DROP
|
|
CALL IDROP
|
|
ZERO? STACK /FALSE
|
|
PRINTR "Dropped."
|
|
|
|
|
|
.FUNCT V-EAT
|
|
FSET? PRSO,FOODBIT \?CCL3
|
|
CALL HIT-SPOT
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSO,GLOBAL-WATER \?CCL5
|
|
CALL HIT-SPOT
|
|
RSTACK
|
|
?CCL5: EQUAL? PRSO,WATER \?PRG13
|
|
LOC PRSO
|
|
CALL HELD?,STACK
|
|
ZERO? STACK \?CCL10
|
|
PRINTI "You're not holding the "
|
|
LOC PRSO
|
|
PRINTD STACK
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL10: CALL HIT-SPOT
|
|
RSTACK
|
|
?PRG13: PRINTI "It's doubtful the "
|
|
PRINTD PRSO
|
|
PRINTR " would agree with you."
|
|
|
|
|
|
.FUNCT HIT-SPOT
|
|
EQUAL? PRSO,GLOBAL-WATER /?PRG3
|
|
CALL REMOVE-CAREFULLY,PRSO
|
|
?PRG3: PRINTR "That really hit the spot."
|
|
|
|
|
|
.FUNCT V-ENCHANT
|
|
ZERO? WAND-ON /?CND1
|
|
SET 'SPELL-VICTIM,WAND-ON
|
|
?CND1: ZERO? SPELL-VICTIM /?CCL5
|
|
ZERO? SPELL-USED \?CND6
|
|
PRINTR "You must be more specific."
|
|
?CND6: EQUAL? SPELL-USED,W?FEEBLE,W?FUMBLE /?CTR11
|
|
EQUAL? SPELL-USED,W?FREEZE,W?FALL,W?FERMENT /?CTR11
|
|
EQUAL? SPELL-USED,W?FENCE,W?FANTASIZE \?CCL12
|
|
?CTR11: FSET? PRSO,ACTORBIT \?PRG21
|
|
PRINT WAND-STOPS-GLOWING
|
|
RTRUE
|
|
?PRG21: PRINTI "That might have done something, but it's hard to tell with a "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL12: EQUAL? SPELL-USED,W?FUDGE \?CCL24
|
|
PRINTR "An odor of chocolate permeates the room."
|
|
?CCL24: EQUAL? SPELL-USED,W?FLUORESCE \?CCL28
|
|
FSET PRSO,LIGHTBIT
|
|
FSET PRSO,ONBIT
|
|
SET 'LIT,TRUE-VALUE
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " begins to glow."
|
|
?CCL28: EQUAL? SPELL-USED,W?FLOAT \?CCL32
|
|
FSET? PRSO,TAKEBIT \?CCL32
|
|
EQUAL? SPELL-VICTIM,COLLAR \?PRG39
|
|
IN? COLLAR,CERBERUS \?PRG39
|
|
SET 'SPELL-VICTIM,CERBERUS
|
|
?PRG39: PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " floats serenely in midair."
|
|
?CCL32: EQUAL? SPELL-USED,W?FRY \?CCL42
|
|
FSET? PRSO,TAKEBIT \?CCL42
|
|
SET 'SPELL-HANDLED?,TRUE-VALUE
|
|
CALL REMOVE-CAREFULLY,PRSO
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " goes up in a puff of smoke."
|
|
?CCL42: SET 'SPELL-VICTIM,FALSE-VALUE
|
|
PRINT WAND-STOPS-GLOWING
|
|
RTRUE
|
|
?CCL5: SET 'SPELL-VICTIM,FALSE-VALUE
|
|
PRINTR "Nothing happens."
|
|
|
|
|
|
.FUNCT REMOVE-CAREFULLY,OBJ,OLIT
|
|
EQUAL? OBJ,P-IT-OBJECT \?CND1
|
|
SET 'P-IT-OBJECT,FALSE-VALUE
|
|
?CND1: SET 'OLIT,LIT
|
|
REMOVE OBJ
|
|
CALL NOW-DARK?
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-ENTER,M
|
|
ZERO? PRSO \?CCL3
|
|
CALL DO-WALK,P?IN
|
|
RETURN 2
|
|
?CCL3: FSET? PRSO,DOORBIT \?CCL5
|
|
CALL OTHER-SIDE,PRSO >M
|
|
ZERO? M /?CCL5
|
|
CALL DO-WALK,M
|
|
RETURN 2
|
|
?CCL5: FSET? PRSO,VEHBIT \?CCL9
|
|
LOC ADVENTURER
|
|
FSET? STACK,VEHBIT \FALSE
|
|
PRINT LOOK-AROUND
|
|
RETURN 2
|
|
?CCL9: EQUAL? PRSO,GLOBAL-WATER,WATER /FALSE
|
|
PRINTI "You hit your head against the "
|
|
PRINTD PRSO
|
|
PRINTI " as you attempt this feat."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-ENTER
|
|
PRINTI "You are now in the "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
MOVE WINNER,PRSO
|
|
GETP PRSO,P?ACTION
|
|
CALL STACK,M-ENTER
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EXAMINE
|
|
GETP PRSO,P?TEXT
|
|
ZERO? STACK /?CCL3
|
|
GETP PRSO,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,CONTBIT /?CTR6
|
|
FSET? PRSO,DOORBIT \?PRG10
|
|
?CTR6: CALL V-LOOK-INSIDE
|
|
RSTACK
|
|
?PRG10: PRINTI "There's nothing special about the "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EXIT
|
|
EQUAL? PRSO,FALSE-VALUE,ROOMS \?PRD5
|
|
LOC WINNER
|
|
FSET? STACK,VEHBIT /?CTR2
|
|
?PRD5: ZERO? PRSO /?CCL3
|
|
IN? WINNER,PRSO \?CCL3
|
|
?CTR2: LOC WINNER
|
|
CALL PERFORM,V?DISEMBARK,STACK
|
|
RTRUE
|
|
?CCL3: CALL DO-WALK,P?OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-FILL,TX
|
|
ZERO? PRSI \?CCL3
|
|
CALL GLOBAL-IN?,GLOBAL-WATER,HERE
|
|
ZERO? STACK /?CCL6
|
|
CALL PERFORM,V?FILL,PRSO,GLOBAL-WATER
|
|
RTRUE
|
|
?CCL6: LOC WINNER
|
|
IN? WATER,STACK \?PRG9
|
|
CALL PERFORM,V?FILL,PRSO,WATER
|
|
RTRUE
|
|
?PRG9: PRINTR "There is nothing to fill it with."
|
|
?CCL3: EQUAL? PRSI,WATER,GLOBAL-WATER /FALSE
|
|
CALL PERFORM,V?PUT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FILL
|
|
PRINTR "Huh?"
|
|
|
|
|
|
.FUNCT V-FIND,L
|
|
LOC PRSO >L
|
|
EQUAL? PRSO,HANDS \?CCL3
|
|
PRINTR "Within six feet of your head, hopefully."
|
|
?CCL3: EQUAL? L,GLOBAL-OBJECTS \?CCL7
|
|
PRINTR "You find it."
|
|
?CCL7: IN? PRSO,WINNER \?CCL11
|
|
PRINTR "You have it."
|
|
?CCL11: IN? PRSO,HERE /?PRG19
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK \?PRG19
|
|
EQUAL? PRSO,PSEUDO-OBJECT \?CCL15
|
|
?PRG19: PRINTR "It's right here."
|
|
?CCL15: FSET? L,ACTORBIT \?CCL22
|
|
PRINTI "The "
|
|
PRINTD L
|
|
PRINTR " has it."
|
|
?CCL22: FSET? L,SURFACEBIT \?CCL26
|
|
PRINTI "It's on the "
|
|
PRINTD L
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL26: FSET? L,CONTBIT \?PRG33
|
|
PRINTI "It's in the "
|
|
PRINTD L
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?PRG33: PRINTR "Beats me."
|
|
|
|
|
|
.FUNCT V-FOLLOW
|
|
CALL V-COUNT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-GIVE
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK \FALSE
|
|
PRINTI "That's easy for you to say since you don't even have the "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-GIVE
|
|
FSET? PRSI,ACTORBIT /?PRG6
|
|
PRINTI "You can't give a "
|
|
PRINTD PRSO
|
|
PRINTI " to a "
|
|
PRINTD PRSI
|
|
PRINTR "!"
|
|
?PRG6: PRINTI "The "
|
|
PRINTD PRSI
|
|
PRINTR " refuses it politely."
|
|
|
|
|
|
.FUNCT V-HELLO
|
|
ZERO? PRSO /?PRG11
|
|
FSET? PRSO,ACTORBIT \?PRG9
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " bows his head to you in greeting."
|
|
?PRG9: PRINTI "Only schizophrenics say ""Hello"" to a "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?PRG11: PRINTR "Goodbye."
|
|
|
|
|
|
.FUNCT V-INCANT
|
|
ZERO? SPELL-USED /?CCL3
|
|
PRINTI "Nothing happens."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL3: ZERO? WAND-ON /?PRG10
|
|
SET 'SPELL-VICTIM,WAND-ON
|
|
GET P-LEXV,P-CONT >SPELL-USED
|
|
PRINTI "The wand glows very brightly for a moment."
|
|
CRLF
|
|
RANDOM 10
|
|
ADD 10,STACK
|
|
CALL QUEUE,I-SPELL,STACK
|
|
PUT STACK,0,1
|
|
SET 'WAND-ON,FALSE-VALUE
|
|
CALL PERFORM,V?ENCHANT,SPELL-VICTIM
|
|
JUMP ?CND1
|
|
?PRG10: PRINTI "The incantation echoes back faintly, but nothing else happens."
|
|
CRLF
|
|
?CND1: SET 'QUOTE-FLAG,FALSE-VALUE
|
|
SET 'P-CONT,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-SPELL
|
|
ZERO? SPELL-HANDLED? \?CND1
|
|
ZERO? SPELL-VICTIM /?CND1
|
|
CALL PERFORM,V?DISENCHANT,SPELL-VICTIM
|
|
?CND1: SET 'SPELL-HANDLED?,FALSE-VALUE
|
|
SET 'WAND-ON,FALSE-VALUE
|
|
SET 'SPELL-USED,FALSE-VALUE
|
|
SET 'SPELL-VICTIM,FALSE-VALUE
|
|
RETURN SPELL-VICTIM
|
|
|
|
|
|
.FUNCT V-INFLATE
|
|
PRINTR "How can you inflate that?"
|
|
|
|
|
|
.FUNCT V-KICK
|
|
CALL HACK-HACK,STR?6
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-KISS
|
|
PRINTR "I'd sooner kiss a pig."
|
|
|
|
|
|
.FUNCT V-KNOCK
|
|
FSET? PRSO,DOORBIT \?PRG6
|
|
PRINTR "Nobody's home."
|
|
?PRG6: PRINTI "Why knock on a "
|
|
PRINTD PRSO
|
|
PRINTR "?"
|
|
|
|
|
|
.FUNCT V-LAMP-OFF
|
|
FSET? PRSO,LIGHTBIT \?PRG11
|
|
FSET? PRSO,ONBIT /?CCL6
|
|
PRINT ALREADY
|
|
RTRUE
|
|
?CCL6: FCLEAR PRSO,ONBIT
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " is now off."
|
|
CRLF
|
|
CALL NOW-DARK?
|
|
RSTACK
|
|
?PRG11: PRINTR "You can't turn that off."
|
|
|
|
|
|
.FUNCT V-LAMP-ON
|
|
FSET? PRSO,LIGHTBIT \?CCL3
|
|
FSET? PRSO,ONBIT \?CCL6
|
|
PRINT ALREADY
|
|
RTRUE
|
|
?CCL6: FSET PRSO,ONBIT
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " is now on."
|
|
CRLF
|
|
ZERO? LIT \FALSE
|
|
CALL LIT?,HERE >LIT
|
|
CRLF
|
|
CALL V-LOOK
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,BURNBIT \?PRG18
|
|
PRINTI "If you wish to burn the "
|
|
PRINTD PRSO
|
|
PRINTR ", you should say so."
|
|
?PRG18: PRINTR "You can't turn that on."
|
|
|
|
|
|
.FUNCT V-LAUNCH
|
|
PRINTR "You can't launch that by saying ""launch""!"
|
|
|
|
|
|
.FUNCT V-LEAP,TX,S
|
|
ZERO? PRSO /?CCL3
|
|
PRINTR "That would be a good trick."
|
|
?CCL3: GETPT HERE,P?DOWN >TX
|
|
ZERO? TX /?CCL7
|
|
PTSIZE TX >S
|
|
EQUAL? S,2 /?CTR9
|
|
EQUAL? S,4 \?CCL10
|
|
GETB TX,1
|
|
VALUE STACK
|
|
ZERO? STACK \?CCL10
|
|
?CTR9: CALL JIGS-UP,STR?7
|
|
RSTACK
|
|
?CCL10: CALL V-SKIP
|
|
RSTACK
|
|
?CCL7: CALL V-SKIP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LEAVE
|
|
CALL DO-WALK,P?OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LISTEN
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " makes no sound."
|
|
|
|
|
|
.FUNCT V-LOCK
|
|
PRINTR "It doesn't seem to work."
|
|
|
|
|
|
.FUNCT V-LOOK
|
|
CALL DESCRIBE-ROOM,TRUE-VALUE
|
|
ZERO? LIT /FALSE
|
|
CALL DESCRIBE-OBJECTS,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-BEHIND
|
|
PRINTI "There is nothing behind the "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-INSIDE
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
FSET? PRSO,OPENBIT \?PRG11
|
|
PRINTR " is open, but you can't see beyond it."
|
|
?PRG11: PRINTR " is closed."
|
|
?CCL3: FSET? PRSO,CONTBIT \?PRG31
|
|
FSET? PRSO,ACTORBIT \?CCL17
|
|
PRINTR "There is nothing special to be seen."
|
|
?CCL17: CALL SEE-INSIDE?,PRSO
|
|
ZERO? STACK /?PRG29
|
|
FIRST? PRSO \?PRG27
|
|
CALL PRINT-CONT,PRSO
|
|
ZERO? STACK \TRUE
|
|
?PRG27: PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " is empty."
|
|
?PRG29: PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " is closed."
|
|
?PRG31: PRINTI "You can't look inside a "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-UNDER
|
|
PRINTR "There is nothing but dust there."
|
|
|
|
|
|
.FUNCT V-LOWER
|
|
CALL HACK-HACK,STR?8
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MELT
|
|
PRINTI "You can't melt a "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MOVE
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
PRINTR "Why juggle objects?"
|
|
?CCL3: FSET? PRSO,TAKEBIT \?PRG10
|
|
PRINTI "Moving the "
|
|
PRINTD PRSO
|
|
PRINTR " reveals nothing."
|
|
?PRG10: PRINTI "You can't move the "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-MUNG
|
|
ZERO? PRSI /?PRG6
|
|
FSET? PRSI,WEAPONBIT /FALSE
|
|
?PRG6: PRINTI "Trying to destroy the "
|
|
PRINTD PRSO
|
|
PRINTI " with "
|
|
ZERO? PRSI \?PRG13
|
|
PRINTI "your bare hands"
|
|
JUMP ?PRG15
|
|
?PRG13: PRINTI "a "
|
|
PRINTD PRSI
|
|
?PRG15: PRINTR " is futile."
|
|
|
|
|
|
.FUNCT V-MUNG
|
|
FSET? PRSO,ACTORBIT \?PRG4
|
|
CALL PERFORM,V?ATTACK,PRSO
|
|
RTRUE
|
|
?PRG4: PRINTR "Nice try."
|
|
|
|
|
|
.FUNCT V-OPEN,F,STR
|
|
FSET? PRSO,CONTBIT \?CCL3
|
|
FSET? PRSO,OPENBIT \?CCL6
|
|
PRINT ALREADY
|
|
RTRUE
|
|
?CCL6: FSET PRSO,OPENBIT
|
|
FSET PRSO,TOUCHBIT
|
|
FIRST? PRSO \?PRG14
|
|
FSET? PRSO,TRANSBIT \?CCL11
|
|
?PRG14: PRINTR "Opened."
|
|
?CCL11: FIRST? PRSO >F \?PRG26
|
|
NEXT? F /?PRG26
|
|
FSET? F,TOUCHBIT /?PRG26
|
|
GETP F,P?FDESC >STR
|
|
ZERO? STR /?PRG26
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " opens."
|
|
CRLF
|
|
PRINT STR
|
|
CRLF
|
|
RTRUE
|
|
?PRG26: PRINTI "Opening the "
|
|
PRINTD PRSO
|
|
PRINTI " reveals "
|
|
CALL PRINT-CONTENTS,PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,DOORBIT \?PRG39
|
|
FSET? PRSO,OPENBIT \?CCL34
|
|
PRINT ALREADY
|
|
RTRUE
|
|
?CCL34: FSET PRSO,OPENBIT
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " opens."
|
|
?PRG39: PRINTI "You can't open a "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PICK
|
|
PRINTR "You can't pick that."
|
|
|
|
|
|
.FUNCT V-PLAY
|
|
PRINTR "That's silly!"
|
|
|
|
|
|
.FUNCT V-POUR-ON
|
|
EQUAL? PRSO,WATER \?PRG15
|
|
CALL REMOVE-CAREFULLY,PRSO
|
|
FSET? PRSI,FLAMEBIT \?PRG13
|
|
FSET? PRSI,ONBIT \?PRG13
|
|
PRINTI "The "
|
|
PRINTD PRSI
|
|
PRINTI " is extinguished."
|
|
CRLF
|
|
EQUAL? PRSI,BALLOON-INFLATED \?CND11
|
|
SET 'BALLOON-INFLATED,FALSE-VALUE
|
|
?CND11: FCLEAR PRSI,ONBIT
|
|
FCLEAR PRSI,FLAMEBIT
|
|
RTRUE
|
|
?PRG13: PRINTI "The water spills over the "
|
|
PRINTD PRSI
|
|
PRINTR " and evaporates."
|
|
?PRG15: PRINTR "You can't pour that."
|
|
|
|
|
|
.FUNCT V-PUSH
|
|
CALL HACK-HACK,STR?9
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-PUT
|
|
CALL PRE-GIVE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT,?TMP1,?TMP2,?TMP3
|
|
FSET? PRSI,OPENBIT /?CCL3
|
|
FSET? PRSI,DOORBIT /?CCL3
|
|
FSET? PRSI,CONTBIT /?CCL3
|
|
FSET? PRSI,VEHBIT /?CCL3
|
|
PRINTR "You can't do that."
|
|
?CCL3: FSET? PRSI,OPENBIT /?CCL12
|
|
SET 'P-IT-OBJECT,PRSI
|
|
PRINTI "The "
|
|
PRINTD PRSI
|
|
PRINTR " isn't open."
|
|
?CCL12: EQUAL? PRSI,PRSO \?CCL16
|
|
PRINTR "How can you do that?"
|
|
?CCL16: IN? PRSO,PRSI \?CCL20
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " is already in the "
|
|
PRINTD PRSI
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL20: CALL WEIGHT,PRSI >?TMP3
|
|
CALL WEIGHT,PRSO
|
|
ADD ?TMP3,STACK >?TMP2
|
|
GETP PRSI,P?SIZE
|
|
SUB ?TMP2,STACK >?TMP1
|
|
GETP PRSI,P?CAPACITY
|
|
GRTR? ?TMP1,STACK \?CCL24
|
|
PRINTR "There's no room."
|
|
?CCL24: CALL HELD?,PRSO
|
|
ZERO? STACK \?CCL28
|
|
CALL ITAKE
|
|
ZERO? STACK /TRUE
|
|
?CCL28: MOVE PRSO,PRSI
|
|
FSET PRSO,TOUCHBIT
|
|
CALL SCORE-OBJ,PRSO
|
|
PRINTR "Done."
|
|
|
|
|
|
.FUNCT V-PUT-ON
|
|
EQUAL? PRSI,GROUND \?CCL3
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CCL3: FSET? PRSI,SURFACEBIT \?PRG6
|
|
CALL V-PUT
|
|
RSTACK
|
|
?PRG6: PRINTI "There's no good surface on the "
|
|
PRINTD PRSI
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUT-UNDER
|
|
PRINTR "You can't do that."
|
|
|
|
|
|
.FUNCT V-RAISE
|
|
CALL V-LOWER
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RAPE
|
|
PRINTR "What a (ahem!) strange idea."
|
|
|
|
|
|
.FUNCT PRE-READ
|
|
ZERO? LIT \FALSE
|
|
PRINT TOO-DARK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-READ
|
|
FSET? PRSO,READBIT /?PRG6
|
|
PRINTI "How does one read a "
|
|
PRINTD PRSO
|
|
PRINTR "?"
|
|
?PRG6: GETP PRSO,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RUB
|
|
CALL HACK-HACK,STR?10
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SAY,V
|
|
ZERO? SPELL-USED \?CTR2
|
|
ZERO? WAND-ON /?CCL3
|
|
?CTR2: CALL PERFORM,V?INCANT
|
|
RTRUE
|
|
?CCL3: ZERO? P-CONT \?CCL7
|
|
PRINTR "Say what?"
|
|
?CCL7: SET 'QUOTE-FLAG,FALSE-VALUE
|
|
SET 'P-CONT,FALSE-VALUE
|
|
CALL FIND-IN,HERE,ACTORBIT >V
|
|
ZERO? V /?PRG15
|
|
PRINTI "You must address the "
|
|
PRINTD V
|
|
PRINTR " directly."
|
|
?PRG15: PRINTR "Talking to yourself is a sign of impending mental collapse."
|
|
|
|
|
|
.FUNCT V-SEARCH
|
|
PRINTR "You find nothing unusual."
|
|
|
|
|
|
.FUNCT V-SGIVE
|
|
CALL PERFORM,V?GIVE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SHAKE
|
|
PRINTR "Shaken."
|
|
|
|
|
|
.FUNCT V-SKIP
|
|
PRINTR "Wheeeeeeee!!!"
|
|
|
|
|
|
.FUNCT V-SMELL
|
|
PRINTI "It smells like a "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STAND
|
|
LOC WINNER
|
|
FSET? STACK,VEHBIT \?PRG4
|
|
LOC WINNER
|
|
CALL PERFORM,V?DISEMBARK,STACK
|
|
RTRUE
|
|
?PRG4: PRINT LOOK-AROUND
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STRIKE
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
CALL PERFORM,V?ATTACK,PRSO,HANDS
|
|
RTRUE
|
|
?CCL3: CALL PERFORM,V?LAMP-ON,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SWIM
|
|
PRINTI "Swimming isn't usually allowed in the "
|
|
EQUAL? PRSO,WATER,GLOBAL-WATER /?PRG8
|
|
PRINTD PRSO
|
|
PRINTR "."
|
|
?PRG8: PRINTR "dungeon."
|
|
|
|
|
|
.FUNCT V-SWING
|
|
ZERO? PRSI \?CCL3
|
|
PRINTR "Whoosh!"
|
|
?CCL3: CALL PERFORM,V?ATTACK,PRSI,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-TAKE
|
|
IN? PRSO,WINNER \?CCL3
|
|
PRINTR "You already have that!"
|
|
?CCL3: LOC PRSO
|
|
FSET? STACK,CONTBIT \?CCL7
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT /?CCL7
|
|
PRINTR "You can't reach into a closed container."
|
|
?CCL7: ZERO? PRSI /?CCL13
|
|
EQUAL? PRSI,DOOR-KEEPER,GROUND \?CCL16
|
|
SET 'PRSI,FALSE-VALUE
|
|
RFALSE
|
|
?CCL16: LOC PRSO
|
|
EQUAL? PRSI,STACK /?CCL18
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " isn't in the "
|
|
PRINTD PRSI
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL18: SET 'PRSI,FALSE-VALUE
|
|
RFALSE
|
|
?CCL13: LOC WINNER
|
|
EQUAL? PRSO,STACK \FALSE
|
|
PRINTR "You're in it!"
|
|
|
|
|
|
.FUNCT V-TAKE
|
|
CALL ITAKE
|
|
EQUAL? STACK,TRUE-VALUE \FALSE
|
|
PRINTR "Taken."
|
|
|
|
|
|
.FUNCT V-TELL
|
|
FSET? PRSO,ACTORBIT \?PRG9
|
|
ZERO? P-CONT /?PRG7
|
|
SET 'WINNER,PRSO
|
|
LOC WINNER >HERE
|
|
RETURN HERE
|
|
?PRG7: PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " pauses, thinking that you should reread the manual."
|
|
?PRG9: PRINTI "You can't talk to the "
|
|
PRINTD PRSO
|
|
PRINTC 33
|
|
CRLF
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
SET 'P-CONT,FALSE-VALUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-THROW
|
|
CALL IDROP
|
|
ZERO? STACK /?PRG19
|
|
EQUAL? PRSI,ME \?CCL6
|
|
SET 'WINNER,ADVENTURER
|
|
PRINTI "A terrific throw! The "
|
|
PRINTD PRSO
|
|
PRINTI " hits your head. By incredible mischance, you fall trying to duck and break your neck, justice being swift and merciful in"
|
|
PRINT GUE-NAME
|
|
CALL JIGS-UP,STR?11
|
|
RSTACK
|
|
?CCL6: ZERO? PRSI /?PRG17
|
|
FSET? PRSI,ACTORBIT \?PRG17
|
|
PRINTI "The "
|
|
PRINTD PRSI
|
|
PRINTR " ducks."
|
|
?PRG17: PRINTR "Thrown."
|
|
?PRG19: PRINTR "Huh?"
|
|
|
|
|
|
.FUNCT V-THROW-OFF
|
|
PRINTR "You can't throw anything off of that!"
|
|
|
|
|
|
.FUNCT V-TIE
|
|
PRINTI "You can't tie the "
|
|
PRINTD PRSO
|
|
PRINTR " to that."
|
|
|
|
|
|
.FUNCT V-TIE-UP
|
|
PRINTR "You could certainly never tie it with that!"
|
|
|
|
|
|
.FUNCT V-TURN
|
|
PRINTR "You can't turn that!"
|
|
|
|
|
|
.FUNCT V-UNLOCK
|
|
CALL V-LOCK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-UNTIE
|
|
PRINTR "This cannot be tied, so it cannot be untied!"
|
|
|
|
|
|
.FUNCT V-WAIT,NUM=3
|
|
PRINTI "Time passes..."
|
|
CRLF
|
|
?PRG3: DLESS? 'NUM,0 /?REP4
|
|
CALL CLOCKER
|
|
ZERO? STACK /?PRG3
|
|
?REP4: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RETURN CLOCK-WAIT
|
|
|
|
|
|
.FUNCT V-WALK,PT,PTS,STR,OBJ,RM
|
|
ZERO? P-WALK-DIR \?CCL3
|
|
CALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
?CCL3: GETPT HERE,PRSO >PT
|
|
ZERO? PT /?CCL5
|
|
PTSIZE PT >PTS
|
|
EQUAL? PTS,UEXIT \?CCL8
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?CCL8: EQUAL? PTS,NEXIT \?CCL10
|
|
GET PT,NEXITSTR
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?CCL10: EQUAL? PTS,FEXIT \?CCL16
|
|
GET PT,FEXITFCN
|
|
CALL STACK >RM
|
|
ZERO? RM /?PRG20
|
|
CALL GOTO,RM
|
|
RSTACK
|
|
?PRG20: RETURN 2
|
|
?CCL16: EQUAL? PTS,CEXIT \?CCL23
|
|
GETB PT,CEXITFLAG
|
|
VALUE STACK
|
|
ZERO? STACK /?CCL26
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?CCL26: GET PT,CEXITSTR >STR
|
|
ZERO? STR /?PRG33
|
|
PRINT STR
|
|
CRLF
|
|
RETURN 2
|
|
?PRG33: PRINT CANT-GO
|
|
RETURN 2
|
|
?CCL23: EQUAL? PTS,DEXIT \FALSE
|
|
GETB PT,DEXITOBJ >OBJ
|
|
FSET? OBJ,OPENBIT \?CCL41
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?CCL41: GET PT,DEXITSTR >STR
|
|
ZERO? STR /?PRG48
|
|
PRINT STR
|
|
CRLF
|
|
RETURN 2
|
|
?PRG48: PRINTI "The "
|
|
PRINTD OBJ
|
|
PRINTI " is closed."
|
|
CRLF
|
|
SET 'P-IT-OBJECT,OBJ
|
|
RETURN 2
|
|
?CCL5: ZERO? LIT \?PRG58
|
|
RANDOM 100
|
|
GRTR? 80,STACK \?PRG58
|
|
EQUAL? WINNER,ADVENTURER \?PRG58
|
|
FSET? HERE,NONLANDBIT /?PRG58
|
|
CALL JIGS-UP,STR?12
|
|
RSTACK
|
|
?PRG58: PRINT CANT-GO
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-WALK-AROUND
|
|
PRINTR "Use compass directions for movement."
|
|
|
|
|
|
.FUNCT V-WALK-TO
|
|
ZERO? PRSO /?CCL3
|
|
IN? PRSO,HERE /?PRG8
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK /?CCL3
|
|
?PRG8: PRINTR "It's here!"
|
|
?CCL3: CALL V-WALK-AROUND
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WAVE
|
|
CALL HACK-HACK,STR?13
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-YELL
|
|
PRINTR "Aaaarrrrgggghhhh!"
|
|
|
|
|
|
.FUNCT V-ZORK
|
|
PRINTR "At your service!"
|
|
|
|
|
|
.FUNCT DESCRIBE-ROOM,LOOK?=0,V?,STR,AV
|
|
LOC WINNER >AV
|
|
ZERO? LOOK? /?PRD3
|
|
SET 'V?,LOOK?
|
|
JUMP ?PEN1
|
|
?PRD3: EQUAL? VERBOSITY,2 /?PRD4
|
|
PUSH 0
|
|
JUMP ?PRD5
|
|
?PRD4: PUSH 1
|
|
?PRD5: SET 'V?,STACK
|
|
?PEN1: ZERO? LIT \?CND6
|
|
PRINTI "It is pitch black. You are likely to be eaten by a grue."
|
|
CRLF
|
|
RFALSE
|
|
?CND6: FSET? HERE,TOUCHBIT /?CND10
|
|
FSET HERE,TOUCHBIT
|
|
SET 'V?,TRUE-VALUE
|
|
?CND10: IN? HERE,ROOMS \?CND12
|
|
PRINTD HERE
|
|
FSET? AV,VEHBIT \?CND16
|
|
PRINTI ", in the "
|
|
PRINTD AV
|
|
?CND16: CRLF
|
|
?CND12: ZERO? LOOK? \?CCL22
|
|
GRTR? VERBOSITY,0 /?CCL22
|
|
EQUAL? HERE,ZORK3 \FALSE
|
|
?CCL22: ZERO? V? /?CCL28
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,M-LOOK
|
|
ZERO? STACK \TRUE
|
|
?CCL28: ZERO? V? /?CCL32
|
|
GETP HERE,P?LDESC >STR
|
|
ZERO? STR /?CCL32
|
|
PRINT STR
|
|
CRLF
|
|
JUMP ?CND26
|
|
?CCL32: GETP HERE,P?ACTION
|
|
CALL STACK,M-FLASH
|
|
?CND26: EQUAL? HERE,AV /FALSE
|
|
FSET? AV,VEHBIT \FALSE
|
|
GETP AV,P?ACTION
|
|
CALL STACK,M-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DESCRIBE-OBJECTS,V?=0
|
|
FIRST? HERE \FALSE
|
|
ZERO? V? /?PRD6
|
|
SET 'V?,V?
|
|
JUMP ?PEN4
|
|
?PRD6: EQUAL? VERBOSITY,2 /?PRD7
|
|
PUSH 0
|
|
JUMP ?PRD8
|
|
?PRD7: PUSH 1
|
|
?PRD8: SET 'V?,STACK
|
|
?PEN4: CALL PRINT-CONT,HERE,V?,-1
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DESCRIBE-OBJECT,OBJ,V?,LEVEL,STR=0,AV
|
|
SET 'DESC-OBJECT,OBJ
|
|
ZERO? LEVEL \?CCL3
|
|
GETP OBJ,P?DESCFCN
|
|
CALL STACK,M-OBJDESC
|
|
ZERO? STACK \TRUE
|
|
?CCL3: ZERO? LEVEL \?CCL7
|
|
FSET? OBJ,TOUCHBIT /?PRD11
|
|
GETP OBJ,P?FDESC >STR
|
|
ZERO? STR \?PRG14
|
|
?PRD11: GETP OBJ,P?LDESC >STR
|
|
ZERO? STR /?CCL7
|
|
?PRG14: PRINT STR
|
|
JUMP ?CND1
|
|
?CCL7: ZERO? LEVEL \?PRG26
|
|
PRINTI "There is a "
|
|
PRINTD OBJ
|
|
PRINTI " here"
|
|
FSET? OBJ,ONBIT \?PRG24
|
|
PRINTI " (providing light)"
|
|
?PRG24: PRINTC 46
|
|
JUMP ?CND1
|
|
?PRG26: GET INDENTS,LEVEL
|
|
PRINT STACK
|
|
PRINTI "A "
|
|
PRINTD OBJ
|
|
FSET? OBJ,ONBIT \?CND1
|
|
PRINTI " (providing light)"
|
|
?CND1: EQUAL? OBJ,SPELL-VICTIM \?CND34
|
|
EQUAL? SPELL-USED,W?FLOAT \?CND34
|
|
PRINTI " (floating in midair)"
|
|
?CND34: CRLF
|
|
CALL SEE-INSIDE?,OBJ
|
|
ZERO? STACK /FALSE
|
|
FIRST? OBJ \FALSE
|
|
CALL PRINT-CONT,OBJ,V?,LEVEL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?=1,IT?=0,TWO?=0
|
|
FIRST? OBJ >F \FALSE
|
|
?PRG4: NEXT? F >N /?BOGUS6
|
|
?BOGUS6: ZERO? 1ST? /?PRG10
|
|
SET '1ST?,FALSE-VALUE
|
|
JUMP ?PRG16
|
|
?PRG10: PRINTI ", "
|
|
ZERO? N \?PRG16
|
|
PRINTI "and "
|
|
?PRG16: PRINTI "a "
|
|
PRINTD F
|
|
ZERO? IT? \?CCL20
|
|
ZERO? TWO? \?CCL20
|
|
SET 'IT?,F
|
|
JUMP ?CND18
|
|
?CCL20: SET 'TWO?,TRUE-VALUE
|
|
SET 'IT?,FALSE-VALUE
|
|
?CND18: SET 'F,N
|
|
ZERO? F \?PRG4
|
|
ZERO? IT? /TRUE
|
|
ZERO? TWO? \TRUE
|
|
SET 'P-IT-OBJECT,IT?
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRINT-CONT,OBJ,V?=0,LEVEL=0,Y,1ST?,SHIT,AV,STR,PV?=0,INV?=0
|
|
FIRST? OBJ >Y \TRUE
|
|
LOC WINNER >AV
|
|
ZERO? AV /?CCL5
|
|
FSET? AV,VEHBIT /?CND3
|
|
?CCL5: SET 'AV,FALSE-VALUE
|
|
?CND3: SET '1ST?,TRUE-VALUE
|
|
SET 'SHIT,TRUE-VALUE
|
|
LOC OBJ
|
|
EQUAL? WINNER,OBJ,STACK \?PRG11
|
|
SET 'INV?,TRUE-VALUE
|
|
FIRST? OBJ >Y /?PRG46
|
|
?PRG46: ZERO? Y \?CCL50
|
|
ZERO? PV? /?REP47
|
|
ZERO? AV /?REP47
|
|
FIRST? AV \?REP47
|
|
INC 'LEVEL
|
|
CALL PRINT-CONT,AV,V?,LEVEL
|
|
?REP47: ZERO? 1ST? /TRUE
|
|
ZERO? SHIT \FALSE
|
|
RTRUE
|
|
?PRG11: ZERO? Y \?CCL15
|
|
ZERO? LEVEL \?CND16
|
|
EQUAL? SPELL?,S-FANTASIZE \?CND16
|
|
RANDOM 100
|
|
GRTR? 20,STACK \?CND16
|
|
PRINTI "There is a "
|
|
CALL PICK-ONE,FANTASIES
|
|
PRINT STACK
|
|
PRINTI " here."
|
|
CRLF
|
|
SET '1ST?,FALSE-VALUE
|
|
?CND16: ZERO? 1ST? /TRUE
|
|
RFALSE
|
|
?CCL15: EQUAL? Y,AV \?CCL27
|
|
SET 'PV?,TRUE-VALUE
|
|
JUMP ?CND13
|
|
?CCL27: EQUAL? Y,WINNER /?CND13
|
|
FSET? Y,INVISIBLE /?CND13
|
|
FSET? Y,TOUCHBIT /?CND13
|
|
GETP Y,P?FDESC >STR
|
|
ZERO? STR /?CND13
|
|
FSET? Y,NDESCBIT /?CND33
|
|
PRINT STR
|
|
CRLF
|
|
SET 'SHIT,FALSE-VALUE
|
|
?CND33: CALL SEE-INSIDE?,Y
|
|
ZERO? STACK /?CND13
|
|
LOC Y
|
|
GETP STACK,P?DESCFCN
|
|
ZERO? STACK \?CND13
|
|
FIRST? Y \?CND13
|
|
CALL PRINT-CONT,Y,V?,0
|
|
ZERO? STACK /?CND13
|
|
SET '1ST?,FALSE-VALUE
|
|
?CND13: NEXT? Y >Y /?PRG11
|
|
JUMP ?PRG11
|
|
?CCL50: EQUAL? Y,AV,ADVENTURER /?CND48
|
|
FSET? Y,INVISIBLE /?CND48
|
|
ZERO? INV? \?CCL57
|
|
FSET? Y,TOUCHBIT /?CCL57
|
|
GETP Y,P?FDESC
|
|
ZERO? STACK \?CND48
|
|
?CCL57: FSET? Y,NDESCBIT /?CCL65
|
|
ZERO? 1ST? /?CND66
|
|
CALL FIRSTER,OBJ,LEVEL
|
|
ZERO? STACK /?CND68
|
|
LESS? LEVEL,0 \?CND68
|
|
SET 'LEVEL,0
|
|
?CND68: INC 'LEVEL
|
|
SET '1ST?,FALSE-VALUE
|
|
?CND66: LESS? LEVEL,0 \?CND72
|
|
SET 'LEVEL,0
|
|
?CND72: CALL DESCRIBE-OBJECT,Y,V?,LEVEL
|
|
JUMP ?CND48
|
|
?CCL65: FIRST? Y \?CND48
|
|
CALL SEE-INSIDE?,Y
|
|
ZERO? STACK /?CND48
|
|
INC 'LEVEL
|
|
CALL PRINT-CONT,Y,V?,LEVEL
|
|
DEC 'LEVEL
|
|
?CND48: NEXT? Y >Y /?PRG46
|
|
JUMP ?PRG46
|
|
|
|
|
|
.FUNCT FIRSTER,OBJ,LEVEL
|
|
EQUAL? OBJ,WINNER \?CCL3
|
|
PRINTR "You have:"
|
|
?CCL3: IN? OBJ,ROOMS /FALSE
|
|
GRTR? LEVEL,0 \?CND8
|
|
GET INDENTS,LEVEL
|
|
PRINT STACK
|
|
?CND8: FSET? OBJ,SURFACEBIT \?CCL14
|
|
PRINTI "Sitting on the "
|
|
PRINTD OBJ
|
|
PRINTR " is: "
|
|
?CCL14: FSET? OBJ,ACTORBIT \?PRG21
|
|
PRINTI "The "
|
|
PRINTD OBJ
|
|
PRINTR " is holding: "
|
|
?PRG21: PRINTI "The "
|
|
PRINTD OBJ
|
|
PRINTR " contains:"
|
|
|
|
|
|
.FUNCT SEE-INSIDE?,OBJ
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
FSET? OBJ,TRANSBIT /TRUE
|
|
FSET? OBJ,OPENBIT /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT JIGS-UP,DESC,F,N
|
|
PRINT DESC
|
|
CRLF
|
|
EQUAL? ADVENTURER,WINNER /?CND3
|
|
PRINTI "
|
|
**** The "
|
|
PRINTD WINNER
|
|
PRINTI " has died ****"
|
|
CRLF
|
|
CRLF
|
|
REMOVE WINNER
|
|
SET 'WINNER,ADVENTURER
|
|
LOC WINNER >HERE
|
|
RETURN 2
|
|
?CND3: SUB SCORE,10 >SCORE
|
|
PRINTI "
|
|
**** You have died ****"
|
|
CRLF
|
|
CRLF
|
|
SET 'DEAD,TRUE-VALUE
|
|
SET 'SPELL?,FALSE-VALUE
|
|
PUTP ADVENTURER,P?ACTION,0
|
|
INC 'DEATHS
|
|
MOVE WINNER,HERE
|
|
FCLEAR DEAD-PALANTIR-1,TOUCHBIT
|
|
FCLEAR DEAD-PALANTIR-2,TOUCHBIT
|
|
FCLEAR DEAD-PALANTIR-3,TOUCHBIT
|
|
IN? LAMP,WINNER \?CND11
|
|
MOVE LAMP,INSIDE-THE-BARROW
|
|
?CND11: FIRST? WINNER >N /?PRG14
|
|
?PRG14: SET 'F,N
|
|
ZERO? F /?REP15
|
|
NEXT? F >N /?BOGUS18
|
|
?BOGUS18: GETP F,P?VALUE
|
|
ZERO? STACK /?CCL21
|
|
MOVE F,CAROUSEL-ROOM
|
|
JUMP ?PRG14
|
|
?CCL21: MOVE F,GAZEBO
|
|
JUMP ?PRG14
|
|
?REP15: CALL GOTO,DEAD-PALANTIR-1
|
|
SET 'P-CONT,FALSE-VALUE
|
|
CALL DRAGON-LEAVES
|
|
CALL INT,I-MATCH
|
|
PUT STACK,0,0
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT NO-GO-TELL,AV,WLOC
|
|
PRINTI "You can't go there "
|
|
ZERO? AV /?PRG8
|
|
PRINTI "in a "
|
|
PRINTD WLOC
|
|
JUMP ?PRG10
|
|
?PRG8: PRINTI "without a vehicle"
|
|
?PRG10: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GOTO,RM,V?=1,LB,WLOC,AV=0,OLIT,OHERE
|
|
FSET? RM,RLANDBIT /?PRD1
|
|
PUSH 0
|
|
JUMP ?PRD2
|
|
?PRD1: PUSH 1
|
|
?PRD2: SET 'LB,STACK
|
|
LOC WINNER >WLOC
|
|
SET 'OLIT,LIT
|
|
SET 'OHERE,HERE
|
|
FSET? WLOC,VEHBIT \?CND3
|
|
GETP WLOC,P?VTYPE >AV
|
|
?CND3: ZERO? LB \?CCL7
|
|
ZERO? AV \?CCL7
|
|
CALL NO-GO-TELL,AV,WLOC
|
|
RFALSE
|
|
?CCL7: ZERO? LB \?CCL11
|
|
FSET? RM,AV /?CCL11
|
|
CALL NO-GO-TELL,AV,WLOC
|
|
RFALSE
|
|
?CCL11: FSET? HERE,RLANDBIT \?CCL15
|
|
ZERO? LB /?CCL15
|
|
ZERO? AV /?CCL15
|
|
EQUAL? AV,RLANDBIT /?CCL15
|
|
FSET? RM,AV /?CCL15
|
|
CALL NO-GO-TELL,AV,WLOC
|
|
RFALSE
|
|
?CCL15: ZERO? LB /?CND21
|
|
FSET? HERE,RLANDBIT /?CND21
|
|
ZERO? DEAD \?CND21
|
|
FSET? WLOC,VEHBIT \?CND21
|
|
EQUAL? WLOC,BALLOON \?CCL29
|
|
PRINTI "The balloon lands."
|
|
CRLF
|
|
JUMP ?CND21
|
|
?CCL29: FSET? WLOC,VEHBIT \?CND21
|
|
PRINTI "The "
|
|
PRINTD WLOC
|
|
PRINT STOPS
|
|
?CND21: ZERO? AV /?CCL37
|
|
MOVE WLOC,RM
|
|
JUMP ?CND35
|
|
?CCL37: MOVE WINNER,RM
|
|
?CND35: SET 'HERE,RM
|
|
CALL LIT?,HERE >LIT
|
|
ZERO? OLIT \?CND38
|
|
ZERO? LIT \?CND38
|
|
RANDOM 100
|
|
GRTR? 80,STACK \?CND38
|
|
PRINTI "Oh, no! A lurking grue slithered into the "
|
|
LOC WINNER
|
|
FSET? STACK,VEHBIT \?PRG50
|
|
LOC WINNER
|
|
PRINTD STACK
|
|
JUMP ?CND45
|
|
?PRG50: PRINTI "room"
|
|
?CND45: CALL JIGS-UP,STR?20
|
|
RTRUE
|
|
?CND38: ZERO? LIT \?CND52
|
|
EQUAL? WINNER,ADVENTURER \?CND52
|
|
PRINTI "You have moved into a dark place."
|
|
CRLF
|
|
SET 'P-CONT,FALSE-VALUE
|
|
?CND52: GETP HERE,P?ACTION
|
|
CALL STACK,M-ENTER
|
|
CALL SCORE-OBJ,RM
|
|
EQUAL? HERE,RM \TRUE
|
|
EQUAL? ADVENTURER,WINNER /?CCL62
|
|
IN? ADVENTURER,OHERE \?CCL62
|
|
PRINTI "The "
|
|
PRINTD WINNER
|
|
PRINTR " leaves the room."
|
|
?CCL62: ZERO? V? /TRUE
|
|
EQUAL? WINNER,ADVENTURER \TRUE
|
|
CALL DESCRIBE-ROOM
|
|
ZERO? LIT /TRUE
|
|
GRTR? VERBOSITY,0 \TRUE
|
|
CALL DESCRIBE-OBJECTS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ITAKE,VB=1,CNT,OBJ,?TMP1
|
|
FSET? PRSO,TAKEBIT /?CCL3
|
|
ZERO? VB /FALSE
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RFALSE
|
|
?CCL3: EQUAL? PRSO,SPELL-VICTIM \?CCL9
|
|
EQUAL? SPELL-USED,W?FLOAT,W?FREEZE \?CCL9
|
|
EQUAL? SPELL-USED,W?FLOAT \?PRG17
|
|
PRINTI "You can't reach that. It's floating above your head."
|
|
CRLF
|
|
RFALSE
|
|
?PRG17: PRINTI "It seems rooted to the spot."
|
|
CRLF
|
|
RFALSE
|
|
?CCL9: LOC PRSO
|
|
FSET? STACK,CONTBIT \?CCL20
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT \FALSE
|
|
?CCL20: LOC PRSO
|
|
IN? STACK,WINNER /?CCL24
|
|
CALL WEIGHT,PRSO >?TMP1
|
|
CALL WEIGHT,WINNER
|
|
ADD ?TMP1,STACK
|
|
GRTR? STACK,LOAD-ALLOWED \?CCL24
|
|
ZERO? VB /?PRG38
|
|
PRINTI "Your load is too heavy"
|
|
LESS? LOAD-ALLOWED,100 \?PRG36
|
|
PRINTI ", especially in light of your condition."
|
|
JUMP ?CND31
|
|
?PRG36: PRINTC 46
|
|
?CND31: CRLF
|
|
?PRG38: RETURN 2
|
|
?CCL24: EQUAL? PRSA,V?TAKE \?CCL41
|
|
CALL CCOUNT,WINNER >CNT
|
|
GRTR? CNT,FUMBLE-NUMBER \?CCL41
|
|
MUL CNT,FUMBLE-PROB >?TMP1
|
|
RANDOM 100
|
|
GRTR? ?TMP1,STACK \?CCL41
|
|
PRINTI "You're holding too many things already!"
|
|
CRLF
|
|
RFALSE
|
|
?CCL41: MOVE PRSO,WINNER
|
|
FCLEAR PRSO,NDESCBIT
|
|
FSET PRSO,TOUCHBIT
|
|
CALL SCORE-OBJ,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IDROP
|
|
IN? PRSO,WINNER /?CCL3
|
|
LOC PRSO
|
|
IN? STACK,WINNER /?CCL3
|
|
PRINTI "You're not carrying the "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RFALSE
|
|
?CCL3: IN? PRSO,WINNER /?CCL9
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT /?CCL9
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " is closed."
|
|
CRLF
|
|
RFALSE
|
|
?CCL9: LOC WINNER
|
|
MOVE PRSO,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CCOUNT,OBJ,CNT=0,X
|
|
FIRST? OBJ >X /?PRG3
|
|
RETURN CNT
|
|
?PRG3: INC 'CNT
|
|
NEXT? X >X /?PRG3
|
|
RETURN CNT
|
|
|
|
|
|
.FUNCT WEIGHT,OBJ,CONT,WT=0
|
|
FIRST? OBJ >CONT \?CND1
|
|
?PRG3: CALL WEIGHT,CONT
|
|
ADD WT,STACK >WT
|
|
NEXT? CONT >CONT /?PRG3
|
|
?CND1: GETP OBJ,P?SIZE
|
|
ADD WT,STACK
|
|
RSTACK
|
|
|
|
.ENDI
|