antoine-source/dlld/rollercoaster/ROLLERCOASTER-2018.BAS

273 lines
18 KiB
QBasic

0 REM ADVENTURES IN VIDEOLAND - ROLLERCOASTER. BY @DAVIDLUBAR. PUBLISHED IN CREATIVE COMPUTING MAGAINE V8N1, JANUARY 1982. UPGRADES BY @KEVINSAVETZ, 2018. ORIG. GAME AND UPGRADES ARE IN THE PUBLIC DOMAIN.
1 DISC = 1: REM SET DISC=0 FOR NO LASERDISC. DISC=1 FOR PIONEER LD-V2200 OR COMPATIBLE LASERDISC PLAYER CONNECTED TO SLOT 2
2 GOSUB 30000: REM INITIALIZE
3 GOSUB 34000: REM INSTRUCTIONS
4 GOSUB 22000: REM DISPLAY 1ST ROOM
10 GOSUB 1000: REM INPUT ROUTINE
30 IF NOT SPACE THEN V$ = A$
40 IF A$ = " " THEN 10
45 PRINT : PRINT
50 IF ASC (V$) = 32 AND LEN (V$) > 1 THEN V$ = RIGHT$ (V$, LEN (V$) - 1):A$ = RIGHT$ (A$, LEN (A$) - 1): GOTO 50
60 IF LEN (V$) = LEN (A$) THEN NFLAG = 0: GOTO 90
70 N$ = RIGHT$ (A$, LEN (A$) - LEN (V$))
80 IF ASC (N$) = 32 AND LEN (N$) > 1 THEN N$ = RIGHT$ (N$, LEN (N$) - 1): GOTO 80
85 IF N$ = " " THEN NFLAG = 0
90 A = ASC (V$) - 64
100 IF A < 1 OR A > 26 THEN 10
110 ON A GOSUB 10100,10200,10300,10400,10500,10600,10700,10800,10900,11000,11100,11200,11300,11400,11500,11600,11700,11800,11900,12000,12100,12200,12300,12400,12500,12600
120 IF NOT KW THEN PRINT "I DON'T KNOW HOW TO DO THAT":KW = 1
125 T = T + 1: IF T > 150 THEN INVERSE : PRINT "I THINK TIME JUST RAN OUT": NORMAL :T = 0:VC$ = "FR19801SE/FR20007PL/": GOSUB 40000: GOTO 50000
130 PRINT : GOTO 10
1000 A$ = " ":SPACE = 0:N$ = " ":V$ = " ":NFLAG = 1
1010 GET B$: IF ASC (B$) = 13 THEN RETURN
1020 IF ASC (B$) = 8 AND SPACE AND RIGHT$ (A$,1) = " " THEN SPACE = 0
1025 IF LEN (A$) = 1 AND B$ = " " THEN 1010
1030 IF ASC (B$) = 8 AND LEN (A$) > 1 THEN A$ = LEFT$ (A$, LEN (A$) - 1): PRINT B$;" ";B$;: GOTO 1010
1040 IF B$ = " " AND NOT SPACE THEN V$ = A$:SPACE = 1: GOTO 1060
1050 IF ASC (B$) < 65 OR ASC (B$) > 91 THEN 1010
1060 PRINT B$;
1070 A$ = A$ + B$
1080 GOTO 1010
9999 REM FOLLOWING ROUTINES ACT ON THE INPUT. KW IS KEYWORD FLAG
10100 KW = 0: RETURN
10200 IF A$ = "BREAK BOX" THEN 53000
10210 IF A$ = "BREAK DOOR" THEN PRINT "TOO SOLID TO EVEN TRY": RETURN
10299 KW = 0: RETURN
10300 KW = 0: RETURN
10400 IF V$ = "DROP" AND NFLAG THEN 26000
10499 KW = 0: RETURN
10500 IF A$ = "E" THEN D = 2: GOTO 20000
10501 IF V$ = "EXAMINE" AND NFLAG THEN 27000
10599 KW = 0: RETURN
10600 IF A$ = "FIND BATTERIES" THEN PRINT "TRY THE BEAR": RETURN
10610 IF V$ = "FIND" THEN PRINT "I CAN'T HELP YOU": RETURN
10699 KW = 0: RETURN
10700 IF V$ = "GO" THEN 19000
10710 IF A$ = "GIVE COINS" AND L = 5 THEN 43000
10720 IF A$ = "GIVE TICKET" AND L = 16 THEN 48000
10799 KW = 0: RETURN
10800 IF V$ = "HELP" THEN PRINT "JUST KEEP MOVING AND EXAMINING THINGS, AND AVOID DANGEROUS PLACES.": RETURN
10899 KW = 0: RETURN
10900 IF A$ = "I" OR A$ = "INV" OR A$ = "INVENTORY" THEN 24000
10999 KW = 0: RETURN
11000 IF V$ = "JAM" THEN 54000
11099 KW = 0: RETURN
11100 IF V$ = "KILL" THEN PRINT "THAT IS BEYOND MY POWER.": RETURN
11199 KW = 0: RETURN
11200 IF A$ = "LOOK" THEN 22000
11210 IF V$ = "LOOK" AND NFLAG THEN 27000
11299 KW = 0: RETURN
11300 IF A$ = "MAKE JAMMER" THEN 55000
11399 KW = 0: RETURN
11400 IF A$ = "N" THEN D = 1: GOTO 20000
11499 KW = 0: RETURN
11500 IF A$ = "OPEN BEAR" THEN PRINT "TWO BATTERIES JUST FELL ": PRINT "OUT OF THE BACK.": PRINT "THEY'RE ON THE GROUND":OB(11) = L: RETURN
11599 KW = 0: RETURN
11600 IF (V$ = "PUT" OR V$ = "PLACE") AND NFLAG THEN 28000
11610 IF V$ = "PLAY" AND L = 6 THEN 43000
11620 IF V$ = "PLAY" AND L = 16 THEN 48000
11630 IF (A$ = "PUSH BUTTON" OR A$ = "PRESS BUTTON") AND L = 2 THEN 53000
11699 KW = 0: RETURN
11700 IF A$ = "QUIT" THEN END
11799 KW = 0: RETURN
11800 IF (A$ = "READ BOOK") AND (OB(4) = 0 OR OB(4) = L) THEN PRINT "YOU NOW KNOW HOU TO MAKE A": PRINT "JAMMER FROM A RADIO":BK = 1: RETURN
11810 IF A$ = "READ TICKET" THEN A$ = "LOOK TICKET": GOTO 27000
11899 KW = 0: RETURN
11900 IF A$ = "S" THEN D = 3: GOTO 20000
11910 IF V$ = "SHOOT" THEN 43000
11920 IF A$ = "SHOW TICKET" AND L = 16 THEN 48000
11999 KW = 0: RETURN
12000 IF V$ = "TAKE" AND NFLAG THEN 25000
12010 IF (A$ = "TURN KNOB" OR A$ = "TURN DIAL") AND L = 2 THEN 53000
12099 KW = 0: RETURN
12100 IF A$ = "USE JAMMER" THEN 54000
12199 KW = 0: RETURN
12200 IF A$ = "VISIT DANCER" THEN PRINT "SHE DOESN'T WANT TO SEE YOU": RETURN
12299 KW = 0: RETURN
12300 IF A$ = "W" THEN D = 4: GOTO 20000
12310 IF (A$ = "WEAR UNIFORM") AND (OB(9) = 0 OR OB(9) = L) THEN VC$ = "FR5890SE/": GOSUB 40000: PRINT "IT FITS WELL AND MAKES A GOOD": PRINT "DISGUISE":KW = 1:OB(9) = 0: RETURN
12399 KW = 0: RETURN
12400 KW = 0: RETURN
12500 KW = 0: RETURN
12600 POP : STOP : REM DEBUGGING AID. INPUT OF Z STOPS PROGRAM.
19000 REM PARSER FOR DIRECTION
20000 REM MOVE ROUTINE:D=DIRECTION:R=ROOM MOVED INTO:L=PRESENT LOCATION
20060 R = ASC ( MID$ (R$(L),D,1)) - 64
20070 IF NOT R THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
20080 L = R
22000 IF DISC AND RND (1) > .6 AND A$ = "LOOK" THEN VC$ = "FR2550SE/": GOSUB 40000
22001 IF V$(L) < > "" THEN VC$ = V$(L): GOSUB 40000:V$(L) = ""
22005 PRINT "YOU ARE IN ";
22010 PRINT RM$(L): PRINT RD$(L): PRINT "THIS LOCATION CONTAINS ";:F1 = 0
22020 FOR I = 1 TO NO
22030 IF OB(I) = L THEN PRINT OB$(I):F1 = 1
22040 NEXT I: IF NOT F1 THEN PRINT "NOTHING"
22050 PRINT "VISIBLE EXITS: ";
22060 FOR I = 1 TO 4
22070 IF MID$ (R$(L),I,1) < > "@" THEN PRINT DIR$(I);" ";:F1 = 1
22080 NEXT I: IF NOT F1 THEN PRINT "DON'T EXIST"
22081 PRINT : IF L = 5 THEN 41000
22082 IF L = 8 THEN 47000
22083 IF L = 15 THEN 47100
22084 IF L = 18 THEN PRINT "YOU FOLLOW A WINDING PATH, FINALLY": PRINT "RETURNING TO FAMILIAR GROUND":L = 1: GOTO 22000
22085 IF L = 9 THEN 49000
22090 RETURN
24000 F1 = 0: PRINT "YOU ARE CARRYING": FOR I = 1 TO NO
24010 IF OB(I) = 0 THEN PRINT OB$(I):F1 = 1
24020 NEXT I: IF NOT F1 THEN PRINT "NOTHING"
24030 RETURN
25000 F1 = 0:F2 = 0: FOR I = 1 TO NO
25005 IF N$ = OB$(I) AND OB(I) = 0 THEN PRINT "YOU ALREADY HAVE THE ";N$: RETURN
25010 IF (N$ = OB$(I) OR N$ = "ALL" OR N$ = "EVERYTHING") AND (OB(I) = (L)) THEN OB(I) = 0: PRINT OB$(I);" TAKEN":F1 = 1
25020 IF N$ = OB$(I) THEN F2 = 1
25025 NEXT I
25030 IF F1 = 0 AND F2 = 0 AND N$ < > "ALL" AND N$ < > "EVERVTHING" THEN PRINT "I CAN'T TAKE THE ";N$: RETURN
25035 IF F1 = 0 AND F2 = 0 THEN PRINT "THERE IS NOTHING HERE I CAN TAKE."
25040 IF F1 = 0 AND F2 = 1 THEN PRINT "I DON'T SEE IT HERE."
25060 RETURN
26000 F1 = 0: FOR I = 1 TO NO
26010 IF ((OB$(I) = N$ OR N$ = "ALL" OR N$ = "EVERYTHING") AND (OB(I) = 0)) THEN OB(I) = L:F1 = 1
26020 NEXT I
26030 IF NOT F1 THEN PRINT "YOU CAN'T DROP WHAT YOU AREN'T CARRYING": RETURN
26040 PRINT "OK": RETURN
27000 F1 = 0: FOR I = 1 TO NO
27010 IF (OB(I) = 0 OR OB(I) = L) AND (OB$(I) = N$) THEN F1 = 1: PRINT OD$(I): IF OD$(I) = "" THEN PRINT "I SEE NOTHING IMPORTANT.": RETURN
27020 IF (FL(I) = (L) OR FL(I) = 0) AND (FR$(I) = N$) THEN F1 = 1: PRINT FD$(I): IF FD$(I) = "" THEN PRINT "NOTHING EXTRAORDINARY HERE": RETURN
27030 IF F1 THEN RETURN
27040 NEXT I
27050 PRINT "I CAN'T DESCRIBE THAT"
27060 RETURN
28000 FOR I = 1 TO NO
28010 IF N$ < > OB$(I) OR OB(I) < > 0 THEN NEXT I: PRINT "YOU AREN'T CARRYING THE ";N$: RETURN
28090 PRINT "WHERE?"
28095 T$ = N$
28100 GOSUB 1000
28102 N$ = T$
28105 PRINT
28106 IF A$ = " DOWN" THEN 26000
28110 IF V$ < > " IN" AND V$ < > " ON" THEN PRINT "I CAN'T DO THAT": RETURN
28115 T$ = RIGHT$ (A$, LEN (A$) - LEN (V$))
28116 IF LEFT$ (T$,1) = " " AND LEN (T$) > 1 THEN T$ = RIGHT$ (T$, LEN (T$) - 1)
28117 IF T$ = "FLOOR" OR T$ = "TABLE" THEN 26000
28120 FOR I = 1 TO NO
28130 IF T$ < > OB$(I) OR (OB(I) < > L AND OB(I) < > 0) THEN NEXT I: PRINT "THE ";T$;" ISN'T HERE": RETURN
28140 PRINT "OK": IF (T$ = "RADIO" OR T$ = "JAMMER") AND N$ = "BATTERIES" THEN B = 1
28200 RETURN
30000 DIM OB(12),OB$(12),RM$(18),RD$(18),R$(18),OD$(12),FR$(12),FL(12),FD$(12),V$(18)
30001 RM$(1) = "THE MIDWAY":RM$(2) = "THE FIRST AID STATION":RM$(3) = "THE MIDWAY":RM$(4) = "THE MIDWAY":RM$(5) = "A RESTAURANT":RM$(6) = "A SHOOTING GALLERY"
30002 RM$(7) = "A MAINTAINANCE ROOM":RM$(8) = "THE BELLY DANCER'S TENT":RM$(9) = "THE TOP OF THE ROLLER COASTER":RM$(10) = "A CLOSET"
30003 RM$(11) = "AN ALLEY":RM$(12) = "THE OBSERVATION TOWER":RM$(13) = "A CRAWLWAY":RM$(14) = "A STORAGE ROOM":RM$(15) = "A SMALL SHACK":RM$(16) = "A GAME BOOTH":RM$(17) = "A NARROW TUNNEL":RM$(18) = "A DARK, TWISTING PATH"
30010 R$(1) = "EDKC":R$(2) = "@JC@":R$(3) = "BAFG":R$(4) = "@PHA":R$(5) = "@@A@":R$(6) = "C@@@":R$(7) = "MCQ@":R$(8) = "D@N@":R$(9) = "@@M@"
30011 R$(10) = "@@@B":R$(11) = "A@O@":R$(12) = "Q@@@":R$(13) = "I@G@":R$(14) = "@@@R":R$(15) = "K@@@":R$(16) = "@@@D":R$(17) = "G@L@":R$(18) = "@@@@"
30020 L = 1:NO = 12
30030 OB$(1) = "COINS":OB$(2) = "TOOLKIT":OB$(3) = "TICKET":OB$(4) = "BOOK":OB$(5) = "LAMP":OB$(6) = "TOWELS":OB$(7) = "POSTER":OB$(8) = "BEAR"
30031 OB$(9) = "UNIFORM":OB$(10) = "RADIO":OB$(11) = "BATTERIES":OB$(12) = "JAMMER"
30040 OB(1) = 4:OB(2) = 7:OB(3) = 14:OB(4) = 15:OB(5) = - 1:OB(6) = - 1:OB(7) = - 1:OB(8) = - 1
30045 OB(9) = 10:OB(10) = - 1:OB(11) = - 1:OB(12) = - 1
30050 DIR$(1) = "NORTH":DIR$(3) = "SOUTH":DIR$(2) = "EAST":DIR$(4) = "WEST"
30060 RD$(1) = "WHICH STRETCHES TO THE EAST AND WEST. A RESTAURANT IS TO THE NORTH"
30061 RD$(2) = "CONTAINING STRANGE EQUIPMENT. LIGHTS FLASH FROM AN ELECTRONIC BOX"
30062 RD$(3) = "AN AID STATION IS TO THE NORTH. THE SOUND OF GUNFIRE COMES FROM A SHOOTING GALLERY TO THE SOUTH."
30063 RD$(4) = "FROM A TENT TO THE SOUTH YOU HEAR EXOTICMUSIC
30064 RD$(5) = "THE ROOM IS CROWDED BUT YOU SEE AN EMPTYTABLE IN THE CORNER"
30065 RD$(6) = "A SIGN READS '3 SHOTS FOR 25 CENTS'"
30066 RD$(7) = "THERE ARE DOORS TO THE NORTH AND SOUTH. THE NORTHERN DOOR IS OPEN. YOU CAN HEAR THE ROLLER COASTER."
30067 RD$(8) = "SHE STOPS AND LOOKS AT YOU"
30068 RD$(9) = "A DANGEROUS PLACE TO BE."
30069 RD$(10) = "":RD$(11) = "THERE IS A DOOR LEADING TO A SMALL ROOM TO THE SOUTH"
30070 RD$(12) = "BELOW, YOU CAN SEE THE WHOLE CARNIVAL. THE TOP OF THE ROLLER COASTER IS IN SIGHT."
30071 RD$(13) = "THE PASSAGE LEADS NORTH TO THE TOP OF THE ROLLER COASTER. THE NOISE IS QUITE LOUD"
30072 RD$(14) = "THE DOOR IS LOCKED BEHIND YOU, BUT THEREIS A WINDOW TO THE WEST"
30073 RD$(15) = "THE ROOM IS LITTERED WITH FRAGMENTS OF ELECTRONIC PARTS, BUT NONE OF IT IS SALVAGEABLE. A GUARD BLOCKS YOUR PATH"
30074 RD$(16) = "A SIGN SAYS, '50 CENTS A BALL. WINNER'S CHOICE.'"
30075 RD$(17) = "THE PASSAGE LEADS SOUTH TO THE TOP OF THE OBSERVATION TOWER"
30100 OD$(1) = "TWO DIMES AND A NICKEL":OD$(2) = "IT CONTAINS EVERYTHING NEEDED FOR SMALL ELECTRONIC REPAIRS"
30101 OD$(4) = "THE TITLE IS 'RADIO FREQUENCY JAMMING TECHNIQUES'":OD$(5) = "IT IS VERY GAUDY":OD$(6) = "NICE AND FLUFFY":OD$(7) = "WHOOPIE--IT'S THE DALLAS CHEERLEADERS":OD$(8) = "WHEN YOU PUSH THE BUTTON ON ITS BACK, ITSAYS 'I WUV YOU'"
30102 OD$(3) = "IT SAYS, 'GOOD FOR 1 FREE GAME AT THE BALL TOSS, COURTESY OF CREATIVE COMPUTING, THE #1 MAGAZINE OF SOFTUARE AND APPLICATIONS.'"
30200 FR$(1) = "BOX":FD$(1) = "IT IS FIRMLY ATTACHED TO THE TABLE. THERE ARE KNOBS AND A BUTTON ON IT"
30201 FR$(2) = "RIFLE":FL(2) = 6:FD$(2) = "IT IS CHAINED TO THE COUNTER"
30202 FR$(3) = "GUN":FL(3) = 6:FD$(3) = "IT IS CHAINED TO THE COUNTER"
30300 V$(1) = "FR4002SE/":V$(2) = "FR21130SE/":V$(3) = "FR4627SE/":V$(4) = "FR4750SE/"
30310 V$(5) = "FR23100SE/":V$(6) = "FR11000SE/":V$(7) = "FR14038SE/FR14100PL/":V$(8) = "FR11818SE/FR11907PL/":V$(9) = "FR15362SE/"
30320 V$(10) = "":V$(12) = "FR8300SE/FR8488PL/":V$(13) = "FR14724SE/FR14855PL/":V$(14) = "FR33900SE/":V$(15) = "FR28322SE/":V$(16) = "FR7343SE/"
30330 V$(17) = "":V$(18) = ""
30400 KW = 1
31000 IF NOT DISC THEN RETURN : REM SET UP SERIAL PORT FOR LASERDISC
31010 PRINT CHR$ (4);"PR#2": REM INITIALIZE SERIAL PORT
31020 POKE 49322,11: REM COMMAND-NO PARITY, NO ECHO, ACTIVATE RTS, NO INTERRUPTS, ACTIVATE DTR
31030 POKE 49323,28: REM CONTROL-1 STOP BIT, 8 DATA BITS, BAUD RATE GENERATOR ENABLED, 4800 BPS
31040 PRINT CHR$ (4);"PR#0"
31999 REM KS: EVERYTHING I KNOW ABOUT APPLE 2 SERIAL COMM I LEARNED FROM https://groups.google.com/forum/#!topic/comp.sys.apple2.programmer/ZF9iyC6vVQo
32000 RETURN
34000 VC$ = "FR2818SE/": GOSUB 40000: TEXT : HOME
34001 PRINT "WHAT IS YOUR FIRST NAME?": GOSUB 1000:NA$ = A$
34010 PRINT : PRINT "YOU HAVE JUST RECEIVED AN ANONYMOUS": PRINT "TIP THAT A BOMB HAS BEEN PLANTED": PRINT "ON A ROLLER COASTER.": FOR I = 1 TO 1000: NEXT I
34011 VC$ = "FR6726SE/FR6959PL/": GOSUB 40000
34015 PRINT : PRINT "YOU ARE CALLED TO INVESTIGATE AND FLY": PRINT "OFF TO STOP THE SABOTEUR.": FOR I = 1 TO 1000: NEXT I
34016 VC$ = "FR30032SE/FR30214PL/": GOSUB 40000
34018 PRINT
34020 PRINT "ON HIS SIDE, HE HAS THE BRILLIANCE OF": PRINT "AN INSANE MIND, AND THE AID OF ALLIES": PRINT "WHO ARE DETERMINED TO SEE THAT YOU FAIL"
34030 PRINT : PRINT "ON YOUR SIDE, YOU HAVE CUNNING, ": PRINT "TRAINING, AND DEDICATION"
34055 PRINT : PRINT "YOU HAVE INFILTRATED THE PARK WITH": PRINT "THE KNOWLEDGE THAT THE SABOTEUR": PRINT "WILL STRIKE SOMETIME TONIGHT": PRINT : PRINT "ALL YOU NEED DO IS STOP HIM."
34056 PRINT : INVERSE : PRINT "PRESS ANY KEY TO CONTINUE";: GET A$: NORMAL : HOME
34060 PRINT "BY GIVING THE RIGHT COMMAND, YOU CAN ": PRINT "MOVE, EXAMINE OBJECTS, AND PERFORM ": PRINT "OTHER ACTIONS"
34070 PRINT : PRINT "I UNDERSTAND TWO-WORD COMMANDS SUCH AS": PRINT "'DROP BOOK' OR 'TAKE KNIFE'.": PRINT "TO MOVE, YOU CAN SIMPLY ENTER 'N' FOR": PRINT "NORTH, ETC."
34080 PRINT : PRINT "AT TIMES, I WILL AWAIT YOUR COMMAND": PRINT "IN OTHER SITUATIONS, I WILL PRESENT YOU": PRINT "WITH A CHOICE OF ACTIONS": PRINT : PRINT "BUT SUCCESS OR FAILURE IS UP TO YOU."
34090 PRINT : INVERSE : PRINT "PRESS ANY KEY TO BEGIN. MAY LUCK BE": PRINT "WITH YOU,";NA$;: GET A$: NORMAL : PRINT : RETURN
40000 REM PLAY VIDEO CLIP
40010 IF NOT DISC THEN RETURN
40020 FOR I = 1 TO LEN (VC$)
40030 IF MID$ (VC$,I,1) = "/" THEN POKE 49320,13: WAIT 49321,8:J = PEEK (49320): GOTO 40060
40040 POKE 49320, ASC ( MID$ (VC$,I,1))
40060 NEXT I
40070 RETURN
41000 PRINT : PRINT "A WAITER APPROACHES AND ASKS IF YOU": PRINT "WOULD LIKE A SEAT": PRINT : PRINT "SINCE YOU MISSED LUNCH TODAY, YOU": PRINT "ARE HUNGRY"
41010 PRINT : PRINT "DO YOU WANT TO EAT?": GOSUB 1000
41020 IF A$ < > " NO" AND A$ < > " YES" THEN PRINT "PLEASE ANSWER YES OR NO": GOTO 41010
41025 PRINT
41030 IF A$ = " NO" THEN PRINT "THE WAITER CALLED YOU A STIFF": PRINT "AND THREW YOU OUT":L = 3: GOTO 22000
41040 PRINT : PRINT "YOU ARE SERVED A DELICIOUS MEAL": PRINT "UNFORTUNATELY, THE SERVICE IS": PRINT "RATHER SLOW":VC$ = "FR19453SE/FR19799PL/": GOSUB 40000
41045 PRINT
41050 PRINT "THE BOMB WENT OFF AND THE BOMBER ESCAPED": FOR I = 1 TO 3000: NEXT I: GOTO 50000
43000 IF OB(1) < > 0 THEN PRINT "THE MAN BEHIND THE COUNTER TELLS": PRINT "YOU, 'IF YOU WANNA PLAY YOU GOTTA PAY.'": RETURN
43010 PRINT "YOU HAND OVER THE COINS AND PICK": PRINT "UP THE GUN":OB(1) = - 1
43020 VC$ = "FR10960SE/FR11107PL/": GOSUB 40000
43030 PRINT "GOOD SHOOTING": PRINT "HE HANDS YOU A TEDDY BEAR":OB(8) = 0
43035 PRINT "A PASSERBY LOOKS AT THE BEAR AND": PRINT "SAYS, 'MODERN NONSENSE. WHAT EVER HAPPENED TO SIMPLE STUFFED ANIMALS?'": PRINT "HE SHAKES HIS HEAD AND LEAVES."
43040 RETURN
47000 PRINT : IF OB(8) < > 0 AND OB(8) < > - 2 THEN PRINT "SHE SAYS YOU CAN'T COME IN UNLESS YOU": PRINT "HAVE A PRESENT FOR HER. SHE PUSHES YOU OUT.":L = 4: GOTO 22000
47005 IF OB(8) = - 2 THEN PRINT "SHE SAYS, 'YOU THINK ONE PRESENT": PRINT "ENTITLES YOU TO COME IN HERE ANY TIME": PRINT "YOU WANT?' SHE TURNS HER BACK AND IGNORES YOU.": RETURN
47010 PRINT "SHE LETS YOU IN AND EYES THE BEAR.": PRINT "DO YOU WANT TO GIVE IT TO HER? ": GOSUB 1000
47020 PRINT : IF A$ < > " Y" AND A$ < > " YES" THEN PRINT "SHE THROWS YOU OUT":L = 4: GOTO 22000
47030 OB(8) = - 2: PRINT "SHE UNLOCKS THE DOOR TO THE SOUTH"
47040 RETURN
47100 IF OB(9) < > 0 THEN PRINT "HE SAYS, 'EMPLOYEES ONLY' AND THROWS YOU OUT":L = 11: GOTO 22000
47110 PRINT "HE SEES YOUR UNIFORM AND LETS YOU IN"
47120 RETURN
48000 IF OB(3) < > 0 THEN PRINT "YOU CAN'T AFFORD THE GAME": RETURN
48010 PRINT "YOU HAND OVER THE TICKET AND THROW THE BALL.": PRINT CHR$ (7); CHR$ (7); CHR$ (7): PRINT "IT'S A WINNER.": PRINT "YOU HAVE A CHOICE OF FOUR PRIZES!"
48020 PRINT "A LAMP, TOWELS, RADIO, OR POSTER."
48025 OB(3) = - 2
48030 PRINT "WHICH DO YOU WANT?": GOSUB 1000
48040 A$ = RIGHT$ (A$, LEN (A$) - 1): FOR I = 5 TO 10
48050 IF OB$(I) = A$ THEN OB(I) = 0: PRINT : PRINT "IT'S YOURS": IF A$ = "RADIO" THEN VC$ = "FR1234SE/": GOSUB 40000: RETURN
48055 IF OB$(I) = A$ THEN RETURN
48060 NEXT I: PRINT : PRINT "PLEASE ANSWER WITH LAMP, POSTER, RADIO OR TOWELS.": GOTO 48030
49000 INVERSE : SPEED= 200: PRINT "IF YOU LOOK BACK, YOU'LL NOTICE": PRINT "A CAR SPEEDING TOWARD YOU":VC$ = "FR16185SE/FR16223PL/"
49010 NORMAL : SPEED= 255: GOSUB 40000: GOTO 50000
50000 HOME : VTAB 10: PRINT "IT IS ONE YEAR LATER": PRINT "THE ROLLER COASTER HAS BEEN REBUILT": PRINT "THE SABOTEUR PLANS TO DESTROY IT AGAIN": PRINT "WOULD YOU LIKE TO TRY TO SAVE IT?"
50010 GOSUB 1000: PRINT
50020 IF A$ = " YES" OR A$ = " Y" THEN GOSUB 30001: GOTO 22000
50030 IF A$ < > " N" AND A$ < > " NO" THEN PRINT "YES OR NO";: GOSUB 1000: PRINT : GOTO 50020
50040 END
53000 PRINT "UH OH, I THINK THAT WAS A MISTAKE":VC$ = "FR18722SE/FR18807PL/": GOSUB 40000: PRINT "YOU SET OFF THE BOMB": FOR I = 1 TO 2000: NEXT I: GOTO 50000
54000 IF L < > 12 THEN PRINT "YOU AREN'T IN LINE OF SIGHT WITH": PRINT "THE ROLLER COASTER": RETURN
54010 IF OB(12) THEN PRINT "YOU DON'T HAVE A JAMMER": RETURN
54020 IF NOT B THEN PRINT "IT DOESN'T WORK, MAYBE IT NEEDS BATTERIES": RETURN
54030 VC$ = "FR12169SE/FR12227PL/": GOSUB 40000
54040 HOME : VTAB 10: HTAB 12: INVERSE : SPEED= 100: PRINT "CONGRATULATIONS": NORMAL : PRINT : HTAB 6: PRINT "YOU SAVED THE ROLLER COASTER": SPEED= 255: END
55000 IF NOT BK THEN PRINT "YOU DON'T KNOW HOW": RETURN
55010 IF OB(10) < > 0 THEN PRINT "SOMETHING VITAL IS MISSING": RETURN
55020 IF OB(2) < > 0 THEN PRINT "YOU DON'T HAVE THE REQUIRED TOOLS": RETURN
55030 PRINT "CONGRATULATIONS, YOU NOW HAVE A ": PRINT "JAMMER":OB(10) = - 1:OB(12) = 0: RETURN