This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page,
please contact me immediatelly so I can remove it!
|
|
|
-
Entry name:Bats
-
Category:Games
-
Publisher/Developer:BELLCOM - Public Domain Library
Listing 1
10 REM IS AN IMPROVED (?) 15 REM VERSION OF THE GAME 20 REM BY STAN OCKERS 30 DIM ZZ$(32):FOR I=1 TO 32:READ A:ZZ$(I)=CHR$(A):NEXT I:GOSUB 1250:CLR 40 DATA 104,104,133,204,104,133,203,104,133,206,104,133,205,162,4,160,0 50 DATA 177,203,145,205,136,208,249,230,204,230,206,202,208,240,96 60 POSITION 3,5:? #6;"FIRE to start":POSITION 0,8:? #6;"note - use joystick" 61 POSITION 4,9:? #6;"to move bat":POSITION 4,10:? #6;"up and down";:GOSUB 920 65 OPEN #3,4,0,"K:" 70 GRAPHICS 18:POKE 708,202:POSITION 1,5:? #6;"HOW MANY PLAYERS?":POKE 764,255:GET #3,NP 71 NP=NP-48:IF NP=0 OR NP>8 THEN 70 72 GRAPHICS 18 75 CLOSE #3 80 REM 90 DIM D$(1),F$((INT(ADR(D$)/1024)+1)*1024-ADR(D$)-1),PM$(384),M$(128),P$(128),MM$(8) 100 RESTORE 110:FOR I=1 TO 8:READ A:MM$(I)=CHR$(A):NEXT I 110 DATA 3,3,12,12,48,48,192,192 120 PM$=CHR$(0):PM$(384)=CHR$(0):PM$(2)=PM$:M$=PM$:P$=M$ 130 REM 140 POKE 704,0:POKE 705,30:POKE 706,200:POKE 707,42 150 REM 160 FOR I=1536 TO 1566:READ A:POKE I,A:NEXT I 170 DATA 104,160,14,162,6,169,7,76,92,228,90,120,150,180,162,3,222,10,6,189,10,6,157,4,208,202,16,244,76,98,228 180 REM 190 DIM BATDN$(5):BATDN$=P$:FOR I=2 TO 4:READ A:BATDN$(I,I)=CHR$(A):NEXT I 200 DATA 24,165,66 210 DIM BATUP$(5):BATUP$=P$:FOR I=2 TO 4:READ A:BATUP$(I,I)=CHR$(A):NEXT I 220 DATA 66,165,24 230 POKE 54279,ADR(PM$)/256:POKE 559,46:POKE 53277,3:POKE 623,4:A=USR(1536) 240 REM 250 DIM C$(42),U$(42):C$="*****$%******&":U$=")(*****'******":FOR I=1 TO 14:C$(I+14)=CHR$(ASC(C$(I))-32) 260 U$(I+14)=CHR$(ASC(U$(I))-32):C$(I+28)=CHR$(ASC(C$(I))+128):U$(I+28)=CHR$(ASC(U$(I))+128):NEXT I 270 DIM P(NP),SCORE(NP),TOTAL(NP),BN(NP),BONUS(NP) 280 W=7:P=0:POKE 82,0 290 FOR I=1 TO NP:SCORE(I)=0:TOTAL(I)=0:BN(I)=3:BONUS(I)=1000:NEXT I:NXTCV=300*NP 300 REM 310 IF W>3 THEN W=W-1 320 GOSUB 670:GOSUB 1180 321 POKE 708,241:POKE 709,92:POKE 710,124:POKE 712,20 322 GOTO 330 325 FOR I=708 TO 712:Q=INT(255*RND(0)):POKE I,Q:NEXT I 330 P=P+1:IF P>NP THEN P=1 340 IF BN(P)=0 THEN 330 350 M$=PM$:FOR I=0 TO 3:M$(YST+5*W+W*(3-I))=MM$(2*I+1,2*I+2):NEXT I 360 REM 370 POKE 656,0:POKE 657,22:? "PRESS fire BUTTON" 380 IF STRIG(0)<>0 THEN 380 400 ? CHR$(125):GOSUB 1090:POKE 656,0:POKE 657,6:? "PLAYER #";P 410 POKE 656,1:POKE 657,24:? "Round Total";:GOSUB 1110 420 POKE 53248,30:YPOS=YST+20:POKE 53278,0:T=0:DIS=12 430 FOR XPOS=47 TO 200:POKE 53248,XPOS:IF STICK(0)=14 THEN YPOS=YPOS-1:P$(YPOS)=BATUP$ 440 IF STICK(0)<>14 THEN YPOS=YPOS+1:P$(YPOS)=BATDN$ 450 IF PEEK(53256)>0 THEN POKE 1546,0:TOTAL(P)=TOTAL(P)-100:GOTO 580 460 IF PEEK(53257)>0 THEN POKE 1547,0:GOSUB 1140 470 IF PEEK(53258)>0 THEN POKE 1548,0:GOSUB 1140 480 IF PEEK(53259)>0 THEN POKE 1549,0:GOSUB 1140 490 IF PEEK(53252)>0 THEN 580 500 NEXT XPOS:P$=PM$ 510 IF SCORE(P)<300 THEN 420 520 TOTAL(P)=TOTAL(P)+SCORE(P):SCORE(P)=0:GOSUB 1120 530 IF TOTAL(P)>BONUS(P) AND BN(P)<4 THEN BONUS(P)=BONUS(P)+1000:BN(P)=BN(P)+1:GOSUB 1090:DIS=10:T=30:GOSUB 800 540 FOR I=1 TO 8:GOSUB 1130:SOUND 0,100,10,10:FOR J=0 TO 30:NEXT J:SOUND 0,0,0,0:GOSUB 1110:NEXT I 550 IF P=NP THEN 310 560 GOTO 330 570 REM 580 DIS=10:T=9:GOSUB 800 590 YPOS=YPOS+1:P$(YPOS)=BATDN$:POKE 53278,0:SOUND 1,YPOS,10,10:IF PEEK(53252)=0 THEN 590 600 GOSUB 810:P$=PM$:SCORE(P)=0:BN(P)=BN(P)-1:GOSUB 1090:IF BN(P)=0 THEN POKE 656,0:POKE 657,6:? " ":GOSUB 840 610 GOSUB 1100:FOR I=1 TO NP:IF BN(I)>0 THEN 540 620 NEXT I:GOSUB 1160:GRAPHICS 17:POSITION 5,2:? #6;"GamE OveR":FOR I=1 TO NP:POSITION 3,2+2*I:? #6;"Player #";I; 630 ? #6;" = ";TOTAL(I):NEXT I:POSITION 3,22:? #6;"FIRE = AGAIN":? #6;" STICK = END"; 640 FOR I=1 TO 300:NEXT I:GOSUB 830:IF FL=0 THEN 640 650 GOTO 280 660 REM 670 GOSUB 1160:GRAPHICS 2:POKE 708,0:POKE 709,0:POKE 710,0:POKE 711,0:POKE 77,0 680 DL=INT(RND(0)*(8-W))+1:YST=8*(DL+1) 690 FOR X=0 TO 19:GOSUB 780:Y=0:FOR I=R+7-DL TO R+6:POSITION X,Y:? #6;C$(I,I):Y=Y+1:NEXT I 700 FOR I=1 TO W:POSITION X,Y:? #6;" ":Y=Y+1:NEXT I 710 IF DL+W>=10 THEN Y=Y-1:POSITION X,Y:? #6;"'":GOTO 730 720 GOSUB 780:FOR I=R TO R+9-DL-W:POSITION X,Y:? #6;U$(I,I):Y=Y+1:NEXT I 730 IF DL<=1 THEN DL=2:GOTO 760 740 IF DL>=10-W THEN DL=9-W:GOTO 760 750 DL=DL+INT(RND(0)*3)-1 760 NEXT X 770 RETURN 780 R=INT(RND(0)*6)*7+1:POKE 559,46:RETURN 790 REM 800 FOR I=15 TO 0 STEP -1:SOUND 0,I,DIS,I:FOR J=1 TO T:NEXT J:NEXT I:RETURN 810 FOR I=10 TO 2 STEP -2:SOUND 0,RND(0)*255,8,I:SOUND 1,RND(0)*255,8,I:FOR J=1 TO 30:NEXT J:NEXT I 820 SOUND 0,0,0,0:SOUND 1,0,0,0:RETURN 830 RESTORE 1060:LS=30:LL=5:GOSUB 850:RETURN 840 RESTORE 1010:LS=20:LL=10 850 FL=0 860 READ I,J:IF I=3 THEN RETURN 870 IF I=0 THEN 900 880 IF STRIG(0)=0 THEN FL=1:RETURN 885 IF STICK(0)<>15 THEN GRAPHICS 0:CLR:POKE 764,255:TRAP 40000:POKE 580,1:X=USR(58484):RUN "D:MENU" 890 SOUND 0,I,10,10:SOUND 1,I-2,10,6 900 FOR I=1 TO J:FOR K=1 TO LS:NEXT K:NEXT I:SOUND 0,0,0,0:SOUND 1,0,0,0 910 FOR I=1 TO LL:NEXT I:GOTO 860 920 RESTORE 1020:LS=12:LL=12:GOSUB 850 930 IF FL=1 THEN RETURN 940 RESTORE 1040:GOSUB 850 950 IF FL=1 THEN RETURN 960 RESTORE 1020:GOSUB 850 970 IF FL=1 THEN RETURN 980 RESTORE 1040:GOSUB 850 990 IF FL=1 THEN RETURN 1000 FOR I=1 TO 300:NEXT I:GOTO 920 1010 DATA 243,4,243,4,243,1,243,4,204,4,217,1,217,4,243,1,243,4,255,1,243,6,3,3 1020 DATA 243,1,217,1,204,1,182,1,162,1,204,1,162,1,0,1,173,1,217,1,173,1,0,1,182,1,230,1,182,1,0,1 1030 DATA 243,1,217,1,204,1,182,1,162,1,204,1,162,1,121,1,3,3 1040 DATA 136,1,162,1,204,1,162,1,136,4,3,3 1050 DATA 162,1,204,1,162,1,121,1,243,4,3,3 1060 DATA 81,4,85,2,102,1,108,1,121,6,108,1,102,1,81,2,81,2,85,2,102,1,108,1,121,8 1070 DATA 108,2,91,2,102,2,108,2,121,1,108,1,102,2,121,2,81,4,102,4,121,8,3,3 1080 REM 1090 POKE 656,0:POKE 657,6:? " ";:POKE 657,6:FOR I=1 TO BN(P):? "+ ";:NEXT I:RETURN 1100 POKE 656,1:POKE 657,5:? SCORE(P);" ":RETURN 1110 POKE 656,1:POKE 657,12:? TOTAL(P);" ":RETURN 1120 POKE 656,1:POKE 657,5:? " ":RETURN 1130 POKE 656,1:POKE 657,12:? " ":RETURN 1140 GOSUB 800:POKE 53278,0:SCORE(P)=SCORE(P)+25:GOTO 1100 1150 REM 1160 POKE 53277,0:POKE 54272,0:FOR I=53261 TO 53264:POKE I,0:NEXT I:RETURN 1170 REM 1180 POKE 53277,3:POKE 559,46:START=(PEEK(106)+1):POKE 756,START 1190 REM 1200 A=PEEK(560)+PEEK(561)*256 1210 IF PEEK(A)<>66 THEN A=A+1:GOTO 1210 1220 POKE A,70:POKE A+3,6:POKE A+4,6:POKE A+5,6 1230 RETURN 1240 REM 1250 POKE 106,PEEK(106)-5:GRAPHICS 18:START=(PEEK(106)+1)*256:POKE 756,START/256:POKE 708,10:POKE 709,52 1260 POSITION 8,1:? #6;"BATS" 1270 A=USR(ADR(ZZ$),57344,START):RESTORE 1300 1280 READ X:IF X=-1 THEN RESTORE:RETURN 1290 FOR Y=0 TO 7:READ Z:POKE X+Y+START,Z:NEXT Y:GOTO 1280 1300 DATA 32,255,255,127,127,126,62,62,60 1310 DATA 40,60,28,28,24,8,8,8,8 1320 DATA 48,255,127,126,60,56,24,8,8 1330 DATA 56,8,24,28,124,124,254,254,255 1340 DATA 64,60,126,126,126,126,126,127,255 1350 DATA 72,16,16,16,16,16,24,60,60 1360 DATA 80,255,255,255,255,255,255,255,255 1370 DATA 88,0,24,24,165,165,66,66,0 1380 DATA -1
References
Listing downloads
Downloads
Copyright holder
