'MODULE 0 MAIN    ******BOARDWALK******10-17-95
'CONVERTED FROM CURSED (SEE NEXT 4 REMS)
'CHANGED GAMEDTA.BAS TO CURSAV.BAS ON 1-24-91
'CHANGED TURNNUMBER TO GYNTURN FOR GIANT TURNS 18FEB92
'CHANGED TIMER ON 2-3-94
'CHANGED SAVE GAME TIME$ DATE$ 7-30-95
'CHANGED ROOMOBJECT$ LIMIT TO 15 OBJECTS THROUGHOUT 10-24-95
'MANY CHANGES ON THE WEEK OF 10-24-95
'copyright 1995 by John H. Doolittle  All rights reserved.  Thank you.
'10-29-95 put spaces in logon name date time
'CONVERTED UPTOWN TO BOARDWALK STARTING 1-19-96
'changes through 1-28-96
'REPORT STUFF 3-5-96
' REFIXED ORANGE FLAG 5-7-96  BOARDATA.TXT 10-24-96

   CLS:DIM FLAG(30),OBJ$(30),OBJ2$(30),CLUE$(30),WURD$(30)
   STRT=TIMER
   CALL LOGON
   LOCATE 12,12:PRINT "ONE MOMENT PLEASE...."
   CALL SETUP              'MODULE 1 SET UP VARIABLES
   CALL TURN               'MODULE 2 RUN TURNS
   CALL CLOSING            'MODULE 3 END OF GAME STUFF
END

'MODULE 0.1 LOGON
SUB LOGON
  SHARED ANSWER$()
  DIM ANSWER$(205)
  INPUT "YOUR NAME-NUMBER PLEASE";ANSWER$(0)
  LET ANSWER$(0)=ANSWER$(0)+"  "+TIME$+"  "+DATE$
END SUB

'MODULE 1 SETUP
SUB SETUP
   CALL ROOMINFO           'MODULE 1.1 READ ROOM INFORMATION
   CALL ROOMOBJECTS        'MODULE 1.2 READ ROOM OBJECTS
   CALL MOVEMENTTABLE      'MODULE 1.3 READ MOVEMENT TABLE
   CALL INVENTORY          'MODULE 1.4 INITIALIZE INVENTORY ARRAY
                           '             TO AN EMPTY LIST
   CALL OTHERS             'MODULE 1.5 INITIALIZE OTHER VARIABLES
END SUB

'MODULE 1.1 ROOMINFO
SUB ROOMINFO
   SHARED DESCRIPTION$(),NUMBERROOMS,DESCRIBEFLAG(),ROOMDESCRIBE$(),ROOMDES2$()
   READ NUMBERROOMS
   DIM DESCRIPTION$(NUMBERROOMS),DESCRIBEFLAG(NUMBERROOMS),ROOMDESCRIBE$(NUMBERROOMS)
   DIM ROOMDES2$(NUMBERROOMS)
   FOR I = 1 TO NUMBERROOMS
       READ DESCRIPTION$(I)
   NEXT I
   DATA 33,BALLROOM,DRESS SHOP,JEWELRY STORE,BASKETBALL SHOOT,CRAFTS CENTER
   DATA SHOOTING GALLERY,ROLLER-COASTER,BOARDWALK,BOARDWALK,BOARDWALK
   DATA BOARDWALK,BOARDWALK,BOARDWALK,BOARDWALK,STORAGE ROOM
   DATA END OF BEACH,BEACH,WHARF,BEACH,BEACH
   DATA BEACH,TIDEPOOL,SURF,SURF,WHARF
   DATA SURF,SURF,SURF,WHARF,FISH MARKET
   DATA OCEAN FLOOR,END OF WHARF,SEAL ROCK

   FOR I=1 TO NUMBERROOMS
      LET DESCRIBEFLAG(I)=0
      READ ROOMDESCRIBE$(I),ROOMDES2$(I)
   NEXT I
REM ROOM 1
   DATA "The music here in the BALLROOM, though melancholy, suggests that"
   DATA "love is in the air.  Get cracking, you matchmaker, you."

   DATA "Here in the DRESS SHOP is a beautiful ballroom GOWN that just been"
   DATA "marked down to $115 ---WOW!  Too bad you don't have that much, yet."

   DATA "The JEWELER* here in the JEWELRY STORE is eyeing you very closely."
   DATA "Andrea's getting jumpy, keeps shouting 'I'm not a thief!'"

   DATA "Here at the BASKETBALL SHOOT, you can SHOOT a BASKET  and win a "
   DATA "stuffed ANIMAL.  Cool!  Except that you hate stuffed animals."

   DATA "It's funny that you haven't notice some sort of SIGN*  here at "
   DATA "the CRAFTS CENTER.  Perhaps you should return later."
REM 6
   DATA "Here at the SHOOTING GALLERY is an unhappy SAILOR*.  He's trying"
   DATA "to win a stuffed ANIMAL for his date but can't SHOOT straight."

   DATA "Here at the ROLLER-COASTER, you can't tell who looks the most "
   DATA "pale - the people getting on or the people getting off."

   DATA "Here the BOARDWALK dead ends against the sheer wall of the sandstone"
   DATA "cliff.  "

   DATA "Lots of splinters in this section of the BOARDWALK  "
   DATA "  "

   DATA "Excuse me!  Isn't there a dress code on this BOARDWALK?  "
   DATA "  "
REM 11

   DATA "A badly burned, portly gentleman just passed by on this section  "
   DATA "of the BOARDWALK.  Doesn't he teach at Sac State?  "

   DATA "On this section of the BOARDWALK, you can still hear the screams "
   DATA "coming from the folks enjoying the ROLLER-COASTER*  "

   DATA "All along the BOARDWALK are steps leading down to the BEACH  "
   DATA "  "

   DATA "This end of the BOARDWALK ends outside a STORAGE ROOM"
   DATA "  "

   DATA "The LOCKER in the STORAGE ROOM is probably full of good stuff,"
   DATA "too bad it's locked.  Andrea thinks you should find the key.  Duh!"
REM 16
   DATA "Here the BEACH dead ends against the cliff wall.  READ the SIGN*"
   DATA "and REVEAL something that you'll need."

   DATA "This is the section of BEACH, next to the WHARF that has the best"
   DATA "surf in the area.  The pilings are too close to 'shoot the pier.'"

   DATA "This is the beginning of the world-famous WHARF.  You wonder what"
   DATA "keeps the rotten-looking wooden structure up."

   DATA "An attractive, but poorly dressed WOMAN* sits here on the BEACH"
   DATA "gazing disconsolately out to sea.  Is she swaying?"

   DATA "As you enter this section of the BEACH you overhear someone "
   DATA "talking about a fraternity party.  Something about soap suds."
REM 21
   DATA "As you enter this section of the BEACH the STORAGE ROOM guy tells"
   DATA "Andrea that he has a hole in his pocket.  Andrea says, 'oh.'"

   DATA "At the end of the beach is a terrific TIDEPOOL, which is uncovered"
   DATA "right now revealing a STARFISH*.  He looks crabby."

   DATA "The SURF here near the cliff is too dangerous to surf."
   DATA "  "

  DATA "The waves here near the WHARF curl very nicely.  Ouch, some dude"
  DATA "just took a header off the end of his board. Ah, the taste of sand."

   DATA "A wharf GUARD* is taking things from people before letting them"
   DATA "GO SOUTH along the wharf.  Isn't that illegal?"


