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:Antic - The Atari Resource, BELLCOM - Public Domain Library
-
Year:1982
Listing 1
10 REM * BATS * * STAN OCKERS 3-82 * * from ANTIC DEC/JAN 83* 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 ? "PRESS ANY KEY TO START":GOSUB 920 70 TRAP 70:? "# PLAYERS ";:POKE 764,255:INPUT NP 80 REM ** PM GRAPHICS ** 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 ** MISSILE COLORS ** 140 POKE 704,14:POKE 705,39:POKE 706,54:POKE 707,70 150 REM ** VBI ROUT. TO MOVE MISSILES ** 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 ** BAT IMAGES ** 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 ** STALACTITES AND STALAGMITES ** 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 ** CHANGE WIDTH OF CAVERN ** 310 IF W>3 THEN W=W-1 320 GOSUB 670 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 ** MAIN LOOP ** 370 POKE 656,1:POKE 657,22:? " Pull Joystick" 380 IF STICK(0)<>13 THEN 380 390 REM ** SCORECARD ** 400 ? CHR$(125):GOSUB 1090:POKE 656,0:POKE 657,26:? "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 STRIG(0)=0 THEN YPOS=YPOS-1:P$(YPOS)=BATUP$ 440 IF STRIG(0)=1 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 30:GOSUB 1130:FOR J=1 TO 30:NEXT J:GOSUB 1110:NEXT I 550 IF P=NP THEN 310 560 GOTO 330 570 REM ** LOSE A BAT ** 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,23:? #6;"PRESS ANY KEY"; 640 FOR I=1 TO 300:NEXT I:GOSUB 830:IF FL=0 THEN 640 650 GOTO 280 660 REM ** DRAW CAVERN ** 670 GOSUB 1160:GRAPHICS 2:GOSUB 1180: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:RETURN 790 REM ** SOUND SUBR'S ** 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 O,RND(0)*255,8,I:SOUND 1,RND(0)*255,8,I:FOR J=1 TO 30: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 PEEK(53775)<255 THEN FL=1:RETURN 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 1050: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,128,1,121,1,108,1,102,2,121,2,81,4,102,4,121,8,3,3 1080 REM ** SUBR. TO INDICATE BATS LEFT ** 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 ** SUBR. TO REMOVE PM GR. ** 1160 POKE 53277,0:POKE 54272,0:FOR I=53261 TO 53264:POKE I,0:NEXT I:RETURN 1170 REM ** SUBR. TO INSERT PM GR. ** 1180 POKE 53277,3:POKE 559,46:START=(PEEK(106)+1):POKE 756,START 1190 REM ** ALTER DISPLAY LIST ** 1200 A=PEEK(560)+256*PEEK(561) 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 ** CHANGE CHARACTER SET ** 1250 POKE 106,PEEK(106)-5:GRAPHICS 0:START=(PEEK(106)+1)*256:POKE 756,START/256:POKE 752,1 1260 ? "INITIALIZING ......" 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
