beyondzork/verbs.zap

6086 lines
109 KiB
Plaintext

.FUNCT GOTO,WHERE,CR,WHO,X,L,OLIT
SET 'OLIT,LIT?
SET 'WHO,WINNER
LOC WINNER >L
EQUAL? L,SADDLE \?CCL3
IN? L,DACT \?CCL3
SET 'WHO,DACT
JUMP ?CND1
?CCL3: EQUAL? L,HERE /?CND1
FSET? L,VEHICLE \?CND1
CALL PERFORM,V?EXIT,L
EQUAL? STACK,M-FATAL \?CND9
SET 'P-WALK-DIR,FALSE-VALUE
RTRUE
?CND9: SET 'P-WALK-DIR,FALSE-VALUE
SET 'OLD-HERE,FALSE-VALUE
INC 'CR
?CND1: GETP HERE,P?ACTION
CALL STACK,M-EXIT >X
EQUAL? X,M-FATAL \?CCL13
SET 'P-WALK-DIR,FALSE-VALUE
RTRUE
?CCL13: ZERO? X /?CND11
ZERO? CR /?CND15
PRINT TAB
?CND15: INC 'CR
?CND11: EQUAL? WHO,WINNER \?CND17
IN? DACT,HERE \?CND17
FSET? DACT,LIVING \?CND17
FSET? DACT,MUNGED /?CND17
FSET? DACT,SLEEPING /?CND17
REMOVE DACT
EQUAL? WHERE,APLANE,DEATH /?CND17
ZERO? CR /?CND26
PRINT TAB
?CND26: INC 'CR
PRINTI "A shadow passes over "
PRINTD HEAD
PRINTI " as you leave."
CRLF
?CND17: ZERO? CR /?CND28
ZERO? VERBOSITY /?CND28
CRLF
?CND28: SET 'HERE,WHERE
MOVE WHO,WHERE
CALL1 IS-LIT? >LIT?
ZERO? OLIT \?CND32
ZERO? LIT? \?CND32
ZERO? CR /?CND36
PRINT TAB
?CND36: PRINT CYOU
CALL2 PICK-NEXT,DARK-WALKS
PRINT STACK
CALL1 GRUE-ROOM?
ZERO? STACK \?CND38
RANDOM 100
LESS? 50,STACK /?CND38
PRINTI ", straight into the jaws of a deadly presence lurking in the darkness"
ICALL1 JIGS-UP
RTRUE
?CND38: PRINT PERIOD
ZERO? VERBOSITY /?CND32
CRLF
?CND32: GETP HERE,P?ACTION
ICALL STACK,M-ENTERING
EQUAL? HERE,WHERE \TRUE
ZERO? LIT? \?CND45
ICALL1 MARK-DIR
?CND45: SET 'LAST-PSEUDO-LOC,FALSE-VALUE
FSET PSEUDO-OBJECT,NOARTICLE
FCLEAR PSEUDO-OBJECT,VOWEL
FCLEAR PSEUDO-OBJECT,TRYTAKE
SET 'LAST-MONSTER,FALSE-VALUE
SET 'LAST-MONSTER-DIR,FALSE-VALUE
SET 'P-IT-OBJECT,NOT-HERE-OBJECT
SET 'P-THEM-OBJECT,NOT-HERE-OBJECT
SET 'P-HIM-OBJECT,NOT-HERE-OBJECT
SET 'P-HER-OBJECT,NOT-HERE-OBJECT
ICALL2 V-LOOK,FALSE-VALUE
GETP HERE,P?ACTION
ICALL STACK,M-ENTERED
RTRUE
.FUNCT MARK-DIR,DIR,TBL,WRD,TYPE,LEN
ASSIGNED? 'DIR /?CND1
SET 'DIR,P-WALK-DIR
?CND1: LESS? DIR,P?DOWN /FALSE
SUB DIR,P?NORTH
SUB 0,STACK
GETB XPDIR-LIST,STACK
GETP HERE,STACK >TBL
ZERO? TBL /FALSE
GET TBL,XTYPE >WRD
BTST WRD,MARKBIT /TRUE
BAND WRD,65280 >TYPE
BAND WRD,127 >LEN
EQUAL? TYPE,CONNECT,SCONNECT,X-EXIT /?CCL10
EQUAL? TYPE,FCONNECT \?PRD13
ZERO? LEN \?CCL10
?PRD13: EQUAL? TYPE,DCONNECT \FALSE
GET TBL,XDATA
FSET? STACK,OPENED \FALSE
?CCL10: ADD WRD,MARKBIT
PUT TBL,XTYPE,STACK
RTRUE
.FUNCT DO-WALK,DIR1,DIR2,DIR3,X
SET 'P-WALK-DIR,DIR1
CALL PERFORM,V?WALK,DIR1 >X
EQUAL? X,M-FATAL \?CCL3
RETURN 2
?CCL3: ZERO? DIR2 /?CND1
CRLF
SET 'P-WALK-DIR,DIR2
CALL PERFORM,V?WALK,DIR2 >X
EQUAL? X,M-FATAL \?CCL9
RETURN 2
?CCL9: ZERO? DIR3 /?CND1
CRLF
SET 'P-WALK-DIR,DIR3
CALL PERFORM,V?WALK,DIR3 >X
?CND1: RETURN X
.FUNCT V-WALK,TBL,TYPE,DATA
ZERO? P-WALK-DIR \?CCL3
ZERO? PRSO /?CND4
PRINT STR?517
PRINTI "WALK TO "
ICALL1 THE-PRINT
PRINTC 46
PRINT BRACKET
ICALL PERFORM,V?WALK-TO,PRSO
RTRUE
?CND4: ICALL1 V-WALK-AROUND
RTRUE
?CCL3: IN? PLAYER,SADDLE \?CCL7
IN? SADDLE,DACT \?CCL7
CALL1 NEXT-SKY
RSTACK
?CCL7: EQUAL? HERE,APLANE \?CND1
CALL1 NEXT-APLANE
RSTACK
?CND1: GETP HERE,PRSO >TBL
ZERO? TBL \?CND11
ICALL1 NO-EXIT-THAT-WAY
RETURN 2
?CND11: GET TBL,XTYPE
BAND STACK,65280 >TYPE
EQUAL? TYPE,NO-EXIT,SHADOW-EXIT \?CND15
ICALL1 NO-EXIT-THAT-WAY
RETURN 2
?CND15: EQUAL? LAST-MONSTER,FALSE-VALUE,DORN,MAMA /?CND19
IN? LAST-MONSTER,HERE \?CND19
IN? WINNER,HERE \?CND19
FSET? LAST-MONSTER,LIVING \?CND19
FSET? LAST-MONSTER,SLEEPING /?CND19
EQUAL? LAST-MONSTER-DIR,P-WALK-DIR \?CND19
ZERO? LIT? /?CND19
ICALL2 CTHE-PRINT,LAST-MONSTER
PRINTI " block"
ZERO? LIT? /?CCL29
FSET? LAST-MONSTER,PLURAL /?CND28
?CCL29: PRINTC 115
?CND28: PRINTR " your path!"
?CND19: GET TBL,XROOM >DATA
EQUAL? TYPE,CONNECT,X-EXIT \?CCL34
ICALL2 GOTO,DATA
RTRUE
?CCL34: EQUAL? TYPE,SORRY-EXIT \?CCL36
PRINT DATA
CRLF
RETURN 2
?CCL36: EQUAL? TYPE,SCONNECT \?CCL40
GET TBL,XDATA
PRINT STACK
CRLF
ZERO? VERBOSITY /?CND41
CRLF
?CND41: ICALL2 GOTO,DATA
RTRUE
?CCL40: EQUAL? TYPE,FCONNECT \?CCL44
CALL DATA >DATA
ZERO? DATA /?PRG47
ICALL2 GOTO,DATA
RTRUE
?PRG47: RETURN 2
?CCL44: EQUAL? TYPE,DCONNECT \?PRG54
GET TBL,XDATA >TYPE
FSET? TYPE,OPENED \?CND50
ICALL2 GOTO,DATA
RTRUE
?CND50: ICALL2 ITS-CLOSED,TYPE
RETURN 2
?PRG54: RETURN 2
.FUNCT NO-EXIT-THAT-WAY,STR
GETP HERE,P?EXIT-STR >STR
EQUAL? P-WALK-DIR,FALSE-VALUE,P?UP,P?DOWN /?CND1
EQUAL? P-WALK-DIR,P?IN,P?OUT /?CND1
ZERO? STR /?CND1
PRINT STR
CRLF
RTRUE
?CND1: PRINTR "There's no exit that way."
.FUNCT NEXT-OVER,CNT,DIR,BITS,TBL,XTBL,TYPE,DATA
GET FLY-TABLES,ABOVE >XTBL
GETB XTBL,0 >BITS
SET 'DIR,I-NORTH
?PRG1: GETB PDIR-LIST,DIR
GETP HERE,STACK >TBL
SET 'DATA,0
GETB DBIT-LIST,DIR
BTST BITS,STACK \?CCL5
SET 'TYPE,649
INC 'CNT
GETB XTBL,CNT >DATA
EQUAL? HERE,IN-SKY \?CCL8
EQUAL? DATA,OPLAIN \?CCL8
SET 'TYPE,1161
JUMP ?CND3
?CCL8: EQUAL? HERE,APLANE \?CND3
EQUAL? DATA,OCAVES \?CND3
SET 'TYPE,NO-EXIT
SET 'DATA,0
JUMP ?CND3
?CCL5: EQUAL? HERE,IN-SKY \?CCL15
SET 'TYPE,1161
JUMP ?CND3
?CCL15: SET 'TYPE,NO-EXIT
?CND3: PUT TBL,XTYPE,TYPE
PUT TBL,XDATA,DATA
IGRTR? 'DIR,I-NW \?PRG1
RFALSE
.FUNCT NEXT-SKY,DIR,IDIR,D1,D2,D3,TBL,DATA,X
ZERO? DACT-SLEEP \?CCL2
FSET? DACT,SLEEPING /?CCL2
FSET? DACT,MUNGED /?CCL2
FSET? DACT,LIVING /?CND1
?CCL2: ICALL2 CTHE-PRINT,DACT
PRINTI " is in no condition to move around."
CRLF
RETURN 2
?CND1: SET 'DIR,P-WALK-DIR
SET 'P-WALK-DIR,FALSE-VALUE
EQUAL? DIR,P?UP \?CCL11
EQUAL? HERE,IN-SKY \?CND12
ICALL2 CTHE-PRINT,DACT
PRINTI " puffs and strains, but cannot lift you any higher."
CRLF
RETURN 2
?CND12: GETP HERE,P?FNUM >X
ZERO? X \?CND16
PRINT CANT
PRINTI "fly here."
CRLF
RETURN 2
?CND16: ICALL2 CTHE-PRINT,DACT
EQUAL? HERE,IN-GARDEN \?CND20
ZERO? PTIMER /?CND20
PRINTR " cocks his head, hesitating."
?CND20: PRINTI " spreads his leathery wings and "
IN? PARASOL,PLAYER \?CND24
FSET? PARASOL,OPENED \?CND24
PRINTI "tries to take off. But your open "
PRINTD PARASOL
PRINTR " seems to be dragging him down."
?CND24: SET 'ABOVE,X
PUTP IN-SKY,P?FNUM,ABOVE
PRINTI "rises into the sky."
CRLF
ZERO? VERBOSITY /?CND28
CRLF
?CND28: ICALL2 GOTO,IN-SKY
ICALL1 CHECK-BREEZE
RTRUE
?CCL11: EQUAL? DIR,P?DOWN \?CCL31
EQUAL? HERE,IN-SKY /?CND32
ICALL2 CTHE-PRINT,DACT
PRINTI " is already on "
ICALL2 THE-PRINT,GROUND
PRINT PERIOD
RETURN 2
?CND32: CALL1 DOWN-TO? >X
ZERO? X \?CND36
EQUAL? ABOVE,OTHRIFF \?PRG40
ICALL2 CTHE-PRINT,DACT
PRINTI " tries his best to land, but "
ICALL2 THE-PRINT,GROUND
PRINTI " below is completely choked with "
PRINTD XTREES
PRINT PERIOD
?PRG40: RETURN 2
?CND36: ICALL2 CTHE-PRINT,DACT
PRINTI " glides earthward."
CRLF
ZERO? VERBOSITY /?CND42
CRLF
?CND42: ICALL2 GOTO,X
RTRUE
?CCL31: EQUAL? DIR,FALSE-VALUE,P?IN,P?OUT \?CCL45
ICALL1 PUZZLED-DACT
RETURN 2
?CCL45: EQUAL? HERE,IN-SKY /?CND9
SET 'P-WALK-DIR,FALSE-VALUE
PRINTI "It's hard enough for a "
PRINTD DACT
PRINTI " to walk, even when there's not an adventurer riding his back."
CRLF
RETURN 2
?CND9: GETP HERE,DIR >TBL
GET TBL,XDATA >DATA
GET TBL,XTYPE
EQUAL? STACK,1161 \?CND51
PRINTI "The sky is filled with impenetrable "
EQUAL? DATA,OPLAIN \?CND53
PRINTI "funnel "
?CND53: PRINTI "clouds in that "
PRINTD INTDIR
PRINT PERIOD
RETURN 2
?CND51: ADD WINDIR,4 >D1
GRTR? D1,I-NW \?CND57
SUB D1,8 >D1
?CND57: ADD D1,1 >D2
GRTR? D2,I-NW \?CND59
SET 'D2,I-NORTH
?CND59: SUB D1,1 >D3
LESS? D3,I-NORTH \?CND61
SET 'D3,I-NW
?CND61: SUB DIR,P?NORTH
SUB 0,STACK >IDIR
EQUAL? IDIR,D1,D2,D3 \?CND63
FCLEAR BREEZE,SEEN
ICALL2 CTHE-PRINT,DACT
PRINTI " banks smoothly to the "
GET DIR-NAMES,IDIR
PRINTB STACK
PRINT PERIOD
ICALL2 FLYOVER,DATA
RTRUE
?CND63: FSET BREEZE,SEEN
SUB WINDIR,2 >D1
LESS? D1,I-NORTH \?CND65
ADD D1,8 >D1
?CND65: EQUAL? IDIR,D1 \?CND67
SUB WINDIR,3 >D2
LESS? D2,I-NORTH \?CND69
ADD D2,8 >D2
?CND69: CALL DO-CROSSWIND,IDIR,D2
RSTACK
?CND67: ADD WINDIR,2 >D1
GRTR? D1,I-NW \?CND71
SUB D1,8 >D1
?CND71: EQUAL? IDIR,D1 \?CND73
ADD WINDIR,3 >D2
GRTR? D2,I-NW \?CND75
SUB D2,8 >D2
?CND75: CALL DO-CROSSWIND,IDIR,D2
RSTACK
?CND73: ICALL2 CTHE-PRINT,DACT
PRINTI " does his best to fly into the wind, but fails."
CRLF
RETURN 2
.FUNCT DO-CROSSWIND,IDIR,D2,TBL,DATA
GETB PDIR-LIST,D2
GETP IN-SKY,STACK >TBL
GET TBL,XDATA >DATA
EQUAL? DATA,0,OPLAIN,OCAVES /?CCL2
GET TBL,XTYPE
EQUAL? STACK,1161 /?CCL2
RANDOM 100
LESS? 50,STACK /?CND1
?CCL2: PRINTI "A strong crosswind prevents "
ICALL2 THE-PRINT,DACT
PRINTI " from flying that way."
CRLF
RETURN 2
?CND1: ICALL2 CTHE-PRINT,DACT
PRINTI " banks to the "
GET DIR-NAMES,IDIR
PRINTB STACK
PRINTI ", but a strong crosswind blows him off course."
CRLF
ICALL2 FLYOVER,DATA
RTRUE
.FUNCT FLYOVER,DATA
SET 'ABOVE,DATA
PUTP IN-SKY,P?FNUM,ABOVE
ICALL1 NEXT-OVER
ICALL2 RELOOK,TRUE-VALUE
ICALL1 CHECK-BREEZE
RTRUE
.FUNCT CHECK-BREEZE
EQUAL? ABOVE,OTHRIFF \?PRD4
EQUAL? WINDIR,I-EAST,I-SE,I-SOUTH /?CCL2
?PRD4: EQUAL? ABOVE,OXROADS \FALSE
EQUAL? WINDIR,I-NORTH,I-NE,I-EAST \FALSE
?CCL2: CALL1 NEXT-WINDIR? >WINDIR
FSET BREEZE,SEEN
PRINT TAB
CALL2 PICK-NEXT,WIND-ALERTS
PRINT STACK
PRINT PERIOD
RFALSE
.FUNCT NEXT-APLANE,DIR,TBL,DATA,NEW,X
SET 'DIR,P-WALK-DIR
SET 'P-WALK-DIR,FALSE-VALUE
LOC PLAYER >X
EQUAL? DIR,P?UP,P?DOWN /?CTR2
EQUAL? DIR,P?IN,P?OUT \?CCL3
?CTR2: PRINTI "Such "
PRINTD INTDIR
PRINTI "s have no meaning here."
CRLF
RETURN 2
?CCL3: EQUAL? X,APLANE /?CND1
FSET? X,VEHICLE \?CND1
CALL PERFORM,V?EXIT,X
EQUAL? STACK,M-FATAL \?CND10
RETURN 2
?CND10: PRINT TAB
?CND1: GETP HERE,DIR >TBL
GET TBL,XTYPE >DATA
EQUAL? DATA,NO-EXIT \?CCL16
PRINTI "The local geometry does not extend in that "
PRINTD INTDIR
PRINT PERIOD
RETURN 2
?CCL16: EQUAL? ABOVE,OPLAIN \?CND14
ZERO? IMPSAY /?CND20
ICALL1 PERMISSION
RETURN 2
?CND20: ICALL1 EXIT-IMPS
?CND14: GET TBL,XDATA >NEW
EQUAL? NEW,OPLAIN \?CND24
FSET? SHAPE,LIVING \?CCL28
IN? SHAPE,APLANE /?CND29
BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
MOVE SHAPE,APLANE
SET 'LAST-MONSTER,SHAPE
SET 'LAST-MONSTER-DIR,FALSE-VALUE
SET 'P-IT-OBJECT,SHAPE
PRINTI "The space before you flexes in on itself, twists sideways and reopens into "
ICALL2 PRINTA,SHAPE
PRINTI ", stretched across your path like the skin of a drum."
CRLF
RETURN 2
?CND29: ICALL2 CTHE-PRINT,SHAPE
PRINTI " stretches itself tighter across your path."
CRLF
RETURN 2
?CCL28: ZERO? IMPSAY \?CND24
ICALL1 KERBLAM
PRINTI "A bolt of "
PRINTB W?LIGHTNING
PRINTI " blocks your path."
CRLF
RETURN 2
?CND24: EQUAL? ABOVE,OACCARDI,OCITY,OMIZNIA \?CND38
REMOVE CURTAIN
?CND38: IN? SHAPE,APLANE \?CND40
REMOVE SHAPE
SET 'LAST-MONSTER,FALSE-VALUE
SET 'P-IT-OBJECT,NOT-HERE-OBJECT
ICALL2 CTHE-PRINT,SHAPE
PRINTI " disincorporates as you retreat."
CRLF
ZERO? VERBOSITY /?CND40
CRLF
?CND40: SET 'ABOVE,NEW
ICALL1 GET-APLANE-THINGS
ICALL1 NEXT-OVER
ICALL1 V-LOOK
RTRUE
.FUNCT PERMISSION
PRINTR """We didn't say you could leave yet,"" notes an Implementor dryly."
.FUNCT EXIT-IMPS
REMOVE IMPTAB
REMOVE IMPS
ICALL2 DEQUEUE,I-IMPS
RFALSE
.FUNCT GET-APLANE-THINGS
EQUAL? ABOVE,OCITY,OMIZNIA,OACCARDI \?CCL3
IN? CURTAIN,APLANE /TRUE
MOVE CURTAIN,APLANE
FCLEAR CURTAIN,NODESC
RTRUE
?CCL3: EQUAL? ABOVE,OPLAIN \FALSE
IN? IMPS,APLANE /FALSE
MOVE IMPTAB,APLANE
MOVE IMPS,APLANE
ICALL2 QUEUE,I-IMPS
RTRUE
.FUNCT ANY-TOUCHED?,TBL,EXCLUDED,LEN,RM,CNT
GETB TBL,0 >LEN
SET 'CNT,1
?PRG1: GETB TBL,LEN >RM
FSET? RM,TOUCHED \?CND3
ASSIGNED? 'EXCLUDED \?CCL4
FSET? RM,EXCLUDED /?CND3
?CCL4: INC 'CNT
PUT AUX-TABLE,CNT,RM
?CND3: DLESS? 'LEN,1 \?PRG1
EQUAL? CNT,1 /FALSE
EQUAL? CNT,2 \?CND11
GET AUX-TABLE,2
RSTACK
?CND11: PUT AUX-TABLE,0,CNT
PUT AUX-TABLE,1,0
CALL2 PICK-ONE,AUX-TABLE
RSTACK
.FUNCT DOWN-TO?,RM,X
EQUAL? ABOVE,ORUINS \?CCL3
CALL2 ANY-TOUCHED?,RUIN-ROOMS >RM
ZERO? RM /?PRD7
RETURN RM
?PRD7: CALL1 SETUP-RUINS?
ZERO? STACK /?CND4
CALL2 RANDOM-ROOM?,RUIN-ROOMS >RM
?CND4: RETURN RM
?CCL3: EQUAL? ABOVE,OBRIDGE \?CCL9
SET 'BRIDGE-DIR,0
SET 'ZTOP,1
SET 'ZBOT,2
RETURN ON-BRIDGE
?CCL9: EQUAL? ABOVE,OFOREST \?CCL11
CALL2 ANY-TOUCHED?,FOREST-ROOMS >RM
ZERO? RM /?PRD15
RETURN RM
?PRD15: CALL1 SETUP-FOREST?
ZERO? STACK /?CND12
CALL2 RANDOM-ROOM?,FOREST-ROOMS >RM
?CND12: RETURN RM
?CCL11: EQUAL? ABOVE,OACCARDI \?CCL17
SET 'RM,IN-ACCARDI
FSET? AT-GATE,TOUCHED /?PRD21
RETURN RM
?PRD21: RANDOM 100
LESS? 50,STACK /?CND18
SET 'RM,AT-GATE
?CND18: RETURN RM
?CCL17: EQUAL? ABOVE,OCITY \?CCL23
SET 'RM,IN-GURTH
FSET? AT-MAGICK,TOUCHED /?CCL25
RETURN RM
?CCL25: SET 'RM,AT-MAGICK
RETURN RM
?CCL23: EQUAL? ABOVE,OSHORE \?CCL27
CALL2 ANY-TOUCHED?,SHORE-ROOMS >RM
ZERO? RM /?CCL29
RETURN RM
?CCL29: SET 'RM,AT-LEDGE
RETURN RM
?CCL27: EQUAL? ABOVE,OXROADS \?CCL31
RETURN XROADS
?CCL31: EQUAL? ABOVE,OPLAIN /FALSE
EQUAL? ABOVE,OGRUBBO \?CCL35
RETURN HILLTOP
?CCL35: EQUAL? ABOVE,OCAVES \?CCL37
RETURN IN-GARDEN
?CCL37: EQUAL? ABOVE,OMOOR \?CCL39
CALL2 ANY-TOUCHED?,MOOR-ROOMS >RM
ZERO? RM /?PRD43
RETURN RM
?PRD43: CALL1 SETUP-MOOR?
ZERO? STACK /?CND40
CALL2 RANDOM-ROOM?,MOOR-ROOMS >RM
?CND40: RETURN RM
?CCL39: EQUAL? ABOVE,OJUNGLE \?CCL45
CALL2 ANY-TOUCHED?,JUNGLE-ROOMS >RM
ZERO? RM /?PRD49
RETURN RM
?PRD49: CALL1 SETUP-JUNGLE?
ZERO? STACK /?CND46
CALL2 RANDOM-ROOM?,JUNGLE-ROOMS >RM
?CND46: RETURN RM
?CCL45: EQUAL? ABOVE,OMIZNIA \?CCL51
CALL2 ANY-TOUCHED?,MIZNIA-ROOMS >RM
ZERO? RM /?CCL53
RETURN RM
?CCL53: SET 'RM,IN-PORT
RETURN RM
?CCL51: EQUAL? ABOVE,OTHRIFF \FALSE
SET 'RM,IN-THRIFF
FSET? IN-THRIFF,MUNGED /?CCL57
RETURN RM
?CCL57: SET 'RM,IN-PASTURE
RETURN RM
.FUNCT RANDOM-ROOM?,TBL,OHERE,RM,X
GETB TBL,0
RANDOM STACK
GETB TBL,STACK >RM
FSET? RM,TOUCHED /?CND1
SET 'OHERE,HERE
SET 'HERE,RM
GETP RM,P?ACTION
CALL STACK,M-ENTERING >X
SET 'HERE,OHERE
FSET RM,TOUCHED
?CND1: RETURN RM
.FUNCT PRE-TAKE,L,LL,WHO,X,X2
LOC PRSO >L
ZERO? L /?CND1
LOC L >LL
?CND1: ZERO? LIT? \?CCL5
EQUAL? WINNER,L,LL /?CCL5
ICALL1 TOO-DARK
RTRUE
?CCL5: EQUAL? L,GLOBAL-OBJECTS \?CCL9
ICALL1 IMPOSSIBLE
RTRUE
?CCL9: EQUAL? L,WINNER \?CCL11
ICALL2 THIS-IS-IT,PRSO
PRINT ALREADY
FSET? PRSO,WORN \?CCL14
PRINTB W?WEAR
JUMP ?CND12
?CCL14: PRINTB W?HOLD
?CND12: PRINTI "ing "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CCL11: EQUAL? L,FALSE-VALUE,BROG /?CCL16
FSET? L,CONTAINER \?CCL16
FSET? L,TRANSPARENT \?CCL16
FSET? L,OPENED /?CCL16
ICALL2 CANT-REACH-INTO,L
RTRUE
?CCL16: EQUAL? LL,FALSE-VALUE,BROG /?CCL22
FSET? LL,CONTAINER \?CCL22
FSET? LL,TRANSPARENT \?CCL22
FSET? LL,OPENED /?CCL22
ICALL2 CANT-REACH-INTO,LL
RTRUE
?CCL22: ZERO? PRSI /?CCL28
EQUAL? PRSO,PRSI \?CCL31
GET P-NAMW,0 >X
GET P-ADJW,0 >X2
GET P-NAMW,1
EQUAL? X,STACK /?CCL33
GET P-ADJW,1
EQUAL? X2,STACK \FALSE
?CCL33: ICALL1 IMPOSSIBLE
RTRUE
?CCL31: EQUAL? PRSI,ME \?CCL37
EQUAL? WINNER,PLAYER \?CCL40
ICALL1 NOBODY-TO-ASK
RTRUE
?CCL40: EQUAL? L,WINNER /FALSE
ICALL2 CTHE-PRINT,WINNER
PRINTI " doesn't have "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CCL37: EQUAL? L,PRSI /FALSE
EQUAL? L,ON-MCASE,ON-WCASE,ON-BCASE \?CND44
EQUAL? PRSI,MCASE,WCASE,BCASE /FALSE
?CND44: ICALL1 CTHE-PRINT
ICALL1 ISNT-ARENT
ICALL2 ON-IN,PRSI
PRINT PERIOD
RTRUE
?CCL28: LOC WINNER
EQUAL? PRSO,STACK \FALSE
EQUAL? PRSO,BUSH,POOL /FALSE
PRINTI "Difficult. You're"
ICALL1 ON-IN
PRINT PERIOD
RTRUE
.FUNCT CANT-REACH-INTO,L
PRINT CANT
PRINTI "reach into "
ICALL2 THE-PRINT,L
PRINTR ". It's closed."
.FUNCT V-TAKE,L
CALL1 ITAKE >L
ZERO? L /TRUE
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK /?CND1
PRINT TAB
?CND1: ZERO? P-MULT? \?CTR6
EQUAL? L,UNDERUG,UNDERPEW,LAMPHOUSE /?CTR6
ZERO? STATIC /?CCL7
FSET? PRSO,FERRIC \?CCL7
?CTR6: ICALL1 TAKEN
RTRUE
?CCL7: FSET? L,CONTAINER /?CTR13
FSET? L,SURFACE /?CTR13
FSET? L,PERSON /?CTR13
FSET? L,LIVING \?CCL14
?CTR13: PRINTI "You take "
ICALL1 THE-PRINT
ICALL2 OUT-OF-LOC,L
PRINT PERIOD
RTRUE
?CCL14: RANDOM 100
LESS? 50,STACK /?CND5
ICALL1 TAKEN
RTRUE
?CND5: PRINT CYOU
EQUAL? P-PRSA-WORD,W?GRAB,W?SEIZE,W?SNATCH \?CCL22
PRINTB P-PRSA-WORD
JUMP ?CND20
?CCL22: RANDOM 100
LESS? 50,STACK /?CCL24
PRINTI "pick up"
JUMP ?CND20
?CCL24: PRINTB W?TAKE
?CND20: PRINTC SP
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT TAKEN
PRINTR "Taken."
.FUNCT FIRST-TAKE?
EQUAL? PRSA,V?TAKE \FALSE
FSET? PRSO,TOUCHED /FALSE
CALL1 ITAKE
ZERO? STACK /TRUE
PUTP PRSO,P?DESCFCN,0
ICALL1 TAKEN
RTRUE
.FUNCT ITAKE,VB,CNT,OBJ,L,X,MAX
ASSIGNED? 'VB /?CND1
SET 'VB,TRUE-VALUE
?CND1: ZERO? PRSO /?CCL4
LOC PRSO >L
ZERO? L \?CND3
?CCL4: ICALL1 CANT-SEE-ANY
RFALSE
?CND3: ICALL2 THIS-IS-IT,PRSO
FSET? PRSO,TAKEABLE /?CCL9
ZERO? VB /FALSE
ICALL1 IMPOSSIBLE
RFALSE
?CCL9: FSET? L,CONTAINER \?CND7
FSET? L,OPENABLE \?CND7
FSET? L,OPENED /?CND7
LOC WINNER
EQUAL? L,STACK /?CND7
ZERO? VB /FALSE
ICALL YOUD-HAVE-TO,STR?518,L
RFALSE
?CND7: EQUAL? WINNER,UNICORN \?CCL21
FIRST? WINNER >X \?CCL21
LOC WINNER
MOVE X,STACK
PRINTI "[putting down "
ICALL2 THE-PRINT,X
PRINTI " first"
PRINT BRACKET
JUMP ?CND19
?CCL21: EQUAL? WINNER,PLAYER \?CND19
IN? ONION,PLAYER \?CND25
ZERO? VB /FALSE
ICALL YOUD-HAVE-TO,STR?519,ONION
RFALSE
?CND25: CALL2 WEIGHT,PRSO >X
GET STATS,STRENGTH
DIV STACK,10
ADD LOAD-ALLOWED,STACK >MAX
IN? L,WINNER /?CND29
CALL2 WEIGHT,WINNER
ADD X,STACK
GRTR? STACK,MAX \?CND29
ZERO? VB /FALSE
FIRST? WINNER >X \?CCL37
PRINTI "Your load is "
JUMP ?CND35
?CCL37: ICALL1 CTHE-PRINT
ICALL1 IS-ARE
?CND35: PRINTI "too heavy."
CRLF
RFALSE
?CND29: FIRST? WINNER >OBJ \?CND38
?PRG40: FSET? OBJ,NODESC /?CND42
FSET? OBJ,WORN /?CND42
FSET? OBJ,TAKEABLE \?CND42
INC 'CNT
?CND42: NEXT? OBJ >OBJ /?PRG40
?CND38: GET STATS,DEXTERITY
DIV STACK,10
ADD FUMBLE-NUMBER,STACK >MAX
GRTR? CNT,MAX \?CND19
ZERO? VB /FALSE
PRINTI "Your hands are full."
CRLF
RFALSE
?CND19: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
FSET PRSO,TOUCHED
FCLEAR PRSO,NODESC
FCLEAR PRSO,NOALL
MOVE PRSO,WINNER
RETURN L
.FUNCT WEIGHT,THING,WT,OBJ
FIRST? THING >OBJ \?CND1
?PRG3: EQUAL? THING,WINNER \?CCL7
FSET? OBJ,WORN \?CCL7
INC 'WT
JUMP ?CND5
?CCL7: CALL2 WEIGHT,OBJ
ADD WT,STACK >WT
?CND5: NEXT? OBJ >OBJ /?PRG3
?CND1: GETP THING,P?SIZE
ADD WT,STACK
RSTACK
.FUNCT V-WIELD,OBJ
FSET? PRSO,TAKEABLE /?CCL3
ICALL1 IMPOSSIBLE
RTRUE
?CCL3: IN? PRSO,WINNER /?CCL5
ICALL2 MUST-HOLD,PRSO
PRINTR " before you can wield it."
?CCL5: FSET? PRSO,WORN \?CCL7
ICALL YOUD-HAVE-TO,STR?520,PRSO
RTRUE
?CCL7: FSET? PRSO,WIELDED \?CND1
PRINT ALREADY
PRINTI "wielding "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CND1: FIRST? WINNER >OBJ \?CND9
?PRG11: FSET? OBJ,WIELDED \?CND13
FCLEAR OBJ,WIELDED
PRINTI "[setting aside "
ICALL2 THE-PRINT,OBJ
PRINTI " first"
PRINT BRACKET
JUMP ?CND9
?CND13: NEXT? OBJ >OBJ /?PRG11
?CND9: BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
FSET PRSO,WIELDED
PRINTI "You wield "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-UNWIELD
FSET? PRSO,TAKEABLE /?CCL3
ICALL1 IMPOSSIBLE
RTRUE
?CCL3: FSET? PRSO,WIELDED /?CND1
PRINTI "You're not wielding "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CND1: BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
FCLEAR PRSO,WIELDED
PRINTI "You set aside "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT SPARK?,INDENT,OBJ
ASSIGNED? 'INDENT /?CND1
SET 'INDENT,TRUE-VALUE
?CND1: ASSIGNED? 'OBJ /?CND3
SET 'OBJ,PRSO
?CND3: CALL2 NO-SPARK?,OBJ
ZERO? STACK \FALSE
ZERO? INDENT /?CND5
PRINT TAB
?CND5: ICALL2 ITALICIZE,STR?521
PRINTI "! You feel a "
GRTR? STATIC,2 \?CND9
PRINTI "painful "
?CND9: PRINTI "spark as you touch "
ICALL2 THE-PRINT,OBJ
PRINT PERIOD
SUB 0,STATIC
ICALL2 UPDATE-STAT,STACK
ICALL2 SPARK-OBJ,OBJ
RTRUE
.FUNCT SPARK-TO?,OBJ1,OBJ2
ASSIGNED? 'OBJ1 /?CND1
SET 'OBJ1,PRSO
?CND1: ASSIGNED? 'OBJ2 /?CND3
SET 'OBJ2,PRSI
?CND3: CALL2 NO-SPARK?,OBJ2
ZERO? STACK \FALSE
EQUAL? OBJ1,HANDS,FEET,ME /?CND5
FSET? OBJ1,FERRIC \FALSE
?CND5: ICALL1 SAY-SNAP
ICALL2 SAY-YOUR,OBJ1
PRINT AND
ICALL2 THE-PRINT,OBJ2
PRINTC 33
CRLF
FSET? OBJ1,FERRIC /?CND10
SUB 0,STATIC
ICALL2 UPDATE-STAT,STACK
?CND10: ICALL2 SPARK-OBJ,OBJ2
RTRUE
.FUNCT SAY-SNAP
ICALL2 ITALICIZE,STR?521
PRINTI "! A "
GRTR? STATIC,3 \?CND1
PRINTI "painful "
?CND1: PRINTI "spark leaps between "
RFALSE
.FUNCT NO-SPARK?,OBJ,L
ZERO? STATIC /TRUE
LOC OBJ >L
EQUAL? L,FALSE-VALUE,LOCAL-GLOBALS,GLOBAL-OBJECTS /TRUE
LOC L
EQUAL? PLAYER,L,STACK /TRUE
RFALSE
.FUNCT SPARK-OBJ,OBJ
FSET? OBJ,LIVING \?CND1
EQUAL? OBJ,DUST \?CCL4
ICALL2 VANISH,DUST
ICALL2 DEQUEUE,I-DUST
MOVE RING,HERE
SET 'P-IT-OBJECT,RING
SET 'P-THEM-OBJECT,NOT-HERE-OBJECT
PRINTI " A bright blue "
ICALL2 ITALICIZE,STR?522
PRINTI " of electricity lights the room! "
ICALL2 BLINK,DUST
PRINTI " draw"
EQUAL? BUNNIES,1 \?CCL7
PRINTI "s itself"
JUMP ?CND5
?CCL7: PRINTI " themselves"
?CND5: PRINTI " together into a hard ring of particles, which falls with a clatter to your feet."
CRLF
GETP DUST,P?VALUE
ICALL UPDATE-STAT,STACK,EXPERIENCE
JUMP ?CND1
?CCL4: FSET? OBJ,MONSTER \?CCL9
FSET OBJ,STRICKEN
GETP OBJ,P?ENDURANCE
SUB STACK,STATIC
PUTP OBJ,P?ENDURANCE,STACK
JUMP ?CND1
?CCL9: PRINT TAB
ICALL2 CTHE-PRINT,OBJ
PRINTI " looks at you reproachfully."
CRLF
EQUAL? OBJ,UNICORN \?CND1
ICALL UPDATE-STAT,-5,LUCK,TRUE-VALUE
?CND1: SET 'STATIC,0
RFALSE
.FUNCT BLINK,OBJ
PRINTI "In the blink of an eye, "
ICALL2 THE-PRINT,OBJ
RFALSE
.FUNCT MSPARK?,OBJ,DAMAGE,X
ZERO? STATIC \?CND1
RETURN DAMAGE
?CND1: GETP OBJ,P?ENDURANCE
ADD STACK,DAMAGE >X
PRINT TAB
ICALL1 SAY-SNAP
PRINTI "you and "
ICALL2 THE-PRINT,OBJ
LESS? X,1 \?CND3
SET 'X,1
PRINTI ", leaving it nearly stunned"
?CND3: PRINT PERIOD
PUTP OBJ,P?ENDURANCE,X
SUB DAMAGE,STATIC >DAMAGE
SET 'STATIC,0
RETURN DAMAGE
.FUNCT V-DROP
CALL1 IDROP
ZERO? STACK /TRUE
ICALL1 SAY-DROPPED
RTRUE
.FUNCT SAY-DROPPED
ZERO? P-MULT? \?CCL2
RANDOM 100
LESS? 50,STACK /?CND1
?CCL2: PRINTR "Dropped."
?CND1: PRINT CYOU
RANDOM 100
LESS? 50,STACK /?CCL7
PRINTI "drop "
JUMP ?CND5
?CCL7: PRINTI "put down "
?CND5: ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT IDROP,L
LOC PRSO >L
EQUAL? L,FALSE-VALUE,LOCAL-GLOBALS,GLOBAL-OBJECTS /?CTR2
EQUAL? PRSO,WINNER,ME \?CCL3
?CTR2: ICALL1 IMPOSSIBLE
RFALSE
?CCL3: EQUAL? L,WINNER /?CCL7
EQUAL? WINNER,PLAYER \?CCL10
PRINTI "You'd "
JUMP ?CND8
?CCL10: ICALL2 CTHE-PRINT,WINNER
PRINTI " would "
?CND8: PRINTI "have to take "
ICALL1 THE-PRINT
ICALL2 OUT-OF-LOC,L
PRINT SFIRST
RFALSE
?CCL7: FSET? PRSO,WORN \?CCL12
IN? PRSO,WINNER \?CCL12
CALL1 TAKE-OFF-PRSO-FIRST?
ZERO? STACK /?CND1
RTRUE
?CCL12: EQUAL? PRSO,MINX \?CCL18
FCLEAR PRSO,SEEN
FCLEAR PRSO,TOUCHED
FCLEAR PRSO,TRYTAKE
JUMP ?CND1
?CCL18: EQUAL? PRSO,TRUFFLE \?CND1
FCLEAR MINX,SEEN
?CND1: FCLEAR PRSO,WIELDED
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
LOC WINNER >L
EQUAL? HERE,IN-SKY,ON-BRIDGE,APLANE /?CCL21
EQUAL? L,SADDLE \?CND20
?CCL21: ICALL1 CTHE-PRINT
PRINTC SP
ICALL1 FALLS
RFALSE
?CND20: MOVE PRSO,L
RTRUE
.FUNCT PRSO-SLIDES-OFF-PRSI
ICALL1 CTHE-PRINT
PRINTI " slide"
FSET? PRSO,PLURAL /?CND1
PRINTC 115
?CND1: PRINTI " off "
ICALL1 THEI-PRINT
PRINT AND
ICALL1 FALLS
RTRUE
.FUNCT FALLS,OBJ,V,S,L,X
ASSIGNED? 'OBJ /?CND1
SET 'OBJ,PRSO
?CND1: ASSIGNED? 'V /?CND3
SET 'V,TRUE-VALUE
?CND3: SET 'S,STR?523
FSET? OBJ,PLURAL \?CND5
SET 'S,STR?524
?CND5: LOC WINNER >L
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
FCLEAR OBJ,WIELDED
FCLEAR OBJ,WORN
EQUAL? HERE,ON-BRIDGE \?CCL9
ICALL2 VANISH,OBJ
ZERO? V /?CND10
PRINTI "slip"
PRINT S
PRINTB W?BETWEEN
PRINTI " the ropes and "
?CND10: PRINTI "fall"
PRINT S
PRINTR "out of sight."
?CCL9: EQUAL? HERE,IN-SKY,APLANE \?CCL13
CALL1 DOWN-TO? >X
ZERO? X \?CCL16
REMOVE OBJ
JUMP ?CND14
?CCL16: MOVE OBJ,X
?CND14: EQUAL? HERE,IN-SKY \?CND17
PRINTI "fall"
PRINT S
PRINTR "out of sight."
?CND17: EQUAL? OBJ,PHASE \?CND19
ICALL1 MUNG-PHASE
?CND19: PRINTI "disappear"
PRINT S
PRINTR "in a spectral flash."
?CCL13: EQUAL? L,SADDLE \?CCL22
LOC L >X
FSET? X,VEHICLE \?CCL25
LOC X
MOVE OBJ,STACK
JUMP ?CND23
?CCL25: MOVE OBJ,X
?CND23: ZERO? V /?CND7
PRINTI "slide"
PRINT S
PRINTI "off "
ICALL2 THE-PRINT,L
PRINT AND
JUMP ?CND7
?CCL22: MOVE OBJ,L
?CND7: PRINTI "land"
PRINT S
PRINTI "on the "
ICALL1 GROUND-WORD
PRINT PERIOD
RTRUE
.FUNCT V-CASH
ZERO? LOOT \?CND1
PRINT STR?525
RTRUE
?CND1: ICALL1 SAY-CASH
RTRUE
.FUNCT V-INVENTORY
ZERO? DMODE /?CTR2
EQUAL? PRIOR,SHOWING-ROOM,SHOWING-STATS \?CCL3
?CTR2: ICALL1 PRINT-INVENTORY
JUMP ?CND1
?CCL3: PRINTI "You take stock of your possessions."
CRLF
SET 'DBOX-TOP,0
ICALL1 UPDATE-INVENTORY
GET 0,8
BTST STACK,1 \?CND1
DIROUT D-SCREEN-OFF
CRLF
ICALL1 PRINT-INVENTORY
DIROUT D-SCREEN-ON
?CND1: FSET? MONEY,TOUCHED /TRUE
FSET MONEY,TOUCHED
PRINT TAB
ICALL2 NYMPH-APPEARS,STR?526
PRINTI "By the way, you can check the amount of cash you're holding at any time with the CASH command. Or, just type a $ followed by [RETURN]"
PRINT STR?515
RTRUE
.FUNCT UPDATE-INVENTORY
SET 'IN-DBOX,SHOWING-INV
ICALL1 SETUP-DBOX
ICALL1 PRINT-INVENTORY
ICALL1 JUSTIFY-DBOX
ICALL1 DISPLAY-DBOX
RFALSE
.FUNCT PRINT-INVENTORY,HOLDS,WORNS,ANY,B,OBJ,NXT
FIRST? WINNER >OBJ /?CND1
ICALL1 NUTHIN
RTRUE
?CND1: SET 'INV-PRINTING?,TRUE-VALUE
?PRG3: NEXT? OBJ >NXT /?BOGUS5
?BOGUS5: FSET? OBJ,NODESC /?CTR7
FSET? OBJ,TAKEABLE /?CCL8
?CTR7: MOVE OBJ,DUMMY-OBJECT
JUMP ?CND6
?CCL8: FSET? OBJ,CLOTHING \?CCL12
FSET? OBJ,WORN \?CCL12
INC 'WORNS
MOVE OBJ,WEARING
JUMP ?CND6
?CCL12: EQUAL? OBJ,GOBLET \?CND6
IN? BFLY,OBJ \?CND6
FSET? BFLY,LIVING \?CND6
INC 'B
FSET BFLY,NODESC
?CND6: CALL2 SEE-INSIDE?,OBJ
ZERO? STACK /?CND19
CALL2 SEE-ANYTHING-IN?,OBJ
ZERO? STACK /?CND19
INC 'HOLDS
MOVE OBJ,HOLDING
?CND19: SET 'OBJ,NXT
ZERO? OBJ \?PRG3
FIRST? WINNER >OBJ \?CND25
?PRG27: NEXT? OBJ >NXT /?BOGUS29
?BOGUS29: FSET? OBJ,WIELDED \?CND30
REMOVE OBJ
MOVE OBJ,WINNER
?CND30: SET 'OBJ,NXT
ZERO? OBJ \?PRG27
INC 'ANY
PRINTI "You're carrying "
ICALL2 CONTENTS,WINNER
PRINT PERIOD
?CND25: ZERO? HOLDS /?CND34
ZERO? ANY /?CCL38
PRINT TAB
PRINTI "You're also "
JUMP ?CND36
?CCL38: PRINTI "You're "
?CND36: INC 'ANY
PRINTI "carrying "
ICALL2 CONTENTS,HOLDING
FIRST? HOLDING >OBJ \?CND39
?PRG41: PRINTI ". "
EQUAL? OBJ,GURDY \?CCL45
PRINTI "Within"
JUMP ?CND43
?CCL45: FSET? OBJ,CONTAINER \?CCL47
PRINTI "Inside"
JUMP ?CND43
?CCL47: PRINTI "Upon"
?CND43: PRINTC SP
ICALL2 THE-PRINT,OBJ
PRINTI " you see "
ICALL2 CONTENTS,OBJ
NEXT? OBJ >OBJ /?PRG41
?CND39: PRINT PERIOD
ICALL MOVE-ALL,HOLDING,WINNER
?CND34: ZERO? WORNS /?CND50
ZERO? ANY /?CND52
PRINT TAB
?CND52: INC 'ANY
PRINTI "You're wearing "
ICALL2 CONTENTS,WEARING
FIRST? WEARING >OBJ \?CND54
?PRG56: CALL2 SEE-INSIDE?,OBJ
ZERO? STACK /?CND58
CALL2 SEE-ANYTHING-IN?,OBJ
ZERO? STACK /?CND58
PRINTI ". "
FSET? OBJ,CONTAINER \?CCL64
PRINTI "Inside"
JUMP ?CND62
?CCL64: PRINTI "Upon"
?CND62: PRINTC SP
ICALL2 THE-PRINT,OBJ
PRINTI " you see "
ICALL2 CONTENTS,OBJ
?CND58: NEXT? OBJ >OBJ /?PRG56
?CND54: PRINT PERIOD
ICALL MOVE-ALL,WEARING,WINNER
?CND50: ICALL MOVE-ALL,DUMMY-OBJECT,WINNER
ZERO? ANY \?CCL69
ICALL1 NUTHIN
JUMP ?CND67
?CCL69: ZERO? LOOT /?CND67
PRINT TAB
ICALL1 SAY-CASH
?CND67: ZERO? B /?CND71
FCLEAR BFLY,NODESC
?CND71: SET 'INV-PRINTING?,FALSE-VALUE
RTRUE
.FUNCT NUTHIN
PRINT DONT
PRINTI "have anything"
ZERO? LOOT /?CND1
PRINTI " except "
ICALL1 SAY-LOOT
?CND1: PRINT PERIOD
RTRUE
.FUNCT PRE-EXAMINE
ZERO? LIT? \FALSE
ICALL1 TOO-DARK
RETURN 2
.FUNCT V-EXAMINE
FSET? PRSO,OPENABLE \?CCL3
PRINTI "It looks as if "
ICALL1 THE-PRINT
ICALL1 IS-ARE
FSET? PRSO,OPENED \?CCL6
PRINTB W?OPEN
JUMP ?CND4
?CCL6: PRINTB W?CLOSED
?CND4: PRINT PERIOD
RTRUE
?CCL3: FSET? PRSO,PLACE \?CCL8
ICALL1 CANT-SEE-MUCH
RTRUE
?CCL8: FSET? PRSO,READABLE \?CCL10
PRINTR "There appears to be something written on it."
?CCL10: FSET? PRSO,SURFACE \?CCL12
PRINT YOU-SEE
ICALL1 CONTENTS
PRINT SON
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CCL12: FSET? PRSO,CONTAINER \?CCL14
FSET? PRSO,OPENED /?CCL16
FSET? PRSO,TRANSPARENT \?CND15
?CCL16: ICALL1 V-LOOK-INSIDE
RTRUE
?CND15: ICALL1 ITS-CLOSED
RTRUE
?CCL14: CALL1 LOOK-INTDIR?
ZERO? STACK \TRUE
FSET? PRSO,PERSON \?CND1
CALL1 SEE-ANYTHING-IN?
ZERO? STACK /?CND1
ICALL1 CTHE-PRINT
PRINTI " has "
ICALL1 CONTENTS
PRINT PERIOD
RTRUE
?CND1: ICALL1 NOTHING-INTERESTING
PRINTI " about "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT NOTHING-INTERESTING
PRINT YOU-SEE
PRINTI "nothing "
CALL2 PICK-NEXT,YAWNS
PRINT STACK
RFALSE
.FUNCT V-UNDO,X
CALL1 CANT-SAVE?
ZERO? STACK \TRUE
SET 'OLD-HERE,FALSE-VALUE
IRESTORE >X
EQUAL? X,-1 \?CND3
ICALL1 NOT-AVAILABLE
RTRUE
?CND3: ICALL2 FAILED,STR?508
RTRUE
.FUNCT CANT-SAVE?,OBJ,NXT,X
ZERO? CHOKE /?CCL3
ICALL2 MUMBLAGE,SKELETON
RTRUE
?CCL3: FIRST? HERE >OBJ \FALSE
?PRG5: FSET? OBJ,MONSTER \?CCL9
FSET? OBJ,LIVING \?CCL9
FSET? OBJ,SLEEPING /?CCL9
ICALL2 MUMBLAGE,OBJ
RTRUE
?CCL9: NEXT? OBJ >OBJ /?PRG5
RFALSE
.FUNCT MUMBLAGE,OBJ
ICALL1 PCLEAR
PRINTI "You begin to mumble the Spell of "
EQUAL? PRSA,V?SAVE \?CCL3
PRINTI "Sav"
JUMP ?CND1
?CCL3: PRINTI "Undo"
?CND1: PRINTI "ing, but the "
ZERO? LIT? /?CCL6
PRINTI "sight of "
ICALL2 THE-PRINT,OBJ
PRINTI " makes"
JUMP ?CND4
?CCL6: PRINTI "noises in the darkness make"
?CND4: PRINTR " your mind wander."
.FUNCT V-USE
FSET? PRSO,PERSON \?CND1
ICALL1 CTHE-PRINT
PRINTR " might resent that."
?CND1: ICALL1 HOW?
RTRUE
.FUNCT V-BITE
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL2 HACK-HACK,STR?527
RTRUE
.FUNCT V-BLOW-INTO
FSET? PRSO,PERSON \?CND1
SET 'P-PRSA-WORD,W?USE
ICALL PERFORM,V?USE,PRSO
RTRUE
?CND1: ICALL2 HACK-HACK,STR?528
RTRUE
.FUNCT V-LIGHT-ON
PRINT CANT
PRINTI "light "
ICALL1 THE-PRINT
PRINTR " on anything."
.FUNCT V-LIGHT-WITH
ICALL1 V-BURN-WITH
RTRUE
.FUNCT V-BURN-WITH
ZERO? PRSI /?CND1
PRINTI "With "
ICALL2 PRINTA,PRSI
PRINTI "? "
?CND1: CALL2 PICK-NEXT,YUKS
PRINT STACK
PRINT PERIOD
RTRUE
.FUNCT ALREADY-HAVE,OBJ
ASSIGNED? 'OBJ /?CND1
SET 'OBJ,PRSO
?CND1: EQUAL? WINNER,PLAYER \?CCL5
PRINTI "You already have "
JUMP ?CND3
?CCL5: ICALL2 CTHE-PRINT,WINNER
PRINTI " already has "
?CND3: ICALL2 PRINTA,OBJ
PRINT PERIOD
RTRUE
.FUNCT V-CLEAN
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL2 HACK-HACK,STR?529
RTRUE
.FUNCT V-CLEAN-OFF
EQUAL? PRSO,PRSI \?CND1
ICALL1 IMPOSSIBLE
RTRUE
?CND1: PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINT SON
ICALL1 THEI-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-CLIMB-DOWN
EQUAL? P-PRSA-WORD,W?JUMP,W?LEAP,W?HURDLE /?CTR2
EQUAL? P-PRSA-WORD,W?VAULT,W?BOUND \?CCL3
?CTR2: ICALL PERFORM,V?DIVE,PRSO
RTRUE
?CCL3: EQUAL? PRSO,ROOMS \?CND1
ICALL2 DO-WALK,P?DOWN
RTRUE
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-CLIMB-ON
EQUAL? P-PRSA-WORD,W?TAKE \?CCL3
ICALL PERFORM,V?HIT,PRSO
RTRUE
?CCL3: FSET? PRSO,VEHICLE \?CND1
ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CND1: PRINT CANT
PRINTB P-PRSA-WORD
PRINTR " onto that."
.FUNCT V-CLIMB-OVER
EQUAL? PRSO,ROOMS \?CND1
ICALL1 V-WALK-AROUND
RTRUE
?CND1: PRINT CANT
PRINTR "climb over that."
.FUNCT V-CLIMB-UP
EQUAL? PRSO,ROOMS \?CND1
ICALL2 DO-WALK,P?UP
RTRUE
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-OPEN-WITH
FSET? PRSO,OPENABLE /?CCL3
ICALL1 CANT-OPEN-PRSO
RTRUE
?CCL3: FSET? PRSO,OPENED \?CND1
ICALL2 ITS-ALREADY,STR?518
RTRUE
?CND1: PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINT WITH
ICALL1 THEI-PRINT
PRINT PERIOD
RTRUE
.FUNCT CANT-OPEN-PRSO
PRINT IMPOSSIBLY
PRINTI "open "
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-OPEN,X
FSET? PRSO,OPENABLE /?CCL3
ICALL1 CANT-OPEN-PRSO
RTRUE
?CCL3: FSET? PRSO,OPENED \?CCL5
ICALL2 ITS-ALREADY,STR?518
RTRUE
?CCL5: FSET? PRSO,LOCKED \?CND1
ICALL1 CTHE-PRINT
PRINTR " seems to be locked."
?CND1: CALL1 SPARK?
ZERO? STACK /?CND7
PRINT TAB
?CND7: PRINTI "You open "
ICALL1 THE-PRINT
PRINT PERIOD
ICALL1 IOPEN
EQUAL? PRSO,CELLAR-DOOR \TRUE
FSET? ONION,TOUCHED /TRUE
PRINT TAB
ICALL1 COOK-MENTIONS-ONION
RTRUE
.FUNCT IOPEN,OBJ
ASSIGNED? 'OBJ /?CND1
SET 'OBJ,PRSO
?CND1: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
FSET OBJ,OPENED
FSET? OBJ,DOORLIKE \?CCL5
IN? OBJ,LOCAL-GLOBALS \?CCL5
ICALL1 MARK-EXITS
ZERO? DMODE \?CND8
ICALL1 LOWER-SLINE
RFALSE
?CND8: ICALL1 DRAW-MAP
ICALL1 SHOW-MAP
RFALSE
?CCL5: FSET? OBJ,CONTAINER \FALSE
FSET? OBJ,TRANSPARENT /FALSE
CALL2 SEE-ANYTHING-IN?,OBJ
ZERO? STACK /FALSE
PRINT TAB
PRINT STR?530
ICALL2 CONTENTS,OBJ
PRINT PERIOD
RFALSE
.FUNCT ICLOSE,OBJ
ASSIGNED? 'OBJ /?CND1
SET 'OBJ,PRSO
?CND1: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
FCLEAR OBJ,OPENED
FSET? OBJ,DOORLIKE \FALSE
IN? OBJ,LOCAL-GLOBALS \FALSE
ZERO? DMODE \?CND7
ICALL1 LOWER-SLINE
RFALSE
?CND7: ICALL1 DRAW-MAP
ICALL1 SHOW-MAP
RFALSE
.FUNCT V-CLOSE
FSET? PRSO,OPENABLE \?CND1
FSET? PRSO,OPENED \?CND3
CALL1 SPARK?
ZERO? STACK /?CND5
PRINT TAB
?CND5: PRINTI "You close "
ICALL1 THE-PRINT
PRINT PERIOD
ICALL1 ICLOSE
RTRUE
?CND3: ICALL2 ITS-ALREADY,STR?531
RTRUE
?CND1: PRINT CANT
PRINTI "close "
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-COUNT
FSET? PRSO,PLURAL \?CND1
PRINTR "Your mind wanders, and you lose count."
?CND1: ICALL1 ONLY-ONE
RTRUE
.FUNCT ONLY-ONE
PRINTR "You only see one."
.FUNCT V-COVER
ICALL PERFORM,V?PUT-ON,PRSI,PRSO
RTRUE
.FUNCT V-HOLD-OVER
ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-CROSS
PRINT CANT
PRINTR "cross that."
.FUNCT V-CUT
EQUAL? PRSI,DAGGER,SWORD,AXE \?CND1
ICALL2 NYMPH-APPEARS,STR?532
PRINTI "Careful with that "
PRINTD PRSI
PRINTI "!"" she scolds, wagging a tiny finger. ""You might hurt "
PRINTD ME
PRINT STR?515
RTRUE
?CND1: ICALL1 V-RIP
RTRUE
.FUNCT V-RIP
PRINT IMPOSSIBLY
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
EQUAL? PRSI,HANDS /?CND1
PRINT WITH
ICALL1 THEI-PRINT
?CND1: PRINT PERIOD
RTRUE
.FUNCT V-DEFLATE
ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-DETONATE
ICALL1 IMPOSSIBLE
RTRUE
.FUNCT PRE-DIG-UNDER
CALL1 PRE-DIG
RSTACK
.FUNCT PRE-DIG
EQUAL? PRSO,PRSI \?CCL3
ICALL1 IMPOSSIBLE
RTRUE
?CCL3: ZERO? LIT? \?CCL5
ICALL1 TOO-DARK
RTRUE
?CCL5: ZERO? PRSI \FALSE
SET 'PRSI,HANDS
IN? SPADE,PLAYER \?CND7
SET 'PRSI,SPADE
?CND7: PRINTI "[with "
ICALL1 THEI-PRINT
PRINT BRACKET
RFALSE
.FUNCT V-DIG-UNDER
ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-DIG
ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-SDIG
ICALL PERFORM,V?DIG,PRSI,PRSO
RETURN 2
.FUNCT V-DRINK,FROM?
PRINT CANT
PRINTI "drink "
ZERO? FROM? /?CND1
PRINTI "from "
?CND1: ICALL2 DPRINT,NOT-HERE-OBJECT
PRINT PERIOD
RTRUE
.FUNCT V-DRINK-FROM
ICALL2 V-DRINK,TRUE-VALUE
RTRUE
.FUNCT V-EAT
EQUAL? WINNER,PLAYER \?CND1
ICALL1 NOT-LIKELY
PRINTR " would agree with you."
?CND1: PRINTI """It"
CALL2 PICK-NEXT,LIKELIES
PRINT STACK
PRINTI " that "
ICALL1 THE-PRINT
PRINTR " would agree with me."""
.FUNCT V-ENTER,X
FSET? PRSO,VEHICLE \?CCL3
IN? PLAYER,PRSO \?CCL6
PRINTI "You're already"
ICALL1 ON-IN
PRINT PERIOD
RTRUE
?CCL6: LOC PRSO
EQUAL? STACK,HERE,LOCAL-GLOBALS /?CCL8
ICALL1 CANT-FROM-HERE
RTRUE
?CCL8: CALL1 DROP-ONION-FIRST?
ZERO? STACK \TRUE
SET 'OLD-HERE,FALSE-VALUE
BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
MOVE PLAYER,PRSO
PRINTI "You get"
ICALL1 ON-IN
ICALL1 RELOOK
RTRUE
?CCL3: EQUAL? PRSO,ROOMS \?CCL11
CALL FIND-IN?,HERE,VEHICLE >X
ZERO? X /?CND12
SET 'P-PRSA-WORD,W?ENTER
ICALL PERFORM,V?ENTER,X
RTRUE
?CND12: ICALL2 DO-WALK,P?IN
RTRUE
?CCL11: FSET? PRSO,CLOTHING \?CND1
PRINT STR?517
PRINTI "WEAR "
ICALL1 THE-PRINT
PRINTC 46
PRINT BRACKET
SET 'P-PRSA-WORD,W?WEAR
ICALL PERFORM,V?WEAR,PRSO
RTRUE
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-ESCAPE
FSET? PRSO,PLACE \?CND1
ICALL1 NOT-IN
RTRUE
?CND1: ICALL1 V-WALK-AROUND
RTRUE
.FUNCT PRE-DUMB-EXAMINE
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RTRUE
?CCL3: CALL1 LOOK-INTDIR?
ZERO? STACK \TRUE
FSET? EYES,SEEN /?CND5
FSET EYES,SEEN
PRINT STR?517
PRINTI "LOOK AT "
ICALL1 THE-PRINT
PRINTI ", not LOOK INSIDE or LOOK UNDER or LOOK BEHIND "
ICALL1 THE-PRINT
PRINTC 46
PRINT BRACKET
?CND5: ICALL PERFORM,V?EXAMINE,PRSO
RTRUE
.FUNCT V-DUMB-EXAMINE
ICALL1 V-EXAMINE
RTRUE
.FUNCT LOOK-INTDIR?,X
EQUAL? PRSO,RIGHT,LEFT /?CND1
EQUAL? PRSO,INTDIR \FALSE
?CND1: GETP HERE,P?SEE-ALL >X
ZERO? X /?CND4
ICALL2 THIS-IS-IT,X
PRINT YOU-SEE
FSET? X,NOARTICLE /?CND6
FSET? X,PLURAL /?CND6
PRINT LTHE
?CND6: ICALL2 DPRINT,X
PRINTR " that way."
?CND4: ICALL1 NOTHING-INTERESTING
PRINT SIN
ICALL2 DPRINT,RIGHT
PRINT PERIOD
RTRUE
.FUNCT PRE-EXAMINE-IN,L
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RETURN 2
?CCL3: EQUAL? PRSO,PRSI \?CCL7
ICALL1 IMPOSSIBLE
RTRUE
?CCL7: IN? PRSI,GLOBAL-OBJECTS /FALSE
IN? PRSI,LOCAL-GLOBALS \?CND1
FSET? PRSI,PLACE /FALSE
?CND1: LOC PRSO >L
EQUAL? L,PRSI /FALSE
IN? L,PRSI /FALSE
ICALL1 CTHE-PRINT
ICALL1 ISNT-ARENT
ICALL2 ON-IN,PRSI
PRINT PERIOD
RTRUE
.FUNCT V-EXAMINE-IN
ICALL1 V-EXAMINE
RTRUE
.FUNCT V-EXIT,L
EQUAL? PRSO,ROOMS \?CCL3
LOC WINNER >L
FSET? L,VEHICLE \?CND4
ICALL PERFORM,V?EXIT,L
RTRUE
?CND4: ICALL2 DO-WALK,P?OUT
RTRUE
?CCL3: ZERO? PRSO /?CND1
FSET? PRSO,VEHICLE \?CND1
IN? WINNER,PRSO /?CND9
PRINTI "You're not"
ICALL1 ON-IN
PRINT PERIOD
RTRUE
?CND9: SET 'OLD-HERE,FALSE-VALUE
BOR NEW-DBOX,SHOWING-ROOM >NEW-DBOX
LOC PRSO
MOVE WINNER,STACK
PRINTI "You get"
ICALL2 OUT-OF-LOC,PRSO
ICALL1 RELOOK
RTRUE
?CND1: LOC PRSO >L
FSET? PRSO,PLACE \?CCL13
ICALL1 NOT-IN
RTRUE
?CCL13: FSET? L,CONTAINER \?CND11
CALL2 VISIBLE?,PRSO
ZERO? STACK /?CND11
PRINTI "[from "
ICALL2 DPRINT,L
PRINT BRACKET
ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CND11: ICALL2 DO-WALK,P?OUT
RTRUE
.FUNCT V-FILL-FROM
ICALL1 V-FILL
RTRUE
.FUNCT V-FILL
EQUAL? PRSO,VIAL,GOBLET \?CND1
CALL2 VISIBLE?,POOL
ZERO? STACK /?CND1
PRINTI "[from "
ICALL2 THE-PRINT,POOL
PRINT BRACKET
SET 'P-PRSA-WORD,W?GET
ICALL PERFORM,V?FILL-FROM,PRSO,POOL
RTRUE
?CND1: PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-SUBMERGE
EQUAL? PRSO,CIRCLET \?CCL3
CALL2 VISIBLE?,JAR
ZERO? STACK /?CCL3
PRINTI "[into "
ICALL2 THE-PRINT,JAR
PRINT BRACKET
ICALL1 DIP-CIRCLET
RTRUE
?CCL3: IN? POOL,HERE \?CND1
PRINTI "[in "
ICALL2 THE-PRINT,POOL
PRINT BRACKET
EQUAL? PRSO,VIAL,GOBLET \?CND7
ICALL PERFORM,V?FILL-FROM,PRSO,POOL
RTRUE
?CND7: ICALL PERFORM,V?PUT-UNDER,PRSO,POOL
RTRUE
?CND1: PRINT NOTHING
PRINTI "here in which to "
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-FIND,L
LOC PRSO >L
ZERO? L /?CND1
EQUAL? PRSO,ME,HANDS,WINNER \?CCL4
PRINT STR?533
RTRUE
?CCL4: IN? PRSO,WINNER \?CCL6
PRINTR "You're holding it."
?CCL6: IN? PRSO,HERE /?CTR7
IN? PRSO,LOCAL-GLOBALS \?PRD11
CALL GLOBAL-IN?,HERE,PRSO
ZERO? STACK \?CTR7
?PRD11: LOC WINNER
IN? PRSO,STACK \?CCL8
?CTR7: ICALL1 ITS-RIGHT-HERE
RTRUE
?CCL8: FSET? L,PERSON /?PRD17
FSET? L,LIVING \?CCL15
?PRD17: CALL2 VISIBLE?,L
ZERO? STACK /?CCL15
ICALL2 CTHE-PRINT,L
PRINTR " has it."
?CCL15: CALL2 SEE-INSIDE?,L
ZERO? STACK /?CND1
CALL2 VISIBLE?,L
ZERO? STACK /?CND1
ICALL1 SAY-ITS
ICALL2 ON-IN,L
PRINT PERIOD
RTRUE
?CND1: ICALL1 DO-IT-YOURSELF
RTRUE
.FUNCT DO-IT-YOURSELF
PRINTI "You'll have to do that "
ICALL2 DPRINT,ME
PRINT PERIOD
RTRUE
.FUNCT ITS-RIGHT-HERE
ICALL1 SAY-ITS
PRINTR " right here in front of you."
.FUNCT SAY-ITS
FSET? PRSO,PLURAL \?CCL3
PRINTI "They're"
RTRUE
?CCL3: FSET? PRSO,FEMALE \?CCL5
PRINTI "She's"
RTRUE
?CCL5: FSET? PRSO,PERSON \?CND1
PRINTI "He's"
RTRUE
?CND1: PRINTI "It's"
RTRUE
.FUNCT V-LAND
EQUAL? HERE,IN-SKY \?CND1
ICALL2 DO-WALK,P?DOWN
RTRUE
?CND1: ICALL1 NOT-FLYING
RTRUE
.FUNCT NOT-FLYING
PRINTI "You're not flying"
PRINT AT-MOMENT
RTRUE
.FUNCT V-LAND-ON
EQUAL? HERE,IN-SKY /?CCL3
ICALL1 NOT-FLYING
RTRUE
?CCL3: EQUAL? PRSO,GROUND,FLOOR \?CND1
ICALL2 DO-WALK,P?DOWN
RTRUE
?CND1: ICALL1 V-WALK-AROUND
RTRUE
.FUNCT V-BANK
EQUAL? PRSO,INTDIR \?CND1
ZERO? P-DIRECTION /?CND1
EQUAL? HERE,IN-SKY \?CND1
ICALL1 V-WALK
RTRUE
?CND1: ICALL1 NOT-FLYING
RTRUE
.FUNCT V-FLY
EQUAL? PRSO,ROOMS \?CND1
IN? PLAYER,SADDLE \?CND1
IN? SADDLE,DACT \?CND1
EQUAL? HERE,IN-SKY \?CND6
PRINTR "Try looking down."
?CND6: ICALL2 DO-WALK,P?UP
RTRUE
?CND1: PRINTI "Psst! Guess what? "
PRINT CANT
PRINTR "fly unassisted."
.FUNCT V-FLY-UP
EQUAL? PRSO,ROOMS \?CND1
IN? PLAYER,SADDLE \?CND1
IN? SADDLE,DACT \?CND1
ICALL2 DO-WALK,P?UP
RTRUE
?CND1: ICALL1 V-FLY
RTRUE
.FUNCT V-FLY-DOWN
EQUAL? PRSO,ROOMS \?CND1
IN? PLAYER,SADDLE \?CND1
IN? SADDLE,DACT \?CND1
ICALL2 DO-WALK,P?DOWN
RTRUE
?CND1: ICALL1 V-FLY
RTRUE
.FUNCT V-FOLD
ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-FOLLOW
ZERO? PRSO \?CND1
ICALL1 CANT-SEE-ANY
RETURN 2
?CND1: PRINTI "But "
EQUAL? PRSO,ME,WINNER \?CCL7
EQUAL? WINNER,PLAYER \?CCL10
PRINTI "you're"
JUMP ?CND8
?CCL10: ICALL2 THE-PRINT,WINNER
PRINTI " is"
?CND8: PRINT STR?534
RTRUE
?CCL7: ICALL1 THE-PRINT
FSET? PRSO,PLURAL \?CCL13
PRINTI " are"
JUMP ?CND11
?CCL13: PRINTI " is"
?CND11: CALL2 VISIBLE?,PRSO
ZERO? STACK \?CCL15
IN? PRSO,GLOBAL-OBJECTS \?CND5
?CCL15: PRINT STR?534
RTRUE
?CND5: PRINTI "n't visible"
PRINT AT-MOMENT
RTRUE
.FUNCT PRE-FEED
CALL2 PRE-GIVE,TRUE-VALUE
ZERO? STACK /FALSE
RTRUE
.FUNCT V-FEED
EQUAL? PRSI,ME,WINNER \?CCL3
EQUAL? WINNER,PLAYER \?CCL6
PRINTI "You"
JUMP ?CND1
?CCL6: ICALL2 CTHE-PRINT,WINNER
JUMP ?CND1
?CCL3: ICALL1 CTHEI-PRINT
?CND1: PRINTR " can't eat that."
.FUNCT V-SFEED
ICALL PERFORM,V?FEED,PRSI,PRSO
RTRUE
.FUNCT PRE-GIVE,FEED?
ZERO? PRSO /?CTR2
ZERO? PRSI \?CCL3
?CTR2: ICALL1 REFERRING
RTRUE
?CCL3: ZERO? LIT? \?CCL7
ICALL1 TOO-DARK
RTRUE
?CCL7: EQUAL? PRSO,PRSI \?CCL9
ICALL1 IMPOSSIBLE
RTRUE
?CCL9: IN? PRSI,GLOBAL-OBJECTS \?CCL11
ICALL1 IMPOSSIBLE
RTRUE
?CCL11: FSET? PRSI,LIVING /?CCL13
PRINT CANT
ZERO? FEED? /?CCL16
PRINTI "feed "
JUMP ?CND14
?CCL16: PRINTI "give "
?CND14: PRINTI "anything to "
ICALL2 PRINTA,PRSI
PRINT PERIOD
RTRUE
?CCL13: EQUAL? PRSO,MONEY,INTNUM /FALSE
EQUAL? PRSI,ME,WINNER \?CCL20
IN? PRSO,WINNER \?CND1
ICALL1 ALREADY-HAVE
RTRUE
?CCL20: CALL1 DONT-HAVE?
ZERO? STACK \TRUE
?CND1: FSET? PRSO,WORN \FALSE
IN? PRSO,WINNER \FALSE
CALL1 TAKE-OFF-PRSO-FIRST?
RSTACK
.FUNCT V-SGIVE
ICALL PERFORM,V?GIVE,PRSI,PRSO
RTRUE
.FUNCT V-GIVE
EQUAL? PRSI,ME \?CCL3
ICALL1 NOBODY-TO-ASK
RTRUE
?CCL3: FSET? PRSO,PERSON \?CND1
ICALL1 CTHEI-PRINT
PRINTR " shows little interest in your offer."
?CND1: ICALL2 NOT-LIKELY,PRSI
PRINTR " would accept your offer."
.FUNCT PRE-SHOW
ZERO? PRSO /?CTR2
ZERO? PRSI \?CCL3
?CTR2: ICALL1 REFERRING
RTRUE
?CCL3: ZERO? LIT? \?CCL7
ICALL1 TOO-DARK
RTRUE
?CCL7: EQUAL? PRSO,PRSI \?CCL9
ICALL1 IMPOSSIBLE
RTRUE
?CCL9: IN? PRSI,GLOBAL-OBJECTS \?CCL11
ICALL1 IMPOSSIBLE
RTRUE
?CCL11: FSET? PRSI,LIVING /?CCL13
PRINT CANT
PRINTI "show things to "
ICALL2 PRINTA,PRSI
PRINT PERIOD
RTRUE
?CCL13: EQUAL? PRSO,MONEY,INTNUM /FALSE
EQUAL? PRSI,ME,WINNER \?CCL17
IN? PRSO,WINNER \FALSE
ICALL1 ALREADY-HAVE
RTRUE
?CCL17: CALL1 DONT-HAVE?
ZERO? STACK /FALSE
RTRUE
.FUNCT V-SSHOW
ICALL PERFORM,V?SHOW,PRSI,PRSO
RTRUE
.FUNCT V-SHOW
ICALL1 CTHEI-PRINT
PRINTI " glance"
FSET? PRSI,PLURAL /?CND1
PRINTC 115
?CND1: PRINTI " at "
ICALL1 THE-PRINT
PRINTI ", but make"
FSET? PRSI,PLURAL /?CND3
PRINTC 115
?CND3: PRINTR " no comment."
.FUNCT V-REFUSE
FSET? PRSO,TAKEABLE /?CND1
ICALL1 WASTE-OF-TIME
RTRUE
?CND1: PRINTI "How could you turn down such a tempting "
ICALL2 DPRINT,PRSO
PRINTR "?"
.FUNCT V-HIDE
LOC ARCH
EQUAL? HERE,STACK \?CCL3
PRINTI "[under "
ICALL2 THE-PRINT,ARCH
PRINT BRACKET
ICALL1 ENTER-ARCH
RTRUE
?CCL3: EQUAL? HERE,IN-GARDEN \?CND1
PRINTI "[behind "
ICALL2 THE-PRINT,BUSH
PRINT BRACKET
ICALL1 ENTER-BUSH
RTRUE
?CND1: PRINTR "There aren't any good hiding places here."
.FUNCT V-KICK
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
FSET? PRSO,MONSTER \?CND1
ICALL PERFORM,V?HIT,PRSO,FEET
RTRUE
?CND1: ICALL2 HACK-HACK,STR?535
RTRUE
.FUNCT V-BOUNCE
EQUAL? PRSO,ROOMS \?CND1
ICALL1 WASTE-OF-TIME
RTRUE
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-KNOCK
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
FSET? PRSO,DOORLIKE \?CCL5
FSET? PRSO,OPENED \?CND6
ICALL2 ITS-ALREADY,STR?518
RTRUE
?CND6: PRINTR "There's no answer."
?CCL5: FSET? PRSO,PERSON \?CND1
ICALL PERFORM,V?USE,PRSO
RTRUE
?CND1: ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-KISS
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-LAMP-OFF
EQUAL? PRSO,ROOMS \?CND1
EQUAL? WINNER,PLAYER \?CCL5
PRINTI "You pause"
JUMP ?CND3
?CCL5: ICALL2 CTHE-PRINT,WINNER
PRINTI " pauses"
?CND3: PRINTR " for a moment."
?CND1: ICALL2 V-LAMP-ON,TRUE-VALUE
RTRUE
.FUNCT V-LAMP-ON,OFF?
PRINT IMPOSSIBLY
PRINTI "turn that "
ZERO? OFF? /?CCL3
PRINTI "off"
JUMP ?CND1
?CCL3: PRINTI "on"
?CND1: EQUAL? PRSI,FALSE-VALUE,HANDS /?CND4
PRINTI ", "
ICALL2 DPRINT,PRSI
PRINTI " or no "
ICALL2 DPRINT,PRSI
?CND4: PRINT PERIOD
RTRUE
.FUNCT V-LEAP
EQUAL? PRSO,ROOMS /?CCL3
PRINTR "That'd be a cute trick."
?CCL3: EQUAL? HERE,OVER-JUNGLE \?CCL5
ICALL1 JUNGLE-JUMP
RTRUE
?CCL5: EQUAL? HERE,ON-BRIDGE \?CND1
ICALL1 JUMP-OFF-BRIDGE
RTRUE
?CND1: ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-LEAVE
FSET? PRSO,PLACE \?CCL3
ICALL1 NOT-IN
RTRUE
?CCL3: EQUAL? PRSO,ROOMS /?CTR4
FSET? PRSO,TAKEABLE /?CCL5
?CTR4: ICALL2 DO-WALK,P?OUT
RTRUE
?CCL5: CALL1 DONT-HAVE?
ZERO? STACK \TRUE
ICALL PERFORM,V?DROP,PRSO
RTRUE
.FUNCT V-SLEEP
ICALL1 V-LIE-DOWN
RTRUE
.FUNCT V-LIE-DOWN
PRINTR "This is no time for that."
.FUNCT V-LISTEN,OBJ
EQUAL? PRSO,ROOMS,SOUND \?CCL3
GETP HERE,P?HEAR >OBJ
ZERO? OBJ \?CND4
PRINT DONT
PRINTI "hear anything "
CALL2 PICK-NEXT,YAWNS
PRINT STACK
PRINT PERIOD
RTRUE
?CND4: ICALL PERFORM,V?LISTEN,OBJ
RTRUE
?CCL3: FSET? PRSO,LIVING \?CND1
PRINTI "No doubt "
ICALL1 THE-PRINT
PRINTI " appreciate"
FSET? PRSO,PLURAL /?CND7
PRINTC 115
?CND7: PRINTR " your attention."
?CND1: PRINTI "At the moment, "
ICALL1 THE-PRINT
ICALL1 IS-ARE
PRINTR "silent."
.FUNCT V-LOCK
FSET? PRSO,OPENABLE /?CCL2
FSET? PRSO,CONTAINER \?CND1
?CCL2: FSET? PRSO,OPENED \?CCL7
ICALL2 YOUD-HAVE-TO,STR?536
RTRUE
?CCL7: FSET? PRSO,LOCKED \?CND5
ICALL1 CTHE-PRINT
ICALL1 IS-ARE
PRINTR "already locked."
?CND5: ICALL THING-WONT-LOCK,PRSI,PRSO
RTRUE
?CND1: ICALL1 CANT-LOCK
RTRUE
.FUNCT V-UNLOCK
FSET? PRSO,OPENABLE /?CCL2
FSET? PRSO,CONTAINER \?CND1
?CCL2: FSET? PRSO,OPENED /?CCL6
FSET? PRSO,LOCKED /?CND5
?CCL6: ICALL1 CTHE-PRINT
ICALL1 ISNT-ARENT
PRINTR " locked."
?CND5: ICALL THING-WONT-LOCK,PRSI,PRSO,TRUE-VALUE
RTRUE
?CND1: ICALL2 CANT-LOCK,TRUE-VALUE
RTRUE
.FUNCT CANT-LOCK,UN?
PRINT CANT
ZERO? UN? /?CND1
PRINTI "un"
?CND1: PRINTI "lock "
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT THING-WONT-LOCK,THING,CLOSED-THING,UN?
ICALL2 NOT-LIKELY,THING
PRINTI " could "
ZERO? UN? /?CND1
PRINTI "un"
?CND1: PRINTI "lock "
ICALL2 THE-PRINT,CLOSED-THING
PRINT PERIOD
RTRUE
.FUNCT V-UNTIE
PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-LOOK-ON
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RETURN 2
?CCL3: FSET? PRSO,SURFACE \?CCL7
PRINT YOU-SEE
ICALL1 CONTENTS
PRINT SON
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CCL7: FSET? PRSO,READABLE \?CND1
ICALL1 CTHE-PRINT
ICALL1 IS-ARE
PRINTR "undecipherable."
?CND1: ICALL1 NOTHING-INTERESTING
PRINT SON
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-LOOK-BEHIND
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RETURN 2
?CCL3: FSET? PRSO,DOORLIKE \?CND1
FSET? PRSO,OPENED \?CND7
ICALL1 CANT-SEE-MUCH
RTRUE
?CND7: ICALL1 ITS-CLOSED
RTRUE
?CND1: PRINT NOTHING
PRINTI "behind "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-LOOK-DOWN,X
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RTRUE
?CCL3: FSET? PRSO,PLACE \?CCL5
ICALL1 CANT-SEE-MUCH
RTRUE
?CCL5: EQUAL? PRSO,ROOMS \?CND1
GETP HERE,P?BELOW >X
ZERO? X /?CCL9
ICALL PERFORM,V?EXAMINE,X
RTRUE
?CCL9: FSET? HERE,INDOORS \?CND7
ICALL PERFORM,V?EXAMINE,FLOOR
RTRUE
?CND7: ICALL PERFORM,V?EXAMINE,GROUND
RTRUE
?CND1: ICALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
.FUNCT V-LOOK-UP,X
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RETURN 2
?CCL3: EQUAL? PRSO,ROOMS \?CND1
GETP HERE,P?OVERHEAD >X
ZERO? X /?CND7
ICALL PERFORM,V?EXAMINE,X
RTRUE
?CND7: ICALL1 NOTHING-INTERESTING
PRINT PERIOD
RTRUE
?CND1: PRINT CANT
PRINTI "look up "
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-LOOK-INSIDE
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RTRUE
?CCL3: FSET? PRSO,PLACE \?CCL5
ICALL1 CANT-SEE-MUCH
RTRUE
?CCL5: FSET? PRSO,PERSON \?CCL7
ICALL2 NOT-A,STR?537
RTRUE
?CCL7: FSET? PRSO,LIVING \?CCL9
ICALL2 NOT-A,STR?538
RTRUE
?CCL9: FSET? PRSO,CONTAINER \?CCL11
FSET? PRSO,OPENED /?CCL14
FSET? PRSO,TRANSPARENT /?CCL14
ICALL1 ITS-CLOSED
RTRUE
?CCL14: CALL1 SEE-ANYTHING-IN?
ZERO? STACK /?CND12
PRINT YOU-SEE
ICALL1 CONTENTS
PRINT SIN
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CND12: ICALL1 CTHE-PRINT
PRINTR " is empty."
?CCL11: FSET? PRSO,DOORLIKE \?CND1
FSET? PRSO,OPENED \?CND19
ICALL1 CANT-SEE-MUCH
RTRUE
?CND19: ICALL1 ITS-CLOSED
RTRUE
?CND1: PRINT CANT
PRINTI "look inside "
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-LOOK-OUTSIDE
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RTRUE
?CCL3: EQUAL? PRSO,ROOMS \?CCL5
FSET? HERE,INDOORS \?CCL8
ICALL1 NOTHING-INTERESTING
PRINTC SP
JUMP ?CND6
?CCL8: PRINT ALREADY
?CND6: PRINTB W?OUTSIDE
PRINT PERIOD
RTRUE
?CCL5: FSET? PRSO,DOORLIKE \?CND1
FSET? PRSO,OPENED \?CND10
ICALL1 CANT-SEE-MUCH
RTRUE
?CND10: ICALL1 ITS-CLOSED
RTRUE
?CND1: PRINT CANT
PRINTI "look out of "
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-SLOOK-THRU
ICALL PERFORM,V?LOOK-THRU,PRSI,PRSO
RTRUE
.FUNCT V-LOOK-THRU
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RETURN 2
?CCL3: ZERO? PRSI /?CND1
FSET? PRSI,TRANSPARENT /?CND1
PRINT CANT
PRINTR "look through that."
?CND1: ICALL1 NOTHING-INTERESTING
PRINT PERIOD
RTRUE
.FUNCT V-LOOK-UNDER
ZERO? LIT? \?CND1
ICALL1 TOO-DARK
RETURN 2
?CND1: ICALL1 NOTHING-INTERESTING
PRINTI " under "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-WEDGE
ICALL PERFORM,V?LOOSEN,PRSI,PRSO
RTRUE
.FUNCT V-LOOSEN
ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-LOWER
EQUAL? PRSO,ROOMS \?CND1
ICALL2 DO-WALK,P?DOWN
RTRUE
?CND1: ICALL1 V-RAISE
RTRUE
.FUNCT V-MAKE
ICALL1 HOW?
RTRUE
.FUNCT V-MELT
ICALL1 HOW?
RTRUE
.FUNCT V-MOVE
EQUAL? PRSO,ROOMS \?CCL3
ICALL1 V-WALK-AROUND
RTRUE
?CCL3: FSET? PRSO,TAKEABLE \?CND1
PRINTI "Moving "
ICALL1 THE-PRINT
PRINTI " would"
CALL2 PICK-NEXT,HO-HUM
PRINT STACK
PRINT PERIOD
RTRUE
?CND1: PRINT IMPOSSIBLY
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-MUNG
FSET? PRSO,MONSTER \?CCL3
ICALL PERFORM,V?HIT,PRSO,PRSI
RTRUE
?CCL3: CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL2 HACK-HACK,STR?539
RTRUE
.FUNCT V-PICK
FSET? PRSO,OPENABLE \?CND1
ICALL2 NOT-A,STR?540
RTRUE
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-POINT
ZERO? PRSI /?CND1
FSET? PRSI,PERSON \?CND3
ICALL1 CTHEI-PRINT
EQUAL? PRSO,PRSI \?CND5
PRINTR " looks confused."
?CND5: PRINT GLANCES-AT
ICALL1 THE-PRINT
PRINTR ", but doesn't respond."
?CND3: ICALL2 NOT-LIKELY,PRSI
PRINT STR?509
RTRUE
?CND1: PRINTI "You point at "
ICALL1 THE-PRINT
ICALL1 NOTHING-HAPPENS
RTRUE
.FUNCT NOTHING-HAPPENS,BUT
ASSIGNED? 'BUT /?CND1
SET 'BUT,TRUE-VALUE
?CND1: ZERO? BUT \?CCL5
PRINTC 78
JUMP ?CND3
?CCL5: PRINTI ", but n"
?CND3: PRINTI "othing "
CALL2 PICK-NEXT,YAWNS
PRINT STACK
PRINTR " happens."
.FUNCT V-SPOINT-AT
ICALL PERFORM,V?POINT-AT,PRSI,PRSO
RTRUE
.FUNCT PRE-POINT-AT
ZERO? LIT? \FALSE
EQUAL? PRSI,FALSE-VALUE,ME /FALSE
ICALL1 TOO-DARK
RTRUE
.FUNCT V-POINT-AT
EQUAL? PRSO,ME,HANDS \?CND1
ICALL1 V-POINT
RTRUE
?CND1: PRINT CYOU
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINTI " at "
ICALL1 THEI-PRINT
ICALL1 NOTHING-HAPPENS
RTRUE
.FUNCT V-POP
PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-POUR
EQUAL? PRSO,HANDS \?CCL3
PRINTI "[To do that, just DROP EVERYTHING.]"
CRLF
RETURN 2
?CCL3: FSET? PRSO,SURFACE \?CCL7
ICALL2 EMPTY-PRSO,GROUND
RTRUE
?CCL7: FSET? PRSO,CONTAINER \?CND1
FSET? PRSO,OPENED \?CND9
ICALL2 EMPTY-PRSO,GROUND
RTRUE
?CND9: ICALL1 ITS-CLOSED
RTRUE
?CND1: PRINT CANT
PRINTR "empty that."
.FUNCT V-POUR-FROM
EQUAL? PRSO,PRSI \?CCL3
ICALL1 IMPOSSIBLE
RTRUE
?CCL3: EQUAL? PRSI,HANDS \?CCL5
ICALL PERFORM,V?DROP,PRSO
RTRUE
?CCL5: FSET? PRSI,CONTAINER /?CCL7
FSET? PRSI,SURFACE /?CCL7
PRINT CANT
PRINTB P-PRSA-WORD
PRINTI " things from "
ICALL2 PRINTA,PRSI
PRINT PERIOD
RTRUE
?CCL7: FSET? PRSI,CONTAINER \?CCL11
FSET? PRSI,OPENED /?CCL11
ICALL2 ITS-CLOSED,PRSI
RTRUE
?CCL11: IN? PRSO,PRSI \?CND1
FSET? PRSO,TAKEABLE \?CND15
ICALL1 CTHE-PRINT
PRINTC SP
ICALL1 FALLS
RTRUE
?CND15: ICALL1 IMPOSSIBLE
RTRUE
?CND1: ICALL1 CTHE-PRINT
PRINTI " isn't in "
ICALL1 THEI-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-EMPTY-INTO
EQUAL? PRSI,HANDS,ME \?CCL3
ICALL1 V-EMPTY
RTRUE
?CCL3: EQUAL? PRSI,GROUND,FLOOR,GLOBAL-ROOM \?CCL5
EQUAL? HERE,IN-SKY \?CND6
ICALL1 CANT-FROM-HERE
RTRUE
?CND6: LOC WINNER
ICALL2 V-EMPTY,STACK
RTRUE
?CCL5: FSET? PRSI,SURFACE \?CCL9
ICALL2 V-EMPTY,PRSI
RTRUE
?CCL9: FSET? PRSI,CONTAINER \?CND1
FSET? PRSI,OPENED \?CND11
ICALL2 V-EMPTY,PRSI
RTRUE
?CND11: ICALL2 ITS-CLOSED,PRSI
RTRUE
?CND1: PRINT CANT
PRINTI "empty "
ICALL1 THE-PRINT
ICALL2 ON-IN,PRSI
PRINT PERIOD
RTRUE
.FUNCT V-EMPTY,DEST
FSET? PRSO,PERSON /?CND1
FSET? PRSO,LIVING /?CND1
FSET? PRSO,MONSTER /?CND1
FSET? PRSO,SURFACE \?CCL6
ICALL2 EMPTY-PRSO,DEST
RTRUE
?CCL6: FSET? PRSO,CONTAINER \?CND1
FSET? PRSO,OPENED \?CND8
ICALL2 EMPTY-PRSO,DEST
RTRUE
?CND8: ICALL1 ITS-CLOSED
RTRUE
?CND1: PRINT IMPOSSIBLY
PRINTI "empty "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT EMPTY-PRSO,DEST,ANY,OBJ,NXT,X,ICAP,ILOAD,OSIZE
ZERO? DEST /?CCL3
LOC DEST >X
ZERO? X /?CTR5
EQUAL? PRSO,DEST \?CCL6
?CTR5: ICALL1 IMPOSSIBLE
RTRUE
?CCL6: EQUAL? X,PRSO /?CCL9
IN? X,PRSO \?CND1
?CCL9: ICALL YOUD-HAVE-TO,STR?541,DEST
RTRUE
?CCL3: SET 'DEST,WINNER
?CND1: CALL1 SEE-ANYTHING-IN?
ZERO? STACK \?CND12
PRINTI "There's nothing"
ICALL1 ON-IN
PRINT PERIOD
RTRUE
?CND12: SET 'P-MULT?,TRUE-VALUE
LOC WINNER
EQUAL? DEST,WINNER,STACK /?CND14
CALL2 WEIGHT,DEST >ILOAD
GETP DEST,P?SIZE
SUB ILOAD,STACK >ILOAD
GETP DEST,P?CAPACITY >ICAP
?CND14: FIRST? PRSO >OBJ \?CND16
?PRG18: NEXT? OBJ >NXT /?BOGUS20
?BOGUS20: FSET? OBJ,TAKEABLE \?CND21
FSET? OBJ,NODESC /?CND21
INC 'ANY
GETP OBJ,P?SIZE >OSIZE
FSET? OBJ,NOARTICLE /?CND24
PRINT XTHE
?CND24: ICALL2 DPRINT,OBJ
PRINTI ": "
EQUAL? DEST,WINNER \?CCL28
CALL PERFORM,V?TAKE,OBJ,PRSO >X
EQUAL? X,M-FATAL /?CND16
JUMP ?CND21
?CCL28: LOC WINNER
EQUAL? DEST,STACK \?CCL32
FSET? OBJ,PLURAL \?CCL35
PRINTI "They "
JUMP ?CND33
?CCL35: PRINTI "It "
?CND33: ICALL2 FALLS,OBJ
JUMP ?CND21
?CCL32: GRTR? OSIZE,ICAP \?CCL37
ICALL2 CTHE-PRINT,OBJ
ICALL2 IS-ARE,OBJ
PRINTI "too big to fit in "
ICALL2 THE-PRINT,DEST
PRINT PERIOD
JUMP ?CND21
?CCL37: ADD ILOAD,OSIZE
GRTR? STACK,ICAP \?CCL39
ICALL2 NO-ROOM-IN,DEST
JUMP ?CND21
?CCL39: FCLEAR OBJ,WIELDED
MOVE OBJ,DEST
PRINTI "Done."
CRLF
?CND21: SET 'OBJ,NXT
ZERO? OBJ \?PRG18
?CND16: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
SET 'P-MULT?,FALSE-VALUE
ZERO? ANY \TRUE
PRINT NOTHING
PRINTR "you can take."
.FUNCT V-PULL
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL2 HACK-HACK,STR?542
RTRUE
.FUNCT V-PUSH
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL2 HACK-HACK,STR?543
RTRUE
.FUNCT V-PUSH-TO
EQUAL? PRSO,HANDS \?CND1
ZERO? PRSI /?CND1
ICALL PERFORM,V?REACH-IN,PRSI
RTRUE
?CND1: ICALL1 PUSHOVER
RTRUE
.FUNCT PUSHOVER
PRINT CANT
PRINTI "push "
ICALL1 THE-PRINT
PRINTR " around like that."
.FUNCT V-PUSH-UP
EQUAL? PRSO,HANDS \?CND1
ZERO? PRSI /?CND1
ICALL PERFORM,V?RAISE,PRSI
RTRUE
?CND1: ICALL1 PUSHOVER
RTRUE
.FUNCT V-PUSH-DOWN
EQUAL? PRSO,HANDS \?CND1
ZERO? PRSI /?CND1
ICALL PERFORM,V?LOWER,PRSI
RTRUE
?CND1: ICALL1 PUSHOVER
RTRUE
.FUNCT PRE-PUT,L
LOC PRSO >L
EQUAL? PRSO,PRSI \?CCL3
ICALL1 HOW?
RTRUE
?CCL3: EQUAL? PRSI,INTDIR,RIGHT,LEFT \?CCL5
ICALL1 NYMPH-APPEARS
PRINTI "You really must specify an object"
PRINT STR?515
RTRUE
?CCL5: EQUAL? PRSI,HANDS,HEAD \?CCL7
EQUAL? PRSI,HEAD \?CND8
EQUAL? PRSO,HELM \?CND8
ICALL PERFORM,V?WEAR,PRSO
RTRUE
?CND8: ICALL1 NOT-LIKELY
PRINTR " would fit very well."
?CCL7: EQUAL? FEET,PRSO,PRSI /?CTR12
EQUAL? HEAD,PRSO,PRSI \?CCL13
?CTR12: ICALL1 WASTE-OF-TIME
RTRUE
?CCL13: ZERO? LIT? \?CND1
EQUAL? PRSI,GRUE,URGRUE \?CCL18
CALL2 WEARING-MAGIC?,HELM
ZERO? STACK \?CND1
?CCL18: IN? PRSI,WINNER /?CND1
ICALL1 TOO-DARK
RTRUE
?CND1: EQUAL? PRSO,MONEY,INTNUM \?CCL24
ICALL1 BENJAMIN
RTRUE
?CCL24: EQUAL? PRSI,GROUND,FLOOR \?CCL26
ICALL PERFORM,V?DROP,PRSO
RTRUE
?CCL26: IN? PRSI,GLOBAL-OBJECTS \?CCL28
ICALL1 IMPOSSIBLE
RTRUE
?CCL28: EQUAL? PRSO,HANDS \?CCL30
ICALL PERFORM,V?REACH-IN,PRSI
RTRUE
?CCL30: EQUAL? L,PRSI \?CCL32
ICALL1 CTHE-PRINT
ICALL1 IS-ARE
PRINTI "already"
ICALL2 ON-IN,PRSI
PRINT PERIOD
RTRUE
?CCL32: EQUAL? PRSO,PRSI /?CTR33
EQUAL? L,GLOBAL-OBJECTS /?CTR33
FSET? PRSO,TAKEABLE /?CCL34
?CTR33: ICALL1 IMPOSSIBLE
RTRUE
?CCL34: CALL2 ACCESSIBLE?,PRSI
ZERO? STACK \?CCL39
ICALL2 CANT-SEE-ANY,PRSI
RTRUE
?CCL39: FSET? PRSO,WORN \?CCL41
EQUAL? L,WINNER \?CCL41
EQUAL? PRSI,ME,WINNER /?CCL41
CALL1 TAKE-OFF-PRSO-FIRST?
RSTACK
?CCL41: IN? L,WINNER \FALSE
CALL2 VISIBLE?,PRSO
ZERO? STACK /FALSE
ICALL2 TAKING-OBJ-FIRST,PRSO
CALL1 ITAKE
ZERO? STACK /TRUE
RFALSE
.FUNCT TAKE-OFF-PRSO-FIRST?,X
GETP PRSO,P?EFFECT >X
ZERO? X /?CND1
EQUAL? PRSO,CLOAK /?CND1
IN? CLOAK,PLAYER \?CND1
FSET? CLOAK,WORN \?CND1
ICALL YOUD-HAVE-TO,STR?520,CLOAK
RTRUE
?CND1: FCLEAR PRSO,WORN
BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
PRINTI "[taking off "
ICALL1 THE-PRINT
PRINTI " first]"
CRLF
EQUAL? PRSO,AMULET \?CCL9
ZERO? AMULET-TIMER /?CCL9
ICALL1 NORMAL-STRENGTH
RTRUE
?CCL9: CALL2 HOTFOOT?,TRUE-VALUE
ZERO? STACK \TRUE
EQUAL? PRSO,HELM \?CND7
FSET? PRSO,NEUTRALIZED /?CND7
ICALL1 NORMAL-IQ
?CND7: ZERO? X /?CND17
SUB 0,X
ICALL UPDATE-STAT,STACK,ARMOR-CLASS
?CND17: PRINT TAB
RFALSE
.FUNCT PRE-PUT-ON
CALL1 PRE-PUT
ZERO? STACK \TRUE
EQUAL? PRSI,CHEST /FALSE
FSET? PRSI,SURFACE /FALSE
ICALL1 NO-GOOD-SURFACE
RTRUE
.FUNCT NO-GOOD-SURFACE,OBJ
ASSIGNED? 'OBJ /?CND1
SET 'OBJ,PRSI
?CND1: PRINTI "There's no good surface on "
ICALL2 THE-PRINT,OBJ
PRINT PERIOD
RTRUE
.FUNCT V-PUT-ON
EQUAL? PRSI,ME \?CND1
ICALL PERFORM,V?WEAR,PRSO
RTRUE
?CND1: ICALL1 V-PUT
RTRUE
.FUNCT V-PUT,OL,ICAP,ILOAD,OSIZE
LOC PRSO >OL
ZERO? OL /?CTR2
ZERO? PRSI /?CCL3
FSET? PRSI,SURFACE /?CCL3
FSET? PRSI,CONTAINER /?CCL3
?CTR2: ICALL1 IMPOSSIBLE
RTRUE
?CCL3: FSET? PRSI,OPENED /?CCL10
FSET? PRSI,SURFACE /?CCL10
ICALL2 THIS-IS-IT,PRSI
ICALL1 CTHEI-PRINT
ICALL2 ISNT-ARENT,PRSI
PRINTR " open."
?CCL10: EQUAL? OL,WINNER /?CND1
PRINTI "Maybe you should take "
ICALL1 THE-PRINT
ICALL2 OUT-OF-LOC,OL
PRINT SFIRST
RTRUE
?CND1: CALL2 WEIGHT,PRSI >ILOAD
GETP PRSI,P?SIZE
SUB ILOAD,STACK >ILOAD
GETP PRSI,P?CAPACITY >ICAP
GETP PRSO,P?SIZE >OSIZE
GRTR? OSIZE,ICAP \?CCL16
ICALL1 CTHE-PRINT
ICALL1 IS-ARE
PRINTI "too big to fit"
ICALL2 ON-IN,PRSI
PRINT PERIOD
RTRUE
?CCL16: ADD ILOAD,OSIZE
GRTR? STACK,ICAP \?CND14
ICALL2 NO-ROOM-IN,PRSI
RTRUE
?CND14: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
FCLEAR PRSO,WIELDED
MOVE PRSO,PRSI
FSET PRSO,TOUCHED
ZERO? P-MULT? /?CND18
PRINTR "Done."
?CND18: PRINTI "You put "
ICALL1 THE-PRINT
ICALL2 ON-IN,PRSI
PRINT PERIOD
RTRUE
.FUNCT NO-ROOM-IN,OBJ
PRINTI "There isn't enough room"
ICALL2 ON-IN,OBJ
PRINT PERIOD
RTRUE
.FUNCT V-PLUG-IN
PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 O-INTO-I
RTRUE
.FUNCT NEVER-FIT
PRINTI "You'd never fit "
ICALL1 O-INTO-I
RTRUE
.FUNCT O-INTO-I,NOCR
ICALL1 THE-PRINT
PRINT SINTO
ICALL1 THEI-PRINT
ASSIGNED? 'NOCR /FALSE
PRINT PERIOD
RFALSE
.FUNCT V-UNPLUG
ICALL1 CTHE-PRINT
ICALL1 ISNT-ARENT
PRINTI " connected to "
ZERO? PRSI /?CCL3
ICALL1 THEI-PRINT
JUMP ?CND1
?CCL3: PRINTI "anything"
?CND1: PRINT PERIOD
RTRUE
.FUNCT V-PUT-BEHIND
PRINTR "That hiding place is too obvious."
.FUNCT V-PUT-UNDER
PRINT CANT
PRINTR "put anything under that."
.FUNCT V-RAPE
PRINTR "What a wholesome idea."
.FUNCT V-RAISE
EQUAL? PRSO,ROOMS \?CCL3
ICALL1 V-STAND
RTRUE
?CCL3: CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL2 HACK-HACK,STR?544
RTRUE
.FUNCT V-REACH-IN,OBJ
FIRST? PRSO >OBJ /?BOGUS1
?BOGUS1: FSET? PRSO,PERSON /?CTR3
FSET? PRSO,LIVING \?CCL4
?CTR3: ICALL2 NOT-A,STR?537
RTRUE
?CCL4: FSET? PRSO,DOORLIKE \?CCL8
FSET? PRSO,OPENED \?CND9
ICALL1 REACH-INTO-PRSO
PRINTI ", but experience nothing "
CALL2 PICK-NEXT,YAWNS
PRINT STACK
PRINT PERIOD
RTRUE
?CND9: ICALL1 ITS-CLOSED
RTRUE
?CCL8: FSET? PRSO,CONTAINER /?CCL12
ICALL1 IMPOSSIBLE
RTRUE
?CCL12: FSET? PRSO,OPENED /?CCL14
PRINTR "It's not open."
?CCL14: IN? PRSO,PLAYER \?CCL16
FSET? PRSO,WORN \?CCL16
ICALL2 YOUD-HAVE-TO,STR?520
RTRUE
?CCL16: ZERO? OBJ /?CCL19
FSET? OBJ,TAKEABLE /?CND2
?CCL19: PRINT STR?545
RTRUE
?CND2: ICALL2 THIS-IS-IT,OBJ
ICALL1 REACH-INTO-PRSO
PRINTI " and feel "
PRINTB W?SOMETHING
PRINT PERIOD
RTRUE
.FUNCT REACH-INTO-PRSO
PRINTI "You reach into "
ICALL1 THE-PRINT
RTRUE
.FUNCT V-READ
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RETURN 2
?CCL3: FSET? PRSO,READABLE /?CND1
ICALL1 HOW-READ
PRINTR "?"
?CND1: PRINT NOTHING
PRINTR "written on it."
.FUNCT V-READ-TO
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RETURN 2
?CCL3: FSET? PRSO,READABLE /?CCL7
ICALL1 HOW-READ
PRINT STO
ICALL2 PRINTA,PRSI
PRINTR "?"
?CCL7: EQUAL? WINNER,PLAYER \?CND1
ICALL2 NOT-LIKELY,PRSI
PRINTR " would appreciate your reading."
?CND1: PRINTR "Maybe you ought to do it."
.FUNCT HOW-READ
PRINTI "How can you read "
ICALL1 PRINTA
RTRUE
.FUNCT V-RELEASE
IN? PRSO,WINNER \?CND1
ICALL PERFORM,V?DROP,PRSO
RTRUE
?CND1: EQUAL? PRSO,ME \?CCL5
PRINTI "You aren't"
JUMP ?CND3
?CCL5: ICALL1 CTHE-PRINT
ICALL1 ISNT-ARENT
?CND3: PRINTR " being held by anything."
.FUNCT V-REPLACE
EQUAL? PRSO,ME \?CND1
PRINTR "Easily done."
?CND1: ICALL1 CTHE-PRINT
PRINTR " doesn't need replacement."
.FUNCT V-REPAIR
EQUAL? PRSO,ME \?CCL3
PRINTI "You aren't"
JUMP ?CND1
?CCL3: ICALL1 CTHE-PRINT
ICALL1 ISNT-ARENT
?CND1: PRINTR " in need of repair."
.FUNCT V-HELP
PRINTR "[If you're really stuck, maps and InvisiClues(TM) Hint Booklets are available at most Infocom dealers, or use the order form included in your game package.]"
.FUNCT V-RESCUE
EQUAL? PRSO,ME \?CND1
EQUAL? WINNER,PLAYER \?CND3
ICALL1 V-HELP
RTRUE
?CND3: ICALL1 HOW?
RTRUE
?CND1: ICALL1 CTHE-PRINT
FSET? PRSO,PLURAL \?CCL7
PRINTI " do"
JUMP ?CND5
?CCL7: PRINTI " does"
?CND5: PRINTR "n't need any help."
.FUNCT V-RIDE
FSET? PRSO,LIVING \?CCL3
ICALL1 NOT-LIKELY
PRINTR " wants to play piggyback."
?CCL3: FSET? PRSO,VEHICLE \?CND1
ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CND1: PRINT CANT
PRINTR "ride that."
.FUNCT V-TOUCH
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL2 HACK-HACK,STR?546
RTRUE
.FUNCT V-STOUCH-TO
ICALL PERFORM,V?TOUCH-TO,PRSI,PRSO
RTRUE
.FUNCT V-TOUCH-TO
CALL1 SPARK-TO?
ZERO? STACK \TRUE
PRINT CYOU
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINTI " against "
ICALL1 THEI-PRINT
ICALL1 NOTHING-HAPPENS
RTRUE
.FUNCT V-SCRATCH
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
PRINT CYOU
PRINTB P-PRSA-WORD
PRINTI " your fingers across "
ICALL1 THE-PRINT
ICALL1 BUT-NOTHING-HAPPENS
RTRUE
.FUNCT BUT-NOTHING-HAPPENS
PRINTI ", but nothing "
CALL2 PICK-NEXT,YAWNS
PRINT STACK
PRINTR " happens."
.FUNCT BUT-FIND-NOTHING
PRINTI ", but nothing "
CALL2 PICK-NEXT,YAWNS
PRINT STACK
PRINTR " turns up."
.FUNCT V-PEEL
PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-SCRAPE-ON
CALL1 SPARK-TO?
ZERO? STACK \TRUE
EQUAL? PRSO,HANDS \?CCL5
ICALL PERFORM,V?TOUCH,PRSI
RTRUE
?CCL5: EQUAL? PRSO,FEET \?CND1
ICALL PERFORM,V?KICK,PRSI
RTRUE
?CND1: PRINT CYOU
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
EQUAL? PRSI,FALSE-VALUE,HANDS /?CND7
PRINT SON
ICALL1 THEI-PRINT
?CND7: ICALL1 NOTHING-HAPPENS
RTRUE
.FUNCT V-BOW
ICALL2 HACK-HACK,STR?547
RTRUE
.FUNCT V-SEARCH
FSET? PRSO,PLACE \?CCL3
ICALL1 CANT-SEE-MUCH
RTRUE
?CCL3: FSET? PRSO,CONTAINER \?CCL5
FSET? PRSO,OPENED /?CND6
FSET? PRSO,TRANSPARENT /?CND6
ICALL2 YOUD-HAVE-TO,STR?518
RTRUE
?CND6: PRINT YOU-SEE
ICALL1 CONTENTS
PRINTI " inside "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CCL5: FSET? PRSO,SURFACE \?CCL11
PRINT YOU-SEE
ICALL1 CONTENTS
PRINT SON
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CCL11: FSET? PRSO,PERSON \?CND1
ICALL PERFORM,V?USE,PRSO
RTRUE
?CND1: ICALL1 NOTHING-INTERESTING
PRINT PERIOD
RTRUE
.FUNCT V-SHAKE
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
FSET? PRSO,PERSON \?CCL5
ICALL PERFORM,V?ALARM,PRSO
RTRUE
?CCL5: FSET? PRSO,TAKEABLE /?CND1
FSET? PRSO,TRYTAKE /?CND1
ICALL2 HACK-HACK,STR?548
RTRUE
?CND1: ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-SFIRE-AT
ICALL PERFORM,V?FIRE-AT,PRSI,PRSO
RTRUE
.FUNCT V-FIRE-AT
PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINTR " at anything."
.FUNCT V-ZAP-WITH
PRINT CANT
PRINTI "zap things with "
ICALL2 PRINTA,PRSI
PRINT PERIOD
RTRUE
.FUNCT V-SIT
EQUAL? PRSO,ROOMS \?CND1
EQUAL? HERE,IN-CHAPEL \?CND1
ICALL1 ENTER-PEW
RTRUE
?CND1: ICALL1 NO-PLACE-TO-PRSA
RTRUE
.FUNCT NO-PLACE-TO-PRSA
PRINTI "There's no place to "
PRINTB P-PRSA-WORD
PRINTR " here."
.FUNCT V-SMELL,X
EQUAL? PRSO,ROOMS \?CCL3
GETP HERE,P?ODOR >X
ZERO? X \?CND4
PRINT DONT
PRINTI "smell anything "
CALL2 PICK-NEXT,YAWNS
PRINT STACK
PRINT PERIOD
RTRUE
?CND4: ICALL PERFORM,V?SMELL,X
RTRUE
?CCL3: FSET? PRSO,LIVING /?CCL7
PRINTI "It"
JUMP ?CND1
?CCL7: FSET? PRSO,FEMALE \?CCL9
PRINTI "She"
JUMP ?CND1
?CCL9: PRINTI "He"
?CND1: PRINTI " smells just like "
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-PLANT
ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-UPROOT
ICALL1 CTHE-PRINT
PRINTR " isn't rooted anywhere."
.FUNCT V-SPIN
EQUAL? PRSO,ROOMS,ME \?CND1
PRINTR "You begin to feel a little dizzy."
?CND1: PRINT CANT
PRINTR "spin that."
.FUNCT V-SQUEEZE
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-DUCK
ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-STAND
EQUAL? PRSO,ROOMS \?CND1
IN? PLAYER,PEW \?CND1
ICALL1 EXIT-PEW
RTRUE
?CND1: ICALL1 ALREADY-STANDING
RTRUE
.FUNCT ALREADY-STANDING
PRINT ALREADY
PRINTR "standing."
.FUNCT V-STAND-ON
ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT V-STAND-UNDER
ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-SWING
ZERO? PRSI \?CND1
ICALL1 WASTE-OF-TIME
RTRUE
?CND1: ICALL PERFORM,V?HIT,PRSI,PRSO
RTRUE
.FUNCT V-DIVE
EQUAL? PRSO,ROOMS \?CND1
EQUAL? HERE,IN-SKY \?CND1
ICALL1 DISMOUNT-DACT
RTRUE
?CND1: ICALL1 V-SWIM
RTRUE
.FUNCT V-SWIM
EQUAL? PRSO,ROOMS \?CCL3
EQUAL? HERE,ON-BRIDGE \?CCL6
ICALL1 JUMP-OFF-BRIDGE
RTRUE
?CCL6: EQUAL? HERE,JUN0 \?CCL8
ICALL1 ENTER-QUICKSAND
RTRUE
?CCL8: EQUAL? HERE,ON-WHARF,AT-LEDGE,AT-BRINE \?CND4
ICALL2 DO-WALK,P?DOWN
RTRUE
?CND4: ICALL1 NO-PLACE-TO-PRSA
RTRUE
?CCL3: EQUAL? PRSO,INTDIR \?CND1
ZERO? P-DIRECTION /?CND1
EQUAL? WINNER,PLAYER \?CND1
PRINT CANT
PRINTB P-PRSA-WORD
PRINTR " that way from here."
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-SGET-FOR
ICALL PERFORM,V?TAKE,PRSI
RTRUE
.FUNCT V-GET-FOR
ICALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT V-TAKE-WITH
ICALL1 HOW?
RTRUE
.FUNCT V-TAKE-OFF,X
EQUAL? PRSO,ROOMS \?CCL3
LOC WINNER >X
EQUAL? P-PRSA-WORD,W?GET \?CND4
EQUAL? X,HERE /?CND4
FSET? X,VEHICLE \?CND4
ICALL PERFORM,V?EXIT,X
RTRUE
?CND4: ICALL1 V-WALK-AROUND
RTRUE
?CCL3: EQUAL? PRSO,HANDS,FEET \?CCL10
ICALL1 IMPOSSIBLE
RTRUE
?CCL10: FSET? PRSO,PLACE \?CCL12
ICALL1 NOT-IN
RTRUE
?CCL12: FSET? PRSO,TAKEABLE \?CCL14
LOC PRSO >X
ZERO? X \?CCL17
ICALL1 REFERRING
RTRUE
?CCL17: EQUAL? X,WINNER \?CCL19
FSET? PRSO,CLOTHING \?CCL19
FSET? PRSO,WORN \?CND22
CALL1 HOTFOOT?
ZERO? STACK \TRUE
ICALL1 TAKEOFF
GETP PRSO,P?EFFECT >X
ZERO? X /TRUE
SUB 0,X
ICALL UPDATE-STAT,STACK,ARMOR-CLASS
RTRUE
?CND22: PRINT STR?549
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CCL19: FSET? X,SURFACE /?CND15
ICALL1 CTHE-PRINT
PRINTR " isn't ""on"" anything."
?CND15: ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL14: FSET? PRSO,VEHICLE \?CND1
ICALL PERFORM,V?EXIT,PRSO
RTRUE
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT TAKEOFF
BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
FCLEAR PRSO,WORN
PRINTI "You take off "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT HOTFOOT?,INDENT
EQUAL? PRSO,RING \FALSE
ZERO? MAGMA-TIMER /FALSE
EQUAL? HERE,FOREST-EDGE,ON-TRAIL,ON-PEAK \FALSE
ASSIGNED? 'INDENT \?CND7
PRINT TAB
?CND7: PRINTI "You slip "
ICALL1 THE-PRINT
PRINTI " off "
PRINTD HANDS
PRINT PTAB
ICALL2 ITALICIZE,STR?500
PRINTI "! Your flesh bakes in the volcanic heat of the lava underfoot"
ICALL1 JIGS-UP
RTRUE
.FUNCT V-TASTE
ICALL PERFORM,V?EAT,PRSO
RTRUE
.FUNCT V-ADJUST
CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL1 CTHE-PRINT
PRINTR " doesn't need adjustment."
.FUNCT SILLY-SPEAK?
EQUAL? PRSO,FALSE-VALUE,ROOMS /FALSE
FSET? PRSO,PERSON /?CCL5
ICALL1 NOT-LIKELY
PRINT STR?509
ICALL1 PCLEAR
RTRUE
?CCL5: EQUAL? PRSO,ME,PRSI,WINNER \?CCL7
ICALL1 WASTE-OF-TIME
ICALL1 PCLEAR
RTRUE
?CCL7: ICALL2 THIS-IS-IT,PRSO
RFALSE
.FUNCT V-ASK-ABOUT
CALL1 SILLY-SPEAK?
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? WINNER,PRSI \?CCL7
ICALL1 WASTE-OF-TIME
RETURN 2
?CCL7: EQUAL? PRSO,ME /?CCL10
EQUAL? WINNER,PLAYER \?CND1
?CCL10: ICALL1 TALK-TO-SELF
RTRUE
?CND1: ICALL1 NO-RESPONSE
RTRUE
.FUNCT V-REPLY,WHO
CALL1 SILLY-SPEAK?
ZERO? STACK /?CND1
RETURN 2
?CND1: ICALL2 NO-RESPONSE,PRSO
RTRUE
.FUNCT V-QUESTION
EQUAL? WINNER,PLAYER \?CND1
ICALL TO-DO-THING-USE,STR?510,STR?511
RETURN 2
?CND1: ICALL1 NO-RESPONSE
RTRUE
.FUNCT V-ALARM
CALL1 SILLY-SPEAK?
ZERO? STACK /?CND1
RETURN 2
?CND1: EQUAL? PRSO,ROOMS,ME \?CCL7
PRINT ALREADY
PRINTR "wide awake."
?CCL7: FSET? PRSO,LIVING \?CND5
ICALL1 CTHE-PRINT
ICALL1 IS-ARE
PRINTR "already wide awake."
?CND5: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-YELL
EQUAL? PRSO,ROOMS \?CND1
PRINTI "You begin to get a sore throat."
CRLF
EQUAL? HERE,ON-WHARF \TRUE
PRINT TAB
ICALL1 NOT-DEAF
RTRUE
?CND1: ICALL1 V-SAY
RTRUE
.FUNCT V-LAUGH
EQUAL? PRSO,ROOMS \?CCL3
PRINTI "There's a place for people who "
PRINTB P-PRSA-WORD
PRINTR " without reason."
?CCL3: EQUAL? P-PRSA-WORD,W?INSULT,W?OFFEND \?CND1
FSET? PRSO,MONSTER \?CCL7
ICALL1 CTHE-PRINT
PRINTI " look"
FSET? PRSO,PLURAL /?CND8
PRINTC 115
?CND8: PRINTR " mad enough already."
?CCL7: FSET? PRSO,LIVING \?CND5
ICALL1 CTHE-PRINT
PRINTI " remain"
FSET? PRSO,PLURAL /?CND11
PRINTC 115
?CND11: PRINTR " silent. Maybe you should too."
?CND5: ICALL1 NOT-LIKELY
PRINTI " would be offended."
RTRUE
?CND1: ICALL1 V-SAY
RTRUE
.FUNCT PRE-NAME
ZERO? PRSI \?CCL3
ICALL2 SEE-MANUAL,STR?550
RTRUE
?CCL3: EQUAL? PRSI,QWORD /FALSE
ICALL2 HOLLOW-VOICE,STR?516
RTRUE
.FUNCT V-NAME,OBJ,TBL,WORD,BASE,LEN,PTR,CHAR,COMPLEX,BAD,ANY,X
ASSIGNED? 'OBJ /?CND1
SET 'OBJ,PRSO
?CND1: ICALL1 PCLEAR
GETP OBJ,P?NAME-TABLE >TBL
FSET? OBJ,NAMEABLE \?CTR4
ZERO? TBL \?CCL5
?CTR4: PRINTI "Alas; "
ICALL2 THE-PRINT,OBJ
FSET? PRSO,PERSON \?CND8
PRINTI " already ha"
FSET? PRSO,PLURAL \?CCL12
PRINTI "ve"
JUMP ?CND10
?CCL12: PRINTC 115
?CND10: PRINTR " a Name."
?CND8: PRINTR " cannot be Named."
?CCL5: FSET? OBJ,NAMED \?CND3
PRINTI "You've already assigned a Name to "
ICALL2 THE-PRINT,OBJ
PRINTI ". To alter that Name, you must first Unmake "
ICALL PRONOUN,OBJ,TRUE-VALUE
PRINTR ", a dangerous procedure requiring years of magical training. Someday, perhaps..."
?CND3: COPYT TBL,0,13
MUL P-QWORD,2
ADD P-LEXV,STACK >BASE
GETB BASE,2 >LEN
PUTB AUX-TABLE,0,LEN
GETB BASE,3
ADD P-INBUF,STACK >BASE
ADD AUX-TABLE,1
COPYT BASE,STACK,LEN
ADD LEN,1
PUTB AUX-TABLE,STACK,0
SET 'PTR,LEN
SET 'BAD,0
SET 'ANY,0
?PRG14: GETB AUX-TABLE,PTR >CHAR
GRTR? CHAR,96 \?CCL18
LESS? CHAR,123 \?CCL18
INC 'ANY
DLESS? 'PTR,1 \?PRG14
?REP15: ZERO? ANY /?CTR24
ZERO? BAD /?CCL25
?CTR24: ICALL2 HOLLOW-VOICE,STR?551
RTRUE
?CCL18: INC 'BAD
JUMP ?REP15
?CCL25: GRTR? LEN,11 \?CND23
ICALL2 HOLLOW-VOICE,STR?552
RTRUE
?CND23: SET 'PTR,1
?PRG29: GETB AUX-TABLE,PTR >CHAR
EQUAL? PTR,1 \?CND31
SUB CHAR,32 >CHAR
?CND31: PUTB TBL,PTR,CHAR
IGRTR? 'PTR,LEN \?PRG29
PUTB TBL,0,LEN
ADD LEN,1
PUTB TBL,STACK,0
CALL ADD-VOCAB,AUX-TABLE,OBJ >WORD
ICALL2 ADD-CAP?,WORD
FSET OBJ,NAMED
FSET OBJ,NOARTICLE
FSET OBJ,PROPER
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
PRINTI "You invoke the Spell of Naming, and the "
EQUAL? OBJ,BFLY \?CCL37
FSET? BFLY,MUNGED \?CCL37
PRINT STR?496
JUMP ?CND35
?CCL37: EQUAL? OBJ,PHASE \?CCL41
EQUAL? HERE,APLANE /?CCL41
PRINTB W?OUTLINE
JUMP ?CND35
?CCL41: PRINTD OBJ
?CND35: PRINTI " basks in the glow of a new-forged synonym. Henceforth, you may refer to "
ICALL PRONOUN,OBJ,TRUE-VALUE
PRINTI " as """
ICALL2 PRINT-TABLE,TBL
PRINT PERQ
RTRUE
.FUNCT ADD-VOCAB,TBL,OBJ,WRD,SYNS,SIBS,ELEN,CNT,BASE,LEN
GETPT OBJ,P?SYNONYM >SYNS
GET SYNS,0 >WRD
GETB VOCAB2,0 >SIBS
ADD SIBS,1
ADD VOCAB2,STACK
GETB STACK,0 >ELEN
ADD SIBS,2
ADD VOCAB2,STACK
GET STACK,0 >CNT
ADD SIBS,4
ADD VOCAB2,STACK >BASE
ZERO? CNT /?CND1
SUB 0,CNT
MUL ELEN,STACK
ADD BASE,STACK >BASE
?CND1: GETB TBL,0
ZWSTR TBL,STACK,1,BASE
ADD WRD,6 >TBL
SUB ELEN,6 >LEN
ADD BASE,6
COPYT TBL,STACK,LEN
DEC 'CNT
ADD SIBS,2
ADD VOCAB2,STACK
PUT STACK,0,CNT
PUT SYNS,1,BASE
RETURN BASE
.FUNCT V-GOODBYE
ICALL1 V-HELLO
RTRUE
.FUNCT V-HELLO
CALL1 SILLY-SPEAK?
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? PRSO,ROOMS \?CND1
ICALL1 TALK-TO-SELF
RTRUE
?CND1: ICALL2 NO-RESPONSE,PRSO
RTRUE
.FUNCT V-WAVE-AT
ICALL1 V-WHAT
RTRUE
.FUNCT V-REQUEST,L
LOC PRSO >L
CALL2 VISIBLE?,L
ZERO? STACK \?CCL3
ICALL1 CANT-SEE-ANY
RTRUE
?CCL3: FSET? L,PERSON \?CCL5
ICALL2 SPOKEN-TO,L
ICALL PERFORM,V?ASK-FOR,L,PRSO
RTRUE
?CCL5: FSET? PRSO,TAKEABLE /?CND1
FSET? PRSO,TRYTAKE /?CND1
ICALL1 NOT-LIKELY
PRINTR " could be moved."
?CND1: PRINT DONT
PRINTI "have to ask for "
ICALL1 THE-PRINT
PRINTI ". Just take "
FSET? PRSO,PLURAL \?CCL10
PRINTB W?THEM
JUMP ?CND8
?CCL10: PRINTB W?IT
?CND8: FSET? L,SURFACE /?CCL12
FSET? L,CONTAINER \?CND11
?CCL12: ICALL2 OUT-OF-LOC,L
?CND11: PRINT PERIOD
RTRUE
.FUNCT V-SASK-FOR
ICALL PERFORM,V?ASK-FOR,PRSI,PRSO
RTRUE
.FUNCT V-ASK-FOR
CALL1 SILLY-SPEAK?
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? WINNER,PRSI /?CCL6
FSET? PRSI,TAKEABLE /?CND1
?CCL6: ICALL1 IMPOSSIBLE
RTRUE
?CND1: ICALL2 NO-RESPONSE,PRSO
RTRUE
.FUNCT V-TELL
CALL1 SILLY-SPEAK?
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? PRSO,ME \?CCL7
EQUAL? WINNER,PLAYER \?CND1
ICALL1 TALK-TO-SELF
RTRUE
?CCL7: ICALL2 SEE-CHARACTER,PRSO
ZERO? P-CONT /?CND1
SET 'WINNER,PRSO
RTRUE
?CND1: ICALL2 NO-RESPONSE,PRSO
RTRUE
.FUNCT V-TELL-ABOUT
EQUAL? WINNER,PLAYER /?CND1
ICALL2 CTHE-PRINT,WINNER
EQUAL? PRSO,ME \?CND3
PRINTI " shrugs. ""I don't know anything about "
ICALL1 THEI-PRINT
PRINTR " you don't know."
?CND3: PRINTR " snorts. ""Don't be ridiculous."""
?CND1: ICALL1 V-WHAT
RTRUE
.FUNCT V-THANK
CALL1 SILLY-SPEAK?
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? WINNER,PLAYER \TRUE
EQUAL? PRSO,ME \?CND7
PRINTI "Self-congratulations"
ICALL1 WONT-HELP
RTRUE
?CND7: PRINTI "There's no need to thank "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-WHO
EQUAL? WINNER,PLAYER \?CND1
PRINTR "Who, indeed?"
?CND1: ICALL1 NO-RESPONSE
RTRUE
.FUNCT V-WHERE
EQUAL? WINNER,PLAYER \?CND1
CALL2 VISIBLE?,PRSO
ZERO? STACK /?CND3
FSET? PRSO,PLURAL \?CCL7
PRINTI "They're "
JUMP ?CND5
?CCL7: FSET? PRSO,FEMALE \?CCL9
PRINTI "She's "
JUMP ?CND5
?CCL9: FSET? PRSO,PERSON \?CCL11
PRINTI "He's "
JUMP ?CND5
?CCL11: PRINTI "It's "
?CND5: PRINTR "right here."
?CND3: PRINTR "Where, indeed?"
?CND1: ICALL1 NO-RESPONSE
RTRUE
.FUNCT V-WHAT
EQUAL? WINNER,PLAYER \?CND1
PRINTR "What, indeed?"
?CND1: ICALL1 NO-RESPONSE
RTRUE
.FUNCT NO-RESPONSE,OBJ
ASSIGNED? 'OBJ /?CND1
SET 'OBJ,WINNER
?CND1: ICALL1 PCLEAR
ICALL2 SEE-CHARACTER,OBJ
ICALL2 CTHE-PRINT,OBJ
PRINT STR?553
CRLF
RTRUE
.FUNCT V-THROUGH,X
EQUAL? PRSO,ROOMS \?CCL3
LOC PLAYER >X
FSET? X,VEHICLE \?CND4
ICALL PERFORM,V?ENTER,X
RTRUE
?CND4: ICALL2 DO-WALK,P?IN
RTRUE
?CCL3: FSET? PRSO,VEHICLE \?CCL7
ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL7: FSET? PRSO,LIVING \?CND1
ICALL1 V-RAPE
RTRUE
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-STHROW
ICALL PERFORM,V?THROW,PRSI,PRSO
RTRUE
.FUNCT PRE-THROW-OVER
CALL1 PRE-PUT
RSTACK
.FUNCT V-THROW-OVER
ICALL1 WASTE-OF-TIME
RTRUE
.FUNCT PRE-THROW
CALL1 PRE-PUT
RSTACK
.FUNCT V-THROW
FSET? PRSI,DOORLIKE \?CCL3
ICALL1 WASTE-OF-TIME
RTRUE
?CCL3: CALL1 IDROP
ZERO? STACK /TRUE
PRINTI "Thrown"
PRINT PTAB
ICALL1 CTHE-PRINT
PRINTI " lands on the "
FSET? HERE,INDOORS \?CCL7
PRINTD FLOOR
JUMP ?CND5
?CCL7: PRINTD GROUND
?CND5: PRINTR " nearby."
.FUNCT V-TIE
PRINT IMPOSSIBLY
PRINTI "tie "
ICALL1 THE-PRINT
ZERO? PRSI /?CND1
PRINT STO
ICALL1 THEI-PRINT
?CND1: PRINT PERIOD
RTRUE
.FUNCT V-TIE-UP
PRINT CANT
PRINTR "tie anything with that."
.FUNCT V-TURN
FSET? PRSO,TAKEABLE /?CCL3
FSET? PRSO,TRYTAKE /?CCL3
ICALL1 IMPOSSIBLE
RTRUE
?CCL3: CALL2 SPARK?,FALSE-VALUE
ZERO? STACK \TRUE
ICALL2 HACK-HACK,STR?554
RTRUE
.FUNCT V-TURN-TO
CALL2 VISIBLE?,PRSO
ZERO? STACK /?CND1
ICALL PERFORM,V?EXAMINE,PRSO
RTRUE
?CND1: PRINT DONT
PRINTI "see "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-WALK-AROUND
ICALL1 PCLEAR
PRINTR "Which way do you want to go?"
.FUNCT V-WALK-TO
EQUAL? PRSO,ROOMS \?CCL3
ICALL1 V-WALK-AROUND
RTRUE
?CCL3: EQUAL? PRSO,INTDIR \?CCL5
ICALL2 DO-WALK,P-DIRECTION
RTRUE
?CCL5: EQUAL? PRSO,RIGHT,LEFT \?CND1
ICALL1 MORE-SPECIFIC
RTRUE
?CND1: ICALL1 V-FOLLOW
RTRUE
.FUNCT V-WAIT,N,X
ASSIGNED? 'N /?CND1
SET 'N,3
?CND1: PRINTI "Time passes."
CRLF
?PRG3: ZERO? X \TRUE
LESS? N,1 /TRUE
CALL1 CLOCKER
ZERO? STACK /?CND5
SET 'X,TRUE-VALUE
SET 'CLOCK-WAIT?,TRUE-VALUE
?CND5: DEC 'N
JUMP ?PRG3
.FUNCT V-WAIT-FOR
EQUAL? PRSO,INTNUM \?CCL3
ZERO? P-NUMBER \?CCL6
SET 'CLOCK-WAIT?,TRUE-VALUE
ICALL1 IMPOSSIBLE
RTRUE
?CCL6: GRTR? P-NUMBER,120 \?CND4
SET 'CLOCK-WAIT?,TRUE-VALUE
PRINTR "[That's too long to WAIT.]"
?CND4: SUB P-NUMBER,1
ICALL2 V-WAIT,STACK
RTRUE
?CCL3: CALL2 VISIBLE?,PRSO
ZERO? STACK /?CND1
ICALL1 CTHE-PRINT
ICALL1 IS-ARE
PRINTR "already here."
?CND1: PRINTR "You may be waiting quite a while."
.FUNCT V-WEAR,X
IN? PRSO,WINNER \?CCL3
FSET? PRSO,WORN \?CCL3
PRINT ALREADY
PRINTI "wearing "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CCL3: FSET? PRSO,CLOTHING /?CCL7
PRINT CANT
PRINTI "wear "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
?CCL7: CALL1 DONT-HAVE?
ZERO? STACK \TRUE
ICALL1 PUTON
GETP PRSO,P?EFFECT >X
ZERO? X /TRUE
ICALL UPDATE-STAT,X,ARMOR-CLASS
RTRUE
.FUNCT PUTON
BOR NEW-DBOX,SHOWING-INV >NEW-DBOX
FSET PRSO,WORN
PRINTI "You put on "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT WEARING-MAGIC?,OBJ
IN? OBJ,PLAYER \FALSE
FSET? OBJ,WORN \FALSE
FSET? OBJ,NEUTRALIZED /FALSE
RTRUE
.FUNCT V-WIND
PRINT CANT
PRINTI "wind "
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT YOU-CLIMB-UP,NOCR
PRINT CYOU
RANDOM 100
LESS? 33,STACK /?CCL3
PRINTB W?ASCEND
JUMP ?CND1
?CCL3: RANDOM 100
LESS? 50,STACK /?CCL6
PRINTB W?CLAMBER
JUMP ?CND4
?CCL6: PRINTB W?CLIMB
?CND4: PRINTI " up"
?CND1: PRINTI " the steps."
CRLF
ZERO? NOCR \TRUE
ZERO? VERBOSITY /TRUE
CRLF
RTRUE
.FUNCT HACK-HACK,STR
PRINT STR
PRINTC SP
ICALL1 THE-PRINT
PRINTI " would"
CALL2 PICK-NEXT,HO-HUM
PRINT STACK
PRINT PERIOD
RTRUE
.FUNCT IMPOSSIBLE
CALL2 PICK-NEXT,YUKS
PRINT STACK
PRINT PERIOD
RTRUE
.FUNCT TOO-DARK
ICALL1 PCLEAR
PRINTR "It's too dark to see."
.FUNCT ITS-ALREADY,STR
PRINTI "It's already "
PRINT STR
PRINT PERIOD
RTRUE
.FUNCT REFERRING
PRINTR "[To what are you referring?]"
.FUNCT MORE-SPECIFIC
ICALL1 NYMPH-APPEARS
PRINTI "You really must be more specific"
PRINT STR?515
RTRUE
.FUNCT WASTE-OF-TIME
CALL2 PICK-NEXT,POINTLESS
PRINT STACK
PRINT PERIOD
RTRUE
.FUNCT WHAT-TALK?,WHO,OBJ
FSET WHO,SEEN
CALL2 VISIBLE?,OBJ
ZERO? STACK \FALSE
ICALL2 PERPLEXED,WHO
PRINTI "I'm afraid I'm not sure"
ICALL2 WHO-WHAT,OBJ
PRINTR "you're talking about."""
.FUNCT PERPLEXED,WHO,STR,X
ICALL1 PCLEAR
CALL2 PICK-NEXT,PUZZLES >STR
ICALL2 CTHE-PRINT,WHO
RANDOM 100 >X
LESS? X,33 \?CCL3
PRINTI " gives you a "
PRINT STR
PRINTI "ed look"
JUMP ?CND1
?CCL3: LESS? X,67 \?CCL5
RANDOM 100
LESS? 50,STACK /?CCL8
PRINTI " look"
JUMP ?CND6
?CCL8: PRINTI " appear"
?CND6: PRINTI "s "
RANDOM 100
LESS? 50,STACK /?CND9
RANDOM 100
LESS? 50,STACK /?CCL13
PRINTI "somewhat "
JUMP ?CND9
?CCL13: PRINTI "a bit "
?CND9: PRINT STR
PRINTI "ed"
JUMP ?CND1
?CCL5: PRINTI " looks at you with a "
PRINT STR
PRINTI "ed expression"
?CND1: PRINTI ". """
RTRUE
.FUNCT WHO-WHAT,OBJ
PRINTI " wh"
FSET? OBJ,PERSON \?CCL3
PRINTI "o "
RTRUE
?CCL3: FSET? OBJ,PLACE \?CND1
PRINTI "ere "
RTRUE
?CND1: PRINTI "at "
RTRUE
.FUNCT V-SWRAP
ICALL PERFORM,V?WRAP-AROUND,PRSI,PRSO
RTRUE
.FUNCT V-WRAP-AROUND
PRINT IMPOSSIBLY
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINTI " around "
ICALL1 THEI-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-DRESS
EQUAL? PRSO,ROOMS,ME \?CCL3
PRINTI "Try putting "
PRINTB W?SOMETHING
PRINTR " on."
?CCL3: FSET? PRSO,PERSON \?CND1
ICALL1 CTHE-PRINT
PRINTI " has all the clothing "
FSET? PRSO,FEMALE \?CND5
PRINTC 115
?CND5: PRINTR "he needs."
?CND1: PRINT CANT
PRINTI "dress "
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-UNDRESS,ANY,X,OBJ,NXT
EQUAL? PRSO,ROOMS,ME,WINNER \?CCL3
FIRST? WINNER >OBJ /?PRG5
?PRG5: ZERO? OBJ /?REP6
NEXT? OBJ >NXT /?BOGUS9
?BOGUS9: FSET? OBJ,WORN \?CND10
SET 'ANY,TRUE-VALUE
SET 'P-MULT?,TRUE-VALUE
CALL PERFORM,V?TAKE-OFF,OBJ >X
EQUAL? X,M-FATAL /?REP6
?CND10: SET 'OBJ,NXT
JUMP ?PRG5
?REP6: ZERO? ANY /?CND14
SET 'P-MULT?,FALSE-VALUE
ZERO? X /TRUE
RETURN X
?CND14: PRINT STR?549
PRINTR "anything unusual."
?CCL3: FSET? PRSO,PERSON \?CND1
ICALL1 INAPPROPRIATE
RTRUE
?CND1: PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-HANG,X
EQUAL? HERE,OUTSIDE-PUB,ON-BRIDGE \?CND1
SET 'X,PUB-SIGN
EQUAL? HERE,ON-BRIDGE \?CND3
SET 'X,ZBRIDGE
?CND3: PRINTI "[on "
ICALL2 THE-PRINT,X
PRINT BRACKET
ICALL PERFORM,V?HANG-ON,PRSO,X
RTRUE
?CND1: PRINT NOTHING
PRINTI "here on which to "
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-HANG-ON
ICALL1 CTHEI-PRINT
ICALL2 IS-ARE,PRSI
PRINTI "hardly suitable for "
PRINTB P-PRSA-WORD
PRINTR "ing things."
.FUNCT V-LURK
PRINTI "Leave the "
PRINTB P-PRSA-WORD
PRINTR "ing to the grues."
.FUNCT V-SAY
GET P-LEXV,P-CONT
CALL2 MAGICWORD?,STACK
ZERO? STACK \?CND1
ICALL1 TALK-TO-SELF
?CND1: ICALL1 PCLEAR
RTRUE
.FUNCT V-MAGIC
CALL1 MAGICWORD?
ZERO? STACK \TRUE
EQUAL? P-PRSA-WORD,W?DISPEL \?CND1
ICALL1 HOW?
RTRUE
?CND1: ICALL2 NOTHING-HAPPENS,FALSE-VALUE
RTRUE
.FUNCT V-ERASE-WITH
PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 THE-PRINT
EQUAL? PRSI,HANDS /?CND1
PRINT WITH
ICALL1 THEI-PRINT
?CND1: PRINT PERIOD
RTRUE
.FUNCT V-WRITE-ON
PRINTI "It would be difficult to "
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 PRINTA
PRINT SON
ICALL1 THEI-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-WRITE-WITH
ICALL2 NOT-LIKELY,PRSI
PRINTI " could "
PRINTB P-PRSA-WORD
PRINTI " anything on "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-CRANK
EQUAL? PRSO,ROOMS \?CND1
CALL2 VISIBLE?,GURDY
ZERO? STACK /?CND3
PRINTC 91
ICALL2 THE-PRINT,GURDY
PRINT BRACKET
SET 'LAST-CRANK-DIR,FALSE-VALUE
ICALL1 TURN-GURDY
RTRUE
?CND3: PRINT NOTHING
PRINTR "here to crank."
?CND1: PRINT CANT
PRINTI "crank "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT V-UNMAKE
PRINTR "Such magic lies far beyond your meager abilities."
.FUNCT V-SPELLS
PRINT DONT
PRINTI "know any. Few "
ICALL1 ANNOUNCE-RANK
PRINTR "s do."
.FUNCT DESCRIBE-MONEY,OBJ
PRINTI "your zorkmid"
EQUAL? LOOT,1 /TRUE
PRINTC 115
RTRUE
.FUNCT MONEY-F,X
ZERO? NOW-PRSI? /?CCL3
EQUAL? PRSA,V?TRADE-FOR \FALSE
EQUAL? HERE,IN-MAGICK,IN-BOUTIQUE,IN-WEAPON \FALSE
ICALL2 TRADE-FOR-LOOT,PRSO
RTRUE
?CCL3: EQUAL? PRSA,V?SPEND /TRUE
EQUAL? PRSA,V?FIND,V?BUY \?CCL11
PRINTR "Good luck."
?CCL11: ZERO? LOOT \?CCL13
PRINT STR?525
RETURN 2
?CCL13: EQUAL? PRSA,V?EXAMINE,V?COUNT \?CCL17
ICALL1 SAY-CASH
RTRUE
?CCL17: EQUAL? PRSA,V?WHAT \?CCL19
PRINTR "Zorkmids are the local unit of currency."
?CCL19: EQUAL? PRSA,V?DROP,V?EMPTY /?CCL20
INTBL? PRSA,PUTVERBS,NUMPUTS >X \?CND1
?CCL20: ICALL1 BENJAMIN
RTRUE
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT SAY-CASH
PRINTI "You have "
ICALL1 SAY-LOOT
PRINT PERIOD
RTRUE
.FUNCT NOT-ENOUGH-LOOT?,AMT
GRTR? AMT,LOOT \FALSE
PRINTI "You only have "
ICALL1 SAY-LOOT
PRINT PERIOD
RTRUE
.FUNCT SAY-LOOT,VAL
ASSIGNED? 'VAL /?CND1
SET 'VAL,LOOT
?CND1: PRINTN VAL
PRINTI " zorkmid"
EQUAL? VAL,1 /TRUE
PRINTC 115
RTRUE
.FUNCT BENJAMIN
PRINTR "A zorkmid saved is a zorkmid earned."
.FUNCT GIVING-LOOT?,OBJ,WHO
EQUAL? OBJ,MONEY,INTNUM \FALSE
ZERO? LOOT \?CND1
PRINT STR?525
RTRUE
?CND1: SET 'OBJ,LOOT
EQUAL? P-NUMBER,-1 /?CND5
CALL2 NOT-ENOUGH-LOOT?,P-NUMBER
ZERO? STACK \TRUE
SET 'OBJ,P-NUMBER
?CND5: ICALL2 CTHE-PRINT,WHO
PRINTI " gives you a bewildered look, shrugs, and accepts "
ICALL2 DPRINT,MONEY
SUB LOOT,OBJ >LOOT
PRINTR " without question."
.FUNCT PRE-BUY
ZERO? LIT? \?CCL3
ICALL1 TOO-DARK
RTRUE
?CCL3: ZERO? PRSI \FALSE
SET 'PRSI,MONEY
PRINTI "[with "
ICALL2 DPRINT,PRSI
PRINT BRACKET
RFALSE
.FUNCT V-SBUY
ICALL PERFORM,V?BUY,PRSI,PRSO
RTRUE
.FUNCT V-BUY
CALL2 VISIBLE?,PRSO
ZERO? STACK \?CCL3
ICALL1 NONE-FOR-SALE
RETURN 2
?CCL3: CALL1 HELD?
ZERO? STACK /?CCL7
ICALL1 ALREADY-HAVE
RTRUE
?CCL7: EQUAL? HERE,IN-MAGICK,IN-WEAPON,IN-BOUTIQUE \?CND1
ICALL1 BUY-X-WITH-Y
RTRUE
?CND1: ICALL1 NOT-LIKELY
PRINTR " is for sale."
.FUNCT NONE-FOR-SALE
PRINTR "There are none here to buy."
.FUNCT V-SPEND
EQUAL? PRSO,ROOMS,MONEY,INTNUM \?CND1
PRINTI "Easily done"
EQUAL? HERE,IN-MAGICK,IN-BOUTIQUE,IN-WEAPON \?CND3
PRINTI ", especially here"
?CND3: PRINT PERIOD
RTRUE
?CND1: ICALL1 IMPOSSIBLE
RTRUE
.FUNCT V-PAY
ICALL PERFORM,V?GIVE,PRSI,PRSO
RTRUE
.FUNCT V-BUY-FROM
CALL2 VISIBLE?,PRSO
ZERO? STACK \?CCL3
ICALL1 NONE-FOR-SALE
RETURN 2
?CCL3: CALL1 HELD?
ZERO? STACK /?CCL7
ICALL1 ALREADY-HAVE
RTRUE
?CCL7: EQUAL? PRSI,OWOMAN,MCASE,BCASE /?CCL8
EQUAL? PRSI,WCASE \?CND1
?CCL8: ICALL1 BUY-X-WITH-Y
RTRUE
?CND1: ICALL2 NOT-LIKELY,PRSI
PRINTI " could sell you "
ICALL1 THE-PRINT
PRINT PERIOD
RTRUE
.FUNCT PRE-TRADE-FOR
CALL1 PRE-SELL-TO
ZERO? STACK \TRUE
IN? PRSI,WINNER \FALSE
ICALL2 ALREADY-HAVE,PRSI
RTRUE
.FUNCT V-TRADE-FOR,L
LOC PRSI >L
ZERO? L \?CCL3
ICALL1 IMPOSSIBLE
RTRUE
?CCL3: EQUAL? HERE,IN-MAGICK,IN-BOUTIQUE,IN-WEAPON \?CCL5
ICALL BUY-X-WITH-Y,PRSI,PRSO
RTRUE
?CCL5: FSET? L,PERSON \?CND1
ICALL2 CTHE-PRINT,L
PRINTI " seems reluctant to give up "
ICALL1 THEI-PRINT
PRINT PERIOD
RTRUE
?CND1: PRINTI "Why not just pick up "
ICALL1 THEI-PRINT
PRINTR " instead?"
.FUNCT PRE-SELL-TO
ZERO? PRSI \?CND1
IN? OWOMAN,HERE \?CND1
ICALL PERFORM,PRSA,PRSO,OWOMAN
RTRUE
?CND1: EQUAL? FALSE-VALUE,PRSO,PRSI \?CCL7
ICALL1 REFERRING
RTRUE
?CCL7: ZERO? LIT? \?CCL9
ICALL1 TOO-DARK
RTRUE
?CCL9: EQUAL? PRSO,PRSI \?CCL11
ICALL1 IMPOSSIBLE
RTRUE
?CCL11: EQUAL? PRSI,MONEY,INTNUM /FALSE
IN? PRSI,GLOBAL-OBJECTS /?CTR14
FSET? PRSO,TAKEABLE /?CCL15
FSET? PRSO,TRYTAKE /?CCL15
?CTR14: ICALL1 IMPOSSIBLE
RTRUE
?CCL15: FSET? PRSO,WORN \FALSE
IN? PRSO,WINNER \FALSE
CALL1 TAKE-OFF-PRSO-FIRST?
RSTACK
.FUNCT V-SELL-TO
EQUAL? WINNER,PLAYER /?CCL3
ICALL2 NOT-LIKELY,WINNER
ICALL1 IS-ARE
PRINTI "interested in selling anything"
RTRUE
?CCL3: EQUAL? PRSI,PRSO,ME,WINNER \?CCL5
ICALL1 IMPOSSIBLE
RTRUE
?CCL5: FSET? PRSI,PERSON /?CND1
ICALL2 NOT-LIKELY,PRSI
PRINTR " would buy anything."
?CND1: ICALL2 NOT-A,STR?555
RTRUE
.FUNCT V-SSELL-TO
ICALL PERFORM,V?SELL-TO,PRSI,PRSO
RTRUE
.FUNCT BUY-X-WITH-Y,X,Y,CASE,VAL,OFFER,CHANGE
ASSIGNED? 'X /?CND1
SET 'X,PRSO
?CND1: ASSIGNED? 'Y /?CND3
SET 'Y,PRSI
?CND3: GETP HERE,P?THIS-CASE >CASE
CALL2 VISIBLE?,X
ZERO? STACK \?CCL7
PRINTI """I don't have any for sale,"" admits "
ICALL2 THE-PRINT,OWOMAN
PRINT PERIOD
RTRUE
?CCL7: IN? X,CASE /?CND5
PRINTI """Only the items in "
ICALL2 THE-PRINT,CASE
PRINTR " are for sale."""
?CND5: GETP X,P?VALUE >VAL
LESS? VAL,1 \?CCL11
ICALL2 NO-WORTH,X
RTRUE
?CCL11: EQUAL? Y,FALSE-VALUE,MONEY,INTNUM \?CCL13
SET 'OFFER,P-NUMBER
ZERO? LOOT \?CCL16
PRINT STR?525
RTRUE
?CCL16: ZERO? Y /?CTR17
EQUAL? P-NUMBER,-1 \?CCL18
?CTR17: SET 'OFFER,LOOT
JUMP ?CND14
?CCL18: CALL2 NOT-ENOUGH-LOOT?,OFFER
ZERO? STACK \TRUE
?CND14: LESS? OFFER,VAL \?CND22
PRINT CTHELADY
PRINTI " shakes her head firmly. ""My price is "
ICALL2 SAY-LOOT,VAL
PRINTR ", dear."""
?CND22: DIV VAL,2
PUTP X,P?VALUE,STACK
EQUAL? P-NUMBER,-1 /?CCL26
GRTR? OFFER,VAL \?CCL26
SUB LOOT,P-NUMBER >LOOT
PRINT STR?556
JUMP ?CND24
?CCL26: SUB OFFER,VAL >LOOT
PRINTI """Done"
?CND24: PRINTI ","" says "
ICALL2 THE-PRINT,OWOMAN
PRINTI ", taking your zorkmid"
EQUAL? VAL,1 /?CND29
PRINTC 115
?CND29: ICALL2 SOLD,X
RTRUE
?CCL13: CALL2 NO-DEAL?,Y
ZERO? STACK \TRUE
IN? Y,GLOBAL-OBJECTS \?CND9
PRINTR """Don't be silly."""
?CND9: GETP Y,P?VALUE >OFFER
ZERO? OFFER \?CCL36
ICALL2 NO-WORTH,Y
RTRUE
?CCL36: LESS? OFFER,VAL \?CND34
ICALL2 WORTHLESS,Y
PRINTI " only worth "
ICALL2 SAY-LOOT,OFFER
PRINTI ". This "
ICALL2 DPRINT,X
PRINTI " is valued at "
ICALL2 SAY-LOOT,VAL
PRINTR "!"""
?CND34: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
MOVE Y,CASE
FSET Y,USED
ADD OFFER,OFFER
PUTP Y,P?VALUE,STACK
DIV VAL,2
PUTP X,P?VALUE,STACK
GRTR? OFFER,VAL \?CCL40
PRINT STR?556
JUMP ?CND38
?CCL40: PRINTI """Done"
?CND38: PRINTI ","" says "
ICALL2 THE-PRINT,OWOMAN
PRINTI ", taking "
ICALL2 SAY-YOUR,Y
GRTR? OFFER,VAL \?CND41
SUB OFFER,VAL >CHANGE
ADD LOOT,CHANGE >LOOT
ICALL SOLD,X,CHANGE
PRINT STR?557
ICALL2 SAY-LOOT,CHANGE
PRINTR " in change."
?CND41: ICALL2 SOLD,X
RTRUE
.FUNCT SOLD,OBJ,CHANGE
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
ICALL2 THIS-IS-IT,OBJ
FSET OBJ,USED
ZERO? CHANGE /?CCL3
PRINTI ", "
JUMP ?CND1
?CCL3: PRINT AND
?CND1: CALL2 ITAKE,FALSE-VALUE
ZERO? STACK /?CCL6
MOVE OBJ,PLAYER
PRINTI "handing you "
ICALL2 THE-PRINT,OBJ
JUMP ?CND4
?CCL6: GETP HERE,P?THIS-CASE
GETP STACK,P?DNUM
MOVE OBJ,STACK
PRINTI "setting "
ICALL2 THE-PRINT,OBJ
PRINT SON
ICALL2 THE-PRINT,MCASE
?CND4: ZERO? CHANGE \TRUE
PRINT PERIOD
RTRUE
.FUNCT NO-WORTH,OBJ
ICALL2 WORTHLESS,OBJ
PRINTR " not worth anything here."""
.FUNCT WORTHLESS,OBJ
PRINT CTHELADY
PRINT GLANCES-AT
ICALL2 THE-PRINT,OBJ
PRINTI " and shakes her head. """
FSET? OBJ,FEMALE \?CCL3
PRINTI "She's"
RTRUE
?CCL3: FSET? OBJ,LIVING \?CCL5
PRINTI "He's"
RTRUE
?CCL5: FSET? OBJ,PLURAL \?CCL7
PRINTI "They're"
RTRUE
?CCL7: PRINTI "That's"
RTRUE
.FUNCT NO-DEAL?,OBJ
EQUAL? OBJ,HELM,RUG,CAKE \FALSE
PRINTI """No,"" replies "
ICALL2 THE-PRINT,OWOMAN
PRINTR ", shaking her head firmly. ""I don't think I want to carry this."""
.FUNCT TRADE-FOR-LOOT,OBJ,VAL,CASE
IN? OBJ,PLAYER /?CND1
LOC OBJ
ICALL TAKE-FIRST,OBJ,STACK
RTRUE
?CND1: CALL2 NO-DEAL?,OBJ
ZERO? STACK \TRUE
GETP OBJ,P?VALUE >VAL
GETP HERE,P?THIS-CASE >CASE
PRINT CTHELADY
PRINTI " examines "
ICALL2 THE-PRINT,OBJ
ZERO? VAL \?CND5
PRINTR " and hands it back to you with a shrug. ""Worthless."""
?CND5: BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
ADD VAL,LOOT >LOOT
PRINTI " critically. ""Okay,"" she agrees, "
EQUAL? OBJ,TRUFFLE \?CCL9
ICALL2 VANISH,OBJ
PRINTI "popping "
ICALL2 THE-PRINT,OBJ
PRINTI " in her mouth"
JUMP ?CND7
?CCL9: ADD VAL,VAL
PUTP OBJ,P?VALUE,STACK
MOVE OBJ,CASE
PRINTI "stashing it away in "
ICALL2 THE-PRINT,CASE
?CND7: PRINT STR?557
ICALL2 SAY-LOOT,VAL
PRINTR " in return."
.FUNCT V-ZOOM,WRD
EQUAL? PRSO,ROOMS /?CCL3
ICALL BAD-COMMAND,STR?558,STR?559
RTRUE
?CCL3: ZERO? DMODE \?CCL5
ICALL BAD-COMMAND,STR?558,STR?560
RTRUE
?CCL5: EQUAL? MAP-ROUTINE,CLOSE-MAP \?CCL7
SET 'MAP-ROUTINE,FAR-MAP
SET 'WRD,W?OUT
JUMP ?CND1
?CCL7: SET 'MAP-ROUTINE,CLOSE-MAP
SET 'WRD,W?IN
?CND1: SET 'SAME-COORDS,FALSE-VALUE
PRINTI "[Zooming "
PRINTB WRD
PRINTI ".]"
CRLF
ICALL1 NEW-MAP
ICALL1 SHOW-MAP
RTRUE
.FUNCT V-PRIORITY-ON
CALL1 BAD-PRIOR?
ZERO? STACK \TRUE
EQUAL? PRIOR,IN-DBOX \?CCL5
PRINTI "already "
JUMP ?CND1
?CCL5: SET 'PRIOR,IN-DBOX
PRINTI "now "
?CND1: PRINTI "set to "
ICALL1 SAY-PRIORITY
PRINTR ".]"
.FUNCT SAY-PRIORITY
EQUAL? PRIOR,SHOWING-ROOM \?CCL3
PRINTI "Room Descriptions"
RTRUE
?CCL3: EQUAL? PRIOR,SHOWING-INV \?CCL5
PRINTI "Inventory"
RTRUE
?CCL5: PRINTI "Player Status"
RTRUE
.FUNCT V-PRIORITY-OFF
CALL1 BAD-PRIOR?
ZERO? STACK \TRUE
ZERO? PRIOR \?CCL5
PRINTI "already "
JUMP ?CND1
?CCL5: SET 'PRIOR,0
PRINTI "now "
?CND1: PRINTR "disabled.]"
.FUNCT BAD-PRIOR?
EQUAL? PRSO,ROOMS /?CCL3
ICALL BAD-COMMAND,STR?561,STR?559
RTRUE
?CCL3: ZERO? DMODE \?CND1
ICALL BAD-COMMAND,STR?561,STR?560
RTRUE
?CND1: PRINTI "[Display priority is "
RFALSE
.FUNCT BAD-COMMAND,STR1,STR2
PRINTC 91
PRINT CANT
PRINTI "use the "
PRINT STR1
PRINTI " command "
PRINT STR2
PRINTR ".]"
.FUNCT V-MODE,STR
SET 'STR,STR?562
ZERO? DMODE \?CCL3
SET 'STR,STR?563
SET 'DMODE,TRUE-VALUE
JUMP ?CND1
?CCL3: SET 'DMODE,FALSE-VALUE
?CND1: ICALL1 V-REFRESH
CRLF
PRINTC 91
PRINT STR
PRINTI " display mode.]"
CRLF
CRLF
RTRUE
.FUNCT V-VERBOSE
SET 'VERBOSITY,2
PRINTI "[Maximum verbosity"
ICALL1 FOR-SCRIPTING
ZERO? DMODE \TRUE
CRLF
ICALL1 V-LOOK
RTRUE
.FUNCT V-BRIEF
SET 'VERBOSITY,1
PRINTI "[Brief descriptions"
ICALL1 FOR-SCRIPTING
RTRUE
.FUNCT V-SUPER-BRIEF
SET 'VERBOSITY,0
PRINTI "[Superbrief descriptions"
ICALL1 FOR-SCRIPTING
RTRUE
.FUNCT FOR-SCRIPTING
ZERO? DMODE /?CND1
PRINTI " for transcripting"
?CND1: PRINTR ".]"
.FUNCT V-QUIT
PRINT STR?564
PRINTI "leave the story now?"
CALL1 YES?
ZERO? STACK /?CND1
CRLF
QUIT
RTRUE
?CND1: ICALL1 CONTINUING
RTRUE
.FUNCT CONTINUING
CRLF
PRINTR "[Continuing.]"
.FUNCT V-RESTART
ICALL1 V-SCORE
CRLF
PRINT STR?564
PRINTI "restart the story?"
CALL1 YES?
ZERO? STACK /TRUE
RESTART
ICALL2 FAILED,STR?565
RTRUE
.FUNCT V-RESTORE,X
SET 'OLD-HERE,FALSE-VALUE
RESTORE >X
ZERO? X \TRUE
ICALL1 INITVARS
ICALL1 V-REFRESH
ICALL2 FAILED,STR?566
RTRUE
.FUNCT V-SAVE,X,STAT
CALL1 CANT-SAVE?
ZERO? STACK \TRUE
PRINTI "You mumble the Spell of Saving."
CRLF
ICALL1 PCLEAR
SET 'OLD-HERE,FALSE-VALUE
PUTB OOPS-INBUF,1,0
SET 'STAT,ENDURANCE
SET 'CHECKSUM,0
?PRG3: GET STATS,STAT
ADD CHECKSUM,STACK >CHECKSUM
IGRTR? 'STAT,EXPERIENCE \?PRG3
SET 'STAT,ENDURANCE
?PRG7: GET MAXSTATS,STAT
ADD CHECKSUM,STACK >CHECKSUM
IGRTR? 'STAT,EXPERIENCE \?PRG7
SUB 0,CHECKSUM >CHECKSUM
SAVE >X
EQUAL? X,2 /?CCL12
GET 0,8
BTST STACK,4 \?CND11
?CCL12: ICALL1 INITVARS
ICALL1 V-REFRESH
?CND11: ZERO? X \?CCL17
ICALL2 FAILED,STR?567
RETURN 2
?CCL17: EQUAL? X,1 \?CND15
ICALL2 COMPLETED,STR?567
RETURN 2
?CND15: ICALL2 COMPLETED,STR?566
CRLF
ICALL1 V-LOOK
SET 'STAT,ENDURANCE
SET 'X,0
?PRG23: GET STATS,STAT
ADD X,STACK >X
IGRTR? 'STAT,EXPERIENCE \?PRG23
SET 'STAT,ENDURANCE
?PRG27: GET MAXSTATS,STAT
ADD X,STACK >X
IGRTR? 'STAT,EXPERIENCE \?PRG27
SUB 0,CHECKSUM
EQUAL? STACK,X /?PRG33
ICALL1 CHEATER
?PRG33: RETURN 2
.FUNCT COMPLETED,STR
CRLF
PRINTC 91
PRINT STR
PRINTR " completed.]"
.FUNCT FAILED,STR
CRLF
PRINTC 91
PRINT STR
PRINTR " failed.]"
.FUNCT V-SCORE
PRINTI "[Your rank is "
ICALL1 ANNOUNCE-RANK
PRINTI ", achieved in "
PRINTN MOVES
PRINTI " move"
EQUAL? MOVES,1 /?CND1
PRINTC 115
?CND1: PRINTR ".]"
.FUNCT V-DIAGNOSE
EQUAL? PRSO,ME,ROOMS \?CCL3
ICALL2 NYMPH-APPEARS,STR?568
PRINTI "Please use the STATUS command to monitor your health"
PRINT STR?515
RTRUE
?CCL3: FSET? PRSO,MONSTER \?CCL5
ICALL1 DIAGNOSE-MONSTER
RTRUE
?CCL5: FSET? PRSO,LIVING \?CCL7
ICALL1 CTHE-PRINT
PRINTI " seem"
FSET? PRSO,PLURAL /?CND8
PRINTC 115
?CND8: PRINTR " well enough."
?CCL7: FSET? PRSO,PERSON \?CND1
ICALL1 CTHE-PRINT
ICALL1 ISNT-ARENT
PRINTR " looking well."
?CND1: PRINT CANT
PRINTB P-PRSA-WORD
PRINTC SP
ICALL1 PRINTA
PRINT PERIOD
RTRUE
.FUNCT V-NOTIFY
PRINTI "[Status notification is now o"
ZERO? SAY-STAT /?CCL3
SET 'SAY-STAT,FALSE-VALUE
PRINTI "ff"
JUMP ?CND1
?CCL3: SET 'SAY-STAT,TRUE-VALUE
PRINTC 110
?CND1: PRINTR ".]"
.FUNCT V-TIME
PRINTR "This is a timeless tale."
.FUNCT V-SCRIPT
PRINT STR?569
PRINTI "n.]"
CRLF
DIROUT D-PRINTER-ON
ICALL2 TRANSCRIPT,STR?570
RTRUE
.FUNCT V-UNSCRIPT
ICALL2 TRANSCRIPT,STR?571
DIROUT D-PRINTER-OFF
PRINT STR?569
PRINTR "ff.]"
.FUNCT TRANSCRIPT,STR
DIROUT D-SCREEN-OFF
CRLF
PRINTI "Here "
PRINT STR
PRINTI "s a transcript of interaction with"
CRLF
ICALL1 V-VERSION
DIROUT D-SCREEN-ON
RTRUE
.FUNCT V-VERSION,X,IDX
SET 'IDX,18
CRLF
ZERO? COLORS? /?CCL3
COLOR INCOLOR,BGND
JUMP ?CND1
?CCL3: EQUAL? HOST,MACINTOSH /?CND1
HLIGHT H-BOLD
?CND1: PRINTI "BEYOND ZORK: "
PRINT STR?572
CRLF
COLOR FORE,BGND
HLIGHT H-NORMAL
PRINT STR?573
CRLF
ICALL1 TRADEMARK
CRLF
PRINTI "Release "
GET 0,1
BAND STACK,2047
PRINTN STACK
PRINTI " / Serial Number "
?PRG5: GETB 0,IDX
PRINTC STACK
IGRTR? 'IDX,23 \?PRG5
CRLF
ICALL1 INTERPRETER-ID
RTRUE
.FUNCT V-$VERIFY
ICALL1 INTERPRETER-ID
CRLF
PRINTI "[Verifying.]"
CRLF
VERIFY \?CND1
ICALL1 NYMPH-APPEARS
PRINTI "Your disk is correct"
PRINT STR?515
RTRUE
?CND1: ICALL2 FAILED,STR?574
RTRUE
.FUNCT INTERPRETER-ID
LESS? HOST,1 \?CCL3
PRINTI "XZIP"
JUMP ?CND1
?CCL3: GET MACHINES,0
GRTR? HOST,STACK \?CCL5
PRINTI "Interpreter "
PRINTN HOST
JUMP ?CND1
?CCL5: GET MACHINES,HOST
PRINT STACK
?CND1: ZERO? COLORS? /?CND6
PRINTI " Color"
?CND6: PRINTI " Version "
GETB 0,31
PRINTC STACK
CRLF
RTRUE
.FUNCT V-STATUS,CNT,X
ZERO? DMODE /?CCL3
ZERO? VT220 /?CCL3
EQUAL? IN-DBOX,SHOWING-STATS /?CCL3
ZERO? PRIOR \?CCL3
PRINTI "[Displaying status.]"
CRLF
ICALL1 SHOW-RANK
ICALL1 DISPLAY-STATS
JUMP ?CND1
?CCL3: ICALL1 STANDARD-STATS
?CND1: GET 0,8
BTST STACK,1 \TRUE
DIROUT D-SCREEN-OFF
ICALL1 STANDARD-STATS
DIROUT D-SCREEN-ON
RTRUE
.FUNCT STANDARD-STATS
ICALL2 PRINT-TABLE,CHARNAME
PRINTC 47
ICALL1 ANNOUNCE-RANK
CRLF
ICALL1 TEXT-STATS
CRLF
RTRUE
.FUNCT V-MONITOR,X
ZERO? VT220 \?CCL3
ICALL1 NOT-AVAILABLE
RTRUE
?CCL3: ZERO? DMODE \?CCL5
PRINTR "[That command works only in Enhanced display mode.]"
?CCL5: ZERO? AUTO \?CND1
SET 'AUTO,TRUE-VALUE
GET STATS,ENDURANCE >X
GET MAXSTATS,ENDURANCE
LESS? X,STACK \?CND7
ICALL1 BMODE-ON
?CND7: PRINT STR?575
PRINTR "n.]"
?CND1: SET 'AUTO,0
ZERO? BMODE /?CND9
ICALL1 BATTLE-MODE-OFF
?CND9: PRINT STR?575
PRINTR "ff.]"
.FUNCT BMODE-OFF,X
ZERO? BMODE /FALSE
ZERO? VT220 /FALSE
GET STATS,ENDURANCE >X
GET MAXSTATS,ENDURANCE
LESS? X,STACK /FALSE
ICALL1 BATTLE-MODE-OFF
RFALSE
.FUNCT BATTLE-MODE-OFF
SET 'BMODE,0
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
SET 'DHEIGHT,MAX-DHEIGHT
ICALL1 TO-TOP-WINDOW
SUB 11,MAX-DHEIGHT
ADD DHEIGHT,STACK
ICALL DO-CURSET,STACK,2
ICALL2 PRINT-SPACES,DWIDTH
ICALL1 TO-BOTTOM-WINDOW
RFALSE
.FUNCT BMODE-ON
ZERO? DMODE /FALSE
ZERO? BMODE \FALSE
ZERO? VT220 /FALSE
EQUAL? SHOWING-STATS,IN-DBOX,NEW-DBOX /FALSE
ICALL1 BATTLE-MODE-ON
RFALSE
.FUNCT BATTLE-MODE-ON,Y
SET 'BMODE,TRUE-VALUE
BOR NEW-DBOX,SHOWING-ALL >NEW-DBOX
SUB 11,MAX-DHEIGHT
ADD DHEIGHT,STACK >Y
ICALL1 TO-TOP-WINDOW
ICALL DO-CURSET,Y,2
ICALL2 PRINT-SPACES,DWIDTH
ICALL1 TO-BOTTOM-WINDOW
ICALL STATBARS,Y,0,0
SUB MAX-DHEIGHT,1 >DHEIGHT
RFALSE
.FUNCT V-DEFINE,KEYS,TOP,LTBL,LMARGIN,DKEY,TBL,TBL2,LEN,HIT,X,Y
SET 'KEYS,9
EQUAL? HOST,C128,C64 \?CND1
SET 'KEYS,7
?CND1: ADD KEYS,7
SUB HEIGHT,STACK
DIV STACK,2 >TOP
SET 'LTBL,KEY-LABELS
EQUAL? HOST,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL4
EQUAL? HOST,MACINTOSH \?CND3
?CCL4: SET 'LTBL,APPLE-LABELS
?CND3: SUB WIDTH,40
DIV STACK,2 >LMARGIN
COLOR GCOLOR,BGND
CLEAR -1
SPLIT 20
ICALL1 TO-TOP-WINDOW
ADD 8,LMARGIN
ICALL DO-CURSET,TOP,STACK
PRINTI "Function Key Definitions"
ICALL2 SOFTS-TO-DBOX,KEYS
ADD LMARGIN,4 >X
ADD TOP,2
ICALL DO-CURSET,STACK,X
HLIGHT H-INVERSE
ADD KEYS,1
PRINTT DBOX,SOFT-LEN,STACK
ZERO? COLORS? /?CCL8
EQUAL? FORE,GCOLOR \?CND7
?CCL8: HLIGHT H-NORMAL
HLIGHT H-MONO
?CND7: SET 'X,0
?PRG11: ADD TOP,X
ADD STACK,2
ICALL DO-CURSET,STACK,LMARGIN
GET LTBL,X
PRINT STACK
IGRTR? 'X,KEYS \?PRG11
ADD LMARGIN,4 >X
ADD KEYS,4
ADD STACK,TOP
ICALL DO-CURSET,STACK,X
PRINTI " Restore Defaults "
ADD KEYS,6
ADD STACK,TOP
ICALL DO-CURSET,STACK,X
PRINT STR?97
SET 'DKEY,0
?PRG15: ADD DKEY,TOP
ADD STACK,2 >Y
COLOR FORE,BGND
HLIGHT H-INVERSE
ADD KEYS,1
EQUAL? DKEY,STACK \?CCL19
ADD LMARGIN,4 >X
ADD KEYS,4
ADD STACK,TOP
ICALL DO-CURSET,STACK,X
PRINTI " Restore Defaults "
HLIGHT H-NORMAL
SCREEN S-TEXT
?PRG20: CALL1 DO-INPUT >HIT
EQUAL? HIT,EOL,LF \?CND22
CALL1 MAKE-SURE?
ZERO? STACK /?CND24
ICALL1 DEFAULT-SOFTS
ICALL2 SOFTS-TO-DBOX,KEYS
SCREEN S-WINDOW
HLIGHT H-NORMAL
HLIGHT H-MONO
HLIGHT H-INVERSE
COLOR GCOLOR,BGND
ADD LMARGIN,4 >X
ADD TOP,2
ICALL DO-CURSET,STACK,X
ADD KEYS,1
PRINTT DBOX,SOFT-LEN,STACK
JUMP ?PRG15
?CND24: SET 'HIT,DOWN-ARROW
?CND22: EQUAL? HIT,UP-ARROW,DOWN-ARROW \?CND26
ADD KEYS,2 >DKEY
EQUAL? HIT,UP-ARROW \?CND28
SET 'DKEY,KEYS
?CND28: SCREEN S-WINDOW
HLIGHT H-NORMAL
HLIGHT H-MONO
COLOR GCOLOR,BGND
ZERO? COLORS? /?CND30
EQUAL? FORE,GCOLOR /?CND30
HLIGHT H-INVERSE
?CND30: ADD LMARGIN,4 >X
ADD KEYS,4
ADD STACK,TOP
ICALL DO-CURSET,STACK,X
PRINTI " Restore Defaults "
JUMP ?PRG15
?CND26: SOUND S-BOOP
JUMP ?PRG20
?CCL19: ADD KEYS,2
EQUAL? DKEY,STACK \?CND17
ADD LMARGIN,4 >X
ADD KEYS,6
ADD STACK,TOP
ICALL DO-CURSET,STACK,X
PRINT STR?97
HLIGHT H-NORMAL
SCREEN S-TEXT
?PRG35: CALL1 DO-INPUT >HIT
EQUAL? HIT,EOL,LF \?CND37
EQUAL? HOST,MACINTOSH \?CCL40
CALL1 MAKE-SURE?
ZERO? STACK /?CND39
?CCL40: ICALL1 V-REFRESH
ICALL1 CONTINUING
RTRUE
?CND39: SET 'HIT,DOWN-ARROW
?CND37: EQUAL? HIT,UP-ARROW,DOWN-ARROW \?CND43
SET 'DKEY,0
EQUAL? HIT,UP-ARROW \?CND45
ADD KEYS,1 >DKEY
?CND45: SCREEN S-WINDOW
HLIGHT H-NORMAL
HLIGHT H-MONO
COLOR GCOLOR,BGND
ZERO? COLORS? /?CND47
EQUAL? FORE,GCOLOR /?CND47
HLIGHT H-INVERSE
?CND47: ADD LMARGIN,4 >X
ADD KEYS,6
ADD STACK,TOP
ICALL DO-CURSET,STACK,X
PRINT STR?97
JUMP ?PRG15
?CND43: SOUND S-BOOP
JUMP ?PRG35
?CND17: ICALL DO-CURSET,Y,LMARGIN
GET LTBL,DKEY
PRINT STACK
HLIGHT H-NORMAL
HLIGHT H-MONO
PUTB DBOX,0,SP
COPYT DBOX,DBOX+1,NSOFT-LEN
GET SOFT-KEYS,DKEY >TBL
GETB TBL,1 >LEN
ZERO? LEN /?CND51
ADD TBL,2
COPYT STACK,DBOX,LEN
?CND51: ADD LMARGIN,4
ICALL DO-CURSET,Y,STACK
COLOR INCOLOR,BGND
PRINTT DBOX,SOFT-LEN
ADD LMARGIN,LEN
ADD STACK,4
ICALL DO-CURSET,Y,STACK
?PRG53: READ TBL,0 >HIT
EQUAL? HIT,EOL,LF /?REP54
EQUAL? HIT,UP-ARROW,DOWN-ARROW,MAC-UP-ARROW /?REP54
EQUAL? HIT,MAC-DOWN-ARROW /?REP54
SOUND S-BOOP
JUMP ?PRG53
?REP54: PUTB DBOX,0,SP
COPYT DBOX,DBOX+1,NSOFT-LEN
GETB TBL,1 >LEN
ZERO? LEN \?CND60
PUTB TBL,0,SP
ADD TBL,1
COPYT TBL,STACK,NSOFT-LEN
GET KEY-DEFAULTS,DKEY >TBL2
GETB TBL2,0 >LEN
PUTB TBL,0,SOFT-LEN
PUTB TBL,1,LEN
ADD TBL2,1 >X
ADD TBL,2
COPYT X,STACK,LEN
EQUAL? HOST,C128,C64 \?CND60
ADD TBL,2
INTBL? 124,STACK,LEN,1 >X \?CND60
PUTB X,0,33
?CND60: ADD TBL,2
COPYT STACK,DBOX,LEN
ADD LMARGIN,4
ICALL DO-CURSET,Y,STACK
COLOR GCOLOR,BGND
HLIGHT H-INVERSE
PRINTT DBOX,SOFT-LEN
ADD DKEY,2
ADD STACK,TOP >Y
ICALL DO-CURSET,Y,LMARGIN
ZERO? COLORS? /?CCL66
EQUAL? FORE,GCOLOR \?CND65
?CCL66: HLIGHT H-NORMAL
HLIGHT H-MONO
?CND65: COLOR GCOLOR,BGND
GET LTBL,DKEY
PRINT STACK
EQUAL? HIT,EOL,DOWN-ARROW,LF /?CTR70
EQUAL? HIT,MAC-DOWN-ARROW \?CCL71
?CTR70: INC 'DKEY
JUMP ?PRG15
?CCL71: DLESS? 'DKEY,0 \?PRG15
ADD KEYS,2 >DKEY
JUMP ?PRG15
.FUNCT MAKE-SURE?,X
CRLF
PRINTI "Are you sure? (Y/N) >"
INPUT 1 >X
CRLF
CLEAR S-TEXT
EQUAL? X,89,121 /TRUE
RFALSE
.FUNCT DEFAULT-SOFTS,CNT,TBL,X,LEN
?PRG1: GET SOFT-KEYS,CNT >TBL
PUTB TBL,0,SOFT-LEN
INC 'TBL
GET KEY-DEFAULTS,CNT >X
GETB X,0
ADD STACK,1 >LEN
COPYT X,TBL,LEN
EQUAL? HOST,C128,C64 \?CND3
INTBL? 124,TBL,LEN,1 >X \?CND3
PUTB X,0,33
?CND3: IGRTR? 'CNT,9 \?PRG1
RFALSE
.FUNCT SOFTS-TO-DBOX,KEYS,X,TBL,TBL2,LEN
PUTB DBOX,0,SP
COPYT DBOX,DBOX+1,-1551
SET 'X,0
?PRG1: MUL X,SOFT-LEN
ADD DBOX,STACK >TBL2
GET SOFT-KEYS,X >TBL
GETB TBL,1 >LEN
ZERO? LEN /?CND3
ADD TBL,2
COPYT STACK,TBL2,LEN
?CND3: IGRTR? 'X,KEYS \?PRG1
RFALSE
.FUNCT V-SETTINGS,TOP,LMARGIN,LINE,X,KEY
SUB HEIGHT,19
DIV STACK,2 >TOP
SUB WIDTH,52
DIV STACK,2 >LMARGIN
COLOR GCOLOR,BGND
CLEAR -1
SPLIT 22
ICALL1 TO-TOP-WINDOW
ADD LMARGIN,18
ICALL DO-CURSET,TOP,STACK
COLOR FORE,BGND
PRINTI "Display Settings"
SET 'LINE,0
?PRG1: ICALL SHOW-SETLINE,LINE,TOP,LMARGIN
IGRTR? 'LINE,8 \?PRG1
SET 'LINE,0
?PRG5: ICALL SHOW-SETLINE,LINE,TOP,LMARGIN,1
HLIGHT H-NORMAL
SCREEN S-TEXT
EQUAL? LINE,7 \?CCL9
?PRG10: CALL1 DO-INPUT >KEY
EQUAL? KEY,EOL,LF \?CND12
CALL1 MAKE-SURE?
ZERO? STACK /?CND14
ZERO? DMODE \?CND16
SET 'DMODE,TRUE-VALUE
ICALL SHOW-SETLINE,0,TOP,LMARGIN
SET 'MAP-ROUTINE,CLOSE-MAP
ZERO? VT220 \?CND18
SET 'MAP-ROUTINE,FAR-MAP
?CND18: SET 'IN-DBOX,SHOWING-ROOM
ICALL SHOW-SETLINE,4,TOP,LMARGIN
SET 'PRIOR,0
ICALL SHOW-SETLINE,5,TOP,LMARGIN
SET 'AUTO,TRUE-VALUE
ICALL SHOW-SETLINE,6,TOP,LMARGIN
?CND16: EQUAL? VERBOSITY,1 /?CND20
SET 'VERBOSITY,1
ICALL SHOW-SETLINE,1,TOP,LMARGIN
?CND20: GET 0,8
BTST STACK,1 \?CND22
DIROUT D-PRINTER-OFF
ICALL SHOW-SETLINE,2,TOP,LMARGIN
?CND22: ZERO? SAY-STAT \?CND24
SET 'SAY-STAT,TRUE-VALUE
ICALL SHOW-SETLINE,3,TOP,LMARGIN
?CND24: ZERO? VT220 /?CCL28
EQUAL? MAP-ROUTINE,FAR-MAP \?CCL28
SET 'MAP-ROUTINE,CLOSE-MAP
ICALL SHOW-SETLINE,4,TOP,LMARGIN
JUMP ?CND26
?CCL28: ZERO? VT220 \?CND26
EQUAL? MAP-ROUTINE,CLOSE-MAP \?CND26
SET 'MAP-ROUTINE,FAR-MAP
ICALL SHOW-SETLINE,4,TOP,LMARGIN
?CND26: ZERO? PRIOR /?CND34
SET 'PRIOR,0
ICALL SHOW-SETLINE,5,TOP,LMARGIN
?CND34: ZERO? AUTO \?CND14
SET 'AUTO,TRUE-VALUE
ICALL SHOW-SETLINE,6,TOP,LMARGIN
?CND14: SET 'KEY,DOWN-ARROW
?CND12: EQUAL? KEY,UP-ARROW,DOWN-ARROW,MAC-UP-ARROW /?CCL39
EQUAL? KEY,MAC-DOWN-ARROW \?CND38
?CCL39: SET 'LINE,8
EQUAL? KEY,UP-ARROW,MAC-UP-ARROW \?CND42
SET 'LINE,6
ZERO? DMODE \?CND42
SET 'LINE,3
?CND42: ICALL SHOW-SETLINE,7,TOP,LMARGIN
JUMP ?PRG5
?CND38: SOUND S-BOOP
JUMP ?PRG10
?CCL9: EQUAL? LINE,8 \?PRG59
?PRG47: CALL1 DO-INPUT >KEY
EQUAL? KEY,EOL,LF \?CND49
EQUAL? HOST,MACINTOSH \?CCL52
CALL1 MAKE-SURE?
ZERO? STACK /?CND51
?CCL52: ICALL1 V-REFRESH
ICALL1 CONTINUING
RTRUE
?CND51: SET 'KEY,DOWN-ARROW
?CND49: EQUAL? KEY,UP-ARROW,DOWN-ARROW \?CND55
SET 'LINE,0
EQUAL? KEY,UP-ARROW \?CND57
SET 'LINE,7
?CND57: ICALL SHOW-SETLINE,8,TOP,LMARGIN
JUMP ?PRG5
?CND55: SOUND S-BOOP
JUMP ?PRG47
?PRG59: CALL1 DO-INPUT >KEY
EQUAL? KEY,UP-ARROW \?CCL63
ICALL SHOW-SETLINE,LINE,TOP,LMARGIN
DLESS? 'LINE,0 \?PRG5
SET 'LINE,8
JUMP ?PRG5
?CCL63: EQUAL? KEY,DOWN-ARROW,EOL,LF \?CCL67
ICALL SHOW-SETLINE,LINE,TOP,LMARGIN
ZERO? DMODE \?CND68
EQUAL? LINE,3 \?CND68
SET 'LINE,7
JUMP ?PRG5
?CND68: INC 'LINE
JUMP ?PRG5
?CCL67: EQUAL? KEY,RIGHT-ARROW,LEFT-ARROW,SP \?CND61
ZERO? LINE \?CCL75
ZERO? DMODE \?CCL78
INC 'DMODE
JUMP ?CND76
?CCL78: SET 'DMODE,0
?CND76: ICALL SHOW-SETLINE,4,TOP,LMARGIN
ICALL SHOW-SETLINE,5,TOP,LMARGIN
ICALL SHOW-SETLINE,6,TOP,LMARGIN
JUMP ?PRG5
?CCL75: EQUAL? LINE,2 \?CCL80
GET 0,8
BTST STACK,1 \?CCL83
DIROUT D-PRINTER-OFF
JUMP ?PRG5
?CCL83: DIROUT D-PRINTER-ON
JUMP ?PRG5
?CCL80: EQUAL? LINE,3 \?CCL85
ZERO? SAY-STAT \?CCL88
INC 'SAY-STAT
JUMP ?PRG5
?CCL88: SET 'SAY-STAT,0
JUMP ?PRG5
?CCL85: EQUAL? LINE,4 \?CCL90
EQUAL? MAP-ROUTINE,CLOSE-MAP \?CCL93
SET 'MAP-ROUTINE,FAR-MAP
JUMP ?PRG5
?CCL93: SET 'MAP-ROUTINE,CLOSE-MAP
JUMP ?PRG5
?CCL90: EQUAL? LINE,6 \?CCL95
ZERO? AUTO \?CCL98
INC 'AUTO
JUMP ?PRG5
?CCL98: SET 'AUTO,0
JUMP ?PRG5
?CCL95: EQUAL? KEY,RIGHT-ARROW,SP \?CCL100
EQUAL? LINE,1 \?CCL103
IGRTR? 'VERBOSITY,2 \?PRG5
SET 'VERBOSITY,0
JUMP ?PRG5
?CCL103: EQUAL? LINE,5 \?PRG5
ZERO? PRIOR \?CCL109
SET 'PRIOR,SHOWING-ROOM
SET 'IN-DBOX,SHOWING-ROOM
JUMP ?PRG5
?CCL109: EQUAL? PRIOR,SHOWING-ROOM \?CCL111
SET 'PRIOR,SHOWING-INV
SET 'IN-DBOX,SHOWING-INV
JUMP ?PRG5
?CCL111: EQUAL? PRIOR,SHOWING-INV \?CCL113
EQUAL? STAT-ROUTINE,BAR-NUMBER /?CCL113
SET 'PRIOR,SHOWING-STATS
SET 'IN-DBOX,SHOWING-STATS
JUMP ?PRG5
?CCL113: SET 'PRIOR,0
JUMP ?PRG5
?CCL100: EQUAL? LINE,1 \?CCL118
DLESS? 'VERBOSITY,0 \?PRG5
SET 'VERBOSITY,2
JUMP ?PRG5
?CCL118: EQUAL? LINE,5 \?PRG5
ZERO? PRIOR \?CCL124
SET 'PRIOR,SHOWING-STATS
SET 'IN-DBOX,SHOWING-STATS
EQUAL? STAT-ROUTINE,BAR-NUMBER \?PRG5
SET 'PRIOR,SHOWING-INV
SET 'IN-DBOX,SHOWING-INV
JUMP ?PRG5
?CCL124: EQUAL? PRIOR,SHOWING-ROOM \?CCL128
SET 'PRIOR,0
JUMP ?PRG5
?CCL128: EQUAL? PRIOR,SHOWING-INV \?CCL130
SET 'PRIOR,SHOWING-ROOM
SET 'IN-DBOX,SHOWING-ROOM
JUMP ?PRG5
?CCL130: EQUAL? STAT-ROUTINE,BAR-NUMBER /?PRG5
SET 'PRIOR,SHOWING-INV
SET 'IN-DBOX,SHOWING-INV
JUMP ?PRG5
?CND61: SOUND S-BOOP
JUMP ?PRG59
.FUNCT SHOW-SETLINE,LINE,TOP,LMARGIN,HL,X
SCREEN S-WINDOW
ADD TOP,2 >TOP
GETB SETOFFS,LINE
ADD STACK,LMARGIN >X
MUL LINE,2
ADD STACK,TOP
ICALL DO-CURSET,STACK,X
HLIGHT H-NORMAL
HLIGHT H-MONO
COLOR FORE,BGND
ZERO? HL /?CND1
HLIGHT H-INVERSE
?CND1: GET SNAMES,LINE
PRINT STACK
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
EQUAL? LINE,7,8 /TRUE
ZERO? LINE \?CCL7
ZERO? DMODE /?CND8
HLIGHT H-INVERSE
?CND8: PRINTI " Enhanced "
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
ZERO? DMODE \?CND10
HLIGHT H-INVERSE
?CND10: PRINTI " Standard "
HLIGHT H-NORMAL
HLIGHT H-MONO
RTRUE
?CCL7: EQUAL? LINE,1 \?CCL13
ZERO? VERBOSITY \?CND14
HLIGHT H-INVERSE
?CND14: PRINTI " Superbrief "
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
EQUAL? VERBOSITY,1 \?CND16
HLIGHT H-INVERSE
?CND16: PRINTI " Brief "
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
EQUAL? VERBOSITY,2 \?CND18
HLIGHT H-INVERSE
?CND18: PRINTI " Verbose "
HLIGHT H-NORMAL
HLIGHT H-MONO
RTRUE
?CCL13: EQUAL? LINE,2 \?CCL21
GET 0,8
BAND STACK,1 >X
ZERO? X \?CND22
HLIGHT H-INVERSE
?CND22: PRINTI " Off "
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
ZERO? X /?CND24
HLIGHT H-INVERSE
?CND24: PRINTI " On "
HLIGHT H-NORMAL
HLIGHT H-MONO
RTRUE
?CCL21: EQUAL? LINE,3 \?CCL27
ZERO? SAY-STAT \?CND28
HLIGHT H-INVERSE
?CND28: PRINTI " Off "
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
ZERO? SAY-STAT /?CND30
HLIGHT H-INVERSE
?CND30: PRINTI " On "
HLIGHT H-NORMAL
HLIGHT H-MONO
RTRUE
?CCL27: EQUAL? LINE,4 \?CCL33
ZERO? DMODE /?CND34
EQUAL? MAP-ROUTINE,CLOSE-MAP \?CND34
HLIGHT H-INVERSE
?CND34: PRINTI " Normal "
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
ZERO? DMODE /?CND37
EQUAL? MAP-ROUTINE,FAR-MAP \?CND37
HLIGHT H-INVERSE
?CND37: PRINTI " Wide "
HLIGHT H-NORMAL
HLIGHT H-MONO
RTRUE
?CCL33: EQUAL? LINE,5 \?CCL41
ZERO? DMODE /?CND42
ZERO? PRIOR \?CND42
HLIGHT H-INVERSE
?CND42: PRINTI " Off "
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
ZERO? DMODE /?CND45
EQUAL? PRIOR,SHOWING-ROOM \?CND45
HLIGHT H-INVERSE
?CND45: PRINTI " Room "
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
ZERO? DMODE /?CND48
EQUAL? PRIOR,SHOWING-INV \?CND48
HLIGHT H-INVERSE
?CND48: PRINTI " Inventory "
HLIGHT H-NORMAL
HLIGHT H-MONO
EQUAL? STAT-ROUTINE,BAR-NUMBER /TRUE
PRINTC SP
ZERO? DMODE /?CND53
EQUAL? PRIOR,SHOWING-STATS \?CND53
HLIGHT H-INVERSE
?CND53: PRINTI " Status "
HLIGHT H-NORMAL
HLIGHT H-MONO
RTRUE
?CCL41: EQUAL? LINE,6 \FALSE
ZERO? DMODE /?CND58
ZERO? AUTO /?CND58
HLIGHT H-INVERSE
?CND58: PRINTI " Automatic "
HLIGHT H-NORMAL
HLIGHT H-MONO
PRINTC SP
ZERO? DMODE /?CND61
ZERO? AUTO \?CND61
HLIGHT H-INVERSE
?CND61: PRINTI " Off "
HLIGHT H-NORMAL
HLIGHT H-MONO
RTRUE
.ENDI