REM 26
   DATA "The SURF here is quite cold. "
   DATA "  "

   DATA "Andrea is complaining about the salt water of the SURF here  "
   DATA "  "

   DATA "The waves are smaller and less dangerous in this part of  "
   DATA "the surf "

   DATA "This middle section of WHARF is opposite the FISH MARKET."
   DATA "   "

   DATA "A somewhat downcast FISHMONGER* dominates the scene at the"
   DATA "FISH MARKET -- unless you count the smell."
REM 31
   DATA "The water here on the OCEAN FLOOR is quite clear and pleasant."
   DATA " You see something that a STARFISH* could go for."

   DATA "Here at the end of the WHARF you can see SEAL ROCK to the south,"
   DATA "but you can't GO there until you MAKE a BRIDGE.  Is that a pelican?"

   DATA "Here on SEAL ROCK you see a most forlorn PELICAN* who is hope-"
   DATA "lessly tangled in some fishing LINE.  UNTANGLE him, please."

END SUB

'MODULE 1.2 ROOM OBJECT INFORMATION
SUB ROOMOBJECTS
   SHARED ROOMOBJECT$(),NUMBERROOMS
   DIM ROOMOBJECT$(NUMBERROOMS,15)
       FOR I=1 TO NUMBERROOMS
           FOR J=1 TO 15
               LET ROOMOBJECT$(I,J)="EMPTY"
           NEXT J
       NEXT I
END SUB

'MODULE 1.3 MOVEMENTTABLE
SUB MOVEMENTTABLE
   SHARED MOVEMENTTABLE(),NUMBERROOMS
   DIM MOVEMENTTABLE(NUMBERROOMS,6)
   FOR I=1 TO NUMBERROOMS
       FOR J = 1 TO 6
          READ MOVEMENTTABLE(I,J)
       NEXT J
   NEXT I
   DATA 0,8,0,0,0,0
   DATA 0,9,0,0,0,0
   DATA 0,10,0,0,0,0
   DATA 0,11,0,0,0,0
   DATA 0,12,0,0,0,0

   DATA 0,13,0,0,0,0
   DATA 0,14,0,0,0,0
   DATA 1,0,9,0,0,16
   DATA 2,0,10,8,1,17
   DATA 3,0,11,9,0,18

   DATA 4,0,12,10,0,19
   DATA 5,0,13,11,0,20
   DATA 6,0,14,12,0,21
   DATA 7,0,15,13,0,0
   DATA 0,0,0,14,0,0

   DATA 0,23,17,0,8,0
   DATA 0,24,18,16,9,0
   DATA 0,25,19,17,10,0
   DATA 0,26,20,18,11,0
   DATA 0,27,21,19,12,0

   DATA 0,28,22,20,13,0
   DATA 0,0,0,21,0,0
   DATA 16,0,0,0,0,0
   DATA 17,0,0,0,0,0
   DATA 18,29,0,0,0,0

   DATA 19,0,0,0,0,0
   DATA 20,0,0,0,0,0
   DATA 21,0,0,0,0,0
   DATA 25,32,30,0,0,0
   DATA 0,0,0,29,0,0

   DATA 0,0,0,0,29,0
   DATA 29,33,0,0,0,0
   DATA 32,0,0,0,0,0
END SUB

'MODULE 1.4 INVENTORY
SUB INVENTORY
   SHARED INVENTORY$()
   DIM INVENTORY$(5)
   FOR I=1 TO 5
       LET INVENTORY$(I)="EMPTY"
   NEXT I
   LET INVENTORY$(5)="SURFBOARD"
END SUB

'MODULE 1.5 OTHERS
SUB OTHERS
   SHARED GAMESTATE$,ROOM,TURNNUMBER,ROOMOBJECT$(),THING$,INVENTORY$(),_
       FLAG(),OBJ$(),OBJ2$(),DESCRIBEFLAG(),ROOMDESCRIBE$(),ROOMDES2$(),_
       GUESSNUMB,CLUE$(),WURD$(),NUMBERROOMS,LOGIC$,SLAMMER,TRYNUMB,TOTAL
   LET TURNNUMBER =0
   LET THING$=""
   FOR I=1 TO 30:LET FLAG(I)=0:NEXT I      'SET FLAGS TO 0
         'FLAG #  MEANING OF 0      FLAG# MEANING OF 0
         ' 1      GAME NOT OVER       2 SEAL ROCK BRIDGE NOT MADE
         'FOR 1, 1 MEANS GAME WON -1 GAME LOST 2 MEANS GAME QUIT
         '3 PELICAN NOT UNTANGLED     4 FISH NOT SWAPPED
         '5 BASKET NOT SHOT           6 ANIMAL NOT GIVEN
         '7 DRIFTWOOD NOT REVEALED    8 DANCER NOT REVEALED
         '9 LOCKER LOCKED            10 STARFISH NOT SEEN
         '11 HICCUPS NOT CURED       12 GUARD* NOT FED
         '13 DOOR NOT LOCKED         14 EXITS SUB TO REFRESH SCREEN
         '18 GUESS MEDAL             19 orange not revealed
         '20 GUESS CANS
         '29 GUESS OYSTERS
       LET FLAG(18)=1:REM NOT FIRST TO BE GUESSED
       LET FLAG(29)=1:REM NOT THIS ONE EITHER

   'SET UP WORD GUESSING DATA
    FOR I=1 TO NUMBERROOMS
      LET CLUE$(I)="":LET WURD$(I)=""
    NEXT I
    LET CLUE$(18)="OLYMPIC"
    LET WURD$(18)="MEDAL"
    LET CLUE$(20)="BEER"
    LET WURD$(20)="CANS"
    LET CLUE$(29)="CLAM"
    LET WURD$(29)="OYSTER"
   GUESSNUMB=0:'TOTAL NUMBER OF GUESSES AT WORDS
   TRYNUMB=0:'TOTAL # OF TRIES AT COMBO DOOR LOCK
   SLAMMER=0:'TOTAL # OF TRIES AT FINAL SOLUTION MATRIX
   LOGIC$="Logfal - "
   TOTAL=0

   FOR I=1 TO 39
     READ ROOM,J,ROOMOBJECT$(ROOM,J)
   NEXT I
   DATA 1,1,SIGN*,1,2,EMPTYMAN*,2,1,EMPTYGOWN
   DATA 3,1,JEWELER*,4,1,EMPTYBASKETBALL,5,1,EMPTYSIGN*
   DATA 6,1,SAILOR*,13,1,EMPTYSIGN*,13,2,EMPTYVENDING-MACHINE
   DATA 14,1,RECYCLER*,15,1,LOCKER*,15,2,EMPTYSCUBA
   DATA 15,3,EMPTYWETSUIT,15,4,EMPTYFIN,15,5,EMPTYSAWBUCK

   DATA 15,6,EMPTYC-NOTE,16,1,SIGN*,16,2,EMPTYDRIFTWOOD
   DATA 19,1,WOMAN*,20,1,EMPTYCANS,22,1,STARFISH*
   DATA 22,2,EMPTYSHELL*,29,1,EMPTYLADDER*,30,1,SIGN*
   DATA 30,2,FISHMONGER*,30,3,EMPTYFISH*,31,1,OYSTER
   DATA 31,2,LADDER*,33,1,PELICAN*,33,2,EMPTYFISH

   DATA 7,1,SIGN*,32,1,EMPTYBRIDGE*,33,3,BRIDGE*
   DATA 9,1,SIGN*,10,1,SIGN*,10,2,EMPTYORANGE
   DATA 25,1,GUARD*,15,7,EMPTYSIGN*,15,8,EMPTYKEY*

