2132 lines
52 KiB
Plaintext
2132 lines
52 KiB
Plaintext
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT INTNUM-F,X
|
|
EQUAL? HERE,CONSTRUCTION \FALSE
|
|
CALL NOUN-USED?,INTNUM,W?NUMBER
|
|
ZERO? STACK /FALSE
|
|
PRINTI "The number engraved on the wall is """
|
|
PRINTN CONSTRUCTION-LOC
|
|
PRINTR "."""
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT LEFT-RIGHT-F
|
|
EQUAL? PRSA,V?CHASTISE \?CCL3
|
|
PRINTR "You see nothing unusual."
|
|
?CCL3: EQUAL? PRSA,V?ENTER,V?WALK-TO,V?WALK \?CCL5
|
|
EQUAL? HERE,WEIRD \?CCL8
|
|
CALL NOUN-USED?,LEFT-RIGHT,W?LEFT
|
|
ZERO? STACK /?CCL8
|
|
EQUAL? TOWER-BEATEN,PYRAMID-L \?CCL8
|
|
CALL2 DO-WALK,P?WEST
|
|
RSTACK
|
|
?CCL8: EQUAL? HERE,WEIRD \?CCL13
|
|
CALL NOUN-USED?,LEFT-RIGHT,W?RIGHT
|
|
ZERO? STACK /?CCL13
|
|
EQUAL? TOWER-BEATEN,PYRAMID-R \?CCL13
|
|
CALL2 DO-WALK,P?EAST
|
|
RSTACK
|
|
?CCL13: EQUAL? HERE,TESTING-ROOM \?CCL18
|
|
CALL NOUN-USED?,LEFT-RIGHT,W?RIGHT
|
|
ZERO? STACK /?CCL21
|
|
PUSH RIGHT-BOOTH
|
|
JUMP ?CND19
|
|
?CCL21: PUSH LEFT-BOOTH
|
|
?CND19: CALL PERFORM,V?ENTER,STACK
|
|
RSTACK
|
|
?CCL18: CALL1 V-WALK-AROUND
|
|
RSTACK
|
|
?CCL5: EQUAL? PRSA,V?SET \FALSE
|
|
PRINTR "You turn ninety degrees, with little effect."
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT GRUE-F
|
|
EQUAL? PRSA,V?FIND,V?EXAMINE \FALSE
|
|
FSET? LANTERN,TRYTAKEBIT \?CCL6
|
|
PRINTR "Don't be silly! There haven't been grues around for centuries!"
|
|
?CCL6: PRINTI "There is no grue here, but I'm sure there is at least one lurking in the darkness nearby."
|
|
CALL FIND-IN,PROTAGONIST,ONBIT
|
|
ZERO? STACK /FALSE
|
|
FSET? HERE,ONBIT /FALSE
|
|
PRINTR " I wouldn't let my light go out if I were you!"
|
|
|
|
|
|
.FUNCT SAILOR-F,ARG
|
|
EQUAL? ARG,M-WINNER \?CCL3
|
|
EQUAL? PRSA,V?HELLO \?CCL6
|
|
PRINTR "Nothing happens here."
|
|
?CCL6: CALL2 CANT-SEE,SAILOR
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?WAIT-FOR \?CCL8
|
|
PRINTR "You are liable to be waiting for several sequels."
|
|
?CCL8: CALL2 HANDLE,SAILOR
|
|
ZERO? STACK /FALSE
|
|
EQUAL? PRSA,V?HELLO,V?TELL /FALSE
|
|
CALL2 CANT-SEE,SAILOR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT GLOBAL-SLEEP-F
|
|
EQUAL? PRSA,V?TAKE,V?WALK-TO \?CCL3
|
|
CALL1 V-SLEEP
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?PUT-TO \FALSE
|
|
EQUAL? PRSI,GLOBAL-SLEEP \FALSE
|
|
EQUAL? PRSO,BEDBUG \?CCL10
|
|
PRINTI "You sing a brief lullaby. "
|
|
CALL2 REMOVE-BEDBUG,STR?194
|
|
RSTACK
|
|
?CCL10: PRINTR "You're not a hypnotist."
|
|
|
|
|
|
.FUNCT LULLABY-F,ACTOR
|
|
EQUAL? PRSA,V?SING \?CCL3
|
|
ZERO? PRSI \?CND4
|
|
IN? BEDBUG,HERE \?CCL8
|
|
SET 'PRSI,BEDBUG
|
|
JUMP ?CND4
|
|
?CCL8: CALL FIND-IN,HERE,ACTORBIT >ACTOR
|
|
ZERO? ACTOR /?CCL10
|
|
SET 'PRSI,ACTOR
|
|
?CND4: EQUAL? PRSI,BEDBUG \?CCL13
|
|
ICALL PERFORM,V?PUT-TO,BEDBUG,GLOBAL-SLEEP
|
|
RTRUE
|
|
?CCL10: PRINTR "[If you put me to sleep, you'd have a heck of a time communicating with the game! By the way, don't expect any offers from the Borphee Opera Company.]"
|
|
?CCL13: FSET? PRSI,ACTORBIT \?CCL15
|
|
PRINTI "Despite your best rendition,"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTR " remains awake."
|
|
?CCL15: PRINTI "Amazingly,"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTR " is now motionless! You must have put it right to sleep! Incredible! What a talent!"
|
|
?CCL3: EQUAL? PRSA,V?PLAY \FALSE
|
|
IN? BEDBUG,HERE \?CCL20
|
|
CALL NOUN-USED?,LULLABY,W?LULLABY,W?LULLABYE
|
|
ZERO? STACK /?CCL20
|
|
ICALL PERFORM,V?PUT-TO,BEDBUG,GLOBAL-SLEEP
|
|
RTRUE
|
|
?CCL20: CALL ULTIMATELY-IN?,VIOLIN,PROTAGONIST
|
|
ZERO? STACK /?CCL24
|
|
PRINTI "[with"
|
|
ICALL2 TPRINT,VIOLIN
|
|
PRINTC 93
|
|
CRLF
|
|
CALL2 PERFORM-PRSA,VIOLIN
|
|
RSTACK
|
|
?CCL24: IN? HARMONICA,PROTAGONIST \?CCL26
|
|
PRINTI "[with"
|
|
ICALL2 TPRINT,HARMONICA
|
|
PRINTC 93
|
|
CRLF
|
|
CALL2 PERFORM-PRSA,HARMONICA
|
|
RSTACK
|
|
?CCL26: PRINTR "You have no instrument to play it on."
|
|
|
|
|
|
.FUNCT GROUND-F
|
|
ICALL1 SET-GROUND-DESC
|
|
EQUAL? PRSA,V?EXAMINE \?CCL3
|
|
EQUAL? HERE,OUBLIETTE \?CCL6
|
|
PRINTR "Mud. Squishy mud."
|
|
?CCL6: EQUAL? HERE,PITS \?CCL8
|
|
ICALL PERFORM,V?EXAMINE,PITS-OBJECT
|
|
RTRUE
|
|
?CCL8: EQUAL? HERE,TIGHT-SQUEEZE \FALSE
|
|
PRINTR "You see a man-sized opening through which cool air seems to flow."
|
|
?CCL3: EQUAL? PRSA,V?LOOK-UNDER \?CCL12
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL12: EQUAL? PRSA,V?CLIMB,V?CLIMB-ON,V?CLIMB-UP /?CTR13
|
|
EQUAL? PRSA,V?ENTER \?CCL14
|
|
?CTR13: CALL1 WASTES
|
|
RSTACK
|
|
?CCL14: EQUAL? PRSA,V?LEAVE \FALSE
|
|
CALL2 DO-WALK,P?UP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SET-GROUND-DESC
|
|
FSET? HERE,OUTSIDEBIT \?CCL3
|
|
PUTP GROUND,P?SDESC,STR?195
|
|
RTRUE
|
|
?CCL3: FSET? HERE,DESERTBIT \?CCL5
|
|
PUTP GROUND,P?SDESC,STR?196
|
|
RTRUE
|
|
?CCL5: PUTP GROUND,P?SDESC,STR?197
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GLOBAL-HOLE-F
|
|
EQUAL? PRSA,V?DIG \?CCL3
|
|
EQUAL? PRSO,GLOBAL-HOLE \?CCL3
|
|
ZERO? PRSI /?CCL8
|
|
EQUAL? PRSI,SHOVEL \?CCL11
|
|
CALL PERFORM-PRSA,GROUND,SHOVEL
|
|
RSTACK
|
|
?CCL11: CALL2 ULTIMATELY-IN?,SHOVEL
|
|
ZERO? STACK /?CCL13
|
|
PRINTI "[with the shovel]"
|
|
CRLF
|
|
CALL PERFORM-PRSA,PRSI,SHOVEL
|
|
RSTACK
|
|
?CCL13: PRINTI "[with your hands]"
|
|
CRLF
|
|
CALL PERFORM-PRSA,PRSI,HANDS
|
|
RSTACK
|
|
?CCL8: CALL2 ULTIMATELY-IN?,SHOVEL
|
|
ZERO? STACK /?CCL15
|
|
PRINTI "[with the shovel]"
|
|
CRLF
|
|
CALL PERFORM-PRSA,GROUND,SHOVEL
|
|
RSTACK
|
|
?CCL15: PRINTI "[with your hands]"
|
|
CRLF
|
|
CALL PERFORM-PRSA,GROUND,HANDS
|
|
RSTACK
|
|
?CCL3: CALL2 HANDLE,GLOBAL-HOLE
|
|
ZERO? STACK /FALSE
|
|
CALL2 CANT-SEE,GLOBAL-HOLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WALL-F,CNT
|
|
EQUAL? PRSA,V?EXAMINE,V?READ \?CCL3
|
|
EQUAL? HERE,CHURCH \?CCL6
|
|
ICALL PERFORM,V?READ,TENET
|
|
RTRUE
|
|
?CCL6: EQUAL? HERE,CELL \FALSE
|
|
IN? COBWEBS,CELL \FALSE
|
|
PRINT CELL-WALL-DESC
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?CLEAN \?CCL12
|
|
EQUAL? HERE,CELL \?CCL12
|
|
CALL ADJ-USED?,WALL,W?REAR
|
|
ZERO? STACK /?CCL12
|
|
IN? COBWEBS,CELL \?CCL12
|
|
ICALL PERFORM,V?CLEAN,COBWEBS
|
|
RTRUE
|
|
?CCL12: EQUAL? PRSA,V?THROW-OVER \?CCL18
|
|
EQUAL? HERE,PERIMETER-WALL \?CCL21
|
|
PRINTR "Babe Flathead himself couldn't toss something over this towering wall!"
|
|
?CCL21: PRINTR "The wall joins the ceiling!"
|
|
?CCL18: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
|
|
EQUAL? PRSO,NW-SE-PASSAGE,N-S-PASSAGE \FALSE
|
|
CALL ADJ-USED?,WALL,FALSE-VALUE
|
|
ZERO? STACK /?CCL28
|
|
SET 'P-WON,FALSE-VALUE
|
|
PRINTR "[You didn't specify which wall you meant: EAST WALL for example.]"
|
|
?CCL28: EQUAL? PRSO,N-S-PASSAGE \?PRD32
|
|
CALL ADJ-USED?,WALL,W?NORTH,W?N
|
|
ZERO? STACK \?PRD32
|
|
CALL ADJ-USED?,WALL,W?SOUTH,W?S
|
|
ZERO? STACK /?CTR29
|
|
?PRD32: EQUAL? PRSO,NW-SE-PASSAGE \?CCL30
|
|
CALL ADJ-USED?,WALL,W?NORTHWEST,W?NW
|
|
ZERO? STACK \?CCL30
|
|
CALL ADJ-USED?,WALL,W?SOUTHEAST,W?SE
|
|
ZERO? STACK \?CCL30
|
|
?CTR29: PRINT YOU-CANT
|
|
PRINTI "install the passage on that wall--it's"
|
|
CALL2 ARPRINT,PRSO
|
|
RSTACK
|
|
?CCL30: CALL1 PASSAGE-THERE
|
|
ZERO? STACK \TRUE
|
|
EQUAL? HERE,GONDOLA,HOLD /?CTR41
|
|
LOC PROTAGONIST
|
|
EQUAL? STACK,YACHT,DB \?CCL42
|
|
?CTR41: PRINTR "A built-in safety feature prevents the passage from being installed in a vehicle."
|
|
?CCL42: MOVE PRSO,HERE
|
|
FCLEAR PRSO,TAKEBIT
|
|
SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
PUTP PRSO,P?OWNER,WALL
|
|
PRINTI "There's now a passage leading "
|
|
EQUAL? PRSO,N-S-PASSAGE \?CCL47
|
|
EQUAL? HERE,CONSTRUCTION \?CND48
|
|
SET 'N-S-PASSAGE-LOC,CONSTRUCTION-LOC
|
|
?CND48: CALL ADJ-USED?,WALL,W?NORTH,W?N
|
|
ZERO? STACK /?CCL52
|
|
SET 'N-S-PASSAGE-DIR,P?NORTH
|
|
EQUAL? HERE,CONSTRUCTION \?CND53
|
|
LESS? CONSTRUCTION-LOC,8 /?CND53
|
|
ADD CONSTRUCTION-LOC,100
|
|
PUT NORTH-EXITS,0,STACK
|
|
?PRG57: GET STORAGE-TABLE,CNT
|
|
ZERO? STACK \?CCL61
|
|
SUB CONSTRUCTION-LOC,8
|
|
ADD STACK,CONSTRUCTION-OFFSET
|
|
PUT STORAGE-TABLE,CNT,STACK
|
|
ADD CNT,1
|
|
PUT STORAGE-TABLE,STACK,N-S-PASSAGE
|
|
?CND53: PRINTI "nor"
|
|
JUMP ?CND50
|
|
?CCL61: ADD CNT,2 >CNT
|
|
JUMP ?PRG57
|
|
?CCL52: SET 'N-S-PASSAGE-DIR,P?SOUTH
|
|
EQUAL? HERE,CONSTRUCTION \?CND62
|
|
GRTR? CONSTRUCTION-LOC,55 /?CND62
|
|
ADD CONSTRUCTION-LOC,108
|
|
PUT NORTH-EXITS,0,STACK
|
|
?PRG66: GET STORAGE-TABLE,CNT
|
|
ZERO? STACK \?CCL70
|
|
ADD CONSTRUCTION-LOC,8
|
|
ADD STACK,CONSTRUCTION-OFFSET
|
|
PUT STORAGE-TABLE,CNT,STACK
|
|
ADD CNT,1
|
|
PUT STORAGE-TABLE,STACK,N-S-PASSAGE
|
|
?CND62: PRINTI "sou"
|
|
?CND50: PRINTR "th from the room."
|
|
?CCL70: ADD CNT,2 >CNT
|
|
JUMP ?PRG66
|
|
?CCL47: EQUAL? HERE,CONSTRUCTION \?CND71
|
|
SET 'NW-SE-PASSAGE-LOC,CONSTRUCTION-LOC
|
|
?CND71: CALL ADJ-USED?,WALL,W?NORTHWEST,W?NW
|
|
ZERO? STACK /?CCL75
|
|
SET 'NW-SE-PASSAGE-DIR,P?NW
|
|
EQUAL? HERE,CONSTRUCTION \?CND76
|
|
MOD CONSTRUCTION-LOC,8
|
|
ZERO? STACK /?CND76
|
|
LESS? CONSTRUCTION-LOC,8 /?CND76
|
|
ADD CONSTRUCTION-LOC,91
|
|
PUT SE-EXITS,0,STACK
|
|
?PRG82: GET STORAGE-TABLE,CNT
|
|
ZERO? STACK \?CCL86
|
|
SUB CONSTRUCTION-LOC,9
|
|
ADD STACK,CONSTRUCTION-OFFSET
|
|
PUT STORAGE-TABLE,CNT,STACK
|
|
ADD CNT,1
|
|
PUT STORAGE-TABLE,STACK,NW-SE-PASSAGE
|
|
?CND76: PRINTI "northwe"
|
|
JUMP ?CND73
|
|
?CCL86: ADD CNT,2 >CNT
|
|
JUMP ?PRG82
|
|
?CCL75: SET 'NW-SE-PASSAGE-DIR,P?SE
|
|
EQUAL? HERE,CONSTRUCTION \?CND87
|
|
MOD CONSTRUCTION-LOC,8
|
|
EQUAL? STACK,7 /?CND87
|
|
GRTR? CONSTRUCTION-LOC,55 /?CND87
|
|
ADD CONSTRUCTION-LOC,100
|
|
PUT SE-EXITS,0,STACK
|
|
?PRG93: GET STORAGE-TABLE,CNT
|
|
ZERO? STACK \?CCL97
|
|
ADD CONSTRUCTION-LOC,9
|
|
ADD STACK,CONSTRUCTION-OFFSET
|
|
PUT STORAGE-TABLE,CNT,STACK
|
|
ADD CNT,1
|
|
PUT STORAGE-TABLE,STACK,NW-SE-PASSAGE
|
|
?CND87: PRINTI "southea"
|
|
?CND73: PRINTR "st from the room."
|
|
?CCL97: ADD CNT,2 >CNT
|
|
JUMP ?PRG93
|
|
|
|
|
|
.FUNCT PASSAGE-THERE,PASSAGE?
|
|
CALL ADJ-USED?,WALL,W?NORTH,W?N
|
|
ZERO? STACK /?CCL3
|
|
EQUAL? HERE,PEG-ROOM \?CCL6
|
|
ZERO? PEG-PASSAGE-OPENED \?CCL9
|
|
ICALL2 REPELLED,STR?198
|
|
SET 'PASSAGE?,M-FATAL
|
|
JUMP ?CND1
|
|
?CCL9: SET 'PASSAGE?,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?CCL6: EQUAL? HERE,SECRET-PASSAGE \?CCL11
|
|
ZERO? SECRET-PASSAGE-OPEN \?CCL14
|
|
ICALL2 REPELLED,STR?198
|
|
SET 'PASSAGE?,M-FATAL
|
|
JUMP ?CND1
|
|
?CCL14: SET 'PASSAGE?,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?CCL11: EQUAL? HERE,CONSTRUCTION \?CCL16
|
|
INTBL? NORTH-EXITS,CONSTRUCTION-LOC,11 \?CND1
|
|
SET 'PASSAGE?,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL16: EQUAL? HERE,WEIRD \?CCL20
|
|
EQUAL? TOWER-BEATEN,PYRAMID /?CCL20
|
|
ICALL2 REPELLED,STR?198
|
|
SET 'PASSAGE?,M-FATAL
|
|
JUMP ?CND1
|
|
?CCL20: EQUAL? HERE,G-U-MOUNTAIN \?CCL24
|
|
IN? BOULDER,HERE \?CCL27
|
|
ICALL2 REPELLED,STR?198
|
|
SET 'PASSAGE?,M-FATAL
|
|
JUMP ?CND1
|
|
?CCL27: SET 'PASSAGE?,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?CCL24: GETPT HERE,P?NORTH
|
|
ZERO? STACK /?CND1
|
|
SET 'PASSAGE?,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL3: CALL ADJ-USED?,WALL,W?SOUTH,W?S
|
|
ZERO? STACK /?CCL30
|
|
EQUAL? HERE,CONSTRUCTION \?CCL33
|
|
ADD CONSTRUCTION-LOC,8
|
|
INTBL? NORTH-EXITS,STACK,11 \?CND1
|
|
SET 'PASSAGE?,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL33: EQUAL? HERE,THRONE-ROOM \?CCL37
|
|
ZERO? SECRET-PASSAGE-OPEN \?CCL40
|
|
ICALL2 REPELLED,STR?199
|
|
SET 'PASSAGE?,M-FATAL
|
|
JUMP ?CND1
|
|
?CCL40: SET 'PASSAGE?,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?CCL37: GETPT HERE,P?SOUTH
|
|
ZERO? STACK /?CND1
|
|
SET 'PASSAGE?,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL30: CALL ADJ-USED?,WALL,W?NORTHWEST,W?NW
|
|
ZERO? STACK /?CCL43
|
|
EQUAL? HERE,CONSTRUCTION \?CCL46
|
|
SUB CONSTRUCTION-LOC,9
|
|
INTBL? SE-EXITS,STACK,7 \?CND1
|
|
SET 'PASSAGE?,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL46: EQUAL? HERE,PERIMETER-WALL \?CCL50
|
|
SET 'PASSAGE?,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?CCL50: GETPT HERE,P?NW
|
|
ZERO? STACK /?CND1
|
|
SET 'PASSAGE?,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL43: CALL ADJ-USED?,WALL,W?SOUTHEAST,W?SE
|
|
ZERO? STACK /?CND1
|
|
EQUAL? HERE,CONSTRUCTION \?CCL55
|
|
INTBL? SE-EXITS,CONSTRUCTION-LOC,7 \?CND1
|
|
SET 'PASSAGE?,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL55: GETPT HERE,P?SE
|
|
ZERO? STACK /?CND1
|
|
SET 'PASSAGE?,TRUE-VALUE
|
|
?CND1: EQUAL? PASSAGE?,M-FATAL /TRUE
|
|
ZERO? PASSAGE? /FALSE
|
|
PRINTR "There's already an exit in that direction!"
|
|
|
|
|
|
.FUNCT REPELLED,STRING
|
|
PRINTI "Strangely, the passage seems repelled by the "
|
|
PRINT STRING
|
|
PRINTR " wall, as though two inconsistent types of magic were at work in the same place."
|
|
|
|
|
|
.FUNCT GLOBAL-PASSAGE-F
|
|
EQUAL? PRSA,V?ENTER \FALSE
|
|
CALL1 V-WALK-AROUND
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CEILING-F
|
|
CALL NOUN-USED?,CEILING,W?ROOF
|
|
ZERO? STACK /?CCL3
|
|
EQUAL? HERE,ROOF,PARAPET \?CCL3
|
|
EQUAL? PRSA,V?THROW-FROM \?CCL8
|
|
REMOVE PRSO
|
|
EQUAL? PRSO,PERCH /?CCL10
|
|
CALL ULTIMATELY-IN?,PERCH,PRSO
|
|
ZERO? STACK /?CND9
|
|
?CCL10: SET 'REMOVED-PERCH-LOC,GROUND
|
|
?CND9: PRINTI "You hear a ""splat"" as"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " sinks into the ground far below."
|
|
?CCL8: EQUAL? PRSO,CEILING \?CCL14
|
|
CALL PERFORM-PRSA,GLOBAL-HERE,PRSI
|
|
RSTACK
|
|
?CCL14: CALL PERFORM-PRSA,PRSO,GLOBAL-HERE
|
|
RSTACK
|
|
?CCL3: FSET? HERE,OUTSIDEBIT \?CCL16
|
|
CALL2 HANDLE,CEILING
|
|
ZERO? STACK /?CCL16
|
|
CALL2 CANT-SEE,CEILING
|
|
RSTACK
|
|
?CCL16: EQUAL? PRSA,V?EXAMINE \?CCL20
|
|
EQUAL? HERE,BARBICAN \?CCL23
|
|
PRINTR "It's too gloomy in here to make out any of the features of the ceiling."
|
|
?CCL23: EQUAL? HERE,MEGABOZ-HUT \FALSE
|
|
PRINT MEGABOZ-CEILING-DESC
|
|
CRLF
|
|
RTRUE
|
|
?CCL20: EQUAL? PRSA,V?LOOK-UNDER \FALSE
|
|
ICALL2 PERFORM,V?LOOK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SLIME-F
|
|
EQUAL? PRSA,V?EAT,V?TOUCH,V?TASTE \FALSE
|
|
PRINTR "Mega-yucko!"
|
|
|
|
|
|
.FUNCT WATER-F,X
|
|
CALL1 FIND-WATER >X
|
|
ZERO? X \?CND1
|
|
CALL2 VISIBLE?,LARGE-VIAL
|
|
ZERO? STACK /?CCL5
|
|
CALL2 VISIBLE?,SMALL-VIAL
|
|
ZERO? STACK /?CCL5
|
|
GRTR? LARGE-VIAL-GLOOPS,0 \?CCL5
|
|
GRTR? SMALL-VIAL-GLOOPS,0 \?CCL5
|
|
PRINT WHICH-WATER
|
|
RTRUE
|
|
?CCL5: CALL2 VISIBLE?,LARGE-VIAL
|
|
ZERO? STACK /?CCL11
|
|
GRTR? LARGE-VIAL-GLOOPS,0 \?CCL11
|
|
SET 'X,LARGE-VIAL
|
|
JUMP ?CND1
|
|
?CCL11: CALL2 VISIBLE?,SMALL-VIAL
|
|
ZERO? STACK /?CCL15
|
|
GRTR? SMALL-VIAL-GLOOPS,0 \?CCL15
|
|
SET 'X,SMALL-VIAL
|
|
?CND1: EQUAL? PRSA,V?COUNT \?CCL22
|
|
CALL NOUN-USED?,WATER,W?GLOOPS
|
|
ZERO? STACK /?CCL22
|
|
CALL2 VISIBLE?,LARGE-VIAL
|
|
ZERO? STACK /?CND25
|
|
PRINTI "The large vial "
|
|
ZERO? LARGE-VIAL-GLOOPS \?CCL29
|
|
PRINTI "is empty"
|
|
JUMP ?CND27
|
|
?CCL15: CALL2 HANDLE,WATER
|
|
ZERO? STACK /FALSE
|
|
PRINT YOU-CANT-SEE-ANY
|
|
PRINTR "water here.]"
|
|
?CCL29: PRINTI "contains "
|
|
PRINTN LARGE-VIAL-GLOOPS
|
|
PRINTI " gloop"
|
|
EQUAL? LARGE-VIAL-GLOOPS,1 /?CND27
|
|
PRINTC 115
|
|
?CND27: CALL2 VISIBLE?,SMALL-VIAL
|
|
ZERO? STACK /?CCL34
|
|
PRINTI ". "
|
|
JUMP ?CND25
|
|
?CCL34: PRINT PERIOD-CR
|
|
?CND25: CALL2 VISIBLE?,SMALL-VIAL
|
|
ZERO? STACK /FALSE
|
|
PRINTI "The small vial "
|
|
ZERO? SMALL-VIAL-GLOOPS \?CCL40
|
|
PRINTI "is empty"
|
|
JUMP ?CND38
|
|
?CCL40: PRINTI "contains "
|
|
PRINTN SMALL-VIAL-GLOOPS
|
|
PRINTI " gloop"
|
|
EQUAL? SMALL-VIAL-GLOOPS,1 /?CND38
|
|
PRINTC 115
|
|
?CND38: PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL22: EQUAL? PRSA,V?FILL \?CCL44
|
|
EQUAL? PRSI,WATER \?CCL44
|
|
EQUAL? PRSO,LARGE-VIAL,SMALL-VIAL \?CCL49
|
|
EQUAL? X,LARGE-VIAL \?CCL52
|
|
ICALL PERFORM,V?FILL,PRSO,LARGE-VIAL
|
|
RTRUE
|
|
?CCL52: EQUAL? X,SMALL-VIAL \FALSE
|
|
ICALL PERFORM,V?FILL,PRSO,SMALL-VIAL
|
|
RTRUE
|
|
?CCL49: EQUAL? PRSO,CUP \?CCL56
|
|
PRINTR "The water evaporates in a puff of smoke as soon as it touches the cup. A strong magic is at work here!"
|
|
?CCL56: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL44: EQUAL? PRSA,V?EMPTY,V?REMOVE \?CCL58
|
|
ZERO? PRSI \?CCL58
|
|
CALL NOUN-USED?,WATER,W?GLOOP,W?GLOOPS
|
|
ZERO? STACK /?CCL58
|
|
CALL2 VISIBLE?,LARGE-VIAL
|
|
ZERO? STACK \?CTR57
|
|
CALL2 VISIBLE?,SMALL-VIAL
|
|
ZERO? STACK /?CCL58
|
|
?CTR57: CALL2 VISIBLE?,LARGE-VIAL
|
|
ZERO? STACK /?CCL67
|
|
CALL2 VISIBLE?,SMALL-VIAL
|
|
ZERO? STACK /?CCL67
|
|
ZERO? LARGE-VIAL-GLOOPS /?CCL72
|
|
ZERO? SMALL-VIAL-GLOOPS /?CCL72
|
|
PRINTR "There's water in both vials."
|
|
?CCL72: ZERO? LARGE-VIAL-GLOOPS /?CCL76
|
|
SET 'PRSI,LARGE-VIAL
|
|
JUMP ?CND65
|
|
?CCL76: ZERO? SMALL-VIAL-GLOOPS /?CCL78
|
|
SET 'PRSI,SMALL-VIAL
|
|
JUMP ?CND65
|
|
?CCL78: PRINTR "Neither vial contains water!"
|
|
?CCL67: CALL2 VISIBLE?,LARGE-VIAL
|
|
ZERO? STACK /?CCL80
|
|
SET 'PRSI,LARGE-VIAL
|
|
JUMP ?CND65
|
|
?CCL80: SET 'PRSI,SMALL-VIAL
|
|
?CND65: ICALL PERFORM,V?EMPTY-FROM,WATER,PRSI
|
|
RTRUE
|
|
?CCL58: EQUAL? PRSA,V?DRINK \?CCL82
|
|
PRINTR "You're not thirsty."
|
|
?CCL82: EQUAL? PRSA,V?EXAMINE,V?LOOK-UNDER,V?LOOK-INSIDE \?CCL84
|
|
PRINTR "You see nothing of interest."
|
|
?CCL84: EQUAL? PRSA,V?TOUCH,V?REACH-IN \?CCL86
|
|
PRINTI "Your hand is now wet"
|
|
EQUAL? HERE,OASIS \?CND87
|
|
PRINTI " and cold"
|
|
?CND87: PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL86: EQUAL? PRSA,V?PUT-ON,V?PUT \?CCL90
|
|
EQUAL? PRSI,WATER \?CCL90
|
|
IN? PROTAGONIST,DB \?CCL95
|
|
PRINTR "You can't reach the water -- the bathysphere is closed! (Fortunately.)"
|
|
?CCL95: EQUAL? HERE,PARLOR \?CCL97
|
|
MOVE PRSO,FISH-TANK
|
|
JUMP ?CND93
|
|
?CCL97: EQUAL? HERE,LAKE-FLATHEAD \?CCL99
|
|
FSET? PRSO,ANIMATEDBIT \?CCL102
|
|
REMOVE PRSO
|
|
JUMP ?CND93
|
|
?CCL102: MOVE PRSO,LAKE-BOTTOM
|
|
JUMP ?CND93
|
|
?CCL99: EQUAL? PRSO,PERCH /?CCL104
|
|
CALL ULTIMATELY-IN?,PERCH,PRSO
|
|
ZERO? STACK /?CND103
|
|
?CCL104: SET 'REMOVED-PERCH-LOC,WATER
|
|
?CND103: REMOVE PRSO
|
|
?CND93: PRINTI "With a ""p"
|
|
EQUAL? PRSO,FLICKERING-TORCH,GUTTERING-TORCH,CANDLE \?CCL109
|
|
FSET? PRSO,ONBIT \?CCL109
|
|
FCLEAR PRSO,ONBIT
|
|
FCLEAR PRSO,FLAMEBIT
|
|
EQUAL? PRSO,GUTTERING-TORCH \?CCL114
|
|
ICALL2 DEQUEUE,I-GUTTERING-TORCH
|
|
JUMP ?CND112
|
|
?CCL114: EQUAL? PRSO,FLICKERING-TORCH \?CND112
|
|
ICALL2 DEQUEUE,I-FLICKERING-TORCH
|
|
?CND112: PRINTI "ffft"
|
|
JUMP ?CND107
|
|
?CCL109: PRINTI "lunk"
|
|
?CND107: PRINTI ","""
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " sinks into the water"
|
|
EQUAL? PRSO,FOX,ROOSTER \?CND116
|
|
PRINTI ", you heartless animal drowner, you"
|
|
?CND116: PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL90: EQUAL? PRSA,V?SWIM,V?ENTER \?CCL119
|
|
EQUAL? X,SWAMP \?CCL122
|
|
PRINTR "You're already ankle-deep in the swampy water, which is yucky enough."
|
|
?CCL122: EQUAL? X,FRIGID-RIVER \?CCL124
|
|
PRINTR "The Frigid River is known for its unpredictable currents."
|
|
?CCL124: EQUAL? X,FLATHEAD-OCEAN \?CCL126
|
|
PRINTR "The pounding surf would kill you in a moment."
|
|
?CCL126: EQUAL? X,LAKE-FLATHEAD \?CCL128
|
|
ZERO? ALLIGATOR /?CCL131
|
|
CALL2 JIGS-UP,STR?200
|
|
RSTACK
|
|
?CCL131: PRINTR "These waters are known for their hungry denizens."
|
|
?CCL128: EQUAL? X,STREAM-OBJECT \?CCL133
|
|
CALL2 DO-WALK,P?WEST
|
|
RSTACK
|
|
?CCL133: EQUAL? X,OASIS-OBJECT \?CCL135
|
|
PRINTR "Only a Polar Gumffbeast could swim in such cold water!"
|
|
?CCL135: EQUAL? X,FISH-TANK \?CCL137
|
|
ZERO? DESCRIBED-TANK-AS-LARGE /?CCL140
|
|
PRINTR "There's no way you could fit into this fish tank! [All right, I'll admit that I went a little overboard when I described the fish tank as ""bigger than a swimming pool.""]"
|
|
?CCL140: SET 'DESCRIBED-TANK-AS-SMALL,TRUE-VALUE
|
|
PRINTR "What? Swim in an itsy-bitsy fish tank like this one?!?"
|
|
?CCL137: EQUAL? X,MOAT \FALSE
|
|
ZERO? ALLIGATOR /?CCL145
|
|
CALL2 JIGS-UP,STR?201
|
|
RSTACK
|
|
?CCL145: PRINTR "Not recommended. Moats tend to be populated with big, nasty alligators."
|
|
?CCL119: EQUAL? PRSO,WATER \?CCL147
|
|
CALL PERFORM-PRSA,X,PRSI
|
|
RSTACK
|
|
?CCL147: CALL PERFORM-PRSA,PRSO,X
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FIND-WATER
|
|
CALL GLOBAL-IN?,MOAT,HERE
|
|
ZERO? STACK /?CCL3
|
|
RETURN MOAT
|
|
?CCL3: EQUAL? HERE,STREAM \?CCL5
|
|
RETURN STREAM-OBJECT
|
|
?CCL5: EQUAL? HERE,PARLOR \?CCL7
|
|
RETURN FISH-TANK
|
|
?CCL7: EQUAL? HERE,RIVERS-END \?CCL9
|
|
RETURN FRIGID-RIVER
|
|
?CCL9: CALL GLOBAL-IN?,FLATHEAD-OCEAN,HERE
|
|
ZERO? STACK /?CCL11
|
|
RETURN FLATHEAD-OCEAN
|
|
?CCL11: EQUAL? HERE,LAKE-FLATHEAD /?CTR12
|
|
CALL GLOBAL-IN?,LAKE-FLATHEAD,HERE
|
|
ZERO? STACK /?CCL13
|
|
?CTR12: RETURN LAKE-FLATHEAD
|
|
?CCL13: CALL GLOBAL-IN?,SWAMP,HERE
|
|
ZERO? STACK /?CCL17
|
|
RETURN SWAMP
|
|
?CCL17: CALL GLOBAL-IN?,FJORD,HERE
|
|
ZERO? STACK /?CCL19
|
|
RETURN FJORD
|
|
?CCL19: EQUAL? HERE,OASIS \FALSE
|
|
RETURN OASIS-OBJECT
|
|
|
|
|
|
.FUNCT VIAL-WATER-F
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
EQUAL? P-PRSA-WORD,W?REMOVE \FALSE
|
|
EQUAL? PRSO,LARGE-VIAL-WATER \?CCL8
|
|
PUSH LARGE-VIAL
|
|
JUMP ?CND6
|
|
?CCL8: PUSH SMALL-VIAL
|
|
?CND6: CALL PERFORM,V?EMPTY-FROM,WATER,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT G-VIAL-WATER-F,SR,F,ADJ,VB
|
|
GET F,5 >ADJ
|
|
ZERO? ADJ /?CND1
|
|
CALL2 CONVERT-NUMBER,ADJ >ADJ
|
|
?CND1: LESS? LARGE-VIAL-GLOOPS,ADJ \?CCL5
|
|
LESS? SMALL-VIAL-GLOOPS,ADJ /FALSE
|
|
RETURN SMALL-VIAL-WATER
|
|
?CCL5: LESS? SMALL-VIAL-GLOOPS,ADJ \FALSE
|
|
RETURN LARGE-VIAL-WATER
|
|
|
|
|
|
.FUNCT HANDS-F,ACTOR
|
|
EQUAL? PRSA,V?CLEAN \?CCL3
|
|
CALL1 WASTES
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?SHAKE \?CCL5
|
|
CALL FIND-IN,HERE,ACTORBIT,STR?202 >ACTOR
|
|
ZERO? ACTOR /?CCL8
|
|
ICALL PERFORM,V?SHAKE-WITH,HANDS,ACTOR
|
|
RTRUE
|
|
?CCL8: PRINTR "There's no one here to shake hands with."
|
|
?CCL5: EQUAL? PRSA,V?COUNT \?CCL10
|
|
CALL NOUN-USED?,HANDS,W?FINGER,W?FINGERS
|
|
ZERO? STACK /?CCL13
|
|
PRINTI "Ten"
|
|
JUMP ?CND11
|
|
?CCL13: PRINTI "Two"
|
|
?CND11: PRINTR ", as usual."
|
|
?CCL10: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL15
|
|
ZERO? HAND-IN-WALDO /?CCL15
|
|
ICALL2 PERFORM-PRSA,WALDO
|
|
RTRUE
|
|
?CCL15: EQUAL? PRSA,V?TAKE-OFF,V?REMOVE \?CCL19
|
|
ZERO? HAND-IN-WALDO /?CCL22
|
|
SET 'HAND-IN-WALDO,FALSE-VALUE
|
|
PRINTR "You withdraw your hand."
|
|
?CCL22: ZERO? FINGER-ON-STRAW /?CCL24
|
|
SET 'FINGER-ON-STRAW,FALSE-VALUE
|
|
SET 'ELIXIR-TRAPPED,FALSE-VALUE
|
|
PRINTR "You remove your finger from the end of the straw."
|
|
?CCL24: PRINTR "To quote an old song, ""The hand bone's connected to the wrist bone..."""
|
|
?CCL19: EQUAL? PRSA,V?PUT-ON \?CCL26
|
|
EQUAL? PRSO,GLOVE \?CCL26
|
|
ICALL PERFORM,V?WEAR,GLOVE
|
|
RTRUE
|
|
?CCL26: EQUAL? PRSA,V?TAKE-WITH \?CCL30
|
|
EQUAL? PRSI,HANDS \?CCL30
|
|
ICALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CCL30: EQUAL? PRSA,V?SNAP \FALSE
|
|
CALL NOUN-USED?,HANDS,W?FINGER,W?FINGERS
|
|
ZERO? STACK /FALSE
|
|
ZERO? TIME-STOPPED \FALSE
|
|
IN? PROTAGONIST,SMALL-THRONE \?CCL40
|
|
CALL1 OPEN-SECRET-PASSAGE?
|
|
RSTACK
|
|
?CCL40: PRINTR """Snap!"""
|
|
|
|
|
|
.FUNCT OPEN-SECRET-PASSAGE?
|
|
ZERO? SECRET-PASSAGE-OPEN /?CCL3
|
|
SET 'SECRET-PASSAGE-OPEN,FALSE-VALUE
|
|
SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
PRINTR "The secret passage closes!"
|
|
?CCL3: ZERO? SECRET-PASSAGE-DISCOVERED /?CCL5
|
|
SET 'SECRET-PASSAGE-OPEN,TRUE-VALUE
|
|
SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
PRINTR "The secret passage opens once again."
|
|
?CCL5: SET 'SECRET-PASSAGE-OPEN,TRUE-VALUE
|
|
SET 'SECRET-PASSAGE-DISCOVERED,TRUE-VALUE
|
|
SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
PRINTI "Behind the throne, accompanied by a puff of dust, a secret passage grinds open, leading south into darkness!"
|
|
IN? JESTER,HERE \?CND6
|
|
PRINTI " The jester applauds you, howling with mysterious delight."
|
|
?CND6: CRLF
|
|
ICALL2 INC-SCORE,SECRET-PASSAGE-SCORE
|
|
SET 'SECRET-PASSAGE-SCORE,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FEET-F
|
|
EQUAL? PRSA,V?ENTER \FALSE
|
|
EQUAL? P-PRSA-WORD,W?GET \FALSE
|
|
SET 'P-PRSA-WORD,W?STAND
|
|
SET 'PRSO,FALSE-VALUE
|
|
CALL1 V-STAND
|
|
RSTACK
|
|
|
|
|
|
.FUNCT EYES-F,WHOSE-EYE
|
|
CALL ADJ-USED?,EYES,W?MY,W?MINE
|
|
ZERO? STACK /?CCL3
|
|
SET 'WHOSE-EYE,PROTAGONIST
|
|
JUMP ?CND1
|
|
?CCL3: CALL ADJ-USED?,EYES,W?ORACLE'S
|
|
ZERO? STACK /?CCL5
|
|
SET 'WHOSE-EYE,ORACLE-OBJECT
|
|
JUMP ?CND1
|
|
?CCL5: CALL ADJ-USED?,EYES,W?AMULET'S
|
|
ZERO? STACK /?CCL7
|
|
SET 'WHOSE-EYE,AMULET
|
|
JUMP ?CND1
|
|
?CCL7: EQUAL? HERE,ORACLE \?CCL9
|
|
SET 'WHOSE-EYE,ORACLE-OBJECT
|
|
JUMP ?CND1
|
|
?CCL9: CALL2 VISIBLE?,AMULET
|
|
ZERO? STACK /?CCL11
|
|
SET 'WHOSE-EYE,AMULET
|
|
JUMP ?CND1
|
|
?CCL11: SET 'WHOSE-EYE,PROTAGONIST
|
|
?CND1: CALL ADJ-USED?,EYES,W?THREE,W?FOUR
|
|
ZERO? STACK \?PRD16
|
|
CALL ADJ-USED?,EYES,W?THIRD,W?FOURTH
|
|
ZERO? STACK /?CCL14
|
|
?PRD16: EQUAL? WHOSE-EYE,PROTAGONIST \?CCL14
|
|
CALL2 CANT-SEE,EYES
|
|
RSTACK
|
|
?CCL14: EQUAL? PRSA,V?COUNT \?CCL20
|
|
EQUAL? WHOSE-EYE,PROTAGONIST \?CCL23
|
|
PRINTR "Two, unless you've been careless with pointy sticks lately."
|
|
?CCL23: PRINTR "Four."
|
|
?CCL20: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL25
|
|
EQUAL? WHOSE-EYE,ORACLE-OBJECT,AMULET \?CCL25
|
|
PRINTR "There's no way to do that yourself."
|
|
?CCL25: EQUAL? PRSA,V?CLOSE \?CCL29
|
|
ICALL2 PERFORM,V?SLEEP
|
|
RTRUE
|
|
?CCL29: EQUAL? PRSA,V?OPEN \FALSE
|
|
PRINTR "Your eyes ARE open!"
|
|
|
|
|
|
.FUNCT NOSE-F
|
|
EQUAL? PRSA,V?PICK \FALSE
|
|
PRINTR "Oh, gross!"
|
|
|
|
|
|
.FUNCT MOUTH-F
|
|
EQUAL? PRSA,V?PUT \?CCL3
|
|
EQUAL? PRSI,MOUTH \?CCL3
|
|
EQUAL? PRSO,STRAW \?CCL8
|
|
PRINTR "Other than perhaps satisfying some primitive phallic urge of yours, this accomplishes nothing. [If you want to drink something with the straw, just try DRINK THING WITH STRAW!]"
|
|
?CCL8: ICALL PERFORM,V?EAT,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?ENTER \FALSE
|
|
PRINTR "That would involve quite a contortion!"
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT ME-F
|
|
EQUAL? PRSA,V?CALL,V?YELL,V?TELL \?CCL3
|
|
PRINTI "Talking to yourself is a sign of impending mental collapse."
|
|
CRLF
|
|
CALL1 STOP
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?ALARM \?CCL5
|
|
PRINTR "You are already awake."
|
|
?CCL5: EQUAL? PRSA,V?EAT \?CCL7
|
|
PRINTR "Auto-cannibalism is not the answer."
|
|
?CCL7: EQUAL? PRSA,V?EXAMINE \?CCL9
|
|
CALL1 V-DIAGNOSE
|
|
RSTACK
|
|
?CCL9: EQUAL? PRSA,V?GIVE \?CCL11
|
|
EQUAL? PRSI,ME \?CCL11
|
|
ICALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CCL11: EQUAL? PRSA,V?SHOW \?CCL15
|
|
EQUAL? PRSI,ME \?CCL15
|
|
ICALL PERFORM,V?EXAMINE,PRSO
|
|
RTRUE
|
|
?CCL15: EQUAL? PRSA,V?MOVE \?CCL19
|
|
CALL1 V-WALK-AROUND
|
|
RSTACK
|
|
?CCL19: EQUAL? PRSA,V?SEARCH \?CCL21
|
|
ICALL1 V-INVENTORY
|
|
RTRUE
|
|
?CCL21: EQUAL? PRSA,V?KICK,V?MUNG,V?KILL \?CCL23
|
|
EQUAL? P-PRSA-WORD,W?KILL,W?MURDER \?CCL26
|
|
CALL2 JIGS-UP,STR?204
|
|
RSTACK
|
|
?CCL26: PRINTI "[If you're really into masochistic fantasies, perhaps you'd be more at home playing Infocom's "
|
|
HLIGHT H-ITALIC
|
|
PRINTI "LEATHER GODDESSES OF PHOBOS"
|
|
HLIGHT H-NORMAL
|
|
PRINTR " (tm).]"
|
|
?CCL23: EQUAL? PRSA,V?FIND \FALSE
|
|
PRINTI "You're in"
|
|
CALL2 TRPRINT,HERE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT GLOBAL-HERE-F
|
|
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE,V?LOOK \?CCL3
|
|
CALL1 V-LOOK
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?WALK-TO,V?ENTER \?CCL5
|
|
EQUAL? HERE,LAKE-FLATHEAD \?CCL8
|
|
ICALL PERFORM,V?SWIM,LAKE-FLATHEAD
|
|
RTRUE
|
|
?CCL8: PRINT LOOK-AROUND
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSA,V?EXIT,V?LEAVE \?CCL10
|
|
CALL2 DO-WALK,P?OUT
|
|
RSTACK
|
|
?CCL10: EQUAL? PRSA,V?SEARCH \?CCL12
|
|
PRINT NOTHING-NEW
|
|
RTRUE
|
|
?CCL12: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
|
|
EQUAL? PRSI,GLOBAL-HERE \FALSE
|
|
EQUAL? P-PRSA-WORD,W?THROW \?CCL19
|
|
ICALL PERFORM,V?THROW,PRSO
|
|
RTRUE
|
|
?CCL19: ICALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GLOBAL-BLDG-F
|
|
EQUAL? PRSA,V?ENTER \?CCL3
|
|
EQUAL? HERE,FISHING-VILLAGE,WHARF \?CCL3
|
|
CALL2 DO-WALK,P?NORTH
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?LEAVE,V?EXIT \FALSE
|
|
CALL2 DO-WALK,P?OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ARCH-F
|
|
EQUAL? PRSA,V?ENTER \FALSE
|
|
CALL1 V-WALK-AROUND
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WINDOW-F
|
|
EQUAL? PRSA,V?LOOK-INSIDE \?CCL3
|
|
EQUAL? HERE,GONDOLA \?CCL6
|
|
ZERO? DIRIGIBLE-COUNTER \?CCL9
|
|
PRINTR "The dirigible is moored in a hangar."
|
|
?CCL9: EQUAL? DESTINATION,SMALLER-HANGAR \?CCL11
|
|
SUB DIRIGIBLE-COUNTER,2
|
|
GET DIRIGIBLE-TRIP-DESCS,STACK
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?CCL11: SUB 5,DIRIGIBLE-COUNTER
|
|
GET DIRIGIBLE-TRIP-DESCS,STACK
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?CCL6: EQUAL? HERE,DIMWITS-ROOM,BASTION,SOLAR \?CCL13
|
|
PRINTR "The window offers a splendid view of the castle grounds."
|
|
?CCL13: EQUAL? HERE,HOTHOUSE \?CCL15
|
|
PRINTR "You see a ruined castle."
|
|
?CCL15: EQUAL? HERE,FR-PENTHOUSE,OFFICES-NORTH,OFFICES-SOUTH /?CTR16
|
|
EQUAL? HERE,OFFICES-EAST,OFFICES-WEST \?CCL17
|
|
?CTR16: EQUAL? HERE,FR-PENTHOUSE /?CTR21
|
|
GRTR? FLOOR-NUMBER,20 \?CCL22
|
|
?CTR21: PRINTR "You can't see much; the air is pretty smoggy today."
|
|
?CCL22: PRINTR "The window offers a good view of Flatheadia."
|
|
?CCL17: PRINTR "Bug 29."
|
|
?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL26
|
|
EQUAL? HERE,HOTHOUSE \?CCL29
|
|
PRINTR "There's not much left of the windows."
|
|
?CCL29: EQUAL? HERE,DIMWITS-ROOM,BASTION,SOLAR \?CCL31
|
|
PRINTR "The window is just a narrow slit in the stone wall; there's no way to open or close it."
|
|
?CCL31: PRINTR "The window is unopenable."
|
|
?CCL26: EQUAL? PRSA,V?LEAP-OFF,V?EXIT,V?ENTER \?CCL33
|
|
EQUAL? HERE,HOTHOUSE \?CCL36
|
|
PRINTR "You cut yourself to ribbons on the broken glass."
|
|
?CCL36: EQUAL? HERE,DIMWITS-ROOM,BASTION,SOLAR \?CCL38
|
|
PRINTR "These slitted windows are narrower than your body."
|
|
?CCL38: CALL DO-FIRST,STR?140,WINDOW
|
|
RSTACK
|
|
?CCL33: EQUAL? PRSA,V?PUT-THROUGH \?CCL40
|
|
EQUAL? HERE,HOTHOUSE,DIMWITS-ROOM,SOLAR /?CTR42
|
|
EQUAL? HERE,BASTION \?CCL43
|
|
?CTR42: REMOVE PRSO
|
|
PRINTI "You hear a ""splat"" as"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " sinks into the "
|
|
EQUAL? HERE,HOTHOUSE \?CCL48
|
|
EQUAL? PRSO,PERCH /?CCL50
|
|
CALL ULTIMATELY-IN?,PERCH,PRSO
|
|
ZERO? STACK /?CND49
|
|
?CCL50: SET 'REMOVED-PERCH-LOC,WATER
|
|
?CND49: PRINTI "swamp outside"
|
|
JUMP ?CND46
|
|
?CCL48: EQUAL? PRSO,PERCH /?CCL54
|
|
CALL ULTIMATELY-IN?,PERCH,PRSO
|
|
ZERO? STACK /?CND53
|
|
?CCL54: SET 'REMOVED-PERCH-LOC,GROUND
|
|
?CND53: PRINTI "ground far below"
|
|
?CND46: PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL43: CALL DO-FIRST,STR?140,WINDOW
|
|
RSTACK
|
|
?CCL40: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
EQUAL? HERE,HOTHOUSE \FALSE
|
|
PRINTR "Many of the window panes are shattered."
|
|
|
|
|
|
.FUNCT LOCK-OBJECT-F
|
|
CALL NOUN-USED?,LOCK-OBJECT,W?KEYHOLE
|
|
ZERO? STACK /?CCL3
|
|
EQUAL? HERE,LOWEST-HALL \?CCL3
|
|
CALL2 CANT-SEE,LOCK-OBJECT
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL7
|
|
EQUAL? HERE,LOWEST-HALL \?CCL10
|
|
PRINTR "It's a large combination dial lock."
|
|
?CCL10: PRINTR "It's your basic keyhole lock."
|
|
?CCL7: EQUAL? PRSA,V?LOOK-INSIDE \?CCL12
|
|
PRINTR "You see nothing of interest, you shameless Peeping Tom you."
|
|
?CCL12: EQUAL? PRSA,V?PICK \?CCL14
|
|
PRINTR "You have neither the tools nor the expertise."
|
|
?CCL14: EQUAL? PRSA,V?LOCK,V?UNLOCK,V?OPEN \FALSE
|
|
EQUAL? PRSO,LOCK-OBJECT \FALSE
|
|
CALL GLOBAL-IN?,EAST-DOOR,HERE
|
|
ZERO? STACK /?CCL21
|
|
CALL PERFORM-PRSA,EAST-DOOR,PRSI
|
|
RSTACK
|
|
?CCL21: CALL GLOBAL-IN?,WEST-DOOR,HERE
|
|
ZERO? STACK /?CCL23
|
|
CALL PERFORM-PRSA,WEST-DOOR,PRSI
|
|
RSTACK
|
|
?CCL23: CALL GLOBAL-IN?,VAULT-DOOR,HERE
|
|
ZERO? STACK /?CCL25
|
|
CALL PERFORM-PRSA,VAULT-DOOR,PRSI
|
|
RSTACK
|
|
?CCL25: EQUAL? HERE,ATTIC \FALSE
|
|
CALL PERFORM-PRSA,TRUNK,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SIGN-F,NUM
|
|
EQUAL? PRSA,V?EXAMINE,V?READ \FALSE
|
|
EQUAL? HERE,EXIT \?CCL6
|
|
PRINTR """ROCKVILLE ESTATES: The new, prestigious address for the discriminating Young Underground Professional
|
|
64 units, Occupancy Spring 881
|
|
Frobozz Magic Construction Company
|
|
Quizbo Frotzwit, Managing Foreman"""
|
|
?CCL6: EQUAL? HERE,CROSSROADS \?CCL8
|
|
PRINTR """JUNCTION of GUH-90 and GUH-95
|
|
NORTH: Flatheadia, 1 bloit
|
|
SOUTH: Shadowland, 15 bloits
|
|
Royal Museum, 17 bloits
|
|
Fublio Valley, 90 bloits
|
|
EAST: White Cliffs Beach, 4 bloits
|
|
Flood Control Dam #3, 4 bloits
|
|
Aragain Falls, 5 bloits
|
|
WEST: Port Foozle, 9 bloits
|
|
Quilbozza Beach, 9 bloits"""
|
|
?CCL8: EQUAL? HERE,FISHING-VILLAGE \?CCL10
|
|
PRINTR """Sinners: Enter here for purification!"""
|
|
?CCL10: EQUAL? HERE,INQUISITION \?CCL12
|
|
PRINTR """Sinners, take note!
|
|
1. We cannot execute everyone at once! Please take a number!
|
|
2. Everyone is permitted a final request.
|
|
3. Tell the executioner your request when your number is called.
|
|
4. If we cannot grant your final wish, we shall be quick and merciful. We will behead you.
|
|
5. If we CAN grant your final wish, we will hang you. Please note that this is slow and excruciatingly painful."""
|
|
?CCL12: EQUAL? HERE,NORTH-OF-ANTHAR \?CCL14
|
|
PRINTR """We've got as many refugees from the Eastlands as we can handle! Go somewhere else!"""
|
|
?CCL14: EQUAL? HERE,MINE-ENTRANCE \?CCL16
|
|
PRINTR """Warning! Falling rock zone!"""
|
|
?CCL16: EQUAL? HERE,TOLL-PLAZA \?CCL18
|
|
PRINTR """Exact Change Only: 1 Zorkmid (coins only)."" Below the sign is a basket."
|
|
?CCL18: EQUAL? HERE,OUTSIDE-HOVEL \?CCL20
|
|
PRINTR """Korboz the Magnificent"""
|
|
?CCL20: EQUAL? HERE,OUTSIDE-SHACK \?CCL22
|
|
PRINTR """Warning! This shack is protected against looting by powerful magic!"""
|
|
?CCL22: EQUAL? HERE,WARNING-ROOM \?CCL24
|
|
PRINTR """Warning! This area is populated by three races: the Veritassi (who always tell the truth), the Prevaricons (who always lie), and the Wishyfoo (who alternate with every statement). Be aware that visitors to Veritass and Prevaricon areas are immediately fed to ravenous hellhounds."""
|
|
?CCL24: PRINTI "Bug 49"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT STAIRS-F
|
|
EQUAL? HERE,NORTH-SHORE,EAST-SHORE,SOUTH-SHORE /?PRD5
|
|
EQUAL? HERE,WEST-SHORE \?CCL3
|
|
?PRD5: IN? PROTAGONIST,YACHT /?CCL3
|
|
CALL2 CANT-SEE,STAIRS
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB \?CCL9
|
|
CALL2 DO-WALK,P?UP
|
|
RSTACK
|
|
?CCL9: EQUAL? PRSA,V?CLIMB-DOWN \FALSE
|
|
CALL2 DO-WALK,P?DOWN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FIXED-LADDER-F
|
|
EQUAL? PRSA,V?CLIMB-UP,V?CLIMB \?CCL3
|
|
CALL2 DO-WALK,P?UP
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?CLIMB-DOWN \?CCL5
|
|
CALL2 DO-WALK,P?DOWN
|
|
RSTACK
|
|
?CCL5: EQUAL? PRSA,V?TAKE \FALSE
|
|
PRINTR "The ladder is attached to the wall."
|
|
|
|
|
|
.FUNCT BONES-F
|
|
CALL2 TOUCHING?,BONES
|
|
ZERO? STACK /FALSE
|
|
PRINTR "Let the dead lie in peace."
|
|
|
|
|
|
.FUNCT CLEAR-BORDER,X,Y,WRD,?TMP1
|
|
SCREEN S-WINDOW
|
|
COLOR FG-COLOR,BG-COLOR
|
|
ICALL2 PICINF-PLUS-ONE,TEXT-WINDOW-PIC-LOC
|
|
GET PICINF-TBL,0 >Y
|
|
GET PICINF-TBL,1 >X
|
|
WINPOS S-WINDOW,1,1
|
|
GET 0,17
|
|
WINSIZE S-WINDOW,Y,STACK
|
|
CLEAR 1
|
|
GRTR? X,1 \?CND1
|
|
ADD Y,1
|
|
WINPOS S-WINDOW,STACK,1
|
|
GET 0,18
|
|
SUB STACK,Y >?TMP1
|
|
SUB X,1
|
|
WINSIZE S-WINDOW,?TMP1,STACK
|
|
CLEAR 1
|
|
ADD Y,1 >?TMP1
|
|
GET 0,17
|
|
SUB STACK,X
|
|
ADD STACK,1
|
|
WINPOS S-WINDOW,?TMP1,STACK
|
|
GET 0,18
|
|
SUB STACK,Y
|
|
WINSIZE S-WINDOW,STACK,X
|
|
CLEAR 1
|
|
?CND1: SET 'SL-SCORE,-1
|
|
SET 'OLD-REGION,FALSE-VALUE
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
COLOR 1,1
|
|
SCREEN S-TEXT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ADJUST-TEXT-WINDOW,ID,SCRY,WINY,ADJ
|
|
GET 0,18 >SCRY
|
|
ZERO? ID /?CND1
|
|
PICINF ID,PICINF-TBL /?BOGUS3
|
|
?BOGUS3: GET PICINF-TBL,0 >ADJ
|
|
?CND1: WINGET S-TEXT,WTOP
|
|
SUB STACK,1
|
|
SUB SCRY,STACK
|
|
SUB STACK,ADJ >WINY
|
|
DIV WINY,FONT-Y
|
|
MUL FONT-Y,STACK >WINY
|
|
WINGET S-TEXT,WWIDE
|
|
WINSIZE S-TEXT,WINY,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SPLIT-BY-PICTURE,ID,CLEAR-SCREEN?,Y,X,YS,XS,?TMP2,?TMP1
|
|
SET 'CURRENT-SPLIT,ID
|
|
ZERO? CLEAR-SCREEN? /?CND1
|
|
CLEAR -1
|
|
?CND1: PICINF ID,PICINF-TBL /?BOGUS3
|
|
?BOGUS3: GET PICINF-TBL,0 >Y
|
|
ADD Y,1 >?TMP1
|
|
ZERO? BORDER-ON \?CCL6
|
|
EQUAL? ID,TEXT-WINDOW-PIC-LOC \?CCL6
|
|
PUSH 1
|
|
JUMP ?CND4
|
|
?CCL6: GET PICINF-TBL,1 >X
|
|
ADD X,1
|
|
?CND4: WINPOS S-TEXT,?TMP1,STACK
|
|
GET 0,18
|
|
SUB STACK,Y >?TMP1
|
|
ZERO? BORDER-ON \?CCL11
|
|
EQUAL? ID,TEXT-WINDOW-PIC-LOC \?CCL11
|
|
MUL WIDTH,FONT-X
|
|
JUMP ?CND9
|
|
?CCL11: GET 0,17 >?TMP2
|
|
MUL X,2
|
|
SUB ?TMP2,STACK
|
|
?CND9: WINSIZE S-TEXT,?TMP1,STACK
|
|
WINPOS S-WINDOW,1,1
|
|
GET 0,17
|
|
WINSIZE S-WINDOW,Y,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT INIT-SL-WITH-SPLIT,WHICH,DONT-CLEAR,YFUDGE
|
|
ZERO? WHICH /?CND1
|
|
SET 'CURRENT-SPLIT,WHICH
|
|
?CND1: CALL2 INIT-STATUS-LINE,DONT-CLEAR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT INIT-STATUS-LINE,DONT-CLEAR,NUM,X,Y,?TMP2,?TMP1
|
|
SET 'NUM,1
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
SET 'OLD-REGION,FALSE-VALUE
|
|
SET 'SL-SCORE,-1
|
|
SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
ZERO? DONT-CLEAR \?CND1
|
|
CLEAR -1
|
|
?CND1: ICALL2 SPLIT-BY-PICTURE,CURRENT-SPLIT
|
|
EQUAL? CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC \?CCL5
|
|
ICALL2 ADJUST-TEXT-WINDOW,0
|
|
SCREEN S-FULL
|
|
ZERO? BORDER-ON /?CCL10
|
|
CALL1 SET-BORDER
|
|
DISPLAY STACK,1,1
|
|
PICSET COMPASS-PICSET-TBL
|
|
JUMP ?CND8
|
|
?CCL5: EQUAL? CURRENT-SPLIT,F-SPLIT \?CCL7
|
|
ICALL2 ADJUST-TEXT-WINDOW,F-BOTTOM
|
|
RTRUE
|
|
?CCL7: ICALL2 ADJUST-TEXT-WINDOW,PBOZ-BOTTOM
|
|
RTRUE
|
|
?CCL10: HLIGHT H-INVERSE
|
|
ICALL2 INVERSE-LINE,1
|
|
ICALL2 INVERSE-LINE,2
|
|
ICALL2 INVERSE-LINE,3
|
|
?CND8: SCREEN S-WINDOW
|
|
FONT 4
|
|
ICALL2 PICINF-PLUS-ONE,HERE-LOC
|
|
GET PICINF-TBL,0
|
|
ADD STACK,FONT-Y >?TMP1
|
|
GET PICINF-TBL,1
|
|
CURSET ?TMP1,STACK
|
|
GETB 0,30
|
|
EQUAL? STACK,DEC-20 /?CCL12
|
|
ZERO? BORDER-ON \?CND11
|
|
?CCL12: HLIGHT H-INVERSE
|
|
?CND11: ZERO? BORDER-ON /?CND15
|
|
COLOR 1,-1
|
|
?CND15: PRINTI "Moves:"
|
|
ICALL2 PICINF-PLUS-ONE,REGION-LOC
|
|
GET PICINF-TBL,0
|
|
ADD STACK,FONT-Y >?TMP1
|
|
GET PICINF-TBL,1 >?TMP2
|
|
MUL FONT-X,10
|
|
SUB ?TMP2,STACK
|
|
CURSET ?TMP1,STACK
|
|
PRINTI "Score:"
|
|
ZERO? BORDER-ON /?CND17
|
|
COLOR 1,1
|
|
?CND17: FONT 1
|
|
GETB 0,30
|
|
EQUAL? STACK,DEC-20 \?CND19
|
|
HLIGHT H-NORMAL
|
|
?CND19: SCREEN S-TEXT
|
|
RFALSE
|
|
|
|
|
|
.FUNCT SET-BORDER
|
|
EQUAL? HERE,GONDOLA \?CCL3
|
|
GRTR? DIRIGIBLE-COUNTER,0 \?CCL3
|
|
RETURN OUTSIDE-BORDER
|
|
?CCL3: EQUAL? HERE,FORMAL-GARDEN,COURTYARD \?CCL7
|
|
RETURN CASTLE-BORDER
|
|
?CCL7: EQUAL? HERE,BARBICAN,UPPER-BARBICAN,GARRISON \?CCL9
|
|
RETURN OUTSIDE-BORDER
|
|
?CCL9: FSET? HERE,OUTSIDEBIT \?CCL11
|
|
RETURN OUTSIDE-BORDER
|
|
?CCL11: FSET? HERE,UNDERGROUNDBIT /?CTR12
|
|
RETURN CASTLE-BORDER
|
|
?CTR12: RETURN UNDERGROUND-BORDER
|
|
|
|
|
|
.FUNCT PRINT-SPACES,CNT
|
|
?PRG1: DLESS? 'CNT,0 /TRUE
|
|
PRINTC 32
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT UPDATE-STATUS-LINE,?TMP2,?TMP1
|
|
SCREEN S-WINDOW
|
|
FONT 4
|
|
GETB 0,30
|
|
EQUAL? STACK,DEC-20 /?CCL2
|
|
ZERO? BORDER-ON \?CND1
|
|
?CCL2: HLIGHT H-INVERSE
|
|
?CND1: PICINF HERE-LOC,PICINF-TBL /?BOGUS5
|
|
?BOGUS5: GET PICINF-TBL,0 >?TMP1
|
|
GET PICINF-TBL,1
|
|
CURSET ?TMP1,STACK
|
|
ZERO? BORDER-ON /?CND6
|
|
COLOR 1,-1
|
|
?CND6: EQUAL? HERE,OLD-HERE /?CND8
|
|
SET 'OLD-HERE,HERE
|
|
ICALL2 PICINF-PLUS-ONE,HERE-LOC
|
|
GET PICINF-TBL,0 >?TMP1
|
|
GET PICINF-TBL,1
|
|
CURSET ?TMP1,STACK
|
|
ICALL2 PRINT-SPACES,24
|
|
GET PICINF-TBL,0 >?TMP1
|
|
GET PICINF-TBL,1
|
|
CURSET ?TMP1,STACK
|
|
EQUAL? HERE,PHIL-HALL \?CCL12
|
|
PRINTI "Philharmonic Hall"
|
|
JUMP ?CND8
|
|
?CCL12: EQUAL? HERE,G-U-MOUNTAIN \?CCL14
|
|
PRINTI "Great Undergd. Mountain"
|
|
JUMP ?CND8
|
|
?CCL14: EQUAL? HERE,G-U-SAVANNAH \?CCL16
|
|
PRINTI "Great Undergd. Savannah"
|
|
JUMP ?CND8
|
|
?CCL16: EQUAL? HERE,G-U-HIGHWAY \?CCL18
|
|
PRINTI "Great Undergd. Highway"
|
|
JUMP ?CND8
|
|
?CCL18: ICALL2 DPRINT,HERE
|
|
?CND8: GETP HERE,P?REGION
|
|
EQUAL? STACK,OLD-REGION /?CND19
|
|
GETP HERE,P?REGION >OLD-REGION
|
|
ICALL2 PICINF-PLUS-ONE,REGION-LOC
|
|
GET PICINF-TBL,0 >?TMP1
|
|
GET PICINF-TBL,1 >?TMP2
|
|
MUL FONT-X,23
|
|
SUB ?TMP2,STACK
|
|
CURSET ?TMP1,STACK
|
|
ICALL2 PRINT-SPACES,23
|
|
DIROUT D-TABLE-ON,SLINE
|
|
PUT SLINE,0,0
|
|
PRINT OLD-REGION
|
|
DIROUT D-TABLE-OFF
|
|
GET PICINF-TBL,0 >?TMP1
|
|
GET PICINF-TBL,1 >?TMP2
|
|
GET SLINE,0
|
|
MUL FONT-X,STACK
|
|
SUB ?TMP2,STACK
|
|
CURSET ?TMP1,STACK
|
|
PRINT OLD-REGION
|
|
?CND19: ICALL2 PICINF-PLUS-ONE,HERE-LOC
|
|
GET PICINF-TBL,0
|
|
ADD STACK,FONT-Y >?TMP1
|
|
GET PICINF-TBL,1 >?TMP2
|
|
MUL FONT-X,8
|
|
ADD ?TMP2,STACK
|
|
CURSET ?TMP1,STACK
|
|
ICALL2 PRINT-SPACES,5
|
|
GET PICINF-TBL,0
|
|
ADD STACK,FONT-Y >?TMP1
|
|
GET PICINF-TBL,1 >?TMP2
|
|
MUL FONT-X,8
|
|
ADD ?TMP2,STACK
|
|
CURSET ?TMP1,STACK
|
|
PRINTN MOVES
|
|
EQUAL? SCORE,SL-SCORE /?CND21
|
|
SET 'SL-SCORE,SCORE
|
|
ICALL2 PICINF-PLUS-ONE,REGION-LOC
|
|
GET PICINF-TBL,0
|
|
ADD STACK,FONT-Y >?TMP1
|
|
GET PICINF-TBL,1 >?TMP2
|
|
MUL FONT-X,4
|
|
SUB ?TMP2,STACK
|
|
CURSET ?TMP1,STACK
|
|
ICALL2 PRINT-SPACES,4
|
|
GET PICINF-TBL,0
|
|
ADD STACK,FONT-Y >?TMP1
|
|
GET PICINF-TBL,1 >?TMP2
|
|
GRTR? SCORE,999 /?CTR24
|
|
LESS? SCORE,-99 \?CCL25
|
|
?CTR24: PUSH 4
|
|
JUMP ?CND23
|
|
?CCL25: GRTR? SCORE,99 /?CTR28
|
|
LESS? SCORE,-9 \?CCL29
|
|
?CTR28: PUSH 3
|
|
JUMP ?CND23
|
|
?CCL29: GRTR? SCORE,9 /?CTR32
|
|
LESS? SCORE,0 \?CCL33
|
|
?CTR32: PUSH 2
|
|
JUMP ?CND23
|
|
?CCL33: PUSH 1
|
|
?CND23: MUL FONT-X,STACK
|
|
SUB ?TMP2,STACK
|
|
CURSET ?TMP1,STACK
|
|
PRINTN SCORE
|
|
?CND21: ZERO? BORDER-ON /?CND36
|
|
COLOR 1,1
|
|
?CND36: GETB 0,30
|
|
EQUAL? STACK,DEC-20 /?CCL39
|
|
ZERO? BORDER-ON \?CND38
|
|
?CCL39: HLIGHT H-NORMAL
|
|
?CND38: ZERO? COMPASS-CHANGED /?CND42
|
|
ZERO? BORDER-ON /?CND42
|
|
GETB 0,30
|
|
EQUAL? STACK,DEC-20 /?CND42
|
|
SET 'COMPASS-CHANGED,FALSE-VALUE
|
|
ICALL2 PICINF-PLUS-ONE,COMPASS-PIC-LOC
|
|
ICALL DRAW-COMPASS-ROSE,P?NORTH,N-HL,N-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?NE,NE-HL,NE-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?EAST,E-HL,E-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?SE,SE-HL,SE-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?SOUTH,S-HL,S-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?SW,SW-HL,SW-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?WEST,W-HL,W-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?NW,NW-HL,NW-UNHL
|
|
ICALL2 PICINF-PLUS-ONE,U-BOX-LOC
|
|
CALL SHOW-DIRECTION?,HERE,P?UP,FALSE-VALUE
|
|
ZERO? STACK /?CCL49
|
|
ZERO? LIT /?CCL49
|
|
SET '?TMP2,U-BOX
|
|
JUMP ?CND47
|
|
?CCL49: SET '?TMP2,BOX-COVER
|
|
?CND47: GET PICINF-TBL,0 >?TMP1
|
|
GET PICINF-TBL,1
|
|
DISPLAY ?TMP2,?TMP1,STACK
|
|
ICALL2 PICINF-PLUS-ONE,D-BOX-LOC
|
|
CALL SHOW-DIRECTION?,HERE,P?DOWN,FALSE-VALUE
|
|
ZERO? STACK /?CCL54
|
|
ZERO? LIT /?CCL54
|
|
SET '?TMP2,D-BOX
|
|
JUMP ?CND52
|
|
?CCL54: SET '?TMP2,BOX-COVER
|
|
?CND52: GET PICINF-TBL,0 >?TMP1
|
|
GET PICINF-TBL,1
|
|
DISPLAY ?TMP2,?TMP1,STACK
|
|
?CND42: FONT 1
|
|
SCREEN S-TEXT
|
|
RFALSE
|
|
|
|
|
|
.FUNCT DRAW-COMPASS-ROSE,DIR,HIGHLIGHT-PIC,UNHIGHLIGHT-PIC,?TMP1,?TMP2
|
|
CALL SHOW-DIRECTION?,HERE,DIR,FALSE-VALUE
|
|
ZERO? STACK /?CCL3
|
|
ZERO? LIT /?CCL3
|
|
SET '?TMP2,HIGHLIGHT-PIC
|
|
JUMP ?CND1
|
|
?CCL3: SET '?TMP2,UNHIGHLIGHT-PIC
|
|
?CND1: GET PICINF-TBL,0 >?TMP1
|
|
GET PICINF-TBL,1
|
|
DISPLAY ?TMP2,?TMP1,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SHOW-DIRECTION?,RM,DIR,MAPPING,PTS
|
|
ASSIGNED? 'MAPPING /?CND1
|
|
SET 'MAPPING,TRUE-VALUE
|
|
?CND1: IN? N-S-PASSAGE,RM \?CCL5
|
|
EQUAL? RM,CONSTRUCTION /?CCL5
|
|
EQUAL? N-S-PASSAGE-DIR,DIR /TRUE
|
|
?CCL5: IN? NW-SE-PASSAGE,RM \?CCL10
|
|
EQUAL? RM,CONSTRUCTION /?CCL10
|
|
EQUAL? NW-SE-PASSAGE-DIR,DIR /TRUE
|
|
?CCL10: IN? PROTAGONIST,YACHT \?CCL15
|
|
EQUAL? DIR,P?DOWN /TRUE
|
|
?CCL15: FSET? RM,DELTABIT \?CCL19
|
|
EQUAL? DIR,P?UP,P?DOWN /FALSE
|
|
EQUAL? RM,DELTA-1 \TRUE
|
|
EQUAL? DIR,P?SOUTH \TRUE
|
|
ZERO? MAPPING \FALSE
|
|
RTRUE
|
|
?CCL19: EQUAL? RM,CONSTRUCTION \?CCL29
|
|
EQUAL? DIR,P?UP,P?DOWN /FALSE
|
|
EQUAL? DIR,P?NORTH \?PRD36
|
|
INTBL? CONSTRUCTION-LOC,NORTH-EXITS,11 /TRUE
|
|
?PRD36: EQUAL? DIR,P?NE \?PRD39
|
|
INTBL? CONSTRUCTION-LOC,NE-EXITS,17 /TRUE
|
|
?PRD39: EQUAL? DIR,P?EAST \?PRD42
|
|
INTBL? CONSTRUCTION-LOC,EAST-EXITS,15 /TRUE
|
|
?PRD42: EQUAL? DIR,P?SE \?PRD45
|
|
INTBL? CONSTRUCTION-LOC,SE-EXITS,7 /TRUE
|
|
?PRD45: EQUAL? DIR,P?SOUTH \?PRD48
|
|
ADD CONSTRUCTION-LOC,8
|
|
INTBL? STACK,NORTH-EXITS,11 /TRUE
|
|
?PRD48: EQUAL? DIR,P?SW \?PRD51
|
|
ADD CONSTRUCTION-LOC,7
|
|
INTBL? STACK,NE-EXITS,17 /TRUE
|
|
?PRD51: EQUAL? DIR,P?WEST \?PRD54
|
|
SUB CONSTRUCTION-LOC,1
|
|
INTBL? STACK,EAST-EXITS,15 /TRUE
|
|
?PRD54: EQUAL? DIR,P?NW \?PRD57
|
|
SUB CONSTRUCTION-LOC,9
|
|
INTBL? STACK,SE-EXITS,7 /TRUE
|
|
?PRD57: EQUAL? DIR,P?EAST \?CCL34
|
|
EQUAL? CONSTRUCTION-LOC,47 /TRUE
|
|
?CCL34: IN? N-S-PASSAGE,RM \?CCL63
|
|
FSET? N-S-PASSAGE,TAKEBIT /?CCL63
|
|
EQUAL? DIR,P?NORTH,P?SOUTH \?CCL63
|
|
EQUAL? CONSTRUCTION-LOC,N-S-PASSAGE-LOC \?CCL69
|
|
EQUAL? N-S-PASSAGE-DIR,DIR /TRUE
|
|
?CCL69: EQUAL? CONSTRUCTION-LOC,N-S-PASSAGE-LOC /FALSE
|
|
EQUAL? N-S-PASSAGE-DIR,DIR /FALSE
|
|
RTRUE
|
|
?CCL63: IN? NW-SE-PASSAGE,RM \FALSE
|
|
FSET? NW-SE-PASSAGE,TAKEBIT /FALSE
|
|
EQUAL? DIR,P?NW,P?SE \FALSE
|
|
EQUAL? CONSTRUCTION-LOC,NW-SE-PASSAGE-LOC \?CCL83
|
|
EQUAL? NW-SE-PASSAGE-DIR,DIR /TRUE
|
|
?CCL83: EQUAL? CONSTRUCTION-LOC,NW-SE-PASSAGE-LOC /FALSE
|
|
EQUAL? NW-SE-PASSAGE-DIR,DIR /FALSE
|
|
RTRUE
|
|
?CCL29: EQUAL? RM,PLAIN \?CCL91
|
|
EQUAL? DIR,P?UP,P?DOWN /FALSE
|
|
EQUAL? DIR,P?NORTH,P?NE,P?NW \?PRD98
|
|
EQUAL? RANK,1 /FALSE
|
|
?PRD98: EQUAL? DIR,P?EAST,P?NE,P?SE \?PRD101
|
|
EQUAL? FILE,8 /FALSE
|
|
?PRD101: EQUAL? DIR,P?SOUTH,P?SE,P?SW \?PRD104
|
|
EQUAL? RANK,8 /FALSE
|
|
?PRD104: EQUAL? DIR,P?WEST,P?SW,P?NW \TRUE
|
|
EQUAL? FILE,1 /FALSE
|
|
RTRUE
|
|
?CCL91: EQUAL? RM,MIRROR-LAKE \?CCL110
|
|
EQUAL? DIR,P?UP,P?DOWN \TRUE
|
|
?CCL110: EQUAL? RM,WISHYFOO-TERRITORY \?CCL114
|
|
EQUAL? DIR,P?SW \?CCL114
|
|
ZERO? MAPPING /TRUE
|
|
?CCL114: EQUAL? RM,STREAM \?CCL119
|
|
EQUAL? DIR,P?WEST \?CCL119
|
|
IN? BRIDGE,STREAM \FALSE
|
|
?CCL119: GETPT RM,DIR >PTS
|
|
ZERO? PTS /FALSE
|
|
PTSIZE PTS
|
|
EQUAL? STACK,NEXIT /FALSE
|
|
EQUAL? RM,THRONE-ROOM \?CCL129
|
|
EQUAL? DIR,P?SOUTH \?CCL129
|
|
ZERO? SECRET-PASSAGE-OPEN /FALSE
|
|
?CCL129: EQUAL? RM,G-U-MOUNTAIN \?CCL134
|
|
EQUAL? DIR,P?NORTH \?CCL134
|
|
IN? BOULDER,RM /FALSE
|
|
?CCL134: EQUAL? RM,HOLLOW \?CCL139
|
|
EQUAL? DIR,P?SOUTH \?CCL139
|
|
ZERO? IRON-MINE-OPEN /FALSE
|
|
?CCL139: EQUAL? RM,PEG-ROOM \?CCL144
|
|
EQUAL? DIR,P?NORTH \?CCL144
|
|
ZERO? PEG-PASSAGE-OPENED /FALSE
|
|
?CCL144: EQUAL? RM,CRYPT \?CCL149
|
|
EQUAL? DIR,P?DOWN \?CCL149
|
|
FSET? HOLEY-SLAB,TOUCHBIT \FALSE
|
|
?CCL149: EQUAL? RM,RUINED-HALL \?CCL154
|
|
EQUAL? DIR,P?EAST \?CCL154
|
|
ZERO? SECRET-ROOM-REVEALED /FALSE
|
|
?CCL154: EQUAL? RM,MARSH \?CCL159
|
|
EQUAL? DIR,P?NORTH \?CCL159
|
|
ZERO? STEPPING-STONES-VISIBLE /FALSE
|
|
?CCL159: EQUAL? RM,WEIRD \?CCL164
|
|
EQUAL? DIR,P?NORTH,P?EAST,P?WEST \?CCL164
|
|
EQUAL? DIR,P?NORTH \?CCL169
|
|
EQUAL? TOWER-BEATEN,PYRAMID /TRUE
|
|
FSET? PYRAMID,TOUCHBIT \FALSE
|
|
ZERO? MAPPING \TRUE
|
|
RFALSE
|
|
?CCL169: EQUAL? DIR,P?EAST \?CCL178
|
|
EQUAL? TOWER-BEATEN,PYRAMID-R /TRUE
|
|
FSET? PYRAMID-R,TOUCHBIT \FALSE
|
|
ZERO? MAPPING \TRUE
|
|
RFALSE
|
|
?CCL178: EQUAL? TOWER-BEATEN,PYRAMID-L /TRUE
|
|
FSET? PYRAMID-L,TOUCHBIT \FALSE
|
|
ZERO? MAPPING \TRUE
|
|
RFALSE
|
|
?CCL164: ZERO? MAPPING /TRUE
|
|
EQUAL? RM,COURTROOM \?CCL196
|
|
EQUAL? DIR,P?SOUTH /FALSE
|
|
?CCL196: EQUAL? RM,TAX-OFFICE \?CCL200
|
|
EQUAL? DIR,P?SOUTH /FALSE
|
|
?CCL200: EQUAL? RM,JESTERS-QUARTERS \?CCL204
|
|
EQUAL? DIR,P?SOUTH /FALSE
|
|
?CCL204: EQUAL? RM,BASE-OF-MOUNTAIN \?CCL208
|
|
EQUAL? DIR,P?EAST /FALSE
|
|
?CCL208: EQUAL? RM,G-U-MOUNTAIN \?CCL212
|
|
EQUAL? DIR,P?WEST /FALSE
|
|
?CCL212: EQUAL? RM,FOOTHILLS \?CCL216
|
|
EQUAL? DIR,P?SOUTH /FALSE
|
|
?CCL216: EQUAL? RM,BASE-OF-MOUNTAINS \TRUE
|
|
EQUAL? DIR,P?NORTH /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT COMPASS-CLICK,PIC1,PIC2,TL-X,TL-Y,BR-X,BR-Y,CENTER-X,CENTER-Y,DIR
|
|
EQUAL? PIC1,COMPASS-PIC-LOC \?CND1
|
|
ICALL2 PICINF-PLUS-ONE,U-BOX-LOC
|
|
GET PICINF-TBL,1 >TL-X
|
|
GET PICINF-TBL,0 >TL-Y
|
|
PICINF U-BOX,PICINF-TBL /?BOGUS3
|
|
?BOGUS3: GET PICINF-TBL,1
|
|
ADD TL-X,STACK >BR-X
|
|
GET PICINF-TBL,0
|
|
ADD TL-Y,STACK >BR-Y
|
|
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
|
ZERO? STACK /?CND4
|
|
RETURN P?UP
|
|
?CND4: ICALL2 PICINF-PLUS-ONE,D-BOX-LOC
|
|
GET PICINF-TBL,1 >TL-X
|
|
GET PICINF-TBL,0 >TL-Y
|
|
PICINF D-BOX,PICINF-TBL /?BOGUS6
|
|
?BOGUS6: GET PICINF-TBL,1
|
|
ADD TL-X,STACK >BR-X
|
|
GET PICINF-TBL,0
|
|
ADD TL-Y,STACK >BR-Y
|
|
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
|
ZERO? STACK /?CND1
|
|
RETURN P?DOWN
|
|
?CND1: ICALL2 PICINF-PLUS-ONE,PIC1
|
|
GET PICINF-TBL,0 >TL-Y
|
|
GET PICINF-TBL,1 >TL-X
|
|
PICINF PIC2,PICINF-TBL /?BOGUS9
|
|
?BOGUS9: GET PICINF-TBL,0
|
|
ADD STACK,TL-Y >BR-Y
|
|
GET PICINF-TBL,1
|
|
ADD STACK,TL-X >BR-X
|
|
GET PICINF-TBL,1
|
|
DIV STACK,2
|
|
ADD TL-X,STACK >CENTER-X
|
|
GET PICINF-TBL,0
|
|
DIV STACK,2
|
|
ADD TL-Y,STACK >CENTER-Y
|
|
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
|
ZERO? STACK /?CCL12
|
|
GETB 0,30
|
|
EQUAL? STACK,MACINTOSH \?CCL15
|
|
CALL1 MAC-II?
|
|
ZERO? STACK /?CCL18
|
|
CALL MAC-II-CLICK,CENTER-X,CENTER-Y >DIR
|
|
JUMP ?CND13
|
|
?CCL18: CALL MAC-CLICK,CENTER-X,CENTER-Y,TL-X,TL-Y >DIR
|
|
?CND13: ZERO? DIR /?CCL21
|
|
RETURN DIR
|
|
?CCL15: SOUND 1
|
|
PRINTI "[Sorry, clicking on the compass rose is not yet implemented on this machine.]"
|
|
CRLF
|
|
RFALSE
|
|
?CCL21: SOUND 1
|
|
RFALSE
|
|
?CCL12: SOUND 1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT MAC-CLICK,CENTER-X,CENTER-Y,TL-X,TL-Y,X,Y,DIR,?TMP3,?TMP1,?TMP2
|
|
ADD TL-X,25 >?TMP2
|
|
ADD TL-X,35 >?TMP1
|
|
ADD TL-Y,20
|
|
CALL WITHIN?,?TMP2,TL-Y,?TMP1,STACK
|
|
ZERO? STACK /?CCL3
|
|
SET 'DIR,P?NORTH
|
|
RETURN DIR
|
|
?CCL3: ADD TL-X,25 >?TMP3
|
|
ADD TL-Y,36 >?TMP2
|
|
ADD TL-X,35 >?TMP1
|
|
ADD TL-Y,58
|
|
CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK
|
|
ZERO? STACK /?CCL5
|
|
SET 'DIR,P?SOUTH
|
|
RETURN DIR
|
|
?CCL5: ADD TL-X,38 >?TMP3
|
|
ADD TL-Y,23 >?TMP2
|
|
ADD TL-X,60 >?TMP1
|
|
ADD TL-Y,33
|
|
CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK
|
|
ZERO? STACK /?CCL7
|
|
SET 'DIR,P?EAST
|
|
RETURN DIR
|
|
?CCL7: ADD TL-Y,23 >?TMP2
|
|
ADD TL-X,22 >?TMP1
|
|
ADD TL-Y,33
|
|
CALL WITHIN?,TL-X,?TMP2,?TMP1,STACK
|
|
ZERO? STACK /?CCL9
|
|
SET 'DIR,P?WEST
|
|
RETURN DIR
|
|
?CCL9: ADD TL-X,37 >?TMP3
|
|
ADD TL-Y,10 >?TMP2
|
|
ADD TL-X,48 >?TMP1
|
|
ADD TL-Y,21
|
|
CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK
|
|
ZERO? STACK /?CCL11
|
|
SET 'DIR,P?NE
|
|
RETURN DIR
|
|
?CCL11: ADD TL-X,37 >?TMP3
|
|
ADD TL-Y,35 >?TMP2
|
|
ADD TL-X,48 >?TMP1
|
|
ADD TL-Y,46
|
|
CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK
|
|
ZERO? STACK /?CCL13
|
|
SET 'DIR,P?SE
|
|
RETURN DIR
|
|
?CCL13: ADD TL-X,12 >?TMP3
|
|
ADD TL-Y,35 >?TMP2
|
|
ADD TL-X,23 >?TMP1
|
|
ADD TL-Y,46
|
|
CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK
|
|
ZERO? STACK /?CCL15
|
|
SET 'DIR,P?SW
|
|
RETURN DIR
|
|
?CCL15: ADD TL-X,12 >?TMP3
|
|
ADD TL-Y,10 >?TMP2
|
|
ADD TL-X,23 >?TMP1
|
|
ADD TL-Y,21
|
|
CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK
|
|
ZERO? STACK /?CCL17
|
|
SET 'DIR,P?NW
|
|
RETURN DIR
|
|
?CCL17: ADD TL-X,23 >?TMP3
|
|
ADD TL-Y,21 >?TMP2
|
|
ADD TL-X,37 >?TMP1
|
|
ADD TL-Y,35
|
|
CALL WITHIN?,?TMP3,?TMP2,?TMP1,STACK
|
|
ZERO? STACK /FALSE
|
|
GRTR? MOUSE-LOC-X,CENTER-X \?CCL22
|
|
LESS? MOUSE-LOC-Y,CENTER-Y \?CCL22
|
|
SUB MOUSE-LOC-X,CENTER-X >X
|
|
SUB CENTER-Y,MOUSE-LOC-Y >Y
|
|
GRTR? X,Y \?CCL27
|
|
SET 'DIR,P?EAST
|
|
RETURN DIR
|
|
?CCL27: SET 'DIR,P?NORTH
|
|
RETURN DIR
|
|
?CCL22: GRTR? MOUSE-LOC-X,CENTER-X \?CCL29
|
|
SUB MOUSE-LOC-X,CENTER-X >X
|
|
SUB MOUSE-LOC-Y,CENTER-Y >Y
|
|
GRTR? X,Y \?CCL32
|
|
SET 'DIR,P?EAST
|
|
RETURN DIR
|
|
?CCL32: SET 'DIR,P?SOUTH
|
|
RETURN DIR
|
|
?CCL29: GRTR? MOUSE-LOC-Y,CENTER-Y \?CCL34
|
|
SUB CENTER-X,MOUSE-LOC-X >X
|
|
SUB MOUSE-LOC-Y,CENTER-Y >Y
|
|
GRTR? X,Y \?CCL37
|
|
SET 'DIR,P?WEST
|
|
RETURN DIR
|
|
?CCL37: SET 'DIR,P?SOUTH
|
|
RETURN DIR
|
|
?CCL34: SUB CENTER-X,MOUSE-LOC-X >X
|
|
SUB CENTER-Y,MOUSE-LOC-Y >Y
|
|
GRTR? X,Y \?CCL40
|
|
SET 'DIR,P?WEST
|
|
RETURN DIR
|
|
?CCL40: SET 'DIR,P?NORTH
|
|
RETURN DIR
|
|
|
|
|
|
.FUNCT MAC-II-CLICK,CENTER-X,CENTER-Y,X,Y,DIR,?TMP1
|
|
GRTR? MOUSE-LOC-X,CENTER-X \?CCL3
|
|
LESS? MOUSE-LOC-Y,CENTER-Y \?CCL3
|
|
SUB MOUSE-LOC-X,CENTER-X >X
|
|
SUB CENTER-Y,MOUSE-LOC-Y >Y
|
|
MUL X,TANGENT-VALUE >?TMP1
|
|
MUL Y,100
|
|
GRTR? ?TMP1,STACK \?CCL8
|
|
SET 'DIR,P?EAST
|
|
RETURN DIR
|
|
?CCL8: MUL Y,TANGENT-VALUE >?TMP1
|
|
MUL X,100
|
|
GRTR? ?TMP1,STACK \?CCL10
|
|
SET 'DIR,P?NORTH
|
|
RETURN DIR
|
|
?CCL10: SET 'DIR,P?NE
|
|
RETURN DIR
|
|
?CCL3: GRTR? MOUSE-LOC-X,CENTER-X \?CCL12
|
|
SUB MOUSE-LOC-X,CENTER-X >X
|
|
SUB MOUSE-LOC-Y,CENTER-Y >Y
|
|
MUL X,TANGENT-VALUE >?TMP1
|
|
MUL Y,100
|
|
GRTR? ?TMP1,STACK \?CCL15
|
|
SET 'DIR,P?EAST
|
|
RETURN DIR
|
|
?CCL15: MUL Y,TANGENT-VALUE >?TMP1
|
|
MUL X,100
|
|
GRTR? ?TMP1,STACK \?CCL17
|
|
SET 'DIR,P?SOUTH
|
|
RETURN DIR
|
|
?CCL17: SET 'DIR,P?SE
|
|
RETURN DIR
|
|
?CCL12: GRTR? MOUSE-LOC-Y,CENTER-Y \?CCL19
|
|
SUB CENTER-X,MOUSE-LOC-X >X
|
|
SUB MOUSE-LOC-Y,CENTER-Y >Y
|
|
MUL X,TANGENT-VALUE >?TMP1
|
|
MUL Y,100
|
|
GRTR? ?TMP1,STACK \?CCL22
|
|
SET 'DIR,P?WEST
|
|
RETURN DIR
|
|
?CCL22: MUL Y,TANGENT-VALUE >?TMP1
|
|
MUL X,100
|
|
GRTR? ?TMP1,STACK \?CCL24
|
|
SET 'DIR,P?SOUTH
|
|
RETURN DIR
|
|
?CCL24: SET 'DIR,P?SW
|
|
RETURN DIR
|
|
?CCL19: SUB CENTER-X,MOUSE-LOC-X >X
|
|
SUB CENTER-Y,MOUSE-LOC-Y >Y
|
|
MUL X,TANGENT-VALUE >?TMP1
|
|
MUL Y,100
|
|
GRTR? ?TMP1,STACK \?CCL27
|
|
SET 'DIR,P?WEST
|
|
RETURN DIR
|
|
?CCL27: MUL Y,TANGENT-VALUE >?TMP1
|
|
MUL X,100
|
|
GRTR? ?TMP1,STACK \?CCL29
|
|
SET 'DIR,P?NORTH
|
|
RETURN DIR
|
|
?CCL29: SET 'DIR,P?NW
|
|
RETURN DIR
|
|
|
|
|
|
.FUNCT SAY-HERE,X
|
|
ICALL2 DPRINT,HERE
|
|
LOC PROTAGONIST >X
|
|
IN? PROTAGONIST,CARD-TABLE \?CCL3
|
|
PRINTI ", at"
|
|
ICALL2 TPRINT,X
|
|
RTRUE
|
|
?CCL3: EQUAL? X,HERE /?CCL5
|
|
FSET? X,VEHBIT \?CCL5
|
|
PRINTI ", "
|
|
FSET? X,INBIT \?CCL10
|
|
PRINTC 105
|
|
JUMP ?CND8
|
|
?CCL10: PRINTC 111
|
|
?CND8: PRINTC 110
|
|
ICALL2 TPRINT,X
|
|
RTRUE
|
|
?CCL5: ZERO? UNDER-TABLE /TRUE
|
|
PRINTI ", under the table"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CENTER-1,STR,BOLD,Y,X,LEN
|
|
CURGET SLINE
|
|
GET SLINE,0 >Y
|
|
WINGET S-TEXT,WWIDE
|
|
DIV STACK,2 >X
|
|
ZERO? BOLD /?CND1
|
|
HLIGHT H-BOLD
|
|
?CND1: DIROUT D-TABLE-ON,SLINE,-80
|
|
PRINT STR
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >LEN
|
|
DIV LEN,2
|
|
SUB X,STACK
|
|
CURSET Y,STACK
|
|
PRINT STR
|
|
HLIGHT H-NORMAL
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CENTER-2,STR1,STR2,Y,X1,X2,LEN
|
|
CURGET SLINE
|
|
GET SLINE,0 >Y
|
|
WINGET S-TEXT,WWIDE
|
|
DIV STACK,3 >X1
|
|
MUL X1,2 >X2
|
|
DIROUT D-TABLE-ON,SLINE,-80
|
|
PRINT STR1
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >LEN
|
|
DIV LEN,2
|
|
SUB X1,STACK
|
|
CURSET Y,STACK
|
|
PRINT STR1
|
|
DIROUT D-TABLE-ON,SLINE,-80
|
|
PRINT STR2
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >LEN
|
|
DIV LEN,2
|
|
SUB X2,STACK
|
|
CURSET Y,STACK
|
|
PRINT STR2
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CENTER-3,STR1,STR2,STR3,Y,X1,X2,X3,LEN
|
|
CURGET SLINE
|
|
GET SLINE,0 >Y
|
|
WINGET S-TEXT,WWIDE
|
|
DIV STACK,4 >X1
|
|
MUL X1,2 >X2
|
|
MUL X1,3 >X3
|
|
DIROUT D-TABLE-ON,SLINE,-80
|
|
PRINT STR1
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >LEN
|
|
DIV LEN,2
|
|
SUB X1,STACK
|
|
CURSET Y,STACK
|
|
PRINT STR1
|
|
DIROUT D-TABLE-ON,SLINE,-80
|
|
PRINT STR2
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >LEN
|
|
DIV LEN,2
|
|
SUB X2,STACK
|
|
CURSET Y,STACK
|
|
PRINT STR2
|
|
DIROUT D-TABLE-ON,SLINE,-80
|
|
PRINT STR3
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >LEN
|
|
DIV LEN,2
|
|
SUB X3,STACK
|
|
CURSET Y,STACK
|
|
PRINT STR3
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TOUCHING?,THING
|
|
EQUAL? PRSO,THING \?CCL3
|
|
EQUAL? PRSA,V?BITE,V?CLEAN,V?CLIMB /TRUE
|
|
EQUAL? PRSA,V?CLIMB-DOWN,V?CLIMB-ON,V?CLIMB-UP /TRUE
|
|
EQUAL? PRSA,V?CLOSE,V?CUT,V?EAT /TRUE
|
|
EQUAL? PRSA,V?ENTER,V?KICK,V?KILL /TRUE
|
|
EQUAL? PRSA,V?KISS,V?KNOCK,V?LOCK /TRUE
|
|
EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-INSIDE,V?LOOK-UNDER /TRUE
|
|
EQUAL? PRSA,V?MOVE,V?MUNG,V?OFF /TRUE
|
|
EQUAL? PRSA,V?ON,V?OPEN,V?PUSH /TRUE
|
|
EQUAL? PRSA,V?RAISE,V?REACH-IN,V?SEARCH /TRUE
|
|
EQUAL? PRSA,V?SET,V?SHAKE,V?STAND-ON /TRUE
|
|
EQUAL? PRSA,V?SWIM,V?TASTE,V?TAKE /TRUE
|
|
EQUAL? PRSA,V?THROW,V?TIE,V?TOUCH /TRUE
|
|
EQUAL? PRSA,V?UNLOCK /TRUE
|
|
?CCL3: EQUAL? PRSI,THING \FALSE
|
|
EQUAL? PRSA,V?PUT-ON,V?PUT,V?GIVE /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT HANDLE,OBJ
|
|
EQUAL? OBJ,PRSO \?PRD5
|
|
CALL2 EVERYWHERE-VERB?,1
|
|
ZERO? STACK \FALSE
|
|
?PRD5: EQUAL? OBJ,PRSI \TRUE
|
|
CALL2 EVERYWHERE-VERB?,2
|
|
ZERO? STACK /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT CANT-SEE,OBJ,STRING,WRD
|
|
CALL2 GET-NP,OBJ >WRD
|
|
ZERO? WRD /?CND1
|
|
GET WRD,2 >WRD
|
|
?CND1: SET 'P-WON,FALSE-VALUE
|
|
PRINTC 91
|
|
PRINT YOU-CANT
|
|
PRINTI "see"
|
|
ZERO? OBJ /?CCL4
|
|
ZERO? WRD /?CND3
|
|
CALL2 CAPITAL-NOUN?,WRD
|
|
ZERO? STACK \?CND3
|
|
?CCL4: PRINTI " any"
|
|
?CND3: ZERO? OBJ \?CCL11
|
|
PRINTC 32
|
|
PRINT STRING
|
|
JUMP ?CND9
|
|
?CCL11: EQUAL? OBJ,PRSI \?CCL13
|
|
ICALL1 PRSI-PRINT
|
|
JUMP ?CND9
|
|
?CCL13: ICALL1 PRSO-PRINT
|
|
?CND9: PRINTI " here.]"
|
|
CRLF
|
|
CALL1 STOP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRSO-PRINT,PTR
|
|
CALL NOUN-USED?,PRSO,W?IT
|
|
ZERO? STACK /?CCL3
|
|
PRINTC 32
|
|
CALL2 DPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: PRINTC 32
|
|
CALL2 GET-NP,PRSO
|
|
CALL2 NP-PRINT,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRSI-PRINT,PTR
|
|
CALL NOUN-USED?,PRSI,W?IT
|
|
ZERO? STACK /?CCL3
|
|
PRINTC 32
|
|
CALL2 DPRINT,PRSI
|
|
RSTACK
|
|
?CCL3: PRINTC 32
|
|
CALL2 GET-NP,PRSI
|
|
CALL2 NP-PRINT,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CANT-VERB-A-PRSO,STRING
|
|
PRINT YOU-CANT
|
|
PRINT STRING
|
|
ICALL2 APRINT,PRSO
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT TELL-HIT-HEAD
|
|
PRINTI "You hit your head against"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " as you attempt this feat."
|
|
|
|
|
|
.FUNCT OPEN-CLOSED,OBJ
|
|
FSET? OBJ,OPENBIT \?CCL3
|
|
PRINTI "open"
|
|
RTRUE
|
|
?CCL3: PRINTI "closed"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CANT-REACH,OBJ
|
|
ZERO? HAND-IN-WALDO /?CCL3
|
|
EQUAL? OBJ,WALDO /?CCL3
|
|
IN? OBJ,HERE \?CCL3
|
|
PRINTR "The waldo doesn't seem capable of that."
|
|
?CCL3: ZERO? UNDER-TABLE /?CCL8
|
|
PRINT YOULL-HAVE-TO
|
|
PRINTR "get out from under the table in order to reach it."
|
|
?CCL8: PRINT YOU-CANT
|
|
PRINTI "reach"
|
|
ICALL2 TPRINT,OBJ
|
|
IN? PROTAGONIST,HERE /?CND9
|
|
PRINTI " from"
|
|
LOC PROTAGONIST
|
|
ICALL2 TPRINT,STACK
|
|
?CND9: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DO-FIRST,STRING,OBJ
|
|
PRINT YOULL-HAVE-TO
|
|
PRINT STRING
|
|
ZERO? OBJ /?CND1
|
|
ICALL2 TPRINT,OBJ
|
|
?CND1: PRINTR " first."
|
|
|
|
|
|
.FUNCT NOT-IN
|
|
PRINTI "But"
|
|
ICALL2 IS-ARE-PRINT,PRSO
|
|
PRINTI "not "
|
|
FSET? PRSI,ACTORBIT \?CCL3
|
|
PRINTI "being held by"
|
|
JUMP ?CND1
|
|
?CCL3: FSET? PRSI,SURFACEBIT \?CCL5
|
|
PRINTI "on"
|
|
JUMP ?CND1
|
|
?CCL5: PRINTI "in"
|
|
?CND1: CALL2 TRPRINT,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PART-OF
|
|
PRINT YOU-CANT
|
|
PRINTI "--"
|
|
ICALL2 IS-ARE-PRINT,PRSO
|
|
PRINTI "an integral part of"
|
|
LOC PRSO
|
|
CALL2 TRPRINT,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT RECOGNIZE
|
|
SET 'P-WON,FALSE-VALUE
|
|
PRINTR "[Sorry, but I don't understand. Please rephrase that or try something else.]"
|
|
|
|
|
|
.FUNCT PRONOUN
|
|
EQUAL? PRSO,ME \?CCL3
|
|
PRINTI "You"
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,WHITE-CASTLE \?CCL5
|
|
CALL NOUN-USED?,WHITE-CASTLE,W?MAN
|
|
ZERO? STACK \?CCL5
|
|
PRINTI "It"
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,PLURALBIT \?CCL9
|
|
PRINTI "They"
|
|
RTRUE
|
|
?CCL9: FSET? PRSO,FEMALEBIT \?CCL11
|
|
PRINTI "She"
|
|
RTRUE
|
|
?CCL11: FSET? PRSO,ACTORBIT \?CCL13
|
|
PRINTI "He"
|
|
RTRUE
|
|
?CCL13: PRINTI "It"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HIT-ANY-KEY,STRING
|
|
PRINTI "[Hit any key to "
|
|
ZERO? STRING /?CCL3
|
|
PRINTI "begin playing "
|
|
PRINT STRING
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI "continue"
|
|
?CND1: PRINTI ".]"
|
|
DIROUT D-SCREEN-OFF
|
|
CRLF
|
|
DIROUT D-SCREEN-ON
|
|
ZERO? DEMO-VERSION? /?CCL6
|
|
ICALL2 INPUT-DEMO,1
|
|
JUMP ?CND4
|
|
?CCL6: INPUT 1
|
|
?CND4: CALL1 MOUSE-INPUT?
|
|
RSTACK
|
|
|
|
|
|
.FUNCT LOCKED-UNLOCKED,OBJ,UN
|
|
PRINTI "A faint click indicates that"
|
|
ICALL2 TPRINT,OBJ
|
|
PRINTI " is now "
|
|
ZERO? UN /?CND1
|
|
PRINTI "un"
|
|
?CND1: PRINTR "locked."
|
|
|
|
|
|
.FUNCT CANT-TURN,STRING
|
|
PRINT YOU-CANT
|
|
PRINTI "turn that o"
|
|
PRINT STRING
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT YOU-MUST-TELL-ME
|
|
PRINTI "You must tell me how to do that to"
|
|
CALL2 ARPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT GRUE-PIT-WARNING
|
|
IN? PROTAGONIST,DB /?CND1
|
|
ZERO? TIME-STOPPED \?CND1
|
|
EQUAL? HERE,PIT-BOMB-LOC /?CND1
|
|
PRINTI " You are likely to "
|
|
FSET? LANTERN,TRYTAKEBIT \?CCL8
|
|
PRINTR "fall into a bottomless pit."
|
|
?CCL8: PRINTR "be eaten by a grue."
|
|
?CND1: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DARK-DEATH
|
|
PRINTI "Oh, no! You have "
|
|
FSET? LANTERN,TRYTAKEBIT \?CCL3
|
|
PRINTI "fallen into a bottomless pit"
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI "walked into the slavering fangs of a lurking grue"
|
|
?CND1: CALL2 JIGS-UP,STR?135
|
|
RSTACK
|
|
|
|
.ENDSEG
|
|
|
|
.ENDI
|