home *** CD-ROM | disk | FTP | other *** search
- 10 POKE55,0:POKE56,128:CLR:REM MOVE TOP OF MEMORY DOWN TO 32768
- 20 GOTO5000
- 97 *
- 98 * MAIN GAME LOOP
- 99 *
- 100 TI$="000000"
- 110 GETIN$:IFIN$=""GOTO150
- 120 IFIN$=""THENGOSUB2200
- 130 IFIN$=""THENGOSUB2400
- 140 IFIN$=" "THENDC=1
- 150 R=FNE(.):ONRGOSUB1000,1100,1200,1300,1400,1500,1000,1300:IFDCTHENGOSUB2000
- 160 IFTI<TLIMGOTO110
- 170 GOTO7000
- 997 *
- 998 * SMALL SUB
- 999 *
- 1000 POKEHOM+X(1)+SW*Y(1),BL:X(1)=X(1)+FND(.):IFX(1)<SWGOTO1020
- 1010 X(1)=1:Y(1)=FNB(.):IFY(1)=Y(2)ORY(1)=Y(3)GOTO1010
- 1020 POKEHOM+X(1)+SW*Y(1),34:RETURN
- 1097 *
- 1098 * MED SUB
- 1099 *
- 1100 A=HOM+X(2)+SW*Y(2):POKEA,BL:POKEA-1,BL:X(2)=X(2)+FNA(.):IFX(2)<SWGOTO1120
- 1110 X(2)=2:Y(2)=FNB(.):IFY(2)=Y(1)ORY(2)=Y(3)GOTO1110
- 1120 A=HOM+X(2)+SW*Y(2):POKEA,36:POKEA-1,35:RETURN
- 1197 *
- 1198 * LARGE SUB
- 1199 *
- 1200 A=HOM+X(3)+SW*Y(3):FORI=A-2TOA:POKEI,BL:NEXT
- 1210 X(3)=X(3)+FNA(.):IFX(3)<SWGOTO1230
- 1220 X(3)=3:Y(3)=FNB(.):IFY(3)=Y(1)ORY(3)=Y(2)GOTO1220
- 1230 A=HOM+X(3)+SW*Y(3):POKEA,39:POKEA-1,38:POKEA-2,37:RETURN
- 1297 *
- 1298 * SMALL PLANE
- 1299 *
- 1300 POKEHOM+X(4)+SW*Y(4),BL:X(4)=X(4)-FNA(.):IFX(4)>.GOTO1320
- 1310 X(4)=SW:Y(4)=FNC(.):IFY(4)=Y(5)ORY(4)=Y(6)GOTO1310
- 1320 POKEHOM+X(4)+SW*Y(4),22:RETURN
- 1397 *
- 1398 * MED PLANE
- 1399 *
- 1400 A=HOM+X(5)+SW*Y(5):POKEA,BL:POKEA+1,BL:X(5)=X(5)-FND(.):IFX(5)>.GOTO1420
- 1410 X(5)=39:Y(5)=FNC(.):IFY(5)=Y(4)ORY(5)=Y(6)GOTO1410
- 1420 A=HOM+X(5)+SW*Y(5):POKEA,23:POKEA+1,24:RETURN
- 1497 *
- 1498 * LARGE PLANE
- 1499 *
- 1500 A=HOM+X(6)+SW*Y(6):FORI=ATOA+2:POKEI,BL:NEXT
- 1510 X(6)=X(6)-FNA(.):IFX(6)>.GOTO1530
- 1520 X(6)=38:Y(6)=FNC(.):IFY(6)=Y(4)ORY(6)=Y(5)GOTO1520
- 1530 A=HOM+X(6)+SW*Y(6):POKEA,25:POKEA+1,26:POKEA+2,27:RETURN
- 1997 *
- 1998 * DEPTH CHARGE
- 1999 *
- 2000 POKEFQ,38:POKEWV,TRI:PK%=PEEK(D):IFPK%<>BLANDPK%<>63GOTO2030
- 2010 POKED,BL:D=D+SW:IFD>33767GOTO2040
- 2020 PK%=PEEK(D):IFPK%=BLTHENPOKED,63:POKEWV,.:RETURN
- 2030 C=D:GOSUB3000
- 2040 D=33266:DC=.:POKEWV,.:RETURN
- 2197 *
- 2198 * LEFT GUN
- 2199 *
- 2200 POKEFQ,10:POKEWV,NOI:POKE33141,42:FORI=1TO10:NEXT:C=.:POKEWV,.
- 2210 FORI=33100TO32813STEP-41:POKEI+41,BL:PK%=PEEK(I):IFPK%=BLTHENPOKEI,40:NEXT
- 2220 IFPK%<>BLTHENC=I:I=32772:NEXT
- 2230 IFCTHENGOSUB3000:RETURN
- 2240 POKE32813,BL:RETURN
- 2397 *
- 2398 * RIGHT GUN
- 2399 *
- 2400 POKEFQ,9:POKEWV,NOI:POKE33151,42:FORI=1TO10:NEXT:C=.:POKEWV,.
- 2410 FORI=33112TO32839STEP-39:POKEI+39,BL:PK%=PEEK(I):IFPK%=BLTHENPOKEI,41:NEXT
- 2420 IFPK%<>BLTHENC=I:I=32800:NEXT
- 2430 IFCTHENGOSUB3000:RETURN
- 2440 POKE32839,BL:RETURN
- 2997 *
- 2998 * PLANE OR SUB HIT
- 2999 *
- 3000 T=PK%:EX=62+(T<28):GOSUB3500:TG=6:IFT=23ORT=24THENTG=5:GOTO3050
- 3010 IFT>36ANDT<40THENTG=3:GOTO3050
- 3020 IFT=35ORT=36THENTG=2:GOTO3050
- 3030 IFT=22THENTG=4
- 3040 IFT=34THENTG=1
- 3050 TPT=TPT+PT(TG):PRINT"[145]";SL$;TPT;" ":X(TG)=-SW*(TG<4):RETURN
- 3497 *
- 3498 * EXPLOSION
- 3499 *
- 3500 POKEWV,SAW:IFEX=62THENPOKEWV,TRI
- 3510 FORI=C-2TOC+2:POKEI,BL:NEXT:POKEC,42
- 3520 FORI=C-SWTOC+SWSTEPSW:FORI2=-1TO1:A=I+I2:IFPEEK(A)=BLTHENPOKEA,EX
- 3530 POKEFQ,20-10*I2:NEXTI2,I:POKEWV,.
- 3540 FORI=C-SWTOC+SWSTEPSW:FORI2=-1TO1:A=I+I2:IFPEEK(A)=EXTHENPOKEA,BL
- 3550 NEXTI2,I:POKEC,BL:RETURN
- 4997 *
- 4998 * INITIALIZE
- 4999 *
- 5000 PRINT "[147]INITIALIZING......"
- 5010 POKE 53280,11:POKE 53281,1:REM SET SCREEN COLORS
- 5011 FORT=55296TO56319:POKET,0:NEXT
- 5015 REM SET SOUND VOICE #1
- 5020 POKE 54296,15:REM VOLUME
- 5030 POKE 54277,0:REM ATTACK-DECAY
- 5040 POKE 54278,240:REM SUSTAIN RELEASE
- 5050 POKE 54272,100:REM LO FREQ.
- 5060 FQ=54273:REM HI FREQ. REGISTER
- 5070 WV=54276:REM WAVE FORM REGISTER
- 5080 NOI=129:SAW=33:TRI=17:REM WAVE FORM VALUES
- 5090 HOM=32727:D=33266:REM SCREEN LOCATIONS
- 5100 TLIM=10800:REM TIME LIMIT (JIFFIES)
- 5110 BL=32:SW=40:REM VALUE TO POKE BLANK, SCREEN WIDTH
- 5115 REM SET RANDOM VALUE FUNCTIONS
- 5120 DEF FN A(R)=INT(RND(R)*3+1)
- 5130 DEF FN B(R)=INT(RND(R)*9+15)
- 5140 DEF FN C(R)=INT(RND(R)*6+3)
- 5150 DEF FN D(R)=INT(RND(R)*2+1)
- 5160 DEF FN E(R)=INT(RND(R)*8+1)
- 5170 ST$="":FORI=1TO11:READA:ST$=ST$+CHR$(A):NEXT:REM TOP OF SHIP
- 5180 DATA 32,66,69,70,73,74,77,78,81,82,32
- 5190 SB$="":FORI=1TO11:READA:SB$=SB$+CHR$(A):NEXT:REM BOTTEM OF SHIP
- 5200 DATA 67,68,71,72,75,76,79,80,83,84,85
- 5210 SL$="":FORI=43TO47:SL$=SL$+CHR$(I):NEXT:REM SCORE DISPLAY LINE
- 5220 FORI=1TO6:READPT(I):NEXT:REM POINT VALUES
- 5230 DATA 150,40,25,75,20,15
- 5240 GOSUB 8000:REM READ, POKE CUSTOM CHARACTER SET
- 5250 GOTO 6000
- 5997 *
- 5998 * BEGIN GAME
- 5999 *
- 6000 X=RND(-TI):PRINT "[147][151] - BATTLESHIP WAR - BY KEITH MEADE "
- 6010 PRINT " YOU ARE IN COMMAND OF A BATTLESHIP."
- 6020 PRINT " YOU HAVE 3 MINUTES TO DESTROY AS MANY"
- 6030 PRINT " ENEMY SUBS AND PLANES AS POSSIBLE."
- 6040 PRINT " POINT VALUES:"
- 6050 PRINT " SMALL SUB = 150[146] SMALL PLANE = 75"
- 6060 PRINT " MED SUB = 40 MED PLANE = 20"
- 6070 PRINT " LARGE SUB = 25 LARGE PLANE = 15"
- 6080 PRINT " CURSOR KEYS FIRE THE CANNONS."
- 6090 PRINT " SPACE BAR RELEASES A DEPTH CHARGE."
- 6100 FOR X=1 TO 40:NEXT
- 6110 PRINT "[145] PRESS ANY KEY TO BEGIN PLAY"
- 6120 FOR X=1 TO 40:NEXT
- 6130 PRINT "[145] PRESS ANY KEY TO BEGIN PLAY"
- 6140 GET IN$:IF IN$="" GOTO 6100
- 6150 PRINT "[147]"
- 6160 SCRAM=0:CHSET=2:REM SCREEN RAM, CHAR SET LOCATION VALUES
- 6170 GOSUB 10000:REM MOVE VIDEO BLOCK, ETC.
- 6175 REM DRAW GAME DISPLAY
- 6180 POKE 53281,5:PRINT "[147]":POKE 53281,1:REM CLEAR, SET COLOR RAM
- 6190 FORI=55296TO55695:POKEI,11:NEXT:REM CHANGE SOME COLOR RAM
- 6200 PRINT "[154]";:FORI=1TO40:PRINTCHR$(65);:NEXT:REM WATER LINE
- 6210 PRINT "[145][145][152]";SPC(13);ST$:REM SHIP TOP
- 6220 PRINT SPC(13);SB$:REM SHIP BOTTEM
- 6230 PRINT "[151]";SL$;TPT:REM SCORE LINE
- 6240 FOR I=1 TO 3:X(I)=39:X(I+3)=0:NEXT:REM RESET TARGET POSITIONS
- 6245 POKE53281,15
- 6250 GOTO 100
- 6997 *
- 6998 * GAME OVER
- 6999 *
- 7000 POKE 53281,7:REM CHANGE SCREEN COLOR
- 7010 FOR I=1 TO 2000:NEXT:REM WAIT
- 7020 POKE 53281,1:REM RESTORE SCREEN COLOR
- 7030 PRINT"[147]"
- 7040 GOSUB 10100:REM RESTORE VIDEO LOCATION
- 7050 POKE 53272,(PEEK(53272) AND 240)+5:REM RESTORE STANDARD CHARACTER SET
- 7060 PRINT "[147]TIME'S UP!!"
- 7070 IF TPT>HIGAME THEN HIGAME=TPT
- 7080 PRINT "YOUR SCORE =";TPT
- 7090 PRINT "HIGH SCORE =";HIGAME
- 7100 PRINT "ANOTHER GAME? (Y OR N)"
- 7110 GET IN$:IF IN$="Y" THEN TPT=0:GOTO 6000
- 7120 IF IN$<>"N" GOTO 7110
- 7130 END
- 7997 *
- 7998 * POKE CUSTOM CHAR DATA
- 7999 *
- 8000 M=34816
- 8010 FORLIN=8040TO8350STEP10:TT=0:FORI=1TO16:READA:POKEM,A:M=M+1:TT=TT+A:NEXT
- 8020 READA:IFTT<>ATHENPRINT"ERROR IN LINE";LIN:STOP
- 8030 NEXT:RETURN
- 8040 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,204,170,51,425
- 8050 DATA 192,96,48,24,12,2,10,10,0,0,170,255,127,59,21,14,1040
- 8060 DATA 10,10,170,255,255,187,85,238,0,0,0,0,0,128,160,160,1658
- 8070 DATA 10,10,10,10,10,255,255,204,160,160,170,255,255,187,85,238,2274
- 8080 DATA 204,255,170,255,255,187,85,238,138,138,138,138,138,255,255,204,3053
- 8090 DATA 138,138,138,138,138,255,255,204,204,255,170,255,255,187,85,238,3053
- 8100 DATA 204,255,170,255,255,187,85,238,138,138,138,138,138,255,255,204,3053
- 8110 DATA 138,138,138,138,138,255,255,204,204,255,170,255,255,187,85,238,3053
- 8120 DATA 204,255,170,255,255,187,85,238,128,128,128,128,128,193,197,197,2876
- 8130 DATA 3,6,12,24,48,80,84,84,197,197,170,255,255,187,85,238,1925
- 8140 DATA 84,84,170,255,255,187,85,238,0,0,170,254,252,184,80,224,2522
- 8150 DATA 0,48,49,255,255,49,48,0,3,6,12,255,255,6,3,1,1245
- 8160 DATA 1,3,7,255,255,0,0,128,0,0,0,42,170,170,0,0,1031
- 8170 DATA 40,80,160,170,170,170,80,40,1,2,5,170,169,170,10,2,1439
- 8180 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- 8190 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- 8200 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- 8210 DATA 0,12,12,255,255,0,0,0,0,0,0,0,255,127,63,0,979
- 8220 DATA 0,224,224,224,255,255,254,0,0,0,0,0,170,170,42,10,1828
- 8230 DATA 2,2,2,2,170,170,170,170,128,128,128,128,168,170,170,168,1876
- 8240 DATA 128,64,32,16,8,4,2,1,1,2,4,8,16,32,64,128,510
- 8250 DATA 0,146,84,56,214,56,84,146,112,249,193,241,121,25,249,240,2216
- 8260 DATA 225,243,131,131,131,131,243,225,227,243,51,51,51,51,243,227,2604
- 8270 DATA 227,51,51,227,227,51,51,51,224,224,15,207,192,15,239,224,2276
- 8280 DATA 60,102,102,102,102,102,60,0,24,24,24,24,24,24,24,0,798
- 8290 DATA 124,6,6,12,48,96,126,0,124,6,6,28,6,6,124,0,718
- 8300 DATA 102,102,102,127,6,6,6,0,126,96,96,124,6,6,124,0,1029
- 8310 DATA 60,96,96,124,102,102,60,0,126,6,12,24,24,24,24,0,880
- 8320 DATA 60,102,102,60,102,102,60,0,60,102,102,62,6,6,60,0,986
- 8330 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- 8340 DATA 0,0,0,0,0,0,0,0,192,6,48,0,3,192,12,0,453
- 8350 DATA 112,216,112,0,14,27,14,0,0,0,0,60,126,60,0,0,741
- 9995 *
- 9996 * MOVE VIDEO BLOCK TO #3
- 9997 * SET SCREEN RAM AND
- 9998 * CHAR SET LOCATIONS
- 9999 *
- 10000 IF SCRAM<0 OR SCRAM>15 THEN PRINT " SCREEN RAM LOCATION ERROR ":STOP
- 10010 IF CHSET<0 OR CHSET>15 THEN CHSET=4
- 10020 POKE 56576,5:REM VIDEO BLOCK LOCATION
- 10030 POKE 53272,16*SCRAM+CHSET:REM SCREEN RAM,CHAR SET LOCATION
- 10040 POKE 648,128+4*SCRAM:REM NOTIFY BASIC
- 10050 RETURN
- 10097 *
- 10098 * RESTORE VIDEO TO NORMAL
- 10099 *
- 10100 POKE 56576,7:REM VIDEO BLOCK
- 10110 POKE 53272,20:REM SCREEN RAM, CHAR SET
- 10120 POKE 648,4:REM BASIC'S SCREEN LOCATION
- 10130 RETURN
-