'THE STARTING ROOM IS THE ENTRYWAY - 7 ROLLER COASTER
   ROOM=7


   FOR I=1 TO 17                       'READ IN WORD!* CONVERSION
       READ OBJ$(I),OBJ2$(I)
   NEXT I
   DATA SIGN,SIGN*,MAN,MAN*,JEWELER,JEWELER*
   DATA BALL,BASKETBALL,SAILOR,SAILOR*,MACHINE,VENDING-MACHINE*
   DATA RECYCLER,RECYCLER*,LOCKER,LOCKER*,WOOD,DRIFTWOOD
   DATA WOMAN,WOMAN*,CAN,CANS,STARFISH,STARFISH*
   DATA LADDER,LADDER*,FISHMONGER,FISHMONGER*,PELICAN,PELICAN*

   DATA GUARD,GUARD*,BOARD,SURFBOARD

END SUB

'MODULE 2 TURN
SUB TURN
   SHARED FLAG(),TURNNUMBER
   DO UNTIL FLAG(1) <> 0
       FLAG(14)=0
       TURNNUMBER = TURNNUMBER + 1
       IF TURNNUMBER=295 THEN BEEP 3:_
          PRINT "Type   SAVE GAME  and then  QUIT":_
          PRINT "You can then return to this spot by typing":_
          PRINT "BOARDWALK (at the DOS prompt) and later,":_
          PRINT "as a command, RESTORE GAME":_
          PRINT "Please forgive the necessary inconvenience."
       IF TURNNUMBER=300 THEN FLAG(1)=2
       CALL DESCRIBE      'MODULE 2.1 DESCRIBE THE ROOM
       CALL COMMANDS      'MODULE 2.2 INPUT THE COMMANDS
       CALL EVALUATE      'MODULE 2.3 EVALUATE COMMANDS
   LOOP
END SUB

'MODULE 2.1 DESCRIBE THE CURRENT ROOM
SUB DESCRIBE
   SHARED DESCRIPTION$(),ROOM,MOVEMENTTABLE(),ROOMOBJECT$(),FLAG(),_
       TURNNUMBER,INVENTORY$(),THING$,OBJECT$,DESCRIBEFLAG(),ROOMDESCRIBE$(),_
       ROOMDES2$(),CLUE$(),WURD$(),GUESSNUMB,TRYNUMB,LOGIC$,ITEMNUMBER
   PRINT:PRINT
   IF TURNNUMBER=1 THEN CALL GAMESTARTER   'MODULE 2.1.1

   IF DESCRIBEFLAG(ROOM)=1 THEN PRINT "You are at the  ";DESCRIPTION$(ROOM)
   IF DESCRIBEFLAG(ROOM)=0 THEN__
    PRINT ROOMDESCRIBE$(ROOM):PRINT ROOMDES2$(ROOM):DESCRIBEFLAG(ROOM)=1
   DELAY 0.3
   PRINT "The noticeable exits are: ";
   IF MOVEMENTTABLE(ROOM,1)<>0 THEN PRINT "NORTH ";
   IF MOVEMENTTABLE(ROOM,2)<>0 THEN PRINT "SOUTH ";
   IF MOVEMENTTABLE(ROOM,3)<>0 THEN PRINT "EAST ";
   IF MOVEMENTTABLE(ROOM,4)<>0 THEN PRINT "WEST ";
   IF MOVEMENTTABLE(ROOM,5)<>0 THEN PRINT "UP ";
   IF MOVEMENTTABLE(ROOM,6)<>0 THEN PRINT "DOWN ";
   PRINT
   DELAY 0.3
   PRINT "The noticeable objects are: ";
   COUNTER=0
   FOR I=1 TO 15
       LET STUFF$= ROOMOBJECT$(ROOM,I)
       IF LEFT$(STUFF$,5)<>"EMPTY" THEN PRINT "   ";ROOMOBJECT$(ROOM,I);_
         :COUNTER=COUNTER+1
   NEXT I
   IF COUNTER=0 THEN PRINT "noticeably absent!";
   PRINT
   DELAY 0.3
   PRINT "You are carrying: ";
           COUNTER=0
           FOR I= 1 TO 5
               IF INVENTORY$(I)<>"EMPTY" THEN COUNTER=COUNTER + 1:_
                   PRINT INVENTORY$(I);"   ";
           NEXT I
           IF COUNTER = 0 THEN PRINT "nothing at all."
    PRINT
    DELAY 0.3
    IF ROOM=18 OR ROOM=20 OR ROOM=29 THEN DELAY 0.3
    IF (ROOM=18 OR ROOM=20 OR ROOM=29) AND FLAG(ROOM)=0 THEN PRINT _
      "Andrea says that she's thinking of a ";LEN(WURD$(ROOM));_
       "-letter word":PRINT _
      "that has something to do with ";CLUE$(ROOM);".":DELAY 0.3:PRINT:PRINT _
      "If you would like to guess what the word is, type GUESS followed ":_
      PRINT "by your guess, for example,  GUESS COW ":DELAY 0.3

    THING$="ORANGE"
    IF ROOM=25 AND FNCARRY=1 THEN _
      LET INVENTORY$(ITEMNUMBER)="EMPTY":PRINT:FLAG(12)=1:_
      LET ROOMOBJECT$(ROOM,1)="EMPTY":FLAG(14)=1: PRINT _
      "The GUARD* takes the ORANGE and wanders off.  Creep."


    THING$="CANS"
    IF ROOM=14 AND FNCARRY=1 THEN _
      LET INVENTORY$(ITEMNUMBER)="BUCK":PRINT:PRINT _
      "The RECYCLER* glommed on to the CANS and slipped you a BUCK.  Cool!":_
      PRINT:LET ROOMOBJECT$(ROOM,1)="EMPTY":_
      LET FLAG(14)=1:REM EXITS SUB

    THING$="DETECTOR"
    IF ROOM=21 AND FNCARRY=1 THEN
      LET INVENTORY$(ITEMNUMBER)="KEY":PRINT:PRINT _
      "You detected and picked up a KEY.  Promising!":PRINT:PRINT _
      "Just then the rental guy came by and took back the overdue":PRINT _
      "DETECTOR.  Andrea says she doesn't remember anything about":PRINT _
      "a time limit.  Da noive a da guy!":LET FLAG(14)=1
    END IF


    THING$="OYSTER"
    IF ROOM=22 AND FNCARRY=1 THEN
      LET INVENTORY$(ITEMNUMBER)="PEARL":PRINT
      PRINT"You slip momentarily in the TIDEPOOL, dropping the OYSTER into the"
      PRINT "water.  In a flash, the STARFISH has it pried open and consumed,"
      PRINT "(that was disgusting), leaving you with only the PEARL.  Yes!"
      LET FLAG(14)=1
    END IF

    THING$="PEARL"
    IF ROOM=3 AND FNCARRY=1 THEN
      LET INVENTORY$(ITEMNUMBER)="C-NOTE"
      PRINT "The JEWELER's on you like cheese on a burger when he sees the"
      PRINT "PEARL.  Before you can react, he's taken the PEARL and given "
      PRINT "you $100.  Andrea asks if it's dress time.":LET FLAG(14)=1
    END IF

    THING$="GOWN"
    IF ROOM=19 AND FNCARRY=1 THEN
      FLAG(1)=1:INVENTORY$(ITEMNUMBER)="EMPTY"
      PRINT
      PRINT "The WOMAN*'s face lights up when she sees the GOWN that "
      PRINT "you and Andrea hand her.  After thanking you profusely,"
      PRINT "she sprints off in the direction of the changing room."
      Delay 5.5
      PRINT
      PRINT "#################################################"
      PRINT:PRINT
      PRINT "You follow the her to the BALLROOM in time to see the"
      PRINT "happy couple dancing the waltz.  Whatever the waltz is."
      PRINT "The MAN* turns out to be ex-surfing champ Blackjack Brown,"
      PRINT "who tosses you the wax you need to surf your best.  Dude."
      EXIT SUB
    END IF

    IF FLAG(11)=0 THEN PRINT _
      "Andrea has the hiccups -- wants to tell you something - but can't!"
 PRINT

