├── COMPILED ├── enchanter.z3 └── z4.z3 ├── README.md ├── _config.yml ├── castle.zap ├── castle.zil ├── clock.zap ├── clock.zil ├── combat.log ├── crufty.xzap ├── crufty.zap ├── crufty.zil ├── del.cmd ├── egg.zap ├── egg.zil ├── ench.br ├── enchanter.pre ├── enchanter.pur ├── enchanter.txt ├── enchanter.zil ├── gallery.zap ├── gallery.zil ├── gears.zap ├── gears.zil ├── globals.zap ├── globals.zil ├── gparser.zap ├── gparser.zil ├── knot.zap ├── knot.zil ├── load.zil ├── macros.zap ├── macros.zil ├── magic.zap ├── magic.zil ├── main.zap ├── main.zil ├── nload.zil ├── nmacros.zil ├── outside.zap ├── outside.zil ├── parser.cmp ├── parser.zap ├── parser.zil ├── purloined.zap ├── purloined.zil ├── record.zap ├── record.zil ├── sleep.zap ├── sleep.zil ├── stair.zap ├── stair.zil ├── syntax.zap ├── syntax.zil ├── temple.zap ├── temple.zil ├── terror.zap ├── terror.zil ├── verbs.zap ├── verbs.zil ├── z4.chart ├── z4.errors ├── z4.record ├── z4.serial ├── z4.xzap ├── z4.zap ├── z4.zil ├── z4dat.zap ├── z4freq.xzap └── z4str.zap /COMPILED/enchanter.z3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/historicalsource/enchanter/472c3b938010e0beb54189284e35ab9ac1bba25e/COMPILED/enchanter.z3 -------------------------------------------------------------------------------- /COMPILED/z4.z3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/historicalsource/enchanter/472c3b938010e0beb54189284e35ab9ac1bba25e/COMPILED/z4.z3 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Enchanter Source Code Collection 2 | 3 | Enchanter is a 1983 interactive fiction game written by Marc Blank and Dave Lebling and published by Infocom. 4 | 5 | Further information on Enchanter: 6 | 7 | * [Wikipedia](https://en.wikipedia.org/wiki/Enchanter_(video_game)) 8 | * [The Digital Antiquarian](https://www.filfre.net/2013/04/enchanter/) 9 | * [The Interactive Fiction Database](https://ifdb.tads.org/viewgame?id=vu4xhul3abknifcr) 10 | * [The Infocom Gallery](https://gallery.guetech.org/enchanter/enchanter.html) 11 | * [IFWiki](http://www.ifwiki.org/index.php/Enchanter) 12 | 13 | __What is this Repository?__ 14 | 15 | This repository is a directory of source code for the Infocom game "Enchanter", 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. 16 | 17 | 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. 18 | 19 | __Basic Information on the Contents of This Repository__ 20 | 21 | 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. 22 | 23 | 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. 24 | 25 | 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. 26 | 27 | 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. 28 | 29 | __What is the Purpose of this Repository__ 30 | 31 | 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. 32 | 33 | Researchers are encouraged to share their discoveries about the information in this source code and the history of Infocom and its many innovative employees. 34 | 35 | __Some Trivia and Notes on this Repository__ 36 | 37 | * Enchanter's working title is "Zork IV" and there was strong debate (continuing into SORCERER and SPELLBREAKER) over just naming all the fantasy games out of Infocom some variety of Zork. The source code files for Enchanter contain many references to "ZORK IV" as a result. 38 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-tactile -------------------------------------------------------------------------------- /clock.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT QUEUE,RTN,TICK,CINT 4 | CALL INT,RTN >CINT 5 | PUT CINT,C-TICK,TICK 6 | RETURN CINT 7 | 8 | 9 | .FUNCT INT,RTN,DEMON=0,E,C,INT 10 | ADD C-TABLE,C-TABLELEN >E 11 | ADD C-TABLE,C-INTS >C 12 | ?PRG1: EQUAL? C,E \?ELS5 13 | SUB C-INTS,C-INTLEN >C-INTS 14 | ZERO? DEMON /?ELS7 15 | SUB C-DEMONS,C-INTLEN >C-DEMONS 16 | ?ELS7: ADD C-TABLE,C-INTS >INT 17 | PUT INT,C-RTN,RTN 18 | RETURN INT 19 | ?ELS5: GET C,C-RTN 20 | EQUAL? STACK,RTN \?CND3 21 | RETURN C 22 | ?CND3: ADD C,C-INTLEN >C 23 | JUMP ?PRG1 24 | 25 | 26 | .FUNCT CLOCKER,C,E,TICK,FLG=0 27 | ZERO? CLOCK-WAIT /?CND1 28 | SET 'CLOCK-WAIT,FALSE-VALUE 29 | RFALSE 30 | ?CND1: ZERO? P-WON /?ELS9 31 | PUSH C-INTS 32 | JUMP ?CND5 33 | ?ELS9: PUSH C-DEMONS 34 | ?CND5: ADD C-TABLE,STACK >C 35 | ADD C-TABLE,C-TABLELEN >E 36 | ?PRG13: EQUAL? C,E \?ELS17 37 | INC 'MOVES 38 | RETURN FLG 39 | ?ELS17: GET C,C-ENABLED? 40 | ZERO? STACK /?CND15 41 | GET C,C-TICK >TICK 42 | ZERO? TICK \?ELS22 43 | JUMP ?CND15 44 | ?ELS22: SUB TICK,1 45 | PUT C,C-TICK,STACK 46 | GRTR? TICK,1 /?CND20 47 | GET C,C-RTN 48 | CALL STACK 49 | ZERO? STACK /?CND20 50 | SET 'FLG,TRUE-VALUE 51 | ?CND20: 52 | ?CND15: ADD C,C-INTLEN >C 53 | JUMP ?PRG13 54 | 55 | .ENDI 56 | -------------------------------------------------------------------------------- /clock.zil: -------------------------------------------------------------------------------- 1 | "CLOCK for 2 | ENCHANTER 3 | (c) Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | 7 | 8 | > 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | ) 24 | > ,C-TICK .TICK> 25 | .CINT> 26 | 27 | ) E C INT) 28 | #DECL ((RTN) ATOM (DEMON) (E C INT) ) 30 | > 31 | > 32 | 34 | > 35 | >> 36 | > 37 | 38 | ) 39 | ( .RTN> )> 40 | >>> 41 | 42 | > 43 | 44 | )) 45 | #DECL ((C E) (TICK) FIX (FLG) ) 46 | > )> 47 | >> 48 | > 49 | 51 | > 52 | ) 53 | (>> 54 | > 55 | ) 56 | (T 57 | > 58 | > 59 | >> 60 | )>)>)> 61 | >>> 62 | -------------------------------------------------------------------------------- /combat.log: -------------------------------------------------------------------------------- 1 | 20-Aug-86 17:05:25 ZILCH started. Load is 3.04. 2 | SYS:ZILCH.EXE Z4 3 | 4 | 5 | Compiling SS:Z4.ZIL.4 6 | [Classic Instructions] 7 | *** ENCHANTER: Interlogic Fantasy *** 8 | 9 | 10 | Compiling SS:SYNTAX.ZIL.122 11 | Compiling SS:MACROS.ZIL.22 12 | Compiling SS:CLOCK.ZIL.3 13 | Compiling SS:MAIN.ZIL.86 14 | Compiling SS:GPARSER.ZIL.9 15 | Compiling SS:VERBS.ZIL.245 16 | Compiling SS:RECORD.ZIL.1 17 | Compiling SS:GLOBALS.ZIL.139 18 | Compiling SS:TERROR.ZIL.184 19 | Compiling SS:STAIR.ZIL.131 20 | Compiling SS:MAGIC.ZIL.277 21 | Compiling SS:KNOT.ZIL.51 22 | Compiling SS:PURLOINED.ZIL.185 23 | Compiling SS:CASTLE.ZIL.234 24 | Compiling SS:TEMPLE.ZIL.78 25 | Compiling SS:GALLERY.ZIL.40 26 | Compiling SS:EGG.ZIL.48 27 | Compiling SS:SLEEP.ZIL.85 28 | Compiling SS:GEARS.ZIL.159 29 | Compiling SS:OUTSIDE.ZIL.130 30 | ** Warning: Word "THROUGH" has two TPREP meanings: PR?THROUGH and PR?WITH 31 | 32 | ** Warning: Word "EXIT" has two TVERB meanings: ACT?EXIT and ACT?DROPCompiler halted. 33 | Used 6:38.9 in 00:13:55. 34 | ZAP started. Load is 2.00. 35 | SYS:ZAP.EXE Z4 36 | 37 | Assembling Z4.XZAP.4 38 | Release: 29 39 | 40 | 64 Inserting Z4FREQ.XZAP.1 (626 bytes) 41 | 690 Inserting Z4DAT.ZAP.15 (20784 bytes) 42 | 21474 Inserting SYNTAX.ZAP.21 (0 bytes) 43 | 21474 Inserting MACROS.ZAP.21 (117 bytes) 44 | 21591 Inserting CLOCK.ZAP.21 (178 bytes) 45 | 21769 Inserting MAIN.ZAP.21 (2289 bytes) 46 | 24058 Inserting GPARSER.ZAP.5 (6898 bytes) 47 | 30956 Inserting VERBS.ZAP.23 (12130 bytes) 48 | 43086 Inserting RECORD.ZAP.13 (56 bytes) 49 | 43142 Inserting GLOBALS.ZAP.22 (2799 bytes) 50 | 45941 Inserting TERROR.ZAP.20 (4413 bytes) 51 | 50354 Inserting STAIR.ZAP.20 (5043 bytes) 52 | 55397 Inserting MAGIC.ZAP.19 (6509 bytes) 53 | 61906 Inserting KNOT.ZAP.19 (1368 bytes) 54 | 63274 Inserting PURLOINED.ZAP.19 (7343 bytes) 55 | 70617 Inserting CASTLE.ZAP.19 (6510 bytes) 56 | 77127 Inserting TEMPLE.ZAP.18 (3385 bytes) 57 | 80512 Inserting GALLERY.ZAP.18 (2162 bytes) 58 | 82674 Inserting EGG.ZAP.17 (1699 bytes) 59 | 84373 Inserting SLEEP.ZAP.17 (2358 bytes) 60 | 86731 Inserting GEARS.ZAP.17 (5826 bytes) 61 | 92557 Inserting OUTSIDE.ZAP.17 (3338 bytes) 62 | 95895 Inserting Z4STR.ZAP.15 (15231 bytes) 63 | 255 objects. 64 | 231 globals. 65 | 723 word vocabulary. 66 | 67 | 111126 bytes (109K). 68 | 21474 bytes of preload. 69 | 12653 bytes of impure. 70 | 71 | Outputting symbol tables 72 | Compiler halted. 73 | Used 53.9 in 00:01:08. 74 | -------------------------------------------------------------------------------- /crufty.xzap: -------------------------------------------------------------------------------- 1 | 2 | .FUNCT THIS-IT?,OBJ,TBL,SYNS,?TMP1 3 | FSET? OBJ,INVISIBLE /FALSE 4 | ZERO? P-NAM /?THN3 5 | GETPT OBJ,P?SYNONYM >SYNS 6 | PTSIZE SYNS 7 | DIV STACK,2 8 | SUB STACK,1 9 | CALL ZMEMQ,P-NAM,SYNS,STACK 10 | ZERO? STACK /FALSE 11 | ?THN3: ZERO? P-ADJ /?ELS8 12 | GETPT OBJ,P?ADJECTIVE >SYNS 13 | ZERO? SYNS /FALSE 14 | PTSIZE SYNS 15 | SUB STACK,1 16 | CALL ZMEMQB,P-ADJ,SYNS,STACK 17 | ZERO? STACK /FALSE 18 | ?ELS8: ZERO? P-GWIMBIT /TRUE 19 | FSET? OBJ,P-GWIMBIT /TRUE 20 | RFALSE 21 | 22 | .ENDI 23 | -------------------------------------------------------------------------------- /crufty.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT THIS-IT?,OBJ,TBL,SYNS,?TMP1 4 | FSET? OBJ,INVISIBLE /FALSE 5 | ZERO? P-NAM /?ELS5 6 | GETPT OBJ,P?SYNONYM >SYNS 7 | PTSIZE SYNS 8 | DIV STACK,2 9 | SUB STACK,1 10 | CALL ZMEMQ,P-NAM,SYNS,STACK 11 | ZERO? STACK /FALSE 12 | ?ELS5: ZERO? P-ADJ /?ELS9 13 | GETPT OBJ,P?ADJECTIVE >SYNS 14 | ZERO? SYNS /FALSE 15 | PTSIZE SYNS 16 | SUB STACK,1 17 | CALL ZMEMQB,P-ADJ,SYNS,STACK 18 | ZERO? STACK /FALSE 19 | ?ELS9: ZERO? P-GWIMBIT /TRUE 20 | FSET? OBJ,P-GWIMBIT /TRUE 21 | RFALSE 22 | 23 | .ENDI 24 | -------------------------------------------------------------------------------- /crufty.zil: -------------------------------------------------------------------------------- 1 | "(c) Copyright 1983 Infocom, Inc. All Rights Reserved." 2 | 3 | ) 5 | (> 8 | <- 2> 1>>>> 9 | ) 10 | (>> 12 | 1>>>>> 13 | ) 14 | (> >> 15 | )> 16 | > 17 | -------------------------------------------------------------------------------- /del.cmd: -------------------------------------------------------------------------------- 1 | fdele /all:_*.*/keep:2/spec:zil,zap/delfn:*.* 2 | -------------------------------------------------------------------------------- /egg.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT JEWEL-CHESTS-F 4 | EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?ELS5 5 | PRINTR "There's nothing inside." 6 | ?ELS5: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS9 7 | PRINTR "Don't bother. There's nothing inside anyway." 8 | ?ELS9: EQUAL? PRSA,V?PUT \FALSE 9 | PRINTR "A waste of time. You'd probably forget where you put it." 10 | 11 | 12 | .FUNCT EGG-KNOB-STATE,KNOB,VER?=0 13 | ZERO? VER? \?THN6 14 | FSET? KNOB,OPENBIT \FALSE 15 | ?THN6: PRINTI "The " 16 | PRINTD KNOB 17 | FSET? KNOB,OPENBIT \?ELS12 18 | PRINTI " has been " 19 | JUMP ?CND10 20 | ?ELS12: ZERO? VER? /?CND10 21 | PRINTI " has not yet been " 22 | ?CND10: GETP KNOB,P?TEXT 23 | PRINT STACK 24 | PRINTI ". " 25 | RTRUE 26 | 27 | 28 | .FUNCT EGG-F 29 | EQUAL? PRSA,V?LOOK-INSIDE \?ELS5 30 | FSET? EGG,OPENBIT /?ELS5 31 | PRINTR "The egg isn't open!" 32 | ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS11 33 | PRINTI "This ornamented egg is both beautiful and complex. The egg itself is mother-of-pearl, but decorated with delicate gold traceries inlaid with jewels and other precious metals. On the surface are a lapis handle, an emerald knob, a silver slide, a golden crank, and a diamond-studded button carefully and unobtrusively imbedded in the decorations. These various protuberances are likely to be connected with some machinery inside." 34 | CRLF 35 | CALL EGG-KNOB-STATE,EGG-KNOB-1 36 | CALL EGG-KNOB-STATE,EGG-KNOB-2 37 | CALL EGG-KNOB-STATE,EGG-KNOB-3 38 | CALL EGG-KNOB-STATE,EGG-KNOB-4 39 | CALL EGG-KNOB-STATE,EGG-KNOB-5 40 | PRINTI "The " 41 | PRINTD PRSO 42 | PRINTI " is " 43 | FSET? PRSO,OPENBIT \?ELS18 44 | PRINTI "open." 45 | JUMP ?CND16 46 | ?ELS18: PRINTI "closed." 47 | ?CND16: CRLF 48 | RTRUE 49 | ?ELS11: EQUAL? PRSA,V?PUT \?ELS26 50 | EQUAL? PRSI,EGG \?ELS26 51 | PRINTI "You can't put the " 52 | PRINTD PRSO 53 | PRINTR " inside the egg without damaging it." 54 | ?ELS26: EQUAL? PRSA,V?REZROV \?ELS32 55 | FSET? EGG,OPENBIT /?ELS32 56 | FSET EGG,OPENBIT 57 | ADD SCORE,EGG-POINT >SCORE 58 | SET 'EGG-POINT,0 59 | PRINTI "The egg seems to come to life and each piece slides effortlessly in the correct pattern. The egg opens" 60 | IN? DAMAGED-SCROLL,EGG \?CND37 61 | FCLEAR DAMAGED-SCROLL,INVISIBLE 62 | CALL THIS-IS-IT,DAMAGED-SCROLL 63 | PRINTI ", revealing a shredded scroll inside, nestled among a profusion of shredders, knives, and other sharp instruments, cunningly connected to the knobs, buttons, etc. on the outside" 64 | ?CND37: PRINTR "." 65 | ?ELS32: EQUAL? PRSA,V?LOOK-INSIDE \?ELS45 66 | FSET? PRSO,OPENBIT \?ELS45 67 | FIRST? PRSO /?ELS45 68 | PRINTR "On the inside of the egg are many complex cutting devices." 69 | ?ELS45: EQUAL? PRSA,V?OPEN \?ELS51 70 | FSET? EGG,OPENBIT /?ELS51 71 | PRINTR "That seems to be the problem." 72 | ?ELS51: EQUAL? PRSA,V?CLOSE \?ELS57 73 | FSET? EGG,OPENBIT \?ELS57 74 | FCLEAR EGG-KNOB-1,OPENBIT 75 | FCLEAR EGG-KNOB-2,OPENBIT 76 | FCLEAR EGG-KNOB-3,OPENBIT 77 | FCLEAR EGG-KNOB-4,OPENBIT 78 | FCLEAR EGG-KNOB-5,OPENBIT 79 | PRINTI "As you close the egg, all of the pieces slide back into place, locking it shut." 80 | CRLF 81 | FCLEAR EGG,OPENBIT 82 | RTRUE 83 | ?ELS57: EQUAL? PRSA,V?MUNG \FALSE 84 | PRINTI "The egg is smashed into little tiny pieces by the force of your blow." 85 | IN? DAMAGED-SCROLL,EGG \?CND66 86 | FCLEAR DAMAGED-SCROLL,INVISIBLE 87 | MOVE DAMAGED-SCROLL,SCRAMBLED-EGG 88 | PRINTI " Inside the now broken egg are the remains of a small spell scroll, damaged beyond hope of learning." 89 | ?CND66: CRLF 90 | LOC EGG 91 | MOVE SCRAMBLED-EGG,STACK 92 | REMOVE EGG 93 | RTRUE 94 | 95 | 96 | .FUNCT EGG-KNOB-F 97 | EQUAL? PRSA,V?TURN,V?OPEN,V?REZROV /?THN6 98 | EQUAL? PRSA,V?PUSH,V?MOVE \?ELS5 99 | ?THN6: FSET? PRSO,OPENBIT \?ELS12 100 | PRINTR "It's already in the open position." 101 | ?ELS12: FSET PRSO,OPENBIT 102 | EQUAL? PRSA,V?REZROV \?ELS21 103 | ADD SCORE,EGG-POINT >SCORE 104 | SET 'EGG-POINT,0 105 | PRINTI "The " 106 | PRINTD PRSO 107 | PRINTR " vibrates, moving this way and that, becoming almost plastic, and finally moves to the open position." 108 | ?ELS21: FSET? EGG,OPENBIT \?ELS25 109 | PRINTI "The " 110 | PRINTD PRSO 111 | PRINTI " moves, and a cunning and diabolically engineered set of gears, knives, grinders, and slicers moves across the interior of the egg." 112 | CRLF 113 | IN? DAMAGED-SCROLL,EGG \TRUE 114 | PRINTR "The scroll resting there is now shredded beyond recognition." 115 | ?ELS25: PRINTI "The " 116 | PRINTD PRSO 117 | PRINTI " moves to the open position, after some resistance and a few odd noises from some machinery which resides inside the egg." 118 | CRLF 119 | FSET? EGG-KNOB-1,OPENBIT \TRUE 120 | FSET? EGG-KNOB-2,OPENBIT \TRUE 121 | FSET? EGG-KNOB-3,OPENBIT \TRUE 122 | FSET? EGG-KNOB-4,OPENBIT \TRUE 123 | FSET? EGG-KNOB-5,OPENBIT \TRUE 124 | ADD SCORE,EGG-POINT >SCORE 125 | SET 'EGG-POINT,0 126 | FSET EGG,OPENBIT 127 | PRINTI "The egg falls open" 128 | IN? DAMAGED-SCROLL,EGG \?CND44 129 | FCLEAR DAMAGED-SCROLL,INVISIBLE 130 | CALL THIS-IS-IT,DAMAGED-SCROLL 131 | PRINTI ", revealing a shredded scroll inside" 132 | ?CND44: PRINTR "." 133 | ?ELS5: EQUAL? PRSA,V?TAKE \?ELS52 134 | PRINTI "The " 135 | PRINTD PRSO 136 | PRINTR " is an integral part of the egg and thus cannot be taken." 137 | ?ELS52: EQUAL? PRSA,V?EXAMINE \?ELS56 138 | CALL EGG-KNOB-STATE,PRSO,TRUE-VALUE 139 | CRLF 140 | RTRUE 141 | ?ELS56: EQUAL? PRSA,V?CLOSE \?ELS58 142 | FSET? PRSO,OPENBIT \?ELS63 143 | PRINTI "The " 144 | PRINTD PRSO 145 | PRINTI " closes easily, but more noises issue from the interior." 146 | CRLF 147 | FCLEAR PRSO,OPENBIT 148 | RTRUE 149 | ?ELS63: PRINTR "It's already closed." 150 | ?ELS58: EQUAL? PRSA,V?MUNG \FALSE 151 | CALL PERFORM,V?MUNG,EGG 152 | RTRUE 153 | 154 | 155 | .FUNCT SCRAMBLED-EGG-F,L,F 156 | LOC SCRAMBLED-EGG >L 157 | EQUAL? PRSA,V?KREBF \FALSE 158 | FIRST? SCRAMBLED-EGG >F \?CND6 159 | MOVE F,EGG 160 | ?CND6: CALL THIS-IS-IT,EGG 161 | REMOVE SCRAMBLED-EGG 162 | MOVE EGG,L 163 | PRINTR "The egg is returned to its former pristine beauty!" 164 | 165 | 166 | .FUNCT DAMAGED-SCROLL-F,L 167 | LOC DAMAGED-SCROLL >L 168 | EQUAL? PRSA,V?KREBF \FALSE 169 | REMOVE DAMAGED-SCROLL 170 | MOVE SUMMON-SCROLL,L 171 | CALL THIS-IS-IT,SUMMON-SCROLL 172 | ADD SCORE,REPAIR-POINT >SCORE 173 | SET 'REPAIR-POINT,0 174 | PRINTR "The scroll reforms, its slices and cuts rejoining, until there is a whole scroll, somewhat faded, in its place!" 175 | 176 | .ENDI 177 | -------------------------------------------------------------------------------- /egg.zil: -------------------------------------------------------------------------------- 1 | "EGG for 2 | ENCHANTER 3 | Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | ;"Where, if the player messes up, he gets it all over his face." 7 | 8 | 21 | 22 | 29 | 30 | 32 | ) 33 | ( 34 | ) 35 | ( 36 | )>> 38 | 39 | 51 | 52 | 60 | 61 | 69 | 70 | 78 | 79 | 87 | 88 | 96 | 97 | )) 98 | > 99 | 100 | 101 | ) 102 | (.VER? 103 | )> 104 | ". ">)>> 105 | 106 | >> 108 | ) 109 | ( 110 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | ) 124 | (ELSE )> 125 | 126 | ) 127 | ( <==? ,PRSI ,EGG>> 128 | ) 130 | ( >> 131 | 132 | > 133 | 134 | 137 | 138 | 139 | 140 | )> 143 | ) 144 | ( 145 | 146 | >> 147 | ) 149 | ( >> 150 | ) 152 | ( > 153 | 154 | 155 | 156 | 157 | 158 | 161 | ) 162 | ( 163 | 165 | 166 | 167 | 168 | )> 171 | 172 | > 173 | )>> 174 | 175 | 177 | 178 | ) 179 | (ELSE 180 | 181 | 182 | > 183 | 184 | ) 187 | ( 188 | 192 | 193 | )> 195 | ) 196 | (ELSE 197 | 200 | 201 | 202 | 203 | 204 | > 205 | > 206 | 207 | 208 | 209 | 210 | 211 | 212 | )> 214 | )> 215 | )>)>) 216 | ( 217 | ) 219 | ( 220 | 221 | ) 222 | ( 223 | 224 | 226 | ) 227 | (ELSE 228 | )>) 229 | ( 230 | 231 | )>> 232 | 233 | 240 | 241 | ) F) 242 | 243 | > 244 | )> 245 | 246 | 247 | 248 | )>> 250 | 251 | 261 | 262 | )) 263 | 264 | 265 | 266 | 267 | > 268 | 269 | )>> -------------------------------------------------------------------------------- /ench.br: -------------------------------------------------------------------------------- 1 | Fizbar's Review Guide for the Enchanter Guild Exam 2 | -------------------------------------------------- 3 | For the young Enchanter just graduated from Thaumaturgy School, the 4 | prospect of facing the Enchanter's Guild Exam is a daunting one. Given 5 | only two weeks after the close of the grueling academic year, the Exam 6 | puts fear even into those novice spellcasters who have watched as their 7 | closest friends were turned into insects and have been transformed, 8 | albeit briefly, into bats. 9 | 10 | For you, the magic users of tomorrow, we at Fizbar's have created the 11 | definitive review guide for the Guild Exam, including a sample exam with 12 | questions culled from actual exams from years past. With this Guide in 13 | hand, the keys to a bright future in Enchanting will be yours! Good 14 | luck! 15 | 16 | Chapter I: Spell Books 17 | ---------------------- 18 | If there is one thing a novice Enchanter should not be without, it's 19 | his spell book. In it are inscribed all of the spells which he has 20 | mastered. The GNUSTO spell is used to inscribe newly learned spells into 21 | the book, and for this reason it is prudent to purchase a spell book 22 | which comes with the GNUSTO spell included, since factory-installed 23 | GNUSTO has been shown be more reliable than even the more expensive GNUSTOs 24 | when purchased separately. 25 | 26 | Chapter II: Spell Scrolls 27 | ------------------------- 28 | Spell scrolls are powerful devices which contain 29 | 30 | Chapter III: Common Spells 31 | -------------------------- 32 | 33 | Chapter IV: Uncommon Spells 34 | --------------------------- 35 | 36 | Chapter V: Non-existent Spells 37 | ------------------------------ 38 | 39 | Multiple Choice: 40 | ---------------- 41 | The FREMB spell will not work when which of the following is present? 42 | 43 | a) Tuna Fish 44 | b) Antharians 45 | c) Granola 46 | d) Your Great-aunt Zelbo 47 | e) All of the above 48 | 49 | Which of the following is not allowed by Thaumaturgical law? 50 | 51 | a) FROTZing unripe fruits 52 | b) SPLEEBing your neighbor's wife 53 | c) NITFOLing brogmoids 54 | d) FROOing on alternate Wednesdays 55 | e) No less than 2 of the above 56 | 57 | The first BLORB spell was cast in the city of: 58 | 59 | a) Splatzburg 60 | b) McKeesport 61 | c) Fromage 62 | d) Izyukville 63 | 64 | Which of the following spells is not concerned with death? 65 | 66 | a) OZMOO 67 | b) GASPAR 68 | c) LEMING 69 | d) MORBO 70 | e) LIPTON 71 | 72 | Problem Solving: 73 | ---------------- 74 | You hear a noise and turn around only to see a pack of lurking grues. 75 | You should immediately: 76 | 77 | a) FROTZ the grues 78 | b) LEMING your hat 79 | c) AIMFIZ your best friend 80 | d) none of the above 81 | 82 | Answer: D. This is a trick question. If you had paid attention at all 83 | in Beasts 201 you would know that grues have never been seen because 84 | of their fear of light. Clearly, you could never be in this situation. 85 | 86 | Your pet dragon has been hit by a flying carpet and is running out of 87 | steam. Your best bet is to: 88 | 89 | a) FROTZ the dragon 90 | b) KREBF the dragon 91 | c) QUELBO the dragon 92 | d) ZIFMIA the undertaker 93 | 94 | Answer: C. FROTZing the dragon is fine when your light has gone out, but 95 | that's another problem. KREBF only repairs WILFULL damage, not 96 | accidental damage. QUELBO, which repairs CARPET-RELATED damage, will 97 | do the trick, making it unnecessary to ZIFMIA the undertaker. It can 98 | also be used to remove the unsightly stain on the carpet caused by 99 | the accident. 100 | 101 | On a windy day, your hat is blown off your head and straight toward a 102 | cliff. You should: 103 | 104 | a) ZIFMIA the hat 105 | b) FROTZ the cliff 106 | c) YOMIN the hat 107 | d) FORGET the hat 108 | 109 | Answer: D. ZIFMIA can only be used on animate objects, which is not the 110 | case unless you had ??'ed the hat first. BLORB, although making the cliff 111 | more noticable, will do nothing for the hat. YOMIN will probe the hat's 112 | mind as it plummets over the cliff. FORGET, of course, is the 'retrieve 113 | lost haberdashery' spell and is perfect on such occasions. 114 | 115 | Analogies: 116 | ---------- 117 | CLEESH : NEWT as BLORB : ??? 118 | 119 | a) Non-entity 120 | b) Cheesecake 121 | c) Circle of Enchanters 122 | d) Floor Waxer 123 | 124 | NITFOL : ANIMAL as QUOBIX : ??? 125 | 126 | a) Vegetable 127 | b) Mineral 128 | c) Soybean 129 | d) Magic Wand 130 | 131 | GNUSTO : SPELL BOOK as CRAYON : ??? 132 | 133 | a) Coloring Book 134 | b) -------------------------------------------------------------------------------- /enchanter.pre: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/historicalsource/enchanter/472c3b938010e0beb54189284e35ab9ac1bba25e/enchanter.pre -------------------------------------------------------------------------------- /enchanter.pur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/historicalsource/enchanter/472c3b938010e0beb54189284e35ab9ac1bba25e/enchanter.pur -------------------------------------------------------------------------------- /enchanter.txt: -------------------------------------------------------------------------------- 1 | Enchanter 2 | --------- 3 | 4 | Introduction 5 | 6 | "Enchanter" is a new adventure game in the Zork tradition, 7 | but in a different setting and with a different overall 8 | philosophy. The emphasis in Zork was on treasure and 9 | fighting, but in Enchanter the emphasis is on magic. 10 | 11 | This document describes the game as currently envisioned. 12 | Comments are welcome; send them to Dave (PDL) and Marc 13 | (BLANK). 14 | 15 | General Comments 16 | 17 | The viewpoint character is a low-level magician. He has a 18 | few abilities represented by spells in his spell book. The 19 | goal of the game is two-fold. First, to become a better 20 | magician. Second, to defeat an evil magician who is taking 21 | over the dungeon, repairing the damage he has done. 22 | 23 | The Milieu 24 | 25 | The dungeon is deteriorating, from the point of view of 26 | anyone reasonable (such as you, we hope). Rooms are 27 | darkening, passages choking off (via magic and rockfalls), 28 | monsters are being released to prowl the halls. 29 | 30 | The Warlock 31 | 32 | The evil magician is "the Warlock." He just recently moved 33 | into the neighborhood and began taking it over, and you were 34 | sent by the Council to clear him out. He is much too much 35 | of a wizard for you to take on directly until the end of the 36 | game, and if you try (which should be possible), you get 37 | fried for your trouble. The Warlock is possibly also the 38 | priest who sacrifices you in the Temple scene. The 39 | Warlock's Tower (which is nonetheless underground) is at the 40 | top (bottom?) of the Endless Stair, and guarded by nasty 41 | creatures with nasty sharp teeth, etc. They are probably 42 | evilly magicked bunny rabbits. 43 | 44 | The Adventurer 45 | 46 | The Adventurer may come to your assistance after you magic 47 | him over from the other side of the mirror. He is from the 48 | Zork world, effectively, and comes equipped with an Elvish 49 | sword and various other paraphenalia. He will be turned 50 | against you by the Warlock at some point and have to be made 51 | friendly again. He will be needed to perform some task 52 | which is too physical for a cerebral type such as you. 53 | While he is turned against you he is like the thief in Zork, 54 | and may even attack you. 55 | 56 | Monsters 57 | 58 | There are lots of nasty, sharp-toothed creatures wandering 59 | around. Eventually, you can avoid them via "Protection from 60 | Evil." If you don't, you will get destroyed pretty quickly, 61 | or perhaps captured by the bad guys for sacrifice to their 62 | even nastier dieties. 63 | 64 | Spells 65 | 66 | Magic plays a big part in this game. There are several 67 | magical objects, magic spells (which you learn as you go 68 | along), and your spell-book, which is all-important. See 69 | "Spells, Detail" below for more on spells. 70 | 71 | The ultimate action in the game is going to be to say some 72 | number of spells sequentially at the Warlock, which will 73 | banish him and restore the dungeon. 74 | 75 | Some spells (English names): 76 | 77 | *Light (makes a light wherever the caster goes) 78 | Open (opens something closed; a passage, a box...) 79 | Resurrect (restores something dead to life) 80 | Charm (makes someone friendly to you) 81 | *Write Magic (allows you to copy a spell into book) 82 | Fly (lets you fly around) 83 | Haste (makes things go fast) 84 | *Talk to Animals (lets you talk to turtle) 85 | 86 | and others. * marks spells you have at the beginning. 87 | 88 | Events/Problems 89 | 90 | Darkness 91 | 92 | As the game begins, you are in total darkness, having just 93 | entered the underground (perhaps you were teleported there 94 | by the Council). You have only your spell book. 95 | Fortunately, the words written in such books glow in the 96 | dark, so if you open the book you can read the spells you 97 | have, one of which is "Light". 98 | 99 | Sacrifice 100 | 101 | This is probably the only overt reference to the Zork 102 | trilogy, as it is based on the Viewing Table scene in Zork 103 | 3. You are captured by the followers of the Warlock and 104 | dragged to the Temple, where you are sacrificed in a rite 105 | horrible and bloody. You are left lying on the altar, the 106 | magical sacrificial knife stuck in your chest. If you had 107 | the foresight to cast a "cheat death" beforehand, you revive 108 | a few moves later. 109 | 110 | Gordian Knot 111 | 112 | An ornate box is wrapped securely in a magic rope which you 113 | cannot cut or untie. In fact, if you try to untie it, it 114 | reties the next move. Like the original, this knot must be 115 | cut, but with a magical blade (it's a magical rope, after 116 | all). The blade is the sacrificial knife from the Temple 117 | scene. The prize here is (naturally enough) the "Open" 118 | spell. 119 | 120 | Endless Stair 121 | 122 | The entrance to the Warlock's Tower is an infinite stair. 123 | It is literally infinite, in that you can go up or down it 124 | any number of times (keep a count and a table of objects and 125 | locations in case twit drops things). Now, it isn't really 126 | infinite, it's only an illusion, and by casting that "Dispel 127 | Illusion," you discover it's actually only a round room 128 | which you have been marching around in for hours, and has an 129 | exit opposite the entrance. 130 | 131 | Malleable Maze 132 | 133 | There is an area of about ten rooms in a traditional Zork 134 | maze configuration. There is a (magic?) map of this area 135 | with none of the connections shown, only the rooms. As you 136 | roam about in the maze, the connections appear. 137 | 138 | Interestingly enough, there is one room you can't get to. 139 | Fortunately, there is also a (magic?) pencil which you can 140 | use to draw in connections in this area. If you use it to 141 | draw the connection to the final room, you can retrieve the 142 | scroll contained therein, but also disturb the monster which 143 | guards it. 144 | 145 | The monster chases you and can catch you if you don't erase 146 | an appropriate connection or two, trapping him. 147 | 148 | The map and pencil can be used to vary the maze in any way 149 | you choose, erasing and drawing passages. Perhaps the maze 150 | should even be generated randomly in each game. It would be 151 | represented by ten tables of eight elements (or ten, if we 152 | include up and down as directions). You would draw by 153 | saying "Connect Red Room to Blue Room," and erase by saying 154 | "Disconnect Red Room from Blue Room." 155 | 156 | Sleep 157 | 158 | "Sleep" is both a spell and something you must do from time 159 | to time. By sleeping, you recover the energy used to cast 160 | spells and can rememorize spells. Also, you get a vision in 161 | a dream that either gives you a spell or a clue to solving 162 | one of the puzzles. This could even be a "Hint" facility if 163 | we wanted it to be. 164 | 165 | Purloined Letter 166 | 167 | This is the problem the silly adventurer is useful for. 168 | There is a huge door, decorated with magical runes and 169 | obvious enormously charged with power. It might even say 170 | something on it like "Magician, Keep Out!" If you touch it, 171 | you get seriously frotzed, and "Open" fizzles against it. 172 | This door is warded to the hilt. However, if you ask the 173 | adventurer to open it, he has no trouble, not being a 174 | magician. In fact, he doesn't even see it as a formidable 175 | door, just a random dungeon door. If you ask him, he will 176 | tell you. "Dispel Illusion" will reveal this, and waste the 177 | spell. 178 | 179 | Rainbow Turtle 180 | 181 | This huge, brightly decorated creature wanders around on the 182 | beach. See "Gears" for more. 183 | 184 | Gears 185 | 186 | Huge grinding gears and pounding machinery fill a certain 187 | room. Things are being thrown around in here, all the time, 188 | and if you try to get across the room to get the spell 189 | scroll clearly visible in an alcove, you are speared or 190 | crushed by the pounding machinery. The turtle is impervious 191 | to the spears but is crushed by the pounding stuff. But, if 192 | you cast "Talk to Animals" on him, you can ask him to 193 | retrieve the scroll. If you cast "Haste" on him, he can get 194 | across between "Crunch!" and "Crunch!", otherwise he is 195 | smushed. 196 | 197 | Faberge Easter Egg 198 | 199 | This is an object of great beauty and enormous complexity. 200 | It has lots of little twisty handles and knobs and stuff in 201 | the filigree (which you see if you examine it). They 202 | presumably open it (and in fact they do, if all turned or 203 | pushed or whatever). However, if the Egg is opened that 204 | way, the stuff these frobs are connected to inside destroy 205 | the scroll contained within. You must use the "Open" spell 206 | to actually open it safety. 207 | 208 | 209 | Spells, Detail 210 | (Theory and Practice of Thaumaturgy) 211 | 212 | [Much of what follows is adapted from "real" D&D.] 213 | 214 | Spells are ways of performing magic. They are either 215 | general in their effect ("Light!") or specific ("Open!"). 216 | Spells have an English name and a one-word nonsense 217 | incantation to invoke them. For example, "Light!" might be 218 | invoked by "Krebf!" and "Open!" by "Frotz the door!" You 219 | may encounter the incantation word without knowing the 220 | associated English for a spell! It is therefore possible to 221 | invoke a spell without knowing for sure what it will do. 222 | 223 | You have a spell book. Your spell book records the spells 224 | you learn. There is a distinction between learning a spell 225 | and memorizing it for use. Only a small number of spells 226 | can actually be memorized at one time, and you must rest and 227 | rememorize them to use them again. A spell written in your 228 | spell book can be memorized again and again. Once you have 229 | memorized a spell, you can use it without having the spell 230 | book around. When you use a spell you have memorized, you 231 | forget it. 232 | 233 | You might have a spell book containing ten spells, but only 234 | be able to memorize five of them at one time. Correct 235 | selection of spells to memorize is one aspect of the game. 236 | If you lose your spell book, you are in deep trouble. 237 | 238 | Newly found spells may be written into your spell book using 239 | the spell "Write magic!" Sometimes a spell is too powerful 240 | to be used more than once, and it appears in the book in a 241 | different form. Such spells disappear from the book after 242 | being used (the book "forgets" them). 243 | 244 | Once a spell is written in your spell book, its English name 245 | becomes apparent. In fact, reading your book probably would 246 | look like: 247 | 248 | Spell Book 249 | 250 | Frotz - perpetual light 251 | Ozmoo - open a closed object 252 | Fweep - charm an unfriendly creature 253 | etc. 254 | 255 | There will be a command ("Spells") which will inventory 256 | those spells you have memorized for this day. It is 257 | possible to memorize a spell more than once; you get "more 258 | than one copy," in some sense. If you try to memorize more 259 | spells than you can remember, you will forget the first one 260 | memorized. 261 | 262 | Magic spells usually have a duration, and sometimes a cycle 263 | time (meaning that you can't do them many times right in a 264 | row). 265 | 266 | In addition to the Spell Book and Spells, there is going to 267 | need to be a sort of crib sheet giving enough detail for the 268 | player to get started. The rationale is that having just 269 | graduated from Wizard School, you are still a little shakey. 270 | 271 | Spell Implementation, Details 272 | 273 | You want syntaxes like: 274 | 275 | . FROTZ! ("Light!") 276 | . FWEEP DOOR! ("Open door!") 277 | Cast spell. 278 | Cast on . 279 | Cast spell on object. 280 | 281 | SPELL is the main synonym, so: 282 | 283 | >Cast spell 284 | Which spell, the foo spell or the bar spell? 285 | 286 | You should also be able to 287 | 288 | >Learn 289 | >Frob ;Where "frob" is "write magic" 290 | >Memorize 291 | >Memorize twice ;Frill? 292 | 293 | I see a "spell" as being the following; 294 | 295 | 302 | 303 | There is also a GLOBAL-FOO-SPELL, which is not put in 304 | GLOBAL-OBJECTS until you first encounter/learn "Foo." 305 | GLOBAL-FOO-SPELL has its ACTION property the same as 306 | FOO-SPELL's, and so all checking is done in the same place. 307 | The command to check your memorized spells can just wander 308 | down the list of all spells and tell you which have 309 | MEMORIZED properties greater than zero. 310 | 311 | 312 | 313 | Other Possible Characters 314 | 315 | Dwarves -- these guys are getting out, and might tell you 316 | about the Warlock and about the Terror if you ask. They 317 | would be comic figures like those in Steve's book. They 318 | might also give you a weapon (which you can't use, being a 319 | magician). 320 | 321 | Cultists -- worshippers of the evil Warlock. They would be 322 | the ones to capture you and take you to the Temple. 323 | 324 | Other Possible Problem Ideas 325 | 326 | ;;This problem is superceded by the Malleable Maze, but is 327 | ;;left here in case we can salvage a smaller problem from 328 | ;;it. 329 | ;; Maze of Glass 330 | 331 | ;;This is a large room divided into small rooms by glass 332 | ;;partitions, some of which are there, some not, to produce a 333 | ;;maze. You must have the "Fly" spell to solve it, because 334 | ;;some of the exits are "Up". There is a spell scroll as a 335 | ;;prize. Implementation is analogous to that of the Chinese 336 | ;;puzzle in Zork 3. Depending on how nasty we want to be, 337 | ;;this could be a 3x3x3 up to a 5x5x5 cube. 338 | 339 | "Coal Chute" - adapt Coal Chute problem from original Zork. 340 | Use magic rope? Gist is that you can hang on for a limited 341 | time and carry a limited weight, and there is an exit in the 342 | middle of the chute. This may be too "Zorkish" for Enchanter. 343 | 344 | 345 | 346 | Summary of Problems 347 | 348 | -Specific Problems- -File- -You Need- 349 | 350 | Darkness "Light" 351 | Sacrifice TEMPLE "Resurrect" 352 | Gordian Knot KNOT Magic Knife 353 | Malleable Maze TERROR Magic Pencil and Map 354 | Adventurer "Summon" and "Charm" 355 | Purloined Letter PURLOINED Adventurer or "Dispel Illusion" 356 | Faberge Easter Egg EGG "Open" 357 | Sleep SLEEP 358 | Gears/Turtle GEARS "Talk to Animals" and "Haste" 359 | Endless Stair STAIR "Dispel Illusion" 360 | Warlock everything 361 | 362 | -General Problems- -File- -You Need- 363 | 364 | Protect Self "Protection from Evil" 365 | Protect Spell Book "Protection from Evil"? 366 | Magic/Learning Spells MAGIC "Write Magic" -------------------------------------------------------------------------------- /enchanter.zil: -------------------------------------------------------------------------------- 1 | "ENCHANTER for 2 | ENCHANTER 3 | (c) Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | 10 | 11 | 12 | 13 | 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 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /gallery.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT GALLERY-A 4 | IN? ADVENTURER,HERE \FALSE 5 | ZERO? PORTRAIT-COMMENT \FALSE 6 | FSET? FLATHEAD-PORTRAIT,INVISIBLE /FALSE 7 | ZERO? ADVENTURER-CHARMED /FALSE 8 | SET 'PORTRAIT-COMMENT,TRUE-VALUE 9 | PRINTR "The adventurer stops and stares at the portraits. ""I've met him!"" he gasps, pointing at the Wizard of Frobozz. He doesn't appear eager to meet him again, though. ""And there's old Flathead! What a sight!"" He glances at the other portraits briefly and then re-checks his map." 10 | 11 | 12 | .FUNCT GALLERY-F,RARG 13 | EQUAL? RARG,M-ENTER \?ELS5 14 | CALL LIT?,HERE,FALSE-VALUE 15 | ZERO? STACK \?ELS5 16 | ZERO? SUPER-BRIEF /?CND8 17 | ZERO? GALLERY-POINT /?CND8 18 | CALL DESCRIBE-PORTRAIT-GALLERY 19 | ?CND8: FCLEAR HERE,TOUCHBIT 20 | RTRUE 21 | ?ELS5: EQUAL? RARG,M-LOOK \FALSE 22 | CALL LIT?,HERE,FALSE-VALUE 23 | ZERO? STACK /?ELS19 24 | ZERO? GALLERY-POINT /?CND20 25 | REMOVE LIGHTED-PORTRAIT 26 | ?CND20: SET 'VISITED-GALLERY?,TRUE-VALUE 27 | PRINTI "The east-west corridor opens into a gallery. The walls are lined with portraits, some of apparently great value. All of the eyes seem to follow you as you pass, and the entire room is subtly disturbing." 28 | CRLF 29 | IN? PORTRAIT-NICHE,GALLERY \FALSE 30 | PRINTR "A small niche can be seen in the wall behind the spot where a painting had been hanging." 31 | ?ELS19: CALL DESCRIBE-PORTRAIT-GALLERY 32 | ZERO? STACK \FALSE 33 | PRINTR "It is pitch black." 34 | 35 | 36 | .FUNCT DESCRIBE-PORTRAIT-GALLERY 37 | IN? ETERNAL-FLAME,PORTRAIT-NICHE \FALSE 38 | FSET? ETERNAL-FLAME,ONBIT \FALSE 39 | ZERO? GALLERY-POINT /?CND8 40 | MOVE LIGHTED-PORTRAIT,HERE 41 | ?CND8: ZERO? VISITED-GALLERY? /?ELS13 42 | PRINTI "An eerie orange glow casts a pale, flickering light on the portrait gallery." 43 | JUMP ?CND11 44 | ?ELS13: SET 'VISITED-GALLERY?,TRUE-VALUE 45 | PRINTI "The east-west corridor opens into a portrait gallery. The gallery is lit by an eerie orange glow." 46 | ?CND11: PRINTR " The eyes of the figures portrayed on the canvases seem to be faintly illuminated and follow your every movement. After a moment, the source of light becomes clear: a single lighted portrait flickers as if a flame were burning behind it." 47 | 48 | 49 | .FUNCT PORTRAITS-F 50 | EQUAL? PRSA,V?MOVE,V?TAKE \?ELS5 51 | PRINTR "The portraits are large and extremely heavy; they can be neither taken nor moved." 52 | ?ELS5: EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-BEHIND \?ELS9 53 | PRINTR "There are hundreds of canvases here; you look behind one or two at random but find nothing of interest." 54 | ?ELS9: EQUAL? PRSA,V?EXAMINE \FALSE 55 | PRINTI "The portraits represent a wide cross-section of races. Elves, gnomes, dwarves, wizards, warlocks, and just plain folk are all here. Some of them are known to you, such as Lord Dimwit Flathead of the Great Underground Empire, depicted here in excessive detail, and the Wizard of Frobozz, shown in a typical pose of anguished bewilderment." 56 | CRLF 57 | FCLEAR FLATHEAD-PORTRAIT,INVISIBLE 58 | FCLEAR FROBOZZ-PORTRAIT,INVISIBLE 59 | RTRUE 60 | 61 | 62 | .FUNCT FLATHEAD-PORTRAIT-F 63 | EQUAL? PRSA,V?ZIFMIA \?ELS5 64 | PRINTR "Poor Flathead, the years have not been kind to him. Just as well, probably." 65 | ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE 66 | PRINTR "This rather dull man stumbled into royalty in the Great Underground Empire, and much to everyone's chagrin. Named by his people Lord Dimwit Flathead the Excessive, he was best known for his outrageousness in style, policy, and engineering. His portrait captures him in the classic pose of imbecility, astride his gaudy throne." 67 | 68 | 69 | .FUNCT FROBOZZ-PORTRAIT-F 70 | EQUAL? PRSA,V?ZIFMIA \?ELS5 71 | PRINTR "The Wizard doesn't seem to respond to the summons. Perhaps he is too busy molesting adventurers in ZORK II." 72 | ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE 73 | PRINTR "The Wizard of Frobozz was a former member of the Circle of Enchanters, but he was removed for forgetfulness bordering on senility. The lively wit of his youth having been replaced by a semisadistic mischievousness coupled with an inability to pronounce words beginning with other than the letter ""F"", he was ""retired"" to a small, unoccupied corner of the Great Underground Empire, hopefully out of harm's way." 74 | 75 | 76 | .FUNCT LIGHTED-PORTRAIT-F 77 | EQUAL? PRSA,V?LOOK-BEHIND \?ELS5 78 | FSET? PRSO,TOUCHBIT /?ELS5 79 | ADD SCORE,GALLERY-POINT >SCORE 80 | SET 'GALLERY-POINT,0 81 | MOVE PORTRAIT-NICHE,HERE 82 | FSET PRSO,TOUCHBIT 83 | PRINTI "Behind the portrait is a small niche. You find that the portrait is much lighter than the others and place it on the ground." 84 | FCLEAR HERE,ONBIT 85 | FIRST? PORTRAIT-NICHE \?CND10 86 | PRINTI " Sitting in the niche is " 87 | CALL PRINT-CONTENTS,PORTRAIT-NICHE 88 | PRINTI "." 89 | ?CND10: CRLF 90 | RTRUE 91 | ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS18 92 | FSET? PRSO,TOUCHBIT /?ELS23 93 | PRINTR "The portrait, of an obscure adventurer, is not notable except for the fact that it is lighted from behind by a flickering orange light." 94 | ?ELS23: PRINTR "The portrait, of some obscure personage carrying a brass lantern and an elvish sword of great antiquity, is mediocre at best." 95 | ?ELS18: EQUAL? PRSA,V?TAKE,V?MOVE \FALSE 96 | FSET? PRSO,TOUCHBIT /FALSE 97 | FCLEAR PRSO,NDESCBIT 98 | FSET PRSO,TOUCHBIT 99 | ADD SCORE,GALLERY-POINT >SCORE 100 | SET 'GALLERY-POINT,0 101 | MOVE PORTRAIT-NICHE,HERE 102 | PRINTI "The portrait is quite light. You remove it from the wall and place it on the ground, revealing a small niche in the wall" 103 | FIRST? PORTRAIT-NICHE \?CND36 104 | PRINTI ", in which sits " 105 | CALL PRINT-CONTENTS,PORTRAIT-NICHE 106 | ?CND36: PRINTR "." 107 | 108 | 109 | .FUNCT PORTRAIT-NICHE-F 110 | EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE 111 | PRINTR "You can't do that." 112 | 113 | 114 | .FUNCT ETERNAL-FLAME-F 115 | EQUAL? PRSA,V?KULCAD,V?GONDAR \?ELS5 116 | PRINTI "The flame flickers for a moment, then goes out." 117 | CRLF 118 | FCLEAR ETERNAL-FLAME,ONBIT 119 | FCLEAR ETERNAL-FLAME,LIGHTBIT 120 | RTRUE 121 | ?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS9 122 | FSET? ETERNAL-FLAME,ONBIT /?ELS9 123 | PRINTR "You can't relight the candles." 124 | ?ELS9: EQUAL? PRSA,V?LAMP-OFF \FALSE 125 | PRINTR "The flame cannot be extinguished, no matter how hard you try." 126 | 127 | .ENDI 128 | -------------------------------------------------------------------------------- /gallery.zil: -------------------------------------------------------------------------------- 1 | "GALLERY for 2 | ENCHANTER 3 | Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | 14 | 15 | > 16 | 17 | 19 | 20 | > 21 | ,ADVENTURER-CHARMED> 22 | 23 | )>> 28 | 29 | 31 | >>> 32 | >> 34 | )> 35 | ) 36 | ( 37 | > 38 | > 39 | )> 40 | 41 | 45 | 46 | )>) 49 | (> 50 | )>)>> 51 | 52 | 54 | > 55 | > 56 | )> 57 | ) 61 | (T 62 | 63 | )> 66 | )>> 71 | 72 | > 73 | 74 | 81 | 82 | 84 | ) 87 | ( 88 | ) 91 | ( 92 | 98 | 99 | 100 | )>> 101 | 102 | 109 | 110 | 112 | ) 115 | ( 116 | )>> 122 | 123 | 130 | 131 | 133 | ) 136 | ( 137 | )>> 144 | 145 | 152 | 153 | >> 155 | > 156 | 157 | 158 | 159 | 162 | ;"Added to make room dark hereafter." 163 | 164 | 165 | 166 | )> 167 | ) 168 | ( 169 | > 170 | ) 173 | (T 174 | )>) 177 | ( 178 | >> 179 | 180 | 181 | > 182 | 183 | 184 | 187 | 188 | 190 | )> 191 | )>> 192 | 193 | 200 | 201 | 203 | )>> 204 | 205 | 212 | 213 | 215 | 217 | 218 | 219 | ) 220 | ( 221 | >> 222 | ) 223 | ( 224 | )>> 226 | -------------------------------------------------------------------------------- /globals.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT NULL-F 4 | RFALSE 5 | 6 | 7 | .FUNCT GROUND-F 8 | EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-ON,V?CLIMB-UP /?THN6 9 | EQUAL? PRSA,V?BOARD \FALSE 10 | ?THN6: PRINTR "You've got better things to do." 11 | 12 | 13 | .FUNCT CORRIDOR-F 14 | EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE 15 | CALL USE-DIRECTIONS 16 | RSTACK 17 | 18 | 19 | .FUNCT WALLS-F 20 | EQUAL? WALLS,PRSO \?ELS5 21 | EQUAL? HERE,NORTH-CELL \?ELS5 22 | CALL PERFORM,PRSA,STONE-WALL 23 | RSTACK 24 | ?ELS5: FSET? HERE,RMUNGBIT \?ELS9 25 | EQUAL? PRSA,V?EXAMINE \?ELS14 26 | PRINTR "The wall is stained and noisome." 27 | ?ELS14: EQUAL? PRSA,V?LISTEN \FALSE 28 | PRINTR "That's noisome, not noisy!" 29 | ?ELS9: EQUAL? PRSA,V?LOOK-INSIDE \FALSE 30 | PRINTR "They're translucent, not transparent!" 31 | 32 | 33 | .FUNCT CRETIN 34 | EQUAL? PRSA,V?ESCAPE \?ELS5 35 | PRINTR "There's no escaping yourself." 36 | ?ELS5: EQUAL? PRSA,V?PUT \?ELS9 37 | EQUAL? PRSO,EGG \?ELS9 38 | PRINTR "If you don't succeed, there will be plenty of egg on your face." 39 | ?ELS9: EQUAL? PRSA,V?BURN \?ELS15 40 | PRINTR "Ouch!" 41 | ?ELS15: EQUAL? PRSA,V?LISTEN \?ELS19 42 | PRINTR "Yes?" 43 | ?ELS19: EQUAL? PRSA,V?ALARM \?ELS23 44 | PRINTR "You are obviously awake already." 45 | ?ELS23: EQUAL? PRSA,V?GUNCHO \?ELS27 46 | PRINTI "You vanish into oblivion where, to the relief of much of the Circle, you will be unable to do much harm." 47 | CRLF 48 | CALL FINISH 49 | RSTACK 50 | ?ELS27: EQUAL? PRSA,V?FROTZ \?ELS31 51 | FSET PLAYER,ONBIT 52 | SET 'ALWAYS-LIT,TRUE-VALUE 53 | PRINTR "You are bathed in a sickly yellow light, bright enough to read by." 54 | ?ELS31: EQUAL? PRSA,V?BLORB \?ELS35 55 | CALL JIGS-UP,STR?48,FALSE-VALUE 56 | RTRUE 57 | ?ELS35: EQUAL? PRSA,V?KULCAD \?ELS37 58 | PRINTR "You seem real enough already." 59 | ?ELS37: EQUAL? PRSA,V?EXAMINE \?ELS41 60 | PRINTR "You are not a pretty sight." 61 | ?ELS41: EQUAL? PRSA,V?GIVE \?ELS45 62 | PRINTR "I think you're a little confused." 63 | ?ELS45: EQUAL? PRSA,V?ATTACK,V?MUNG,V?KILL \?ELS49 64 | PRINTR "You don't need my help to do that!" 65 | ?ELS49: EQUAL? PRSA,V?FIND \?ELS53 66 | PRINTR "You're right here!" 67 | ?ELS53: EQUAL? PRSA,V?CUT \FALSE 68 | EQUAL? PRSI,MAGIC-KNIFE \FALSE 69 | PRINTR "I should think one experience with that knife would be enough. I wouldn't press my luck." 70 | 71 | 72 | .FUNCT WINDOW-F 73 | EQUAL? PRSA,V?LOOK-INSIDE \?ELS5 74 | GRTR? TOD,NIGHTFALL \?ELS10 75 | PRINTR "It's too dark to make out much of anything." 76 | ?ELS10: GETP HERE,P?TEXT 77 | PRINT STACK 78 | CRLF 79 | RTRUE 80 | ?ELS5: EQUAL? PRSA,V?OPEN \?ELS18 81 | PRINTR "You can't open it." 82 | ?ELS18: EQUAL? PRSA,V?CLOSE \FALSE 83 | PRINTR "It already is." 84 | 85 | 86 | .FUNCT SEA-F 87 | EQUAL? HERE,BEACH /?ELS5 88 | PRINTR "The sea is off beyond the beach." 89 | ?ELS5: EQUAL? PRSA,V?THROUGH \?ELS9 90 | PRINTR "You would drown." 91 | ?ELS9: EQUAL? PRSA,V?EXAMINE \FALSE 92 | PRINTR "The sea is very rough. I wouldn't go in." 93 | 94 | 95 | .FUNCT FOREST-F 96 | EQUAL? PRSA,V?THROUGH \FALSE 97 | CALL USE-DIRECTIONS 98 | RSTACK 99 | 100 | 101 | .FUNCT TEMPLE-OBJ-F 102 | EQUAL? HERE,COURTYARD-2,COURTYARD-3 /?THN6 103 | EQUAL? HERE,COURTYARD-4,COURTYARD-7 \FALSE 104 | ?THN6: EQUAL? PRSA,V?THROUGH \?ELS12 105 | CALL GOTO,TEMPLE 106 | RTRUE 107 | ?ELS12: EQUAL? PRSA,V?LISTEN \FALSE 108 | PRINTR "You can hear a howling chant coming from inside the temple." 109 | 110 | 111 | .FUNCT COURTYARD-F 112 | EQUAL? PRSA,V?WALK-AROUND \?ELS5 113 | EQUAL? HERE,INSIDE-GATE /?ELS5 114 | EQUAL? HERE,COURTYARD-7,COURTYARD-6,COURTYARD-4 \?ELS12 115 | CALL DO-WALK,P?WEST 116 | RSTACK 117 | ?ELS12: CALL DO-WALK,P?EAST 118 | RSTACK 119 | ?ELS5: EQUAL? PRSA,V?THROUGH \FALSE 120 | EQUAL? HERE,INSIDE-GATE \FALSE 121 | CALL DO-WALK,P?EAST 122 | RSTACK 123 | 124 | 125 | .FUNCT TOWER-F 126 | EQUAL? PRSA,V?BOARD,V?CLIMB-FOO,V?CLIMB-UP \?ELS5 127 | EQUAL? HERE,PURLOINED-ROOM,SE-TOWER /?THN8 128 | EQUAL? HERE,NW-TOWER,SW-TOWER \?ELS5 129 | ?THN8: CALL DO-WALK,P?UP 130 | RSTACK 131 | ?ELS5: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-DOWN \?ELS11 132 | EQUAL? HERE,JEWEL-ROOM,MAP-ROOM /?THN14 133 | EQUAL? HERE,ENGINE-ROOM,BEDROOM \?ELS11 134 | ?THN14: CALL DO-WALK,P?DOWN 135 | RSTACK 136 | ?ELS11: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE 137 | PRINTR "They are a bit far away to climb from here, and anyway the walls would be impossible to scale." 138 | 139 | 140 | .FUNCT JUG-F,E?=0 141 | EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS3 142 | PRINTR "The jug has no cover. It can't be opened or closed." 143 | ?ELS3: EQUAL? PRSA,V?MUNG,V?THROW \?ELS7 144 | REMOVE PRSO 145 | SET 'E?,TRUE-VALUE 146 | PRINTI "The jug shatters into innumerable pieces." 147 | CRLF 148 | JUMP ?CND1 149 | ?ELS7: EQUAL? PRSA,V?SHAKE \?CND1 150 | FSET? PRSO,OPENBIT \?CND1 151 | SET 'E?,TRUE-VALUE 152 | ?CND1: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS19 153 | PRINTI "The jug is " 154 | IN? WATER,PRSO /?ELS26 155 | PRINTR "empty." 156 | ?ELS26: GETP WATER,P?SIZE 157 | GET JUG-AMTS,STACK 158 | PRINT STACK 159 | CRLF 160 | RTRUE 161 | ?ELS19: ZERO? E? /FALSE 162 | IN? WATER,PRSO \TRUE 163 | PRINTI "The water spills to the ground and evaporates." 164 | CRLF 165 | REMOVE WATER 166 | RTRUE 167 | 168 | 169 | .FUNCT WATER-FUNCTION,AV,W,PI? 170 | EQUAL? PRSA,V?EXAMINE \?ELS3 171 | EQUAL? PRSO,GLOBAL-WATER \?ELS3 172 | EQUAL? HERE,BEACH \?ELS8 173 | PRINTR "The ocean streches out as far as the eye can see to the south and east." 174 | ?ELS8: EQUAL? HERE,FOREST-2 \?ELS12 175 | PRINTR "The water is dark and murky, and lily pads cover most of the surface. I wouldn't drink the stuff." 176 | ?ELS12: PRINTR "The brook runs slowly through thick vegetation." 177 | ?ELS3: EQUAL? PRSA,V?THROUGH \?ELS20 178 | EQUAL? PRSO,GLOBAL-WATER \?ELS20 179 | PRINTR "You have better things to do with your time than go swimming." 180 | ?ELS20: EQUAL? PRSA,V?DRINK-FROM \?ELS26 181 | EQUAL? PRSO,GLOBAL-WATER \?ELS26 182 | CALL V-DRINK-FROM 183 | RTRUE 184 | ?ELS26: EQUAL? PRSA,V?SGIVE /FALSE 185 | EQUAL? PRSA,V?THROUGH \?ELS32 186 | PRINTR "Swimming here is fraught with peril." 187 | ?ELS32: EQUAL? PRSA,V?FILL \?ELS36 188 | SET 'W,PRSI 189 | SET 'PRSA,V?PUT 190 | SET 'PRSI,PRSO 191 | SET 'PRSO,W 192 | SET 'PI?,FALSE-VALUE 193 | JUMP ?CND1 194 | ?ELS36: EQUAL? PRSO,GLOBAL-WATER,WATER \?ELS38 195 | SET 'W,PRSO 196 | SET 'PI?,FALSE-VALUE 197 | JUMP ?CND1 198 | ?ELS38: SET 'W,PRSI 199 | SET 'PI?,TRUE-VALUE 200 | ?CND1: EQUAL? W,GLOBAL-WATER \?CND41 201 | EQUAL? PRSA,V?DRINK /FALSE 202 | SET 'W,WATER 203 | EQUAL? PRSA,V?PUT,V?TAKE \?CND41 204 | REMOVE W 205 | ?CND41: ZERO? PI? /?ELS52 206 | SET 'PRSI,W 207 | JUMP ?CND50 208 | ?ELS52: SET 'PRSO,W 209 | ?CND50: LOC WINNER >AV 210 | EQUAL? PRSA,V?PUT,V?TAKE \?ELS60 211 | ZERO? PI? \?ELS60 212 | ZERO? PRSI /?ELS67 213 | EQUAL? PRSI,JUG /?ELS67 214 | EQUAL? PRSI,SEA,GLOBAL-WATER \?ELS74 215 | PRINTI "Ok, but there was plenty enough there already." 216 | CRLF 217 | REMOVE W 218 | RTRUE 219 | ?ELS74: GETP PRSI,P?CAPACITY 220 | ZERO? STACK /?ELS78 221 | PRINTI "The water leaks out of the " 222 | PRINTD PRSI 223 | PRINTI " and evaporates immediately." 224 | CRLF 225 | REMOVE W 226 | RTRUE 227 | ?ELS78: PRINTI "The " 228 | PRINTD PRSI 229 | PRINTR " isn't a very good container." 230 | ?ELS67: IN? JUG,WINNER \?ELS86 231 | FSET? JUG,OPENBIT /?ELS91 232 | PRINTR "The jug is closed." 233 | ?ELS91: CALL GLOBAL-IN?,GLOBAL-WATER,HERE 234 | ZERO? STACK /?ELS95 235 | IN? WATER,JUG \?THN101 236 | GETP WATER,P?SIZE 237 | LESS? STACK,4 \?ELS100 238 | ?THN101: MOVE WATER,JUG 239 | PUTP WATER,P?SIZE,4 240 | PRINTI "The jug is now full of " 241 | EQUAL? HERE,BEACH \?ELS107 242 | FSET WATER,RMUNGBIT 243 | PRINTI "sea" 244 | JUMP ?CND105 245 | ?ELS107: EQUAL? HERE,FOREST-2 \?ELS111 246 | FSET WATER,RMUNGBIT 247 | PRINTI "foul algae-infested " 248 | JUMP ?CND105 249 | ?ELS111: FCLEAR WATER,RMUNGBIT 250 | ?CND105: PRINTR "water." 251 | ?ELS100: PRINTR "The jug is already full." 252 | ?ELS95: PRINTR "The only water here is in the jug." 253 | ?ELS86: IN? PRSO,JUG \?ELS127 254 | EQUAL? PRSA,V?TAKE \?ELS127 255 | ZERO? PRSI \?ELS127 256 | SET 'PRSO,JUG 257 | CALL ITAKE 258 | SET 'PRSO,W 259 | RETURN PRSO 260 | ?ELS127: PRINTR "The water slips through your fingers." 261 | ?ELS60: ZERO? PI? /?ELS135 262 | PRINTR "Nice try." 263 | ?ELS135: EQUAL? PRSA,V?GIVE,V?DROP \?ELS140 264 | REMOVE WATER 265 | EQUAL? PRSI,SEA,GLOBAL-WATER \?ELS145 266 | PRINTR "Ok, but there was plenty enough there already." 267 | ?ELS145: PRINTR "The water spills to the ground and evaporates." 268 | ?ELS140: EQUAL? PRSA,V?POUR-ON \?ELS153 269 | REMOVE WATER 270 | PRINTI "The water cascades off the " 271 | PRINTD PRSI 272 | PRINTR " and onto the ground." 273 | ?ELS153: EQUAL? PRSA,V?THROW \FALSE 274 | PRINTI "The water splashes over everything and evaporates." 275 | CRLF 276 | REMOVE WATER 277 | RTRUE 278 | 279 | 280 | .FUNCT SKY-F,EL 281 | FSET? HERE,ONBIT \?ELS5 282 | EQUAL? PRSA,V?EXAMINE \?ELS5 283 | DIV TOD,10 >EL 284 | PRINTI "It would be " 285 | GET TIME-TABLE,EL 286 | PRINT STACK 287 | PRINTI " now." 288 | GRTR? TOD,NIGHTFALL \?CND10 289 | PRINTI " Bright stars shine down on the earth." 290 | ?CND10: CRLF 291 | RTRUE 292 | ?ELS5: PRINTR "That would be difficult from here." 293 | 294 | 295 | .FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ 296 | EQUAL? PRSO,NOT-HERE-OBJECT \?ELS3 297 | EQUAL? PRSI,NOT-HERE-OBJECT \?ELS3 298 | PRINTR "Those things aren't here!" 299 | ?ELS3: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS9 300 | SET 'TBL,P-PRSO 301 | JUMP ?CND1 302 | ?ELS9: SET 'TBL,P-PRSI 303 | SET 'PRSO?,FALSE-VALUE 304 | ?CND1: ZERO? PRSO? /?CND12 305 | EQUAL? PRSA,V?ZIFMIA /?THN19 306 | EQUAL? PRSA,V?CAST \?CND12 307 | EQUAL? PRSO,SUMMON-SPELL \?CND12 308 | ?THN19: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ 309 | ZERO? OBJ /FALSE 310 | EQUAL? OBJ,NOT-HERE-OBJECT \TRUE 311 | ?CND12: EQUAL? WINNER,PLAYER \?ELS33 312 | PRINTI "You can't see any " 313 | CALL NOT-HERE-PRINT,PRSO? 314 | PRINTI " here!" 315 | CRLF 316 | JUMP ?CND31 317 | ?ELS33: PRINTI "The " 318 | PRINTD WINNER 319 | PRINTI " seems confused. ""I don't see any " 320 | CALL NOT-HERE-PRINT,PRSO? 321 | PRINTI " here!""" 322 | CRLF 323 | ?CND31: SET 'P-CONT,FALSE-VALUE 324 | SET 'QUOTE-FLAG,FALSE-VALUE 325 | RTRUE 326 | 327 | 328 | .FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ 329 | CALL MOBY-FIND,TBL >M-F 330 | ZERO? DEBUG /?CND1 331 | PRINTI "[Moby-found " 332 | PRINTN M-F 333 | PRINTI " objects" 334 | PRINTI "]" 335 | CRLF 336 | ?CND1: GRTR? M-F,1 \?CND7 337 | GET TBL,1 338 | GETP STACK,P?GLOBAL >OBJ 339 | ZERO? OBJ /?CND7 340 | SET 'M-F,1 341 | SET 'P-MOBY-FOUND,OBJ 342 | ?CND7: EQUAL? 1,M-F \?ELS16 343 | ZERO? DEBUG /?CND17 344 | PRINTI "[Namely: " 345 | PRINTD P-MOBY-FOUND 346 | PRINTI "]" 347 | CRLF 348 | ?CND17: ZERO? PRSO? /?ELS25 349 | SET 'PRSO,P-MOBY-FOUND 350 | RFALSE 351 | ?ELS25: SET 'PRSI,P-MOBY-FOUND 352 | RFALSE 353 | ?ELS16: ZERO? PRSO? \?ELS30 354 | PRINTI "You wouldn't find any " 355 | CALL NOT-HERE-PRINT,PRSO? 356 | PRINTR " there." 357 | ?ELS30: RETURN NOT-HERE-OBJECT 358 | 359 | 360 | .FUNCT GLOBAL-NOT-HERE-PRINT,OBJ 361 | SET 'P-CONT,FALSE-VALUE 362 | SET 'QUOTE-FLAG,FALSE-VALUE 363 | PRINTI "You can't see" 364 | EQUAL? OBJ,GLOBAL-KRILL /?CND3 365 | PRINTI " any" 366 | ?CND3: EQUAL? OBJ,PRSO \?ELS10 367 | CALL PRSO-PRINT 368 | JUMP ?CND8 369 | ?ELS10: CALL PRSI-PRINT 370 | ?CND8: PRINTR " here." 371 | 372 | 373 | .FUNCT NOT-HERE-PRINT,PRSO?,?TMP1 374 | ZERO? P-OFLAG /?ELS5 375 | ZERO? P-XADJ /?CND7 376 | PRINTB P-XADJN 377 | ?CND7: ZERO? P-XNAM /FALSE 378 | PRINTB P-XNAM 379 | RTRUE 380 | ?ELS5: ZERO? PRSO? /?ELS18 381 | GET P-ITBL,P-NC1 >?TMP1 382 | GET P-ITBL,P-NC1L 383 | CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE 384 | RSTACK 385 | ?ELS18: GET P-ITBL,P-NC2 >?TMP1 386 | GET P-ITBL,P-NC2L 387 | CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE 388 | RSTACK 389 | 390 | 391 | .FUNCT BELBOZ-F 392 | EQUAL? PRSA,V?ZIFMIA \?ELS5 393 | PRINTI "A vision of the great Belboz begins to take shape before you, but " 394 | GETP HERE,P?TMAZE 395 | ZERO? STACK /?ELS12 396 | PRINTR "as soon as he realizes where you are, he disappears, a look of fear upon his face." 397 | ?ELS12: PRINTR "with a curt word and a waggle of his finger, he disappears again, shaking his head in disappointment." 398 | ?ELS5: EQUAL? PRSA,V?WHO,V?EXAMINE \FALSE 399 | PRINTR "Belboz is, in effect, your boss, professor, patron, and ultimate superior. He is the head of the Circle of Enchanters." 400 | 401 | 402 | .FUNCT GLOBAL-ROOM-F 403 | EQUAL? PRSA,V?EXAMINE,V?LOOK \?ELS5 404 | CALL PERFORM,V?LOOK 405 | RTRUE 406 | ?ELS5: EQUAL? PRSA,V?WALK-AROUND \FALSE 407 | PRINTR "Walking around the room reveals nothing else of interest. If you want to move elsewhere, simply indicate the direction you wish to move in." 408 | 409 | 410 | .FUNCT BRAMBLES-F 411 | CALL OUTSIDE?,HERE 412 | ZERO? STACK \?ELS5 413 | PRINTR "The only brambles here are in your head." 414 | ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH \FALSE 415 | PRINTR "There's nothing in the brambles now. Count your blessings." 416 | 417 | 418 | .FUNCT GLOBAL-HOLE-F 419 | EQUAL? PRSA,V?DIG \?ELS5 420 | PRINTR "It's not worth the bother." 421 | ?ELS5: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-HOLE 422 | RSTACK 423 | 424 | .ENDI 425 | -------------------------------------------------------------------------------- /knot.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT JEWELLED-BOX-A 4 | IN? HERE,JEWELLED-BOX \TRUE 5 | GRTR? BOX-POINT,0 \TRUE 6 | ZERO? ROPE-MAGIC? /?ELS8 7 | PRINTR "The adventurer notes the box and tries to untie the rope from around it. His frustration is evident by the words he uses to describe the rope." 8 | ?ELS8: PUTP JEWELLED-BOX,P?LDESC,STR?126 9 | PRINTI "The adventurer walks up to the box and becomes quickly entangled in the partly untied rope that is knotted around it. He looks like a cat who has been playing with a ball of yarn." 10 | CRLF 11 | RTRUE 12 | 13 | 14 | .FUNCT JEWELLED-BOX-F 15 | IN? MAGIC-ROPE,JEWELLED-BOX \?ELS5 16 | EQUAL? PRSA,V?SHAKE \?ELS10 17 | PRINTR "It seems that there's something inside, but it's not clear what." 18 | ?ELS10: EQUAL? PRSA,V?UNLOCK \?ELS14 19 | PRINTR "Who said anything about its being locked?" 20 | ?ELS14: EQUAL? PRSA,V?REZROV \?ELS18 21 | ZERO? ROPE-MAGIC? /?ELS23 22 | PRINTR "The magic in the rope is strong enough to prevent the rezrov spell from working." 23 | ?ELS23: PRINTI "The rope dissolves and the jewelled box flies open!" 24 | CRLF 25 | CALL ROPE-DISSOLVES 26 | FSET JEWELLED-BOX,OPENBIT 27 | RTRUE 28 | ?ELS18: EQUAL? PRSA,V?LOOK-INSIDE,V?OPEN \?ELS32 29 | PRINTR "With all that rope around it, you haven't a prayer." 30 | ?ELS32: EQUAL? PRSA,V?EXAMINE \?ELS36 31 | PRINTR "It is closed and wrapped in tight coils of thin rope." 32 | ?ELS36: EQUAL? PRSA,V?CLOSE \?ELS40 33 | PRINTR "It isn't open, which seems to be the problem at hand." 34 | ?ELS40: EQUAL? PRSA,V?PUT \FALSE 35 | EQUAL? PRSI,JEWELLED-BOX \FALSE 36 | PRINTR "That won't work until the box is open." 37 | ?ELS5: EQUAL? PRSA,V?OPEN \FALSE 38 | IN? PROTECTION-SCROLL,JEWELLED-BOX \FALSE 39 | CALL THIS-IS-IT,PROTECTION-SCROLL 40 | RFALSE 41 | 42 | 43 | .FUNCT MAGIC-ROPE-F 44 | EQUAL? PRSA,V?UNTIE \?ELS5 45 | PRINTI "After a few moments of reflection, you tackle the knots, one at a time. Although you succeed with some regularity at untangling small areas of the rope, you " 46 | ZERO? ROPE-MAGIC? /?ELS10 47 | PRINTI "find that new knots seem to be forming as you watch, taunting you into deep despair." 48 | JUMP ?CND8 49 | ?ELS10: PUTP JEWELLED-BOX,P?LDESC,STR?126 50 | PRINTI "can't make any headway against the enormous tangle. It would take forever to finish." 51 | ?CND8: CRLF 52 | RTRUE 53 | ?ELS5: EQUAL? PRSA,V?GUNCHO \?ELS19 54 | REMOVE MAGIC-ROPE 55 | REMOVE JEWELLED-BOX 56 | PRINTI "The " 57 | PRINTD PRSO 58 | PRINTI " disappears, but unfortunately the " 59 | PRINTD JEWELLED-BOX 60 | PRINTR " disappears as well." 61 | ?ELS19: EQUAL? PRSA,V?REZROV \?ELS23 62 | CALL JEWELLED-BOX-F 63 | RTRUE 64 | ?ELS23: EQUAL? PRSA,V?TAKE \?ELS25 65 | PRINTR "The rope is so entangled around the box that the idea is ridiculous." 66 | ?ELS25: EQUAL? PRSA,V?MUNG,V?CUT \?ELS29 67 | ZERO? PRSI \?ELS34 68 | PRINTR "You can't hurt it with your bare hands." 69 | ?ELS34: EQUAL? PRSI,MAGIC-KNIFE \?ELS38 70 | CALL ROPE-DISSOLVES 71 | PRINTR "At the mere touch of the magic knife, the rope gives way. Before your eyes, the strands, now moving this way, now moving that way, untangle themselves into a single strand which falls to the floor alongside the box, where it dissolves into the air without a sound." 72 | ?ELS38: FSET? PRSI,WEAPONBIT \?ELS42 73 | ZERO? ROPE-MAGIC? /?ELS47 74 | PRINTR "The rope seems to be pretty strong stuff. You don't seem to be making the least progress in breaking it." 75 | ?ELS47: PRINTR "The rope cuts cleanly, and falls to pieces on the floor. It must have been pretty rotten." 76 | ?ELS42: PRINTI "You certainly won't get anywhere using the " 77 | PRINTD PRSI 78 | PRINTR "!" 79 | ?ELS29: EQUAL? PRSA,V?KULCAD \?ELS60 80 | SET 'ROPE-MAGIC?,FALSE-VALUE 81 | PRINTR "Nothing obvious happens, but when you examine the rope, it lacks a certain something you saw in it before. It now looks sort of ordinary, like a clothesline." 82 | ?ELS60: EQUAL? PRSA,V?DROP \FALSE 83 | CALL PERFORM,V?DROP,JEWELLED-BOX 84 | RTRUE 85 | 86 | 87 | .FUNCT ROPE-DISSOLVES 88 | SET 'ROPE-MAGIC?,FALSE-VALUE 89 | ADD SCORE,BOX-POINT >SCORE 90 | SET 'BOX-POINT,0 91 | REMOVE MAGIC-ROPE 92 | MOVE PROTECTION-SCROLL,JEWELLED-BOX 93 | FCLEAR JEWELLED-BOX,OPENBIT 94 | FSET JEWELLED-BOX,TOUCHBIT 95 | PUTP JEWELLED-BOX,P?LDESC,STR?129 96 | RTRUE 97 | 98 | 99 | .FUNCT MAGIC-KNIFE-F 100 | EQUAL? PRSA,V?EXAMINE \FALSE 101 | PRINTR "The dagger is inlaid with fine jewels. It would be a handsome addition to anyone's weapon collection." 102 | 103 | .ENDI 104 | -------------------------------------------------------------------------------- /knot.zil: -------------------------------------------------------------------------------- 1 | "KNOT for 2 | ENCHANTER 3 | (c) Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | ;"Another knotty problem for our brave would-be magic user...." 7 | 8 | 18 | 19 | 21 | > 22 | ) 26 | (T 27 | 30 | )>)> 34 | > 35 | 36 | 53 | 54 | 56 | 57 | ) 59 | ( 60 | ) 62 | ( 63 | ) 67 | (T 68 | 70 | 71 | )>) 72 | ( 73 | ) 75 | ( 76 | ) 78 | ( 79 | ) 81 | ( > 82 | )>) 84 | ( 85 | > 86 | 87 | )>> 88 | 89 | 96 | 97 | 98 | 99 | 101 | 105 | ) 109 | (ELSE 110 | 113 | )> 116 | ) 117 | ( 118 | 119 | 120 | ) 123 | ( 124 | 125 | ) 126 | ( 127 | ) 129 | ( 130 | 131 | ) 132 | ( 133 | 134 | ) 139 | ( 140 | ;"only other weapon is adventurer's sword?" 141 | ) 145 | (ELSE 146 | )>) 149 | (T )>) 151 | ( 152 | > 153 | ) 157 | ( 158 | 159 | )>> 160 | 161 | > 163 | > 164 | 165 | 166 | 167 | 168 | 169 | > 171 | 172 | 179 | 180 | 182 | )>> 185 | 186 | -------------------------------------------------------------------------------- /load.zil: -------------------------------------------------------------------------------- 1 | "ENCHANTER for 2 | ENCHANTER 3 | (c) Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | 10 | 11 | 12 | 13 | 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 | ; 46 | ; 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /macros.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT PRINTA,O 4 | FSET? O,VOWELBIT \?ELS7 5 | PUSH STR?1 6 | JUMP ?CND3 7 | ?ELS7: PUSH STR?2 8 | ?CND3: PRINT STACK 9 | PRINTD O 10 | RTRUE 11 | 12 | 13 | .FUNCT RANDOM-ELEMENT,FROB 14 | GET FROB,0 15 | RANDOM STACK 16 | GET FROB,STACK 17 | RSTACK 18 | 19 | 20 | .FUNCT PICK-ONE,FROB,L,CNT,RND,MSG,RFROB 21 | GET FROB,0 >L 22 | GET FROB,1 >CNT 23 | DEC 'L 24 | ADD FROB,2 >FROB 25 | MUL CNT,2 26 | ADD FROB,STACK >RFROB 27 | SUB L,CNT 28 | RANDOM STACK >RND 29 | GET RFROB,RND >MSG 30 | GET RFROB,1 31 | PUT RFROB,RND,STACK 32 | PUT RFROB,1,MSG 33 | INC 'CNT 34 | EQUAL? CNT,L \?CND1 35 | SET 'CNT,0 36 | ?CND1: PUT FROB,0,CNT 37 | RETURN MSG 38 | 39 | .ENDI 40 | -------------------------------------------------------------------------------- /macros.zil: -------------------------------------------------------------------------------- 1 | "MACROS for 2 | ENCHANTER 3 | (c) Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | 7 | 8 | 9 | 10 | ) 15 | (> 16 | >)> 17 | 18 | > 19 | "CRLF"> 20 | <=? .P "CR">> 21 | >) 22 | ( 23 | ) 24 | (ELSE 25 | > 26 | > 27 | > 28 | "DESC"> 29 | <=? .P "D"> 30 | <=? .P "OBJ"> 31 | <=? .P "O">> 32 | >) 33 | ( 34 | <=? .P "AN">> 35 | >) 36 | ( 37 | <=? .P "N">> 38 | >) 39 | ( 40 | <=? .P "CHR"> 41 | <=? .P "C">> 42 | >) 43 | (ELSE 44 | >>)>)>) 47 | ( 48 | >) 49 | ( 50 | >) 51 | (ELSE )>>>>> 52 | 53 | 55 | "an ") 56 | (T "a ")> 57 | D .O>> 58 | 59 | > 61 | 62 | > 64 | 65 | > 67 | 68 | > 70 | 71 | 74 | ) 75 | ( ) 76 | (ELSE )>>)> 77 | )> 79 | > 80 | 82 | 83 | >>) 86 | (ELSE .ATM)> 87 | GVAL>) 88 | (ELSE .ATM)> 89 | !.L)> 90 | > 91 | 3> )>> 92 | !.L>)>>> 93 | >> 94 | 95 | > 97 | 98 | > 100 | 101 | > 103 | 104 | 107 | ) 108 | (<==? .X FSET?>
) 109 | (ELSE )>>)> 110 | > 111 | > 112 | .ATM) 116 | (ELSE )>> 117 | !.O)>>> 118 | 119 | >> 121 | 122 | ) 124 | (ELSE >)>> 125 | 126 | ;>) 129 | (ELSE >)>> 130 | 131 | >>> 133 | 134 | ) (CNT ) RND MSG RFROB) 136 | > 137 | > 138 | >> 139 | >> 140 | > 141 | > 142 | 143 | > 144 | )> 145 | 146 | .MSG> 147 | 148 | > 149 | 150 | > 151 | 152 | 154 | >> 155 | 156 | 158 | >> 159 | 160 | ) 162 | (T .NUM)>> -------------------------------------------------------------------------------- /main.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT GO 4 | START:: 5 | 6 | ?FCN: PUTB P-LEXV,0,59 7 | CALL QUEUE,I-TIRED,MOVES-PER-DAY 8 | PUT STACK,0,1 9 | CALL QUEUE,I-THIRST,41 10 | PUT STACK,0,1 11 | CALL QUEUE,I-HUNGER,67 12 | PUT STACK,0,1 13 | CALL QUEUE,I-TIME,-1 14 | PUT STACK,0,1 15 | CALL QUEUE,I-SCURRY,5 16 | PUT STACK,0,1 17 | CALL QUEUE,I-MUNG-ROOM,50 18 | PUT STACK,0,1 19 | CALL QUEUE,I-GUARDS-ARRIVE,0 20 | PUT STACK,0,1 21 | CALL QUEUE,I-ADVENTURER,0 22 | PUT STACK,0,1 23 | SET 'LIT,TRUE-VALUE 24 | SET 'WINNER,PLAYER 25 | SET 'HERE,WEST-FORK 26 | SET 'P-IT-OBJECT,FALSE-VALUE 27 | FSET? HERE,TOUCHBIT /?CND1 28 | PRINTI "It must be the warlock Krill. The odd disappearances, the mysterious dissolution of regions sacred to the Circle, the lessening of the Powers -- these could only be his handiwork. The Circle gathers and its leader, the esteemed Belboz, reveals to them an ancient document which portends evil days much like our own. 29 | 30 | ""Krill's evil must be unmade,"" he begins, ""but to send a powerful Enchanter is ill-omened. It would be ruinous to reveal oversoon our full powers."" A ripple of concern spreads over the face of each Enchanter. Belboz pauses, and collects his resolve. ""Have hope! This has been written by a hand far wiser than mine!"" 31 | 32 | He recites a short spell and you appear. Belboz approaches, transfixing you with his gaze, and hands you the document. The other Enchanters await his decree. ""These words, written ages ago, can have only one meaning. You, a novice Enchanter with but a few simple spells in your Book, must seek out Krill, explore the Castle he has overthrown, and learn his secrets. Only then may his vast evil be lessened or, with good fortune, destroyed."" 33 | 34 | The Circle rises and intones a richly woven spell, whose many textures imbue the small, darkened chamber with warmth and hope. There is a surge of power; you are Sent." 35 | CRLF 36 | CRLF 37 | CALL V-VERSION 38 | CRLF 39 | ?CND1: MOVE WINNER,HERE 40 | CALL V-LOOK 41 | CALL MAIN-LOOP 42 | JUMP ?FCN 43 | 44 | 45 | .FUNCT MAIN-LOOP,TRASH 46 | ?PRG1: CALL MAIN-LOOP-1 >TRASH 47 | JUMP ?PRG1 48 | 49 | 50 | .FUNCT MAIN-LOOP-1,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,?TMP1 51 | SET 'CNT,0 52 | SET 'OBJ,FALSE-VALUE 53 | SET 'PTBL,TRUE-VALUE 54 | CALL PARSER >P-WON 55 | ZERO? P-WON /?ELS3 56 | GET P-PRSI,P-MATCHLEN >ICNT 57 | GET P-PRSO,P-MATCHLEN >OCNT 58 | ZERO? P-IT-OBJECT /?CND4 59 | CALL ACCESSIBLE?,P-IT-OBJECT 60 | ZERO? STACK /?CND4 61 | SET 'TMP,FALSE-VALUE 62 | ?PRG9: IGRTR? 'CNT,ICNT \?ELS13 63 | JUMP ?REP10 64 | ?ELS13: GET P-PRSI,CNT 65 | EQUAL? STACK,IT \?PRG9 66 | PUT P-PRSI,CNT,P-IT-OBJECT 67 | SET 'TMP,TRUE-VALUE 68 | ?REP10: ZERO? TMP \?CND19 69 | SET 'CNT,0 70 | ?PRG22: IGRTR? 'CNT,OCNT \?ELS26 71 | JUMP ?CND19 72 | ?ELS26: GET P-PRSO,CNT 73 | EQUAL? STACK,IT \?PRG22 74 | PUT P-PRSO,CNT,P-IT-OBJECT 75 | ?CND19: SET 'CNT,0 76 | ?CND4: ZERO? OCNT \?ELS36 77 | PUSH OCNT 78 | JUMP ?CND32 79 | ?ELS36: GRTR? OCNT,1 \?ELS38 80 | SET 'TBL,P-PRSO 81 | ZERO? ICNT \?ELS41 82 | SET 'OBJ,FALSE-VALUE 83 | JUMP ?CND39 84 | ?ELS41: GET P-PRSI,1 >OBJ 85 | ?CND39: PUSH OCNT 86 | JUMP ?CND32 87 | ?ELS38: GRTR? ICNT,1 \?ELS45 88 | SET 'PTBL,FALSE-VALUE 89 | SET 'TBL,P-PRSI 90 | GET P-PRSO,1 >OBJ 91 | PUSH ICNT 92 | JUMP ?CND32 93 | ?ELS45: PUSH 1 94 | ?CND32: SET 'NUM,STACK 95 | ZERO? OBJ \?CND48 96 | EQUAL? ICNT,1 \?CND48 97 | GET P-PRSI,1 >OBJ 98 | ?CND48: EQUAL? PRSA,V?WALK \?ELS55 99 | CALL PERFORM,PRSA,PRSO >V 100 | JUMP ?CND53 101 | ?ELS55: ZERO? NUM \?ELS57 102 | GETB P-SYNTAX,P-SBITS 103 | BAND STACK,P-SONUMS 104 | ZERO? STACK \?ELS60 105 | CALL PERFORM,PRSA >V 106 | SET 'PRSO,FALSE-VALUE 107 | JUMP ?CND53 108 | ?ELS60: ZERO? LIT \?ELS62 109 | PRINTI "It's too dark to see." 110 | CRLF 111 | JUMP ?CND53 112 | ?ELS62: PRINTI "There isn't anything to " 113 | GET P-ITBL,P-VERBN >TMP 114 | ZERO? P-OFLAG \?THN72 115 | ZERO? P-MERGED /?ELS71 116 | ?THN72: GET TMP,0 117 | PRINTB STACK 118 | JUMP ?CND69 119 | ?ELS71: GETB TMP,2 >?TMP1 120 | GETB TMP,3 121 | CALL WORD-PRINT,?TMP1,STACK 122 | ?CND69: PRINTI "!" 123 | CRLF 124 | SET 'V,FALSE-VALUE 125 | JUMP ?CND53 126 | ?ELS57: SET 'P-NOT-HERE,0 127 | SET 'P-MULT,FALSE-VALUE 128 | GRTR? NUM,1 \?CND80 129 | SET 'P-MULT,TRUE-VALUE 130 | ?CND80: SET 'TMP,FALSE-VALUE 131 | ?PRG83: IGRTR? 'CNT,NUM \?ELS87 132 | GRTR? P-NOT-HERE,0 \?ELS90 133 | PRINTI "The " 134 | EQUAL? P-NOT-HERE,NUM /?CND93 135 | PRINTI "other " 136 | ?CND93: PRINTI "object" 137 | EQUAL? P-NOT-HERE,1 /?CND100 138 | PRINTI "s" 139 | ?CND100: PRINTI " that you mentioned " 140 | EQUAL? P-NOT-HERE,1 /?ELS109 141 | PRINTI "are" 142 | JUMP ?CND107 143 | ?ELS109: PRINTI "is" 144 | ?CND107: PRINTI "n't here." 145 | CRLF 146 | JUMP ?REP84 147 | ?ELS90: ZERO? TMP \?REP84 148 | PRINTI "I don't know what you're referring to." 149 | CRLF 150 | JUMP ?REP84 151 | ?ELS87: ZERO? PTBL /?ELS126 152 | GET P-PRSO,CNT >OBJ1 153 | JUMP ?CND124 154 | ?ELS126: GET P-PRSI,CNT >OBJ1 155 | ?CND124: ZERO? PTBL /?ELS134 156 | PUSH OBJ1 157 | JUMP ?CND130 158 | ?ELS134: PUSH OBJ 159 | ?CND130: SET 'PRSO,STACK 160 | ZERO? PTBL /?ELS142 161 | PUSH OBJ 162 | JUMP ?CND138 163 | ?ELS142: PUSH OBJ1 164 | ?CND138: SET 'PRSI,STACK 165 | EQUAL? PRSA,V?ERASE-LINE,V?MAKE-LINE \?ELS148 166 | JUMP ?CND146 167 | ?ELS148: GRTR? NUM,1 /?THN151 168 | GET P-ITBL,P-NC1 169 | GET STACK,0 170 | EQUAL? STACK,W?ALL \?CND146 171 | ?THN151: EQUAL? OBJ1,NOT-HERE-OBJECT \?ELS155 172 | INC 'P-NOT-HERE 173 | JUMP ?PRG83 174 | ?ELS155: EQUAL? P-GETFLAGS,P-ALL \?ELS157 175 | EQUAL? PRSA,V?TAKE \?ELS157 176 | LOC OBJ1 177 | EQUAL? STACK,WINNER,HERE,OBJ /?ELS157 178 | JUMP ?PRG83 179 | ?ELS157: EQUAL? PRSA,V?TAKE \?ELS161 180 | ZERO? PRSI /?ELS161 181 | GET P-ITBL,P-NC1 182 | GET STACK,0 183 | EQUAL? STACK,W?ALL \?ELS161 184 | IN? PRSO,PRSI /?ELS161 185 | JUMP ?PRG83 186 | ?ELS161: EQUAL? OBJ1,IT \?ELS168 187 | PRINTD P-IT-OBJECT 188 | JUMP ?CND166 189 | ?ELS168: PRINTD OBJ1 190 | ?CND166: PRINTI ": " 191 | ?CND146: SET 'TMP,TRUE-VALUE 192 | CALL PERFORM,PRSA,PRSO,PRSI >V 193 | EQUAL? V,M-FATAL \?PRG83 194 | JUMP ?CND53 195 | ?REP84: 196 | ?CND53: EQUAL? V,M-FATAL /?CND176 197 | LOC WINNER 198 | ZERO? STACK /?CND176 199 | LOC WINNER 200 | GETP STACK,P?ACTION 201 | CALL STACK,M-END >V 202 | ?CND176: EQUAL? PRSA,V?SCORE,V?RESTORE,V?SAVE /?CND182 203 | EQUAL? PRSA,V?VERSION \?ELS184 204 | JUMP ?CND182 205 | ?ELS184: SET 'L-PRSA,PRSA 206 | SET 'L-PRSO,PRSO 207 | SET 'L-PRSI,PRSI 208 | ?CND182: EQUAL? V,M-FATAL \?CND1 209 | SET 'P-CONT,FALSE-VALUE 210 | JUMP ?CND1 211 | ?ELS3: SET 'P-CONT,FALSE-VALUE 212 | ?CND1: ZERO? P-WON /FALSE 213 | EQUAL? PRSA,V?SUPER-BRIEF,V?BRIEF,V?TELL /TRUE 214 | EQUAL? PRSA,V?VERSION,V?SAVE,V?VERBOSE /TRUE 215 | EQUAL? PRSA,V?RESTART,V?QUIT,V?TIME /TRUE 216 | EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT,V?SCORE /TRUE 217 | EQUAL? PRSA,V?RESTORE /TRUE 218 | CALL CLOCKER >V 219 | RETURN V 220 | 221 | 222 | .FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI 223 | SET 'OA,PRSA 224 | SET 'OO,PRSO 225 | SET 'OI,PRSI 226 | EQUAL? IT,I,O \?CND1 227 | CALL ACCESSIBLE?,P-IT-OBJECT 228 | ZERO? STACK \?CND1 229 | PRINTI "I don't see what you are referring to." 230 | CRLF 231 | RETURN 2 232 | ?CND1: EQUAL? O,IT \?CND10 233 | SET 'O,P-IT-OBJECT 234 | ?CND10: EQUAL? I,IT \?CND13 235 | SET 'I,P-IT-OBJECT 236 | ?CND13: SET 'PRSA,A 237 | SET 'PRSO,O 238 | ZERO? PRSO /?CND16 239 | EQUAL? PRSA,V?WALK /?CND16 240 | SET 'P-IT-OBJECT,PRSO 241 | ?CND16: SET 'PRSI,I 242 | EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?ELS23 243 | CALL NOT-HERE-OBJECT-F >V 244 | ZERO? V /?ELS23 245 | SET 'P-WON,FALSE-VALUE 246 | JUMP ?CND21 247 | ?ELS23: SET 'O,PRSO 248 | SET 'I,PRSI 249 | GETP WINNER,P?ACTION 250 | CALL STACK >V 251 | ZERO? V /?ELS30 252 | JUMP ?CND21 253 | ?ELS30: LOC WINNER 254 | GETP STACK,P?ACTION 255 | CALL STACK,M-BEG >V 256 | ZERO? V /?ELS32 257 | JUMP ?CND21 258 | ?ELS32: GET PREACTIONS,A 259 | CALL STACK >V 260 | ZERO? V /?ELS34 261 | JUMP ?CND21 262 | ?ELS34: ZERO? I /?ELS36 263 | GETP I,P?ACTION 264 | CALL STACK >V 265 | ZERO? V /?ELS36 266 | JUMP ?CND21 267 | ?ELS36: ZERO? O /?ELS40 268 | EQUAL? A,V?WALK /?ELS40 269 | LOC O 270 | ZERO? STACK /?ELS40 271 | LOC O 272 | GETP STACK,P?CONTFCN 273 | CALL STACK >V 274 | ZERO? V /?ELS40 275 | JUMP ?CND21 276 | ?ELS40: ZERO? O /?ELS44 277 | EQUAL? A,V?WALK /?ELS44 278 | GETP O,P?ACTION 279 | CALL STACK >V 280 | ZERO? V /?ELS44 281 | JUMP ?CND21 282 | ?ELS44: GET ACTIONS,A 283 | CALL STACK >V 284 | ZERO? V /?CND21 285 | ?CND21: SET 'PRSA,OA 286 | SET 'PRSO,OO 287 | SET 'PRSI,OI 288 | RETURN V 289 | 290 | 291 | .FUNCT I-TIME 292 | EQUAL? HASTED?,ME \?ELS3 293 | MOD MOVES,2 294 | ZERO? STACK /TRUE 295 | ?ELS3: IGRTR? 'TOD,127 \?CND1 296 | SET 'TOD,0 297 | SUB NIGHTFALL,20 >NIGHTFALL 298 | INC 'LOSSAGE 299 | SUB DUSK,20 >DUSK 300 | ADD MOLESTED,5 >MOLESTED 301 | ADD MUNCHED,5 >MUNCHED 302 | LESS? NIGHTFALL,0 \?CND1 303 | PRINTI "Belboz appears before you, in a magical sending. He speaks, his voice soft and saddened. ""You have failed. Universal night has now fallen. Krill and his creatures now may freely roam the earth. The power of the Circle is diminished, if not broken. I go to prepare the last defense."" The sending vanishes." 304 | CRLF 305 | CALL FINISH 306 | ?CND1: EQUAL? TOD,NIGHTFALL \?ELS17 307 | LOC PLAYER 308 | FSET? STACK,ONBIT \?ELS17 309 | PRINTI "The darkened sky is now full of bright stars. It is night." 310 | CRLF 311 | LESS? NIGHTFALL,97 \TRUE 312 | PRINTR "Today seemed shorter than yesterday, somehow." 313 | ?ELS17: EQUAL? TOD,SUNRISE \?ELS28 314 | LOC PLAYER 315 | FSET? STACK,ONBIT \?ELS28 316 | PRINTR "The sun has now risen above the hills." 317 | ?ELS28: EQUAL? TOD,DUSK \FALSE 318 | LOC PLAYER 319 | FSET? STACK,ONBIT \FALSE 320 | PRINTI "The sun starts to set behind the Lonely Mountain in the west." 321 | CRLF 322 | LESS? NIGHTFALL,97 \TRUE 323 | PRINTR "The day is coming to an end earlier than you would have expected." 324 | 325 | .ENDI 326 | -------------------------------------------------------------------------------- /main.zil: -------------------------------------------------------------------------------- 1 | "MAIN for 2 | ENCHANTER 3 | Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | > 7 | 8 | 9 | 10 | 11 | 12 | > 13 | 14 | > 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | > 29 | 30 | 32 | ;"put interrupts on clock chain" 33 | > 34 | > 35 | > 36 | > 37 | > 38 | > 39 | ;"make sure guards arrive messages happen before adventurer ones" 40 | > 41 | > 42 | ;"clean up junk compiler can't do" 43 | 44 | ;"set up and go" 45 | 46 | 47 | 48 | > 49 | > 50 | 74 | 75 | 76 | )> 77 | 78 | 79 | 80 | > 81 | 82 | 83 | >>> 86 | 87 | (OBJ) 89 | (OBJ1) OBJECT (TBL) TABLE (PTBL) ) 90 | 91 | > 92 | 93 | > 94 | > 95 | > 96 | > 97 | > 98 | > .ICNT> 100 | ) 101 | (T 102 | ,IT> 103 | 104 | 105 | )>)>> 106 | 107 | 108 | > .OCNT> 110 | ) 111 | (T 112 | ,IT> 113 | 114 | )>)>>)> 115 | )> 116 | .OCNT) 118 | ( 119 | 120 | >) 121 | (T >)> 122 | .OCNT) 123 | ( 124 | > 125 | 126 | > 127 | .ICNT) 128 | (T 1)>> 129 | <1? .ICNT>> >)> 130 | >) 131 | (<0? .NUM> 132 | ,P-SONUMS>> 133 | > 134 | >) 135 | ( 136 | ) 137 | (T 138 | 139 | > 140 | 141 | >) 142 | (T 143 | >)> 144 | 145 | >)>) 146 | (T 147 | 148 | > 149 | )> 150 | > 151 | > .NUM> 153 | 154 | 155 | > 156 | )> 157 | 158 | > 159 | )> 160 | 161 | > 162 | ) 163 | (T )> 164 | ) 165 | ( 166 | )> 168 | ) 169 | (T 170 | >) 171 | (T >)> 172 | > 173 | > 174 | T) 175 | ( 176 | 177 | 0> 178 | ,W?ALL>> 179 | 181 | > 183 | ) 184 | ( 186 | 187 | 189 | ,WINNER 190 | ,HERE 191 | .OBJ>>> 192 | ) 193 | ( 194 | ,PRSI 195 | 197 | 0> 198 | ,W?ALL> 199 | >> 200 | ) 201 | (T 202 | 203 | ) 204 | (T )> 205 | )>)> 206 | 207 | > 208 | )>)>>)> 209 | > 210 | ; ,PRSO> 211 | >)> ;"why is this done? -- pdl" 212 | 213 | ,P?ACTION> 215 | ,M-END>>)>)> 216 | T) 217 | (T 218 | 219 | 220 | )> 221 | >)>) 222 | (T 223 | >)> 224 | T) 227 | (T >)>)>> 228 | 229 | > 230 | 231 | > 232 | 233 | > 234 | 235 | > 236 | 237 | 238 | 239 | 240 | 241 | % 242 | 243 | ') (I <>) "AUX" V OA OO OI) 244 | #DECL ((A) FIX (O) (I) (V) ANY) 245 | 246 | 247 | 248 | 249 | >> 250 | 251 | )> 252 | )> 253 | )> 254 | 255 | 256 | >> 257 | )> 258 | 259 | 260 | >> 261 | > 262 | .V) 263 | (T 264 | 265 | 266 | >> .V) 268 | ( ,P?ACTION> ,M-BEG>> .V) 269 | (>> .V) 270 | (>>> .V) 271 | (> 273 | 274 | ,P?CONTFCN>>>> 275 | .V) 276 | (> 278 | >>> 279 | .V) 280 | (>> .V)>)> 281 | 282 | 283 | 284 | .V>) 285 | (T 286 | 287 | '> 290 | 291 | ) (I <>) "AUX" V OA OO OI) 292 | #DECL ((A) FIX (O) (I) (V) ANY) 293 | 305 | )> 306 | )> 307 | )> 308 | 309 | 310 | >> 311 | )> 312 | 313 | 314 | >> 315 | > 316 | .V) 317 | (T 318 | 319 | 320 | >> .V) 322 | ( ,P?ACTION> 324 | ,M-BEG>> .V) 325 | (>> .V) 327 | (>>> .V) 329 | (> 331 | 332 | ,P?CONTFCN>>>> 334 | .V) 335 | (> 337 | >>> 339 | .V) 340 | ( 341 | >> .V)>)> 342 | 343 | 344 | 345 | .V> 346 | 347 | <>) 349 | (T 350 | 352 | " CR>) 353 | (T ">)>)> 354 | 356 | ) 357 | (T )>> 358 | 359 | 360 | ) 361 | ( 362 | ) 363 | (T )>)> 364 | .RES)>> 365 | 366 | >)> ;"DON'T REMOVE" 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 376 | <==? 0>> 377 | ) 378 | (> 127> 379 | 380 | > 381 | > 382 | > 383 | > 384 | > 385 | 386 | 392 | )>)> 393 | 394 | ,ONBIT>> 395 | 397 | 398 | )> 400 | ) 401 | ( 402 | ,ONBIT>> 403 | ) 405 | ( 406 | ,ONBIT>> 407 | 409 | 410 | )> 412 | )>> 413 | 414 | -------------------------------------------------------------------------------- /nload.zil: -------------------------------------------------------------------------------- 1 | "ENCHANTER for 2 | ENCHANTER 3 | (c) Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | ; 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | >> 27 | 28 | 29 | T>>> 30 | 31 | T>> 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 | -------------------------------------------------------------------------------- /nmacros.zil: -------------------------------------------------------------------------------- 1 | "MACROS for 2 | ENCHANTER 3 | (c) Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | 7 | 8 | 9 | 10 | ) 15 | (> 16 | >)> 17 | 18 | > 19 | "CRLF"> 20 | <=? .P "CR">> 21 | >) 22 | ( 23 | ) 24 | (ELSE 25 | > 26 | > 27 | > 28 | "DESC"> 29 | <=? .P "D"> 30 | <=? .P "OBJ"> 31 | <=? .P "O">> 32 | >) 33 | ( 34 | <=? .P "N">> 35 | >) 36 | ( 37 | <=? .P "CHR"> 38 | <=? .P "C">> 39 | >) 40 | (ELSE 41 | >>)>)>) 44 | ( 45 | >) 46 | ( 47 | >) 48 | (ELSE )>>>>> 49 | 50 | > 52 | 53 | > 55 | 56 | > 58 | 59 | > 61 | 62 | 65 | ) 66 | ( ) 67 | (ELSE )>>)> 68 | )> 70 | > 71 | 73 | 75 | >>) 78 | (ELSE .ATM)>>) 79 | (ELSE .ATM)> 80 | !.L)> 81 | > 82 | 3> )>> 83 | !.L>)>>> 84 | >> 85 | 86 | > 88 | 89 | > 91 | 92 | > 94 | 95 | 98 | ) 99 | (<==? .X FSET?> ) 100 | (ELSE )>>)> 101 | > 102 | > 103 | .ATM) 107 | (ELSE )>> 108 | !.O)>>> 109 | 110 | ) (LL (())) (L .LL) ATM) 111 | >>> 112 | >) 113 | (ELSE >)> 114 | <==? TO>> 116 | ) 117 | ( ) 118 | (ELSE 119 | )>>) 120 | (ELSE 121 | > 122 | 123 | >)> 124 | ) 129 | (ELSE 130 | )>)>>> 131 | >)>>> 132 | 133 | >> 135 | 136 | ) 138 | (ELSE >)>> 139 | 140 | >) 143 | (ELSE >)>> 144 | 145 | >>> 147 | 148 | ) (CNT ) RND MSG RFROB) 150 | > 151 | > 152 | >> 153 | >> 154 | > 155 | > 156 | 157 | > 158 | )> 159 | 160 | .MSG> 161 | 162 | > 163 | 164 | > 165 | 166 | 168 | >> 169 | 170 | 172 | >> 173 | 174 | ) 176 | (T .NUM)>> -------------------------------------------------------------------------------- /outside.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT WEST-CASTLE-F,RARG 4 | EQUAL? RARG,M-LOOK \FALSE 5 | PRINTI "You are outside the western entrance to the castle. To the east stands an iron gate which is " 6 | FSET? IRON-GATE,OPENBIT \?ELS10 7 | PRINTI "wide open" 8 | JUMP ?CND8 9 | ?ELS10: PRINTI "closed and chained" 10 | ?CND8: PRINTR ". A winding road starts here and proceeds to the west." 11 | 12 | 13 | .FUNCT UNDERGROWTH-F 14 | EQUAL? PRSA,V?EXAMINE \?ELS5 15 | PRINTR "The undergrowth is thick. You would never get through it." 16 | ?ELS5: EQUAL? PRSA,V?MUNG,V?CUT \FALSE 17 | PRINTR "You could spend a few days doing this without much progress." 18 | 19 | 20 | .FUNCT PATH-SIGN-F 21 | EQUAL? PRSA,V?READ,V?EXAMINE \FALSE 22 | CALL FIXED-FONT-ON 23 | PRINTI " 24 | - Shady Brook Trail - 25 | 26 | Old Lingolf House 27 | 1000 feet 28 | " 29 | CALL FIXED-FONT-OFF 30 | RTRUE 31 | 32 | 33 | .FUNCT FOUNDATION-F 34 | EQUAL? PRSA,V?THROUGH \?ELS5 35 | PRINTR "No way." 36 | ?ELS5: EQUAL? PRSA,V?WHO \?ELS9 37 | PRINTR "There's no way of knowing." 38 | ?ELS9: EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH \FALSE 39 | PRINTR "There is nothing but stone there." 40 | 41 | 42 | .FUNCT DISTANT-CASTLE-F 43 | EQUAL? PRSA,V?EXAMINE \?ELS5 44 | PRINTR "The castle is far to the east and flanked by dark towers. From this distance, not much detail can be discerned." 45 | ?ELS5: EQUAL? PRSA,V?WALK-TO \FALSE 46 | PRINTR "There's no direct path from here, although roads lead there. Try specifying a compass direction in order to move around." 47 | 48 | 49 | .FUNCT SHACK-OBJ-F 50 | EQUAL? PRSA,V?THROUGH \?ELS5 51 | EQUAL? HERE,SHACK-ROOM \?ELS5 52 | CALL GOTO,SHACK 53 | RTRUE 54 | ?ELS5: EQUAL? PRSA,V?DROP \FALSE 55 | EQUAL? HERE,SHACK \FALSE 56 | CALL GOTO,SHACK-ROOM 57 | RTRUE 58 | 59 | 60 | .FUNCT BATTERED-LANTERN-F 61 | EQUAL? PRSA,V?ERASE-LINE \?ELS5 62 | PRINTR "Aladdin you're not." 63 | ?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS9 64 | PRINTR "The lamp seems to be broken, most likely beyond repair." 65 | ?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS13 66 | PRINTR "The lamp is made of brass and is old and battered. It doesn't seem likely that any use can be made of it." 67 | ?ELS13: EQUAL? PRSA,V?LAMP-OFF \FALSE 68 | FSET? PRSO,ONBIT /FALSE 69 | PRINTR "It isn't on!" 70 | 71 | 72 | .FUNCT SHACK-STUFF 73 | EQUAL? PRSA,V?PUT \FALSE 74 | EQUAL? PRSI,PSEUDO-OBJECT \FALSE 75 | PRINTR "They are overturned and don't make good surfaces." 76 | 77 | 78 | .FUNCT SHACK-OVEN-F 79 | EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \?ELS5 80 | PRINTR "It's not working." 81 | ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE 82 | PRINTR "Strangely, the oven is still slightly warm, as if it had been used recently." 83 | 84 | 85 | .FUNCT BREAD-F,AMT,S 86 | EQUAL? PRSA,V?EXAMINE \?ELS5 87 | PRINTI "There's " 88 | GETP BREAD,P?SIZE 89 | GET BREAD-EXAMINES,STACK 90 | PRINT STACK 91 | PRINTR " left." 92 | ?ELS5: EQUAL? PRSA,V?EAT \?ELS9 93 | CALL INT,I-HUNGER 94 | GET STACK,C-TICK >S 95 | GRTR? S,60 \?CND10 96 | PRINTR "You aren't the least bit hungry." 97 | ?CND10: GETP BREAD,P?SIZE 98 | SUB STACK,1 >AMT 99 | PUTP BREAD,P?SIZE,AMT 100 | ADD SCORE,EAT-POINT >SCORE 101 | SET 'EAT-POINT,0 102 | PRINTI "Mmm. That tasted great! " 103 | GET BREAD-AMTS,AMT 104 | PRINT STACK 105 | CRLF 106 | ZERO? AMT \?CND19 107 | REMOVE BREAD 108 | ?CND19: ADD S,47 109 | CALL QUEUE,I-HUNGER,STACK 110 | SET 'HUNGER-COUNT,0 111 | RTRUE 112 | ?ELS9: EQUAL? PRSA,V?BURN \?ELS23 113 | EQUAL? PRSI,ETERNAL-FLAME \?ELS23 114 | PRINTR "Toast without jam? What a silly idea!" 115 | ?ELS23: EQUAL? PRSA,V?MUNG,V?CUT \FALSE 116 | EQUAL? PRSI,MAGIC-KNIFE \FALSE 117 | PRINTR "It seems silly to cut up your bread when it's more easily carried in one piece. Besides, you might get crumbs all over your spell book." 118 | 119 | 120 | .FUNCT TREES-F 121 | EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5 122 | PRINTR "The trees are not suitable for climbing." 123 | ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE 124 | FSET? HERE,RMUNGBIT \?ELS14 125 | PRINTR "The trees are short and stunted and covered in a thick, grey ash. The roots themselves are blackened and foul-smelling." 126 | ?ELS14: PRINTR "The trees are mostly short and stunted." 127 | 128 | 129 | .FUNCT HOVEL-F 130 | EQUAL? HERE,VILLAGE \FALSE 131 | EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE 132 | CALL DO-WALK,P?SOUTH 133 | RTRUE 134 | 135 | 136 | .FUNCT HOVEL-KLUDGE 137 | PRINTI "It is dark and smoky in here, but this is a place of great disorder, and its odor is indescribable. A pile of rags sits near a small pot which is bubbling and steaming over a tiny fire. The pile of rags sports a gnarled hand which busies itself with the noisome stew. A closer look reveals a withered crone at the other end of the hand." 138 | CRLF 139 | ZERO? CRONE-MOVE \?ELS5 140 | CRLF 141 | PRINTI "The creature looks you over keenly and speaks: ""I should have thought they would send someone more ... more ..."" She laughs in an unsettling way. ""They've all left! A great storm is brewing in the east, my friend, and all have fled before it!"" She starts to chuckle. ""Take this and begone!"" With a wave of her hand, you find yourself reeling out of the door of the hovel, holding some sort of scroll in your hand." 142 | CRLF 143 | MOVE OPEN-SCROLL,WINNER 144 | SET 'CRONE-MOVE,MOVES 145 | RFALSE 146 | ?ELS5: SUB MOVES,CRONE-MOVE 147 | LESS? STACK,20 \?ELS9 148 | PRINTI "As you enter the crone's hovel, she booms at you: ""Are you here again? What a wizard!"" Her emphasis on the word ""wizard"" is filled with derision. ""Make a small effort, would you, to make your Circle proud of you?"" The same horrible emphasis on ""proud"" fills you with revulsion. ""Go!"" You find yourself back in the village." 149 | CRLF 150 | RFALSE 151 | ?ELS9: SET 'CRONE-MOVE,MOVES 152 | PRINTI "As you enter, the woman in rags wags her head slowly. ""You've returned, have you? You need help perhaps? Well, I've given you all the help in my meager store. You want more? Leave me!"" You find yourself in the village." 153 | CRLF 154 | RFALSE 155 | 156 | 157 | .FUNCT GLOBAL-CRONE-F 158 | EQUAL? PRSA,V?ZIFMIA \?ELS5 159 | PRINTR "Slowly, the old woman, swathed in rags, appears before you. She seems to be staring through you and speaks slowly and sullenly: ""I thought I might see you again, my friend! I gave you all the aid that I can. The rest is up to you..."" She disappears." 160 | ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9 161 | PRINTR "The crone was presumably the village wise woman and its last remaining inhabitant." 162 | ?ELS9: PRINTR "The crone isn't here." 163 | 164 | 165 | .FUNCT LONG-ROAD-F,RARG 166 | EQUAL? RARG,M-LOOK \FALSE 167 | PRINTI "You are walking along the road. It wends its way through low hills, sparse forests, and occasional subsistence farms. To the west, things seem lighter and more pleasant. To the east they seem oppressive and dark. A worn sign sits beside the road here." 168 | EQUAL? ROAD-LOC,ROAD-START \?CND8 169 | PRINTI " The deserted village is to the east." 170 | ?CND8: CRLF 171 | RTRUE 172 | 173 | 174 | .FUNCT FARM-PSEUDO 175 | EQUAL? PRSA,V?THROUGH,V?EXAMINE \FALSE 176 | PRINTR "It's a poor, run-down farm, and not of interest." 177 | 178 | 179 | .FUNCT LONG-ROAD-SIGN-F 180 | EQUAL? PRSA,V?READ,V?EXAMINE \FALSE 181 | SUB ROAD-LOC,ROAD-START 182 | GRTR? STACK,11 \?ELS10 183 | PRINTR "The sign is too worn to be read." 184 | ?ELS10: PRINTI """" 185 | SUB ROAD-LOC,ROAD-START 186 | GET SIGN-TBL,STACK 187 | PRINT STACK 188 | PRINTR """" 189 | 190 | 191 | .FUNCT LONG-ROAD-EXIT-F 192 | EQUAL? ROAD-LOC,ROAD-START \?ELS5 193 | EQUAL? PRSO,P?EAST \?ELS5 194 | RETURN WEST-FORK 195 | ?ELS5: FCLEAR LONG-ROAD,TOUCHBIT 196 | CALL ROAD-TO-TABLE,ROAD-LOC 197 | EQUAL? PRSO,P?WEST \?ELS12 198 | INC 'ROAD-LOC 199 | JUMP ?CND10 200 | ?ELS12: EQUAL? PRSO,P?EAST \?CND10 201 | DEC 'ROAD-LOC 202 | ?CND10: CALL TABLE-TO-ROAD,ROAD-LOC 203 | RETURN LONG-ROAD 204 | 205 | 206 | .FUNCT ROAD-TO-TABLE,SLOC,TBL,CNT=0,F,N 207 | FIRST? LONG-ROAD >F /?KLU21 208 | ?KLU21: SET 'TBL,ROAD-TABLE 209 | ?PRG1: ZERO? F /TRUE 210 | NEXT? F >N /?KLU22 211 | ?KLU22: EQUAL? F,WINNER \?ELS11 212 | JUMP ?CND9 213 | ?ELS11: FSET? F,TAKEBIT \?CND9 214 | ?PRG14: GET TBL,CNT 215 | ZERO? STACK \?ELS18 216 | PUT TBL,CNT,SLOC 217 | ADD CNT,1 218 | PUT TBL,STACK,F 219 | ADD CNT,2 >CNT 220 | REMOVE F 221 | JUMP ?CND9 222 | ?ELS18: ADD CNT,2 >CNT 223 | JUMP ?PRG14 224 | ?CND9: SET 'F,N 225 | JUMP ?PRG1 226 | 227 | 228 | .FUNCT TABLE-TO-ROAD,SLOC,TBL,CNT=0 229 | SET 'TBL,ROAD-TABLE 230 | ?PRG1: LESS? CNT,ROAD-TABLE-LENGTH \TRUE 231 | GET TBL,CNT 232 | EQUAL? STACK,SLOC \?CND3 233 | PUT TBL,CNT,0 234 | ADD CNT,1 235 | GET TBL,STACK 236 | MOVE STACK,LONG-ROAD 237 | ?CND3: ADD CNT,2 >CNT 238 | JUMP ?PRG1 239 | 240 | 241 | .FUNCT ROAD-F 242 | EQUAL? PRSA,V?TAKE,V?FOLLOW \?ELS5 243 | PRINTR "You should supply a compass direction in which to follow the path." 244 | ?ELS5: EQUAL? PRSA,V?DROP \FALSE 245 | CALL OUTSIDE?,HERE 246 | ZERO? STACK /?ELS14 247 | PRINTR "It's much safer to stay on the path, especially in these times." 248 | ?ELS14: PRINTR "You'll have to give a direction." 249 | 250 | 251 | .FUNCT HILLS-F 252 | EQUAL? PRSA,V?EXAMINE \?ELS5 253 | PRINTR "The hills are mostly low and shrouded in a fine mist-like haze. They stretch out mainly to the west." 254 | ?ELS5: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE 255 | CALL PERFORM,V?LEAVE,ROAD 256 | RTRUE 257 | 258 | 259 | .FUNCT MOUNTAIN-F 260 | EQUAL? PRSA,V?LEAP \?ELS5 261 | EQUAL? HERE,VISTA \?ELS5 262 | CALL JIGS-UP,STR?343 263 | RSTACK 264 | ?ELS5: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO \?ELS9 265 | EQUAL? HERE,VISTA \?ELS14 266 | PRINTR "You are here!" 267 | ?ELS14: EQUAL? HERE,VILLAGE,MOUNTAIN-TRAIL \?ELS18 268 | CALL DO-WALK,P?UP 269 | RSTACK 270 | ?ELS18: PRINTR "There's no way up the mountain from here." 271 | ?ELS9: EQUAL? PRSA,V?EXAMINE \FALSE 272 | PRINTR "The mountain is tall and proud, and its shining peak stands above the low-hanging clouds." 273 | 274 | 275 | .FUNCT OUTSIDE?,RM 276 | FSET? RM,LIGHTBIT \FALSE 277 | EQUAL? RM,SHACK,INSIDE-GATE /FALSE 278 | EQUAL? RM,PEBBLED-PATH,COURTYARD-1 /FALSE 279 | EQUAL? RM,COURTYARD-2,COURTYARD-3,COURTYARD-4 /FALSE 280 | EQUAL? RM,COURTYARD-5,COURTYARD-6,COURTYARD-7 /FALSE 281 | EQUAL? RM,SHACK-ROOM,BEDROOM \TRUE 282 | RFALSE 283 | 284 | 285 | .FUNCT I-SCURRY 286 | RANDOM 20 287 | ADD 15,STACK 288 | CALL QUEUE,I-SCURRY,STACK 289 | PUT STACK,0,1 290 | RANDOM 100 291 | GRTR? 25,STACK \FALSE 292 | CALL OUTSIDE?,HERE 293 | ZERO? STACK /?ELS10 294 | LESS? NIGHTFALL,70 \?ELS15 295 | RANDOM 100 296 | GRTR? 50,STACK \?ELS15 297 | PRINTR "You hear noises in the brambles. Snorting noises are followed by loud crashing and finally a hideous squeal of triumph." 298 | ?ELS15: PRINTR "You hear a rustling in the brambles nearby, and you catch a glimpse of something small and furry as it scurries away." 299 | ?ELS10: EQUAL? HERE,PIT,REAL-STAIR,PURLOINED-ROOM /FALSE 300 | EQUAL? HERE,WARLOCK-TOWER /FALSE 301 | GETP HERE,P?TMAZE 302 | ZERO? STACK \FALSE 303 | LOC WINNER 304 | EQUAL? STACK,DUNGEON,NORTH-CELL /?THN32 305 | LOC WINNER 306 | EQUAL? STACK,SECRET-PASSAGE \?ELS31 307 | ?THN32: PRINTR "You hear, almost beyond your hearing, the soft rattle of chains, and a cold wind blows over the back of your neck." 308 | ?ELS31: GRTR? TOD,NIGHTFALL \?ELS37 309 | CALL PICK-ONE,NIGHT-GLIMPSES 310 | PRINT STACK 311 | CRLF 312 | RTRUE 313 | ?ELS37: CALL PICK-ONE,GLIMPSES 314 | PRINT STACK 315 | CRLF 316 | RTRUE 317 | 318 | 319 | .FUNCT GLIMPSE-F 320 | GRTR? MOVES,0 \?ELS5 321 | PRINTR "You can't see that anymore." 322 | ?ELS5: PRINTR "You see no such thing." 323 | 324 | .ENDI 325 | -------------------------------------------------------------------------------- /record.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT V-$COMMAND 4 | DIRIN 1 5 | RTRUE 6 | 7 | 8 | .FUNCT V-$RANDOM 9 | EQUAL? PRSO,INTNUM /?ELS5 10 | PRINTR "Illegal call to #RANDOM." 11 | ?ELS5: SUB 0,P-NUMBER 12 | RANDOM STACK 13 | RTRUE 14 | 15 | 16 | .FUNCT V-$RECORD 17 | DIROUT D-RECORD-ON 18 | RTRUE 19 | 20 | 21 | .FUNCT V-$UNRECORD 22 | DIROUT D-RECORD-OFF 23 | RTRUE 24 | 25 | .ENDI 26 | -------------------------------------------------------------------------------- /record.zil: -------------------------------------------------------------------------------- 1 | "RECORD for 2 | MAGE 3 | (c) Copyright 1985 Infocom, Inc. All Rights Reserved." 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | > 13 | 14 | > 16 | ) 17 | (T 18 | > 19 | )>> 20 | 21 | 22 | 23 | 24 | ;"all READS and INPUTS get sent to command file" 26 | > 27 | 28 | 30 | > 31 | -------------------------------------------------------------------------------- /sleep.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT V-TIME,EL 4 | DIV TOD,10 >EL 5 | PRINTI "It would be " 6 | GET TIME-TABLE,EL 7 | PRINT STACK 8 | PRINTR " now." 9 | 10 | 11 | .FUNCT GLOBAL-SLEEP-F 12 | EQUAL? PRSA,V?TAKE,V?WALK-TO \?ELS5 13 | IN? WINNER,BEDROOM \?CND6 14 | MOVE WINNER,BED 15 | ?CND6: CALL PERFORM,V?SLEEP 16 | RTRUE 17 | ?ELS5: EQUAL? PRSA,V?FIND \FALSE 18 | PRINTR "Why not find a bed to sleep in?" 19 | 20 | 21 | .FUNCT I-THIRST 22 | IGRTR? 'THIRST-COUNT,5 \?ELS5 23 | SET 'THIRST-COUNT,0 24 | CALL QUEUE,I-THIRST,40 25 | SET 'WINNER,PLAYER 26 | CALL JIGS-UP,STR?240,FALSE-VALUE 27 | RSTACK 28 | ?ELS5: GET THIRST-TABLE,THIRST-COUNT 29 | PRINT STACK 30 | CRLF 31 | CALL QUEUE,I-THIRST,10 32 | RSTACK 33 | 34 | 35 | .FUNCT I-HUNGER 36 | IGRTR? 'HUNGER-COUNT,5 \?ELS5 37 | SET 'HUNGER-COUNT,0 38 | CALL QUEUE,I-HUNGER,47 39 | SET 'WINNER,PLAYER 40 | CALL JIGS-UP,STR?247,FALSE-VALUE 41 | RSTACK 42 | ?ELS5: GET HUNGER-TABLE,HUNGER-COUNT 43 | PRINT STACK 44 | CRLF 45 | CALL QUEUE,I-HUNGER,10 46 | RSTACK 47 | 48 | 49 | .FUNCT I-TIRED,FORG=0 50 | IN? WINNER,BED \?CND1 51 | PRINTI "The bed sure is comfortable and you are becoming tired." 52 | CRLF 53 | CALL V-SLEEP,TRUE-VALUE 54 | RETURN 2 55 | ?CND1: GRTR? LOAD-ALLOWED,10 \?CND8 56 | SUB LOAD-ALLOWED,10 >LOAD-ALLOWED 57 | ?CND8: GRTR? FUMBLE-NUMBER,1 \?CND11 58 | DEC 'FUMBLE-NUMBER 59 | ?CND11: INC 'FUMBLE-PROB 60 | GRTR? SPELL-MAX,1 \?CND14 61 | DEC 'SPELL-MAX 62 | ZERO? SPELL-ROOM /?CND17 63 | DEC 'SPELL-ROOM 64 | ?CND17: ZERO? SPELL-ROOM \?CND14 65 | SET 'FORG,TRUE-VALUE 66 | CALL FORGET-SPELL,DISPEL-SPELL 67 | ?CND14: CALL QUEUE,I-TIRED,10 68 | PUT STACK,0,1 69 | INC 'AWAKE 70 | GRTR? AWAKE,10 \?ELS27 71 | PRINTI "You drop in your tracks from exhaustion." 72 | CRLF 73 | CRLF 74 | CALL V-SLEEP 75 | RETURN 2 76 | ?ELS27: PRINTI "You are " 77 | GET TIRED-TELL,AWAKE 78 | PRINT STACK 79 | ZERO? FORG /?CND36 80 | PRINTI " and the spells you've memorized are becoming confused" 81 | ?CND36: PRINTR "." 82 | 83 | 84 | .FUNCT V-DIAGNOSE 85 | LESS? AWAKE,0 \?ELS3 86 | PRINTI "You are wide awake" 87 | JUMP ?CND1 88 | ?ELS3: PRINTI "You are " 89 | GET TIRED-TELL,AWAKE 90 | PRINT STACK 91 | ?CND1: PRINTI ". You are " 92 | GET THIRST-TELL,THIRST-COUNT 93 | PRINT STACK 94 | PRINTI " and " 95 | GET HUNGER-TELL,HUNGER-COUNT 96 | PRINT STACK 97 | PRINTR "." 98 | 99 | 100 | .FUNCT V-SLEEP,TOLD?=0,TILL-TIRED,MUNGED? 101 | SUB MOVES,LAST-SLEEP 102 | SUB MOVES-PER-DAY,STACK >TILL-TIRED 103 | EQUAL? HERE,REAL-STAIR,PIT \?ELS5 104 | PRINTR "To sleep here would be fatal!" 105 | ?ELS5: GRTR? TILL-TIRED,10 \?ELS9 106 | PRINTR "You settle down to sleep, but you really aren't tired, so you thrash around for a while and then give up." 107 | ?ELS9: EQUAL? HERE,ENGINE-ROOM,CLOSET,SE-TOWER \?ELS13 108 | PRINTR "You try to sleep but it's too noisy." 109 | ?ELS13: EQUAL? HERE,BEDROOM \?ELS17 110 | IN? WINNER,BED /?ELS17 111 | ZERO? BED-WARNING \?ELS17 112 | GRTR? AWAKE,10 /?ELS17 113 | SET 'BED-WARNING,TRUE-VALUE 114 | PRINTR "You might try getting into the bed first. It would be more comfortable." 115 | ?ELS17: GRTR? TILL-TIRED,0 \?CND24 116 | IN? WINNER,BED \?CND24 117 | ZERO? TOLD? \?CND24 118 | PRINTI "You're not all that tired, but the bed is very comfortable." 119 | CRLF 120 | ?CND24: INC 'REAL-SPELL-MAX 121 | SET 'SPELL-MAX,REAL-SPELL-MAX 122 | SET 'SPELL-ROOM,SPELL-MAX 123 | SET 'LAST-SLEEP,MOVES 124 | ADD MOVES,MOVES-PER-SLEEP >MOVES 125 | ADD TOD,MOVES-PER-SLEEP 126 | MOD STACK,128 >TOD 127 | SET 'LOAD-ALLOWED,LOAD-MAX 128 | SET 'FUMBLE-NUMBER,7 129 | SET 'FUMBLE-PROB,8 130 | CALL QUEUE,I-TIRED,MOVES-PER-DAY 131 | PUT STACK,0,1 132 | SET 'AWAKE,-1 133 | CALL FORGET-ALL 134 | FSET? HERE,RMUNGBIT /?PRD31 135 | PUSH 0 136 | JUMP ?PRD32 137 | ?PRD31: PUSH 1 138 | ?PRD32: SET 'MUNGED?,STACK 139 | CALL I-MUNG-ROOM,FALSE-VALUE 140 | CALL I-MUNG-ROOM,FALSE-VALUE 141 | CALL I-MUNG-ROOM,FALSE-VALUE 142 | ZERO? MUNGED? \?ELS35 143 | FSET? HERE,RMUNGBIT \?ELS35 144 | PRINTR "You fall asleep quickly and begin to dream. The dream turns into a nightmare of decay and desolation, as your surroundings turn grey and lifeless. You feel a great weight, like a pile of ashes, constricting your movements, and then you bolt awake!" 145 | ?ELS35: IN? WINNER,BED \?CND33 146 | IN? BEDPOST-BUTTON,BED /?CND33 147 | GRTR? CHARM-POINT,0 \?CND33 148 | MOVE BEDPOST-BUTTON,BED 149 | PRINTR "You fall asleep quickly, the bed being so comfortable. You dream as well, of this very room. A beautiful damsel, obviously noble, is standing by the bed holding a scroll in one hand and resting the other on the bedpost. Turning to block your view, she does something you can't see. Then she gets in bed and turns out the light, but before she does you can see she is no longer carrying the scroll... You wake." 150 | ?CND33: PRINTI "Ah, sleep! It's been a long day, indeed. The rest will do you good. " 151 | IN? WINNER,BED \?ELS50 152 | PRINTI "You make yourself comfortable on the bed" 153 | JUMP ?CND48 154 | ?ELS50: CALL OUTSIDE?,HERE 155 | ZERO? STACK /?ELS54 156 | PRINTI "You spread your cloak under the open sky" 157 | JUMP ?CND48 158 | ?ELS54: PRINTI "You spread your cloak on the floor" 159 | ?CND48: PRINTI " and drift off, renewing your powers and refreshing your mind ... Time passes as you snore blissfully." 160 | CRLF 161 | CRLF 162 | CALL OUTSIDE?,HERE 163 | ZERO? STACK /?ELS67 164 | ZERO? PROTECTED-FROM-EVIL \?ELS67 165 | RANDOM 100 166 | GRTR? MOLESTED,STACK \?ELS67 167 | RANDOM 100 168 | GRTR? MUNCHED,STACK \?ELS74 169 | CALL JIGS-UP,STR?277 170 | RETURN 2 171 | ?ELS74: CALL ROB,WINNER 172 | CALL ROB,HERE 173 | PRINTR "You don't sleep too well, and you awake at least once with the feeling that something has jostled you in the dark." 174 | ?ELS67: ZERO? GALLERY-POINT /?ELS82 175 | ZERO? GALLERY-DREAM \?ELS82 176 | SET 'GALLERY-DREAM,TRUE-VALUE 177 | PRINTR "After a while, your sleep is disturbed by a strange dream. You are wandering in a darkened place, for you have no light or other possessions. You feel that you are being watched! You are surrounded by faces, their eyes following you. They drift in and out, staring at you with proud indifference. One face, brightly lit (unlike the rest), draws you closer and closer. As you touch it, you wake." 178 | ?ELS82: ZERO? GALLERY-POINT /?ELS88 179 | RANDOM 100 180 | GRTR? 70,STACK \?ELS88 181 | PRINTR "Your sleep is disturbed by the strange dream of an earlier night. You are in the dark, with no light or other possessions. You are surrounded by many faces, their eyes following you. The one brightly lit face beckons you closer and closer. You wake, convinced that the dream holds a message for you." 182 | ?ELS88: ZERO? DOOR-KULCAD \?ELS94 183 | ZERO? DOOR-DREAM \?ELS94 184 | FSET? DOOR-REALITY,INVISIBLE \?ELS94 185 | SET 'DOOR-DREAM,TRUE-VALUE 186 | PRINTR "You dream of a nondescript room in which a cartoonish figure casually opens a simple wooden door and ascends the flight of stairs which lies behind. The scene fades to black, but you awaken in a cold sweat." 187 | ?ELS94: ZERO? DOOR-KULCAD /?ELS100 188 | ZERO? DOOR-DREAM-2 \?ELS100 189 | SET 'DOOR-DREAM-2,TRUE-VALUE 190 | PRINTR "You dream of climbing in an unfamiliar place. You seem to climb forever, beyond reason. A fleeting hope arises in you, and you search furiously in your spell book and possessions for something. After a moment, you become frantic as you realize that you don't have it! You bolt awake in a cold sweat." 191 | ?ELS100: ZERO? PROTECTED-FROM-EVIL \?ELS106 192 | RANDOM 100 193 | GRTR? 50,STACK \?ELS106 194 | CALL ROB,HERE,WARLOCK-TOWER 195 | RANDOM 100 196 | GRTR? 50,STACK \?CND109 197 | CALL ROB,WINNER,WARLOCK-TOWER 198 | ?CND109: LOC WINNER 199 | EQUAL? HERE,STACK /?CND112 200 | LOC WINNER 201 | CALL ROB,STACK,WARLOCK-TOWER 202 | ?CND112: PRINTR "You sleep fitfully. At one point it seems that some evil presence is searching nearby. The tense feeling passes, but it's replaced by one of foreboding." 203 | ?ELS106: RANDOM 100 204 | GRTR? 50,STACK \?ELS118 205 | PRINTR "You sleep uneventfully, dreamlessly, and awake refreshed." 206 | ?ELS118: CALL PICK-ONE,DREAMS 207 | PRINT STACK 208 | PRINTR " You awaken." 209 | 210 | .ENDI 211 | -------------------------------------------------------------------------------- /sleep.zil: -------------------------------------------------------------------------------- 1 | "SLEEP for 2 | ENCHANTER 3 | Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | ;"Not exactly Holiday Inn, much less the Ritz" 7 | 8 | 9 | 10 | 11 | 12 | 13 | > 15 | " now." CR>> 16 | 17 | > 31 | 32 | 37 | 38 | 40 | 41 | )> 42 | 43 | ) 44 | ( )>> 45 | 46 | 47 | 48 | > 5> 50 | 51 | 52 | 53 | >) 55 | (T 56 | CR> 57 | )>> 58 | 59 | > 66 | 67 | 68 | 69 | > 5> 71 | 72 | 73 | 74 | >) 76 | (T 77 | CR> 78 | )>> 79 | 80 | > 87 | 88 | )) 89 | 90 | 92 | 93 | )> 94 | 95 | >)> 96 | 97 | >)> 98 | > 99 | 100 | > 101 | > 102 | >)> 103 | 104 | 105 | )>)> 106 | > 107 | > 108 | 109 | 111 | 112 | 113 | ) 114 | (ELSE 115 | > 116 | )> 119 | )>> 120 | 121 | 122 | 123 | 125 | ) 126 | (T >)> 127 | 128 | > 129 | 130 | > 131 | > 132 | 133 | > 141 | 142 | > 149 | 150 | > 163 | 164 | > 165 | 166 | ) "AUX" TILL-TIRED MUNGED?) 167 | >> 168 | 169 | ) 170 | ( 171 | ) 174 | ( 175 | ) 176 | ( 177 | > 178 | 179 | >> 180 | 181 | ) 183 | (ELSE 184 | 185 | 186 | > 187 | )> 189 | > 190 | 191 | 192 | 193 | > 194 | 128>> 195 | 196 | 197 | 198 | > 199 | 200 | 201 | > 202 | > 203 | > 204 | > 205 | 206 | > 207 | 212 | ) 213 | ( 214 | > 215 | > 216 | 217 | 224 | )> 225 | 228 | 229 | ) 230 | ( 231 | ) 232 | (T )> 233 | 235 | 236 | 237 | 238 | > 239 | 240 | 244 | ) 245 | (ELSE 246 | 247 | 248 | )>) 251 | (> 252 | > 253 | 254 | ) 261 | (> > 262 | ) 268 | ( 269 | 270 | > 271 | 272 | ) 276 | (> 277 | 278 | ) 284 | ( 285 | > 286 | 287 | )> 288 | >> 289 | ,WARLOCK-TOWER>)> 290 | ) 293 | ( 294 | ) 296 | (ELSE 297 | > 298 | )>)>> 299 | 300 | > 301 | 302 | > 303 | 304 | > 305 | 306 | 307 | 308 | 309 | > 328 | 329 | -------------------------------------------------------------------------------- /stair.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT LANDING-EXIT-F 4 | ZERO? STAIR-SOLVED? /?ELS5 5 | PRINTI "There is no floor there, and the pit beneath you is of great, if not infinite, depth. You fall forever." 6 | CALL FINISH 7 | RSTACK 8 | ?ELS5: RETURN ENDLESS-STAIR 9 | 10 | 11 | .FUNCT ADVENTURER-DROPS-OUT 12 | PRINTI "The adventurer seems to have dropped out of existence. In a voice that seems to recede into the void, you hear his final word: ""Restore...."" You muse about how a mere adventurer might come to possess a spell of such power." 13 | CRLF 14 | REMOVE ADVENTURER 15 | CALL QUEUE,I-ADVENTURER,0 16 | RTRUE 17 | 18 | 19 | .FUNCT STAIRS-F 20 | EQUAL? HERE,JUNCTION \?ELS5 21 | PRINTR "The stairs are to the east. You'll have to go there to get a look." 22 | ?ELS5: EQUAL? HERE,ENDLESS-STAIR \FALSE 23 | EQUAL? PRSA,V?KULCAD \FALSE 24 | CALL STAIR-DISPEL 25 | RSTACK 26 | 27 | 28 | .FUNCT STAIR-DISPEL 29 | CALL QUEUE,I-HUNGER,0 30 | CALL QUEUE,I-THIRST,0 31 | CALL QUEUE,I-TIRED,0 32 | CALL QUEUE,I-TURTLE,0 33 | SET 'STAIR-SOLVED?,TRUE-VALUE 34 | ADD SCORE,STAIR-POINT >SCORE 35 | SET 'STAIR-POINT,0 36 | CALL DESTROY-ALL,WINNER,REAL-STAIR >DROPPED-SOME? 37 | MOVE FLY-SCROLL,WINNER 38 | PRINTI "The stairway begins to dissolve before your eyes, leaving a circular area with exits east and west, but remarkable mainly for its absence of a floor. Indeed, you find yourself standing in midair above a deep pit with the sort of comical look which is found mainly among duped cartoon characters. Frantically, you grab for the solid bannister" 39 | ZERO? DROPPED-SOME? /?CND3 40 | PRINTI ", dropping your heavier possessions in your desire to save yourself" 41 | ?CND3: PRINTI "! But the bannister shifts and dissolves as well, leaving you grasping what appears to be an ornate scroll." 42 | CRLF 43 | CALL THIS-IS-IT,FLY-SCROLL 44 | CALL QUEUE,I-FALL-FOREVER,5 45 | PUT STACK,0,1 46 | CALL QUEUE,I-FALL,-1 47 | PUT STACK,0,1 48 | CALL INT,I-TIRED 49 | PUT STACK,0,0 50 | CALL GOTO,REAL-STAIR,FALSE-VALUE 51 | RTRUE 52 | 53 | 54 | .FUNCT ENDLESS-UP 55 | CALL ENDLESS-UP-DOWN,TRUE-VALUE 56 | RETURN ENDLESS-STAIR 57 | 58 | 59 | .FUNCT ENDLESS-DOWN 60 | CALL ENDLESS-UP-DOWN,FALSE-VALUE 61 | RETURN ENDLESS-STAIR 62 | 63 | 64 | .FUNCT ENDLESS-UP-DOWN,UP? 65 | FCLEAR ENDLESS-STAIR,TOUCHBIT 66 | CALL STAIR-TO-TABLE,STAIR-LOC 67 | PRINTI "You " 68 | ZERO? UP? /?ELS5 69 | PRINTI "climb" 70 | INC 'STAIR-LOC 71 | JUMP ?CND3 72 | ?ELS5: PRINTI "descend" 73 | DEC 'STAIR-LOC 74 | ?CND3: PRINTI " the stairs, making one circuit of the tower." 75 | CRLF 76 | CALL TABLE-TO-STAIR,STAIR-LOC 77 | RSTACK 78 | 79 | 80 | .FUNCT ENDLESS-STAIR-F,RARG 81 | EQUAL? RARG,M-LOOK \?ELS5 82 | PRINTI "This is a winding stair, stretching up and down out of sight. The walls are mossy and damp." 83 | EQUAL? STAIR-LOC,STAIR-START \?CND8 84 | PRINTI " An exit leads west to a landing." 85 | ?CND8: CRLF 86 | RTRUE 87 | ?ELS5: EQUAL? RARG,M-ENTER \FALSE 88 | EQUAL? WINNER,PLAYER /FALSE 89 | LOC PLAYER 90 | IN? WINNER,STACK /FALSE 91 | REMOVE WINNER 92 | SET 'P-CONT,FALSE-VALUE 93 | SET 'QUOTE-FLAG,FALSE-VALUE 94 | RFALSE 95 | 96 | 97 | .FUNCT ENDLESS-EXIT-F 98 | EQUAL? STAIR-LOC,STAIR-START \?ELS5 99 | RETURN LANDING 100 | ?ELS5: PRINTI "You can't go that way." 101 | CRLF 102 | RFALSE 103 | 104 | 105 | .FUNCT STAIR-TO-TABLE,SLOC,TBL,CNT=0,F,N 106 | FIRST? ENDLESS-STAIR >F /?KLU21 107 | ?KLU21: SET 'TBL,STAIR-TABLE 108 | ?PRG1: ZERO? F /TRUE 109 | NEXT? F >N /?KLU22 110 | ?KLU22: EQUAL? F,WINNER \?ELS11 111 | JUMP ?CND9 112 | ?ELS11: FSET? F,TAKEBIT \?CND9 113 | ?PRG14: GET TBL,CNT 114 | ZERO? STACK \?ELS18 115 | PUT TBL,CNT,SLOC 116 | ADD CNT,1 117 | PUT TBL,STACK,F 118 | ADD CNT,2 >CNT 119 | REMOVE F 120 | JUMP ?CND9 121 | ?ELS18: ADD CNT,2 >CNT 122 | JUMP ?PRG14 123 | ?CND9: SET 'F,N 124 | JUMP ?PRG1 125 | 126 | 127 | .FUNCT TABLE-TO-STAIR,SLOC,TBL,CNT=0 128 | SET 'TBL,STAIR-TABLE 129 | ?PRG1: LESS? CNT,STAIR-TABLE-LENGTH \TRUE 130 | GET TBL,CNT 131 | EQUAL? STACK,SLOC \?CND3 132 | PUT TBL,CNT,0 133 | ADD CNT,1 134 | GET TBL,STACK 135 | MOVE STACK,ENDLESS-STAIR 136 | ?CND3: ADD CNT,2 >CNT 137 | JUMP ?PRG1 138 | 139 | 140 | .FUNCT REAL-STAIR-EXIT-F 141 | SET 'FALL-COUNT,0 142 | ZERO? FLYING? /?ELS5 143 | PRINTI "Effortlessly, you float " 144 | EQUAL? PRSO,P?DOWN \?ELS13 145 | SET 'FALL-COUNT,1 146 | PRINTI "downward." 147 | CRLF 148 | CALL DESTROY-ALL,HERE,PIT 149 | RETURN PIT 150 | ?ELS13: EQUAL? PRSO,P?EAST \?ELS17 151 | ADD SCORE,FLY-POINT >SCORE 152 | SET 'FLY-POINT,0 153 | CALL STOP-FLYING 154 | PRINTI "eastward and settle to the ground." 155 | CRLF 156 | RETURN WARLOCK-TOWER 157 | ?ELS17: EQUAL? PRSO,P?WEST \FALSE 158 | CALL STOP-FLYING 159 | PRINTI "westward and settle to the ground." 160 | CRLF 161 | RETURN LANDING 162 | ?ELS5: PRINTI "You must think you can fly." 163 | CRLF 164 | RFALSE 165 | 166 | 167 | .FUNCT PIT-EXIT-F 168 | ZERO? FLYING? /?ELS5 169 | PRINTI "Effortlessly, you float " 170 | EQUAL? PRSO,P?DOWN \?ELS11 171 | INC 'FALL-COUNT 172 | PRINTI "downward." 173 | CRLF 174 | JUMP ?CND9 175 | ?ELS11: DEC 'FALL-COUNT 176 | PRINTI "upward." 177 | CRLF 178 | ?CND9: ZERO? FALL-COUNT \?ELS22 179 | CALL DESTROY-ALL,HERE,REAL-STAIR 180 | RETURN REAL-STAIR 181 | ?ELS22: CALL DESTROY-ALL,HERE,PIT 182 | FCLEAR PIT,TOUCHBIT 183 | RETURN PIT 184 | ?ELS5: PRINTI "You must think you can fly." 185 | CRLF 186 | RFALSE 187 | 188 | 189 | .FUNCT PIT-F,RARG 190 | EQUAL? RARG,M-BEG \FALSE 191 | EQUAL? PRSA,V?DROP \?ELS10 192 | CALL HELD?,PRSO 193 | ZERO? STACK /?ELS10 194 | FSET PRSO,NDESCBIT 195 | FCLEAR PRSO,TAKEBIT 196 | PRINTI "The " 197 | PRINTD PRSO 198 | PRINTR " falls out of sight below you." 199 | ?ELS10: EQUAL? PRSA,V?EXAMINE,V?TAKE \FALSE 200 | CALL HELD?,PRSO 201 | ZERO? STACK \FALSE 202 | PRINTI "The " 203 | PRINTD PRSO 204 | PRINTR " is out of reach below you." 205 | 206 | 207 | .FUNCT STOP-FLYING 208 | SET 'FLYING?,FALSE-VALUE 209 | CALL QUEUE,I-FALL,0 210 | CALL QUEUE,I-FALL-FOREVER,0 211 | CALL QUEUE,I-FLY,0 212 | RTRUE 213 | 214 | 215 | .FUNCT I-FALL 216 | ZERO? FLYING? \TRUE 217 | INC 'FALL-COUNT 218 | PRINTI "You plummet downward, deeper into the pit, but the bottom is still not visible." 219 | ZERO? DROPPED-SOME? /TRUE 220 | PRINTR " Far ahead of you fall your former possessions." 221 | 222 | 223 | .FUNCT I-FALL-FOREVER 224 | PRINTI "You plummet deeper and deeper into the pit! Oddly enough, you never seem to hit bottom. After many years, only tattered remnants of you remain, still falling." 225 | CRLF 226 | CALL FINISH 227 | RSTACK 228 | 229 | 230 | .FUNCT DESTROY-ALL,WHO,WHERE,N,X,DEST?=0 231 | FIRST? WHO >X /?KLU11 232 | ?KLU11: 233 | ?PRG1: ZERO? X \?CND3 234 | RETURN DEST? 235 | ?CND3: NEXT? X >N /?KLU12 236 | ?KLU12: EQUAL? X,WINNER /?CND6 237 | GETP X,P?SIZE 238 | GRTR? STACK,4 \?CND6 239 | CALL REMOVE-ALL,X 240 | MOVE X,WHERE 241 | FSET X,NDESCBIT 242 | FCLEAR X,TAKEBIT 243 | SET 'DEST?,TRUE-VALUE 244 | ?CND6: SET 'X,N 245 | JUMP ?PRG1 246 | 247 | 248 | .FUNCT REMOVE-ALL,WHAT,N,X 249 | FIRST? WHAT >X /?KLU6 250 | ?KLU6: 251 | ?PRG1: ZERO? X /TRUE 252 | NEXT? X >N /?KLU7 253 | ?KLU7: REMOVE X 254 | SET 'X,N 255 | JUMP ?PRG1 256 | 257 | 258 | .FUNCT WARLOCK-TOWER-F,RARG 259 | EQUAL? RARG,M-ENTER \FALSE 260 | FSET WARLOCK-TOWER,TOUCHBIT 261 | PRINTI "As you enter, you realize that this is Krill's secret chamber, protected by powerful illusions now broken by your skills. Before you stands Krill, engaged in the casting of some complex and horrific magic. Krill turns to face you, surprised and annoyed by your intrusion. You have seen him before: cloaked in black, he sacrificed you at the Altar before his hoard. His yellow eyes glisten and he breathes deeply. In a voice as deep as the great caverns of the earth, he speaks: ""Fool! Parlor magician! You dare to defile my chamber with your worm-like presence. I shall not waste words with you. Goodbye, spell-monger!""" 262 | EQUAL? HASTED?,PLAYER \?CND8 263 | PRINTI " He pauses. ""Ah! You seem to be in a hurry, campfire-conjurer! Slow down and enjoy the show!"" He waves his hand, and you are robbed of your energy." 264 | ?CND8: PRINTI " Krill snaps his fingers loudly, and a giant dragon appears, breathing gouts of flame. He moves ever closer, red eyes bulging with malice!" 265 | CRLF 266 | CRLF 267 | MOVE DRAGON,HERE 268 | CALL QUEUE,I-DRAGON,2 269 | PUT STACK,0,1 270 | RTRUE 271 | 272 | 273 | .FUNCT GLOBAL-KRILL-F 274 | EQUAL? PRSA,V?GIVE,V?HELLO,V?GUNCHO \?ELS5 275 | PRINTR "Krill is not here, and lucky for you." 276 | ?ELS5: EQUAL? PRSA,V?ZIFMIA \?ELS9 277 | CALL JIGS-UP,STR?85,FALSE-VALUE 278 | RSTACK 279 | ?ELS9: EQUAL? PRSA,V?WHO,V?EXAMINE \?ELS11 280 | PRINTR "Krill is an evil warlock who was banished from the Circle of Enchanters. His malice was thought to be forever ended, his reign of terror a dim and frightful memory. But he has returned, and his power must be destroyed lest the Circle's great works be overthrown." 281 | ?ELS11: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-KRILL 282 | RTRUE 283 | 284 | 285 | .FUNCT DRAGON-F 286 | EQUAL? PRSA,V?GONDAR \?ELS5 287 | PRINTI "The dragon's flame is doused in a torrent of water as you cast the gondar spell! He disappears with a torturous scream." 288 | REMOVE DRAGON 289 | CALL SECOND-ACT 290 | RSTACK 291 | ?ELS5: EQUAL? PRSA,V?NITFOL,V?VAXUM \?ELS9 292 | PRINTI "The dragon pauses and roars out a benevolent greeting, which, to your chagrin, fries you to a delicate crisp." 293 | CRLF 294 | CALL FINISH 295 | RSTACK 296 | ?ELS9: EQUAL? PRSA,V?GUNCHO \?ELS13 297 | PRINTI "Unfortunately, the dragon is practically on top of you, and before you can finish saying the guncho spell he blasts you to beyond well-done." 298 | CRLF 299 | CALL FINISH 300 | RSTACK 301 | ?ELS13: EQUAL? PRSA,V?CLEESH \?ELS17 302 | PRINTR "The dragon, being reptilian himself, is unaffected." 303 | ?ELS17: EQUAL? PRSA,V?MUNG,V?ATTACK,V?KILL \FALSE 304 | PRINTR "Your strength isn't nearly enough to best the dragon!" 305 | 306 | 307 | .FUNCT SECOND-ACT,GUNCH=0 308 | CRLF 309 | PRINTI "Krill " 310 | ZERO? GUNCH /?ELS5 311 | PRINTI "seems shaken, but regains his composure." 312 | JUMP ?CND3 313 | ?ELS5: PRINTI "seems to be somewhat amused." 314 | ?CND3: CRLF 315 | CRLF 316 | PRINTI """A fine spell, wizard-worm, but your luck has ended!"" With another snap of his fingers, he summons a being whose essence is evil. It has a shape which is masked by its blackness and exudes a foul, fetid odor. In its hand is a large battle axe. At a signal from Krill, it advances!" 317 | CRLF 318 | CALL QUEUE,I-SHAPE,2 319 | PUT STACK,0,1 320 | MOVE SHAPE,HERE 321 | RTRUE 322 | 323 | 324 | .FUNCT I-DRAGON 325 | IN? DRAGON,HERE \?CND1 326 | EQUAL? DEATH-CHEATED,ME /?THN7 327 | ZERO? PROTECTED-FROM-EVIL /?CND4 328 | ?THN7: PRINT NO-LONGER-PROTECTED 329 | CRLF 330 | ?CND4: PRINTI "The dragon engulfs you in flame. As you perish, you can hear Krill's mocking laughter." 331 | CRLF 332 | CALL FINISH 333 | ?CND1: CALL QUEUE,I-DRAGON,0 334 | RTRUE 335 | 336 | 337 | .FUNCT SHAPE-F 338 | EQUAL? PRSA,V?VAXUM \?ELS5 339 | PRINTI "The monster hesitates, stops, smiles, and disappears." 340 | CRLF 341 | CALL THIRD-ACT 342 | RSTACK 343 | ?ELS5: EQUAL? PRSA,V?CLEESH \?ELS9 344 | PRINTI "The monster hesitates, trembles, then turns into a newt. Poor monster. Its battle axe, now unsupported, falls on it, slicing it neatly in half." 345 | CRLF 346 | CALL THIRD-ACT 347 | RSTACK 348 | ?ELS9: EQUAL? PRSA,V?NITFOL \?ELS13 349 | PRINTI """Yum, yum!"" are the last words you hear." 350 | CRLF 351 | CALL FINISH 352 | RSTACK 353 | ?ELS13: EQUAL? PRSA,V?GUNCHO \?ELS17 354 | PRINTI "The monster pauses for a moment as you begin the guncho spell, then swiftly cleaves you with its axe before you can finish!" 355 | CRLF 356 | CALL FINISH 357 | RSTACK 358 | ?ELS17: EQUAL? PRSA,V?MUNG,V?ATTACK,V?KILL \FALSE 359 | PRINTR "Your effort is useless. It is still coming closer!" 360 | 361 | 362 | .FUNCT THIRD-ACT 363 | REMOVE SHAPE 364 | CRLF 365 | PRINTI "Krill seems to be losing patience. 366 | 367 | ""I am through playing games, carnival-clown! You shall return to your Circle, but I am afraid that all the little pieces will prove hard to reassemble!"" He laughs hideously and starts a guttural chant which shakes the very tower." 368 | CRLF 369 | SET 'KRILL-KILL,TRUE-VALUE 370 | CALL QUEUE,I-BYE,2 371 | PUT STACK,0,1 372 | RTRUE 373 | 374 | 375 | .FUNCT I-SHAPE 376 | IN? SHAPE,HERE \?CND1 377 | EQUAL? DEATH-CHEATED,ME /?THN7 378 | ZERO? PROTECTED-FROM-EVIL /?CND4 379 | ?THN7: PRINT NO-LONGER-PROTECTED 380 | CRLF 381 | ?CND4: PRINTI "The monster hits you with its battle axe! You fall, dead, as the laughter of Krill reaches a crescendo!" 382 | CRLF 383 | CALL FINISH 384 | ?CND1: CALL QUEUE,I-SHAPE,0 385 | RTRUE 386 | 387 | 388 | .FUNCT I-BYE 389 | EQUAL? HERE,WARLOCK-TOWER \FALSE 390 | CRLF 391 | PRINTI "Krill finishes his spell and his harsh laughter is all that remains! You are in a void, without sight, sound, or sensation. You scream at the top of your lungs, but nothing happens. You break into a cold sweat as you ponder the infinite, beyond all help and hope!" 392 | CRLF 393 | CALL FINISH 394 | RSTACK 395 | 396 | 397 | .FUNCT KRILL-F 398 | EQUAL? PRSA,V?EXAMINE \?ELS5 399 | PRINTR "Krill is not a pretty sight! Enough said." 400 | ?ELS5: EQUAL? PRSA,V?GUNCHO \?ELS9 401 | ZERO? KRILL-KILL /?ELS9 402 | PRINTI "Krill recoils as he hears the first words of the guncho spell. For a few seconds he continues with the spell he was casting, trying to finish before you. He fumbles some syllables! Then he steps back and, with his hands outstretched toward you, lets out a bloodcurdling scream. His face twisted, and his body vibrating with the effort of resisting the enchantment, he utters a spell of power, and is gone! After a quiet moment, a rumble begins deep in the earth. It strengthens as the tower starts to sway. The floor gives way beneath you and you tumble down towards the sea ... then you are surrounded by a burst of light. 403 | 404 | You realize that you are with the Circle. The Eldest of the Circle, Belboz, rises and speaks: ""The evil of Krill is ended this day. From beyond hope, you have proved yourself great and worthy. Our hearts are gladdened at your return."" A chair appears at his right hand and he motions for you to sit beside him. He smiles warmly. ""Join with us,"" he says, ""and tell us of your quest!"" 405 | 406 | Here ends the first chapter of the Enchanter saga, in which, by virtue of your skills, you have joined the Circle of Enchanters. Further adventures await you as the Enchanter series continues." 407 | CRLF 408 | CRLF 409 | ADD SCORE,WARLOCK-POINT >SCORE 410 | USL 411 | CALL FINISH 412 | RSTACK 413 | ?ELS9: EQUAL? PRSA,V?CLEESH \?ELS15 414 | PRINTR "Krill shimmers for a moment, then laughs heartily. The laugh sounds vaguely like a croak, but perhaps it is only your imagination." 415 | ?ELS15: EQUAL? PRSA,V?VAXUM \?ELS19 416 | PRINTR "The spell seems to have no influence over Krill. You wouldn't much like to see him smile, anyway." 417 | ?ELS19: EQUAL? PRSA,V?GUNCHO \?ELS23 418 | PRINTI "The look of surprise on Krill's face as you recite the first few syllables of the guncho spell is exceeded only by your look of disappointment as you are " 419 | IN? SHAPE,HERE \?ELS30 420 | PUSH STR?88 421 | JUMP ?CND26 422 | ?ELS30: PUSH STR?89 423 | ?CND26: PRINT STACK 424 | CRLF 425 | CALL FINISH 426 | RSTACK 427 | ?ELS23: EQUAL? PRSA,V?HELLO \FALSE 428 | PRINTR "Krill grins and the sight is ghastly." 429 | 430 | 431 | .FUNCT I-MUNG-ROOM,TELL?=1,RM,TBL 432 | CALL QUEUE,I-MUNG-ROOM,20 433 | PUT STACK,0,1 434 | SET 'TBL,MUNG-ROOM-TABLE 435 | ?PRG1: GET TBL,0 >RM 436 | ZERO? RM /?REP2 437 | FSET? RM,RMUNGBIT /?CND6 438 | JUMP ?REP2 439 | ?CND6: ADD TBL,2 >TBL 440 | JUMP ?PRG1 441 | ?REP2: ZERO? RM /?CND11 442 | FSET RM,RMUNGBIT 443 | FCLEAR RM,TOUCHBIT 444 | ZERO? TELL? /?CND11 445 | EQUAL? RM,HERE \?CND11 446 | PRINTI "Suddenly, you sense a great wind of evil magic blowing around you. You are weighed down by its power, and only your sorcerous training permits you to withstand it. When you regain your composure, your surroundings have changed." 447 | CRLF 448 | ?CND11: RETURN RM 449 | 450 | .ENDI 451 | -------------------------------------------------------------------------------- /syntax.zap: -------------------------------------------------------------------------------- 1 | 2 | .ENDI 3 | -------------------------------------------------------------------------------- /temple.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT ALTAR-PSEUDO 4 | EQUAL? PRSA,V?EXAMINE \?ELS5 5 | PRINTR "A close examination of the altar nearly sickens you. It fairly screams with the memory of the horrors it has seen since the coming of Krill. Its original white marble has been crusted with blood and desecrated by the minions of the evil Warlock." 6 | ?ELS5: EQUAL? HERE,TEMPLE \?ELS9 7 | EQUAL? PRSA,V?CLIMB-ON,V?CLIMB-FOO,V?CLIMB-UP /?THN12 8 | EQUAL? PRSA,V?WALK-TO \?ELS9 9 | ?THN12: CALL DO-WALK,P?UP 10 | RTRUE 11 | ?ELS9: EQUAL? PRSA,V?RUB,V?WALK-TO,V?CLIMB-ON /?THN16 12 | EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE 13 | ?THN16: PRINTR "There is nothing you would like less than nearing the altar." 14 | 15 | 16 | .FUNCT STATUE-F 17 | EQUAL? PRSA,V?EXAMINE \?ELS5 18 | PRINTR "It is an enormous statue of a loathsome creature, dark and vile, with dripping fangs and razor-sharp talons. It appears almost to be motioning with its outstretched talons for you to approach." 19 | ?ELS5: EQUAL? PRSA,V?RUB \FALSE 20 | PRINTR "Your sensibilities are offended by the very idea." 21 | 22 | 23 | .FUNCT GANG-OF-N-F 24 | EQUAL? PRSA,V?GUNCHO \?ELS5 25 | PRINTR "The majority of the mass of figures fades away into nothingness. Enough remain, however, to continue the service (or whatever it is)." 26 | ?ELS5: EQUAL? PRSA,V?FROTZ \?ELS9 27 | PRINTR "A few select figures suddenly start to give off light, to the horror of the remaining ones, who rip them to shreds in an instant." 28 | ?ELS9: EQUAL? PRSA,V?VAXUM \?ELS13 29 | PRINTR "Nothing seems to have happened, although a few of the figures seem to be chanting in a less guttural tone." 30 | ?ELS13: EQUAL? PRSA,V?ZIFMIA \?ELS17 31 | PRINTI "Something appears to have snapped. The figures, who were so peacefully ignoring you, now seem to have taken a different, and less pleasant, tack." 32 | CRLF 33 | CALL TAKE-TO-TOWER 34 | RSTACK 35 | ?ELS17: EQUAL? PRSA,V?CLEESH \FALSE 36 | PRINTR "Some of the figures hunch down even more and scuttle off." 37 | 38 | 39 | .FUNCT GUARDS-F 40 | EQUAL? PRSA,V?VAXUM \?ELS5 41 | PRINTR "The guards outside your cell cheer up a bit, upsetting a larger figure who could well be their boss. They are dismissed and replaced by other guards who don't seem to have the air of bonhomie shared by the others." 42 | ?ELS5: EQUAL? PRSA,V?CLEESH \?ELS9 43 | PRINTR "A couple of the guards turn into newts, running this way and that. They are quickly replaced, however, by others. Perhaps turning into a newt is a commonplace around these parts." 44 | ?ELS9: EQUAL? PRSA,V?GUNCHO \?ELS13 45 | PRINTR "A few guards disappear, seeming to vanish with distance while still standing in front of you. They are replaced quite quickly and efficiently by others. To judge by the reaction to your show of magical prowess, you would think these things happen every day." 46 | ?ELS13: EQUAL? PRSA,V?ZIFMIA \?ELS17 47 | PRINTI "Oh, no. You've done it now. The guards approach, and they don't look very pleased." 48 | CRLF 49 | CALL QUEUE,I-TAKE-TO-ALTAR,1 50 | RSTACK 51 | ?ELS17: EQUAL? PRSA,V?EXAMINE \?ELS21 52 | PRINTR "They are hunched and hairy shapes, but more detail cannot be discerned." 53 | ?ELS21: EQUAL? PRSA,V?MUNG,V?ATTACK,V?KILL \?ELS25 54 | PRINTR "You can't reach them from in here, and you wouldn't have a prayer even if you could." 55 | ?ELS25: EQUAL? PRSA,V?LISTEN \?ELS29 56 | PRINTR "The guards make low, grumbling sounds that could pass for speech, but it is incomprehensible to you." 57 | ?ELS29: EQUAL? PRSA,V?HELLO,V?TELL \?ELS33 58 | PRINTR "They go right on ignoring you. They don't seem to be much on conversation, although from time to time they grumble in an unsettling sort of way." 59 | ?ELS33: ZERO? GUARDS-HEARD \?ELS37 60 | EQUAL? PRSA,V?NITFOL \?ELS37 61 | SET 'GUARDS-HEARD,TRUE-VALUE 62 | PRINTR "The guards are having a delightful conversation, after a fashion: 63 | Guard 1: ""Brgh! Last night, good bloodbath!"" 64 | Guard 2: ""Yes. Quite. Best in weeks. Have you seen the new sacrifice?"" 65 | Guard 1: ""Brggh! No! Just get here."" 66 | Guard 2: ""It's a scrawny one. Not too much meat."" 67 | Guard 1: ""Brrrgh! No meat! Not had good meal in many days!"" 68 | Guard 2: ""Perhaps tonight..."" 69 | Voice: ""Stop your yapping, both of you!"" 70 | The yapping stops abruptly." 71 | ?ELS37: EQUAL? PRSA,V?NITFOL \FALSE 72 | PRINTR "The guards aren't speaking much." 73 | 74 | 75 | .FUNCT TOWER-DOOR-F 76 | EQUAL? PRSA,V?OPEN,V?UNLOCK \?ELS5 77 | ZERO? LOCKED-IN-TOWER /?ELS5 78 | PRINTI "The door is locked from the outside." 79 | ZERO? PROTECTED-FROM-EVIL \?CND10 80 | PRINTI " even if you could open it, the guards would undoubtedly return you with little difficulty" 81 | ?CND10: PRINTR "." 82 | ?ELS5: EQUAL? PRSA,V?KNOCK \?ELS18 83 | PRINTR "It would only get the attention of the guards." 84 | ?ELS18: EQUAL? PRSA,V?REZROV \FALSE 85 | PRINTI "The locked cell door opens with a powerful snap! Unfortunately, the guards seem to have heard the snap and approach!" 86 | CRLF 87 | FSET PRSO,OPENBIT 88 | SET 'LOCKED-IN-TOWER,FALSE-VALUE 89 | CALL QUEUE,I-TAKE-TO-ALTAR,1 90 | RTRUE 91 | 92 | 93 | .FUNCT TOWER-S-F,RARG 94 | EQUAL? RARG,M-LOOK \FALSE 95 | ZERO? SACRIFICED? /?ELS8 96 | PRINTI "This prison cell is similar to the one in which you were held captive prior to your sacrifice." 97 | JUMP ?CND6 98 | ?ELS8: PRINTI "This is a small prison cell in the south tower of the temple." 99 | ?CND6: PRINTI " A window in the cell door looks out on the temple itself." 100 | CRLF 101 | EQUAL? ANYTHING-TAKEN,SCROLLS-TAKEN /TRUE 102 | GRTR? ANYTHING-TAKEN,0 \TRUE 103 | GRTR? SCROLLS-TAKEN,0 \TRUE 104 | PRINTR "The guards must have brought your possessions here, but something is definitely missing!" 105 | 106 | 107 | .FUNCT CELL-PSEUDO 108 | EQUAL? PRSA,V?ESCAPE \?ELS5 109 | ZERO? LOCKED-IN-TOWER /?ELS5 110 | PRINTR "That poses a difficult problem. There's only one way out, and that would mean tackling a few hundred unpleasant creatures." 111 | ?ELS5: EQUAL? PRSA,V?DROP \?ELS11 112 | EQUAL? HERE,TOWER-S \?ELS16 113 | CALL DO-WALK,P?NORTH 114 | RSTACK 115 | ?ELS16: CALL DO-WALK,P?SOUTH 116 | RSTACK 117 | ?ELS11: EQUAL? PRSA,V?OPEN \?ELS20 118 | EQUAL? HERE,TOWER-S \?ELS23 119 | CALL PERFORM,V?OPEN,TOWER-S-DOOR 120 | RTRUE 121 | ?ELS23: CALL PERFORM,V?OPEN,TOWER-N-DOOR 122 | RTRUE 123 | ?ELS20: EQUAL? PRSA,V?SEARCH \FALSE 124 | CALL PERFORM,V?LOOK 125 | RTRUE 126 | 127 | 128 | .FUNCT TEMPLE-F,RARG 129 | EQUAL? RARG,M-END \FALSE 130 | IN? PLAYER,TEMPLE \FALSE 131 | ZERO? PROTECTED-FROM-EVIL \FALSE 132 | ZERO? LETTER-OF-TRANSIT \FALSE 133 | CRLF 134 | CALL TAKE-TO-TOWER 135 | RSTACK 136 | 137 | 138 | .FUNCT TAKE-TO-TOWER 139 | SET 'LOCKED-IN-TOWER,TRUE-VALUE 140 | SET 'WINNER,PLAYER 141 | SET 'P-CONT,FALSE-VALUE 142 | SET 'QUOTE-FLAG,FALSE-VALUE 143 | SET 'ADVENTURER-CHARMED,FALSE-VALUE 144 | CALL QUEUE,I-TURTLE,0 145 | PRINTI "A low noise begins behind you, and you turn to see hundreds of hunched and hairy shapes. A guttural chant issues from their throats. Near you stands a figure draped in a robe of deepest black, brandishing a vicious dagger. The chant grows louder as the robed figure approaches the altar. As the shapes grab you, the figure in black speaks: ""Take the victim to the tower. I shall prepare for the sacrifice!"" The figures, whose form you can barely guess, take you from here through the northern door and into a prison cell. They " 146 | CALL BLT,PLAYER,TOWER-S >ANYTHING-TAKEN 147 | ZERO? ANYTHING-TAKEN /?CND3 148 | PRINTI "take your possessions from you and " 149 | ?CND3: PRINTI "close the door with a crash!" 150 | CRLF 151 | CRLF 152 | SET 'SCROLLS-TAKEN,0 153 | CALL GOTO,TOWER-N 154 | IN? DISPEL-SCROLL,TOWER-S \?CND10 155 | REMOVE DISPEL-SCROLL 156 | SET 'SCROLLS-TAKEN,1 157 | ?CND10: IN? BANISH-SCROLL,TOWER-S \?CND13 158 | REMOVE BANISH-SCROLL 159 | INC 'SCROLLS-TAKEN 160 | ?CND13: CALL QUEUE,I-TAKE-TO-ALTAR,4 161 | PUT STACK,0,1 162 | RTRUE 163 | 164 | 165 | .FUNCT I-TAKE-TO-ALTAR 166 | ZERO? PROTECTED-FROM-EVIL /?CND1 167 | PRINTR "A gang of hunched and hairy shapes appear, look around cursorily, and then depart." 168 | ?CND1: CRLF 169 | PRINTI "A host of hunched and hairy shapes appear through the window. The cell door opens and you are marched solemnly to the temple and, from there, up the steps to the altar. The large, black figure approaches menacingly. He reaches into his cloak and pulls out a " 170 | ZERO? DAGGER-SEEN /?ELS11 171 | PRINTI "blood-drenched scimitar" 172 | JUMP ?CND9 173 | ?ELS11: PRINTI "great, glowing dagger" 174 | ?CND9: PRINTI ". He pulls you onto the altar, and with a murmur of approval from the throng, he plunges the blade into your heart!" 175 | CRLF 176 | SET 'SACRIFICED?,TRUE-VALUE 177 | EQUAL? DEATH-CHEATED,ME /?ELS25 178 | SET 'WINNER,PLAYER 179 | CALL JIGS-UP,FALSE-VALUE,FALSE-VALUE 180 | RSTACK 181 | ?ELS25: SET 'LOCKED-IN-TOWER,FALSE-VALUE 182 | CRLF 183 | PRINTI "You feel yourself filled with a strange warmth as your eyes slowly open. You are lying on the altar" 184 | ZERO? DAGGER-SEEN \?CND30 185 | PRINTI ", a glowing dagger in your chest" 186 | ?CND30: PRINTI ". You are in no pain, however. The large figure is gone, but the throng of shapes, taking no notice of your movement, is chanting in the temple below." 187 | ZERO? DAGGER-SEEN \?CND37 188 | PRINTI " You slowly remove the dagger from your chest, but you are not harmed. The blade shines faintly in the light of the flickering torches." 189 | ?CND37: CRLF 190 | CRLF 191 | ADD SCORE,TEMPLE-POINT >SCORE 192 | SET 'TEMPLE-POINT,0 193 | ZERO? DAGGER-SEEN \?CND42 194 | SET 'DAGGER-SEEN,TRUE-VALUE 195 | MOVE MAGIC-KNIFE,WINNER 196 | ?CND42: CALL QUEUE,I-LETTER-OF-TRANSIT,10 197 | PUT STACK,0,1 198 | SET 'LETTER-OF-TRANSIT,TRUE-VALUE 199 | CALL GOTO,ALTAR 200 | RSTACK 201 | 202 | 203 | .FUNCT I-LETTER-OF-TRANSIT 204 | EQUAL? HERE,TEMPLE \?ELS3 205 | CALL QUEUE,I-LETTER-OF-TRANSIT,3 206 | RFALSE 207 | ?ELS3: SET 'LETTER-OF-TRANSIT,FALSE-VALUE 208 | RFALSE 209 | 210 | .ENDI 211 | -------------------------------------------------------------------------------- /temple.zil: -------------------------------------------------------------------------------- 1 | "TEMPLE for 2 | ENCHANTER 3 | Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | 27 | 28 | 30 | ) 35 | ( 36 | > 37 | 38 | ) 39 | ( 40 | )>> 42 | 43 | 50 | 51 | 53 | ) 57 | ( 58 | )>> 60 | 61 | 68 | 69 | 71 | ) 75 | ( 76 | ) 79 | ( 80 | ) 83 | ( 84 | 87 | ) 88 | ( 89 | )>> 91 | 92 | 106 | 107 | 120 | 121 | 128 | 129 | 131 | ) 135 | ( 136 | ) 140 | ( 141 | ) 146 | ( 147 | 150 | ) 151 | ( 152 | ) 154 | ( 155 | ) 158 | ( 159 | ) 162 | ( 163 | ) 166 | ( > 167 | 168 | ) 178 | ( 179 | )>> 180 | 181 | > 182 | 183 | 190 | 191 | 198 | 199 | 201 | ,LOCKED-IN-TOWER> 202 | 204 | 205 | )> 207 | ) 208 | ( 209 | ) 211 | ( 212 | 215 | 216 | > 217 | 218 | )>> 219 | 220 | 230 | 231 | 233 | ) 237 | (ELSE 238 | )> 240 | 242 | ) 243 | ( > 244 | )> 247 | )>> 248 | 249 | 251 | ,LOCKED-IN-TOWER> 252 | ) 255 | ( 256 | 257 | ) 258 | (T )>) 259 | ( 260 | 261 | ) 262 | (T 263 | )> 264 | ) 265 | ( 266 | 267 | )>> 268 | 269 | 271 | 272 | 273 | > 274 | 275 | )>> 276 | 277 | > 278 | 279 | 281 | 282 | > 283 | > 284 | > 285 | 286 | 295 | > 296 | )> 297 | 298 | 299 | 300 | 301 | 302 | )> 303 | 304 | 305 | >)> 306 | > 307 | > 308 | 309 | > 310 | 311 | > 312 | 313 | > 314 | 315 | 320 | )> 321 | 326 | ) 327 | (T )> 328 | 331 | 332 | > 333 | 334 | <>>) 335 | (T 336 | > 337 | 340 | 341 | )> 342 | 345 | 346 | )> 349 | 350 | 351 | > 352 | 353 | 354 | 355 | )> 356 | > 357 | 358 | )>> 359 | 360 | > 361 | 362 | > 363 | 364 | ) 366 | (T 367 | >)> 368 | > -------------------------------------------------------------------------------- /terror.zap: -------------------------------------------------------------------------------- 1 | 2 | 3 | .FUNCT TERROR-F 4 | EQUAL? PRSA,V?ZIFMIA \?ELS5 5 | PRINTR "As you cast the zifmia spell, you are overpowered with such a sense of malice that you cannot continue. All in all, a good thing probably." 6 | ?ELS5: EQUAL? PRSA,V?VAXUM \?ELS9 7 | PRINTR "The terror may be friendlier, but with friends like that...." 8 | ?ELS9: EQUAL? PRSA,V?GUNCHO \FALSE 9 | REMOVE TERROR 10 | PRINTR "The room fills with a horrible noise, darkens to pitch blackness, and then lightens. The weight of fear lifts." 11 | 12 | 13 | .FUNCT TMAP-F 14 | EQUAL? PRSA,V?KULCAD \?ELS5 15 | PRINTI "At once, a maze of lines forms, connecting all of the spots on the map. Suddenly, the world becomes still and cold." 16 | CRLF 17 | CRLF 18 | CALL END-OF-WORLD 19 | RTRUE 20 | ?ELS5: EQUAL? PRSA,V?PUT,V?CLOSE,V?OPEN \?ELS9 21 | PRINTR "You can't do that." 22 | ?ELS9: EQUAL? PRSA,V?DRAW-ON \?ELS13 23 | IN? PENCIL,WINNER \?ELS18 24 | CALL WRITE-HINT 25 | RTRUE 26 | ?ELS18: PRINTR "You have nothing to draw with." 27 | ?ELS13: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?READ \FALSE 28 | PRINTI "The map consists of a drawing with nine points, each represented by a strange character, with interconnecting thin pencil lines. Using your native alphabet, it looks like this:" 29 | CRLF 30 | CALL DRAW-TMAZE 31 | RSTACK 32 | 33 | 34 | .FUNCT PENCIL-F 35 | EQUAL? PRSA,V?KULCAD \?ELS5 36 | PRINTI "As the pencil dissolves into nothingness, everything becomes still and cold." 37 | CRLF 38 | CRLF 39 | CALL END-OF-WORLD 40 | RTRUE 41 | ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE 42 | PRINTI "The pencil is very old and covered with finely inlaid runes. The point is " 43 | GET PENCIL-TBL,PENCIL-COUNT 44 | PRINT STACK 45 | PRINTI " and the attached eraser is " 46 | GET ERASER-TBL,ERASER-COUNT 47 | PRINT STACK 48 | PRINTR "." 49 | 50 | 51 | .FUNCT BLACK-PASSAGE-F 52 | EQUAL? PRSA,V?EXAMINE \FALSE 53 | PRINTR "The passages are perfectly round and black; the walls seem to be made of carbon." 54 | 55 | 56 | .FUNCT TMAZE-F,RARG,TBL,NEX=0,FLG=0,OFFS=0,PLU=0,?TMP1 57 | IN? BANISH-SCROLL,WINNER \?CND1 58 | EQUAL? HERE,T-A \?CND1 59 | ZERO? TERROR-TRAPPED /?CND1 60 | GRTR? TERROR-POINT,0 \?CND1 61 | PRINTI "You hear a horrible anguished scream through the walls of the cavern as the terror realizes that it is trapped and its scroll of power stolen!" 62 | CRLF 63 | CRLF 64 | ADD SCORE,TERROR-POINT >SCORE 65 | SET 'TERROR-POINT,0 66 | ?CND1: EQUAL? RARG,M-LOOK \?ELS12 67 | PRINTI "This is a peculiar room, whose cream-colored walls are thin and translucent." 68 | CRLF 69 | GETP HERE,P?TMAZE >TBL 70 | ?PRG15: GET TBL,OFFS 71 | EQUAL? STACK,-1 \?ELS19 72 | JUMP ?REP16 73 | ?ELS19: ADD OFFS,1 74 | GET TBL,STACK 75 | EQUAL? STACK,1 \?CND17 76 | INC 'NEX 77 | ?CND17: ADD OFFS,2 >OFFS 78 | JUMP ?PRG15 79 | ?REP16: ZERO? NEX \?ELS24 80 | PRINTR "There is not a single exit from this place." 81 | ?ELS24: EQUAL? NEX,1 \?ELS28 82 | PRINTI "An exit is" 83 | JUMP ?CND22 84 | ?ELS28: SET 'PLU,TRUE-VALUE 85 | PRINTI "Passages go" 86 | ?CND22: PRINTI " to the " 87 | SET 'OFFS,0 88 | ?PRG37: GET TBL,OFFS 89 | EQUAL? STACK,-1 \?ELS41 90 | JUMP ?REP38 91 | ?ELS41: ADD OFFS,1 92 | GET TBL,STACK 93 | EQUAL? STACK,1 \?CND39 94 | DIV OFFS,2 95 | GET TMAZE-DIRS,STACK 96 | PRINT STACK 97 | GRTR? NEX,2 \?ELS48 98 | SET 'FLG,TRUE-VALUE 99 | PRINTI ", " 100 | JUMP ?CND46 101 | ?ELS48: EQUAL? NEX,2 \?CND46 102 | ZERO? FLG /?CND53 103 | PRINTI "," 104 | ?CND53: PRINTI " and " 105 | ?CND46: DEC 'NEX 106 | ?CND39: ADD OFFS,2 >OFFS 107 | JUMP ?PRG37 108 | ?REP38: PRINTI " and " 109 | ZERO? PLU /?ELS65 110 | PRINTI "they are" 111 | JUMP ?CND63 112 | ?ELS65: PRINTI "it is" 113 | ?CND63: PRINTR " very strange indeed, perfectly round and black as pitch." 114 | ?ELS12: EQUAL? RARG,M-BEG \FALSE 115 | IN? TERROR,HERE \?ELS81 116 | EQUAL? PRSA,V?WALK \FALSE 117 | PRINTR "Your feet are leaden with fear, and cold sweat runs down your back as you make your way to the door, but you make no progress. Your mind tells you you are running, but you aren't getting anywhere." 118 | ?ELS81: EQUAL? PRSA,V?WALK \FALSE 119 | EQUAL? HERE,T-A \?ELS95 120 | EQUAL? PRSO,P?UP \?ELS95 121 | CALL GOTO,DUNGEON 122 | RTRUE 123 | ?ELS95: GRTR? PRSO,P?UP \?ELS99 124 | GETP HERE,P?TMAZE >TBL 125 | SUB PRSO,P?UP 126 | MUL STACK,2 127 | SUB STACK,1 >OFFS 128 | GET TBL,OFFS 129 | EQUAL? STACK,1 \?ELS99 130 | SUB OFFS,1 131 | GET TBL,STACK 132 | CALL GOTO,STACK 133 | IN? TERROR,HERE \?ELS104 134 | PRINTR "An evil presence pervades the room, its source unseen. Fear seeps into your mind, like fog. You look fearfully around. There is something horrible here." 135 | ?ELS104: LOC TERROR 136 | CALL CONNECTED?,HERE,STACK 137 | ZERO? STACK /TRUE 138 | PRINTR "You sense that near this place an evil presence lurks. It seems close by and is moving." 139 | ?ELS99: PRINTR "You can't go that way." 140 | 141 | 142 | .FUNCT END-OF-WORLD 143 | PRINTI "You suddenly feel weak and your knees buckle. Just as you collapse to the ground, you find yourself in the presence of the Circle. They seem tense and frightened and ask desperately about your recent doings. As you tell your tale of the map and pencil, they recoil in horror. ""The Terror is released!"" cries one. Belboz sinks into his throne. ""We are doomed!"" he gasps. One by one, the wizards flee to prepare a hopeless defense." 144 | CRLF 145 | SET 'SCORE,-10 146 | CALL FINISH 147 | RSTACK 148 | 149 | 150 | .FUNCT DRAW-TMAZE 151 | CALL FIXED-FONT-ON 152 | CRLF 153 | PRINTI "B" 154 | CALL ECN,T-A,T-H 155 | PRINTI "J" 156 | CRLF 157 | CALL CN,T-A,T-SOUTH 158 | CALL CN,T-A,T-SE 159 | PRINTI " " 160 | CALL CN,T-E,T-SW 161 | CALL CN,T-E,T-SOUTH 162 | CALL CN,T-E,T-SE 163 | CRLF 164 | CALL CN,T-A,T-SOUTH 165 | PRINTI " " 166 | CALL CN,T-A,T-SE 167 | PRINTI " " 168 | CALL CN,T-E,T-SW 169 | PRINTI " " 170 | CALL CN,T-E,T-SOUTH 171 | PRINTI " " 172 | CALL CN,T-E,T-SE 173 | CRLF 174 | CALL CN,T-A,T-SOUTH 175 | PRINTI " " 176 | CALL CN,T-A,T-SE 177 | PRINTI " " 178 | CALL CN,T-E,T-SW 179 | PRINTI " " 180 | CALL CN,T-E,T-SOUTH 181 | PRINTI " " 182 | CALL CN,T-E,T-SE 183 | CRLF 184 | CALL CN,T-A,T-SOUTH 185 | PRINTI " K" 186 | CALL ECN,T-C,T-E 187 | PRINTI "V" 188 | CRLF 189 | CALL CN,T-A,T-SOUTH 190 | PRINTI " " 191 | CALL CN,T-C,T-SW 192 | CALL CN,T-C,T-SOUTH 193 | CALL CN,T-C,T-SE 194 | PRINTI " " 195 | CALL CN,T-E,T-SOUTH 196 | PRINTI " " 197 | CALL CN,T-G,T-SW 198 | CALL CN,T-G,T-SOUTH 199 | CALL CN,T-G,T-SE 200 | CRLF 201 | CALL CN,T-A,T-SOUTH 202 | PRINTI " " 203 | CALL CN,T-C,T-SW 204 | PRINTI " " 205 | CALL CN,T-C,T-SOUTH 206 | PRINTI " " 207 | CALL CN,T-C,T-SE 208 | PRINTI " " 209 | CALL CN,T-E,T-SOUTH 210 | PRINTI " " 211 | CALL CN,T-G,T-SW 212 | PRINTI " " 213 | CALL CN,T-G,T-SOUTH 214 | PRINTI " " 215 | CALL CN,T-G,T-SE 216 | CRLF 217 | CALL CN,T-A,T-SOUTH 218 | CALL CN,T-C,T-SW 219 | PRINTI " " 220 | CALL CN,T-C,T-SOUTH 221 | PRINTI " " 222 | CALL CN,T-C,T-SE 223 | CALL CN,T-E,T-SOUTH 224 | CALL CN,T-G,T-SW 225 | PRINTI " " 226 | CALL CN,T-G,T-SOUTH 227 | PRINTI " " 228 | CALL CN,T-G,T-SE 229 | CRLF 230 | PRINTI "R" 231 | CALL ECN,T-B,T-C 232 | PRINTI "M" 233 | CALL ECN,T-F,T-G 234 | PRINTI "F" 235 | CRLF 236 | PRINTI " " 237 | CALL CN,T-B,T-SE 238 | PRINTI " " 239 | CALL CN,T-C,T-SOUTH 240 | PRINTI " " 241 | CALL CN,T-F,T-SW 242 | PRINTI " " 243 | CALL CN,T-F,T-SE 244 | PRINTI " " 245 | CALL CN,T-G,T-SOUTH 246 | PRINTI " " 247 | CALL CN,T-H,T-SW 248 | CRLF 249 | PRINTI " " 250 | CALL CN,T-B,T-SE 251 | PRINTI " " 252 | CALL CN,T-C,T-SOUTH 253 | PRINTI " " 254 | CALL CN,T-F,T-SW 255 | PRINTI " " 256 | CALL CN,T-F,T-SE 257 | PRINTI " " 258 | CALL CN,T-G,T-SOUTH 259 | PRINTI " " 260 | CALL CN,T-H,T-SW 261 | CRLF 262 | PRINTI " " 263 | CALL CN,T-B,T-SE 264 | CALL CN,T-C,T-SOUTH 265 | CALL CN,T-F,T-SW 266 | PRINTI " " 267 | CALL CN,T-F,T-SE 268 | CALL CN,T-G,T-SOUTH 269 | CALL CN,T-H,T-SW 270 | CRLF 271 | PRINTI " H" 272 | CALL ECN,T-D,T-H 273 | PRINTI "P" 274 | CRLF 275 | CRLF 276 | CALL FIXED-FONT-OFF 277 | RTRUE 278 | 279 | 280 | .FUNCT FIXED-FONT-ON 281 | GET 0,8 282 | BOR STACK,2 283 | PUT 0,8,STACK 284 | RTRUE 285 | 286 | 287 | .FUNCT FIXED-FONT-OFF 288 | GET 0,8 289 | BAND STACK,-3 290 | PUT 0,8,STACK 291 | RTRUE 292 | 293 | 294 | .FUNCT CN,L,DIR 295 | GETP L,P?TMAZE 296 | GET STACK,DIR 297 | ZERO? STACK /?ELS5 298 | GET T-DIR-TABLE,DIR 299 | PRINT STACK 300 | RTRUE 301 | ?ELS5: PRINTI " " 302 | RTRUE 303 | 304 | 305 | .FUNCT ECN,L,DN,FLG=0 306 | GETP L,P?TMAZE 307 | GET STACK,T-EAST 308 | ZERO? STACK /?ELS3 309 | SET 'FLG,TRUE-VALUE 310 | PRINTI "---" 311 | JUMP ?CND1 312 | ?ELS3: PRINTI " " 313 | ?CND1: GETP DN,P?TMAZE 314 | GET STACK,T-SOUTH 315 | ZERO? STACK /?ELS12 316 | ZERO? FLG /?ELS15 317 | PRINTI "+" 318 | JUMP ?CND10 319 | ?ELS15: PRINTI "!" 320 | JUMP ?CND10 321 | ?ELS12: ZERO? FLG /?ELS24 322 | PRINTI "-" 323 | JUMP ?CND10 324 | ?ELS24: PRINTI " " 325 | ?CND10: ZERO? FLG /?ELS36 326 | PRINTI "---" 327 | RTRUE 328 | ?ELS36: PRINTI " " 329 | RTRUE 330 | 331 | 332 | .FUNCT CONNECT,RM1,RM2,FLIP=0,TBL,RMX 333 | GETP RM1,P?TMAZE >TBL 334 | ?PRG1: GET TBL,0 >RMX 335 | EQUAL? RMX,-1 \?ELS5 336 | PRINTR "The pencil doesn't seem to allow that line to be drawn." 337 | ?ELS5: EQUAL? RMX,RM2 \?CND3 338 | GET TBL,1 339 | ZERO? STACK \?ELS12 340 | ZERO? FLIP \?CND13 341 | CALL CONNECT,RM2,RM1,TRUE-VALUE 342 | DEC 'PENCIL-COUNT 343 | PRINTI "A thin line now connects the two spots on the map, but the pencil point is " 344 | GET PENCIL-TBL,PENCIL-COUNT 345 | PRINT STACK 346 | PRINTI "." 347 | CRLF 348 | EQUAL? HERE,RM1,RM2 \?CND13 349 | CALL DESCRIBE-NEW-EXIT,RM1,RM2 350 | ?CND13: PUT TBL,1,1 351 | LOC TERROR 352 | ZERO? STACK /TRUE 353 | LOC TERROR 354 | CALL TWALK,STACK 355 | ZERO? STACK /TRUE 356 | SET 'TERROR-TRAPPED,FALSE-VALUE 357 | CALL QUEUE,I-TERROR,-1 358 | PUT STACK,0,1 359 | RTRUE 360 | ?ELS12: PRINTR "There is already a line connecting those spots." 361 | ?CND3: ADD TBL,4 >TBL 362 | JUMP ?PRG1 363 | 364 | 365 | .FUNCT DISCONNECT,RM1,RM2,FLIP=0,TBL,RMX 366 | GETP RM1,P?TMAZE >TBL 367 | ?PRG1: GET TBL,0 >RMX 368 | EQUAL? RMX,-1 \?ELS5 369 | PRINTR "Those two spots aren't connected on the map." 370 | ?ELS5: EQUAL? RMX,RM2 \?CND3 371 | GET TBL,1 372 | ZERO? STACK \?ELS12 373 | PRINTR "Those two spots aren't connected on the map." 374 | ?ELS12: ZERO? FLIP \?CND17 375 | CALL DISCONNECT,RM2,RM1,TRUE-VALUE 376 | DEC 'ERASER-COUNT 377 | PRINTI "The line between the two spots is erased, leaving the eraser " 378 | GET ERASER-TBL,ERASER-COUNT 379 | PRINT STACK 380 | PRINTI "." 381 | CRLF 382 | EQUAL? HERE,RM1,RM2 \?CND17 383 | CALL DESCRIBE-NEW-EXIT,RM1,RM2,FALSE-VALUE 384 | ?CND17: PUT TBL,1,0 385 | RTRUE 386 | ?CND3: ADD TBL,4 >TBL 387 | JUMP ?PRG1 388 | 389 | 390 | .FUNCT DESCRIBE-NEW-EXIT,RM1,RM2,MAKE?=1,TMP,TBL,OFFS=0 391 | EQUAL? RM2,HERE \?CND1 392 | SET 'TMP,RM1 393 | SET 'RM1,RM2 394 | SET 'RM2,TMP 395 | ?CND1: GETP RM1,P?TMAZE >TBL 396 | ?PRG4: GET TBL,OFFS >TMP 397 | EQUAL? TMP,RM2 \?ELS8 398 | JUMP ?REP5 399 | ?ELS8: EQUAL? TMP,-1 \?ELS10 400 | PRINTI "*ERROR* BAD-EXIT DESCRIBE-NEW-EXIT" 401 | CRLF 402 | JUMP ?REP5 403 | ?ELS10: ADD OFFS,2 >OFFS 404 | JUMP ?PRG4 405 | ?REP5: PRINTI "Suddenly, the " 406 | ZERO? MAKE? /?ELS19 407 | PRINTI "wall" 408 | JUMP ?CND17 409 | ?ELS19: PRINTI "black passage" 410 | ?CND17: PRINTI " to the " 411 | DIV OFFS,2 412 | GET TMAZE-DIRS,STACK 413 | PRINT STACK 414 | ZERO? MAKE? /?ELS33 415 | PRINTI " opens to form a perfectly round and black passage" 416 | JUMP ?CND31 417 | ?ELS33: PRINTI " closes off" 418 | ?CND31: PRINTR "!" 419 | 420 | 421 | .FUNCT CONNECTED?,RM1,RM2,TBL,RMX 422 | GETP RM1,P?TMAZE >TBL 423 | ZERO? TBL /FALSE 424 | ?PRG4: GET TBL,0 >RMX 425 | EQUAL? RMX,-1 /FALSE 426 | EQUAL? RMX,RM2 \?CND6 427 | GET TBL,1 428 | ZERO? STACK \TRUE 429 | RFALSE 430 | ?CND6: ADD TBL,4 >TBL 431 | JUMP ?PRG4 432 | 433 | 434 | .FUNCT I-TERROR,RM,NRM,FLG=0 435 | ZERO? TERROR-TRAPPED /?ELS5 436 | LOC TERROR >RM 437 | CALL CONNECTED?,HERE,RM 438 | ZERO? STACK /FALSE 439 | MOVE TERROR,HERE 440 | PRINT TERROR-ARRIVES 441 | CRLF 442 | RTRUE 443 | ?ELS5: LOC TERROR >RM 444 | CALL TWALK,RM 445 | ZERO? STACK /?ELS15 446 | SET 'TERROR-TRAPPED,FALSE-VALUE 447 | SET 'TWAIT,0 448 | GET PATH-TBL,2 449 | GET TMAZE-ROOMS,STACK >NRM 450 | MOVE TERROR,NRM 451 | EQUAL? HERE,NRM \?ELS18 452 | PRINT TERROR-ARRIVES 453 | CRLF 454 | SET 'FLG,TRUE-VALUE 455 | JUMP ?CND16 456 | ?ELS18: CALL CONNECTED?,HERE,NRM 457 | ZERO? STACK /?ELS22 458 | PRINTI "Somewhere near, an evil presence lurks, probing your mind. It seems to be moving quickly." 459 | CRLF 460 | SET 'FLG,TRUE-VALUE 461 | JUMP ?CND16 462 | ?ELS22: CALL CONNECTED?,HERE,RM 463 | ZERO? STACK /?CND16 464 | PRINTI "You can no longer sense the evil presence nearby." 465 | CRLF 466 | SET 'FLG,TRUE-VALUE 467 | ?CND16: ZERO? TERROR-MOVED \?CND29 468 | SET 'TERROR-MOVED,TRUE-VALUE 469 | INC 'LOSSAGE 470 | SET 'FLG,TRUE-VALUE 471 | PRINTI "You feel that two powerful, evil forces are searching each other out. As they meet, the air lightens. Belboz appears before you. ""Something has disturbed the ancient Terror. Krill himself knows this and will try to use it to his purposes. Already, they may have joined together. You must not allow the Terror to escape, or we are all doomed!"" He fades into the gloom." 472 | CRLF 473 | ?CND29: EQUAL? NRM,T-A \?CND34 474 | CALL END-OF-WORLD 475 | EQUAL? HERE,T-A \?ELS39 476 | SET 'FLG,TRUE-VALUE 477 | PRINTI "The presence seems to grow stronger each passing second, beating you down with its awesome power." 478 | CRLF 479 | RETURN FLG 480 | ?ELS39: SET 'FLG,TRUE-VALUE 481 | PRINTI "At once, a strange and horrible feeling wells up inside of you. An unseen yet awesomely powerful force, exuding pure evil, seems to fill the very chamber." 482 | CRLF 483 | ?CND34: RETURN FLG 484 | ?ELS15: CALL TNULL-F 485 | ZERO? STACK \TRUE 486 | IGRTR? 'TWAIT,6 /TRUE 487 | CALL TWALK1 >RM 488 | ZERO? RM /TRUE 489 | LOC TERROR >NRM 490 | EQUAL? NRM,T-I /TRUE 491 | CALL CONNECTED?,NRM,T-I 492 | ZERO? STACK /?ELS58 493 | MOVE TERROR,T-I 494 | JUMP ?CND54 495 | ?ELS58: CALL CONNECTED?,NRM,T-F 496 | ZERO? STACK /?CND54 497 | MOVE TERROR,T-F 498 | ?CND54: IN? TERROR,HERE \?ELS63 499 | PRINT TERROR-ARRIVES 500 | CRLF 501 | RTRUE 502 | ?ELS63: PRINTR "From somewhere nearby, an unseen force probes you, and you are gripped by a sickening feeling." 503 | 504 | 505 | .FUNCT TNULL-F 506 | SET 'TERROR-TRAPPED,TRUE-VALUE 507 | RFALSE 508 | 509 | 510 | .FUNCT TWALK,RM 511 | SET 'TWALK-LEVEL,0 512 | SET 'TTRIES,0 513 | SET 'PSTART,RM 514 | CALL PATH-OUT?,RM 515 | RSTACK 516 | 517 | 518 | .FUNCT TWALK1,TBL,RM,NRM,OFFS=1,CNT 519 | LOC TERROR >RM 520 | GETP RM,P?CAPACITY 521 | GET TWALK-PATHS,STACK >TBL 522 | GET TBL,0 >CNT 523 | ?PRG1: GRTR? OFFS,CNT /FALSE 524 | GET TBL,OFFS 525 | GET TMAZE-ROOMS,STACK >NRM 526 | CALL CONNECTED?,RM,NRM 527 | ZERO? STACK /?CND3 528 | RETURN NRM 529 | ?CND3: INC 'OFFS 530 | JUMP ?PRG1 531 | 532 | 533 | .FUNCT PATH-OUT?,RM,OFFS=1,TBL,CNT=0,NRM 534 | INC 'TTRIES 535 | INC 'TWALK-LEVEL 536 | GETP RM,P?CAPACITY 537 | PUT PATH-TBL,TWALK-LEVEL,STACK 538 | EQUAL? RM,T-A \?ELS3 539 | DEC 'TWALK-LEVEL 540 | RTRUE 541 | ?ELS3: GRTR? TWALK-LEVEL,TWALK-MAX \?CND1 542 | DEC 'TWALK-LEVEL 543 | RFALSE 544 | ?CND1: GETP RM,P?CAPACITY 545 | GET TWALK-PATHS,STACK >TBL 546 | GET TBL,0 >CNT 547 | ZERO? CNT \?CND6 548 | DEC 'TWALK-LEVEL 549 | RTRUE 550 | ?CND6: 551 | ?PRG9: GRTR? OFFS,CNT \?ELS13 552 | DEC 'TWALK-LEVEL 553 | RFALSE 554 | ?ELS13: GET TBL,OFFS 555 | GET TMAZE-ROOMS,STACK >NRM 556 | CALL CONNECTED?,RM,NRM 557 | ZERO? STACK /?CND11 558 | EQUAL? NRM,PSTART /?CND11 559 | CALL PATH-OUT?,NRM 560 | ZERO? STACK /?CND11 561 | DEC 'TWALK-LEVEL 562 | RTRUE 563 | ?CND11: INC 'OFFS 564 | JUMP ?PRG9 565 | 566 | 567 | .FUNCT LEGEND-BOOK-F 568 | EQUAL? PRSA,V?CLOSE \?ELS5 569 | FSET? PRSO,OPENBIT \?ELS5 570 | FCLEAR PRSO,OPENBIT 571 | PRINTR "Closed." 572 | ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?READ /?THN12 573 | EQUAL? PRSA,V?OPEN \?ELS11 574 | ?THN12: FSET PRSO,OPENBIT 575 | PRINTR "The first page of the book was the table of contents. Only two chapter names can be read: The Legend of the Unseen Terror and The Legend of the Great Implementers." 576 | ?ELS11: EQUAL? PRSA,V?TURN \FALSE 577 | PRINTR "Rather than turning pages, why don't you simply read the legends." 578 | 579 | 580 | .FUNCT LEGEND-TWO-F 581 | EQUAL? PRSA,V?ZIFMIA \FALSE 582 | ZERO? IMP-SEEN \FALSE 583 | SET 'IMP-SEEN,TRUE-VALUE 584 | PRINTR "The implementers of the world, Marc Blank and Dave Lebling, appear before you, looking quite as confused as yourself. They speak: 585 | Dave: ""What's happening here?"" 586 | Marc: ""Uh, I dunno. YOU wrote this code, not me."" 587 | Dave: ""Hmm. Another day, another bug. Let's see here..."" 588 | They disappear a moment later. 589 | Dave's voice: ""That should do it.""" 590 | 591 | .ENDI 592 | -------------------------------------------------------------------------------- /z4.chart: -------------------------------------------------------------------------------- 1 | -date- -rel- -size- -pre- -obj- -glo- -voc- 2 | 11/13 -1 64 0 0 0 0 3 | 11/13 1 64 0 0 0 0 4 | 11/13 2 108100 20736 255 224 718 5 | 11/13 18 108100 20736 255 224 718 6 | 11/13 18 108086 20736 255 224 718 7 | 11/14 19 122370 20290 255 223 718 8 | 11/14 19 108296 20739 255 226 718 9 | 11/14 20 108100 20734 255 223 718 10 | 11/14 21 108450 20744 255 224 718 11 | 11/14 22 108450 20744 255 224 718 12 | 11/14 22 108594 20832 255 224 722 13 | 11/14 23 108620 20832 255 224 722 14 | 11/15 24 108628 20832 255 224 722 15 | 11/18 24 108638 20814 255 224 722 16 | 7/24 -1 108688 20832 255 224 722 17 | 7/25 -1 108830 20834 255 225 722 18 | 7/25 2 108854 20834 255 225 722 19 | 7/28 25 108854 20834 255 225 722 20 | 7/28 26 108920 20832 255 224 722 21 | 8/19 27 109458 21476 255 232 723 22 | 8/19 27 111120 21476 255 232 723 23 | 8/19 27 111122 21474 255 231 723 24 | 8/19 28 111128 21474 255 231 723 25 | 8/20 29 111126 21474 255 231 723 26 | -------------------------------------------------------------------------------- /z4.errors: -------------------------------------------------------------------------------- 1 | Assembling Z4.XZAP.4 on Wednesday, August 20, 1986 17:19:27 2 | Release: 29 3 | 4 | 64 Inserting Z4FREQ.XZAP.1 (626 bytes) 5 | 690 Inserting Z4DAT.ZAP.15 (20784 bytes) 6 | 21474 Inserting SYNTAX.ZAP.21 (0 bytes) 7 | 21474 Inserting MACROS.ZAP.21 (117 bytes) 8 | 21591 Inserting CLOCK.ZAP.21 (178 bytes) 9 | 21769 Inserting MAIN.ZAP.21 (2289 bytes) 10 | 24058 Inserting GPARSER.ZAP.5 (6898 bytes) 11 | 30956 Inserting VERBS.ZAP.23 (12130 bytes) 12 | 43086 Inserting RECORD.ZAP.13 (56 bytes) 13 | 43142 Inserting GLOBALS.ZAP.22 (2799 bytes) 14 | 45941 Inserting TERROR.ZAP.20 (4413 bytes) 15 | 50354 Inserting STAIR.ZAP.20 (5043 bytes) 16 | 55397 Inserting MAGIC.ZAP.19 (6509 bytes) 17 | 61906 Inserting KNOT.ZAP.19 (1368 bytes) 18 | 63274 Inserting PURLOINED.ZAP.19 (7343 bytes) 19 | 70617 Inserting CASTLE.ZAP.19 (6510 bytes) 20 | 77127 Inserting TEMPLE.ZAP.18 (3385 bytes) 21 | 80512 Inserting GALLERY.ZAP.18 (2162 bytes) 22 | 82674 Inserting EGG.ZAP.17 (1699 bytes) 23 | 84373 Inserting SLEEP.ZAP.17 (2358 bytes) 24 | 86731 Inserting GEARS.ZAP.17 (5826 bytes) 25 | 92557 Inserting OUTSIDE.ZAP.17 (3338 bytes) 26 | 95895 Inserting Z4STR.ZAP.15 (15231 bytes) 27 | 255 objects. 28 | 231 globals. 29 | 723 word vocabulary. 30 | 31 | 111126 bytes (109K). 32 | 21474 bytes of preload. 33 | 12653 bytes of impure. 34 | 35 | Outputting symbol tables 36 | -------------------------------------------------------------------------------- /z4.serial: -------------------------------------------------------------------------------- 1 | 24 2 | -------------------------------------------------------------------------------- /z4.xzap: -------------------------------------------------------------------------------- 1 | .INSERT "Z4FREQ" 2 | .INSERT "Z4DAT" ; DATA IS IN THIS FILE 3 | .INSERT "SYNTAX" 4 | .INSERT "MACROS" 5 | .INSERT "CLOCK" 6 | .INSERT "MAIN" 7 | .INSERT "GPARSER" 8 | .INSERT "VERBS" 9 | .INSERT "RECORD" 10 | .INSERT "GLOBALS" 11 | .INSERT "TERROR" 12 | .INSERT "STAIR" 13 | .INSERT "MAGIC" 14 | .INSERT "KNOT" 15 | .INSERT "PURLOINED" 16 | .INSERT "CASTLE" 17 | .INSERT "TEMPLE" 18 | .INSERT "GALLERY" 19 | .INSERT "EGG" 20 | .INSERT "SLEEP" 21 | .INSERT "GEARS" 22 | .INSERT "OUTSIDE" 23 | .INSERT "Z4STR" 24 | .END 25 | -------------------------------------------------------------------------------- /z4.zap: -------------------------------------------------------------------------------- 1 | 2 | .INSERT "Z4DAT" ; DATA IS IN THIS FILE 3 | 4 | .INSERT "SYNTAX" 5 | 6 | 7 | .INSERT "MACROS" 8 | 9 | 10 | .INSERT "CLOCK" 11 | 12 | 13 | .INSERT "MAIN" 14 | 15 | 16 | .INSERT "GPARSER" 17 | 18 | 19 | .INSERT "VERBS" 20 | 21 | 22 | .INSERT "RECORD" 23 | 24 | 25 | .INSERT "GLOBALS" 26 | 27 | 28 | .INSERT "TERROR" 29 | 30 | 31 | .INSERT "STAIR" 32 | 33 | 34 | .INSERT "MAGIC" 35 | 36 | 37 | .INSERT "KNOT" 38 | 39 | 40 | .INSERT "PURLOINED" 41 | 42 | 43 | .INSERT "CASTLE" 44 | 45 | 46 | .INSERT "TEMPLE" 47 | 48 | 49 | .INSERT "GALLERY" 50 | 51 | 52 | .INSERT "EGG" 53 | 54 | 55 | .INSERT "SLEEP" 56 | 57 | 58 | .INSERT "GEARS" 59 | 60 | 61 | .INSERT "OUTSIDE" 62 | 63 | 64 | .INSERT "Z4STR" 65 | 66 | .END 67 | -------------------------------------------------------------------------------- /z4.zil: -------------------------------------------------------------------------------- 1 | "ENCHANTER for 2 | ENCHANTER 3 | (c) Copyright 1983 Infocom, Inc. All Rights Reserved. 4 | " 5 | 6 | 10 | 11 | 12 | 13 | 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 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /z4freq.xzap: -------------------------------------------------------------------------------- 1 | .FSTR FSTR?1,"the " ;2104 1052 2 | .FSTR FSTR?2,"The " ;1197 399 3 | .FSTR FSTR?3,", " ;980 980 4 | .FSTR FSTR?4,"and " ;956 478 5 | .FSTR FSTR?5,"You " ;813 271 6 | .FSTR FSTR?6,"you " ;618 309 7 | .FSTR FSTR?7,". " ;570 570 8 | .FSTR FSTR?8,"to " ;496 496 9 | .FSTR FSTR?9,"of " ;492 492 10 | .FSTR FSTR?10,"your " ;447 149 11 | .FSTR FSTR?11,"with " ;429 143 12 | .FSTR FSTR?12,"is " ;401 401 13 | .FSTR FSTR?13,"can't " ;380 76 14 | .FSTR FSTR?14,"adventurer " ;351 39 15 | .FSTR FSTR?15,"that " ;330 110 16 | .FSTR FSTR?16,"are " ;324 162 17 | .FSTR FSTR?17,"in " ;263 263 18 | .FSTR FSTR?18,"This " ;252 63 19 | .FSTR FSTR?19,"into " ;249 83 20 | .FSTR FSTR?20,"which " ;244 61 21 | .FSTR FSTR?21,"have " ;240 80 22 | .FSTR FSTR?22,"There " ;235 47 23 | .FSTR FSTR?23,"seems " ;224 56 24 | .FSTR FSTR?24,"from " ;219 73 25 | .FSTR FSTR?25,"don't " ;210 42 26 | .FSTR FSTR?26,"small " ;192 48 27 | .FSTR FSTR?27,"through " ;192 32 28 | .FSTR FSTR?28,"nothing " ;186 31 29 | .FSTR FSTR?29,"There's " ;184 23 30 | .FSTR FSTR?30,"would " ;176 44 31 | .FSTR FSTR?31,"spell " ;176 44 32 | .FSTR FSTR?32,"but " ;166 83 33 | .FSTR FSTR?33,"something " ;160 20 34 | .FSTR FSTR?34,"It's " ;150 30 35 | .FSTR FSTR?35,"for " ;142 71 36 | .FSTR FSTR?36,"his " ;140 70 37 | .FSTR FSTR?37,"turtle " ;140 28 38 | .FSTR FSTR?38,"can " ;136 68 39 | .FSTR FSTR?39,"temple " ;130 26 40 | .FSTR FSTR?40,"this " ;129 43 41 | .FSTR FSTR?41,"be " ;123 123 42 | .FSTR FSTR?42,"here" ;122 61 43 | .FSTR FSTR?43,"anything " ;119 17 44 | .FSTR FSTR?44,"before " ;115 23 45 | .FSTR FSTR?45,"around " ;115 23 46 | .FSTR FSTR?46,"already " ;114 19 47 | .FSTR FSTR?47,"not " ;110 55 48 | .FSTR FSTR?48,"It " ;108 54 49 | .FSTR FSTR?49,"seem " ;108 36 50 | .FSTR FSTR?50,"scroll" ;108 27 51 | .FSTR FSTR?51,"spell" ;105 35 52 | .FSTR FSTR?52,"scroll " ;105 21 53 | .FSTR FSTR?53,"continues " ;104 13 54 | .FSTR FSTR?54,"adventurer" ;104 13 55 | .FSTR FSTR?55,"appears " ;102 17 56 | .FSTR FSTR?56,"other " ;100 25 57 | .FSTR FSTR?57,"very " ;99 33 58 | .FSTR FSTR?58,"Translucent " ;99 9 59 | .FSTR FSTR?59,"A " ;97 97 60 | .FSTR FSTR?60,"on " ;97 97 61 | .FSTR FSTR?61,"Circle " ;96 16 62 | .FSTR FSTR?62,"courtyard " ;96 12 63 | .FSTR FSTR?63,"that" ;94 47 64 | .FSTR FSTR?64,"north " ;92 23 65 | .FSTR FSTR?65,"great " ;92 23 66 | .FSTR FSTR?66,"standing " ;91 13 67 | .FSTR FSTR?67,"doesn't " ;91 13 68 | .FSTR FSTR?68,"Krill " ;90 18 69 | .FSTR FSTR?69,"as " ;88 88 70 | .FSTR FSTR?70,"large " ;88 22 71 | .FSTR FSTR?71,"you" ;87 87 72 | .FSTR FSTR?72,"it " ;87 87 73 | .FSTR FSTR?73,"out " ;86 43 74 | .FSTR FSTR?74,"room " ;84 28 75 | .FSTR FSTR?75,"looks " ;84 21 76 | .FSTR FSTR?76,"You're " ;84 12 77 | .FSTR FSTR?77,"He " ;82 41 78 | .FSTR FSTR?78,"door " ;81 27 79 | .FSTR FSTR?79,"They " ;80 20 80 | .FSTR FSTR?80,"only " ;78 26 81 | .FSTR FSTR?81,"like " ;78 26 82 | .FSTR FSTR?82,"here " ;78 26 83 | .FSTR FSTR?83,"east " ;78 26 84 | .FSTR FSTR?84,"glowing " ;78 13 85 | .FSTR FSTR?85,"its " ;76 38 86 | .FSTR FSTR?86,"there " ;76 19 87 | .FSTR FSTR?87,"their " ;76 19 88 | .FSTR FSTR?88,"open " ;75 25 89 | .FSTR FSTR?89,"much " ;75 25 90 | .FSTR FSTR?90,"stands " ;75 15 91 | .FSTR FSTR?91,"behind " ;75 15 92 | .FSTR FSTR?92,"has " ;72 36 93 | .FSTR FSTR?93,"south" ;72 24 94 | .FSTR FSTR?94,"more " ;72 24 95 | .FSTR FSTR?95,"dark " ;72 24 96 | .FSTR FSTR?96,"leads " ;72 18 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 | --------------------------------------------------------------------------------