.SEGMENT "0" .FUNCT JESTER-F,ARG EQUAL? ARG,M-OBJDESC? /TRUE EQUAL? ARG,M-OBJDESC \?CCL5 PRINTI " The jester " IN? COOKPOT,HERE \?CCL8 PRINTI "is here, " PRINT COOK-DESC RTRUE ?CCL8: EQUAL? HERE,TAX-OFFICE \?CCL10 IN? ZORKMID-COIN,LOCAL-GLOBALS \?CCL10 PRINT BOOKKEEPER-DESC RTRUE ?CCL10: ZERO? J-ON-RAFT /?CCL14 PRINTI "lies on an inner tube. His eyes twinkle at you behind his sunglasses." RTRUE ?CCL14: PRINTI "is nearby, watching you with great amusement." RTRUE ?CCL5: EQUAL? ARG,M-WINNER \?CCL16 EQUAL? PRSA,V?SAY \?CCL19 EQUAL? HERE,ENTRANCE-HALL \?CCL19 FSET? PORTCULLIS,OPENBIT \FALSE ?CCL19: EQUAL? PRSA,V?SAY \?CCL24 IN? EAST-KEY,JESTER /FALSE ?CCL24: EQUAL? PRSA,V?SAY \?CCL28 EQUAL? HERE,OUBLIETTE /FALSE ?CCL28: PRINTI """Don't waste your breath, for I'd go to any length to avoid a conversation with such depth as yours. Also, silence is the height of fashion nowadays.""" CRLF CALL1 STOP RSTACK ?CCL16: EQUAL? PRSA,V?EXAMINE \?CCL32 ZERO? J-ON-RAFT /?CCL35 PRINTR "The jester is wearing dark glasses and floating around on an inner tube." ?CCL35: IN? COOKPOT,HERE \?CCL37 PRINTI "The jester is " PRINT COOK-DESC CRLF RTRUE ?CCL37: EQUAL? HERE,TAX-OFFICE \?CCL39 IN? ZORKMID-COIN,LOCAL-GLOBALS \?CCL39 PRINTI "The jester is " PRINT BOOKKEEPER-DESC CRLF RTRUE ?CCL39: FSET? GOGGLES,WORNBIT \?CCL43 PRINT YOU-SEE PRINTR " right through the jester's clothes as though they were transparent! Embarassed, you turn away. (But not before noticing that the jester has pink butterflies stitched onto his underwear.)" ?CCL43: PRINTR "The jester is dressed in a green skin-tight suit, and is wearing a hat with many pointy ends. From each end dangles a gaudy little bell. The jester's eyes twinkle with mischievous energy." ?CCL32: EQUAL? PRSA,V?SHOW,V?GIVE \?CCL45 EQUAL? HERE,MARSH,NICE-LUNCH-SPOT \?CCL45 EQUAL? PRSO,FOX,ROOSTER,WORM \?CCL45 PRINTR """Mon Dieu! I must have all zee ingredients together!""" ?CCL45: EQUAL? PRSA,V?GIVE \?CCL50 EQUAL? PRSO,PIGEON \?CCL50 CALL2 META-LOC,PERCH EQUAL? STACK,HERE \?CCL55 PRINTR "The jester takes the pigeon, looks it over, shrugs, and hands it back." ?CCL55: PRINTI "The jester recedes to a point and vanishes, a look of comical surprise splattered across his wide face." IN? SHELL-TABLE,HERE \?CND56 PRINTI " The table and shells disappear as well." ?CND56: CRLF ICALL1 REMOVE-J SET 'J-DISPOSED,MOVES LOC PERCH ZERO? STACK /?CCL60 LOC PERCH MOVE PIGEON,STACK RETURN 2 ?CCL60: REMOVE PIGEON RETURN 2 ?CCL50: EQUAL? PRSA,V?SHOW \?CCL64 EQUAL? PRSO,NUT \?CCL67 ZERO? NUT-OPENED /?CCL70 SET 'NUT-SHOWN,TRUE-VALUE PRINTR """True, no one has seen this 'ere me -- but thousands may see it in years to be!""" ?CCL70: PRINTR """Uncertain and skeptical I must be; countless people may have gazed upon this before me.""" ?CCL67: EQUAL? PRSO,UNOPENED-NUT,NUT-SHELL \FALSE PRINTI "The jester cocks one eyebrow" EQUAL? HERE,WEST-WING \?CND73 PRINTI " and a smile dances at the corners of his mouth" ?CND73: PRINT PERIOD-CR RTRUE ?CCL64: EQUAL? PRSA,V?KILL,V?EAT \?CCL76 ZERO? ALLIGATOR /?CCL76 PRINTR "The jester jumps nimbly away from your snapping jaws." ?CCL76: EQUAL? PRSA,V?RESEARCH \FALSE CALL PICTURED-ENTRY,J-ILL,FALSE-VALUE RSTACK .SEGMENT "CASTLE" .FUNCT J-ENTRY PRINTI """Jesters employ physical, verbal, and magical trickery for the entertainment of king and court. The most recent Royal Jester, the favorite of Lord Wurb Flathead, is named Barbazzo " GET MID-NAMES,MID-NAME-NUM PRINT STACK PRINTR " Fernap.""" .ENDSEG .SEGMENT "0" .FUNCT MID-NAME-F CALL2 VISIBLE?,JESTER ZERO? STACK /?CCL3 GET MID-NAME-WORDS,MID-NAME-NUM CALL NOUN-USED?,MID-NAME,STACK ZERO? STACK /?CCL3 CALL2 PERFORM-PRSA,JESTER RSTACK ?CCL3: CALL2 HANDLE,MID-NAME ZERO? STACK \?CCL7 EQUAL? PRSA,V?FOLLOW \FALSE ?CCL7: PRINT BY-THAT-NAME CALL1 STOP RSTACK .FUNCT OTHER-J-NAMES-F CALL2 VISIBLE?,JESTER ZERO? STACK /?CCL3 CALL2 PERFORM-PRSA,JESTER RSTACK ?CCL3: CALL2 HANDLE,OTHER-J-NAMES ZERO? STACK \?CCL5 EQUAL? PRSA,V?FOLLOW \FALSE ?CCL5: PRINT BY-THAT-NAME CALL1 STOP RSTACK .FUNCT J-GARMENT-F EQUAL? PRSO,J-POCKET,J-SHOE,J-HAT \?CCL3 CALL2 TOUCHING?,PRSO ZERO? STACK /?CCL3 PRINTR "The jester dances spryly out of reach." ?CCL3: EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-INSIDE,V?EXAMINE \?CCL7 IN? ZORKMID-BILL,PRSO \?CCL7 FSET? GOGGLES,WORNBIT \?CCL7 PRINT YOU-SEE PRINTI " right through" ICALL1 TPRINT-PRSO PRINTR " as if it were made of glass -- and sure enough, there's the zorkmid bill!" ?CCL7: EQUAL? PRSA,V?EXAMINE \?CCL12 EQUAL? PRSO,J-HAT \?CCL12 PRINTR "It has many floppy tips, with bells dangling from each one." ?CCL12: EQUAL? PRSA,V?POINT \FALSE EQUAL? HERE,GAMING-ROOM \FALSE FSET? ZORKMID-BILL,TOUCHBIT /FALSE IN? ZORKMID-BILL,PRSO \?CCL22 MOVE ZORKMID-BILL,PROTAGONIST FSET ZORKMID-BILL,TOUCHBIT PRINTI "The jester looks sheepish. He removes the bill and hands it to you. ""You're pretty slick; you've discovered my trick.""" ICALL1 J-EXITS ICALL2 INC-SCORE,12 RTRUE ?CCL22: PRINTI "The jester howls with glee, and " EQUAL? PRSO,J-POCKET \?CCL25 PRINTI "turns his pocket inside out" JUMP ?CND23 ?CCL25: EQUAL? PRSO,J-HAT \?CCL27 PRINTI "removes his hat" JUMP ?CND23 ?CCL27: PRINTI "removes his shoe" ?CND23: PRINTI ". Nothing. " CALL1 ANOTHER-SHELL-GAME RSTACK .FUNCT I-JESTER,CALLED-BY-DOORBELL,PLUR,APPEAR-PROB ZERO? TIME-STOPPED /?CND1 ICALL2 DEQUEUE,I-JESTER RFALSE ?CND1: SET 'APPEAR-PROB,J-APPEAR-PROB EQUAL? HERE,FR-OFFICES,OFFICES-WEST,OFFICES-EAST /?CCL4 EQUAL? HERE,OFFICES-NORTH,OFFICES-SOUTH \?CND3 ?CCL4: ADD FLOOR-NUMBER,40 DIV STACK,40 DIV APPEAR-PROB,STACK >APPEAR-PROB ?CND3: ICALL QUEUE,I-JESTER,-1 IN? PROTAGONIST,DB /?CTR8 EQUAL? HERE,INQUISITION,PLAIN /?CTR8 EQUAL? HERE,ENTRANCE-HALL \?CCL9 FSET? PORTCULLIS,OPENBIT /?CCL9 ZERO? CALLED-BY-DOORBELL \?CCL9 ?CTR8: RANDOM 5 ICALL QUEUE,I-JESTER,STACK RFALSE ?CCL9: ZERO? LIT \?CCL17 RANDOM 5 ICALL QUEUE,I-JESTER,STACK ICALL1 RETURN-FROM-MAP PRINTI " You hear jingling bells and a familiar laugh in the darkness." FSET? SECRET-PASSAGE,TOUCHBIT /?CND18 PRINTR " ""Trouble finding a light? I'm just the man to set you right! Tighten your belt and pull up your socks and re-read the book from your ZORK ZERO box! Or,"" the voice asks suspiciously, ""maybe you're one of those software pirates? In that case, I hope you fall into a bottomless pit.""" ?CND18: CRLF RTRUE ?CCL17: ZERO? DO-J \?CTR20 RANDOM 100 LESS? APPEAR-PROB,STACK /?CCL21 ?CTR20: SET 'DO-J,FALSE-VALUE ICALL2 DEQUEUE,I-JESTER ICALL1 RETURN-FROM-MAP PRINTI " " IN? JESTER,HERE /?CND24 ZERO? TURNED-INTO /?CCL28 ICALL1 REMOVE-J PRINTI "You suddenly notice another " ICALL2 DPRINT,TURNED-INTO PRINTI ", wearing a jester's costume. Laughing, it says, ""I'd heard that there was a dauntless adventurer around, but there's no one here but us " GETP TURNED-INTO,P?PLURAL >PLUR ZERO? PLUR /?CCL31 PRINT PLUR JUMP ?CND29 ?CCL21: INC 'J-APPEAR-PROB RFALSE ?CCL31: ICALL2 DPRINT,TURNED-INTO PRINTC 115 ?CND29: PRINTI "!"" Still laughing, the jester/" ICALL2 DPRINT,TURNED-INTO PRINTR " vanishes." ?CCL28: CALL2 VISIBLE?,OTTO ZERO? STACK /?CCL33 PRINTI "You spot a fly wearing a tiny floppy green hat with bells at the tips. Otto spots the fly as well, and begins to salivate. In a high, thin imitation of the jester's voice, the fly cries ""Help me!"" -- but Otto's tongue moves before you can, and in a split-second the jester/fly is gonzo." RTRUE ?CCL33: IN? PROTAGONIST,YACHT \?CCL35 SET 'J-ON-RAFT,TRUE-VALUE PRINTI "You notice the jester, floating next to the yacht in an inner tube, wearing sunglasses and lots of tanning lotion." JUMP ?CND24 ?CCL35: FSET? JESTER,TOUCHBIT \?CCL37 PRINTI "The jester appears." EQUAL? HERE,ICKY-CAVE \?CCL40 IN? SICKLY-WITCH,HERE \?CCL40 PRINT WITCH-REMOVES-J RTRUE ?CCL40: FSET? HERE,BEYONDBIT \?CND24 PRINTI " ""Hi! Small world, isn't it!""" JUMP ?CND24 ?CCL37: FSET JESTER,TOUCHBIT PRINTI "You suddenly notice a wiry fellow with an outrageous costume and a feral grin. ""I'm the jester of the castle, I may pester, I may hassle; and I often speak in rhyme, for it helps to pass the time!""" ?CND24: MOVE JESTER,HERE ICALL2 THIS-IS-IT,JESTER EQUAL? PRSA,V?TAKE \?CCL46 EQUAL? PRSO,EAST-KEY \?CCL46 FSET? EAST-KEY,TRYTAKEBIT \?CCL46 MOVE EAST-KEY,JESTER PRINTI " He snatches the key before you can take it." JUMP ?CND44 ?CCL46: EQUAL? HERE,PITS \?CND44 FSET? LANTERN,TRYTAKEBIT \?CND44 PRINTR " He has an enormous slice of watermelon which he devours with juicy abandon, rind and all, and then spits out a stream of pits, which land and turn into even more bottomless pits. ""Don't you hate pits? I know I do!""" ?CND44: CRLF PRINTI " " EQUAL? HERE,ENTRANCE-HALL \?CCL55 FSET? PORTCULLIS,OPENBIT \?CCL58 PRINTI "The jester looks at the open portcullis. ""Oh, right! My memory is no longer so great; I've already opened this gate!""" ICALL1 J-EXITS JUMP ?CND53 ?CCL58: ICALL2 SETUP-ORPHAN,STR?44 PRINTI """If you're quick as a fiddle, and answer this riddle, you'll get what you're hopin' -- the gate will be open!"" The jester clears his throat. """ GETP HERE,P?RIDDLE PRINT STACK CRLF JUMP ?CND53 ?CCL55: IN? EAST-KEY,JESTER \?CCL60 ICALL2 SETUP-ORPHAN,STR?44 PRINTI """Before you get this key, you must answer this riddle for me!"" The jester poses theatrically. """ GETP SOLAR,P?RIDDLE PRINT STACK CRLF JUMP ?CND53 ?CCL60: EQUAL? HERE,OUBLIETTE \?CCL62 ZERO? OUBLIETTE-SCORE \?CCL65 PRINTI """Trapped again? Don't frown or fret! I'll help you leave the Oubliette! But saving you is such a pain; please don't get stuck down here again!""" CRLF CRLF ICALL2 GOTO,DUNGEON JUMP ?CND53 ?CCL65: ICALL2 SETUP-ORPHAN,STR?44 PRINTI """Don't scream or shout, I'll get you out! But first my thirst for a riddle must be twiddled!"" The jester coughs lightly and begins. """ GETP HERE,P?RIDDLE PRINT STACK CRLF JUMP ?CND53 ?CCL62: EQUAL? HERE,WEST-WING \?CCL67 ZERO? NUT-EATEN \?CCL67 PRINT ERE-YOU-PASS JUMP ?CND53 ?CCL67: EQUAL? HERE,GAMING-ROOM \?CCL71 FSET? ZORKMID-BILL,TOUCHBIT /?CCL71 MOVE SHELL-TABLE,HERE PRINTI """Blackjack... Fanucci... all too tame; let's play the old shell game!"" From thin air, the jester produces a small table, three shells, and a zorkmid bill of high denomination. He arranges the shells in a row on the table and places the bill under the center shell. With hands that move in a dizzying blur, he shuffles the order of the shells. ""Demonstrate your visual skill -- point to the location of the zorkmid bill!"" He motions toward the shells, left, center, and right." ICALL1 SEE-BILL? CRLF JUMP ?CND53 ?CCL71: EQUAL? HERE,FR-PENTHOUSE \?CCL75 PRINTI """Your persistence will bring you wide renown; you've reached the four hundredth floor! The hard part now is getting down -- I suggest that you simply RESTORE!""" CRLF ICALL1 J-EXITS JUMP ?CND53 ?CCL75: RANDOM 100 LESS? SLATE-PROB,STACK /?CCL77 IN? SLATE,LOCAL-GLOBALS \?CCL77 MOVE SLATE,PROTAGONIST PRINTI """While cleaning my attic, I found some old haddock, a hammer and nails, some barrels and pails, an old garden gate, and this silly old slate!"" He hands you the slate." ICALL2 J-EXITS,TRUE-VALUE JUMP ?CND53 ?CCL77: RANDOM 100 LESS? SCROLL-PROB,STACK /?CCL81 IN? SCROLL,LOCAL-GLOBALS \?CCL81 LOC PROTAGONIST FSET? STACK,DROPBIT \?CCL86 LOC PROTAGONIST MOVE SCROLL,STACK JUMP ?CND84 ?CCL86: MOVE SCROLL,HERE ?CND84: PRINTI """I thought of no rhyme; my puzzle's on paper this time."" He drops a scroll by your feet." ICALL2 J-EXITS,TRUE-VALUE JUMP ?CND53 ?CCL81: RANDOM 100 LESS? 25,STACK /?CCL88 FSET? HERE,BEYONDBIT /?CCL88 PRINTI """I've learned from years of loyalty, spinning rhymes for this noble court, that with the attention span of royalty, my poems must be short!""" ICALL1 J-EXITS JUMP ?CND53 ?CCL88: PRINTI "The jester watches you with twinkling eyes." CRLF ?CND53: ADD SLATE-PROB,2 >SLATE-PROB ADD SCROLL-PROB,2 >SCROLL-PROB RETURN SCROLL-PROB .FUNCT J-EXITS,JUST-DID-SLATE-OR-SCROLL,DO-FUNNY-PAPER,LIT? ICALL1 REMOVE-J RANDOM 100 LESS? FUNNY-PAPER-PROB,STACK /?CND1 IN? FUNNY-PAPER,LOCAL-GLOBALS \?CND1 ZERO? JUST-DID-SLATE-OR-SCROLL \?CND1 SET 'DO-FUNNY-PAPER,TRUE-VALUE ?CND1: RANDOM 100 LESS? 15,STACK /?CCL8 ZERO? DO-FUNNY-PAPER \?CCL8 PRINTR " The jester winces at his rhyming, then shrugs. ""Oh, well, they can't all be gems."" In a wink, he is gone." ?CCL8: RANDOM 100 LESS? 20,STACK /?CND6 IN? PROTAGONIST,HERE \?CND6 EQUAL? HERE,TORTURE-CHAMBER /?CND6 ZERO? DO-FUNNY-PAPER \?CND6 MOVE BEDBUG,HERE SET 'P-CONT,-1 PRINTR " The jester yawns and says, ""Think I'll catch some winks. Nighty night! Don't let the bedbugs bite!"" As the jester vanishes, you hear the clicking of giant mandibles." ?CND6: PRINTI " The jester gives a cheerful wave of farewell and vanishes, saying, """ ZERO? DO-FUNNY-PAPER /?CCL18 ICALL QUEUE,I-FUNNY-PAPER,2 SET 'FUNNY-PAPER-PROB,0 PRINTI "See you in the funny papers!"" A breeze begins picking up." CRLF JUMP ?CND16 ?CCL18: RANDOM 100 LESS? 20,STACK /?CCL20 FSET? HERE,DESERTBIT /?CCL20 EQUAL? HERE,LAKE-FLATHEAD,UNDERWATER,LAKE-BOTTOM /?CCL20 EQUAL? HERE,HOLD,GONDOLA /?CCL20 GETP HERE,P?REGION EQUAL? STACK,STR?249 /?CCL20 PRINTI "See you next week, same bat time, same bat channel!"" A moment later, you hear a shrieking, ""Fweep! Fweep! Fweep!"" A large deranged bat swoops down, snatches you up, and deposits you in" PRINT ELLIPSIS MOVE PROTAGONIST,HERE CALL FIND-IN,PROTAGONIST,ONBIT >LIT? ZERO? LIT? \?CND27 CALL FIND-IN,HERE,ONBIT >LIT? ZERO? LIT? /?CND27 MOVE LIT?,PROTAGONIST ?CND27: CALL1 BEYOND-LAKE? ZERO? STACK \?CTR32 ZERO? LIT? /?CCL33 RANDOM 100 LESS? 25,STACK /?CCL33 ?CTR32: PUSH BATS-LAIR JUMP ?CND31 ?CCL33: ZERO? SECRET-PASSAGE-OPEN /?CCL39 ZERO? LIT? /?CCL39 RANDOM 100 LESS? 40,STACK /?CCL39 PUSH PARAPET JUMP ?CND31 ?CCL39: FSET? DRAWBRIDGE,OPENBIT \?CCL44 RANDOM 100 LESS? 50,STACK /?CCL44 PUSH OUTER-BAILEY JUMP ?CND31 ?CCL44: PUSH ROOF ?CND31: ICALL2 GOTO,STACK JUMP ?CND16 ?CCL20: RANDOM 100 LESS? 33,STACK /?CCL48 EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS,SHOULDER /?CCL48 EQUAL? HERE,EAR,INNER-EAR /?CCL48 ZERO? HUNGER-COUNT \?CCL48 EQUAL? JUMP-X,99 \?CCL48 EQUAL? JUMP-Y,99 \?CCL48 SET 'ALLIGATOR,TRUE-VALUE ICALL QUEUE,I-UNALLIGATOR,4 PRINTI "See you later, alligator!"" Your skin feels itchy" FIRST? PROTAGONIST \?CND56 PRINTI " and you've dropped what you were holding" ?CND56: PRINTC 46 LOC PROTAGONIST FSET? STACK,DROPBIT \?CCL60 LOC PROTAGONIST JUMP ?CND58 ?CCL60: PUSH HERE ?CND58: ICALL ROB,PROTAGONIST,STACK SET 'P-CONT,-1 CRLF JUMP ?CND16 ?CCL48: RANDOM 100 LESS? 50,STACK \?CTR61 ZERO? ALLIGATOR \?CTR61 FSET? CLOWN-NOSE,WORNBIT \?CCL62 ?CTR61: PRINTI "So long, and thanks for all the fish!"" Odd. You've never given the jester any fish." CRLF JUMP ?CND16 ?CCL62: MOVE CLOWN-NOSE,PROTAGONIST FSET CLOWN-NOSE,WORNBIT ICALL QUEUE,I-SUFFOCATE,-1 SET 'P-CONT,-1 PRINTI "Catch you aroun', clown!"" You suddenly find yourself having a bit of difficulty breathing." CRLF ?CND16: ADD FUNNY-PAPER-PROB,5 >FUNNY-PAPER-PROB RETURN FUNNY-PAPER-PROB .FUNCT BEYOND-LAKE? FSET? HERE,DESERTBIT /TRUE EQUAL? HERE,STABLE,GROTTO,SHRINE /TRUE EQUAL? HERE,G-U-MOUNTAIN,STREAM,G-U-WOODS /TRUE EQUAL? HERE,G-U-SAVANNAH,EAST-SHORE,SOUTH-SHORE /TRUE EQUAL? HERE,RING-OF-DUNES,BASE-OF-MOUNTAIN /TRUE RFALSE .FUNCT REMOVE-J ICALL QUEUE,I-JESTER,12 SET 'J-APPEAR-PROB,0 SET 'GUESSES,FALSE-VALUE SET 'J-ON-RAFT,FALSE-VALUE IN? EAST-KEY,JESTER \?CND1 MOVE EAST-KEY,SOLAR ?CND1: FSET? ZORKMID-BILL,TOUCHBIT /?CND3 MOVE ZORKMID-BILL,LOCAL-GLOBALS ?CND3: REMOVE SHELL-TABLE REMOVE JESTER RTRUE .FUNCT DONT-CRY INC 'GUESSES PRINTI """Wrong, but don't " EQUAL? GUESSES,3 \?CCL3 SET 'GUESSES,0 PRINTI "get all a-twiddle; I'll repeat the riddle! " GETP HERE,P?RIDDLE PRINT STACK CRLF RTRUE ?CCL3: PRINTR "cry -- give it another try.""" .FUNCT I-UNALLIGATOR SET 'ALLIGATOR,FALSE-VALUE ICALL1 RETURN-FROM-MAP PRINTR " With a pop, your tail and snout shorten, and you are no longer a candidate for being turned into a pair of expensive shoes." .FUNCT I-SUFFOCATE FSET? CLOWN-NOSE,WORNBIT /?CND1 SET 'SUFFOCATE-COUNTER,0 ICALL2 DEQUEUE,I-SUFFOCATE RFALSE ?CND1: INC 'SUFFOCATE-COUNTER EQUAL? SUFFOCATE-COUNTER,5 \?CCL5 ICALL1 RETURN-FROM-MAP PRINTR " You're still having trouble breathing. It's probably due to the clown nose that's clamped in the middle of your face." ?CCL5: EQUAL? SUFFOCATE-COUNTER,8 \?CCL7 ICALL1 RETURN-FROM-MAP PRINTR " It's really getting tough to keep going without fresh air!" ?CCL7: EQUAL? SUFFOCATE-COUNTER,10 \?CCL9 ICALL1 RETURN-FROM-MAP PRINTR " You're getting lightheaded..." ?CCL9: EQUAL? SUFFOCATE-COUNTER,11 \FALSE ICALL1 RETURN-FROM-MAP CALL2 JIGS-UP,STR?928 RSTACK .FUNCT I-FUNNY-PAPER LOC PROTAGONIST MOVE FUNNY-PAPER,STACK ICALL QUEUE,I-REMOVE-FUNNY-PAPER,1 ICALL2 THIS-IS-IT,FUNNY-PAPER ICALL1 RETURN-FROM-MAP PRINTR " The wind blows a colorful piece of newspaper into view. It's a funny paper!" .FUNCT I-REMOVE-FUNNY-PAPER,TOLD IN? FUNNY-PAPER,PROTAGONIST /?CND1 CALL2 VISIBLE?,FUNNY-PAPER ZERO? STACK /?CND3 SET 'TOLD,TRUE-VALUE ICALL1 RETURN-FROM-MAP PRINTI " The wind blows the funny paper out of sight." CRLF ?CND3: MOVE FUNNY-PAPER,LOCAL-GLOBALS ?CND1: ZERO? TOLD \TRUE RFALSE .FUNCT FUNNY-PAPER-F EQUAL? PRSA,V?READ \?CCL3 PRINTI "It's a comic strip entitled ""Me and the Jester."" In the strip, a peasant adventurer is bumbling around a mighty castle, alternately helped and hindered by a playful jester. In one panel, the Jester suggests that the adventurer look under the " ICALL2 DPRINT,HOLEY-SLAB PRINTR " in the Crypt." ?CCL3: EQUAL? PRSA,V?FOLLOW \FALSE PRINTR "You've lost track of it." .FUNCT BEDBUG-F EQUAL? PRSA,V?EXAMINE \?CCL3 PRINTR "It's quite larger than any bedbug you've ever seen before: about the size of a small sheep. It looks as if it has just been roused from a deep sleep, and isn't at all happy about the fact. With a mixture of weariness and anger, it waves powerful pincers in your direction." ?CCL3: EQUAL? PRSA,V?LEAP \?CCL5 CALL1 IMPOSSIBLES RSTACK ?CCL5: EQUAL? PRSA,V?KICK,V?BITE,V?KILL \FALSE PRINTR "This bedbug's chitinous shell is like battle armor." .FUNCT CLOWN-NOSE-F EQUAL? PRSA,V?WEAR \FALSE FSET? CLOWN-NOSE,WORNBIT /FALSE FSET CLOWN-NOSE,WORNBIT ICALL QUEUE,I-SUFFOCATE,-1 PRINTR "You don the nose, which makes breathing extremely difficult." .FUNCT SLATE-F EQUAL? PRSA,V?EXAMINE \?CCL3 PRINTR "The small slate is set into a wooden frame. It looks to be at least fifty if not a hundred years old. A shaky hand has inscribed something onto the slate." ?CCL3: EQUAL? PRSA,V?READ \FALSE ZERO? STUMP-X \?CND6 RANDOM 3 >STUMP-X RANDOM 100 LESS? 50,STACK /?CND8 MUL STUMP-X,-1 >STUMP-X ?CND8: RANDOM 3 >STUMP-Y RANDOM 100 LESS? 50,STACK /?CND10 MUL STUMP-Y,-1 >STUMP-Y ?CND10: PRINTI "You shake enough dust off the slate to read it: " ?CND6: PRINTI """Stand at the oldest and mightiest elm around. Jump " GRTR? STUMP-Y,0 \?CCL14 PRINTI "north " JUMP ?CND12 ?CCL14: PRINTI "south " ?CND12: EQUAL? STUMP-Y,1,-1 \?CCL17 PRINTI "once" JUMP ?CND15 ?CCL17: EQUAL? STUMP-Y,2,-2 \?CCL19 PRINTI "twice" JUMP ?CND15 ?CCL19: PRINTI "thrice" ?CND15: PRINTI " then jump " GRTR? STUMP-X,0 \?CCL22 PRINTI "east " JUMP ?CND20 ?CCL22: PRINTI "west " ?CND20: EQUAL? STUMP-X,1,-1 \?CCL25 PRINTI "once" JUMP ?CND23 ?CCL25: EQUAL? STUMP-X,2,-2 \?CCL27 PRINTI "twice" JUMP ?CND23 ?CCL27: PRINTI "thrice" ?CND23: PRINTR ".""" .FUNCT SCROLL-F EQUAL? PRSA,V?EXAMINE,V?READ \FALSE PRINTI "The paper reads:" CRLF CRLF PRINTI " " HLIGHT H-ITALIC PRINTI "RAM A NAG" CRLF CRLF HLIGHT H-NORMAL PRINTR "TREEN RIBARLY HENT HOCUT MORRA RICHET" .ENDSEG .SEGMENT "CASTLE" .FUNCT SHELL-F EQUAL? PRSA,V?POINT \?CCL3 PRINTI "The jester lifts the shell. Empty. " CALL1 ANOTHER-SHELL-GAME RSTACK ?CCL3: EQUAL? PRSA,V?MOVE,V?LOOK-UNDER,V?TOUCH /?CTR4 EQUAL? PRSA,V?TAKE \?CCL5 ?CTR4: PRINTR "The jester stops you, saying, ""You deserve a beating for trying such cheating!""" ?CCL5: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \FALSE FSET? GOGGLES,WORNBIT \FALSE PRINTR "Thanks to the goggles, you can see right through the shell as though it were transparent! There's nothing under it." .FUNCT ANOTHER-SHELL-GAME PRINTI """Don't be sore, let's try it once more!"" He reshuffles the shells." MOVE ZORKMID-BILL,LOCAL-GLOBALS ICALL1 SEE-BILL? CRLF RTRUE .FUNCT SEE-BILL?,BILL-LOC FSET? GOGGLES,WORNBIT \FALSE RANDOM 100 LESS? 33,STACK /?CCL6 SET 'BILL-LOC,J-POCKET JUMP ?CND4 ?CCL6: RANDOM 100 LESS? 50,STACK /?CCL8 SET 'BILL-LOC,J-SHOE JUMP ?CND4 ?CCL8: SET 'BILL-LOC,J-HAT ?CND4: MOVE ZORKMID-BILL,BILL-LOC PRINTI " You find that you can see right through the shells -- and the zorkmid bill isn't under any of them! Before you can say so, you notice the bill -- " EQUAL? BILL-LOC,J-HAT \?CCL11 PRINTI "under" JUMP ?CND9 ?CCL11: PRINTI "in" ?CND9: ICALL2 TPRINT,BILL-LOC PRINTI "! After a moment, the vision fades, and" ICALL2 TPRINT,BILL-LOC PRINTI " once again appears opaque." RTRUE .FUNCT JESTERS-QUARTERS-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "This is a small, spare room. The only features are a small louvered door on the south wall, a larger arched door on the north wall, and a stair which spirals downward. " FSET? LARGE-DOOR,OPENBIT \?CCL6 PRINTI "The large door is open but the small door is" JUMP ?CND4 ?CCL6: PRINTI "Both doors are" ?CND4: PRINTI " closed." RTRUE .FUNCT SMALL-DOOR-ENTER-F,RARG ZERO? RARG \FALSE ICALL1 RETURN-FROM-MAP ICALL DO-FIRST,STR?140,SMALL-DOOR ICALL2 THIS-IS-IT,SMALL-DOOR RFALSE .FUNCT LARGE-DOOR-F EQUAL? PRSA,V?OPEN \FALSE ZERO? TOWER-BEATEN \FALSE PRINTR "Although there's no visible lock, the door refuses to budge." .FUNCT G-J-DOOR-F,TBL,LEN EQUAL? PRSA,V?OPEN \?CCL3 FSET? LARGE-DOOR,OPENBIT \?CCL3 RETURN SMALL-DOOR ?CCL3: EQUAL? PRSA,V?CLOSE \FALSE FSET? LARGE-DOOR,OPENBIT \FALSE RETURN LARGE-DOOR .FUNCT SMALL-DOOR-F,WEIGHT-CNT,FUDGE,?TMP1,?TMP2 EQUAL? PRSA,V?LOOK-BEHIND,V?OPEN \?CCL3 ICALL2 PICINF-PLUS-ONE,B-1-L-PIC-LOC GET PICINF-TBL,0 PUT B-Y-TBL,5,STACK GET PICINF-TBL,1 PUT B-X-TBL,0,STACK ICALL2 PICINF-PLUS-ONE,B-2-C-PIC-LOC GET PICINF-TBL,0 PUT B-Y-TBL,4,STACK GET PICINF-TBL,1 PUT B-X-TBL,1,STACK ICALL2 PICINF-PLUS-ONE,B-3-R-PIC-LOC GET PICINF-TBL,0 PUT B-Y-TBL,3,STACK GET PICINF-TBL,1 PUT B-X-TBL,2,STACK ICALL2 PICINF-PLUS-ONE,B-4-PIC-LOC GET PICINF-TBL,0 PUT B-Y-TBL,2,STACK ICALL2 PICINF-PLUS-ONE,B-5-PIC-LOC GET PICINF-TBL,0 PUT B-Y-TBL,1,STACK ICALL2 PICINF-PLUS-ONE,B-6-PIC-LOC GET PICINF-TBL,0 PUT B-Y-TBL,0,STACK FSET SMALL-DOOR,OPENBIT SET 'TOWER-CHANGED,FALSE-VALUE ICALL SPLIT-BY-PICTURE,B-SPLIT,TRUE-VALUE ICALL2 ADJUST-TEXT-WINDOW,B-BOTTOM ICALL1 DRAW-TOWER PRINTI "Opening the door reveals a tiny nook containing a Tower of Bozbar, consisting of 3 pegs and " CALL2 CCOUNT,LEFT-PEG >?TMP2 CALL2 CCOUNT,RIGHT-PEG ADD ?TMP2,STACK >?TMP1 CALL2 CCOUNT,CENTER-PEG ADD ?TMP1,STACK >WEIGHT-CNT PRINTN WEIGHT-CNT PRINTI " cylindrical weight" EQUAL? WEIGHT-CNT,1 /?CND4 PRINTC 115 ?CND4: EQUAL? WEIGHT-CNT,6 \?CND6 PRINTI " ranging from a 1-ugh to a 6-ugh weight" ?CND6: PRINT PERIOD-CR PRINTI " Type the number of the weight you want to move, followed by the peg you want to move it to: L, C, or R. " ZERO? ACTIVE-MOUSE /?CND8 PRINTI "Or, if you'd rather use your mouse, click on the weight you want to move, then click on the peg you want to move it to. " ?CND8: PRINTI "You can Undo your move by typing U" ZERO? ACTIVE-MOUSE /?CND10 PRINTI " (or clicking on the UNDO spot)" ?CND10: GET 0,8 BTST STACK,8 /?CCL14 PRINTI " -- even though Undo doesn't normally work on your system!" JUMP ?CND12 ?CCL14: PRINTC 46 ?CND12: PRINTI " Type X" ZERO? ACTIVE-MOUSE /?CND15 PRINTI " (or click on the EXIT spot)" ?CND15: PRINTI " to exit." ICALL1 TOWER-MODE CRLF CRLF ICALL1 HIT-ANY-KEY ICALL2 INIT-SL-WITH-SPLIT,TEXT-WINDOW-PIC-LOC RTRUE ?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL18 PRINTR "The small door is closed." ?CCL18: EQUAL? PRSA,V?CLOSE \FALSE PRINTR "It is!" .FUNCT WEIGHT-F,CNT,RECURSING EQUAL? PRSA,V?MOVE-TO \FALSE EQUAL? PRSI,RIGHT-PEG,CENTER-PEG,LEFT-PEG \FALSE IN? PRSO,PRSI \?CCL8 PRINTI "It's already on that peg." RTRUE ?CCL8: CALL2 NOT-TOP-WEIGHT,PRSO ZERO? STACK /?CCL10 PRINTI "You can only move the weight that's on top!" RTRUE ?CCL10: SET 'TOWER-CHANGED,TRUE-VALUE ICALL MOVE-WEIGHT,PRSO,PRSI MOVE PRSO,PRSI PRINTI "You move" ICALL1 TPRINT-PRSO PRINTI " to" ICALL1 TPRINT-PRSI ?PRG11: CALL CRUSH-WEIGHT,PRSO,PRSI,RECURSING ZERO? STACK /?REP12 SET 'RECURSING,TRUE-VALUE JUMP ?PRG11 ?REP12: ZERO? TOWER-BEATEN /?CND16 SET 'TOWER-BEATEN,FALSE-VALUE FSET? LARGE-DOOR,OPENBIT \?CND16 FCLEAR LARGE-DOOR,OPENBIT PRINTI ". The large door to the north swings silently shut" ?CND16: PRINTC 46 RTRUE .FUNCT TOWER-MODE,CHAR,WGT,PEG,X,JUST-UNDID,?TMP1 ?PRG1: ZERO? TOWER-CHANGED /?CND3 ZERO? JUST-UNDID \?CND3 CALL1 TOWER-WIN-CHECK >TOWER-BEATEN ZERO? TOWER-BEATEN /?CND3 PRINTI " You hear a ""click"" from the direction of the Tower" EQUAL? TOWER-BEATEN,PYRAMID /?CND8 PRINTI ". It tilts to the " EQUAL? TOWER-BEATEN,PYRAMID-L \?CCL12 PRINTI "left" JUMP ?CND8 ?CCL12: PRINTI "right" ?CND8: FSET WEIRD,REDESCBIT FCLEAR SMALL-DOOR,OPENBIT PRINTI ". The small louvered door swings silently shut." RTRUE ?CND3: ZERO? DEMO-VERSION? /?CCL15 CALL2 INPUT-DEMO,1 >CHAR JUMP ?CND13 ?CCL15: INPUT 1 >CHAR ?CND13: ICALL1 MOUSE-INPUT? EQUAL? CHAR,CLICK1,CLICK2 \?CND16 CALL1 B-MOUSE-WEIGHT-PICK >CHAR ?CND16: CLEAR S-TEXT EQUAL? CHAR,88,120 \?CCL20 PRINTI "You shut the louvered door, concealing the Tower of Bozbar from view." RTRUE ?CCL20: EQUAL? CHAR,85,117 \?CCL22 ZERO? TOWER-CHANGED \?CCL25 PRINTI "You can't undo until you make a move!" JUMP ?PRG1 ?CCL25: ZERO? JUST-UNDID /?CCL27 PRINTI "You just undid; you can't undo again until you move again!" JUMP ?PRG1 ?CCL27: SET 'JUST-UNDID,TRUE-VALUE ICALL1 B-RESTORE ICALL2 DRAW-TOWER,TRUE-VALUE PRINTI "Undone." JUMP ?PRG1 ?CCL22: EQUAL? CHAR,49,50,51 /?CTR28 EQUAL? CHAR,52,53,54 /?CTR28 EQUAL? CHAR,146,147,148 /?CTR28 EQUAL? CHAR,149,150,151 \?CCL29 ?CTR28: EQUAL? CHAR,49,146 \?CCL36 SET 'WGT,1-WEIGHT JUMP ?CND34 ?CCL36: EQUAL? CHAR,50,147 \?CCL38 SET 'WGT,2-WEIGHT JUMP ?CND34 ?CCL38: EQUAL? CHAR,51,148 \?CCL40 SET 'WGT,3-WEIGHT JUMP ?CND34 ?CCL40: EQUAL? CHAR,52,149 \?CCL42 SET 'WGT,4-WEIGHT JUMP ?CND34 ?CCL42: EQUAL? CHAR,53,150 \?CCL44 SET 'WGT,5-WEIGHT JUMP ?CND34 ?CCL44: SET 'WGT,6-WEIGHT ?CND34: LOC WGT EQUAL? STACK,LEFT-PEG,CENTER-PEG,RIGHT-PEG /?CCL47 PRINTI "There's no " ICALL2 DPRINT,WGT PRINTI " anymore -- you crushed it." JUMP ?PRG1 ?CCL47: ZERO? ACTIVE-MOUSE /?CCL50 PRINTI "Use your mouse or t" JUMP ?CND48 ?CCL50: PRINTC 84 ?CND48: PRINTI "ype L (left) or C (center) or R (right) to specify the peg you'd like to move the " ICALL2 DPRINT,WGT PRINTI " to." ZERO? DEMO-VERSION? /?CCL53 CALL2 INPUT-DEMO,1 >CHAR JUMP ?CND51 ?CCL53: INPUT 1 >CHAR ?CND51: ICALL1 MOUSE-INPUT? EQUAL? CHAR,CLICK1,CLICK2 \?CND54 CALL1 B-MOUSE-PEG-PICK >CHAR ?CND54: CLEAR S-TEXT EQUAL? CHAR,76,108,82 /?CCL58 EQUAL? CHAR,114,67,99 /?CCL58 PRINTI "Next time, " EQUAL? CHAR,CLICK1 \?CCL63 PRINTI "click on the left, center, or right peg!" JUMP ?PRG1 ?CCL63: PRINTI "type R (right), L (left), or C (center) to specify a destination peg!" JUMP ?PRG1 ?CCL58: EQUAL? CHAR,76,108 \?CCL66 SET 'PEG,LEFT-PEG JUMP ?CND64 ?CCL66: EQUAL? CHAR,82,114 \?CCL68 SET 'PEG,RIGHT-PEG JUMP ?CND64 ?CCL68: SET 'PEG,CENTER-PEG ?CND64: ICALL1 B-SAVE ZERO? TOWER-CHANGED /?PRD72 ZERO? JUST-UNDID /?CND69 ?PRD72: ZERO? ACTIVE-MOUSE /?CND69 ICALL2 PICINF-PLUS-ONE,TOWER-UNDO-BOX-LOC SCREEN S-WINDOW GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 DISPLAY UNDO-BOX,?TMP1,STACK SCREEN S-TEXT ?CND69: SET 'JUST-UNDID,FALSE-VALUE CALL PERFORM,V?MOVE-TO,WGT,PEG >X JUMP ?PRG1 ?CCL29: EQUAL? CHAR,76,108,82 /?CTR75 EQUAL? CHAR,114,67,99 \?CCL76 ?CTR75: PRINTI "You must select a weight before you select a destination!" JUMP ?PRG1 ?CCL76: PRINT TYPE-A-NUMBER PRINTI "6, U for Undo, or X to eXit the Tower of Bozbar game." JUMP ?PRG1 .FUNCT B-MOUSE-PEG-PICK,TL-X,TL-Y,BR-X,BR-Y,WEIGHT-WIDTH,WEIGHT-HEIGHT PICINF B-1-WEIGHT,PICINF-TBL /?BOGUS1 ?BOGUS1: GET PICINF-TBL,1 >WEIGHT-WIDTH GET PICINF-TBL,0 >WEIGHT-HEIGHT ICALL2 PICINF-PLUS-ONE,B-1-L-PIC-LOC GET PICINF-TBL,0 >TL-Y GET PICINF-TBL,1 >TL-X ADD WEIGHT-WIDTH,TL-X >BR-X ICALL2 PICINF-PLUS-ONE,B-6-PIC-LOC GET PICINF-TBL,0 ADD STACK,TL-Y >BR-Y CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CND2 RETURN 76 ?CND2: ICALL2 PICINF-PLUS-ONE,B-2-C-PIC-LOC GET PICINF-TBL,1 >TL-X ADD WEIGHT-WIDTH,TL-X >BR-X CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CND4 RETURN 67 ?CND4: ICALL2 PICINF-PLUS-ONE,B-3-R-PIC-LOC GET PICINF-TBL,1 >TL-X ADD WEIGHT-WIDTH,TL-X >BR-X CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CCL8 RETURN 82 ?CCL8: SOUND 1 RETURN CLICK1 .FUNCT B-MOUSE-WEIGHT-PICK,TL-X,TL-Y,BR-X,BR-Y,NUM,TBL,CNT-X,CNT-Y,WEIGHT-WIDTH,WEIGHT-HEIGHT ICALL2 PICINF-PLUS-ONE,TOWER-UNDO-BOX-LOC GET PICINF-TBL,1 >TL-X GET PICINF-TBL,0 >TL-Y PICINF UNDO-BOX,PICINF-TBL /?BOGUS1 ?BOGUS1: GET PICINF-TBL,1 ADD TL-X,STACK >BR-X GET PICINF-TBL,0 ADD TL-Y,STACK >BR-Y CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CND2 RETURN 85 ?CND2: ICALL2 PICINF-PLUS-ONE,TOWER-EXIT-BOX-LOC GET PICINF-TBL,1 >TL-X GET PICINF-TBL,0 >TL-Y PICINF EXIT-BOX,PICINF-TBL /?BOGUS4 ?BOGUS4: GET PICINF-TBL,1 ADD TL-X,STACK >BR-X GET PICINF-TBL,0 ADD TL-Y,STACK >BR-Y CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CND5 RETURN 88 ?CND5: PICINF B-1-WEIGHT,PICINF-TBL /?BOGUS7 ?BOGUS7: GET PICINF-TBL,1 >WEIGHT-WIDTH GET PICINF-TBL,0 >WEIGHT-HEIGHT SET 'TBL,LEFT-PEG-TABLE ?PRG10: GET B-X-TBL,CNT-X >TL-X GET B-Y-TBL,CNT-Y >TL-Y ADD TL-X,WEIGHT-WIDTH >BR-X ADD TL-Y,WEIGHT-HEIGHT >BR-Y CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CND12 GET TBL,CNT-Y >NUM ZERO? NUM /?CND12 GETP NUM,P?SIZE >NUM ?CND12: INC 'CNT-Y ZERO? NUM \?REP11 EQUAL? CNT-Y,6 \?PRG10 ?REP11: ZERO? NUM \?REP9 ZERO? CNT-X \?CCL24 SET 'CNT-X,1 SET 'CNT-Y,0 SET 'TBL,CENTER-PEG-TABLE JUMP ?PRG10 ?CCL24: EQUAL? CNT-X,1 \?REP9 SET 'CNT-X,2 SET 'CNT-Y,0 SET 'TBL,RIGHT-PEG-TABLE JUMP ?PRG10 ?REP9: ZERO? NUM /?CCL29 ADD NUM,48 RSTACK ?CCL29: SOUND 1 RETURN CLICK1 .FUNCT TOWER-WIN-CHECK IN? 1-WEIGHT,LEFT-PEG \?CCL3 IN? 2-WEIGHT,LEFT-PEG \?CCL3 IN? 3-WEIGHT,LEFT-PEG \?CCL3 IN? 4-WEIGHT,LEFT-PEG \?CCL3 IN? 5-WEIGHT,LEFT-PEG \?CCL3 IN? 6-WEIGHT,LEFT-PEG \?CCL3 RETURN PYRAMID-L ?CCL3: IN? 1-WEIGHT,RIGHT-PEG \?CCL11 IN? 2-WEIGHT,RIGHT-PEG \?CCL11 IN? 3-WEIGHT,RIGHT-PEG \?CCL11 IN? 4-WEIGHT,RIGHT-PEG \?CCL11 IN? 5-WEIGHT,RIGHT-PEG \?CCL11 IN? 6-WEIGHT,RIGHT-PEG \?CCL11 RETURN PYRAMID-R ?CCL11: IN? 1-WEIGHT,CENTER-PEG \FALSE IN? 2-WEIGHT,CENTER-PEG \FALSE IN? 3-WEIGHT,CENTER-PEG \FALSE IN? 4-WEIGHT,CENTER-PEG \FALSE IN? 5-WEIGHT,CENTER-PEG \FALSE IN? 6-WEIGHT,CENTER-PEG \FALSE RETURN PYRAMID .FUNCT SET-PEG-TABLE,PEG EQUAL? PEG,LEFT-PEG \?CCL3 RETURN LEFT-PEG-TABLE ?CCL3: EQUAL? PEG,CENTER-PEG /?CTR4 RETURN RIGHT-PEG-TABLE ?CTR4: RETURN CENTER-PEG-TABLE .FUNCT NOT-TOP-WEIGHT,WGT,TBL,CNT,NOT-TOP LOC WGT CALL2 SET-PEG-TABLE,STACK >TBL ?PRG1: GET TBL,CNT EQUAL? STACK,WGT \?CND3 EQUAL? CNT,5 \?CCL7 SET 'NOT-TOP,FALSE-VALUE RETURN NOT-TOP ?CCL7: ADD CNT,1 GET TBL,STACK ZERO? STACK \?CCL9 SET 'NOT-TOP,FALSE-VALUE RETURN NOT-TOP ?CCL9: SET 'NOT-TOP,TRUE-VALUE RETURN NOT-TOP ?CND3: INC 'CNT JUMP ?PRG1 .FUNCT MOVE-WEIGHT,WGT,PEG,TBL,CNT,X,?TMP1 SCREEN S-WINDOW LOC WGT EQUAL? STACK,LEFT-PEG \?CCL3 PUSH 0 JUMP ?CND1 ?CCL3: LOC WGT EQUAL? STACK,CENTER-PEG \?CCL5 PUSH 1 JUMP ?CND1 ?CCL5: PUSH 2 ?CND1: GET B-X-TBL,STACK >X LOC WGT CALL2 SET-PEG-TABLE,STACK >TBL ?PRG6: GET TBL,CNT EQUAL? STACK,WGT \?CND8 GET B-Y-TBL,CNT DISPLAY B-RESTORE-PEG,STACK,X PUT TBL,CNT,0 SET 'CNT,0 EQUAL? PEG,LEFT-PEG \?CCL12 SET 'X,0 JUMP ?CND10 ?CND8: INC 'CNT JUMP ?PRG6 ?CCL12: EQUAL? PEG,CENTER-PEG \?CCL14 SET 'X,1 JUMP ?CND10 ?CCL14: SET 'X,2 ?CND10: GET B-X-TBL,X >X CALL2 SET-PEG-TABLE,PEG >TBL ?PRG15: GET TBL,CNT ZERO? STACK \?CND17 CALL2 SET-B-PIC,WGT >?TMP1 GET B-Y-TBL,CNT DISPLAY ?TMP1,STACK,X PUT TBL,CNT,WGT SCREEN S-TEXT RTRUE ?CND17: INC 'CNT JUMP ?PRG15 .FUNCT CRUSH-WEIGHT,WGT,PEG,RECURSING,TBL,CNT,CRUSHED,X,?TMP1 CALL2 SET-PEG-TABLE,PEG >TBL ?PRG1: GET TBL,CNT EQUAL? STACK,WGT \?CND3 ZERO? CNT \?CCL7 SET 'CRUSHED,FALSE-VALUE JUMP ?REP2 ?CCL7: SUB CNT,1 GET TBL,STACK >CRUSHED ZERO? CRUSHED /?CCL9 GETP CRUSHED,P?SIZE >?TMP1 GETP WGT,P?SIZE LESS? ?TMP1,STACK \?CCL9 EQUAL? PEG,LEFT-PEG \?CCL14 PUSH 0 JUMP ?CND12 ?CCL14: EQUAL? PEG,CENTER-PEG \?CCL16 PUSH 1 JUMP ?CND12 ?CCL16: PUSH 2 ?CND12: GET B-X-TBL,STACK >X SCREEN S-WINDOW GET B-Y-TBL,CNT DISPLAY B-RESTORE-PEG,STACK,X CALL2 SET-B-PIC,WGT >?TMP1 SUB CNT,1 GET B-Y-TBL,STACK DISPLAY ?TMP1,STACK,X SCREEN S-TEXT REMOVE CRUSHED PUT TBL,CNT,0 SUB CNT,1 PUT TBL,STACK,WGT JUMP ?REP2 ?CCL9: SET 'CRUSHED,FALSE-VALUE ?REP2: ZERO? CRUSHED /FALSE ZERO? RECURSING /?CCL21 PRINTI ". And" CALL2 TPRINT,CRUSHED RSTACK ?CND3: INC 'CNT JUMP ?PRG1 ?CCL21: PRINTI ", crushing" CALL2 TPRINT,CRUSHED RSTACK .FUNCT B-SAVE,CNT COPYT LEFT-PEG-TABLE,TOWER-UNDO-TABLE,12 ADD TOWER-UNDO-TABLE,12 COPYT CENTER-PEG-TABLE,STACK,12 ADD TOWER-UNDO-TABLE,24 COPYT RIGHT-PEG-TABLE,STACK,12 LOC 1-WEIGHT PUT TOWER-UNDO-TABLE,18,STACK LOC 2-WEIGHT PUT TOWER-UNDO-TABLE,19,STACK LOC 3-WEIGHT PUT TOWER-UNDO-TABLE,20,STACK LOC 4-WEIGHT PUT TOWER-UNDO-TABLE,21,STACK LOC 5-WEIGHT PUT TOWER-UNDO-TABLE,22,STACK LOC 6-WEIGHT PUT TOWER-UNDO-TABLE,23,STACK RTRUE .FUNCT B-RESTORE,CNT,L COPYT TOWER-UNDO-TABLE,LEFT-PEG-TABLE,12 ADD TOWER-UNDO-TABLE,12 COPYT STACK,CENTER-PEG-TABLE,12 ADD TOWER-UNDO-TABLE,24 COPYT STACK,RIGHT-PEG-TABLE,12 GET TOWER-UNDO-TABLE,18 >L ZERO? L /?CND1 MOVE 1-WEIGHT,L ?CND1: GET TOWER-UNDO-TABLE,19 >L ZERO? L /?CND3 MOVE 2-WEIGHT,L ?CND3: GET TOWER-UNDO-TABLE,20 >L ZERO? L /?CND5 MOVE 3-WEIGHT,L ?CND5: GET TOWER-UNDO-TABLE,21 >L ZERO? L /?CND7 MOVE 4-WEIGHT,L ?CND7: GET TOWER-UNDO-TABLE,22 >L ZERO? L /?CND9 MOVE 5-WEIGHT,L ?CND9: GET TOWER-UNDO-TABLE,23 MOVE 6-WEIGHT,STACK RTRUE .FUNCT DRAW-TOWER,UNDOING,CNT,WGT,PEG-LOC,?TMP1,?TMP2 CLEAR S-FULL SCREEN S-FULL DISPLAY B-BORDER,1,1 PICSET B-PICSET-TBL SCREEN S-WINDOW ICALL DRAW-PEG,LEFT-PEG-TABLE,0 ICALL DRAW-PEG,CENTER-PEG-TABLE,1 ICALL DRAW-PEG,RIGHT-PEG-TABLE,2 ZERO? ACTIVE-MOUSE /?CND1 ICALL2 PICINF-PLUS-ONE,TOWER-UNDO-BOX-LOC CALL1 TOWER-WIN-CHECK ZERO? STACK \?CTR4 ZERO? UNDOING /?CCL5 ?CTR4: SET '?TMP2,DIM-UNDO-BOX JUMP ?CND3 ?CCL5: SET '?TMP2,UNDO-BOX ?CND3: GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 DISPLAY ?TMP2,?TMP1,STACK ICALL2 PICINF-PLUS-ONE,TOWER-EXIT-BOX-LOC GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 DISPLAY EXIT-BOX,?TMP1,STACK ?CND1: SCREEN S-TEXT RTRUE .FUNCT DRAW-PEG,TBL,X,WGT,CNT,?TMP1 GET B-X-TBL,X >X ?PRG1: EQUAL? CNT,6 /TRUE GET TBL,CNT >WGT ZERO? WGT /TRUE CALL2 SET-B-PIC,WGT >?TMP1 GET B-Y-TBL,CNT DISPLAY ?TMP1,STACK,X INC 'CNT JUMP ?PRG1 .FUNCT SET-B-PIC,WGT EQUAL? WGT,1-WEIGHT \?CCL3 RETURN B-1-WEIGHT ?CCL3: EQUAL? WGT,2-WEIGHT \?CCL5 RETURN B-2-WEIGHT ?CCL5: EQUAL? WGT,3-WEIGHT \?CCL7 RETURN B-3-WEIGHT ?CCL7: EQUAL? WGT,4-WEIGHT \?CCL9 RETURN B-4-WEIGHT ?CCL9: EQUAL? WGT,5-WEIGHT \?CCL11 RETURN B-5-WEIGHT ?CCL11: EQUAL? WGT,6-WEIGHT \FALSE RETURN B-6-WEIGHT .FUNCT WEIRD-EXIT-F,RARG EQUAL? PRSO,P?WEST \?PRD5 EQUAL? TOWER-BEATEN,PYRAMID-L /?CTR2 ?PRD5: EQUAL? PRSO,P?NORTH \?PRD8 EQUAL? TOWER-BEATEN,PYRAMID /?CTR2 ?PRD8: EQUAL? PRSO,P?EAST \?CCL3 EQUAL? TOWER-BEATEN,PYRAMID-R \?CCL3 ?CTR2: RETURN TOWER-BEATEN ?CCL3: ZERO? RARG \FALSE ICALL1 CANT-GO RFALSE .FUNCT WEIRD-ENTER-F,RARG EQUAL? HERE,TOWER-BEATEN \?CCL3 RETURN WEIRD ?CCL3: ZERO? RARG \FALSE ICALL1 RETURN-FROM-MAP PRINTI "There DOES seem to be an outline of a entrance in that direction, but it appears sealed with no way to open it. Too bad." CRLF RFALSE .FUNCT WEIRD-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a disturbing hallway; the lines of the walls are disorienting in a strange, non-Euclidean sort of way. The passageway " ZERO? TOWER-BEATEN \?CCL6 PRINTI "ends abruptly to the north" JUMP ?CND4 ?CCL6: EQUAL? TOWER-BEATEN,PYRAMID \?CCL8 PRINTI "continues straight ahead, to the north" JUMP ?CND4 ?CCL8: PRINTI "curves sharply to the " EQUAL? TOWER-BEATEN,PYRAMID-L \?CCL11 PRINTI "left" JUMP ?CND9 ?CCL11: PRINTI "right" ?CND9: PRINTI " here, ending at an archway to the " EQUAL? TOWER-BEATEN,PYRAMID-L \?CCL14 PRINTI "west" JUMP ?CND4 ?CCL14: PRINTI "east" ?CND4: PRINTI ". To the south, the passage ends at a large arched door which is " ICALL2 OPEN-CLOSED,LARGE-DOOR PRINTC 46 RTRUE .SEGMENT "0" .FUNCT GOGGLES-F EQUAL? PRSA,V?WEAR \?CCL3 EQUAL? HERE,GAMING-ROOM \?CCL3 FSET? ZORKMID-BILL,TOUCHBIT /?CCL3 IN? ZORKMID-BILL,LOCAL-GLOBALS \?CCL3 RANDOM 100 LESS? 33,STACK /?CCL10 PUSH J-POCKET JUMP ?CND8 ?CCL10: RANDOM 100 LESS? 50,STACK /?CCL12 PUSH J-SHOE JUMP ?CND8 ?CCL12: PUSH J-HAT ?CND8: MOVE ZORKMID-BILL,STACK RFALSE ?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL14 EQUAL? PRSI,GOGGLES \?CCL14 FSET? GOGGLES,WORNBIT /?CCL19 ICALL PERFORM,V?LOOK-INSIDE,GOGGLES RTRUE ?CCL19: EQUAL? PRSI,WALL \FALSE PRINTR "You see the inside of the wall, but apparently it's too thick for the goggles to see all the way through." ?CCL14: EQUAL? PRSA,V?EXAMINE \?CCL23 CALL NOUN-USED?,GOGGLES,W?ETCHING ZERO? STACK /?CCL26 ICALL PERFORM,V?READ,GOGGLES RTRUE ?CCL26: PRINTR "There is a small etching on one side of the goggles." ?CCL23: EQUAL? PRSA,V?READ \?CCL28 PRINTR """Frobozz Magic Goggles Company.""" ?CCL28: EQUAL? PRSA,V?LOOK-INSIDE \FALSE FSET? GOGGLES,WORNBIT \?CCL33 PRINTI "You glance about you" PRINT ELLIPSIS CALL1 V-LOOK RSTACK ?CCL33: PRINT YOULL-HAVE-TO PRINTR "wear them to do that." .FUNCT DISCOVER-X-RAY ZERO? DONT-KNOW-ABOUT-XRAY /FALSE SET 'DONT-KNOW-ABOUT-XRAY,FALSE-VALUE PRINTI "This is incredible! You can see right through the outside of the " EQUAL? PRSO,UNOPENED-NUT /?CND4 PRINTI "closed " ?CND4: ICALL2 DPRINT,PRSO PRINTI " as if it were transparent! " RTRUE .ENDSEG .SEGMENT "CASTLE" .FUNCT PYRAMID-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "This room, though rather wide at floor level, narrows as it rises like the interior of a pyramid or of an enormous beehive. " EQUAL? TOWER-BEATEN,HERE \?CCL6 PRINTI "The only exit is " EQUAL? HERE,PYRAMID \?CCL9 PRINTI "south" JUMP ?CND7 ?CCL9: EQUAL? HERE,PYRAMID-L \?CCL11 PRINTI "east" JUMP ?CND7 ?CCL11: PRINTI "west" ?CND7: PRINTC 46 RTRUE ?CCL6: PRINTI "There are no visible exits, although there's a faint outline of a doorway on the " EQUAL? HERE,PYRAMID \?CCL14 PRINTI "south" JUMP ?CND12 ?CCL14: EQUAL? HERE,PYRAMID-L \?CCL16 PRINTI "east" JUMP ?CND12 ?CCL16: PRINTI "west" ?CND12: PRINTI " wall." RTRUE .SEGMENT "0" .FUNCT CUP-F EQUAL? PRSA,V?DRINK-FROM,V?DRINK \?CCL3 IN? POTION,CUP \?CCL6 ICALL PERFORM,V?DRINK,POTION RTRUE ?CCL6: PRINTR "The cup is empty!" ?CCL3: EQUAL? PRSA,V?PUT \FALSE EQUAL? PRSI,CUP \FALSE IN? POTION,CUP \FALSE ICALL PERFORM,V?PUT,PRSO,POTION RTRUE .ENDSEG .SEGMENT "0" .FUNCT POTION-F,X EQUAL? PRSA,V?DRINK,V?TASTE \?CCL3 CALL2 ULTIMATELY-IN?,CUP ZERO? STACK \?CND4 MOVE CUP,PROTAGONIST PRINTI "[taking the cup first]" CRLF ?CND4: PRINTI "You take a gulp. The potion is now " EQUAL? POTION-GULPS,4 \?CCL8 PRINTI "a quarter" JUMP ?CND6 ?CCL8: EQUAL? POTION-GULPS,3 \?CCL10 PRINTI "half" JUMP ?CND6 ?CCL10: EQUAL? POTION-GULPS,2 \?CCL12 PRINTI "three-quarters" JUMP ?CND6 ?CCL12: REMOVE POTION PRINTI "all" ?CND6: PRINTI " gone." ZERO? PLANT-TALKER \?CND13 SET 'PLANT-TALKER,TRUE-VALUE PRINTI " Your ears seem to tingle for a moment." CRLF ?CND13: DEC 'POTION-GULPS ICALL QUEUE,I-POTION,15 CALL FIND-IN,HERE,PLANTBIT >X ZERO? X /TRUE ZERO? TIME-STOPPED \TRUE PRINTI " You notice that" ICALL2 TPRINT,X PRINTR " seems to be murmuring." ?CCL3: EQUAL? PRSA,V?PUT \?CCL20 EQUAL? PRSI,POTION \?CCL20 PRINTI "Dipping" ICALL1 TPRINT-PRSO PRINTI " into the potion seems to have no effect on" CALL2 TRPRINT,PRSO RSTACK ?CCL20: EQUAL? PRSA,V?POUR \?CCL24 EQUAL? PRSO,POTION \?CCL24 REMOVE POTION PRINTR "The potion vanishes into a cloud of sweet-smelling fumes which quickly disperse." ?CCL24: EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "The potion is a yellow-green color." .FUNCT I-POTION,X SET 'PLANT-TALKER,FALSE-VALUE ICALL1 RETURN-FROM-MAP PRINTI " Your ears tingle again" CALL FIND-IN,HERE,PLANTBIT >X ZERO? X /?CND1 ZERO? TIME-STOPPED \?CND1 PRINTI ", and" ICALL2 TPRINT,X PRINTI " no longer seems to be murmuring" ?CND1: PRINT PERIOD-CR RTRUE .FUNCT PLANT-STUNNED PRINTI "There is no response -- perhaps" ICALL2 TPRINT,WINNER PRINTI " is simply stunned to hear a human talking plant-talk." CRLF CALL1 STOP RSTACK .ENDSEG .SEGMENT "FENSHIRE" .FUNCT COOKPOT-F EQUAL? PRSA,V?PUT \FALSE PRINTR "The jester stops you. ""Non, non! Too many cooks spoil zee broth!""" .ENDSEG .ENDI