END SUB

'MODULE 2.1.1 GAME STARTER -- PRINT OUT INTRODUCTORY REMARKS
SUB GAMESTARTER
    CLS
    PRINT "              WELCOME TO THE BOARDWALK!"
    PRINT
    PRINT "  Okay, here's the deal:  Your seriously bitchin' poem, "
    PRINT "'Surf's up, dude!' won the Surfer's Open Poetry Contest and"
    PRINT "now you have the first prize: King Kamehameha's original,"
    PRINT "humungously long, wooden surfboard.  Excellant!  Unfortunately,"
    PRINT "you can't try it out -- no wax!  Bummer!  "
    PRINT "  You'll just have to wander around the BOARDWALK doing good"
    PRINT "until virtue is rewarded and you happen upon some wax.  Hurry"
    PRINT "though -- that storm out in the Pacific has stirred up some"
    PRINT "kicker waves.  Tubular!"
    PRINT
    PRINT "    Give COMMANDs as VERB then OBJECT, Such as GO NORTH,"
    PRINT "READ SIGN, RIDE ROLLER-COASTER*, CLIMB LADDER*, SHOOT BASKET,"
    PRINT "UNTANGLE PELICAN*, GET SCUBA (Self-Contained Underwater Breathing"
    PRINT "Apparatus - if you must know), PAY SAWBUCK ($10), PAY FIN ($5)"
    PRINT "PAY C-NOTE ($100), MAKE BRIDGE, SWAP FISH, DEPOSIT BUCK ($1), etc."
    PRINT "    Exceptions to this two-word sentence rule are single-"
    PRINT "letter commands such as N to GO NORTH, and U to GO UP."
    PRINT "    P.S. Don't try to get objects ending in an *, e.g., SAFE*,"
    PRINT "as they are quite unobtainable.  "
    PRINT
    PRINT "If you're through taking notes, press the Enter key to begin"
    DO WHILE LEN(INKEY$)=0:LOOP
    CLS
END SUB

'MODULE 2.1.2 ERASER kept as dummy in case it's referenced somewhere
SUB ERASER
REM
END SUB
'MODULE 2.1.3 MESSAGE  AFTER WORD GAME IS COMPLETED
SUB MESSAGE
 SHARED ROOM,ROOMOBJECT$(),FLAG()
 IF ROOM= 20 THEN
   LET ROOMOBJECT$(ROOM,1)="CANS"
   LET FLAG(18)=0:REM ENABLES YOU TO GET MEDAL CLUE
   PRINT "Andrea asks if you noticed how many CANS people strew about.  Strew?"
 END IF
 IF ROOM=18 THEN
   LET ROOMOBJECT$(13,1)="SIGN*"
   LET ROOMOBJECT$(13,2)="VENDING-MACHINE*"
   LET FLAG(29)=0:REM ENABLES YOU TO GET OYSTER CLUE
   PRINT "Andrea suggests you DEPOSIT the BUCK at the VENDING-MACHINE*"
   PRINT "and rent a metal DETECTOR"
 END IF
 IF ROOM=29 THEN
   LET ROOMOBJECT$(29,1)="LADDER*"
   PRINT "Andrea suggests you CLIMB LADDER* down to the OYSTER."
 END IF
END SUB

'MODULE 2.2 COMMANDS
SUB COMMANDS
   SHARED VERB$, OBJECT$,ROOM,DESCRIPTION$(),FLAG(),INVENTORY$(),_
       ROOMOBJECT$(),OBJ$(),OBJ2$(),C$,ANSWER$(),TURNNUMBER,_
       CLUE$(),WURD$(),GUESSNUMB,TOTAL

   IF FLAG(1)<>0 THEN EXIT SUB
   IF FLAG(14)=1 THEN EXIT SUB
   ' BE SURE THAT INPUT IS OK  DUMMY2=0
   DUMMY2=0
  DO UNTIL DUMMY2=1
   'C$=THE INPUTTED COMMAND SENTENCE - MAY BE MORE THAN 2 WORDS
   'BUT ONLY THE FIRST TWO WORDS ARE ACCEPTED
   ' THE FIRST IS CALLED VERB$ AND THE SECOND OBJECT$
   LET C$=""
   PRINT:PRINT
   PRINT "*****************************************************************"
   DO UNTIL C$<>""
       INPUT "COMMAND";C$                 'GET THE RAW SENTENCE
   LOOP

   REM SPACES TAKE OFF LEADING AND PERHAPS TRAINING CHR$(32)'S
   DO WHILE RIGHT$(C$,1)=CHR$(32)
     LET C$=LEFT$(C$,LEN(C$)-1)
   LOOP

   LET DUMMY$=""                          'CONVERT TO UPPERCASE
   FOR I=1 TO LEN (C$)
   IF ASC(MID$(C$,I,1))>96 AND ASC(MID$(C$,I,1))<123 THEN_
       LET DUMMY$=DUMMY$+CHR$(ASC(MID$(C$,I,1))-32)_
       ELSE LET DUMMY$=DUMMY$+MID$(C$,I,1)
   NEXT I
   LET C$=DUMMY$

   LET I=1                                'LETTER COUNTER

   DO WHILE NOT (ASC (MID$(C$,I,1)) = 32) AND NOT (I= LEN(C$))
                                          'LOOP TO LOOK FOR FIRST SPACE
       LET I = I + 1                      'WHICH SHOULD DENOTE END OF FIRST
   LOOP                                   'WORD

   LET VERB$=MID$(C$,1,I)                 'ASSIGN THOSE CHARACTERS TO VERB$

