5512 lines
120 KiB
Plaintext
5512 lines
120 KiB
Plaintext
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT V-VERBOSE
|
|
SET 'VERBOSITY,2
|
|
PRINTI "Maximum verbosity."
|
|
CRLF
|
|
CRLF
|
|
CALL1 V-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BRIEF
|
|
SET 'VERBOSITY,1
|
|
PRINTR "Brief descriptions."
|
|
|
|
|
|
.FUNCT V-SUPERBRIEF
|
|
SET 'VERBOSITY,0
|
|
PRINTR "Superbrief descriptions."
|
|
|
|
|
|
.FUNCT NOT-IN-DEMO
|
|
PRINTR "[Sorry, but that command is not available in this demonstration version.]"
|
|
|
|
|
|
.FUNCT V-SAVE,X,WRD,COLOR-SAME
|
|
CALL1 SAVE-UNDO-CHECK
|
|
ZERO? STACK \TRUE
|
|
ZERO? DEMO-VERSION? /?CND3
|
|
ICALL1 NOT-IN-DEMO
|
|
RETURN 2
|
|
?CND3: PUTB G-INBUF,2,0
|
|
SET 'P-CONT,FALSE-VALUE
|
|
SAVE >X
|
|
ZERO? X \?CCL9
|
|
SET 'P-CONT,-1
|
|
PRINTI "SAVE failed!"
|
|
CRLF
|
|
RETURN 2
|
|
?CCL9: EQUAL? X,1 \?CND7
|
|
ICALL1 RESTORE-ORPHAN
|
|
PRINTI "SAVE completed."
|
|
CRLF
|
|
RETURN 2
|
|
?CND7: WINGET S-TEXT,WCOLOR >WRD
|
|
SHIFT WRD,-8
|
|
EQUAL? STACK,FG-COLOR \?CCL17
|
|
BAND WRD,255
|
|
EQUAL? STACK,BG-COLOR \?CCL17
|
|
SET 'COLOR-SAME,TRUE-VALUE
|
|
JUMP ?CND15
|
|
?CCL17: SET 'COLOR-SAME,FALSE-VALUE
|
|
?CND15: COLOR FG-COLOR,BG-COLOR
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
ICALL1 SETUP-SCREEN
|
|
ICALL1 V-$REFRESH
|
|
ICALL1 RESTORE-ORPHAN
|
|
PRINTI "Okay, restored."
|
|
CRLF
|
|
CRLF
|
|
SET 'P-CONT,-1
|
|
CALL1 V-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SAVE-UNDO-CHECK
|
|
EQUAL? HERE,ROOM-OF-THREE-DOORS \FALSE
|
|
PRINTR "[You can't SAVE or UNDO here. You'll have to solve the puzzle!]"
|
|
|
|
|
|
.FUNCT RESTORE-ORPHAN
|
|
IN? JESTER,HERE \FALSE
|
|
ZERO? LIT /FALSE
|
|
EQUAL? HERE,ENTRANCE-HALL \?PRD8
|
|
FSET? PORTCULLIS,OPENBIT \?CCL3
|
|
?PRD8: EQUAL? HERE,SOLAR \?PRD11
|
|
IN? EAST-KEY,JESTER /?CCL3
|
|
?PRD11: EQUAL? HERE,OUBLIETTE /?CCL3
|
|
EQUAL? HERE,CAVE-IN \?PRD15
|
|
IN? PIT-BOMB,LOCAL-GLOBALS /?CCL3
|
|
?PRD15: EQUAL? HERE,TAX-OFFICE \?PRD18
|
|
IN? ZORKMID-COIN,LOCAL-GLOBALS /?CCL3
|
|
?PRD18: EQUAL? HERE,STREAM \FALSE
|
|
FSET? DIPLOMA,TRYTAKEBIT \FALSE
|
|
?CCL3: CALL2 SETUP-ORPHAN,STR?44
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RESTORE
|
|
ZERO? DEMO-VERSION? /?CND1
|
|
ICALL1 NOT-IN-DEMO
|
|
RETURN 2
|
|
?CND1: RESTORE
|
|
ZERO? STACK \FALSE
|
|
PRINT FAILED
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNDO,X
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
SET 'OLD-REGION,FALSE-VALUE
|
|
CALL1 SAVE-UNDO-CHECK
|
|
ZERO? STACK \FALSE
|
|
IRESTORE >X
|
|
EQUAL? X,-1 \?CCL6
|
|
PRINTR "UNDO is unavailable on your computer system."
|
|
?CCL6: PRINT FAILED
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SCRIPT
|
|
ZERO? DEMO-VERSION? /?CND1
|
|
ICALL1 NOT-IN-DEMO
|
|
RETURN 2
|
|
?CND1: PRINTI "[Transcript on.]"
|
|
CRLF
|
|
DIROUT D-PRINTER-ON
|
|
ICALL2 CORP-NOTICE,STR?45
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNSCRIPT
|
|
ZERO? DEMO-VERSION? /?CND1
|
|
ICALL1 NOT-IN-DEMO
|
|
RETURN 2
|
|
?CND1: ICALL2 CORP-NOTICE,STR?46
|
|
DIROUT D-PRINTER-OFF
|
|
PRINTI "[Transcript off.]"
|
|
CRLF
|
|
DIROUT D-SCREEN-OFF
|
|
CRLF
|
|
DIROUT D-SCREEN-ON
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CORP-NOTICE,STRING
|
|
DIROUT D-SCREEN-OFF
|
|
PRINTI "Here "
|
|
PRINT STRING
|
|
PRINTI " a transcript of interaction with"
|
|
CRLF
|
|
ICALL1 V-VERSION
|
|
DIROUT D-SCREEN-ON
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-COLOR,DEFAULT
|
|
ZERO? COLOR-NOTE \?CND1
|
|
SET 'COLOR-NOTE,TRUE-VALUE
|
|
PRINTI "Aesthetically, we recommend not changing the standard setting, which is black text on a white background. "
|
|
GETB 0,30
|
|
EQUAL? STACK,MACINTOSH \?CND3
|
|
CALL1 MAC-II?
|
|
ZERO? STACK /?CND3
|
|
PRINTI "Also, if your Mac II displays only 16 colors, you probably won't get the color you ask for. "
|
|
?CND3: PRINTI "Do you still want to go ahead?"
|
|
CRLF
|
|
PRINTI "(Y or N) >"
|
|
CALL1 Y?
|
|
ZERO? STACK /TRUE
|
|
?CND1: CRLF
|
|
?PRG9: ICALL1 DO-COLOR
|
|
PRINTI "You should now get "
|
|
GET COLOR-TABLE,FG-COLOR
|
|
PRINT STACK
|
|
PRINTI " text on a "
|
|
GET COLOR-TABLE,BG-COLOR
|
|
PRINT STACK
|
|
PRINTI " background. Is that what you want?
|
|
(Y or N) >"
|
|
CALL1 Y?
|
|
ZERO? STACK \?REP10
|
|
GETB 0,30
|
|
EQUAL? STACK,MACINTOSH \?CND13
|
|
CALL1 MAC-II?
|
|
ZERO? STACK \?CND13
|
|
EQUAL? BG-COLOR,2 \?CCL19
|
|
SET 'BG-COLOR,9
|
|
SET 'FG-COLOR,2
|
|
JUMP ?REP10
|
|
?CCL19: SET 'BG-COLOR,2
|
|
SET 'FG-COLOR,9
|
|
JUMP ?REP10
|
|
?CND13: CRLF
|
|
PRINTI "Do you want to pick again, or would you like to just go back to the standard colors? (Type Y to pick again) >"
|
|
CALL1 Y?
|
|
ZERO? STACK /?CCL22
|
|
CRLF
|
|
JUMP ?PRG9
|
|
?CCL22: SET 'DEFAULT,TRUE-VALUE
|
|
?REP10: ZERO? DEFAULT /?CCL25
|
|
COLOR 1,1
|
|
JUMP ?CND23
|
|
?CCL25: COLOR FG-COLOR,BG-COLOR
|
|
?CND23: CALL1 V-$REFRESH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DO-COLOR
|
|
GETB 0,30
|
|
EQUAL? STACK,MACINTOSH \?CCL3
|
|
CALL1 MAC-II?
|
|
ZERO? STACK \?CCL3
|
|
EQUAL? BG-COLOR,2 \?CCL8
|
|
SET 'BG-COLOR,9
|
|
SET 'FG-COLOR,2
|
|
RETURN FG-COLOR
|
|
?CCL8: SET 'BG-COLOR,2
|
|
SET 'FG-COLOR,9
|
|
RETURN FG-COLOR
|
|
?CCL3: CALL PICK-COLOR,FG-COLOR,STR?47,TRUE-VALUE >FG-COLOR
|
|
CALL PICK-COLOR,BG-COLOR,STR?48 >BG-COLOR
|
|
RETURN BG-COLOR
|
|
|
|
|
|
.FUNCT PICK-COLOR,WHICH,STRING,SETTING-FG,CHAR
|
|
PRINTI "The current "
|
|
PRINT STRING
|
|
PRINTI " color is "
|
|
GET COLOR-TABLE,WHICH
|
|
PRINT STACK
|
|
PRINT PERIOD-CR
|
|
FONT 4
|
|
PRINTI " 1 --> WHITE 4 --> GREEN"
|
|
CRLF
|
|
PRINTI " 2 --> BLACK 5 --> YELLOW"
|
|
CRLF
|
|
PRINTI " 3 --> RED 6 --> BLUE"
|
|
CRLF
|
|
FONT 1
|
|
PRINTI "Type a number to select the "
|
|
PRINT STRING
|
|
PRINTI " color you want. >"
|
|
?PRG1: ZERO? DEMO-VERSION? /?CCL5
|
|
CALL2 INPUT-DEMO,1 >CHAR
|
|
JUMP ?CND3
|
|
?CCL5: INPUT 1 >CHAR
|
|
?CND3: SUB CHAR,48 >CHAR
|
|
EQUAL? CHAR,1 \?CND6
|
|
SET 'CHAR,9
|
|
?CND6: EQUAL? CHAR,2,3,4 /?CTR9
|
|
EQUAL? CHAR,5,6,9 \?CCL10
|
|
?CTR9: ZERO? SETTING-FG \?REP2
|
|
EQUAL? CHAR,FG-COLOR \?REP2
|
|
CRLF
|
|
PRINTI "You can't make the background the same color as the text! Pick another color. >"
|
|
JUMP ?PRG1
|
|
?CCL10: CRLF
|
|
PRINT TYPE-A-NUMBER
|
|
PRINTI "6. >"
|
|
JUMP ?PRG1
|
|
?REP2: CRLF
|
|
CRLF
|
|
RETURN CHAR
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "STARTUP"
|
|
|
|
|
|
.FUNCT V-CREDITS
|
|
ICALL CENTER-1,STR?59,TRUE-VALUE
|
|
ICALL CENTER-1,STR?60,TRUE-VALUE
|
|
CRLF
|
|
ICALL CENTER-1,STR?61,TRUE-VALUE
|
|
ICALL2 CENTER-1,STR?62
|
|
CRLF
|
|
ICALL CENTER-1,STR?63,TRUE-VALUE
|
|
ICALL CENTER-2,STR?64,STR?65
|
|
ICALL CENTER-2,STR?66,STR?62
|
|
CRLF
|
|
ICALL CENTER-1,STR?67,TRUE-VALUE
|
|
ICALL2 CENTER-1,STR?68
|
|
CRLF
|
|
ICALL CENTER-1,STR?69,TRUE-VALUE
|
|
ICALL CENTER-3,STR?70,STR?71,STR?72
|
|
ICALL CENTER-2,STR?73,STR?74
|
|
CRLF
|
|
ICALL CENTER-1,STR?75,TRUE-VALUE
|
|
ICALL CENTER-2,STR?64,STR?76
|
|
CRLF
|
|
ICALL CENTER-1,STR?77,TRUE-VALUE
|
|
ICALL CENTER-2,STR?64,STR?66
|
|
CRLF
|
|
ICALL CENTER-1,STR?78,TRUE-VALUE
|
|
ICALL2 CENTER-1,STR?79
|
|
ICALL2 CENTER-1,STR?80
|
|
ICALL2 CENTER-1,STR?81
|
|
ICALL2 CENTER-1,STR?82
|
|
CRLF
|
|
ICALL CENTER-1,STR?83,TRUE-VALUE
|
|
ICALL CENTER-3,STR?84,STR?85,STR?86
|
|
ICALL CENTER-3,STR?87,STR?88,STR?89
|
|
ICALL CENTER-3,STR?90,STR?91,STR?92
|
|
ICALL CENTER-3,STR?93,STR?94,STR?95
|
|
ICALL CENTER-2,STR?96,STR?97
|
|
CRLF
|
|
ICALL CENTER-1,STR?98,TRUE-VALUE
|
|
ICALL CENTER-2,STR?99,STR?100
|
|
CRLF
|
|
ICALL CENTER-1,STR?101,TRUE-VALUE
|
|
ICALL CENTER-2,STR?86,STR?100
|
|
ICALL2 CENTER-1,STR?62
|
|
CRLF
|
|
ICALL CENTER-1,STR?102,TRUE-VALUE
|
|
CALL2 CENTER-1,STR?103
|
|
RSTACK
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT V-DIAGNOSE
|
|
GRTR? DESERT-DEATH,0 \?CCL3
|
|
PRINTI "You're "
|
|
GRTR? DESERT-DEATH,4 \?CCL6
|
|
PRINTI "about to pass out"
|
|
JUMP ?CND4
|
|
?CCL6: GRTR? DESERT-DEATH,2 \?CCL8
|
|
PRINTI "dangerously close to passing out"
|
|
JUMP ?CND4
|
|
?CCL8: PRINTI "feeling a bit faint"
|
|
?CND4: PRINTR " from the heat."
|
|
?CCL3: ZERO? ALLIGATOR /?CCL10
|
|
PRINTR "You're a perfectly healthy alligator."
|
|
?CCL10: ZERO? TURNED-INTO /?CCL12
|
|
EQUAL? TURNED-INTO,VIOLIN \?CCL15
|
|
PRINTR "You're fit as a fiddle. In fact, you ARE a fiddle."
|
|
?CCL15: PRINTI "You are"
|
|
ICALL2 APRINT,TURNED-INTO
|
|
PRINTR ". Other details of health pale in comparison."
|
|
?CCL12: FSET? CLOWN-NOSE,WORNBIT \?CCL17
|
|
PRINTI "You're having a bit of trouble breathing, thanks to the "
|
|
ICALL2 DPRINT,CLOWN-NOSE
|
|
PRINTR " on your nose."
|
|
?CCL17: GRTR? HUNGER-COUNT,0 \?CCL19
|
|
PRINTI "You feel "
|
|
EQUAL? HUNGER-COUNT,2 \?CCL22
|
|
PRINTI "very "
|
|
JUMP ?CND20
|
|
?CCL22: EQUAL? HUNGER-COUNT,3 \?CND20
|
|
PRINTI "incredibly "
|
|
?CND20: PRINTR "hungry."
|
|
?CCL19: PRINTR "You're as fit as a fiddle."
|
|
|
|
|
|
.FUNCT V-INVENTORY
|
|
SUB 0,WORNBIT >D-BIT
|
|
ADD D-ALL?,D-PARA?
|
|
CALL D-CONTENTS,WINNER,FALSE-VALUE,STACK
|
|
ZERO? STACK \?CND1
|
|
ZERO? TURNED-INTO /?CCL5
|
|
PRINTI "You are carrying nothing."
|
|
JUMP ?CND1
|
|
?CCL5: PRINTI "You are empty-"
|
|
ZERO? ALLIGATOR /?CCL8
|
|
PRINTI "claw"
|
|
JUMP ?CND6
|
|
?CCL8: PRINTI "hand"
|
|
?CND6: PRINTI "ed."
|
|
?CND1: SET 'D-BIT,WORNBIT
|
|
ADD D-ALL?,D-PARA?
|
|
ICALL D-CONTENTS,WINNER,FALSE-VALUE,STACK
|
|
SET 'D-BIT,FALSE-VALUE
|
|
FSET? GLOVE,WORNBIT \?CND9
|
|
ZERO? GLOVE-COMMENT \?CND9
|
|
SET 'GLOVE-COMMENT,TRUE-VALUE
|
|
PRINTR " [It's probably none of my business, but when you wear that single glove you resemble singer Michael Flathead, formerly of the Flathead Five.]"
|
|
?CND9: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MODE
|
|
CLEAR -1
|
|
ZERO? BORDER-ON /?CCL3
|
|
SET 'BORDER-ON,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?CCL3: SET 'BORDER-ON,TRUE-VALUE
|
|
?CND1: ICALL2 SPLIT-BY-PICTURE,CURRENT-SPLIT
|
|
SCREEN S-FULL
|
|
ICALL2 INIT-STATUS-LINE,TRUE-VALUE
|
|
SCREEN S-TEXT
|
|
PRINTI "Border o"
|
|
ZERO? BORDER-ON /?CCL6
|
|
PRINTC 110
|
|
JUMP ?CND4
|
|
?CCL6: PRINTI "ff"
|
|
?CND4: PRINTR " (obviously)."
|
|
|
|
|
|
.FUNCT V-QUIT
|
|
ICALL1 V-SCORE
|
|
ICALL2 DO-YOU-WISH,STR?104
|
|
CALL1 Y?
|
|
ZERO? STACK /?CCL3
|
|
QUIT
|
|
RTRUE
|
|
?CCL3: PRINT OK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RESTART
|
|
ICALL1 V-SCORE
|
|
ICALL2 DO-YOU-WISH,STR?105
|
|
CALL1 Y?
|
|
ZERO? STACK /FALSE
|
|
PRINTI "Restarting."
|
|
CRLF
|
|
COLOR 1,1
|
|
RESTART
|
|
PRINT FAILED
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DO-YOU-WISH,STRING
|
|
CRLF
|
|
PRINTI "Do you really want to "
|
|
PRINT STRING
|
|
PRINTI " (y or n)? >"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FINISH,REPEATING,CNT
|
|
?PRG1: CRLF
|
|
ZERO? REPEATING \?CND3
|
|
SET 'REPEATING,TRUE-VALUE
|
|
ICALL1 V-SCORE
|
|
?CND3: ICALL1 UPDATE-STATUS-LINE
|
|
PRINTI "Would you like to start over, restore a saved position, "
|
|
EQUAL? HERE,ROOM-OF-THREE-DOORS /?CND5
|
|
PRINTI "undo your last turn, "
|
|
?CND5: PRINTI "end this session of the game, or "
|
|
EQUAL? SCORE,1000 \?CCL9
|
|
PRINTI "see the credits?"
|
|
CRLF
|
|
JUMP ?CND7
|
|
?CCL9: PRINTI "get a hint?"
|
|
CRLF
|
|
?CND7: PRINTI "(Type RESTART, RESTORE, "
|
|
EQUAL? HERE,ROOM-OF-THREE-DOORS /?CND10
|
|
PRINTI "UNDO, "
|
|
?CND10: PRINTI "QUIT, or "
|
|
EQUAL? SCORE,1000 \?CCL14
|
|
PRINTI "CREDITS"
|
|
JUMP ?CND12
|
|
?CCL14: PRINTI "HINT"
|
|
?CND12: PRINTI "): >"
|
|
PUTB P-LEXV,0,10
|
|
PUTB P-INBUF,1,0
|
|
ZERO? DEMO-VERSION? /?CCL17
|
|
ICALL READ-DEMO,P-INBUF,P-LEXV
|
|
JUMP ?CND15
|
|
?CCL17: READ P-INBUF,P-LEXV
|
|
?CND15: ICALL1 MOUSE-INPUT?
|
|
PUTB P-LEXV,0,LEXV-LENGTH
|
|
INC 'CNT
|
|
GET P-LEXV,1
|
|
EQUAL? STACK,W?RESTART \?CCL20
|
|
COLOR 1,1
|
|
RESTART
|
|
PRINT FAILED
|
|
JUMP ?PRG1
|
|
?CCL20: GET P-LEXV,1
|
|
EQUAL? STACK,W?RESTORE \?CCL22
|
|
RESTORE
|
|
ZERO? STACK \?CCL22
|
|
PRINT FAILED
|
|
JUMP ?PRG1
|
|
?CCL22: GET P-LEXV,1
|
|
EQUAL? STACK,W?QUIT,W?Q /?CTR25
|
|
GRTR? CNT,10 \?CCL26
|
|
?CTR25: QUIT
|
|
JUMP ?PRG1
|
|
?CCL26: GET P-LEXV,1
|
|
EQUAL? STACK,W?UNDO \?CCL30
|
|
CALL1 V-UNDO
|
|
ZERO? STACK \?PRG1
|
|
?CCL30: GET P-LEXV,1
|
|
EQUAL? STACK,W?CREDIT,W?CREDITS \?CCL34
|
|
ICALL1 V-CREDITS
|
|
JUMP ?PRG1
|
|
?CCL34: GET P-LEXV,1
|
|
EQUAL? STACK,W?HINTS,W?HINT,W?HELP /?CCL36
|
|
GET P-LEXV,1
|
|
EQUAL? STACK,W?CLUE,W?CLUES \?PRG1
|
|
?CCL36: ICALL1 V-HINT
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT V-VERSION,IDX
|
|
SET 'IDX,18
|
|
PRINTI "ZORK ZERO: The Revenge of Megaboz
|
|
Copyright (c) 1988 by Infocom, Inc. All rights reserved.
|
|
ZORK is a registered trademark of Infocom, Inc."
|
|
CRLF
|
|
ICALL1 INTERPRETER-ID
|
|
PRINTI "Release "
|
|
GET 0,1
|
|
BAND STACK,2047
|
|
PRINTN STACK
|
|
PRINTI " / Serial number "
|
|
?PRG1: GETB 0,IDX
|
|
PRINTC STACK
|
|
IGRTR? 'IDX,23 \?PRG1
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT INTERPRETER-ID
|
|
GETB 0,30
|
|
GET MACHINES,STACK
|
|
PRINT STACK
|
|
PRINTI " Interpreter version "
|
|
GETB 0,0
|
|
PRINTN STACK
|
|
PRINTC 46
|
|
GETB 0,31
|
|
PRINTN STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT MAC-II?
|
|
PICINF ICON-OFFSET,PICINF-TBL /?BOGUS1
|
|
?BOGUS1: GET PICINF-TBL,0
|
|
ZERO? STACK /TRUE
|
|
RFALSE
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "STARTUP"
|
|
|
|
|
|
.FUNCT V-$COMMAND
|
|
DIRIN 1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$RANDOM
|
|
EQUAL? PRSO,INTNUM /?CCL3
|
|
PRINTR "ILLEGAL."
|
|
?CCL3: SUB 0,P-NUMBER
|
|
RANDOM STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$RECORD
|
|
DIROUT D-RECORD-ON
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$UNRECORD
|
|
DIROUT D-RECORD-OFF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$VERIFY
|
|
EQUAL? PRSO,INTNUM \?CCL3
|
|
EQUAL? P-NUMBER,232 \?CCL3
|
|
PRINTN SERIAL
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: ICALL1 INTERPRETER-ID
|
|
PRINTI "Verifying..."
|
|
CRLF
|
|
VERIFY \?CCL8
|
|
PRINT OK
|
|
RTRUE
|
|
?CCL8: PRINTR "** Bad **"
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT V-$REFRESH,DONT-CLEAR
|
|
EQUAL? P-CAN-UNDO,2 \?CND1
|
|
ICALL1 RESTORE-ORPHAN
|
|
SET 'DIR-CNT,0
|
|
?CND1: EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?CCL5
|
|
ICALL1 DO-MAP
|
|
RTRUE
|
|
?CCL5: EQUAL? CURRENT-SPLIT,B-SPLIT \?CCL7
|
|
ICALL1 DRAW-TOWER
|
|
RTRUE
|
|
?CCL7: EQUAL? CURRENT-SPLIT,PBOZ-SPLIT \?CCL9
|
|
ICALL1 SETUP-PBOZ
|
|
RTRUE
|
|
?CCL9: EQUAL? CURRENT-SPLIT,SN-SPLIT \?CCL11
|
|
ICALL1 SETUP-SN
|
|
RTRUE
|
|
?CCL11: EQUAL? CURRENT-SPLIT,F-SPLIT \?CCL13
|
|
ICALL1 SETUP-FANUCCI
|
|
RTRUE
|
|
?CCL13: ZERO? DONT-CLEAR /?CCL16
|
|
ICALL INIT-SL-WITH-SPLIT,CURRENT-SPLIT,TRUE-VALUE
|
|
JUMP ?CND14
|
|
?CCL16: ICALL1 INIT-STATUS-LINE
|
|
?CND14: ICALL1 UPDATE-STATUS-LINE
|
|
GET 0,8
|
|
BAND STACK,-5
|
|
PUT 0,8,STACK
|
|
EQUAL? P-CAN-UNDO,2 \TRUE
|
|
PRINTR "[Undone.]"
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT V-ALARM
|
|
EQUAL? PRSO,ME,ROOMS \?CCL3
|
|
ICALL2 PERFORM-PRSA,ME
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,ANIMATEDBIT \?CCL5
|
|
FSET? PRSO,FEMALEBIT \?CCL8
|
|
PRINTI "Sh"
|
|
JUMP ?CND6
|
|
?CCL8: PRINTC 72
|
|
?CND6: PRINTR "e's wide awake, or haven't you noticed..."
|
|
?CCL5: PRINTR "You're nuts."
|
|
|
|
|
|
.FUNCT V-ASK-ABOUT,OWINNER
|
|
EQUAL? PRSO,ME \?CCL3
|
|
ICALL PERFORM,V?TELL,ME
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,ACTORBIT \?CCL5
|
|
SET 'OWINNER,WINNER
|
|
SET 'WINNER,PRSO
|
|
ICALL PERFORM,V?TELL-ABOUT,ME,PRSI
|
|
SET 'WINNER,OWINNER
|
|
ICALL2 THIS-IS-IT,PRSI
|
|
ICALL2 THIS-IS-IT,PRSO
|
|
RTRUE
|
|
?CCL5: ICALL PERFORM,V?TELL,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ASK-FOR
|
|
EQUAL? PRSO,BROGMOID \?CCL3
|
|
PRINT TALK-TO-BROGMOID
|
|
RTRUE
|
|
?CCL3: PRINTI "Unsurprisingly,"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " doesn't oblige."
|
|
|
|
|
|
.FUNCT V-ASK-NO-ONE-FOR,ACTOR
|
|
CALL FIND-IN,HERE,ACTORBIT >ACTOR
|
|
ZERO? ACTOR /?CCL3
|
|
ICALL PERFORM,V?ASK-FOR,ACTOR,PRSO
|
|
RTRUE
|
|
?CCL3: PRINTR "There's no one here to ask."
|
|
|
|
|
|
.FUNCT V-BEHEAD,CALLED-BY-V-HANG
|
|
PRINTI "You usually need a "
|
|
ZERO? CALLED-BY-V-HANG /?CCL3
|
|
PRINTI "noose"
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI "axe"
|
|
?CND1: PRINTI " to do this"
|
|
FSET? PRSO,ACTORBIT /?CND4
|
|
EQUAL? PRSO,ME /?CND4
|
|
PRINTI ", and besides, it doesn't look like"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " even has a "
|
|
ZERO? CALLED-BY-V-HANG /?CCL10
|
|
PRINTI "neck"
|
|
JUMP ?CND4
|
|
?CCL10: PRINTI "head"
|
|
?CND4: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BITE
|
|
CALL2 HACK-HACK,STR?117
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BURN
|
|
ZERO? PRSI \?CND1
|
|
CALL FIND-IN,PROTAGONIST,FLAMEBIT >PRSI
|
|
ZERO? PRSI /?CCL5
|
|
PRINTI "[with"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTC 93
|
|
CRLF
|
|
ICALL PERFORM,V?BURN,PRSO,PRSI
|
|
RTRUE
|
|
?CCL5: PRINTR "Your burning gaze is insufficient."
|
|
?CND1: FSET? PRSI,FLAMEBIT /?CCL8
|
|
PRINTI "With"
|
|
ICALL2 APRINT,PRSI
|
|
PRINTR "??!?"
|
|
?CCL8: FSET? PRSO,BURNBIT \?CCL10
|
|
PRINTI "Instantly,"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " catches fire and is consumed."
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL13
|
|
CALL2 JIGS-UP,STR?118
|
|
RSTACK
|
|
?CCL13: REMOVE PRSO
|
|
CRLF
|
|
RTRUE
|
|
?CCL10: EQUAL? PRSO,CANDLE \?CCL15
|
|
FSET CANDLE,FLAMEBIT
|
|
FSET CANDLE,ONBIT
|
|
PRINTR "You relight the candle."
|
|
?CCL15: PRINT YOU-CANT
|
|
PRINTI "burn"
|
|
CALL2 ARPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BUY
|
|
PRINTR "That's not for sale."
|
|
|
|
|
|
.FUNCT V-CALL
|
|
EQUAL? PRSO,INTQUOTE \?CCL3
|
|
CALL1 V-SAY
|
|
RSTACK
|
|
?CCL3: CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK /?CCL5
|
|
IN? PRSO,GLOBAL-OBJECTS /?CCL5
|
|
ICALL PERFORM,V?TELL,PRSO
|
|
RTRUE
|
|
?CCL5: CALL2 DO-FIRST,STR?119
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CATCH
|
|
ZERO? PRSI /?CCL3
|
|
PRINTI "Sorry,"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTI " isn't much help in catching"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: PRINTR "The only thing you're likely to catch is a cold."
|
|
|
|
|
|
.FUNCT V-CHASTISE
|
|
EQUAL? PRSO,INTDIR \?CCL3
|
|
PRINT YOULL-HAVE-TO
|
|
PRINTR "go in that direction to see what's there."
|
|
?CCL3: CALL USE-PREPOSITIONS,STR?120,STR?121,STR?122,STR?123
|
|
RSTACK
|
|
|
|
|
|
.FUNCT USE-PREPOSITIONS,VRB,PREP1,PREP2,PREP3
|
|
PRINTI "[Use prepositions to indicate precisely what you want to do: "
|
|
PRINT VRB
|
|
PRINT PREP1
|
|
PRINTI " the object, "
|
|
PRINT VRB
|
|
PRINT PREP2
|
|
PRINTI " it, "
|
|
PRINT VRB
|
|
PRINT PREP3
|
|
PRINTR " it, etc.]"
|
|
|
|
|
|
.FUNCT V-CLEAN
|
|
SET 'AWAITING-REPLY,1
|
|
ICALL QUEUE,I-REPLY,2
|
|
PRINTR "Do you also do windows?"
|
|
|
|
|
|
.FUNCT V-CLIMB
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL2 DO-WALK,P?UP
|
|
RSTACK
|
|
?CCL3: CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL5
|
|
EQUAL? PRSO,WALDO /?CCL5
|
|
IN? PRSO,WALDO /?CCL5
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL5: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-DOWN
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL2 DO-WALK,P?DOWN
|
|
RSTACK
|
|
?CCL3: CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL5
|
|
EQUAL? PRSO,WALDO /?CCL5
|
|
IN? PRSO,WALDO /?CCL5
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL5: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-ON
|
|
EQUAL? PRSO,CAMEL \?CCL3
|
|
IN? PROTAGONIST,CAMEL \?CCL3
|
|
EQUAL? P-PRSA-WORD,W?RIDE \?CCL3
|
|
PRINTR "[You'll have to say which direction you want to ride in.]"
|
|
?CCL3: EQUAL? PRSO,INTDIR \?CCL8
|
|
CALL2 VISIBLE?,CAMEL
|
|
ZERO? STACK /?CCL8
|
|
IN? PROTAGONIST,CAMEL \?CCL13
|
|
ICALL PERFORM,V?RIDE-DIR,CAMEL,PRSO
|
|
RTRUE
|
|
?CCL13: CALL DO-FIRST,STR?124,CAMEL
|
|
RSTACK
|
|
?CCL8: FSET? PRSO,VEHBIT \?CCL15
|
|
ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CCL15: CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL17
|
|
EQUAL? PRSO,WALDO /?CCL17
|
|
IN? PRSO,WALDO /?CCL17
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL17: GET PARSE-RESULT,7
|
|
EQUAL? STACK,W?IN \?CCL22
|
|
CALL2 CANT-VERB-A-PRSO,STR?125
|
|
RSTACK
|
|
?CCL22: CALL2 CANT-VERB-A-PRSO,STR?126
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-OVER
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
EQUAL? PRSO,WALDO /?CCL3
|
|
IN? PRSO,WALDO /?CCL3
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL3: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-UP
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL2 DO-WALK,P?UP
|
|
RSTACK
|
|
?CCL3: CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL5
|
|
EQUAL? PRSO,WALDO /?CCL5
|
|
IN? PRSO,WALDO /?CCL5
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL5: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLOSE
|
|
FSET? PRSO,SURFACEBIT /?CTR2
|
|
FSET? PRSO,ACTORBIT /?CTR2
|
|
FSET? PRSO,VEHBIT \?CCL3
|
|
EQUAL? PRSO,IRON-MAIDEN,LADDER,DB /?CCL3
|
|
EQUAL? PRSO,WATER-CHAMBER,SNAKE-PIT /?CCL3
|
|
?CTR2: CALL1 YOU-MUST-TELL-ME
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,DOORBIT /?CTR11
|
|
FSET? PRSO,CONTBIT \?CCL12
|
|
?CTR11: FSET? PRSO,OPENBIT \?CCL17
|
|
FCLEAR PRSO,OPENBIT
|
|
PRINTI "Okay,"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " is now closed."
|
|
CRLF
|
|
CALL1 NOW-DARK?
|
|
RSTACK
|
|
?CCL17: PRINT ALREADY-IS
|
|
RTRUE
|
|
?CCL12: CALL1 YOU-MUST-TELL-ME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-COUGH
|
|
EQUAL? HERE,ICKY-CAVE \?CCL3
|
|
IN? SICKLY-WITCH,HERE /?CCL3
|
|
ZERO? LIT /?CCL8
|
|
MOVE SICKLY-WITCH,HERE
|
|
MOVE PRICKLY-WITCH,HERE
|
|
PRINTI "Two witches appear, spraying fumigation spells throughout the cave. One of the witches, less healthy than the other, frets, ""Oh, dear, I'm not certain my frail body can stand all these germs!"" The other witch, less friendly than the first, gives you a blistering glare. ""What manners! I certainly wouldn't walk into YOUR home and start spewing phlegm around!"""
|
|
IN? JESTER,HERE \?CCL11
|
|
ICALL1 REMOVE-J
|
|
CRLF
|
|
PRINTI " They notice the jester for the first time."
|
|
PRINT WITCH-REMOVES-J
|
|
RTRUE
|
|
?CCL11: CRLF
|
|
RTRUE
|
|
?CCL8: PRINTR "You hear, briefly, a sound that just might be witches disinfecting a cave. But, in the dark, who can really tell for sure?"
|
|
?CCL3: PRINTR "Hmmm. You seem to be catching a cold. [Can't say I'm surprised, considering you spent last night sleeping on the cold stone floor of Flatheadia castle.]"
|
|
|
|
|
|
.FUNCT PRE-COUNT
|
|
EQUAL? PRSO,ROOMS \FALSE
|
|
PRINTI "There are "
|
|
PRINTN P-MULT
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-COUNT
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CRAWL-UNDER
|
|
FSET? PRSO,TAKEBIT /?CCL3
|
|
CALL1 TELL-HIT-HEAD
|
|
RSTACK
|
|
?CCL3: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CROSS
|
|
CALL1 V-WALK-AROUND
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CUT
|
|
ZERO? PRSI \?CCL3
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL3: PRINTI "Strange concept, cutting"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DATE
|
|
PRINTR """It was on a fateful day in the year 883 GUE..."" is how poets of the future will begin their tales of your quest. Not being a poet of the future, you think of it as the 14th day of Mumberbur."
|
|
|
|
|
|
.FUNCT V-DECODE
|
|
PRINT YOULL-HAVE-TO
|
|
PRINTR "figure it out yourself."
|
|
|
|
|
|
.FUNCT V-DIG
|
|
EQUAL? PRSI,SHOVEL \?CCL3
|
|
EQUAL? PRSO,GROUND /?CCL6
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL6: FSET? HERE,OUTSIDEBIT /?CCL8
|
|
FSET? HERE,DESERTBIT /?CCL8
|
|
PRINTR "The floor is a bit harder than the shovel."
|
|
?CCL8: EQUAL? JUMP-X,STUMP-X \?CCL12
|
|
EQUAL? JUMP-Y,STUMP-Y \?CCL12
|
|
IN? TREASURE-CHEST,LOCAL-GLOBALS \?CCL12
|
|
MOVE TREASURE-CHEST,HERE
|
|
PRINTR "You dig and dig and dig. And dig. Then, summoning hidden reserves of strength, you dig some more. Suddenly... ""Clank."" It's a treasure chest! With a burst of energy you uncover it and drag it out of the hole. As you do so, the walls of the hole collapse, filling it in, and you barely make it out alive."
|
|
?CCL12: PRINTR "You dig a sizable hole but, finding nothing of interest, you fill it in again out of consideration to future passersby and current gamewriters."
|
|
?CCL3: PRINTI "Digging with"
|
|
ZERO? PRSI \?CCL18
|
|
PRINTI " your hands"
|
|
JUMP ?CND16
|
|
?CCL18: ICALL1 TPRINT-PRSI
|
|
?CND16: PRINTR " is slow and tedious."
|
|
|
|
|
|
.FUNCT V-DIG-WITH
|
|
ICALL PERFORM,V?DIG,GROUND,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DRINK
|
|
FSET? PRSO,WATERBIT \?CCL3
|
|
CALL2 PERFORM-PRSA,WATER
|
|
RSTACK
|
|
?CCL3: CALL2 CANT-VERB-A-PRSO,STR?127
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DRINK-FROM
|
|
FSET? PRSO,WATERBIT \?CCL3
|
|
ICALL PERFORM,V?DRINK,WATER
|
|
RTRUE
|
|
?CCL3: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DRINK-WITH
|
|
EQUAL? PRSI,STRAW \?CCL3
|
|
EQUAL? PRSO,ELIXIR \?CCL6
|
|
CALL2 JIGS-UP,STR?128
|
|
RSTACK
|
|
?CCL6: ICALL PERFORM,V?DRINK,PRSO
|
|
RTRUE
|
|
?CCL3: PRINT YOU-CANT
|
|
PRINTI "drink something with"
|
|
CALL2 ARPRINT,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DROP,CHESSPIECE
|
|
IN? PRSO,WALDO \?CCL3
|
|
EQUAL? HERE,HOLD \?CCL6
|
|
MOVE PRSO,HOLD
|
|
JUMP ?CND4
|
|
?CCL6: MOVE PRSO,LAKE-BOTTOM
|
|
?CND4: PRINTI "You release"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: CALL2 SPECIAL-DROP,PRSO
|
|
ZERO? STACK \FALSE
|
|
LOC PROTAGONIST
|
|
FSET? STACK,DROPBIT \?CCL11
|
|
LOC PROTAGONIST
|
|
MOVE PRSO,STACK
|
|
JUMP ?CND9
|
|
?CCL11: MOVE PRSO,HERE
|
|
?CND9: EQUAL? PRSO,EVEN-LARGER-FLY,LARGER-FLY,LARGE-FLY /?CTR13
|
|
EQUAL? PRSO,LARGEST-FLY \?CCL14
|
|
?CTR13: PRINTI "You release"
|
|
ICALL1 TPRINT-PRSO
|
|
JUMP ?CND12
|
|
?CCL14: PRINTI "Dropped"
|
|
?CND12: CALL FIND-IN,HERE,BLACKBIT >CHESSPIECE
|
|
ZERO? CHESSPIECE \?PRD21
|
|
CALL FIND-IN,HERE,WHITEBIT >CHESSPIECE
|
|
ZERO? CHESSPIECE /?CCL19
|
|
?PRD21: FSET? PRSO,TRYTAKEBIT /?CCL19
|
|
CALL FIND-IN,PRSO,TRYTAKEBIT
|
|
ZERO? STACK \?CCL19
|
|
ZERO? TIME-STOPPED \?CCL19
|
|
MOVE PRSO,CHESSPIECE
|
|
PRINTI ". The "
|
|
ICALL2 DPRINT,CHESSPIECE
|
|
PRINTI " says, ""Well what do you know? It's been a long time since I had"
|
|
ICALL2 APRINT,PRSO
|
|
PRINTI "."" "
|
|
FSET? CHESSPIECE,FEMALEBIT \?CCL28
|
|
PRINTI "Sh"
|
|
JUMP ?CND26
|
|
?CCL28: PRINTC 72
|
|
?CND26: PRINTI "e picks it up."
|
|
EQUAL? PRSO,PIGEON \?CCL31
|
|
CALL2 META-LOC,PERCH
|
|
EQUAL? HERE,STACK /?CCL31
|
|
CALL2 PIECE-TAKES-PIGEON,CHESSPIECE
|
|
RSTACK
|
|
?CCL31: CRLF
|
|
RTRUE
|
|
?CCL19: EQUAL? PRSO,BAR-OF-FOOD \?CCL35
|
|
IN? FLAMINGO,HERE \?CCL35
|
|
PRINTR ". The flamingo eyes the food, but appears to be too well-mannered to eat something that hasn't been offered."
|
|
?CCL35: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SPECIAL-DROP,OBJ,CALLED-BY-ROB
|
|
EQUAL? HERE,OUBLIETTE \?CCL3
|
|
GETP OBJ,P?SIZE
|
|
GRTR? STACK,4 \?CCL3
|
|
REMOVE OBJ
|
|
EQUAL? OBJ,PERCH /?CCL7
|
|
CALL ULTIMATELY-IN?,PERCH,PRSO
|
|
ZERO? STACK /?CND6
|
|
?CCL7: SET 'REMOVED-PERCH-LOC,OUBLIETTE
|
|
?CND6: ZERO? CALLED-BY-ROB \TRUE
|
|
PRINTI "With a gentle slurping noise,"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " vanishes slowly into the mud."
|
|
CRLF
|
|
ICALL1 NOW-DARK?
|
|
RTRUE
|
|
?CCL3: EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS \FALSE
|
|
REMOVE OBJ
|
|
EQUAL? OBJ,PERCH /?CCL15
|
|
CALL ULTIMATELY-IN?,PERCH,PRSO
|
|
ZERO? STACK /?CND14
|
|
?CCL15: SET 'REMOVED-PERCH-LOC,BROGMOID
|
|
?CND14: ZERO? CALLED-BY-ROB \TRUE
|
|
PRINTI "As you release"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR ", it dwindles into the mist and is gone from this world forever."
|
|
|
|
|
|
.FUNCT PRE-INGEST
|
|
ZERO? TURNED-INTO /FALSE
|
|
FSET? TURNED-INTO,ANIMATEDBIT /FALSE
|
|
PRINTI "You've turned into"
|
|
ICALL2 APRINT,TURNED-INTO
|
|
PRINTR ", and as a consequence don't have much in the way of a mouth."
|
|
|
|
|
|
.FUNCT V-EAT
|
|
PRINTI "It's not likely that"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " would agree with you."
|
|
|
|
|
|
.FUNCT V-EMPTY,OBJ,NXT
|
|
ZERO? PRSI \?CND1
|
|
SET 'PRSI,GROUND
|
|
?CND1: FSET? PRSO,CONTBIT /?CCL5
|
|
PRINT HUH
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,OPENBIT /?CCL7
|
|
PRINTI "But"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " isn't open."
|
|
?CCL7: FIRST? PRSO /?CCL9
|
|
PRINTI "But"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " is already empty!"
|
|
?CCL9: FIRST? PRSO /?BOGUS14
|
|
?BOGUS14: EQUAL? PRSI,STACK \?CCL11
|
|
NEXT? PRSI /?CCL11
|
|
PRINT THERES-NOTHING
|
|
PRINTI "in"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " but"
|
|
CALL2 TRPRINT,PRSI
|
|
RSTACK
|
|
?CCL11: FIRST? PRSO >OBJ /?PRG16
|
|
?PRG16: NEXT? OBJ >NXT /?BOGUS18
|
|
?BOGUS18: EQUAL? OBJ,PROTAGONIST /?CND19
|
|
ICALL2 DPRINT,OBJ
|
|
PRINTI ": "
|
|
FSET? OBJ,TAKEBIT \?CCL23
|
|
MOVE OBJ,PROTAGONIST
|
|
EQUAL? PRSI,HANDS \?CCL26
|
|
PRINTI "You take"
|
|
ICALL2 TRPRINT,OBJ
|
|
JUMP ?CND19
|
|
?CCL26: EQUAL? PRSI,GROUND \?CCL28
|
|
ICALL PERFORM,V?DROP,OBJ
|
|
JUMP ?CND19
|
|
?CCL28: FSET? PRSI,SURFACEBIT \?CCL30
|
|
ICALL PERFORM,V?PUT-ON,OBJ,PRSI
|
|
JUMP ?CND19
|
|
?CCL30: ICALL PERFORM,V?PUT,OBJ,PRSI
|
|
JUMP ?CND19
|
|
?CCL23: ICALL1 YUKS
|
|
?CND19: ZERO? NXT /TRUE
|
|
SET 'OBJ,NXT
|
|
JUMP ?PRG16
|
|
|
|
|
|
.FUNCT V-EMPTY-FROM
|
|
IN? PRSO,PRSI \?CCL3
|
|
FSET? PRSO,TAKEBIT \?CCL6
|
|
MOVE PRSO,PROTAGONIST
|
|
ICALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CCL6: CALL1 YUKS
|
|
RSTACK
|
|
?CCL3: CALL1 NOT-IN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-ENTER
|
|
IN? PROTAGONIST,PRSO \?CCL3
|
|
PRINT LOOK-AROUND
|
|
RTRUE
|
|
?CCL3: CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL5
|
|
EQUAL? PRSO,WALDO /?CCL5
|
|
IN? PRSO,WALDO /?CCL5
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL5: CALL2 UNTOUCHABLE?,PRSO
|
|
ZERO? STACK /?CCL10
|
|
CALL2 CANT-REACH,PRSO
|
|
RSTACK
|
|
?CCL10: FSET? PRSO,VEHBIT \FALSE
|
|
IN? PRSO,HERE /FALSE
|
|
PRINTI "You'll have to remove"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " from"
|
|
LOC PRSO
|
|
ICALL2 TPRINT,STACK
|
|
PRINTR " first."
|
|
|
|
|
|
.FUNCT V-ENTER,DIR
|
|
EQUAL? PRSO,INTDIR \?CCL3
|
|
CALL1 DIRECTION-CONVERSION
|
|
CALL2 DO-WALK,STACK
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,WATERBIT \?CCL5
|
|
CALL2 PERFORM-PRSA,WATER
|
|
RSTACK
|
|
?CCL5: FSET? PRSO,DOORBIT \?CCL7
|
|
CALL2 OTHER-SIDE,PRSO
|
|
ICALL2 DO-WALK,STACK
|
|
RTRUE
|
|
?CCL7: FSET? PRSO,VEHBIT \?CCL9
|
|
LOC PRSO
|
|
EQUAL? STACK,HERE,LOCAL-GLOBALS /?CCL12
|
|
PRINT YOU-CANT
|
|
PRINTI "board"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " when it's "
|
|
LOC PRSO
|
|
FSET? STACK,SURFACEBIT \?CCL15
|
|
PRINTI "on"
|
|
JUMP ?CND13
|
|
?CCL15: PRINTI "in"
|
|
?CND13: LOC PRSO
|
|
CALL2 TRPRINT,STACK
|
|
RSTACK
|
|
?CCL12: MOVE PROTAGONIST,PRSO
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
PRINTI "You are now "
|
|
EQUAL? PRSO,CARD-TABLE \?CCL18
|
|
PRINTI "sitting at"
|
|
JUMP ?CND16
|
|
?CCL18: FSET? PRSO,INBIT \?CCL20
|
|
PRINTI "in"
|
|
JUMP ?CND16
|
|
?CCL20: PRINTI "on"
|
|
?CND16: ICALL1 TPRINT-PRSO
|
|
PRINTC 46
|
|
GETP PRSO,P?ACTION
|
|
CALL STACK,M-ENTER
|
|
ZERO? STACK \?CND21
|
|
CRLF
|
|
?CND21: FSET PRSO,TOUCHBIT
|
|
RTRUE
|
|
?CCL9: IN? PRSO,ROOMS \?CCL24
|
|
CALL1 FIND-NEXT-ROOM >DIR
|
|
ZERO? DIR /?CCL27
|
|
CALL2 DO-WALK,DIR
|
|
RSTACK
|
|
?CCL27: CALL1 V-WALK-AROUND
|
|
RSTACK
|
|
?CCL24: FSET? PRSO,TAKEBIT /?CCL29
|
|
CALL1 TELL-HIT-HEAD
|
|
RSTACK
|
|
?CCL29: GET PARSE-RESULT,7
|
|
EQUAL? STACK,W?IN \?CCL31
|
|
CALL2 CANT-VERB-A-PRSO,STR?129
|
|
RSTACK
|
|
?CCL31: GET PARSE-RESULT,7
|
|
EQUAL? STACK,W?ON \?CCL33
|
|
CALL2 CANT-VERB-A-PRSO,STR?130
|
|
RSTACK
|
|
?CCL33: SET 'AWAITING-REPLY,1
|
|
ICALL QUEUE,I-REPLY,2
|
|
PRINTI "You have a theory on how to board"
|
|
ICALL2 APRINT,PRSO
|
|
PRINTR ", perhaps?"
|
|
|
|
|
|
.FUNCT FIND-NEXT-ROOM,PT,PTS,DIR
|
|
?PRG1: NEXTP HERE,DIR >DIR
|
|
ZERO? DIR /FALSE
|
|
LESS? DIR,LOW-DIRECTION /FALSE
|
|
GETPT HERE,DIR >PT
|
|
ZERO? PT /?PRG1
|
|
PTSIZE PT >PTS
|
|
EQUAL? PTS,UEXIT,CEXIT \?CCL11
|
|
GETB PT,REXIT
|
|
EQUAL? STACK,PRSO \?PRG1
|
|
RETURN DIR
|
|
?CCL11: EQUAL? PTS,DEXIT \?PRG1
|
|
GETB PT,DEXITRM
|
|
EQUAL? STACK,PRSO \?PRG1
|
|
RETURN DIR
|
|
|
|
|
|
.FUNCT V-EXAMINE
|
|
ZERO? PRSI /?CCL3
|
|
FSET? PRSI,TRANSBIT /?CCL3
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,ACTORBIT \?CCL7
|
|
FIRST? PRSO \?CCL10
|
|
ICALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
?CCL10: ICALL1 NOTHING-INTERESTING
|
|
PRINTI "about"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL7: FSET? PRSO,SURFACEBIT \?CCL12
|
|
CALL1 V-LOOK-INSIDE
|
|
RSTACK
|
|
?CCL12: FSET? PRSO,DOORBIT \?CCL14
|
|
PRINT IT-SEEMS-THAT
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " is "
|
|
ICALL2 OPEN-CLOSED,PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL14: FSET? PRSO,CONTBIT \?CCL16
|
|
FSET? PRSO,OPENBIT /?CTR18
|
|
FSET? GOGGLES,WORNBIT \?CCL19
|
|
?CTR18: CALL1 V-LOOK-INSIDE
|
|
RSTACK
|
|
?CCL19: PRINTI "It's closed."
|
|
FSET? PRSO,TRANSBIT \?CCL24
|
|
FIRST? PRSO \?CCL24
|
|
PRINTC 32
|
|
CALL1 V-LOOK-INSIDE
|
|
RSTACK
|
|
?CCL24: CRLF
|
|
RTRUE
|
|
?CCL16: FSET? PRSO,LIGHTBIT \?CCL28
|
|
PRINTI "It's o"
|
|
FSET? PRSO,ONBIT \?CCL31
|
|
PRINTC 110
|
|
JUMP ?CND29
|
|
?CCL31: PRINTI "ff"
|
|
?CND29: PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL28: FSET? PRSO,READBIT \?CCL33
|
|
ICALL PERFORM,V?READ,PRSO
|
|
RTRUE
|
|
?CCL33: IN? PRSO,ROOMS \?CCL35
|
|
PRINTR "You can't see much from here."
|
|
?CCL35: FSET? PRSO,NARTICLEBIT \?CCL37
|
|
CALL2 SENSE-OBJECT,STR?131
|
|
RSTACK
|
|
?CCL37: RANDOM 100
|
|
LESS? 25,STACK /?CCL39
|
|
PRINTI "Totally ordinary looking "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL39: RANDOM 100
|
|
LESS? 60,STACK \?CTR40
|
|
FSET? PRSO,PLURALBIT /?CTR40
|
|
EQUAL? PRSO,GROUND \?CCL41
|
|
?CTR40: ICALL1 NOTHING-INTERESTING
|
|
PRINTI "about"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL41: ICALL1 PRONOUN
|
|
PRINTI " look"
|
|
FSET? PRSO,PLURALBIT /?CND45
|
|
EQUAL? PRSO,ME /?CND45
|
|
PRINTC 115
|
|
?CND45: PRINTI " like every other "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINTR " you've ever seen."
|
|
|
|
|
|
.FUNCT NOTHING-INTERESTING
|
|
PRINT THERES-NOTHING
|
|
RANDOM 100
|
|
LESS? 25,STACK /?CCL3
|
|
PRINTI "unusual"
|
|
JUMP ?CND1
|
|
?CCL3: RANDOM 100
|
|
LESS? 33,STACK /?CCL5
|
|
PRINTI "noteworthy"
|
|
JUMP ?CND1
|
|
?CCL5: RANDOM 100
|
|
LESS? 50,STACK /?CCL7
|
|
PRINTI "eye-catching"
|
|
JUMP ?CND1
|
|
?CCL7: PRINTI "special"
|
|
?CND1: PRINTC 32
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EXIT
|
|
ZERO? PRSO /?CTR2
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
?CTR2: IN? PROTAGONIST,HERE /?CCL8
|
|
LOC PROTAGONIST
|
|
ICALL PERFORM,V?EXIT,STACK
|
|
RTRUE
|
|
?CCL8: ZERO? UNDER-TABLE /?CCL10
|
|
CALL1 V-STAND
|
|
RSTACK
|
|
?CCL10: GET PARSE-RESULT,7
|
|
EQUAL? STACK,W?DOWN \?CCL12
|
|
PRINTR "You're not on anything."
|
|
?CCL12: CALL2 DO-WALK,P?OUT
|
|
RSTACK
|
|
?CCL3: EQUAL? P-PRSA-WORD,W?TAKE \?CCL14
|
|
ICALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CCL14: ZERO? UNDER-TABLE /?CCL16
|
|
ZERO? PRSO /?CTR15
|
|
EQUAL? PRSO,TABLES \?CCL16
|
|
?CTR15: CALL1 V-STAND
|
|
RSTACK
|
|
?CCL16: IN? PROTAGONIST,PRSO /?CCL22
|
|
SET 'P-CONT,-1
|
|
PRINT LOOK-AROUND
|
|
RTRUE
|
|
?CCL22: ZERO? TURNED-INTO /?CCL24
|
|
FSET? TURNED-INTO,ANIMATEDBIT /?CCL24
|
|
EQUAL? TURNED-INTO,LITTLE-FUNGUS /?CCL24
|
|
CALL1 V-SKIP
|
|
RSTACK
|
|
?CCL24: MOVE PROTAGONIST,HERE
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
PRINTI "You get "
|
|
EQUAL? PRSO,CARD-TABLE \?CCL30
|
|
PRINTI "up from"
|
|
JUMP ?CND28
|
|
?CCL30: FSET? PRSO,INBIT \?CCL32
|
|
PRINTI "out of"
|
|
JUMP ?CND28
|
|
?CCL32: PRINTI "off"
|
|
?CND28: ICALL1 TPRINT-PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-FEED
|
|
PRINTI "You have no food for"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-FILL
|
|
ZERO? PRSI \FALSE
|
|
CALL1 FIND-WATER
|
|
ZERO? STACK /?CCL5
|
|
SET 'PRSI,WATER
|
|
RFALSE
|
|
?CCL5: CALL2 VISIBLE?,LARGE-VIAL-WATER
|
|
ZERO? STACK /?CCL7
|
|
CALL2 VISIBLE?,SMALL-VIAL-WATER
|
|
ZERO? STACK /?CCL7
|
|
EQUAL? PRSO,SMALL-VIAL \?CCL12
|
|
ICALL PERFORM,V?EMPTY,LARGE-VIAL,SMALL-VIAL
|
|
RTRUE
|
|
?CCL12: EQUAL? PRSO,LARGE-VIAL \?CCL14
|
|
ICALL PERFORM,V?EMPTY,SMALL-VIAL,LARGE-VIAL
|
|
RTRUE
|
|
?CCL14: PRINTR "[You'll have to specify which water you mean, the large vial or the small vial.]"
|
|
?CCL7: CALL2 VISIBLE?,LARGE-VIAL-WATER
|
|
ZERO? STACK /?CCL16
|
|
ICALL PERFORM,V?EMPTY,LARGE-VIAL,PRSO
|
|
RTRUE
|
|
?CCL16: CALL2 VISIBLE?,SMALL-VIAL-WATER
|
|
ZERO? STACK /?CCL18
|
|
ICALL PERFORM,V?EMPTY,SMALL-VIAL,PRSO
|
|
RTRUE
|
|
?CCL18: ICALL PERFORM,V?FILL,PRSO,WATER
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FILL
|
|
FSET? PRSI,WATERBIT \?CCL3
|
|
CALL PERFORM-PRSA,PRSO,WATER
|
|
RSTACK
|
|
?CCL3: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FIND,L
|
|
LOC PRSO >L
|
|
ZERO? L \?CCL3
|
|
ICALL1 PRONOUN
|
|
PRINTR " could be anywhere!"
|
|
?CCL3: IN? PRSO,PROTAGONIST \?CCL5
|
|
PRINTR "You have it!"
|
|
?CCL5: IN? PRSO,HERE \?CCL7
|
|
PRINTR "Right in front of you."
|
|
?CCL7: IN? PRSO,GLOBAL-OBJECTS /?CTR8
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK /?CCL9
|
|
?CTR8: CALL1 V-DECODE
|
|
RSTACK
|
|
?CCL9: FSET? L,ACTORBIT \?CCL13
|
|
CALL2 VISIBLE?,L
|
|
ZERO? STACK /?CCL13
|
|
PRINTI "Looks as if"
|
|
ICALL2 TPRINT,L
|
|
PRINTR " has it."
|
|
?CCL13: FSET? L,CONTBIT \?CCL17
|
|
CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK /?CCL17
|
|
IN? L,GLOBAL-OBJECTS /?CCL17
|
|
FSET? L,SURFACEBIT \?CCL23
|
|
PRINTC 79
|
|
JUMP ?CND21
|
|
?CCL23: FSET? L,VEHBIT \?CCL25
|
|
FSET? L,INBIT /?CCL25
|
|
PRINTC 79
|
|
JUMP ?CND21
|
|
?CCL25: PRINTC 73
|
|
?CND21: PRINTC 110
|
|
CALL2 TRPRINT,L
|
|
RSTACK
|
|
?CCL17: CALL1 V-DECODE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FLY
|
|
ZERO? PRSO /?CTR2
|
|
EQUAL? PRSO,INTDIR \?CCL3
|
|
?CTR2: ZERO? TURNED-INTO /?CCL8
|
|
EQUAL? TURNED-INTO,PIGEON,ROOSTER,FLAMINGO /?CTR10
|
|
EQUAL? TURNED-INTO,EVEN-LARGER-FLY,LARGE-FLY,LARGEST-FLY /?CTR10
|
|
EQUAL? TURNED-INTO,LARGER-FLY \?CCL11
|
|
?CTR10: MOVE PROTAGONIST,HERE
|
|
PRINTR "You make a few awkward circuits of the room, bouncing into several walls. (Ouch.)"
|
|
?CCL11: PRINTI "Despite what you may have learned in school,"
|
|
ICALL2 APRINT,TURNED-INTO
|
|
PRINTR " is no more capable of flight than a human."
|
|
?CCL8: PRINTR "Humans are not usually equipped for flying."
|
|
?CCL3: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FOLLOW
|
|
CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
PRINTI "But"
|
|
ICALL2 IS-ARE-PRINT,PRSO
|
|
PRINTR "right here!"
|
|
?CCL3: FSET? PRSO,ACTORBIT /?CCL5
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL5: PRINTI "You have no idea where"
|
|
ICALL1 TPRINT-PRSO
|
|
FSET? PRSO,PLURALBIT \?CCL8
|
|
PRINTI " are"
|
|
JUMP ?CND6
|
|
?CCL8: PRINTI " is"
|
|
?CND6: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-GIVE
|
|
EQUAL? PRSA,V?GIVE \?CCL3
|
|
EQUAL? PRSO,HANDS \?CCL3
|
|
ICALL PERFORM,V?SHAKE-WITH,PRSI
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,EYES \?CCL7
|
|
ICALL1 PRE-SWITCH
|
|
ICALL PERFORM,V?EXAMINE,PRSI,EYES
|
|
RTRUE
|
|
?CCL7: CALL1 IDROP
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-GET-NEAR
|
|
CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-GIVE
|
|
FSET? PRSI,ACTORBIT \?CCL3
|
|
PRINTI "Briskly,"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTI " refuse"
|
|
FSET? PRSI,PLURALBIT /?CND4
|
|
PRINTC 115
|
|
?CND4: PRINTR " your offer."
|
|
?CCL3: PRINT YOU-CANT
|
|
PRINTI "give"
|
|
ICALL2 APRINT,PRSO
|
|
PRINTI " to"
|
|
ICALL2 APRINT,PRSI
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT V-GIVE-UP
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL1 V-QUIT
|
|
RSTACK
|
|
?CCL3: CALL1 RECOGNIZE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HANG
|
|
CALL2 V-BEHEAD,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HELLO
|
|
ZERO? PRSO /?CCL3
|
|
PRINTI "[The proper way to talk to characters in the story is PERSON, HELLO."
|
|
EQUAL? PRSO,SAILOR \?CND4
|
|
PRINTI " Besides, nothing happens here."
|
|
?CND4: PRINTR "]"
|
|
?CCL3: ICALL PERFORM,V?TELL,ME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-HIDE
|
|
PRINT YOU-CANT
|
|
PRINTI "hide "
|
|
ZERO? PRSO /?CND1
|
|
PRINTC 116
|
|
?CND1: PRINTR "here."
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "HINTS"
|
|
|
|
|
|
.FUNCT V-HINT
|
|
EQUAL? HINTS-OFF,-1 \?CCL3
|
|
SET 'HINTS-OFF,0
|
|
PRINTI "Warning: We strongly recommend that you not use hints unless you're definitely stuck. Peeking at hints prematurely will invariably make you enjoy the story less. If you want to avoid reading any hints for the rest of this session, you may at any time during the story type HINTS OFF. Do you still want a hint? (Y or N) >"
|
|
CALL1 Y?
|
|
ZERO? STACK \?CND1
|
|
RETURN 2
|
|
?CCL3: ZERO? HINTS-OFF /?CND1
|
|
ICALL PERFORM,V?HINTS-NO,ROOMS
|
|
RETURN 2
|
|
?CND1: IGRTR? 'HINT-COUNTER,0 \?CND11
|
|
MOD HINT-COUNTER,5
|
|
ZERO? STACK \?CND11
|
|
PRINTI "You're looking at the hints "
|
|
HLIGHT H-BOLD
|
|
PRINTI "again"
|
|
HLIGHT H-NORMAL
|
|
PRINTI "?!! Even Lord Dimwit Flathead would consider that excessive! Do you really want to be such a wimp? (Y or N) >"
|
|
CALL1 Y?
|
|
ZERO? STACK \?CND11
|
|
RETURN 2
|
|
?CND11: CALL1 DO-HINTS
|
|
RSTACK
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT V-HINTS-NO
|
|
EQUAL? PRSO,ROOMS /?CCL3
|
|
ICALL1 RECOGNIZE
|
|
RTRUE
|
|
?CCL3: ZERO? HINTS-OFF /?CCL5
|
|
PRINTI "[You've already deactivated"
|
|
JUMP ?CND1
|
|
?CCL5: SET 'HINTS-OFF,TRUE-VALUE
|
|
PRINTI "[Okay, you will no longer have access to"
|
|
?CND1: PRINTR " help in this session.]"
|
|
|
|
|
|
.FUNCT V-IN
|
|
CALL2 DO-WALK,P?IN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-INFLATE
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-KICK
|
|
CALL2 HACK-HACK,STR?132
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-KILL
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
PRINTI "Trying to kill"
|
|
ICALL2 APRINT,PRSO
|
|
PRINTI " with"
|
|
ZERO? PRSI /?CCL6
|
|
ICALL2 APRINT,PRSI
|
|
JUMP ?CND4
|
|
?CCL6: PRINTI " your bare hands"
|
|
?CND4: PRINTR " is suicidal."
|
|
?CCL3: PRINTI "How strange, fighting"
|
|
ICALL2 APRINT,PRSO
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT V-KISS
|
|
PRINTR "I'd sooner kiss a pig."
|
|
|
|
|
|
.FUNCT V-KNOCK
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
PRINTR "Nobody's home."
|
|
?CCL3: CALL2 HACK-HACK,STR?133
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LEAD-TO
|
|
EQUAL? PRSO,CAMEL \?CCL3
|
|
EQUAL? PRSI,WATER \?CCL3
|
|
FSET? CAMEL,ANIMATEDBIT \?CCL3
|
|
ZERO? CAMEL-THIRSTY \?CCL9
|
|
ICALL PERFORM,V?EXAMINE,CAMEL
|
|
RTRUE
|
|
?CCL9: PRINTR "The camel takes the tiniest sip of lake water, snorts with disgust, and spits it right out."
|
|
?CCL3: PRINTI "It doesn't look like you'll be leading"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " anywhere, let alone to"
|
|
CALL2 TRPRINT,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LEAP
|
|
ZERO? TURNED-INTO /?CCL3
|
|
FSET? TURNED-INTO,ANIMATEDBIT /?CCL3
|
|
EQUAL? TURNED-INTO,LITTLE-FUNGUS /?CCL3
|
|
CALL1 V-SKIP
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSO,ROOMS /?CTR7
|
|
ZERO? PRSO \?CCL8
|
|
?CTR7: EQUAL? HERE,GONDOLA \?CCL13
|
|
GRTR? DIRIGIBLE-COUNTER,0 \?CCL13
|
|
CALL2 DO-WALK,P?OUT
|
|
RSTACK
|
|
?CCL13: EQUAL? HERE,HANGING-FROM-ROOTS,UNDER-THE-WORLD,SHOULDER \?CCL17
|
|
CALL2 JIGS-UP,STR?134
|
|
RSTACK
|
|
?CCL17: CALL1 JUMPLOSS
|
|
ZERO? STACK \TRUE
|
|
EQUAL? HERE,MEGABOZ-HUT \?CCL21
|
|
IN? PROTAGONIST,LADDER \?CCL24
|
|
PRINTR "You don't need to. Thanks to the ladder, you can easily make it through the trap door."
|
|
?CCL24: PRINTR "Your best jump leaves you far short of the trap door."
|
|
?CCL21: CALL1 V-SKIP
|
|
RSTACK
|
|
?CCL8: EQUAL? PRSO,INTDIR \?CCL26
|
|
EQUAL? HERE,OUTER-BAILEY \?CCL29
|
|
EQUAL? JUMP-X,99 /?CCL29
|
|
CALL NOUN-USED?,INTDIR,W?SOUTH,W?NORTH
|
|
ZERO? STACK \?CTR28
|
|
CALL NOUN-USED?,INTDIR,W?EAST,W?WEST
|
|
ZERO? STACK /?CCL29
|
|
?CTR28: CALL NOUN-USED?,INTDIR,W?NORTH
|
|
ZERO? STACK /?CCL37
|
|
INC 'JUMP-Y
|
|
JUMP ?CND27
|
|
?CCL37: CALL NOUN-USED?,INTDIR,W?SOUTH
|
|
ZERO? STACK /?CCL39
|
|
DEC 'JUMP-Y
|
|
JUMP ?CND27
|
|
?CCL39: CALL NOUN-USED?,INTDIR,W?EAST
|
|
ZERO? STACK /?CCL41
|
|
INC 'JUMP-X
|
|
JUMP ?CND27
|
|
?CCL41: DEC 'JUMP-X
|
|
JUMP ?CND27
|
|
?CCL29: SET 'JUMP-X,99
|
|
SET 'JUMP-Y,99
|
|
?CND27: IN? PROTAGONIST,TREE-STUMP \?CND42
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
MOVE PROTAGONIST,HERE
|
|
?CND42: PRINTR "You jump once in that direction."
|
|
?CCL26: IN? PRSO,HERE /?CCL45
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL45: CALL1 JUMPLOSS
|
|
ZERO? STACK \TRUE
|
|
CALL1 V-SKIP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT JUMPLOSS
|
|
EQUAL? HERE,PARAPET,UPPER-LEDGE,LOWER-LEDGE /?CTR2
|
|
EQUAL? HERE,G-U-MOUNTAIN,BALCONY,ROOF /?CTR2
|
|
EQUAL? HERE,QUARRYS-EDGE \FALSE
|
|
?CTR2: RANDOM 100
|
|
LESS? 33,STACK /?CCL9
|
|
PRINTI "Geronimo"
|
|
JUMP ?CND7
|
|
?CCL9: RANDOM 100
|
|
LESS? 50,STACK /?CCL11
|
|
PRINTI "You should have looked before you leapt"
|
|
JUMP ?CND7
|
|
?CCL11: PRINTI "This was not a very good place to try jumping"
|
|
?CND7: CALL2 JIGS-UP,STR?135
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LEAP-OFF
|
|
FSET? PRSO,VEHBIT \?CCL3
|
|
ICALL PERFORM,V?EXIT,PRSO
|
|
RTRUE
|
|
?CCL3: ICALL PERFORM,V?LEAP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LEAVE
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL2 DO-WALK,P?OUT
|
|
RSTACK
|
|
?CCL3: IN? PROTAGONIST,PRSO \?CCL5
|
|
ICALL PERFORM,V?EXIT,PRSO
|
|
RTRUE
|
|
?CCL5: ICALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LET-OUT
|
|
PRINTI "But"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " isn't all that confined."
|
|
|
|
|
|
.FUNCT V-LIE-DOWN
|
|
IN? BEDBUG,HERE \?CCL3
|
|
PRINTI "You curl up for a moment. "
|
|
CALL2 REMOVE-BEDBUG,STR?136
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,VEHBIT \?CCL5
|
|
ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSO,ROOMS \?CCL7
|
|
EQUAL? HERE,DIMWITS-ROOM \?CCL7
|
|
ICALL PERFORM,V?ENTER,DIMWITS-BED
|
|
RTRUE
|
|
?CCL7: CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-LISTEN
|
|
ZERO? TIME-STOPPED /?CCL3
|
|
PRINTR "Unremitting silence."
|
|
?CCL3: ZERO? TURNED-INTO /FALSE
|
|
FSET? TURNED-INTO,ANIMATEDBIT /FALSE
|
|
SET 'P-CONT,-1
|
|
CALL2 TO-SPEAK-OF,STR?137
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LISTEN,PLANT
|
|
ZERO? PRSO /?CCL3
|
|
CALL2 SENSE-OBJECT,STR?138
|
|
RSTACK
|
|
?CCL3: EQUAL? HERE,TORTURE-CHAMBER \?CCL5
|
|
FSET? METRONOME,TRYTAKEBIT \?CCL5
|
|
GRTR? METRONOME-COUNTER,0 \?CCL5
|
|
CALL1 METRONOME-TORTURE
|
|
RSTACK
|
|
?CCL5: CALL2 VISIBLE?,METRONOME
|
|
ZERO? STACK /?CCL10
|
|
ZERO? METRONOME-ON /?CCL10
|
|
ICALL QUEUE,I-METRONOME,2
|
|
CALL2 I-METRONOME,TRUE-VALUE
|
|
RSTACK
|
|
?CCL10: CALL FIND-IN,HERE,PLANTBIT >PLANT
|
|
ZERO? PLANT /?CCL14
|
|
ZERO? PLANT-TALKER /?CCL14
|
|
PRINTI "[to"
|
|
ICALL2 TPRINT,PLANT
|
|
PRINTC 93
|
|
CRLF
|
|
CALL2 PERFORM-PRSA,PLANT
|
|
RSTACK
|
|
?CCL14: PRINTR "You hear nothing of interest."
|
|
|
|
|
|
.FUNCT PRE-LOCK,KEY
|
|
ZERO? PRSI \FALSE
|
|
CALL FIND-IN,PROTAGONIST,KEYBIT >KEY
|
|
ZERO? KEY /?CCL6
|
|
SET 'PRSI,KEY
|
|
PRINTI "[with"
|
|
ICALL2 TPRINT,KEY
|
|
PRINTC 93
|
|
CRLF
|
|
RFALSE
|
|
?CCL6: SET 'AWAITING-REPLY,1
|
|
ICALL QUEUE,I-REPLY,2
|
|
PRINTR "What? With your nose?"
|
|
|
|
|
|
.FUNCT V-LOCK,KEY
|
|
FSET? PRSO,LOCKEDBIT \?CCL3
|
|
PRINT ALREADY-IS
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,DOORBIT /?CTR4
|
|
EQUAL? PRSO,TRUNK \?CCL5
|
|
?CTR4: PRINTI "Unfortunately,"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTI " doesn't lock"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL5: PRINT YOU-CANT
|
|
PRINTI "lock"
|
|
CALL2 ARPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-LOOK
|
|
ZERO? LIT \?CCL3
|
|
PRINT TOO-DARK
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?READ \?CCL5
|
|
ZERO? TURNED-INTO /?CCL5
|
|
FSET? TURNED-INTO,ANIMATEDBIT /?CCL5
|
|
SET 'P-CONT,-1
|
|
CALL2 TO-SPEAK-OF,STR?139
|
|
RSTACK
|
|
?CCL5: EQUAL? PRSA,V?READ \FALSE
|
|
CALL2 UNTOUCHABLE?,PRSO
|
|
ZERO? STACK /FALSE
|
|
FSET? PRSO,TAKEBIT \FALSE
|
|
PRINT YNH
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK
|
|
CALL2 D-ROOM,TRUE-VALUE
|
|
ZERO? STACK /TRUE
|
|
ICALL1 D-OBJECTS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-BEHIND
|
|
FSET? PRSO,DOORBIT \?CND1
|
|
ICALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
?CND1: PRINTI "There is nothing behind"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-DOWN
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
EQUAL? HERE,HANGING-FROM-ROOTS,UNDER-THE-WORLD \?CCL6
|
|
CALL1 V-LOOK
|
|
RSTACK
|
|
?CCL6: ICALL PERFORM,V?EXAMINE,GROUND
|
|
RTRUE
|
|
?CCL3: ICALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-INSIDE,X-RAYED
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
PRINT IT-SEEMS-THAT
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " has"
|
|
CALL1 D-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL3: IN? PROTAGONIST,PRSO \?CCL7
|
|
CALL1 D-VEHICLE
|
|
RSTACK
|
|
?CCL7: FSET? PRSO,DOORBIT \?CCL9
|
|
PRINTI "All you can tell is that"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " is "
|
|
ICALL2 OPEN-CLOSED,PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL9: GET PARSE-RESULT,7
|
|
EQUAL? STACK,W?OUT \?CCL11
|
|
PRINTR "You see nothing special."
|
|
?CCL11: FSET? PRSO,SURFACEBIT \?CCL13
|
|
PRINTI "On the surface of"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " you see"
|
|
CALL1 D-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL13: FSET? PRSO,VEHBIT \?CCL17
|
|
FIRST? PRSO /?CCL17
|
|
FSET? PRSO,OPENBIT /?CCL22
|
|
ICALL DO-FIRST,STR?140,PRSO
|
|
RTRUE
|
|
?CCL22: FSET? PRSO,OPENBIT /?CND20
|
|
FSET? PRSO,TRANSBIT /?CND20
|
|
FSET? GOGGLES,WORNBIT \?CND20
|
|
SET 'X-RAYED,TRUE-VALUE
|
|
ICALL1 DISCOVER-X-RAY
|
|
?CND20: PRINTI "There is no one "
|
|
FSET? PRSO,INBIT \?CCL29
|
|
PRINTC 105
|
|
JUMP ?CND27
|
|
?CCL29: PRINTC 111
|
|
?CND27: PRINTC 110
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL17: FSET? PRSO,CONTBIT \?CCL31
|
|
FSET? PRSO,OPENBIT /?CND32
|
|
FSET? PRSO,TRANSBIT /?CND32
|
|
FSET? GOGGLES,WORNBIT \?CND32
|
|
SET 'X-RAYED,TRUE-VALUE
|
|
ICALL1 DISCOVER-X-RAY
|
|
?CND32: CALL2 SEE-INSIDE?,PRSO
|
|
ZERO? STACK /?CCL39
|
|
PRINTI "Within"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " you see"
|
|
CALL1 D-NOTHING
|
|
ZERO? STACK \?CND40
|
|
PRINT PERIOD-CR
|
|
?CND40: ZERO? X-RAYED /TRUE
|
|
PRINTI " After a moment, the power of the goggles wanes, and"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " no longer seems transparent."
|
|
?CCL39: FSET? PRSO,OPENBIT /?CCL45
|
|
FIRST? PRSO \?CCL45
|
|
GET PARSE-RESULT,7
|
|
EQUAL? STACK,W?IN \?CCL45
|
|
CALL2 UNTOUCHABLE?,PRSO
|
|
ZERO? STACK /?CND49
|
|
ICALL2 CANT-REACH,PRSO
|
|
RTRUE
|
|
?CND49: ICALL PERFORM,V?OPEN,PRSO
|
|
RTRUE
|
|
?CCL45: CALL DO-FIRST,STR?140,PRSO
|
|
RSTACK
|
|
?CCL31: GET PARSE-RESULT,7
|
|
EQUAL? STACK,W?IN \?CCL52
|
|
CALL2 CANT-VERB-A-PRSO,STR?141
|
|
RSTACK
|
|
?CCL52: CALL2 CANT-VERB-A-PRSO,STR?142
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-OVER
|
|
CALL1 V-EXAMINE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-UNDER
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
EQUAL? PRSO,WALDO /?CCL3
|
|
IN? PRSO,WALDO /?CCL3
|
|
FSET? PRSO,WORNBIT \?CCL9
|
|
PRINT WEARING-IT
|
|
RTRUE
|
|
?CCL9: PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,WATERBIT \?CCL11
|
|
CALL2 PERFORM-PRSA,WATER
|
|
RSTACK
|
|
?CCL11: PRINTI "There is nothing but "
|
|
IN? PRSO,MIRROR-LAKE \?CCL14
|
|
PRINTI "ice"
|
|
JUMP ?CND12
|
|
?CCL14: LOC PRSO
|
|
FSET? STACK,DELTABIT \?CCL16
|
|
PRINTI "swamp"
|
|
JUMP ?CND12
|
|
?CCL16: EQUAL? PRSO,EAST-DOCK,SOUTH-DOCK,NORTH-DOCK /?CTR17
|
|
EQUAL? PRSO,WHARF,YACHT,WEST-DOCK /?CTR17
|
|
EQUAL? PRSO,BRIDGE /?CTR17
|
|
EQUAL? PRSO,DRAWBRIDGE /?PRD25
|
|
EQUAL? PRSO,GLOBAL-HERE \?PRD23
|
|
EQUAL? HERE,DRAWBRIDGE \?PRD23
|
|
?PRD25: FSET? DRAWBRIDGE,OPENBIT /?CTR17
|
|
?PRD23: EQUAL? HERE,LAKE-BOTTOM \?PRD30
|
|
IN? PRSO,HERE /?CTR17
|
|
?PRD30: EQUAL? PRSO,DB,WALDO \?PRD33
|
|
EQUAL? HERE,HOLD \?CTR17
|
|
?PRD33: IN? PRSO,WALDO \?PRD36
|
|
EQUAL? HERE,HOLD \?CTR17
|
|
?PRD36: IN? PRSO,FISH-TANK \?CCL18
|
|
?CTR17: PRINTI "water"
|
|
JUMP ?CND12
|
|
?CCL18: PRINTI "dust"
|
|
?CND12: PRINTR " there."
|
|
|
|
|
|
.FUNCT V-LOWER
|
|
CALL1 V-RAISE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MAP,TBL,RM,RM-ICON,CX,CY,CHAR
|
|
ZERO? DEMO-VERSION? /?CCL3
|
|
ICALL1 NOT-IN-DEMO
|
|
RETURN 2
|
|
?CCL3: CALL1 DO-MAP
|
|
EQUAL? STACK,M-FATAL \?CND1
|
|
RETURN 2
|
|
?CND1: GETP HERE,P?MAP-LOC >TBL
|
|
GET TBL,1
|
|
CALL2 MAP-Y,STACK >CY
|
|
GET TBL,2
|
|
CALL2 MAP-X,STACK >CX
|
|
?PRG9: ISAVE
|
|
EQUAL? 2,STACK \?CND11
|
|
ICALL1 V-$REFRESH
|
|
?CND11: GETP HERE,P?ICON >RM-ICON
|
|
ZERO? RM-ICON /?CCL15
|
|
PUSH RM-ICON
|
|
JUMP ?CND13
|
|
?CCL15: PUSH ICONLESS-ROOM-BOX
|
|
?CND13: CALL BLINK,STACK,YOU-ARE-HERE-SYMBOL,CY,CX,S-FULL >CHAR
|
|
EQUAL? CHAR,CLICK1,CLICK2 \?REP10
|
|
CALL1 MAP-CLICK
|
|
ZERO? STACK /?CND19
|
|
SET 'ROSE-NEEDS-UPDATING,TRUE-VALUE
|
|
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?REP10
|
|
FSET? HERE,DELTABIT \?CCL25
|
|
ICALL1 RETURN-FROM-MAP
|
|
JUMP ?REP10
|
|
?CCL25: ZERO? CHANGE-MAP /?CND21
|
|
ICALL1 DO-MAP
|
|
?CND21: GETP HERE,P?MAP-LOC >TBL
|
|
GET TBL,1
|
|
CALL2 MAP-Y,STACK >CY
|
|
GET TBL,2
|
|
CALL2 MAP-X,STACK >CX
|
|
?CND19: EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC /?PRG9
|
|
?REP10: CALL1 RETURN-FROM-MAP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DO-MAP,TBL,MAP-NUM,RM,RM-ICON,?TMP1
|
|
SET 'CHANGE-MAP,FALSE-VALUE
|
|
EQUAL? HERE,GONDOLA \?CCL3
|
|
GETP HERE,P?MAP-LOC
|
|
GET STACK,0
|
|
EQUAL? STACK,FALSE-VALUE \?CCL3
|
|
PRINTI "[Mapping is temporarily unavailable.]"
|
|
CRLF
|
|
RETURN 2
|
|
?CCL3: GETP HERE,P?MAP-LOC
|
|
ZERO? STACK \?CCL9
|
|
PRINTI "[No on-screen map is available for this location."
|
|
EQUAL? HERE,CONSTRUCTION \?CND10
|
|
PRINTI " Use the blueprint from your package."
|
|
?CND10: PRINTC 93
|
|
CRLF
|
|
RETURN 2
|
|
?CCL9: FSET? HERE,DELTABIT /?PRD17
|
|
EQUAL? HERE,RIVERS-END,OCEANS-EDGE \?CCL15
|
|
?PRD17: ZERO? CHANGED-MAP-WARNING \?CCL15
|
|
SET 'CHANGED-MAP-WARNING,TRUE-VALUE
|
|
PRINTI "The jester "
|
|
IN? JESTER,HERE /?CND20
|
|
PRINTI "appears for a moment and "
|
|
?CND20: PRINTI "says, ""It may seem odd and it may seem queer, but on-screen mapping works differently here."""
|
|
CRLF
|
|
CRLF
|
|
ICALL1 HIT-ANY-KEY
|
|
JUMP ?CND1
|
|
?CCL15: ZERO? MAP-NOTE \?CND1
|
|
SET 'MAP-NOTE,TRUE-VALUE
|
|
PRINTI "Please read the section in the manual on on-screen mapping, if you have not already done so. Are you ready to see the map (y or n)? >"
|
|
CALL1 Y?
|
|
ZERO? STACK \?CND1
|
|
RETURN 2
|
|
?CND1: PICINF MAP-BOX-SIZE,PICINF-TBL /?BOGUS27
|
|
?BOGUS27: GET PICINF-TBL,1 >MAP-BOX-WIDTH
|
|
GET PICINF-TBL,0 >MAP-BOX-HEIGHT
|
|
PICINF MAP-SPACE-SIZE,PICINF-TBL /?BOGUS28
|
|
?BOGUS28: GET PICINF-TBL,1 >MAP-SPACE-WIDTH
|
|
GET PICINF-TBL,0 >MAP-SPACE-HEIGHT
|
|
ICALL2 PICINF-PLUS-ONE,MAP-TOP-LEFT-LOC
|
|
GET PICINF-TBL,1 >MAP-TOP-LEFT-X
|
|
GET PICINF-TBL,0 >MAP-TOP-LEFT-Y
|
|
PICINF MAP-BASIC-ELT-SIZE,PICINF-TBL /?BOGUS29
|
|
?BOGUS29: GET PICINF-TBL,1 >MAP-ELEMENT-WIDTH
|
|
GET PICINF-TBL,0 >MAP-ELEMENT-HEIGHT
|
|
CLEAR -1
|
|
SCREEN S-FULL
|
|
SET 'CURRENT-SPLIT,MAP-TOP-LEFT-LOC
|
|
DISPLAY MAP-BORDER,1,1
|
|
GETP HERE,P?MAP-LOC >TBL
|
|
GET TBL,0 >MAP-NUM
|
|
FIRST? ROOMS >RM /?BOGUS30
|
|
?BOGUS30: ICALL2 MODIFY-PICSET-TBL,MAP-NUM
|
|
PICSET MAP-PICSET-TBL
|
|
ICALL2 DRAW-TITLES,MAP-NUM
|
|
?PRG31: ZERO? RM /?REP32
|
|
GETP RM,P?MAP-LOC >TBL
|
|
ZERO? TBL /?CND35
|
|
GET TBL,0
|
|
EQUAL? STACK,MAP-NUM \?CND35
|
|
FSET? RM,TOUCHBIT /?CCL38
|
|
EQUAL? HERE,RM /?CCL38
|
|
EQUAL? RM,FR-OFFICES,OFFICES-NORTH,OFFICES-SOUTH /?PRD45
|
|
EQUAL? RM,OFFICES-EAST,OFFICES-WEST \?CND35
|
|
?PRD45: ZERO? BEEN-IN-FR-UPPER-FLOORS /?CND35
|
|
?CCL38: FSET? RM,DELTABIT \?CCL50
|
|
FIRST? RM \?CND35
|
|
?CCL50: GETP RM,P?ICON >RM-ICON
|
|
ZERO? RM-ICON /?CCL54
|
|
GET TBL,1 >?TMP1
|
|
GET TBL,2
|
|
ICALL DISPLAY-ROOM,RM-ICON,?TMP1,STACK
|
|
ICALL DRAW-CONS,RM,TBL
|
|
JUMP ?CND35
|
|
?CCL54: GET TBL,1 >?TMP1
|
|
GET TBL,2
|
|
ICALL DISPLAY-ROOM,ICONLESS-ROOM-BOX,?TMP1,STACK
|
|
ICALL DRAW-CONS,RM,TBL
|
|
?CND35: NEXT? RM >RM /?PRG31
|
|
JUMP ?PRG31
|
|
?REP32: ICALL2 PICINF-PLUS-ONE,MAP-ROSE-LOC
|
|
GET PICINF-TBL,0 >?TMP1
|
|
GET PICINF-TBL,1
|
|
DISPLAY MAP-ROSE-BG,?TMP1,STACK
|
|
CALL1 UPDATE-MAP-ROSE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT UPDATE-MAP-ROSE
|
|
SET 'ROSE-NEEDS-UPDATING,FALSE-VALUE
|
|
ICALL2 PICINF-PLUS-ONE,MAP-COMPASS-PIC-LOC
|
|
ICALL DRAW-COMPASS-ROSE,P?NORTH,MAP-N-HL,MAP-N-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?NE,MAP-NE-HL,MAP-NE-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?EAST,MAP-E-HL,MAP-E-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?SE,MAP-SE-HL,MAP-SE-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?SOUTH,MAP-S-HL,MAP-S-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?SW,MAP-SW-HL,MAP-SW-UNHL
|
|
ICALL DRAW-COMPASS-ROSE,P?WEST,MAP-W-HL,MAP-W-UNHL
|
|
CALL DRAW-COMPASS-ROSE,P?NW,MAP-NW-HL,MAP-NW-UNHL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT MODIFY-PICSET-TBL,MAP-NUM,TBL,?TMP1
|
|
EQUAL? MAP-NUM,MAIN-MAP-NUM \?CCL3
|
|
SET 'TBL,MAIN-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL3: EQUAL? MAP-NUM,SECRET-WING-MAP-NUM \?CCL5
|
|
SET 'TBL,SECRET-WING-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL5: EQUAL? MAP-NUM,VILLAGE-MAP-NUM \?CCL7
|
|
SET 'TBL,VILLAGE-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL7: EQUAL? MAP-NUM,LOWER-LEVEL-MAP-NUM \?CCL9
|
|
SET 'TBL,LOWER-LEVEL-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL9: EQUAL? MAP-NUM,LAKE-MAP-NUM \?CCL11
|
|
SET 'TBL,LAKE-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL11: EQUAL? MAP-NUM,DESERT-MAP-NUM \?CCL13
|
|
SET 'TBL,DESERT-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL13: EQUAL? MAP-NUM,FOOZLE-MAP-NUM \?CCL15
|
|
SET 'TBL,FOOZLE-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL15: EQUAL? MAP-NUM,FENSHIRE-MAP-NUM \?CCL17
|
|
SET 'TBL,FENSHIRE-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL17: EQUAL? MAP-NUM,FJORD-MAP-NUM \?CCL19
|
|
SET 'TBL,CRAG-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL19: EQUAL? MAP-NUM,GRAY-MOUNTAINS-MAP-NUM \?CCL21
|
|
SET 'TBL,GLACIER-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL21: EQUAL? MAP-NUM,DELTA-MAP-NUM \?CCL23
|
|
SET 'TBL,DELTA-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL23: EQUAL? MAP-NUM,FUBLIO-MAP-NUM \?CCL25
|
|
SET 'TBL,FUBLIO-ICON-TBL
|
|
JUMP ?CND1
|
|
?CCL25: SET 'TBL,ANTHARIA-ICON-TBL
|
|
?CND1: ADD TBL,2 >?TMP1
|
|
GET TBL,0
|
|
MUL 2,STACK
|
|
COPYT ?TMP1,MAP-PICSET-TBL+42,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT MAP-CLICK,TL-X,TL-Y,BR-X,BR-Y,TOP,CNT-X,CNT-Y,DONE,DIR,OHERE,TBL,MAP-NUM
|
|
SET 'CNT-X,1
|
|
SET 'CNT-Y,1
|
|
CALL1 MAP-NEIGHBORS >DIR
|
|
ZERO? DIR /?CCL3
|
|
ICALL2 DO-WALK,DIR
|
|
GETP HERE,P?ACTION
|
|
ICALL D-APPLY,STR?143,STACK,M-END
|
|
ICALL1 CLOCKER
|
|
RTRUE
|
|
?CCL3: CALL COMPASS-CLICK,MAP-COMPASS-PIC-LOC,MAP-N-HL >DIR
|
|
ZERO? DIR /?CCL5
|
|
SET 'OHERE,HERE
|
|
GETP HERE,P?MAP-LOC >TBL
|
|
GET TBL,0 >MAP-NUM
|
|
ICALL2 DO-WALK,DIR
|
|
EQUAL? HERE,OHERE \?CCL8
|
|
SOUND 1
|
|
RFALSE
|
|
?CCL8: GETP HERE,P?MAP-LOC >TBL
|
|
ZERO? TBL /?CCL10
|
|
GET TBL,0
|
|
EQUAL? MAP-NUM,STACK /?CND6
|
|
SET 'CHANGE-MAP,TRUE-VALUE
|
|
JUMP ?CND6
|
|
?CCL10: ICALL1 RETURN-FROM-MAP
|
|
?CND6: GETP HERE,P?ACTION
|
|
ICALL D-APPLY,STR?143,STACK,M-END
|
|
ICALL1 CLOCKER
|
|
RTRUE
|
|
?CCL5: SOUND 1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT MAP-NEIGHBORS,DIR,PT,PTS,TMP,?PR-DIR,?PR-PT
|
|
SET '?PR-DIR,65
|
|
?PRG1: DLESS? '?PR-DIR,LOW-DIRECTION /FALSE
|
|
GETPT HERE,?PR-DIR >?PR-PT
|
|
ZERO? ?PR-PT /?PRG1
|
|
PTSIZE ?PR-PT >PTS
|
|
EQUAL? PTS,NEXIT /?PRG1
|
|
EQUAL? PTS,UEXIT,CEXIT \?CCL10
|
|
GETB ?PR-PT,REXIT >TMP
|
|
CALL2 CLICKED-ON-NEIGHBOR,TMP
|
|
ZERO? STACK /?PRG1
|
|
RETURN ?PR-DIR
|
|
?CCL10: EQUAL? PTS,DEXIT \?CCL14
|
|
GETB ?PR-PT,DEXITRM >TMP
|
|
CALL2 CLICKED-ON-NEIGHBOR,TMP
|
|
ZERO? STACK /?PRG1
|
|
RETURN ?PR-DIR
|
|
?CCL14: EQUAL? PTS,FEXIT \?PRG1
|
|
SET 'PRSO,?PR-DIR
|
|
GET ?PR-PT,FEXITFCN
|
|
CALL STACK,M-ENTER >TMP
|
|
ZERO? TMP /?PRG1
|
|
CALL2 CLICKED-ON-NEIGHBOR,TMP
|
|
ZERO? STACK /?PRG1
|
|
RETURN ?PR-DIR
|
|
|
|
|
|
.FUNCT CLICKED-ON-NEIGHBOR,RM,TL-X,TL-Y,BR-X,BR-Y,TBL,MAP-NUM
|
|
GETP HERE,P?MAP-LOC >TBL
|
|
GET TBL,0 >MAP-NUM
|
|
GETP RM,P?MAP-LOC >TBL
|
|
ZERO? TBL /FALSE
|
|
GET TBL,0
|
|
EQUAL? STACK,MAP-NUM \FALSE
|
|
GET TBL,1
|
|
CALL2 MAP-Y,STACK >TL-Y
|
|
GET TBL,2
|
|
CALL2 MAP-X,STACK >TL-X
|
|
PICINF MAP-BOX-SIZE,PICINF-TBL /?BOGUS6
|
|
?BOGUS6: GET PICINF-TBL,0
|
|
ADD TL-Y,STACK >BR-Y
|
|
GET PICINF-TBL,1
|
|
ADD TL-X,STACK >BR-X
|
|
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RETURN-FROM-MAP
|
|
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \FALSE
|
|
SET 'CHANGE-MAP,FALSE-VALUE
|
|
SET 'CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC
|
|
ICALL1 V-$REFRESH
|
|
EQUAL? VERBOSITY,2 \?PRG6
|
|
ICALL1 V-LOOK
|
|
?PRG6: RETURN 2
|
|
|
|
|
|
.FUNCT MAP-X,X-POS
|
|
GRTR? X-POS,0 \?CCL3
|
|
ICALL2 PICINF-PLUS-ONE,X-POS
|
|
GET PICINF-TBL,1
|
|
RSTACK
|
|
?CCL3: SUB 0,X-POS
|
|
MUL STACK,MAP-ELEMENT-WIDTH
|
|
ADD MAP-TOP-LEFT-X,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT MAP-Y,Y-POS
|
|
GRTR? Y-POS,0 \?CCL3
|
|
ICALL2 PICINF-PLUS-ONE,Y-POS
|
|
GET PICINF-TBL,0
|
|
RSTACK
|
|
?CCL3: SUB 0,Y-POS
|
|
MUL STACK,MAP-ELEMENT-HEIGHT
|
|
ADD MAP-TOP-LEFT-Y,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DISPLAY-ROOM,PICTURE-ID,Y-POS,X-POS,Y-FUDGE,X-FUDGE,?TMP1
|
|
CALL2 MAP-Y,Y-POS
|
|
ADD Y-FUDGE,STACK >?TMP1
|
|
CALL2 MAP-X,X-POS
|
|
ADD X-FUDGE,STACK
|
|
DISPLAY PICTURE-ID,?TMP1,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DRAW-TITLES,MAP-NUM,TMP,TMP1,?TMP1
|
|
EQUAL? MAP-NUM,MAIN-MAP-NUM \?CCL3
|
|
ICALL DISPLAY-ROOM,MAIN-TITLE,MAIN-TITLE-LOC,MAIN-TITLE-LOC
|
|
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-1
|
|
FSET? CHAPEL,TOUCHBIT \?CND4
|
|
ICALL DISPLAY-ROOM,DOWN-EAST-SYMBOL,MAP-GEN-Y-6,MAP-GEN-X-8,0,MAP-BOX-WIDTH
|
|
?CND4: FSET? GREAT-HALL,TOUCHBIT \FALSE
|
|
SUB MAP-BOX-HEIGHT,2 >?TMP1
|
|
ADD MAP-SPACE-WIDTH,2
|
|
SUB 0,STACK
|
|
ICALL DISPLAY-ROOM,DOWN-NE-SYMBOL,MAP-GEN-Y-4,MAP-GEN-X-5,?TMP1,STACK
|
|
SUB MAP-BOX-HEIGHT,2 >?TMP1
|
|
SUB MAP-BOX-WIDTH,2
|
|
CALL DISPLAY-ROOM,DOWN-SE-SYMBOL,MAP-GEN-Y-4,MAP-GEN-X-5,?TMP1,STACK
|
|
RSTACK
|
|
?CCL3: EQUAL? MAP-NUM,SECRET-WING-MAP-NUM \?CCL10
|
|
ICALL DISPLAY-ROOM,SECRET-WING-TITLE,SECRET-WING-TITLE-LOC,MAP-GEN-X-1
|
|
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-8
|
|
FSET? CRYPT,TOUCHBIT \FALSE
|
|
CALL DISPLAY-ROOM,DOWN-EAST-SYMBOL,MAP-GEN-Y-3,MAP-GEN-X-8,0,MAP-BOX-WIDTH
|
|
RSTACK
|
|
?CCL10: EQUAL? MAP-NUM,VILLAGE-MAP-NUM \?CCL15
|
|
ICALL DISPLAY-ROOM,VILLAGE-TITLE,MAP-GEN-Y-5,MAP-GEN-X-1
|
|
ICALL DISPLAY-ROOM,VERTICAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-10
|
|
FSET? SHADY-PARK,TOUCHBIT \?CND16
|
|
FSET? VILLAGE-CENTER,TOUCHBIT \?CND16
|
|
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-6
|
|
CALL2 MAP-X,5-FUDGE >TMP
|
|
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-6,0,TMP
|
|
MUL TMP,2
|
|
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-6,0,STACK
|
|
MUL TMP,3
|
|
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-6,0,STACK
|
|
?CND16: FSET? FR-HQ,TOUCHBIT \?CND20
|
|
SUB MAP-BOX-HEIGHT,2 >?TMP1
|
|
SUB MAP-BOX-WIDTH,2
|
|
ICALL DISPLAY-ROOM,LOBBY-OFFICE-CON,MAP-GEN-Y-3,MAP-GEN-X-8,?TMP1,STACK
|
|
?CND20: ZERO? BEEN-IN-FR-UPPER-FLOORS /FALSE
|
|
SUB MAP-BOX-HEIGHT,2 >?TMP1
|
|
SUB MAP-BOX-WIDTH,2
|
|
CALL DISPLAY-ROOM,OFFICE-PENTHOUSE-CON,MAP-GEN-Y-5,MAP-GEN-X-8,?TMP1,STACK
|
|
RSTACK
|
|
?CCL15: EQUAL? MAP-NUM,LOWER-LEVEL-MAP-NUM \?CCL26
|
|
ICALL DISPLAY-ROOM,LOWER-LEVEL-TITLE,MAP-GEN-Y-5,MAP-GEN-X-9
|
|
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-2,MAP-GEN-X-8
|
|
FSET? LOWEST-HALL,TOUCHBIT \?CND27
|
|
SUB MAP-BOX-HEIGHT,2 >?TMP1
|
|
SUB MAP-BOX-WIDTH,2
|
|
ICALL DISPLAY-ROOM,DOWN-SW-SYMBOL,MAP-GEN-Y-4,MAP-GEN-X-4,?TMP1,STACK
|
|
ICALL DISPLAY-ROOM,LOW-HALL-CON,MAP-GEN-Y-5,MAP-GEN-X-4,0,MAP-BOX-WIDTH
|
|
?CND27: FSET? LOWER-HALL,TOUCHBIT \FALSE
|
|
CALL DISPLAY-ROOM,DOWN-WEST-SYMBOL,MAP-GEN-Y-5,MAP-GEN-X-6,0,MAP-BOX-WIDTH
|
|
RSTACK
|
|
?CCL26: EQUAL? MAP-NUM,LAKE-MAP-NUM \?CCL33
|
|
ICALL DISPLAY-ROOM,LAKE-TITLE,LAKE-TITLE-LOC,LAKE-TITLE-LOC
|
|
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-6,MAP-GEN-X-8
|
|
FSET? HOLD,TOUCHBIT \?CND34
|
|
ICALL DISPLAY-ROOM,DOWN-SOUTH-SYMBOL,MAP-GEN-Y-4,MAP-GEN-X-1,MAP-BOX-HEIGHT
|
|
ICALL DISPLAY-ROOM,DOWN-SOUTH-SYMBOL,MAP-GEN-Y-5,MAP-GEN-X-1,MAP-BOX-HEIGHT
|
|
?CND34: FSET? UNDERWATER,TOUCHBIT \?CND36
|
|
ICALL DISPLAY-ROOM,DOWN-SOUTH-SYMBOL,MAP-GEN-Y-6,MAP-GEN-X-1,MAP-BOX-HEIGHT
|
|
?CND36: FSET? GROTTO,TOUCHBIT \?CND38
|
|
ICALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7
|
|
CALL2 MAP-Y,5-FUDGE >TMP
|
|
ICALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7,TMP
|
|
MUL TMP,2
|
|
ICALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7,STACK
|
|
MUL TMP,3
|
|
ICALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7,STACK
|
|
?CND38: FSET? CONDUCTOR-PIT,TOUCHBIT \FALSE
|
|
CALL DISPLAY-ROOM,DOWN-WEST-SYMBOL,MAP-GEN-Y-3,MAP-GEN-X-3,0,MAP-BOX-WIDTH
|
|
RSTACK
|
|
?CCL33: EQUAL? MAP-NUM,DESERT-MAP-NUM \?CCL44
|
|
ICALL DISPLAY-ROOM,DESERT-TITLE,MAP-GEN-Y-2,MAP-GEN-X-2
|
|
CALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-3,MAP-GEN-X-8
|
|
RSTACK
|
|
?CCL44: EQUAL? MAP-NUM,FOOZLE-MAP-NUM \?CCL46
|
|
ICALL DISPLAY-ROOM,FOOZLE-TITLE,MAP-GEN-Y-1,MAP-GEN-X-2
|
|
ICALL DISPLAY-ROOM,VERTICAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-10
|
|
ICALL DISPLAY-ROOM,FOOZLE-MAP-ILL,MAP-GEN-Y-6,MAP-GEN-X-8
|
|
FSET? WISHYFOO-TERRITORY,TOUCHBIT \?CND47
|
|
ICALL DISPLAY-ROOM,WISHYFOO-FORK-CON,MAP-GEN-Y-4,MAP-GEN-X-4,MAP-BOX-HEIGHT
|
|
?CND47: FSET? CAVE-IN,TOUCHBIT \?CND49
|
|
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-8,0,MAP-BOX-WIDTH
|
|
?CND49: FSET? FISSURE-EDGE,TOUCHBIT \FALSE
|
|
CALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7,MAP-BOX-HEIGHT
|
|
RSTACK
|
|
?CCL46: EQUAL? MAP-NUM,FENSHIRE-MAP-NUM \?CCL55
|
|
ICALL DISPLAY-ROOM,FENSHIRE-TITLE,MAP-GEN-Y-3,MAP-GEN-X-5
|
|
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-6,MAP-GEN-X-1
|
|
CALL DISPLAY-ROOM,FENSHIRE-MAP-ILL,MAP-GEN-Y-5,MAP-GEN-X-6
|
|
RSTACK
|
|
?CCL55: EQUAL? MAP-NUM,FJORD-MAP-NUM \?CCL57
|
|
ICALL DISPLAY-ROOM,FJORD-TITLE,MAP-GEN-Y-2,MAP-GEN-X-8
|
|
ICALL DISPLAY-ROOM,VERTICAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-1
|
|
ICALL DISPLAY-ROOM,FJORD-MAP-ILL,MAP-GEN-Y-6,MAP-GEN-X-5
|
|
ICALL DISPLAY-ROOM,RV-TELEPORT-ARROW,MAP-GEN-Y-4,MAP-GEN-X-4,MAP-BOX-HEIGHT
|
|
FSET? CRAG,TOUCHBIT \FALSE
|
|
FSET? NATURAL-ARCH,TOUCHBIT \FALSE
|
|
CALL2 MAP-Y,ARCH-N-CON-SIZE
|
|
SUB 0,STACK
|
|
ADD STACK,1
|
|
ICALL DISPLAY-ROOM,ARCH-N-CON,MAP-GEN-Y-4,MAP-GEN-X-4,STACK,MAP-BOX-WIDTH
|
|
CALL DISPLAY-ROOM,ARCH-S-CON,MAP-GEN-Y-4,MAP-GEN-X-4,MAP-BOX-HEIGHT,MAP-BOX-WIDTH
|
|
RSTACK
|
|
?CCL57: EQUAL? MAP-NUM,GRAY-MOUNTAINS-MAP-NUM \?CCL64
|
|
ICALL DISPLAY-ROOM,GRAY-MTS-TITLE,MAP-GEN-Y-5,MAP-GEN-X-7
|
|
ICALL DISPLAY-ROOM,VERTICAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-2
|
|
ICALL DISPLAY-ROOM,GRAY-MTS-MAP-ILL,MAP-GEN-Y-5,MAP-GEN-X-1
|
|
ICALL DISPLAY-ROOM,RV-TELEPORT-ARROW,MAP-GEN-Y-1,MAP-GEN-X-10,MAP-BOX-HEIGHT
|
|
FSET? GLACIER,TOUCHBIT \FALSE
|
|
SUB MAP-BOX-HEIGHT,2 >?TMP1
|
|
SUB MAP-BOX-WIDTH,2
|
|
CALL DISPLAY-ROOM,GLACIER-MIRROR-CON,MAP-GEN-Y-1,MAP-GEN-X-8,?TMP1,STACK
|
|
RSTACK
|
|
?CCL64: EQUAL? MAP-NUM,DELTA-MAP-NUM \?CCL69
|
|
ICALL DISPLAY-ROOM,DELTA-TITLE,MAP-GEN-Y-6,MAP-GEN-X-1
|
|
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-3,MAP-GEN-X-1
|
|
ICALL DISPLAY-ROOM,DELTA-MAP-ILL,MAP-GEN-Y-1,MAP-GEN-X-1
|
|
ICALL DISPLAY-ROOM,RV-TELEPORT-ARROW,MAP-GEN-Y-5,MAP-GEN-X-10,MAP-BOX-HEIGHT
|
|
FIRST? DELTA-1 \?CND70
|
|
FIRST? DELTA-2 \?CND70
|
|
ICALL DISPLAY-ROOM,ARCH-S-CON,MAP-GEN-Y-5,MAP-GEN-X-8,MAP-BOX-HEIGHT,MAP-BOX-WIDTH
|
|
CALL2 MAP-Y,ARCH-N-CON-SIZE
|
|
SUB 0,STACK
|
|
ADD STACK,1
|
|
ICALL DISPLAY-ROOM,ARCH-N-CON,MAP-GEN-Y-5,MAP-GEN-X-8,STACK,MAP-BOX-WIDTH
|
|
?CND70: FIRST? DELTA-1 \?CND74
|
|
FIRST? DELTA-3 \?CND74
|
|
DIV MAP-BOX-HEIGHT,2
|
|
SUB STACK,1
|
|
ICALL DISPLAY-ROOM,DELTA-1-3-CON,MAP-GEN-Y-3,MAP-GEN-X-8,STACK,MAP-BOX-WIDTH
|
|
?CND74: FIRST? DELTA-1 \?CND78
|
|
FIRST? DELTA-4 \?CND78
|
|
ICALL DISPLAY-ROOM,DELTA-1-4-CON,MAP-GEN-Y-2,MAP-GEN-X-9,0,MAP-BOX-WIDTH
|
|
?CND78: FIRST? DELTA-2 \?CND82
|
|
FIRST? DELTA-7 \?CND82
|
|
ICALL DISPLAY-ROOM,RUBBLE-SE-CON,MAP-GEN-Y-5,MAP-GEN-X-7,MAP-BOX-HEIGHT,MAP-BOX-WIDTH
|
|
?CND82: FIRST? DELTA-2 \?CND86
|
|
FIRST? DELTA-3 \?CND86
|
|
CALL2 MAP-X,2-3-CON-SIZE
|
|
SUB 0,STACK
|
|
ADD STACK,1
|
|
ICALL DISPLAY-ROOM,DELTA-2-3-CON,MAP-GEN-Y-3,MAP-GEN-X-8,MAP-BOX-HEIGHT,STACK
|
|
?CND86: FIRST? DELTA-3 \?CND90
|
|
FIRST? DELTA-4 \?CND90
|
|
CALL2 MAP-Y,RUBBLE-CON-SIZE
|
|
SUB 0,STACK
|
|
SUB STACK,1 >?TMP1
|
|
CALL2 MAP-X,RUBBLE-CON-SIZE
|
|
SUB 0,STACK
|
|
SUB STACK,1
|
|
ICALL DISPLAY-ROOM,RUBBLE-NW-CON,MAP-GEN-Y-3,MAP-GEN-X-9,?TMP1,STACK
|
|
?CND90: FIRST? DELTA-3 \?CND94
|
|
FIRST? DELTA-5 \?CND94
|
|
CALL2 MAP-X,3-5-CON-SIZE
|
|
SUB 0,STACK
|
|
ADD STACK,1
|
|
ICALL DISPLAY-ROOM,DELTA-3-5-CON,MAP-GEN-Y-2,MAP-GEN-X-8,MAP-BOX-HEIGHT,STACK
|
|
?CND94: FIRST? DELTA-4 \?CND98
|
|
FIRST? DELTA-5 \?CND98
|
|
CALL2 MAP-Y,ARCH-N-CON-SIZE
|
|
SUB 0,STACK
|
|
ADD STACK,1
|
|
ICALL DISPLAY-ROOM,ARCH-N-CON,MAP-GEN-Y-2,MAP-GEN-X-7,STACK,MAP-BOX-WIDTH
|
|
?CND98: FIRST? DELTA-5 \?CND102
|
|
FIRST? DELTA-6 \?CND102
|
|
FSET? DELTA-6,TOUCHBIT \?CND102
|
|
CALL2 MAP-X,5-6-CON-SIZE
|
|
SUB 0,STACK
|
|
ADD STACK,1
|
|
ICALL DISPLAY-ROOM,DELTA-5-6-CON,MAP-GEN-Y-2,MAP-GEN-X-7,MAP-BOX-HEIGHT,STACK
|
|
?CND102: FIRST? DELTA-6 \FALSE
|
|
FSET? DELTA-6,TOUCHBIT \FALSE
|
|
FIRST? DELTA-7 \FALSE
|
|
CALL2 MAP-X,6-7-CON-SIZE
|
|
SUB 0,STACK
|
|
CALL DISPLAY-ROOM,DELTA-6-7-CON,MAP-GEN-Y-5,MAP-GEN-X-7,0,STACK
|
|
RSTACK
|
|
?CCL69: EQUAL? MAP-NUM,FUBLIO-MAP-NUM \?CCL114
|
|
ICALL DISPLAY-ROOM,FUBLIO-TITLE,MAP-GEN-Y-2,MAP-GEN-X-9
|
|
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-4,MAP-GEN-X-1
|
|
CALL2 MAP-Y,TELEPORT-ARROW-SIZE
|
|
SUB 0,STACK
|
|
CALL DISPLAY-ROOM,TELEPORT-ARROW,MAP-GEN-Y-4,MAP-GEN-X-8,STACK
|
|
RSTACK
|
|
?CCL114: EQUAL? MAP-NUM,ANTHARIA-MAP-NUM \FALSE
|
|
ICALL DISPLAY-ROOM,ANTHARIA-TITLE,MAP-GEN-Y-5,MAP-GEN-X-1
|
|
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-6,MAP-GEN-X-1
|
|
ICALL DISPLAY-ROOM,ANTHARIA-MAP-ILL,MAP-GEN-Y-1,MAP-GEN-X-1
|
|
CALL2 MAP-Y,TELEPORT-ARROW-SIZE
|
|
SUB 0,STACK
|
|
ICALL DISPLAY-ROOM,TELEPORT-ARROW,MAP-GEN-Y-4,MAP-GEN-X-8,STACK
|
|
FSET? RUBBLE-ROOM,TOUCHBIT \?CND117
|
|
FSET? HEART-OF-MINE,TOUCHBIT \?CND117
|
|
ICALL DISPLAY-ROOM,RUBBLE-SE-CON,MAP-GEN-Y-3,MAP-GEN-X-9,MAP-BOX-HEIGHT,MAP-BOX-WIDTH
|
|
CALL2 MAP-Y,RUBBLE-CON-SIZE
|
|
SUB 0,STACK
|
|
SUB STACK,1 >?TMP1
|
|
CALL2 MAP-X,RUBBLE-CON-SIZE
|
|
SUB 0,STACK
|
|
SUB STACK,1
|
|
ICALL DISPLAY-ROOM,RUBBLE-NW-CON,MAP-GEN-Y-4,MAP-GEN-X-10,?TMP1,STACK
|
|
?CND117: FSET? NORTH-OF-ANTHAR,TOUCHBIT \FALSE
|
|
CALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-6,MAP-GEN-X-6,MAP-BOX-HEIGHT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DRAW-CONS,RM,TBL,Y,X,PTS,NEXT-RM,NEXT-TBL,NEXT-Y,NEXT-X,?TMP1
|
|
GET TBL,1
|
|
CALL2 MAP-Y,STACK >Y
|
|
GET TBL,2
|
|
CALL2 MAP-X,STACK >X
|
|
CALL SHOW-DIRECTION?,RM,P?NORTH
|
|
ZERO? STACK /?CND1
|
|
SUB Y,MAP-SPACE-HEIGHT
|
|
DISPLAY N-S-CON,STACK,X
|
|
?CND1: CALL SHOW-DIRECTION?,RM,P?NE
|
|
ZERO? STACK /?CND3
|
|
SUB Y,MAP-SPACE-HEIGHT >?TMP1
|
|
ADD X,MAP-BOX-WIDTH
|
|
DISPLAY NE-SW-CON,?TMP1,STACK
|
|
?CND3: CALL SHOW-DIRECTION?,RM,P?EAST
|
|
ZERO? STACK /?CND5
|
|
ADD X,MAP-BOX-WIDTH
|
|
DISPLAY E-W-CON,Y,STACK
|
|
?CND5: CALL SHOW-DIRECTION?,RM,P?SE
|
|
ZERO? STACK /?CND7
|
|
ADD Y,MAP-BOX-HEIGHT >?TMP1
|
|
ADD X,MAP-BOX-WIDTH
|
|
DISPLAY NW-SE-CON,?TMP1,STACK
|
|
?CND7: CALL SHOW-DIRECTION?,RM,P?SOUTH
|
|
ZERO? STACK /?CND9
|
|
ADD Y,MAP-BOX-HEIGHT
|
|
DISPLAY N-S-CON,STACK,X
|
|
?CND9: CALL SHOW-DIRECTION?,RM,P?SW
|
|
ZERO? STACK /?CND11
|
|
ADD Y,MAP-BOX-HEIGHT >?TMP1
|
|
SUB X,MAP-SPACE-WIDTH
|
|
DISPLAY NE-SW-CON,?TMP1,STACK
|
|
?CND11: CALL SHOW-DIRECTION?,RM,P?WEST
|
|
ZERO? STACK /?CND13
|
|
SUB X,MAP-SPACE-WIDTH
|
|
DISPLAY E-W-CON,Y,STACK
|
|
?CND13: CALL SHOW-DIRECTION?,RM,P?NW
|
|
ZERO? STACK /?CND15
|
|
SUB Y,MAP-SPACE-HEIGHT >?TMP1
|
|
SUB X,MAP-SPACE-WIDTH
|
|
DISPLAY NW-SE-CON,?TMP1,STACK
|
|
?CND15: GETPT RM,P?DOWN >PTS
|
|
ZERO? PTS /?CND17
|
|
PTSIZE PTS
|
|
EQUAL? STACK,UEXIT,CEXIT \?CCL21
|
|
GETB PTS,REXIT >NEXT-RM
|
|
JUMP ?CND19
|
|
?CCL21: PTSIZE PTS
|
|
EQUAL? STACK,DEXIT \?CND19
|
|
GETB PTS,DEXITRM >NEXT-RM
|
|
?CND19: EQUAL? RM,LOWER-HALL \?CCL25
|
|
FSET? LOWEST-HALL,TOUCHBIT /?CND17
|
|
?CCL25: EQUAL? RM,WISHYFOO-TERRITORY /?CND17
|
|
ZERO? NEXT-RM /?CND17
|
|
GETP NEXT-RM,P?MAP-LOC >NEXT-TBL
|
|
ZERO? NEXT-TBL /?CND17
|
|
GET NEXT-TBL,0 >?TMP1
|
|
GET TBL,0
|
|
EQUAL? ?TMP1,STACK \?CND17
|
|
GET NEXT-TBL,1
|
|
CALL2 MAP-Y,STACK >NEXT-Y
|
|
GET NEXT-TBL,2
|
|
CALL2 MAP-X,STACK >NEXT-X
|
|
EQUAL? X,NEXT-X \?CCL36
|
|
GRTR? Y,NEXT-Y \?CCL39
|
|
SUB Y,MAP-SPACE-HEIGHT
|
|
DISPLAY DOWN-NORTH-SYMBOL,STACK,X
|
|
JUMP ?CND17
|
|
?CCL39: ADD Y,MAP-BOX-HEIGHT
|
|
DISPLAY DOWN-SOUTH-SYMBOL,STACK,X
|
|
JUMP ?CND17
|
|
?CCL36: EQUAL? Y,NEXT-Y \?CND17
|
|
GRTR? X,NEXT-X \?CCL43
|
|
SUB X,MAP-SPACE-WIDTH
|
|
DISPLAY DOWN-WEST-SYMBOL,Y,STACK
|
|
JUMP ?CND17
|
|
?CCL43: ADD X,MAP-BOX-WIDTH
|
|
DISPLAY DOWN-EAST-SYMBOL,Y,STACK
|
|
?CND17: SET 'NEXT-RM,FALSE-VALUE
|
|
GETPT RM,P?UP >PTS
|
|
ZERO? PTS /FALSE
|
|
PTSIZE PTS
|
|
EQUAL? STACK,UEXIT,CEXIT \?CCL49
|
|
GETB PTS,REXIT >NEXT-RM
|
|
JUMP ?CND47
|
|
?CCL49: PTSIZE PTS
|
|
EQUAL? STACK,DEXIT \?CND47
|
|
GETB PTS,DEXITRM >NEXT-RM
|
|
?CND47: ZERO? NEXT-RM /FALSE
|
|
GETP NEXT-RM,P?MAP-LOC >NEXT-TBL
|
|
ZERO? NEXT-TBL /FALSE
|
|
GET NEXT-TBL,0 >?TMP1
|
|
GET TBL,0
|
|
EQUAL? ?TMP1,STACK \FALSE
|
|
GET NEXT-TBL,1
|
|
CALL2 MAP-Y,STACK >NEXT-Y
|
|
GET NEXT-TBL,2
|
|
CALL2 MAP-X,STACK >NEXT-X
|
|
EQUAL? X,NEXT-X \?CCL59
|
|
GRTR? Y,NEXT-Y \?CCL62
|
|
SUB Y,MAP-SPACE-HEIGHT
|
|
DISPLAY DOWN-SOUTH-SYMBOL,STACK,X
|
|
RTRUE
|
|
?CCL62: ADD Y,MAP-BOX-HEIGHT
|
|
DISPLAY DOWN-NORTH-SYMBOL,STACK,X
|
|
RTRUE
|
|
?CCL59: EQUAL? Y,NEXT-Y \FALSE
|
|
GRTR? X,NEXT-X \?CCL67
|
|
SUB X,MAP-SPACE-WIDTH
|
|
DISPLAY DOWN-EAST-SYMBOL,Y,STACK
|
|
RTRUE
|
|
?CCL67: ADD X,MAP-BOX-WIDTH
|
|
DISPLAY DOWN-WEST-SYMBOL,Y,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MAYBE
|
|
CALL2 YOU-SOUND,STR?144
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MEET
|
|
ICALL PERFORM,V?TELL,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MEASURE
|
|
FSET? PRSO,PARTBIT /?CTR2
|
|
EQUAL? PRSO,ME \?CCL3
|
|
?CTR2: PRINTR "Usual size."
|
|
?CCL3: PRINTI "The same size as any other "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MIRROR-LOOK
|
|
IN? PRSO,PRSI \?CCL3
|
|
ICALL PERFORM,V?EXAMINE,PRSO
|
|
RTRUE
|
|
?CCL3: PRINTI "But"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " isn't in"
|
|
CALL2 TRPRINT,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MOVE
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
CALL1 WASTES
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,INTEGRALBIT \?CCL5
|
|
CALL1 PART-OF
|
|
RSTACK
|
|
?CCL5: CALL2 LOC-CLOSED,PRSO
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,TAKEBIT \?CCL9
|
|
PRINTI "Moving"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " reveals nothing."
|
|
?CCL9: EQUAL? P-PRSA-WORD,W?PULL \?CCL11
|
|
CALL2 HACK-HACK,STR?145
|
|
RSTACK
|
|
?CCL11: EQUAL? P-PRSA-WORD,W?MOVE \?CCL13
|
|
EQUAL? PRSO,INTDIR \?CCL13
|
|
CALL1 DIRECTION-CONVERSION
|
|
CALL2 DO-WALK,STACK
|
|
RSTACK
|
|
?CCL13: CALL2 CANT-VERB-A-PRSO,STR?146
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MOVE-DIR
|
|
PRINTI "Pick up"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " and go that way!"
|
|
|
|
|
|
.FUNCT V-MOVE-TO
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK \?CCL3
|
|
PRINT YNH
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: ICALL PERFORM,V?PUT,PRSO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MUNG
|
|
CALL2 HACK-HACK,STR?147
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-NO
|
|
EQUAL? AWAITING-REPLY,1 \?CCL3
|
|
CALL1 V-YES
|
|
RSTACK
|
|
?CCL3: EQUAL? AWAITING-REPLY,2 \?CCL5
|
|
PRINTR """You're right, you don't. I do."""
|
|
?CCL5: CALL2 YOU-SOUND,STR?148
|
|
RSTACK
|
|
|
|
|
|
.FUNCT NO-WORD,WRD
|
|
EQUAL? WRD,W?NO,W?NOPE /TRUE
|
|
EQUAL? WRD,W?NAH,W?UH-UH /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-OFF
|
|
FSET? PRSO,LIGHTBIT \?CCL3
|
|
FSET? PRSO,ONBIT \?CCL6
|
|
FCLEAR PRSO,ONBIT
|
|
FCLEAR PRSO,FLAMEBIT
|
|
PRINTI "Okay,"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " is now o"
|
|
EQUAL? PRSO,CANDLE \?CCL9
|
|
PRINTI "ut"
|
|
JUMP ?CND7
|
|
?CCL9: PRINTI "ff"
|
|
?CND7: PRINT PERIOD-CR
|
|
CALL1 NOW-DARK?
|
|
RSTACK
|
|
?CCL6: PRINTR "It isn't on!"
|
|
?CCL3: CALL2 CANT-TURN,STR?149
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ON
|
|
FSET? PRSO,LIGHTBIT \?CCL3
|
|
FSET? PRSO,ONBIT \?CCL6
|
|
PRINT ALREADY-IS
|
|
RTRUE
|
|
?CCL6: FSET PRSO,ONBIT
|
|
PRINTI "Okay,"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " is now on."
|
|
CRLF
|
|
CALL1 NOW-LIT?
|
|
RSTACK
|
|
?CCL3: CALL2 CANT-TURN,STR?150
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-OPEN
|
|
ZERO? PRSI /?CCL3
|
|
FSET? PRSI,KEYBIT \?CCL3
|
|
ICALL PERFORM,V?UNLOCK,PRSO,PRSI
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,SURFACEBIT /?CTR6
|
|
FSET? PRSO,ACTORBIT /?CTR6
|
|
FSET? PRSO,VEHBIT \?CCL7
|
|
EQUAL? PRSO,IRON-MAIDEN,LADDER,DB /?CCL7
|
|
EQUAL? PRSO,WATER-CHAMBER,SNAKE-PIT /?CCL7
|
|
?CTR6: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL7: FSET? PRSO,OPENBIT \?CCL16
|
|
PRINT ALREADY-IS
|
|
RTRUE
|
|
?CCL16: FSET? PRSO,LOCKEDBIT \?CCL18
|
|
PRINTI "The "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINTR " is locked."
|
|
?CCL18: FSET? PRSO,DOORBIT \?CCL20
|
|
FSET PRSO,OPENBIT
|
|
PRINTI "The "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINTR " swings open."
|
|
?CCL20: FSET? PRSO,CONTBIT \?CCL22
|
|
FSET PRSO,OPENBIT
|
|
FSET PRSO,TOUCHBIT
|
|
FIRST? PRSO \?CTR24
|
|
FSET? PRSO,TRANSBIT /?CTR24
|
|
EQUAL? PRSO,DB \?CCL25
|
|
?CTR24: PRINTR "Opened."
|
|
?CCL25: PRINTI "Opening"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " reveals"
|
|
CALL1 D-NOTHING
|
|
ZERO? STACK \?CND29
|
|
PRINT PERIOD-CR
|
|
?CND29: ICALL1 NOW-LIT?
|
|
RTRUE
|
|
?CCL22: CALL1 YOU-MUST-TELL-ME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PAY,MONEY
|
|
CALL2 ULTIMATELY-IN?,ZORKMID-BILL
|
|
ZERO? STACK /?CCL3
|
|
SET 'MONEY,ZORKMID-BILL
|
|
JUMP ?CND1
|
|
?CCL3: CALL2 ULTIMATELY-IN?,ZORKMID-COIN
|
|
ZERO? STACK /?CND1
|
|
SET 'MONEY,ZORKMID-COIN
|
|
?CND1: ZERO? MONEY /?CCL7
|
|
ICALL PERFORM,V?GIVE,MONEY,PRSO
|
|
RTRUE
|
|
?CCL7: PRINTR "You have no money!"
|
|
|
|
|
|
.FUNCT V-PICK
|
|
CALL2 CANT-VERB-A-PRSO,STR?151
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PLAY
|
|
CALL2 CANT-VERB-A-PRSO,STR?152
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-POINT
|
|
PRINTR "That would be pointless."
|
|
|
|
|
|
.FUNCT V-POUR
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PRAY
|
|
ZERO? PRSO \?CCL3
|
|
EQUAL? HERE,ORACLE \?CCL3
|
|
ICALL PERFORM,V?PRAY,ORACLE-OBJECT
|
|
RTRUE
|
|
?CCL3: PRINTR "If you pray long enough, your prayers may be answered."
|
|
|
|
|
|
.FUNCT V-PUSH
|
|
CALL2 HACK-HACK,STR?153
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUSH-DIR
|
|
CALL1 V-PUSH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-PUT
|
|
EQUAL? PRSI,CEILING,GROUND \?CCL3
|
|
EQUAL? PRSO,NW-SE-PASSAGE,N-S-PASSAGE \?CCL6
|
|
EQUAL? PRSA,V?PUT \?CCL6
|
|
PRINTR "You can only install the passage in a wall!"
|
|
?CCL6: ICALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,HANDS \?CCL10
|
|
EQUAL? PRSA,V?PUT,V?PUT-ON \?CCL13
|
|
FSET? PRSI,PARTBIT /FALSE
|
|
?CCL13: EQUAL? PRSA,V?PUT \?CCL17
|
|
ICALL PERFORM,V?REACH-IN,PRSI
|
|
RTRUE
|
|
?CCL17: EQUAL? PRSA,V?PUT-ON \?CCL19
|
|
EQUAL? PRSI,STRAW \?CCL19
|
|
SET 'FINGER-ON-STRAW,TRUE-VALUE
|
|
IN? STRAW,BOWL \?CND22
|
|
SET 'ELIXIR-TRAPPED,TRUE-VALUE
|
|
?CND22: ICALL QUEUE,I-FINGER-OFF-STRAW,2
|
|
PRINTR "You put your finger over the end of the straw."
|
|
?CCL19: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL10: EQUAL? PRSO,GLOVE \?CCL25
|
|
EQUAL? PRSI,HANDS \?CCL25
|
|
ICALL PERFORM,V?WEAR,GLOVE
|
|
RTRUE
|
|
?CCL25: IN? PRSO,WALDO \?CCL29
|
|
PRINTR "The waldo seems incapable of more than just picking something up and dropping it."
|
|
?CCL29: FSET? PRSI,PARTBIT /?CCL31
|
|
CALL1 PRE-LOOK
|
|
ZERO? STACK \TRUE
|
|
?CCL31: CALL ULTIMATELY-IN?,PRSI,PRSO
|
|
ZERO? STACK /?CCL35
|
|
PRINT YOU-CANT
|
|
PRINTI "put"
|
|
ICALL1 TPRINT-PRSO
|
|
GET PARSE-RESULT,7
|
|
EQUAL? STACK,W?ON \?CCL38
|
|
PRINTI " on"
|
|
JUMP ?CND36
|
|
?CCL38: PRINTI " in"
|
|
?CND36: ICALL1 TPRINT-PRSI
|
|
PRINTI " when"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTI " is already "
|
|
FSET? PRSO,SURFACEBIT \?CCL41
|
|
PRINTI "on"
|
|
JUMP ?CND39
|
|
?CCL41: PRINTI "in"
|
|
?CND39: ICALL1 TPRINT-PRSO
|
|
PRINTR "!"
|
|
?CCL35: CALL2 UNTOUCHABLE?,PRSI
|
|
ZERO? STACK /?CCL43
|
|
CALL2 CANT-REACH,PRSI
|
|
RSTACK
|
|
?CCL43: CALL1 IDROP
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-PUT,?TMP1,?TMP2,?TMP3
|
|
FSET? PRSI,WATERBIT \?CCL3
|
|
EQUAL? PRSO,LARGE-VIAL,SMALL-VIAL \?CCL6
|
|
ICALL PERFORM,V?FILL,PRSO,WATER
|
|
RTRUE
|
|
?CCL6: CALL PERFORM-PRSA,PRSO,WATER
|
|
RSTACK
|
|
?CCL3: FSET? PRSI,OPENBIT /?CCL8
|
|
FSET? PRSI,CONTBIT /?CCL8
|
|
FSET? PRSI,SURFACEBIT /?CCL8
|
|
FSET? PRSI,VEHBIT /?CCL8
|
|
PRINT YOU-CANT
|
|
PRINTI "put"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " in"
|
|
ICALL2 APRINT,PRSI
|
|
PRINTR "!"
|
|
?CCL8: EQUAL? PRSI,PRSO /?CTR13
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL14
|
|
FSET? PRSO,TAKEBIT /?CCL14
|
|
?CTR13: PRINTR "How can you do that?"
|
|
?CCL14: FSET? PRSI,DOORBIT \?CCL20
|
|
PRINT CANT-FROM-HERE
|
|
RTRUE
|
|
?CCL20: FSET? PRSI,OPENBIT /?CCL22
|
|
FSET? PRSI,SURFACEBIT /?CCL22
|
|
ICALL2 THIS-IS-IT,PRSI
|
|
CALL DO-FIRST,STR?140,PRSI
|
|
RSTACK
|
|
?CCL22: IN? PRSO,PRSI \?CCL26
|
|
PRINTI "But"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " is already in"
|
|
CALL2 TRPRINT,PRSI
|
|
RSTACK
|
|
?CCL26: FSET? PRSI,ACTORBIT \?CCL28
|
|
PRINT HUH
|
|
RTRUE
|
|
?CCL28: CALL2 WEIGHT,PRSI >?TMP3
|
|
CALL2 WEIGHT,PRSO
|
|
ADD ?TMP3,STACK >?TMP2
|
|
GETP PRSI,P?SIZE
|
|
SUB ?TMP2,STACK >?TMP1
|
|
GETP PRSI,P?CAPACITY
|
|
GRTR? ?TMP1,STACK \?CCL30
|
|
CALL ULTIMATELY-IN?,PRSO,PRSI
|
|
ZERO? STACK \?CCL30
|
|
PRINTI "There's no room "
|
|
FSET? PRSI,SURFACEBIT \?CCL35
|
|
PRINTI "on"
|
|
JUMP ?CND33
|
|
?CCL35: PRINTI "in"
|
|
?CND33: ICALL1 TPRINT-PRSI
|
|
PRINTI " for"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL30: CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK \?CCL37
|
|
CALL1 ITAKE
|
|
EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE
|
|
?CCL37: EQUAL? PRSO,WORM,ROOSTER,FOX \?CCL41
|
|
FSET? PRSO,ANIMATEDBIT \?CCL41
|
|
PRINTI "You try, but"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " seems agitated and "
|
|
EQUAL? PRSO,FOX \?CCL46
|
|
PRINTI "slyly jumps"
|
|
JUMP ?CND44
|
|
?CCL46: EQUAL? PRSO,ROOSTER \?CCL48
|
|
PRINTI "hops"
|
|
JUMP ?CND44
|
|
?CCL48: PRINTI "wriggles"
|
|
?CND44: PRINTR " out."
|
|
?CCL41: MOVE PRSO,PRSI
|
|
FSET PRSO,TOUCHBIT
|
|
PRINTI "Done."
|
|
CRLF
|
|
CALL2 SCORE-OBJ,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT-BEHIND
|
|
CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT-ON
|
|
EQUAL? PRSI,ME \?CCL3
|
|
ICALL PERFORM,V?WEAR,PRSO
|
|
RTRUE
|
|
?CCL3: FSET? PRSI,SURFACEBIT \?CCL5
|
|
CALL1 V-PUT
|
|
RSTACK
|
|
?CCL5: FSET? PRSI,ACTORBIT \?CCL7
|
|
FSET? PRSO,WEARBIT \?CCL7
|
|
PRINTI "But it's not"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTR "'s size."
|
|
?CCL7: PRINTI "There's no good surface on"
|
|
CALL2 TRPRINT,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT-THROUGH
|
|
FSET? PRSI,DOORBIT \?CCL3
|
|
FSET? PRSI,OPENBIT \?CCL6
|
|
CALL1 V-THROW
|
|
RSTACK
|
|
?CCL6: CALL DO-FIRST,STR?140,PRSI
|
|
RSTACK
|
|
?CCL3: LOC PROTAGONIST
|
|
EQUAL? PRSI,STACK \?CCL8
|
|
EQUAL? P-PRSA-WORD,W?THROW,W?TOSS,W?HURL \?CCL8
|
|
SET 'PRSI,FALSE-VALUE
|
|
CALL1 V-THROW
|
|
RSTACK
|
|
?CCL8: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT-TO
|
|
CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT-UNDER
|
|
CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RAISE
|
|
CALL2 HACK-HACK,STR?154
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-RESEARCH
|
|
ZERO? PRSI \?CND1
|
|
EQUAL? HERE,LIBRARY \?CND1
|
|
SET 'PRSI,ENCYCLOPEDIA
|
|
?CND1: EQUAL? PRSO,ROOMS \?CCL7
|
|
ZERO? LIT \?CCL10
|
|
PRINT TOO-DARK
|
|
CRLF
|
|
RTRUE
|
|
?CCL10: EQUAL? HERE,ON-TOP-OF-THE-WORLD \?CCL12
|
|
ICALL PERFORM,V?EXAMINE,BROGMOID
|
|
RTRUE
|
|
?CCL12: FSET? HERE,OUTSIDEBIT \?CCL14
|
|
PRINTR "Sunlight filters through heavy cloud cover."
|
|
?CCL14: EQUAL? HERE,ON-TOP-OF-THE-WORLD \?CCL16
|
|
PRINTR "You see a gray misty void, stretching upward as far as you can see."
|
|
?CCL16: ICALL PERFORM,V?EXAMINE,CEILING
|
|
RTRUE
|
|
?CCL7: ZERO? LIT \?CCL18
|
|
ICALL PERFORM,V?READ,ENCYCLOPEDIA
|
|
RTRUE
|
|
?CCL18: ZERO? PRSI \?CCL20
|
|
PRINTR "There's no encyclopedia here to look it up in."
|
|
?CCL20: EQUAL? PRSI,ENCYCLOPEDIA /?CCL22
|
|
PRINT YOU-CANT
|
|
PRINTI "read about things in"
|
|
CALL2 ARPRINT,PRSI
|
|
RSTACK
|
|
?CCL22: SET 'VOLUME-USED,TRUE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-RESEARCH,ENTRY,PIC-NUM
|
|
GETP PRSO,P?RESEARCH >ENTRY
|
|
ZERO? ENTRY /?CCL3
|
|
PRINT ENTRY
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,INTQUOTE \?CCL5
|
|
CALL2 GET-NP,PRSO >ENTRY
|
|
GET ENTRY,7
|
|
GET STACK,0
|
|
EQUAL? STACK,W?QUOTE \?CND6
|
|
GET ENTRY,7
|
|
ICALL CHANGE-LEXV,STACK,W?NO.WORD
|
|
?CND6: GET ENTRY,8
|
|
GET STACK,0
|
|
EQUAL? STACK,W?QUOTE \?CND8
|
|
GET ENTRY,8
|
|
ICALL CHANGE-LEXV,STACK,W?NO.WORD
|
|
?CND8: GET OOPS-TABLE,O-START >P-CONT
|
|
SET 'P-LEN,P-WORDS-AGAIN
|
|
PRINTR "[Uh, the quotation marks confused me...]"
|
|
?CCL5: PRINTI "You look up """
|
|
CALL2 GET-NP,PRSO
|
|
ICALL2 NP-PRINT,STACK
|
|
PRINTR """ in the encyclopedia, but find no entry."
|
|
|
|
|
|
.FUNCT V-SRESEARCH
|
|
ICALL PERFORM,V?RESEARCH,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SRIDE-DIR
|
|
ICALL PERFORM,V?RIDE-DIR,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RIDE-DIR
|
|
IN? PROTAGONIST,PRSO /?CCL3
|
|
PRINTI "But you're not even "
|
|
FSET? PRSO,INBIT \?CCL6
|
|
PRINTC 105
|
|
JUMP ?CND4
|
|
?CCL6: PRINTC 111
|
|
?CND4: PRINTC 110
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSI,INTDIR \?CCL8
|
|
CALL2 GET-NP,PRSI
|
|
GET STACK,2
|
|
GETB STACK,6
|
|
CALL2 DO-WALK,STACK
|
|
RSTACK
|
|
?CCL8: EQUAL? PRSO,CAMEL \?CCL10
|
|
PRINTR "Please use directions, as in RIDE CAMEL WEST."
|
|
?CCL10: PRINTR "How can you do that?"
|
|
|
|
|
|
.FUNCT V-REACH-IN,OBJ
|
|
FIRST? PRSO >OBJ /?BOGUS1
|
|
?BOGUS1: FSET? PRSO,WATERBIT \?CCL4
|
|
CALL2 PERFORM-PRSA,WATER
|
|
RSTACK
|
|
?CCL4: FSET? PRSO,ACTORBIT /?CTR5
|
|
FSET? PRSO,SURFACEBIT /?CTR5
|
|
FSET? PRSO,CONTBIT /?CCL6
|
|
?CTR5: CALL1 YUKS
|
|
RSTACK
|
|
?CCL6: FSET? PRSO,OPENBIT /?CCL11
|
|
CALL DO-FIRST,STR?140,PRSO
|
|
RSTACK
|
|
?CCL11: ZERO? OBJ /?CTR12
|
|
FSET? OBJ,INVISIBLE /?CTR12
|
|
FSET? OBJ,TRYTAKEBIT /?CCL13
|
|
?CTR12: PRINT THERES-NOTHING
|
|
PRINTI "in"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL13: PRINTI "You feel something inside"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-READ
|
|
FSET? PRSO,READBIT \?CCL3
|
|
GETP PRSO,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: CALL2 CANT-VERB-A-PRSO,STR?155
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-REMOVE
|
|
FSET? PRSO,WEARBIT \?CCL3
|
|
ICALL PERFORM,V?TAKE-OFF,PRSO
|
|
RTRUE
|
|
?CCL3: ICALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ROLL
|
|
PRINTI "A rolling "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINTR " gathers no moss."
|
|
|
|
|
|
.FUNCT V-ROLL-DIR,OHERE
|
|
EQUAL? PRSO,CANNONBALL,DUMBBELL \?CCL3
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CND4
|
|
IN? PRSO,WALDO /?CND4
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CND4: SET 'OHERE,HERE
|
|
CALL1 DIRECTION-CONVERSION
|
|
ICALL2 DO-WALK,STACK
|
|
EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS \?CCL10
|
|
REMOVE PRSO
|
|
PRINTI " The "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINTR " disappointingly fails to roll along the ground ABOVE you, and plunges into the void."
|
|
?CCL10: EQUAL? HERE,OHERE /TRUE
|
|
MOVE PRSO,HERE
|
|
PRINTI " The "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINTR " rolls to a stop."
|
|
?CCL3: CALL1 V-ROLL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ROLL-DOWN,OHERE
|
|
EQUAL? PRSO,CANNONBALL,DUMBBELL \?CCL3
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CND4
|
|
IN? PRSO,WALDO /?CND4
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CND4: SET 'OHERE,HERE
|
|
ICALL2 DO-WALK,P?DOWN
|
|
EQUAL? HERE,OHERE /TRUE
|
|
PRINTI " The "
|
|
ICALL2 DPRINT,PRSO
|
|
EQUAL? HERE,OUBLIETTE \?CCL12
|
|
REMOVE PRSO
|
|
PRINTI " sinks into the mud"
|
|
JUMP ?CND10
|
|
?CCL12: MOVE PRSO,HERE
|
|
PRINTI " rolls to a stop"
|
|
?CND10: PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL3: CALL1 V-ROLL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ROLL-UP,OHERE
|
|
EQUAL? PRSO,CANNONBALL,DUMBBELL \?CCL3
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CND4
|
|
IN? PRSO,WALDO /?CND4
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CND4: SET 'OHERE,HERE
|
|
ICALL2 DO-WALK,P?UP
|
|
EQUAL? HERE,OHERE /TRUE
|
|
MOVE PRSO,HERE
|
|
PRINTI " The "
|
|
ICALL2 DPRINT,PRSO
|
|
PRINTR " rolls to a stop."
|
|
?CCL3: CALL1 V-ROLL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SACRED-WORD
|
|
EQUAL? SACRED-WORD-NUMBER,10 /?CCL3
|
|
GET SACRED-WORD-WORDS,SACRED-WORD-NUMBER
|
|
EQUAL? P-PRSA-WORD,STACK \?CCL3
|
|
ZERO? TIME-STOPPED /?CCL3
|
|
SET 'TIME-STOPPED,FALSE-VALUE
|
|
FSET OUTER-GATE,OPENBIT
|
|
FSET PERIMETER-WALL,REDESCBIT
|
|
ICALL QUEUE,I-END-GAME,-1
|
|
PRINTI "As you utter the sacred word, time resumes its normal motion! "
|
|
EQUAL? HERE,PERIMETER-WALL \?CCL9
|
|
PRINTI "The huge outer gates burst open, and t"
|
|
JUMP ?CND7
|
|
?CCL9: PRINTI "You hear a distant grinding sound like the opening of a huge door. T"
|
|
?CND7: PRINTR "he entire structure around you begins to shake and tremble; the last moments of the castle are at hand!"
|
|
?CCL3: PRINTR "As you utter it, the power of the sacred word sends you staggering."
|
|
|
|
|
|
.FUNCT V-NOT-SO-SACRED-WORD
|
|
PRINTR "The word hangs in the air like a damp fog before dissipating."
|
|
|
|
|
|
.FUNCT V-SADDLE
|
|
ZERO? PRSI \?CCL3
|
|
CALL2 ULTIMATELY-IN?,SADDLE
|
|
ZERO? STACK /?CCL6
|
|
ICALL PERFORM,V?PUT-ON,SADDLE,PRSO
|
|
RTRUE
|
|
?CCL6: PRINTR "You don't have a saddle!"
|
|
?CCL3: EQUAL? PRSI,SADDLE \?CCL8
|
|
ICALL PERFORM,V?PUT-ON,SADDLE,PRSO
|
|
RTRUE
|
|
?CCL8: PRINTR "You can only saddle something with a saddle! In fact, that's probably where the word comes from!"
|
|
|
|
|
|
.FUNCT V-SAVE-SOMETHING
|
|
EQUAL? PRSO,ME \?CCL3
|
|
CALL1 V-HINT
|
|
RSTACK
|
|
?CCL3: PRINTI "Sorry, but"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " is beyond help."
|
|
|
|
|
|
.FUNCT V-SAY,V,V2,TMP
|
|
CALL1 GET-NP
|
|
GET STACK,7 >TMP
|
|
EQUAL? PRSO,INTQUOTE \?CND1
|
|
ADD TMP,8 >TMP
|
|
?CND1: GET TMP,0 >V
|
|
GET TMP,P-LEXELEN >V2
|
|
ZERO? AWAITING-REPLY /?CCL5
|
|
CALL2 YES-WORD,V
|
|
ZERO? STACK /?CCL5
|
|
ICALL1 V-YES
|
|
JUMP ?CND3
|
|
?CCL5: ZERO? AWAITING-REPLY /?CCL9
|
|
CALL2 NO-WORD,V
|
|
ZERO? STACK /?CCL9
|
|
ICALL1 V-NO
|
|
JUMP ?CND3
|
|
?CCL9: INTBL? V,SACRED-WORD-WORDS,SACRED-WORD-WORDS-LENGTH \?CCL13
|
|
SET 'P-PRSA-WORD,V
|
|
ICALL1 V-SACRED-WORD
|
|
JUMP ?CND3
|
|
?CCL13: ZERO? PRSO /?CCL15
|
|
EQUAL? PRSO,SACRED-WORD-OBJ \?CCL15
|
|
CALL2 GET-NP,PRSO
|
|
GET STACK,2 >P-PRSA-WORD
|
|
ICALL1 V-SACRED-WORD
|
|
JUMP ?CND3
|
|
?CCL15: EQUAL? V,W?FLODOOR,W?ZIPSO,W?FURGALNETI \?CCL19
|
|
ICALL1 V-NOT-SO-SACRED-WORD
|
|
JUMP ?CND3
|
|
?CCL19: EQUAL? HERE,ENTRANCE-HALL \?CCL21
|
|
IN? JESTER,HERE \?CCL21
|
|
FSET? PORTCULLIS,OPENBIT /?CCL21
|
|
EQUAL? PRSO,TIME-OBJECT /?CTR26
|
|
EQUAL? V,W?TIME \?CCL27
|
|
?CTR26: FSET PORTCULLIS,OPENBIT
|
|
PRINTI "The portcullis creaks open. ""Friend or foe, you're free to go!"""
|
|
ICALL1 J-EXITS
|
|
ICALL2 INC-SCORE,20
|
|
JUMP ?CND3
|
|
?CCL27: ICALL1 DONT-CRY
|
|
JUMP ?CND3
|
|
?CCL21: EQUAL? HERE,OUBLIETTE \?CCL31
|
|
IN? JESTER,HERE \?CCL31
|
|
EQUAL? PRSO,TRIPLET /?CTR35
|
|
EQUAL? V,W?TRIPLET,W?TRIPLETS,W?QUADRUPLET /?CTR35
|
|
EQUAL? V,W?QUINTUPLET /?CTR35
|
|
EQUAL? V2,W?TRIPLET,W?TRIPLETS,W?QUADRUPLET /?CTR35
|
|
EQUAL? V2,W?QUINTUPLET \?CCL36
|
|
?CTR35: PRINTI "The jester solemnly shakes your hand, and you feel yourself rising out of the oubliette."
|
|
CRLF
|
|
CRLF
|
|
ICALL2 GOTO,DUNGEON
|
|
ICALL2 INC-SCORE,OUBLIETTE-SCORE
|
|
SET 'OUBLIETTE-SCORE,0
|
|
RTRUE
|
|
?CCL36: ICALL1 DONT-CRY
|
|
JUMP ?CND3
|
|
?CCL31: IN? EAST-KEY,JESTER \?CCL43
|
|
IN? JESTER,HERE \?CCL43
|
|
EQUAL? PRSO,LETTER-Y /?CTR47
|
|
EQUAL? V,W?Y /?CTR47
|
|
EQUAL? V,W?A,W?LETTER \?PRD52
|
|
EQUAL? V,W?Y /?CTR47
|
|
?PRD52: EQUAL? V,W?A,W?THE \?CCL48
|
|
EQUAL? V2,W?LETTER \?CCL48
|
|
GET TMP,4
|
|
EQUAL? STACK,W?Y \?CCL48
|
|
?CTR47: MOVE EAST-KEY,PROTAGONIST
|
|
FSET EAST-KEY,TOUCHBIT
|
|
FCLEAR EAST-KEY,TRYTAKEBIT
|
|
PRINTI "The jester grins and tosses you the key. ""Way to be -- Here's the key!"""
|
|
ICALL1 J-EXITS
|
|
ICALL2 INC-SCORE,20
|
|
JUMP ?CND3
|
|
?CCL48: ICALL1 DONT-CRY
|
|
JUMP ?CND3
|
|
?CCL43: IN? DIPLOMA,JESTER \?CCL59
|
|
IN? JESTER,HERE \?CCL59
|
|
EQUAL? PRSO,MUSIC /?CTR63
|
|
EQUAL? V,W?MUSIC /?CTR63
|
|
EQUAL? V,W?MUSICAL \?CCL64
|
|
EQUAL? V2,W?INSTRUMENTS \?CCL64
|
|
?CTR63: MOVE DIPLOMA,PROTAGONIST
|
|
FCLEAR DIPLOMA,TRYTAKEBIT
|
|
FCLEAR DIPLOMA,NDESCBIT
|
|
FSET DIPLOMA,TOUCHBIT
|
|
SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
PRINTI """Go to the head of the class!"" The jester hands you the framed document. ""With flying colors, you pass!"""
|
|
ICALL1 J-EXITS
|
|
ICALL2 INC-SCORE,12
|
|
JUMP ?CND3
|
|
?CCL64: ICALL1 DONT-CRY
|
|
JUMP ?CND3
|
|
?CCL59: EQUAL? HERE,TAX-OFFICE \?CCL71
|
|
IN? ZORKMID-COIN,LOCAL-GLOBALS \?CCL71
|
|
IN? JESTER,HERE \?CCL71
|
|
EQUAL? PRSO,BOOKKEEPER /?CTR76
|
|
EQUAL? V,W?BOOKKEEPER,W?BOOKKEEPING \?CCL77
|
|
?CTR76: MOVE ZORKMID-COIN,HERE
|
|
PRINTI "You hear a ""clink"" by your feet. ""You're fast as a bunny and right on the money!"""
|
|
ICALL1 J-EXITS
|
|
ICALL2 INC-SCORE,6
|
|
JUMP ?CND3
|
|
?CCL77: ICALL1 DONT-CRY
|
|
JUMP ?CND3
|
|
?CCL71: EQUAL? HERE,CAVE-IN \?CCL81
|
|
IN? PIT-BOMB,LOCAL-GLOBALS \?CCL81
|
|
IN? JESTER,HERE \?CCL81
|
|
EQUAL? PRSO,MID-NAME \?PRD89
|
|
GET MID-NAME-WORDS,MID-NAME-NUM
|
|
CALL NOUN-USED?,MID-NAME,STACK
|
|
ZERO? STACK \?CTR86
|
|
?PRD89: GET MID-NAME-WORDS,MID-NAME-NUM
|
|
EQUAL? V,STACK \?CCL87
|
|
?CTR86: MOVE PIT-BOMB,HERE
|
|
PRINTI """That's my proper appellation; the finest in the nation!"""
|
|
ICALL1 J-EXITS
|
|
ICALL2 INC-SCORE,6
|
|
CRLF
|
|
EQUAL? HERE,CAVE-IN \TRUE
|
|
ICALL1 V-LOOK
|
|
RTRUE
|
|
?CCL87: EQUAL? PRSO,OTHER-J-NAMES /?CTR94
|
|
EQUAL? V,W?BARBAZZO,W?FERNAP \?CCL95
|
|
?CTR94: PRINTI """That's my name, but not my middle; try again to win this riddle!"""
|
|
CRLF
|
|
JUMP ?CND3
|
|
?CCL95: PRINTI """That's not my middle moniker; and I should know! I just looked it up this morning! Try again."""
|
|
CRLF
|
|
JUMP ?CND3
|
|
?CCL81: EQUAL? HERE,ON-TOP-OF-THE-WORLD \?CCL99
|
|
IN? LITTLE-FUNGUS,GLOBAL-OBJECTS \?CCL99
|
|
ZERO? PLANT-TALKER /?CCL99
|
|
EQUAL? FUNGUS-NUMBER,12 /?CCL99
|
|
GET FUNGUS-WORDS,FUNGUS-NUMBER
|
|
EQUAL? V,STACK \?CCL99
|
|
ICALL1 GET-LITTLE-FUNGUS
|
|
JUMP ?CND3
|
|
?CCL99: CALL FIND-IN,HERE,ACTORBIT >V
|
|
ZERO? V /?CCL106
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "[If you want"
|
|
ICALL2 TPRINT,V
|
|
PRINTI " to do something, the proper way is
|
|
>"
|
|
ICALL2 DPRINT,V
|
|
PRINTI ", do something]"
|
|
CRLF
|
|
JUMP ?CND3
|
|
?CCL106: PRINTI "You say that out loud, but with no effect."
|
|
CRLF
|
|
?CND3: CALL1 STOP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SCORE
|
|
PRINTI "You have scored "
|
|
PRINTN SCORE
|
|
PRINTI " point"
|
|
EQUAL? SCORE,1 /?CND1
|
|
PRINTC 115
|
|
?CND1: PRINTI " (out of 1000) in "
|
|
PRINTN MOVES
|
|
PRINTI " turn"
|
|
EQUAL? MOVES,1 /?CND3
|
|
PRINTC 115
|
|
?CND3: PRINTI ". This gives you the rank of "
|
|
EQUAL? SCORE,1000 \?CCL7
|
|
PRINTI "Dungeon Master"
|
|
JUMP ?CND5
|
|
?CCL7: GRTR? SCORE,875 \?CCL9
|
|
PRINTI "Cursebuster"
|
|
JUMP ?CND5
|
|
?CCL9: GRTR? SCORE,750 \?CCL11
|
|
PRINTI "Master Explorer"
|
|
JUMP ?CND5
|
|
?CCL11: GRTR? SCORE,625 \?CCL13
|
|
PRINTI "Expert Adventurer"
|
|
JUMP ?CND5
|
|
?CCL13: GRTR? SCORE,500 \?CCL15
|
|
PRINTI "Respected Adventurer"
|
|
JUMP ?CND5
|
|
?CCL15: GRTR? SCORE,375 \?CCL17
|
|
PRINTI "Nobleman"
|
|
JUMP ?CND5
|
|
?CCL17: GRTR? SCORE,250 \?CCL19
|
|
PRINTI "Knight"
|
|
JUMP ?CND5
|
|
?CCL19: GRTR? SCORE,125 \?CCL21
|
|
PRINTI "Tradesman"
|
|
JUMP ?CND5
|
|
?CCL21: LESS? SCORE,0 \?CND22
|
|
PRINTI "Incompetent "
|
|
?CND22: PRINTI "Peasant"
|
|
?CND5: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SCORE-OBJ,OBJ,VAL
|
|
GETP OBJ,P?VALUE >VAL
|
|
ZERO? VAL /FALSE
|
|
ICALL2 INC-SCORE,VAL
|
|
PUTP OBJ,P?VALUE,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-NOTIFY
|
|
PRINTI "Okay, you will no"
|
|
ZERO? NOTIFICATION-ON /?CCL3
|
|
SET 'NOTIFICATION-ON,FALSE-VALUE
|
|
PRINTI " longer"
|
|
JUMP ?CND1
|
|
?CCL3: SET 'NOTIFICATION-ON,TRUE-VALUE
|
|
PRINTC 119
|
|
?CND1: PRINTR " be notified when your score changes."
|
|
|
|
|
|
.FUNCT INC-SCORE,PTS
|
|
ZERO? PTS /TRUE
|
|
ZERO? NOTIFICATION-ON /?CND3
|
|
SOUND 1
|
|
HLIGHT H-BOLD
|
|
PRINTI " [Your score has just gone "
|
|
GRTR? PTS,0 \?CCL7
|
|
PRINTI "up"
|
|
JUMP ?CND5
|
|
?CCL7: PRINTI "down"
|
|
?CND5: PRINTI " by "
|
|
GRTR? PTS,0 \?CCL10
|
|
PRINTN PTS
|
|
JUMP ?CND8
|
|
?CCL10: MUL PTS,-1
|
|
PRINTN STACK
|
|
?CND8: PRINTC 46
|
|
ZERO? NOTIFICATION-WARNING \?CND11
|
|
SET 'NOTIFICATION-WARNING,TRUE-VALUE
|
|
PRINTI " Note: you can turn this feature on and off using the NOTIFY command."
|
|
?CND11: PRINTC 93
|
|
CRLF
|
|
HLIGHT H-NORMAL
|
|
?CND3: ADD SCORE,PTS >SCORE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SEARCH
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
CALL1 V-SHAKE
|
|
RSTACK
|
|
?CCL3: IN? PROTAGONIST,PRSO \?CCL5
|
|
CALL1 D-VEHICLE
|
|
RSTACK
|
|
?CCL5: FSET? PRSO,CONTBIT \?CCL7
|
|
FSET? PRSO,OPENBIT /?CCL7
|
|
CALL DO-FIRST,STR?140,PRSO
|
|
RSTACK
|
|
?CCL7: FSET? PRSO,CONTBIT \?CCL11
|
|
PRINTI "You find"
|
|
CALL1 D-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL11: CALL2 CANT-VERB-A-PRSO,STR?156
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SSEARCH-OBJECT-FOR
|
|
ICALL PERFORM,V?SEARCH-OBJECT-FOR,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SEARCH-OBJECT-FOR
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
ICALL PERFORM,V?SEARCH,PRSO
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,CONTBIT \?CCL5
|
|
FSET? PRSO,OPENBIT /?CCL5
|
|
CALL DO-FIRST,STR?140,PRSO
|
|
RSTACK
|
|
?CCL5: IN? PRSI,PRSO /?CTR8
|
|
IN? PRSI,HERE \?CCL9
|
|
?CTR8: PRINTI "Very observant. There "
|
|
FSET? PRSI,FEMALEBIT \?CCL14
|
|
PUSH STR?157
|
|
JUMP ?CND12
|
|
?CCL14: FSET? PRSI,ACTORBIT \?CCL16
|
|
PUSH STR?158
|
|
JUMP ?CND12
|
|
?CCL16: PUSH STR?159
|
|
?CND12: PRINT STACK
|
|
PRINTR " is."
|
|
?CCL9: PRINTI "You don't find"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTR " there."
|
|
|
|
|
|
.FUNCT V-SEND
|
|
PRINTR "You haven't any stamps, and there isn't a mailbox in sight!"
|
|
|
|
|
|
.FUNCT V-SET
|
|
ZERO? PRSI \?CCL3
|
|
EQUAL? PRSO,ROOMS \?CCL6
|
|
PRINTR "You do a 360 degree spin, but no agents appear to sign you up for the Borphee Metropolitan Ballet Company."
|
|
?CCL6: FSET? PRSO,TAKEBIT /?CTR7
|
|
FSET? PRSO,INTEGRALBIT \?CCL8
|
|
?CTR7: CALL2 HACK-HACK,STR?160
|
|
RSTACK
|
|
?CCL8: PRINT YNH
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SET-DIR
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SGIVE
|
|
ICALL PERFORM,V?GIVE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SHAKE,PERSON
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
PRINTR "That wouldn't be polite."
|
|
?CCL3: CALL2 HACK-HACK,STR?161
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SHAKE-WITH
|
|
ZERO? PRSI \?CCL3
|
|
ICALL PERFORM,V?SHAKE-WITH,HANDS,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,HANDS /?CCL5
|
|
CALL1 RECOGNIZE
|
|
RSTACK
|
|
?CCL5: FSET? PRSI,ACTORBIT /?CCL7
|
|
PRINTI "I don't think"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTR " even has hands."
|
|
?CCL7: ICALL PERFORM,V?THANK,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SHOW,ACTOR
|
|
ZERO? PRSI \?CCL3
|
|
CALL FIND-IN,HERE,ACTORBIT >ACTOR
|
|
ZERO? ACTOR /?CCL3
|
|
ICALL PERFORM,V?SHOW,PRSO,ACTOR
|
|
RTRUE
|
|
?CCL3: ZERO? PRSI \?CCL7
|
|
PRINTR "There's no one here to show it to."
|
|
?CCL7: PRINTI "It doesn't look like"
|
|
ICALL2 IS-ARE-PRINT,PRSI
|
|
PRINTR "interested."
|
|
|
|
|
|
.FUNCT V-SHUT-UP
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
PRINTR "[I hope you're not addressing me...]"
|
|
?CCL3: ICALL PERFORM,V?CLOSE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SING
|
|
PRINT HUH
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SING-TO
|
|
EQUAL? PRSO,BEDBUG \?CCL3
|
|
ICALL PERFORM,V?PUT-TO,BEDBUG,GLOBAL-SLEEP
|
|
RTRUE
|
|
?CCL3: CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SINK
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SIT,VEHICLE
|
|
ZERO? PRSO /?CCL3
|
|
EQUAL? PRSO,ROOMS /?CCL3
|
|
ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CCL3: IN? PROTAGONIST,HERE /?CCL7
|
|
PRINT LOOK-AROUND
|
|
RTRUE
|
|
?CCL7: EQUAL? HERE,CASINO \?CCL9
|
|
PRINTI "[at the card table]"
|
|
CRLF
|
|
ICALL PERFORM,V?ENTER,CARD-TABLE
|
|
RTRUE
|
|
?CCL9: CALL FIND-IN,HERE,VEHBIT,STR?162 >VEHICLE
|
|
ZERO? VEHICLE /?CCL11
|
|
ICALL PERFORM,V?ENTER,VEHICLE
|
|
RTRUE
|
|
?CCL11: CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SKIP
|
|
ZERO? TURNED-INTO /?CCL3
|
|
FSET? TURNED-INTO,ANIMATEDBIT /?CCL3
|
|
EQUAL? TURNED-INTO,LITTLE-FUNGUS /?CCL3
|
|
SET 'P-CONT,-1
|
|
PRINTI "Ahem..."
|
|
ICALL2 APRINT,TURNED-INTO
|
|
FSET? TURNED-INTO,PLURALBIT \?CCL9
|
|
PRINTI " are"
|
|
JUMP ?CND7
|
|
?CCL9: PRINTI " is"
|
|
?CND7: PRINTR " usually incapable of locomotion."
|
|
?CCL3: PRINTR "Wasn't that fun?"
|
|
|
|
|
|
.FUNCT V-SLEEP
|
|
PRINTI "You're not tired"
|
|
IN? BEDBUG,HERE \?CCL3
|
|
PRINTI ", but you curl up for a moment and fake sleep. "
|
|
CALL2 REMOVE-BEDBUG,STR?136
|
|
RSTACK
|
|
?CCL3: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-SMELL
|
|
FSET? CLOWN-NOSE,WORNBIT \FALSE
|
|
PRINT YOU-CANT
|
|
PRINTR "smell a thing with this clown nose on!"
|
|
|
|
|
|
.FUNCT V-SMELL
|
|
ZERO? PRSO \?CCL3
|
|
EQUAL? HERE,WEST-WING \?CCL6
|
|
PRINT FUDGE
|
|
CRLF
|
|
RTRUE
|
|
?CCL6: EQUAL? HERE,FISHY-ODOR \?CCL8
|
|
PRINTR "Phew! Rotten fish!"
|
|
?CCL8: PRINTR "You smell nothing unusual at the moment."
|
|
?CCL3: CALL2 SENSE-OBJECT,STR?163
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SENSE-OBJECT,STRING
|
|
ICALL1 PRONOUN
|
|
PRINTC 32
|
|
PRINT STRING
|
|
FSET? PRSO,PLURALBIT /?CND1
|
|
EQUAL? PRSO,ME /?CND1
|
|
PRINTC 115
|
|
?CND1: PRINTI " just like"
|
|
CALL2 ARPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SNAP
|
|
PRINTR "Perhaps it's your mind that has snapped."
|
|
|
|
|
|
.FUNCT V-SPUT-ON
|
|
ICALL PERFORM,V?PUT-ON,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SSHOW
|
|
ICALL PERFORM,V?SHOW,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STAND
|
|
EQUAL? P-PRSA-WORD,W?HOLD \?CCL3
|
|
CALL1 WASTES
|
|
RSTACK
|
|
?CCL3: ZERO? PRSO /?CCL5
|
|
FSET? PRSO,TAKEBIT \?CCL5
|
|
EQUAL? P-PRSA-WORD,W?STAND \?CCL5
|
|
CALL1 WASTES
|
|
RSTACK
|
|
?CCL5: EQUAL? P-PRSA-WORD,W?GET \?CCL10
|
|
ZERO? PRSO /?CCL10
|
|
EQUAL? PRSO,ROOMS /?CCL10
|
|
ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CCL10: IN? PROTAGONIST,HERE /?CCL15
|
|
LOC PROTAGONIST
|
|
ICALL PERFORM,V?EXIT,STACK
|
|
RTRUE
|
|
?CCL15: EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL17
|
|
EQUAL? P-PRSA-WORD,W?STAND /?CCL17
|
|
ICALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CCL17: ZERO? UNDER-TABLE /?CCL21
|
|
SET 'UNDER-TABLE,FALSE-VALUE
|
|
SET 'OLD-HERE,FALSE-VALUE
|
|
PRINTR "You get out from under the table."
|
|
?CCL21: PRINTR "You're already standing."
|
|
|
|
|
|
.FUNCT V-STAND-ON
|
|
EQUAL? PRSO,NORTH-DOCK,WEST-DOCK,EAST-DOCK /?CTR2
|
|
EQUAL? PRSO,YACHT,TREE-STUMP,SOUTH-DOCK /?CTR2
|
|
EQUAL? PRSO,CONDUCTOR-STAND,TOBOGGAN \?CCL3
|
|
?CTR2: ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CCL3: CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-STELL
|
|
ICALL PERFORM,V?TELL,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STHROW
|
|
EQUAL? PRSI,INTDIR \?CCL3
|
|
ICALL PERFORM,V?THROW,PRSO,PRSI
|
|
RTRUE
|
|
?CCL3: ICALL PERFORM,V?THROW-TO,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SUCK-ON
|
|
ICALL PERFORM,V?TASTE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SUCK-WITH
|
|
ICALL PERFORM,V?DRINK,PRSO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SWAT
|
|
ZERO? PRSI /?CCL3
|
|
PRINTI "Sorry, but"
|
|
ICALL2 APRINT,PRSI
|
|
PRINTI " makes a poor "
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI "You don't have a "
|
|
?CND1: EQUAL? PRSO,EVEN-LARGER-FLY,LARGER-FLY,LARGE-FLY /?CTR5
|
|
EQUAL? PRSO,LARGEST-FLY \?CCL6
|
|
?CTR5: PRINTI "fly"
|
|
JUMP ?CND4
|
|
?CCL6: ICALL2 DPRINT,PRSO
|
|
?CND4: PRINTR "swatter."
|
|
|
|
|
|
.FUNCT V-SWIM,X
|
|
ZERO? PRSO /?CCL3
|
|
ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CCL3: CALL1 FIND-WATER >X
|
|
ZERO? X /?CCL5
|
|
ICALL PERFORM,V?ENTER,X
|
|
RTRUE
|
|
?CCL5: PRINTR "Your head must be swimming."
|
|
|
|
|
|
.FUNCT V-SWING
|
|
PRINTR """Whoosh."""
|
|
|
|
|
|
.FUNCT PRE-SWITCH
|
|
SET 'OBJ-SWAP,TRUE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-SWRAP
|
|
ICALL PERFORM,V?WRAP,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-TAKE
|
|
FSET? PRSO,PARTBIT /?CCL3
|
|
CALL1 PRE-LOOK
|
|
ZERO? STACK \TRUE
|
|
?CCL3: EQUAL? PRSO,HANDS \?CCL7
|
|
ZERO? PRSI /?CCL7
|
|
EQUAL? PRSI,WALDO,HAND-HOLE \?PRD12
|
|
ZERO? HAND-IN-WALDO \?CTR6
|
|
?PRD12: EQUAL? PRSI,STRAW \?CCL7
|
|
ZERO? FINGER-ON-STRAW /?CCL7
|
|
?CTR6: ICALL PERFORM,V?REMOVE,HANDS
|
|
RTRUE
|
|
?CCL7: IN? PROTAGONIST,PRSO \?CCL18
|
|
PRINTI "You're "
|
|
FSET? PRSO,INBIT \?CCL21
|
|
PRINTC 105
|
|
JUMP ?CND19
|
|
?CCL21: PRINTC 111
|
|
?CND19: PRINTR "n it!"
|
|
?CCL18: CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL23
|
|
ZERO? PRSI /?CCL23
|
|
IN? PRSI,ROOMS \?CCL23
|
|
CALL1 V-WALK-AROUND
|
|
RSTACK
|
|
?CCL23: IN? PRSO,PROTAGONIST /?CTR27
|
|
CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?CCL28
|
|
FSET? PRSO,TAKEBIT /?CCL28
|
|
EQUAL? PRSO,LARGE-VIAL-WATER,SMALL-VIAL-WATER,WALDO /?CCL28
|
|
?CTR27: FSET? PRSO,WORNBIT \?CCL36
|
|
EQUAL? PRSO,CLOWN-NOSE \?CND37
|
|
ICALL PERFORM,V?TAKE-OFF,CLOWN-NOSE
|
|
RTRUE
|
|
?CND37: PRINTI "You're already wearing"
|
|
JUMP ?CND34
|
|
?CCL36: PRINTI "You already have"
|
|
?CND34: ICALL1 TPRINT-PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL28: CALL2 UNTOUCHABLE?,PRSO
|
|
ZERO? STACK /?CCL40
|
|
ZERO? HAND-IN-WALDO /?CCL43
|
|
ICALL1 WALDO-TAKE
|
|
RTRUE
|
|
?CCL43: CALL2 CANT-REACH,PRSO
|
|
RSTACK
|
|
?CCL40: ZERO? PRSI /FALSE
|
|
EQUAL? PRSI,ME \?CCL47
|
|
ICALL PERFORM,V?DROP,PRSI
|
|
RTRUE
|
|
?CCL47: EQUAL? PRSO,WATER \?CCL49
|
|
EQUAL? P-PRSA-WORD,W?REMOVE \?CCL49
|
|
EQUAL? PRSI,LARGE-VIAL \?PRD54
|
|
GRTR? LARGE-VIAL-WATER,0 /?CTR48
|
|
?PRD54: EQUAL? PRSI,SMALL-VIAL \?CCL49
|
|
GRTR? SMALL-VIAL-WATER,0 \?CCL49
|
|
?CTR48: ICALL PERFORM,V?EMPTY-FROM,PRSO,PRSI
|
|
RTRUE
|
|
?CCL49: IN? PRSO,PRSI /?CCL60
|
|
GETP PRSO,P?OWNER
|
|
EQUAL? PRSI,STACK /?CCL60
|
|
CALL1 NOT-IN
|
|
RSTACK
|
|
?CCL60: ZERO? PRSI /FALSE
|
|
SET 'PRSI,FALSE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-TAKE,L
|
|
LOC PRSO >L
|
|
CALL2 ITAKE,TRUE-VALUE
|
|
EQUAL? STACK,M-FATAL /FALSE
|
|
EQUAL? L,HERE /?CTR5
|
|
LOC PROTAGONIST
|
|
EQUAL? L,STACK \?CCL6
|
|
?CTR5: PRINTI "You pick up"
|
|
ICALL2 TRPRINT,PRSO
|
|
JUMP ?CND4
|
|
?CCL6: PRINTI "You take"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " from"
|
|
ICALL2 TRPRINT,L
|
|
?CND4: CALL2 SCORE-OBJ,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TAKE-OFF,VEHICLE
|
|
LOC PROTAGONIST >VEHICLE
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
FSET? VEHICLE,VEHBIT \?CCL6
|
|
ICALL PERFORM,V?EXIT,VEHICLE
|
|
RTRUE
|
|
?CCL6: EQUAL? HERE,GONDOLA \?CCL8
|
|
CALL2 DO-WALK,P?OUT
|
|
RSTACK
|
|
?CCL8: PRINTI "You're not "
|
|
GET PARSE-RESULT,7
|
|
EQUAL? STACK,W?OUT \?CCL11
|
|
PRINTC 105
|
|
JUMP ?CND9
|
|
?CCL11: PRINTC 111
|
|
?CND9: PRINTR "n anything."
|
|
?CCL3: FSET? PRSO,WORNBIT \?CCL13
|
|
FCLEAR PRSO,WORNBIT
|
|
ICALL2 THIS-IS-IT,PRSO
|
|
PRINTI "You remove"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL13: FSET? PRSO,VEHBIT \?CCL15
|
|
ICALL PERFORM,V?EXIT,PRSO
|
|
RTRUE
|
|
?CCL15: PRINTI "You aren't wearing"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TAKE-WITH
|
|
CALL2 ULTIMATELY-IN?,PRSI
|
|
ZERO? STACK \?CCL3
|
|
PRINT YNH
|
|
CALL2 TRPRINT,PRSI
|
|
RSTACK
|
|
?CCL3: PRINTI "Sorry,"
|
|
ICALL2 IS-ARE-PRINT,PRSI
|
|
PRINTI "no help in getting"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TASTE
|
|
CALL2 SENSE-OBJECT,STR?164
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-TELL
|
|
ZERO? TURNED-INTO /?CCL3
|
|
FSET? TURNED-INTO,ANIMATEDBIT /?CCL3
|
|
SET 'P-CONT,-1
|
|
CALL2 TO-SPEAK-OF,STR?165
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?SAY,V?SING-TO,V?SING /FALSE
|
|
ZERO? PRSO /FALSE
|
|
FSET? PRSO,PLANTBIT \?CCL11
|
|
ZERO? PLANT-TALKER \FALSE
|
|
?CCL11: EQUAL? PRSO,OTHER-J-NAMES /?PRD17
|
|
EQUAL? PRSO,MID-NAME \?CCL15
|
|
GET MID-NAME-WORDS,MID-NAME-NUM
|
|
CALL NOUN-USED?,MID-NAME,STACK
|
|
ZERO? STACK /?CCL15
|
|
?PRD17: CALL2 VISIBLE?,JESTER
|
|
ZERO? STACK /?CCL15
|
|
ICALL2 PERFORM-PRSA,JESTER
|
|
RTRUE
|
|
?CCL15: EQUAL? PRSO,MID-NAME,OTHER-J-NAMES \?CCL23
|
|
PRINT BY-THAT-NAME
|
|
CALL1 STOP
|
|
RSTACK
|
|
?CCL23: EQUAL? PRSO,LITTLE-FUNGUS \?CCL25
|
|
IN? LITTLE-FUNGUS,GLOBAL-OBJECTS \?CCL25
|
|
EQUAL? HERE,ON-TOP-OF-THE-WORLD \?CCL30
|
|
ICALL PERFORM,V?CALL,PRSO
|
|
JUMP ?CND28
|
|
?CCL30: PRINT BY-THAT-NAME
|
|
?CND28: CALL1 STOP
|
|
RSTACK
|
|
?CCL25: FSET? PRSO,ACTORBIT /FALSE
|
|
EQUAL? PRSO,SAILOR,ORACLE-OBJECT,ME /FALSE
|
|
EQUAL? PRSO,INTQUOTE /FALSE
|
|
ICALL1 V-TELL
|
|
CALL1 STOP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TELL
|
|
FSET? PRSO,ACTORBIT /?CTR2
|
|
EQUAL? PRSO,SAILOR /?CTR2
|
|
FSET? PRSO,PLANTBIT \?CCL3
|
|
ZERO? PLANT-TALKER /?CCL3
|
|
?CTR2: ZERO? P-CONT \?CTR10
|
|
EQUAL? PRSO,SAILOR \?CCL11
|
|
?CTR10: SET 'WINNER,PRSO
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RTRUE
|
|
?CCL11: PRINTI "Hmmm..."
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " looks at you expectantly, as if you seemed to be about to talk."
|
|
?CCL3: EQUAL? PRSO,BROGMOID \?CCL15
|
|
PRINT TALK-TO-BROGMOID
|
|
RTRUE
|
|
?CCL15: PRINTI "It's a well-known fact that only schizophrenics talk to"
|
|
ICALL2 ARPRINT,PRSO
|
|
CALL1 STOP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TELL-ABOUT
|
|
EQUAL? PRSO,ME \?CCL3
|
|
PRINTR "[Maybe you could find an encyclopedia to look that up in.]"
|
|
?CCL3: ICALL PERFORM,V?SHOW,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-THANK
|
|
ZERO? PRSO \?CCL3
|
|
PRINTR "[Just doing my job.]"
|
|
?CCL3: FSET? PRSO,ACTORBIT \?CCL5
|
|
PRINTI "It seems"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " is unmoved by your politeness."
|
|
?CCL5: CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THROW
|
|
CALL2 SPECIAL-DROP,PRSO
|
|
ZERO? STACK \FALSE
|
|
LOC PROTAGONIST
|
|
EQUAL? STACK,YACHT,DB \?CCL6
|
|
LOC PROTAGONIST
|
|
MOVE PRSO,STACK
|
|
JUMP ?CND4
|
|
?CCL6: MOVE PRSO,HERE
|
|
?CND4: ZERO? PRSI /?CCL9
|
|
EQUAL? PRSI,INTDIR,GROUND /?CCL9
|
|
PRINTR "You missed."
|
|
?CCL9: ICALL2 THIS-IS-IT,PRSO
|
|
PRINTR "Thrown."
|
|
|
|
|
|
.FUNCT V-THROW-OVER
|
|
CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THROW-FROM
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THROW-OVERBOARD
|
|
IN? PROTAGONIST,YACHT \?CCL3
|
|
ICALL PERFORM,V?PUT,PRSO,WATER
|
|
RTRUE
|
|
?CCL3: EQUAL? HERE,HOLD \?CCL5
|
|
PRINT YOULL-HAVE-TO
|
|
PRINTR "go up on deck to do that."
|
|
?CCL5: PRINTR "You generally have to be on a boat to do that."
|
|
|
|
|
|
.FUNCT V-THROW-TO
|
|
FSET? PRSI,ACTORBIT \?CCL3
|
|
ICALL PERFORM,V?GIVE,PRSO,PRSI
|
|
RTRUE
|
|
?CCL3: ICALL PERFORM,V?THROW,PRSO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TIE
|
|
PRINT YOU-CANT
|
|
PRINTI "tie"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TIME
|
|
PRINTI "It is daytime. You have taken "
|
|
PRINTN MOVES
|
|
PRINTI " turn"
|
|
EQUAL? MOVES,1 /?CND1
|
|
PRINTC 115
|
|
?CND1: GRTR? MOVES,1000 \?CCL5
|
|
PRINTR ". (The day really seems to be dragging, doesn't it?)"
|
|
?CCL5: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TIP
|
|
PRINTI "You tell"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTI " about Lucky Brogmoid in the seventh race at Bozbar Downs, but "
|
|
FSET? PRSO,PLURALBIT \?CCL3
|
|
PRINTI "they don't"
|
|
JUMP ?CND1
|
|
?CCL3: FSET? PRSO,ACTORBIT /?CCL6
|
|
PRINTI "it"
|
|
JUMP ?CND4
|
|
?CCL6: FSET? PRSO,FEMALEBIT \?CCL8
|
|
PRINTI "she"
|
|
JUMP ?CND4
|
|
?CCL8: PRINTI "he"
|
|
?CND4: PRINTI " doesn't"
|
|
?CND1: PRINTR " seem too interested."
|
|
|
|
|
|
.FUNCT V-TIP-OVER
|
|
CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-TOUCH
|
|
CALL2 UNTOUCHABLE?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
ICALL2 CANT-REACH,PRSO
|
|
RTRUE
|
|
?CCL3: ZERO? TURNED-INTO /FALSE
|
|
EQUAL? PRSA,V?OFF \?CCL8
|
|
EQUAL? P-PRSA-WORD,W?BLOW \?CCL8
|
|
FSET? TURNED-INTO,ANIMATEDBIT /FALSE
|
|
CALL1 PRE-TELL
|
|
RSTACK
|
|
?CCL8: SET 'P-CONT,-1
|
|
CALL2 TO-SPEAK-OF,STR?166
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-STOUCH
|
|
ICALL PERFORM,V?TOUCH,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TOUCH
|
|
CALL2 LOC-CLOSED,PRSO
|
|
ZERO? STACK \TRUE
|
|
CALL2 HACK-HACK,STR?167
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-UNLOCK
|
|
FSET? PRSO,LOCKEDBIT \?CCL3
|
|
PRINTI "Unfortunately,"
|
|
ICALL1 TPRINT-PRSI
|
|
PRINTI " do"
|
|
FSET? PRSI,PLURALBIT /?CND4
|
|
PRINTI "es"
|
|
?CND4: PRINTI "n't unlock"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: PRINTI "But"
|
|
ICALL1 TPRINT-PRSO
|
|
PRINTR " isn't locked."
|
|
|
|
|
|
.FUNCT V-UNTIE
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-USE
|
|
PRINT YOULL-HAVE-TO
|
|
PRINTI "be more specific about how you want to use"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WALK,AV,VEHICLE,PT,PTS,STR,OBJ,RM
|
|
LOC PROTAGONIST >AV
|
|
ZERO? P-WALK-DIR \?CCL3
|
|
CALL USE-PREPOSITIONS,STR?168,STR?169,STR?170,STR?171
|
|
RSTACK
|
|
?CCL3: EQUAL? HERE,BANQUET-HALL \?CCL5
|
|
CALL2 RUNNING?,I-PROLOGUE
|
|
ZERO? STACK /?CCL5
|
|
GRTR? PROLOGUE-COUNTER,2 \?CCL5
|
|
SET 'P-CONT,-1
|
|
ICALL1 RETURN-FROM-MAP
|
|
PRINTR "Thick black smoke blocks every exit."
|
|
?CCL5: ZERO? TURNED-INTO /?CCL10
|
|
FSET? TURNED-INTO,ANIMATEDBIT /?CCL10
|
|
EQUAL? TURNED-INTO,LITTLE-FUNGUS /?CCL10
|
|
ICALL1 RETURN-FROM-MAP
|
|
CALL1 V-SKIP
|
|
RSTACK
|
|
?CCL10: EQUAL? PRSO,P?OUT \?CCL15
|
|
FSET? AV,DROPBIT \?CCL15
|
|
ICALL1 RETURN-FROM-MAP
|
|
ICALL PERFORM,V?EXIT,AV
|
|
RTRUE
|
|
?CCL15: EQUAL? PRSO,P?IN \?CCL19
|
|
GETPT HERE,P?IN
|
|
ZERO? STACK \?CCL19
|
|
CALL FIND-IN,HERE,VEHBIT >VEHICLE
|
|
ZERO? VEHICLE /?CCL19
|
|
CALL2 ULTIMATELY-IN?,VEHICLE
|
|
ZERO? STACK \?CCL19
|
|
ICALL1 RETURN-FROM-MAP
|
|
EQUAL? P-PRSA-WORD,W?ENTER \?CND24
|
|
PRINTC 91
|
|
FSET? VEHICLE,NARTICLEBIT /?CND26
|
|
PRINTI "the "
|
|
?CND26: ICALL2 DPRINT,VEHICLE
|
|
PRINTC 93
|
|
CRLF
|
|
?CND24: ICALL PERFORM,V?ENTER,VEHICLE
|
|
RTRUE
|
|
?CCL19: IN? BEDBUG,HERE \?CCL29
|
|
ZERO? TIME-STOPPED \?CCL29
|
|
SET 'P-CONT,-1
|
|
ICALL1 RETURN-FROM-MAP
|
|
PRINTR "With a flurry of its powerful, hairy legs, the bedbug scuttles over to block your way."
|
|
?CCL29: EQUAL? PRSO,P?DOWN \?CCL33
|
|
IN? PROTAGONIST,YACHT \?CCL33
|
|
CALL2 GOTO,HOLD
|
|
RSTACK
|
|
?CCL33: ZERO? UNDER-TABLE /?CCL37
|
|
ICALL1 RETURN-FROM-MAP
|
|
CALL2 DO-FIRST,STR?172
|
|
RSTACK
|
|
?CCL37: FSET? AV,VEHBIT \?CCL39
|
|
EQUAL? AV,LADDER \?PRD42
|
|
EQUAL? PRSO,P?UP /?CCL39
|
|
?PRD42: EQUAL? AV,CAMEL \?CTR38
|
|
FSET? CAMEL,ANIMATEDBIT /?CCL39
|
|
?CTR38: EQUAL? AV,DB \?CCL49
|
|
EQUAL? PRSO,P?UP \?CCL49
|
|
EQUAL? HERE,HOLD /?CCL49
|
|
ICALL PERFORM,V?RAISE,LEVER
|
|
RTRUE
|
|
?CCL49: EQUAL? AV,DB \?CND47
|
|
EQUAL? PRSO,P?DOWN \?CND47
|
|
EQUAL? HERE,LAKE-BOTTOM /?CND47
|
|
ICALL PERFORM,V?LOWER,LEVER
|
|
RTRUE
|
|
?CND47: ICALL1 RETURN-FROM-MAP
|
|
PRINTI "You're not going anywhere until you get "
|
|
EQUAL? AV,CARD-TABLE \?CCL59
|
|
PRINTI "up from"
|
|
JUMP ?CND57
|
|
?CCL59: FSET? AV,INBIT \?CCL61
|
|
PRINTI "out of"
|
|
JUMP ?CND57
|
|
?CCL61: PRINTI "off"
|
|
?CND57: SET 'P-CONT,-1
|
|
CALL2 TRPRINT,AV
|
|
RSTACK
|
|
?CCL39: FSET? RING,WORNBIT \?CCL63
|
|
RANDOM 100
|
|
LESS? 40,STACK \?CTR62
|
|
EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS,LEDGE-IN-PIT /?CTR62
|
|
EQUAL? HERE,MOUTH-OF-CAVE \?CCL63
|
|
?CTR62: ICALL1 RETURN-FROM-MAP
|
|
PRINTI "Oops! You awkwardly "
|
|
EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS,LEDGE-IN-PIT /?CTR70
|
|
EQUAL? HERE,MOUTH-OF-CAVE \?CCL71
|
|
?CTR70: PRINTI "lost your grip! "
|
|
ICALL PERFORM,V?LEAP,ROOMS
|
|
RTRUE
|
|
?CCL71: PRINTR "tripped over your own feet and fell down trying to walk. Fortunately, you're not seriously hurt."
|
|
?CCL63: GETPT HERE,PRSO >PT
|
|
ZERO? PT /?CCL75
|
|
PTSIZE PT >PTS
|
|
EQUAL? PTS,UEXIT \?CCL78
|
|
GETB PT,REXIT
|
|
CALL2 GOTO,STACK
|
|
RSTACK
|
|
?CCL78: EQUAL? PTS,NEXIT \?CCL80
|
|
ICALL1 RETURN-FROM-MAP
|
|
SET 'P-CONT,-1
|
|
GET PT,NEXITSTR
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?CCL80: EQUAL? PTS,FEXIT \?CCL82
|
|
GET PT,FEXITFCN
|
|
CALL STACK >RM
|
|
ZERO? RM /?CCL85
|
|
CALL2 GOTO,RM
|
|
RSTACK
|
|
?CCL85: SET 'P-CONT,-1
|
|
RETURN P-CONT
|
|
?CCL82: EQUAL? PTS,CEXIT \?CCL87
|
|
GETB PT,CEXITFLAG
|
|
VALUE STACK
|
|
ZERO? STACK /?CCL90
|
|
GETB PT,REXIT
|
|
CALL2 GOTO,STACK
|
|
RSTACK
|
|
?CCL90: GET PT,CEXITSTR >STR
|
|
ZERO? STR /?CCL92
|
|
SET 'P-CONT,-1
|
|
ICALL1 RETURN-FROM-MAP
|
|
PRINT STR
|
|
CRLF
|
|
RTRUE
|
|
?CCL92: SET 'P-CONT,-1
|
|
CALL1 CANT-GO
|
|
RSTACK
|
|
?CCL87: EQUAL? PTS,DEXIT \FALSE
|
|
GET PT,DEXITOBJ >OBJ
|
|
FSET? OBJ,OPENBIT \?CCL97
|
|
GETB PT,DEXITRM
|
|
CALL2 GOTO,STACK
|
|
RSTACK
|
|
?CCL97: GET PT,DEXITSTR >STR
|
|
ZERO? STR /?CCL99
|
|
ICALL1 RETURN-FROM-MAP
|
|
ICALL2 THIS-IS-IT,OBJ
|
|
SET 'P-CONT,-1
|
|
PRINT STR
|
|
CRLF
|
|
RTRUE
|
|
?CCL99: ICALL1 RETURN-FROM-MAP
|
|
ICALL2 THIS-IS-IT,OBJ
|
|
SET 'P-CONT,-1
|
|
CALL DO-FIRST,STR?140,OBJ
|
|
RSTACK
|
|
?CCL75: EQUAL? PRSO,P?IN,P?OUT \?CCL102
|
|
ICALL1 V-WALK-AROUND
|
|
JUMP ?CND100
|
|
?CCL102: ICALL1 CANT-GO
|
|
?CND100: SET 'P-CONT,-1
|
|
RETURN P-CONT
|
|
|
|
|
|
.FUNCT CANT-GO
|
|
ZERO? LIT \?CCL3
|
|
LOC PROTAGONIST
|
|
EQUAL? STACK,DB,HOLD /?CCL3
|
|
EQUAL? HERE,PIT-BOMB-LOC /?CCL3
|
|
ZERO? TIME-STOPPED \?CCL3
|
|
RANDOM 100
|
|
LESS? 75,STACK /?CCL3
|
|
ICALL1 RETURN-FROM-MAP
|
|
CALL1 DARK-DEATH
|
|
RSTACK
|
|
?CCL3: IN? N-S-PASSAGE,HERE \?PRD12
|
|
EQUAL? PRSO,N-S-PASSAGE-DIR /?CTR9
|
|
?PRD12: IN? NW-SE-PASSAGE,HERE \?CCL10
|
|
EQUAL? PRSO,NW-SE-PASSAGE-DIR \?CCL10
|
|
?CTR9: EQUAL? HERE,CONSTRUCTION \?CCL19
|
|
EQUAL? CONSTRUCTION-LOC,N-S-PASSAGE-LOC /?CCL19
|
|
EQUAL? PRSO,N-S-PASSAGE-DIR \?CCL19
|
|
CALL1 BEEP-OR-CANT-GO
|
|
RSTACK
|
|
?CCL19: EQUAL? HERE,CONSTRUCTION \?CCL24
|
|
EQUAL? CONSTRUCTION-LOC,NW-SE-PASSAGE-LOC /?CCL24
|
|
EQUAL? PRSO,NW-SE-PASSAGE-DIR \?CCL24
|
|
CALL1 BEEP-OR-CANT-GO
|
|
RSTACK
|
|
?CCL24: ICALL1 RETURN-FROM-MAP
|
|
PRINTI "You walk down the Frobozz Magic Passage Company passage, but it ends in a dead end and you are forced to return to"
|
|
CALL2 TRPRINT,HERE
|
|
RSTACK
|
|
?CCL10: CALL1 BEEP-OR-CANT-GO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT BEEP-OR-CANT-GO
|
|
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?CCL3
|
|
SOUND 1
|
|
RTRUE
|
|
?CCL3: PRINTR "You can't go that way."
|
|
|
|
|
|
.FUNCT V-WALK-AROUND
|
|
PRINTR "Please use compass directions to move around."
|
|
|
|
|
|
.FUNCT V-WALK-TO
|
|
IN? PRSO,HERE /?CTR2
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK /?CCL3
|
|
?CTR2: FSET? PRSO,ACTORBIT \?CCL8
|
|
EQUAL? PRSO,PRICKLY-WITCH,SICKLY-WITCH \?CCL11
|
|
PRINTI "She's"
|
|
JUMP ?CND6
|
|
?CCL11: PRINTI "He's"
|
|
JUMP ?CND6
|
|
?CCL8: FSET? PRSO,PLURALBIT \?CCL13
|
|
PRINTI "They're"
|
|
JUMP ?CND6
|
|
?CCL13: PRINTI "It's"
|
|
?CND6: PRINTR " here!"
|
|
?CCL3: CALL1 V-WALK-AROUND
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WAIT,NUM
|
|
ASSIGNED? 'NUM /?CND1
|
|
SET 'NUM,3
|
|
?CND1: PRINTI "Time "
|
|
ZERO? TIME-STOPPED /?CCL5
|
|
PRINTI "doesn't pass"
|
|
JUMP ?CND3
|
|
?CCL5: PRINTI "passes"
|
|
?CND3: PRINTI "..."
|
|
CRLF
|
|
?PRG6: DLESS? 'NUM,0 /?REP7
|
|
CALL1 CLOCKER
|
|
ZERO? STACK /?PRG6
|
|
?REP7: LOC WINNER >NUM
|
|
ZERO? NUM /?CND12
|
|
IN? NUM,ROOMS /?CND12
|
|
GETP NUM,P?ACTION
|
|
CALL D-APPLY,STR?16,STACK,M-END >NUM
|
|
?CND12: GETP HERE,P?ACTION
|
|
CALL D-APPLY,STR?16,STACK,M-END >NUM
|
|
EQUAL? M-FATAL,NUM \?CND16
|
|
SET 'P-CONT,-1
|
|
?CND16: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RETURN CLOCK-WAIT
|
|
|
|
|
|
.FUNCT V-WAIT-FOR
|
|
CALL2 VISIBLE?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
CALL1 V-FOLLOW
|
|
RSTACK
|
|
?CCL3: PRINTR "You may be waiting quite a while."
|
|
|
|
|
|
.FUNCT V-WEAR
|
|
FSET? PRSO,WEARBIT /?CCL3
|
|
CALL2 CANT-VERB-A-PRSO,STR?173
|
|
RSTACK
|
|
?CCL3: IN? PRSO,WALDO \?CCL5
|
|
PRINT YNH
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL5: PRINTI "You're "
|
|
FSET? PRSO,WORNBIT \?CCL8
|
|
PRINTI "already"
|
|
JUMP ?CND6
|
|
?CCL8: MOVE PRSO,PROTAGONIST
|
|
FSET PRSO,WORNBIT
|
|
PRINTI "now"
|
|
?CND6: PRINTI " wearing"
|
|
CALL2 TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WRAP
|
|
CALL1 WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-YAWN
|
|
IN? BEDBUG,HERE \?CCL3
|
|
CALL2 REMOVE-BEDBUG,STR?136
|
|
RSTACK
|
|
?CCL3: SET 'AWAITING-REPLY,1
|
|
ICALL QUEUE,I-REPLY,2
|
|
PRINTR "[Is the game boring you?]"
|
|
|
|
|
|
.FUNCT REMOVE-BEDBUG,STRING
|
|
REMOVE BEDBUG
|
|
PRINTI "That was all the bedbug needed to "
|
|
PRINT STRING
|
|
PRINTR ". It curls up into a well-armed piece of sleeping bedbug armor. You hear a chuckle from an invisible source, and the sleeping bedbug disappears!"
|
|
|
|
|
|
.FUNCT V-YELL
|
|
EQUAL? PRSO,INTQUOTE \?CCL3
|
|
CALL1 V-SAY
|
|
RSTACK
|
|
?CCL3: PRINTI "Aaaarrrggghhhh!"
|
|
CRLF
|
|
CALL1 STOP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-REPLY
|
|
SET 'AWAITING-REPLY,FALSE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-YES
|
|
EQUAL? AWAITING-REPLY,1 \?CCL3
|
|
PRINTR "That was just a rhetorical question."
|
|
?CCL3: EQUAL? AWAITING-REPLY,2 \?CCL5
|
|
PRINTR """Well, you don't. This swamp is owned by a cartel of lily pad farmers in Borphee, who are indebted up to their ears to a conglomerate of Gurthian banks, of which I am the primary stockholder. Ergo, you could safely say that I own this swamp."""
|
|
?CCL5: CALL2 YOU-SOUND,STR?174
|
|
RSTACK
|
|
|
|
|
|
.FUNCT YOU-SOUND,STRING
|
|
PRINTI "You sound rather "
|
|
PRINT STRING
|
|
PRINTR "ive."
|
|
|
|
|
|
.FUNCT YES-WORD,WRD
|
|
EQUAL? WRD,W?YES,W?Y,W?YUP /TRUE
|
|
EQUAL? WRD,W?OK,W?OKAY,W?SURE /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-ZAP
|
|
ZERO? PRSI /?CCL3
|
|
ICALL PERFORM,V?POINT,PRSI,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,WAND \?CCL5
|
|
PRINTR "Try waving the wand at something in particular."
|
|
?CCL5: CALL2 ULTIMATELY-IN?,WAND
|
|
ZERO? STACK /?CCL7
|
|
CALL2 VISIBLE?,WAND
|
|
ZERO? STACK /?CCL7
|
|
ICALL PERFORM,V?POINT,WAND,PRSO
|
|
RTRUE
|
|
?CCL7: PRINTR "You have neither a magical wand nor a ray gun."
|
|
|
|
|
|
.FUNCT ITAKE,VB,OBJ,?TMP1
|
|
ASSIGNED? 'VB /?CND1
|
|
SET 'VB,TRUE-VALUE
|
|
?CND1: ZERO? OBJ \?CND3
|
|
SET 'OBJ,PRSO
|
|
?CND3: FSET? OBJ,INTEGRALBIT \?CCL7
|
|
ZERO? VB /?PRG10
|
|
ICALL1 PART-OF
|
|
?PRG10: RETURN 2
|
|
?CCL7: FSET? OBJ,TAKEBIT /?CCL13
|
|
ZERO? VB /?PRG16
|
|
ICALL1 YUKS
|
|
?PRG16: RETURN 2
|
|
?CCL13: ZERO? ALLIGATOR /?CCL19
|
|
SET 'P-CONT,-1
|
|
ZERO? VB /?PRG22
|
|
PRINT YOU-CANT
|
|
PRINTI "pick anything up right now. The logic goes something like this:
|
|
1. You need hands to pick something up.
|
|
2. You've been turned into an alligator.
|
|
3. Alligators don't have hands."
|
|
CRLF
|
|
?PRG22: RETURN 2
|
|
?CCL19: ZERO? TURNED-INTO /?CCL25
|
|
ZERO? VB /?PRG28
|
|
PRINTI "Surely you realize that"
|
|
ICALL2 APRINT,TURNED-INTO
|
|
PRINTI " is hardly equipped to carry items around!"
|
|
CRLF
|
|
?PRG28: RETURN 2
|
|
?CCL25: CALL LOC-CLOSED,OBJ,VB
|
|
ZERO? STACK /?CCL31
|
|
RETURN 2
|
|
?CCL31: CALL2 UNTOUCHABLE?,OBJ
|
|
ZERO? STACK /?CCL35
|
|
ZERO? VB /?PRG38
|
|
ICALL2 CANT-REACH,OBJ
|
|
?PRG38: RETURN 2
|
|
?CCL35: FSET? RING,WORNBIT \?CCL41
|
|
CALL2 CCOUNT,PROTAGONIST
|
|
GRTR? STACK,4 \?CCL41
|
|
ZERO? VB /?PRG49
|
|
PRINTI "Oops! While trying to pick up"
|
|
ICALL2 TPRINT,OBJ
|
|
PRINTI ", you accidentally dropped everything you were holding! How clumsy!"
|
|
LOC PROTAGONIST
|
|
FSET? STACK,DROPBIT \?CCL48
|
|
LOC PROTAGONIST
|
|
JUMP ?CND46
|
|
?CCL48: PUSH HERE
|
|
?CND46: ICALL ROB,PROTAGONIST,STACK,TRUE-VALUE
|
|
CRLF
|
|
?PRG49: RETURN 2
|
|
?CCL41: CALL2 CCOUNT,PROTAGONIST
|
|
GRTR? STACK,10 \?CCL52
|
|
ZERO? VB /?PRG55
|
|
PRINTI "You're already juggling as many items as you could possibly carry."
|
|
CRLF
|
|
?PRG55: RETURN 2
|
|
?CCL52: CALL2 ULTIMATELY-IN?,OBJ
|
|
ZERO? STACK \?CND5
|
|
CALL2 WEIGHT,OBJ >?TMP1
|
|
CALL2 WEIGHT,PROTAGONIST
|
|
ADD ?TMP1,STACK
|
|
GRTR? STACK,100 \?CND5
|
|
ZERO? VB /?PRG67
|
|
FSET? OBJ,PLURALBIT \?CCL64
|
|
PRINTI "They're"
|
|
JUMP ?CND62
|
|
?CCL64: PRINTI "It's"
|
|
?CND62: PRINTI " too heavy"
|
|
FIRST? PROTAGONIST \?CND65
|
|
PRINTI ", considering your current load"
|
|
?CND65: PRINT PERIOD-CR
|
|
?PRG67: RETURN 2
|
|
?CND5: FSET OBJ,TOUCHBIT
|
|
FCLEAR OBJ,NDESCBIT
|
|
IN? PROTAGONIST,OBJ /FALSE
|
|
ZERO? VB \?CND71
|
|
PRINTI "[taking"
|
|
ICALL2 TPRINT,OBJ
|
|
PRINTI " first]"
|
|
CRLF
|
|
ICALL2 SCORE-OBJ,OBJ
|
|
?CND71: MOVE OBJ,PROTAGONIST
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IDROP
|
|
EQUAL? HERE,HANGING-FROM-ROOTS \?CCL3
|
|
EQUAL? PRSO,ROOTS,ROOMS \?CCL3
|
|
ICALL2 PERFORM,V?LEAP
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,ROOMS \?CCL7
|
|
PRINTR "You're not hanging onto anything."
|
|
?CCL7: EQUAL? PRSO,HANDS \?CCL9
|
|
EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \FALSE
|
|
CALL1 IMPOSSIBLES
|
|
RSTACK
|
|
?CCL9: EQUAL? PRSA,V?THROW \?CCL14
|
|
EQUAL? PRSO,EYES \?CCL14
|
|
ZERO? PRSI \?CND17
|
|
ICALL1 V-LOOK
|
|
RTRUE
|
|
?CND17: ICALL1 PRE-SWITCH
|
|
ICALL PERFORM,V?EXAMINE,PRSI,EYES
|
|
RTRUE
|
|
?CCL14: EQUAL? PRSO,ME \?CCL20
|
|
EQUAL? PRSA,V?PUT \?CCL20
|
|
FSET? PRSI,ACTORBIT \?CCL20
|
|
ICALL PERFORM,V?ENTER,PRSI
|
|
RTRUE
|
|
?CCL20: EQUAL? PRSI,ME \?CCL25
|
|
EQUAL? PRSA,V?PUT \?CCL25
|
|
FSET? PRSO,ACTORBIT \?CCL25
|
|
ICALL PERFORM,V?ENTER,PRSO
|
|
RTRUE
|
|
?CCL25: EQUAL? PRSA,V?DROP \?CCL30
|
|
IN? PRSO,WALDO /FALSE
|
|
?CCL30: CALL2 ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK \?CCL34
|
|
EQUAL? PRSO,ME /?CTR36
|
|
FSET? PRSO,PARTBIT \?CCL37
|
|
?CTR36: ICALL1 IMPOSSIBLES
|
|
RETURN 2
|
|
?CCL37: PRINTI "That's easy for you to say since you don't even have"
|
|
ICALL2 TRPRINT,PRSO
|
|
RETURN 2
|
|
?CCL34: FSET? PRSO,INTEGRALBIT \?CCL43
|
|
CALL1 PART-OF
|
|
RSTACK
|
|
?CCL43: IN? PRSO,PROTAGONIST /?CCL45
|
|
LOC PRSO
|
|
FSET? STACK,CONTBIT \?CCL45
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT /?CCL45
|
|
LOC PRSO
|
|
CALL DO-FIRST,STR?140,STACK
|
|
RSTACK
|
|
?CCL45: FSET? PRSO,WORNBIT \FALSE
|
|
CALL DO-FIRST,STR?175,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CCOUNT,OBJ,DESCRIBED-ITEMS-ONLY,CNT,X
|
|
FIRST? OBJ >X /?PRG3
|
|
RETURN CNT
|
|
?PRG3: ZERO? DESCRIBED-ITEMS-ONLY /?CCL7
|
|
FSET? X,NDESCBIT /?CND5
|
|
?CCL7: FSET? X,WORNBIT /?CND5
|
|
INC 'CNT
|
|
?CND5: NEXT? X >X /?PRG3
|
|
RETURN CNT
|
|
|
|
|
|
.FUNCT WEIGHT,OBJ,CONT,WT
|
|
FIRST? OBJ >CONT \?CND1
|
|
?PRG3: FSET? CONT,WORNBIT /?CND5
|
|
CALL2 WEIGHT,CONT
|
|
ADD WT,STACK >WT
|
|
?CND5: NEXT? CONT >CONT /?PRG3
|
|
?CND1: GETP OBJ,P?SIZE
|
|
ADD WT,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT D-ROOM,VERB-IS-LOOK,FIRST-VISIT,PIC
|
|
ZERO? LIT \?CCL3
|
|
PRINT TOO-DARK
|
|
ICALL1 GRUE-PIT-WARNING
|
|
RFALSE
|
|
?CCL3: FSET? HERE,TOUCHBIT \?CCL4
|
|
FSET? HERE,REDESCBIT \?CND1
|
|
?CCL4: SET 'FIRST-VISIT,TRUE-VALUE
|
|
?CND1: HLIGHT H-BOLD
|
|
ICALL1 SAY-HERE
|
|
HLIGHT H-NORMAL
|
|
CRLF
|
|
ZERO? VERB-IS-LOOK \?CCL8
|
|
EQUAL? VERBOSITY,2 /?CCL8
|
|
ZERO? FIRST-VISIT /?CND7
|
|
EQUAL? VERBOSITY,1 \?CND7
|
|
?CCL8: GETP HERE,P?ICON >PIC
|
|
ZERO? PIC /?CCL16
|
|
ICALL2 MARGINAL-PIC,PIC
|
|
JUMP ?CND14
|
|
?CCL16: PRINTI " "
|
|
?CND14: GETP HERE,P?ACTION
|
|
CALL STACK,M-LOOK
|
|
ZERO? STACK \?CND17
|
|
GETP HERE,P?LDESC
|
|
PRINT STACK
|
|
?CND17: CRLF
|
|
?CND7: FCLEAR HERE,REDESCBIT
|
|
FSET HERE,TOUCHBIT
|
|
EQUAL? HERE,CONSTRUCTION,PLAIN,FR-OFFICES /?CCL20
|
|
EQUAL? HERE,OFFICES-NORTH,OFFICES-SOUTH,OFFICES-EAST /?CCL20
|
|
EQUAL? HERE,OFFICES-WEST \TRUE
|
|
?CCL20: FSET HERE,REDESCBIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT D-OBJECTS,O,STR,1ST?,AV
|
|
SET '1ST?,TRUE-VALUE
|
|
LOC PROTAGONIST >AV
|
|
FIRST? HERE >O /?BOGUS1
|
|
?BOGUS1: ZERO? O /FALSE
|
|
?PRG4: ZERO? O /?REP5
|
|
CALL2 DESCRIBABLE?,O
|
|
ZERO? STACK /?CND6
|
|
FSET? O,TOUCHBIT /?CND6
|
|
GETP O,P?FDESC >STR
|
|
ZERO? STR /?CND6
|
|
PRINTI " "
|
|
PRINT STR
|
|
FSET? O,CONTBIT \?CND13
|
|
ADD D-ALL?,D-PARA?
|
|
ICALL D-CONTENTS,O,TRUE-VALUE,STACK
|
|
?CND13: CRLF
|
|
?CND6: NEXT? O >O /?PRG4
|
|
JUMP ?PRG4
|
|
?REP5: FIRST? HERE >O /?BOGUS16
|
|
?BOGUS16: SET '1ST?,TRUE-VALUE
|
|
?PRG17: ZERO? O /?REP18
|
|
CALL2 DESCRIBABLE?,O
|
|
ZERO? STACK /?CND19
|
|
GETP O,P?FDESC
|
|
ZERO? STACK /?CCL23
|
|
FSET? O,TOUCHBIT \?CND19
|
|
?CCL23: GETP O,P?DESCFCN >STR
|
|
ZERO? STR /?CCL29
|
|
CALL STR,M-OBJDESC >STR
|
|
ZERO? STR /?CCL29
|
|
FSET? O,CONTBIT \?CND32
|
|
EQUAL? STR,M-FATAL /?CND32
|
|
ADD D-ALL?,D-PARA?
|
|
ICALL D-CONTENTS,O,TRUE-VALUE,STACK
|
|
?CND32: CRLF
|
|
JUMP ?CND19
|
|
?CCL29: GETP O,P?LDESC >STR
|
|
ZERO? STR /?CND19
|
|
PRINTI " "
|
|
PRINT STR
|
|
FSET? O,CONTBIT \?CND37
|
|
ADD D-ALL?,D-PARA?
|
|
ICALL D-CONTENTS,O,TRUE-VALUE,STACK
|
|
?CND37: CRLF
|
|
?CND19: NEXT? O >O /?PRG17
|
|
JUMP ?PRG17
|
|
?REP18: ICALL D-CONTENTS,HERE,FALSE-VALUE,0
|
|
ZERO? AV /FALSE
|
|
EQUAL? HERE,AV /FALSE
|
|
CALL D-CONTENTS,AV,FALSE-VALUE,D-ALL?
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ORDER-GRAVEL,OBJ
|
|
IN? EVEN-MORE-GRAVEL,OBJ \?CND1
|
|
MOVE EVEN-MORE-GRAVEL,OBJ
|
|
?CND1: IN? MORE-GRAVEL,OBJ \?CND3
|
|
MOVE MORE-GRAVEL,OBJ
|
|
?CND3: IN? GRAVEL,OBJ \FALSE
|
|
MOVE GRAVEL,OBJ
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ORDER-FLIES,OBJ
|
|
IN? LARGEST-FLY,OBJ \?CND1
|
|
MOVE LARGEST-FLY,OBJ
|
|
?CND1: IN? EVEN-LARGER-FLY,OBJ \?CND3
|
|
MOVE EVEN-LARGER-FLY,OBJ
|
|
?CND3: IN? LARGER-FLY,OBJ \?CND5
|
|
MOVE LARGER-FLY,OBJ
|
|
?CND5: IN? LARGE-FLY,OBJ \FALSE
|
|
MOVE LARGE-FLY,OBJ
|
|
RTRUE
|
|
|
|
|
|
.FUNCT D-CONTENTS,OBJ,LEVEL,ALL?,F,N,1ST?,IT?,DB,START?,TWO?,PARA?
|
|
ASSIGNED? 'LEVEL /?CND1
|
|
SET 'LEVEL,-1
|
|
?CND1: ASSIGNED? 'ALL? /?CND3
|
|
SET 'ALL?,D-ALL?
|
|
?CND3: SET '1ST?,TRUE-VALUE
|
|
ICALL2 ORDER-FLIES,OBJ
|
|
ICALL2 ORDER-GRAVEL,OBJ
|
|
EQUAL? LEVEL,2 \?CCL7
|
|
SET 'LEVEL,TRUE-VALUE
|
|
SET 'PARA?,TRUE-VALUE
|
|
SET 'START?,TRUE-VALUE
|
|
JUMP ?CND5
|
|
?CCL7: BTST ALL?,D-PARA? \?CND5
|
|
SET 'PARA?,TRUE-VALUE
|
|
?CND5: FIRST? OBJ >N /?BOGUS9
|
|
?BOGUS9: ZERO? START? \?PRG24
|
|
IN? OBJ,ROOMS /?PRG24
|
|
FSET? OBJ,ACTORBIT /?PRG24
|
|
EQUAL? OBJ,PROTAGONIST /?PRG24
|
|
FSET? OBJ,CONTBIT \FALSE
|
|
FSET? OBJ,OPENBIT /?PRD20
|
|
FSET? OBJ,TRANSBIT \FALSE
|
|
?PRD20: FSET? OBJ,SEARCHBIT \FALSE
|
|
ZERO? N /FALSE
|
|
?PRG24: ZERO? N /?CCL27
|
|
CALL2 DESCRIBABLE?,N
|
|
ZERO? STACK /?CND26
|
|
BTST ALL?,D-ALL? /?CCL27
|
|
CALL2 SIMPLE-DESC?,N
|
|
ZERO? STACK /?CND26
|
|
?CCL27: ZERO? F /?CND34
|
|
ZERO? 1ST? /?CCL38
|
|
SET '1ST?,FALSE-VALUE
|
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CCL41
|
|
ZERO? START? \?CND36
|
|
ZERO? PARA? \?CCL46
|
|
EQUAL? OBJ,PROTAGONIST /?CND47
|
|
PRINTI " "
|
|
?CND47: SET 'PARA?,TRUE-VALUE
|
|
JUMP ?CND44
|
|
?CCL46: EQUAL? LEVEL,TRUE-VALUE \?CND44
|
|
PRINTC 32
|
|
?CND44: EQUAL? OBJ,HERE \?CCL52
|
|
PRINT YOU-SEE
|
|
JUMP ?CND36
|
|
?CCL52: EQUAL? OBJ,PROTAGONIST \?CCL54
|
|
EQUAL? D-BIT,WORNBIT \?CCL57
|
|
PRINTI " You are wearing"
|
|
JUMP ?CND36
|
|
?CCL57: PRINTI "You are carrying"
|
|
JUMP ?CND36
|
|
?CCL54: EQUAL? OBJ,YACHT \?CCL59
|
|
PRINTI "Sitting on the deck of the royal yacht"
|
|
CALL CCOUNT,OBJ,TRUE-VALUE
|
|
EQUAL? STACK,1 \?CCL62
|
|
FIRST? OBJ /?BOGUS65
|
|
?BOGUS65: FSET? STACK,PLURALBIT /?CCL62
|
|
PRINTI " is"
|
|
JUMP ?CND36
|
|
?CCL62: PRINTI " are"
|
|
JUMP ?CND36
|
|
?CCL59: FSET? OBJ,SURFACEBIT \?CCL67
|
|
PRINTI "Sitting on"
|
|
ICALL2 TPRINT,OBJ
|
|
CALL CCOUNT,OBJ,TRUE-VALUE
|
|
EQUAL? STACK,1 \?CCL70
|
|
FIRST? OBJ /?BOGUS73
|
|
?BOGUS73: FSET? STACK,PLURALBIT /?CCL70
|
|
PRINTI " is"
|
|
JUMP ?CND36
|
|
?CCL70: PRINTI " are"
|
|
JUMP ?CND36
|
|
?CCL67: PRINT IT-SEEMS-THAT
|
|
ICALL2 TPRINT,OBJ
|
|
FSET? OBJ,ACTORBIT \?CCL76
|
|
PRINTI " has"
|
|
JUMP ?CND36
|
|
?CCL76: PRINTI " contains"
|
|
JUMP ?CND36
|
|
?CCL41: EQUAL? LEVEL,-1 /?CND36
|
|
PRINT LEVEL
|
|
JUMP ?CND36
|
|
?CCL38: ZERO? N /?CCL79
|
|
PRINTC 44
|
|
JUMP ?CND36
|
|
?CCL79: PRINTI " and"
|
|
?CND36: ICALL2 APRINT,F
|
|
FSET? F,ONBIT \?CCL82
|
|
PRINTI " (providing light)"
|
|
JUMP ?CND80
|
|
?CCL82: EQUAL? F,LARGE-VIAL \?CCL84
|
|
GRTR? LARGE-VIAL-GLOOPS,0 \?CCL84
|
|
ICALL HOLDING-GLOOPS,LARGE-VIAL-GLOOPS,LARGE-VIAL-IMPRECISE
|
|
JUMP ?CND80
|
|
?CCL84: EQUAL? F,SMALL-VIAL \?CND80
|
|
GRTR? SMALL-VIAL-GLOOPS,0 \?CND80
|
|
ICALL HOLDING-GLOOPS,SMALL-VIAL-GLOOPS,SMALL-VIAL-IMPRECISE
|
|
?CND80: ZERO? IT? \?CCL92
|
|
ZERO? TWO? \?CCL92
|
|
SET 'IT?,F
|
|
JUMP ?CND34
|
|
?CCL92: SET 'TWO?,TRUE-VALUE
|
|
SET 'IT?,FALSE-VALUE
|
|
?CND34: SET 'F,N
|
|
?CND26: ZERO? N /?CND95
|
|
NEXT? N >N /?CND95
|
|
?CND95: ZERO? F \?PRG24
|
|
ZERO? N \?PRG24
|
|
ZERO? IT? /?CND102
|
|
ZERO? TWO? \?CND102
|
|
ICALL2 THIS-IS-IT,IT?
|
|
?CND102: ZERO? 1ST? /?CND106
|
|
ZERO? START? /?CND106
|
|
PRINTI " nothing"
|
|
RFALSE
|
|
?CND106: ZERO? 1ST? \?REP25
|
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP25
|
|
EQUAL? OBJ,HERE \?CND114
|
|
PRINTI " here"
|
|
?CND114: PRINTC 46
|
|
?REP25: EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND116
|
|
FIRST? OBJ >F /?PRG119
|
|
?PRG119: ZERO? F /?CND116
|
|
FSET? F,CONTBIT \?CND121
|
|
CALL DESCRIBABLE?,F,TRUE-VALUE
|
|
ZERO? STACK /?CND121
|
|
BTST ALL?,D-ALL? /?CCL124
|
|
CALL2 SIMPLE-DESC?,F
|
|
ZERO? STACK /?CND121
|
|
?CCL124: SET 'DB,D-BIT
|
|
SET 'D-BIT,FALSE-VALUE
|
|
ZERO? PARA? /?CCL134
|
|
PUSH 3
|
|
JUMP ?CND132
|
|
?CCL134: PUSH D-ALL?
|
|
?CND132: CALL D-CONTENTS,F,TRUE-VALUE,STACK
|
|
ZERO? STACK /?CND130
|
|
SET '1ST?,FALSE-VALUE
|
|
SET 'PARA?,TRUE-VALUE
|
|
?CND130: SET 'D-BIT,DB
|
|
?CND121: NEXT? F >F /?PRG119
|
|
JUMP ?PRG119
|
|
?CND116: ZERO? 1ST? \?CND136
|
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND136
|
|
LOC WINNER
|
|
EQUAL? OBJ,HERE,STACK \?CND136
|
|
CRLF
|
|
?CND136: ZERO? 1ST? /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT DESCRIBABLE?,OBJ,CONT?
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
EQUAL? OBJ,WINNER /FALSE
|
|
LOC WINNER
|
|
EQUAL? OBJ,STACK \?CCL7
|
|
LOC WINNER
|
|
EQUAL? HERE,STACK \FALSE
|
|
?CCL7: ZERO? CONT? \?CCL11
|
|
FSET? OBJ,NDESCBIT /FALSE
|
|
?CCL11: ZERO? D-BIT /TRUE
|
|
GRTR? D-BIT,0 \?CCL18
|
|
FSET? OBJ,D-BIT /TRUE
|
|
RFALSE
|
|
?CCL18: SUB 0,D-BIT
|
|
FSET? OBJ,STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SIMPLE-DESC?,OBJ,STR
|
|
GETP OBJ,P?FDESC
|
|
ZERO? STACK /?CCL3
|
|
FSET? OBJ,TOUCHBIT \FALSE
|
|
?CCL3: GETP OBJ,P?DESCFCN >STR
|
|
ZERO? STR /?CCL7
|
|
CALL STR,M-OBJDESC?
|
|
ZERO? STACK \FALSE
|
|
?CCL7: GETP OBJ,P?LDESC
|
|
ZERO? STACK /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT D-VEHICLE
|
|
PRINTI "Other than yourself, you can see"
|
|
CALL1 D-NOTHING
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,INBIT \?CCL5
|
|
PRINTI " in"
|
|
JUMP ?CND3
|
|
?CCL5: PRINTI " on"
|
|
?CND3: ICALL2 TRPRINT,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT D-NOTHING
|
|
CALL D-CONTENTS,PRSO,2
|
|
ZERO? STACK /FALSE
|
|
IN? PROTAGONIST,PRSO /TRUE
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HOLDING-GLOOPS,NUM,IMPRECISE
|
|
PRINTI " (holding "
|
|
ZERO? IMPRECISE /?CND1
|
|
PRINTI "around "
|
|
?CND1: PRINTN NUM
|
|
PRINTI " gloop"
|
|
EQUAL? NUM,1 /?CND3
|
|
PRINTC 115
|
|
?CND3: PRINTI " of water)"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GOTO,NEW-LOC,OHERE,OLIT,BORDER,X
|
|
SET 'JUMP-X,99
|
|
SET 'JUMP-Y,99
|
|
SET 'FINGER-ON-STRAW,FALSE-VALUE
|
|
SET 'ELIXIR-TRAPPED,FALSE-VALUE
|
|
IN? JESTER,HERE \?CND1
|
|
ICALL1 REMOVE-J
|
|
?CND1: CALL2 LIT?,HERE >OLIT
|
|
SET 'OHERE,HERE
|
|
IN? PROTAGONIST,CAMEL \?CCL5
|
|
FSET? CAMEL,ANIMATEDBIT \?CCL5
|
|
FCLEAR CAMEL,TOUCHBIT
|
|
MOVE CAMEL,NEW-LOC
|
|
JUMP ?CND3
|
|
?CCL5: MOVE PROTAGONIST,NEW-LOC
|
|
?CND3: IN? NEW-LOC,ROOMS \?CCL10
|
|
SET 'HERE,NEW-LOC
|
|
JUMP ?CND8
|
|
?CCL10: LOC NEW-LOC >HERE
|
|
?CND8: SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
CALL2 LIT?,HERE >LIT
|
|
CALL1 SET-BORDER >BORDER
|
|
EQUAL? BORDER,CURRENT-BORDER /?CND11
|
|
SET 'CURRENT-BORDER,BORDER
|
|
ZERO? BORDER-ON /?CND11
|
|
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC /?CND11
|
|
ICALL1 CLEAR-BORDER
|
|
ICALL INIT-SL-WITH-SPLIT,TEXT-WINDOW-PIC-LOC,TRUE-VALUE
|
|
?CND11: ZERO? LIT \?CCL19
|
|
ICALL1 RETURN-FROM-MAP
|
|
ZERO? OLIT /?CCL22
|
|
PRINTI "You have moved into a dark place."
|
|
ICALL1 GRUE-PIT-WARNING
|
|
JUMP ?CND17
|
|
?CCL22: LOC PROTAGONIST
|
|
EQUAL? STACK,DB,HOLD,PIT-BOMB-LOC /?CCL24
|
|
ZERO? TIME-STOPPED \?CCL24
|
|
RANDOM 100
|
|
LESS? 75,STACK /?CCL24
|
|
ICALL1 DARK-DEATH
|
|
JUMP ?CND17
|
|
?CCL24: PRINT TOO-DARK
|
|
ICALL1 GRUE-PIT-WARNING
|
|
JUMP ?CND17
|
|
?CCL19: GETP HERE,P?ACTION
|
|
ICALL STACK,M-ENTER
|
|
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?CND28
|
|
FSET? HERE,TOUCHBIT /?CND28
|
|
ICALL1 RETURN-FROM-MAP
|
|
?CND28: EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC /?CND17
|
|
CALL1 D-ROOM
|
|
ZERO? STACK /?CND17
|
|
ZERO? VERBOSITY /?CND17
|
|
ICALL1 D-OBJECTS
|
|
?CND17: CALL GLOBAL-IN?,WATER,HERE
|
|
ZERO? STACK /?CND37
|
|
CALL1 FIND-WATER >X
|
|
ZERO? X /?CND37
|
|
PUTP WATER,P?OWNER,X
|
|
?CND37: ICALL2 SCORE-OBJ,HERE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT JIGS-UP,DESC
|
|
PRINT DESC
|
|
CRLF
|
|
CRLF
|
|
PRINTI " **** You have died ****"
|
|
CRLF
|
|
CALL1 FINISH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ACCESSIBLE?,OBJ,L
|
|
ZERO? OBJ /FALSE
|
|
LOC OBJ >L
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
ZERO? L /FALSE
|
|
EQUAL? OBJ,PSEUDO-OBJECT \?CCL9
|
|
EQUAL? LAST-PSEUDO-LOC,HERE /TRUE
|
|
RFALSE
|
|
?CCL9: EQUAL? L,GLOBAL-OBJECTS /TRUE
|
|
EQUAL? L,LOCAL-GLOBALS \?CCL16
|
|
CALL GLOBAL-IN?,OBJ,HERE
|
|
ZERO? STACK \TRUE
|
|
?CCL16: CALL2 META-LOC,OBJ
|
|
EQUAL? STACK,HERE \FALSE
|
|
EQUAL? L,WINNER,HERE,PROTAGONIST /TRUE
|
|
FSET? L,OPENBIT /?PRD26
|
|
IN? PROTAGONIST,L \FALSE
|
|
?PRD26: CALL2 ACCESSIBLE?,L
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT VISIBLE?,OBJ,L
|
|
ZERO? OBJ /FALSE
|
|
LOC OBJ >L
|
|
CALL2 ACCESSIBLE?,OBJ
|
|
ZERO? STACK \TRUE
|
|
CALL2 SEE-INSIDE?,L
|
|
ZERO? STACK /FALSE
|
|
CALL2 VISIBLE?,L
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT UNTOUCHABLE?,OBJ
|
|
ZERO? OBJ /FALSE
|
|
EQUAL? OBJ,PARCHMENT \?CCL5
|
|
ZERO? UNDER-TABLE \TRUE
|
|
?CCL5: EQUAL? OBJ,LANTERN \?CCL9
|
|
FSET? LANTERN,TRYTAKEBIT /TRUE
|
|
?CCL9: CALL ULTIMATELY-IN?,OBJ,SNAKE-PIT
|
|
ZERO? STACK \TRUE
|
|
CALL ULTIMATELY-IN?,OBJ,YACHT
|
|
ZERO? STACK /?CCL15
|
|
IN? PROTAGONIST,HERE /TRUE
|
|
?CCL15: IN? PROTAGONIST,HERE /FALSE
|
|
EQUAL? OBJ,YACHT,LAKE-FLATHEAD,WEST-DOCK /?PRD23
|
|
EQUAL? OBJ,EAST-DOCK,NORTH-DOCK,SOUTH-DOCK \?CCL21
|
|
?PRD23: LOC PROTAGONIST
|
|
EQUAL? STACK,YACHT,WEST-DOCK,EAST-DOCK /FALSE
|
|
LOC PROTAGONIST
|
|
EQUAL? STACK,NORTH-DOCK,SOUTH-DOCK /FALSE
|
|
?CCL21: EQUAL? OBJ,WALDO \?CCL29
|
|
ZERO? HAND-IN-WALDO /?CCL29
|
|
EQUAL? PRSA,V?CLOSE,V?OPEN /FALSE
|
|
?CCL29: EQUAL? OBJ,MEGABOZ-TRAP-DOOR \?CCL34
|
|
IN? PROTAGONIST,LADDER /FALSE
|
|
?CCL34: LOC PROTAGONIST
|
|
CALL ULTIMATELY-IN?,OBJ,STACK
|
|
ZERO? STACK \FALSE
|
|
LOC PROTAGONIST
|
|
EQUAL? OBJ,STACK /FALSE
|
|
IN? OBJ,GLOBAL-OBJECTS /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT OTHER-SIDE,DOBJ,P,TEE
|
|
?PRG1: NEXTP HERE,P >P
|
|
LESS? P,LOW-DIRECTION /FALSE
|
|
GETPT HERE,P >TEE
|
|
PTSIZE TEE
|
|
EQUAL? STACK,DEXIT \?PRG1
|
|
GET TEE,DEXITOBJ
|
|
EQUAL? STACK,DOBJ \?PRG1
|
|
RETURN P
|
|
|
|
|
|
.FUNCT HELD?,X,Y
|
|
CALL ULTIMATELY-IN?,X,Y
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ULTIMATELY-IN?,OBJ,CONT
|
|
ZERO? CONT \?CND1
|
|
SET 'CONT,PROTAGONIST
|
|
?CND1: ZERO? OBJ /FALSE
|
|
EQUAL? PRSA,V?EMPTY \?CCL7
|
|
EQUAL? OBJ,WATER \?CCL7
|
|
CALL NOUN-USED?,WATER,W?GLOOP,W?GLOOPS
|
|
ZERO? STACK /?CCL7
|
|
CALL2 ULTIMATELY-IN?,LARGE-VIAL
|
|
ZERO? STACK /?PRD13
|
|
GRTR? LARGE-VIAL-GLOOPS,0 /TRUE
|
|
?PRD13: CALL2 ULTIMATELY-IN?,SMALL-VIAL
|
|
ZERO? STACK /?CCL7
|
|
GRTR? SMALL-VIAL-GLOOPS,0 /TRUE
|
|
?CCL7: IN? OBJ,WALDO \?CCL19
|
|
ZERO? HAND-IN-WALDO /?CCL19
|
|
EQUAL? PRSA,V?DROP /TRUE
|
|
?CCL19: ZERO? HAND-IN-WALDO /?CCL24
|
|
EQUAL? OBJ,WALDO \?CCL24
|
|
EQUAL? CONT,PROTAGONIST /TRUE
|
|
?CCL24: EQUAL? OBJ,WATER \?CCL29
|
|
EQUAL? PRSA,V?POUR \?CCL29
|
|
CALL2 ULTIMATELY-IN?,LARGE-VIAL-WATER
|
|
ZERO? STACK \TRUE
|
|
CALL2 ULTIMATELY-IN?,SMALL-VIAL-WATER
|
|
ZERO? STACK \TRUE
|
|
?CCL29: IN? OBJ,CONT /TRUE
|
|
IN? OBJ,ROOMS /FALSE
|
|
LOC OBJ
|
|
CALL ULTIMATELY-IN?,STACK,CONT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SEE-INSIDE?,OBJ
|
|
ZERO? OBJ /FALSE
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
FSET? OBJ,TRANSBIT /TRUE
|
|
FSET? OBJ,OPENBIT /TRUE
|
|
FSET? GOGGLES,WORNBIT \FALSE
|
|
EQUAL? WINNER,PROTAGONIST /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT GLOBAL-IN?,OBJ1,OBJ2,TEE
|
|
GETPT OBJ2,P?GLOBAL >TEE
|
|
ZERO? TEE /FALSE
|
|
PTSIZE TEE
|
|
DIV STACK,2
|
|
INTBL? OBJ1,TEE,STACK /?CND1
|
|
?CND1: RSTACK
|
|
|
|
|
|
.FUNCT FIND-IN,WHERE,FLAG-IN-QUESTION,STRING,OBJ,RECURSIVE-OBJ
|
|
FIRST? WHERE >OBJ /?BOGUS1
|
|
?BOGUS1: ZERO? OBJ /FALSE
|
|
?PRG4: FSET? OBJ,FLAG-IN-QUESTION \?CCL8
|
|
FSET? OBJ,INVISIBLE /?CCL8
|
|
ZERO? STRING \?CCL12
|
|
RETURN OBJ
|
|
?CCL12: PRINTC 91
|
|
PRINT STRING
|
|
ICALL2 TPRINT,OBJ
|
|
PRINTC 93
|
|
CRLF
|
|
RETURN OBJ
|
|
?CCL8: CALL FIND-IN,OBJ,FLAG-IN-QUESTION,STRING >RECURSIVE-OBJ
|
|
ZERO? RECURSIVE-OBJ /?CCL14
|
|
RETURN RECURSIVE-OBJ
|
|
?CCL14: NEXT? OBJ >OBJ /?PRG4
|
|
RFALSE
|
|
|
|
|
|
.FUNCT WITHIN?,TL-X,TL-Y,BR-X,BR-Y
|
|
LESS? MOUSE-LOC-X,TL-X /FALSE
|
|
GRTR? MOUSE-LOC-X,BR-X /FALSE
|
|
LESS? MOUSE-LOC-Y,TL-Y /FALSE
|
|
GRTR? MOUSE-LOC-Y,BR-Y /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NOW-DARK?
|
|
ZERO? LIT /TRUE
|
|
CALL2 LIT?,HERE
|
|
ZERO? STACK \TRUE
|
|
SET 'LIT,FALSE-VALUE
|
|
SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
PRINTI " It is now too dark to see."
|
|
IN? JESTER,HERE \?CND5
|
|
ICALL1 REMOVE-J
|
|
PRINTR " A sound of jingling bells becomes increasingly distant before fading entirely."
|
|
?CND5: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NOW-LIT?
|
|
ZERO? LIT \FALSE
|
|
CALL2 LIT?,HERE
|
|
ZERO? STACK /FALSE
|
|
SET 'LIT,TRUE-VALUE
|
|
SET 'COMPASS-CHANGED,TRUE-VALUE
|
|
CRLF
|
|
CALL1 V-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT LOC-CLOSED,OBJ,VB,L
|
|
ASSIGNED? 'VB /?CND1
|
|
SET 'VB,TRUE-VALUE
|
|
?CND1: LOC OBJ >L
|
|
FSET? L,CONTBIT \FALSE
|
|
FSET? L,OPENBIT /FALSE
|
|
FSET? OBJ,TAKEBIT \FALSE
|
|
IN? PROTAGONIST,L /FALSE
|
|
ZERO? VB /TRUE
|
|
ICALL DO-FIRST,STR?140,L
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DO-WALK,DIR
|
|
SET 'P-WALK-DIR,DIR
|
|
ICALL PERFORM,V?WALK,DIR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT STOP
|
|
SET 'P-CONT,-1
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT ROB,WHO,WHERE,EXCLUDE-WORN-ITEM,TAKER,TOOK-PIGEON,N,X
|
|
FIRST? WHO >X /?PRG2
|
|
?PRG2: ZERO? X /?REP3
|
|
NEXT? X >N /?BOGUS6
|
|
?BOGUS6: ZERO? EXCLUDE-WORN-ITEM /?CCL9
|
|
FSET? X,WORNBIT /?CND7
|
|
?CCL9: ZERO? WHERE /?CCL13
|
|
FCLEAR X,WORNBIT
|
|
ZERO? TAKER \?CTR15
|
|
IN? WHERE,ROOMS \?CCL16
|
|
CALL FIND-IN,WHERE,BLACKBIT >TAKER
|
|
ZERO? TAKER \?CTR15
|
|
CALL FIND-IN,WHERE,WHITEBIT >TAKER
|
|
ZERO? TAKER /?CCL16
|
|
?CTR15: EQUAL? X,PIGEON \?CND23
|
|
SET 'TOOK-PIGEON,TRUE-VALUE
|
|
?CND23: MOVE X,TAKER
|
|
JUMP ?CND7
|
|
?CCL16: CALL SPECIAL-DROP,X,TRUE-VALUE
|
|
ZERO? STACK \?CND7
|
|
MOVE X,WHERE
|
|
JUMP ?CND7
|
|
?CCL13: FCLEAR X,WORNBIT
|
|
REMOVE X
|
|
?CND7: SET 'X,N
|
|
JUMP ?PRG2
|
|
?REP3: ZERO? TAKER /TRUE
|
|
CALL2 VISIBLE?,TAKER
|
|
ZERO? STACK /?CCL30
|
|
PRINTI " The "
|
|
ICALL2 DPRINT,TAKER
|
|
PRINTI " is only too happy to pick it all up"
|
|
ZERO? TOOK-PIGEON /?CCL33
|
|
CALL2 META-LOC,PERCH
|
|
EQUAL? HERE,STACK /?CCL33
|
|
PRINTI ", including the pigeon."
|
|
ICALL PIECE-TAKES-PIGEON,TAKER,FALSE-VALUE
|
|
RTRUE
|
|
?CCL33: PRINTC 46
|
|
RTRUE
|
|
?CCL30: ZERO? TOOK-PIGEON /TRUE
|
|
ICALL2 MOVE-TO-PERCH,TAKER
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HACK-HACK,STR
|
|
PRINT STR
|
|
ICALL1 TPRINT-PRSO
|
|
CALL1 HO-HUM
|
|
RSTACK
|
|
|
|
|
|
.FUNCT HO-HUM
|
|
CALL2 PICK-ONE,HO-HUM-LIST
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT YUKS
|
|
CALL2 PICK-ONE,YUK-LIST
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IMPOSSIBLES
|
|
CALL2 PICK-ONE,IMPOSSIBLE-LIST
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WASTES
|
|
CALL2 PICK-ONE,WASTE-LIST
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
.ENDSEG
|
|
|
|
.ENDI
|