Home of the original IBM PC emulator for browsers.
[PCjs Machine "ibm5160"]
Waiting for machine "ibm5160" to load....
Most of the games presented here are written in BASIC and represent an
excellent example of game functions for the student programmer in BASIC
to study. Most use ASCII graphics, so you can use any monitor.
File Descriptions:
* BAT Letter A-L for MENU.BAT.
COMBOT DOC Documentation for COMBOT.BAS.
COMBOT BAS Program two robots to fight each other with lasers.
CIVILWAR BAS Civil war simulation.
CIA BAS CIA adventure simulation.
XWING BAS Re-live Star Wars; graphics required.
FOOTBALL BAS Another football simulation.
FOOTBAL BAS Big-8 football simulation -- K.U. versus your choice.
FROG EXE Good Frogger type game; graphics required.
GRINCH BAS El Grinch game -- cute, neat game.
MARS-ESC BAS Escape from Mars adventure.
MENU BAT Menu for the files on this disk.
RACECAR BAS Good race car game.
MENU SCR Part of MENU.BAT.
SEAWOLF BAS Excellent game -- sink subs, PT's, tankers.
SOLITARE BAS Solitaire card game; you can't cheat with this one.
10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│ │░"
70 PRINT"░│ 2078-A.BAS │░"
80 PRINT"░│ CIA │░"
90 PRINT"░│ │░"
100 PRINT"░│ │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
130 PRINT"░│ █ █ █ █ █ █ │░"
140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
150 PRINT"░│ █ █ █ █ █ │░"
160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
170 PRINT"░│ │░"
180 PRINT"░│ International PC Owners │░"
190 PRINT"░│ │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│ │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT " PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 REM Translated from TRS-80 version on CPMNET BBS
1010 REM Pete Wohlmut 10-3-82
1020 DEF SEG= &H40
1030 POKE(&H17),PEEK(&H17) OR &H20 ' set Num Lock
1040 POKE (&H17),PEEK(&H17) OR &H40 ' set Caps Lock
1050 DEF SEG
1060 CLEAR:CLS:RANDOMIZE VAL(RIGHT$(TIME$,2)):DEFINT A-Z:GOTO 1090
1070 Z9=0:FOR R=1 TO 50:IF V1$=N$(R) AND (N(R)=LO OR N(R)=-1) THEN Z9=1:RETURN
1080 NEXT:PRINT"I DON'T SEE THAT HERE.":Z9=2:RETURN
1090 PRINT " C.I.A ADVENTURE"
1100 DIM N1$(50),N$(50),N(50),V$(18),LO(30,4),LO$(30):FL=1:DR=0:DG=-1:T=0:EL=0:BU=0:DO=0:CA=0:BA=0:TE=0:GL=0
1110 PA=0:RO=0:FOR R=1 TO 5:R1=INT(9*RND(9)):CO$=CO$+STR$(R1):NEXT:LO=1:A9$=">"+STRING$(62,"-")+"<"
1120 R=LEN(CO$):CO$=RIGHT$(CO$,R-1)
1130 FOR R=1 TO 50:READ N1$(R),N$(R),N(R):NEXT
1140 FOR R=1 TO 30:READ LO$(R),LO(R,1),LO(R,2),LO(R,3),LO(R,4):NEXT
1150 FOR R=1 TO 18:READ V$(R):NEXT
1160 REM
1170 PRINT"WE ARE ";LO$(LO);"."
1180 FOR R=1 TO 46:IF N(R)=LO THEN PRINT"I CAN SEE ";N1$(R);"."
1190 NEXT:B=0:FOR R=1 TO 4:IF LO(LO,R)>0 THEN B=1
1200 NEXT:IF B=0 THEN 1250
1210 PRINT"WE COULD EASILY GO: ";:IF LO(LO,1)>0 THEN PRINT"NORTH ";
1220 IF LO(LO,2)>0 THEN PRINT"SOUTH ";
1230 IF LO(LO,3)>0 THEN PRINT"EAST ";
1240 IF LO(LO,4)>0 THEN PRINT"WEST ";
1250 PRINT:PRINT A9$
1260 T=T+1:IF DG>0 THEN DG=DG-1
1270 IF T=1 THEN INPUT"ENTER YOUR NAME PARTNER";NA$
1280 GOTO 2810
1290 N=0:FOR R=1 TO 46:IF N(R)=-1 THEN N=N+1
1300 NEXT
1310 PRINT:INPUT"WHAT DO YOU THINK WE SHOULD DO";A$
1320 GOSUB 2940:V$=LEFT$(A$,3):GOSUB 3000:FOR R=1 TO 18:IF V$=V$(R) THEN 1350 ELSE NEXT
1330 IF V$="ORD" THEN 3260
1340 PRINT"I DON'T KNOW HOW TO DO THAT.":GOTO 1310
1350 IF V$="QUI" THEN 2700
1360 V=R:FOR R=1 TO LEN(A$):IF MID$(A$,R,1)=" " THEN 1410 ELSE NEXT
1370 IF V$="LOO" THEN 1160
1380 IF V$="BON" THEN 2720
1390 IF V$="INV" THEN 2740
1400 PRINT"PLEASE USE 2 WORD COMMANDS SO I CAN UNDERSTAND YOU.":GOTO 1310
1410 V1$=MID$(A$,R+1,3):FOR R=1 TO 49:IF V1$=N$(R) THEN 1440 ELSE NEXT
1420 IF V1$="NOR" OR V1$="SOU" OR V1$="EAS" OR V1$="WES" THEN 1440
1430 PRINT"I DON'T KNOW WHAT IT IS YOU ARE TALKING ABOUT.":GOTO 1310
1440 ON V GOTO 1450,1580,1670,1730,1850,1890,2090,2190,2350,2370,2410,2500,2540,2590,2650,2700,2720,2740
1450 IF V1$="NOR" AND LO(LO,1)>0 THEN LO=LO(LO,1):GOTO 1160
1460 IF V1$="SOU" AND LO(LO,2)>0 THEN LO=LO(LO,2):GOTO 1160
1470 IF V1$="EAS" AND LO(LO,3)>0 THEN LO=LO(LO,3):GOTO 1160
1480 IF V1$="WES" AND LO(LO,4)>0 THEN LO=LO(LO,4):GOTO 1160
1490 IF V1$="NOR" OR V1$="SOU" OR V1$="EAS" OR V1$="WES" THEN 1570
1500 GOSUB 1070:IF Z9=2 THEN 1260
1510 IF R=8 THEN LO=5:GOTO 1160
1520 IF R=37 AND RO=1 AND LO=20 THEN LO=21:GOTO 1160
1530 IF R=10 THEN LO=11:GOTO 1160
1540 IF R=14 THEN LO=13:GOTO 1160
1550 IF R=33 THEN LO=3:GOTO 1160
1560 IF R=34 AND DO=1 THEN LO=9:GOTO 1160
1570 PRINT"I CAN'T GO THAT WAY AT THE MOMENT.":GOTO 1260
1580 GOSUB 1070:IF Z9=2 THEN 1260
1590 IF R=2 OR R=3 OR R=4 OR R=6 OR R=15 OR R=16 OR R=20 OR R=21 OR R=22 OR R=23 OR R=25 OR R=26 OR R=27 OR R=28 OR R=30 OR R=31 OR R=37 OR R=39 OR R=40 OR R=42 OR R=44 OR R=45 OR R=46 THEN 1610
1600 PRINT"I CAN'T CARRY THAT!":GOTO 1260
1610 IF N(R)=-1 THEN PRINT"I ALREADY HAVE IT.":GOTO 1260
1620 IF N>=5 THEN PRINT"I CAN'T CARRY ANYMORE.":GOTO 1260
1630 PRINT"O.K.":N(R)=-1
1640 IF V1$="PAI" AND PA=0 THEN PRINT"SOMETHING FELL FROM THE FRAME!":N(31)=LO:PA=1
1650 IF V1$="TEL" THEN TE=0
1660 GOTO 1260
1670 FOR R=1 TO 46:IF V1$=N$(R) AND N(R)=-1 THEN 1690 ELSE NEXT
1680 PRINT"I DON'T SEEM TO BE CARRYING IT.":GOTO 1260
1690 IF R=30 THEN PRINT"I DROPPED THE CUP BUT IT BROKE INTO SMALL PEICES.":PRINT"THE COFFEE SOAKED INTO THE GROUND.":N(30)=0:DR=0:GOTO 1260
1700 IF R=45 THEN GL=0
1710 IF R=31 AND N(30)=-1 THEN PRINT"O.K. I DROPPED IT.":PRINT"BUT IT FELL IN THE COFFEE!":N(31)=0:DR=1:GOTO 1260
1720 PRINT"O.K. I DROPPED IT.":N(R)=LO:GOTO 1260
1730 IF V1$="BUT" AND LO=3 AND DO=0 THEN PRINT"THE DOORS OPEN WITH A WHOOSH!":DO=1:GOTO 1260
1740 IF N(46)=-1 AND V1$="BUT" THEN PRINT"I PUSH THE BUTTON ON THE BOX AND":GOTO 1820
1750 GOSUB 1070
1760 IF Z9=2 THEN 1260
1770 IF R=17 AND GL<>1 THEN PRINT"THERE'S ELECTRICITY COURSING THRU THE SQUARE!":PRINT"I'M BEING ELECTROCUTED!":GOTO 3380
1780 IF R=35 AND BU=0 THEN PRINT"THE BUTTON ON THE WALL GOES IN .....":PRINT"CLICK! SOMETHING SEEMS DIFFFERENT NOW.":BU=1:GOTO 1260
1790 IF R=47 AND FL<>1 THEN LO(9,1)=3:FL=1:GOTO 1840
1800 IF R=48 AND FL<>2 THEN LO(9,1)=8:FL=2:GOTO 1840
1810 IF R=49 AND FL<>3 THEN LO(9,1)=10:FL=3:GOTO 1840
1820 IF N(46)=-1 AND (LO=6 OR LO=29)THEN PRINT"THERE IS A BLINDING FLASH....":FORR=1TO3000:NEXT:LO=1:FL=1:LO(9,1)=3:GOTO 1160
1830 PRINT"NOTHING HAPPENS.":GOTO 1260
1840 PRINT"THE DOORS CLOSE AND I FEEL AS IF THE ROOM IS MOVING.":PRINT"SUDDENLY THE DOORS OPEN AGAIN.":FOR R=1 TO 5000:NEXT:GOTO 1160
1850 GOSUB 1070:IF Z9=2 THEN 1260
1860 IF R=18 AND GL<>1 THEN PRINT"THE LEVER HAS ELECTRICITY COURSING THRU IT!":PRINT"I'M BEING ELECTROCUTED!":GOTO 3380
1870 IF R=18 AND EL=0 THEN PRINT"THE LEVER GOES ALL THE WAY UP AND CLICKS.":PRINT"SOMETHING SEEMS DIFFERENT NOW.":EL=1:GOTO 1260
1880 PRINT"NOTHING HAPPENS.":GOTO 1260
1890 REM
1900 IF V1$="DRA" AND LO=5 THEN PRINT"IT LOOKS FRAGILE.":GOTO 1260
1910 GOSUB 1070:IF Z9=2 THEN 1260
1920 IF R=1 AND BA<>1 THEN PRINT"THERE'S NO POWER FOR IT.":GOTO 1260
1930 IF R=1 AND TE<>1 THEN PRINT"THERE'S NO T.V. TO WATCH ON.":GOTO 1260
1940 IF R=6 THEN PRINT"IT LOOKS HEAVY.":GOTO 1260
1950 IF R=7 THEN PRINT"IT'S LOCKED.":GOTO 1260
1960 IF R=13 THEN PRINT"IT'S A VERY STRONG BAG.":GOTO 1260
1970 IF R=19 THEN PRINT"I CAN SEE A LOCKED DRAWER IN IT.":GOTO 1260
1980 IF R=22 OR R=27 THEN PRINT"THERE'S WRITING ON IT.":GOTO 1260
1990 IF R=34 AND DO=1 THEN PRINT"THE DOORS ARE OPEN.":GOTO 1260
2000 IF R=24 THEN PRINT"I CAN SEE A GLEAMING STONE IN IT.":GOTO 1260
2010 IF R=9 THEN PRINT"THERE IS A SMALL SLIT NEAR THE DOOR.":GOTO 1260
2020 IF R=34 THEN PRINT"THERE'S A BUTTON NEAR THE DOORS.":GOTO 1260
2030 IF R=41 AND BU=1 THEN PRINT"THE SCREEN IS DARK.":GOTO 1260
2040 IF R=41 THEN PRINT"I SEE A METAL PIT 1000'S OF FEET DEEP ON ONE MONITOR.":PRINT"ON THE OTHER SIDE OF THE PIT,I SEE A LARGE HOOK.":GOTO 1260
2050 IF R=43 AND BU=1 THEN PRINT"THE SCREEN IS DARK.":GOTO 1260
2060 IF R=43 THEN PRINT"I SEE A ROOM WITH A CASE ON A PEDESTAL IN IT.":GOTO 1260
2070 IF R=44 THEN PRINT"I SEE A PICTURE OF A GRINNING JACKAL.":GOTO 1260
2080 PRINT"I SEE NOTHING OF INTEREST.":GOTO 1260
2090 GOSUB 1070:IF Z9=2 THEN 1260
2100 IF R<>3 AND R<>2 AND R<>4 AND R<>28 THEN PRINT"I CAN'T INSERT THAT!":GOTO 1260
2110 INPUT"TELL ME, IN ONE WORD, INTO WHAT";A3$:A3$=LEFT$(A3$,3)
2120 R1=R:V1$=A3$:GOSUB 1070:IF Z9=2 THEN 1260
2130 IF R1=3 AND R=1 THEN PRINT"O.K.":BA=1:N(3)=0:BA=1:GOTO 1260
2140 IF R1=4 AND R=50 AND DG<=0 THEN PRINT"THE GUARD WON'T LET ME!":GOTO 1260
2150 IF R1=2 AND R=1 THEN PRINT"O.K. THE TAPE IS IN THE RECORDER.":N(2)=0:TA=1:GOTO 1260
2160 IF R1=4 AND R=50 THEN PRINT"POP! A SECTION OF THE WALL OPENS.....":PRINT"REVEALING SOMETHING VERY INTERESTING.":N(4)=0:N(5)=LO:GOTO 1260
2170 IF R1=28 AND R=29 THEN PRINT"POP! A CUP OF COFFEE COMES OUT OF THE MACHINE.":N(28)=0:N(30)=LO:GOTO 1260
2180 PRINT"NOTHING HAPPENED.":GOTO 1260
2190 REM
2200 IF V1$="DRA" AND LO=5 AND N(23)=0 THEN PRINT"IT's STUCK.":GOTO 1260
2210 GOSUB 1070:IF Z9=2 THEN 1260
2220 IF R=7 OR R=9 OR R=13 OR R=15 OR R=23 OR R=32 OR R=5 THEN 2240
2230 PRINT"I CAN'T OPEN THAT!":GOTO 1260
2240 IF R=7 AND N(16)=-1 THEN PRINT"O.K. I OPENED THE DOOR.":N(7)=0:N(8)=4:GOTO 1260
2250 IF R=9 THEN PRINT"I CAN'T. IT DOESN'T WORK.":GOTO 1260
2260 IF R=13 AND N(16)=-1 THEN PRINT"O.K. THE CLOSET IS OPENED.":N(13)=0:N(14)=14:GOTO 1260
2270 IF R=15 THEN PRINT"I CAN'T. IT'S TOO STRONG.":GOTO 1260
2280 IF R=23 THEN PRINT"IT'S STUCK.":GOTO 1260
2290 IF R=32 AND N(28)=0 AND N(4)=0 AND SC=1 THEN PRINT "I OPEN THE SCULPTURE.":PRINT"SOMETHING FALLS OUT.":N(28)=LO:N(4)=LO:GOTO 1260
2300 IF R<>5 THEN 2340
2310 INPUT"WHAT'S THE COMBINATION";C$
2320 IF C$=CO$ THEN PRINT"THE DOOR IS SLOWLY OPENING.":N(5)=0:N(9)=0:N(10)=10:GOTO 1260
2330 PRINT"YOU MUST HAVE THE WRONG COMBINATION OR YOU ARE NOT":PRINT"SAYING IT RIGHT.":GOTO 1260
2340 PRINT"I CAN'T DO THAT......YET!":GOTO 1260
2350 IF V1$="GLO" AND N(45)=-1 THEN PRINT"O.K. I'M NOW WEARING THE GLOVES.":GL=1:GOTO 1260
2360 PRINT"I CAN'T WEAR THAT!":GOTO 1260
2370 IF V1$<>"SIG" AND V1$<>"NOT" THEN PRINT"I CAN'T READ THAT.":GOTO 1260
2380 GOSUB 1070:IF Z9=2 THEN 1260
2390 IF R=22 THEN PRINT"IT SAYS:":PRINT NA$;",":PRINT" WE HAVE DISCOVERED ONE OF CHAOSES SECRET WORDS.":PRINT"IT IS: BOND-007- .TO BE USED IN A -TASTEFUL- SITUATION.":GOTO 1260
2400 IF R=27 THEN PRINT"IT SAYS: WATCH OUT! DANGEROUS!":GOTO 1260
2410 IF V1$<>"REC" THEN PRINT"I CAN'T START THAT.":GOTO 1260
2420 GOSUB 1070:IF Z9=2 THEN 1260
2430 IF BA<>1 OR TE<>1 OR TA<>1 THEN 2490
2440 PRINT"THE RECORDER STARTS UP AND PRESENTS A SHORT MESSAGE:"
2450 PRINTNA$;","
2460 PRINT"WE HAVE UNCOVERED A NUMBER THAT MAY HELP YOU."
2470 PRINT"THAT NUMBER IS:";CO$;". PLEASE WATCH OUT FOR HIDDEN TRAPS."
2480 PRINT"ALSO, THERE IS SOMETHING IN THE SCULPTURE.":SC=1:GOTO 1260
2490 PRINT"NOTHING HAPPENED.":GOTO 1260
2500 IF V1$<>"DRA" THEN PRINT"I'M TRYING TO BREAK IT, BUT I CAN'T.":GOTO 1260
2510 IF N(6)<>-1 THEN PRINT"I CAN'T DO THAT YET.":GOTO 1260
2520 IF LO=5 THEN PRINT"IT'S HARD....BUT I GOT IT. TWO THINGS FELL OUT.":N(3)=LO:N(22)=LO:N(23)=LO:GOTO 1260
2530 PRINT"NOTHING HAPPENS.":GOTO 1260
2540 GOSUB 1070:IF Z9=2 THEN 1260
2550 IF R<>15 AND R<>24 THEN PRINT"I'M TRYING. IT DOESN'T WORK.":GOTO 1260
2560 IF N(25)<>-1 THEN PRINT"I CAN'T DO THAT YET.":GOTO 1260
2570 IF R=15 THEN PRINT"RIP! THE BAG GOES TO PIECES, AND SOMETHING FALLS OUT!":N(15)=0:N(2)=LO:GOTO 1260
2580 IF R=24 THEN PRINT"I CUT THE CASE AND REACH IN TO PULL SOMETHING OUT.":N(26)=-1:GOTO 1260
2590 IF V1$<>"ROP" THEN PRINT"I CAN'T THROW THAT.":GOTO 1260
2600 IF N(37)<>-1 THEN PRINT"I CAN'T DO THAT YET.":GOTO 1260
2610 INPUT"TELL ME,IN ONE WORD,AT WHAT";A3$:A3$=LEFT$(A3$,3)
2620 IF A3$<>"HOO" THEN PRINT"O.K. I THREW IT.":N(37)=LO:GOTO 1260
2630 IF LO<>20 THEN PRINT"I CAN'T DO THAT YET.":GOTO 1260
2640 PRINT"I THREW THE ROPE AND IT SNAGGED ON THE HOOK.":RO=1:N(37)=LO:GOTO 1260
2650 IF V1$<>"TEL" THEN PRINT"I CAN'T CONNECT THAT.":GOTO 1260
2660 IF N(40)<>LO THEN PRINT"I DON'T SEE THE TELEVISION HERE.":GOTO 1260
2670 IF TE=1 THEN PRINT"I DID THAT ALREADY.":GOTO 1260
2680 IF LO<>2 THEN PRINT"I CAN'T DO THAT....YET!":GOTO 1260
2690 PRINT"O.K. THE T.V. IS CONNECTED.":TE=1:GOTO 1260
2700 PRINT"WHAT? YOU WOULD LEAVE ME HERE TO DIE ALONE?"
2710 PRINT"JUST FOR THAT, I'M GOING TO DESTROY THE GAME.":PRINT:PRINT:PRINT:PRINT"BOOOOOOOOOOOOM!":FOR R=1 TO 5000:NEXT:GOTO 3420
2720 IF LO=14 THEN PRINT"WHOOPS! A TRAP DOOR OPENED UNDERNEATH ME AND":PRINT"I FIND MYSELF FALLING.":FOR R=1 TO 4000:NEXT:LO=17:GOTO 1160
2730 PRINT"NOTHING HAPPENED.":GOTO 1260
2740 Z8=0:PRINT"WE ARE PRESENTLY CARRYING:":FOR R=1 TO 46
2750 IF N(R)<>-1 THEN 2780
2760 PRINT N1$(R);:IF R=45 AND GL=1 THEN PRINT". WHICH I'M WEARING."ELSE PRINT" "
2770 Z8=1
2780 NEXT
2790 IF Z8=0 THEN PRINT"NOTHING"
2800 GOTO 1260
2810 IF LO=3 AND N(39)=-1 THEN PRINT"THE DOOR MAN LOOKS AT MY BADGE AND THEN THROWS ME OUT.":FOR R=1 TO 5000:NEXT:LO=1:GOTO 1160
2820 IF LO=10 AND N(42)<>-1 THEN PRINT"THE GUARD LOOKS AT ME SUSPICIOUSLY, THEN THROWS ME BACK.":FOR R=1 TO 4000:NEXT:LO=9:GOTO 1160
2830 IF LO=6 AND BU<>1 THEN PRINT"SIRENS GO OFF ALL AROUND ME!":PRINT"GUARDS RUN IN AND SHOOT ME TO DEATH!":GOTO 3380
2840 IF LO=11 AND EL<>1 THEN PRINT"THE FLOOR IS WIRED WITH ELECDRICITY!":PRINT"I'M BEING ELECTROCUTED!":GOTO 3380
2850 IF LO=10 AND N(30)=-1 AND DR=1 THEN PRINT"THE GUARD TAKES MY COFFEE":PRINT"AND FALLS TO SLEEP RIGHT AWAY.":DG=5+INT(10*RND(10)):N(11)=0:N(12)=10:DR=0:N(30)=0:GOTO 1290
2860 IF DG=0 THEN PRINT"I HEAR A NOISE LIKE SOMEONE IS YAWNING.":N(11)=10:N(12)=0:GU=-2:DG=-1:GOTO 1290
2870 IF LO=1 AND N(26)=-1 THEN PRINT"HURRAY! YOU'VE RECOVERED THE RUBY!":PRINT"YOU WIN!":GOTO 3400
2880 IF T>375 THEN PRINT"I THINK THEY ARE ON TO ME....I HEAR NOISES."
2890 IF T=400 THEN PRINT"OH NO! THEY CAUGHT UP TO ME! HELP! THEY'RE PULLING OUT GUNS!":GOTO 3380
2900 IF T=1 THEN PRINT"WRITING ON THE WALL SAYS:":PRINT"IF YOU WANT INSTRUCTIONS TYPE:ORDERS PLEASE"
2910 IF LO=6 AND LO(6,2)<>0 THEN PRINT"A SECRET DOOR SLAMS DOWN BEHIND ME!":LO(6,2)=0:GOTO 1290
2920 IF LO=10 AND GU=-2 THEN PRINT"THE GUARD DRAWS HIS GUN AND SHOOTS ME!":GOTO 3380
2930 GOTO 1290
2940 IF A$="N" THEN A$="GO NORTH":RETURN
2950 IF A$="S" THEN A$="GO SOUTH":RETURN
2960 IF A$="E" THEN A$="GO EAST":RETURN
2970 IF A$="W" THEN A$="GO WEST":RETURN
2980 IF A$="I" THEN A$="INV":RETURN
2990 RETURN
3000 IF V$="WAL" OR V$="RUN" THEN V$="GO ":RETURN
3010 IF V$="TAK" OR V$="CAR" THEN V$="GET":RETURN
3020 IF V$="LEA" THEN V$="DRO":RETURN
3030 IF V$="PRE" THEN V$="PUS":RETURN
3040 IF V$="EXA" THEN V$="LOO":RETURN
3050 IF V$="PUT" THEN V$="INS":RETURN
3060 IF V$="UNL" THEN V$="OPE":RETURN
3070 IF V$="PLA" THEN V$="STA":RETURN
3080 IF V$="SMA" THEN V$="BRE":RETURN
3090 IF V$="ATT" THEN V$="CON":RETURN
3100 IF V$="LIS" THEN V$="INV":RETURN
3110 RETURN
3120 DATA A VIDEO CASSETTE RECORDER,REC,2,A VIDEO TAPE,TAP,0,A LARGE BATTERY,BAT,0,A BLANK CREDIT CARD,CAR,0,AN ELECTRONIC LOCK,LOC,0,AN ELABORATE PAPER WEIGHT,WEI,5,A LOCKED WOODEN DOOR,DOO,4,AN OPEN WOODEN DOOR,DOO,0,A SOLID LOOKING DOOR,DOO,10
3130 DATA AN OPEN DOOR,DOO,0,AN ALERT SECURITY GUARD,GUA,10,A SLEEPING SECURITY GUARD,GUA,0,A LOCKED MAINTENANCE CLOSET,CLO,14,A MAINTENANCE CLOSET,CLO,0,A PLASTIC BAG,BAG,13,AN OLDE FASHIONED KEY,KEY,9,A SMALL METAL SQUARE ON THE WALL,SQU,16
3140 DATA A LEVER ON THE SQUARE,LEV,16,AN OLD MAHOGANY DESK,DES,5,A BROOM,BRO,13,A DUSTPAN,DUS,13,A SPIRAL NOTEBOOK,NOT,0,A MAHOGANY DRAWER,DRA,0,A GLASS CASE ON A PEDESTAL,CAS,6,A RAZOR BLADE,BLA,27,A VERY LARGE RUBY,RUB,0,A SIGN ON THE SQUARE
3150 DATA SIG,16,A QUARTER,QUA,0,A COFFEE MACHINE,MAC,8,A CUP OF STEAMING HOT COFFEE,CUP,0,A SMALL CAPSULE,CAP,0,A LARGE SCULPTURE,SCU,3,A TALL OFFICE BUILDING,BUI,1,A PAIR OF SLIDING DOORS,DOO,3,A LARGE BUTTON ON THE WALL
3160 DATA BUT,29,A PANEL OF BUTTONS NUMBERED ONE THRU THREE,PAN,9,A STRONG NYLON ROPE,ROP,17,A LARGE HOOK WITH A ROPE HANGING FROM IT,HOO,21,A C.I.A. IDENTIFICATION BADGE,BAD,-1,A PORTABLE TELEVISION,TEL,7
3170 DATA A BANK OF MONITORS,MON,7,A CHAOS I.D. CARD
3180 DATA CAR,30,A BANK OF MONITORS,MON,19,A SMALL PAINTING,PAI,23,A PAIR OF RUBBER GLOVES,GLO,13,A BOX WITH A BUTTON ON IT,BOX,24,ONE,ONE,9,TWO,TWO,9,THREE,THR,9,SLIT,SLI,10,ON A BUSY STREET,0,0,0,0,IN A VISITOR'S ROOM,0,0,3,0
3190 DATA IN THE LOBBY OF THE BUILDING,1,0,4,2,IN A DINGY ANTE ROOM,0,0,0,3
3200 DATA IN THE COMPANY PRESIDENT'S OFFICE,0,0,0,4,IN A SMALL SOUND PROOFED CUBICLE,0,12,0,0,IN A SECURITY OFFICE,0,0,8,0,IN A SMALL HALLWAY,0,14,9,7,IN A SMALL ROOM,3,0,0,0,IN A SHORT CORRIDOR,0,15,0,9,IN A HALLWAY MADE OF METAL,0,0,12,10
3210 DATA IN A SMALL PLAIN ROOM,6,0,0,11
3220 DATA IN A MAINTENANCE CLOSET,0,0,14,0,IN A CAFETERIA,8,0,0,0,IN A SIDE CORRIDOR,10,0,16,0,IN A POWER GENERATOR ROOM,0,0,0,15,IN A SUB-BASEMENT BELOW THE CHUTE,0,0,18,0,IN THE ENTRANCE TO THE SECRET COMPLEX,0,20,19,17
3230 DATA IN A SECRET MONITORING ROOM,0,0,0,18,ON A LEDGE IN FRONT OF A METAL PIT 1000'S OF FEET DEEP,18,0,0,0,ON THE OTHER SIDE OF THE PIT,0,0,22,0,IN A LONG CORRIDOR,0,25,23,21,IN A LARGE ROOM,0,26,0,22,IN A SECRET LABORATORY,0,0,25,0
3240 DATA IN A NARROW CROSS CORRIDOR,22,0,0,24,IN A CROSS EXAMINATION ROOM,23,28,0,0,IN A SMALL BATHROOM,0,0,28,0,IN THE OFFICE OF THE CHIEF OF CHAOS,26,30,0,27,IN THE CHAOS CONTROL ROOM,0,0,30,0,NEAR THE END OF THE COMPLEX,28,0,0,29
3250 DATA "GO ",GET,DRO,PUS,PUL,LOO,INS,OPE,WEA,REA,STA,BRE,CUT,THR,CON,QUI,BON,INV
3260 PRINT"YOUR MISSION,";NA$;",IS TO RECOVER A RUBY THAT IS BEING"
3270 PRINT"USED IN TOP SECRET GOVERNMENT PROJECTS AS A PART IN A"
3280 PRINT"LASER PROJECTOR."
3290 PRINT" YOU WILL HAVE A PARTNER WHO IS NOT TOO BRIGHT AND NEEDS"
3300 PRINT"YOU TO TELL HIM WHAT TO DO. USE TWO WORD COMMANDS LIKE:"
3310 PRINT:PRINT" GET NOTEBOOK GO WEST LOOK DOOR"
3320 PRINT:PRINT"SOME COMMANDS USE ONLY ONE WORD. EXAMPLE: INVENTORY"
3330 PRINT" IF YOU WANT TO SEE CHANGES IN YOUR SURROUNDINGS TYPE: LOOK"
3340 PRINT"THE RUBY HAS BEEN CAPTURED BY A SECRET SPY RING KNOWN AS"
3350 PRINT"CHAOS. WE SUSPECT THEY ARE UNDER COVER SOMEWHERE IN THIS"
3360 PRINT"NEIGHBORHOOD. GOOD LUCK!"
3370 GOTO 1290
3380 FOR R=1 TO 5000:NEXT:PRINT"I'M DEAD!"
3390 PRINT"YOU DIDN'T WIN."
3400 INPUT"WOULD YOU LIKE TO TRY AGAIN (Y/N)";Z$
3410 IF Z$="Y" THEN RUN
3420 SYSTEM
10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│ │░"
70 PRINT"░│ 5020-A.BAS │░"
80 PRINT"░│ CIVIL WAR │░"
90 PRINT"░│ │░"
100 PRINT"░│ │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
130 PRINT"░│ █ █ █ █ █ █ │░"
140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
150 PRINT"░│ █ █ █ █ █ │░"
160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
170 PRINT"░│ │░"
180 PRINT"░│ International PC Owners │░"
190 PRINT"░│ │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│ │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT " PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 CLS:KEY OFF
1010 LET L=0:LET W=0:LET R1=0:LET P1=0
1020 LET Q1=0:LET M3=0:LET M4=0
1030 LET P2=0:LET T1=0:LET T2=0
1040 REM REMARKABLE PROGRAM BY L. CRAM , L. GOODIE , AND D. HIBBARD
1050 PRINT TAB(30)"CIVIL WAR" :PRINT
1060 PRINT "DO YOU WANT DESCRIPTIONS (0=YES, 1=NO)";
1070 INPUT Z
1080 FOR U=1 TO 6
1090 PRINT
1100 NEXT U
1110 IF Z=1 THEN 1350
1120 PRINT "THIS IS A CIVIL WAR SIMULATION."
1130 PRINT "TO PLAY, TYPE A RESPONSE WHEN THE COMPUTER ASKS."
1140 PRINT "REMEMBER THAT ALL FACTORS ARE INTERRELATED AND THAT YOUR"
1150 PRINT "RESPONSES COULD CHANGE HISTORY. FACTS AND FIGURES USED ARE"
1160 PRINT "BASED ON THE ACTUAL OCCURENCE. MOST BATTLES TEND TO RESULT"
1170 PRINT "AS THEY DID IN THE CIVIL WAR, BUT IT ALL DEPENDS ON YOU!!"
1180 PRINT
1190 PRINT "THE OBJECT OF THE GAME IS TO WIN AS MANY BATTLES AS POSSIBLE"
1200 PRINT
1210 PRINT "YOUR CHOICES FOR DEFENSIVE STRATEGY ARE:"
1220 PRINT " (1) ARTILLERY ATTACK"
1230 PRINT " (2) FORTIFICATION AGAINST FRONTAL ATTACK"
1240 PRINT " (3) FORTIFICATION AGAINST FLANKING MANUEVERS"
1250 PRINT " (4) FALLING BACK"
1260 PRINT "YOUR CHOICES FOR OFFENSIVE STRATEGY ARE:"
1270 PRINT " (1) ARTILLERY ATTACK"
1280 PRINT " (2) FRONTAL ATTACK"
1290 PRINT " (3) FLANKING MANUEVERS"
1300 PRINT " (4) ENCIRCLEMENT"
1310 PRINT "YOU MAY SURRENDER BY TYPING A '5' FOR YOUR STRATEGY."
1320 PRINT "YOU ARE THE CONFEDERACY. GOOD LUCK!"
1330 PRINT:PRINT "Press any key to continue"
1340 A$=INKEY$:IF A$="" THEN 1340
1350 READ M1,M2,C1,C2,M,A,U
1360 LET I1=10+(L-W)*2
1370 LET I2=10+(W-L)*2
1380 LET D1=100*INT((M1*(100-I1)/2000)*(1+(R1-Q1)/(R1+1))+0.5)
1390 LET D2=100*INT(M2*(100-I2)/2000+0.5)
1400 LET F1=5*M1/6
1410 LET A1=Z
1420 FOR U=1 TO 4
1430 PRINT
1440 NEXT U
1450 PRINT "THIS IS THE BATTLE OF ";
1460 GOSUB 2460
1470 PRINT " ","CONFEDERACY"," UNION"
1480 PRINT "MEN"," ";INT(M1*(1+(P1-T1)/(M3+1)))," ";
1490 PRINT INT(M2*(1+(P2-T2)/(M4+1)))
1500 PRINT "MONEY","$";D1,"$";D2
1510 PRINT "INFLATION"," ";I1+15;"%"," ";I2;"%"
1520 PRINT
1530 PRINT "HOW MUCH DO YOU WISH TO SPEND FOR FOOD";
1540 INPUT F
1550 IF F<0 THEN 2410
1560 PRINT "HOW MUCH DO YOU WISH TO SPEND FOR SALARIES";
1570 INPUT S
1580 IF S<0 THEN 2410
1590 PRINT "HOW MUCH DO YOU WISH TO SPEND FOR AMMUNITION";
1600 INPUT B
1610 IF B<0 THEN 2410
1620 PRINT
1630 IF F+S+B<=D1 THEN 1660
1640 PRINT "THINK AGAIN! YOU HAVE ONLY $" D1
1650 GOTO 1520
1660 LET O=((2*F^2+S^2)/F1^2+1)
1670 IF O<10 THEN 1700
1680 PRINT "MORALE IS HIGH"
1690 GOTO 1740
1700 IF O<5 THEN 1730
1710 PRINT "MORALE IS FAIR"
1720 GOTO 1740
1730 PRINT "MORALE IS POOR"
1740 IF M<>3 THEN 1770
1750 PRINT "YOU ARE ON THE OFFENSIVE"
1760 GOTO 1810
1770 IF M<>1 THEN 1800
1780 PRINT "YOU ARE ON THE DEFENSIVE"
1790 GOTO 1810
1800 PRINT "BOTH SIDES ARE ON THE OFFENSIVE"
1810 PRINT
1820 PRINT "YOUR STRATEGY";
1830 INPUT Y
1840 IF Y=5 THEN 3310
1850 IF ABS(Y-3)<3 THEN 1880
1860 PRINT "YOU JERK! USE THE OTHER SET OF STRATEGIES!!"
1870 GOTO 1810
1880 PRINT
1890 PRINT " ","CONFEDERACY","UNION"
1900 LET C5=(2*C1/5)*(1+1/(2*(ABS(INT(4*RND(1)+1)-Y)+1)))
1910 LET C5=INT(C5*(1+1/O)*(1.28+F1/(B+1))+0.5)
1920 IF C5+100/O<M1*(1+(P1-T1)/(M3+1)) THEN 1970
1930 LET C5=INT(13*M1/20*(1+(P1-T1)/(M3+1)))
1940 LET E=7*C5/13
1950 LET U=1
1960 GOTO 1980
1970 LET E=100/O
1980 PRINT "CASUALTIES",C5,INT(17*C2*C1/(C5*20)+0.5)
1990 PRINT "DESERTIONS",INT(E),INT(5*O)
2000 PRINT
2010 IF C5-C1>=0 THEN 2040
2020 PRINT "YOUR CASUALTIES WERE"INT(100*(C1-C5)/C1+0.5);"% LESS THAN"
2030 GOTO 2050
2040 PRINT "YOUR CASUALTIES WERE"INT(100*(C5-C1)/C1+0.5);"% MORE THAN"
2050 PRINT "THE ACTUAL CASUALITIES AT ";
2060 LET A1=1
2070 GOSUB 2460
2080 IF U=1 THEN 2100
2090 IF C5+E<17*C2*C1/(C5*20)+5*O THEN 2130
2100 PRINT "YOU LOSE ";
2110 LET L=L+1
2120 GOTO 2150
2130 PRINT "YOU WIN ";
2140 LET W=W+1
2150 GOSUB 2460
2160 IF W=8 THEN 3330
2170 LET T1=T1+C5+E
2180 LET T2=T2+17*C2*C1/(C5*20)+5*O
2190 LET P1=P1+C1
2200 LET P2=P2+C2
2210 LET Q1=Q1+(F+S+B)
2220 LET R1=R1+M1*(100-I1)/20
2230 LET M3=M3+M1
2240 LET M4=M4+M2
2250 IF A=14 THEN 3340
2260 GOTO 1350
2270 DATA 18000,18500,1967,2708,1,1,0
2280 DATA 40000,44894,10699,13047,3,2,0
2290 DATA 95000,115000,20614,15849,3,3,0
2300 DATA 54000,63000,10000,14000,2,4,0
2310 DATA 40000,50000,10000,12000,3,5,0
2320 DATA 75000,120000,5377,12653,1,6,0
2330 DATA 38000,45000,11000,12000,1,7,0
2340 DATA 32000,90000,13000,17197,2,8,0
2350 DATA 50000,70000,12000,19000,1,9,0
2360 DATA 72500,85000,20000,23000,3,10,0
2370 DATA 66000,60000,18000,16000,2,11,0
2380 DATA 37000,60000,6700,5800,2,12,0
2390 DATA 62000,110000,17723,18000,2,13,0
2400 DATA 65000,100000,8500,3700,1,14,0
2410 PRINT "GO TO JAIL."
2420 PRINT "GO DIRECTLY TO JAIL."
2430 PRINT "DO NOT PASS GO."
2440 PRINT "DO NOT COLLECT $200"
2450 GOTO 1420
2460 IF A<>1 THEN 2530
2470 PRINT "BULL RUN"
2480 IF A1=1 THEN 3290
2490 PRINT"JULY 21,1861 GEN. BEAUREGARD COMMANDING THE SOUTH MET THE"
2500 PRINT"UNION FORCES WITH GEN MCDOWELL IN A PREMATURE BATTLE AT BULL"
2510 PRINT"RUN. GEN. JACKSON HELPED PUSH BACK THE UNION ATTACK."
2520 GOTO 3290
2530 IF A<>2 THEN 2590
2540 PRINT "SHILOH"
2550 IF A1=1 THEN 3290
2560 PRINT"APRIL 6-7,1862 THE CONFEDERATE SURPRISE ATTACK AT SHILOH"
2570 PRINT"FAILED DUE TO POOR ORGANIZATION."
2580 GOTO 3290
2590 IF A<>3 THEN 2660
2600 PRINT "SEVEN DAYS"
2610 IF A1=1 THEN 3290
2620 PRINT"JUNE 25-JULY 1,1862 GENERAL LEE (CSA) UPHELD THE OFFENSIVE"
2630 PRINT"THROUGHOUT THE BATTLE AND FORCED GEN. MCCLELLAN AND THE UNION"
2640 PRINT"FORCES AWAY FROM RICHMOND."
2650 GOTO 3290
2660 IF A<>4 THEN 2720
2670 PRINT "THE SECOND BULL RUN"
2680 IF A1=1 THEN 3290
2690 PRINT"AUG 29-30,1862 THE COMBINED CONFEDERATE FORCES UNDER LEE AND"
2700 PRINT"JACKSON DROVE THE UNION FORCES BACK INTO WASHINGTON."
2710 GOTO 3290
2720 IF A<>5 THEN 2780
2730 PRINT "ANTIETAM"
2740 IF A1=1 THEN 3290
2750 PRINT"SEPT 17,1862 THE SOUTH FAILED TO INCORPORATE MARYLAND INTO"
2760 PRINT"THE CONFEDERACY."
2770 GOTO 3290
2780 IF A<>6 THEN 2840
2790 PRINT "FREDERICKSBURG"
2800 IF A1=1 THEN 3290
2810 PRINT"DEC 13,1862 THE CONFEDERACY UNDER LEE SUCESSFULLY REPULSED"
2820 PRINT"AN ATTACK BY THE UNION UNDER GEN. BURNSIDE."
2830 GOTO 3290
2840 IF A <>7 THEN 2890
2850 PRINT "MURFREESBORO"
2860 IF A1=1 THEN 3290
2870 PRINT"DEC 31,1862 THE SOUTH UNDER GEN. BRAGG WON A CLOSE BATTLE"
2880 GOTO 3290
2890 IF A<>8 THEN 2950
2900 PRINT "CHANCELLORSVILLE"
2910 IF A1=1 THEN 3290
2920 PRINT"MAY 1-6,1863 THE SOUTH HAD A COSTLY VICTORY AND LOST ONE"
2930 PRINT"OF THEIR OUTSTANDING GENERALS, 'STONEWALL' JACKSON."
2940 GOTO 3290
2950 IF A<>9 THEN 3010
2960 PRINT "VICKSBURG"
2970 IF A1=1 THEN 3290
2980 PRINT"JULY 4,1863 VICKSBURG WAS A COSTLY DEFEAT FOR THE SOUTH"
2990 PRINT"BECAUSE IT GAVE THE UNION ACCESS TO THE MISSISSIPPI."
3000 GOTO 3290
3010 IF A<>10 THEN 3070
3020 PRINT "GETTYSBURG"
3030 IF A1=1 THEN 3290
3040 PRINT"JUNE 30,1863 A SOUTHERN MISTAKE BY GEN. LEE AT GETTYSBURG"
3050 PRINT"COST THEM ONE OF THE MOST CRUCIAL BATTLES OF THR WAR."
3060 GOTO 3290
3070 IF A<>11 THEN 3130
3080 PRINT "CHICKAMAUGA"
3090 IF A1=1 THEN 3290
3100 PRINT"NOV 25,1863 AFTER THE SOUTH HAD SIEGED GEN. ROSENCRANS'"
3110 PRINT"ARMY FOR THREE MONTHS, GEN. GRANT BROKE THE SIEGE."
3120 GOTO 3290
3130 IF A<>12 THEN 3190
3140 PRINT "CHATTANOOGA"
3150 IF A1=1 THEN 3290
3160 PRINT"SEPT 15,1863 CONFUSION IN A FOREST NEAR CHICKAMAUGA LED"
3170 PRINT"TO A COSTLY SOUTHERN VICTORY."
3180 GOTO 3290
3190 IF A<>13 THEN 3250
3200 PRINT "SPOTSYLVANIA"
3210 IF A1=1 THEN 3290
3220 PRINT"MAY 5,1864 GRANT'S PLAN TO KEEP LEE ISOLATED BEGAN TO FAIL"
3230 PRINT"HERE, AND CONTINUED AT COLD HARBOR AND PETERSBURG."
3240 GOTO 3290
3250 PRINT "ATLANTA"
3260 IF A1=1 THEN 3290
3270 PRINT"AUGUST, 1864 SHERMAN AND THREE VETERAN ARMIES CONVERGED ON"
3280 PRINT"ATLANTA AND DEALT THE DEATH BLOW TO THE CONFEDERACY."
3290 PRINT
3300 RETURN
3310 PRINT "THE CONFEDERACY HAS SURRENDERED"
3320 GOTO 3340
3330 PRINT "THE UNION HAS SURRENDERED"
3340 PRINT
3350 PRINT "YOU HAVE WON" W; "BATTLES AND LOST" L; "BATTLES."
3360 IF Y=5 THEN 3400
3370 IF W<=L THEN 3400
3380 PRINT "THE CONFEDERACY HAS WON THE WAR"
3390 GOTO 3420
3400 PRINT "THE UNION HAS WON THE WAR"
3410 GOTO 3420
3420 FOR I=1 TO 2000:NEXT I
3430 SYSTEM
10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│ │░"
70 PRINT"░│ 2069-A.BAS │░"
80 PRINT"░│ COMBOTS │░"
90 PRINT"░│ │░"
100 PRINT"░│ │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
130 PRINT"░│ █ █ █ █ █ █ │░"
140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
150 PRINT"░│ █ █ █ █ █ │░"
160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
170 PRINT"░│ │░"
180 PRINT"░│ International PC Owners │░"
190 PRINT"░│ │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│ │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT " PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 '
1010 ' ----- COMBOTS GAME PROGRAM -----
1020 '
1030 ' ----- SCREEN & MENU SEQUENCE -----
1040 '
1050 CLEAR: CLOSE
1060 KEY OFF
1070 DEF SEG=64: POKE 23,(PEEK(23) AND -65)+64
1080 SCREEN 1,0,0,0
1090 CLS
1100 DEFINT A-Z
1110 OPTION BASE 1
1120 TARGET.X=0:TARGET.Y=0:TURRET.X=0:TURRET.Y=0:LOS.CHECK=0:TIME$="00:00:00"
1130 LOCATE 13,3,0,7,7: PRINT "Are you using a COLOR monitor? (Y/N)";
1140 KEY.PRESSED$=INKEY$
1150 IF KEY.PRESSED$="Y" OR KEY.PRESSED$="y" THEN COLOR 0,0: BEEP
1160 IF KEY.PRESSED$="N" OR KEY.PRESSED$="n" THEN COLOR 0,1: BEEP
1170 IF KEY.PRESSED$<>"Y" AND KEY.PRESSED$<>"y" AND KEY.PRESSED$<>"N" AND KEY.PRESSED$<>"n" THEN 1140
1180 CLS
1190 LINE(1,0)-(319,188),1,B
1200 LINE(7,7)-(264,184),1,B
1210 LINE(267,7)-(315,184),1,B
1220 PAINT(3,3),1,1
1230 LOCATE 3,37: PRINT "1";
1240 LOCATE 4,37: PRINT "OFF";
1250 LOCATE 5,35: PRINT "S";
1260 LOCATE 6,35: PRINT "T 2";
1270 LOCATE 7,35: PRINT "A OFF";
1280 LOCATE 8,35: PRINT "T";
1290 LOCATE 9,35: PRINT "U 3";
1300 LOCATE 10,35: PRINT "S OFF";
1310 LOCATE 12,35: PRINT "R 4";
1320 LOCATE 13,35: PRINT "E OFF";
1330 LOCATE 14,35: PRINT "P";
1340 LOCATE 15,35: PRINT "O 5";
1350 LOCATE 16,35: PRINT "R OFF";
1360 LOCATE 17,35: PRINT "T";
1370 LOCATE 18,37: PRINT "6";
1380 LOCATE 19,37: PRINT "OFF";
1390 LOCATE 21,35: PRINT "TIME-";
1400 LOCATE 22,35: PRINT "00:00";
1410 LOCATE 3,3: PRINT "Omigosh, they're coming!!";
1420 LOCATE 5,5: PRINT "It's the .....";
1430 PLAY"mbl16t120o4aaaag-8aaaag-8aaaag-8aaaag-8aaaag-8aaaaaaa"
1440 LOCATE 10,9: PRINT "C O M B O T S !";
1450 FOR DELAY=1 TO 1500
1460 NEXT DELAY
1470 LOCATE 22,4: PRINT "Press Space Bar To Continue";
1480 KEY.PRESSED$=INKEY$
1490 IF KEY.PRESSED$<>" " THEN 1480
1500 BEEP
1510 LINE(8,8)-(263,183),0,BF
1520 FOR COUNTER=1 TO 10
1530 KEY(COUNTER) ON
1540 NEXT COUNTER
1550 LOCATE 3,16: PRINT "MENU";
1560 LOCATE 6,3: PRINT "Selection: Press:";
1570 LOCATE 7,3: PRINT STRING$(30,95);
1580 LOCATE 11,4: PRINT "Program a COMBOT Key F1";
1590 LOCATE 15,4: PRINT "Set-up for Play Key F2";
1600 LOCATE 19,4: PRINT "End Game Key F3";
1610 ON KEY(1) GOSUB 1760
1620 ON KEY(2) GOSUB 2900
1630 ON KEY(3) GOSUB 6330
1640 ON KEY(4) GOSUB 0
1650 ON KEY(5) GOSUB 0
1660 ON KEY(6) GOSUB 0
1670 ON KEY(7) GOSUB 0
1680 ON KEY(8) GOSUB 0
1690 ON KEY(9) GOSUB 0
1700 ON KEY(10) GOSUB 0
1710 GOTO 1610
1720 END
1730 '
1740 ' ***** END OF SEQUENCE *****
1750 '
1760 '
1770 ' ----- PROGRAM A COMBOT SEQUENCE -----
1780 '
1790 BEEP
1800 LINE(8,8)-(263,183),0,BF
1810 LOCATE 3,8,0: PRINT "PROGRAMMING A COMBOT";
1820 LOCATE 5,3,0: PRINT "A combot may perform the three";
1830 LOCATE 6,3,0: PRINT "actions below:";
1840 LOCATE 8,3,0: PRINT "FIRE- Fire the laser cannon";
1850 LOCATE 9,9,0: PRINT "once in the direction";
1860 LOCATE 10,9,0: PRINT "of current facing; it";
1870 LOCATE 11,9,0: PRINT "is executed first.";
1880 LOCATE 13,3,0: PRINT "TURN- Turn one-eighth of a";
1890 LOCATE 14,9,0: PRINT "revolution clockwise;";
1900 LOCATE 15,9,0: PRINT "execution is second.";
1910 LOCATE 17,3,0: PRINT "MOVE- Move one space in the";
1920 LOCATE 18,9,0: PRINT "direction of current";
1930 LOCATE 19,9,0: PRINT "facing; execution is";
1940 LOCATE 20,9,0: PRINT "done last of all.";
1950 LOCATE 22,5,0: PRINT "Press Space Bar To Continue";
1960 KEY.PRESSED$=INKEY$
1970 IF KEY.PRESSED$<>" " THEN 1960
1980 BEEP
1990 LINE(8,8)-(263,183),0,BF
2000 LOCATE 3,3,0: PRINT "Each combot's program will be";
2010 LOCATE 4,3,0: PRINT "ten actions in length. These";
2020 LOCATE 5,3,0: PRINT "actions will be performed in";
2030 LOCATE 6,3,0: PRINT "the sequence you enter.";
2040 LOCATE 7,3,0: PRINT STRING$(30,95);
2050 FOR COUNTER=1 TO 10
2060 LOCATE 9,3,0
2070 IF COUNTER<10 THEN PRINT "Enter Action No. "+STR$(COUNTER)+":"; ELSE PRINT "Enter Action No."+STR$(COUNTER)+":";
2080 LOCATE 9,24,1,0,7
2090 KEY.PRESSED$=INKEY$
2100 IF LEN(ACTION$)>4 THEN 2760
2110 IF KEY.PRESSED$="" THEN 2090
2120 IF (ASC(KEY.PRESSED$)>64 AND ASC(KEY.PRESSED$)<91) OR (ASC(KEY.PRESSED$)>96 AND ASC(KEY.PRESSED$)<123) THEN ACTION$=ACTION$+KEY.PRESSED$ ELSE 2160
2130 LOCATE 9,(24+LEN(ACTION$)),1,0,7
2140 PRINT KEY.PRESSED$;
2150 GOTO 2090
2160 IF ASC(KEY.PRESSED$)=8 AND LEN(ACTION$)>0 THEN LOCATE 9,(24+LEN(ACTION$)),1,0,7: PRINT CHR$(32);: LOCATE 9,(24+LEN(ACTION$)),1,0,7: ACTION$=LEFT$(ACTION$,LEN(ACTION$)-1): BEEP: GOTO 2090 ELSE IF ASC(KEY.PRESSED$)=8 THEN BEEP: GOTO 2080
2170 IF ASC(KEY.PRESSED$)<>13 THEN 2090
2180 IF ACTION$<>"FIRE" AND ACTION$<>"TURN" AND ACTION$<>"MOVE" THEN 2760
2190 IF ACTION$="FIRE" THEN PROGRAM$=PROGRAM$+"1" ELSE IF ACTION$="TURN" THEN PROGRAM$=PROGRAM$+"2" ELSE PROGRAM$=PROGRAM$+"3"
2200 LOCATE (10+COUNTER),8,0
2210 IF COUNTER<10 THEN PRINT "ACTION NO. "+RIGHT$(STR$(COUNTER),1)+": "+ACTION$ ELSE PRINT "ACTION NO. "+RIGHT$(STR$(COUNTER),2)+": "+ACTION$;
2220 LOCATE 9,23,0
2230 PRINT STRING$(6,32);
2240 ACTION$=""
2250 NEXT COUNTER
2260 LOCATE 9,2,0
2270 PRINT STRING$(32,32);
2280 LOCATE 9,4,0
2290 PRINT "COMBOT PROGRAM NOW COMPLETED";
2300 BEEP
2310 FOR DELAY=1 TO 1500
2320 NEXT DELAY
2330 LOCATE 9,2,0
2340 PRINT STRING$(32,32);
2350 LINE(9,9)-(262,47),0,BF
2360 LOCATE 3,3,0
2370 PRINT "Your programmed combot needs";
2380 LOCATE 4,3,0
2390 PRINT "a name. Its name may be up";
2400 LOCATE 5,3,0
2410 PRINT "to eight letters or numbers";
2420 LOCATE 6,3,0
2430 PRINT "in length.";
2440 LOCATE 9,3,0
2450 PRINT "Enter combot's name: ";
2460 LOCATE 9,24,1,0,7
2470 KEY.PRESSED$=INKEY$
2480 IF KEY.PRESSED$="" THEN 2470
2490 IF (ASC(KEY.PRESSED$)>47 AND ASC(KEY.PRESSED$)<58) OR (ASC(KEY.PRESSED$)>64 AND ASC(KEY.PRESSED$)<91) OR (ASC(KEY.PRESSED$)>96 AND ASC(KEY.PRESSED$)<123) THEN BOTSNAME$=BOTSNAME$+KEY.PRESSED$ ELSE 2540
2500 IF LEN(BOTSNAME$)>8 THEN LOCATE 25,6,0: PLAY"mbl16t90o1abababababababab": PRINT "NAMES MAY BE 1 TO 8 CHARACTERS";: FOR DELAY=1 TO 1500: NEXT DELAY: LOCATE 25,1,0: PRINT STRING$(38,32);: LOCATE 9,24,1: PRINT STRING$(10,32);: BOTSNAME$="": GOTO 2460
2510 LOCATE 9,(23+LEN(BOTSNAME$)),1,0,7
2520 PRINT KEY.PRESSED$;
2530 GOTO 2470
2540 IF ASC(KEY.PRESSED$)=8 AND LEN(BOTSNAME$)>0 THEN LOCATE 9,(23+LEN(BOTSNAME$)),1,0,7: PRINT CHR$(32);: LOCATE 9,(23+LEN(BOTSNAME$)),1,0,7: BOTSNAME$=LEFT$(BOTSNAME$,LEN(BOTSNAME$)-1): BEEP: GOTO 2470 ELSE IF ASC(KEY.PRESSED$)=8 THEN BEEP:GOTO 2460
2550 IF ASC(KEY.PRESSED$)<>13 THEN 2470
2560 IF LEN(BOTSNAME$)<1 THEN BEEP: LOCATE 25,5,0: PRINT "NAME MUST BE 1-8 CHARACTERS LONG";: FOR DELAY=1 TO 1500: NEXT DELAY: LOCATE 25,1,0: PRINT STRING$(39,32);: GOTO 2460
2570 MESSAGE$="SAVING -"+BOTSNAME$+"- ON DISKETTE"
2580 LOCATE 25,(20-(LEN(MESSAGE$)\2)),0
2590 PRINT MESSAGE$;
2600 BOTSFILE$=BOTSNAME$+".BOT"
2610 OPEN BOTSFILE$ FOR OUTPUT AS #1
2620 PRINT#1,PROGRAM$
2630 CLOSE#1
2640 LOCATE 25,1,0
2650 PRINT STRING$(39,32);
2660 LOCATE 25,2,0
2670 PRINT "Ready to program another combot? (Y/N)";
2680 KEY.PRESSED$=INKEY$
2690 IF KEY.PRESSED$<>"Y" AND KEY.PRESSED$<>"y" AND KEY.PRESSED$<>"N" AND KEY.PRESSED$<>"n" THEN 2680
2700 IF KEY.PRESSED$="Y" OR KEY.PRESSED$="y" THEN LOCATE 25,1,0: PRINT STRING$(39,32);: PROGRAM$="": ACTION$="": BOTSNAME$="": BOTSFILE$="": GOTO 1980
2710 LOCATE 25,1,0: PRINT STRING$(39,32);
2720 LINE(8,8)-(263,183),0,BF
2730 PROGRAM$="": ACTION$="": BOTSNAME$="": BOTSFILE$=""
2740 RETURN 1550
2750 END
2760 LOCATE 25,5,0
2770 PRINT "ACTIONS are FIRE, TURN, and MOVE";
2780 PLAY"mbl13T200acacacacacacacacacacacacacacaca"
2790 FOR DELAY=1 TO 1500
2800 NEXT DELAY
2810 LOCATE 25,1,0
2820 PRINT STRING$(39,32);
2830 LOCATE 9,24,0
2840 PRINT STRING$(9,32);
2850 ACTION$=""
2860 GOTO 2090
2870 '
2880 ' ***** END OF SEQUENCE *****
2890 '
2900 '
2910 ' ----- SET-UP FOR PLAY SEQUENCE -----
2920 '
2930 DIM COMBOT1%(9), COMBOT2%(9),COMBOT%(9),FLASH%(28),RUBBLE%(9)
2940 BOTSNAME$=""
2950 LINE(8,8)-(263,183),0,BF
2960 LOCATE 3,9,0
2970 PRINT "SETTING UP FOR PLAY";
2980 LOCATE 6,3,0
2990 PRINT "Enter COMBOT 1: ";
3000 LOCATE 6,19,1,0,7
3010 KEY.PRESSED$=INKEY$
3020 IF KEY.PRESSED$="" THEN 3010
3030 IF(ASC(KEY.PRESSED$)>47 AND ASC(KEY.PRESSED$)<58) OR (ASC(KEY.PRESSED$)>64 AND ASC(KEY.PRESSED$)<91) OR (ASC(KEY.PRESSED$)>96 AND ASC(KEY.PRESSED$)<123) THEN BOTSNAME$=BOTSNAME$+KEY.PRESSED$ ELSE 3080
3040 IF LEN(BOTSNAME$)>8 THEN LOCATE 25,6,0: PLAY"mbl16t90o1abababababababab": PRINT "NAMES MAY BE 1 TO 8 CHARACTERS";: FOR DELAY=1 TO 1500: NEXT DELAY: LOCATE 25,1,0: PRINT STRING$(38,32);: LOCATE 6,19,0: PRINT STRING$(10,32);: BOTSNAME$="": GOTO 3000
3050 LOCATE 6,(18+LEN(BOTSNAME$)),1,0,7
3060 PRINT KEY.PRESSED$;
3070 GOTO 3010
3080 IF ASC(KEY.PRESSED$)=8 AND LEN(BOTSNAME$)>0 THEN LOCATE 6,(18+LEN(BOTSNAME$)),1,0,7: PRINT CHR$(32);: LOCATE 6,(18+LEN(BOTSNAME$)),1,0,7: BOTSNAME$=LEFT$(BOTSNAME$,LEN(BOTSNAME$)-1): BEEP: GOTO 3010 ELSE IF ASC(KEY.PRESSED$)=8 THEN BEEP:GOTO 3000
3090 IF ASC(KEY.PRESSED$)<>13 THEN 3010
3100 IF BOTSNAME$="" THEN 2980
3110 COMBOT.ONE.NAME$=BOTSNAME$
3120 BOTSFILE$=COMBOT.ONE.NAME$+".BOT"
3130 ON ERROR GOTO 3180
3140 OPEN BOTSFILE$ FOR INPUT AS #1
3150 INPUT#1,COMBOT.ONE.PROGRAM$
3160 CLOSE#1
3170 GOTO 3320
3180 MESSAGE$="FILE FOR -"+BOTSNAME$+"- DOES NOT EXIST"
3190 LOCATE 25,((40-LEN(MESSAGE$))\2),0
3200 PRINT MESSAGE$;
3210 PLAY"mbl16t125o1aaaabaaaabaaaabaaaabaaaabaaaabbb"
3220 FOR DELAY=1 TO 1500
3230 NEXT DELAY
3240 LOCATE 25,1,0
3250 PRINT STRING$(39,32);
3260 LOCATE 6,19,1
3270 PRINT STRING$(10,32);
3280 BOTSNAME$=""
3290 RESUME 3300
3300 ON ERROR GOTO 0
3310 GOTO 3000
3320 BOTSNAME$=""
3330 LOCATE 9,3,0
3340 PRINT "Enter COMBOT 2: ";
3350 LOCATE 9,19,1,0,7
3360 KEY.PRESSED$=INKEY$
3370 IF KEY.PRESSED$="" THEN 3360
3380 IF(ASC(KEY.PRESSED$)>47 AND ASC(KEY.PRESSED$)<58) OR (ASC(KEY.PRESSED$)>64 AND ASC(KEY.PRESSED$)<91) OR (ASC(KEY.PRESSED$)>96 AND ASC(KEY.PRESSED$)<123) THEN BOTSNAME$=BOTSNAME$+KEY.PRESSED$ ELSE 3430
3390 IF LEN(BOTSNAME$)>8 THEN LOCATE 25,6,0: PLAY"mbl16t90o1abababababababab": PRINT "NAMES MAY BE 1 TO 8 CHARACTERS";: FOR DELAY=1 TO 1500: NEXT DELAY: LOCATE 25,1,0: PRINT STRING$(38,32);: LOCATE 9,19,0: PRINT STRING$(10,32);: BOTSNAME$="": GOTO 3350
3400 LOCATE 9,(18+LEN(BOTSNAME$)),1,0,7
3410 PRINT KEY.PRESSED$;
3420 GOTO 3360
3430 IF ASC(KEY.PRESSED$)=8 AND LEN(BOTSNAME$)>0 THEN LOCATE 9,(18+LEN(BOTSNAME$)),1,0,7: PRINT CHR$(32);: LOCATE 9,(18+LEN(BOTSNAME$)),1,0,7: BOTSNAME$=LEFT$(BOTSNAME$,LEN(BOTSNAME$)-1): BEEP: GOTO 3360 ELSE IF ASC(KEY.PRESSED$)=8 THEN BEEP:GOTO 3350
3440 IF ASC(KEY.PRESSED$)<>13 THEN 3360
3450 IF BOTSNAME$="" THEN 3330
3460 COMBOT.TWO.NAME$=BOTSNAME$
3470 BOTSFILE$=COMBOT.TWO.NAME$+".BOT"
3480 ON ERROR GOTO 3530
3490 OPEN BOTSFILE$ FOR INPUT AS #1
3500 INPUT#1,COMBOT.TWO.PROGRAM$
3510 CLOSE#1
3520 GOTO 3670
3530 MESSAGE$="FILE FOR -"+BOTSNAME$+"- DOES NOT EXIST"
3540 LOCATE 25,((40-LEN(MESSAGE$))\2),0
3550 PRINT MESSAGE$;
3560 PLAY"mbl16t125o1aaaabaaaabaaaabaaaabaaaabaaaabbb"
3570 FOR DELAY=1 TO 1500
3580 NEXT DELAY
3590 LOCATE 25,1,0
3600 PRINT STRING$(39,32);
3610 LOCATE 9,19,1
3620 PRINT STRING$(10,32);
3630 BOTSNAME$=""
3640 RESUME 3650
3650 ON ERROR GOTO 0
3660 GOTO 3350
3670 ON ERROR GOTO 0
3680 '------------------ STARTS PUTTING SHAPES NOW ------------------------
3690 LINE(7,7)-(264,184),1,BF
3700 HORZ!=0: VERT=0: HALT=0
3710 WHILE HALT<2
3720 LINE(136-HORZ!,96-VERT)-(135+HORZ!,95+VERT),0,BF
3730 HORZ!=HORZ!+1.43
3740 VERT=VERT+1
3750 IF HORZ!>100 THEN HORZ!=100
3760 IF VERT>70 THEN VERT=70
3770 IF HORZ!=100 AND VERT=70 THEN HALT=HALT+1
3780 WEND
3790 LOCATE 25,7,0
3800 PRINT "Press KEY F4 to restart game";
3810 FOR COUNTER=1 TO 2
3820 FOR REPEAT=1 TO 22
3830 READ X.POINT, Y.POINT
3840 IF COUNTER=1 THEN PSET(X.POINT, Y.POINT),3
3850 IF COUNTER=2 THEN PSET(X.POINT, Y.POINT),2
3860 NEXT REPEAT
3870 NEXT COUNTER
3880 PAINT(300,43),2,2
3890 FOR REPEAT=1 TO 54
3900 READ X.POINT,Y.POINT
3910 PSET(X.POINT,Y.POINT),2
3920 NEXT REPEAT
3930 GET(50,50)-(57,56),COMBOT%
3940 GET(296,16)-(303,22),COMBOT1%
3950 GET(296,40)-(303,46),COMBOT2%
3960 GET(128,88)-(141,100),FLASH%
3970 LINE(127,87)-(142,101),0,BF
3980 FOR REPEAT=1 TO 16
3990 READ X.POINT,Y.POINT
4000 PSET(X.POINT,Y.POINT),1
4010 NEXT REPEAT
4020 GET(131,91)-(138,97),RUBBLE%
4030 LINE(127,87)-(142,101),0,BF
4040 LOCATE 4,37,0: PRINT "100";
4050 LOCATE 7,37,0: PRINT "100";
4060 RANDOMIZE(VAL(RIGHT$(TIME$,2))*500)
4070 COMBOT.ONE.FACING=FIX(RND*8)+1
4080 COMBOT.TWO.FACING=FIX(RND*8)+1
4090 X.ONE=FIX(RND*194)+35
4100 Y.ONE=FIX(RND*135)+25
4110 X.TWO=FIX(RND*194)+35
4120 IF X.TWO<(X.ONE+8) AND X.TWO>(X.ONE-8) THEN 4110
4130 Y.TWO=FIX(RND*135)+25
4140 IF Y.TWO<(Y.ONE+7) AND Y.TWO>(Y.ONE-7) THEN 4130
4150 PUT(X.ONE,Y.ONE),COMBOT1%,>=
4160 PUT(X.TWO,Y.TWO),COMBOT2%,>=
4170 TIME$="00:00:00"
4180 SHIELD1=100: SHIELD2=100: SHIELD1$=STR$(SHIELD1): SHIELD2$=STR$(SHIELD2): IF LEN(SHIELD1$)>3 THEN SHIELD1$=RIGHT$(SHIELD1$,3): IF LEN(SHIELD2$)>3 THEN SHIELD2$=RIGHT$(SHIELD2$,3)
4190 FINISH=0
4200 FOR COUNTER=1 TO 10 '---------------------------------- BEGIN LOOP -----
4210 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
4220 COMBOT.ONE.ACTION$=MID$(COMBOT.ONE.PROGRAM$,COUNTER,1)
4230 COMBOT.TWO.ACTION$=MID$(COMBOT.TWO.PROGRAM$,COUNTER,1)
4240 IF COMBOT.ONE.ACTION$<COMBOT.TWO.ACTION$ THEN PRIORITY=1
4250 IF COMBOT.ONE.ACTION$=COMBOT.TWO.ACTION$ THEN PRIORITY=FIX(RND*2)+1
4260 IF COMBOT.ONE.ACTION$>COMBOT.TWO.ACTION$ THEN PRIORITY=2
4270 ON PRIORITY GOSUB 4390,4460
4280 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
4290 LOCATE 4,37: PRINT SHIELD1$;
4300 LOCATE 7,37: PRINT SHIELD2$;
4310 IF SHIELD1<=0 OR SHIELD2<=0 THEN GOSUB 6740
4320 ON KEY(4) GOSUB 7220
4330 IF VAL(MID$(TIME$,4,2))>=5 AND VAL(RIGHT$(TIME$,2))>0 THEN GOSUB 7000
4340 IF FINISH>0 THEN ERASE COMBOT1%,COMBOT2%,FLASH%,COMBOT%,RUBBLE%: RESTORE: RETURN 1510
4350 IF X.ONE>36 AND X.ONE<228 AND X.TWO>36 AND X.TWO<228 AND Y.ONE>26 AND Y.ONE<158 AND Y.TWO>26 AND Y.TWO<158 THEN LINE(35,25)-(236,166),1,B: LINE(36,26)-(235,165),0,B
4360 NEXT COUNTER ' -------------------------------------------END LOOP-------
4370 GOTO 4200
4380 END
4390 X.POSITION=X.ONE: Y.POSITION=Y.ONE: COMPARE.X=X.TWO: COMPARE.Y=Y.TWO
4400 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
4410 ON VAL(COMBOT.ONE.ACTION$) GOSUB 4530,5650,5700
4420 X.POSITION=X.TWO: Y.POSITION=Y.TWO: COMPARE.X=X.ONE: COMPARE.Y=Y.ONE
4430 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
4440 ON VAL(COMBOT.TWO.ACTION$) GOSUB 4530,5650,5700
4450 RETURN
4460 X.POSITION=X.TWO: Y.POSITION=Y.TWO: COMPARE.X=X.ONE: COMPARE.Y=Y.ONE
4470 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
4480 ON VAL(COMBOT.TWO.ACTION$) GOSUB 4530,5650,5700
4490 X.POSITION=X.ONE: Y.POSITION=Y.ONE: COMPARE.X=X.TWO: COMPARE.Y=Y.TWO
4500 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
4510 ON VAL(COMBOT.ONE.ACTION$) GOSUB 4530,5650,5700
4520 RETURN
4530 ' ---------- FIRE SEQUENCE
4540 IF X.POSITION=X.ONE THEN ON COMBOT.ONE.FACING GOSUB 4680,4790,4920,5030,5160,5270,5400,5510 ELSE ON COMBOT.TWO.FACING GOSUB 4680,4790,4920,5030,5160,5270,5400,5510
4550 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
4560 LINE(TURRET.X,TURRET.Y)-(TARGET.X,TARGET.Y),3
4570 PLAY"l64t255mso4bfgeafdfcbbacdefgacgaafedcbgffde"
4580 LINE(TARGET.X,TARGET.Y)-(TURRET.X,TURRET.Y),0
4590 RANGE=FIX((((TARGET.X-TURRET.X)^2)+((TARGET.Y-TURRET.Y)^2))^0.5)
4600 IF LOS.CHECK=2 AND RANGE>0 THEN SHIELD2=SHIELD2-FIX(750/RANGE): IF SHIELD2<0 THEN SHIELD2=0 ELSE IF LOS.CHECK=2 AND RANGE<=0 THEN SHIELD2=SHIELD2-100: IF SHIELD2<0 THEN SHIELD2=0
4610 IF LOS.CHECK=3 AND RANGE>0 THEN SHIELD1=SHIELD1-FIX(750/RANGE): IF SHIELD1<0 THEN SHIELD1=0 ELSE IF LOS.CHECK=3 AND RANGE<=0 THEN SHIELD1=SHIELD1-100: IF SHIELD1<0 THEN SHIELD1=0
4620 IF SHIELD1=0 THEN SHIELD1$="-0-" ELSE SHIELD1$=RIGHT$(STR$(SHIELD1),3): IF LEN(SHIELD1$)<3 THEN SHIELD1$=STRING$((3-LEN(SHIELD$)),32)+SHIELD1$
4630 IF SHIELD2=0 THEN SHIELD2$="-0-" ELSE SHIELD2$=RIGHT$(STR$(SHIELD2),3): IF LEN(SHIELD2$)<3 THEN SHIELD2$=STRING$((3-LEN(SHIELD2$)),32)+SHIELD2$
4640 IF LOS.CHECK=2 THEN HIT=2 ELSE IF LOS.CHECK=3 THEN HIT=1
4650 IF HIT<>0 THEN GOSUB 6920
4660 RETURN
4670 '
4680 ' FACING UP
4690 TARGET.X=X.POSITION+4: TARGET.Y=Y.POSITION
4700 TURRET.X=X.POSITION+4: TURRET.Y=Y.POSITION-1
4710 LOS.CHECK=0
4720 WHILE LOS.CHECK=0
4730 TARGET.Y=TARGET.Y-1
4740 LOS.CHECK=POINT(TARGET.X,TARGET.Y)
4750 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
4760 WEND
4770 TARGET.Y=TARGET.Y+1
4780 RETURN
4790 ' FACING UP/RIGHT
4800 TARGET.X=X.POSITION+7: TARGET.Y=Y.POSITION
4810 TURRET.X=X.POSITION+8: TURRET.Y=Y.POSITION-1
4820 LOS.CHECK=0
4830 WHILE LOS.CHECK=0
4840 TARGET.X=TARGET.X+1
4850 TARGET.Y=TARGET.Y-1
4860 LOS.CHECK=POINT(TARGET.X,TARGET.Y)
4870 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
4880 WEND
4890 TARGET.X=TARGET.X-1
4900 TARGET.Y=TARGET.Y+1
4910 RETURN
4920 ' FACING RIGHT
4930 TARGET.X=X.POSITION+7: TARGET.Y=Y.POSITION+3
4940 TURRET.X=X.POSITION+8: TURRET.Y=Y.POSITION+3
4950 LOS.CHECK=0
4960 WHILE LOS.CHECK=0
4970 TARGET.X=TARGET.X+1
4980 LOS.CHECK=POINT(TARGET.X,TARGET.Y)
4990 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
5000 WEND
5010 TARGET.X=TARGET.X-1
5020 RETURN
5030 ' FACING DOWN/RIGHT
5040 TARGET.X=X.POSITION+7: TARGET.Y=Y.POSITION+6
5050 TURRET.X=X.POSITION+8: TURRET.Y=Y.POSITION+7
5060 LOS.CHECK=0
5070 WHILE LOS.CHECK=0
5080 TARGET.X=TARGET.X+1
5090 TARGET.Y=TARGET.Y+1
5100 LOS.CHECK=POINT(TARGET.X,TARGET.Y)
5110 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
5120 WEND
5130 TARGET.X=TARGET.X-1
5140 TARGET.Y=TARGET.Y-1
5150 RETURN
5160 ' FACING DOWN
5170 TARGET.X=X.POSITION+3: TARGET.Y=Y.POSITION+6
5180 TURRET.X=X.POSITION+3: TURRET.Y=Y.POSITION+7
5190 LOS.CHECK=0
5200 WHILE LOS.CHECK=0
5210 TARGET.Y=TARGET.Y+1
5220 LOS.CHECK=POINT(TARGET.X,TARGET.Y)
5230 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
5240 WEND
5250 TARGET.Y=TARGET.Y-1
5260 RETURN
5270 ' FACING DOWN/LEFT
5280 TARGET.X=X.POSITION: TARGET.Y=Y.POSITION+6
5290 TURRET.X=X.POSITION-1: TURRET.Y=Y.POSITION+6
5300 LOS.CHECK=0
5310 WHILE LOS.CHECK=0
5320 TARGET.X=TARGET.X-1
5330 TARGET.Y=TARGET.Y+1
5340 LOS.CHECK=POINT(TARGET.X,TARGET.Y)
5350 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
5360 WEND
5370 TARGET.X=TARGET.X+1
5380 TARGET.Y=TARGET.Y-1
5390 RETURN
5400 ' FACING LEFT
5410 TARGET.X=X.POSITION: TARGET.Y=Y.POSITION+3
5420 TURRET.X=X.POSITION-1: TURRET.Y=Y.POSITION+3
5430 LOS.CHECK=0
5440 WHILE LOS.CHECK=0
5450 TARGET.X=TARGET.X-1
5460 LOS.CHECK=POINT(TARGET.X,TARGET.Y)
5470 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
5480 WEND
5490 TARGET.X=TARGET.X+1
5500 RETURN
5510 ' FACING UP/LEFT
5520 TARGET.X=X.POSITION: TARGET.Y=Y.POSITION
5530 TURRET.X=X.POSITION-1: TURRET.Y=Y.POSITION-1
5540 LOS.CHECK=0
5550 WHILE LOS.CHECK=0
5560 TARGET.X=TARGET.X-1
5570 TARGET.Y=TARGET.Y-1
5580 LOS.CHECK=POINT(TARGET.X,TARGET.Y)
5590 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
5600 WEND
5610 TARGET.X=TARGET.X+1
5620 TARGET.Y=TARGET.Y+1
5630 RETURN
5640 '
5650 ' ---------- TURN SEQUENCE (CHANGE FACING)
5660 IF X.POSITION=X.ONE THEN COMBOT.ONE.FACING=COMBOT.ONE.FACING+1 ELSE IF X.POSITION=X.TWO THEN COMBOT.TWO.FACING=COMBOT.TWO.FACING+1
5670 IF X.POSITION=X.ONE AND COMBOT.ONE.FACING>8 THEN COMBOT.ONE.FACING=COMBOT.ONE.FACING-8 ELSE IF COMBOT.TWO.FACING>8 THEN COMBOT.TWO.FACING=COMBOT.TWO.FACING-8
5680 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
5690 RETURN
5700 ' ---------- MOVE SEQUENCE
5710 IF X.POSITION=X.ONE THEN ON COMBOT.ONE.FACING GOSUB 5770,5850,5920,5990,6060,6130,6200,6270 ELSE ON COMBOT.TWO.FACING GOSUB 5770,5850,5920,5990,6060,6130,6200,6270
5720 IF X.POSITION=X.ONE THEN PUT(X.ONE,Y.ONE),COMBOT1%,>=: PUT(NEW.X, NEW.Y),COMBOT1%,>= ELSE PUT(X.TWO,Y.TWO),COMBOT2%,>=: PUT(NEW.X,NEW.Y),COMBOT2%,>=
5730 IF X.POSITION=X.ONE THEN X.ONE=NEW.X: Y.ONE=NEW.Y ELSE X.TWO=NEW.X: Y.TWO=NEW.Y
5740 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
5750 RETURN
5760 '
5770 NEW.Y=Y.POSITION : NEW.X=X.POSITION ' ----- MOVE STRAIGHT UP -----
5780 FOR REPEAT=1 TO 7
5790 COLOR.CHECK=POINT(X.POSITION,Y.POSITION-REPEAT)
5800 IF X.POSITION<(COMPARE.X+8) AND X.POSITION>(COMPARE.X-8) AND Y.POSITION-REPEAT<(COMPARE.Y+7) AND Y.POSITION-REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.Y<26 THEN RETURN ELSE NEW.Y=NEW.Y-1: NEW.X=X.POSITION
5810 NEXT REPEAT
5820 RETURN ' ----- END MOVE STRAIGHT UP -----
5830 '
5840 '
5850 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE UP/RIGHT -----
5860 FOR REPEAT=1 TO 5
5870 COLOR.CHECK=POINT(X.POSITION+8+REPEAT,Y.POSITION-7)
5880 IF X.POSITION+REPEAT<(COMPARE.X+8) AND X.POSITION+REPEAT>(COMPARE.X-8) AND Y.POSITION-REPEAT<(COMPARE.Y+7) AND Y.POSITION-REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.Y<26 OR NEW.X>228 THEN RETURN ELSE NEW.X=NEW.X+1: NEW.Y=NEW.Y-1
5890 NEXT REPEAT
5900 RETURN ' ----- END MOVE UP/RIGHT -----
5910 '
5920 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE STRAIGHT RIGHT -----
5930 FOR REPEAT=1 TO 7
5940 COLOR.CHECK=POINT(X.POSITION+8+REPEAT,Y.POSITION)
5950 IF X.POSITION+REPEAT<(COMPARE.X+8) AND X.POSITION+REPEAT>(COMPARE.X-8) AND Y.POSITION<(COMPARE.Y+7) AND Y.POSITION>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X>228 THEN RETURN ELSE NEW.X=NEW.X+1: NEW.Y=Y.POSITION
5960 NEXT REPEAT
5970 RETURN ' ----- END MOVE STRAIGHT RIGHT -----
5980 '
5990 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE DOWN/RIGHT -----
6000 FOR REPEAT=1 TO 5
6010 COLOR.CHECK=POINT(X.POSITION+8+REPEAT,Y.POSITION+7+REPEAT)
6020 IF X.POSITION+REPEAT<(COMPARE.X+8) AND X.POSITION+REPEAT>(COMPARE.X-8) AND Y.POSITION+7+REPEAT<(COMPARE.Y+7) AND Y.POSITION+7+REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X>228 OR NEW.Y>158 THEN RETURN ELSE NEW.Y=NEW.Y+1: NEW.X=NEW.X+1
6030 NEXT REPEAT
6040 RETURN ' ----- END MOVE DOWN/RIGHT -----
6050 '
6060 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE STRAIGHT DOWN -----
6070 FOR REPEAT=1 TO 7
6080 COLOR.CHECK=POINT(X.POSITION,Y.POSITION+7+REPEAT)
6090 IF X.POSITION<(COMPARE.X+8) AND X.POSITION>(COMPARE.X-8) AND Y.POSITION+7+REPEAT<(COMPARE.Y+7) AND Y.POSITION+7+REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=3 OR NEW.Y>158 THEN RETURN ELSE NEW.Y=NEW.Y+1: NEW.X=X.POSITION
6100 NEXT REPEAT
6110 RETURN ' ----- END MOVE STRAIGHT DOWN -----
6120 '
6130 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE DOWN/LEFT -----
6140 FOR REPEAT=1 TO 5
6150 COLOR.CHECK=POINT(X.POSITION-REPEAT,Y.POSITION+7+REPEAT)
6160 IF X.POSITION-REPEAT<(COMPARE.X+8) AND X.POSITION-REPEAT>(COMPARE.X-8) AND Y.POSITION+7+REPEAT<(COMPARE.Y+7) AND Y.POSITION+7+REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X<36 OR NEW.Y>158 THEN RETURN ELSE NEW.Y=NEW.Y+1: NEW.X=NEW.X-1
6170 NEXT REPEAT
6180 RETURN ' ----- END MOVE DOWN/LEFT -----
6190 '
6200 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE STRAIGHT LEFT -----
6210 FOR REPEAT=1 TO 7
6220 COLOR.CHECK=POINT(X.POSITION-REPEAT,Y.POSITION)
6230 IF X.POSITION-REPEAT<(COMPARE.X+8) AND X.POSITION-REPEAT>(COMPARE.X-8) AND Y.POSITION<(COMPARE.Y+7) AND Y.POSITION>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X<36 THEN RETURN ELSE NEW.X=NEW.X-1: NEW.Y=Y.POSITION
6240 NEXT REPEAT
6250 RETURN ' ----- END MOVE STRAIGHT LEFT -----
6260 '
6270 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE UP/LEFT -----
6280 FOR REPEAT=1 TO 5
6290 COLOR.CHECK=POINT(X.POSITION-REPEAT,Y.POSITION-REPEAT)
6300 IF X.POSITION-REPEAT<(COMPARE.X+8) AND X.POSITION-REPEAT>(COMPARE.X-8) AND Y.POSITION-REPEAT<(COMPARE.Y+7) AND Y.POSITION-REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X<36 OR NEW.Y<26 THEN RETURN ELSE NEW.Y=NEW.Y-1: NEW.X=NEW.X-1
6310 NEXT REPEAT
6320 RETURN ' ----- END MOVE UP/LEFT -----
6330 ' END GAME
6340 DIM COMBOT1%(9),COMBOT2%(9)
6350 GET(296,16)-(303,22),COMBOT1%
6360 GET(296,40)-(303,46),COMBOT2%
6370 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
6380 LINE(8,8)-(263,183),0,BF
6390 LOCATE 25,1,0
6400 PRINT STRING$(38,32);
6410 ON ERROR GOTO 6710
6420 FOR BOTS=1 TO 150
6430 X=FIX(RND*249)+8
6440 Y=FIX(RND*170)+8
6450 PUT(X,Y),COMBOT1%,PSET
6460 X=FIX(RND*249)+8
6470 Y=FIX(RND*170)+8
6480 PUT(X,Y),COMBOT2%,PSET
6490 NEXT BOTS
6500 LOCATE 4,10,0: PRINT STRING$(17,32);
6510 LOCATE 5,10,0: PRINT STRING$(17,32);
6520 LOCATE 6,10,0: PRINT STRING$(17,32);
6530 LOCATE 5,11,0
6540 PRINT "REMEMBER.......";
6550 FOR DELAY=1 TO 1000: NEXT DELAY
6560 LOCATE 12,5,0: PRINT STRING$(27,32);
6570 LOCATE 13,5,0: PRINT STRING$(27,32);
6580 LOCATE 14,5,0: PRINT STRING$(27,32);
6590 LOCATE 13,6,0
6600 PRINT "there might be a COMBOT..";
6610 FOR DELAY=1 TO 1000: NEXT DELAY
6620 LOCATE 17,11,0: PRINT STRING$(14,32);
6630 LOCATE 18,11,0: PRINT STRING$(14,32);
6640 LOCATE 19,11,0: PRINT STRING$(14,32);
6650 LOCATE 18,12,0
6660 PRINT "BEHIND YOU !!";
6670 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
6680 FOR DELAY=1 TO 5000: NEXT DELAY
6690 CLS
6700 SYSTEM
6710 RESUME 6720
6720 ON ERROR GOTO 0
6730 GOTO 6530
6740 ' ONE OR BOTH COMOBOTS SHOT UP
6750 IF SHIELD1=0 AND SHIELD2>0 THEN WINNER$=COMBOT.TWO.NAME$: COMMENT$="And the WINNER is "+WINNER$
6760 IF SHIELD2=0 AND SHIELD1>0 THEN WINNER$=COMBOT.ONE.NAME$: COMMENT$="And the WINNER is "+WINNER$
6770 IF SHIELD1=0 AND SHIELD2=0 THEN IF PRIORITY=1 THEN WINNER$=COMBOT.ONE.NAME$: COMMENT$=WINNER$+" barely WINS!" ELSE WINNER$=COMBOT.TWO.NAME$: COMMENT$=WINNER$+" barely WINS!"
6780 IF SHIELD1=0 THEN PUT(X.ONE,Y.ONE),COMBOT1%,PRESET: FOR DELAY=1 TO 750: NEXT DELAY: PUT(X.ONE,Y.ONE),COMBOT%,PSET: PUT(X.ONE,Y.ONE),RUBBLE%,PSET
6790 IF SHIELD2=0 THEN PUT(X.TWO,Y.TWO),COMBOT2%,PRESET: FOR DELAY=1 TO 750: NEXT DELAY: PUT(X.TWO,Y.TWO),COMBOT%,PSET: PUT(X.TWO,Y.TWO),RUBBLE%,PSET
6800 IF SHIELD1=0 AND SHIELD2=0 THEN PUT(X.ONE,Y.ONE),COMBOT1%,PRESET:PUT(X.TWO,Y.TWO),COMBOT2%,PRESET:FOR DELAY=1 TO 750:NEXT DELAY:PUT(X.ONE,Y.ONE),COMBOT%,PSET:PUT(X.TWO,Y.TWO),COMBOT%,PSET:PUT(X.ONE,Y.ONE),RUBBLE%,PSET:PUT(X.TWO,Y.TWO),RUBBLE%,PSET
6810 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
6820 FOR DELAY=1 TO 2500: NEXT DELAY
6830 LINE(8,8)-(263,183),0,BF
6840 LOCATE 13,(18-(LEN(COMMENT$)/2))
6850 PRINT COMMENT$;
6860 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
6870 FINISH=1
6880 FOR DELAY=1 TO 4500: NEXT DELAY
6890 LOCATE 25,1,0
6900 PRINT STRING$(38,32);
6910 RETURN
6920 ' PUT FLASH ON SCREEN FOR HIT AND MAKE SOUND
6930 IF HIT=1 THEN FLASH.X=X.ONE-4: FLASH.Y=Y.ONE-3 ELSE FLASH.X=X.TWO-4: FLASH.Y=Y.TWO-3
6940 HIT=0
6950 PUT(FLASH.X,FLASH.Y),FLASH%,>=
6960 SOUND 4500,15
6970 FOR DELAY=1 TO 1250: NEXT DELAY
6980 PUT(FLASH.X,FLASH.Y),FLASH%,>=
6990 RETURN
7000 ' TIME LIMIT EXPIRES
7010 SOUND 4000,5
7020 FINISH=1
7030 LOCATE 25,1,0
7040 PRINT STRING$(38,32);
7050 LOCATE 25,9,0
7060 PRINT "-TIME LIMIT HAS EXPIRED-";
7070 FOR DELAY=1 TO 1500: NEXT DELAY
7080 LOCATE 25,1,0
7090 PRINT STRING$(38,32);
7100 IF SHIELD1=SHIELD2 THEN MESSAGE$="Sorry, but it's a tie !"
7110 IF SHIELD1>SHIELD2 THEN MESSAGE$=COMBOT.ONE.NAME$+" wins by decision!"
7120 IF SHIELD1<SHIELD2 THEN MESSAGE$=COMBOT.TWO.NAME$+" wins by decision!"
7130 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
7140 FOR DELAY=1 TO 1000: NEXT DELAY
7150 LINE(8,8)-(263,183),0,BF
7160 LOCATE 13,(18-(LEN(MESSAGE$)/2))
7170 PRINT MESSAGE$;
7180 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
7190 FOR DELAY=1 TO 5000: NEXT DELAY
7200 FINISH=1
7210 RETURN
7220 ' RESTART SET-UP
7230 FINISH=1
7240 LINE(7,7)-(264,184),1,B
7250 LOCATE 25,1,0
7260 PRINT STRING$(38,32);
7270 PLAY"l8t175o2mnabcp8abcp8abccc"
7280 RETURN
7290 ' -------------------------------------------------------------
7300 DATA 296,18,296,19,296,20,297,17,297,21,298,17,298,21,299,16,299,22,300,16,300,22,301,17,301,21,302,17,302,21,303,18,303,19,303,20,298,19,299,19,300,19,301,19
7310 DATA 296,42,296,43,296,44,297,41,297,45,298,41,298,45,299,40,299,46,300,40,300,46,301,41,301,45,302,41,302,45,303,42,303,43,303,44,298,41,299,40,300,40,301,41
7320 DATA 128,88,141,88,129,89,133,89,136,89,140,89,130,90,134,90,135,90,139,90,131,91,132,91,137,91,138,91,132,92,133,92,136,92,137,92,129,93,133,93,134,93,135,93,136,93,140,93
7330 DATA 130,94,131,94,134,94,135,94,138,94,139,94,129,95,133,95,134,95,135,95,136,95,140,95,132,96,133,96,136,96,137,96,131,97,132,97,137,97,138,97,130,98,134,98,135,98,139,98,129,99,133,99,136,99,140,99,128,100,141,100
7340 DATA 135,94,134,95,135,95,132,96,133,96,134,96,135,96,136,96,131,97,132,97,133,97,134,97,135,97,136,97,137,97,138,97
7350 ' --------------------------------------------------------------
Begin Documentation
This is documentation for the COMBOTS game, a game that pits two "combat robots" against each other to a fight to the finish.
The program was done to learn a little about how to detect a collision between objects and the method used in this instance was the POINT function in BASIC.
Each COMBOT may be programmed to perform ten actions, each action selected from a list of three possibilities, over and over again in the order determined at the time the COMBOT is programmed.
In order to simplify the shapes used to represent the COMBOTS there was nothing included to show "facing" of each COMBOT unless the unit is moving or firing.
Shapes are moved using the standard GET-PUT format after each shape is originally drawn using DATA statements to set the points and the colors.
Collisions (between the laser beams used as weapons and each combot) are detected by using the POINT function to read the color of each point in a straight line from the firing unit to the target point.
This target point is determined by extending a straight line from the firing unit's facing position point by point until either a color is detected or the absolute point reached is on the boundary of the field.
This point by point process is EXTREMELY slow and I suggest that an improved game would use a test against the current endpoint of the laser versus the actual points in the target unit. Also you could
compile the BASIC program for more speed.
Problems encountered with this program include the following:
1) Shapes "jumping" from one location to another, on top of each other. Apparently there was some error that caused the variable used to hold the current COMBOTs position not to be purged.
This would account for the "jump" to the other COMBOTs position for no apparent reason. I believe this is fully corrected now.
2) Colored points left on the screen due to COMBOTs attempting to move into the boundary. This was remedied by setting absolute limits to movements rather than depending on checking the color
of the point to be moved to. If such a colored point was hit by a laser the firing unit would thus score in error.
3) Colored points left on screen and/or boundary points shot away by the results of firing units hitting the colored boundary. This was patched rather than fixed. The patch simply redraws a small
inner portion of the colored boundary.
The game does everything I wanted it to do except that I wanted to have six COMBOTs on the screen at once. Until a better method is found to check for hits though this really isn't possible.
End Documentation
------------------------------------------------------------------------
Disk No 174 Game Mixture v1.1 DS2
------------------------------------------------------------------------
? BAT Letter A-L for MENU.BAT
CIA BAS CIA adventure simulation
CIVILWAR BAS Civil war simulation
COMBOT BAS Program two robots to fight each other with lasers
COMBOT DOC Documentation for COMBOT.BAS
FOOTBAL BAS Big-8 football simulation - K.U. versus your choice
FOOTBALL BAS Another football simulation
FROG EXE Good Frogger type game - graphics required
GRINCH BAS El Grinch game - cute, neat game
MARS-ESC BAS Escape from Mars adventure
MENU BAT Menu for the files on this disk
MENU SCR Part of MENU.BAT
RACECAR BAS Good race car game
SEAWOLF BAS Excellent game - sink subs, PT's, tankers
SOLITARE BAS Solitare card game - you can't cheat with this one
XWING BAS Re-live Star Wars - outstanding game - graphics req'd
5 CLS
9 WIDTH 80: PRINT
10 PRINT TAB(36) "FOOTBALL"
220 PRINT "This is Big 8 football."
230 PRINT "You will quarterback K.U."
232 PRINT
235 PRINT "You can use the following plays:"
240 PRINT " 1 - Simple Run"
241 PRINT " 2 - Tricky Run"
242 PRINT " 3 - Short Pass"
244 PRINT " 4 - Long Pass"
245 PRINT " 5 - Punt "
246 PRINT " 6 - Quick Kick"
248 PRINT " 7 - Place Kick"
250 PRINT
280 INPUT "Enter name of opponent: ",O$(1)
290 O$(0)=" Kansas"
295 DIM L$(20)
296 FOR I=1 TO 20: READ L$(I): NEXT I
297 DATA kick,recieve,yard,Run back for,"Ball on ",yard line,Simple run,Tricky run
298 DATA Short pass,Long pass,Punt,Quick kick,Place kick," loss",no gain," gain",Touchdown,Touchback,Safety***,junk
300 KDB=VAL(RIGHT$(TIME$,2))*VAL(MID$(TIME$,4,2)):RANDOMIZE KDB:CLS
302 PRINT TAB(36) "FOOTBALL"
304 LOCATE 25,5:PRINT "1-S Run, 2-T Run, 3-Short Pass, 4-Long Pass, 5-Punt, 6-Q Kick, 7-P Kick";
305 LOCATE 21,15:FOR I=1 TO 10:PRINT CHR$(216);STRING$(4,205);:NEXT I:PRINT CHR$(216)
307 LOCATE 23,15:PRINT "G 10 20 30 40 50 40 30 20 10 G"
310 S(0)=0 :S(1)=0
390 P=INT(RND(1)*2)
400 LOCATE 5,1 :PRINT O$(P);" won the toss."
410 DEF FNF(X)=1-2*P
420 DEF FNG(Z)=P*(X1-X)+(1-P)*(X-X1)
430 IF P=0 THEN 470
440 PRINT O$(1);" elects to receive."
450 PRINT
460 GOTO 580
470 PRINT "Do you elect to recieve or to kick";A$
480 A$=INKEY$: IF A$="" THEN 480
490 PRINT
495 IF LEFT$(A$,1)="K" OR LEFT$(A$,1)="k" THEN 560
500 IF LEFT$(A$,1)="R" OR LEFT$(A$,1)="r" THEN 580
510 PRINT "Incorrect response. Please enter `kick' or `receive'":GOTO 470
560 P=1
580 X=40+(1-P)*20
590 Y=INT(200*(RND(1)-0.5)^3+55)
600 PRINT Y;L$(3);" kickoff."
610 X=X-FNF(1)*Y
620 IF ABS(X-50)>=50 THEN 700
630 Y=INT(50*RND(1)^2)+(1-P)*INT(50*RND(1)^4)
640 X=X+FNF(1)*Y
650 IF ABS(X-50)>=50 THEN 655
651 PRINT Y;L$(3);" runback."
652 GOTO 720
655 PRINT L$(4);
660 GOTO 2600
700 PRINT "Touchback for ";O$(P)
710 X=20+P*60
720 REM ******** First Down ********
730 GOSUB 800
740 X1=X
750 D=1
755 PLAY "L32CECECE"
760 PRINT "First down ";O$(P);"***"
790 GOTO 860
800 REM ******** Position ********
810 IF X>50 THEN 840
820 PRINT L$(5);" ";O$(0);X;L$(6)
830 GOTO 850
840 PRINT L$(5);O$(1);100-X;L$(6)
850 RETURN
860 REM ******** New Play ********
870 T=T+1
880 IF T=30 THEN 1060
890 IF T<50 THEN 940
900 IF RND(1)>0.2 THEN 940
910 CLS:PRINT :PRINT "End of game!!!"
920 PRINT "Final Score: ";O$(0);S(0);" ";O$(1);S(1)
930 PRINT :PRINT :PRINT :PRINT "Play another game (y/n) ";
932 A$=INKEY$: IF A$="" THEN 932
934 IF LEFT$(A$,1)="Y" OR LEFT$(A$,1)="y" THEN CLS :GOTO 300
936 LOAD"masterp",R
940 IF P=1 THEN 1870
947 LOCATE 18,40:PRINT CHR$(45) CHR$(26)
948 LOCATE 19,10:PRINT " "
949 LOCATE 19,15+X1/2:PRINT CHR$(195) CHR$(196) CHR$(196) CHR$(196) CHR$(196) CHR$(180)
950 LOCATE 20,15:PRINT " "
951 LOCATE 20,15+X/2:PRINT CHR$(25)
952 LOCATE 14,1 :PRINT " " :LOCATE 14,1:INPUT "Next play ",Z
970 IF Z<>INT(Z) OR Z<1 OR Z>7 THEN 990
980 IF ABS(Z-4)<=3 THEN 1010
990 PRINT "Illegal play number,enter integer between 1 and 7.":GOTO 950
1010 F=0
1011 IF P=1 THEN LOCATE 18,40:PRINT CHR$(27) CHR$(45)
1012 LOCATE 19,15:PRINT " "
1013 IF P=1 THEN LOCATE 19,10+X1/2:PRINT CHR$(195) CHR$(196) CHR$(196) CHR$(196) CHR$(196) CHR$(180)
1015 LOCATE 20,15:PRINT " "
1016 LOCATE 20,15+X/2:PRINT CHR$(25)
1017 IF P=1 THEN LOCATE 14,1:INPUT "Press enter key to continue ",B$
1020 LOCATE 5,1:FOR I=1 TO 12:PRINT " ":NEXT I
1022 LOCATE 5,1:PRINT L$(Z+6);". ";
1030 R=RND(1)*(0.98+FNF(1)*0.02)
1040 R1=RND(1)
1050 ON Z GOTO 1110,1150,1260,1480,1570,1570,1680
1060 REM ******** Dog Delay ********
1070 IF RND(1)> 1/3 THEN 940
1080 PRINT "Game delayed. Dog on field."
1090 PRINT
1100 GOTO 940
1110 REM ******** Simple Run ********
1120 Y=INT(24*(R-0.5)^3+3)
1130 IF RND(1)< 0.05 THEN 1180
1140 GOTO 2190
1150 REM ******** Tricky Run ********
1160 Y=INT(20*R-5)
1170 IF RND(1)>0.1 THEN 2190
1180 F=-1
1190 X3=X
1200 X=X+FNF(1)*Y
1210 IF ABS(X-50)>=50 THEN 1240
1220 SOUND 200,5 :SOUND 100,5:SOUND 50,5
1221 PRINT "*** Fumble after ";
1230 GOTO 2230
1240 SOUND 200,5 :SOUND 100,5:SOUND 50,5
1241 PRINT "*** Fumble."
1250 GOTO 2450
1260 REM ******** Short Pass ********
1270 Y=INT(60*(R1-0.5)^3+10)
1280 IF R<0.05 THEN 1330
1290 IF R<0.15 THEN 1390
1300 IF R<0.55 THEN 1420
1310 PRINT "Complete. ";
1320 GOTO 2190
1330 IF D=4 THEN 1420
1340 SOUND 300,8
1341 PRINT "Intercepted."
1350 F=-1
1360 X=X+FNF(1)*Y
1370 IF ABS(X-50)>=50 THEN 2450
1380 GOTO 2300
1390 PRINT "Passer tackled. ";
1400 Y=-INT(10*R1)
1410 GOTO 2190
1420 Y=0
1430 IF RND(1)<0.3 THEN 1460
1440 PRINT "Incomplete. ";
1450 GOTO 2190
1460 PRINT "Batted down. ";
1470 GOTO 2190
1480 REM ******** Long Pass ********
1490 Y=INT(160*(R1-0.5)^3+30)
1500 IF R<0.1 THEN 1330
1510 IF R<0.3 THEN 1540
1520 IF R<0.75 THEN 1420
1530 GOTO 1310
1540 PRINT "Passer tackled. ";
1550 Y=-INT(15*R1+3)
1560 GOTO 2190
1570 REM ******** Punt or Kick ********
1580 Y=INT(100*(R-0.5)^3+35)
1590 IF D=4 THEN 1610
1600 Y=INT(Y*1.3)
1610 PRINT Y;L$(3);" punt"
1620 IF ABS(X+Y*FNF(1)-50)>+50 THEN 1670
1630 IF D<4 THEN 1670
1640 Y1=INT(R1^2*20)
1650 PRINT Y1;L$(3);" Run back"
1660 Y=Y-Y1
1670 GOTO 1350
1680 REM ******** Place Kick ********
1690 Y=INT(100*(R-0.5)^3+35)
1700 IF R1>0.15 THEN 1750
1710 PRINT "Kick is blocked!!!"
1720 X=X-5*FNF(1)
1730 P=1-P
1740 GOTO 720
1750 X=X+FNF(1)*Y
1760 IF ABS(X-50)>=60 THEN 1810
1770 PRINT "Kick is short."
1780 IF ABS(X-50)>=50 THEN 2710
1790 P=1-P
1800 GOTO 630
1810 IF R1>0.5 THEN 1840
1820 PRINT "Kick is off to the side."
1830 GOTO 2710
1840 PRINT "Field Goal!"
1850 S(P)=S(P)+3
1860 GOTO 2640
1870 REM ******** Opponent's Play ********
1880 IF D>1 THEN 1940
1890 IF RND(1)> 1/3 THEN 1920
1900 Z=3
1910 GOTO 1010
1920 Z=1
1930 GOTO 1010
1940 IF D=4 THEN 2090
1950 IF 10+X-X1<5 THEN 1890
1960 IF X<5 THEN 1890
1970 IF X<=10 THEN 2160
1980 IF X>X1 THEN 2020
1990 A=INT(2*RND(1))
2000 Z=2+A*2
2010 GOTO 1010
2020 IF D<3 THEN 1990
2030 IF X<45 THEN 1990
2040 IF RND(1)> 1/4 THEN 2070
2050 Z=6
2060 GOTO 1010
2070 Z=4
2080 GOTO 1010
2090 IF X>30 THEN 2140
2100 IF 10+X-X1<3 THEN 1890
2110 IF X<3 THEN 1890
2120 Z=7
2130 GOTO 1010
2140 Z=5
2150 GOTO 1010
2160 A=INT(2*RND(1))
2170 Z=2+A
2180 GOTO 1010
2190 REM ******** Gain or Loss ********
2200 X3=X
2210 X=X+FNF(1)*Y
2220 IF ABS(X-50)>=50 THEN 2450
2230 IF Y=0 THEN 2250
2240 PRINT ABS(Y);L$(3);
2250 PRINT L$(15+SGN(Y))
2280 IF ABS(X3-50)>40 THEN 2300
2290 IF RND(1)<0.1 THEN 2860
2300 GOSUB 800
2310 IF F=0 THEN 2340
2320 P=1-P
2330 GOTO 740
2340 IF FNG(1)>=10 THEN 740
2350 IF D=4 THEN 2320
2360 D=D+1
2370 PRINT "Down ";D;" ";
2380 IF (X1-50)*FNF(1)<40 THEN 2410
2390 PRINT "Goal to go"
2400 GOTO 2420
2410 PRINT "Yards to go: ";10-FNG(1)
2420 PRINT :PRINT
2440 GOTO 860
2450 REM ******** Ball in End Zone ********
2460 IF X>=100 THEN 2490
2470 E=0
2480 GOTO 2500
2490 E=1
2500 ON 1+E-F*2+P*4 GOTO 2510,2590,2760,2710,2590,2510,2710,2760
2510 REM ******* Safety ********
2520 S(1-P)=S(1-P)+2
2530 PRINT L$(19)
2540 GOSUB 2800
2550 PRINT O$(P);" kicks off from its 20 yard line."
2560 X=20+P*60
2570 P=1-P
2580 GOTO 590
2590 REM ******** Offensive Touchdown ********
2600 PRINT L$(17);"***"
2610 IF RND(1)>0.8 THEN 2680
2620 S(P)=S(P)+7
2630 PRINT "Kick is GOOD!"
2640 GOSUB 2800
2650 PRINT O$(P);" kicks off. "
2660 P=1-P
2670 GOTO 580
2680 PRINT "Kick is off to the side."
2690 S(P) =S(P) +6
2700 GOTO 2640
2710 REM ********Touchback ********
2720 PRINT L$(18)
2730 P=1-P
2740 X=20+P*60
2750 GOTO 720
2760 REM ********Defensive Touchdown ********
2770 PRINT L$(17);"for ";O$(1-P);"***"
2780 P=1-P
2790 GOTO 2600
2800 REM ******** Score ********
2820 FOR TT = 1 TO 1000: NEXT TT:LOCATE 2,64:PRINT "**** SCORE ****"
2822 LOCATE 3,64:PRINT O$(0):LOCATE 3,76:PRINT S(0)
2824 LOCATE 4,65:PRINT O$(1):LOCATE 4,76:PRINT S(1)
2850 RETURN
2860 REM ******** Penalty ********
2870 P3=INT(2*RND(1))
2880 SOUND 3000,6:SOUND 20000,1:SOUND 3000,6
2881 PRINT O$(P3);" Offsides -- Penalty of 5 yards."
2890 PRINT :PRINT
2910 IF P3=0 THEN 2980
2920 PRINT "Do you accept the penalty"
2930 A$=INKEY$: IF A$="" THEN 2930
2940 IF LEFT$(A$,1) = "N" OR LEFT$(A$,1) = "n" THEN 2300
2950 IF LEFT$(A$,1) = "Y" OR LEFT$(A$,1) = "y" THEN 3110
2960 PRINT "Please type either `yes' or `no'"
2970 GOTO 2920
2980 REM ******** Opponent's Strategy on Penalty ********
2990 IF P=1 THEN 3040
3000 IF Y<=0 THEN 3080
3010 IF F<0 THEN 3080
3020 IF FNG(1)<3*D-2 THEN 3080
3030 GOTO 3100
3040 IF Y<=5 THEN 3100
3050 IF F<0 THEN 3100
3060 IF D<4 THEN 3080
3070 IF FNG(1)<10 THEN 3100
3080 PRINT "Penalty Refused."
3090 GOTO 2300
3100 PRINT "Penalty Accepted."
3110 F=0
3120 D=D-1
3130 IF P<>P3 THEN 3160
3140 X=X3-FNF(1)*5
3150 GOTO 2300
3160 X=X3+FNF(1)*5
3170 GOTO 2300
3180 SYSTEM
10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│ │░"
70 PRINT"░│ 2084-A.BAS │░"
80 PRINT"░│ FOOTBALL │░"
90 PRINT"░│ │░"
100 PRINT"░│ │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
130 PRINT"░│ █ █ █ █ █ █ │░"
140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
150 PRINT"░│ █ █ █ █ █ │░"
160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
170 PRINT"░│ │░"
180 PRINT"░│ International PC Owners │░"
190 PRINT"░│ │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│ │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT " PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 CLS:KEY OFF
1010 PRINT ,"F O O T B A L L"
1020 PRINT
1030 PRINT "WOULD YOU LIKE INSTRUCTIONS FOR PLAYING FOOTBALL";
1040 INPUT I$
1050 IF LEFT$(I$,1)<>"Y" THEN 1330
1060 PRINT
1070 PRINT
1080 PRINT "ON OFFENSE YOU HAVE THE FOLLOWING PERMITTED PLAYS:"
1090 PRINT "PLAY","CODE"
1100 PRINT "RUN","10"
1110 PRINT "PASS","11"
1120 PRINT "SWEEP","12"
1130 PRINT "SCREEN PASS","13"
1140 PRINT "LONG PASS","14"
1150 PRINT "DRAW PLAY","15"
1160 PRINT "PUNT","16"
1170 PRINT "FIELDGOAL","17"
1180 PRINT
1190 PRINT "ON DEFENSE, YOU MAY TRY ONE OF THE FOLLOWING:"
1200 PRINT "DEFENSE","CODE"
1210 PRINT "NORMAL","4","GOOD AGAINST SWEEP AND SCREEN"
1220 PRINT "HOLD","5","GOOD AGAINST RUN, PASS AND DRAW"
1230 PRINT "BLITZ","6","GOOD AGAINST PASS OR LONG PASS"
1240 PRINT "INTERCEPT","7","INCREASES THE ODDS FOR AN INTERCEPTION"
1250 PRINT "BLOCK","8","GIVES YOU A CHANCE TO BLOCK A KICK,"
1260 PRINT " "," ","BUT DECREASES THE DISTANCE RUNBACK."
1270 PRINT :PRINT"HIT ANY KEY"
1280 A$=INKEY$:IF A$="" THEN 1280
1290 PRINT "TO CALL A PARTICULAR PLAY JUST TYPE ITS CODE NUMBER."
1300 PRINT "ALSO, AT ANY TIME DURING PLAY YOU MAY CALL TIME OUT"
1310 PRINT "BY TYPING A '2'. HOWEVER YOU ARE PERMITTED ONLY THREE"
1320 PRINT "TIMEOUTS PER HALF."
1330 PRINT
1340 PRINT
1350 DEF FNT(X)=SIN(X)/COS(X)
1360 DIM R(17)
1370 FOR I=0 TO 17
1380 READ R(I)
1390 NEXT I
1400 DATA 9,13,100,0,9,10,12,11,12,0,1,5,3,4,6,2,8,7
1410 F=0
1420 Z3=0
1430 O=0
1440 L=0
1450 DIM Z(5,3),P(2),D(2,5)
1460 FOR A=0 TO 5
1470 FOR B=0 TO 2
1480 READ Z(A,B),D(B,A)
1490 P(B)=0
1500 NEXT B
1510 READ Z(A,3)
1520 NEXT A
1530 PRINT "DO YOU WANT TO RECEIVE";
1540 X=1
1550 INPUT I$
1560 S=1
1570 IF LEFT$(I$,1)="Y" THEN S=2
1580 K=S
1590 T1=120
1600 U2=3
1610 U=3
1620 C=900
1630 GOSUB 3250
1640 F1=50
1650 B=INT(F1+O*20*RND(1)+(1-O)*29*(2-RND(0)^7-RND(0)^(3-Z2)))
1660 O=0
1670 Z9=8
1680 GOSUB 2490
1690 L=0
1700 IF B<=99 THEN 3340
1710 PRINT "A TOUCHBACK"
1720 B=20
1730 L=0
1740 IF S=2 THEN 1770
1750 PRINT "MY ";
1760 GOTO 1780
1770 PRINT "YOUR ";
1780 GOSUB 4290
1790 GOSUB 3980
1800 D=1
1810 F2=0.03
1820 O=0
1830 IF C<=0 THEN 3770
1840 GOSUB 3530
1850 Z2=1
1860 Z3=0.3
1870 IF C<=F*T1 THEN 3920
1880 IF C<=0 THEN 3770
1890 IF L=0 THEN 1910
1900 PRINT "TIME TO GO--";
1910 PRINT INT(C/60);"MIN,";C-60*INT(C/60);"SEC. ";
1920 PRINT "YOUR PLAY";
1930 GOSUB 4610
1940 IF S=1 THEN 1980
1950 IF Q>8 THEN 1920
1960 M=Q
1970 GOTO 2000
1980 Y=Q-8
1990 IF ABS(Q-10.5)^2>3 THEN 1920
2000 C=INT(C-L*(5+23*RND(1)))
2010 L=1
2020 IF M=7 THEN 2760
2030 IF M=8 THEN 2920
2040 Y1=Y-1
2050 IF RND(1)>Z(M-1,Y1) THEN 2240
2060 A=2
2070 GOSUB 4020
2080 IF M<4 THEN 2110
2090 PRINT "PASS COMPLETE..";
2100 L=SGN(INT(4*RND(1)))
2110 IF RND(1)<F2 THEN 3510
2120 IF G>0 THEN 2210
2130 IF G=0 THEN 2170
2140 IF G+B<1 THEN 3170
2150 PRINT "LOSS OF";-G;
2160 GOTO 2610
2170 PRINT "NO GAIN"
2180 Z9=2
2190 GOSUB 2490
2200 GOTO 2670
2210 IF B+G>99 THEN 2650
2220 PRINT "GAIN OF";G;
2230 GOTO 2610
2240 IF M>3 THEN 2280
2250 A=1
2260 GOSUB 4020
2270 GOTO 2120
2280 IF RND(1)<0.06*(2-SGN(Y-3)) THEN 2360
2290 IF RND(1)<0.05+INT(Y/3.5)/5 THEN 2510
2300 Z9=6
2310 GOSUB 2490
2320 PRINT "PASS INCOMPLETE"
2330 L=0
2340 G=0
2350 GOTO 4120
2360 PRINT "PASS **INTERCEPTED**";
2370 A=1
2380 GOSUB 4020
2390 IF B<40 THEN 2410
2400 G=20*(1+SGN(G))
2410 B=100-B-G
2420 S=3-S
2430 Z9=9
2440 GOSUB 2490
2450 IF B<1 THEN 1710
2460 IF B>99 THEN 2650
2470 PRINT "AT ";
2480 GOTO 3360
2490 C=C-INT(4+Z9/2*(1+RND(1)))
2500 RETURN
2510 G=-(5+INT(10*RND(1)))
2520 PRINT "THE QUARTERBACK ";
2530 IF RND(1)>0.5 THEN 2560
2540 PRINT "IS THROWN FOR A ";
2550 GOTO 2110
2560 G=-(2*G+8)
2570 M=5
2580 A=1
2590 PRINT "SCRAMBLES FOR A ";
2600 GOTO 2110
2610 B=B+G
2620 PRINT "TO ";
2630 GOSUB 4300
2640 IF B<=99 THEN 2670
2650 GOSUB 2990
2660 GOTO 1630
2670 IF B1>B THEN 4120
2680 IF B1<B THEN 2730
2690 IF RND(1)>0.5 THEN 2730
2700 PRINT "**MEASUREMENT**"
2710 GOSUB 4520
2720 IF RND(1)<0.5 THEN 4120
2730 GOSUB 3980
2740 D=0
2750 GOTO 4120
2760 IF RND(1)<0.06 THEN 2890
2770 B=B+30+INT(15*(1-RND(1)^3))
2780 Z9=2
2790 GOSUB 2490
2800 IF B<=99 THEN 2850
2810 P1=3
2820 GOSUB 3030
2830 IF P1=0 THEN 1710
2840 GOTO 1630
2850 PRINT "THE KICK IS ";
2860 Z2=0
2870 S=3-S
2880 GOTO 3340
2890 PRINT "**BLOCKED** RECOVERED..";
2900 G=-INT(14*RND(1))
2910 GOTO 2410
2920 PRINT "THE PUNT IS ";
2930 IF RND(1)<0.06 THEN 2890
2940 F1=B
2950 Z2=1
2960 S=3-S
2970 Z3=0.65
2980 GOTO 1650
2990 PRINT "** TOUCHDOWN**"
3000 P1=1
3010 P(S)=P(S)+6
3020 B=130
3030 PRINT "THE KICK IS ";
3040 IF RND(1)<(B/132)^4 THEN 3070
3050 P1=0
3060 PRINT "NO ";
3070 PRINT "GOOD"
3080 P(S)=P(S)+P1
3090 GOSUB 3120
3100 S=3-S
3110 RETURN
3120 PRINT "SCORE: ME";P(1);" YOU";P(2)
3130 L=0
3140 IF X<5 THEN 3160
3150 IF P(1)<>P(2) THEN 3770
3160 RETURN
3170 PRINT "**SAFETY**"
3180 P(3-S)=P(3-S)+2
3190 F1=30
3200 S=3-S
3210 GOSUB 3120
3220 GOSUB 4440
3230 PRINT "FROM THE 20"
3240 GOTO 1650
3250 GOSUB 4440
3260 IF S=2 THEN 3330
3270 PRINT "ON-SIDE";
3280 INPUT I$
3290 IF LEFT$(I$,1)<>"Y" THEN 3330
3300 F2=0.15
3310 Z2=1
3320 O=1
3330 RETURN
3340 B=100-B
3350 PRINT "RECEIVED AT ";
3360 GOSUB 4300
3370 IF Z2*RND(1)>Z3 THEN 3490
3380 IF RND(1)<F2 THEN 3500
3390 G=5+INT(100*RND(1))
3400 IF RND(1)<0.15 THEN 3430
3410 G=INT(24*(1-RND(1)^2))
3420 IF G=0 THEN 3490
3430 B=B+G
3440 PRINT " AND RUN BACK...";
3450 L=1
3460 IF B>99 THEN 2650
3470 PRINT " TO ";
3480 GOSUB 4300
3490 IF RND(1)>F2 THEN 4260
3500 G=0
3510 PRINT "**FUMBLE**";
3520 GOTO 2410
3530 IF S=1 THEN 3560
3540 Y=INT(1+3.5*RND(1))
3550 RETURN
3560 M=INT(55*RND(1)/10.5)+1
3570 IF (B1-B)/(5-D)<3 THEN 3590
3580 M=INT(6-4*RND(1)^2)
3590 IF L*F*60>=C THEN 3670
3600 IF D<4 THEN 3550
3610 PRINT "I'LL ";
3620 IF B<55 THEN 3720
3630 IF 0<4*RND(1)-B1+B THEN 3750
3640 PRINT "TRY FOR A FIELD GOAL"
3650 M=7
3660 RETURN
3670 IF P(2)*U2<=P(1)*U2 THEN 3600
3680 PRINT "TIME OUT"
3690 U2=U2-1
3700 GOSUB 4520
3710 GOTO 3600
3720 PRINT "PUNT"
3730 M=8
3740 RETURN
3750 PRINT "GO FOR IT"
3760 RETURN
3770 IF X<4 THEN 3830
3780 IF P(1)=P(2) THEN 3830
3790 PRINT "THE GAME IS OVER"
3800 PRINT "FINAL ";
3810 GOSUB 3120
3820 STOP
3830 PRINT "END OF PERIOD";X
3840 GOSUB 3120
3850 F=1-F
3860 GOSUB 4520
3870 C=900
3880 X=X+1
3890 IF F<>0 THEN 1810
3900 S=3-K
3910 GOTO 1580
3920 IF T1=0 THEN 3770
3930 PRINT "2 MINUTE WARNING"
3940 GOSUB 4520
3950 T1=0
3960 C=120
3970 GOTO 1880
3980 B1=B+10
3990 IF B1<=100 THEN 4010
4000 B1=100
4010 RETURN
4020 Q=1.3*(A*RND(1)-1)-0.06
4030 A=1
4040 IF Q>=0 THEN 4070
4050 A=0
4060 Q=-Q
4070 M1=M-1
4080 G=D(A,M1)+FNT(Q)*(D(2,M1)-D(A,M1))/3.5
4090 G=G+INT(RND(1)+0.02)*A*100*RND(1)
4100 G=INT(G)
4110 RETURN
4120 D=D+1
4130 IF D=5 THEN 4240
4140 IF D<> 1 THEN 4160
4150 PRINT "1ST";
4160 IF D<>2 THEN 4180
4170 PRINT "2ND";
4180 IF D<>3 THEN 4200
4190 PRINT "3RD";
4200 IF D<4 THEN 4220
4210 PRINT "4TH";
4220 PRINT " AND";B1-B;" ";
4230 GOTO 1810
4240 S=3-S
4250 B=100-B
4260 IF S=2 THEN 1770
4270 PRINT "MY ";
4280 GOTO 1780
4290 PRINT "BALL ON ";
4300 IF B=50 THEN 4400
4310 V=50-ABS(B-50)
4320 C=C-INT(7+3*RND(1))
4330 IF S=1 THEN 4420
4340 IF B<50 THEN 4370
4350 PRINT "MY ";
4360 GOTO 4380
4370 PRINT "YOUR ";
4380 PRINT V
4390 RETURN
4400 PRINT "THE 50"
4410 RETURN
4420 IF B<50 THEN 4350
4430 GOTO 4370
4440 IF S=2 THEN 4470
4450 PRINT "YOU";
4460 GOTO 4480
4470 PRINT "I";
4480 PRINT " KICK OFF."
4490 F2=0.06
4500 Z2=0
4510 RETURN
4520 L=0
4530 PRINT "TIMEOUT CALLED..."
4540 PRINT
4550 RETURN
4560 IF U=0 THEN 4600
4570 U=U-1
4580 GOSUB 4520
4590 GOTO 4610
4600 PRINT "..WRONG, TRY AGAIN"
4610 INPUT A
4620 IF ABS(INT(A))>17 THEN 4600
4630 Q=R(INT(ABS(A)))
4640 IF Q=0 THEN 4600
4650 IF Q=100 THEN 4560
4660 RETURN
4670 DATA .5,-2,.25,4,.5,13,.55
4680 DATA .4,-2,.3,7,.65,15,.75
4690 DATA .4,-2,.3,6,.6,15,.35
4700 DATA .65,-2,.65,6,.6,17,.9
4710 DATA .4,2,.7,10,.4,27,.2
4720 DATA .1,19,.4,35,.2,100,.1
4730 SYSTEM
10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│ │░"
70 PRINT"░│ 2062-A.BAS │░"
80 PRINT"░│ EL GRINCH │░"
90 PRINT"░│ │░"
100 PRINT"░│ │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
130 PRINT"░│ █ █ █ █ █ █ │░"
140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
150 PRINT"░│ █ █ █ █ █ │░"
160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
170 PRINT"░│ │░"
180 PRINT"░│ International PC Owners │░"
190 PRINT"░│ │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│ │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT " PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 KEY 8,"SOUND " :KEY 6,":" :KEY 5,"GOSUB " :DIM M(88),O(70) :KEY 9,"WIDTH 80"
1010 POKE &H417,64 :CLS :RANDOMIZE VAL(MID$(TIME$,7)) :KEY 7,"TAB(" :DEF SEG=0
1020 SCREEN 0,0,0 :WIDTH 80 :POKE &H417,64
1030 KEY OFF :GOSUB 1820
1040 PRINT" ********************** THIS IS THE GAME OF EL'GRINCH *************************"
1050 PRINT:PRINT
1060 PRINT TAB(27)"DO YOU NEED INSTRUCTIONS ?" :PRINT
1070 PRINT TAB(24)"(TYPE `Y' FOR YES OR `N' FOR NO)"
1080 Z$=INKEY$ :IF Z$="" THEN 1080 :CLS
1090 IF Z$="N" THEN 1340
1100 CLS :PRINT TAB(15)"The Grinch is a little insect sort of like a Beanbug. " :PRINT: GOSUB 2060
1110 PRINT TAB(29)"He makes a sound like this:" :GOSUB 2080 :GOSUB 1810
1120 PRINT :PRINT TAB(16)"He likes to hide in the bean field and eat all day." :GOSUB 2060
1130 CLS :SCREEN 1,0 :PRINT TAB(5)"THE BEAN FIELD LOOKS LIKE THIS:"
1140 PRINT
1150 FOR K=9 TO 0 STEP -1
1160 PRINT TAB(4);K;TAB(8);"& & & & & & & & & &" :PRINT
1170 NEXT
1180 PRINT TAB(8)"A B C D E F G H I J" :GOSUB 2090
1190 GOSUB 1810
1200 CLS :PRINT TAB(4)"THIS IS WHAT A GRINCH BUG LOOKS LIKE:" :GOSUB 1900
1210 LOCATE 10,13 :PRINT"FAST ISN'T HE ?"
1220 GOSUB 2060
1230 SCREEN 0,0,0 :WIDTH 80
1240 PRINT TAB(2)"The object of the game is to discover which bean plant the Grinch is hiding in." :PRINT :PRINT
1250 PRINT TAB(2)"Each plant is identified by letter and number found along the fence rows." :PRINT :PRINT
1260 PRINT TAB(2)"Enter the location of the plant where you think the Grinch is, first by number,"
1270 PRINT TAB(2)"then by letter. Each time you select a number/letter pair, the bush you have" :PRINT
1280 PRINT TAB(2)"selected will disappear. The Grinch becomes frightened and chirps. Since he" :PRINT
1290 PRINT TAB(2)"is not as frightened when you are far away as when you are close, the farther" :PRINT
1300 PRINT TAB(2)"away you are, the longer he chirps. You must locate him by SOUND ONLY !" :PRINT :PRINT :PRINT
1310 PRINT TAB(13)"(REMEMBER THE CLOSER YOU ARE THE SHORTER THE CHIRPS.)"
1320 COLOR 15,0 :PRINT :PRINT :PRINT TAB(25)"PRESS ANY KEY TO BEGIN PLAY."
1330 G$=INKEY$ :IF G$="" THEN 1330
1340 A=INT(10*RND(1)) :J=0 :RESTORE
1350 B=INT(10*RND(A))
1360 IF A=0 THEN 1340
1370 GOSUB 2080
1380 CLS :SCREEN 1,0 :FOR K=9 TO 0 STEP -1
1390 PRINT TAB(4);K;TAB(8)"& & & & & & & & & &" :PRINT
1400 NEXT
1410 PRINT TAB(8)"A B C D E F G H I J" :GOSUB 2080
1420 LOCATE 22,5 :PRINT " ";
1430 LOCATE 23,5 :PRINT "WHICH PLANT IS THE GRINCH IN ? ";
1440 LOCATE 25,5 :PRINT "ENTER NUMBER: ";
1450 IF INKEY$ <> "" THEN 1450
1460 N$=INKEY$ :IF N$="" THEN 1460
1470 U=ASC(N$) :IF U<48 OR U>57 THEN GOSUB 1790 :'THROWS AWAY NON-NUMBERS
1480 IF N$=CHR$(32) THEN 1440
1490 Y=VAL(N$):LOCATE 25,19 :PRINT N$;
1500 LOCATE 25,22:PRINT "ENTER LETTER:";
1510 IF INKEY$ <> "" THEN 1510
1520 A$=INKEY$ :IF A$="" THEN 1520
1530 V=ASC(A$) :IF V<64 OR V>74 THEN GOSUB 1780 :'THROWS AWAY NON-LETTERS
1540 X=ASC(A$)-64 :LOCATE 25,36 :PRINT A$; :IF X<1 OR X>10 THEN 1500
1550 C=((3*X)+5) :R=(19-(2*Y)) :LOCATE R,C :PRINT CHR$(32) :'REMOVES DOTS
1560 IF X<1 OR X>10 THEN 1500
1570 D=SQR(((ABS(X-A))^2)+((ABS(Y-B))^2)) :'STRAIGHT LINE DISTANCE TO GRINCH
1580 D=INT(10*D)/10 :' ROUND OFF D
1590 IF D=0 GOTO 2330
1600 GOSUB 1860
1610 J=J+1 :IF J>6 THEN 1630
1620 GOSUB 2140 :GOTO 1430
1630 LOCATE 23,4 :PRINT "WAN'T TO KNOW WHERE THE GRINCH IS?"; :BEEP :SOUND 1000,10 :GOSUB 2110
1640 LOCATE 25,12 :PRINT "(TYPE `Y' OR `N') ";
1650 H$=INKEY$ :IF H$="" THEN 1650
1660 IF H$="N" THEN 1700
1670 LOCATE 25,10 :PRINT "THE GRINCH WAS AT ";B;CHR$(A+64); :GOSUB 2060
1680 GOSUB 1810
1690 GOTO 2260
1700 GOSUB 2100 :LOCATE 23,7 :PRINT "WOULD YOU LIKE A LITTLE HINT ?";:PLAY "CAF"
1710 LOCATE 25,12 :PRINT "(TYPE `Y' OR `N')";
1720 J$=INKEY$ :IF J$="" THEN 1720
1730 IF J$="N" THEN 1380
1740 GOSUB 2100
1750 LOCATE 23,5 :PRINT "THE GRINCH IS HIDIHG IN ROW ";B;"."; :GOSUB 1810
1760 LOCATE 25,5 :PRINT "NOW GO BACK THERE AND GET HIM!";:GOSUB 2070
1770 J=2 :GOSUB 2130 :GOTO 1430
1780 SOUND 40,10 :SOUND 32767,10 :A$=CHR$(32) :RETURN :'SETS A$ TO A BLANK
1790 SOUND 40,10 :SOUND 32767,10 :N$=CHR$(32) :RETURN :`SETS N$ TO A BLANK
1800 STOP
1810 FOR P= 2000 TO 3000 STEP 100 :SOUND P,0.5 :NEXT :SOUND 30000,2 :FOR Q=2000 TO 3000 STEP 100 :SOUND Q,0.5 :NEXT :RETURN:`2 CHIRPS
1820 FOR S=1 TO 5 STEP 1 :REM 5 CHIRPS
1830 FOR O=3000 TO 4000 STEP 1000 :SOUND O,0.5 :NEXT :SOUND 30000,2
1840 NEXT
1850 RETURN
1860 FOR S= 1 TO D STEP 1 :' AUTO CHIRP DISTANCE ROUTENE
1870 FOR T=3000 TO 3000 STEP 1000 :SOUND T,0.5 :NEXT :SOUND 30000,2
1880 NEXT
1890 RETURN
1900 FOR A=2 TO 40 STEP 1
1910 LOCATE 23,A-1:PRINT " "
1920 LOCATE 23,A:PRINT "*"
1930 NEXT
1940 LOCATE 22,40:PRINT " "
1950 RETURN
1960 O(0) = 0
1970 O(39)=5:O(40)=7:O(41)=8:O(42)=9
1980 O(43)=10:O(44)=11:O(45)=13:O(46)=14
1990 O(47)=15:O(48)=16:O(49)=17:O(50)=18
2000 O(51)=19:O(52)=21:O(53)=22:O(54)=23
2010 O(55)=24:O(56)=25:O(57)=27:O(58)=28
2020 O(59)=29:O(60)=30:O(61)=31:O(62)=32
2030 O(63)=33:O(64)=35:O(65)=36:O(66)=37
2040 O(67)=38:O(68)=39:O(69)=40:O(70)=42
2050 GOTO 2380
2060 FOR S= 1 TO 10 :SOUND 30000,5 :NEXT :RETURN:`3 SEC. DELAY
2070 FOR S= 1 TO 15 :SOUND 30000,5 :NEXT :RETURN:`5 SEC. DELAY
2080 FOR S= 1 TO 5 :SOUND 30000,5 :NEXT :RETURN:`1.5 SEC DELAY
2090 FOR S=1 TO 20 :SOUND 30000,5 :NEXT :RETURN :`6 SEC. DELAY
2100 FOR I=1 TO 39 :LOCATE 23,I :PRINT " ";:NEXT :' ERASES LINES 23-25
2110 FOR I=1 TO 39 :LOCATE 24,I :PRINT " ";:NEXT
2120 FOR I=1 TO 39 :LOCATE 25,I :PRINT " ";:NEXT :RETURN
2130 FOR I=1 TO 39 :LOCATE 23,I :PRINT " ";:NEXT :' ERASES LINES 23 & 25
2140 FOR I=1 TO 39 :LOCATE 25,I :PRINT " ";:NEXT :RETURN
2150 COLOR 31,0 :PRINT "COLOR 31,0" :GOSUB 2060
2160 COLOR 15,0 :PRINT "COLOR 15,0" :GOSUB 2060
2170 COLOR 0,7 :PRINT "COLOR 0,7" :GOSUB 2060
2180 COLOR 15,0
2190 DATA 52,2,57,2,0,2,52,2,57,2,0,2,52,2,57,6,0,4,52,2,57,2,59,2,57,2,56,4
2200 DATA 57,2,59,2,0,8,52,2,56,2,0,2,52,2,56,2,0,2,52,2,56,6,0,4,52,2
2210 DATA 56,2,57,2,56,2,54,4,56,2,57,2,0,6,64,2,63,2,64,2,61,2,60,2,61,2
2220 DATA 57,2,56,2,57,2,52,2,0,4,49,2,50,2,52,2,54,2,56,2,57,2,59,2,61,2
2230 DATA 62,2,59,2,0,4,62,2,61,2,62,2,59,2,58,2,59,2,56,2,55,2,56,2,52,2
2240 DATA 0,4,64,2,63,2,64,2,66,2,64,2,62,2,61,2,59,2,57,2
2250 DATA -1,-1
2260 CLS :PRINT TAB(7)"WOULD YOU LIKE TO PLAY AGAIN?" :PRINT
2270 PRINT TAB(12)"(TYPE `Y' OR `N')"
2280 O$=INKEY$ :IF O$="" THEN 2280
2290 IF O$="Y" THEN 1340
2300 CLS :PRINT TAB(14)"SO LONG AMIGO !" :GOSUB 1820
2310 GOSUB 2070
2320 CLS :SYSTEM
2330 CLS :LOCATE 12,12,0 :PRINT "CONGRATULATIONS!!"
2340 T=J+1 :PRINT :PRINT TAB(1)"You found the Grinch after only";T;"tries."
2350 FOR I=7 TO 88 :M(I) = 30*(2^(1/12))^(I-6) :NEXT
2360 FOR I=0 TO 6 :M(I) = 32767 :NEXT
2370 CLS :GOTO 1960
2380 READ J,K :IF J=-1 THEN 2260
2390 POKE 106,0 :Q=O(J)-5 :R=INT((O(J))/3) :IF J>64 OR J<39 THEN 2410
2400 LOCATE R,Q :PRINT CHR$(2) :GOTO 2410
2410 SOUND M(J),K :IF J=0 AND K=1 THEN 2430
2420 SOUND 32767,1
2430 IF J>64 OR J<39 THEN 2380
2440 LOCATE R,Q :PRINT CHR$(32) :GOTO 2380
2450 GOTO 2380
10 DEFINT A-Z:KEY OFF:CLS:COLOR 10,0:RANDOMIZE VAL(RIGHT$(TIME$,2))
20 PRINT TAB(12);"Welcome to the ESCAPE FROM MARS Adventure":PRINT:PRINT
30 INPUT "Do you need the instructions";A$:A$=LEFT$(A$+" ",1)
40 IF A$="y" OR A$="Y" THEN GOSUB 2100 ELSE PRINT
50 DIM D$(18),O$(54),L(48),P(18,6),W(11):L=1:L2=1:BS$=CHR$(29)
60 FOR X=1 TO 18:READ D$(X):NEXT
70 DATA Control Room,Engine Room,Barren Field,Moat
80 DATA Plaza,Ancient Temple,Dry Well,Deserted Room,Garden
90 DATA Observatory,Kitchen (I Think),Maze of Halls
100 DATA Dank Cellar,Secret Passage
110 DATA Xptl's Shop of Mating Scents,Martian Habitat
120 DATA Ledge Overlooking the city,Sandsled
130 FOR X=1 TO 54:READ O$(X):IF X>6 THEN READ L(X-6)
140 NEXT :DATA North,South,East,West,Up,Down
150 DATA Net,2,Fast-Gro,20,Holy Grail,5,Seeds,20
160 DATA Alchohol,20,Brass Tubing,13,Sculpture of Violin Player,3
170 DATA Gold Bars,13,Torch,6
180 DATA Injector Pump,7,Harmonica,20,Lighter,20,Sneakers,19,Table,15
190 DATA Helmet,20,Martian,20,Timepiece,19,Bill of materials for Still,19
200 DATA Jeweled Club,18,Oxygen Tank,19
210 DATA Air-Rocks,3,Flask,15,Textbook,1,Crate (closed),2
220 DATA Trapdoor (open),20,Mirror on Wall,8
230 DATA Rope,17,Sign,5,Rug,8,Water,4,Organ,8,Fire,20
240 DATA [Sign] USE FERTILIZER,9
250 DATA Button (red push type),1,Sandsled,3,Oven,11,Kettle,11
260 DATA Control Panel,1,"Rack with sign: PLACE INJECTOR HERE",2
270 DATA "Outside Oxygen: .15 atm",2,Recharging Station,2,Statue of Venus?,6
280 DATA Ramp,7,Locker,2,Dry Well,6,Viewport,1,"[Sign] BRING FUEL HERE",2
290 DATA pockets,20
300 FOR Y=1 TO 18:FOR X=1 TO 6:READ P(Y,X):NEXT X,Y
310 DATA ,,,,,2,,,3,,1,,4,4,5,2,,,3,3,4,4,4,4
320 DATA 6,15,8,3,,,,5,9,,,,,,12,,,
330 DATA ,,,5,,,,,,6,,,,,,17,
340 DATA 14,,16,,,,,,,,,,,,,12,,,
350 DATA ,,,10,,8,5,,,,16,,11,,,,,15
360 DATA ,,10,,,,,,,,,3
370 FOR X=1 TO 11:READ W(X):NEXT
380 DATA 0,27,0,17,27,27,17,7,17,27,17
390 FOR X=1 TO 9:READ S:S$=S$+CHR$(S+61):NEXT X
400 DATA 5,8,8,23,11,18,25,8,17
410 W$="GO GETLOODROHITOPETIELIGUNLPUSPLA...CATREA...BRE......IGNEXT"
420 N$="N 01S 02E 03W 04U 05D 06GRA09WHE10TUB12PUM16CLU25TAN26"
430 O$= "NOR SOU EAS WES UP DOW NET FAS HOL SEE ALC BRA SCU GOL TOR INJ "
440 O$=O$+"HAR LIG SNE TAB HEL MAR TIM BIL JEW OXY AIR FLA TEX CRA TRA MIR "
450 O$=O$+"ROP SIG RUG WAT ORG FIR SIG BUT SAN OVE KET CON RAC LOW REC STA "
460 O$=O$+"RAM LOC WEL VIE SIG POC"
470 GOTO 800
480 IF L=12 THEN FOR X=1 TO 6:P(12,X)=0:NEXT:P(12,INT(2*RND(8))+1)=13
490 IF L(15)<>0 THEN L(30)=4
500 P(12,(INT(RND(8)* 2)+3))=7:IF L=2 THEN O=0
510 G=G+1:IF G<60 OR RND(8)<0.9 OR L(16)<>20 THEN 540
520 X=INT(RND(8)*31):IF L(X)<>0 AND L(X)<>20 THEN L(X)=INT(RND(8)*18)+1
530 PRINT "I hear a faint rustling sound."
540 IF RND (8)>0.9799999 AND L(16)=20 THEN PRINT "I think you're being watched!"
550 IF L>2 THEN O=O+1:IF O>50 THEN PRINT "Low Oxygen Warning - RECHARGE"
560 IF L>2 AND L(20)<>0 THEN O=O+7
570 IF O>63 AND L>2 THEN COLOR 0,7 :PRINT "Gasp, Gasp, You died from lack of air.";:GOTO 2030
580 IF L(4)<>11 OR L(6)<>11 OR L(32)<>11 OR L(30)<>11 OR GR=0 THEN 600
590 O$(43)="Still":IF L(5)=20 THEN L(5)=11
600 S=0:F=0:COLOR 10,0:PRINT:INPUT "What do you want to do";A$:PRINT:COLOR 2
610 AA$=A$:B$=" ":FOR X=1 TO LEN(A$)
620 IF MID$(A$,X,1)=" " THEN B$=MID$(A$+" ",X+1,3)
630 NEXT
640 IF LEN(A$)=1 THEN B$=A$+" ":A$="GO "
650 GOSUB 1950:L2=L
660 IF L(4)=9 AND L(30)=9 AND L(2)=9 THEN GR=1:O$(10)="Wheat":L(30)=4
670 X=INSTR(N$,B$):IF X MOD 5 = 1 THEN S=VAL(MID$(N$,X+3,2)):GOTO 690
680 X=INSTR(O$,B$):IF X MOD 4 = 1 THEN S=(X+3)/4
690 X=INSTR(W$,A$):IF X MOD 3=1 THEN F=(X+2)/3
700 IF F>11 THEN F=F-11
710 IF A$="INV" THEN 1060
720 IF S<W(F) MOD 10 THEN PRINT"I don't understand that word!":GOTO 480
730 IF INT(W(F)/10)=1 THEN IF L(S-6)<>0 THEN PRINT "You don't have it!":GOTO 480
740 IF W(F)>20 THEN IF L(S-6)<>L THEN PRINT "The "O$(S)" isn't here!":GOTO 480
750 ON F GOTO 780,870,1100,1290,1470,1540,1580,1640,1730,1750,1810
760 PRINT"I don't know how to do that!":GOTO 480
770 -GO <DIRECTION>-
780 IF S<1 OR S>6 OR L=6 AND S=4 THEN 1330
790 IF P(L,S)>0 THEN L=P(L,S):L2=L
800 COLOR 2,0:PRINT "You are in the ";D$(L):Y=0
810 IF LI=0 AND (L=7 OR L=13 OR L=14) THEN PRINT "Its dark. You can't see!" :GOTO 480
820 PRINT "You see: ";:FOR X=1 TO 47:IF L(X)=L2 THEN PRINT O$(X+6);", ";:Y=Y+1
830 NEXT:IF Y=0 THEN PRINT "nothing" ELSE PRINT BS$BS$" "
840 PRINT "Obvious exits are: ";:FOR X=1 TO 6:IF P(L,X)>0 THEN PRINT O$(X);" ";
850 NEXT:PRINT:GOTO 480
860 REM -GET-
870 IF S=11 OR S=22 THEN 960
880 IF C>6 THEN PRINT "You can't carry any more.":GOTO 480
890 IF S>37 THEN PRINT "You can't get that.":GOTO 480
900 IF S>31 THEN ON S-31 GOTO 920,930,940,950,960
910 L(S-6)=0:C=C+1:PRINT "You got the "O$(S)".":GOTO 480
920 PRINT "It's glued to the wall, but it's fragile.":GOTO 480
930 PRINT "The sign fell.":L(27)=0:GOTO 480
940 PRINT "Its tied to a ledge on the second floor.":GOTO 480
950 L(29)=0:IF L=8 THEN PRINT "AHA!":L(25)=8:GOTO 480
960 V$="In":GOSUB 1980:IF W<7 THEN S=W:GOTO 720 ELSE IF L(W-6)<>0 THEN 1270
970 IF S<>22 THEN 990
980 IF W<>7 THEN PRINT "He got away.":L(16)=20:M=0:GOTO 480 ELSE O$(7)="Netfull of Martian":M=5:L(16)=21:L(15)=L: PRINT "You caught the Martian.":GOTO 480
990 IF S<>11 THEN 1010 ELSE IF W<>28 THEN PRINT "It evaporated.":GOTO 480
1000 IF L(22)=0 THEN C=C-1:GOTO 910 ELSE 1040
1010 IF W=28 THEN PRINT "The flask dissolved.":L(22)=15:GOTO 480
1020 IF W=9 THEN PRINT "The Water leaked out; Its a Holey Grail.":GOTO 480
1030 IF W=21 THEN C=C-1:GOTO 910
1040 PRINT "I don't think that will work.":GOTO 480
1050 REM -INVENTORY-
1060 PRINT "You're carrying: ";:Y=0:FOR X=1 TO 34
1070 IF L(X)=0 THEN PRINT O$(X+6)", ";:Y=Y+1
1080 NEXT:IF Y=0 THEN PRINT "nothing.":GOTO 480 ELSE PRINT BS$BS$".":GOTO 480
1090 REM -LOOK-
1100 IF S<7 THEN 800
1110 IF (S=29 OR S=24 OR S=9 OR S=23 OR S=21) AND L(S-6)<>0 THEN 1270
1120 IF S<>32 OR L<>8 THEN 1140
1130 PRINT "You see a rugged person in a pocketed survival suit.":GOTO 480
1140 IF S<>54 OR L(11)<>20 THEN 1160
1150 PRINT "A harmonica and a lighter.":L(11)=0:L(12)=0:GOTO 480
1160 IF S=51 AND L=6 THEN PRINT "There is something here.":GOTO 480
1170 IF S=34 THEN PRINT "Earthie go home!!":GOTO 480
1180 IF S=41 AND L=3 THEN L2=18:GOTO 820
1190 IF S=52 AND L=1 THEN L2=3:GOTO 820
1200 IF S=9 THEN PRINT "Seeds!":L(4)=L:GOTO 480
1210 IF S<>29 THEN 1230
1220 PRINT "Suggested fuel: Hydrazine or Alchohol.":GOTO 480
1230 IF S=24 THEN PRINT "Water, Pot, Tubing, Fire, Grain":GOTO 480
1240 IF S=23 THEN PRINT 60-O"Min. of air left.":GOTO 480
1250 IF S=21 THEN PRINT "[Inscription] NH2NH2 ..._ Music":GOTO 480
1260 PRINT "You see nothing special.":GOTO 480
1270 PRINT "You don't have it.":GOTO 480
1280 REM -DROP-
1290 IF S=35 AND L=8 THEN L(25)=20
1300 IF RIGHT$(O$(S),1)="s" THEN V$=" are" ELSE V$=" is"
1310 L(S-6)=L:C=C-1:PRINT "Okay, the "O$(S)V$" in the "D$(L)".":GOTO 480
1320 REM -GO <place>-
1330 IF S=41 AND L=3 THEN L=18:L2=L:GOTO 800
1340 IF S<>51 OR L<>6 THEN 1370
1350 IF R=48 THEN L=7:L2=L:GOTO 800
1360 COLOR 7,0:PRINT"You fell in and died.";:GOTO 2030
1370 IF S=31 AND L(25)=8 AND L(13)<>0 THEN 1440
1380 IF S=31 AND L=8 THEN L=7:L2=L:GOTO 800
1390 IF S<>49 OR L<>7 THEN 1430
1400 IF L(29)=8 THEN PRINT "It's blocked":GOTO 480
1410 IF C>1 THEN PRINT "You're carrying too much.":GOTO 480
1420 L=8:L2=L:GOTO 800
1430 PRINT "You can't go there!":GOTO 480
1440 COLOR 7,0:PRINT "You slipped down the ramp and died.";:GOTO 2030
1450 GOTO 480
1460 REM -HIT-
1470 V$="With":GOSUB 1980:IF W<7 THEN S=W: GOTO 720 ELSE IF L(W-6)<>0 THEN 1270
1480 IF S=22 THEN M=0:PRINT"The Martian uttered an untranslatable obscenity," :PRINT" took your "O$(W)", and disappeared!":L(16)=20:L(W-6)=7:GOTO 480
1490 V$="Nothing happened":IF W<>25 THEN 1520
1500 IF S=32 THEN O$(32)="Broken Mirror":P(8,5)=14:V$="You shattered it!"
1510 IF S=30 THEN O$(30)="Splinters":L(2)=L:V$="The crate is smashed!" :MID$(O$,117,3)="SPL"
1520 PRINT V$:GOTO 480
1530 REM -OPEN-
1540 IF S<>50 OR L<>2 THEN S=0:GOTO 1750
1550 FOR X=1 TO 40:IF L(X)=19 THEN L(X)=2
1560 NEXT:PRINT "The locker is open.":GOTO 480
1570 REM -TIE-
1580 IF S<>33 THEN 1620
1590 V$="To":GOSUB 1980:S=W:IF W<7 THEN 720 ELSE IF L(W-6)<>L THEN 730
1600 IF W=51 THEN 1620 ELSE R=W:L(27)=L:IF W=48 THEN P(6,6)=7:P(7,5)=6
1610 PRINT "The rope is tied to the "O$(W):GOTO 480
1620 PRINT "You can't do that!":GOTO 480
1630 REM -LIGHT-
1640 IF L(12)<>0 THEN PRINT "No lighter.":GOTO 480
1650 IF S=15 AND L(9)=0 THEN LI=1:PRINT "The torch is lit.":GOTO 480
1660 IF S<>38 AND S<>30 AND S<>20 THEN 1620
1670 IF L<>11 THEN PRINT "Not here, it ain't safe.":GOTO 480
1680 IF L(21)<>11 THEN PRINT "There's no air.":GOTO 480
1690 IF L(14)<>11 AND L(24)=11 THEN PRINT "The fire burned the ";O$(30); " and then went out.": L(24)=20: GOTO 480
1700 IF L(14)<>11 THEN PRINT "Don't have enough wood.":GOTO 480
1710 L(32)=11:PRINT "A cheery fire is now blazing.":GOTO 480
1720 REM -UNLIGHT-
1730 IF S=15 THEN LI=0:PRINT "The torch is out":GOTO 480 ELSE 1620
1740 REM -PUSH-
1750 X=0:IF S<>40 THEN PRINT "Nothing happened.":GOTO 480
1760 IF L(5)<>2 AND (L(7)<>2 OR LEFT$(O$(13),1)<>"H") THEN PRINT "Fuel gauges: EMPTY.":X=1
1770 IF L(10)<>2 THEN PRINT ;"Computer reports: No injector pump.":X=1
1780 IF L(8)<3 OR L(19)<3 THEN PRINT "Too heavy for Take-Off.":GOTO 480
1790 IF X=0 THEN 1920 ELSE 480
1800 REM -PLAY-
1810 IF S<>17 THEN 1620 ELSE IF L(16)<>21 THEN 1880
1820 IF L(7)<>6 OR L<>6 THEN 1750
1830 COLOR 10:PRINT TAB(40);CHR$(30);CHR$(30);"-- What song";:INPUT A$
1840 FOR X=1 TO LEN(A$):CH=ASC(MID$(A$,X,1)):MID$(A$,X,1)=CHR$(CH+32*(CH>96))
1850 NEXT:X=INSTR(A$,S$):COLOR 2:IF X=0 THEN PRINT:PRINT "I'don't know that one. Could you hum a few bars?":GOTO 480
1860 O$(13)="Hydrazine Cylinder":MID$(O$,49,3)="HYD":PLAY"O2L8EEEL3C"
1870 PRINT:PRINT"The sculpture shattered into dust.":GOTO 480
1880 M=M+1:IF M=1 THEN PRINT "Rustling is getting louder.":GOTO 480
1890 IF M=2 THEN PRINT "I hear footsteps.":GOTO 480
1900 PRINT "A Martian just walked into the room!!!":L(16)=L:GOTO 480
1910 REM -TAKEOFF!-
1920 FOR X=1 TO 40:PRINT TAB(X)"WHWHOOOSHSHSH":NEXT
1930 PRINT "CONGRATULATIONS ON A SUCCESSFULL MISSION":GOTO 2030
1940 REM - MAKE INPUT U/C -
1950 A$=LEFT$(A$+" ",3):FOR I=1 TO 3
1960 CH=ASC(MID$(A$,I,1)):MID$(A$,I,1)=CHR$(CH+32*(CH>96))
1970 CH=ASC(MID$(B$,I,1)):MID$(B$,I,1)=CHR$(CH+32*(CH>96)):NEXT:RETURN
1980 REM - GET "WHAT" -
1990 COLOR 10:PRINT TAB(40);CHR$(30);CHR$(30);"-- "V$" what";:INPUT A$
2000 GOSUB 1950:W=0:X=INSTR(O$,A$):IF X MOD 4=1 THEN W=((X+3)/4):GOTO 2020
2010 X=INSTR(N$,A$):IF X MOD 5=1 THEN W=VAL(MID$(N$,X+3,2))
2020 COLOR 2:PRINT:RETURN
2030 COLOR 10,0:PRINT:PRINT:INPUT "Would you like to try again";A$:GOSUB 1950
2040 IF LEFT$(A$,1)="Y" THEN RUN
2050 IF LEFT$(A$,1)="R" THEN O=0:GOTO 600
2060 PRINT:PRINT"Please leave 25 cents on the console for playing this game."
2070 FOR I=1 TO 2000:NEXT:PRINT:INPUT"Hey!, did you leave the quarter for me";A$
2080 IF LEFT$(A$,1)<>"Y" THEN PRINT "You cheapskates are always cheating me!!" ELSE PRINT "You did not, you lying cheapskate!!"
2090 SYSTEM
2100 PRINT:PRINT:COLOR 2
2110 PRINT "ESCAPE FROM MARS has a concealed goal. You learn what the goal is"
2120 PRINT "by exploring your surroundings. The computer will act as your eyes"
2130 PRINT "and hands. It will accepts short phrases as commands and assumes"
2140 PRINT "that the first word is a verb and the lst word is the object."
2150 PRINT "For example: READ THE SIGN. The computer has a vocabulary of about"
2160 PRINT "120 words. Some of the more important words you should know before"
2170 PRINT "you start playing are: GET <object>, DROP <object>, LOOK <object>"
2180 PRINT "or just LOOK, GO <direction> or <place>, and INVENTORY (tells what"
2190 PRINT "you are carrying). The computer knows the abbreviations: E, W, N,"
2200 PRINT "S, U and D for GO EAST, GO WEST, etc.":PRINT
2210 PRINT "The computer's vocabulary is good, but limited. If you are having"
2220 PRINT "trouble doing something, try re-phrasing the command or you may"
2230 PRINT "need some object to accomplish the task. By the way, the computer"
2240 PRINT "only looks at the first 3 letters of each word.":PRINT
2250 COLOR 10:PRINT:PRINT TAB(25)"--- GOOD LUCK! ---":PRINT:RETURN
2260 PLAY"o2l8eeel3c"
2270 'Last Line of MARSESC.BAS
10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│ │░"
70 PRINT"░│ 2064-A.BAS │░"
80 PRINT"░│ RACECAR │░"
90 PRINT"░│ │░"
100 PRINT"░│ │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
130 PRINT"░│ █ █ █ █ █ █ │░"
140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
150 PRINT"░│ █ █ █ █ █ │░"
160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
170 PRINT"░│ │░"
180 PRINT"░│ International PC Owners │░"
190 PRINT"░│ │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│ │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT " PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 REM -- RACE CARS - Program by D. R. QUIGGIN
1005 KEY OFF
1010 SCREEN 0:CLS
1020 LOCATE 12,35,0:COLOR 31: PRINT "PROGRAM LOADING"
1030 GOSUB 2480 'initialize - load arrays
1040 COLOR 7:CLS
1050 WIDTH 80
1060 LOCATE 2,5: PRINT " In the following game you race against the computer. The"
1070 LOCATE 3,5: PRINT "computer is the reigning champ, it is rather easy to tell because"
1080 LOCATE 4,5: PRINT "his is the smiling face - ";CHR$(2)"."
1090 LOCATE 6,5: PRINT " If you wish to race the computer, you can control the"
1100 LOCATE 7,5: PRINT "speed of your car by pressing the M key to go faster and"
1110 LOCATE 8,5: PRINT "the N key to go slower. Note, for best results tap the"
1120 LOCATE 9,5: PRINT "desired key and release it. Holding the key down can result"
1130 LOCATE 10,5: PRINT "in over speeding or over braking."
1140 LOCATE 11,5: PRINT " Of course as in any car, if you enter a corner too fast"
1150 LOCATE 12,5:PRINT "you risk a crash (and starting over at a slower speed)."
1160 LOCATE 13,5: PRINT " If you are unsure of how the game works you may"
1170 LOCATE 14,5: PRINT "want to view the demonstration first."
1180 RACESW=0
1190 LOCATE 16,5,0: PRINT "RACE DIFFICULTY"
1200 LOCATE 18,10,0: PRINT "0 - DEMONSTRATION RACE"
1210 LOCATE 19,10,0: PRINT "1 - EASIER RACE AGAINST THE COMPUTER"
1220 LOCATE 20,10,0: PRINT "2 - MORE DIFFICULT RACE "
1230 LOCATE 21,10,0: PRINT "3 - MOST DIFFICULT RACE "
1240 LOCATE 23,14,0: INPUT "Enter choice";RACESW
1250 IF RACESW>=0 AND RACESW<4 THEN GOTO 1290 'valid value entered
1260 LOCATE 22,14: PRINT "Error, you must enter 0,1,2 or 3."
1270 LOCATE 23,1,0: PRINT SPC(79)
1280 GOTO 1240
1290 WIDTH 40
1300 CLS
1310 GOSUB 1870 'draw racetrack
1320 LOCATE 22,10,0: PRINT CHR$(2)
1330 LOCATE 20,10: PRINT CHR$(196)
1340 IF RACESW=0 THEN GOTO 1440 'demo only
1350 IF RACESW=2 OR RACESW=3 THEN GOTO 1400 'print more difficult speeds
1360 LOCATE 1,1,0:PRINT " Maximum safe speeds are:"
1370 LOCATE 2,1,0:PRINT " 45 degree corner -";(10-2)*20;" mph."
1380 LOCATE 3,1,0:PRINT " 90 degree corner -";(10-3)*20;" mph."
1390 GOTO 1460
1400 LOCATE 1,1,0:PRINT " Maximum safe speeds are:"
1410 LOCATE 2,1,0:PRINT " 45 degree corner -";(10-3)*20;" mph."
1420 LOCATE 3,1,0:PRINT " 90 degree corner -";(10-4)*20;" mph."
1430 GOTO 1460
1440 LOCATE 2,13: PRINT "PERSONAL COMPUTER"
1450 LOCATE 3,13: PRINT " RACEWAY "
1460 SPEEDMAX=7
1470 BSPEED=3 'Set initial speed, every 3rd time thru while loop,move car
1480 ASPEED=3 'Set initial speed, every 3th time thru while loop,move car
1490 ACNTR=0
1500 BCNTR=0
1510 RACE=0
1520 A=1 'Initialize car A position subscript
1530 B=1 'Initialize car B position subscript
1540 LOCATE 5,1: PRINT " Press M to start"
1550 MN$=INKEY$: IF MN$<>"M" AND MN$<>"m" THEN GOTO 1550 'delay to get ready
1560 LOCATE 5,1: PRINT " "
1570 REM -- START RACE --
1580 WHILE RACE><1
1590 ACNTR=ACNTR+1
1600 IF ACNTR>ASPEED THEN ACNTR=1
1610 IF ACNTR=1 THEN GOSUB 2120 'erase & redraw car A
1620 IF A>85 THEN RACE=1 'A car finished
1630 REM
1640 BCNTR=BCNTR+1
1650 IF BCNTR>BSPEED THEN BCNTR=1
1660 IF BCNTR=1 THEN GOSUB 2410 'erase & redraw car B
1670 IF B>85 THEN RACE=1 'B car finished
1680 WEND '---------------------------------------------------------
1690 IF A>B GOTO 1740
1700 IF B>A GOTO 1770
1710 LOCATE 5,10: PRINT SPC(28)
1720 LOCATE 5,19: PRINT "TIE!"
1730 GOTO 1790
1740 LOCATE 5,10: PRINT SPC(28)
1750 LOCATE 5,11: PRINT "NICE DRIVING, YOU WIN!"
1760 GOTO 1790
1770 LOCATE 5,10: PRINT SPC(28)
1780 LOCATE 5,13: PRINT "THE COMPUTER WINS!"
1790 REM -----------------------------------end---
1800 FOR M=1 TO 800:NEXT M 'delay only *****************
1810 DUMMY$=INKEY$:IF DUMMY$<>"" GOTO 1810 '********** 2-12-83
1820 LOCATE 24,2: INPUT "PLAY AGAIN? (Enter y or n)";YN$
1830 YN1$=LEFT$(YN$,1)
1840 IF YN1$="Y" OR YN1$="y" THEN GOTO 1040 'to start over
1850 WIDTH 80:CLS:SYSTEM '******************* end ****************
1860 REM
1870 REM Draw racecourse subroutine --------
1880 LOCATE 23,3: PRINT CHR$(200)+STRING$(12,205)+STRING$(10,32)+STRING$(12,205)+ CHR$(188)
1890 LOCATE 22,3: PRINT CHR$(186);SPC(12);CHR$(47);SPC(8);CHR$(92);SPC(12); CHR$(186)
1900 LOCATE 21,3: PRINT CHR$(186);SPC(1);CHR$(192);STRING$(9,196);SPC(2);CHR$(47);SPC(6);CHR$(92);SPC(2);STRING$(9,196);CHR$(217);SPC(1);CHR$(186)
1910 LOCATE 20,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(10);CHR$(47);SPC(1);CHR$(47);SPC(4);CHR$(92);SPC(1);CHR$(92);SPC(10);CHR$(179);SPC(1);CHR$(186)
1920 LOCATE 19,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(200);STRING$(7,205);SPC(2);CHR$(47);SPC(1);CHR$(47);SPC(2);CHR$(92);SPC(1);CHR$(92);SPC(2);STRING$(7,205);CHR$(188);SPC(1);CHR$(179);SPC(1);CHR$(186)
1930 LOCATE 18,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(8);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);CHR$(92);SPC(1);CHR$(92);SPC(1);CHR$(92);SPC(8);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
1940 LOCATE 17,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(9);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);CHR$(92);SPC(1);CHR$(92);SPC(9);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
1950 LOCATE 16,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(10);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);CHR$(92);SPC(10);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
1960 LOCATE 15,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(10);CHR$(92);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);SPC(10);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
1970 LOCATE 14,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(9);CHR$(92);SPC(1);CHR$(92);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);SPC(9);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
1980 LOCATE 13,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(8);CHR$(92);SPC(1);CHR$(92);SPC(1);CHR$(92);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);SPC(8);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
1990 LOCATE 12,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(201);STRING$(7,205);SPC(2);CHR$(92);SPC(1);CHR$(92);SPC(2);CHR$(47);SPC(1);CHR$(47);SPC(2);STRING$(7,205);CHR$(187);SPC(1);CHR$(179);SPC(1);CHR$(186)
2000 LOCATE 11,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(10);CHR$(92);SPC(1);CHR$(92);SPC(4);CHR$(47);SPC(1);CHR$(47);SPC(10);CHR$(179);SPC(1);CHR$(186)
2010 LOCATE 10,3: PRINT CHR$(186);SPC(1);CHR$(218);STRING$(9,196);SPC(2);CHR$(92);SPC(6);CHR$(47);SPC(2);STRING$(9,196);CHR$(191);SPC(1);CHR$(186)
2020 LOCATE 9,3: PRINT CHR$(186);SPC(12);CHR$(92);SPC(8);CHR$(47);SPC(12); CHR$(186)
2030 LOCATE 8,3: PRINT CHR$(201)+STRING$(12,205)+STRING$(10,32)+STRING$(12,205)+ CHR$(187)
2040 LOCATE 18,11:PRINT CHR$(179)
2050 LOCATE 19,11:PRINT CHR$(216) 'DRAW START/FINISH LINE
2060 LOCATE 20,11:PRINT CHR$(179)
2070 LOCATE 21,11:PRINT CHR$(197)
2080 LOCATE 22,11:PRINT CHR$(179)
2090 LOCATE 23,11:PRINT CHR$(216)
2100 RETURN '-----------------------------------------------------------------
2110 REM
2120 REM ------------------------- Move car A subroutine --------------------
2130 IF RACESW=0 THEN GOTO 2200 'ie. not a race, demo only
2140 GASBRK$=INKEY$ 'sense if key hit & load it into gasbrk$
2150 IF GASBRK$><"M" AND GASBRK$><"m" THEN GOTO 2180 'fall thru is m
2160 IF ASPEED>1 THEN ASPEED=ASPEED - 1 'increase speed for car A
2170 REM
2180 IF GASBRK$><"N" AND GASBRK$><"n" THEN GOTO 2200 'fall thru is n
2190 IF ASPEED<10 THEN ASPEED=ASPEED + 1 'decrease speed for car A
2200 LOCATE 5,12: PRINT "SPEED =";(10-ASPEED)* 20
2210 REM LOCATE 5,35: PRINT ASPEED '******************** FOR TESTING
2220 LOCATE AROW(A),ACOL(A),0: IF (A><57)AND(A><58)AND(A><59) THEN PRINT " "
2230 A=A + 1 'index for car A position
2240 IF RACESW=0 THEN GOTO 2280 'If demo don't check for crash
2250 IF RACESW=1 AND ASPEED<ACRASHE(A) THEN GOSUB 2300 'Too fast thru corner note-low is fast - this is for easier race
2260 IF RACESW=2 AND ASPEED<ACRASHD(A) THEN GOSUB 2300 'Too fast thru corner note-low is fast - this is for harder race
2270 IF RACESW=3 AND ASPEED<ACRASHD(A) THEN GOSUB 2300 'Too fast thru corner
2280 LOCATE AROW(A),ACOL(A): PRINT CHR$(AFIGR(A))
2290 RETURN '-------------------------------------------------
2300 REM ------------- CRASH SUBROUTINE -------------------------------------
2310 BEEP
2320 ASPEED=5 'Reset speed to slow - note, higher nbr,lower the speed
2330 FOR I=1 TO 4
2340 LOCATE AROW(A),ACOL(A): PRINT CHR$(179)
2350 LOCATE AROW(A),ACOL(A): PRINT CHR$(47)
2360 LOCATE AROW(A),ACOL(A): PRINT CHR$(196)
2370 LOCATE AROW(A),ACOL(A): PRINT CHR$(92)
2380 NEXT I
2390 RETURN ' ----------------------------------------------------------------
2400 REM
2410 REM ------------------------- Move car B subroutine --------------------
2420 LOCATE BROW(B),BCOL(B): IF (B><48)AND(B><49)AND(B><50) THEN PRINT " "
2430 B=B + 1 'index for car B position
2440 LOCATE BROW(B),BCOL(B): PRINT CHR$(BFIGR(B))
2450 IF RACESW=3 THEN BSPEED=BSPD(B) 'set speed from data for car B
2460 RETURN '-------------------------------------------------
2470 REM
2480 REM ------- Load car position arrays subroutine --------------------
2490 DIM ASPOT 'car position for car A, for ease of use in changing data only
2500 DIM AROW(86) 'row used in locate for car A
2510 DIM ACOL(86) 'column used in locate for car A
2520 DIM AFIGR(86) ' image to be used for car A, 0-255
2530 DIM ACRASHD(86) 'More Difficult crash speed, used on corners ie if exceed then crash
2540 DIM ACRASHE(86) 'Easeier crash speed, used on corners ie if exceed then crash
2550 DIM FILL 'Not used - only to separate A data from B data in data stmt
2560 DIM BROW(86) 'row used in locate for car B
2570 DIM BCOL(86) 'column used in locate for car B
2580 DIM BFIGR(86) ' image to be used for car B
2590 DIM BSPD(86) 'speed for computer car on difficulty 3
2600 FOR I=1 TO 86
2610 READ ASPOT,AROW(I),ACOL(I),AFIGR(I),ACRASHD(I),ACRASHE(I),FILL$,BROW(I),BCOL(I),BFIGR(I),BSPD(I)
2620 NEXT I
2630 RETURN '-----------------------------------------------------------------
2640 REM
2650 REM -CHALLENGERS- -COMPUTER--
2660 REM ----CAR A---- ---CAR B---
2670 DATA 01,20,10,196,1,1,*,22,10,002,2
2680 DATA 02,20,11,196,1,1,*,22,11,002,2
2690 DATA 03,20,12,196,1,1,*,22,12,002,2
2700 DATA 04,20,13,196,1,1,*,22,13,002,2
2710 DATA 05,20,14,196,1,1,*,22,14,002,2
2720 DATA 06,20,15,196,1,1,*,22,15,002,2
2730 DATA 07,19,16,047,3,2,*,21,16,002,3
2740 DATA 08,18,17,047,1,1,*,20,17,002,2
2750 DATA 09,17,18,047,1,1,*,19,18,002,2
2760 DATA 10,16,19,047,1,1,*,18,19,002,2
2770 DATA 11,15,20,047,1,1,*,17,20,002,2
2780 DATA 12,14,21,047,1,1,*,16,21,002,2
2790 DATA 13,13,22,047,1,1,*,15,22,002,2
2800 DATA 14,12,23,047,1,1,*,14,23,002,2
2810 DATA 15,11,24,047,1,1,*,13,24,002,2
2820 DATA 16,10,25,047,1,1,*,12,25,002,2
2830 DATA 17,09,26,196,3,2,*,11,26,002,3
2840 DATA 18,09,27,196,1,1,*,11,27,002,2
2850 DATA 19,09,28,196,1,1,*,11,28,002,2
2860 DATA 20,09,29,196,1,1,*,11,29,002,2
2870 DATA 21,09,30,196,1,1,*,11,30,002,2
2880 DATA 22,09,31,196,1,1,*,11,31,002,2
2890 DATA 23,09,32,196,1,1,*,11,32,002,2
2900 DATA 24,09,33,196,1,1,*,11,33,002,2
2910 DATA 25,09,34,196,1,1,*,11,34,002,2
2920 DATA 26,09,35,196,1,1,*,11,35,002,2
2930 DATA 27,09,36,196,1,1,*,12,35,002,2
2940 DATA 28,09,37,092,4,3,*,13,35,002,4
2950 DATA 29,10,37,179,1,1,*,14,35,002,2
2960 DATA 30,11,37,179,1,1,*,15,35,002,2
2970 DATA 31,12,37,179,1,1,*,16,35,002,2
2980 DATA 32,13,37,179,1,1,*,17,35,002,2
2990 DATA 33,14,37,179,1,1,*,18,35,002,2
3000 DATA 34,15,37,179,1,1,*,19,35,002,2
3010 DATA 35,16,37,179,1,1,*,20,35,002,2
3020 DATA 36,17,37,179,1,1,*,20,34,002,2
3030 DATA 37,18,37,179,1,1,*,20,33,002,2
3040 DATA 38,19,37,179,1,1,*,20,32,002,2
3050 DATA 39,20,37,179,1,1,*,20,31,002,2
3060 DATA 40,21,37,179,1,1,*,20,30,002,2
3070 DATA 41,22,37,047,4,3,*,20,29,002,4
3080 DATA 42,22,36,196,1,1,*,20,28,002,2
3090 DATA 43,22,35,196,1,1,*,20,27,002,2
3100 DATA 44,22,34,196,1,1,*,20,26,002,2
3110 DATA 45,22,33,196,1,1,*,19,25,002,2
3120 DATA 46,22,32,196,1,1,*,18,24,002,2
3130 DATA 47,22,31,196,1,1,*,17,23,002,2
3140 DATA 48,22,30,196,1,1,*,16,22,047,2
3150 DATA 49,22,29,196,1,1,*,15,21,047,2
3160 DATA 50,22,28,196,1,1,*,14,20,047,2
3170 DATA 51,22,27,196,1,1,*,13,19,002,2
3180 DATA 52,22,26,196,1,1,*,12,18,002,2
3190 DATA 53,21,25,092,3,2,*,11,17,002,3
3200 DATA 54,20,24,092,1,1,*,10,16,002,2
3210 DATA 55,19,23,092,1,1,*,09,15,002,2
3220 DATA 56,18,22,092,1,1,*,09,14,002,2
3230 DATA 57,17,21,047,1,1,*,09,13,002,2
3240 DATA 58,16,20,047,1,1,*,09,12,002,2
3250 DATA 59,15,19,047,1,1,*,09,11,002,2
3260 DATA 60,14,18,092,1,1,*,09,10,002,2
3270 DATA 61,13,17,092,1,1,*,09,09,002,2
3280 DATA 62,12,16,092,1,1,*,09,08,002,2
3290 DATA 63,11,15,196,3,2,*,09,07,002,2
3300 DATA 64,11,14,196,1,1,*,09,06,002,2
3310 DATA 65,11,13,196,1,1,*,09,05,002,2
3320 DATA 66,11,12,196,1,1,*,09,04,002,2
3330 DATA 67,11,11,196,1,1,*,10,04,002,2
3340 DATA 68,11,10,196,1,1,*,11,04,002,2
3350 DATA 69,11,09,196,1,1,*,12,04,002,2
3360 DATA 70,11,08,196,1,1,*,13,04,002,2
3370 DATA 71,11,07,196,1,1,*,14,04,002,2
3380 DATA 72,11,06,047,4,3,*,15,04,002,2
3390 DATA 73,12,06,179,1,1,*,16,04,002,2
3400 DATA 74,13,06,179,1,1,*,17,04,002,2
3410 DATA 75,14,06,179,1,1,*,18,04,002,2
3420 DATA 76,15,06,179,1,1,*,19,04,002,2
3430 DATA 77,16,06,179,1,1,*,20,04,002,2
3440 DATA 78,17,06,179,1,1,*,21,04,002,2
3450 DATA 79,18,06,179,1,1,*,22,04,002,2
3460 DATA 80,19,06,179,1,1,*,22,05,002,2
3470 DATA 81,20,06,092,4,3,*,22,06,002,2
3480 DATA 82,20,07,196,1,1,*,22,07,002,2
3490 DATA 83,20,08,196,1,1,*,22,08,002,2
3500 DATA 84,20,09,196,1,1,*,22,09,002,2
3510 DATA 85,20,10,196,1,1,*,22,10,002,2
3520 DATA 86,20,11,196,1,1,*,22,11,002,2
10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│ │░"
70 PRINT"░│ 2065-A.BAS │░"
80 PRINT"░│ SEAWOLF │░"
90 PRINT"░│ │░"
100 PRINT"░│ │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
130 PRINT"░│ █ █ █ █ █ █ │░"
140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
150 PRINT"░│ █ █ █ █ █ │░"
160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
170 PRINT"░│ │░"
180 PRINT"░│ International PC Owners │░"
190 PRINT"░│ │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│ │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT " PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 REM ** SEAWOLF **
1010 REM IBM PC Version (1.0) 06/15/82
1020 REM Written by Pat Gibson
1030 REM Derived from original version in PDP-11/70 BASIC 03/13/77 by
1040 REM Pat Gibson (Findlay College, Findlay Ohio)
1050 REM
1060 REM If you have any suggestions or contributions please send to
1070 REM P. Gibson 700 N. Main St. Findlay, Ohio 45840
1080 REM
1090 CLS
1100 SHIP$(1,1) = "<Pt" : SHIP$(1,2) = "Pt>" : SHIP$(1,3) = " "
1110 SHIP$(2,1) = "<Sub+" : SHIP$(2,2) = "+Sub>" : SHIP$(2,3) = " "
1120 SHIP$(3,1) = "\Tanker/" : SHIP$(3,2) = "\Tanker/" : SHIP$(3,3) = " "
1130 ON KEY(10) GOSUB 2190
1140 ON KEY(11) GOSUB 2260
1150 ON KEY(12) GOSUB 2270
1160 ON KEY(13) GOSUB 2290
1170 ON KEY(1) GOSUB 2510
1180 ST$ = " "
1190 SIGHT$=CHR$(220)+CHR$(220)+CHR$(220)+CHR$(220)+CHR$(221)+CHR$(206)+CHR$(222)+CHR$(220)+CHR$(220)+CHR$(220)+CHR$(220)
1200 SIGHTX = 35 : SIGHTM = 0
1210 SEED = VAL(RIGHT$(TIME$,2)) : RANDOMIZE SEED
1220 SIGHT1$=CHR$(220)+CHR$(220)+CHR$(220)+CHR$(220)+CHR$(221)+" "+CHR$(222)+CHR$(220)+CHR$(220)+CHR$(220)+CHR$(220)
1230 SHIPX = 1 : SHIPY = 1
1240 SITE$ = SIGHT$
1250 SHIPM = 2
1260 TORPEDO$ = CHR$(186)
1270 S = 1
1280 PTIME = 60
1290 SCORE = 0
1300 COLOR 15,0
1310 GOSUB 2310
1320 COLOR 7,0
1330 LOCATE 1,1,0
1340 CLS
1350 LOCATE 1,3 : PRINT "score "; : COLOR 15,0 : PRINT "0" : COLOR 7,0
1360 LOCATE 1,20 : PRINT "Time"
1370 LOCATE 23,1
1380 FOR T = 1 TO 80 : PRINT CHR$(220); : NEXT T
1390 KEY(10) ON : KEY(11) ON : KEY(12) ON : KEY(13) ON : KEY(1) ON
1400 IF SIGHTX >=67 AND SIGHTM >=0 THEN 1430
1410 IF SIGHTX <= 3 AND SIGHTM <= 0 THEN 1430
1420 SIGHTX = SIGHTX + SIGHTM
1430 LOCATE 23,SIGHTX : PRINT SITE$
1440 IF FIRE = 0 THEN 1600
1450 IF TORPEDOY < 3 THEN GOTO 1510
1460 TORPEDOY = TORPEDOY - 2
1470 COLOR 15,0
1480 LOCATE TORPEDOY,TORPEDOX : PRINT TORPEDO$
1490 COLOR 7,0
1500 GOTO 1540
1510 PLAY "mb l64 o0;a"
1520 FIRE = 0
1530 SITE$ = SIGHT$
1540 TEMPY = TORPEDOY + 2
1550 LOCATE TEMPY,TORPEDOX : PRINT " "
1560 IF FIRE = 1 THEN 1610
1570 TORPEDOY = 22
1580 LOCATE 2,TORPEDOX : PRINT " "
1590 GOTO 1610
1600 LOCATE 1,1 : PRINT " "
1610 IF SHIPY <> 1 THEN 1690
1620 SHIPNUM = INT(RND(S) * 3) + 1 : S = S + 1
1630 DIR = INT(RND(S) * 2) + 1
1640 SHIPY = INT(RND(S) * 4) * 2
1650 SHIPY = SHIPY + 4
1660 IF DIR = 1 THEN SHIPM = -1 ELSE SHIPM = 1
1670 IF DIR = 1 THEN SHIPX = 71 ELSE SHIPX = 2
1680 SHIPM = SHIPM + ((3 - SHIPNUM) * SHIPM)
1690 LOCATE SHIPY,SHIPX : PRINT SHIP$(SHIPNUM,3)
1700 SHIPX = SHIPX + SHIPM
1710 LOCATE SHIPY,SHIPX : PRINT SHIP$(SHIPNUM,DIR)
1720 IF SHIPX < 3 OR SHIPX > 70 THEN GOTO 1750
1730 IF SHIPNUM = 1 AND SHIPX < 4 THEN GOTO 1750
1740 GOTO 1770
1750 LOCATE SHIPY,SHIPX : PRINT SHIP$(SHIPNUM,3)
1760 SHIPY = 1
1770 IF FIRE = 0 THEN 2120
1780 IF SCREEN(TORPEDOY,TORPEDOX) = ASC(TORPEDO$) OR SCREEN(TORPEDOY,TORPEDOX) = 32 THEN 2120
1790 LM = LEN(SHIP$(SHIPNUM,1))
1800 COLOR 15,0
1810 LOCATE TORPEDOY,SHIPX
1820 FOR T = 1 TO LM : PRINT CHR$(219); : NEXT T
1830 PLAY "mf o0 l64;d"
1840 LOCATE TORPEDOY,SHIPX
1850 FOR T = 1 TO LM : PRINT CHR$(178); : NEXT T
1860 PLAY "mf o0 l64;e"
1870 LOCATE TORPEDOY,SHIPX
1880 FOR T = 1 TO LM : PRINT CHR$(177); : NEXT T
1890 PLAY "mf o0 l64;f"
1900 LOCATE TORPEDOY,SHIPX
1910 FOR T = 1 TO LM : PRINT CHR$(176); : NEXT T
1920 PLAY "mf o0 l64;g"
1930 LOCATE TORPEDOY,SHIPX : PRINT " "
1940 SOUND 38,4
1950 FIRE = 0
1960 SITE$ = SIGHT$
1970 LOCATE SHIPY,SHIPX : PRINT SHIP$(SHIPNUM,3)
1980 SHIPY = 1
1990 IF SHIPNUM = 1 THEN SCORE = SCORE + 700
2000 IF SHIPNUM = 2 THEN SCORE = SCORE + 300
2010 IF SHIPNUM = 3 THEN SCORE = SCORE + 100
2020 LOCATE 1,10
2030 PRINT SCORE
2040 COLOR 7,0
2050 IF EXTEND < 3 AND SCORE >= 9000 THEN GOTO 2090
2060 IF EXTEND < 2 AND SCORE >= 6000 THEN GOTO 2090
2070 IF EXTEND < 1 AND SCORE >= 3000 THEN GOTO 2090
2080 GOTO 2120
2090 PLAY "mb o2 l8;bbb;l4;g"
2100 PTIME = PTIME + 30
2110 EXTEND = EXTEND + 1
2120 LOCATE 1,26
2130 IF PTIME < 11 THEN COLOR 27,0 ELSE COLOR 15,0
2140 PRINT INT(PTIME)
2150 COLOR 7,0
2160 IF PTIME < 0.8 THEN 2500
2170 PTIME = PTIME - 0.1
2180 GOTO 1400
2190 IF FIRE = 1 THEN RETURN
2200 TORPEDOY = 22
2210 FIRE = 1
2220 SOUND 50,8
2230 TORPEDOX = SIGHTX + 5
2240 SITE$ = SIGHT1$
2250 RETURN
2260 SIGHTM = 0:RETURN
2270 SIGHTM = -4
2280 RETURN
2290 SIGHTM = 4
2300 RETURN
2310 LOCATE 3,1
2320 PRINT " Welcome to Sea-Wolf (Version 1.0)"
2330 PRINT " "
2340 PRINT " The object of the game is to sink the enemy invasion fleet"
2350 PRINT " "
2360 PRINT " The fleet consist of the following:
2370 PRINT " "
2380 PRINT " PT boats.............";SHIP$(1,1);" 700 pts."
2390 PRINT " Submarines...........";SHIP$(2,1);" 300 pts."
2400 PRINT " Oil Tanker...........";SHIP$(3,1);" 100 pts."
2410 PRINT " "
2420 PRINT " Your torpedo sight is located at the bottom of the screen. To"
2430 PRINT "move your sight press left arrow (4) for left movement and right"
2440 PRINT "arrow (6) for right movement. Up arrow (8) will stop the sight at"
2450 PRINT "that particular position. Your fire key is Function key 10 (F10)"
2460 PRINT " "
2470 LOCATE 21,1 : PRINT " Press RETURN key to begin";
2480 INPUT XYZ$
2490 RETURN
2500 PLAY "mb o3 l8;defefefgg"
2510 CLS : PRINT "Your score was ";SCORE
2520 LOCATE 2,3 : PRINT "try again? (Y/N)";
2530 INPUT Y$
2540 IF LEFT$(Y$,1) = "y" OR LEFT$(Y$,1) = "Y" THEN GOTO 1090
2550 COLOR 7,0 : CLS
2560 SYSTEM
2570 SYSTEM
10 REM $LINESIZE:132
20 REM ----------------------------------------------------------------------
30 REM
40 REM The Game of Klondyke Solitar
50 REM By: Jeff Littlefield
60 REM For: the IBM PC and the Color Graphics Card
70 REM
80 REM FOR PUBLIC USE MAY NOT BE SOLD
90 REM ALL RIGHTS RESERVED
100 REM
110 REM ---------------------------------------------------------------------
120 DEFINT A-Z
130 FALSE=0:TRUE = NOT FALSE : ABORT = FALSE : WON = FALSE
140 DIM DECK$(52), STACK$(7,21),CARD$(52),TOP$(4),STACKPTR(7),VISIPTR(7),XYARR$(82)
150 NOT.READ=TRUE
160 KEY OFF: KEY(1) ON: ON KEY(1) GOSUB 970
170 RANDOMIZE(VAL(MID$(TIME$,7,2))+(VAL(MID$(TIME$,4,2))*60))
180 SCREEN 0,1,0,0:COLOR 7,1,1:CLS:PRINT"Pardon me while I shuffle the deck."
190 LOCATE ,,0
200 GOSUB 830 : GOTO 210 'SET UP THE HELP SCREEN
210 GOSUB 310 'SHUFFLE THE DECK
220 CLS
230 GOSUB 590 'PRINT OUT THE PLAYING TABLE
240 WON = FALSE
250 GOTO 990
260 IF FLAG=1 THEN GOSUB 2450 ELSE GOSUB 2090
270 IF ABORT THEN ABORT = FALSE : GOTO 250
280 FLAG=0:GOSUB 2340 'ASK IF THEY WANT TO PLAY AGAIN
290 IF ABORT THEN ABORT = FALSE : GOTO 250
300 CLS:IF FLAG=1 THEN 180 ELSE KEY ON:COLOR 7,0,0:CLS:END
310 RESTORE
320 FOR I=1 TO 52:READ CARD$(I):NEXT I
330 FOR I= 52 TO 1 STEP -1
340 X=INT(RND(1)*I)+1 'PICK NUMBER FROM 1 TO I
350 DECK$(I)=CARD$(X) 'PICK THAT CARD OUT OF THE PILE
360 CARD$(X)=CARD$(I) 'MOVE LAST CARD TO WHERE PREVIOUS ONE WAS
370 NEXT I
380 X=1 'DECK COUNTER
390 FOR I=1 TO 7 'NUMBER OF STACKS
400 FOR J=1 TO I 'NUMBER OF CARDS IN THAT STACK
410 STACK$(I,J)=DECK$(X) 'ASSIGN CARDS TO STACK
420 X=X+1
430 NEXT J
440 STACKPTR(I)=I 'SET STACKPTR(I) TO LAST CARD IN EACH STACK
450 VISIPTR(I)=I 'SAME WITH VISIPTR(I)
460 NEXT I
470 DECKPTR=31:ENDDECK=52:DECK$(28)=" ":NC=24
480 DATA" AH"," 2H"," 3H"," 4H"," 5H"," 6H"," 7H"," 8H"," 9H","10H"," JH"," QH"," KH"
490 DATA" AD"," 2D"," 3D"," 4D"," 5D"," 6D"," 7D"," 8D"," 9D","10D"," JD"," QD"," KD"
500 DATA" AC"," 2C"," 3C"," 4C"," 5C"," 6C"," 7C"," 8C"," 9C","10C"," JC"," QC"," KC"
510 DATA" AS"," 2S"," 3S"," 4S"," 5S"," 6S"," 7S"," 8S"," 9S","10S"," JS"," QS"," KS"
520 FOR I=1 TO 7
530 STACK$(I,0)=" "
540 NEXT I
550 FOR I=1 TO 4
560 TOP$(I)=" "
570 NEXT I
580 RETURN
590 COLOR 3,1 :LOCATE 1,4:PRINT"TOP:":LOCATE 1,65:PRINT "Time: "
600 LOCATE 3,1:PRINT"STACKS:"
610 FOR I=7 TO 1 STEP -1
620 LOCATE 3,(45-(5*I))
630 PRINT I;
640 NEXT I
650 COLOR 7,1
660 FOR I=1 TO 7
670 FOR J=I TO 7
680 LOCATE (I+3),(45-(J*5))
690 IF VISIPTR(J)=I THEN C$=STACK$(J,I):GOSUB 2700:PRINT STACK$(J,I);:COLOR 7,1 ELSE FOR X=1 TO 3:PRINT CHR$(254);:NEXT X
700 NEXT J
710 NEXT I
720 COLOR 3,1
730 LOCATE 10 ,53:PRINT"PILE:";
740 COLOR 7,1
750 LOCATE 10,59:C$=DECK$(DECKPTR):GOSUB 2700:PRINT DECK$(DECKPTR);:COLOR 3,1:LOCATE 10,65:PRINT"Count: ";:COLOR 7:PRINT NC;:COLOR 3
760 LOCATE 11,64:PRINT"Card #: ";:COLOR 7:PRINT DECKPTR-28;" ";
770 COLOR 3:LOCATE 12,50:PRINT"COMMAND: __ ";
780 COLOR 2
790 LOCATE 24,24:PRINT"Press F1 for a list of Commands";
800 COLOR 7
810 LOCATE 12,59
820 RETURN
830 SCREEN 0,1,1,0
840 CLS
850 LOCATE 10,10:PRINT"C Claim Victory"
860 LOCATE 11,10:PRINT"N New Card on Pile"
870 LOCATE 12,10:PRINT"P# Card on Pile to Specified Stack"
880 LOCATE 13,10:PRINT"PT Card on Pile to Top"
890 LOCATE 14,10:PRINT"## Visible Cards on Stack to New Specified Stack"
900 LOCATE 15,10:PRINT"#T Bottom Card on Specified Stack to Top"
910 LOCATE 16,10:PRINT"Q Quit"
920 LOCATE 17,10:PRINT"F1 For This Screen"
930 COLOR 12:LOCATE 18,10:PRINT"Esc Abort End and Return to Present Game
940 COLOR 2:LOCATE 22,28:PRINT"Press Any Key To Continue":COLOR 7
950 SCREEN 0,1,0,0
960 RETURN
970 SCREEN 0,1,0,1
980 A$=INKEY$:IF A$="" THEN 980 ELSE 950
990 FLAG=0:GOSUB 1660:IF FLAG=1 THEN 260
1000 LOCATE 12,59:PRINT"__ ";:LOCATE 12,59
1010 K$=INKEY$:IF K$="" THEN LOCATE 1,71:PRINT TIME$;:LOCATE 12,59:GOTO 1010 ELSE PRINT K$;
1020 IF K$="N" OR K$="n" THEN 1080
1030 IF K$="P" OR K$="p" THEN 1160
1040 IF K$>="1"AND K$<="7" THEN 1720
1050 IF K$="Q" OR K$="q" THEN FLAG=0:GOTO 260
1060 IF K$="C" OR K$="c" THEN 2470
1070 SOUND 50,5:GOTO 1000
1080 IF DECKPTR+3>ENDDECK THEN DECKPTR=28
1090 X=ENDDECK-28
1100 IF X <=3 THEN DECKPTR=ENDDECK ELSE DECKPTR=DECKPTR+3
1110 LOCATE 10,59
1120 C$=DECK$(DECKPTR):GOSUB 2700:PRINT DECK$(DECKPTR):COLOR 7,1
1130 LOCATE 11,72:PRINT DECKPTR-28;" ";
1140 GOTO 1000
1150 K$=INKEY$:IF K$="" THEN 1150 ELSE PRINT K$;:RETURN
1160 GOSUB 1150
1170 IF(K$="t" OR K$="T") OR (K$>="1" AND K$<="7") THEN 1180 ELSE SOUND 50,5:GOTO 1000
1180 W$=DECK$(DECKPTR)
1190 SUIT$=MID$(W$,3,1):SIZE$=MID$(W$,2,1)
1200 IF K$="T" OR K$="t" THEN GOSUB 1380:GOTO 1280
1210 K=VAL(K$)
1220 W1$=STACK$(K,STACKPTR(K))
1230 SUITST$=MID$(W1$,3,1):SIZEST$=MID$(W1$,2,1)
1240 FLAG=0:GOSUB 1450:IF FLAG=0 THEN SOUND 50,5 :GOTO 990
1250 STACKPTR(K)=STACKPTR(K)+1
1260 STACK$(K,STACKPTR(K))=W$
1270 LOCATE STACKPTR(K)+3,(45-(K*5)):C$=W$:GOSUB 2700:PRINT W$:COLOR 7,1
1280 DECKPTR=DECKPTR-1:GOSUB 1320
1290 LOCATE 10,59:IF DECKPTR>28 THEN C$=DECK$(DECKPTR):GOSUB 2700:PRINT DECK$(DECKPTR):COLOR 7,1 ELSE PRINT" "
1300 LOCATE 11,72:PRINT DECKPTR-28;" ";
1310 GOTO 990
1320 IF DECKPTR+1=ENDDECK THEN 1360
1330 FOR I= DECKPTR+2 TO ENDDECK
1340 DECK$(I-1)=DECK$(I)
1350 NEXT I
1360 ENDDECK=ENDDECK-1:NC=NC-1:LOCATE 10,72:PRINT NC;
1370 RETURN
1380 IF SUIT$="C" THEN N=1:GOTO 1420
1390 IF SUIT$="D" THEN N=2:GOTO 1420
1400 IF SUIT$="H" THEN N=3:GOTO 1420
1410 N=4
1420 SIZEST$=MID$(TOP$(N),2,1)
1430 FLAG=0:GOSUB 1570:IF FLAG=0 THEN SOUND 50,5:GOTO 990
1440 TOP$(N)=W$:LOCATE 1,10+(10*(N-1)):C$=W$:GOSUB 2700:PRINT W$:COLOR 7,1:RETURN
1450 IF(SUIT$="H"OR SUIT$="D")AND(SUITST$="H"OR SUITST$="D") THEN RETURN
1460 IF(SUIT$="C"OR SUIT$="S")AND(SUITST$="C"OR SUITST$="S") THEN RETURN
1470 IF SIZE$>"9" THEN 1510
1480 IF SIZE$="0" AND SIZEST$="J" THEN 1560
1490 IF SIZE$="9" AND SIZEST$="0" THEN 1560
1500 IF (ASC(SIZEST$)-ASC(SIZE$))=1 THEN 1560
1510 IF SIZE$="A" AND SIZEST$="2" THEN 1560
1520 IF SIZE$="J" AND SIZEST$="Q" THEN 1560
1530 IF SIZE$="Q" AND SIZEST$="K" THEN 1560
1540 IF SIZE$="K" AND SIZEST$=" " THEN 1560
1550 RETURN
1560 FLAG=1:RETURN
1570 IF SIZE$="A" AND SIZEST$=" " THEN 1650
1580 IF SIZE$="2" AND SIZEST$="A" THEN 1650
1590 IF SIZE$="0" AND SIZEST$="9" THEN 1650
1600 IF (ASC(SIZE$)-ASC(SIZEST$))=1 THEN 1650
1610 IF SIZE$="J" AND SIZEST$="0" THEN 1650
1620 IF SIZE$="Q" AND SIZEST$="J" THEN 1650
1630 IF SIZE$="K" AND SIZEST$="Q" THEN 1650
1640 RETURN
1650 FLAG=1:RETURN
1660 REM CHECK TO SEE IF THE GAME IS OVER
1670 FOR I=1 TO 4
1680 IF MID$(TOP$(I),2,1)<>"K" THEN RETURN
1690 NEXT I
1700 REM GAME OVER AND PLAYER WON
1710 FLAG=1:RETURN
1720 REM STACK TO STACK MOVE OR STACK TO TOP
1730 STKNUM1=VAL(K$)
1740 GOSUB 1150
1750 IF (K$>="1" AND K$<="7") OR (K$="T" OR K$="t") THEN 1770
1760 SOUND 50,5:GOTO 1000
1770 IF K$="t" OR K$="T" THEN W$=STACK$(STKNUM1,STACKPTR(STKNUM1)):GOTO 1790
1780 W$=STACK$(STKNUM1,VISIPTR(STKNUM1))
1790 SUIT$=MID$(W$,3,1)
1800 SIZE$=MID$(W$,2,1)
1810 IF K$="T" OR K$="t" THEN GOSUB 1380:GOTO 2040
1820 STKNUM2=VAL(K$)
1830 W$=STACK$(STKNUM2,STACKPTR(STKNUM2))
1840 SUITST$=MID$(W$,3,1)
1850 SIZEST$=MID$(W$,2,1)
1860 FLAG=0:GOSUB 1450
1870 IF FLAG=0 THEN SOUND 50,5:GOTO 1000
1880 IF VISIPTR(STKNUM1)=0 THEN VISIPTR(STKNUM1)=1
1890 FOR I=VISIPTR(STKNUM1) TO STACKPTR(STKNUM1)
1900 STACKPTR(STKNUM2)=STACKPTR(STKNUM2)+1
1910 LOCATE I+3,45-(STKNUM1*5):PRINT" ";
1920 STACK$(STKNUM2,STACKPTR(STKNUM2))=STACK$(STKNUM1,I)
1930 LOCATE STACKPTR(STKNUM2)+3,45-(STKNUM2*5)
1940 C$ = STACK$(STKNUM2,STACKPTR(STKNUM2)):GOSUB 2700
1950 PRINT STACK$(STKNUM2,STACKPTR(STKNUM2));:COLOR 7,1
1960 NEXT I
1970 IF VISIPTR(STKNUM1)>0 THEN VISIPTR(STKNUM1)=VISIPTR(STKNUM1)-1
1980 STACKPTR(STKNUM1)=VISIPTR(STKNUM1)
1990 IF STACKPTR(STKNUM1)<1 THEN 990
2000 LOCATE STACKPTR(STKNUM1)+3,45-(STKNUM1*5)
2010 C$ = STACK$(STKNUM1,STACKPTR(STKNUM1)):GOSUB 2700
2020 PRINT STACK$(STKNUM1,STACKPTR(STKNUM1));:COLOR 7,1
2030 GOTO 990
2040 LOCATE STACKPTR(STKNUM1)+3,45-(STKNUM1*5)
2050 PRINT" ";
2060 IF STACKPTR(STKNUM1)=VISIPTR(STKNUM1) THEN 1970
2070 STACKPTR(STKNUM1)=STACKPTR(STKNUM1)-1
2080 GOTO 990
2090 REM PRINT OUT THE TABLE
2100 COLOR 2 : SEEN = FALSE
2110 LOCATE 24,24:PRINT"Would you like to see the cards? "; :SOUND 1975,1:GOSUB 2580 : SOUND 1975,1
2120 A$=INKEY$:IF A$="" THEN 2120
2130 IF A$=CHR$(27) THEN ABORT=TRUE : LOCATE 24,24:PRINT SPACE$(40);:COLOR 7 : RETURN :ELSE ABORT=FALSE
2140 IF A$<>"y" AND A$<>"Y" AND A$<>"N" AND A$<>"n" THEN SOUND 50,5:GOTO 2120
2150 IF A$="N" OR A$="n" THEN 2320
2160 SEEN = TRUE : LOCATE 24,24:PRINT " ";
2170 FOR I=7 TO 1 STEP -1
2180 X=1
2190 WHILE VISIPTR(I)>X
2200 LOCATE X+3,45-(I*5)
2210 PRINT STACK$(I,X);:X=X+1
2220 WEND
2230 NEXT I
2240 LOCATE 18,50:PRINT"Pile: "
2250 X=0:RR=18
2260 FOR I=29 TO ENDDECK
2270 IF X+56>76 THEN RR=RR+1:X=0
2280 LOCATE RR,X+56
2290 IF DECK$(I)=" "THEN 2320 ELSE PRINT DECK$(I);:X=X+4
2300 NEXT I
2310 COLOR 7
2320 RETURN
2330 COLOR 2
2340 IF SCR.WIDTH=40 THEN SCR.WIDTH =80:LOCATE 24,15:PRINT"Play Again?";:GOTO 2360 ELSE LOCATE 24,24
2350 LOCATE 24,24:PRINT" Do you want to play again? ";
2360 A$=INKEY$:IF A$="" THEN 2360
2370 IF NOT WON THEN COLOR 7
2380 IF A$<>CHR$(27) THEN 2420 ELSE IF NOT SEEN AND NOT WON THEN ABORT=TRUE :LOCATE 24,28:PRINT SPACE$(30);:RETURN
2390 IF WON THEN SOUND 50,5: GOTO 2360
2400 SOUND 50,5:LOCATE 24,17:PRINT"Cheater... Shame Shame! You've already seen the cards!";:DT!=2000:GOSUB 2600
2410 LOCATE 24,17 : PRINT SPACE$(60);:GOTO 2340
2420 IF A$="y" OR A$="Y" THEN GOSUB 2890:FLAG =1:RETURN
2430 IF A$="N" OR A$="n" THEN GOSUB 2890:RETURN
2440 SOUND 50,5:GOTO 2360
2450 GOSUB 2730
2460 RETURN
2470 'CHECK TO SEE IF CLAIMED VICTORY
2480 FLAG=0
2490 IF NC>0 THEN 2540
2500 FOR I=1 TO 7
2510 IF VISIPTR(I)>1 THEN 2540
2520 NEXT I
2530 FLAG=1:GOTO 260
2540 SOUND 50,5:LOCATE 14,50:PRINT"You Have Not Won Yet!!!"
2550 DT! = 2000 : GOSUB 2600
2560 LOCATE 14,50:PRINT SPC(25);
2570 GOTO 1000
2580 'DELAY TIME ROUTINE FOR (DT!) MILLISECONDS
2590 DT!=250
2600 DV!=DT!*18.2/1000
2610 DEF SEG = &H40
2620 WHILE DV!>0
2630 A! = O
2640 FOR ID = O TO 3
2650 A! = A!*256 + PEEK(&H6F-ID)
2660 NEXT ID
2670 IF A! <> AOLD! THEN DV! = DV! - 1 : AOLD! = A!
2680 WEND
2690 DEF SEG : RETURN
2700 C$=MID$(C$,3,1)
2710 IF C$="H" OR C$="D" THEN COLOR 12,7 ELSE COLOR 0,7
2720 RETURN
2730 REM 'DISPLAY WON SCREEN'
2740 IF NOT.READ THEN FOR I = 1 TO 82 : READ XYARR$(I) : NEXT : NOT.READ=FALSE
2750 SCREEN 1,0 : COLOR 1,0
2760 FOR I = 82 TO 1 STEP -1
2770 FOR J = 1 TO 45
2780 X=RND(1)*320:Y=RND(1)*200:C=C+1:IF C=4 THEN C=1
2790 PSET (X,Y),C
2800 NEXT J
2810 LL = INT(RND(1)*I)+1
2820 XYPOS$=XYARR$(LL)
2830 XYARR$(LL)=XYARR$(I)
2840 Y = VAL(LEFT$(XYPOS$,1))+8
2850 X= VAL(RIGHT$(XYPOS$,2))
2860 LOCATE Y,X:PRINT "*";
2870 NEXT I
2880 SCR.WIDTH=40 : WON = TRUE : RETURN
2890 SCREEN 0,0,0,0:WIDTH 80:RETURN
2900 DATA "002","006","009","010","011","014","018","023","027","030"
2910 DATA "031","032","035","039","103","105","108","112","114"
2920 DATA "118","123","127","129","133","135","136","139","204","208"
2930 DATA "212","214","218","223","225","227","229","233","235","236"
2940 DATA "237","239","304","308","312","314","318","323","325","327"
2950 DATA "329","333","335","337","338","339","404","408","412","414"
2960 DATA "418","423","425","427","429","433","435","438","439","504"
2970 DATA "509","510","511","515","516","517","524","526","530","531"
2980 DATA "532","535","539"
2990 'Last Line of SOLITAIR.BAS
10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│ │░"
70 PRINT"░│ 2060-A.BAS │░"
80 PRINT"░│ XWING │░"
90 PRINT"░│ │░"
100 PRINT"░│ │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
130 PRINT"░│ █ █ █ █ █ █ │░"
140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
150 PRINT"░│ █ █ █ █ █ │░"
160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
170 PRINT"░│ │░"
180 PRINT"░│ International PC Owners │░"
190 PRINT"░│ │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│ │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT " PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 REM * STAR PILOT GAME *
1010 REM * WRITTEN BY GEORGE BLANK, LEECHBURG, PA. *
1020 REM * FOR PUBLIC DOMAIN UNLESS MOVIEMAKERS OBJECT *
1030 REM * VERSION 4.0 SEPTEMBER 25,1978 *
1040 REM * MODIFIED TO RUN ON THE IBM PC BY ERNEST *
1050 REM * SMITH AND RAYMOND ROGERS, HOUSTON, TEXAS *
1060 REM * DECEMBER 82 *
1070 KEY OFF:CLS:WIDTH 80:DEF SEG=0:A=PEEK(&H410):POKE &H410,(A AND &HCF) OR &H20
1080 WIDTH 40:SCREEN 1:SCREEN 0:WIDTH 80:WIDTH 40:SCREEN 1:COLOR 0,1
1090 GOTO 1200
1100 V=V-1:IF V<-3 THEN V=-3
1110 RETURN
1120 W=W-1:IF W<-5 THEN W=-5
1130 RETURN
1140 W=W+1:IF W>5 THEN W=5
1150 RETURN
1160 V=V+1:IF V>3 THEN V=3
1170 RETURN
1180 KEY(1) ON:KEY(2) ON:KEY(11) ON:KEY(12) ON:KEY(13) ON:KEY(14) ON:RETURN
1190 KEY(1) STOP:KEY(2) STOP:KEY(11) STOP:KEY(12) STOP:KEY(13) STOP:KEY(14) STOP:RETURN
1200 LOCATE 8,1:PRINT"***************************************";
1210 PRINT"* *";
1220 PRINT"* X W I N G F I G H T E R *";
1230 PRINT"* *";
1240 PRINT"***************************************";
1250 SOUND 525.25,18.2:SOUND 783.99,18.2/2:SOUND 698.46,18.2/6:SOUND 659.26,18.2/6:SOUND 587.33,18.2/6:SOUND 1046.6,18.2:SOUND 783.99,18.2/2:SOUND 698.46,18.2/6:SOUND 659.26,18.2/6:SOUND 587.33,18.2/6
1260 SOUND 1046.5,18.2:SOUND 783.99,18.2/2:SOUND 698.46,18.2/6:SOUND 659.26,18.2/6:SOUND 698.46,18.2/6:SOUND 587.33,18.2
1270 LOCATE 16,1:PRINT"DO YOU WANT INSTRUCTIONS (Y OR N)?";
1280 K$=INKEY$:IF K$="Y" OR K$="y" GOTO 6930
1290 IF K$<>"N" AND K$<>"n" GOTO 1270
1300 CLS:CLEAR:DEFINT A-Z:DEFSNG O,G,J,S
1310 RANDOMIZE(VAL(RIGHT$(TIME$,2)))
1320 ON KEY(1) GOSUB 5350:ON KEY(2) GOSUB 5750:ON KEY(11) GOSUB 1100:ON KEY(12) GOSUB 1120:ON KEY(13) GOSUB 1140:ON KEY(14) GOSUB 1160
1330 LOCATE 8,1:PRINT "IMPERIAL FIGHTER: ":DRAW "C2;BM145,59;M+0,0;BM+10,1;M+0,-2;M+2,2;M+0,-2;BM+10,-1;M+0,4;BM+6,-4;M+0,4;M+0,-2;M-6,0"
1340 DIM IM(6):DIM IM1(6):DIM IM2(6):DIM IM3(6):GET (145,59)-(145,59),IM:GET (145,59)-(145,59),IM1:GET (155,58)-(157,60),IM2:GET (167,57)-(173,61),IM3
1350 DIM IM4(13):IM4(0)=22:IM4(1)=7:IM4(2)=128:IM4(3)=-32760:IM4(4)=2048:IM4(5)=128:IM4(6)=-22008:IM4(7)=-22358:IM4(8)=128:IM4(9)=-32760:IM4(10)=2048:IM4(11)=128:IM4(12)=8
1360 DIM IM5(20):IM5(0)=26:IM5(1)=9:IM5(2)=128:IM5(3)=-32768!:IM5(4)=128:IM5(5)=-32768!:IM5(6)=128:IM5(7)=-32768!:IM5(8)=128:IM5(9)=-32768!:IM5(10)=-21846:IM5(11)=-32598:IM5(12)=128
1370 IM5(13)=-32768!:IM5(14)=128:IM5(15)=-32768!:IM5(16)=128:IM5(17)=-32768!:IM5(18)=128:IM5(19)=-32768!
1380 DIM IM6(44):IM6(0)=34:IM6(1)=17:IM6(2)=2048:IM6(5)=32:IM6(7)=-32768!:IM6(9)=512:IM6(12)=-32760:IM6(14)=8192:IM6(15)=32:IM6(17)=2176:IM6(20)=2:IM6(23)=128:IM6(25)=8192:IM6(28)=8
1390 IM6(29)=128:IM6(30)=512:IM6(31)=2:IM6(33)=-30720:IM6(36)=32:IM6(38)=-32768!:IM6(40)=512:IM6(43)=8
1400 DIM IM7(44)
1410 IM7(0)=30:IM7(1)=21:IM7(2)=-22006:IM7(3)=-22358:IM7(4)=32:IM7(5)=8192:IM7(6)=-21846:IM7(7)=-32598:IM7(8)=2048:IM7(9)=128
1420 IM7(10)=2048:IM7(11)=128:IM7(12)=2048:IM7(13)=128:IM7(14)=2048:IM7(15)=128:IM7(16)=2048:IM7(17)=128:IM7(18)=2048:IM7(19)=128
1430 IM7(20)=2560:IM7(21)=32:IM7(22)=2048:IM7(23)=128:IM7(24)=8704:IM7(25)=128:IM7(26)=2048:IM7(27)=128:IM7(28)=2048:IM7(29)=128
1440 IM7(30)=2048:IM7(31)=128:IM7(32)=2048:IM7(33)=128:IM7(34)=2048:IM7(35)=128:IM7(36)=2048:IM7(37)=128:IM7(38)=-22518:IM7(39)=-22358
1450 IM7(40)=2592:IM7(41)=8192:IM7(42)=-21846:IM7(43)=-32598
1460 DIM IM8(102)
1470 IM8(0)=50:IM8(1)=29:IM8(3)=2048:IM8(7)=10:IM8(10)=2048:IM8(11)=128:IM8(14)=8200:IM8(17)=2048:IM8(18)=8:IM8(21)=514
1480 IM8(25)=-32640:IM8(28)=8192:IM8(29)=32:IM8(32)=2184:IM8(35)=514:IM8(36)=2:IM8(38)=2048:IM8(39)=-32760:IM8(40)=128:IM8(42)=8352
1490 IM8(43)=-32736:IM8(45)=8194:IM8(46)=2176:IM8(47)=128:IM8(48)=512:IM8(49)=34:IM8(50)=-32766:IM8(51)=128:IM8(52)=10250:IM8(54)=-24448
1500 IM8(55)=8704:IM8(56)=32:IM8(58)=136:IM8(59)=-24446:IM8(61)=-32256:IM8(62)=514:IM8(63)=128:IM8(65)=-30592:IM8(66)=8:IM8(68)=8192
1510 IM8(69)=8224:IM8(72)=8200:IM8(73)=128:IM8(75)=512:IM8(76)=34:IM8(79)=-22528:IM8(80)=128:IM8(83)=8224:IM8(86)=2048:IM8(87)=8
1520 IM8(90)=2050:IM8(94)=136:IM8(97)=10240:IM8(101)=8
1530 LOCATE 10,1:PRINT "DARTH VADER : ":DRAW "C2;BM145,75;M+0,0;BM+10,1;M+0,-2;M+2,2;M+0,-2;BM+11,-1;M-1,1;M+0,2;M+1,1;BM+4,-4;M+1,1;M+0,2;M-1,1;BM+1,-2;M-6,0"
1540 DIM DV(6):DIM DV1(6):DIM DV2(6):DIM DV3(6):GET (145,75)-(145,75),DV:GET (145,75)-(145,75),DV1:GET (155,74)-(157,76),DV2:GET (167,73)-(173,77),DV3
1550 DIM DV4(13)
1560 DV4(0)=22:DV4(1)=7:DV4(2)=8:DV4(3)=8320:DV4(4)=8192:DV4(5)=128:DV4(6)=-22008:DV4(7)=-22358:DV4(8)=128:DV4(9)=8200
1570 DV4(10)=8192:DV4(11)=8:DV4(12)=128
1580 DIM DV5(20)
1590 DV5(0)=26:DV5(1)=9:DV5(2)=8:DV5(3)=8:DV5(4)=32:DV5(5)=2:DV5(6)=128:DV5(7)=-32768!:DV5(8)=128:DV5(9)=-32768!
1600 DV5(10)=-21846:DV5(11)=-32598:DV5(12)=128:DV5(13)=-32768!:DV5(14)=128:DV5(15)=-32768!:DV5(16)=32:DV5(17)=2:DV5(18)=8:DV5(19)=8
1610 DIM DV6(32)
1620 DV6(0)=30:DV6(1)=15:DV6(2)=-22528:DV6(4)=2:DV6(6)=8:DV6(8)=34:DV6(10)=-32640:DV6(12)=8320:DV6(14)=2176:DV6(16)=512
1630 DV6(19)=2176:DV6(21)=2080:DV6(23)=2056:DV6(25)=8194:DV6(27)=-32768!:DV6(29)=2:DV6(31)=168
1640 DIM DV7(44)
1650 DV7(0)=32:DV7(1)=21:DV7(2)=10752:DV7(3)=-24406:DV7(4)=-32768!:DV7(5)=-30720:DV7(6)=-22014:DV7(7)=682:DV7(8)=520:DV7(9)=-30688
1660 DV7(10)=544:DV7(11)=8224:DV7(12)=512:DV7(13)=32:DV7(14)=512:DV7(15)=32:DV7(16)=512:DV7(17)=32:DV7(18)=512:DV7(19)=32
1670 DV7(20)=512:DV7(21)=136:DV7(22)=512:DV7(23)=32:DV7(24)=2048:DV7(25)=160:DV7(26)=512:DV7(27)=32:DV7(28)=512:DV7(29)=32
1680 DV7(30)=512:DV7(31)=32:DV7(32)=512:DV7(33)=32:DV7(34)=520:DV7(35)=544:DV7(36)=546:DV7(37)=2080:DV7(38)=-21888:DV7(39)=-24534
1690 DV7(40)=546:DV7(41)=-32640:DV7(42)=-22006:DV7(43)=170
1700 DIM DV8(76)
1710 DV8(0)=46:DV8(1)=25:DV8(3)=10752:DV8(4)=128:DV8(6)=-32768!:DV8(7)=32:DV8(9)=-22526:DV8(10)=8:DV8(12)=512:DV8(13)=2
1720 DV8(16)=-32640:DV8(18)=512:DV8(19)=8224:DV8(21)=2048:DV8(22)=2056:DV8(24)=8192:DV8(25)=2082:DV8(27)=-32766:DV8(28)=-30592:DV8(30)=-32248
1730 DV8(31)=10240:DV8(32)=128:DV8(33)=-30712:DV8(34)=2048:DV8(35)=128:DV8(36)=-24536:DV8(37)=2048:DV8(38)=128:DV8(39)=-32630:DV8(40)=2048
1740 DV8(41)=672:DV8(42)=-32760:DV8(44)=2184:DV8(45)=10:DV8(47)=8322:DV8(48)=32:DV8(50)=-32640:DV8(51)=128:DV8(53)=-32224:DV8(56)=-30712
1750 DV8(59)=-24062:DV8(62)=-32768!:DV8(63)=168:DV8(65)=8192:DV8(66)=136:DV8(68)=2048:DV8(69)=136:DV8(71)=512:DV8(72)=136:DV8(75)=168
1760 LOCATE 12,1:PRINT "DEATH STAR : ":DRAW "C3;BM145,91;M+0,0;BM+11,-1;M-1,1;M+2,0;M-1,1;BM+12,-3;M+1,0;M+1,1;M-3,0;M+0,1;M+3,0;M-1,1;M-1,0"
1770 DRAW "C3;BM+12,-5;M+2,0;M+1,1;M-4,0;M-1,1;M+6,0;M+0,1;M-6,0;M+0,1;M+6,0;M-1,1;M-4,0;M+1,1;M+2,0"
1780 DIM DS(8):DIM DS1(8):DIM DS2(8):DIM DS3(8):DIM DS4(8):GET (145,91)-(145,91),DS:GET (145,91)-(145,91),DS1:GET (155,90)-(157,92),DS2:GET (167,89)-(170,92),DS3:GET (178,87)-(184,93),DS4
1790 DIM EXPL3(18):DIM EXPL4(18):DIM EXPL5(18):DIM EXPL6(18):DIM EXPL7(18):DIM EXPL8(18)
1800 DATA 22,11,0,0,0,8194,0,-32608,-22006,2560,-32598,-22006,128,168,8706,0,0,0,0
1810 FOR I=0 TO 18:READ EXPL3(I):NEXT I
1820 DATA 22,11,-30720,2048,136,-30718,-24544,-32608,-22006,-21848,-22358,-22006,-23936,10274,-30206,2048,-32632,-30720,0
1830 FOR I=0 TO 18:READ EXPL4(I):NEXT I
1840 DATA 22,11,-30712,512,136,8194,-32760,-24416,-21974,-21976,-22358,-21974,-32608,2216,-30206,512,138,-30712,128
1850 FOR I=0 TO 18:READ EXPL5(I):NEXT I
1860 DATA 22,11,-30712,2048,136,8194,-24536,-32608,-22006,-21976,-22358,-22006,-24448,10408,8706,2048,-32632,-30712,128
1870 FOR I=0 TO 18:READ EXPL6(I):NEXT I
1880 DATA 22,11,-30688,2048,2080,8194,-32736,-32608,-21974,-22008,-22358,-22006,-24448,10408,8706,2048,-32632,-30688,32
1890 FOR I=0 TO 18:READ EXPL7(I):NEXT I
1900 DATA 22,11,-30688,2048,2184,-30718,-24544,-32608,-22006,-21848,-22358,-22006,-23936,10274,-30206,2048,-32632,-30688,32
1910 FOR I=0 TO 18:READ EXPL8(I):NEXT I
1920 LOCATE 17,1:PRINT "SELECT SKILL LEVEL FROM 0 TO 3"
1930 S$=INKEY$:IF S$<>"0" AND S$<>"1" AND S$<>"2" AND S$<>"3" GOTO 1920
1940 SKILL=VAL(S$):CLS
1950 DIM LASAR(381)
1960 LASAR(0)=148:LASAR(1)=40:LASAR(2)=64:LASAR(11)=5136:LASAR(20)=16385:LASAR(21)=16385:LASAR(29)=5120:LASAR(31)=20:LASAR(38)=256:LASAR(39)=64:LASAR(40)=256:LASAR(41)=64:LASAR(48)=20
1970 LASAR(50)=5120:LASAR(57)=16385:LASAR(60)=16385:LASAR(66)=5120:LASAR(70)=20:LASAR(75)=256:LASAR(76)=64:LASAR(79)=256:LASAR(85)=4:LASAR(89)=20480:LASAR(94)=20480:LASAR(99)=5
1980 LASAR(103)=1280:LASAR(109)=80:LASAR(113)=80:LASAR(118)=1280:LASAR(122)=5:LASAR(128)=20480:LASAR(131)=20480:LASAR(138)=5:LASAR(140)=1280:LASAR(148)=80:LASAR(150)=80
1990 LASAR(157)=1024:LASAR(159)=1:LASAR(167)=16385:LASAR(168)=5120:LASAR(177)=276:LASAR(178)=64:LASAR(186)=256:LASAR(187)=84:LASAR(196)=21505:LASAR(205)=5120:LASAR(206)=16385
2000 LASAR(214)=256:LASAR(215)=64:LASAR(216)=20:LASAR(224)=4:LASAR(225)=256:LASAR(233)=20480:LASAR(235)=20480:LASAR(242)=1280:LASAR(245)=5:LASAR(252)=80:LASAR(255)=80
2010 LASAR(261)=5:LASAR(264)=1280:LASAR(270)=20480:LASAR(274)=20480:LASAR(279)=1280:LASAR(284)=5:LASAR(289)=80:LASAR(294)=80:LASAR(298)=1:LASAR(303)=1024:LASAR(307)=5120
2020 LASAR(313)=16385:LASAR(316)=256:LASAR(317)=64:LASAR(323)=20:LASAR(326)=20:LASAR(332)=256:LASAR(333)=64:LASAR(335)=16385:LASAR(342)=5120:LASAR(344)=5120:LASAR(352)=16385
2030 LASAR(353)=256:LASAR(354)=64:LASAR(362)=20:LASAR(363)=20:LASAR(371)=256:LASAR(372)=16448:LASAR(381)=4096
2040 REM * INITIALIZE VARIABLES *
2050 M=INT(RND*61)+10:N=INT(RND*21)+10:O=INT(RND*32001)+70000!
2060 E=INT(RND*61)+10:F=INT(RND*21)+10:G=25000
2070 H=INT(RND*61)+10:I=INT(RND*21)+10:J=INT(RND*32001)+40000!
2080 Q=5:Z=3
2090 IMX=38:IMY=21:IMR1=1:IMR2=1
2100 DVX=38:DVY=21:DVR1=1:DVR2=1
2110 IF SKILL=0 THEN A1=5:A2=0:BYPASS=3
2120 IF SKILL=1 THEN A1=3:A2=0:BYPASS=2
2130 IF SKILL=2 THEN A1=2:A2=45:BYPASS=1
2140 IF SKILL=3 THEN A1=2:A2=30
2150 K$="5"
2160 LINE (1,1)-(76,42),3,B
2170 DRAW "C3;BM2,21;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+12,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0;BM+6,0;M+0,0"
2180 DRAW "C3;BM38,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,6;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0;BM+0,3;M+0,0"
2190 LOCATE 8,1:PRINT "REPUBLIC X-WING STAR FIGHTER"
2200 LOCATE 10,5:PRINT "TORPEDOES"
2210 LOCATE 12,1:PRINT "HOR. VERT. DIRECTION"
2220 LOCATE 15,1:PRINT "SPEED MACH"
2230 LOCATE 17,1:PRINT "RADAR TARGETS"
2240 LOCATE 18,8:PRINT "KM TO IMPERIAL FIGHTER"
2250 LOCATE 19,8:PRINT "KM TO DARTH VADER"
2260 LOCATE 20,8:PRINT "KM TO DEATH STAR"
2270 LOCATE 22,1:PRINT "TIME REMAINING"
2280 PLAY"T250"
2290 SEC1=VAL(RIGHT$(TIME$,2))
2300 GOSUB 1180
2310 REM * MASTER CONTROL ROUTINE *
2320 GOSUB 1190
2330 PUT (38,21),DS1
2340 LOCATE 10,1:PRINT Z
2350 LOCATE 13,1:PRINT W;" ";-V
2360 LOCATE 15,12:PRINT Q*10
2370 GS=G-S:IF GS<0 THEN GS=0
2380 LOCATE 18,1:PRINT GS
2390 JS=J-S:IF JS<0 THEN JS=0
2400 LOCATE 19,1:PRINT JS
2410 OS=O-S:IF OS<0 THEN OS=0
2420 LOCATE 20,1:PRINT OS
2430 LOCATE 22,16:PRINT A1;":";A2NEW
2440 SOUND 37*Q,1
2450 PUT (38,21),DS1
2460 GOSUB 1180
2470 REM * DISPLAY DEATH STAR *
2480 IF O-S=30000 OR O-S>30000 GOTO 2840
2490 IF O-S<20000 AND DSTAR2=0 THEN DSTAR2=1:DSFLAG=1:DS(0)=DS2(0):DS(1)=DS2(1):DS(2)=DS2(2):DS(3)=DS2(3)
2500 IF O-S<10000 AND DSTAR3=0 THEN DSTAR3=1:DSFLAG=2:DS(0)=DS3(0):DS(1)=DS3(1):DS(2)=DS3(2):DS(3)=DS3(3)
2510 IF O-S<5000 AND DSTAR4=0 THEN DSTAR4=1:DSFLAG=3:DS(0)=DS4(0):DS(1)=DS4(1):DS(2)=DS4(2):DS(3)=DS4(3):DS(4)=DS4(4):DS(5)=DS4(5):DS(6)=DS4(6):DS(7)=DS4(7):DS(8)=DS4(8)
2520 IF FLAG1<>BYPASS THEN FLAG1=FLAG1+1:GOTO 2550
2530 FLAG1=0
2540 M=M+INT(RND*5)-2:N=N+INT(RND*5)-2
2550 M=M-W:N=N-V
2560 IF M<2 THEN M=2+INT(RND*3)
2570 IF M>69 THEN M=69-INT(RND*3)
2580 IF N<2 THEN N=2+INT(RND*3)
2590 IF N>35 THEN N=35-INT(RND*3)
2600 GOSUB 1190
2610 PUT (M,N),DS
2620 IF DSNEW=0 THEN DSNEW=1:GOTO 2680
2630 IF DSFLAG=0 GOTO 2670
2640 IF DSFLAG=1 THEN DSFLAG=0:PUT (MP,NP),DS1:GOTO 2680
2650 IF DSFLAG=2 THEN DSFLAG=0:PUT (MP,NP),DS2:GOTO 2680
2660 IF DSFLAG=3 THEN DSFLAG=0:PUT (MP,NP),DS3:GOTO 2680
2670 PUT(MP,NP),DS
2680 GOSUB 1180
2690 MP=M:NP=N
2700 IF O-S>10000 OR FLAG=1 GOTO 2840
2710 GOSUB 1190
2720 FOR K=1 TO 2
2730 LOCATE 24,1:PRINT "*** DEATH STAR WITHIN TORPEDO RANGE ***";
2740 PLAY "L2 N0"
2750 LOCATE 24,1:PRINT " ";
2760 PLAY "L16 N0"
2770 NEXT K
2780 LOCATE 24,1:PRINT "*** DEATH STAR WITHIN TORPEDO RANGE ***";
2790 PLAY "L1 N0":PLAY "L1 N0"
2800 LOCATE 24,1:PRINT " ";
2810 GOSUB 1180
2820 FLAG=1
2830 REM * DISPLAY IMPERIAL FIGHTER *
2840 GOSUB 1190
2850 IF G-S>26000 THEN GOSUB 1180:GOTO 3910
2860 IF G-S<20000 AND IMPFIGH2=0 THEN IMPFIGH2=1:IMFLAG=1:IM(0)=IM2(0):IM(1)=IM2(1):IM(2)=IM2(2):IM(3)=IM2(3):IMX=37:IMY=20:IMR1=2:IMR2=2
2870 IF G-S<10000 AND IMPFIGH3=0 THEN IMPFIGH3=1:IMFLAG=2:IM(0)=IM3(0):IM(1)=IM3(1):IM(2)=IM3(2):IM(3)=IM3(3):IM(4)=IM3(4):IM(5)=IM3(5):IM(6)=IM3(6):IMX=35:IMY=19:IMR1=4:IMR2=3
2880 IF FLAG2<>BYPASS THEN FLAG2=FLAG2+1:GOTO 2910
2890 FLAG2=0
2900 E=E+INT(RND*5)-2:F=F+INT(RND*5)-2
2910 E=E-W:F=F-V
2920 IF E<2 THEN E=2+INT(RND*3)
2930 IF E>69 THEN E=69-INT(RND*3)
2940 IF F<2 THEN F=2+INT(RND*3)
2950 IF F>37 THEN F=37-INT(RND*3)
2960 PUT (E,F),IM
2970 IF IMNEW=0 THEN IMNEW=1:GOTO 3020
2980 IF IMFLAG=0 GOTO 3010
2990 IF IMFLAG=1 THEN IMFLAG=0:PUT (EP,FP),IM1:GOTO 3020
3000 IF IMFLAG=2 THEN IMFLAG=0:PUT (EP,FP),IM2:GOTO 3020
3010 PUT (EP,FP),IM
3020 GOSUB 1180
3030 EP=E:FP=F
3040 IF G-S>5000 OR FLAG3=1 GOTO 3170
3050 GOSUB 1190
3060 FOR K=1 TO 2
3070 LOCATE 24,1:PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
3080 PLAY "L2 N0"
3090 LOCATE 24,1:PRINT " ";
3100 PLAY "L16 N0"
3110 NEXT K
3120 LOCATE 24,1:PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
3130 PLAY "L1 N0":PLAY "L1 N0"
3140 LOCATE 24,1:PRINT " ";
3150 GOSUB 1180
3160 FLAG3=1
3170 IF G>S THEN GOTO 3910
3180 REM * IMPERIAL FIGHTER ATTACKS *
3190 FLAG3=0:IMNEW=0:IMNEW1=0:IMPFIGH2=0:IMPFIGH3=0:PUT (E,F),IM
3200 GOSUB 1190
3210 DELTAX=29-E:DELTAY=19-F
3220 IF DELTAX>0 THEN E=E+1
3230 IF DELTAX<0 THEN E=E-1
3240 IF DELTAY>0 THEN F=F+1
3250 IF DELTAY<0 THEN F=F-1
3260 IF DELTAX=0 AND DELTAY=0 GOTO 3320
3270 PUT (E,F),IM:IF IMNEW1=0 THEN IMNEW1=1:GOTO 3290
3280 PUT (EP,FP),IM
3290 EP=E:FP=F
3300 PLAY "P32"
3310 GOTO 3210
3320 PUT (EP-4,FP-1),IM4
3330 PUT (EP,FP),IM
3340 PLAY "P4"
3350 PUT (EP-9,FP-2),IM5
3360 PUT (EP-4,FP-1),IM4
3370 PLAY "P4"
3380 PUT (EP-12,FP-6),IM6
3390 PUT (EP-9,FP-2),IM5
3400 PLAY "P4"
3410 PUT (EP-9,FP-7),IM7
3420 PUT (EP-12,FP-6),IM6
3430 PLAY "P4"
3440 PUT (EP-20,FP-14),IM8
3450 PUT (EP-9,FP-7),IM7
3460 PLAY "P4"
3470 PUT (EP-20,FP-14),IM8
3480 FOR J2=10000 TO 100 STEP -500
3490 SOUND J2,0.001*18.2
3500 NEXT J2
3510 FOR A=1 TO 50:NEXT A
3520 FOR J2=10000 TO 100 STEP -500
3530 SOUND J2,0.001*18.2
3540 NEXT J2
3550 G=G+25000
3560 E=INT(RND*61)+10:F=INT(RND*21)+10
3570 K=INT(RND*10)
3580 IF K>SKILL THEN 3790
3590 KEY(1) OFF:KEY(2) OFF:KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
3600 CLS
3610 PRINT "BLAM!"
3620 FOR J2=1000 TO 37 STEP -10
3630 SOUND J2,0.01*18.2
3640 NEXT J2
3650 PRINT
3660 PLAY "L1 N0":PLAY "L1 N0":PLAY "L1 N0"
3670 PRINT"YOU HAVE JUST BEEN SHOT DOWN BY AN";
3680 PRINT"IMPERIAL SKY FIGHTER!"
3690 PRINT
3700 PLAY "L1 N0":PLAY "L1 N0":PLAY "L1 N0"
3710 PRINT"YOU ARE A HERO!"
3720 PRINT
3730 PRINT"UNFORTUNATELY, YOU ARE A DEAD HERO AND";
3740 PRINT"DEAD HEROES DON'T WIN WARS. DARTH VADER";
3750 PRINT"WINS!"
3760 PRINT
3770 PRINT"********* YOU LOSE!! *********"
3780 GOTO 5310
3790 FOR K=1 TO 2
3800 LOCATE 24,1:PRINT "**** IMPERIAL FIGHTER MISSED ****";
3810 PLAY "L2 N0"
3820 LOCATE 24,1:PRINT " ";
3830 PLAY "L16 N0"
3840 NEXT K
3850 LOCATE 24,1:PRINT "**** IMPERIAL FIGHTER MISSED ****";
3860 PLAY "L1 N0":PLAY "L1 N0"
3870 LOCATE 24,1:PRINT " ";
3880 IM(0)=IM1(0):IM(1)=IM1(1):IM(2)=IM1(2):IM(3)=IM1(3):IM(4)=IM1(4):IM(5)=IM1(5):IM(6)=IM1(6)
3890 GOSUB 1180
3900 REM * DISPLAY DARTH VADER *
3910 GOSUB 1190
3920 IF J-S>26000 THEN GOSUB 1180:GOTO 5140
3930 IF J-S<20000 AND DVADER2=0 THEN DVADER2=1:DVFLAG=1:DV(0)=DV2(0):DV(1)=DV2(1):DV(2)=DV2(2):DV(3)=DV2(3):DVX=37:DVY=20:DVR1=2:DVR2=2
3940 IF J-S<10000 AND DVADER3=0 THEN DVADER3=1:DVFLAG=2:DV(0)=DV3(0):DV(1)=DV3(1):DV(2)=DV3(2):DV(3)=DV3(3):DV(4)=DV3(4):DV(5)=DV3(5):DV(6)=DV3(6):DVX=35:DVY=19:DVR1=4:DVR2=3
3950 IF FLAG2<>BYPASS THEN FLAG2=FLAG2+1:GOTO 3980
3960 FLAG2=0
3970 H=H+INT(RND*5)-2:I=I+INT(RND*5)-2
3980 H=H-W:I=I-V
3990 IF H<2 THEN H=2+INT(RND*3)
4000 IF H>69 THEN H=69-INT(RND*3)
4010 IF I<2 THEN I=2+INT(RND*3)
4020 IF I>37 THEN I=37-INT(RND*3)
4030 PUT (H,I),DV
4040 IF DVNEW=0 THEN DVNEW=1:GOTO 4090
4050 IF DVFLAG=0 GOTO 4080
4060 IF DVFLAG=1 THEN DVFLAG=0:PUT (HP,IP),DV1:GOTO 4090
4070 IF DVFLAG=2 THEN DVFLAG=0:PUT (HP,IP),DV2:GOTO 4090
4080 PUT (HP,IP),DV
4090 GOSUB 1180
4100 HP=H:IP=I
4110 IF J-S>5000 OR FLAG4=1 GOTO 4350
4120 GOSUB 1190
4130 IF DVGONE=0 GOTO 4240
4140 FOR K=1 TO 2
4150 LOCATE 24,1:PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
4160 PLAY "L2 N0"
4170 LOCATE 24,1:PRINT " ";
4180 PLAY "L16 N0"
4190 NEXT K
4200 LOCATE 24,1:PRINT "**** IMPERIAL FIGHTER ATTACKS ****";
4210 PLAY "L1 N0":PLAY "L1 N0"
4220 LOCATE 24,1:PRINT " ";
4230 GOTO 4330
4240 FOR K=1 TO 2
4250 LOCATE 24,1:PRINT "**** DARTH VADER ATTACKS ****";
4260 PLAY "L2 N0"
4270 LOCATE 24,1:PRINT " ";
4280 PLAY "L16 N0"
4290 NEXT K
4300 LOCATE 24,1:PRINT "**** DARTH VADER ATTACKS ****";
4310 PLAY "L1 N0":PLAY "L1 N0"
4320 LOCATE 24,1:PRINT " ";
4330 FLAG4=1
4340 GOSUB 1180
4350 IF J>S THEN GOTO 5140
4360 REM * DARTH VADER ATTACKS *
4370 FLAG4=0:DVNEW=0:DVNEW1=0:DVADER2=0:DVADER3=0:PUT (H,I),DV
4380 GOSUB 1190
4390 DELTAX=41-H:DELTAY=19-I
4400 IF DELTAX>0 THEN H=H+1
4410 IF DELTAX<0 THEN H=H-1
4420 IF DELTAY>0 THEN I=I+1
4430 IF DELTAY<0 THEN I=I-1
4440 IF DELTAX=0 AND DELTAY=0 GOTO 4500
4450 PUT (H,I),DV:IF DVNEW1=0 THEN DVNEW1=1:GOTO 4470
4460 PUT (HP,IP),DV
4470 HP=H:IP=I
4480 PLAY "P32"
4490 GOTO 4390
4500 IF DVGONE=0 THEN PUT(HP,IP-1),DV4 ELSE PUT(HP,IP-1),IM4
4510 PUT (HP,IP),DV
4520 PLAY "P4"
4530 IF DVGONE=0 THEN PUT(HP+3,IP-2),DV5 ELSE PUT(HP+3,IP-2),IM5
4540 IF DVGONE=0 THEN PUT(HP,IP-1),DV4 ELSE PUT(HP,IP-1),IM4
4550 PLAY "P4"
4560 IF DVGONE=0 THEN PUT(HP+2,IP-6),DV6 ELSE PUT(HP+2,IP-6),IM6
4570 IF DVGONE=0 THEN PUT(HP+3,IP-2),DV5 ELSE PUT(HP+3,IP-2),IM5
4580 PLAY "P4"
4590 IF DVGONE=0 THEN PUT(HP+1,IP-6),DV7 ELSE PUT(HP+1,IP-6),IM7
4600 IF DVGONE=0 THEN PUT(HP+2,IP-6),DV6 ELSE PUT(HP+2,IP-6),IM6
4610 PLAY "P4"
4620 IF DVGONE=0 THEN PUT(HP+2,IP-6),DV8 ELSE PUT(HP+2,IP-6),IM8
4630 IF DVGONE=0 THEN PUT(HP+1,IP-6),DV7 ELSE PUT(HP+1,IP-6),IM7
4640 PLAY "P4"
4650 IF DVGONE=0 THEN PUT(HP+2,IP-6),DV8 ELSE PUT(HP+2,IP-6),IM8
4660 FOR J2=10000 TO 100 STEP -500
4670 SOUND J2,0.001*18.2
4680 NEXT J2
4690 FOR A=1 TO 50:NEXT A
4700 FOR J2=10000 TO 100 STEP -500
4710 SOUND J2,0.001*18.2
4720 NEXT J2
4730 J=J+25000
4740 H=INT(RND*61)+10:I=INT(RND*21)+10
4750 K=INT(RND*10)
4760 IF K>SKILL+1 THEN 4910
4770 KEY(1) OFF:KEY(2) OFF:KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
4780 CLS:PRINT "**** B O O M ! ****"
4790 FOR J2=1000 TO 37 STEP -10
4800 SOUND J2,0.01*18.2
4810 NEXT J2
4820 PRINT
4830 PLAY "L1 N0":PLAY "L1 N0":PLAY "L1 N0"
4840 IF DVGONE=1 THEN PRINT"TOO BAD. YOU HAVE BEEN SHOT DOWN.":GOTO 4880
4850 PRINT"YOU HAVE JUST BEEN PERSONALLY SHOT DOWN";
4860 PRINT"BY DARTH VADER. THE FORCE WAS NOT WITH";
4870 PRINT"YOU."
4880 PRINT
4890 PRINT"********* YOU LOSE!! *********"
4900 GOTO 5310
4910 IF DVGONE=0 GOTO 5030
4920 FOR K=1 TO 2
4930 LOCATE 24,1:PRINT "**** IMPERIAL FIGHTER MISSED ****";
4940 PLAY "L2 N0"
4950 LOCATE 24,1:PRINT " ";
4960 PLAY "L16 N0"
4970 NEXT K
4980 LOCATE 24,1:PRINT "**** IMPERIAL FIGHTER MISSED ****";
4990 PLAY "L1 N0":PLAY "L1 N0"
5000 LOCATE 24,1:PRINT " ";
5010 DV(0)=DV1(0):DV(1)=DV1(1):DV(2)=DV1(2):DV(3)=DV1(3)
5020 GOTO 5140
5030 FOR K=1 TO 2
5040 LOCATE 24,1:PRINT "**** DARTH VADER MISSED ****";
5050 PLAY "L2 N0"
5060 LOCATE 24,1:PRINT " ";
5070 PLAY "L16 N0"
5080 NEXT K
5090 LOCATE 24,1:PRINT "**** DARTH VADER MISSED ****";
5100 PLAY "L1 N0":PLAY "L1 N0"
5110 LOCATE 24,1:PRINT " ";
5120 DV(0)=DV1(0):DV(1)=DV1(1):DV(2)=DV1(2):DV(3)=DV1(3):DV(4)=DV1(4):DV(5)=DV1(5):DV(6)=DV1(6)
5130 REM * X - WING FIGHTER ROUTINE *
5140 GOSUB 1180
5150 Z$=INKEY$
5160 IF VAL(Z$)>0 AND VAL(Z$)<10 THEN Q=VAL(Z$)
5170 S=S+Q*100
5180 IF S>O GOTO 6410
5190 REM * TIME ROUTINE *
5200 SEC2=VAL(RIGHT$(TIME$,2))
5210 SECNEW=SEC2
5220 IF SECNEW=SECOLD GOTO 5280
5230 IF SECNEW<SECOLD THEN N8=N8+1
5240 SECOLD=SEC2
5250 A2NEW=A2-(SEC2+(60*N8)-SEC1)
5260 IF A2NEW<0 THEN A2NEW=A2NEW+60:A1=A1-1:A2=A2+60
5270 IF A1<0 GOTO 6760
5280 GOTO 2320
5290 REM * DISPLAY SKY FIGHTER *
5300 IF J-S<10000 THEN A=3
5310 REM * NEW GAME *
5320 PRINT
5330 PRINT "HIT ENTER TO PLAY AGAIN, ESC TO GIVE UP"
5340 B$=INKEY$:IF B$=CHR$(13) THEN GOTO 1300 ELSE IF B$=CHR$(27) THEN CLS:WIDTH 80:SCREEN 0:KEY ON:SYSTEM ELSE GOTO 5340
5350 REM * FIRE CANNON *
5360 KEY(2) STOP:KEY(11) STOP:KEY(12) STOP:KEY(13) STOP:KEY(14) STOP
5370 PUT (2,2),LASAR
5380 FOR J2=5000 TO 100 STEP -250
5390 SOUND J2,0.01*18.2
5400 NEXT J2
5410 PUT (2,2),LASAR
5420 IF G-S<26000 AND ABS(IMX-E)<IMR1 AND ABS(IMY-F)<IMR2 GOTO 5450
5430 IF J-S<26000 AND ABS(DVX-H)<DVR1 AND ABS(DVY-I)<DVR2 GOTO 5580
5440 GOTO 5730
5450 FOR I9=1 TO 2:PUT (E-2,F-3),EXPL3:PLAY "P64":PUT (E-2,F-3),EXPL3:NEXT I9
5460 FOR I9=1 TO 2:PUT (E-2,F-3),EXPL4:PLAY "P64":PUT (E-2,F-3),EXPL4:NEXT I9
5470 PUT (E,F),IM
5480 IF IMR2=1 GOTO 5540
5490 FOR I9=1 TO 2:PUT (E-2,F-3),EXPL5:PLAY "P64":PUT (E-2,F-3),EXPL5:NEXT I9
5500 FOR I9=1 TO 2:PUT (E-2,F-3),EXPL6:PLAY "P64":PUT (E-2,F-3),EXPL6:NEXT I9
5510 IF IMR2=2 GOTO 5540
5520 FOR I9=1 TO 2:PUT (E-2,F-3),EXPL7:PLAY "P64":PUT (E-2,F-3),EXPL7:NEXT I9
5530 FOR I9=1 TO 2:PUT (E-2,F-3),EXPL8:PLAY "P64":PUT (E-2,F-3),EXPL8:NEXT I9
5540 G=G+25000:E=INT(RND*61)+10:F=INT(RND*21)+10:FLAG3=0:IMNEW=0:IMPFIGH2=0:IMPFIGH3=0
5550 IMX=38:IMY=21:IMR1=1:IMR2=1
5560 IM(0)=IM1(0):IM(1)=IM1(1):IM(2)=IM1(2):IM(3)=IM1(3):IM(4)=IM1(4):IM(5)=IM1(5):IM(6)=IM1(6)
5570 GOTO 5730
5580 FOR I9=1 TO 2:PUT (H-2,I-3),EXPL3:PLAY "P64":PUT (H-2,I-3),EXPL3:NEXT I9
5590 FOR I9=1 TO 2:PUT (H-2,I-3),EXPL4:PLAY "P64":PUT (H-2,I-3),EXPL4:NEXT I9
5600 PUT (H,I),DV
5610 IF DVR2=1 GOTO 5670
5620 FOR I9=1 TO 2:PUT (H-2,I-3),EXPL5:PLAY "P64":PUT (H-2,I-3),EXPL5:NEXT I9
5630 FOR I9=1 TO 2:PUT (H-2,I-3),EXPL6:PLAY "P64":PUT (H-2,I-3),EXPL6:NEXT I9
5640 IF DVR2=2 GOTO 5670
5650 FOR I9=1 TO 2:PUT (H-2,I-3),EXPL7:PLAY "P64":PUT (H-2,I-3),EXPL7:NEXT I9
5660 FOR I9=1 TO 2:PUT (H-2,I-3),EXPL8:PLAY "P64":PUT (H-2,I-3),EXPL8:NEXT I9
5670 J=J+25000:H=INT(RND*61)+10:I=INT(RND*21)+10:FLAG4=0:LOCATE 19,8:PRINT "KM TO IMPERIAL FIGHTER";
5680 DVNEW=0:DVADER2=0:DVADER3=0
5690 DVX=38:DVY=21:DVR1=1:DVR2=1
5700 IF DVGONE=0 THEN DV3(0)=IM3(0):DV3(1)=IM3(1):DV3(2)=IM3(2):DV3(3)=IM3(3):DV3(4)=IM3(4):DV3(5)=IM3(5):DV3(6)=IM3(6)
5710 DV(0)=DV1(0):DV(1)=DV1(1):DV(2)=DV1(2):DV(3)=DV1(3):DV(4)=DV1(4):DV(5)=DV1(5):DV(6)=DV1(6)
5720 DVGONE=1
5730 KEY(2) ON:KEY(11) ON:KEY(12) ON:KEY(13) ON:KEY(14) ON
5740 RETURN
5750 REM * FIRE TORPEDO *
5760 KEY(1) STOP:KEY(11) STOP:KEY(12) STOP:KEY(13) STOP:KEY(14) STOP
5770 IF Z=0 THEN 3600
5780 FOR J2=1500 TO 100 STEP -20
5790 SOUND J2,0.01*18.2
5800 SOUND 3600-J2,0.01*18.2
5810 NEXT J2
5820 Z=Z-1
5830 IF O-S>10000 THEN 5990
5840 IF POINT(38,21)<>3 THEN 5880
5850 IF SKILL=0 GOTO 6100
5860 K=INT(RND*10)
5870 IF K>SKILL+1 THEN 6100
5880 FOR K=1 TO 2
5890 LOCATE 24,1:PRINT "**** TORPEDO MISSED ****";
5900 PLAY "L2 N0"
5910 LOCATE 24,1:PRINT " ";
5920 PLAY "L16 N0"
5930 NEXT K
5940 LOCATE 24,1:PRINT "**** TORPEDO MISSED ****";
5950 PLAY "L1 N0":PLAY "L1 N0"
5960 LOCATE 24,1:PRINT " ";
5970 IF Z<=0 THEN 4780
5980 GOTO 6080
5990 FOR K=1 TO 2
6000 LOCATE 24,1:PRINT "**** OUT OF RANGE ****";
6010 PLAY "L2 N0"
6020 LOCATE 24,1:PRINT " ";
6030 PLAY "L16 N0"
6040 NEXT K
6050 LOCATE 24,1:PRINT "**** OUT OF RANGE ****";
6060 PLAY "L1 N0":PLAY "L1 N0"
6070 LOCATE 24,1:PRINT " ";
6080 KEY(1) ON:KEY(11) ON:KEY(12) ON:KEY(13) ON:KEY(14) ON
6090 RETURN
6100 REM * GAME WON *
6110 KEY(1) OFF:KEY(2) OFF:KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
6120 FOR SCALE=1 TO 24
6130 DRAW"C3;S=SCALE;BM38,21;NM+6,0;NM-6,0;NM+0,-3;NM+0,3;NM-6,3;NM+6,-3;NM-6,-3;NM+6,3;NM+3,-3;NM-3,3;NM+3,3;NM-3,-3;NM+6,2;NM-6,-2;NM-6,1;NM+6,-1;NM+1,3;NM-1,-3"
6140 NEXT SCALE
6150 CLS
6160 FOR K=1 TO 5
6170 SOUND 37,0.1*18.2
6180 SCREEN 0:WIDTH 40
6190 FOR A=1 TO 10:NEXT A
6200 SCREEN 1:WIDTH 80
6210 NEXT K
6220 WIDTH 40
6230 CLS:PRINT:PRINT:PRINT
6240 PRINT"* * * * * * * * * * * * * * * * * * * *";
6250 PRINT"* *";
6260 PRINT"* *";
6270 PRINT"* THE FORCE IS WITH YOU !! *";
6280 PRINT"* *";
6290 PRINT"* YOU HAVE DESTROYED THE DEATH STAR ! *";
6300 PRINT"* *";
6310 PRINT"* YOU HAVE SAVED THE REPUBLIC ! *";
6320 PRINT"* *";
6330 PRINT"* PRINCESS LEAH WILL LOVE YOU ALWAYS! *";
6340 PRINT"* *";
6350 PRINT"* * * * * * * * * * * * * * * * * * * *"
6360 SOUND 525.25,18.2:SOUND 783.99,18.2/2:SOUND 698.46,18.2/6:SOUND 659.26,18.2/6:SOUND 587.33,18.2/6:SOUND 1046.6,18.2:SOUND 783.99,18.2/2:SOUND 698.46,18.2/6:SOUND 659.26,18.2/6:SOUND 587.33,18.2/6
6370 SOUND 1046.5,18.2:SOUND 783.99,18.2/2:SOUND 698.46,18.2/6:SOUND 659.26,18.2/6:SOUND 698.46,18.2/6:SOUND 587.33,18.2
6380 PRINT
6390 GOTO 5310
6400 REM * COLLISION WITH DEATH STAR *
6410 KEY(1) OFF:KEY(2) OFF:KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
6420 DELTAX=35-M:DELTAY=18-N
6430 IF DELTAX>0 THEN M=M+1
6440 IF DELTAX<0 THEN M=M-1
6450 IF DELTAY>0 THEN N=N+1
6460 IF DELTAY<0 THEN N=N-1
6470 IF DELTAX=0 AND DELTAY=0 GOTO 6530
6480 PUT (M,N),DS
6490 PUT (MP,NP),DS
6500 MP=M:NP=N
6510 PLAY "P32"
6520 GOTO 6420
6530 FOR RAD=4 TO 20
6540 CIRCLE(38,21),RAD,3
6550 PLAY "P32"
6560 NEXT RAD
6570 CLS:PRINT "CRASH"
6580 FOR J2=1000 TO 37 STEP -10
6590 SOUND J2,0.01*18.2
6600 NEXT J2
6610 PLAY "L1 N0":PLAY "L1 N0":PLAY "L1 N0"
6620 PRINT
6630 PRINT"DARTH VADER IS LAUGHING AT YOU."
6640 PLAY "L1 N0":PLAY "L1 N0":PLAY "L1 N0"
6650 PRINT
6660 PRINT"YOU HAVE JUST COLLIDED WITH THE DEATH";
6670 PRINT"STAR. THEY DID NOT EVEN HEAR THE";
6680 PRINT"COLLISION. YOU DID NOT EVEN SCRATCH";
6690 PRINT"THE DEATH STAR'S PAINT, BUT YOU ARE ";
6700 PRINT"DEAD!"
6710 PRINT
6720 PRINT"********* YOU LOSE!! *********"
6730 PRINT
6740 GOTO 5310
6750 REM * OUT OF TIME *
6760 KEY(1) OFF:KEY(2) OFF:KEY(11) OFF:KEY(12) OFF:KEY(13) OFF:KEY(14) OFF
6770 CLS:PRINT "TOO LATE!"
6780 FOR J2=1000 TO 37 STEP -10
6790 SOUND J2,0.01*18.2
6800 NEXT J2
6810 PLAY "L1 N0":PLAY "L1 N0":PLAY "L1 N0"
6820 PRINT
6830 PRINT"DARTH VADER IS LAUGHING AT YOU."
6840 PLAY "L1 N0":PLAY "L1 N0":PLAY "L1 N0"
6850 PRINT
6860 PRINT"THE DEATH STAR HAS JUST DESTROYED";
6870 PRINT"PRINCESS LEAH AND THE ENTIRE REBEL";
6880 PRINT"STRONGHOLD";
6890 PRINT
6900 PRINT"********* YOU LOSE!! *********"
6910 PRINT
6920 GOTO 5310
6930 CLS
6940 PRINT" STAR PILOT INSTRUCTIONS"
6950 PRINT
6960 PRINT" THE DEATH STAR SPACE STATION, UNDER";
6970 PRINT"THE COMMAND OF DARTH VADER, IS THE MOST";
6980 PRINT"POWERFUL WEAPON THE UNIVERSE HAS EVER";
6990 PRINT"KNOWN. A FRONTAL ATTACK BY ANY OTHER";
7000 PRINT"CRAFT WOULD BE ABSOLUTE SUICIDE. HOWEVER";
7010 PRINT"INTELLIGENCE DELIVERED TO OUR REPUBLIC";
7020 PRINT"HEADQUARTERS BY THE ANDROIDS R2D2 AND";
7030 PRINT"C3PO GIVES A FAINT HOPE OF A SUCCESSFUL";
7040 PRINT"ATTACK BY A SMALL ONE OR TWO PASSENGER";
7050 PRINT"X-WING FIGHTER."
7060 PRINT
7070 PRINT" THERE IS A SMALL, UNSHIELDED EXHAUST";
7080 PRINT"PORT ON THE SURFACE OF THE DEATH STAR";
7090 PRINT"THAT LEADS DIRECTLY TO THE MAIN REACTOR.";
7100 PRINT"SINCE IT IS AN EMERGENCY THERMAL PORT IN";
7110 PRINT"CASE THE REACTOR OVERHEATS, IT COULD NOT";
7120 PRINT"BE SHIELDED."
7130 PRINT
7140 INPUT" (PRESS ENTER TO CONTINUE)",B$
7150 CLS
7160 PRINT
7170 PRINT" IF YOU CAN SLIP YOUR SMALL FIGHTER";
7180 PRINT"PAST THE DEATH STAR'S DEFENSES AND MAKE";
7190 PRINT"A DIRECT HIT ON THE THERMAL EXHAUST PORT";
7200 PRINT"WITH A TORPEDO, THERE IS A CHANCE THAT";
7210 PRINT"THE TORPEDO WILL PENETRATE TO THE";
7220 PRINT"MAIN REACTOR AND START A CHAIN REACTION,";
7230 PRINT"DESTROYING THE DEATH STAR."
7240 PRINT
7250 PRINT" IT IS A SLIM CHANCE, BUT IT IS THE";
7260 PRINT"ONLY HOPE THE REPUBLIC HAS. OBI-WAN";
7270 PRINT"KENOBI GAVE HIS LIFE TO GET THE MESSAGE";
7280 PRINT"HERE, SO HE CONSIDERED IT IMPORTANT."
7290 PRINT:PRINT:PRINT:PRINT
7300 PRINT"PRESS ENTER FOR X-WING FIGHTER ";
7310 INPUT" FAMILIARIZATION",B$
7320 CLS
7330 PRINT" REPUBLIC X-WING FIGHTER "
7340 PRINT
7350 PRINT" THE X-WING FIGHTER IS A SMALL ONE";
7360 PRINT"MAN SPACESHIP THAT IS, QUITE FRANKLY,";
7370 PRINT"OBSOLETE. IT IS ARMED ONLY WITH A LASER";
7380 PRINT"CANNON AND THREE TORPEDOES. USE THE";
7390 PRINT"LASER CANNON TO FIGHT OFF ANY IMPERIAL";
7400 PRINT"FIGHTERS AND SAVE THE TORPEDOES FOR THE";
7410 PRINT"DEATH STAR."
7420 PRINT
7430 PRINT" THE TARGET ACQUISITION RADAR CAN";
7440 PRINT"DETECT IN EXCESS OF 100,000 KILOMETERS";
7450 PRINT"AWAY, BUT CAN ONLY DISPLAY TARGETS WITH-";
7460 PRINT"IN 20,000 KM. THEREFORE, YOU WILL BE";
7470 PRINT"WARNED OF APPROACHING TARGETS ON YOUR";
7480 PRINT"CONTROL PANEL BEFORE THEY ARE DISPLAYED";
7490 PRINT"ON THE RADAR SCREEN."
7500 PRINT
7510 INPUT" (PRESS ENTER TO CONTINUE)",B$
7520 CLS
7530 PRINT
7540 PRINT" THE LASER CANNON IS AN ANTIQUATED";
7550 PRINT"WEAPON. TO HIT AN ENEMY, YOU MUST HAVE";
7560 PRINT"HIM IN THE EXACT CENTER OF THE CROSS";
7570 PRINT"HAIRS ON YOUR RADAR SCREEN. THEN YOU MAY";
7580 PRINT"FIRE THE LASER CANNON BY TYPING THE F1";
7590 PRINT"KEY ON YOUR CONTROL PANEL."
7600 PRINT
7610 PRINT" YOUR THREE TORPEDOES ARE COMPUTER";
7620 PRINT"GUIDED, BUT ALSO QUITE LIMITED. MAKE";
7630 PRINT"SURE THAT YOU ARE WITHIN 10000 KM OF THE";
7640 PRINT"DEATH STAR AND THAT YOU HAVE SOME PART";
7650 PRINT"OF THE SPACE STATION IN THE CENTER OF";
7660 PRINT"THE CROSS HAIRS ON YOUR RADAR SCREEN.";
7670 PRINT"EVEN THEN, SINCE IT TAKES A PERFECT HIT";
7680 PRINT"ON THE EXHAUST PORT TO DESTROY THE DEATH";
7690 PRINT"STAR, YOU MAY REQUIRE MORE THAN ONE";
7700 PRINT"TORPEDO. TYPE THE F2 KEY TO FIRE THE";
7710 PRINT"TORPEDO."
7720 PRINT
7730 INPUT" (PRESS ENTER TO CONTINUE)",B$
7740 CLS
7750 PRINT
7760 PRINT" THE SPEED OF YOUR SHIP IS CONTROLLED";
7770 PRINT"BY TYPING THE NUMBERS 1 THROUGH 9 (FOR";
7780 PRINT"MACH 10 THROUGH 90 RESPECTIVELY). THE";
7790 PRINT"MOVEMENT OF YOUR SHIP IS CONTROLLED BY";
7800 PRINT"THE CURSOR CONTROLS. SINCE THESE INPUTS";
7810 PRINT"MOVE YOUR SHIP AND NOT THE TARGETS, THE";
7820 PRINT"TARGETS APPEAR TO MOVE IN THE OPPOSITE";
7830 PRINT"DIRECTION. ALSO, YOU CAN EXPECT THE";
7840 PRINT"ENEMY TO TAKE EVASIVE ACTION."
7850 PRINT
7860 PRINT" WHEN SELECTING THE SKILL LEVEL, 0 IS";
7870 PRINT"THE EASIEST GAME AND 3 IS THE HARDEST.";
7880 PRINT"SKILL LEVEL 0 PROVIDES THE BEST CHANCE";
7890 PRINT"OF BEING MISSED BY THE FIGHTERS AND OF";
7900 PRINT"HITTING THE DEATH STAR. LEVEL 0 ALSO";
7910 PRINT"PROVIDES THE LARGEST TIME LIMIT BEFORE";
7920 PRINT"THE DEATH STAR DESTROYS THE REBEL BASE."
7930 PRINT
7940 PRINT
7950 INPUT"PRESS ENTER FOR TAKE-OFF",B$
7960 CLS
7970 PRINT"****************************************"
7980 PRINT
7990 PRINT" MAY THE FORCE BE WITH YOU"
8000 PRINT
8010 PRINT"****************************************"
8020 PLAY "L1 N0":PLAY "L1 N0"
8030 GOTO 1300
Volume in drive A has no label
Directory of A:\
CIA BAS 14855 8-30-85 5:34p
CIVILWAR BAS 8141 8-30-85 5:36p
COMBOT BAS 24453 8-30-85 12:02a
FOOTBAL BAS 7330 8-30-85 12:01a
FOOTBALL BAS 7358 8-30-85 12:03a
GRINCH BAS 6555 8-30-85 12:04a
MARS-ESC BAS 10525 8-30-85 12:10a
RACECAR BAS 12464 8-30-85 12:11a
SEAWOLF BAS 6018 8-30-85 12:16a
SOLITARE BAS 12032 1-24-84 10:02p
XWING BAS 29206 8-30-85 12:23a
A BAT 21 8-30-85 5:23p
B BAT 26 8-30-85 5:26p
C BAT 24 8-30-85 5:26p
D BAT 25 8-30-85 5:27p
E BAT 26 8-30-85 5:27p
F BAT 24 8-30-85 5:28p
G BAT 26 8-30-85 5:28p
H BAT 43 8-30-85 5:29p
I BAT 25 8-30-85 5:29p
J BAT 26 8-30-85 5:30p
K BAT 13 8-30-85 5:30p
L BAT 23 8-30-85 5:31p
MENU BAT 63 8-30-85 5:12p
COMBOT DOC 3022 7-19-83 12:35a
FROG EXE 37632 2-13-84 6:11p
MENU SCR 191 8-30-85 4:29p
FILES174 TXT 1010 1-04-80 12:39a
28 file(s) 181157 bytes
121856 bytes free