├── syntax.zap ├── s5.amiga ├── s5.zip ├── COMPILED └── s5.z4 ├── s5.xzap ├── s5.zap ├── s5.errors ├── s5.zil ├── README.md ├── s5freq.xzap ├── misc.zap ├── syntax.zil ├── misc.zil ├── parser.zap ├── interrupts.zap └── apartment.zap /syntax.zap: -------------------------------------------------------------------------------- 1 | 2 | .ENDI 3 | -------------------------------------------------------------------------------- /s5.amiga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/historicalsource/amfv/HEAD/s5.amiga -------------------------------------------------------------------------------- /s5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/historicalsource/amfv/HEAD/s5.zip -------------------------------------------------------------------------------- /COMPILED/s5.z4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/historicalsource/amfv/HEAD/COMPILED/s5.z4 -------------------------------------------------------------------------------- /s5.xzap: -------------------------------------------------------------------------------- 1 | 2 | .NEW ; NEW ZIP INTERPRETER 3 | 4 | .INSERT "S5FREQ" 5 | 6 | .INSERT "S5DAT" ; DATA IS IN THIS FILE 7 | 8 | .INSERT "MISC" 9 | 10 | .INSERT "PARSER" 11 | 12 | .INSERT "INTERRUPTS" 13 | 14 | .INSERT "VERBS" 15 | 16 | .INSERT "GLOBALS" 17 | 18 | .INSERT "SYNTAX" 19 | 20 | .INSERT "ROCKVIL" 21 | 22 | .INSERT "PRISM" 23 | 24 | .INSERT "APARTMENT" 25 | 26 | .INSERT "S5STR" 27 | 28 | .END 29 | -------------------------------------------------------------------------------- /s5.zap: -------------------------------------------------------------------------------- 1 | 2 | .NEW ; NEW ZIP INTERPRETER 3 | 4 | .INSERT "S5DAT" ; DATA IS IN THIS FILE 5 | 6 | .INSERT "MISC" 7 | 8 | 9 | .INSERT "PARSER" 10 | 11 | 12 | .INSERT "INTERRUPTS" 13 | 14 | 15 | .INSERT "ROCKVIL" 16 | 17 | 18 | .INSERT "SYNTAX" 19 | 20 | 21 | .INSERT "VERBS" 22 | 23 | 24 | .INSERT "GLOBALS" 25 | 26 | 27 | .INSERT "PRISM" 28 | 29 | 30 | .INSERT "APARTMENT" 31 | 32 | 33 | .INSERT "S5STR" 34 | 35 | .END 36 | -------------------------------------------------------------------------------- /s5.errors: -------------------------------------------------------------------------------- 1 | Assembling S5.XZAP.1 on Wednesday, August 14, 1985 13:13:39 2 | Release(last was 76): 77 3 | 4 | 64 Inserting S5FREQ.XZAP.2 (652 bytes) 5 | 716 Inserting S5DAT.ZAP.1 (51251 bytes) 6 | 51967 Inserting MISC.ZAP.1 (3073 bytes) 7 | 55040 Inserting PARSER.ZAP.1 (7127 bytes) 8 | 62167 Inserting INTERRUPTS.ZAP.1 (13331 bytes) 9 | 75498 Inserting VERBS.ZAP.1 (15627 bytes) 10 | 91125 Inserting GLOBALS.ZAP.1 (15318 bytes) 11 | 106443 Inserting SYNTAX.ZAP.1 (0 bytes) 12 | 106443 Inserting ROCKVIL.ZAP.1 (69488 bytes) 13 | 175931 Inserting PRISM.ZAP.1 (45314 bytes) 14 | 221245 Inserting APARTMENT.ZAP.1 (12524 bytes) 15 | 233769 Inserting S5STR.ZAP.1 (28245 bytes) 16 | 609 objects. 17 | 229 globals. 18 | 1813 word vocabulary. 19 | 20 | 262014 bytes (256K). 21 | 51955 bytes of preload. 22 | -------------------------------------------------------------------------------- /s5.zil: -------------------------------------------------------------------------------- 1 | "EXTENDED S5 for 2 | A MIND FOREVER VOYAGING 3 | (c) Copyright 1985 Infocom, Inc. All Rights Reserved." 4 | 5 | 9 | 10 | ON!-INITIAL 11 | OFF!-INITIAL 12 | ENABLE!-INITIAL 13 | DISABLE!-INITIAL 14 | 15 | 16 | )> 17 | 18 | 19 | 20 | 21 | 22 | 23 | >> 24 | 25 | 26 | >> 27 | 28 | 29 | )> 30 | 31 | 32 | >)> 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # A Mind Forever Voyaging Source Code Collection 2 | 3 | A Mind Forever Voyaging is a 1985 interactive fiction game written by Steve Meretzky and published by Infocom. 4 | 5 | Further information on A Mind Forever Voyaging: 6 | 7 | * [Wikipedia](https://en.wikipedia.org/wiki/A_Mind_Forever_Voyaging) 8 | * [The Digital Antiquarian](https://www.filfre.net/2014/04/a-mind-forever-voyaging-part-1-steve-meretzkys-interiors/) 9 | * [The Interactive Fiction Database](https://ifdb.tads.org/viewgame?id=4h62dvooeg9ajtfa) 10 | * [The Infocom Gallery](http://infocom.elsewhere.org/gallery/amfv/amfv.html) 11 | * [IFWiki](http://www.ifwiki.org/index.php/A_Mind_Forever_Voyaging) 12 | * [The Infocom Cabinet: A Mind Forever Voyaging](https://archive.org/details/InfocomCabinetAMindForeverVoyaging) 13 | 14 | __What is this Repository?__ 15 | 16 | This repository is a directory of source code for the Infocom game "A Mind Forever Voyaging", including a variety of files both used and discarded in the production of the game. It is written in ZIL (Zork Implementation Language), a refactoring of MDL (Muddle), itself a dialect of LISP created by MIT students and staff. 17 | 18 | The source code was contributed anonymously and represents a snapshot of the Infocom development system at time of shutdown - there is no remaining way to compare it against any official version as of this writing, and so it should be considered canonical, but not necessarily the exact source code arrangement for production. 19 | 20 | __Basic Information on the Contents of This Repository__ 21 | 22 | It is mostly important to note that there is currently no known way to compile the source code in this repository into a final "Z-machine Interpreter Program" (ZIP) file. There are .ZIP files in some of the Infocom Source Code repositories but they were there as of final spin-down of the Infocom Drive and the means to create them is currently lost. 23 | 24 | Throughout its history, Infocom used a TOPS20 mainframe with a compiler (ZILCH) to create and edit language files - this repository is a mirror of the source code directory archive of Infocom but could represent years of difference from what was originally released. 25 | 26 | In general, Infocom games were created by taking previous Infocom source code, copying the directory, and making changes until the game worked the way the current Implementor needed. Structure, therefore, tended to follow from game to game and may or may not accurately reflect the actual function of the code. 27 | 28 | There are also multiple versions of the "Z-Machine" and code did change notably between the first years of Infocom and a decade later. Addition of graphics, sound and memory expansion are all slowly implemented over time. 29 | 30 | __What is the Purpose of this Repository__ 31 | 32 | This collection is meant for education, discussion, and historical work, allowing researchers and students to study how code was made for these interactive fiction games and how the system dealt with input and processing. It is not considered to be under an open license. 33 | 34 | Researchers are encouraged to share their discoveries about the information in this source code and the history of Infocom and its many innovative employees. 35 | 36 | __Some Trivia and Notes on this Repository__ 37 | 38 | * Originally titled "PRISM". 39 | * Meant to be Steve Meretzky's attempt to bring the medium of interactive fiction to a level of political discussion. 40 | * Did not have as many puzzles in the game when first created; puzzles were added later in development. 41 | 42 | -------------------------------------------------------------------------------- /s5freq.xzap: -------------------------------------------------------------------------------- 1 | .FSTR FSTR?1,"the " ;5154 2578 2 | .FSTR FSTR?2,", " ;2230 2231 3 | .FSTR FSTR?3,"and " ;1874 938 4 | .FSTR FSTR?4,"The " ;1785 596 5 | .FSTR FSTR?5,". " ;1226 1227 6 | .FSTR FSTR?6,"of " ;1128 1129 7 | .FSTR FSTR?7,"You " ;1017 340 8 | .FSTR FSTR?8,"you " ;906 454 9 | .FSTR FSTR?9,"to " ;905 906 10 | .FSTR FSTR?10,"that " ;870 291 11 | .FSTR FSTR?11,"with " ;726 243 12 | .FSTR FSTR?12,"your " ;696 233 13 | .FSTR FSTR?13,"is " ;692 693 14 | .FSTR FSTR?14,"from " ;612 205 15 | .FSTR FSTR?15,"for " ;602 302 16 | .FSTR FSTR?16,"There's " ;568 72 17 | .FSTR FSTR?17,"are " ;546 274 18 | .FSTR FSTR?18,"Perelman " ;520 66 19 | .FSTR FSTR?19,"in " ;469 470 20 | .FSTR FSTR?20,"This " ;468 118 21 | .FSTR FSTR?21,"entrance " ;462 67 22 | .FSTR FSTR?22,"can't " ;400 81 23 | .FSTR FSTR?23,"into " ;384 129 24 | .FSTR FSTR?24,"have " ;378 127 25 | .FSTR FSTR?25,"Jill " ;296 75 26 | .FSTR FSTR?26,"Church " ;288 49 27 | .FSTR FSTR?27,"southwest" ;280 41 28 | .FSTR FSTR?28,"this " ;279 94 29 | .FSTR FSTR?29,"Street " ;276 47 30 | .FSTR FSTR?30,"There " ;275 56 31 | .FSTR FSTR?31,"through " ;270 46 32 | .FSTR FSTR?32,"direction" ;259 38 33 | .FSTR FSTR?33,"It's " ;255 52 34 | .FSTR FSTR?34,"been " ;252 85 35 | .FSTR FSTR?35,"which " ;252 64 36 | .FSTR FSTR?36,"building " ;252 37 37 | .FSTR FSTR?37,"has " ;250 126 38 | .FSTR FSTR?38,"don't " ;250 51 39 | .FSTR FSTR?39,"on " ;245 246 40 | .FSTR FSTR?40,"around " ;240 49 41 | .FSTR FSTR?41,"northwest" ;238 35 42 | .FSTR FSTR?42,"out " ;228 115 43 | .FSTR FSTR?43,"already " ;228 39 44 | .FSTR FSTR?44,"Rockvil " ;224 33 45 | .FSTR FSTR?45,"about " ;220 56 46 | .FSTR FSTR?46,"street " ;220 45 47 | .FSTR FSTR?47,"A " ;219 220 48 | .FSTR FSTR?48,"some " ;219 74 49 | .FSTR FSTR?49,"can " ;212 107 50 | .FSTR FSTR?50,"southeast" ;210 31 51 | .FSTR FSTR?51,"but " ;204 103 52 | .FSTR FSTR?52,"northeast " ;200 26 53 | .FSTR FSTR?53,"Perelman" ;196 29 54 | .FSTR FSTR?54,"here" ;192 97 55 | .FSTR FSTR?55,"building" ;192 33 56 | .FSTR FSTR?56,"his " ;190 96 57 | .FSTR FSTR?57,"northeast" ;189 28 58 | .FSTR FSTR?58,"northwest " ;184 24 59 | .FSTR FSTR?59,"down " ;180 61 60 | .FSTR FSTR?60,"one " ;178 90 61 | .FSTR FSTR?61,"looks " ;176 45 62 | .FSTR FSTR?62,"southwest " ;176 23 63 | .FSTR FSTR?63,"apartment " ;176 23 64 | .FSTR FSTR?64,"begins " ;170 35 65 | .FSTR FSTR?65,"You're " ;168 25 66 | .FSTR FSTR?66,"be " ;162 163 67 | .FSTR FSTR?67,"you're " ;162 28 68 | .FSTR FSTR?68,"leads " ;160 41 69 | .FSTR FSTR?69,"would " ;156 40 70 | .FSTR FSTR?70,"toward " ;155 32 71 | .FSTR FSTR?71,"as " ;154 155 72 | .FSTR FSTR?72,"not " ;154 78 73 | .FSTR FSTR?73,"just " ;153 52 74 | .FSTR FSTR?74,"PRISM" ;152 39 75 | .FSTR FSTR?75,"southeast " ;152 20 76 | .FSTR FSTR?76,"I'm " ;148 38 77 | .FSTR FSTR?77,"will " ;147 50 78 | .FSTR FSTR?78,"more " ;147 50 79 | .FSTR FSTR?79,"at " ;146 147 80 | .FSTR FSTR?80,"was " ;146 74 81 | .FSTR FSTR?81,"all " ;146 74 82 | .FSTR FSTR?82,"He " ;146 74 83 | .FSTR FSTR?83,"only " ;144 49 84 | .FSTR FSTR?84,"current " ;144 25 85 | .FSTR FSTR?85,"by " ;143 144 86 | .FSTR FSTR?86,"an " ;142 143 87 | .FSTR FSTR?87,"PRISM " ;140 29 88 | .FSTR FSTR?88,"several " ;138 24 89 | .FSTR FSTR?89,"Mitchell " ;136 18 90 | .FSTR FSTR?90,"last " ;135 46 91 | .FSTR FSTR?91,"Halley " ;132 23 92 | .FSTR FSTR?92,"see " ;130 66 93 | .FSTR FSTR?93,"people " ;130 27 94 | .FSTR FSTR?94,"door " ;129 44 95 | .FSTR FSTR?95,"National " ;128 17 96 | .FSTR FSTR?96,"without " ;126 22 97 | 98 | 99 | ;word frequency table of 96 most common words 100 | 101 | WORDS:: .TABLE 102 | FSTR?1 103 | FSTR?2 104 | FSTR?3 105 | FSTR?4 106 | FSTR?5 107 | FSTR?6 108 | FSTR?7 109 | FSTR?8 110 | FSTR?9 111 | FSTR?10 112 | FSTR?11 113 | FSTR?12 114 | FSTR?13 115 | FSTR?14 116 | FSTR?15 117 | FSTR?16 118 | FSTR?17 119 | FSTR?18 120 | FSTR?19 121 | FSTR?20 122 | FSTR?21 123 | FSTR?22 124 | FSTR?23 125 | FSTR?24 126 | FSTR?25 127 | FSTR?26 128 | FSTR?27 129 | FSTR?28 130 | FSTR?29 131 | FSTR?30 132 | FSTR?31 133 | FSTR?32 134 | FSTR?33 135 | FSTR?34 136 | FSTR?35 137 | FSTR?36 138 | FSTR?37 139 | FSTR?38 140 | FSTR?39 141 | FSTR?40 142 | FSTR?41 143 | FSTR?42 144 | FSTR?43 145 | FSTR?44 146 | FSTR?45 147 | FSTR?46 148 | FSTR?47 149 | FSTR?48 150 | FSTR?49 151 | FSTR?50 152 | FSTR?51 153 | FSTR?52 154 | FSTR?53 155 | FSTR?54 156 | FSTR?55 157 | FSTR?56 158 | FSTR?57 159 | FSTR?58 160 | FSTR?59 161 | FSTR?60 162 | FSTR?61 163 | FSTR?62 164 | FSTR?63 165 | FSTR?64 166 | FSTR?65 167 | FSTR?66 168 | FSTR?67 169 | FSTR?68 170 | FSTR?69 171 | FSTR?70 172 | FSTR?71 173 | FSTR?72 174 | FSTR?73 175 | FSTR?74 176 | FSTR?75 177 | FSTR?76 178 | FSTR?77 179 | FSTR?78 180 | FSTR?79 181 | FSTR?80 182 | FSTR?81 183 | FSTR?82 184 | FSTR?83 185 | FSTR?84 186 | FSTR?85 187 | FSTR?86 188 | FSTR?87 189 | FSTR?88 190 | FSTR?89 191 | FSTR?90 192 | FSTR?91 193 | FSTR?92 194 | FSTR?93 195 | FSTR?94 196 | FSTR?95 197 | FSTR?96 198 | .ENDT 199 | 200 | .ENDI 201 | -------------------------------------------------------------------------------- /misc.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT INT-NO-INSERT,RTN,E,C,INT=0 4 | ADD C-TABLE,C-TABLELEN >E 5 | ADD C-TABLE,C-INTS >C 6 | ?PRG1: EQUAL? C,E /FALSE 7 | GET C,C-RTN 8 | EQUAL? STACK,RTN \?CND3 9 | RETURN C 10 | ?CND3: ADD C,C-INTLEN >C 11 | JUMP ?PRG1 12 | 13 | 14 | .FUNCT QUEUED?,RTN,C 15 | CALL2 INT-NO-INSERT,RTN >C 16 | ZERO? C /FALSE 17 | GET C,C-TICK 18 | ZERO? STACK /FALSE 19 | RETURN C 20 | 21 | 22 | .FUNCT RUNNING?,RTN,C,TICK 23 | CALL2 INT-NO-INSERT,RTN >C 24 | ZERO? C /FALSE 25 | GET C,C-TICK >TICK 26 | ZERO? TICK /FALSE 27 | GRTR? TICK,1 /FALSE 28 | RETURN C 29 | 30 | 31 | .FUNCT PICK-ONE,FROB,L,CNT,RND,MSG,RFROB 32 | GET FROB,0 >L 33 | GET FROB,1 >CNT 34 | DEC 'L 35 | ADD FROB,2 >FROB 36 | MUL CNT,2 37 | ADD FROB,STACK >RFROB 38 | SUB L,CNT 39 | RANDOM STACK >RND 40 | GET RFROB,RND >MSG 41 | GET RFROB,1 42 | PUT RFROB,RND,STACK 43 | PUT RFROB,1,MSG 44 | INC 'CNT 45 | EQUAL? CNT,L \?CND1 46 | SET 'CNT,0 47 | ?CND1: PUT FROB,0,CNT 48 | RETURN MSG 49 | 50 | 51 | .FUNCT SPRINT,OBJ 52 | LESS? OBJ,10 \?ELS3 53 | PRINTI " " 54 | JUMP ?CND1 55 | ?ELS3: LESS? OBJ,100 \?ELS7 56 | PRINTI " " 57 | JUMP ?CND1 58 | ?ELS7: LESS? OBJ,1000 \?CND1 59 | PRINTI " " 60 | ?CND1: PRINTN OBJ 61 | RTRUE 62 | 63 | 64 | .FUNCT DPRINT,OBJ 65 | GETP OBJ,P?MDESC 66 | ZERO? STACK /?ELS5 67 | PRINTI "MESSAGE." 68 | GETP OBJ,P?MDESC 69 | GET STACK,0 70 | PRINTN STACK 71 | PRINTI "/" 72 | GETP OBJ,P?MDESC 73 | GET STACK,1 74 | PRINTN STACK 75 | PRINTI "/" 76 | GETP OBJ,P?MDESC 77 | GET STACK,2 78 | PRINTN STACK 79 | PRINTI "." 80 | GETP OBJ,P?MDESC 81 | GET STACK,3 82 | CALL2 TIME-PRINT,STACK 83 | RSTACK 84 | ?ELS5: GETP OBJ,P?SDESC 85 | ZERO? STACK /?ELS9 86 | GETP OBJ,P?SDESC 87 | PRINT STACK 88 | RTRUE 89 | ?ELS9: PRINTD OBJ 90 | RTRUE 91 | 92 | 93 | .FUNCT GO 94 | START:: 95 | 96 | ?FCN: SUB TIME,1 >LAST-ABE-TIME 97 | CALL QUEUE,I-PERELMAN,-1 98 | CALL QUEUE,I-MESSAGE-C,28 99 | CALL QUEUE,I-MESSAGE-Y,1373 100 | PUTB P-LEXV,0,59 101 | SET 'WINNER,PLAYER 102 | SET 'HERE,COMM-ROOM 103 | SET 'MODE,COMM-MODE 104 | SET 'FEED-BUFFER,NEWS-BUFFER 105 | CALL2 NAME-MESSAGE,MESSAGE-B 106 | CALL2 CHAPTER-PRINT,1 107 | CRLF 108 | CRLF 109 | CRLF 110 | CRLF 111 | CALL2 PRINT-SPACES,22 112 | PRINTI """Tomorrow never yet" 113 | CRLF 114 | CALL2 PRINT-SPACES,23 115 | PRINTI "On any human being rose or set.""" 116 | CRLF 117 | CALL2 PRINT-SPACES,39 118 | PRINTI "-- William Marsden" 119 | CRLF 120 | CRLF 121 | CRLF 122 | CRLF 123 | CRLF 124 | CALL1 CONTINUE 125 | CALL2 INIT-STATUS-LINE,2 126 | CALL1 STATUS-LINE 127 | PRINTI "You ""hear"" a message coming in on the official message line: " 128 | GETP MESSAGE-B,P?TEXT 129 | PRINT STACK 130 | CRLF 131 | CRLF 132 | CALL1 V-VERSION 133 | CRLF 134 | CALL1 V-LOOK 135 | CALL1 MAIN-LOOP 136 | JUMP ?FCN 137 | 138 | 139 | .FUNCT MAIN-LOOP,TRASH 140 | ?PRG1: CALL1 MAIN-LOOP-1 >TRASH 141 | JUMP ?PRG1 142 | 143 | 144 | .FUNCT MAIN-LOOP-1,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,NOT-HERE,?TMP1 145 | SET 'ELAPSED-TIME,1 146 | SET 'INCREMENT-WAIT,FALSE-VALUE 147 | SET 'STOP-WAIT,FALSE-VALUE 148 | SET 'CNT,0 149 | SET 'OBJ,FALSE-VALUE 150 | SET 'PTBL,TRUE-VALUE 151 | CALL1 PARSER >P-WON 152 | ZERO? P-WON /?ELS3 153 | GET P-PRSI,P-MATCHLEN >ICNT 154 | GET P-PRSO,P-MATCHLEN >OCNT 155 | ZERO? P-IT-OBJECT /?CND4 156 | CALL2 ACCESSIBLE?,P-IT-OBJECT 157 | ZERO? STACK /?CND4 158 | SET 'TMP,FALSE-VALUE 159 | ?PRG9: IGRTR? 'CNT,ICNT \?ELS13 160 | JUMP ?REP10 161 | ?ELS13: GET P-PRSI,CNT 162 | EQUAL? STACK,IT \?PRG9 163 | PUT P-PRSI,CNT,P-IT-OBJECT 164 | SET 'TMP,TRUE-VALUE 165 | ?REP10: ZERO? TMP \?CND19 166 | SET 'CNT,0 167 | ?PRG22: IGRTR? 'CNT,OCNT \?ELS26 168 | JUMP ?CND19 169 | ?ELS26: GET P-PRSO,CNT 170 | EQUAL? STACK,IT \?PRG22 171 | PUT P-PRSO,CNT,P-IT-OBJECT 172 | ?CND19: SET 'CNT,0 173 | ?CND4: ZERO? OCNT \?ELS36 174 | PUSH OCNT 175 | JUMP ?CND32 176 | ?ELS36: GRTR? OCNT,1 \?ELS38 177 | SET 'TBL,P-PRSO 178 | ZERO? ICNT \?ELS41 179 | SET 'OBJ,FALSE-VALUE 180 | JUMP ?CND39 181 | ?ELS41: GET P-PRSI,1 >OBJ 182 | ?CND39: PUSH OCNT 183 | JUMP ?CND32 184 | ?ELS38: GRTR? ICNT,1 \?ELS45 185 | SET 'PTBL,FALSE-VALUE 186 | SET 'TBL,P-PRSI 187 | GET P-PRSO,1 >OBJ 188 | PUSH ICNT 189 | JUMP ?CND32 190 | ?ELS45: PUSH 1 191 | ?CND32: SET 'NUM,STACK 192 | ZERO? OBJ \?CND48 193 | EQUAL? ICNT,1 \?CND48 194 | GET P-PRSI,1 >OBJ 195 | ?CND48: EQUAL? PRSA,V?WALK \?ELS55 196 | PRINTI "[Calling PERFORM, PRSA = V-WALK.]" 197 | CRLF 198 | CALL PERFORM,PRSA,PRSO >V 199 | JUMP ?CND53 200 | ?ELS55: ZERO? NUM \?ELS57 201 | GETB P-SYNTAX,P-SBITS 202 | BAND STACK,P-SONUMS 203 | ZERO? STACK \?ELS60 204 | CALL2 PERFORM,PRSA >V 205 | SET 'PRSO,FALSE-VALUE 206 | JUMP ?CND53 207 | ?ELS60: PRINTI "There isn't anything to " 208 | GET P-ITBL,P-VERBN >TMP 209 | EQUAL? PRSA,V?TELL \?ELS67 210 | PRINTI "talk to" 211 | JUMP ?CND65 212 | ?ELS67: ZERO? P-OFLAG \?THN72 213 | ZERO? P-MERGED /?ELS71 214 | ?THN72: GET TMP,0 215 | PRINTB STACK 216 | JUMP ?CND65 217 | ?ELS71: GETB TMP,2 >?TMP1 218 | GETB TMP,3 219 | CALL WORD-PRINT,?TMP1,STACK 220 | ?CND65: PRINTI "!" 221 | CRLF 222 | SET 'V,FALSE-VALUE 223 | CALL1 CLEAR-BUF 224 | JUMP ?CND53 225 | ?ELS57: SET 'NOT-HERE,0 226 | SET 'TMP,FALSE-VALUE 227 | ?PRG80: IGRTR? 'CNT,NUM \?ELS84 228 | GRTR? NOT-HERE,0 \?ELS87 229 | PRINTI "[The " 230 | EQUAL? NOT-HERE,NUM /?CND90 231 | PRINTI "other " 232 | ?CND90: PRINTI "object" 233 | EQUAL? NOT-HERE,1 /?CND97 234 | PRINTI "s" 235 | ?CND97: PRINTI " that you mentioned " 236 | EQUAL? NOT-HERE,1 /?ELS106 237 | PRINTI "are" 238 | JUMP ?CND104 239 | ?ELS106: PRINTI "is" 240 | ?CND104: PRINTI "n't here.]" 241 | CRLF 242 | JUMP ?REP81 243 | ?ELS87: ZERO? TMP \?REP81 244 | PRINT REFERRING 245 | CRLF 246 | JUMP ?REP81 247 | ?ELS84: ZERO? PTBL /?ELS123 248 | GET P-PRSO,CNT >OBJ1 249 | SET 'PRSO,OBJ1 250 | SET 'PRSI,OBJ 251 | JUMP ?CND121 252 | ?ELS123: GET P-PRSI,CNT >OBJ1 253 | SET 'PRSO,OBJ 254 | SET 'PRSI,OBJ1 255 | ?CND121: GRTR? NUM,1 /?THN130 256 | GET P-ITBL,P-NC1 257 | GET STACK,0 258 | EQUAL? STACK,W?ALL \?CND127 259 | ?THN130: EQUAL? OBJ1,NOT-HERE-OBJECT \?ELS134 260 | INC 'NOT-HERE 261 | JUMP ?PRG80 262 | ?ELS134: EQUAL? P-GETFLAGS,P-ALL \?ELS136 263 | CALL DONT-ALL?,PRSO,PRSI,PTBL 264 | ZERO? STACK /?ELS136 265 | JUMP ?PRG80 266 | ?ELS136: EQUAL? PRSA,V?TAKE \?ELS140 267 | ZERO? PRSI /?ELS140 268 | IN? PRSO,PRSI /?ELS140 269 | JUMP ?PRG80 270 | ?ELS140: CALL2 ACCESSIBLE?,OBJ1 271 | ZERO? STACK \?ELS144 272 | JUMP ?PRG80 273 | ?ELS144: EQUAL? OBJ1,BUZZERS,BOOKS /?CND127 274 | EQUAL? OBJ1,IT \?ELS149 275 | PRINTD P-IT-OBJECT 276 | JUMP ?CND147 277 | ?ELS149: PRINTD OBJ1 278 | ?CND147: PRINTI ": " 279 | ?CND127: SET 'TMP,TRUE-VALUE 280 | CALL PERFORM,PRSA,PRSO,PRSI >V 281 | EQUAL? V,M-FATAL \?PRG80 282 | JUMP ?CND53 283 | ?REP81: 284 | ?CND53: PRINTI "[About to enter M-FATAL/NEWS predicate.]" 285 | CRLF 286 | EQUAL? V,M-FATAL \?THN160 287 | EQUAL? HERE,NEWS \?CND157 288 | ?THN160: PRINTI "[About to check whether ELAPSED-TIME is 0]" 289 | CRLF 290 | ZERO? ELAPSED-TIME /?CND157 291 | GETP HERE,P?ACTION 292 | CALL STACK,M-END >V 293 | ?CND157: PRINTI "[About to check whether CLOCK-WAIT is false.]" 294 | CRLF 295 | ZERO? CLOCK-WAIT \?CND165 296 | PRINTI "[About to call INCREMENT-TIME.]" 297 | CRLF 298 | CALL2 INCREMENT-TIME,ELAPSED-TIME 299 | PRINTI "[Returned from INCREMENT-TIME.]" 300 | CRLF 301 | ?CND165: EQUAL? V,M-FATAL \?CND1 302 | SET 'P-CONT,FALSE-VALUE 303 | JUMP ?CND1 304 | ?ELS3: SET 'P-CONT,FALSE-VALUE 305 | ?CND1: PRINTI "[About to check whether P-WON is true.]" 306 | CRLF 307 | ZERO? P-WON /FALSE 308 | ZERO? ELAPSED-TIME /?CND179 309 | PRINTI "[About to call CLOCKER.]" 310 | CRLF 311 | CALL1 CLOCKER >V 312 | PRINTI "[Returning from CLOCKER.]" 313 | CRLF 314 | ?CND179: "[About to call STATUS-LINE.]" 315 | CRLF 316 | CALL1 STATUS-LINE 317 | SET 'PRSA,FALSE-VALUE 318 | SET 'PRSO,FALSE-VALUE 319 | SET 'PRSI,FALSE-VALUE 320 | RETURN PRSI 321 | 322 | 323 | .FUNCT DONT-ALL?,O,I,ALL-O?,LOCATION 324 | LOC O >LOCATION 325 | EQUAL? O,I /TRUE 326 | EQUAL? PRSA,V?TAKE \?ELS7 327 | EQUAL? LOCATION,PLAYER,WINNER /TRUE 328 | FSET? O,TAKEBIT /?ELS14 329 | FSET? O,TRYTAKEBIT \TRUE 330 | ?ELS14: ZERO? I /?ELS18 331 | EQUAL? LOCATION,I \TRUE 332 | CALL2 SEE-INSIDE?,I 333 | ZERO? STACK /TRUE 334 | RFALSE 335 | ?ELS18: EQUAL? LOCATION,HERE,SHOWER /FALSE 336 | FSET? LOCATION,SURFACEBIT /FALSE 337 | FSET? LOCATION,ACTORBIT \TRUE 338 | RFALSE 339 | ?ELS7: EQUAL? PRSA,V?PUT-ON,V?PUT,V?DROP /?THN39 340 | EQUAL? PRSA,V?THROW \?ELS38 341 | ?THN39: EQUAL? LOCATION,PLAYER,WINNER \TRUE 342 | RFALSE 343 | ?ELS38: EQUAL? PRSA,V?SHUT-OFF,V?TURN-ON \FALSE 344 | EQUAL? HERE,INTERFACE-ROOM \FALSE 345 | EQUAL? WINNER,HVAC-CONTROLLER \?ELS56 346 | EQUAL? I,ALPHA-SECTOR,BETA-SECTOR /FALSE 347 | EQUAL? I,GAMMA-SECTOR,DELTA-SECTOR \TRUE 348 | RFALSE 349 | ?ELS56: EQUAL? I,ALPHA-SECTOR \TRUE 350 | RFALSE 351 | 352 | 353 | .FUNCT FAKE-ORPHAN,TMP,?TMP1 354 | CALL ORPHAN,P-SYNTAX,FALSE-VALUE 355 | PRINTI "[Be specific: what object do you want to " 356 | GET P-OTBL,P-VERBN >TMP 357 | ZERO? TMP \?ELS5 358 | PRINTI "tell" 359 | JUMP ?CND3 360 | ?ELS5: GETB P-VTBL,2 361 | ZERO? STACK \?ELS9 362 | GET TMP,0 363 | PRINTB STACK 364 | JUMP ?CND3 365 | ?ELS9: GETB TMP,2 >?TMP1 366 | GETB TMP,3 367 | CALL WORD-PRINT,?TMP1,STACK 368 | PUTB P-VTBL,2,0 369 | ?CND3: SET 'P-OFLAG,TRUE-VALUE 370 | SET 'P-WON,FALSE-VALUE 371 | GETB P-SYNTAX,P-SPREP1 372 | CALL2 PREP-PRINT,STACK 373 | PRINTR "?]" 374 | 375 | 376 | .FUNCT PERFORM,A,O=0,I=0,V=0,OA,OO,OI 377 | SET 'OA,PRSA 378 | SET 'OO,PRSO 379 | SET 'OI,PRSI 380 | SET 'PRSA,A 381 | EQUAL? IT,I,O \?CND1 382 | ZERO? I \?ELS6 383 | CALL1 FAKE-ORPHAN 384 | RETURN 2 385 | ?ELS6: PRINT REFERRING 386 | CRLF 387 | RETURN 2 388 | ?CND1: SET 'PRSO,O 389 | ZERO? PRSO /?CND13 390 | EQUAL? PRSO,INTNUM /?CND13 391 | EQUAL? PRSA,V?WALK /?CND13 392 | EQUAL? PRSO,NOT-HERE-OBJECT /?CND13 393 | SET 'P-IT-OBJECT,PRSO 394 | ?CND13: SET 'PRSI,I 395 | EQUAL? A,V?WALK /?ELS20 396 | EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?ELS20 397 | CALL D-APPLY,STR?1,NOT-HERE-OBJECT-F >V 398 | ZERO? V /?ELS20 399 | SET 'P-WON,FALSE-VALUE 400 | JUMP ?CND18 401 | ?ELS20: SET 'O,PRSO 402 | SET 'I,PRSI 403 | GETP WINNER,P?ACTION 404 | CALL D-APPLY,STR?2,STACK >V 405 | ZERO? V /?ELS27 406 | JUMP ?CND18 407 | ?ELS27: GETP HERE,P?ACTION 408 | CALL D-APPLY,STR?3,STACK,M-BEG >V 409 | ZERO? V /?ELS29 410 | JUMP ?CND18 411 | ?ELS29: GET PREACTIONS,A 412 | CALL D-APPLY,STR?4,STACK >V 413 | ZERO? V /?ELS31 414 | JUMP ?CND18 415 | ?ELS31: ZERO? I /?ELS33 416 | GETP I,P?ACTION 417 | CALL D-APPLY,STR?5,STACK >V 418 | ZERO? V /?ELS33 419 | JUMP ?CND18 420 | ?ELS33: ZERO? O /?ELS37 421 | EQUAL? A,V?WALK /?ELS37 422 | GETP O,P?ACTION 423 | CALL D-APPLY,STR?6,STACK >V 424 | ZERO? V /?ELS37 425 | JUMP ?CND18 426 | ?ELS37: GET ACTIONS,A 427 | CALL D-APPLY,FALSE-VALUE,STACK >V 428 | ZERO? V /?CND18 429 | ?CND18: SET 'PRSA,OA 430 | SET 'PRSO,OO 431 | SET 'PRSI,OI 432 | RETURN V 433 | 434 | 435 | .FUNCT D-APPLY,STR,FCN,FOO=0,RES 436 | ZERO? FCN /FALSE 437 | ZERO? FOO /?ELS12 438 | CALL FCN,FOO 439 | JUMP ?CND8 440 | ?ELS12: CALL FCN 441 | ?CND8: SET 'RES,STACK 442 | RETURN RES 443 | 444 | 445 | .FUNCT QUEUE,INTERRUPT-ROUTINE,TICK-NUMBER,CLOCKER-INT 446 | CALL2 INT,INTERRUPT-ROUTINE >CLOCKER-INT 447 | PUT CLOCKER-INT,C-TICK,TICK-NUMBER 448 | RETURN CLOCKER-INT 449 | 450 | 451 | .FUNCT INT,RTN,E,C,INT=0 452 | ADD C-TABLE,C-TABLELEN >E 453 | ADD C-TABLE,C-INTS >C 454 | ?PRG1: EQUAL? C,E \?ELS5 455 | ZERO? INT \?CND6 456 | LESS? C-INTS,C-INTLEN \?CND9 457 | PRINTI "Bug #25I" 458 | CRLF 459 | ?CND9: SUB C-INTS,C-INTLEN >C-INTS 460 | ADD C-TABLE,C-INTS >INT 461 | ?CND6: PUT INT,C-RTN,RTN 462 | RETURN INT 463 | ?ELS5: GET C,C-RTN 464 | EQUAL? STACK,RTN \?ELS15 465 | RETURN C 466 | ?ELS15: ZERO? INT \?CND3 467 | GET C,C-RTN 468 | ZERO? STACK \?CND3 469 | SET 'INT,C 470 | ?CND3: ADD C,C-INTLEN >C 471 | JUMP ?PRG1 472 | 473 | 474 | .FUNCT CLOCKER,C,E,TICK,RTN,FLG=0 475 | ZERO? CLOCK-WAIT /?CND1 476 | SET 'CLOCK-WAIT,FALSE-VALUE 477 | RFALSE 478 | ?CND1: ADD C-TABLE,C-INTS >C 479 | ADD C-TABLE,C-TABLELEN >E 480 | ?PRG5: EQUAL? C,E \?CND7 481 | RETURN FLG 482 | ?CND7: GET C,C-RTN >RTN 483 | ZERO? RTN /?CND10 484 | GET C,C-TICK >TICK 485 | EQUAL? TICK,-1 \?ELS18 486 | CALL RTN 487 | ZERO? STACK /?CND10 488 | SET 'FLG,TRUE-VALUE 489 | JUMP ?CND10 490 | ?ELS18: SUB TICK,ELAPSED-TIME >TICK 491 | GRTR? TICK,0 \?ELS26 492 | PUT C,C-TICK,TICK 493 | JUMP ?CND10 494 | ?ELS26: PUT C,C-RTN,0 495 | CALL RTN 496 | ZERO? STACK /?CND13 497 | SET 'FLG,TRUE-VALUE 498 | ?CND13: 499 | ?CND10: ADD C,C-INTLEN >C 500 | JUMP ?PRG5 501 | 502 | 503 | .FUNCT INCREMENT-TIME,X,TMP,?TMP1 504 | ADD TIME,X >TIME 505 | GRTR? TIME,1439 \?CND1 506 | SUB TIME,1440 >TIME 507 | INC 'DATE 508 | EQUAL? DATE,18 \?ELS6 509 | SET 'FEED-BUFFER,REPORT-BUFFER 510 | JUMP ?CND4 511 | ?ELS6: SET 'FEED-BUFFER,NEWS-BUFFER 512 | ?CND4: GRTR? DATE,28 \?CND9 513 | EQUAL? DATE,32 /?THN19 514 | EQUAL? MONTH,2 /?THN19 515 | EQUAL? DATE,31 \?CND9 516 | EQUAL? MONTH,4,6,9 /?THN19 517 | EQUAL? MONTH,11 \?CND9 518 | ?THN19: SET 'DATE,1 519 | INC 'MONTH 520 | ?CND9: EQUAL? HERE,ROOF \?CND1 521 | EQUAL? TIME,348 \?ELS26 522 | CRLF 523 | PRINTI "The first glow of dawn appears on the horizon." 524 | CRLF 525 | JUMP ?CND21 526 | ?ELS26: EQUAL? TIME,378 \?ELS30 527 | CRLF 528 | PRINTI "The sun is now well above the horizon; day has begun." 529 | CRLF 530 | JUMP ?CND21 531 | ?ELS30: EQUAL? TIME,1073 \?ELS34 532 | CRLF 533 | PRINTI "The sky begins to darken as the sun sinks into the western sky." 534 | CRLF 535 | JUMP ?CND21 536 | ?ELS34: EQUAL? TIME,1103 \?CND21 537 | CRLF 538 | PRINTI "The last glow of dusk fades as nighttime falls across the rooftop." 539 | CRLF 540 | ?CND21: 541 | ?CND1: ZERO? SIMULATING /?CND41 542 | SET 'TMP,STIME 543 | ADD STIME,X >STIME 544 | GRTR? STIME,1439 \?CND45 545 | SUB STIME,1440 >STIME 546 | INC 'SDATE 547 | GRTR? SDATE,28 \?CND45 548 | EQUAL? SDATE,32 /?THN58 549 | EQUAL? SMONTH,2 /?THN58 550 | EQUAL? SDATE,31 \?CND48 551 | EQUAL? SMONTH,4,6,9 /?THN58 552 | EQUAL? SMONTH,11 \?CND48 553 | ?THN58: SET 'SDATE,1 554 | INC 'SMONTH 555 | ?CND48: 556 | ?CND45: CALL1 CONVERT-SYEAR-TO-NUM >?TMP1 557 | CALL1 CONVERT-SYEAR-TO-NUM 558 | GET SIM-LEVEL-TABLE,STACK 559 | ADD X,STACK 560 | PUT SIM-LEVEL-TABLE,?TMP1,STACK 561 | CALL1 TUBES-CLOSE? 562 | ZERO? STACK /?ELS62 563 | CRLF 564 | PRINTI "A surly cop warns that curfew is approaching and hustles you out of the " 565 | PRINTD TUBE-STATION 566 | PRINTI "." 567 | CRLF 568 | CRLF 569 | EQUAL? HERE,RED-TUBECAR,BROWN-TUBECAR \?CND67 570 | GET RED-TABLE,RED-POINTER 571 | MOVE PLAYER,STACK 572 | GET RED-TABLE,RED-POINTER >HERE 573 | ?CND67: CALL2 DO-WALK,P?UP 574 | JUMP ?CND60 575 | ?ELS62: EQUAL? HERE,ROCKVIL-STADIUM \?CND60 576 | EQUAL? SYEAR,2061,2071 \?CND60 577 | GRTR? STIME,1154 \?ELS76 578 | LESS? STIME,1200 \?ELS76 579 | ZERO? INCREMENT-WAIT \?ELS76 580 | SET 'INCREMENT-WAIT,TRUE-VALUE 581 | CRLF 582 | PRINTI "As the day's executions wind to a conclusion, the people in the stands begin heading toward the exits." 583 | CRLF 584 | JUMP ?CND60 585 | ?ELS76: EQUAL? STIME,480 \?CND60 586 | SET 'STOP-WAIT,TRUE-VALUE 587 | CRLF 588 | PRINTI "People begin gathering in the stands as the day's executions begin." 589 | CRLF 590 | ?CND60: EQUAL? SYEAR,2041,2081 /?CND41 591 | GRTR? STIME,1260 \?ELS90 592 | GRTR? TMP,1260 /?ELS90 593 | CALL QUEUE,I-CURFEW,15 594 | SET 'STOP-WAIT,TRUE-VALUE 595 | CALL2 SCORE,116 596 | CRLF 597 | PRINTI "A surge of adrenal fear passes through you as sirens all around begin wailing, an audio sine wave announcing the beginning of curfew." 598 | CRLF 599 | JUMP ?CND85 600 | ?ELS90: GRTR? STIME,420 \?CND85 601 | GRTR? TMP,420 /?CND85 602 | EQUAL? PRSA,V?SLEEP /?CND85 603 | SET 'STOP-WAIT,TRUE-VALUE 604 | CRLF 605 | PRINTI "T" 606 | CALL1 END-CURFEW 607 | CRLF 608 | ?CND85: 609 | ?CND41: ZERO? RECORDING /FALSE 610 | EQUAL? HERE,LIVING-ROOM,KITCHEN /?THN110 611 | EQUAL? HERE,BEDROOM,BATHROOM \?ELS109 612 | ?THN110: PUT RECORDING-TABLE,16,1 613 | JUMP ?CND107 614 | ?ELS109: EQUAL? HERE,COURTHOUSE \?ELS113 615 | PUT RECORDING-TABLE,10,1 616 | JUMP ?CND107 617 | ?ELS113: EQUAL? HERE,POWER-STATION \?CND107 618 | PUT RECORDING-TABLE,4,1 619 | ?CND107: EQUAL? SYEAR,2051 \?ELS118 620 | SET '2051-RECORDED,TRUE-VALUE 621 | JUMP ?CND116 622 | ?ELS118: EQUAL? SYEAR,2061 \?ELS120 623 | SET '2061-RECORDED,TRUE-VALUE 624 | JUMP ?CND116 625 | ?ELS120: EQUAL? SYEAR,2071 \?ELS122 626 | SET '2071-RECORDED,TRUE-VALUE 627 | JUMP ?CND116 628 | ?ELS122: EQUAL? SYEAR,2081 \?CND116 629 | SET '2081-RECORDED,TRUE-VALUE 630 | ?CND116: GETP RECORD-BUFFER,P?SIZE >TMP 631 | ADD TMP,X 632 | PUTP RECORD-BUFFER,P?SIZE,STACK 633 | ZERO? SIMULATING /?CND125 634 | SET 'RECORDINGS-INCLUDE-SIMULATION,TRUE-VALUE 635 | ?CND125: GETP RECORD-BUFFER,P?SIZE 636 | GRTR? STACK,45 \?ELS133 637 | GRTR? TMP,45 /?ELS133 638 | SOUND 1 639 | CRLF 640 | PRINTR "WARNING: Record buffer is now half-full." 641 | ?ELS133: GETP RECORD-BUFFER,P?SIZE 642 | GRTR? STACK,90 \FALSE 643 | SET 'RECORDING,FALSE-VALUE 644 | PUTP RECORD-BUFFER,P?SIZE,90 645 | SOUND 1 646 | CRLF 647 | PRINTR "WARNING: Record buffer full. Auto-deactivation of record feature." 648 | 649 | 650 | .FUNCT TUBES-CLOSE? 651 | EQUAL? SYEAR,2041 /FALSE 652 | LESS? STIME,1250 /FALSE 653 | FSET? HERE,TUBEBIT /TRUE 654 | EQUAL? HERE,RED-TUBECAR \?ELS11 655 | ZERO? RED-TUBECAR-IN-STATION \TRUE 656 | ?ELS11: EQUAL? HERE,BROWN-TUBECAR \FALSE 657 | ZERO? BROWN-TUBECAR-IN-STATION /FALSE 658 | RTRUE 659 | 660 | 661 | .FUNCT ITALICIZE,STR,NO-CAPS?=0,LEN,PTR=2,CHAR,SCRIPTING-ON=0 662 | BUFOUT FALSE-VALUE 663 | BUFOUT TRUE-VALUE 664 | GET 0,8 665 | BTST STACK,1 \?CND1 666 | SET 'SCRIPTING-ON,TRUE-VALUE 667 | ?CND1: ZERO? SCRIPTING-ON /?CND4 668 | DIROUT D-PRINTER-OFF 669 | ?CND4: DIROUT D-SCREEN-OFF 670 | DIROUT D-TABLE-ON,SL-BUFFER 671 | PRINT STR 672 | DIROUT D-TABLE-OFF 673 | ZERO? SCRIPTING-ON /?CND10 674 | DIROUT D-PRINTER-ON 675 | ?CND10: EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT /?CND14 676 | DIROUT D-SCREEN-ON 677 | ?CND14: GET SL-BUFFER,0 678 | ADD STACK,1 >LEN 679 | EQUAL? LEN,1 /TRUE 680 | GETB 0,18 681 | ZERO? STACK /?THN24 682 | GETB 0,1 683 | BAND STACK,8 684 | ZERO? STACK /?ELS23 685 | ?THN24: HLIGHT H-ITALIC 686 | ?PRG26: GETB SL-BUFFER,PTR >CHAR 687 | EQUAL? CHAR,32 \?ELS30 688 | HLIGHT H-NORMAL 689 | PRINTC 32 690 | HLIGHT H-ITALIC 691 | JUMP ?CND28 692 | ?ELS30: PRINTC CHAR 693 | ?CND28: EQUAL? PTR,LEN \?ELS35 694 | JUMP ?REP27 695 | ?ELS35: INC 'PTR 696 | JUMP ?PRG26 697 | ?REP27: HLIGHT H-NORMAL 698 | RTRUE 699 | ?ELS23: ZERO? NO-CAPS? /?ELS39 700 | PRINT STR 701 | RTRUE 702 | ?ELS39: 703 | ?PRG45: GETB SL-BUFFER,PTR >CHAR 704 | GRTR? CHAR,96 \?CND47 705 | LESS? CHAR,123 \?CND47 706 | SUB CHAR,32 >CHAR 707 | ?CND47: PRINTC CHAR 708 | EQUAL? PTR,LEN /TRUE 709 | INC 'PTR 710 | JUMP ?PRG45 711 | 712 | 713 | .FUNCT CONVERT-SYEAR-TO-NUM 714 | SUB SYEAR,2041 715 | DIV STACK,10 716 | RSTACK 717 | 718 | .ENDI 719 | -------------------------------------------------------------------------------- /syntax.zil: -------------------------------------------------------------------------------- 1 | "SYNTAX for 2 | A MIND FOREVER VOYAGING 3 | (c) Copyright 1985 Infocom, Inc. All Rights Reserved." 4 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | ;"game commands" 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | ; 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | ; 75 | 76 | ; 77 | 78 | ; 79 | 80 | ; 81 | 82 | ;"subtitle real verbs" 83 | 84 | 85 | 86 | 87 | ; 88 | ; 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 99 | 101 | 102 | 104 | 105 | 106 | 107 | 109 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 186 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | ; 207 | 208 | 209 | 210 | 212 | 213 | 214 | 216 | 218 | 219 | 220 | 221 | 222 | 223 | 225 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 240 | 242 | 243 | 244 | 246 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | ; 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 348 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 410 | 412 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 423 | 424 | 425 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 460 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | ;"turn heat on in X sector" 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | 535 | 537 | 539 | 541 | 543 | 544 | 545 | 546 | 547 | 549 | 550 | 551 | 552 | 553 | 554 | 556 | 558 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | -------------------------------------------------------------------------------- /misc.zil: -------------------------------------------------------------------------------- 1 | "MISC for 2 | A MIND FOREVER VOYAGING 3 | (c) 1985 by Infocom, Inc. All Rights Reserved." 4 | 5 | ;"former MACROS.ZIL stuff" 6 | 7 | 8 | 9 | " 10 | 11 | " 12 | 13 | ;> 15 | > 16 | 18 | ) 19 | ( .RTN> 20 | > 21 | ) 22 | (T 23 | )>)> 24 | >>> 25 | 26 | )) 27 | > 28 | > 29 | ) 31 | ( .RTN> 32 | )> 33 | >>> 34 | 35 | > 37 | > 38 | <0? >> 39 | ) 40 | (T )>)>> 41 | 42 | > 44 | > 45 | > 46 | <0? .TICK> 47 | > 48 | ) 49 | (T )>)>> 50 | 51 | ) 56 | (> 57 | >)> 58 | 59 | > 60 | "CRLF"> 61 | <=? .P "CR">> 62 | >) 63 | ( 64 | ) 65 | (ELSE 66 | > 67 | > 68 | > 69 | "DESC"> 70 | <=? .P "D"> 71 | <=? .P "OBJ"> 72 | <=? .P "O">> 73 | >) 74 | ( 75 | <=? .P "N">> 76 | >) 77 | (<=? .P "S"> 78 | >) 79 | ( 80 | <=? .P "CHR"> 81 | <=? .P "C">> 82 | >) 83 | (ELSE 84 | >>)>)>) 87 | ( 88 | >) 89 | ( 90 | >) 91 | (ELSE )>>>>> 92 | 93 | > 95 | 96 | > 98 | 99 | > 101 | 102 | > 104 | 105 | 108 | ) 109 | ( ) 110 | (ELSE )>>)> 111 | )> 113 | > 114 | 116 | 117 | >>) 120 | (ELSE .ATM)> GVAL>) 121 | (ELSE .ATM)> 122 | !.L)> 123 | > 124 | 3> )>> 125 | !.L>)>>> 127 | >> 128 | 129 | > 131 | 132 | > 134 | 135 | > 137 | 138 | 141 | ) 142 | (
) 143 | (ELSE )>>)> 144 | > 145 | > 146 | .ATM) 150 | (ELSE )>> 151 | !.O)>>> 152 | 153 | >> 155 | 156 | >>> 158 | 159 | ;>>> 161 | 162 | ) (CNT ) RND MSG RFROB) 164 | > 165 | > 166 | >> 167 | >> 168 | > 169 | > 170 | 171 | > 172 | )> 173 | 174 | .MSG> 175 | 176 | ;> 178 | 179 | > 181 | 182 | 184 | ) 185 | ( 186 | ) 187 | ( 188 | )> 189 | > 190 | 191 | ;"message desc" 193 | 0> 195 | "/" 196 | N 1> 197 | "/" 198 | N 2> 199 | "."> 200 | 3>>) 201 | ( 202 | >) 203 | (T 204 | )>> 205 | 206 | 207 | 208 | ;"former MAIN.ZIL stuff" 209 | 210 | > 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | > 225 | ; ;"so it's always the last interrupt called" 226 | 227 | 228 | 229 | ;"set up and go" 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | CR CR> 250 | 251 | 252 | 253 | 254 | > 255 | 256 | >>> 259 | 260 | 262 | > 263 | > 264 | 265 | > 266 | 267 | > 268 | > 269 | > 270 | > 271 | > 272 | > .ICNT> 274 | ) 275 | (T 276 | ,IT> 277 | 278 | 279 | )>)>> 280 | 281 | 282 | > .OCNT> 284 | ) 285 | (T 286 | ,IT> 287 | 288 | )>)>>)> 289 | )> 290 | .OCNT) 292 | ( 293 | 294 | >) 295 | (T >)> 296 | .OCNT) 297 | ( 298 | > 299 | 300 | > 301 | .ICNT) 302 | (T 1)>> 303 | 304 | <1? .ICNT>> 305 | >)> 306 | 307 | >) 308 | (<0? .NUM> 309 | ,P-SONUMS>> 310 | > 311 | >) 312 | ;( 313 | 314 | ) 315 | (T 316 | 317 | > 318 | 319 | ) 320 | ( 321 | >) 322 | (T 323 | 324 | >)> 325 | 326 | > 327 | )>) 328 | (T 329 | 330 | ;> 331 | ; 332 | )> 333 | > 334 | > .NUM> 336 | 337 | 338 | > 339 | )> 340 | 341 | > 342 | )> 343 | 344 | > 345 | ) 346 | (T 347 | )> 348 | ) 349 | ( 350 | )> 351 | ) 352 | (T 353 | > 355 | 356 | ) 357 | (T 358 | > 359 | 360 | )> 361 | 362 | 0> 363 | ,W?ALL>> 364 | 365 | > 366 | ) 367 | ( 368 | > 369 | ) 370 | ( 371 | ,PRSI 372 | >> 373 | ) 374 | (> 375 | ) 376 | (> 377 | 378 | ) 379 | (T 380 | )> 381 | )>)> 382 | 383 | > 384 | 385 | )>)>>)> 386 | > 387 | > 388 | 390 | T) 391 | (> 392 | ; ,P?ACTION> ,M-END> 393 | ,M-END>>)>)> 394 | ; 396 | T) 397 | (,P-OFLAG 398 | T) 399 | (T 400 | 401 | 402 | )> 403 | 404 | )> 405 | ;> 406 | 407 | >)>) 408 | (T 409 | >)> 410 | 413 | T) 414 | ( 415 | 416 | 417 | 418 | >> 419 | T) 420 | (T 421 | 422 | >)> 423 | > 424 | >)> 425 | 426 | > 427 | > 428 | >)>> 429 | 430 | > 432 | 433 | ) 434 | ( 435 | 436 | ) 437 | (> 438 | >> 439 | ) 440 | (.I 441 | > 442 | ) 443 | ( 444 | ) 445 | (T 446 | )>) 447 | ( 448 | ) 449 | ( 450 | ) 451 | ( 452 | ) 453 | (T 454 | )>) 455 | ( 456 | 457 | ) 458 | (T 459 | )>) 460 | ( 461 | > 462 | 463 | 464 | ) 465 | ( 466 | ) 467 | (T 468 | )>) 469 | (T 470 | 471 | ) 472 | (T 473 | )>)>) 474 | (T 475 | )>> 476 | 477 | > 479 | 480 | > 481 | 482 | ) 483 | (<0? > 484 | >) 485 | (T 486 | > 487 | )> 488 | 489 | > 490 | > 492 | > 493 | 494 | ) (I <>) "AUX" (V <>) OA OO OI) 495 | ; 497 | % ') 498 | (T ' 1>>>)> 499 | >> 500 | )> 503 | 504 | 505 | 506 | 507 | 508 | 509 | ) 510 | (T 511 | )> 512 | )> 513 | 514 | > 516 | > 517 | >> 518 | )> 519 | 520 | ;> 521 | 522 | 523 | >) 524 | (T 525 | )> 526 | )> 527 | > 528 | 529 | >> 530 | > 531 | .V) 532 | (T 533 | 534 | 535 | >> 536 | .V) 537 | ( ,M-BEG>> 538 | ; ,P?ACTION ,M-BEG>> 539 | .V) 540 | (>> 541 | .V) 542 | (>>> 543 | .V) 544 | ;(> 546 | 547 | ,P?CONTFCN> 548 | ,P?CONTFCN>>>> 549 | .V) 550 | (> 552 | >>> 553 | .V) 554 | ( >> 555 | .V)>)> 556 | 557 | 558 | 559 | .V> 560 | 561 | ) "AUX" RES) 562 | <>) 563 | (T 564 | ; 566 | " CR>) 567 | (T ">)>)> 568 | ) 570 | (T )>> 571 | ; 572 | 573 | ) 574 | ( 575 | ) 576 | (T 577 | )>)> 578 | .RES)>> 579 | 580 | ;"former CLOCK.ZIL stuff" 581 | 582 | 583 | ') 584 | (T 585 | ')>> 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | ; 594 | 595 | 596 | 597 | 598 | 599 | > ,C-TICK .TICK-NUMBER> 601 | .CLOCKER-INT> 602 | 603 | )) 604 | > 605 | > 606 | 608 | 609 | 610 | )> 611 | > 612 | >)> 613 | 614 | ) 615 | ( .RTN> 616 | ) 617 | ( 618 | >> 619 | )> 620 | >>> 621 | 622 | )) 623 | > 625 | )> 626 | > 627 | > 628 | 630 | )> 631 | > 632 | > 633 | > 634 | >;"test only if " 635 | 636 | 637 | )>) 638 | (T 639 | > 640 | 641 | ) 642 | (T 643 | ; 644 | 645 | )> 646 | 647 | )>)>)>)>)> 648 | >>> 649 | 650 | > 651 | 652 | > 653 | 654 | > 656 | 657 | > 658 | > 659 | 660 | ) 661 | (T 662 | )> 663 | 664 | 665 | 666 | 667 | 668 | >>> 669 | 670 | > 671 | ; 672 | 673 | >)>)>)> 674 | 675 | 676 | ) 678 | ( 679 | ) 681 | ( 682 | ) 684 | ( 685 | )>)>)> 687 | 689 | > 690 | 691 | > 692 | > 693 | 694 | 695 | 696 | 697 | 698 | >>> 699 | 700 | > 701 | ; 702 | 703 | >)>)>)>)> 704 | 705 | <+ .X >>> 706 | ; 707 | >) 709 | ( 710 | >) 712 | ( 713 | >) 715 | ( 716 | >) 718 | (T 719 | >)> 721 | 722 | 724 | 725 | 726 | 727 | > 728 | >)> 729 | ) 730 | ( 731 | > 732 | 733 | 734 | 735 | ;"already told during wait"> 736 | 737 | ) 740 | ( ;"already told during wait" 741 | 742 | )>)> 744 | > 745 | 746 | >> 747 | ;"has it just passed 9:00pm?" 748 | 749 | 750 | ;"2 points" 751 | ) 754 | ( 755 | > 756 | >> 757 | ;"has it just passed 7:00am?" 758 | 759 | 760 | 761 | )>)>)> 762 | 764 | > 765 | ; 766 | ) 767 | ( 768 | ) 769 | ( 770 | )> 771 | 772 | ) 773 | ( 774 | ) 775 | ( 776 | ) 777 | ( 778 | )> 779 | > 780 | > 781 | )> 783 | 45> 784 | >> 785 | 786 | ) 787 | ( 90> 788 | > 789 | 790 | 791 | )>)>> 793 | 794 | 796 | ) 797 | ( 798 | ) 799 | ( 800 | ) 801 | ( 802 | ,RED-TUBECAR-IN-STATION> 803 | ) 804 | ( 805 | ,BROWN-TUBECAR-IN-STATION> 806 | ) 807 | (T 808 | )>> 809 | 810 | ) 811 | "AUX" LEN (PTR 2) CHAR (SCRIPTING-ON <>)) 812 | > 813 | 814 | 1> 815 | )> 816 | )> 818 | 819 | 820 | 821 | 822 | )> 824 | > 825 | )> 826 | 1>> 827 | 828 | ) 829 | (> ; "ZIL?" 830 | 8>> ; "ITALICS BIT SET?" 831 | 832 | > 834 | ; "SPACE?" 835 | 836 | 837 | ) 838 | (T 839 | )> 840 | 841 | ) 842 | (T 843 | >)>> 844 | ) 845 | (.NO-CAPS? 846 | ) 847 | (T ; "NO ITALICS, CAPITALIZE" 848 | > 850 | 851 | > 852 | >)> 853 | 854 | 855 | ) 856 | (T 857 | >)>>)>> 858 | 859 | 10>>> -------------------------------------------------------------------------------- /parser.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT PARSER,PTR=P-LEXSTART,WRD,VAL=0,VERB=0,OMERGED,OWINNER,LEN,DIR=0,NW=0,LW=0,CNT=-1,OF-FLAG=0,?TMP1,?TMP2 4 | ?PRG1: INC 'CNT 5 | GRTR? CNT,P-ITBLLEN \?ELS5 6 | JUMP ?REP2 7 | ?ELS5: ZERO? P-OFLAG \?CND8 8 | GET P-ITBL,CNT 9 | PUT P-OTBL,CNT,STACK 10 | ?CND8: PUT P-ITBL,CNT,0 11 | JUMP ?PRG1 12 | ?REP2: SET 'P-NAM,FALSE-VALUE 13 | PUT P-NAMW,0,FALSE-VALUE 14 | PUT P-NAMW,1,FALSE-VALUE 15 | SET 'P-ADJ,FALSE-VALUE 16 | PUT P-ADJW,0,FALSE-VALUE 17 | PUT P-ADJW,1,FALSE-VALUE 18 | SET 'OMERGED,P-MERGED 19 | SET 'OWINNER,WINNER 20 | SET 'P-MERGED,FALSE-VALUE 21 | SET 'P-END-ON-PREP,FALSE-VALUE 22 | PUT P-PRSO,P-MATCHLEN,0 23 | PUT P-PRSI,P-MATCHLEN,0 24 | PUT P-BUTS,P-MATCHLEN,0 25 | ZERO? QUOTE-FLAG \?CND11 26 | EQUAL? WINNER,PLAYER /?CND11 27 | SET 'WINNER,PLAYER 28 | LOC WINNER 29 | FSET? STACK,VEHBIT /?CND11 30 | LOC WINNER >HERE 31 | ?CND11: ZERO? RESERVE-PTR /?ELS21 32 | SET 'PTR,RESERVE-PTR 33 | CALL STUFF,P-LEXV,RESERVE-LEXV 34 | CALL INBUF-STUFF,P-INBUF,RESERVE-INBUF 35 | EQUAL? VERBOSITY,1,2 \?CND23 36 | EQUAL? PLAYER,WINNER \?CND23 37 | CRLF 38 | ?CND23: SET 'RESERVE-PTR,FALSE-VALUE 39 | SET 'P-CONT,FALSE-VALUE 40 | JUMP ?CND19 41 | ?ELS21: ZERO? P-CONT /?ELS29 42 | SET 'PTR,P-CONT 43 | EQUAL? VERBOSITY,1,2 \?CND31 44 | EQUAL? PLAYER,WINNER \?CND31 45 | CRLF 46 | ?CND31: SET 'P-CONT,FALSE-VALUE 47 | JUMP ?CND19 48 | ?ELS29: SET 'WINNER,PLAYER 49 | SET 'QUOTE-FLAG,FALSE-VALUE 50 | LOC WINNER 51 | FSET? STACK,VEHBIT /?CND38 52 | LOC WINNER >HERE 53 | ?CND38: EQUAL? VERBOSITY,1,2 \?CND41 54 | CRLF 55 | ?CND41: GET 0,8 56 | BTST STACK,4 \?CND44 57 | CALL1 REFRESH-STATUS-LINE 58 | GET 0,8 59 | BAND STACK,-5 60 | PUT 0,8,STACK 61 | ?CND44: PRINTI ">" 62 | READ P-INBUF,P-LEXV 63 | ?CND19: GETB P-LEXV,P-LEXWORDS >P-LEN 64 | ZERO? P-LEN \?ELS51 65 | PRINTI "[I beg your pardon?]" 66 | CRLF 67 | RFALSE 68 | ?ELS51: GET P-LEXV,PTR 69 | EQUAL? STACK,W?OOPS \?ELS55 70 | ADD PTR,P-LEXELEN 71 | GET P-LEXV,STACK 72 | EQUAL? STACK,W?PERIOD,W?COMMA \?CND56 73 | ADD PTR,P-LEXELEN >PTR 74 | DEC 'P-LEN 75 | ?CND56: GRTR? P-LEN,1 /?ELS61 76 | PRINTI "[There was no word after OOPS!]" 77 | CRLF 78 | RFALSE 79 | ?ELS61: GET OOPS-TABLE,O-PTR >VAL 80 | ZERO? VAL /?ELS65 81 | GRTR? P-LEN,2 \?CND66 82 | PRINTI "[Warning: only the first word after OOPS is used.]" 83 | CRLF 84 | ?CND66: ADD PTR,P-LEXELEN 85 | GET P-LEXV,STACK 86 | PUT AGAIN-LEXV,VAL,STACK 87 | SET 'WINNER,OWINNER 88 | MUL PTR,P-LEXELEN 89 | ADD STACK,6 90 | GETB P-LEXV,STACK >?TMP2 91 | MUL PTR,P-LEXELEN 92 | ADD STACK,7 93 | GETB P-LEXV,STACK >?TMP1 94 | MUL VAL,P-LEXELEN 95 | ADD STACK,3 96 | CALL INBUF-ADD,?TMP2,?TMP1,STACK 97 | CALL STUFF,P-LEXV,AGAIN-LEXV 98 | GETB P-LEXV,P-LEXWORDS >P-LEN 99 | GET OOPS-TABLE,O-START >PTR 100 | CALL INBUF-STUFF,P-INBUF,OOPS-INBUF 101 | JUMP ?CND49 102 | ?ELS65: PUT OOPS-TABLE,O-END,FALSE-VALUE 103 | PRINTI "[OOPS is useful only after the ""I don't know the word..."" response.]" 104 | CRLF 105 | RFALSE 106 | ?ELS55: PUT OOPS-TABLE,O-END,FALSE-VALUE 107 | ?CND49: GET P-LEXV,PTR 108 | EQUAL? STACK,W?AGAIN,W?G \?ELS79 109 | ZERO? P-OFLAG /?ELS82 110 | PRINTI "[It's difficult to repeat fragments.]" 111 | CRLF 112 | RFALSE 113 | ?ELS82: ZERO? P-WON \?ELS87 114 | PRINTI "[That would just repeat a mistake!]" 115 | CRLF 116 | RFALSE 117 | ?ELS87: EQUAL? OWINNER,PLAYER /?ELS91 118 | CALL2 VISIBLE?,OWINNER 119 | ZERO? STACK \?ELS91 120 | PRINTI "[You can't see" 121 | CALL2 ARTICLE,OWINNER 122 | PRINTI " anymore.]" 123 | CRLF 124 | CALL1 CLEAR-BUF 125 | RFALSE 126 | ?ELS91: GRTR? P-LEN,1 \?ELS99 127 | ADD PTR,P-LEXELEN 128 | GET P-LEXV,STACK 129 | EQUAL? STACK,W?PERIOD,W?COMMA,W?THEN /?THN103 130 | ADD PTR,P-LEXELEN 131 | GET P-LEXV,STACK 132 | EQUAL? STACK,W?AND \?ELS102 133 | ?THN103: MUL 2,P-LEXELEN 134 | ADD PTR,STACK >PTR 135 | GETB P-LEXV,P-LEXWORDS 136 | SUB STACK,2 137 | PUTB P-LEXV,P-LEXWORDS,STACK 138 | JUMP ?CND80 139 | ?ELS102: PRINTI "[I couldn't understand that sentence.]" 140 | CRLF 141 | RFALSE 142 | ?ELS99: ADD PTR,P-LEXELEN >PTR 143 | GETB P-LEXV,P-LEXWORDS 144 | SUB STACK,1 145 | PUTB P-LEXV,P-LEXWORDS,STACK 146 | ?CND80: GETB P-LEXV,P-LEXWORDS 147 | GRTR? STACK,0 \?ELS113 148 | CALL STUFF,RESERVE-LEXV,P-LEXV 149 | CALL INBUF-STUFF,RESERVE-INBUF,P-INBUF 150 | SET 'RESERVE-PTR,PTR 151 | JUMP ?CND111 152 | ?ELS113: SET 'RESERVE-PTR,FALSE-VALUE 153 | ?CND111: SET 'WINNER,OWINNER 154 | SET 'P-MERGED,OMERGED 155 | CALL INBUF-STUFF,P-INBUF,OOPS-INBUF 156 | CALL STUFF,P-LEXV,AGAIN-LEXV 157 | SET 'CNT,-1 158 | SET 'DIR,AGAIN-DIR 159 | ?PRG116: IGRTR? 'CNT,P-ITBLLEN \?ELS120 160 | JUMP ?CND77 161 | ?ELS120: GET P-OTBL,CNT 162 | PUT P-ITBL,CNT,STACK 163 | JUMP ?PRG116 164 | ?ELS79: CALL STUFF,AGAIN-LEXV,P-LEXV 165 | CALL INBUF-STUFF,OOPS-INBUF,P-INBUF 166 | PUT OOPS-TABLE,O-START,PTR 167 | MUL 4,P-LEN 168 | PUT OOPS-TABLE,O-LENGTH,STACK 169 | GETB P-LEXV,P-LEXWORDS 170 | MUL P-LEXELEN,STACK 171 | ADD PTR,STACK 172 | MUL 2,STACK >LEN 173 | SUB LEN,1 174 | GETB P-LEXV,STACK >?TMP1 175 | SUB LEN,2 176 | GETB P-LEXV,STACK 177 | ADD ?TMP1,STACK 178 | PUT OOPS-TABLE,O-END,STACK 179 | SET 'RESERVE-PTR,FALSE-VALUE 180 | SET 'LEN,P-LEN 181 | SET 'P-NCN,0 182 | SET 'P-GETFLAGS,0 183 | ?PRG125: DEC 'P-LEN 184 | LESS? P-LEN,0 \?ELS129 185 | SET 'QUOTE-FLAG,FALSE-VALUE 186 | JUMP ?CND77 187 | ?ELS129: GET P-LEXV,PTR >WRD 188 | ZERO? WRD \?THN132 189 | CALL2 NUMBER?,PTR >WRD 190 | ZERO? WRD /?ELS131 191 | ?THN132: EQUAL? WRD,W?TO \?ELS136 192 | EQUAL? VERB,ACT?TELL,ACT?ASK \?ELS136 193 | PUT P-ITBL,P-VERB,ACT?TELL 194 | SET 'WRD,W?QUOTE 195 | JUMP ?CND134 196 | ?ELS136: EQUAL? WRD,W?THEN \?ELS140 197 | GRTR? P-LEN,0 \?ELS140 198 | ZERO? VERB \?ELS140 199 | ZERO? QUOTE-FLAG \?ELS140 200 | PUT P-ITBL,P-VERB,ACT?TELL 201 | PUT P-ITBL,P-VERBN,0 202 | SET 'WRD,W?QUOTE 203 | JUMP ?CND134 204 | ?ELS140: EQUAL? WRD,W?PERIOD \?CND134 205 | EQUAL? LW,W?MR,W?DR,W?ST \?CND134 206 | DEC 'P-NCN 207 | CALL CHANGE-LEXV,PTR,LW,TRUE-VALUE 208 | SET 'WRD,LW 209 | SET 'LW,0 210 | ?CND134: EQUAL? WRD,W?THEN,W?PERIOD,W?QUOTE \?ELS149 211 | EQUAL? WRD,W?QUOTE \?CND150 212 | ZERO? QUOTE-FLAG /?ELS155 213 | SET 'QUOTE-FLAG,FALSE-VALUE 214 | JUMP ?CND150 215 | ?ELS155: SET 'QUOTE-FLAG,TRUE-VALUE 216 | ?CND150: ZERO? P-LEN /?THN159 217 | ADD PTR,P-LEXELEN >P-CONT 218 | ?THN159: PUTB P-LEXV,P-LEXWORDS,P-LEN 219 | JUMP ?CND77 220 | ?ELS149: CALL WT?,WRD,PS?DIRECTION,P1?DIRECTION >VAL 221 | ZERO? VAL /?ELS162 222 | EQUAL? VERB,FALSE-VALUE,ACT?WALK \?ELS162 223 | EQUAL? LEN,1 /?THN165 224 | EQUAL? LEN,2 \?ELS168 225 | EQUAL? VERB,ACT?WALK /?THN165 226 | ?ELS168: ADD PTR,P-LEXELEN 227 | GET P-LEXV,STACK >NW 228 | EQUAL? NW,W?THEN,W?PERIOD,W?QUOTE \?ELS170 229 | LESS? LEN,2 \?THN165 230 | ?ELS170: ZERO? QUOTE-FLAG /?ELS172 231 | EQUAL? LEN,2 \?ELS172 232 | EQUAL? NW,W?QUOTE /?THN165 233 | ?ELS172: GRTR? LEN,2 \?ELS162 234 | EQUAL? NW,W?COMMA,W?AND \?ELS162 235 | ?THN165: SET 'DIR,VAL 236 | EQUAL? NW,W?COMMA,W?AND \?CND175 237 | ADD PTR,P-LEXELEN 238 | CALL CHANGE-LEXV,STACK,W?THEN 239 | ?CND175: GRTR? LEN,2 /?CND127 240 | SET 'QUOTE-FLAG,FALSE-VALUE 241 | JUMP ?CND77 242 | ?ELS162: CALL WT?,WRD,PS?VERB,P1?VERB >VAL 243 | ZERO? VAL /?ELS182 244 | ZERO? VERB \?ELS182 245 | SET 'VERB,VAL 246 | PUT P-ITBL,P-VERB,VAL 247 | PUT P-ITBL,P-VERBN,P-VTBL 248 | PUT P-VTBL,0,WRD 249 | MUL PTR,2 250 | ADD STACK,2 >CNT 251 | GETB P-LEXV,CNT 252 | PUTB P-VTBL,2,STACK 253 | ADD CNT,1 254 | GETB P-LEXV,STACK 255 | PUTB P-VTBL,3,STACK 256 | JUMP ?CND127 257 | ?ELS182: CALL WT?,WRD,PS?PREPOSITION,0 >VAL 258 | ZERO? VAL \?THN187 259 | EQUAL? WRD,W?ALL,W?ONE,W?BOTH /?THN191 260 | CALL WT?,WRD,PS?ADJECTIVE 261 | ZERO? STACK \?THN191 262 | CALL WT?,WRD,PS?OBJECT 263 | ZERO? STACK /?ELS186 264 | ?THN191: SET 'VAL,0 \?ELS186 265 | ?THN187: GRTR? P-LEN,1 \?ELS195 266 | ADD PTR,P-LEXELEN 267 | GET P-LEXV,STACK 268 | EQUAL? STACK,W?OF \?ELS195 269 | ZERO? VAL \?ELS195 270 | EQUAL? WRD,W?ALL,W?ONE,W?A /?ELS195 271 | EQUAL? WRD,W?BOTH /?ELS195 272 | SET 'OF-FLAG,TRUE-VALUE 273 | JUMP ?CND127 274 | ?ELS195: ZERO? VAL /?ELS199 275 | ZERO? P-LEN /?THN202 276 | ADD PTR,2 277 | GET P-LEXV,STACK 278 | EQUAL? STACK,W?THEN,W?PERIOD \?ELS199 279 | ?THN202: SET 'P-END-ON-PREP,TRUE-VALUE 280 | LESS? P-NCN,2 \?CND127 281 | PUT P-ITBL,P-PREP1,VAL 282 | PUT P-ITBL,P-PREP1N,WRD 283 | JUMP ?CND127 284 | ?ELS199: EQUAL? P-NCN,2 \?ELS208 285 | PRINTI "[There were too many nouns in that sentence.]" 286 | CRLF 287 | RFALSE 288 | ?ELS208: INC 'P-NCN 289 | CALL CLAUSE,PTR,VAL,WRD >PTR 290 | ZERO? PTR /FALSE 291 | LESS? PTR,0 \?CND127 292 | SET 'QUOTE-FLAG,FALSE-VALUE 293 | JUMP ?CND77 294 | ?ELS186: EQUAL? WRD,W?OF \?ELS219 295 | ZERO? OF-FLAG /?THN223 296 | ADD PTR,P-LEXELEN 297 | GET P-LEXV,STACK 298 | EQUAL? STACK,W?PERIOD,W?THEN \?ELS222 299 | ?THN223: CALL2 CANT-USE,PTR 300 | RFALSE 301 | ?ELS222: SET 'OF-FLAG,FALSE-VALUE 302 | JUMP ?CND127 303 | ?ELS219: CALL WT?,WRD,PS?BUZZ-WORD 304 | ZERO? STACK /?ELS228 305 | JUMP ?CND127 306 | ?ELS228: EQUAL? VERB,ACT?TELL \?ELS230 307 | CALL WT?,WRD,PS?VERB 308 | ZERO? STACK /?ELS230 309 | PRINTI "[Please consult your manual for the correct way to talk to characters.]" 310 | CRLF 311 | RFALSE 312 | ?ELS230: CALL2 CANT-USE,PTR 313 | RFALSE 314 | ?ELS131: CALL2 UNKNOWN-WORD,PTR 315 | RFALSE 316 | ?CND127: SET 'LW,WRD 317 | ADD PTR,P-LEXELEN >PTR 318 | JUMP ?PRG125 319 | ?CND77: PUT OOPS-TABLE,O-PTR,FALSE-VALUE 320 | ZERO? DIR /?CND239 321 | SET 'PRSA,V?WALK 322 | SET 'PRSO,DIR 323 | SET 'P-OFLAG,FALSE-VALUE 324 | SET 'P-WALK-DIR,DIR 325 | SET 'AGAIN-DIR,DIR 326 | RETURN TRUE-VALUE 327 | ?CND239: ZERO? P-OFLAG /?CND243 328 | CALL1 ORPHAN-MERGE 329 | ?CND243: SET 'P-WALK-DIR,FALSE-VALUE 330 | SET 'AGAIN-DIR,FALSE-VALUE 331 | CALL1 SYNTAX-CHECK 332 | ZERO? STACK /FALSE 333 | CALL1 SNARF-OBJECTS 334 | ZERO? STACK /FALSE 335 | CALL1 MANY-CHECK 336 | ZERO? STACK /FALSE 337 | CALL1 TAKE-CHECK 338 | ZERO? STACK /FALSE 339 | RTRUE 340 | 341 | 342 | .FUNCT CHANGE-LEXV,PTR,WRD,BPTR=0,X,Y,Z 343 | ZERO? BPTR /?CND1 344 | SUB PTR,P-LEXELEN 345 | MUL 2,STACK 346 | ADD 2,STACK >X 347 | GETB P-LEXV,X >Y 348 | MUL 2,PTR 349 | ADD 2,STACK >Z 350 | PUTB P-LEXV,Z,Y 351 | PUTB AGAIN-LEXV,Z,Y 352 | ADD 1,X 353 | GETB P-LEXV,STACK >Y 354 | MUL 2,PTR 355 | ADD 3,STACK >Z 356 | PUTB P-LEXV,Z,Y 357 | PUTB AGAIN-LEXV,Z,Y 358 | ?CND1: PUT P-LEXV,PTR,WRD 359 | PUT AGAIN-LEXV,PTR,WRD 360 | RTRUE 361 | 362 | 363 | .FUNCT STUFF,DEST,SRC,MAX=29,PTR=P-LEXSTART,CTR=1,BPTR 364 | GETB SRC,0 365 | PUTB DEST,0,STACK 366 | GETB SRC,1 367 | PUTB DEST,1,STACK 368 | ?PRG1: GET SRC,PTR 369 | PUT DEST,PTR,STACK 370 | MUL PTR,2 371 | ADD STACK,2 >BPTR 372 | GETB SRC,BPTR 373 | PUTB DEST,BPTR,STACK 374 | INC 'BPTR 375 | GETB SRC,BPTR 376 | PUTB DEST,BPTR,STACK 377 | ADD PTR,P-LEXELEN >PTR 378 | IGRTR? 'CTR,MAX \?PRG1 379 | RTRUE 380 | 381 | 382 | .FUNCT INBUF-STUFF,DEST,SRC,CNT=-1 383 | ?PRG1: IGRTR? 'CNT,59 /TRUE 384 | GETB SRC,CNT 385 | PUTB DEST,CNT,STACK 386 | JUMP ?PRG1 387 | 388 | 389 | .FUNCT INBUF-ADD,LEN,BEG,SLOT,DBEG,CTR=0,TMP,?TMP1 390 | GET OOPS-TABLE,O-END >TMP 391 | ZERO? TMP /?ELS3 392 | SET 'DBEG,TMP 393 | JUMP ?CND1 394 | ?ELS3: GET OOPS-TABLE,O-LENGTH >TMP 395 | GETB AGAIN-LEXV,TMP >?TMP1 396 | ADD TMP,1 397 | GETB AGAIN-LEXV,STACK 398 | ADD ?TMP1,STACK >DBEG 399 | ?CND1: ADD DBEG,LEN 400 | PUT OOPS-TABLE,O-END,STACK 401 | ?PRG6: ADD DBEG,CTR >?TMP1 402 | ADD BEG,CTR 403 | GETB P-INBUF,STACK 404 | PUTB OOPS-INBUF,?TMP1,STACK 405 | INC 'CTR 406 | EQUAL? CTR,LEN \?PRG6 407 | PUTB AGAIN-LEXV,SLOT,DBEG 408 | SUB SLOT,1 409 | PUTB AGAIN-LEXV,STACK,LEN 410 | RTRUE 411 | 412 | 413 | .FUNCT WT?,PTR,BIT,B1=5,OFFS=P-P1OFF,TYP 414 | GETB PTR,P-PSOFF >TYP 415 | BTST TYP,BIT \FALSE 416 | GRTR? B1,4 /TRUE 417 | BAND TYP,P-P1BITS >TYP 418 | EQUAL? TYP,B1 /?CND13 419 | INC 'OFFS 420 | ?CND13: GETB PTR,OFFS 421 | RSTACK 422 | 423 | 424 | .FUNCT CLAUSE,PTR,VAL,WRD,OFF,NUM,ANDFLG=0,FIRST??=1,NW,LW=0,?TMP1 425 | SUB P-NCN,1 426 | MUL STACK,2 >OFF 427 | ZERO? VAL /?ELS3 428 | ADD P-PREP1,OFF >NUM 429 | PUT P-ITBL,NUM,VAL 430 | ADD NUM,1 431 | PUT P-ITBL,STACK,WRD 432 | ADD PTR,P-LEXELEN >PTR 433 | JUMP ?CND1 434 | ?ELS3: INC 'P-LEN 435 | ?CND1: ZERO? P-LEN \?CND6 436 | DEC 'P-NCN 437 | RETURN -1 438 | ?CND6: ADD P-NC1,OFF >NUM 439 | MUL PTR,2 440 | ADD P-LEXV,STACK 441 | PUT P-ITBL,NUM,STACK 442 | GET P-LEXV,PTR 443 | EQUAL? STACK,W?THE,W?A,W?AN \?CND9 444 | GET P-ITBL,NUM 445 | ADD STACK,4 446 | PUT P-ITBL,NUM,STACK 447 | ?CND9: 448 | ?PRG12: DLESS? 'P-LEN,0 \?CND14 449 | ADD NUM,1 >?TMP1 450 | MUL PTR,2 451 | ADD P-LEXV,STACK 452 | PUT P-ITBL,?TMP1,STACK 453 | RETURN -1 454 | ?CND14: GET P-LEXV,PTR >WRD 455 | ZERO? WRD \?THN20 456 | CALL2 NUMBER?,PTR >WRD 457 | ZERO? WRD /?ELS19 458 | ?THN20: ZERO? P-LEN \?ELS24 459 | SET 'NW,0 460 | JUMP ?CND22 461 | ?ELS24: ADD PTR,P-LEXELEN 462 | GET P-LEXV,STACK >NW 463 | ?CND22: EQUAL? WRD,W?PERIOD \?ELS29 464 | EQUAL? LW,W?MR,W?DR,W?ST \?ELS29 465 | SET 'LW,0 466 | JUMP ?CND17 467 | ?ELS29: EQUAL? WRD,W?AND,W?COMMA \?ELS33 468 | SET 'ANDFLG,TRUE-VALUE 469 | JUMP ?CND17 470 | ?ELS33: EQUAL? WRD,W?ALL,W?ONE,W?BOTH \?ELS35 471 | EQUAL? NW,W?OF \?CND17 472 | DEC 'P-LEN 473 | ADD PTR,P-LEXELEN >PTR 474 | JUMP ?CND17 475 | ?ELS35: EQUAL? WRD,W?THEN,W?PERIOD /?THN41 476 | CALL WT?,WRD,PS?PREPOSITION 477 | ZERO? STACK /?ELS40 478 | GET P-ITBL,P-VERB 479 | ZERO? STACK /?ELS40 480 | ZERO? FIRST?? \?ELS40 481 | ?THN41: INC 'P-LEN 482 | ADD NUM,1 >?TMP1 483 | MUL PTR,2 484 | ADD P-LEXV,STACK 485 | PUT P-ITBL,?TMP1,STACK 486 | SUB PTR,P-LEXELEN 487 | RETURN STACK 488 | ?ELS40: ZERO? ANDFLG /?ELS46 489 | GET P-ITBL,P-VERB 490 | ZERO? STACK \?ELS46 491 | SUB PTR,4 >PTR 492 | ADD PTR,2 493 | CALL CHANGE-LEXV,STACK,W?THEN 494 | ADD P-LEN,2 >P-LEN 495 | JUMP ?CND17 496 | ?ELS46: CALL WT?,WRD,PS?OBJECT 497 | ZERO? STACK /?ELS50 498 | GRTR? P-LEN,0 \?ELS53 499 | EQUAL? NW,W?OF \?ELS53 500 | EQUAL? WRD,W?ALL,W?ONE /?ELS53 501 | JUMP ?CND17 502 | ?ELS53: CALL WT?,WRD,PS?ADJECTIVE 503 | ZERO? STACK /?ELS57 504 | ZERO? NW /?ELS57 505 | CALL WT?,NW,PS?OBJECT 506 | ZERO? STACK /?ELS57 507 | JUMP ?CND17 508 | ?ELS57: ZERO? ANDFLG \?ELS61 509 | EQUAL? NW,W?BUT,W?EXCEPT /?ELS61 510 | EQUAL? NW,W?AND,W?COMMA /?ELS61 511 | ADD NUM,1 >?TMP1 512 | ADD PTR,2 513 | MUL STACK,2 514 | ADD P-LEXV,STACK 515 | PUT P-ITBL,?TMP1,STACK 516 | RETURN PTR 517 | ?ELS61: SET 'ANDFLG,FALSE-VALUE 518 | JUMP ?CND17 519 | ?ELS50: CALL WT?,WRD,PS?ADJECTIVE 520 | ZERO? STACK \?CND17 521 | CALL WT?,WRD,PS?BUZZ-WORD 522 | ZERO? STACK /?ELS67 523 | JUMP ?CND17 524 | ?ELS67: CALL WT?,WRD,PS?PREPOSITION 525 | ZERO? STACK /?ELS71 526 | JUMP ?CND17 527 | ?ELS71: CALL2 CANT-USE,PTR 528 | RFALSE 529 | ?ELS19: CALL2 UNKNOWN-WORD,PTR 530 | RFALSE 531 | ?CND17: SET 'LW,WRD 532 | SET 'FIRST??,FALSE-VALUE 533 | ADD PTR,P-LEXELEN >PTR 534 | JUMP ?PRG12 535 | 536 | 537 | .FUNCT NUMBER?,PTR,CNT,BPTR,CHR,SUM=0,TIM=0,?TMP1 538 | MUL PTR,2 539 | ADD P-LEXV,STACK 540 | GETB STACK,2 >CNT 541 | MUL PTR,2 542 | ADD P-LEXV,STACK 543 | GETB STACK,3 >BPTR 544 | ?PRG1: DLESS? 'CNT,0 \?ELS5 545 | JUMP ?REP2 546 | ?ELS5: GETB P-INBUF,BPTR >CHR 547 | EQUAL? CHR,58 \?ELS10 548 | SET 'TIM,SUM 549 | SET 'SUM,0 550 | JUMP ?CND8 551 | ?ELS10: GRTR? SUM,10000 /FALSE 552 | LESS? CHR,58 \FALSE 553 | GRTR? CHR,47 \FALSE 554 | MUL SUM,10 >?TMP1 555 | SUB CHR,48 556 | ADD ?TMP1,STACK >SUM 557 | ?CND8: INC 'BPTR 558 | JUMP ?PRG1 559 | ?REP2: CALL CHANGE-LEXV,PTR,W?INTNUM 560 | GRTR? SUM,9999 /FALSE 561 | ZERO? TIM /?CND19 562 | GRTR? TIM,23 /FALSE 563 | MUL TIM,60 564 | ADD SUM,STACK >SUM 565 | ?CND19: SET 'P-NUMBER,SUM 566 | RETURN W?INTNUM 567 | 568 | 569 | .FUNCT ORPHAN-MERGE,CNT=-1,TEMP,VERB,BEG,END,ADJ=0,WRD,?TMP1 570 | SET 'P-OFLAG,FALSE-VALUE 571 | GET P-ITBL,P-VERBN 572 | GET STACK,0 >WRD 573 | CALL WT?,WRD,PS?VERB,P1?VERB >?TMP1 574 | GET P-OTBL,P-VERB 575 | EQUAL? ?TMP1,STACK /?THN4 576 | CALL WT?,WRD,PS?ADJECTIVE 577 | ZERO? STACK /?ELS3 578 | ?THN4: SET 'ADJ,TRUE-VALUE 579 | JUMP ?CND1 580 | ?ELS3: CALL WT?,WRD,PS?OBJECT 581 | ZERO? STACK /?CND1 582 | ZERO? P-NCN \?CND1 583 | PUT P-ITBL,P-VERB,0 584 | PUT P-ITBL,P-VERBN,0 585 | ADD P-LEXV,2 586 | PUT P-ITBL,P-NC1,STACK 587 | ADD P-LEXV,6 588 | PUT P-ITBL,P-NC1L,STACK 589 | SET 'P-NCN,1 590 | ?CND1: GET P-ITBL,P-VERB >VERB 591 | ZERO? VERB /?ELS12 592 | ZERO? ADJ \?ELS12 593 | GET P-OTBL,P-VERB 594 | EQUAL? VERB,STACK \FALSE 595 | ?ELS12: EQUAL? P-NCN,2 /FALSE 596 | GET P-OTBL,P-NC1 597 | EQUAL? STACK,1 \?ELS18 598 | GET P-ITBL,P-PREP1 >TEMP 599 | GET P-OTBL,P-PREP1 600 | EQUAL? TEMP,STACK /?THN22 601 | ZERO? TEMP \FALSE 602 | ?THN22: ZERO? ADJ /?ELS26 603 | ADD P-LEXV,2 604 | PUT P-OTBL,P-NC1,STACK 605 | GET P-ITBL,P-NC1L 606 | ZERO? STACK \?CND28 607 | ADD P-LEXV,6 608 | PUT P-ITBL,P-NC1L,STACK 609 | ?CND28: ZERO? P-NCN \?CND24 610 | SET 'P-NCN,1 611 | JUMP ?CND24 612 | ?ELS26: GET P-ITBL,P-NC1 613 | PUT P-OTBL,P-NC1,STACK 614 | ?CND24: GET P-ITBL,P-NC1L 615 | PUT P-OTBL,P-NC1L,STACK 616 | JUMP ?CND10 617 | ?ELS18: GET P-OTBL,P-NC2 618 | EQUAL? STACK,1 \?ELS39 619 | GET P-ITBL,P-PREP1 >TEMP 620 | GET P-OTBL,P-PREP2 621 | EQUAL? TEMP,STACK /?THN43 622 | ZERO? TEMP \FALSE 623 | ?THN43: ZERO? ADJ /?CND45 624 | ADD P-LEXV,2 625 | PUT P-ITBL,P-NC1,STACK 626 | GET P-ITBL,P-NC1L 627 | ZERO? STACK \?CND45 628 | ADD P-LEXV,6 629 | PUT P-ITBL,P-NC1L,STACK 630 | ?CND45: GET P-ITBL,P-NC1 631 | PUT P-OTBL,P-NC2,STACK 632 | GET P-ITBL,P-NC1L 633 | PUT P-OTBL,P-NC2L,STACK 634 | SET 'P-NCN,2 635 | JUMP ?CND10 636 | ?ELS39: ZERO? P-ACLAUSE /?CND10 637 | EQUAL? P-NCN,1 /?ELS59 638 | ZERO? ADJ \?ELS59 639 | SET 'P-ACLAUSE,FALSE-VALUE 640 | RFALSE 641 | ?ELS59: GET P-ITBL,P-NC1 >BEG 642 | ZERO? ADJ /?CND64 643 | ADD P-LEXV,2 >BEG 644 | SET 'ADJ,FALSE-VALUE 645 | ?CND64: GET P-ITBL,P-NC1L >END 646 | ?PRG68: GET BEG,0 >WRD 647 | EQUAL? BEG,END \?ELS72 648 | ZERO? ADJ /?ELS75 649 | CALL2 ACLAUSE-WIN,ADJ 650 | JUMP ?CND57 651 | ?ELS75: SET 'P-ACLAUSE,FALSE-VALUE 652 | RFALSE 653 | ?ELS72: ZERO? ADJ \?ELS80 654 | GETB WRD,P-PSOFF 655 | BTST STACK,PS?ADJECTIVE /?THN83 656 | EQUAL? WRD,W?ALL,W?ONE \?ELS80 657 | ?THN83: SET 'ADJ,WRD 658 | JUMP ?CND70 659 | ?ELS80: EQUAL? WRD,W?ONE \?ELS86 660 | CALL2 ACLAUSE-WIN,ADJ 661 | JUMP ?CND57 662 | ?ELS86: GETB WRD,P-PSOFF 663 | BTST STACK,PS?OBJECT \?CND70 664 | EQUAL? WRD,P-ANAM \?ELS91 665 | CALL2 ACLAUSE-WIN,ADJ 666 | JUMP ?CND10 667 | ?ELS91: CALL1 NCLAUSE-WIN 668 | JUMP ?CND10 669 | ?CND70: ADD BEG,P-WORDLEN >BEG 670 | ZERO? END \?PRG68 671 | SET 'END,BEG 672 | SET 'P-NCN,1 673 | SUB BEG,4 674 | PUT P-ITBL,P-NC1,STACK 675 | PUT P-ITBL,P-NC1L,BEG 676 | JUMP ?PRG68 677 | ?CND57: 678 | ?CND10: GET P-OVTBL,0 679 | PUT P-VTBL,0,STACK 680 | GETB P-OVTBL,2 681 | PUTB P-VTBL,2,STACK 682 | GETB P-OVTBL,3 683 | PUTB P-VTBL,3,STACK 684 | PUT P-OTBL,P-VERBN,P-VTBL 685 | PUTB P-VTBL,2,0 686 | ?PRG97: IGRTR? 'CNT,P-ITBLLEN \?ELS101 687 | SET 'P-MERGED,TRUE-VALUE 688 | RTRUE 689 | ?ELS101: GET P-OTBL,CNT 690 | PUT P-ITBL,CNT,STACK 691 | JUMP ?PRG97 692 | 693 | 694 | .FUNCT ACLAUSE-WIN,ADJ,?TMP1 695 | GET P-OTBL,P-VERB 696 | PUT P-ITBL,P-VERB,STACK 697 | ADD P-ACLAUSE,1 >?TMP1 698 | ADD P-ACLAUSE,1 699 | CALL CLAUSE-COPY,P-OTBL,P-OTBL,P-ACLAUSE,?TMP1,P-ACLAUSE,STACK,ADJ 700 | GET P-OTBL,P-NC2 701 | ZERO? STACK /?ELS2 702 | SET 'P-NCN,2 703 | ?ELS2: SET 'P-ACLAUSE,FALSE-VALUE 704 | RTRUE 705 | 706 | 707 | .FUNCT NCLAUSE-WIN 708 | ADD P-ACLAUSE,1 709 | CALL CLAUSE-COPY,P-ITBL,P-OTBL,P-NC1,P-NC1L,P-ACLAUSE,STACK 710 | GET P-OTBL,P-NC2 711 | ZERO? STACK /?ELS2 712 | SET 'P-NCN,2 713 | ?ELS2: SET 'P-ACLAUSE,FALSE-VALUE 714 | RTRUE 715 | 716 | 717 | .FUNCT WORD-PRINT,CNT,BUF 718 | ?PRG1: DLESS? 'CNT,0 /TRUE 719 | GETB P-INBUF,BUF 720 | PRINTC STACK 721 | INC 'BUF 722 | JUMP ?PRG1 723 | 724 | 725 | .FUNCT UNKNOWN-WORD,PTR,BUF,?TMP1 726 | PUT OOPS-TABLE,O-PTR,PTR 727 | PRINTI "[I don't know the word """ 728 | MUL PTR,2 >BUF 729 | ADD P-LEXV,BUF 730 | GETB STACK,2 >?TMP1 731 | ADD P-LEXV,BUF 732 | GETB STACK,3 733 | CALL WORD-PRINT,?TMP1,STACK 734 | PRINTI """.]" 735 | CRLF 736 | SET 'QUOTE-FLAG,FALSE-VALUE 737 | RETURN QUOTE-FLAG 738 | 739 | 740 | .FUNCT CANT-USE,PTR,BUF,?TMP1 741 | PRINTI "[You used the word """ 742 | MUL PTR,2 >BUF 743 | ADD P-LEXV,BUF 744 | GETB STACK,2 >?TMP1 745 | ADD P-LEXV,BUF 746 | GETB STACK,3 747 | CALL WORD-PRINT,?TMP1,STACK 748 | PRINTI """ in a way that I don't understand.]" 749 | CRLF 750 | SET 'QUOTE-FLAG,FALSE-VALUE 751 | SET 'P-OFLAG,FALSE-VALUE 752 | RETURN P-OFLAG 753 | 754 | 755 | .FUNCT SYNTAX-CHECK,SYN,LEN,NUM,OBJ,DRIVE1=0,DRIVE2=0,PREP,VERB,TMP,?TMP2,?TMP1 756 | GET P-ITBL,P-VERB >VERB 757 | ZERO? VERB \?CND1 758 | PRINTI "[There was no verb in that sentence!]" 759 | CRLF 760 | RFALSE 761 | ?CND1: SUB 255,VERB 762 | GET VERBS,STACK >SYN 763 | GETB SYN,0 >LEN 764 | ADD 1,SYN >SYN 765 | ?PRG6: GETB SYN,P-SBITS 766 | BAND STACK,P-SONUMS >NUM 767 | GRTR? P-NCN,NUM \?ELS10 768 | JUMP ?CND8 769 | ?ELS10: LESS? NUM,1 /?ELS12 770 | ZERO? P-NCN \?ELS12 771 | GET P-ITBL,P-PREP1 >PREP 772 | ZERO? PREP /?THN15 773 | GETB SYN,P-SPREP1 774 | EQUAL? PREP,STACK \?ELS12 775 | ?THN15: SET 'DRIVE1,SYN 776 | JUMP ?CND8 777 | ?ELS12: GETB SYN,P-SPREP1 >?TMP1 778 | GET P-ITBL,P-PREP1 779 | EQUAL? ?TMP1,STACK \?CND8 780 | EQUAL? NUM,2 \?ELS21 781 | EQUAL? P-NCN,1 \?ELS21 782 | SET 'DRIVE2,SYN 783 | JUMP ?CND8 784 | ?ELS21: GETB SYN,P-SPREP2 >?TMP1 785 | GET P-ITBL,P-PREP2 786 | EQUAL? ?TMP1,STACK \?CND8 787 | CALL2 SYNTAX-FOUND,SYN 788 | RTRUE 789 | ?CND8: DLESS? 'LEN,1 \?ELS28 790 | ZERO? DRIVE1 \?REP7 791 | ZERO? DRIVE2 /?ELS31 792 | JUMP ?REP7 793 | ?ELS31: PRINT RECOGNIZE 794 | CRLF 795 | RFALSE 796 | ?ELS28: ADD SYN,P-SYNLEN >SYN 797 | JUMP ?PRG6 798 | ?REP7: ZERO? DRIVE1 /?ELS44 799 | GETB DRIVE1,P-SFWIM1 >?TMP2 800 | GETB DRIVE1,P-SLOC1 >?TMP1 801 | GETB DRIVE1,P-SPREP1 802 | CALL GWIM,?TMP2,?TMP1,STACK >OBJ 803 | ZERO? OBJ /?ELS44 804 | PUT P-PRSO,P-MATCHLEN,1 805 | PUT P-PRSO,1,OBJ 806 | CALL2 SYNTAX-FOUND,DRIVE1 807 | RSTACK 808 | ?ELS44: ZERO? DRIVE2 /?ELS48 809 | GETB DRIVE2,P-SFWIM2 >?TMP2 810 | GETB DRIVE2,P-SLOC2 >?TMP1 811 | GETB DRIVE2,P-SPREP2 812 | CALL GWIM,?TMP2,?TMP1,STACK >OBJ 813 | ZERO? OBJ /?ELS48 814 | PUT P-PRSI,P-MATCHLEN,1 815 | PUT P-PRSI,1,OBJ 816 | CALL2 SYNTAX-FOUND,DRIVE2 817 | RSTACK 818 | ?ELS48: EQUAL? VERB,ACT?FIND \?ELS52 819 | PRINTI "[I can't answer that question.]" 820 | CRLF 821 | RFALSE 822 | ?ELS52: CALL2 CHANGE-CLOTHES?,VERB 823 | ZERO? STACK /?ELS56 824 | CALL1 V-YELL 825 | RFALSE 826 | ?ELS56: EQUAL? WINNER,PLAYER \?ELS61 827 | CALL ORPHAN,DRIVE1,DRIVE2 828 | PRINTI "[Wh" 829 | JUMP ?CND59 830 | ?ELS61: PRINTI "[Your command was not complete. Next time, type wh" 831 | ?CND59: EQUAL? VERB,ACT?WALK \?ELS70 832 | PRINTI "ere" 833 | JUMP ?CND68 834 | ?ELS70: ZERO? DRIVE1 /?ELS78 835 | GETB DRIVE1,P-SFWIM1 836 | EQUAL? STACK,ACTORBIT /?THN75 837 | ?ELS78: ZERO? DRIVE2 /?ELS74 838 | GETB DRIVE2,P-SFWIM2 839 | EQUAL? STACK,ACTORBIT \?ELS74 840 | ?THN75: PRINTI "om" 841 | JUMP ?CND68 842 | ?ELS74: PRINTI "at" 843 | ?CND68: EQUAL? WINNER,PLAYER \?ELS89 844 | PRINTI " do you want to " 845 | JUMP ?CND87 846 | ?ELS89: PRINTI " you want" 847 | CALL2 ARTICLE,WINNER 848 | PRINTI " to " 849 | ?CND87: CALL1 VERB-PRINT 850 | ZERO? DRIVE2 /?CND98 851 | CALL CLAUSE-PRINT,P-NC1,P-NC1L 852 | ?CND98: SET 'P-END-ON-PREP,FALSE-VALUE 853 | ZERO? DRIVE1 /?ELS106 854 | GETB DRIVE1,P-SPREP1 855 | JUMP ?CND102 856 | ?ELS106: GETB DRIVE2,P-SPREP2 857 | ?CND102: CALL2 PREP-PRINT,STACK 858 | EQUAL? WINNER,PLAYER \?ELS112 859 | SET 'P-OFLAG,TRUE-VALUE 860 | PRINTI "?]" 861 | CRLF 862 | RFALSE 863 | ?ELS112: SET 'P-OFLAG,FALSE-VALUE 864 | PRINTI ".]" 865 | CRLF 866 | RFALSE 867 | 868 | 869 | .FUNCT CHANGE-CLOTHES?,VERB,TMP 870 | EQUAL? VERB,ACT?SET \FALSE 871 | GET P-ITBL,P-NC1 >TMP 872 | ZERO? TMP /FALSE 873 | GET TMP,0 874 | EQUAL? STACK,W?CLOTHES,W?CLOTHING /TRUE 875 | GET TMP,0 876 | EQUAL? STACK,W?MY \FALSE 877 | GET TMP,2 878 | EQUAL? STACK,W?CLOTHES,W?CLOTHING \FALSE 879 | RTRUE 880 | 881 | 882 | .FUNCT VERB-PRINT,TMP,?TMP1 883 | GET P-ITBL,P-VERBN >TMP 884 | ZERO? TMP \?ELS5 885 | PRINTI "tell" 886 | RTRUE 887 | ?ELS5: GETB P-VTBL,2 888 | ZERO? STACK \?ELS9 889 | GET TMP,0 890 | PRINTB STACK 891 | RTRUE 892 | ?ELS9: GETB TMP,2 >?TMP1 893 | GETB TMP,3 894 | CALL WORD-PRINT,?TMP1,STACK 895 | PUTB P-VTBL,2,0 896 | RTRUE 897 | 898 | 899 | .FUNCT ORPHAN,D1,D2,CNT=-1 900 | ZERO? P-MERGED \?CND1 901 | PUT P-OCLAUSE,P-MATCHLEN,0 902 | ?CND1: GET P-VTBL,0 903 | PUT P-OVTBL,0,STACK 904 | GETB P-VTBL,2 905 | PUTB P-OVTBL,2,STACK 906 | GETB P-VTBL,3 907 | PUTB P-OVTBL,3,STACK 908 | ?PRG4: IGRTR? 'CNT,P-ITBLLEN \?ELS8 909 | JUMP ?REP5 910 | ?ELS8: GET P-ITBL,CNT 911 | PUT P-OTBL,CNT,STACK 912 | JUMP ?PRG4 913 | ?REP5: EQUAL? P-NCN,2 \?CND11 914 | CALL CLAUSE-COPY,P-ITBL,P-OTBL,P-NC2,P-NC2L,P-NC2,P-NC2L 915 | ?CND11: LESS? P-NCN,1 /?CND14 916 | CALL CLAUSE-COPY,P-ITBL,P-OTBL,P-NC1,P-NC1L,P-NC1,P-NC1L 917 | ?CND14: ZERO? D1 /?ELS21 918 | GETB D1,P-SPREP1 919 | PUT P-OTBL,P-PREP1,STACK 920 | PUT P-OTBL,P-NC1,1 921 | RTRUE 922 | ?ELS21: ZERO? D2 /FALSE 923 | GETB D2,P-SPREP2 924 | PUT P-OTBL,P-PREP2,STACK 925 | PUT P-OTBL,P-NC2,1 926 | RTRUE 927 | 928 | 929 | .FUNCT CLAUSE-PRINT,BPTR,EPTR,THE?=1,?TMP1 930 | GET P-ITBL,BPTR >?TMP1 931 | GET P-ITBL,EPTR 932 | CALL BUFFER-PRINT,?TMP1,STACK,THE? 933 | RSTACK 934 | 935 | 936 | .FUNCT BUFFER-PRINT,BEG,END,CP,NOSP=0,WRD,FIRST??=1,PN=0,?TMP1 937 | ?PRG1: EQUAL? BEG,END /TRUE 938 | ZERO? NOSP /?ELS10 939 | SET 'NOSP,FALSE-VALUE 940 | JUMP ?CND8 941 | ?ELS10: PRINTI " " 942 | ?CND8: GET BEG,0 >WRD 943 | EQUAL? WRD,W?PERIOD \?ELS18 944 | SET 'NOSP,TRUE-VALUE 945 | JUMP ?CND3 946 | ?ELS18: EQUAL? WRD,W?ME \?ELS20 947 | PRINTD ME 948 | SET 'PN,TRUE-VALUE 949 | JUMP ?CND3 950 | ?ELS20: EQUAL? WRD,W?MY \?ELS22 951 | PRINTI "your" 952 | SET 'PN,TRUE-VALUE 953 | JUMP ?CND3 954 | ?ELS22: CALL2 NAME?,WRD 955 | ZERO? STACK /?ELS24 956 | CALL2 CAPITALIZE,BEG 957 | SET 'PN,TRUE-VALUE 958 | JUMP ?CND3 959 | ?ELS24: ZERO? FIRST?? /?CND27 960 | ZERO? PN \?CND27 961 | ZERO? CP /?CND27 962 | PRINTI "the " 963 | ?CND27: ZERO? P-OFLAG \?THN37 964 | ZERO? P-MERGED /?ELS36 965 | ?THN37: PRINTB WRD 966 | JUMP ?CND34 967 | ?ELS36: EQUAL? WRD,W?IT \?ELS40 968 | CALL2 ACCESSIBLE?,P-IT-OBJECT 969 | ZERO? STACK /?ELS40 970 | PRINTD P-IT-OBJECT 971 | JUMP ?CND34 972 | ?ELS40: GETB BEG,2 >?TMP1 973 | GETB BEG,3 974 | CALL WORD-PRINT,?TMP1,STACK 975 | ?CND34: SET 'FIRST??,FALSE-VALUE 976 | ?CND3: ADD BEG,P-WORDLEN >BEG 977 | JUMP ?PRG1 978 | 979 | 980 | .FUNCT NAME?,WRD 981 | EQUAL? WRD,W?OZ,W?WIZARD,W?CLAVE /TRUE 982 | EQUAL? WRD,W?PERELMAN,W?ABE,W?ABRAHAM /TRUE 983 | EQUAL? WRD,W?MITCHELL,W?RAV,W?JILL /TRUE 984 | EQUAL? WRD,W?VERA,W?GOLD,W?ELEANOR /TRUE 985 | EQUAL? WRD,W?FORTZMAN,W?MR,W?DR /TRUE 986 | EQUAL? WRD,W?ROCKVIL,W?EMILY,W?WARREN /TRUE 987 | EQUAL? WRD,W?ASEEJH,W?RANDU,W?ALYSON /TRUE 988 | EQUAL? WRD,W?PRICE,W?HALLEY,W?FRANCISCO /TRUE 989 | EQUAL? WRD,W?ERNEST,W?GRIMWOLD,W?ESTHER /TRUE 990 | EQUAL? WRD,W?OMNI,W?FABB,W?OMNI-FABB /TRUE 991 | EQUAL? WRD,W?RICHARD,W?RYDER,W?MITCH /TRUE 992 | EQUAL? WRD,W?FYLA,W?FRITA \FALSE 993 | RTRUE 994 | 995 | 996 | .FUNCT CAPITALIZE,PTR,?TMP1 997 | ZERO? P-OFLAG \?THN6 998 | ZERO? P-MERGED /?ELS5 999 | ?THN6: GET PTR,0 1000 | PRINTB STACK 1001 | RTRUE 1002 | ?ELS5: GETB PTR,3 1003 | GETB P-INBUF,STACK 1004 | SUB STACK,32 1005 | PRINTC STACK 1006 | GETB PTR,2 1007 | SUB STACK,1 >?TMP1 1008 | GETB PTR,3 1009 | ADD STACK,1 1010 | CALL WORD-PRINT,?TMP1,STACK 1011 | RSTACK 1012 | 1013 | 1014 | .FUNCT PREP-PRINT,PREP,WRD 1015 | ZERO? PREP /FALSE 1016 | PRINTI " " 1017 | CALL2 PREP-FIND,PREP >WRD 1018 | PRINTB WRD 1019 | RTRUE 1020 | 1021 | 1022 | .FUNCT CLAUSE-COPY,SRC,DEST,SRCBEG,SRCEND,DESTBEG,DESTEND,INSRT=0,BEG,END 1023 | GET SRC,SRCBEG >BEG 1024 | GET SRC,SRCEND >END 1025 | GET P-OCLAUSE,P-MATCHLEN 1026 | MUL STACK,P-LEXELEN 1027 | ADD STACK,2 1028 | ADD P-OCLAUSE,STACK 1029 | PUT DEST,DESTBEG,STACK 1030 | ?PRG1: EQUAL? BEG,END \?ELS5 1031 | GET P-OCLAUSE,P-MATCHLEN 1032 | MUL STACK,P-LEXELEN 1033 | ADD STACK,2 1034 | ADD P-OCLAUSE,STACK 1035 | PUT DEST,DESTEND,STACK 1036 | RTRUE 1037 | ?ELS5: ZERO? INSRT /?CND8 1038 | GET BEG,0 1039 | EQUAL? P-ANAM,STACK \?CND8 1040 | CALL2 CLAUSE-ADD,INSRT 1041 | ?CND8: GET BEG,0 1042 | CALL2 CLAUSE-ADD,STACK 1043 | ?CND3: ADD BEG,P-WORDLEN >BEG 1044 | JUMP ?PRG1 1045 | 1046 | 1047 | .FUNCT CLAUSE-ADD,WRD,PTR 1048 | GET P-OCLAUSE,P-MATCHLEN 1049 | ADD STACK,2 >PTR 1050 | SUB PTR,1 1051 | PUT P-OCLAUSE,STACK,WRD 1052 | PUT P-OCLAUSE,PTR,0 1053 | PUT P-OCLAUSE,P-MATCHLEN,PTR 1054 | RTRUE 1055 | 1056 | 1057 | .FUNCT PREP-FIND,PREP,CNT=0,SIZE 1058 | GET PREPOSITIONS,0 1059 | MUL STACK,2 >SIZE 1060 | ?PRG1: IGRTR? 'CNT,SIZE /FALSE 1061 | GET PREPOSITIONS,CNT 1062 | EQUAL? STACK,PREP \?PRG1 1063 | SUB CNT,1 1064 | GET PREPOSITIONS,STACK 1065 | RETURN STACK 1066 | 1067 | 1068 | .FUNCT SYNTAX-FOUND,SYN 1069 | SET 'P-SYNTAX,SYN 1070 | GETB SYN,P-SACTION >PRSA 1071 | RETURN PRSA 1072 | 1073 | 1074 | .FUNCT GWIM,GBIT,LBIT,PREP,OBJ 1075 | EQUAL? GBIT,KLUDGEBIT \?CND1 1076 | RETURN ROOMS 1077 | ?CND1: SET 'P-GWIMBIT,GBIT 1078 | SET 'P-SLOCBITS,LBIT 1079 | PUT P-MERGE,P-MATCHLEN,0 1080 | CALL GET-OBJECT,P-MERGE,FALSE-VALUE 1081 | ZERO? STACK /?ELS8 1082 | SET 'P-GWIMBIT,0 1083 | GET P-MERGE,P-MATCHLEN 1084 | EQUAL? STACK,1 \FALSE 1085 | GET P-MERGE,1 >OBJ 1086 | PRINTI "[" 1087 | ZERO? PREP /?CND16 1088 | ZERO? P-END-ON-PREP \?CND16 1089 | CALL2 PREP-FIND,PREP >PREP 1090 | GET P-ITBL,P-VERB 1091 | EQUAL? STACK,ACT?SIT \?ELS23 1092 | EQUAL? PREP,W?ON \?ELS23 1093 | EQUAL? OBJ,DINETTE-SET \?ELS23 1094 | PRINTB W?AT 1095 | JUMP ?CND21 1096 | ?ELS23: GET P-ITBL,P-VERB 1097 | EQUAL? STACK,ACT?SIT \?ELS27 1098 | EQUAL? PREP,W?ON \?ELS27 1099 | EQUAL? OBJ,STADIUM-STANDS \?ELS27 1100 | PRINTB W?IN 1101 | JUMP ?CND21 1102 | ?ELS27: PRINTB PREP 1103 | ?CND21: EQUAL? PREP,W?OUT \?CND32 1104 | PRINTI " of" 1105 | ?CND32: FSET? OBJ,NARTICLEBIT /?ELS39 1106 | PRINTI " the " 1107 | JUMP ?CND16 1108 | ?ELS39: PRINTI " " 1109 | ?CND16: CALL2 DPRINT,OBJ 1110 | PRINTI "]" 1111 | CRLF 1112 | RETURN OBJ 1113 | ?ELS8: SET 'P-GWIMBIT,0 1114 | RFALSE 1115 | 1116 | 1117 | .FUNCT SNARF-OBJECTS,PTR 1118 | GET P-ITBL,P-NC1 >PTR 1119 | ZERO? PTR /?CND1 1120 | SET 'P-PHR,0 1121 | GETB P-SYNTAX,P-SLOC1 >P-SLOCBITS 1122 | GET P-ITBL,P-NC1L 1123 | CALL SNARFEM,PTR,STACK,P-PRSO 1124 | ZERO? STACK /FALSE 1125 | GET P-BUTS,P-MATCHLEN 1126 | ZERO? STACK /?CND1 1127 | CALL2 BUT-MERGE,P-PRSO >P-PRSO 1128 | ?CND1: GET P-ITBL,P-NC2 >PTR 1129 | ZERO? PTR /TRUE 1130 | SET 'P-PHR,1 1131 | GETB P-SYNTAX,P-SLOC2 >P-SLOCBITS 1132 | GET P-ITBL,P-NC2L 1133 | CALL SNARFEM,PTR,STACK,P-PRSI 1134 | ZERO? STACK /FALSE 1135 | GET P-BUTS,P-MATCHLEN 1136 | ZERO? STACK /TRUE 1137 | GET P-PRSI,P-MATCHLEN 1138 | EQUAL? STACK,1 \?ELS18 1139 | CALL2 BUT-MERGE,P-PRSO >P-PRSO 1140 | RTRUE 1141 | ?ELS18: CALL2 BUT-MERGE,P-PRSI >P-PRSI 1142 | RTRUE 1143 | 1144 | 1145 | .FUNCT BUT-MERGE,TBL,LEN,BUTLEN,CNT=1,MATCHES=0,OBJ,NTBL,?TMP1,?TMP2 1146 | GET TBL,P-MATCHLEN >LEN 1147 | PUT P-MERGE,P-MATCHLEN,0 1148 | ?PRG1: DLESS? 'LEN,0 \?ELS5 1149 | JUMP ?REP2 1150 | ?ELS5: ZERO? P-BUTS /?ELS7 1151 | GET TBL,CNT >OBJ 1152 | ADD P-BUTS,2 >?TMP1 1153 | GET P-BUTS,0 1154 | INTBL? OBJ,?TMP1,STACK \?ELS7 1155 | JUMP ?CND3 1156 | ?ELS7: ADD MATCHES,1 1157 | PUT P-MERGE,STACK,OBJ 1158 | INC 'MATCHES 1159 | ?CND3: INC 'CNT 1160 | JUMP ?PRG1 1161 | ?REP2: PUT P-MERGE,P-MATCHLEN,MATCHES 1162 | SET 'NTBL,P-MERGE 1163 | SET 'P-MERGE,TBL 1164 | RETURN NTBL 1165 | 1166 | 1167 | .FUNCT SNARFEM,PTR,EPTR,TBL,BUT=0,LEN,TMP,WRD,NW,ONEOBJ,WAS-ALL=0 1168 | SET 'P-AND,FALSE-VALUE 1169 | EQUAL? P-GETFLAGS,P-ALL \?CND1 1170 | SET 'WAS-ALL,TRUE-VALUE 1171 | ?CND1: SET 'P-GETFLAGS,0 1172 | PUT P-BUTS,P-MATCHLEN,0 1173 | PUT TBL,P-MATCHLEN,0 1174 | GET PTR,0 >WRD 1175 | ?PRG4: EQUAL? PTR,EPTR \?ELS8 1176 | ZERO? BUT /?ORP12 1177 | PUSH BUT 1178 | JUMP ?THN9 1179 | ?ORP12: PUSH TBL 1180 | ?THN9: CALL2 GET-OBJECT,STACK >TMP 1181 | ZERO? WAS-ALL /?CND13 1182 | SET 'P-GETFLAGS,P-ALL 1183 | ?CND13: RETURN TMP 1184 | ?ELS8: GET PTR,P-LEXELEN >NW 1185 | EQUAL? WRD,W?ALL,W?BOTH \?ELS21 1186 | SET 'P-GETFLAGS,P-ALL 1187 | EQUAL? NW,W?OF \?CND19 1188 | ADD PTR,P-WORDLEN >PTR 1189 | JUMP ?CND19 1190 | ?ELS21: EQUAL? WRD,W?BUT,W?EXCEPT \?ELS26 1191 | ZERO? BUT /?ORP32 1192 | PUSH BUT 1193 | JUMP ?THN29 1194 | ?ORP32: PUSH TBL 1195 | ?THN29: CALL2 GET-OBJECT,STACK 1196 | ZERO? STACK /FALSE 1197 | SET 'BUT,P-BUTS 1198 | PUT BUT,P-MATCHLEN,0 1199 | JUMP ?CND6 1200 | ?ELS26: EQUAL? WRD,W?A,W?ONE \?ELS34 1201 | ZERO? P-ADJ \?ELS37 1202 | SET 'P-GETFLAGS,P-ONE 1203 | EQUAL? NW,W?OF \?CND6 1204 | ADD PTR,P-WORDLEN >PTR 1205 | JUMP ?CND6 1206 | ?ELS37: SET 'P-NAM,ONEOBJ 1207 | ZERO? BUT /?ORP48 1208 | PUSH BUT 1209 | JUMP ?THN45 1210 | ?ORP48: PUSH TBL 1211 | ?THN45: CALL2 GET-OBJECT,STACK 1212 | ZERO? STACK /FALSE 1213 | ZERO? NW /TRUE 1214 | JUMP ?CND6 1215 | ?ELS34: EQUAL? WRD,W?AND,W?COMMA \?ELS52 1216 | EQUAL? NW,W?AND,W?COMMA /?ELS52 1217 | SET 'P-AND,TRUE-VALUE 1218 | ZERO? BUT /?ORP60 1219 | PUSH BUT 1220 | JUMP ?THN57 1221 | ?ORP60: PUSH TBL 1222 | ?THN57: CALL2 GET-OBJECT,STACK 1223 | ZERO? STACK \?CND19 1224 | RFALSE 1225 | ?ELS52: CALL WT?,WRD,PS?BUZZ-WORD 1226 | ZERO? STACK /?ELS62 1227 | JUMP ?CND6 1228 | ?ELS62: EQUAL? WRD,W?AND,W?COMMA \?ELS64 1229 | JUMP ?CND6 1230 | ?ELS64: EQUAL? WRD,W?OF \?ELS66 1231 | ZERO? P-GETFLAGS \?CND19 1232 | SET 'P-GETFLAGS,P-INHIBIT 1233 | JUMP ?CND19 1234 | ?ELS66: CALL WT?,WRD,PS?ADJECTIVE 1235 | ZERO? STACK /?ELS71 1236 | CALL2 ADJ-CHECK,WRD 1237 | ZERO? STACK /?ELS71 1238 | EQUAL? NW,W?OF /?ELS71 1239 | SET 'P-ADJ,WRD 1240 | JUMP ?CND6 1241 | ?ELS71: CALL WT?,WRD,PS?OBJECT 1242 | ZERO? STACK /?CND6 1243 | SET 'P-NAM,WRD 1244 | SET 'ONEOBJ,WRD 1245 | ?CND19: 1246 | ?CND6: EQUAL? PTR,EPTR /?PRG4 1247 | ADD PTR,P-WORDLEN >PTR 1248 | SET 'WRD,NW 1249 | JUMP ?PRG4 1250 | 1251 | 1252 | .FUNCT ADJ-CHECK,WRD 1253 | ZERO? P-ADJ /TRUE 1254 | EQUAL? WRD,W?HVAC,W?JANITORIA,W?RED /TRUE 1255 | EQUAL? WRD,W?MORNING,W?EVENING,W?BROWN \FALSE 1256 | RTRUE 1257 | 1258 | 1259 | .FUNCT NOUN-MISSING 1260 | EQUAL? P-NAM,W?ALL,W?BOTH \?ELS5 1261 | PRINT REFERRING 1262 | CRLF 1263 | RTRUE 1264 | ?ELS5: PRINTR "[There seems to be a noun missing in that sentence.]" 1265 | 1266 | 1267 | .FUNCT GET-OBJECT,TBL,VRB=1,BITS,LEN,XBITS,TLEN,GCHECK=0,OLEN=0,OBJ 1268 | SET 'XBITS,P-SLOCBITS 1269 | GET TBL,P-MATCHLEN >TLEN 1270 | BTST P-GETFLAGS,P-INHIBIT /TRUE 1271 | ZERO? P-NAM \?CND4 1272 | ZERO? P-ADJ /?CND4 1273 | CALL WT?,P-ADJ,PS?OBJECT 1274 | ZERO? STACK /?CND4 1275 | SET 'P-NAM,P-ADJ 1276 | SET 'P-ADJ,FALSE-VALUE 1277 | ?CND4: ZERO? P-NAM \?CND9 1278 | ZERO? P-ADJ \?CND9 1279 | EQUAL? P-GETFLAGS,P-ALL /?CND9 1280 | ZERO? P-GWIMBIT \?CND9 1281 | ZERO? VRB /FALSE 1282 | CALL1 NOUN-MISSING 1283 | RFALSE 1284 | ?CND9: EQUAL? P-GETFLAGS,P-ALL \?THN21 1285 | ZERO? P-SLOCBITS \?CND18 1286 | ?THN21: SET 'P-SLOCBITS,-1 1287 | ?CND18: 1288 | ?PRG23: ZERO? GCHECK /?ELS27 1289 | CALL2 GLOBAL-CHECK,TBL 1290 | JUMP ?CND25 1291 | ?ELS27: FCLEAR PLAYER,TRANSBIT 1292 | CALL DO-SL,HERE,SOG,SIR,TBL 1293 | FSET PLAYER,TRANSBIT 1294 | CALL DO-SL,PLAYER,SH,SC,TBL 1295 | ?CND25: GET TBL,P-MATCHLEN 1296 | SUB STACK,TLEN >LEN 1297 | BTST P-GETFLAGS,P-ALL \?ELS33 1298 | JUMP ?CND31 1299 | ?ELS33: BTST P-GETFLAGS,P-ONE \?ELS37 1300 | ZERO? LEN /?ELS37 1301 | EQUAL? LEN,1 /?CND40 1302 | RANDOM LEN 1303 | GET TBL,STACK 1304 | PUT TBL,1,STACK 1305 | PRINTI "[How about the " 1306 | GET TBL,1 1307 | PRINTD STACK 1308 | PRINTI "?]" 1309 | CRLF 1310 | ?CND40: PUT TBL,P-MATCHLEN,1 1311 | JUMP ?CND31 1312 | ?ELS37: GRTR? LEN,1 /?THN49 1313 | ZERO? LEN \?ELS48 1314 | EQUAL? P-SLOCBITS,-1 /?ELS48 1315 | ?THN49: EQUAL? P-SLOCBITS,-1 \?ELS55 1316 | SET 'P-SLOCBITS,XBITS 1317 | SET 'OLEN,LEN 1318 | GET TBL,P-MATCHLEN 1319 | SUB STACK,LEN 1320 | PUT TBL,P-MATCHLEN,STACK 1321 | JUMP ?PRG23 1322 | ?ELS55: PUT P-NAMW,P-PHR,P-NAM 1323 | PUT P-ADJW,P-PHR,P-ADJ 1324 | ZERO? LEN \?CND58 1325 | SET 'LEN,OLEN 1326 | ?CND58: ZERO? P-NAM /?ELS63 1327 | ADD TLEN,1 1328 | GET TBL,STACK >OBJ 1329 | ZERO? OBJ /?ELS63 1330 | GETP OBJ,P?GENERIC 1331 | CALL STACK >OBJ 1332 | ZERO? OBJ /?ELS63 1333 | EQUAL? OBJ,NOT-HERE-OBJECT /FALSE 1334 | PUT TBL,1,OBJ 1335 | PUT TBL,P-MATCHLEN,1 1336 | SET 'P-NAM,FALSE-VALUE 1337 | SET 'P-ADJ,FALSE-VALUE 1338 | RTRUE 1339 | ?ELS63: ZERO? VRB /?ELS70 1340 | EQUAL? WINNER,PLAYER /?ELS70 1341 | CALL WHICH-PRINT,TLEN,LEN,TBL 1342 | RFALSE 1343 | ?ELS70: ZERO? VRB /?ELS74 1344 | ZERO? P-NAM /?ELS74 1345 | CALL WHICH-PRINT,TLEN,LEN,TBL 1346 | EQUAL? TBL,P-PRSO \?ELS81 1347 | PUSH P-NC1 1348 | JUMP ?CND77 1349 | ?ELS81: PUSH P-NC2 1350 | ?CND77: SET 'P-ACLAUSE,STACK 1351 | SET 'P-AADJ,P-ADJ 1352 | SET 'P-ANAM,P-NAM 1353 | CALL ORPHAN,FALSE-VALUE,FALSE-VALUE 1354 | SET 'P-OFLAG,TRUE-VALUE 1355 | JUMP ?CND61 1356 | ?ELS74: ZERO? VRB /?CND61 1357 | CALL1 NOUN-MISSING 1358 | ?CND61: SET 'P-NAM,FALSE-VALUE 1359 | SET 'P-ADJ,FALSE-VALUE 1360 | RFALSE 1361 | ?ELS48: ZERO? LEN \?ELS88 1362 | ZERO? GCHECK /?ELS88 1363 | PUT P-NAMW,P-PHR,P-NAM 1364 | PUT P-ADJW,P-PHR,P-ADJ 1365 | ZERO? VRB /?CND91 1366 | SET 'P-SLOCBITS,XBITS 1367 | CALL OBJ-FOUND,NOT-HERE-OBJECT,TBL 1368 | SET 'P-XNAM,P-NAM 1369 | SET 'P-XADJ,P-ADJ 1370 | SET 'P-NAM,FALSE-VALUE 1371 | SET 'P-ADJ,FALSE-VALUE 1372 | RTRUE 1373 | ?CND91: SET 'P-NAM,FALSE-VALUE 1374 | SET 'P-ADJ,FALSE-VALUE 1375 | RFALSE 1376 | ?ELS88: ZERO? LEN \?CND31 1377 | SET 'GCHECK,TRUE-VALUE 1378 | JUMP ?PRG23 1379 | ?CND31: SET 'P-SLOCBITS,XBITS 1380 | PUT P-NAMW,P-PHR,P-NAM 1381 | PUT P-ADJW,P-PHR,P-ADJ 1382 | SET 'P-NAM,FALSE-VALUE 1383 | SET 'P-ADJ,FALSE-VALUE 1384 | RTRUE 1385 | 1386 | 1387 | .FUNCT MOBY-FIND,TBL,OBJ=1,LEN,FOO,NAM,ADJ 1388 | SET 'NAM,P-NAM 1389 | SET 'ADJ,P-ADJ 1390 | SET 'P-NAM,P-XNAM 1391 | SET 'P-ADJ,P-XADJ 1392 | PUT TBL,P-MATCHLEN,0 1393 | ?PRG3: IN? OBJ,ROOMS /?CND5 1394 | CALL2 THIS-IT?,OBJ >FOO 1395 | ZERO? FOO /?CND5 1396 | CALL OBJ-FOUND,OBJ,TBL >FOO 1397 | ?CND5: IGRTR? 'OBJ,MUSEUM-ENTRANCE \?PRG3 1398 | GET TBL,P-MATCHLEN >LEN 1399 | EQUAL? LEN,1 \?CND13 1400 | GET TBL,1 >P-MOBY-FOUND 1401 | ?CND13: SET 'P-NAM,NAM 1402 | SET 'P-ADJ,ADJ 1403 | RETURN LEN 1404 | 1405 | 1406 | .FUNCT WHICH-PRINT,TLEN,LEN,TBL,OBJ,RLEN 1407 | ZERO? LEN \?CND1 1408 | PRINT REFERRING 1409 | CRLF 1410 | RTRUE 1411 | ?CND1: SET 'RLEN,LEN 1412 | EQUAL? WINNER,PLAYER /?ELS8 1413 | PRINTI """I don't understand " 1414 | EQUAL? P-NAM,W?MODE \?ELS13 1415 | PRINTI "which mode you mean" 1416 | JUMP ?CND6 1417 | ?ELS13: PRINTI "if you mean " 1418 | JUMP ?CND6 1419 | ?ELS8: PRINTI "[Which" 1420 | ZERO? P-OFLAG \?THN27 1421 | ZERO? P-MERGED \?THN27 1422 | ZERO? P-AND /?ELS26 1423 | ?THN27: PRINTI " " 1424 | PRINTB P-NAM 1425 | JUMP ?CND24 1426 | ?ELS26: EQUAL? TBL,P-PRSO \?ELS32 1427 | CALL CLAUSE-PRINT,P-NC1,P-NC1L,FALSE-VALUE 1428 | JUMP ?CND24 1429 | ?ELS32: CALL CLAUSE-PRINT,P-NC2,P-NC2L,FALSE-VALUE 1430 | ?CND24: PRINTI " do you mean" 1431 | EQUAL? P-NAM,W?MODE /?CND6 1432 | PRINTI ", " 1433 | ?CND6: EQUAL? P-NAM,W?MODE /?CND42 1434 | ?PRG45: INC 'TLEN 1435 | GET TBL,TLEN >OBJ 1436 | FSET? OBJ,NARTICLEBIT /?CND47 1437 | PRINTI "the " 1438 | ?CND47: CALL2 DPRINT,OBJ 1439 | EQUAL? LEN,2 \?ELS56 1440 | EQUAL? RLEN,2 /?CND57 1441 | PRINTI "," 1442 | ?CND57: PRINTI " or " 1443 | JUMP ?CND54 1444 | ?ELS56: GRTR? LEN,2 \?CND54 1445 | PRINTI ", " 1446 | ?CND54: DLESS? 'LEN,1 \?PRG45 1447 | ?CND42: EQUAL? WINNER,PLAYER /?ELS75 1448 | PRINTR ".""" 1449 | ?ELS75: PRINTR "?]" 1450 | 1451 | 1452 | .FUNCT GLOBAL-CHECK,TBL,LEN,RMG,RMGL,CNT=0,OBJ,OBITS,FOO 1453 | GET TBL,P-MATCHLEN >LEN 1454 | SET 'OBITS,P-SLOCBITS 1455 | GETPT HERE,P?GLOBAL >RMG 1456 | ZERO? RMG /?CND1 1457 | PTSIZE RMG 1458 | DIV STACK,2 1459 | SUB STACK,1 >RMGL 1460 | ?PRG4: GET RMG,CNT >OBJ 1461 | CALL2 THIS-IT?,OBJ 1462 | ZERO? STACK /?CND6 1463 | CALL OBJ-FOUND,OBJ,TBL 1464 | ?CND6: IGRTR? 'CNT,RMGL \?PRG4 1465 | ?CND1: GET TBL,P-MATCHLEN 1466 | EQUAL? STACK,LEN \FALSE 1467 | SET 'P-SLOCBITS,-1 1468 | CALL DO-SL,GLOBAL-OBJECTS,1,1,TBL 1469 | SET 'P-SLOCBITS,OBITS 1470 | RETURN P-SLOCBITS 1471 | 1472 | 1473 | .FUNCT DO-SL,OBJ,BIT1,BIT2,TBL,MOBY-FLAG=0,BTS 1474 | ADD BIT1,BIT2 1475 | BTST P-SLOCBITS,STACK \?ELS5 1476 | CALL SEARCH-LIST,OBJ,TBL,P-SRCALL,MOBY-FLAG 1477 | RSTACK 1478 | ?ELS5: BTST P-SLOCBITS,BIT1 \?ELS12 1479 | CALL SEARCH-LIST,OBJ,TBL,P-SRCTOP,MOBY-FLAG 1480 | RSTACK 1481 | ?ELS12: BTST P-SLOCBITS,BIT2 \TRUE 1482 | CALL SEARCH-LIST,OBJ,TBL,P-SRCBOT,MOBY-FLAG 1483 | RSTACK 1484 | 1485 | 1486 | .FUNCT SEARCH-LIST,OBJ,TBL,LVL,MOBY-FLAG=0,FLS,NOBJ 1487 | FIRST? OBJ >OBJ \FALSE 1488 | ?PRG6: EQUAL? LVL,P-SRCBOT /?CND8 1489 | GETPT OBJ,P?SYNONYM 1490 | ZERO? STACK /?CND8 1491 | CALL2 THIS-IT?,OBJ 1492 | ZERO? STACK /?CND8 1493 | CALL OBJ-FOUND,OBJ,TBL 1494 | ?CND8: EQUAL? LVL,P-SRCTOP \?THN18 1495 | FSET? OBJ,SEARCHBIT /?THN18 1496 | FSET? OBJ,SURFACEBIT \?CND13 1497 | ?THN18: FIRST? OBJ >NOBJ \?CND13 1498 | FSET? OBJ,OPENBIT /?THN23 1499 | FSET? OBJ,TRANSBIT /?THN23 1500 | ZERO? MOBY-FLAG /?CND13 1501 | ?THN23: FSET? OBJ,SURFACEBIT \?ELS29 1502 | PUSH P-SRCALL 1503 | JUMP ?CND25 1504 | ?ELS29: FSET? OBJ,SEARCHBIT \?ELS31 1505 | PUSH P-SRCALL 1506 | JUMP ?CND25 1507 | ?ELS31: PUSH P-SRCTOP 1508 | ?CND25: CALL SEARCH-LIST,OBJ,TBL,STACK,MOBY-FLAG >FLS 1509 | ?CND13: NEXT? OBJ >OBJ /?PRG6 1510 | RTRUE 1511 | 1512 | 1513 | .FUNCT OBJ-FOUND,OBJ,TBL,PTR 1514 | GET TBL,P-MATCHLEN 1515 | ADD 1,STACK >PTR 1516 | PUT TBL,PTR,OBJ 1517 | PUT TBL,P-MATCHLEN,PTR 1518 | RTRUE 1519 | 1520 | 1521 | .FUNCT TAKE-CHECK 1522 | GETB P-SYNTAX,P-SLOC1 1523 | CALL ITAKE-CHECK,P-PRSO,STACK 1524 | ZERO? STACK /FALSE 1525 | GETB P-SYNTAX,P-SLOC2 1526 | CALL ITAKE-CHECK,P-PRSI,STACK 1527 | RSTACK 1528 | 1529 | 1530 | .FUNCT ITAKE-CHECK,TBL,IBITS,PTR,OBJ,TAKEN 1531 | GET TBL,P-MATCHLEN >PTR 1532 | ZERO? PTR /TRUE 1533 | BTST IBITS,SHAVE /?THN8 1534 | BTST IBITS,STAKE \TRUE 1535 | ?THN8: 1536 | ?PRG10: DLESS? 'PTR,0 /TRUE 1537 | ADD PTR,1 1538 | GET TBL,STACK >OBJ 1539 | EQUAL? OBJ,IT \?CND17 1540 | CALL2 ACCESSIBLE?,P-IT-OBJECT 1541 | ZERO? STACK \?ELS22 1542 | PRINT REFERRING 1543 | CRLF 1544 | RFALSE 1545 | ?ELS22: SET 'OBJ,P-IT-OBJECT 1546 | ?CND17: CALL2 HELD?,OBJ 1547 | ZERO? STACK \?PRG10 1548 | EQUAL? OBJ,HANDS,HEAD,CLOTHES /?PRG10 1549 | EQUAL? PRSA,V?SGIVE \?ELS33 1550 | EQUAL? WINNER,SPEAR-CARRIER /?PRG10 1551 | ?ELS33: EQUAL? OBJ,GUN \?ELS35 1552 | EQUAL? WINNER,SABOTEURS,NATIONAL-GUARDSMAN /?PRG10 1553 | ?ELS35: EQUAL? OBJ,SHOWER,BATHROOM-OBJECT,RECORD-BUFFER \?ELS29 1554 | EQUAL? PRSA,V?SGIVE,V?GIVE \?ELS29 1555 | JUMP ?PRG10 1556 | ?ELS29: SET 'PRSO,OBJ 1557 | FSET? OBJ,TRYTAKEBIT \?ELS42 1558 | SET 'TAKEN,TRUE-VALUE 1559 | JUMP ?CND40 1560 | ?ELS42: EQUAL? WINNER,PLAYER /?ELS44 1561 | SET 'TAKEN,FALSE-VALUE 1562 | JUMP ?CND40 1563 | ?ELS44: BTST IBITS,STAKE \?ELS46 1564 | CALL2 ITAKE,FALSE-VALUE 1565 | EQUAL? STACK,TRUE-VALUE \?ELS46 1566 | SET 'TAKEN,FALSE-VALUE 1567 | JUMP ?CND40 1568 | ?ELS46: SET 'TAKEN,TRUE-VALUE 1569 | ?CND40: ZERO? TAKEN /?ELS53 1570 | BTST IBITS,SHAVE \?ELS53 1571 | GET TBL,P-MATCHLEN 1572 | LESS? 1,STACK \?ELS58 1573 | PRINT NOT-HOLDING 1574 | PRINTI " all those things!" 1575 | CRLF 1576 | RFALSE 1577 | ?ELS58: EQUAL? OBJ,NOT-HERE-OBJECT \?CND56 1578 | PRINTI "[You can't see that here!]" 1579 | CRLF 1580 | RFALSE 1581 | ?CND56: EQUAL? WINNER,PLAYER \?ELS67 1582 | PRINT NOT-HOLDING 1583 | JUMP ?CND65 1584 | ?ELS67: PRINTI "It doesn't look as if" 1585 | CALL ARTICLE,WINNER,TRUE-VALUE 1586 | CALL2 PLURAL,WINNER 1587 | PRINTI " holding" 1588 | ?CND65: CALL ARTICLE,OBJ,TRUE-VALUE 1589 | SET 'P-IT-OBJECT,OBJ 1590 | PRINTI "." 1591 | CRLF 1592 | RFALSE 1593 | ?ELS53: ZERO? TAKEN \?PRG10 1594 | EQUAL? WINNER,PLAYER \?PRG10 1595 | PRINTI "[taking" 1596 | CALL ARTICLE,OBJ,TRUE-VALUE 1597 | PRINTI " first]" 1598 | CRLF 1599 | JUMP ?PRG10 1600 | 1601 | 1602 | .FUNCT MANY-CHECK,LOSS=0,TMP,?TMP1 1603 | GET P-PRSO,P-MATCHLEN 1604 | GRTR? STACK,1 \?ELS3 1605 | GETB P-SYNTAX,P-SLOC1 1606 | BTST STACK,SMANY /?ELS3 1607 | SET 'LOSS,1 1608 | JUMP ?CND1 1609 | ?ELS3: GET P-PRSI,P-MATCHLEN 1610 | GRTR? STACK,1 \?CND1 1611 | GETB P-SYNTAX,P-SLOC2 1612 | BTST STACK,SMANY /?CND1 1613 | SET 'LOSS,2 1614 | ?CND1: ZERO? LOSS /TRUE 1615 | PRINTI "[You can't use multiple " 1616 | EQUAL? LOSS,2 \?CND18 1617 | PRINTI "in" 1618 | ?CND18: PRINTI "direct objects with """ 1619 | GET P-ITBL,P-VERBN >TMP 1620 | ZERO? TMP \?ELS27 1621 | PRINTI "tell" 1622 | JUMP ?CND25 1623 | ?ELS27: ZERO? P-OFLAG \?THN32 1624 | ZERO? P-MERGED /?ELS31 1625 | ?THN32: GET TMP,0 1626 | PRINTB STACK 1627 | JUMP ?CND25 1628 | ?ELS31: GETB TMP,2 >?TMP1 1629 | GETB TMP,3 1630 | CALL WORD-PRINT,?TMP1,STACK 1631 | ?CND25: PRINTI """.]" 1632 | CRLF 1633 | RFALSE 1634 | 1635 | 1636 | .FUNCT THIS-IT?,OBJ,SYNS,CNT 1637 | GETPT OBJ,P?SYNONYM >SYNS 1638 | ZERO? SYNS /FALSE 1639 | ZERO? P-NAM /?CND4 1640 | PTSIZE SYNS 1641 | DIV STACK,2 1642 | INTBL? P-NAM,SYNS,STACK \FALSE 1643 | ?CND4: ZERO? P-ADJ /?CND9 1644 | GETPT OBJ,P?ADJECTIVE >SYNS 1645 | ZERO? SYNS /FALSE 1646 | PTSIZE SYNS 1647 | DIV STACK,2 1648 | INTBL? P-ADJ,SYNS,STACK \FALSE 1649 | ?CND9: ZERO? P-GWIMBIT /TRUE 1650 | FSET? OBJ,P-GWIMBIT /TRUE 1651 | RFALSE 1652 | 1653 | .ENDI 1654 | -------------------------------------------------------------------------------- /interrupts.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT I-PERELMAN,TOLD=0 4 | GRTR? PART-FLAG,2 /?THN4 5 | ZERO? REVIEWING-RECORDINGS /?CND1 6 | ?THN4: CALL2 INT,I-PERELMAN 7 | PUT STACK,0,0 8 | RFALSE 9 | ?CND1: CALL QUEUE,I-PERELMAN,-1 10 | GRTR? TIME,536 \?ELS8 11 | GRTR? LAST-ABE-TIME,536 /?ELS8 12 | EQUAL? HERE,CONTROL-CENTER \?CND11 13 | CRLF 14 | PRINTI "Doctor Perelman walks jauntily into the " 15 | PRINTD CONTROL-CENTER-OBJECT 16 | PRINTI ". ""Good morning to all,"" he calls cheerily and begins chatting with the chief of the night shift." 17 | CRLF 18 | SET 'TOLD,TRUE-VALUE 19 | ?CND11: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 20 | JUMP ?CND6 21 | ?ELS8: GRTR? TIME,550 \?ELS19 22 | GRTR? LAST-ABE-TIME,550 /?ELS19 23 | EQUAL? HERE,CONTROL-CENTER \?CND22 24 | IN? PERELMAN,CONTROL-CENTER \?ELS27 25 | CRLF 26 | PRINTI "Perelman stops talking to the technician, who hangs up his white overcoat and leaves the control room. Perelman crosses the room and picks up a thick report." 27 | CRLF 28 | JUMP ?CND25 29 | ?ELS27: CRLF 30 | PRINTI "Perelman enters, looks around, and picks up a thick report." 31 | CRLF 32 | ?CND25: SET 'TOLD,TRUE-VALUE 33 | ?CND22: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 34 | JUMP ?CND6 35 | ?ELS19: GRTR? TIME,599 \?ELS35 36 | GRTR? LAST-ABE-TIME,599 /?ELS35 37 | EQUAL? HERE,CONTROL-CENTER \?CND38 38 | IN? PERELMAN,CONTROL-CENTER \?CND38 39 | CRLF 40 | PRINTI "Perelman puts down the report and walks toward the door. He calls to one of the technicians. ""Nat, I'll be in my office.""" 41 | CRLF 42 | SET 'TOLD,TRUE-VALUE 43 | ?CND38: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 44 | JUMP ?CND6 45 | ?ELS35: GRTR? TIME,616 \?ELS46 46 | GRTR? LAST-ABE-TIME,616 /?ELS46 47 | CALL1 PERELMAN-WALKS-IN-WITH-COFFEE >TOLD 48 | CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 49 | JUMP ?CND6 50 | ?ELS46: GRTR? TIME,711 \?ELS50 51 | GRTR? LAST-ABE-TIME,711 /?ELS50 52 | EQUAL? HERE,OFFICE \?CND53 53 | IN? PERELMAN,OFFICE \?CND53 54 | CRLF 55 | PRINTI "The telephone buzzes. ""Perelman,"" says Perelman into the receiver. The voice at the other end is so quiet that even your sensitive audio monitors can't pick it up. ""Hi, Aseejh."" Pause. ""Yes, let's get together on that."" He glances up at his terminal. ""It's almost lunch time; want to meet me in the cafeteria?"" Pause. ""Okay, ten minutes."" Perelman replaces the receiver and leaves the room." 56 | CRLF 57 | SET 'TOLD,TRUE-VALUE 58 | ?CND53: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 59 | JUMP ?CND6 60 | ?ELS50: GRTR? TIME,790 \?ELS61 61 | GRTR? LAST-ABE-TIME,790 /?ELS61 62 | CALL1 PERELMAN-WALKS-IN-WITH-COFFEE >TOLD 63 | CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 64 | JUMP ?CND6 65 | ?ELS61: GRTR? TIME,834 \?ELS65 66 | GRTR? LAST-ABE-TIME,834 /?ELS65 67 | EQUAL? HERE,OFFICE \?CND68 68 | IN? PERELMAN,OFFICE \?CND68 69 | CRLF 70 | PRINTD PRICE 71 | PRINTI ", Doctor Perelman's secretary, appears in the doorway. ""Doc, don't forget, you've got a meeting with Vera at two o'clock."" He glances at his watch, mumbles some impolite things under his breath, and rushes out." 72 | CRLF 73 | SET 'TOLD,TRUE-VALUE 74 | ?CND68: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 75 | JUMP ?CND6 76 | ?ELS65: GRTR? TIME,980 \?ELS76 77 | GRTR? LAST-ABE-TIME,980 /?ELS76 78 | EQUAL? HERE,OFFICE \?CND79 79 | CRLF 80 | PRINTI "Doctor Perelman walks into the office, carrying a pile of pink message slips. He scans them, drops all but one into a basket on his desk, picks up the phone receiver, and presses two or three buttons. Your sensitive audio pickup hears a few rings, a click, and then a young woman's voice: ""This is " 81 | PRINTD ESTHER 82 | PRINTI ". Can't come to the phone now. Please leave a message, though."" Pause. ""BEEP!"" Perelman speaks into the phone. ""Hi, it's Dad. I got your message, but I can't make it; I'm too tied up with the Project. I'll probably be in the office all evening if you want to talk.""" 83 | CRLF 84 | SET 'TOLD,TRUE-VALUE 85 | ?CND79: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 86 | JUMP ?CND6 87 | ?ELS76: GRTR? TIME,1157 \?ELS87 88 | GRTR? LAST-ABE-TIME,1157 /?ELS87 89 | EQUAL? HERE,OFFICE \?CND90 90 | IN? PERELMAN,OFFICE \?ELS95 91 | CRLF 92 | PRINTD PRICE 93 | PRINTI ", Perelman's secretary, pops her head in the doorway. ""Hey Doc! " 94 | JUMP ?CND93 95 | ?ELS95: CRLF 96 | PRINTI "Perelman enters with his secretary, " 97 | PRINTD PRICE 98 | PRINTI ", who asks, """ 99 | ?CND93: PRINTI "Need me for anything else tonight?"" Perelman, grinning, responds, ""Not unless you've decided to dump that unfairly handsome husband of yours."" She looks exasperated at what is obviously an old joke and shakes a fist at him in a mock threat. ""Really, though, I'll be fine,"" says Perelman. ""Scram."" She disappears from sight, shouting from the next room, ""Good night, Doc. Don't stay too late!""" 100 | CRLF 101 | SET 'TOLD,TRUE-VALUE 102 | ?CND90: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 103 | JUMP ?CND6 104 | ?ELS87: GRTR? TIME,1241 \?ELS107 105 | GRTR? LAST-ABE-TIME,1241 /?ELS107 106 | EQUAL? HERE,OFFICE \?CND110 107 | IN? PERELMAN,OFFICE \?CND110 108 | PRINTI "Perelman shoves some papers into a notebook, types something on his desk terminal, and leaves the room." 109 | CRLF 110 | SET 'TOLD,TRUE-VALUE 111 | ?CND110: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 112 | JUMP ?CND6 113 | ?ELS107: GRTR? TIME,1281 \?ELS118 114 | GRTR? LAST-ABE-TIME,1281 /?ELS118 115 | EQUAL? HERE,CONTROL-CENTER \?CND121 116 | CRLF 117 | PRINTI "Doctor Perelman walks into the " 118 | PRINTD CONTROL-CENTER-OBJECT 119 | PRINTI ". He wanders around the room, talking quietly with a few technicians. He picks up a hefty printout from the printer and settles into a swivel chair to read it." 120 | CRLF 121 | SET 'TOLD,TRUE-VALUE 122 | ?CND121: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 123 | JUMP ?CND6 124 | ?ELS118: GRTR? TIME,1312 \?ELS129 125 | GRTR? LAST-ABE-TIME,1312 /?ELS129 126 | EQUAL? HERE,CONTROL-CENTER \?CND132 127 | IN? PERELMAN,CONTROL-CENTER \?CND132 128 | CRLF 129 | PRINTI "Perelman puts down the printout and rubs his eyes. He stands and unsuccessfully stifles a yawn. ""I'm going home,"" he announces to the tiny evening staff" 130 | RANDOM 100 131 | LESS? 50,STACK /?CND139 132 | PRINTI ". Try not to call me unless it's an emergency" 133 | ?CND139: PRINTI "."" He leaves the control complex." 134 | CRLF 135 | SET 'TOLD,TRUE-VALUE 136 | ?CND132: CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE 137 | JUMP ?CND6 138 | ?ELS129: GRTR? TIME,1318 \?CND6 139 | GRTR? LAST-ABE-TIME,1318 /?CND6 140 | EQUAL? HERE,OFFICE \?CND6 141 | PRINTI "Doctor Perelman walks wearily into the office, puts on a thin overcoat, and grabs a notebook stuffed with papers. He stops at the doorway, glancing about the room, and" 142 | PRINT SPOTS-ACTIVE-LIGHT 143 | PRINTI ". A smile breaks through the weary lines on his face. He raises his hand to his forehead in a friendly salute. ""Good night, PRISM."" He dims the light and closes the office door. The sensors on your monitor automatically adjust to the lower light level." 144 | CRLF 145 | SET 'TOLD,TRUE-VALUE 146 | ?CND6: SET 'LAST-ABE-TIME,TIME 147 | ZERO? TOLD /FALSE 148 | RTRUE 149 | 150 | 151 | .FUNCT PUT-PERELMAN-IN-THE-RIGHT-PLACE 152 | LESS? TIME,536 \?ELS5 153 | CALL2 VISIBLE?,PERELMAN 154 | ZERO? STACK /?CND6 155 | EQUAL? PERELMAN,WINNER \?CND6 156 | CALL1 CLEAR-BUF 157 | ?CND6: MOVE PERELMAN,LOCAL-GLOBALS 158 | MOVE COFFEE,LOCAL-GLOBALS 159 | RTRUE 160 | ?ELS5: GRTR? TIME,535 \?ELS12 161 | LESS? TIME,550 \?ELS12 162 | MOVE PERELMAN,CONTROL-CENTER 163 | MOVE COFFEE,LOCAL-GLOBALS 164 | PUTP PERELMAN,P?LDESC,STR?7 165 | RTRUE 166 | ?ELS12: GRTR? TIME,549 \?ELS16 167 | LESS? TIME,599 \?ELS16 168 | MOVE PERELMAN,CONTROL-CENTER 169 | MOVE COFFEE,LOCAL-GLOBALS 170 | PUTP PERELMAN,P?LDESC,STR?8 171 | RTRUE 172 | ?ELS16: GRTR? TIME,598 \?ELS20 173 | LESS? TIME,616 \?ELS20 174 | CALL2 VISIBLE?,PERELMAN 175 | ZERO? STACK /?CND23 176 | EQUAL? PERELMAN,WINNER \?CND23 177 | CALL1 CLEAR-BUF 178 | ?CND23: MOVE PERELMAN,LOCAL-GLOBALS 179 | MOVE COFFEE,LOCAL-GLOBALS 180 | RTRUE 181 | ?ELS20: GRTR? TIME,615 \?ELS29 182 | LESS? TIME,711 \?ELS29 183 | MOVE PERELMAN,OFFICE 184 | MOVE COFFEE,OFFICE 185 | PUTP PERELMAN,P?LDESC,STR?9 186 | RTRUE 187 | ?ELS29: GRTR? TIME,710 \?ELS33 188 | LESS? TIME,790 \?ELS33 189 | CALL2 VISIBLE?,PERELMAN 190 | ZERO? STACK /?CND36 191 | EQUAL? PERELMAN,WINNER \?CND36 192 | CALL1 CLEAR-BUF 193 | ?CND36: MOVE PERELMAN,LOCAL-GLOBALS 194 | MOVE COFFEE,LOCAL-GLOBALS 195 | RTRUE 196 | ?ELS33: GRTR? TIME,789 \?ELS42 197 | LESS? TIME,834 \?ELS42 198 | MOVE PERELMAN,OFFICE 199 | MOVE COFFEE,OFFICE 200 | PUTP PERELMAN,P?LDESC,STR?9 201 | RTRUE 202 | ?ELS42: GRTR? TIME,833 \?ELS46 203 | LESS? TIME,980 \?ELS46 204 | CALL2 VISIBLE?,PERELMAN 205 | ZERO? STACK /?CND49 206 | EQUAL? PERELMAN,WINNER \?CND49 207 | CALL1 CLEAR-BUF 208 | ?CND49: MOVE COFFEE,LOCAL-GLOBALS 209 | MOVE PERELMAN,LOCAL-GLOBALS 210 | RTRUE 211 | ?ELS46: GRTR? TIME,979 \?ELS55 212 | LESS? TIME,1241 \?ELS55 213 | MOVE PERELMAN,OFFICE 214 | PUTP PERELMAN,P?LDESC,STR?9 215 | RTRUE 216 | ?ELS55: GRTR? TIME,1240 \?ELS59 217 | LESS? TIME,1281 \?ELS59 218 | CALL2 VISIBLE?,PERELMAN 219 | ZERO? STACK /?CND62 220 | EQUAL? PERELMAN,WINNER \?CND62 221 | CALL1 CLEAR-BUF 222 | ?CND62: MOVE PERELMAN,LOCAL-GLOBALS 223 | MOVE COFFEE,LOCAL-GLOBALS 224 | RTRUE 225 | ?ELS59: GRTR? TIME,1280 \?ELS68 226 | LESS? TIME,1312 \?ELS68 227 | MOVE PERELMAN,CONTROL-CENTER 228 | MOVE COFFEE,LOCAL-GLOBALS 229 | PUTP PERELMAN,P?LDESC,STR?10 230 | RTRUE 231 | ?ELS68: GRTR? TIME,1311 \FALSE 232 | CALL2 VISIBLE?,PERELMAN 233 | ZERO? STACK /?CND73 234 | EQUAL? PERELMAN,WINNER \?CND73 235 | CALL1 CLEAR-BUF 236 | ?CND73: MOVE PERELMAN,LOCAL-GLOBALS 237 | MOVE COFFEE,LOCAL-GLOBALS 238 | RTRUE 239 | 240 | 241 | .FUNCT I-JILL,OLD-JILL-LOC 242 | EQUAL? SYEAR,2061 \?ELS3 243 | CALL1 IN-APARTMENT? 244 | ZERO? STACK /FALSE 245 | SET 'MITCHELL-NEWS-FLAG,TRUE-VALUE 246 | CALL QUEUE,I-APARTMENT,-1 247 | SET 'FOLLOW-FLAG,1 248 | CALL QUEUE,I-UNFOLLOW,2 249 | CALL2 SCORE,119 250 | MOVE JILL,BEDROOM 251 | FSET? APARTMENT-DOOR,OPENBIT \?ELS9 252 | CRLF 253 | PRINTI "You hear a noise from the open doorway" 254 | JUMP ?CND7 255 | ?ELS9: EQUAL? HERE,LIVING-ROOM \?ELS13 256 | CRLF 257 | PRINTI "The apartment door opens" 258 | JUMP ?CND7 259 | ?ELS13: CRLF 260 | PRINTI "You hear the apartment door open" 261 | ?CND7: PRINTI " and" 262 | LOC PLAYER 263 | EQUAL? STACK,HERE /?CND22 264 | MOVE PLAYER,HERE 265 | PRINTI " you stand as" 266 | ?CND22: PRINTI " Jill comes running into the room. She seems terribly upset, throws herself against you, and begins sobbing uncontrollably. As you attempt to comfort her, she begins speaking between the sobs. 267 | 268 | ""It's Mitchell,"" she begins, and a lifelong fear of injury to your only child clutches at your heart. ""He's gone off and joined the Church of God's Word. He came and collected all his stuff about an hour ago. He said he's going to an orientation camp in Arizona. He says he'll never be able to speak to you or me again unless we join the Church. I followed him all the way to the airport but he wouldn't listen to me! He wouldn't even say goodbye to me! He wouldn't even..."" She begins sobbing even more uncontrollably, breaks away from you, and " 269 | EQUAL? HERE,BEDROOM \?ELS31 270 | PRINTR "throws herself down onto the bed." 271 | ?ELS31: PRINTR "runs into the bedroom." 272 | ?ELS3: FSET? JILL,TOUCHBIT /?ELS39 273 | CALL1 IN-APARTMENT? 274 | ZERO? STACK /?ELS39 275 | FSET JILL,TOUCHBIT 276 | ZERO? JILL-COUNTER /FALSE 277 | CRLF 278 | EQUAL? JILL-COUNTER,1,2 \?ELS49 279 | SET 'FOLLOW-FLAG,2 280 | CALL QUEUE,I-UNFOLLOW,2 281 | PRINTR "Jill appears in the bedroom doorway. ""Perry, have you been out all night? You know how I worry."" She returns to the bedroom." 282 | ?ELS49: EQUAL? JILL-COUNTER,3,6,7 \?ELS53 283 | SET 'FOLLOW-FLAG,3 284 | CALL QUEUE,I-UNFOLLOW,2 285 | PRINTR "Jill enters from the kitchen. ""Hi, hon. You're home early!"" She kisses you before returning to the kitchen." 286 | ?ELS53: EQUAL? JILL-COUNTER,4,5 /?THN58 287 | EQUAL? JILL-COUNTER,8,9,10 \?ELS57 288 | ?THN58: EQUAL? JILL-COUNTER,4,10 \?ELS62 289 | PRINTI "Jill looks up from her book" 290 | JUMP ?CND60 291 | ?ELS62: EQUAL? JILL-COUNTER,5,8 \?ELS66 292 | PRINTI "Jill looks up from her painting" 293 | JUMP ?CND60 294 | ?ELS66: PRINTI "Jill stops working for a moment and smiles at you" 295 | ?CND60: SET 'YES-NO-FLAG,7 296 | CALL QUEUE,I-YES-NO,2 297 | PRINTR ". ""Hi, hon. Any news from your agent today?""" 298 | ?ELS57: SET 'FOLLOW-FLAG,2 299 | CALL QUEUE,I-UNFOLLOW,2 300 | PRINTI "Jill enters from the bedroom, " 301 | EQUAL? JILL-COUNTER,11 \?ELS81 302 | PRINTI "her hair wrapped in a towel" 303 | JUMP ?CND79 304 | ?ELS81: PRINTI "wearing a robe" 305 | ?CND79: PRINTR ". ""Perry, I wish you wouldn't stay out so late."" She heads back into the bedroom." 306 | ?ELS39: EQUAL? JILL-COUNTER,14 \?ELS91 307 | CALL QUEUE,I-JILL,-1 308 | LOC JILL >OLD-JILL-LOC 309 | CALL1 PUT-JILL-IN-THE-RIGHT-PLACE 310 | EQUAL? HERE,OLD-JILL-LOC \?ELS94 311 | CRLF 312 | PRINTI "With a deep sigh, Jill stops cleaning the mess" 313 | IN? JILL,HERE /?CND97 314 | SET 'FOLLOW-FLAG,15 315 | ADD ELAPSED-TIME,2 316 | CALL QUEUE,I-UNFOLLOW,STACK 317 | PRINTI " and leaves the room" 318 | ?CND97: PRINTI "." 319 | CRLF 320 | RFALSE 321 | ?ELS94: IN? JILL,HERE \FALSE 322 | CRLF 323 | PRINTI "Jill walks slowly into the room." 324 | CRLF 325 | RFALSE 326 | ?ELS91: GRTR? STIME,1402 \?ELS109 327 | EQUAL? JILL-COUNTER,12 \?ELS109 328 | SET 'JILL-COUNTER,0 329 | MOVE JILL,BEDROOM 330 | FCLEAR JILL-BOOK,NDESCBIT 331 | EQUAL? HERE,BEDROOM \FALSE 332 | CRLF 333 | PRINTR "Jill puts down her book and curls under the covers. Moments later, her breathing indicates that she is asleep." 334 | ?ELS109: GRTR? STIME,1299 \?ELS118 335 | EQUAL? JILL-COUNTER,11 \?ELS118 336 | SET 'JILL-COUNTER,12 337 | MOVE JILL,BEDROOM 338 | MOVE JILL-BOOK,BEDROOM 339 | FSET JILL-BOOK,NDESCBIT 340 | EQUAL? HERE,BEDROOM \?ELS123 341 | CRLF 342 | PRINTR "Jill enters and picks up her book. She slips into bed and begins reading." 343 | ?ELS123: EQUAL? HERE,BATHROOM \FALSE 344 | SET 'FOLLOW-FLAG,4 345 | CALL QUEUE,I-UNFOLLOW,2 346 | CRLF 347 | PRINTR "Jill finishes drying her hair and leaves the bathroom." 348 | ?ELS118: GRTR? STIME,1242 \?ELS131 349 | EQUAL? JILL-COUNTER,10 \?ELS131 350 | SET 'JILL-COUNTER,11 351 | MOVE JILL,BATHROOM 352 | MOVE JILL-BOOK,BEDROOM 353 | FCLEAR JILL-BOOK,NDESCBIT 354 | EQUAL? HERE,BATHROOM \?ELS136 355 | CRLF 356 | PRINTR "Jill enters and begins wetting her hair." 357 | ?ELS136: EQUAL? HERE,BEDROOM \?ELS140 358 | SET 'FOLLOW-FLAG,5 359 | CALL QUEUE,I-UNFOLLOW,2 360 | CRLF 361 | PRINTR "Jill enters from the living room, placing her book down near the bed. She wanders around for a minute, looking bored. ""I think I'll do my hair,"" she says, stepping into the bathroom." 362 | ?ELS140: EQUAL? HERE,LIVING-ROOM \FALSE 363 | SET 'FOLLOW-FLAG,2 364 | CALL QUEUE,I-UNFOLLOW,2 365 | CRLF 366 | PRINTR "Jill stands, stretches, and walks into the bedroom." 367 | ?ELS131: GRTR? STIME,1137 \?ELS148 368 | EQUAL? JILL-COUNTER,9 \?ELS148 369 | SET 'JILL-COUNTER,10 370 | MOVE JILL,LIVING-ROOM 371 | MOVE JILL-BOOK,LIVING-ROOM 372 | FSET JILL-BOOK,NDESCBIT 373 | EQUAL? HERE,LIVING-ROOM \FALSE 374 | CRLF 375 | PRINTR "Jill picks up a book and sits down on the couch to read it." 376 | ?ELS148: GRTR? STIME,1084 \?ELS157 377 | EQUAL? JILL-COUNTER,8 \?ELS157 378 | SET 'JILL-COUNTER,9 379 | MOVE JILL,LIVING-ROOM 380 | EQUAL? HERE,LIVING-ROOM \FALSE 381 | CRLF 382 | PRINTR "Jill puts down the paintbrush and begins cleaning up the room." 383 | ?ELS157: GRTR? STIME,912 \?ELS166 384 | EQUAL? JILL-COUNTER,7 \?ELS166 385 | SET 'JILL-COUNTER,8 386 | MOVE JILL,LIVING-ROOM 387 | EQUAL? HERE,LIVING-ROOM \?ELS171 388 | CRLF 389 | PRINTR "Jill enters the living room and looks around as though trying to decide what to do. She walks over to her easel, stares at it for a few moments, and then picks up a paintbrush." 390 | ?ELS171: EQUAL? HERE,KITCHEN \FALSE 391 | SET 'FOLLOW-FLAG,6 392 | CALL QUEUE,I-UNFOLLOW,2 393 | CRLF 394 | PRINTR "Jill finishes the last of the dishes and walks into the living room." 395 | ?ELS166: GRTR? STIME,859 \?ELS179 396 | EQUAL? JILL-COUNTER,6 \?ELS179 397 | SET 'JILL-COUNTER,7 398 | MOVE JILL,KITCHEN 399 | MOVE SALAD,LOCAL-GLOBALS 400 | EQUAL? HERE,KITCHEN \FALSE 401 | CRLF 402 | PRINTR "Jill finishes her salad, walks over to the sink, and begins cleaning some dishes." 403 | ?ELS179: GRTR? STIME,813 \?ELS188 404 | EQUAL? JILL-COUNTER,5 \?ELS188 405 | SET 'JILL-COUNTER,6 406 | MOVE SALAD,KITCHEN 407 | FSET SALAD,NDESCBIT 408 | MOVE JILL,KITCHEN 409 | FCLEAR REFRIGERATOR,OPENBIT 410 | EQUAL? HERE,KITCHEN \?ELS193 411 | CRLF 412 | PRINTI "Jill walks in and gets a " 413 | PRINTD SALAD 414 | PRINTI " from the " 415 | PRINTD REFRIGERATOR 416 | PRINTI ". She sits at the " 417 | PRINTD DINETTE-SET 418 | PRINTR " and begins slowly munching on the salad." 419 | ?ELS193: EQUAL? HERE,LIVING-ROOM \FALSE 420 | SET 'FOLLOW-FLAG,3 421 | CALL QUEUE,I-UNFOLLOW,2 422 | CRLF 423 | PRINTR "Jill lays down her brush. ""I'm getting hungry."" She heads off into the kitchen." 424 | ?ELS188: GRTR? STIME,697 \?ELS207 425 | EQUAL? JILL-COUNTER,4 \?ELS207 426 | SET 'JILL-COUNTER,5 427 | MOVE JILL,LIVING-ROOM 428 | FCLEAR JILL-BOOK,NDESCBIT 429 | EQUAL? HERE,LIVING-ROOM \FALSE 430 | CRLF 431 | PRINTR "Jill puts down the book and stretches. She walks over to her easel, stares at the painting for a moment, and picks up a paintbrush." 432 | ?ELS207: GRTR? STIME,644 \?ELS216 433 | EQUAL? JILL-COUNTER,3 \?ELS216 434 | SET 'JILL-COUNTER,4 435 | MOVE JILL,LIVING-ROOM 436 | MOVE JILL-BOOK,LIVING-ROOM 437 | FSET JILL-BOOK,NDESCBIT 438 | MOVE SALAD,REFRIGERATOR 439 | FCLEAR SALAD,NDESCBIT 440 | EQUAL? HERE,LIVING-ROOM \?ELS221 441 | CRLF 442 | PRINTR "Jill walks from the kitchen to the bedroom, returns with her book, settles onto the couch, and begins reading." 443 | ?ELS221: EQUAL? HERE,BEDROOM \?ELS225 444 | CRLF 445 | PRINTI "Jill walks into the bedroom, picks up her book, and returns to the living room." 446 | CRLF 447 | RFALSE 448 | ?ELS225: EQUAL? HERE,KITCHEN \FALSE 449 | SET 'FOLLOW-FLAG,6 450 | CALL QUEUE,I-UNFOLLOW,2 451 | FCLEAR REFRIGERATOR,OPENBIT 452 | CRLF 453 | PRINTI "Jill puts the salad in the " 454 | PRINTD REFRIGERATOR 455 | PRINTR " and goes into the living room." 456 | ?ELS216: GRTR? STIME,591 \?ELS235 457 | EQUAL? JILL-COUNTER,2 \?ELS235 458 | SET 'JILL-COUNTER,3 459 | MOVE JILL,KITCHEN 460 | MOVE SALAD,KITCHEN 461 | FSET SALAD,NDESCBIT 462 | EQUAL? HERE,KITCHEN \?ELS240 463 | CRLF 464 | PRINTR "Jill enters and begins making a salad." 465 | ?ELS240: EQUAL? HERE,BEDROOM \?ELS244 466 | SET 'FOLLOW-FLAG,7 467 | CALL QUEUE,I-UNFOLLOW,2 468 | CRLF 469 | PRINTR "Jill walks out of the room, toward the living room." 470 | ?ELS244: EQUAL? HERE,LIVING-ROOM \FALSE 471 | SET 'FOLLOW-FLAG,3 472 | CALL QUEUE,I-UNFOLLOW,2 473 | CRLF 474 | PRINTR "Jill passes through on her way from the bedroom to the kitchen." 475 | ?ELS235: GRTR? STIME,522 \?ELS252 476 | EQUAL? JILL-COUNTER,1 \?ELS252 477 | SET 'JILL-COUNTER,2 478 | MOVE JILL,BEDROOM 479 | EQUAL? HERE,BEDROOM \FALSE 480 | CRLF 481 | PRINTR "Jill finishes dressing and begins neatening up the room." 482 | ?ELS252: GRTR? STIME,478 \?ELS261 483 | LESS? STIME,1380 \?ELS261 484 | ZERO? JILL-COUNTER \?ELS261 485 | SET 'JILL-COUNTER,1 486 | MOVE JILL,BEDROOM 487 | EQUAL? HERE,BEDROOM \FALSE 488 | CRLF 489 | PRINTR "Jill rubs her eyes and rolls out of bed. ""Morning, honey! I sure slept like a stone!"" She gives you a quick kiss and begins dressing." 490 | ?ELS261: ZERO? JILL-NOT-SPOKEN-YET /FALSE 491 | IN? JILL,HERE \FALSE 492 | ZERO? JILL-COUNTER /FALSE 493 | RANDOM 100 494 | LESS? 5,STACK /FALSE 495 | SET 'JILL-NOT-SPOKEN-YET,FALSE-VALUE 496 | EQUAL? SYEAR,2041 \?ELS275 497 | CRLF 498 | PRINTI "Jill looks up. ""Perry, I heard a news report yesterday about interest rates and housing prices. If the economy keeps going the way it's going, and someone buys your Africa book, we might be able to afford a house next year!""" 499 | CRLF 500 | RFALSE 501 | ?ELS275: CRLF 502 | PRINTI """Oh, Perry! Clave called while you were out,"" says Jill. ""The firm is sending him to Japan for a week; he'll call when he gets back. He says not to worry, he'll only be in the American section. He says that the kids keep asking for you.""" 503 | CRLF 504 | RFALSE 505 | 506 | 507 | .FUNCT I-MITCHELL 508 | CALL1 IN-APARTMENT? 509 | ZERO? STACK \?ELS3 510 | EQUAL? HERE,PARKVIEW-HALL /?ELS3 511 | CALL2 INT,I-MITCHELL 512 | PUT STACK,0,0 513 | RFALSE 514 | ?ELS3: GRTR? STIME,1374 \?ELS7 515 | EQUAL? MITCHELL-COUNTER,4 \?ELS7 516 | SET 'MITCHELL-COUNTER,0 517 | MOVE HOMEWORK,LOCAL-GLOBALS 518 | MOVE MITCHELL,LOCAL-GLOBALS 519 | EQUAL? HERE,LIVING-ROOM \FALSE 520 | SET 'FOLLOW-FLAG,14 521 | CALL QUEUE,I-UNFOLLOW,2 522 | CRLF 523 | PRINTR """Good night, Dad."" Mitch gives you a quick kiss and goes to his ""room"" on the other side of the partition." 524 | ?ELS7: GRTR? STIME,1120 \?ELS16 525 | EQUAL? MITCHELL-COUNTER,3 \?ELS16 526 | SET 'MITCHELL-COUNTER,4 527 | MOVE HOMEWORK,LIVING-ROOM 528 | MOVE LOGIC-GAME,LOCAL-GLOBALS 529 | EQUAL? HERE,LIVING-ROOM \FALSE 530 | CRLF 531 | PRINTI "Mitchell puts away the " 532 | PRINTD LOGIC-GAME 533 | PRINTR " and spreads out his homework." 534 | ?ELS16: GRTR? STIME,1011 \?ELS27 535 | EQUAL? MITCHELL-COUNTER,2 \?ELS27 536 | SET 'MITCHELL-COUNTER,3 537 | MOVE MITCHELL,LIVING-ROOM 538 | MOVE LOGIC-GAME,MITCHELL 539 | EQUAL? HERE,PARKVIEW-HALL \?ELS32 540 | SET 'FOLLOW-FLAG,11 541 | CALL QUEUE,I-UNFOLLOW,2 542 | PRINTI "Mitchell comes running down the hall. ""Hey Dad" 543 | PRINT ALGEBRA 544 | PRINTI " He " 545 | FSET? APARTMENT-DOOR,OPENBIT /?CND35 546 | PRINTI "opens the door and " 547 | ?CND35: PRINTI "bounds into the apartment" 548 | FSET? APARTMENT-DOOR,OPENBIT /?CND42 549 | PRINTI ", closing the door behind him" 550 | ?CND42: PRINTR "." 551 | ?ELS32: EQUAL? HERE,LIVING-ROOM \?ELS53 552 | FSET? APARTMENT-DOOR,OPENBIT /?CND54 553 | PRINTI "The door opens and " 554 | ?CND54: PRINTI "Mitchell runs into the apartment. " 555 | JUMP ?CND51 556 | ?ELS53: PRINTI "You hear " 557 | FSET? APARTMENT-DOOR,OPENBIT /?CND65 558 | PRINTI "the front door open, followed by " 559 | ?CND65: PRINTI "Mitchell's voice. " 560 | ?CND51: PRINTI """I'm home" 561 | PRINT ALGEBRA 562 | EQUAL? HERE,LIVING-ROOM \?CND74 563 | PRINTI " He pulls out his favorite " 564 | PRINTD LOGIC-GAME 565 | PRINTI " and settles into a corner." 566 | ?CND74: CRLF 567 | RTRUE 568 | ?ELS27: GRTR? STIME,505 \?ELS82 569 | EQUAL? MITCHELL-COUNTER,1 \?ELS82 570 | SET 'MITCHELL-COUNTER,2 571 | MOVE MITCHELL,LOCAL-GLOBALS 572 | EQUAL? HERE,PARKVIEW-HALL \?ELS87 573 | SET 'FOLLOW-FLAG,10 574 | CALL QUEUE,I-UNFOLLOW,2 575 | CRLF 576 | PRINTR "Mitchell emerges from the apartment, carrying his lunch box. ""Hi, Dad! See you later!"" He dashes down the stairs." 577 | ?ELS87: SET 'FOLLOW-FLAG,12 578 | CALL QUEUE,I-UNFOLLOW,2 579 | CRLF 580 | PRINTI """Mom! Dad!"" yells Mitchell. ""I'm off to school!""" 581 | EQUAL? HERE,LIVING-ROOM \?CND94 582 | PRINTI " Mitchell waves to you and leaves." 583 | ?CND94: CRLF 584 | RTRUE 585 | ?ELS82: GRTR? STIME,463 \FALSE 586 | LESS? STIME,720 \FALSE 587 | ZERO? MITCHELL-COUNTER \FALSE 588 | SET 'MITCHELL-COUNTER,1 589 | MOVE MITCHELL,LIVING-ROOM 590 | EQUAL? HERE,LIVING-ROOM \FALSE 591 | CRLF 592 | PRINTR "Mitchell appears from behind his partition and begins getting ready for school." 593 | 594 | 595 | .FUNCT I-APARTMENT 596 | EQUAL? JILL-COUNTER,13 \?ELS5 597 | SET 'JILL-COUNTER,14 598 | CALL QUEUE,I-JILL,28 599 | IN? JILL,HERE \FALSE 600 | CRLF 601 | PRINTR "Jill, with a few final sniffles, stops crying and begins straightening up the apartment." 602 | ?ELS5: CALL1 IN-APARTMENT? 603 | ZERO? STACK \?ELS12 604 | CALL2 INT,I-APARTMENT 605 | PUT STACK,0,0 606 | RFALSE 607 | ?ELS12: GRTR? STIME,1320 /?THN15 608 | LESS? STIME,480 \?ELS14 609 | ?THN15: CALL QUEUE,I-APARTMENT,30 610 | RSTACK 611 | ?ELS14: EQUAL? SYEAR,2041 /FALSE 612 | ZERO? APARTMENT-RAID-FLAG \FALSE 613 | RANDOM 100 614 | LESS? RAID-PROB,STACK /?ELS25 615 | FSET? APARTMENT-DOOR,OPENBIT \?ELS28 616 | CRLF 617 | PRINTI "You hear a commotion in the hallway and then" 618 | JUMP ?CND26 619 | ?ELS28: CRLF 620 | PRINTI "WHAM! The door of your apartment slams open and" 621 | ?CND26: EQUAL? HERE,LIVING-ROOM /?CND35 622 | PRINTI ", as you rush into the living room," 623 | ?CND35: PRINTI " a half-dozen Border Security Force officers storm in, rifles ready. You freeze as they tramp about the apartment wielding Rad-Detectors. " 624 | SET 'APARTMENT-RAID-FLAG,TRUE-VALUE 625 | SET 'HERE,LIVING-ROOM 626 | MOVE PLAYER,LIVING-ROOM 627 | EQUAL? SYEAR,2071 \?CND42 628 | PRINTI "Almost without reason, they tear your curtains, spill food onto the kitchen floor, and overturn furniture. " 629 | ZERO? BOOK-PURCHASED /?CND42 630 | PRINTI "One of the officers picks up an old, beautiful " 631 | PRINTD BOOK 632 | PRINTI " that you've owned for years and smiles gleefully as he rips it to shreds. " 633 | ?CND42: PRINTI "After a few nightmare minutes, they seem satisfied" 634 | EQUAL? SYEAR,2051 \?ELS61 635 | CALL2 SCORE,8 636 | PRINTI " and begin to file out. The apparent leader turns to you. ""Sorry for the inconvenience,"" he says apologetically. ""You know how things are. We're only doing it for your own protection."" He closes the door behind him. You hear sobbing and turn to see Jill crying in the corner of the living room" 637 | IN? MITCHELL,HERE \?CND64 638 | PRINTI ". Mitchell, exhibiting the innocent resilience of a child, resumes his normal activities" 639 | ?CND64: PRINTI "." 640 | CRLF 641 | FCLEAR APARTMENT-DOOR,OPENBIT 642 | CALL2 INT,I-JILL 643 | PUT STACK,0,0 644 | CALL QUEUE,I-APARTMENT,10 645 | SET 'JILL-COUNTER,13 646 | MOVE PLAYER,LIVING-ROOM 647 | MOVE JILL,LIVING-ROOM 648 | RTRUE 649 | ?ELS61: EQUAL? SYEAR,2061 \?ELS72 650 | CALL2 SCORE,9 651 | FCLEAR APARTMENT-DOOR,OPENBIT 652 | CALL2 INT,I-APARTMENT 653 | PUT STACK,0,0 654 | PRINTR " and begin to leave. One officer turns to you. ""The place is clean,"" he says gruffly. ""Keep it that way."" He slams the door behind him." 655 | ?ELS72: CALL2 SCORE,10 656 | FSET APARTMENT-DOOR,OPENBIT 657 | CALL2 INT,I-APARTMENT 658 | PUT STACK,0,0 659 | PRINTR " and march out without a word, leaving the door open behind them." 660 | ?ELS25: ADD RAID-PROB,6 >RAID-PROB 661 | RFALSE 662 | 663 | 664 | .FUNCT I-CURFEW 665 | EQUAL? HERE,JAIL-CELL \?ELS5 666 | GRTR? ELAPSED-TIME,100 \?ELS10 667 | CALL QUEUE,I-CURFEW,5 668 | RFALSE 669 | ?ELS10: MOVE BLANKET,JAIL-CELL 670 | SET 'LIGHT-LEVEL,3 671 | CRLF 672 | PRINTI "A bored cop comes along, opens your cell, and steers you out of the building. ""We find you out after curfew again,"" he says, ""we won't treat you so easy. You goddam vagrants, you oughtta be thrown outta town."" He settles for throwing you out of the " 673 | PRINTD POLICE-STATION-OBJECT 674 | PRINTI "." 675 | CRLF 676 | CRLF 677 | CALL2 GOTO,ELM-AND-PARK 678 | RSTACK 679 | ?ELS5: GRTR? STIME,420 \?ELS18 680 | LESS? STIME,1260 \?ELS18 681 | CALL2 INT,I-CURFEW 682 | PUT STACK,0,0 683 | RFALSE 684 | ?ELS18: FSET? HERE,STREETBIT /?ELS22 685 | CALL QUEUE,I-CURFEW,-1 686 | RFALSE 687 | ?ELS22: RANDOM 100 688 | LESS? 8,STACK /?ELS24 689 | EQUAL? SYEAR,2071 \?ELS29 690 | CALL2 SCORE,117 691 | CALL2 JIGS-UP,STR?11 692 | RSTACK 693 | ?ELS29: GRTR? STIME,1260 \?ELS34 694 | SUB 1440,STIME 695 | ADD 420,STACK 696 | CALL QUEUE,I-CURFEW,STACK 697 | JUMP ?CND32 698 | ?ELS34: SUB 420,STIME 699 | CALL QUEUE,I-CURFEW,STACK 700 | ?CND32: CALL2 SCORE,116 701 | CRLF 702 | PRINTI "A police car pulls up next to you and a burly cop gets out. He discovers that you have no curfew pass and hustles you into the rear. Minutes later, you are flung into a tiny cell." 703 | CRLF 704 | CRLF 705 | CALL2 GOTO,JAIL-CELL 706 | RSTACK 707 | ?ELS24: CALL QUEUE,I-CURFEW,-1 708 | RFALSE 709 | 710 | 711 | .FUNCT I-SUNRISE-SUNSET,X 712 | MUL SMONTH,20 713 | SUB STACK,20 >X 714 | ADD STIME,X 715 | GRTR? STACK,455 \?ELS3 716 | ADD LAST-SUN-TIME,X 717 | GRTR? STACK,455 /?ELS3 718 | SET 'LIGHT-LEVEL,1 719 | FSET? HERE,OUTSIDEBIT \?CND1 720 | CRLF 721 | PRINTI "You begin to see the faint glow of dawn from the east." 722 | CRLF 723 | JUMP ?CND1 724 | ?ELS3: ADD STIME,X 725 | GRTR? STACK,469 \?ELS12 726 | ADD LAST-SUN-TIME,X 727 | GRTR? STACK,469 /?ELS12 728 | SET 'LIGHT-LEVEL,2 729 | FSET? HERE,OUTSIDEBIT \?CND1 730 | EQUAL? SYEAR,2041,2051 \?ELS20 731 | CRLF 732 | PRINTI "The first rays of the sun begin streaming between the buildings to the east." 733 | CRLF 734 | JUMP ?CND1 735 | ?ELS20: CALL2 SCORE,118 736 | CRLF 737 | PRINTI "The glow in the east brightens, as the sun attempts to break through the hazy smog." 738 | CRLF 739 | JUMP ?CND1 740 | ?ELS12: ADD STIME,X 741 | GRTR? STACK,490 \?ELS28 742 | ADD LAST-SUN-TIME,X 743 | GRTR? STACK,490 /?ELS28 744 | SET 'LIGHT-LEVEL,3 745 | FSET? HERE,OUTSIDEBIT \?CND1 746 | CRLF 747 | PRINTI "The sky continues to brighten. Dawn is over; day has begun." 748 | CRLF 749 | JUMP ?CND1 750 | ?ELS28: GRTR? STIME,725 \?ELS37 751 | GRTR? LAST-SUN-TIME,725 /?ELS37 752 | FSET? HERE,OUTSIDEBIT \?CND1 753 | GRTR? X,50 \?ELS45 754 | EQUAL? SYEAR,2041,2051 \?ELS48 755 | CRLF 756 | PRINTI "The sun, beating down warmly on you, has reached its midday apex." 757 | CRLF 758 | JUMP ?CND1 759 | ?ELS48: CALL2 SCORE,118 760 | CRLF 761 | PRINTI "The diffuse glow of the sun is nearly straight overhead, another gray noontime." 762 | CRLF 763 | JUMP ?CND1 764 | ?ELS45: EQUAL? SYEAR,2041,2051 \?ELS59 765 | CRLF 766 | PRINTI "The noontime sun has risen fairly high in the southern sky, taking some of the chill out of this wintry day." 767 | CRLF 768 | JUMP ?CND1 769 | ?ELS59: CALL2 SCORE,118 770 | CRLF 771 | PRINTI "The sun's feeble glow is skirting the building tops toward the south, providing little comfort or warmth on this gray, dismal day." 772 | CRLF 773 | JUMP ?CND1 774 | ?ELS37: SUB STIME,X 775 | GRTR? STACK,1010 \?ELS67 776 | SUB LAST-SUN-TIME,X 777 | GRTR? STACK,1010 /?ELS67 778 | SET 'LIGHT-LEVEL,2 779 | FSET? HERE,OUTSIDEBIT \?CND1 780 | EQUAL? SYEAR,2041,2051 \?ELS75 781 | CRLF 782 | PRINTI "The sun is dropping very low in the western sky." 783 | CRLF 784 | JUMP ?CND1 785 | ?ELS75: CALL2 SCORE,118 786 | CRLF 787 | PRINTI "The sky is darkening as the sun sinks into the smoggy haze of the horizon." 788 | CRLF 789 | JUMP ?CND1 790 | ?ELS67: SUB STIME,X 791 | GRTR? STACK,1028 \?ELS83 792 | SUB LAST-SUN-TIME,X 793 | GRTR? STACK,1028 /?ELS83 794 | SET 'LIGHT-LEVEL,1 795 | FSET? HERE,OUTSIDEBIT \?CND1 796 | EQUAL? SYEAR,2041,2051 \?ELS91 797 | CRLF 798 | PRINTI "Twilight casts its long shadows across the city as the sun disappears in the west." 799 | CRLF 800 | JUMP ?CND1 801 | ?ELS91: CRLF 802 | PRINTI "The dusk continues to gather; an ominous darkness settles onto the city." 803 | CRLF 804 | JUMP ?CND1 805 | ?ELS83: SUB STIME,X 806 | GRTR? STACK,1049 \?CND1 807 | SUB LAST-SUN-TIME,X 808 | GRTR? STACK,1049 /?CND1 809 | SET 'LIGHT-LEVEL,0 810 | FSET? HERE,OUTSIDEBIT \?CND1 811 | CRLF 812 | PRINTI "It is night." 813 | CRLF 814 | ?CND1: SET 'LAST-SUN-TIME,STIME 815 | RFALSE 816 | 817 | 818 | .FUNCT I-SKYCAB,OLD-WINNER 819 | CALL QUEUE,I-SKYCAB,-1 820 | INC 'SKYCAB-COUNTER 821 | EQUAL? SKYCAB-COUNTER,1 \?ELS5 822 | CRLF 823 | PRINTI "The gentle voice of your domestic computer calls softly from one of its many unseen speakers. ""The skycab you asked for is now waiting on the roof."" Jill " 824 | EQUAL? HERE,MASTER-BEDROOM \?ELS10 825 | PRINTI "summons the robutler to carry your baggage" 826 | JUMP ?CND8 827 | ?ELS10: PRINTI "appears at the top of the steps with the robutler, who is carrying several bags" 828 | ?CND8: PRINTI ". ""Algie has everything, Perry. Let's get going!"" 829 | 830 | You take a last look around the apartment and follow Jill and Algie into the hallway and up to the roofpad. As you clamber into the waiting skycab, Jill gives the robutler a fond farewell pat. The skycab climbs lazily and veers off to the northeast." 831 | CRLF 832 | CRLF 833 | MOVE MAGAZINE,JILL 834 | CALL2 GOTO,SKYCAB 835 | MOVE SEAT,SKYCAB 836 | MOVE PLAYER,SEAT 837 | MOVE JILL,HERE 838 | RTRUE 839 | ?ELS5: EQUAL? SKYCAB-COUNTER,2 \?ELS20 840 | CRLF 841 | PRINTI "The cab enters the central Rockvil traffic pattern, gently curving along the ring of downtown parks. " 842 | SET 'OLD-WINNER,WINNER 843 | SET 'WINNER,PLAYER 844 | CALL PERFORM,V?EXAMINE,PARK-OBJECT 845 | SET 'WINNER,OLD-WINNER 846 | CRLF 847 | PRINTI "Jill, glancing through yet another " 848 | PRINTD MAGAZINE-ARTICLE 849 | PRINTR " on the Silver Dove, says, ""This story talks about the new athletics and art forms that are still being discovered for the weightless area at the axes of the habitats. Oh, Perry, I'm so excited,"" she adds, unnecessarily." 850 | ?ELS20: EQUAL? SKYCAB-COUNTER,3 \?ELS28 851 | CRLF 852 | PRINTI "The skycab continues its wide arc around the downtown area, approaching the Rockvil Pier. " 853 | SET 'OLD-WINNER,WINNER 854 | SET 'WINNER,PLAYER 855 | CALL PERFORM,V?EXAMINE,RIVER 856 | SET 'WINNER,OLD-WINNER 857 | RTRUE 858 | ?ELS28: EQUAL? SKYCAB-COUNTER,4 \?ELS32 859 | CRLF 860 | PRINTI "As the cab whisks northward along the edge of the river, y" 861 | PRINT RS-DESC 862 | CRLF 863 | RTRUE 864 | ?ELS32: EQUAL? SKYCAB-COUNTER,5 \?ELS36 865 | CRLF 866 | PRINTI "As the skycab begins its approach to the spaceport, it passes over the museum established on the site of the former BSF Base, a sobering monument to one of mankind's great follies. 867 | 868 | Suddenly the " 869 | PRINTD VIEWSCREEN 870 | PRINTR " lights up, and Mitchell's face appears. ""Hi, Mom, Dad! I wanted to wish you bon voyage, and I enlisted a little help!"" He expands the field of vision to include the entire living room of his spacious apartment at the Marine Biology Institute in Nova Scotia. The room is filled with your grandchildren and great-grandchildren, plus various in-laws, more than twenty members of the Simm clan. Everyone is hooting, yelling, waving, and blowing kisses. ""We're having a big party in your honor -- I'm only sorry we couldn't be there with you. We're real proud of you both, and excited for you, too. Call me when you get to the habitat! Bye!"" The clan signs off by singing Auld Lang Syne, and when the screen goes dark, you notice that Jill's eyes are wet, and a second later you realize that yours are, as well." 871 | ?ELS36: EQUAL? SKYCAB-COUNTER,6 \FALSE 872 | CALL1 END-IT 873 | RSTACK 874 | 875 | 876 | .FUNCT I-SUFFOCATE 877 | INC 'SUFFOCATE-COUNTER 878 | EQUAL? SUFFOCATE-COUNTER,17 \?ELS3 879 | CALL2 INT,I-SUFFOCATE 880 | PUT STACK,0,0 881 | MOVE SABOTEURS,LOCAL-GLOBALS 882 | EQUAL? HERE,CORE \FALSE 883 | CRLF 884 | PRINTR "A National Guard patrol enters the area and rushes to the side of the prone bodies. ""Still breathing, but barely!"" shouts the leader. They grab the saboteurs and carry them out." 885 | ?ELS3: EQUAL? SUFFOCATE-COUNTER,16 \?ELS12 886 | CALL2 INT,I-SABOTAGE 887 | PUT STACK,0,0 888 | CALL QUEUE,I-SUFFOCATE,24 889 | PUTP SABOTEURS,P?LDESC,STR?12 890 | EQUAL? HERE,CORE \FALSE 891 | CRLF 892 | PRINTR "One of the men suddenly gasps and falls over. The others dash to his side, then slowly pass out themselves." 893 | ?ELS12: EQUAL? SUFFOCATE-COUNTER,13 \?ELS19 894 | EQUAL? HERE,CORE \?ELS19 895 | CRLF 896 | PRINTR "The saboteur with the gun says, ""Hurry, will ya! I need to get some fresh air!"" The apparent leader replies, ""We're working as fast as we can! Keep your cool.""" 897 | ?ELS19: EQUAL? SUFFOCATE-COUNTER,8 \FALSE 898 | EQUAL? HERE,CORE \FALSE 899 | SET 'YES-NO-FLAG,8 900 | CALL QUEUE,I-YES-NO,2 901 | CRLF 902 | PRINTR "One of the men, tugging at the collar of his smock, says, ""Stuffy in here, isn't it?""" 903 | 904 | 905 | .FUNCT I-AIR-CONDITIONING 906 | INC 'AIR-CONDITIONING-COUNTER 907 | EQUAL? AIR-CONDITIONING-COUNTER,20,35 \?ELS3 908 | CALL1 V-DIAGNOSE 909 | RTRUE 910 | ?ELS3: EQUAL? AIR-CONDITIONING-COUNTER,46 \FALSE 911 | ZERO? SIMULATING /?ELS8 912 | CRLF 913 | PRINTI "The raging fever must be affecting your mind; the world around you seems to be shimmering away and vanishing. Then suddenly -- you're out of " 914 | PRINTD SIMULATION-MODE 915 | PRINTI "! Something is terribly wrong! Nothing feels right. You can't even think straight. Your functions are fading..." 916 | CRLF 917 | CRLF 918 | CALL1 FINISH 919 | RFALSE 920 | ?ELS8: CRLF 921 | PRINTI "The dysfunction of your systems is becoming incredibly serious, and you feel it as almost a burning pain. It numbs your mind, blocks your thought patterns. You feel your consciousness fade away..." 922 | CRLF 923 | CRLF 924 | CALL1 FINISH 925 | RFALSE 926 | 927 | 928 | .FUNCT I-RORSCHACH 929 | CALL QUEUE,I-RORSCHACH,-1 930 | GRTR? GRIMWOLD-COUNTER,0 \?CND1 931 | INC 'GRIMWOLD-COUNTER 932 | GRTR? GRIMWOLD-COUNTER,8 \?ELS6 933 | MOVE GRIMWOLD,LOCAL-GLOBALS 934 | MOVE PERELMAN,LOCAL-GLOBALS 935 | FCLEAR PERELMAN,NDESCBIT 936 | CALL2 INT,I-RORSCHACH 937 | PUT STACK,0,0 938 | SET 'GRIMWOLD-COUNTER,0 939 | MOVE COFFEE,LOCAL-GLOBALS 940 | CALL2 VISIBLE?,PERELMAN 941 | ZERO? STACK /?CND7 942 | EQUAL? PERELMAN,WINNER \?CND7 943 | CALL1 CLEAR-BUF 944 | ?CND7: CALL QUEUE,I-PERELMAN,30 945 | ADD TIME,25 >LAST-ABE-TIME 946 | CRLF 947 | PRINTR """Hmmph!"" says Grimwold, whirling and heading for the door. ""This rudeness will certainly figure in my report!"" Perelman looks at you with a mixture of annoyance and puzzlement, then rushes off after the psychiatrist." 948 | ?ELS6: CRLF 949 | PRINTR "After a moment, Grimwold again asks, ""Can we begin now?""" 950 | ?CND1: IN? GRIMWOLD,OFFICE /?ELS20 951 | MOVE GRIMWOLD,OFFICE 952 | MOVE PERELMAN,OFFICE 953 | FSET PERELMAN,NDESCBIT 954 | EQUAL? HERE,OFFICE /?ELS23 955 | CALL QUEUE,I-RORSCHACH,1 956 | RFALSE 957 | ?ELS23: CALL2 INT,I-MESSAGE-E 958 | PUT STACK,0,0 959 | CRLF 960 | PRINTI "Perelman enters with Dr. Ernest Grimwold, a quintessential Viennese psychiatrist whom you met a few days earlier, and nods to you. ""Good " 961 | GRTR? TIME,720 \?ELS30 962 | PRINTI "afternoon" 963 | JUMP ?CND28 964 | ?ELS30: PRINTI "morning" 965 | ?CND28: PRINTI ", PRISM. You remember Dr. Grimwold.""" 966 | JUMP ?CND18 967 | ?ELS20: EQUAL? HERE,OFFICE /?ELS40 968 | CALL QUEUE,I-RORSCHACH,1 969 | RFALSE 970 | ?ELS40: CALL2 INT,I-MESSAGE-E 971 | PUT STACK,0,0 972 | CRLF 973 | PRINTI "Perelman" 974 | PRINT SPOTS-ACTIVE-LIGHT 975 | PRINTI " come on. ""Ah, here you are. PRISM, you remember Dr. Ernest Grimwold."" You recognize and greet the psychiatrist who gave you a series of psych tests a few days ago." 976 | ?CND18: SET 'GRIMWOLD-COUNTER,1 977 | CRLF 978 | CRLF 979 | PRINTR """It's a pleasure to see you again,"" says Grimwold, in an accent that matches his appearance perfectly. ""This should take only a couple of minutes. I'm going to show you some patterns, and I simply want you to tell me the single word that comes to mind when you see them. Don't think about it; just say the first word you think of."" 980 | 981 | Grimwold reaches below your viewing area and picks up a sheaf of placards. ""Ready to begin?"" he asks." 982 | 983 | 984 | .FUNCT BLOT-ACTION,CNT=0,WORDS-IN-RESPONSE 985 | ?PRG1: ZERO? CNT \?ELS5 986 | CALL2 INIT-STATUS-LINE,18 987 | CALL1 STATUS-LINE 988 | JUMP ?CND3 989 | ?ELS5: PRINTI "Grimwold nods knowingly, mumbles under his breath, and makes a note in his pad. " 990 | ?CND3: CALL1 INK-BLOT 991 | PRINTI """Okay, here's the " 992 | ZERO? CNT \?ELS14 993 | PRINTI "first" 994 | JUMP ?CND12 995 | ?ELS14: PRINTI "next" 996 | ?CND12: PRINTI " one,"" he says, holding a card up to your visual unit." 997 | CRLF 998 | ?PRG23: CRLF 999 | PRINTI ">" 1000 | READ P-INBUF,P-LEXV 1001 | CALL1 BLOT-WORD-COUNT >WORDS-IN-RESPONSE 1002 | GRTR? WORDS-IN-RESPONSE,1 \?ELS27 1003 | PRINTI """You're not following my instructions, PRISM. Just tell me the one word that pops into your mind.""" 1004 | CRLF 1005 | JUMP ?PRG23 1006 | ?ELS27: GETB P-LEXV,P-LEXWORDS 1007 | ZERO? STACK \?ELS31 1008 | PRINTI """I beg your pardon?""" 1009 | CRLF 1010 | JUMP ?PRG23 1011 | ?ELS31: GET P-LEXV,1 1012 | EQUAL? STACK,W?RESTORE,W?SAVE \?ELS35 1013 | PRINTI "You can't " 1014 | GET P-LEXV,1 1015 | EQUAL? STACK,W?RESTORE \?ELS40 1016 | PRINTI "RESTORE" 1017 | JUMP ?CND38 1018 | ?ELS40: PRINTI "SAVE" 1019 | ?CND38: PRINTI " right now -- you're in the middle of an important psych test!" 1020 | CRLF 1021 | JUMP ?PRG23 1022 | ?ELS35: GET P-LEXV,1 1023 | EQUAL? STACK,W?QUIT,W?Q \?ELS50 1024 | CALL1 V-QUIT 1025 | JUMP ?PRG23 1026 | ?ELS50: GET P-LEXV,1 1027 | EQUAL? STACK,W?RESTART \?ELS52 1028 | CALL1 V-RESTART 1029 | JUMP ?PRG23 1030 | ?ELS52: GET P-LEXV,1 1031 | EQUAL? STACK,W?SCRIPT \?ELS54 1032 | CALL1 V-SCRIPT 1033 | JUMP ?PRG23 1034 | ?ELS54: GET P-LEXV,1 1035 | EQUAL? STACK,W?UNSCRIPT \?REP24 1036 | CALL1 V-UNSCRIPT 1037 | JUMP ?PRG23 1038 | ?REP24: EQUAL? CNT,4 \?ELS61 1039 | MOVE GRIMWOLD,LOCAL-GLOBALS 1040 | MOVE PERELMAN,LOCAL-GLOBALS 1041 | MOVE COFFEE,LOCAL-GLOBALS 1042 | FCLEAR PERELMAN,NDESCBIT 1043 | CALL2 VISIBLE?,PERELMAN 1044 | ZERO? STACK /?CND62 1045 | EQUAL? PERELMAN,WINNER \?CND62 1046 | CALL1 CLEAR-BUF 1047 | ?CND62: CALL QUEUE,I-PERELMAN,30 1048 | ADD TIME,25 >LAST-ABE-TIME 1049 | SET 'GRIMWOLD-COUNTER,0 1050 | CALL2 INIT-STATUS-LINE,2 1051 | PRINTI "Grimwold makes a final notation in his notebook. ""Thanks, PRISM."" He picks up all the placards and leaves the room along with Perelman." 1052 | CRLF 1053 | CALL2 INT,I-RORSCHACH 1054 | PUT STACK,0,0 1055 | RTRUE 1056 | ?ELS61: CALL1 STATUS-LINE 1057 | CALL2 INCREMENT-TIME,1 1058 | INC 'CNT 1059 | JUMP ?PRG1 1060 | 1061 | 1062 | .FUNCT BLOT-WORD-COUNT,WORD-COUNT,REVISED-COUNT 1063 | GETB P-LEXV,P-LEXWORDS >WORD-COUNT 1064 | SET 'REVISED-COUNT,WORD-COUNT 1065 | ?PRG1: ZERO? WORD-COUNT \?CND3 1066 | JUMP ?REP2 1067 | ?CND3: MUL 2,WORD-COUNT 1068 | SUB STACK,1 1069 | GET P-LEXV,STACK 1070 | EQUAL? STACK,W?QUOTE \?CND6 1071 | DEC 'REVISED-COUNT 1072 | ?CND6: DEC 'WORD-COUNT 1073 | JUMP ?PRG1 1074 | ?REP2: GET P-LEXV,1 1075 | EQUAL? STACK,W?SAY,W?ANSWER \?CND9 1076 | DEC 'REVISED-COUNT 1077 | ?CND9: GET P-LEXV,1 1078 | EQUAL? STACK,W?GRIMWOLD,W?PSYCHIATR /?THN15 1079 | GET P-LEXV,1 1080 | EQUAL? STACK,W?DR,W?DOCTOR \?CND12 1081 | ?THN15: SUB REVISED-COUNT,2 >REVISED-COUNT 1082 | RETURN REVISED-COUNT 1083 | ?CND12: RETURN REVISED-COUNT 1084 | 1085 | 1086 | .FUNCT INK-BLOT,X=12,Y=5,CNT=4,SIDE-OFFSET,CENTER-OFFSET,CHAR 1087 | BUFOUT FALSE-VALUE 1088 | SCREEN S-WINDOW 1089 | RANDOM 6 >CENTER-OFFSET 1090 | SUB 16,CENTER-OFFSET 1091 | RANDOM STACK >SIDE-OFFSET 1092 | ADD 22,SIDE-OFFSET >X 1093 | RANDOM 3 >CHAR 1094 | ?PRG1: CALL INVERSE-LINE,CNT,TRUE-VALUE 1095 | INC 'CNT 1096 | EQUAL? CNT,19 \?PRG1 1097 | EQUAL? CHAR,2,3 \?CND6 1098 | HLIGHT 1 1099 | ?CND6: 1100 | ?PRG9: 1101 | ?PRG11: CURSET Y,X 1102 | EQUAL? CHAR,1 \?ELS15 1103 | PRINTI " " 1104 | JUMP ?CND13 1105 | ?ELS15: EQUAL? CHAR,2 \?ELS19 1106 | PRINTI "X" 1107 | JUMP ?CND13 1108 | ?ELS19: PRINTI ">" 1109 | ?CND13: SUB 81,X 1110 | CURSET Y,STACK 1111 | EQUAL? CHAR,1 \?ELS28 1112 | PRINTI " " 1113 | JUMP ?CND26 1114 | ?ELS28: EQUAL? CHAR,2 \?ELS32 1115 | PRINTI "X" 1116 | JUMP ?CND26 1117 | ?ELS32: PRINTI "<" 1118 | ?CND26: SUB 40,CENTER-OFFSET 1119 | EQUAL? X,STACK \?ELS41 1120 | JUMP ?REP12 1121 | ?ELS41: INC 'X 1122 | JUMP ?PRG11 1123 | ?REP12: EQUAL? Y,17 \?ELS46 1124 | JUMP ?REP10 1125 | ?ELS46: RANDOM 100 1126 | LESS? 40,STACK /?ELS51 1127 | RANDOM 3 1128 | ADD SIDE-OFFSET,STACK >SIDE-OFFSET 1129 | JUMP ?CND49 1130 | ?ELS51: RANDOM 100 1131 | LESS? 67,STACK /?CND49 1132 | RANDOM 3 1133 | SUB SIDE-OFFSET,STACK >SIDE-OFFSET 1134 | ?CND49: RANDOM 100 1135 | LESS? 40,STACK /?ELS56 1136 | RANDOM 2 1137 | SUB CENTER-OFFSET,STACK >CENTER-OFFSET 1138 | JUMP ?CND54 1139 | ?ELS56: RANDOM 100 1140 | LESS? 67,STACK /?CND54 1141 | RANDOM 2 1142 | ADD CENTER-OFFSET,STACK >CENTER-OFFSET 1143 | ?CND54: LESS? SIDE-OFFSET,0 \?CND59 1144 | SET 'SIDE-OFFSET,1 1145 | ?CND59: LESS? CENTER-OFFSET,0 \?CND62 1146 | SET 'CENTER-OFFSET,0 1147 | ?CND62: ADD SIDE-OFFSET,CENTER-OFFSET 1148 | GRTR? STACK,18 \?CND65 1149 | DEC 'CENTER-OFFSET 1150 | SUB 18,CENTER-OFFSET >SIDE-OFFSET 1151 | ?CND65: ADD 22,SIDE-OFFSET >X 1152 | INC 'Y 1153 | JUMP ?PRG9 1154 | ?REP10: EQUAL? CHAR,2,3 \?CND68 1155 | HLIGHT 0 1156 | ?CND68: SCREEN S-TEXT 1157 | BUFOUT TRUE-VALUE 1158 | RTRUE 1159 | 1160 | 1161 | .FUNCT I-POST-OFFICE 1162 | CALL QUEUE,I-POST-OFFICE,-1 1163 | EQUAL? HERE,POST-OFFICE /?ELS3 1164 | CALL2 INT,I-POST-OFFICE 1165 | PUT STACK,0,0 1166 | RFALSE 1167 | ?ELS3: EQUAL? STIME,960 \?ELS5 1168 | PRINTI "The open window" 1169 | EQUAL? SYEAR,2071 \?ELS10 1170 | PRINTI " closes" 1171 | JUMP ?CND8 1172 | ?ELS10: PRINTI "s close" 1173 | ?CND8: PRINTI ", and those still waiting wander listlessly out of the " 1174 | PRINTD POST-OFFICE-OBJECT 1175 | PRINTR "." 1176 | ?ELS5: EQUAL? SYEAR,2071 \?ELS26 1177 | GRTR? STIME,888 \?ELS26 1178 | LESS? STIME,901 /?THN23 1179 | ?ELS26: EQUAL? SYEAR,2061 \FALSE 1180 | GRTR? STIME,594 \FALSE 1181 | LESS? STIME,601 \FALSE 1182 | ?THN23: PRINTI "A line is forming at the window with the sign." 1183 | CRLF 1184 | CALL QUEUE,I-POST-OFFICE,15 1185 | RTRUE 1186 | 1187 | 1188 | .FUNCT I-WILD-DOGS 1189 | EQUAL? HERE,MAIN-STREET-BRIDGE /?CND1 1190 | CALL2 INT,I-WILD-DOGS 1191 | PUT STACK,0,0 1192 | RFALSE 1193 | ?CND1: INC 'WILD-DOG-COUNTER 1194 | EQUAL? WILD-DOG-COUNTER,1 \?ELS8 1195 | MOVE BARKING,HERE 1196 | PRINTR "You hear the sound of distant barking to the east." 1197 | ?ELS8: EQUAL? WILD-DOG-COUNTER,2,3 \?ELS12 1198 | PRINTR "The barking continues. In fact, the sound seems to be getting closer." 1199 | ?ELS12: EQUAL? WILD-DOG-COUNTER,4 \FALSE 1200 | CALL2 SCORE,45 1201 | CALL2 JIGS-UP,STR?13 1202 | RSTACK 1203 | 1204 | 1205 | .FUNCT I-CAFETERIA 1206 | EQUAL? HERE,CAFETERIA /?ELS3 1207 | CALL2 INT,I-CAFETERIA 1208 | PUT STACK,0,0 1209 | RFALSE 1210 | ?ELS3: EQUAL? TIME,480,705,1035 \?ELS5 1211 | CRLF 1212 | PRINTI "The room begins to fill with mealtime crowds." 1213 | CRLF 1214 | RFALSE 1215 | ?ELS5: EQUAL? TIME,570,795,1125 \FALSE 1216 | CRLF 1217 | PRINTI "The mealtime crowds begin to disperse." 1218 | CRLF 1219 | RFALSE 1220 | 1221 | .ENDI 1222 | -------------------------------------------------------------------------------- /apartment.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT IN-APARTMENT? 4 | EQUAL? HERE,LIVING-ROOM,KITCHEN /TRUE 5 | EQUAL? HERE,BEDROOM,BATHROOM \FALSE 6 | RTRUE 7 | 8 | 9 | .FUNCT APARTMENT-OBJECT-F 10 | EQUAL? PRSA,V?WALK-TO,V?THROUGH \?ELS5 11 | CALL1 IN-APARTMENT? 12 | ZERO? STACK /?ELS10 13 | PRINT LOOK-AROUND 14 | CRLF 15 | RTRUE 16 | ?ELS10: CALL GLOBAL-IN?,PRSO,HERE 17 | ZERO? STACK /FALSE 18 | CALL2 DO-WALK,P?NORTH 19 | RSTACK 20 | ?ELS5: EQUAL? PRSA,V?LEAVE,V?DISEMBARK \?ELS16 21 | EQUAL? HERE,LIVING-ROOM \?ELS21 22 | CALL2 DO-WALK,P?SOUTH 23 | RSTACK 24 | ?ELS21: CALL1 IN-APARTMENT? 25 | ZERO? STACK /?ELS23 26 | PRINT NO-EXIT-FROM-APARTMENT 27 | CRLF 28 | RTRUE 29 | ?ELS23: PRINT LOOK-AROUND 30 | CRLF 31 | RTRUE 32 | ?ELS16: EQUAL? PRSA,V?WASH \FALSE 33 | CALL PERFORM,V?WASH,GLOBAL-ROOM 34 | RTRUE 35 | 36 | 37 | .FUNCT LIVING-ROOM-OBJECT-F 38 | EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5 39 | EQUAL? HERE,KITCHEN \?ELS10 40 | CALL2 DO-WALK,P?WEST 41 | RSTACK 42 | ?ELS10: EQUAL? HERE,PARKVIEW-HALL \?ELS12 43 | CALL2 DO-WALK,P?NORTH 44 | RSTACK 45 | ?ELS12: EQUAL? HERE,BEDROOM \?ELS14 46 | CALL2 DO-WALK,P?SOUTH 47 | RSTACK 48 | ?ELS14: EQUAL? HERE,SOLARIUM \?ELS16 49 | CALL2 DO-WALK,P?NORTH 50 | RSTACK 51 | ?ELS16: EQUAL? HERE,FOYER \?ELS18 52 | CALL2 DO-WALK,P?SOUTH 53 | RSTACK 54 | ?ELS18: EQUAL? HERE,MASTER-BEDROOM \?ELS20 55 | CALL2 DO-WALK,P?DOWN 56 | RSTACK 57 | ?ELS20: EQUAL? HERE,DINING-ROOM \?ELS22 58 | CALL2 DO-WALK,P?WEST 59 | RSTACK 60 | ?ELS22: CALL GLOBAL-IN?,PRSO,HERE 61 | ZERO? STACK /FALSE 62 | PRINT LOOK-AROUND 63 | CRLF 64 | RTRUE 65 | ?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS28 66 | EQUAL? HERE,LIVING-ROOM,EPILOGUE-LIVING-ROOM \?ELS33 67 | CALL1 V-WALK-AROUND 68 | RSTACK 69 | ?ELS33: PRINT LOOK-AROUND 70 | CRLF 71 | RTRUE 72 | ?ELS28: EQUAL? PRSA,V?EXAMINE \?ELS39 73 | EQUAL? HERE,LIVING-ROOM,EPILOGUE-LIVING-ROOM \?ELS39 74 | CALL1 V-LOOK 75 | RSTACK 76 | ?ELS39: EQUAL? PRSA,V?WASH \FALSE 77 | CALL PERFORM,V?WASH,GLOBAL-ROOM 78 | RTRUE 79 | 80 | 81 | .FUNCT KITCHEN-OBJECT-F 82 | EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5 83 | EQUAL? HERE,KITCHEN,EPILOGUE-KITCHEN \?ELS10 84 | PRINT LOOK-AROUND 85 | CRLF 86 | RTRUE 87 | ?ELS10: CALL GLOBAL-IN?,PRSO,HERE 88 | ZERO? STACK /FALSE 89 | CALL2 DO-WALK,P?EAST 90 | RSTACK 91 | ?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS16 92 | EQUAL? HERE,KITCHEN,EPILOGUE-KITCHEN \?ELS21 93 | CALL2 DO-WALK,P?WEST 94 | RSTACK 95 | ?ELS21: PRINT LOOK-AROUND 96 | CRLF 97 | RTRUE 98 | ?ELS16: EQUAL? PRSA,V?EXAMINE \?ELS27 99 | EQUAL? HERE,KITCHEN,EPILOGUE-KITCHEN \?ELS27 100 | CALL1 V-LOOK 101 | RSTACK 102 | ?ELS27: EQUAL? PRSA,V?WASH \FALSE 103 | CALL PERFORM,V?WASH,GLOBAL-ROOM 104 | RTRUE 105 | 106 | 107 | .FUNCT BEDROOM-OBJECT-F 108 | EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5 109 | EQUAL? HERE,BEDROOM,MASTER-BEDROOM,GUEST-ROOM \?ELS10 110 | PRINT LOOK-AROUND 111 | CRLF 112 | RTRUE 113 | ?ELS10: EQUAL? HERE,BATHROOM,FOYER \?ELS14 114 | CALL2 DO-WALK,P?WEST 115 | RSTACK 116 | ?ELS14: EQUAL? HERE,EPILOGUE-LIVING-ROOM \?ELS16 117 | CALL2 DO-WALK,P?UP 118 | RSTACK 119 | ?ELS16: CALL GLOBAL-IN?,PRSO,HERE 120 | ZERO? STACK /FALSE 121 | CALL2 DO-WALK,P?NORTH 122 | RSTACK 123 | ?ELS5: EQUAL? PRSA,V?LEAVE,V?DISEMBARK \?ELS20 124 | EQUAL? HERE,BEDROOM \?ELS25 125 | CALL2 DO-WALK,P?SOUTH 126 | RSTACK 127 | ?ELS25: EQUAL? HERE,MASTER-BEDROOM \?ELS27 128 | CALL2 DO-WALK,P?DOWN 129 | RSTACK 130 | ?ELS27: EQUAL? HERE,GUEST-ROOM \?ELS29 131 | CALL2 DO-WALK,P?EAST 132 | RSTACK 133 | ?ELS29: PRINT LOOK-AROUND 134 | CRLF 135 | RTRUE 136 | ?ELS20: EQUAL? PRSA,V?EXAMINE \?ELS35 137 | EQUAL? HERE,BEDROOM,MASTER-BEDROOM,GUEST-ROOM \?ELS35 138 | CALL1 V-LOOK 139 | RSTACK 140 | ?ELS35: EQUAL? PRSA,V?WASH \FALSE 141 | CALL PERFORM,V?WASH,GLOBAL-ROOM 142 | RTRUE 143 | 144 | 145 | .FUNCT BATHROOM-OBJECT-F 146 | EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5 147 | EQUAL? HERE,BEDROOM \?ELS10 148 | CALL2 DO-WALK,P?EAST 149 | RSTACK 150 | ?ELS10: EQUAL? HERE,FOYER \?ELS12 151 | CALL2 DO-WALK,P?SW 152 | RSTACK 153 | ?ELS12: CALL GLOBAL-IN?,PRSO,HERE 154 | ZERO? STACK /FALSE 155 | PRINT LOOK-AROUND 156 | CRLF 157 | RTRUE 158 | ?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS18 159 | EQUAL? HERE,BEDROOM,FOYER \?ELS23 160 | PRINT LOOK-AROUND 161 | CRLF 162 | RTRUE 163 | ?ELS23: EQUAL? HERE,EPILOGUE-BATHROOM \?ELS27 164 | CALL2 DO-WALK,P?NE 165 | RSTACK 166 | ?ELS27: CALL2 DO-WALK,P?WEST 167 | RSTACK 168 | ?ELS18: EQUAL? PRSA,V?TAKE \?ELS31 169 | GET P-NAMW,0 170 | EQUAL? STACK,W?BATH \?ELS31 171 | EQUAL? HERE,EPILOGUE-BATHROOM \?ELS38 172 | CALL PERFORM,V?BOARD,TUB 173 | RTRUE 174 | ?ELS38: PRINTR "There's no tub here." 175 | ?ELS31: EQUAL? PRSA,V?EXAMINE \?ELS44 176 | EQUAL? HERE,BATHROOM,EPILOGUE-BATHROOM \?ELS44 177 | CALL1 V-LOOK 178 | RSTACK 179 | ?ELS44: EQUAL? PRSA,V?WASH \FALSE 180 | CALL PERFORM,V?WASH,GLOBAL-ROOM 181 | RTRUE 182 | 183 | 184 | .FUNCT PARKVIEW-APARTMENTS-OBJECT-F 185 | EQUAL? PRSA,V?WALK-TO,V?THROUGH \?ELS5 186 | EQUAL? HERE,SOUTHWAY-AND-PARK \?ELS10 187 | CALL2 DO-WALK,P?WEST 188 | RSTACK 189 | ?ELS10: CALL GLOBAL-IN?,PARKVIEW-APARTMENTS-OBJECT,HERE 190 | ZERO? STACK /FALSE 191 | PRINT LOOK-AROUND 192 | CRLF 193 | RTRUE 194 | ?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE,V?EXIT \?ELS16 195 | EQUAL? HERE,PARKVIEW-APARTMENTS \?ELS21 196 | CALL2 DO-WALK,P?EAST 197 | RSTACK 198 | ?ELS21: EQUAL? HERE,SOUTHWAY-AND-PARK \?ELS23 199 | PRINT LOOK-AROUND 200 | CRLF 201 | RTRUE 202 | ?ELS23: PRINT NO-EXIT-FROM-APARTMENT 203 | CRLF 204 | RTRUE 205 | ?ELS16: EQUAL? PRSA,V?EXAMINE \FALSE 206 | EQUAL? HERE,PARKVIEW-APARTMENTS \FALSE 207 | CALL1 V-LOOK 208 | RSTACK 209 | 210 | 211 | .FUNCT PARKVIEW-APARTMENTS-F,RARG 212 | EQUAL? RARG,M-ENTER \?ELS5 213 | MOVE BUZZERS,HERE 214 | RFALSE 215 | ?ELS5: EQUAL? RARG,M-LOOK \FALSE 216 | CALL DESCRIBE-APARTMENT-VESTIBULE,STR?129,STR?130 217 | RSTACK 218 | 219 | 220 | .FUNCT MY-BUZZER-F 221 | EQUAL? HERE,PARKVIEW-APARTMENTS /?ELS5 222 | CALL1 MOBY-VERB? 223 | ZERO? STACK \?ELS5 224 | CALL2 CANT-SEE,MY-BUZZER 225 | RSTACK 226 | ?ELS5: EQUAL? PRSA,V?PUSH \?ELS9 227 | EQUAL? SYEAR,2061,2071 /?THN15 228 | GRTR? STIME,1402 /?THN15 229 | LESS? STIME,478 \?ELS14 230 | ?THN15: PRINTR "There's no response to your buzzing." 231 | ?ELS14: PRINTI "A moment later, the door gives a loud buzz" 232 | FSET? PARKVIEW-DOOR,OPENBIT /?CND23 233 | FSET PARKVIEW-DOOR,OPENBIT 234 | PRINTI " and pops open" 235 | ?CND23: PRINTR "." 236 | ?ELS9: EQUAL? PRSA,V?READ \FALSE 237 | PRINTR """Jill and Perry Simm.""" 238 | 239 | 240 | .FUNCT MY-MAILBOX-F 241 | EQUAL? HERE,PARKVIEW-APARTMENTS /?ELS5 242 | CALL1 MOBY-VERB? 243 | ZERO? STACK \?ELS5 244 | CALL2 CANT-SEE,MY-MAILBOX 245 | RSTACK 246 | ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?OPEN /?THN10 247 | EQUAL? PRSA,V?UNLOCK \?ELS9 248 | ?THN10: PRINTR "Your mailbox is empty." 249 | ?ELS9: EQUAL? PRSA,V?CLOSE \FALSE 250 | PRINTR "It is." 251 | 252 | 253 | .FUNCT PARKVIEW-DOOR-F 254 | EQUAL? PRSA,V?UNLOCK,V?OPEN \?ELS5 255 | EQUAL? PRSI,KEY \?ELS5 256 | FSET? PARKVIEW-DOOR,OPENBIT \?ELS12 257 | PRINTR "It's already open." 258 | ?ELS12: FSET PARKVIEW-DOOR,OPENBIT 259 | PRINTR "The door opens." 260 | ?ELS5: EQUAL? PRSA,V?OPEN \?ELS20 261 | FSET? PARKVIEW-DOOR,OPENBIT /?ELS20 262 | PRINTR "The door is locked." 263 | ?ELS20: EQUAL? PRSA,V?EXAMINE \FALSE 264 | EQUAL? SYEAR,2071 \FALSE 265 | CALL PERFORM,V?EXAMINE,UNOPENABLE-DOOR 266 | RTRUE 267 | 268 | 269 | .FUNCT INNER-LOBBY-ENTER-F 270 | EQUAL? HERE,PARKVIEW-APARTMENTS \?ELS5 271 | FSET? PARKVIEW-DOOR,OPENBIT \?ELS5 272 | FCLEAR PARKVIEW-DOOR,OPENBIT 273 | PRINTI "You enter the inner lobby and" 274 | EQUAL? SYEAR,2061,2071 \?ELS12 275 | CALL2 SCORE,3 276 | PRINTI ", since the elevators are out as usual, you slowly walk up the several flights to your floor." 277 | CRLF 278 | CRLF 279 | RETURN PARKVIEW-HALL 280 | ?ELS12: EQUAL? SYEAR,2051 \?CND17 281 | GRTR? STIME,1374 \?ELS22 282 | SET 'MITCHELL-COUNTER,0 283 | MOVE MITCHELL,LOCAL-GLOBALS 284 | JUMP ?CND20 285 | ?ELS22: GRTR? STIME,1120 \?ELS24 286 | SET 'MITCHELL-COUNTER,4 287 | MOVE HOMEWORK,LIVING-ROOM 288 | MOVE MITCHELL,LIVING-ROOM 289 | JUMP ?CND20 290 | ?ELS24: GRTR? STIME,1011 \?ELS26 291 | SET 'MITCHELL-COUNTER,3 292 | MOVE MITCHELL,LIVING-ROOM 293 | JUMP ?CND20 294 | ?ELS26: GRTR? STIME,505 \?ELS28 295 | SET 'MITCHELL-COUNTER,2 296 | MOVE MITCHELL,LOCAL-GLOBALS 297 | JUMP ?CND20 298 | ?ELS28: GRTR? STIME,463 \?ELS30 299 | SET 'MITCHELL-COUNTER,1 300 | MOVE MITCHELL,LIVING-ROOM 301 | JUMP ?CND20 302 | ?ELS30: SET 'MITCHELL-COUNTER,0 303 | MOVE MITCHELL,LOCAL-GLOBALS 304 | ?CND20: CALL QUEUE,I-MITCHELL,-1 305 | ?CND17: PRINTI " take the elevator up to your floor." 306 | CRLF 307 | CRLF 308 | RETURN PARKVIEW-HALL 309 | ?ELS5: PRINTI "The door to the inner lobby is locked." 310 | CRLF 311 | EQUAL? HERE,PARKVIEW-APARTMENTS \?ELS41 312 | SET 'P-IT-OBJECT,PARKVIEW-DOOR 313 | RFALSE 314 | ?ELS41: SET 'P-IT-OBJECT,UNOPENABLE-DOOR 315 | RFALSE 316 | 317 | 318 | .FUNCT PARKVIEW-HALL-F,RARG 319 | EQUAL? RARG,M-LOOK \FALSE 320 | PRINTI "You are standing in the hall at the door to your apartment, which lies " 321 | FSET? APARTMENT-DOOR,OPENBIT \?ELS10 322 | PRINTI "open" 323 | JUMP ?CND8 324 | ?ELS10: PRINTI "closed" 325 | ?CND8: PRINTI " to the north. The stairs and elevators to the street are off to the east." 326 | RTRUE 327 | 328 | 329 | .FUNCT HALL-NEAR-YOUR-APARTMENT-EXIT-F 330 | PRINTI "You descend to the first floor and head for the lobby..." 331 | CRLF 332 | CRLF 333 | RETURN PARKVIEW-APARTMENTS 334 | 335 | 336 | .FUNCT APARTMENT-DOOR-F 337 | EQUAL? HERE,FOYER \?ELS5 338 | EQUAL? PRSA,V?THROUGH,V?OPEN \?ELS5 339 | CALL2 DO-WALK,P?NORTH 340 | RSTACK 341 | ?ELS5: EQUAL? PRSA,V?OPEN,V?UNLOCK \?ELS9 342 | EQUAL? PRSI,KEY \?ELS9 343 | EQUAL? HERE,FOYER /?ELS9 344 | FSET? APARTMENT-DOOR,OPENBIT \?ELS16 345 | PRINTR "The door's open!" 346 | ?ELS16: EQUAL? HERE,LIVING-ROOM \?ELS20 347 | PRINTI "You don't need the key to open the door from the inside!" 348 | IN? HERE,JILL \?CND23 349 | PRINTI " Jill gives you a funny look as you try." 350 | ?CND23: CRLF 351 | RTRUE 352 | ?ELS20: FSET APARTMENT-DOOR,OPENBIT 353 | PRINTR "The door opens." 354 | ?ELS9: EQUAL? PRSA,V?LOCK \?ELS33 355 | EQUAL? HERE,FOYER /?ELS33 356 | FCLEAR APARTMENT-DOOR,OPENBIT 357 | PRINTR "The door latches automatically when you close it." 358 | ?ELS33: EQUAL? PRSA,V?KNOCK \?ELS39 359 | EQUAL? HERE,LIVING-ROOM,FOYER \?ELS44 360 | PRINTR "There's no need to knock from the inside." 361 | ?ELS44: EQUAL? SYEAR,2061,2071 /?THN49 362 | GRTR? STIME,1400 /?THN49 363 | LESS? STIME,478 \?ELS48 364 | ?THN49: PRINTR "There's no response." 365 | ?ELS48: FSET? APARTMENT-DOOR,OPENBIT \?ELS54 366 | PRINTR "You hear Jill call ""It's open!""" 367 | ?ELS54: SET 'FOLLOW-FLAG,8 368 | CALL QUEUE,I-UNFOLLOW,2 369 | FSET APARTMENT-DOOR,OPENBIT 370 | FSET JILL,TOUCHBIT 371 | PRINTR "After a moment, Jill opens the door. ""Hi, hon! Forget your key?"" She gives you a peck on the cheek and walks into the apartment." 372 | ?ELS39: EQUAL? PRSA,V?OPEN \FALSE 373 | EQUAL? HERE,PARKVIEW-HALL \FALSE 374 | FSET? APARTMENT-DOOR,OPENBIT /FALSE 375 | PRINTR "The door is locked." 376 | 377 | 378 | .FUNCT LIVING-ROOM-F,RARG 379 | EQUAL? RARG,M-ENTER \?ELS5 380 | EQUAL? L-HERE,PARKVIEW-HALL \?ELS5 381 | EQUAL? SYEAR,2071 \?ELS12 382 | ZERO? MITCHELL-RAID-FLAG \?ELS17 383 | MOVE JILL,LIVING-ROOM 384 | CALL QUEUE,I-MITCHELL-RAID,19 385 | RSTACK 386 | ?ELS17: CALL QUEUE,I-APARTMENT,-1 387 | RSTACK 388 | ?ELS12: EQUAL? SYEAR,2061 \?ELS21 389 | ZERO? MITCHELL-NEWS-FLAG \?ELS26 390 | CALL QUEUE,I-JILL,9 391 | MOVE JILL,LOCAL-GLOBALS 392 | RTRUE 393 | ?ELS26: CALL QUEUE,I-APARTMENT,-1 394 | RSTACK 395 | ?ELS21: CALL1 PUT-JILL-IN-THE-RIGHT-PLACE 396 | EQUAL? SYEAR,2051 \?CND31 397 | CALL QUEUE,I-APARTMENT,-1 398 | ?CND31: CALL QUEUE,I-JILL,-1 399 | RSTACK 400 | ?ELS5: EQUAL? RARG,M-LOOK \FALSE 401 | PRINTI "This is the large living area of your apartment, with a bedroom to the north and a kitchen to the east. The front door of the apartment, next to the couch on the south wall, is " 402 | FSET? APARTMENT-DOOR,OPENBIT \?ELS40 403 | PRINTI "open" 404 | JUMP ?CND38 405 | ?ELS40: PRINTI "closed" 406 | ?CND38: PRINTI ". A huge window provides a panoramic view to the west." 407 | CALL1 RAID-MESS-DESC 408 | CRLF 409 | CRLF 410 | CALL1 EASEL-DESC 411 | PRINTI " In one corner is the old " 412 | PRINTD WORD-PROCESSOR 413 | PRINTI " where you do your writing." 414 | RTRUE 415 | 416 | 417 | .FUNCT RAID-MESS-DESC 418 | ZERO? APARTMENT-RAID-FLAG /FALSE 419 | PRINTI " The room is " 420 | EQUAL? SYEAR,2071 \?ELS11 421 | PRINTI "torn apart" 422 | JUMP ?CND9 423 | ?ELS11: PRINTI "very messy" 424 | ?CND9: PRINTI " after the BSF raid." 425 | RTRUE 426 | 427 | 428 | .FUNCT APARTMENT-EXIT-F 429 | FSET? APARTMENT-DOOR,OPENBIT /?ELS5 430 | PRINTI "The door is closed." 431 | CRLF 432 | SET 'P-IT-OBJECT,APARTMENT-DOOR 433 | RFALSE 434 | ?ELS5: CALL2 HELD?,BABY 435 | ZERO? STACK /?ELS9 436 | ZERO? JILL-COUNTER \?ELS12 437 | PRINTI "As Jill would say if she were awake" 438 | JUMP ?CND10 439 | ?ELS12: PRINTI "Jill yells" 440 | ?CND10: PRINTI ", ""Perry! Don't take Mitchell outside! He'll get a chill!""" 441 | CRLF 442 | RFALSE 443 | ?ELS9: RETURN PARKVIEW-HALL 444 | 445 | 446 | .FUNCT WORD-PROCESSOR-F 447 | EQUAL? PRSA,V?EXAMINE \?ELS5 448 | PRINTR "It's an old model, but it was the best WP you could afford." 449 | ?ELS5: EQUAL? PRSA,V?BOARD,V?SIT,V?WRITE \?ELS9 450 | PRINTR "You're not in the proper mood for writing." 451 | ?ELS9: EQUAL? PRSA,V?MOVE,V?TAKE \FALSE 452 | PRINTI "You don't want to move the " 453 | PRINTD WORD-PROCESSOR 454 | PRINTR " -- it's old and flaky and breaks easily." 455 | 456 | 457 | .FUNCT EASEL-F 458 | EQUAL? PRSA,V?MOVE,V?TAKE \?ELS5 459 | PRINTR "Jill doesn't like you fooling with her painting and drawing stuff." 460 | ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE 461 | CALL2 EASEL-DESC,TRUE-VALUE 462 | RSTACK 463 | 464 | 465 | .FUNCT EASEL-DESC,X=0 466 | EQUAL? SYEAR,2041 \?ELS3 467 | PRINTI "Jill's easel occupies a beautiful, well-lit spot near the window. Her current painting is on the easel." 468 | JUMP ?CND1 469 | ?ELS3: PRINTI "Jill's current artistic endeavor, " 470 | EQUAL? SYEAR,2071 \?ELS12 471 | PRINTI "a pencil sketch" 472 | JUMP ?CND10 473 | ?ELS12: PRINTI "an acrylide painting" 474 | ?CND10: PRINTI ", is on her easel, near the entrance to the kitchen." 475 | ?CND1: ZERO? X /TRUE 476 | CRLF 477 | RTRUE 478 | 479 | 480 | .FUNCT PAINTING-F 481 | EQUAL? PRSA,V?MOVE,V?TAKE \?ELS5 482 | CALL PERFORM,V?TAKE,EASEL 483 | RTRUE 484 | ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE 485 | EQUAL? SYEAR,2041 \?ELS12 486 | PRINTR "The painting is a bright watercolor of the cliff-top Bermuda cottage colony where you and Jill spent your honeymoon." 487 | ?ELS12: EQUAL? SYEAR,2051 \?ELS16 488 | PRINTR "The painting, in vibrant acrylide colors, depicts workers in a space factory hovering above machinery, sipping coffee tubes. A crescent earth dominates the view through a domed canopy. It is Jill's most mature work to date." 489 | ?ELS16: EQUAL? SYEAR,2061 \?ELS20 490 | PRINTR "The painting, in subdued shades of brown and gray, is of a beggar woman, her face a mask of suffering." 491 | ?ELS20: PRINTR "The sketch is dark and brooding, depicting a demonic figure towering over a frightened group of children. It's been months since you last saw Jill working on it." 492 | 493 | 494 | .FUNCT PARTITION-F 495 | EQUAL? PRSA,V?LOOK,V?WALK-AROUND,V?LOOK-BEHIND \FALSE 496 | PRINTR "Mitchell deserves his privacy." 497 | 498 | 499 | .FUNCT PARTITION-DESCFCN,X 500 | PRINTI "A thin partition separates Mitchell's sleeping area from the rest of the living room" 501 | EQUAL? SYEAR,2061 \?CND3 502 | ZERO? MITCHELL-NEWS-FLAG \?CND3 503 | PRINTI ". Some of Mitchell's stuff seems to be missing" 504 | ?CND3: PRINTR "." 505 | 506 | 507 | .FUNCT MITCHELL-DESCFCN,RARG 508 | PRINTI "Mitchell is " 509 | EQUAL? MITCHELL-COUNTER,1 \?ELS5 510 | PRINTI "running around the room, getting ready for school" 511 | JUMP ?CND3 512 | ?ELS5: EQUAL? MITCHELL-COUNTER,3 \?ELS9 513 | PRINTI "sitting in the corner, playing some kind of new " 514 | PRINTD LOGIC-GAME 515 | JUMP ?CND3 516 | ?ELS9: PRINTI "sprawled on the floor, doing some homework" 517 | ?CND3: PRINTR "." 518 | 519 | 520 | .FUNCT MITCHELL-F 521 | EQUAL? MITCHELL,WINNER \?ELS5 522 | EQUAL? PRSA,V?HELLO \?ELS10 523 | PRINTR """Hi, Dad!""" 524 | ?ELS10: PRINTI """Please, Dad! I'm trying to " 525 | EQUAL? MITCHELL-COUNTER,1 \?ELS19 526 | PRINTI "get ready for school" 527 | JUMP ?CND17 528 | ?ELS19: EQUAL? MITCHELL-COUNTER,3 \?ELS23 529 | PRINTI "do a logic game" 530 | JUMP ?CND17 531 | ?ELS23: PRINTI "do my homework" 532 | ?CND17: PRINTI "!""" 533 | CRLF 534 | CALL1 CLEAR-BUF 535 | RSTACK 536 | ?ELS5: EQUAL? PRSA,V?KISS \?ELS33 537 | PRINTR "Mitchell looks a little embarrassed, but also smiles." 538 | ?ELS33: EQUAL? PRSA,V?EXAMINE \?ELS37 539 | PRINTI "Your son is a healthy, sturdy boy of nearly eleven years. " 540 | CALL1 MITCHELL-DESCFCN 541 | RSTACK 542 | ?ELS37: EQUAL? PRSA,V?PLAY-WITH \?ELS41 543 | PRINTR """No thanks, Dad. Too much homework.""" 544 | ?ELS41: EQUAL? PRSA,V?FOLLOW \?ELS45 545 | EQUAL? FOLLOW-FLAG,12 \?ELS50 546 | CALL2 DO-WALK,P?SOUTH 547 | RSTACK 548 | ?ELS50: EQUAL? FOLLOW-FLAG,10 \?ELS52 549 | CALL2 DO-WALK,P?DOWN 550 | RSTACK 551 | ?ELS52: EQUAL? FOLLOW-FLAG,11 \?ELS54 552 | CALL2 DO-WALK,P?NORTH 553 | RSTACK 554 | ?ELS54: EQUAL? FOLLOW-FLAG,14 \?ELS56 555 | CALL PERFORM,V?WALK-AROUND,PARTITION 556 | RTRUE 557 | ?ELS56: EQUAL? HERE,KITCHEN,BEDROOM,BATHROOM \FALSE 558 | IN? MITCHELL,LIVING-ROOM \FALSE 559 | PRINTR "Mitchell hasn't just left!" 560 | ?ELS45: EQUAL? PRSA,V?WALK-TO \?ELS64 561 | EQUAL? PRSO,BED \?ELS64 562 | LESS? STIME,1320 \?ELS71 563 | PRINTR """Aw, Dad, it's too early!""" 564 | ?ELS71: PRINTR """Just a couple more minutes, Dad.""" 565 | ?ELS64: EQUAL? PRSA,V?TOUCH \FALSE 566 | PRINTR """C'mon, Dad, I'm not ticklish anymore!""" 567 | 568 | 569 | .FUNCT HOMEWORK-F 570 | EQUAL? PRSA,V?TAKE \?ELS5 571 | PRINTR "Mitchell's working on it!" 572 | ?ELS5: EQUAL? PRSA,V?EXAMINE,V?READ \FALSE 573 | PRINTR "It looks like typical sixth-grade coursework." 574 | 575 | 576 | .FUNCT LOGIC-GAME-F 577 | EQUAL? PRSA,V?EXAMINE \?ELS5 578 | PRINTI "It's just another of those popular " 579 | PRINTD LOGIC-GAME 580 | PRINTR "s. Mitchell looks as if he's quite good at it." 581 | ?ELS5: EQUAL? PRSA,V?PLAY-WITH,V?PLAY,V?TAKE \FALSE 582 | PRINTR "Mitchell's playing with it!" 583 | 584 | 585 | .FUNCT APARTMENT-WINDOW-F 586 | EQUAL? PRSA,V?OPEN \?ELS5 587 | PRINTR "It's a little too chilly today." 588 | ?ELS5: EQUAL? PRSA,V?CLOSE \?ELS9 589 | PRINTR "It is." 590 | ?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS13 591 | EQUAL? SYEAR,2061,2071 \?ELS13 592 | CALL2 SCORE,4 593 | PRINTR "The aging glass is etched from pollution." 594 | ?ELS13: EQUAL? PRSA,V?LOOK-INSIDE \FALSE 595 | EQUAL? SYEAR,2041 \?ELS24 596 | PRINTR "The view from this picture window is the one notable plus about the apartment. On the other side of the old interstate, you can see Rockvil's wealthy western suburbs, surrounded by the woods and conservation lands of the State Park System." 597 | ?ELS24: EQUAL? SYEAR,2051 \?ELS28 598 | CALL2 SCORE,5 599 | PRINTR "The panoramic view overlooks the suburbs of Westwood and Brentwood, as well as extensive woodlands. The forests, as a result of increasingly acidic rain, are thinner and browner each year." 600 | ?ELS28: EQUAL? SYEAR,2061 \?ELS32 601 | CALL2 SCORE,6 602 | PRINTR "The view to the west has changed considerably over the last decade. The forest of dying trees has been replaced by a forest of thriving mining towers, which trundle across the landscape leaving ugly brown scars. The western suburbs, once the most desirable in greater Rockvil, now look nearly deserted, a sign of the vanishing middle class." 603 | ?ELS32: EQUAL? SYEAR,2071 \FALSE 604 | CALL2 SCORE,7 605 | PRINTR "Through the gray haze that covers western Rockvil you can discern an ugly industrial slum, where thousands upon thousands of serfs live in substandard shacks, running the factories and mines that support Rockvil's urban nobility." 606 | 607 | 608 | .FUNCT KITCHEN-F,RARG 609 | EQUAL? RARG,M-LOOK \FALSE 610 | PRINTI "This is the tiny kitchen of your apartment. Next to the sink is a small " 611 | PRINTD REFRIGERATOR 612 | PRINTI ". Along the western wall, next to the doorway to the living area, is a " 613 | PRINTD DINETTE-SET 614 | PRINTI "." 615 | CALL1 RAID-MESS-DESC 616 | RTRUE 617 | 618 | 619 | .FUNCT SALAD-F 620 | EQUAL? PRSA,V?EAT,V?TAKE \?ELS5 621 | EQUAL? JILL-COUNTER,3,6 \?ELS10 622 | PRINTI "Jill's " 623 | EQUAL? JILL-COUNTER,3 \?ELS15 624 | PRINTI "still making" 625 | JUMP ?CND13 626 | ?ELS15: PRINTI "eating" 627 | ?CND13: PRINTR " it!" 628 | ?ELS10: PRINTR "Jill probably made that for herself. Besides, you can't stand anything with avocadoes in it." 629 | ?ELS5: CALL1 RANDOM-FOOD-F 630 | ZERO? STACK \TRUE 631 | RFALSE 632 | 633 | 634 | .FUNCT SANDWICH-F 635 | EQUAL? PRSA,V?BUY \FALSE 636 | GET P-NAMW,0 637 | EQUAL? STACK,W?FOOD \FALSE 638 | CALL PERFORM,V?BUY,MEAL 639 | RTRUE 640 | 641 | 642 | .FUNCT FORMULA-F 643 | EQUAL? PRSA,V?EXAMINE \?ELS5 644 | PRINTI "The " 645 | PRINTD FORMULA 646 | PRINTR " has a nipple for the baby to suck on." 647 | ?ELS5: EQUAL? PRSA,V?EAT,V?DRINK \FALSE 648 | PRINTR "It's for the baby, not you." 649 | 650 | 651 | .FUNCT SINK-F 652 | EQUAL? PRSA,V?PUT \?ELS5 653 | EQUAL? PRSI,SINK \?ELS5 654 | PRINTI "That's a dumb place for" 655 | CALL2 ARTICLE,PRSO 656 | PRINTR "." 657 | ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS13 658 | EQUAL? HERE,KITCHEN \?ELS18 659 | EQUAL? JILL-COUNTER,7 \?ELS18 660 | PRINTR "The sink is filled with suds." 661 | ?ELS18: PRINTR "The sink is empty." 662 | ?ELS13: EQUAL? PRSA,V?OFF,V?ON,V?TURN \FALSE 663 | CALL PERFORM,PRSA,WATER 664 | RTRUE 665 | 666 | 667 | .FUNCT DISHES-F 668 | EQUAL? PRSA,V?TAKE \?ELS5 669 | PRINTR "The dishes should stay here until they're washed." 670 | ?ELS5: EQUAL? PRSA,V?WASH \FALSE 671 | IN? JILL,HERE \?ELS14 672 | PRINT MY-WEEK 673 | CRLF 674 | RTRUE 675 | ?ELS14: PRINTR "It's Jill's week to do the household chores." 676 | 677 | 678 | .FUNCT SODA-F 679 | EQUAL? PRSA,V?OPEN \?ELS5 680 | FSET? SODA,OPENBIT \?ELS10 681 | PRINTR "It is." 682 | ?ELS10: FSET SODA,OPENBIT 683 | PRINTR "Opened." 684 | ?ELS5: EQUAL? PRSA,V?CLOSE \?ELS18 685 | PRINTI "You can't reclose a " 686 | PRINTD SODA 687 | PRINTR "!" 688 | ?ELS18: EQUAL? PRSA,V?BUY \?ELS24 689 | EQUAL? HERE,EZZIS-BAR,BAR,BURGER-MEISTER \?ELS29 690 | PRINTI "You order some soda" 691 | CALL TOO-POOR,3,SODA 692 | ZERO? STACK \TRUE 693 | CALL2 DEBIT,3 694 | PRINTR ". You down the entire glass, which is then removed." 695 | ?ELS29: EQUAL? HERE,FOODVILLE-1,FOODVILLE-2 \?ELS42 696 | PRINTI "The soda shelves are bare." 697 | EQUAL? SYEAR,2041 \?CND45 698 | PRINTI " There must've been a sale." 699 | ?CND45: CRLF 700 | RTRUE 701 | ?ELS42: EQUAL? HERE,DRUG-STORE \?ELS51 702 | CALL PERFORM,V?BUY,MILKSHAKE 703 | RTRUE 704 | ?ELS51: CALL2 CANT-BUY,SODA 705 | RSTACK 706 | ?ELS24: EQUAL? PRSA,V?LOOK-INSIDE \?ELS55 707 | FSET? SODA,OPENBIT \?ELS60 708 | PRINTR "Looks as if there's soda in it." 709 | ?ELS60: PRINTR "The can isn't open." 710 | ?ELS55: EQUAL? PRSA,V?DRINK \FALSE 711 | MOVE SODA,LOCAL-GLOBALS 712 | PRINTR "The soda is sweet and thirst-quenching. After you finish, you dispose of the can." 713 | 714 | 715 | .FUNCT RANDOM-FOOD-F 716 | EQUAL? PRSA,V?BUY \FALSE 717 | GET P-NAMW,0 718 | EQUAL? STACK,W?FOOD \FALSE 719 | CALL PERFORM,V?BUY,MEAL 720 | RTRUE 721 | 722 | 723 | .FUNCT BEDROOM-F,RARG 724 | EQUAL? RARG,M-LOOK \FALSE 725 | EQUAL? SYEAR,2041 \?ELS8 726 | PRINTI "The room is almost filled by your bed, a bureau, and the baby's crib" 727 | JUMP ?CND6 728 | ?ELS8: PRINTI "The bedroom is sparsely furnished with a bed and bureau" 729 | ?CND6: PRINTI ". A doorway leads south to the living room, and the bathroom is to the east." 730 | CALL1 RAID-MESS-DESC 731 | RTRUE 732 | 733 | 734 | .FUNCT BED-F 735 | EQUAL? PRSA,V?WALK-TO \?ELS5 736 | CALL1 V-SLEEP 737 | RSTACK 738 | ?ELS5: EQUAL? HERE,MASTER-BEDROOM \FALSE 739 | CALL1 FURNITURE-REMOVED 740 | RSTACK 741 | 742 | 743 | .FUNCT BUREAU-F 744 | EQUAL? PRSA,V?EXAMINE \?ELS5 745 | PRINTI "The flimsy bureau has an artificial wood veneer. All the drawers are closed." 746 | FIRST? BUREAU \?ELS12 747 | PRINTI " " 748 | RFALSE 749 | ?ELS12: CRLF 750 | RTRUE 751 | ?ELS5: EQUAL? PRSA,V?OPEN \?ELS18 752 | PRINTR "There's nothing interesting in the drawer. In the interest of tidiness, you close it again." 753 | ?ELS18: EQUAL? PRSA,V?CLOSE \FALSE 754 | PRINTR "It is!" 755 | 756 | 757 | .FUNCT BATHROOM-F,RARG 758 | EQUAL? RARG,M-LOOK \FALSE 759 | PRINTI "This plain bathroom is just large enough to accommodate a sink, toilet, and " 760 | PRINTD SHOWER 761 | PRINTI ". The bedroom is to the west." 762 | CALL1 RAID-MESS-DESC 763 | RTRUE 764 | 765 | 766 | .FUNCT TOILET-F 767 | EQUAL? PRSA,V?FLUSH \?ELS5 768 | PRINTR "Flushed." 769 | ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE 770 | PRINTR "You find nothing of interest." 771 | 772 | 773 | .FUNCT SHOWER-F 774 | EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5 775 | PRINTR "That killed some time." 776 | ?ELS5: EQUAL? PRSA,V?ON,V?TAKE \FALSE 777 | EQUAL? PRSO,SHOWER \FALSE 778 | EQUAL? SYEAR,2071 \?ELS16 779 | CALL2 SCORE,2 780 | PRINTR "You discover that the hot water is out again today, so you decide to forgo the shower." 781 | ?ELS16: CALL2 HELD?,BABY 782 | ZERO? STACK /?ELS20 783 | PRINT MITCHELL-BACK-FIRST 784 | CRLF 785 | RTRUE 786 | ?ELS20: SET 'ELAPSED-TIME,14 787 | PRINTR "You undress, take a brief and refreshing shower, and put on fresh clothes." 788 | 789 | 790 | .FUNCT JILL-F,RARG=0 791 | EQUAL? JILL,WINNER \?ELS5 792 | ZERO? JILL-COUNTER \?ELS10 793 | SET 'WINNER,PLAYER 794 | CALL PERFORM,V?KISS,JILL 795 | CALL1 CLEAR-BUF 796 | RSTACK 797 | ?ELS10: EQUAL? JILL-COUNTER,13,14 /?THN13 798 | EQUAL? SYEAR,2071 \?ELS12 799 | ?THN13: PRINTI "Jill, " 800 | EQUAL? JILL-COUNTER,13 \?ELS19 801 | PRINTI "sobbing quietly in the corner" 802 | JUMP ?CND17 803 | ?ELS19: EQUAL? JILL-COUNTER,14 \?ELS23 804 | PRINTI "slowly cleaning up after the raid" 805 | JUMP ?CND17 806 | ?ELS23: PRINTI "staring silently out the window" 807 | ?CND17: PRINTI ", doesn't reply." 808 | CRLF 809 | CALL1 CLEAR-BUF 810 | RSTACK 811 | ?ELS12: ZERO? MITCHELL-NEWS-FLAG /?ELS33 812 | SET 'WINNER,PLAYER 813 | CALL PERFORM,V?COMFORT,JILL 814 | SET 'WINNER,JILL 815 | RTRUE 816 | ?ELS33: EQUAL? PRSA,V?YES \?ELS36 817 | EQUAL? YES-NO-FLAG,7,11 /?THN39 818 | EQUAL? YES-NO-FLAG,9,10 \?ELS36 819 | ?THN39: CALL1 V-YES 820 | RSTACK 821 | ?ELS36: EQUAL? PRSA,V?NO \?ELS42 822 | EQUAL? YES-NO-FLAG,7,11 /?THN45 823 | EQUAL? YES-NO-FLAG,9,10 \?ELS42 824 | ?THN45: CALL1 V-NO 825 | RSTACK 826 | ?ELS42: EQUAL? HERE,SKYCAB \?ELS48 827 | SET 'YES-NO-FLAG,9 828 | CALL QUEUE,I-YES-NO,2 829 | PRINTR """Perry Simm, for once in your life will you shut your mouth and relax?""" 830 | ?ELS48: EQUAL? PRSA,V?WHAT,V?WHO \?ELS52 831 | CALL PERFORM,V?TELL-ABOUT,ME,PRSO 832 | RTRUE 833 | ?ELS52: EQUAL? PRSA,V?TELL-ABOUT \?ELS54 834 | EQUAL? PRSO,ME \?ELS54 835 | EQUAL? PRSI,CLERKMATON \?ELS61 836 | PRINTR """Clerkmatons! They didn't last long, did they? Remember that time I asked one where we could find potholders, and it led us to a storeroom where shipping cartons for pots were kept? They were cute -- I sort of miss them.""" 837 | ?ELS61: EQUAL? PRSI,BABY \?ELS65 838 | EQUAL? SYEAR,2041 \?ELS70 839 | PRINTR """Mitchell's been a dear -- he hasn't cried all day.""" 840 | ?ELS70: PRINTR """What baby?""" 841 | ?ELS65: EQUAL? PRSI,MITCHELL \?ELS78 842 | EQUAL? SYEAR,2051 \?ELS78 843 | IN? MITCHELL,HERE \?CND81 844 | PRINTI "Jill looks at Mitchell, smiling glowingly. " 845 | ?CND81: PRINTR """I'm so happy about Mitch -- he's healthy, he's handsome, he's studious -- what more could a parent ask for?""" 846 | ?ELS78: EQUAL? PRSI,PAINTING \?ELS89 847 | EQUAL? SYEAR,2041,2051 \?ELS89 848 | EQUAL? SYEAR,2041 \?ELS96 849 | PRINTR """The watercolor? It's pretty, but it doesn't SAY anything. If only I could think of some good subject material...""" 850 | ?ELS96: PRINTR """It's coming out well, don't you think? Thanks for suggesting the motif!""" 851 | ?ELS89: EQUAL? PRSI,JILL-BOOK \?ELS104 852 | SET 'YES-NO-FLAG,10 853 | CALL QUEUE,I-YES-NO,2 854 | PRINTR """Oh, Perry, I know they're all trashy. You're not going to start making fun of me again, are you?""" 855 | ?ELS104: EQUAL? PRSI,FYLA \?ELS108 856 | PRINTR """Let's not talk about her.""" 857 | ?ELS108: EQUAL? PRSI,ESTHER,GOLD,PERELMAN /?THN113 858 | EQUAL? PRSI,WARREN,GRIMWOLD,RANDU /?THN113 859 | EQUAL? PRSI,PRICE \?ELS112 860 | ?THN113: PRINTR """I don't know anyone by that name, hon.""" 861 | ?ELS112: EQUAL? PRSI,SILVER-DOVE \?ELS118 862 | EQUAL? SYEAR,2091 \?ELS123 863 | PRINTR """Perry, I'm so excited about this trip! I feel like such a pioneer!""" 864 | ?ELS123: CALL PERFORM,V?TELL-ABOUT,ME,RANDU 865 | RTRUE 866 | ?ELS118: EQUAL? PRSI,FORTZMAN \?ELS129 867 | PRINTI """I think she's Secretary of " 868 | EQUAL? SYEAR,2041 \?ELS134 869 | PRINTI "Education" 870 | JUMP ?CND132 871 | ?ELS134: PRINTI "Morality" 872 | ?CND132: PRINTR ".""" 873 | ?ELS129: EQUAL? PRSI,YOURSELF,JILL \?ELS144 874 | PRINTI """Perry! We've been married for " 875 | SUB SYEAR,2034 876 | PRINTN STACK 877 | PRINTR " years!""" 878 | ?ELS144: PRINTR """What a silly question, Perry!""" 879 | ?ELS54: EQUAL? PRSA,V?HELLO \?ELS152 880 | PRINTR """Hi, hon!""" 881 | ?ELS152: EQUAL? PRSA,V?EXAMINE \?ELS156 882 | EQUAL? PRSO,BABY \?ELS156 883 | SET 'WINNER,PLAYER 884 | CALL PERFORM,V?SHOW,BABY,JILL 885 | SET 'WINNER,JILL 886 | RTRUE 887 | ?ELS156: PRINTI "Jill wrinkles her nose in a display of mock annoyance. ""Honey, I'm busy " 888 | EQUAL? HERE,MASTER-BEDROOM \?ELS165 889 | PRINTI "packing" 890 | JUMP ?CND163 891 | ?ELS165: EQUAL? JILL-COUNTER,1 \?ELS169 892 | PRINTI "dressing" 893 | JUMP ?CND163 894 | ?ELS169: EQUAL? JILL-COUNTER,2,9 \?ELS173 895 | PRINTI "cleaning" 896 | JUMP ?CND163 897 | ?ELS173: EQUAL? JILL-COUNTER,3 \?ELS177 898 | PRINTI "making a salad" 899 | JUMP ?CND163 900 | ?ELS177: EQUAL? JILL-COUNTER,4,10,12 \?ELS181 901 | PRINTI "reading" 902 | JUMP ?CND163 903 | ?ELS181: EQUAL? JILL-COUNTER,5,8 \?ELS185 904 | PRINTI "painting" 905 | JUMP ?CND163 906 | ?ELS185: EQUAL? JILL-COUNTER,6 \?ELS189 907 | PRINTI "eating" 908 | JUMP ?CND163 909 | ?ELS189: EQUAL? JILL-COUNTER,7 \?ELS193 910 | PRINTI "doing the dishes" 911 | JUMP ?CND163 912 | ?ELS193: PRINTI "coloring my hair" 913 | ?CND163: PRINTI ".""" 914 | CRLF 915 | CALL1 CLEAR-BUF 916 | RSTACK 917 | ?ELS5: EQUAL? PRSA,V?THANK \?ELS203 918 | ZERO? JILL-COUNTER \?ELS208 919 | CALL PERFORM,V?KISS,JILL 920 | RTRUE 921 | ?ELS208: EQUAL? SYEAR,2041,2051 \FALSE 922 | CALL PERFORM,V?THANK,PERELMAN 923 | RTRUE 924 | ?ELS203: EQUAL? PRSA,V?BOARD,V?CLIMB-FOO,V?CLIMB-ON /?THN213 925 | EQUAL? PRSA,V?LIE-DOWN \?ELS212 926 | ?THN213: PRINTR "Ahem." 927 | ?ELS212: EQUAL? PRSA,V?ALARM \?ELS218 928 | ZERO? JILL-COUNTER \?ELS218 929 | PRINTR "Jill mumbles incoherently and rolls over." 930 | ?ELS218: EQUAL? PRSA,V?PLAY-WITH \?ELS224 931 | PRINTR "You ask Jill if she's interested in a game of chess, or perhaps gin rummy, but she begs off." 932 | ?ELS224: EQUAL? PRSA,V?SQUEEZE,V?TOUCH \?ELS228 933 | ZERO? JILL-COUNTER \?ELS233 934 | CALL PERFORM,V?ALARM,JILL 935 | RTRUE 936 | ?ELS233: ZERO? MITCHELL-RAID-FLAG \?THN236 937 | EQUAL? SYEAR,2071 \?ELS235 938 | ?THN236: CALL PERFORM,V?KISS,JILL 939 | RTRUE 940 | ?ELS235: PRINTR """I'm touched,"" says Jill." 941 | ?ELS228: EQUAL? PRSA,V?COMFORT \?ELS243 942 | ZERO? MITCHELL-NEWS-FLAG /?ELS248 943 | PRINTR "Jill says, ""I'll be okay. I just need to be alone for a while."" A moment later she adds, ""I love you, Perry."" She buries her face in the pillows." 944 | ?ELS248: EQUAL? JILL-COUNTER,13 \?ELS253 945 | PRINTR "As you hug her and stroke her back, Jill calms down noticeably." 946 | ?ELS253: EQUAL? SYEAR,2071 \FALSE 947 | PRINTR "Jill takes little notice." 948 | ?ELS243: EQUAL? PRSA,V?KISS \?ELS261 949 | ZERO? MITCHELL-NEWS-FLAG \?THN267 950 | EQUAL? JILL-COUNTER,13 \?ELS266 951 | ?THN267: CALL PERFORM,V?COMFORT,JILL 952 | RTRUE 953 | ?ELS266: EQUAL? SYEAR,2071 \?ELS270 954 | PRINTR "Jill kisses you briefly, without much enthusiasm." 955 | ?ELS270: ZERO? JILL-COUNTER \?ELS274 956 | PRINTR "Jill is sleeping!" 957 | ?ELS274: PRINTR "Jill kisses you back. ""Ooo-la-la,"" she says, afterwards." 958 | ?ELS261: EQUAL? PRSA,V?EXAMINE \?ELS282 959 | EQUAL? SYEAR,2041 \?ELS285 960 | PRINTI "Jill looks as beautiful as the day you married her seven years ago" 961 | JUMP ?CND283 962 | ?ELS285: EQUAL? SYEAR,2051 \?ELS289 963 | PRINTI "Jill's thirty-nine years have done nothing to dim her natural beauty" 964 | JUMP ?CND283 965 | ?ELS289: EQUAL? SYEAR,2061 \?ELS293 966 | PRINTI "Jill's face is a bit lined by age, and there are gray streaks in her hair, but to you she appears with a loveliness undiminished by twenty-seven years of marriage" 967 | JUMP ?CND283 968 | ?ELS293: EQUAL? SYEAR,2071 \?ELS297 969 | PRINTI "Jill has aged dramatically during the last decade, an effect heightened by the fact that Jill has become more and more withdrawn; she has lost interest in many things, including her appearance" 970 | JUMP ?CND283 971 | ?ELS297: EQUAL? SYEAR,2091 \?CND283 972 | PRINTI "Jill's healthy demeanor and graceful pose are more befitting a woman twenty years her junior" 973 | ?CND283: PRINTI ". " 974 | CALL1 JILL-DESCFCN 975 | RSTACK 976 | ?ELS282: EQUAL? PRSA,V?SHOW \?ELS307 977 | ZERO? JILL-COUNTER \?ELS312 978 | CALL PERFORM,V?KISS,JILL 979 | RTRUE 980 | ?ELS312: EQUAL? PRSO,BABY \FALSE 981 | SET 'YES-NO-FLAG,11 982 | CALL QUEUE,I-YES-NO,2 983 | PRINTR "Jill's face melts, and her eyes grow moist. ""Isn't he a bundle of joy, Perry?""" 984 | ?ELS307: EQUAL? PRSA,V?GIVE \?ELS318 985 | ZERO? JILL-COUNTER \?ELS323 986 | CALL PERFORM,V?KISS,JILL 987 | RTRUE 988 | ?ELS323: EQUAL? PRSO,BABY \?ELS325 989 | MOVE BABY,CRIB 990 | PRINTI "As Jill takes the baby he begins crying. ""Perry, you've woken him up!"" She begins rocking Mitchell gently. ""There, there, it's okay, go to sleep, that's a good little boy."" She " 991 | EQUAL? HERE,BEDROOM \?ELS330 992 | PRINTI "places him in the crib" 993 | JUMP ?CND328 994 | ?ELS330: PRINTI "carries Mitchell into the bedroom" 995 | ?CND328: PRINTR " and goes back to what she was doing." 996 | ?ELS325: EQUAL? PRSO,RUSTY-CROSS \FALSE 997 | MOVE RUSTY-CROSS,LOCAL-GLOBALS 998 | PRINTR """Perry, if the police see this, we'll get in trouble."" Nevertheless, she slips the cross into her pocket." 999 | ?ELS318: EQUAL? PRSA,V?FOLLOW \?ELS344 1000 | EQUAL? FOLLOW-FLAG,2,8 /?THN350 1001 | EQUAL? FOLLOW-FLAG,1 \?ELS349 1002 | EQUAL? HERE,LIVING-ROOM \?ELS349 1003 | ?THN350: CALL2 DO-WALK,P?NORTH 1004 | RSTACK 1005 | ?ELS349: EQUAL? FOLLOW-FLAG,3,5 \?ELS355 1006 | CALL2 DO-WALK,P?EAST 1007 | RSTACK 1008 | ?ELS355: EQUAL? FOLLOW-FLAG,4,6 /?THN358 1009 | EQUAL? FOLLOW-FLAG,1 \?ELS357 1010 | EQUAL? HERE,KITCHEN,BATHROOM \?ELS357 1011 | ?THN358: CALL2 DO-WALK,P?WEST 1012 | RSTACK 1013 | ?ELS357: EQUAL? FOLLOW-FLAG,7 \?ELS363 1014 | CALL2 DO-WALK,P?SOUTH 1015 | RSTACK 1016 | ?ELS363: EQUAL? FOLLOW-FLAG,15 \?ELS365 1017 | PRINTR "You didn't notice which way she went." 1018 | ?ELS365: IN? JILL,LOCAL-GLOBALS /FALSE 1019 | IN? JILL,HERE /FALSE 1020 | PRINTR "Huh? Jill hasn't just left the room!?!" 1021 | ?ELS344: EQUAL? PRSA,V?SIT-NEXT-TO \?ELS375 1022 | EQUAL? JILL-COUNTER,4,10 \?ELS375 1023 | CALL PERFORM,V?SIT,COUCH 1024 | RTRUE 1025 | ?ELS375: EQUAL? PRSA,V?SIT-NEXT-TO \FALSE 1026 | EQUAL? JILL-COUNTER,6 \FALSE 1027 | CALL PERFORM,V?SIT,DINETTE-SET 1028 | RTRUE 1029 | 1030 | 1031 | .FUNCT JILL-DESCFCN,X 1032 | EQUAL? PRSA,V?EXAMINE \?ELS3 1033 | EQUAL? PRSO,JILL \?ELS3 1034 | PRINTI "She is " 1035 | JUMP ?CND1 1036 | ?ELS3: PRINTI "Jill is " 1037 | ?CND1: EQUAL? HERE,MASTER-BEDROOM \?ELS16 1038 | PRINTR "here, doing some last-minute packing." 1039 | ?ELS16: EQUAL? HERE,SKYCAB \?ELS20 1040 | PRINTR "sitting next to you on the plush seat." 1041 | ?ELS20: EQUAL? SYEAR,2071 \?ELS24 1042 | PRINTR "sitting on the couch, staring morosely out the window." 1043 | ?ELS24: EQUAL? SYEAR,2061 \?ELS28 1044 | PRINTR "lying on the bed, sobbing." 1045 | ?ELS28: ZERO? JILL-COUNTER \?ELS32 1046 | PRINTR "lying on the bed, sleeping peacefully." 1047 | ?ELS32: EQUAL? JILL-COUNTER,1 \?ELS36 1048 | PRINTR "standing near the bureau, getting dressed." 1049 | ?ELS36: EQUAL? JILL-COUNTER,2,9 \?ELS40 1050 | PRINTI "walking around, neatening and cleaning the " 1051 | EQUAL? JILL-COUNTER,2 \?ELS45 1052 | PRINTI "bedroom" 1053 | JUMP ?CND43 1054 | ?ELS45: PRINTI "living room" 1055 | ?CND43: PRINTR "." 1056 | ?ELS40: EQUAL? JILL-COUNTER,3 \?ELS55 1057 | PRINTR "standing at the counter, preparing a salad." 1058 | ?ELS55: EQUAL? JILL-COUNTER,4,10 \?ELS59 1059 | PRINTR "curled up in the corner of the couch, reading a book." 1060 | ?ELS59: EQUAL? JILL-COUNTER,5,8 \?ELS63 1061 | PRINTR "standing at the easel, working on her current painting." 1062 | ?ELS63: EQUAL? JILL-COUNTER,6 \?ELS67 1063 | PRINTR "sitting at the table, nibbling on a salad." 1064 | ?ELS67: EQUAL? JILL-COUNTER,7 \?ELS71 1065 | PRINTR "washing some dishes." 1066 | ?ELS71: EQUAL? JILL-COUNTER,11 \?ELS75 1067 | PRINTR "washing and coloring her hair." 1068 | ?ELS75: EQUAL? JILL-COUNTER,12 \?ELS79 1069 | PRINTR "lying on the bed, reading a book." 1070 | ?ELS79: EQUAL? JILL-COUNTER,13 \?ELS83 1071 | PRINTR "huddled in the corner, crying." 1072 | ?ELS83: EQUAL? JILL-COUNTER,14 \?ELS87 1073 | PRINTR "slowly straightening up after the raid." 1074 | ?ELS87: PRINTR "Bug #9B" 1075 | 1076 | 1077 | .FUNCT PUT-JILL-IN-THE-RIGHT-PLACE 1078 | GRTR? STIME,1402 \?ELS5 1079 | SET 'JILL-COUNTER,0 1080 | MOVE JILL,BEDROOM 1081 | MOVE JILL-BOOK,BEDROOM 1082 | RTRUE 1083 | ?ELS5: GRTR? STIME,1299 \?ELS7 1084 | SET 'JILL-COUNTER,12 1085 | MOVE JILL-BOOK,BEDROOM 1086 | FSET JILL-BOOK,NDESCBIT 1087 | MOVE JILL,BEDROOM 1088 | RTRUE 1089 | ?ELS7: GRTR? STIME,1242 \?ELS9 1090 | SET 'JILL-COUNTER,11 1091 | MOVE JILL-BOOK,BEDROOM 1092 | MOVE JILL,BATHROOM 1093 | RTRUE 1094 | ?ELS9: GRTR? STIME,1137 \?ELS11 1095 | SET 'JILL-COUNTER,10 1096 | MOVE JILL-BOOK,LIVING-ROOM 1097 | FSET JILL-BOOK,NDESCBIT 1098 | MOVE JILL,LIVING-ROOM 1099 | RTRUE 1100 | ?ELS11: GRTR? STIME,1084 \?ELS13 1101 | SET 'JILL-COUNTER,9 1102 | MOVE JILL,LIVING-ROOM 1103 | MOVE JILL-BOOK,LIVING-ROOM 1104 | RTRUE 1105 | ?ELS13: GRTR? STIME,912 \?ELS15 1106 | SET 'JILL-COUNTER,8 1107 | MOVE JILL,LIVING-ROOM 1108 | MOVE JILL-BOOK,LIVING-ROOM 1109 | RTRUE 1110 | ?ELS15: GRTR? STIME,859 \?ELS17 1111 | SET 'JILL-COUNTER,7 1112 | MOVE JILL,KITCHEN 1113 | MOVE JILL-BOOK,LIVING-ROOM 1114 | RTRUE 1115 | ?ELS17: GRTR? STIME,813 \?ELS19 1116 | SET 'JILL-COUNTER,6 1117 | MOVE JILL,KITCHEN 1118 | MOVE JILL-BOOK,LIVING-ROOM 1119 | MOVE SALAD,KITCHEN 1120 | FSET SALAD,NDESCBIT 1121 | RTRUE 1122 | ?ELS19: GRTR? STIME,697 \?ELS21 1123 | SET 'JILL-COUNTER,5 1124 | MOVE JILL,LIVING-ROOM 1125 | MOVE JILL-BOOK,LIVING-ROOM 1126 | MOVE SALAD,REFRIGERATOR 1127 | RTRUE 1128 | ?ELS21: GRTR? STIME,644 \?ELS23 1129 | SET 'JILL-COUNTER,4 1130 | MOVE JILL,LIVING-ROOM 1131 | MOVE SALAD,REFRIGERATOR 1132 | MOVE JILL-BOOK,LIVING-ROOM 1133 | FSET JILL-BOOK,NDESCBIT 1134 | RTRUE 1135 | ?ELS23: GRTR? STIME,591 \?ELS25 1136 | SET 'JILL-COUNTER,3 1137 | MOVE JILL,KITCHEN 1138 | MOVE SALAD,KITCHEN 1139 | FSET SALAD,NDESCBIT 1140 | MOVE JILL-BOOK,BEDROOM 1141 | RTRUE 1142 | ?ELS25: GRTR? STIME,522 \?ELS27 1143 | MOVE JILL,BEDROOM 1144 | MOVE JILL-BOOK,BEDROOM 1145 | SET 'JILL-COUNTER,2 1146 | RETURN JILL-COUNTER 1147 | ?ELS27: GRTR? STIME,478 \?ELS29 1148 | MOVE JILL,BEDROOM 1149 | MOVE JILL-BOOK,BEDROOM 1150 | SET 'JILL-COUNTER,1 1151 | RETURN JILL-COUNTER 1152 | ?ELS29: MOVE JILL,BEDROOM 1153 | MOVE JILL-BOOK,BEDROOM 1154 | SET 'JILL-COUNTER,0 1155 | RETURN JILL-COUNTER 1156 | 1157 | 1158 | .FUNCT JILL-BOOK-F 1159 | EQUAL? PRSA,V?TAKE \?ELS5 1160 | EQUAL? JILL-COUNTER,4,10 \?ELS10 1161 | PRINTR "Jill's in the middle of reading it!" 1162 | ?ELS10: PRINTR "You have no interest in those gothic novels." 1163 | ?ELS5: EQUAL? PRSA,V?OPEN,V?EXAMINE,V?READ \?ELS18 1164 | PRINTI "It's another of those indistinguishable " 1165 | PRINTD JILL-BOOK 1166 | PRINTR "s that Jill is always reading." 1167 | ?ELS18: EQUAL? PRSA,V?CLOSE \?ELS24 1168 | EQUAL? JILL-COUNTER,4,10 \?ELS29 1169 | CALL PERFORM,V?TAKE,JILL-BOOK 1170 | RTRUE 1171 | ?ELS29: PRINTR "It is!" 1172 | ?ELS24: EQUAL? PRSA,V?BUY \FALSE 1173 | CALL PERFORM,V?BUY,BOOKS 1174 | RTRUE 1175 | 1176 | 1177 | .FUNCT CRIB-F 1178 | EQUAL? PRSA,V?CLOSE \FALSE 1179 | PRINTI "Huh?" 1180 | RTRUE 1181 | 1182 | 1183 | .FUNCT TOY-F 1184 | EQUAL? PRSA,V?EXAMINE \?ELS5 1185 | PRINTR "The toy is a little yellow rubber duckie." 1186 | ?ELS5: EQUAL? PRSA,V?PLAY-WITH,V?SQUEEZE \FALSE 1187 | PRINTR "The toy emits a high-pitched squeak." 1188 | 1189 | 1190 | .FUNCT BABY-F 1191 | EQUAL? PRSA,V?TELL /?THN6 1192 | EQUAL? BABY,WINNER \?ELS5 1193 | ?THN6: PRINTI "Mitchell, waking for a moment, coos happily at the sound of your voice." 1194 | CRLF 1195 | CALL1 CLEAR-BUF 1196 | RSTACK 1197 | ?ELS5: EQUAL? PRSA,V?WASH \?ELS11 1198 | PRINTR "Although, as much as possible, you try to share with Jill the chores and pleasures of taking care of Mitchell, bathing him is one area where you're completely helpless." 1199 | ?ELS11: EQUAL? PRSA,V?GIVE \?ELS15 1200 | EQUAL? PRSO,SHOWER,BATHROOM-OBJECT \?ELS15 1201 | CALL PERFORM,V?WASH,BABY 1202 | RTRUE 1203 | ?ELS15: EQUAL? PRSA,V?EXAMINE \?ELS19 1204 | PRINTR "Your son, Mitchell Rav Simm, was named for your father and for your mentor. He's sleeping peacefully, his little face scrunched up in a cute mask of baby fat." 1205 | ?ELS19: EQUAL? PRSA,V?GIVE \?ELS23 1206 | EQUAL? PRSO,FORMULA \?ELS23 1207 | PRINTR "Mitchell wakes up for a minute and sucks on the bottle. A moment later, his breathing indicates that he is asleep." 1208 | ?ELS23: EQUAL? PRSA,V?FEED \?ELS29 1209 | CALL2 HELD?,FORMULA 1210 | ZERO? STACK /?ELS34 1211 | CALL PERFORM,V?GIVE,FORMULA,BABY 1212 | RTRUE 1213 | ?ELS34: PRINTR "At this age, Mitchell eats only baby formula." 1214 | ?ELS29: EQUAL? PRSA,V?SHOW,V?GIVE \?ELS40 1215 | EQUAL? PRSI,BABY \?ELS40 1216 | CALL PERFORM,V?THANK,BABY 1217 | RTRUE 1218 | ?ELS40: EQUAL? PRSA,V?PLAY-WITH,V?THANK \?ELS44 1219 | PRINTR "The baby is asleep." 1220 | ?ELS44: EQUAL? PRSA,V?KISS \?ELS48 1221 | PRINTR "Despite Mitchell's pudgy adorableness, you reconsider so as not to wake him." 1222 | ?ELS48: EQUAL? PRSA,V?SHAKE \?ELS52 1223 | PRINTR "Since Mitchell's already asleep, rocking him is, at best, useless." 1224 | ?ELS52: EQUAL? PRSA,V?ALARM \?ELS56 1225 | PRINTR "As Jill has reminded you many times, babies need their sleep." 1226 | ?ELS56: EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS60 1227 | EQUAL? PRSI,CRIB /?ELS60 1228 | CALL2 NO-PLACE-FOR-BABY,PRSI 1229 | RSTACK 1230 | ?ELS60: EQUAL? PRSA,V?DROP \?ELS64 1231 | CALL2 NO-PLACE-FOR-BABY,GROUND 1232 | RSTACK 1233 | ?ELS64: EQUAL? PRSA,V?KICK,V?THROW \FALSE 1234 | PRINTR "You reconsider this reckless act." 1235 | 1236 | 1237 | .FUNCT NO-PLACE-FOR-BABY,DESTINATION 1238 | PRINTI "The " 1239 | CALL2 DPRINT,DESTINATION 1240 | PRINTR " is no place for a baby!" 1241 | 1242 | 1243 | .FUNCT I-MITCHELL-RAID 1244 | CALL1 IN-APARTMENT? 1245 | ZERO? STACK /FALSE 1246 | CALL2 SCORE,120 1247 | CRLF 1248 | EQUAL? HERE,LIVING-ROOM \?ELS6 1249 | FSET? APARTMENT-DOOR,OPENBIT \?ELS9 1250 | PRINTI "With a roar of tromping feet," 1251 | JUMP ?CND4 1252 | ?ELS9: PRINTI "With a screech of splintering wood, the front door explodes open, and" 1253 | JUMP ?CND4 1254 | ?ELS6: MOVE PLAYER,LIVING-ROOM 1255 | SET 'HERE,LIVING-ROOM 1256 | PRINTI "You hear a loud noise from the front door and dash into the living room as" 1257 | ?CND4: MOVE JILL,LOCAL-GLOBALS 1258 | FCLEAR APARTMENT-DOOR,OPENBIT 1259 | CALL QUEUE,I-APARTMENT,-1 1260 | SET 'MITCHELL-RAID-FLAG,TRUE-VALUE 1261 | SET 'BRUISED,TRUE-VALUE 1262 | PRINTR " six or eight heavily armed Church police storm into the apartment. You see a look of horror come over Jill, as she covers her mouth with the back of her hand, as though stifling some silent scream. You follow her gaze, and -- a shock of recognition -- sauntering in behind the police... 1263 | 1264 | The ten years since you last saw him have left scant change on the face of your son. ""Mitchell!"" you yell, and take a step toward him, but a blow from one of the cops sends your frail, old body flying against the wall. 1265 | 1266 | ""She is the one."" The voice is Mitchell's, but the tone is cold, unrecognizable, sending shivers through you. He raises a fur-clad arm, pointing at his mother without a hint of emotion. ""She spake against the Church; she tried to poison the mind of a child too young to know the Truth."" The thugs grab Jill, who reaches toward Mitchell, tears of terror streaming down her face. Totally unresponsive, he turns and walks calmly out of the apartment. 1267 | 1268 | As Jill is dragged, screaming and crying, through the front door, you try to follow, but a cop pummels you in the stomach with his club. You fall to the floor, retching, as the apartment door slams closed, shutting you off forever from the son you cannot understand and the wife you will never see again." 1269 | 1270 | 1271 | .FUNCT SOLARIUM-OBJECT-F 1272 | EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5 1273 | EQUAL? HERE,PATIO \?ELS10 1274 | CALL2 DO-WALK,P?NORTH 1275 | RSTACK 1276 | ?ELS10: EQUAL? HERE,EPILOGUE-LIVING-ROOM \?ELS12 1277 | CALL2 DO-WALK,P?SOUTH 1278 | RSTACK 1279 | ?ELS12: CALL GLOBAL-IN?,SOLARIUM-OBJECT,HERE 1280 | ZERO? STACK /FALSE 1281 | PRINT LOOK-AROUND 1282 | CRLF 1283 | RTRUE 1284 | ?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS18 1285 | EQUAL? HERE,SOLARIUM \?ELS23 1286 | CALL2 DO-WALK,P?NORTH 1287 | RSTACK 1288 | ?ELS23: PRINT LOOK-AROUND 1289 | CRLF 1290 | RTRUE 1291 | ?ELS18: EQUAL? PRSA,V?EXAMINE \FALSE 1292 | EQUAL? HERE,SOLARIUM \FALSE 1293 | CALL1 V-LOOK 1294 | RSTACK 1295 | 1296 | 1297 | .FUNCT PATIO-OBJECT-F 1298 | EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5 1299 | EQUAL? HERE,PATIO \?ELS10 1300 | PRINT LOOK-AROUND 1301 | CRLF 1302 | RTRUE 1303 | ?ELS10: CALL GLOBAL-IN?,PATIO-OBJECT,HERE 1304 | ZERO? STACK /FALSE 1305 | CALL2 DO-WALK,P?SOUTH 1306 | RSTACK 1307 | ?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS16 1308 | EQUAL? HERE,PATIO \?ELS21 1309 | CALL2 DO-WALK,P?NORTH 1310 | RSTACK 1311 | ?ELS21: PRINT LOOK-AROUND 1312 | CRLF 1313 | RTRUE 1314 | ?ELS16: EQUAL? PRSA,V?EXAMINE \FALSE 1315 | EQUAL? HERE,PATIO \FALSE 1316 | CALL1 V-LOOK 1317 | RSTACK 1318 | 1319 | 1320 | .FUNCT PATIO-F,RARG 1321 | EQUAL? RARG,M-LOOK \FALSE 1322 | PRINTI "Sunlight spills off the vines and shrubs of this wide outdoor terrace. The view, always breathtaking, seems particularly sharp today; beyond the parklands and forests to the west, the foothills of the Rockies are clearly visible; t" 1323 | PRINT RIVER-DESC 1324 | PRINTI " The glass-walled sunporch lies behind a curtain of vines to the north." 1325 | RTRUE 1326 | 1327 | 1328 | .FUNCT FIREPLACE-F 1329 | EQUAL? PRSA,V?EXAMINE \FALSE 1330 | PRINTR "Constructed of deep red brick, the fireplace has the usual equipment to filter the fire's smoke before releasing it up the chimney." 1331 | 1332 | 1333 | .FUNCT EPILOGUE-LIVING-ROOM-F,RARG 1334 | EQUAL? RARG,M-ENTER \FALSE 1335 | MOVE SEAT,HERE 1336 | RFALSE 1337 | 1338 | 1339 | .FUNCT DINING-ROOM-OBJECT-F 1340 | EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5 1341 | EQUAL? HERE,EPILOGUE-KITCHEN \?ELS10 1342 | CALL2 DO-WALK,P?WEST 1343 | RSTACK 1344 | ?ELS10: EQUAL? HERE,EPILOGUE-LIVING-ROOM \?ELS12 1345 | CALL2 DO-WALK,P?EAST 1346 | RSTACK 1347 | ?ELS12: CALL GLOBAL-IN?,DINING-ROOM-OBJECT,HERE 1348 | ZERO? STACK /FALSE 1349 | PRINT LOOK-AROUND 1350 | CRLF 1351 | RTRUE 1352 | ?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS18 1353 | EQUAL? HERE,DINING-ROOM \?ELS23 1354 | CALL1 V-WALK-AROUND 1355 | RSTACK 1356 | ?ELS23: PRINT LOOK-AROUND 1357 | CRLF 1358 | RTRUE 1359 | ?ELS18: EQUAL? PRSA,V?EXAMINE \FALSE 1360 | EQUAL? HERE,DINING-ROOM \FALSE 1361 | CALL1 V-LOOK 1362 | RSTACK 1363 | 1364 | 1365 | .FUNCT TUB-F 1366 | EQUAL? PRSA,V?BOARD,V?THROUGH \?ELS5 1367 | PRINTR "You don't have time." 1368 | ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE 1369 | PRINTR "It is a large whirlpool tub." 1370 | 1371 | 1372 | .FUNCT DEN-OBJECT-F 1373 | EQUAL? PRSA,V?THROUGH,V?WALK-TO \?ELS5 1374 | EQUAL? HERE,FOYER \?ELS10 1375 | CALL2 DO-WALK,P?EAST 1376 | RSTACK 1377 | ?ELS10: CALL GLOBAL-IN?,DEN-OBJECT,HERE 1378 | ZERO? STACK /FALSE 1379 | PRINT LOOK-AROUND 1380 | CRLF 1381 | RTRUE 1382 | ?ELS5: EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?ELS16 1383 | EQUAL? HERE,DEN \?ELS21 1384 | CALL2 DO-WALK,P?WEST 1385 | RSTACK 1386 | ?ELS21: PRINT LOOK-AROUND 1387 | CRLF 1388 | RTRUE 1389 | ?ELS16: EQUAL? PRSA,V?EXAMINE \FALSE 1390 | EQUAL? HERE,DEN \FALSE 1391 | CALL1 V-LOOK 1392 | RSTACK 1393 | 1394 | 1395 | .FUNCT ENTERTAINMENT-CENTER-F 1396 | EQUAL? PRSA,V?EXAMINE \?ELS5 1397 | PRINTR "Although equipped with the full range of audio, video, and holovision capabilities, the EC's functions go far beyond entertainment. It has complete teaching and library packages, and serves as the main computer interface. It is currently off." 1398 | ?ELS5: EQUAL? PRSA,V?ON \FALSE 1399 | PRINTR "The power node has been packed away." 1400 | 1401 | 1402 | .FUNCT SKYCAB-OBJECT-F 1403 | EQUAL? PRSA,V?DISEMBARK,V?LEAVE,V?EXIT \?ELS5 1404 | CALL2 DO-WALK,P?OUT 1405 | RSTACK 1406 | ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE 1407 | CALL1 V-LOOK 1408 | RSTACK 1409 | 1410 | 1411 | .FUNCT VIEWSCREEN-F 1412 | EQUAL? PRSA,V?EXAMINE \?ELS5 1413 | PRINTR "At the moment, the screen is dark." 1414 | ?ELS5: EQUAL? PRSA,V?ON \FALSE 1415 | PRINTR "The screen is activated automatically by incoming transmissions." 1416 | 1417 | 1418 | .FUNCT RECEIVER-STATION-F 1419 | EQUAL? SKYCAB-COUNTER,6 \?ELS5 1420 | CALL1 MOBY-VERB? 1421 | ZERO? STACK \?ELS5 1422 | CALL2 CANT-SEE,RECEIVER-STATION 1423 | RSTACK 1424 | ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9 1425 | PRINTI "Y" 1426 | PRINT RS-DESC 1427 | CRLF 1428 | RTRUE 1429 | ?ELS9: CALL2 MILE-AWAY,RECEIVER-STATION 1430 | RSTACK 1431 | 1432 | 1433 | .FUNCT CULTURAL-CENTER-F 1434 | EQUAL? SKYCAB-COUNTER,6 \?ELS5 1435 | CALL1 MOBY-VERB? 1436 | ZERO? STACK \?ELS5 1437 | CALL2 CANT-SEE,CULTURAL-CENTER 1438 | RSTACK 1439 | ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9 1440 | PRINTI "Along the river, south of the pier, are the outdoor shells and amphitheatres of the " 1441 | PRINTD CULTURAL-CENTER 1442 | PRINTR "." 1443 | ?ELS9: CALL2 MILE-AWAY,RECEIVER-STATION 1444 | RSTACK 1445 | 1446 | .ENDI 1447 | --------------------------------------------------------------------------------