LET ANSWER$(TURNNUMBER)=C$

   LET OBJECT$ = MID$(C$,I+1,LEN(C$))     'ASSIGN REST OF SENTENCE TO OBJECT$


   IF LEN(OBJECT$)<>0 THEN VERB$=LEFT$(VERB$,LEN(VERB$)-1)
   FOR J=1 TO 20                          'CONVERT OBJECT$ LACKING * OR !
       IF OBJECT$=OBJ$(J) THEN LET OBJECT$=OBJ2$(J)
   NEXT J
   'CHECK FOR EXTRA WORDS
   COUNTER=0
   FOR J=1 TO LEN(OBJECT$)
     LET DUMMY$=MID$(OBJECT$,J,1)
     IF DUMMY$=CHR$(32) THEN COUNTER=COUNTER+1
   NEXT J
   IF COUNTER<>0 THEN PRINT "Two words only, please." _
     ELSE DUMMY2=1

LOOP
END SUB

'MODULE 2.3 EVALUATE THE COMMANDS
SUB EVALUATE
   SHARED VERB$, OBJECT$,ROOM,DIRECTION,MOVEMENTTABLE(),NUMBERROOMS,_
       ROOMOBJECT$(),ITEMNUMBER,TURNNUMBER,THING$,INVENTORY$(),FLAG(),_
       GUESSNUMB,CLUE$(),WURD$(),LOGIC$,TRYNUMB,SLAMMER,TOTAL
   IF FLAG(1)<>0 THEN EXIT SUB
   IF FLAG(14)=1 THEN EXIT SUB
   SELECT CASE VERB$
       CASE "QUIT","Q"
           LET FLAG(1)=2   'GAME NOT WON(1) OR LOST(-1):EXIT SELECT
       CASE "SAVE"
           IF OBJECT$<>"GAME" THEN PRINT "SAVE GAME":EXIT SELECT
           OPEN "BOARDSAV.BAS" FOR OUTPUT AS #1
           WRITE #1,ROOM


           FOR I=1 TO 5
               LET DUMMY$=""
               FOR J=1 TO LEN(INVENTORY$(I))
                LET DUMMY$=DUMMY$+CHR$(ASC(MID$(INVENTORY$(I),J,1))+4)
               NEXT J
               WRITE #1,DUMMY$
           NEXT I
           FOR I=1 TO NUMBERROOMS
              FOR J=1 TO 15
               LET DUMMY$=""
               FOR K=1 TO LEN (ROOMOBJECT$(I,J))
                LET DUMMY$=DUMMY$+CHR$(ASC(MID$(ROOMOBJECT$(I,J),K,1))+4)
               NEXT K
               WRITE #1,DUMMY$
              NEXT J
           NEXT I
           FOR I=1 TO 30
               WRITE  #1,FLAG(I)
           NEXT I
           WRITE #1,GUESSNUMB,LOGIC$,SLAMMER,TRYNUMB,TOTAL
           CLOSE #1
           PRINT "OK
           EXIT SELECT
       CASE "RESTORE"
           IF OBJECT$<> "GAME" THEN PRINT "Try  RESTORE GAME":EXIT SELECT
           OPEN "BOARDSAV.BAS" FOR INPUT AS #1
           INPUT #1,ROOM


           FOR I=1 TO 5
             INPUT #1,DUMMY$
               LET INVENTORY$(I)=""
               FOR J=1 TO LEN(DUMMY$)
                LET INVENTORY$(I)=INVENTORY$(I)+CHR$(ASC(MID$(DUMMY$,J,1))-4)
               NEXT J
           NEXT I
           FOR I=1 TO NUMBERROOMS
              FOR J=1 TO 15
               INPUT #1,DUMMY$
               LET ROOMOBJECT$(I,J)=""
               FOR K=1 TO LEN (DUMMY$)
                LET ROOMOBJECT$(I,J)=ROOMOBJECT$(I,J)+CHR$(ASC(MID$(DUMMY$,K,1))-4)
               NEXT K
              NEXT J
           NEXT I


           FOR I=1 TO 30
               INPUT  #1,FLAG(I)
           NEXT I
           INPUT #1,GUESSNUMB,LOGIC$,SLAMMER,TRYNUMB,TOTAL
           CLOSE #1
           PRINT "OK"
           EXIT SELECT

       CASE "INVENTORY","I"
           COUNTER=0
           PRINT "   YOU CARRY: ";
           FOR I= 1 TO 5
               IF INVENTORY$(I)<>"EMPTY" THEN COUNTER=COUNTER + 1:_
                   PRINT INVENTORY$(I);"   ";
           NEXT I
           IF COUNTER = 0 THEN PRINT "NOTHING AT ALL" :EXIT SELECT
           PRINT:EXIT SELECT

       CASE "GO","MOVE","N","S","E","W","U","D"
           IF LEN (VERB$)=1 THEN OBJECT$=VERB$
           IF OBJECT$="NORTH" OR OBJECT$="N" THEN DIRECTION = 1
           IF OBJECT$="SOUTH" OR OBJECT$="S" THEN DIRECTION = 2
           IF OBJECT$="EAST"  OR OBJECT$="E" THEN DIRECTION = 3
           IF OBJECT$="WEST"  OR OBJECT$="W" THEN DIRECTION = 4
           IF OBJECT$="UP"    OR OBJECT$="U" THEN DIRECTION = 5
           IF OBJECT$="DOWN"  OR OBJECT$="D" THEN DIRECTION = 6
      IF DIRECTION=2 AND ROOM=32 AND FLAG(2)=0 THEN PRINT _
        "You'll need to MAKE a BRIDGE to GO SOUTH":EXIT SELECT
      IF DIRECTION=2 AND ROOM=25 AND FLAG(12)=0 THEN PRINT _
        "The GUARD* wants a piece of fruit first.  Shakedown.":EXIT SELECT
      IF DIRECTION=4 AND ROOM=15 AND FLAG(13)=1 THEN PRINT _
        "Can't the DOOR's locked.  Andrea says: Try - READ SIGN*":EXIT SELECT
      IF DIRECTION=2 AND ROOM=7 AND FLAG(11)=0 THEN PRINT _
        "Help Andrea with her hiccups before moving on.":EXIT SELECT

           IF MOVEMENTTABLE (ROOM,DIRECTION) = 0 THEN _
               PRINT "You can't go that way." ELSE _
               LET ROOM = MOVEMENTTABLE (ROOM,DIRECTION)
           EXIT SELECT

       CASE "GET","TAKE"
           IF OBJECT$="SURFBOARD" THEN PRINT _
             "Leave it here until you get some wax":EXIT SELECT

           IF  FNPRESENT = 0 THEN PRINT "I DON'T SEE  ";OBJECT$:EXIT SELECT
           IF RIGHT$(OBJECT$,1)="*" THEN PRINT "I CAN'T HANDLE IT":EXIT SELECT

           FOR I=1 TO 5
               IF INVENTORY$(I)="EMPTY" THEN INVENTORY$(I)=OBJECT$:_
                   PRINT "GOT IT":ROOMOBJECT$(ROOM,ITEMNUMBER)="EMPTY":_
                   EXIT SELECT
           NEXT I

           PRINT "You're carrying too much.  Drop something first."
           EXIT SELECT
       CASE "PUT","DROP","GIVE"
           IF OBJECT$="SURFBOARD" THEN PRINT_
            "Andrea thinks you'll need it.":EXIT SELECT
           IF OBJECT$="FISH" THEN PRINT "Try - SWAP FISH":EXIT SELECT
           IF OBJECT$="BASKETBALL" THEN PRINT _
             "Try - SHOOT BASKET":EXIT SELECT
           THING$="ANIMAL":IF OBJECT$="ANIMAL" AND ROOM=6 AND FNCARRY =1 _
             AND FLAG(6)=0 THEN LET INVENTORY$(ITEMNUMBER)="KNIFE":_
             LET FLAG(6)=1:LET ROOMOBJECT$(ROOM,1)="EMPTY": PRINT _
             "The grateful sailor runs off to find his date, but not"_
             "before giving you his swell pocket KNIFE!":EXIT SELECT
           IF OBJECT$="C-NOTE" OR OBJECT$="SAWBUCK" OR OBJECT$="FIN" THEN _
             PRINT "Try PAY -- Andrea fears you'll lose them.":_
             EXIT SELECT
           THING$=OBJECT$
           IF FNCARRY=0 THEN PRINT "You don't have the ";OBJECT$:EXIT SELECT


           FOR J=1 TO 15
               IF ROOMOBJECT$(ROOM,J)="EMPTY"THEN ROOMOBJECT$(ROOM,J)=OBJECT$_
                   :LET INVENTORY$(ITEMNUMBER)="EMPTY" :PRINT "OK":_
                   EXIT SELECT
           NEXT J
           PRINT "This room is full; take it elsewhere":EXIT SELECT

       CASE "READ"
           IF FNPRESENT=0 THEN PRINT _
            "I don't see the ";OBJECT$:EXIT SELECT
           IF ROOM=5 THEN PRINT _
            "It says: Bring DRIFTWOOD, LINE, and a KNIFE here and":PRINT _
            "type MAKE MOBILE.  We have buyers standing by!  Do it now!":_
            EXIT SELECT
           IF ROOM=7 AND FLAG(11)=0 THEN PRINT _
            "The sign says: To ride on the big dipper, type":PRINT_
            "RIDE ROLLER-COASTER*   The first ride is free.":EXIT SELECT
          IF ROOM=7 AND FLAG(11)=1 THEN PRINT _
            "It says:  Closed for cleaning.":EXIT SELECT
          IF ROOM=1 THEN PRINT _
            "It says: Solve the following riddle and REVEAL the object,":PRINT_
            "e.g., REVEAL ROMANCER.  Here's the riddle:":PRINT_
            "     I rhyme well with PRANCER,":PRINT_
            "     but don't rhyme well with CUPID;":PRINT _
            "     You move to the music,":PRINT_
            "     and try not to look stupid.":PRINT:EXIT SELECT
          IF ROOM=30 THEN PRINT _
            "It says: Will pay cash for FISH - 5 fins for a fin.":PRINT _
            "Bring FISH here and type SWAP FISH":EXIT SELECT
          IF ROOM=16 THEN PRINT _
           "It says: REVEAL something that is nine letters long and ":PRINT _
           "frequently found on ocean beaches.":EXIT SELECT
          IF ROOM=13 THEN PRINT _
            "It says: DEPOSIT BUCK here to rent a metal DETECTOR":EXIT SELECT
          IF ROOM=9 THEN PRINT _
            "It says: If you should REVEAL APPLE then the DRESS SHOP":PRINT_
            "is west of the JEWELRY STORE.":EXIT SELECT
          IF ROOM=10 THEN PRINT _
            "It says: If you should REVEAL ORANGE then the JEWELRY":PRINT_
            "STORE is east of the CRAFTS CENTER.":EXIT SELECT
          IF ROOM=15 THEN
            PRINT "It says: The door lock is a 5 switch (Up or Down) combination"
            PRINT "To open, try different combinations of U and D: e.g., "
            PRINT "TRY UDUDU or TRY DDDUD.  Then, listen closely to hear the"
            PRINT "number of clicks coming from the lock mechanism.  Five "
            PRINT "clicks and the door will swing open.  Good luck."
            EXIT SELECT
          END IF

           PRINT "Andrea says that we're in the wrong room for that."
           EXIT SELECT

      CASE ",DRINK","IMBIBE"
         PRINT "Andrea says that you are not thirsty.":EXIT SELECT
      CASE "GUESS"
       IF ROOM<>18 AND ROOM<>20 AND ROOM<>29 THEN PRINT _
        "Andrea says that this isn't the place for that.":EXIT SELECT
       IF FLAG(ROOM)=1 THEN PRINT _
        "Andrea says that you're done with this one.":EXIT SELECT
       IF LEN(OBJECT$)<>LEN(WURD$(ROOM)) THEN PRINT _
         "Andreas says that she's thinking of a ";LEN(WURD$(ROOM));_
         "-letter word.  Try again.":EXIT SELECT
       GUESSNUMB=GUESSNUMB+1
       IF OBJECT$=WURD$(ROOM) THEN FLAG(ROOM)=1:_
         CALL MESSAGE:EXIT SELECT
       HITS=0
       FOR I=1 TO LEN(OBJECT$)
        LET DUMMY$=MID$(OBJECT$,I,1)
        FOR J=1 TO LEN(WURD$(ROOM))
         IF DUMMY$=MID$(WURD$(ROOM),J,1) THEN _
          HITS=HITS+1:EXIT FOR
        NEXT J
       NEXT I
       PRINT "Andrea says that ";HITS;" letter(s) of your word ":PRINT _
             "are also found in her word.  Try again."
        EXIT SELECT
      CASE "PLAY"
        PRINT "Andrea warns that we have no time for such foolishness."
        EXIT SELECT
      CASE "OPEN"
        IF ROOM=15 THEN PRINT "Try  --- UNLOCK LOCKER":EXIT SELECT
        PRINT "Doesn't work. ":EXIT SELECT
      CASE "CLOSE"
       PRINT "Andrea thinks you should leave it open.":EXIT SELECT
      CASE "BREAK"
        PRINT "Andrea is sulking.  She hates violence."
        EXIT SELECT
      CASE "DIG"
        PRINT "It's hopeless.  This is a job for a metal DETECTOR."
        EXIT SELECT
      CASE "USE"
        PRINT "To do what?  Be more specific."
        EXIT SELECT
      CASE "UNLOCK"
        THING$="KEY"
        IF FNCARRY=0 THEN PRINT _
         "Get the key first.":EXIT SELECT
        IF ROOM<>15 THEN PRINT "Not here":EXIT SELECT
        IF FLAG(9)=1 THEN PRINT "Done that.":EXIT SELECT
        LET FLAG(9)=1:LET ROOMOBJECT$(ROOM,2)="SCUBA"
        LET ROOMOBJECT$(ROOM,3)="WETSUIT"
        LET INVENTORY$(ITEMNUMBER)="EMPTY":PRINT _
         "You see a WETSUIT and SCUBA in the LOCKER.  The KEY is stuck.":_
         DELAY 0.3:PRINT "Oh great, the door just slammed shut locking.":_
         PRINT "Andrea thinks you should READ the SIGN*."
         LET ROOMOBJECT$(ROOM,7)="SIGN*"
         LET ROOMOBJECT$(ROOM,8)="KEY*"
         LET FLAG(13)=1
        EXIT SELECT
      CASE "PICK"
         PRINT "Relax kid ---  Houdini you're not.":EXIT SELECT
      CASE "CLIMB"
        IF ROOM=31 THEN PRINT "Up you go!  Watch out for the bends.":_
          LET ROOM=29:EXIT SELECT
        IF ROOM<>29 THEN PRINT "Not here.":EXIT SELECT
        THING$="WETSUIT": IF FNCARRY=0 THEN PRINT _
         "The water is cold, GET a WETSUIT.":EXIT SELECT
        THING$="SCUBA":IF FNCARRY=0 THEN PRINT _
          "At this depth, you'll need diving equipment (SCUBA)":EXIT SELECT
        LET ROOM=31:PRINT "A little awkward -- but OK"
        EXIT SELECT

     CASE "DEPOSIT"
       IF OBJECT$<>"BUCK" THEN PRINT _
         "Andrea says that the only thing you DEPOSIT is the BUCK":EXIT SELECT
       IF ROOM<>13 THEN PRINT "Not here.":EXIT SELECT
       THING$="BUCK":IF FNCARRY<>1 THEN PRINT_
        "Andrea says you need to GET the BUCK first.":EXIT SELECT
       LET INVENTORY$(ITEMNUMBER)="DETECTOR"
       PRINT "You now carry a fine metal DETECTOR.  It says:"
       PRINT "For BEACH use only.":EXIT SELECT

    CASE "PAY"
      IF ROOM<>2 THEN PRINT "Not here.":EXIT SELECT
      DUMMY=0
      THING$=OBJECT$:IF FNCARRY=0 THEN PRINT _
       "You don't have the ";OBJECT$:EXIT SELECT
      IF OBJECT$="C-NOTE" THEN TOTAL=TOTAL+100:DUMMY=1
      IF OBJECT$="SAWBUCK" THEN TOTAL=TOTAL+10:DUMMY=1
      IF OBJECT$="FIN" THEN TOTAL=TOTAL+5:DUMMY=1
      INVENTORY$(ITEMNUMBER)="EMPTY"
      PRINT "The total paid so far is ";TOTAL;" dollars."
      PRINT "Additional needed for GOWN = ";115-TOTAL;" dollars."
      IF TOTAL=115 THEN LET INVENTORY$(ITEMNUMBER)="GOWN":_
       LET ROOMOBJECT$(ROOM,1)="EMPTY":PRINT:PRINT _
       "The shopkeeper takes the last of your money and":PRINT_
       "gives you the beautiful ballroom GOWN.":EXIT SELECT
      IF DUMMY=0 THEN PRINT "That's not for that."
      EXIT SELECT

    CASE "RIDE"
      IF ROOM<>7 THEN PRINT "Not here.":EXIT SELECT
      IF FLAG(11)=1 THEN PRINT _
        "The ROLLER-COASTER* is closed for cleaning.":EXIT SELECT
      LET FLAG(11)=1:LET ROOMOBJECT$(4,1)="BASKETBALL"
      PRINT "You and Andrea have never been so scared.  Andrea's hiccups are"
      PRINT "definitely gone.  She says she wants to see you SHOOT a BASKET."
      EXIT SELECT

   CASE "UNTANGLE"
     IF ROOM<>33 THEN PRINT "Not here.":EXIT SELECT
     IF FLAG(3)=1 THEN PRINT "Not again.":EXIT SELECT
     LET FLAG(3)=1:LET ROOMOBJECT$(ROOM,1)="LINE"
     LET ROOMOBJECT$(ROOM,2)="FISH":PRINT _
      "Ain't that the darndest thing -- the grateful PELICAN has gone ":PRINT_
      "off and returned with lots of smelly FISH.  Imagine your pleasure."
     EXIT SELECT

  CASE "IMAGINE"
    PRINT "Cute --- very cute.":EXIT SELECT

  CASE "SWAP"
    IF ROOM<>30 THEN PRINT "Not here.":EXIT SELECT
    IF FLAG(4)=1 THEN PRINT "Not again.":EXIT SELECT
    THING$="FISH":IF FNCARRY=0 THEN PRINT "GET the FISH first.":EXIT SELECT
    FLAG(4)=1:INVENTORY$(ITEMNUMBER)="FIN"
    ROOMOBJECT$(ROOM,2)="FISH*":PRINT _
      "The nice FISHMONGER has given you a FIN ($5) for the FISH."
    EXIT SELECT

  CASE "SHOOT"
    IF ROOM<>4 THEN PRINT "Not here.":EXIT SELECT
    IF FLAG(5)=1 THEN PRINT "Not again.":EXIT SELECT
    THING$="BASKETBALL":IF FNCARRY=0 THEN PRINT _
      "GET the BASKETBALL first.":EXIT SELECT
    PRINT "Nothing but net!  You coulda been a contenda!  Your reward is a "
    PRINT "nice stuffed ANIMAL.  Andrea turns away - she's allergic."
    LET INVENTORY$(ITEMNUMBER)="ANIMAL"
    EXIT SELECT

 CASE "REVEAL"
   IF ROOM<>1 AND ROOM<>9 AND ROOM<>10 AND ROOM<>16 THEN PRINT_
     "Not here.":EXIT SELECT
   IF ROOM=16 THEN
     IF FLAG(7)=1 THEN PRINT "Not again.":EXIT SELECT
     IF LEN(OBJECT$)<>9 THEN PRINT _
       "REVEAL a word 9 letters long, please.":EXIT SELECT
     IF OBJECT$<>"DRIFTWOOD" THEN PRINT "No, try again.":EXIT SELECT
     LET ROOMOBJECT$(ROOM,2)="DRIFTWOOD":LET FLAG(7)=1:PRINT _
       "Andrea wonders why you hadn't notice the DRIFTWOOD and ":PRINT_
       "bets that you could MAKE a swell MOBILE with it at the":PRINT_
       "CRAFTS CENTER.":LET ROOMOBJECT$(5,1)="SIGN*":_
       EXIT SELECT
   END IF
   IF ROOM=1 THEN
     IF FLAG(8)=1 THEN PRINT "Not again.":EXIT SELECT
     IF OBJECT$<>"DANCER" THEN PRINT "No, try again.":EXIT SELECT
     LET FLAG(8)=1:LET ROOMOBJECT$(ROOM,2)="MAN*"
     PRINT "Andrea notices the forlorn figure of a MAN* dancing alone."
   END IF
   IF ROOM=9 THEN
     IF OBJECT$<>"APPLE" THEN PRINT "I'm confused - READ SIGN*":EXIT SELECT
     PRINT "Andrea thinks you fell for an AFFIRMING THE CONSEQUENT "
     PRINT "fallacy.  Look over that section of the workbook.":_
     LET LOGIC$=LOGIC$+"..AFFIRM..":EXIT SELECT
   END IF
   IF ROOM=10 THEN
     IF FLAG(19)=1 THEN PRINT "Not again.":EXIT SELECT
     IF OBJECT$<>"ORANGE" THEN PRINT "I'm confused -- READ the SIGN*":EXIT SELECT
     LET ROOMOBJECT$(ROOM,2)="ORANGE":LET FLAG(19)=1
     PRINT "Andrea suggests we OFFER the ORANGE to the GUARD*":EXIT SELECT
   END IF
   EXIT SELECT

 CASE "MAKE"
   IF ROOM<>32 AND ROOM<>5 THEN PRINT "Not here.":EXIT SELECT
   IF ROOM=32 THEN
     IF FLAG(2)=1 THEN PRINT "It's been done.":EXIT SELECT
     LET ROOMOBJECT$(ROOM,1)="BRIDGE*"
     THING$="SURFBOARD":IF FNCARRY=1 THEN _
       LET INVENTORY$(ITEMNUMBER)="EMPTY" ELSE PRINT "WEIRD":EXIT SELECT
     PRINT "The huge SURFBOARD makes a nice BRIDGE and you can now GO SOUTH.":_
       LET FLAG(2)=1:EXIT SELECT
   END IF
   IF ROOM=5 THEN
     THING$="DRIFTWOOD":IF FNCARRY=0 AND FLAG(7)=0 THEN _
       PRINT "REVEAL object on BEACH first.":EXIT SELECT
     IF FNCARRY=0 THEN PRINT "GET the DRIFTWOOD.":EXIT SELECT
     THING$="LINE":IF FNCARRY=0 THEN PRINT _
      "GET some LINE first.":EXIT SELECT
     THING$="KNIFE":IF FNCARRY=0 THEN PRINT _
      "Andrea says you'll need a KNIFE.":EXIT SELECT
     THING$="DRIFTWOOD":LET INVENTORY$(ITEMNUMBER)="EMPTY"
     THING$="LINE":LET INVENTORY$(ITEMNUMBER)="EMPTY"
     THING$="KNIFE":LET INVENTORY$(ITEMNUMBER)="SAWBUCK"
     PRINT "The owner quickly sold your excellent MOBILE, giving you"
     PRINT "a sawbuck ($10).  Is there no end to your talent?  Don't speak."
   END IF
   EXIT SELECT
 CASE "OFFER"
   IF ROOM<>25 THEN PRINT "Not here":EXIT SELECT
   IF FLAG(12)=1 THEN PRINT "Not again":EXIT SELECT
   IF OBJECT$<>"ORANGE" THEN PRINT "Not that.":EXIT SELECT
   THING$="ORANGE":IF FNCARRY=0 THEN PRINT "You don't have it.":EXIT SELECT
   LET FLAG(12)=1
   LET ROOMOBJECT$(ROOM,1)="EMPTY"
   LET INVENTORY$(ITEMNUMBER)="EMPTY"
   PRINT "The GUARD* wanders off eating the ORANGE without saying thanks."
  EXIT SELECT
 CASE "TRY"
   IF ROOM<>15 THEN PRINT "Not here":EXIT SELECT
   IF FLAG(13)=0 THEN PRINT "No need":EXIT SELECT
   LET COMBO$="DUDDU"
   IF (LEN(OBJECT$)<>5)OR (LEFT$(OBJECT$,1)<>"U" AND LEFT$(OBJECT$,1)<>"D")_
     THEN PRINT "Try - TRY UDUDU or some such.":EXIT SELECT
   TRYNUMB=TRYNUMB+1
   IF COMBO$=OBJECT$ THEN
     LET FLAG(13)=0
     PRINT "The door swings gently open.  Andrea says --well done":EXIT SELECT
   END IF
   HITS=0
   FOR I=1 TO 5
    LET DUMMY$=MID$(OBJECT$,I,1)
    IF DUMMY$=MID$(COMBO$,I,1) THEN HITS=HITS+1
   NEXT I
   PRINT "You hear the lock mechanism whir and click ";HITS;" times."
  EXIT SELECT
  CASE "KILL","MURDER","RAPE","DESTROY","ASSAULT"
    PRINT "Your mom is right - you watch entirely too much tv."
   EXIT SELECT

     CASE ELSE
           PRINT "Andrea says to try another verb.":EXIT SELECT
   END  SELECT
