.SEGMENT "FENSHIRE" .FUNCT DIRIGIBLE-ENTER-F,RARG IN? DIRIGIBLE,HERE \?CCL3 RETURN GONDOLA ?CCL3: ZERO? RARG \FALSE ICALL1 V-WALK-AROUND RFALSE .FUNCT DIRIGIBLE-HANGAR-F,RARG ZERO? DEMO-VERSION? /FALSE EQUAL? RARG,M-END \FALSE CALL1 END-DEMO RSTACK .FUNCT DIRIGIBLE-F EQUAL? PRSA,V?PUT-THROUGH,V?THROW-FROM \?CCL3 EQUAL? PRSI,DIRIGIBLE \?CCL3 CALL PERFORM-PRSA,PRSO,GONDOLA RSTACK ?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL7 EQUAL? HERE,GONDOLA \?CCL10 CALL1 V-LOOK RSTACK ?CCL10: GETP DIRIGIBLE,P?LDESC PRINT STACK CRLF RTRUE ?CCL7: EQUAL? PRSA,V?LOOK-INSIDE \?CCL12 EQUAL? HERE,GONDOLA \?CCL15 PRINT LOOK-AROUND RTRUE ?CCL15: PRINTR "You can't see much from out here." ?CCL12: EQUAL? PRSA,V?ENTER \FALSE CALL2 GOTO,GONDOLA RSTACK .FUNCT GONDOLA-F,RARG EQUAL? RARG,M-LOOK \?CCL3 PRINTI "You are in the luxurious gondola of the dirigible. A window wraps completely around the gondola. " PRINT GONDOLA-CONTROLS-DESC RTRUE ?CCL3: ZERO? RARG \FALSE EQUAL? PRSA,V?EXAMINE \?CCL7 CALL2 PERFORM-PRSA,DIRIGIBLE RSTACK ?CCL7: EQUAL? PRSA,V?ENTER \?CCL9 EQUAL? HERE,GONDOLA /?CCL9 CALL2 DO-WALK,P?IN RSTACK ?CCL9: EQUAL? PRSA,V?EXIT,V?LEAP-OFF \?CCL13 EQUAL? HERE,GONDOLA \?CCL13 CALL2 DO-WALK,P?OUT RSTACK ?CCL13: EQUAL? PRSA,V?LOOK-INSIDE \?CCL17 CALL2 PERFORM-PRSA,DIRIGIBLE RSTACK ?CCL17: EQUAL? PRSA,V?PUT-THROUGH,V?THROW-FROM \FALSE EQUAL? PRSI,GLOBAL-HERE,GONDOLA \FALSE IN? DIRIGIBLE,DIRIGIBLE-HANGAR /?CTR23 IN? DIRIGIBLE,SMALLER-HANGAR \?CCL24 ?CTR23: LOC DIRIGIBLE MOVE PRSO,STACK JUMP ?CND22 ?CCL24: EQUAL? PRSO,PERCH /?CCL28 CALL ULTIMATELY-IN?,PERCH,PRSO ZERO? STACK /?CND27 ?CCL28: SET 'REMOVED-PERCH-LOC,GROUND ?CND27: REMOVE PRSO ?CND22: PRINTI "You fling" ICALL1 TPRINT-PRSO PRINTR " out of the gondola." .FUNCT GONDOLA-CONTROLS-F EQUAL? PRSA,V?EXAMINE \FALSE PRINT GONDOLA-CONTROLS-DESC CRLF RTRUE .FUNCT GONDOLA-BUTTON-F EQUAL? PRSA,V?PUSH \FALSE ZERO? TIME-STOPPED \?CTR5 FSET? OUTER-GATE,OPENBIT /?CTR5 GRTR? DIRIGIBLE-COUNTER,0 /?CTR5 EQUAL? PRSO,LEFT-GONDOLA-BUTTON \?PRD11 IN? DIRIGIBLE,DIRIGIBLE-HANGAR /?CTR5 ?PRD11: EQUAL? PRSO,RIGHT-GONDOLA-BUTTON \?CCL6 IN? DIRIGIBLE,SMALLER-HANGAR \?CCL6 ?CTR5: PRINT NOTHING-HAPPENS RTRUE ?CCL6: ICALL QUEUE,I-DIRIGIBLE,-1 SET 'DIRIGIBLE-COUNTER,1 ZERO? BORDER-ON /?CND16 GETB 0,30 EQUAL? STACK,DEC-20 /?CND16 ICALL1 CLEAR-BORDER ICALL2 INIT-STATUS-LINE,TRUE-VALUE ?CND16: PRINTI "The dirigible rises out of the hangar and sails " IN? DIRIGIBLE,DIRIGIBLE-HANGAR \?CCL22 SET 'DESTINATION,SMALLER-HANGAR PRINTI "ea" JUMP ?CND20 ?CCL22: SET 'DESTINATION,DIRIGIBLE-HANGAR PRINTI "we" ?CND20: PUTP GONDOLA,P?REGION,STR?939 GETP GONDOLA,P?MAP-LOC PUT STACK,0,FALSE-VALUE FSET DIRIGIBLE,NDESCBIT MOVE DIRIGIBLE,GONDOLA PRINTR "stward." .FUNCT GONDOLA-EXIT-F,RARG GRTR? DIRIGIBLE-COUNTER,0 \?CCL3 ZERO? RARG \FALSE CALL2 JIGS-UP,STR?940 RSTACK ?CCL3: LOC DIRIGIBLE RSTACK .FUNCT I-DIRIGIBLE,TBL EQUAL? HERE,GONDOLA \?CND1 ICALL1 RETURN-FROM-MAP PRINTI " " ?CND1: EQUAL? DIRIGIBLE-COUNTER,5 \?CCL5 GETP GONDOLA,P?MAP-LOC >TBL EQUAL? DESTINATION,SMALLER-HANGAR \?CCL8 PUT TBL,0,FENSHIRE-MAP-NUM PUT TBL,1,GONDOLA-AT-FENSHIRE-LOC PUT TBL,2,MAP-GEN-X-2 PUTP GONDOLA,P?REGION,STR?249 JUMP ?CND6 ?CCL8: PUT TBL,0,MAIN-MAP-NUM PUT TBL,1,GONDOLA-AT-FLATHEADIA-LOC PUT TBL,2,MAP-GEN-X-1 PUTP GONDOLA,P?REGION,STR?250 ?CND6: MOVE DIRIGIBLE,DESTINATION FCLEAR DIRIGIBLE,NDESCBIT ICALL2 DEQUEUE,I-DIRIGIBLE SET 'DIRIGIBLE-COUNTER,0 ZERO? BORDER-ON /?CND9 EQUAL? HERE,GONDOLA \?CND9 GETB 0,30 EQUAL? STACK,DEC-20 /?CND9 ICALL1 CLEAR-BORDER SET 'CURRENT-BORDER,CASTLE-BORDER SCREEN S-FULL ICALL2 INIT-STATUS-LINE,TRUE-VALUE SCREEN S-TEXT ?CND9: EQUAL? HERE,GONDOLA \?CCL16 PRINTR "The dirigible descends into a hangar and comes to a stop." ?CCL16: EQUAL? HERE,DESTINATION \FALSE ICALL1 RETURN-FROM-MAP PRINTR " A dirigible descends into the hangar." ?CCL5: EQUAL? HERE,GONDOLA /?CCL20 INC 'DIRIGIBLE-COUNTER RFALSE ?CCL20: ICALL1 RETURN-FROM-MAP PRINTI "The dirigible continues to glide along. " EQUAL? DESTINATION,DIRIGIBLE-HANGAR \?CCL23 SUB 4,DIRIGIBLE-COUNTER GET DIRIGIBLE-TRIP-DESCS,STACK PRINT STACK JUMP ?CND21 ?CCL23: SUB DIRIGIBLE-COUNTER,1 GET DIRIGIBLE-TRIP-DESCS,STACK PRINT STACK ?CND21: INC 'DIRIGIBLE-COUNTER CRLF RTRUE .FUNCT SMALLER-HANGAR-F,RARG EQUAL? RARG,M-ENTER \FALSE FSET? SMALLER-HANGAR,TOUCHBIT /FALSE CALL QUEUE,I-FOX,-1 RSTACK .FUNCT DESERTED-CASTLE-F,RARG EQUAL? RARG,M-ENTER \FALSE FSET? DESERTED-CASTLE,TOUCHBIT /FALSE CALL QUEUE,I-ROOSTER,-1 RSTACK .FUNCT RUINED-HALL-F,RARG EQUAL? RARG,M-LOOK \?CCL3 PRINTI "The entrance hall of the summer castle retains but a shadow of its former elegance; the ceiling has partially collapsed, and myriad weeds grow amongst the debris that covers the floor. A fireplace is choked with the rubble of its collapsed chimney. Above the fireplace is a faded fresco, and next to that, a tiny vase is mounted on the wall. Arched openings lead " ZERO? ARCHWAY-OPEN /?CND4 PRINTI "north, " ?CND4: PRINTI "south and west. " ZERO? ARCHWAY-OPEN \?CND6 PRINTI "The archway to the north" IN? HEXAGONAL-BLOCK,LOCAL-GLOBALS /?CCL10 SET 'ARCHWAY-OPEN,TRUE-VALUE PRINTI ", which had earlier crumbled, seems restored to its former condition: decayed but passable! " JUMP ?CND6 ?CCL10: PRINTI " has crumbled to rubble. " ?CND6: ZERO? SECRET-ROOM-REVEALED /?CND11 PRINTI "In addition, a dusty passage leads east. " ?CND11: PRINTI "A stairway once led upwards, but there's little left of it." RTRUE ?CCL3: EQUAL? RARG,M-END \FALSE ZERO? ARCHWAY-OPEN \FALSE IN? HEXAGONAL-BLOCK,LOCAL-GLOBALS /FALSE SET 'ARCHWAY-OPEN,TRUE-VALUE RETURN ARCHWAY-OPEN .FUNCT FIREPLACE-F EQUAL? PRSA,V?ENTER \?CCL3 CALL2 DO-FIRST,STR?949 RSTACK ?CCL3: EQUAL? PRSA,V?CLEAN \?CCL5 PRINTR "Not a chance (unless you're actually a team of thirty people, in disguise)." ?CCL5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE PRINTR "Rubble. Lots of rubble." .FUNCT FRESCO-F EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "The fresco depicts the death of Duncanthrax. His spirit is ascending to heaven on a tremendous ladder, surrounded by a host of angels." .FUNCT VASE-F EQUAL? PRSA,V?OPEN,V?CLOSE \?CCL3 PRINT HUH RTRUE ?CCL3: EQUAL? PRSA,V?TAKE \?CCL5 EQUAL? PRSO,VASE \?CCL5 PRINTR "The vase is affixed to the wall." ?CCL5: EQUAL? PRSA,V?PUT \FALSE EQUAL? PRSO,FLOWER \FALSE ZERO? SECRET-ROOM-REVEALED \FALSE SET 'SECRET-ROOM-REVEALED,TRUE-VALUE SET 'COMPASS-CHANGED,TRUE-VALUE MOVE FLOWER,VASE PRINTI "The flower seems to grow fuller, its colors richer. You hear a noise, and turn to see a passageway opening to the east!" CRLF CALL2 INC-SCORE,16 RSTACK .SEGMENT "0" .FUNCT LADDER-F,VARG ZERO? VARG \FALSE EQUAL? PRSA,V?EXAMINE,V?CLOSE,V?OPEN \?CCL5 PRINTR "The stepladder seems to be stuck in the open position." ?CCL5: EQUAL? PRSA,V?PUT-UNDER \?CCL7 EQUAL? PRSO,MEGABOZ-TRAP-DOOR \?CCL7 PRINTR "The ladder is now standing beneath the trap door." ?CCL7: EQUAL? PRSA,V?CLIMB-ON,V?CLIMB,V?STAND-ON \FALSE ICALL PERFORM,V?ENTER,LADDER RTRUE .ENDSEG .SEGMENT "FENSHIRE" .FUNCT MARSH-F,RARG EQUAL? RARG,M-LOOK \?CCL3 PRINTI "The swamps of Fenshire have encroached on this once-beautiful garden. The garden wall is now just a pile of mossy stones, and the garden terraces are ankle-deep with squishy mud. A c" ZERO? ARCHWAY-OPEN /?CCL6 PRINTI "rumbling archway leads" JUMP ?CND4 ?CCL6: PRINTI "ollapsed archway blocks the exit to the" ?CND4: PRINTI " south. To the north" ZERO? STEPPING-STONES-VISIBLE /?CCL9 PRINTI ", stepping stones lead across a field of quicksand." RTRUE ?CCL9: PRINTI " is a wide expanse of fetid quicksand." RTRUE ?CCL3: EQUAL? RARG,M-END \FALSE IN? JESTER,HERE \?CCL14 CALL2 VISIBLE?,ROOSTER ZERO? STACK /?CCL14 FSET? ROOSTER,ANIMATEDBIT \?CCL14 CALL2 VISIBLE?,FOX ZERO? STACK /?CCL14 FSET? FOX,ANIMATEDBIT \?CCL14 CALL2 VISIBLE?,WORM ZERO? STACK /?CCL14 FSET? WORM,ANIMATEDBIT \?CCL14 MOVE JESTER,NICE-LUNCH-SPOT MOVE COOKPOT,NICE-LUNCH-SPOT MOVE COOKFIRE,NICE-LUNCH-SPOT SET 'ARCHWAY-OPEN,FALSE-VALUE SET 'STEPPING-STONES-VISIBLE,TRUE-VALUE SET 'COMPASS-CHANGED,TRUE-VALUE FSET RUINED-HALL,REDESCBIT ICALL1 RETURN-FROM-MAP PRINTR " The jester looks delighted. ""Sacre bleu! At last! All zee ingredients for Borphbelly Stew! But zee ambience here eesn't quite right."" He picks up his cookpot AND his cookfire, and dashes across the quicksand to the north, using a series of stepping stones which you'd swear weren't there a minute ago. This flurry of activity seems to have been too much for the archway behind you; it crumbles into a pile of rubble, blocking the exit to the south. The jester, out of sight amongst the reeds to the north, shouts, ""Yoo hoo! I've found a lovely spot for lunch! Bring over zee ingredients!""" ?CCL14: IN? JESTER,HERE /FALSE IN? HEXAGONAL-BLOCK,LOCAL-GLOBALS \FALSE ZERO? ARCHWAY-OPEN /FALSE ICALL2 DEQUEUE,I-JESTER ICALL2 THIS-IS-IT,JESTER MOVE JESTER,HERE MOVE COOKPOT,HERE MOVE COOKFIRE,HERE PRINTI " A string of eloquent cursing in a foreign tongue assaults you, and you spy the jester " PRINT COOK-DESC PRINTR " He is stirring a cookpot which sits upon a roaring cookfire. ""Impossible!"" he shrieks, switching to a more familiar language. ""Eet is impossible to cook a Borphbelly Stew weethout zee proper ingredients! Impossible, impossible, impossible!""" .FUNCT STEPPING-STONES-F,RARG ZERO? STEPPING-STONES-VISIBLE \?CCL3 ZERO? RARG \FALSE PRINTI "You'd be sucked into the quicksand!" CRLF RFALSE ?CCL3: CALL2 CCOUNT,PROTAGONIST GRTR? STACK,1 \?CCL7 ZERO? RARG \FALSE PRINTI "It's difficult to balance on the stepping stones with all you're carrying. You try, but after almost falling into the quicksand, you give up." CRLF RFALSE ?CCL7: EQUAL? HERE,MARSH \?CCL11 RETURN NICE-LUNCH-SPOT ?CCL11: RETURN MARSH .FUNCT NICE-LUNCH-SPOT-F,RARG EQUAL? RARG,M-END \FALSE CALL2 VISIBLE?,ROOSTER ZERO? STACK /FALSE FSET? ROOSTER,ANIMATEDBIT \FALSE CALL2 VISIBLE?,FOX ZERO? STACK /FALSE FSET? FOX,ANIMATEDBIT \FALSE CALL2 VISIBLE?,WORM ZERO? STACK /FALSE FSET? WORM,ANIMATEDBIT \FALSE MOVE HEXAGONAL-BLOCK,SMALLER-HANGAR FSET SMALLER-HANGAR,REDESCBIT FSET RUINED-HALL,REDESCBIT REMOVE WORM REMOVE FOX REMOVE ROOSTER REMOVE COOKPOT REMOVE COOKFIRE ICALL2 DEQUEUE,I-FOX ICALL2 DEQUEUE,I-ROOSTER ICALL1 RETURN-FROM-MAP PRINTI " The jester says, ""Excellent! Zee ingredients for Borphbelly Stew and a " ICALL2 DPRINT,HERE PRINTI " to enjoy eet!"" He tosses the animals into the cookpot, and begins dishing out two generous portions of stew. Before you can eat it, a tremendous weariness comes over you. The last thing you hear is the jester saying, ""Waiter? Check, please!"" You awake from a deep sleep and struggle to your feet. As your head clears you realize that you're not where you were when you fell asleep" PRINT ELLIPSIS ICALL2 GOTO,SMALLER-HANGAR CALL2 INC-SCORE,9 RSTACK .SEGMENT "0" .FUNCT HEXAGONAL-BLOCK-F EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "It's just a small rock which has been neatly carved into the shape of an elongated hexagon." .ENDSEG .SEGMENT "FENSHIRE" .FUNCT HOTHOUSE-F,RARG EQUAL? RARG,M-ENTER \FALSE FSET? FAN,TRYTAKEBIT \FALSE CALL QUEUE,I-SN,1 RSTACK .FUNCT I-SN,?TMP3,?TMP2,?TMP1 EQUAL? HERE,HOTHOUSE \FALSE ZERO? ALLIGATOR /?CND1 ICALL QUEUE,I-SN,1 RFALSE ?CND1: ICALL1 RETURN-FROM-MAP ICALL1 UPDATE-STATUS-LINE PRINTI " The jester steps out from behind some tropical vines, fanning himself with a dainty paper fan. ""Hot enough for you? I know just the thing to take your mind off this heat! It's one of my favorite games, Snarfem. ""The rules: I'll produce four piles of pebbles. Each of us, starting with you, will remove as many pebbles as we feel like -- as long as they come from the same pile. You must take at least one pebble each turn. The player who takes the last pebble wins. It's that simple!""" CRLF CRLF ICALL2 HIT-ANY-KEY,STR?955 ICALL SPLIT-BY-PICTURE,SN-SPLIT,TRUE-VALUE ICALL2 ADJUST-TEXT-WINDOW,SN-BOTTOM ?PRG5: RANDOM 9 PUT PILE-TABLE,1,STACK ?PRG7: RANDOM 9 PUT PILE-TABLE,2,STACK GET PILE-TABLE,2 >?TMP1 GET PILE-TABLE,1 EQUAL? ?TMP1,STACK \?PRG14 GET PILE-TABLE,2 ADD STACK,1 PUT PILE-TABLE,2,STACK GET PILE-TABLE,2 EQUAL? STACK,10 \?PRG7 PUT PILE-TABLE,2,1 JUMP ?PRG7 ?PRG14: RANDOM 9 PUT PILE-TABLE,3,STACK GET PILE-TABLE,3 >?TMP2 GET PILE-TABLE,2 >?TMP1 GET PILE-TABLE,1 EQUAL? ?TMP2,?TMP1,STACK \?PRG21 GET PILE-TABLE,3 ADD STACK,1 PUT PILE-TABLE,3,STACK GET PILE-TABLE,3 EQUAL? STACK,10 \?PRG14 PUT PILE-TABLE,3,1 JUMP ?PRG14 ?PRG21: RANDOM 9 PUT PILE-TABLE,4,STACK GET PILE-TABLE,4 >?TMP3 GET PILE-TABLE,3 >?TMP2 GET PILE-TABLE,2 >?TMP1 GET PILE-TABLE,1 EQUAL? ?TMP3,?TMP2,?TMP1,STACK \?REP22 GET PILE-TABLE,4 ADD STACK,1 PUT PILE-TABLE,4,STACK GET PILE-TABLE,4 EQUAL? STACK,10 \?PRG21 PUT PILE-TABLE,4,1 JUMP ?PRG21 ?REP22: CALL2 SAFE-NUMBER?,PILE-TABLE ZERO? STACK \?PRG5 ICALL1 SETUP-SN CRLF ICALL1 SNARFEM ICALL2 INIT-SL-WITH-SPLIT,TEXT-WINDOW-PIC-LOC FSET? FAN,TRYTAKEBIT \?CCL32 PRINTI "The jester claps you on the back and says, ""He who wins and runs away, returns to let you win another day!""" CALL1 J-EXITS RSTACK ?CCL32: MOVE FAN,HERE ICALL1 REMOVE-J PRINTI """You're undoubtedly not a flash in the pan; you've turned me into your biggest fan!"" The jester is suddenly wearing a cap and sweater bearing your initials, and waving a pennant with your name on it. Still chanting a cheer, he vanishes, and you notice a delicate paper fan lying at your feet." CRLF CALL2 INC-SCORE,12 RSTACK .FUNCT SETUP-SN SCREEN S-FULL DISPLAY SN-BORDER,1,1 SCREEN S-WINDOW PICSET SN-PICSET-TBL ICALL2 DRAW-PILE,1 ICALL2 DRAW-PILE,2 ICALL2 DRAW-PILE,3 ICALL2 DRAW-PILE,4 CALL1 DRAW-FLOWERS RSTACK .FUNCT DRAW-SN-BOXES,PILE,X,Y,SPACE,CNT,TBL SET 'CNT,1 SCREEN S-WINDOW ICALL2 PICINF-PLUS-ONE,BOX-1-LOC GET PICINF-TBL,0 >Y GET PICINF-TBL,1 >X PICINF SN-BOX-SPACE,PICINF-TBL /?BOGUS1 ?BOGUS1: GET PICINF-TBL,1 >SPACE ?PRG2: ZERO? PILE \?CCL6 GRTR? CNT,4 \?CCL9 SET 'TBL,DIM-BOX-TBL JUMP ?CND4 ?CCL9: GET PILE-TABLE,CNT ZERO? STACK \?CCL11 SET 'TBL,DIM-BOX-TBL JUMP ?CND4 ?CCL11: SET 'TBL,BOX-TBL JUMP ?CND4 ?CCL6: GET PILE-TABLE,PILE GRTR? CNT,STACK \?CCL13 SET 'TBL,DIM-BOX-TBL JUMP ?CND4 ?CCL13: SET 'TBL,BOX-TBL ?CND4: GET TBL,CNT DISPLAY STACK,Y,X EQUAL? CNT,9 /?REP3 ADD X,SPACE >X INC 'CNT JUMP ?PRG2 ?REP3: SCREEN S-TEXT RTRUE .FUNCT DRAW-PILE,PILE,NUM,PIC,?TMP1 SCREEN S-WINDOW GET PILE-TABLE,PILE >NUM EQUAL? PILE,1 \?CCL3 PUSH PILE-1-PIC-LOC JUMP ?CND1 ?CCL3: EQUAL? PILE,2 \?CCL5 PUSH PILE-2-PIC-LOC JUMP ?CND1 ?CCL5: EQUAL? PILE,3 \?CCL7 PUSH PILE-3-PIC-LOC JUMP ?CND1 ?CCL7: PUSH PILE-4-PIC-LOC ?CND1: ICALL2 PICINF-PLUS-ONE,STACK ZERO? NUM \?CCL10 SET 'PIC,PILE-OF-0 JUMP ?CND8 ?CCL10: EQUAL? NUM,1 \?CCL12 SET 'PIC,PILE-OF-1 JUMP ?CND8 ?CCL12: EQUAL? NUM,2 \?CCL14 SET 'PIC,PILE-OF-2 JUMP ?CND8 ?CCL14: EQUAL? NUM,3 \?CCL16 SET 'PIC,PILE-OF-3 JUMP ?CND8 ?CCL16: EQUAL? NUM,4 \?CCL18 SET 'PIC,PILE-OF-4 JUMP ?CND8 ?CCL18: EQUAL? NUM,5 \?CCL20 SET 'PIC,PILE-OF-5 JUMP ?CND8 ?CCL20: EQUAL? NUM,6 \?CCL22 SET 'PIC,PILE-OF-6 JUMP ?CND8 ?CCL22: EQUAL? NUM,7 \?CCL24 SET 'PIC,PILE-OF-7 JUMP ?CND8 ?CCL24: EQUAL? NUM,8 \?CCL26 SET 'PIC,PILE-OF-8 JUMP ?CND8 ?CCL26: SET 'PIC,PILE-OF-9 ?CND8: GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 DISPLAY PIC,?TMP1,STACK SCREEN S-TEXT RTRUE .FUNCT DRAW-FLOWERS,PILE,NUM,LEFT,RIGHT,?TMP1,?TMP2,?TMP3,?TMP4 SET 'PILE,1 SET 'NUM,1 CALL2 SAFE-NUMBER?,PILE-TABLE ZERO? STACK /?PRG4 SET 'LEFT,L-FLOWERS-0 SET 'RIGHT,R-FLOWERS-0 JUMP ?CND1 ?PRG4: ADD TEMP-TABLE,2 COPYT PILE-TABLE+2,STACK,8 GET PILE-TABLE,PILE ZERO? STACK \?CCL8 INC 'PILE JUMP ?PRG4 ?CCL8: GET PILE-TABLE,1 >?TMP4 GET PILE-TABLE,2 ADD ?TMP4,STACK >?TMP3 GET PILE-TABLE,3 ADD ?TMP3,STACK >?TMP2 GET PILE-TABLE,4 ADD ?TMP2,STACK >?TMP1 GET PILE-TABLE,PILE EQUAL? ?TMP1,STACK \?CCL10 GET PILE-TABLE,PILE >NUM ?REP5: EQUAL? PILE,1 \?CCL18 SET 'LEFT,L-FLOWERS-1 JUMP ?CND16 ?CCL10: GET TEMP-TABLE,PILE SUB STACK,NUM PUT TEMP-TABLE,PILE,STACK CALL2 SAFE-NUMBER?,TEMP-TABLE ZERO? STACK \?REP5 GET PILE-TABLE,PILE SUB STACK,NUM ZERO? STACK \?CCL15 SET 'NUM,1 INC 'PILE JUMP ?PRG4 ?CCL15: INC 'NUM JUMP ?PRG4 ?CCL18: EQUAL? PILE,2 \?CCL20 SET 'LEFT,L-FLOWERS-2 JUMP ?CND16 ?CCL20: EQUAL? PILE,3 \?CCL22 SET 'LEFT,L-FLOWERS-3 JUMP ?CND16 ?CCL22: EQUAL? PILE,4 /?CCL24 SET 'LEFT,0 JUMP ?CND16 ?CCL24: SET 'LEFT,L-FLOWERS-4 ?CND16: EQUAL? NUM,1 \?CCL27 SET 'RIGHT,R-FLOWERS-1 JUMP ?CND1 ?CCL27: EQUAL? NUM,2 \?CCL29 SET 'RIGHT,R-FLOWERS-2 JUMP ?CND1 ?CCL29: EQUAL? NUM,3 \?CCL31 SET 'RIGHT,R-FLOWERS-3 JUMP ?CND1 ?CCL31: EQUAL? NUM,4 \?CCL33 SET 'RIGHT,R-FLOWERS-4 JUMP ?CND1 ?CCL33: EQUAL? NUM,5 \?CCL35 SET 'RIGHT,R-FLOWERS-5 JUMP ?CND1 ?CCL35: EQUAL? NUM,6 \?CCL37 SET 'RIGHT,R-FLOWERS-6 JUMP ?CND1 ?CCL37: EQUAL? NUM,7 \?CCL39 SET 'RIGHT,R-FLOWERS-7 JUMP ?CND1 ?CCL39: EQUAL? NUM,8 \?CCL41 SET 'RIGHT,R-FLOWERS-8 JUMP ?CND1 ?CCL41: EQUAL? NUM,9 /?CCL43 SET 'RIGHT,0 JUMP ?CND1 ?CCL43: SET 'RIGHT,R-FLOWERS-9 ?CND1: SCREEN S-WINDOW ICALL2 PICINF-PLUS-ONE,L-FLOWERS-PIC-LOC GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 DISPLAY LEFT,?TMP1,STACK ICALL2 PICINF-PLUS-ONE,R-FLOWERS-PIC-LOC GET PICINF-TBL,0 >?TMP1 GET PICINF-TBL,1 DISPLAY RIGHT,?TMP1,STACK SCREEN S-TEXT RTRUE .FUNCT SNARFEM,X,NUM,PILE,STOP-SN ?PRG1: ZERO? STOP-SN \TRUE ZERO? PILE /?CCL7 CLEAR S-TEXT ZERO? ACTIVE-MOUSE /?CND8 ICALL2 DRAW-SN-BOXES,PILE ?CND8: PRINTI "Type a number " ZERO? ACTIVE-MOUSE /?CND10 PRINTI "(or click on one of the numbered boxes with your mouse) " ?CND10: PRINTI "to indicate how many pebbles you want to remove from Pile #" PRINTN PILE PRINTC 46 ?PRG12: INPUT 'X >X ICALL1 MOUSE-INPUT? EQUAL? X,CLICK1,CLICK2 \?CCL16 CALL2 SN-CLICK,TRUE-VALUE >X JUMP ?CND14 ?CCL16: GRTR? X,144 \?CCL18 LESS? X,155 \?CCL18 SUB X,145 >X JUMP ?CND14 ?CCL18: SUB X,48 >X ?CND14: GRTR? X,9 /?CTR22 LESS? X,1 \?CCL23 ?CTR22: CLEAR S-TEXT PRINT TYPE-A-NUMBER PRINTC 57 ZERO? ACTIVE-MOUSE /?CND26 PRINTI " (or click on one of the numbered boxes with your mouse)" ?CND26: PRINTC 46 JUMP ?PRG12 ?CCL23: GRTR? X,NUM \?CCL29 CLEAR S-TEXT PRINTI "There " EQUAL? NUM,1 \?CCL32 PRINTI "is" JUMP ?CND30 ?CCL32: PRINTI "are" ?CND30: PRINTI " only " PRINTN NUM PRINTI " pebble" EQUAL? NUM,1 /?CND33 PRINTC 115 ?CND33: PRINTI " in Pile #" PRINTN PILE PRINTC 46 JUMP ?PRG12 ?CCL29: CLEAR S-TEXT PRINTI "You remove " PRINTN X PRINTI " pebble" EQUAL? X,1 /?CND35 PRINTC 115 ?CND35: PRINTI " from Pile #" PRINTN PILE PRINTC 46 ICALL COUNTDOWN-PILE,PILE,NUM,X ICALL1 DRAW-FLOWERS SET 'PILE,FALSE-VALUE CALL1 END-SN? ZERO? STACK /?CCL39 SET 'STOP-SN,TRUE-VALUE FCLEAR FAN,TRYTAKEBIT CRLF CRLF ICALL1 HIT-ANY-KEY JUMP ?PRG1 ?CCL39: CRLF PRINTI " " ICALL1 J-MOVE CALL1 END-SN? ZERO? STACK /?CCL42 SET 'STOP-SN,TRUE-VALUE CRLF CRLF ICALL1 HIT-ANY-KEY JUMP ?PRG1 ?CCL42: CRLF PRINTI " " JUMP ?PRG1 ?CCL7: ZERO? ACTIVE-MOUSE /?CND43 ICALL1 DRAW-SN-BOXES ?CND43: PRINTI "Type a number " ZERO? ACTIVE-MOUSE /?CND45 PRINTI "(or click on one of the numbered boxes with your mouse) " ?CND45: PRINTI "to select the pile from which you'd like to remove a pebble or pebbles." ?PRG47: INPUT 'X >X ICALL1 MOUSE-INPUT? EQUAL? X,CLICK1,CLICK2 \?CCL51 CALL1 SN-CLICK >X JUMP ?CND49 ?CCL51: GRTR? X,144 \?CCL53 LESS? X,155 \?CCL53 SUB X,145 >X JUMP ?CND49 ?CCL53: SUB X,48 >X ?CND49: GRTR? X,4 /?CTR57 LESS? X,1 \?CCL58 ?CTR57: CLEAR S-TEXT PRINT TYPE-A-NUMBER PRINTC 52 ZERO? ACTIVE-MOUSE /?CND61 PRINTI " (or click on one of the numbered boxes with your mouse)" ?CND61: PRINTC 46 JUMP ?PRG47 ?CCL58: GET PILE-TABLE,X ZERO? STACK \?CCL64 CLEAR S-TEXT PRINTI "There are no longer any pebbles in Pile #" PRINTN X PRINTC 46 JUMP ?PRG47 ?CCL64: SET 'PILE,X GET PILE-TABLE,PILE >NUM JUMP ?PRG1 .FUNCT SN-CLICK,ALREADY-PICKED-PILE,TL-X,TL-Y,BR-X,BR-Y,BOX-WIDTH,BOX-HEIGHT,CNT,HIT-SPOT SET 'CNT,1 PICINF BOX-1,PICINF-TBL /?BOGUS1 ?BOGUS1: GET PICINF-TBL,1 >BOX-WIDTH GET PICINF-TBL,0 >BOX-HEIGHT ICALL2 PICINF-PLUS-ONE,BOX-1-LOC GET PICINF-TBL,1 >TL-X GET PICINF-TBL,0 >TL-Y ADD TL-Y,BOX-HEIGHT >BR-Y PICINF SN-BOX-SPACE,PICINF-TBL /?PRG3 ?PRG3: ADD TL-X,BOX-WIDTH >BR-X CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CCL7 SET 'HIT-SPOT,TRUE-VALUE ?REP4: ZERO? HIT-SPOT /?CCL12 RETURN CNT ?CCL7: EQUAL? CNT,9 /?REP4 INC 'CNT GET PICINF-TBL,1 ADD TL-X,STACK >TL-X JUMP ?PRG3 ?CCL12: ZERO? ALREADY-PICKED-PILE \FALSE ICALL2 PICINF-PLUS-ONE,PILE-OF-1 GET PICINF-TBL,1 >BOX-WIDTH GET PICINF-TBL,0 >BOX-HEIGHT ICALL2 PICINF-PLUS-ONE,PILE-1-PIC-LOC GET PICINF-TBL,1 >TL-X GET PICINF-TBL,0 >TL-Y ADD TL-X,BOX-WIDTH >BR-X ADD TL-Y,BOX-HEIGHT >BR-Y CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CND14 SET 'CNT,1 SET 'HIT-SPOT,TRUE-VALUE ?CND14: ZERO? HIT-SPOT \?CND16 ICALL2 PICINF-PLUS-ONE,PILE-2-PIC-LOC GET PICINF-TBL,1 >TL-X GET PICINF-TBL,0 >TL-Y ADD TL-X,BOX-WIDTH >BR-X ADD TL-Y,BOX-HEIGHT >BR-Y CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CND16 SET 'CNT,2 SET 'HIT-SPOT,TRUE-VALUE ?CND16: ZERO? HIT-SPOT \?CND20 ICALL2 PICINF-PLUS-ONE,PILE-3-PIC-LOC GET PICINF-TBL,1 >TL-X GET PICINF-TBL,0 >TL-Y ADD TL-X,BOX-WIDTH >BR-X ADD TL-Y,BOX-HEIGHT >BR-Y CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CND20 SET 'CNT,3 SET 'HIT-SPOT,TRUE-VALUE ?CND20: ZERO? HIT-SPOT \?CND24 ICALL2 PICINF-PLUS-ONE,PILE-4-PIC-LOC GET PICINF-TBL,1 >TL-X GET PICINF-TBL,0 >TL-Y ADD TL-X,BOX-WIDTH >BR-X ADD TL-Y,BOX-HEIGHT >BR-Y CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y ZERO? STACK /?CND24 SET 'CNT,4 SET 'HIT-SPOT,TRUE-VALUE ?CND24: ZERO? HIT-SPOT /FALSE RETURN CNT .FUNCT COUNTDOWN-PILE,PILE,NUM,X ?PRG1: GET PILE-TABLE,PILE SUB STACK,1 PUT PILE-TABLE,PILE,STACK ICALL2 DRAW-PILE,PILE DEC 'X ZERO? X \?PRG1 RTRUE .FUNCT SAFE-NUMBER?,TBL,X,?TMP1,?TMP2,?TMP3 GET TBL,1 GET BINARY-TABLE,STACK >?TMP3 GET TBL,2 GET BINARY-TABLE,STACK ADD ?TMP3,STACK >?TMP2 GET TBL,3 GET BINARY-TABLE,STACK ADD ?TMP2,STACK >?TMP1 GET TBL,4 GET BINARY-TABLE,STACK ADD ?TMP1,STACK >X MOD X,2 ZERO? STACK \FALSE DIV X,10 MOD STACK,2 ZERO? STACK \FALSE DIV X,100 MOD STACK,2 ZERO? STACK \FALSE DIV X,1000 MOD STACK,2 ZERO? STACK /TRUE RFALSE .FUNCT J-MOVE,PILE,NUM,?TMP1,?TMP2,?TMP3,?TMP4 SET 'PILE,1 SET 'NUM,1 PRINTI "The jester peruses the piles, considering his move." CRLF CRLF ICALL1 HIT-ANY-KEY CLEAR S-TEXT CALL2 SAFE-NUMBER?,PILE-TABLE ZERO? STACK /?PRG12 ?PRG4: RANDOM 4 >PILE GET PILE-TABLE,PILE ZERO? STACK \?REP5 EQUAL? PILE,4 \?CCL11 SET 'PILE,0 JUMP ?PRG4 ?CCL11: INC 'PILE JUMP ?PRG4 ?REP5: GET PILE-TABLE,PILE RANDOM STACK >NUM JUMP ?CND1 ?PRG12: COPYT PILE-TABLE+2,TEMP-TABLE+2,8 GET PILE-TABLE,PILE ZERO? STACK \?CCL16 INC 'PILE JUMP ?PRG12 ?CCL16: GET PILE-TABLE,1 >?TMP4 GET PILE-TABLE,2 ADD ?TMP4,STACK >?TMP3 GET PILE-TABLE,3 ADD ?TMP3,STACK >?TMP2 GET PILE-TABLE,4 ADD ?TMP2,STACK >?TMP1 GET PILE-TABLE,PILE EQUAL? ?TMP1,STACK \?CCL18 GET PILE-TABLE,PILE >NUM ?CND1: PRINTI "The jester removes " PRINTN NUM PRINTI " pebble" EQUAL? NUM,1 /?CND24 PRINTC 115 ?CND24: PRINTI " from Pile #" PRINTN PILE PRINTC 46 GET PILE-TABLE,PILE ICALL COUNTDOWN-PILE,PILE,STACK,NUM CALL1 DRAW-FLOWERS RSTACK ?CCL18: GET TEMP-TABLE,PILE SUB STACK,NUM PUT TEMP-TABLE,PILE,STACK CALL2 SAFE-NUMBER?,TEMP-TABLE ZERO? STACK \?CND1 GET PILE-TABLE,PILE SUB STACK,NUM ZERO? STACK \?CCL23 SET 'NUM,1 INC 'PILE JUMP ?PRG12 ?CCL23: INC 'NUM JUMP ?PRG12 .FUNCT END-SN? GET PILE-TABLE,1 ZERO? STACK \FALSE GET PILE-TABLE,2 ZERO? STACK \FALSE GET PILE-TABLE,3 ZERO? STACK \FALSE GET PILE-TABLE,4 ZERO? STACK /TRUE RFALSE .FUNCT FAN-F EQUAL? PRSA,V?POINT \FALSE EQUAL? P-PRSA-WORD,W?WAVE \FALSE PRINTR "You produce a light breeze." .ENDSEG .ENDI