PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #174)

[PCjs Machine "ibm5160"]

Waiting for machine "ibm5160" to load....

Information about “GAMES SERIES NO 12”

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.

CIA.BAS

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

CIVILWAR.BAS

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

COMBOT.BAS

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 ' --------------------------------------------------------------

COMBOT.DOC

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



FILES174.TXT

------------------------------------------------------------------------
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

FOOTBAL.BAS

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

FOOTBALL.BAS

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

GRINCH.BAS

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

MARS-ESC.BAS

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

RACECAR.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

SEAWOLF.BAS

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

SOLITARE.BAS

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

XWING.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

Directory of PC-SIG Library Disk #0174

 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