END SUB

'MODULE 2.3.1 DEFINE THE FUNCTION- IS THE OBJECT PRESENT?
DEF FNPRESENT
   SHARED ROOMOBJECT$(),OBJECT$,ITEMNUMBER
        FOR J=1 TO 15
            IF ROOMOBJECT$(ROOM,J)=OBJECT$ THEN _
                FNPRESENT=1:ITEMNUMBER=J:EXIT DEF
        NEXT J
        FNPRESENT=0
END DEF

'MODULE 2.3.2 DEFINE THE FUNCTION- IS IT BEING CARRIED?
DEF FNCARRY
   SHARED INVENTORY$(),THING$,ITEMNUMBER
   FOR I = 1 TO 5
       IF INVENTORY$(I)=THING$ THEN FNCARRY = 1: ITEMNUMBER = I: EXIT DEF
   NEXT I
   FNCARRY=0
END DEF

'MODULE 2.4 UPDATE DATA
SUB UPDATE
END SUB

'MODULE 3 CLOSING
SUB CLOSING
   SHARED FLAG(),TURNNUMBER,ANSWER$(),STRT,GUESSNUMB,LOGIC$,TRYNUMB,SLAMMER
   PRINT:PRINT
IF FLAG(1)=1 THEN PRINT " *****   HOORAY FOR YOU!!  YOU'VE WON THE GAME!!  ****"
   PRINT
  FOR I=1 TO 4:    PRINT:NEXT I
   INPUT "Be sure that your disk is in the drive and press ENTER. OK";DUMMY$

      DIM DTA(40),DTA$(10)
      OPEN "REPORT.DTA" FOR INPUT AS #1
        REM RETRIEVES OLD DATA FROM REPORT.DTA
        FOR I=1 TO 40
          INPUT #1,DTA(I)
        NEXT I
        FOR I=1 TO 10
          INPUT #1,DTA$(I)
        NEXT I
      CLOSE #1

   LET DTA(12)=FLAG(1):LET DTA(37)=DTA(37)+INT((TIMER-STRT)/6)
      OPEN "REPORT.DTA" FOR OUTPUT AS #1
        REM SENDS UPDATED DATA TO REPORT.DTA (WITH NAIME$)
        FOR I=1 TO 40
          WRITE #1,DTA(I)
        NEXT I
        FOR I=1 TO 10
          WRITE #1,DTA$(I)
        NEXT I
      CLOSE #1

   OPEN "BOARDATA.TXT" FOR APPEND AS #2
      PRINT #2,TIME$,GUESSNUMB,LOGIC$
      PRINT #2,TRYNUMB,SLAMMER,ANSWER$(0)
      FOR I=1 TO TURNNUMBER
        IF INT(I/5)=I/5 THEN PRINT #2,
        PRINT #2,ANSWER$(I),
      NEXT I
      PRINT #2,INT((STRT-TIMER)/6),INT(1000*RND(0))
   CLOSE #2
   PRINT "This game is over, type BOARDWALK  to play again."
END SUB

'END OF PROGRAM