Home » Personal collection » Commodore disks » disk65a_programs_1.d64 » pacattack
pacattack
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Personal collection » Commodore disks » disk65a_programs_1.d64 |
Filename: | pacattack |
Read OK: | ✔ |
File size: | 1BA6 bytes |
Load address: | 0801 |
Exec address: | 0000 |
Duplicates
There are 2 duplicate copies of this file in the archive:
- Personal collection » Commodore disks » disk65a_programs_1.d64 » pacattack
- Personal collection » Commodore disks » disk50a2_progs1.d64 » pacattack
- Personal collection » Commodore tapes » Commodore_64 » drawer_tr_tape01a_d60_c64_tape.wav » pacattack
File contents
10 REM PACATTACK 15 GOSUB2000:GOSUB1360:POKE53280,5:POKE53281,0:PRINT"<clr><blue>" 20 PRINTCHR$(147);:X=RND(-TI) 30 DIM M$(18,17):DIM G(3,4):DIM G$(3):ET=20 40 PWRTIM=0:TMR=0:SC=0:L1=500:L2=500:GOSUB980 50 GOSUB1070 60 GOSUB 760:GOSUB 780:GOSUB 220:GOSUB1660:IFLS<>0THENPOKE1594,LP:POKE55866,LC 70 GOSUB 970:IF PWRTIM-TMR>0 THEN TX=9:TY=8 80 IF PWRTIM-TMR<0 THEN TX=PX:TY=PY 90 GOSUB 300 100 A$=STR$(SC):LSC=LEN(A$):Q=32-LSC:Z=1 110 GOSUB 940 120 GOSUB 220 130 Q=30:Z=3:A$=STR$(L1):GOSUB 940 140 IF FOOD>0 AND L1=L2 THEN GOTO 60 150 IF L1<>L2 THEN L2=L2-100:GOSUB 1070:GOSUB1110 160 IF FOOD=0 THEN GOSUB980 170 IF L1>0 THEN 50 180 GOSUB 950:IFK$<>"" THEN 180 190 Q=24:Z=10:A$="GAME OVER":GOSUB940 195 GETK$:IF K$<>"" THEN 195 200 Z=12:A$="PRESS ANY KEY":GOSUB940 210 GOSUB1360:GOTO40 220 HIT=0:FOR L=1 TO 3 230 IF G(L,1)=PX AND G(L,2)=PY AND TMR>PWRTIM AND G(L,4)=1 THEN HIT=1 240 IF G(L,1)=PX AND G(L,2)=PY AND TMR<PWRTIM AND G(L,4)=2 THEN GOTO 260 250 GOTO 270 260 G(L,4)=3:G$(L)=CHR$(34):SC=SC+150:L1=L1+25:L2=L2+25:GOSUB1610 270 NEXT L 280 IF HIT=1 THEN L1=L1-100 290 RETURN 300 FOR L=1 TO 3 310 X=G(L,1):Y=G(L,2):GD=G(L,3):GC=G(L,4) 320 Q=X:Z=Y:A$=M$(X,Y):GOSUB 940 330 IF G(L,4)=3 THEN TX=3:TY=8:IF X=9 AND Y=7 THEN GD=2:GOTO 350 340 GOSUB 450 350 IF GD=1 OR GD=3 THEN X=X+(GD-2) 360 IF GD=0 OR GD=2 THEN Y=Y+(GD-1) 370 XX=X:IF XX=1 THEN X=16 380 IF XX=17 THEN X=2 390 IF G(L,4)=3 AND G(L,1)=9 AND G(L,2)=9 THEN G$(L)="*":GC=1 400 IF G(L,4)=2 AND TMR>PWRTIM THEN GC=1:G$(L)="*" 410 Q=X:Z=Y:A$=G$(L):GOSUB 940 420 G(L,1)=X:G(L,2)=Y:G(L,3)=GD:G(L,4)=GC 430 NEXT L 440 RETURN 450 GOSUB 760:N=INT(RND(0)*6+1) 460 XX=-2:IF GD<2 THEN XX=2 470 FF=0:IF GD=1 OR GD=3 THEN FF=1 480 IFFF=1 THEN IF M$(X+(GD-2),Y)="#" AND U$="#" AND D$="#" THEN GD=GD+XX:RETURN 490 IFFF=0 THEN IF M$(X,Y+(GD-1))="#" AND L$="#" AND R$="#" THEN GD=GD+XX:RETURN 500 IF FF=1 AND U$="#" AND D$="#" THEN RETURN 510 IF FF=0 AND L$="#" AND R$="#" THEN RETURN 520 IF GD=0 AND U$="#" THEN GOSUB 640:RETURN 530 IF GD=1 AND L$="#" THEN GOSUB 700:RETURN 540 IF GD=2 AND D$="#" THEN GOSUB 640:RETURN 550 IF GD=3 AND R$="#"THEN GOSUB 700:RETURN 560 IF N>4 THEN RETURN 570 IF GD=1 OR GD=3 THEN GOSUB 610:RETURN 580 IF L$="#" AND TX>X THEN GD=3:RETURN 590 IF R$="#" AND TX<X THEN GD=1 600 RETURN 610 IF U$="#" AND TY>Y THEN GD=2:RETURN 620 IF D$="#" AND (TY<Y OR X=9) THEN GD=0 630 RETURN 640 IF L$="#" THEN GD=3:RETURN 650 IF R$="#" THEN GD=1:RETURN 660 IF TX>X AND N<5 THEN GD=3:RETURN 670 IF TX<=X AND N<5 THEN GD=1:RETURN 680 GD=3:IF N=5 THEN GD=1 690 RETURN 700 IF U$="#"THEN GD=2:RETURN 710 IF D$="#" THEN GD=0:RETURN 720 IF TY>Y AND N<5 THEN GD=2:RETURN 730 IF TY<Y AND N<5 THEN GD=0:RETURN 740 GD=0:IF N=5 THEN GD=2 750 RETURN 760 O$=M$(X,Y):U$=M$(X,Y-1):D$=M$(X,Y+1):L$=M$(X-1,Y) 770 R$=M$(X+1,Y):RETURN 780 GOSUB950:IF K$<>"" THEN C$=K$ 790 X=PX:Y=PY:GOSUB760 800 Q=PX:Z=PY:A$=" ":GOSUB940:M$(PX,PY)=" " 810 IF C$="A" AND U$<>"#" THEN PY=PY-1 820 IF C$="Z" AND D$<>"#" THEN PY=PY+1 830 IF C$="N" AND L$<>"#" THEN PX=PX-1 840 IF C$="M" AND R$<>"#" THEN PX=PX+1 850 IF O$="." THEN FOOD=FOOD-1:SC=SC+10 860 IF O$<>"+" THEN 900 870 FOOD=FOOD-1:SC=SC+10:PWRTIM=TMR+ET 880 FORL=1TO3:IFG$(L)="*" THEN G$(L)="O":G(L,4)=2 890 NEXT L 900 XX=PX:IF XX=1 THEN PX=16 910 IF XX=17 THEN PX=2 920 Q=PX:Z=PY:A$="C":GOSUB 940 930 L1=L1-1:L2=L2-1:RETURN 940 POKE 211,Q+1:POKE214,Z+1:SYS58732:GOTO 1280 950 GET K$:RETURN 960 RETURN 970 TMR=TMR+1:RETURN 980 RESTORE 990 FOR A=1 TO 16 1000 READA$:Q=1:Z=A:GOSUB940 1010 FORB=1TO17:M$(B,A)=MID$(A$,B,1):NEXT B 1020 NEXT A 1030 Q=20:Z=1:A$="SCORE:":GOSUB940 1040 Z=3:A$="MONEY: £":GOSUB940 1050 FOOD=127 1060 RETURN 1070 FORL=1 TO 3:G(L,1)=L+7:G(L,2)=9:G(L,3)=0:G(L,4)=1:G$(L)="*":NEXTL 1080 PX=9:PY=13:X=PX:Y=PY 1090 C$="" 1100 RETURN 1110 FORZ=1TO16:FORQ=1TO17:A$=M$(Q,Z):GOSUB940:NEXTQ:NEXTZ:RETURN 1120 DATA "#################" 1130 DATA "#+......#......+#" 1140 DATA "#.#.###.#.###.#.#" 1150 DATA "#.#.#...#...#.#.#" 1160 DATA "#.....#.#.#.....#" 1170 DATA "#.#####.#.#####.#" 1180 DATA "#...............#" 1190 DATA "###.#.## ##.#.###" 1200 DATA " ...#.# #.#... " 1210 DATA "###.#.#####.#.###" 1220 DATA "#...............#" 1230 DATA "#.#.####.####.#.#" 1240 DATA "#.#...#. .#...#.#" 1250 DATA "#.###.#.#.#.###.#" 1260 DATA "#+......#......+#" 1270 DATA "#################" 1280 FORT=1 TO LEN(A$):IF A$="SCORE:" THEN PRINTA$;:RETURN 1290 M$=MID$(A$,T,1) 1300 IF M$="#" THEN PRINT"<reverse on> <rev off>";:C=6:GOTO1350 1310 IF M$="+" THEN PRINT"↑";:C=2:GOTO1350 1320 IF M$="." THEN PRINT".";:C=1:GOTO1350 1330 IF M$="C" THEN PRINT"●";:C=7:GOTO1350 1340 PRINTM$;:NEXT:RETURN 1350 POKE 55296+T+Q+((Z+1)*40),C:NEXT:RETURN 1360 POKE53280,0:POKE53281,0:PRINT"<green><clr>" 1370 PRINT" ┌🭸🭸🭸🭸🭸🭸🭸🭸🭸┐" 1380 PRINT" │<yellow>PACATTACK<blue>│" 1390 PRINT" └🭸🭸🭸🭸🭸🭸🭸🭸🭸┘" 1400 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 1410 FORR=54272TO54296:POKER,0:NEXT 1420 PRINT"<blue> ┌🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸┐" 1430 PRINT" │<yellow>PRESS ANY KEY TO START<purple>│" 1440 PRINT" └🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸🭸┘";:GOSUB 3000 1450 FORR=0TO7 1460 POKE2040+R,243+R 1470 NEXT 1480 POKEVC+28,255 1490 FORR=0TO7 1500 POKE53248+39+R,7 1510 NEXT 1520 POKE53248+29,0 1530 POKE53248+23,255 1540 POKE53248+16,0 1550 POKE53248+21,255 1555 FORR=54272TO54296:POKER,0:NEXT 1560 GET A$:IF A$<>"" THEN 1560 1570 GET A$:IF A$="" THEN 1570 1600 RETURN 1610 S=54272:POKES+24,15:POKES+5,88:POKES+3,15:POKES+2,15:POKES+6,89 1620 POKES+1,67:POKES,15:POKES+64,65:FORT=0TO150:NEXT:POKES+4,64 1630 POKES+1,63:POKES,75:POKES+64,65:FORT=0TO150:NEXT:POKES+4,64 1640 POKES+1,67:POKES,15:POKES+64,65:FORT=0TO150:NEXT:POKES+4,64 1650 RETURN 1660 IF PX=9 THEN IF PY=13 THEN IF LS<>0 THEN 1790 1670 IF PX=9 AND PY=13 THEN RETURN 1680 IF INT(RND(1)*30)<>6 THEN RETURN 1690 LS=INT(RND(1)*7) 1700 IF LS=0 THEN POKE1594,32:POKE55866,0:LP=32:LC=0 1710 POKE1594,81:LP=81 1720 IF LS=1 THEN POKE55866,2:LC=2 1730 IF LS=2 THEN POKE55866,7:LC=7 1740 IF LS=3 THEN POKE55866,2:LC=2:LP=30:POKE1594,30 1750 IF LS=4 THEN POKE55866,5:LC=5 1760 IF LS=5 THEN POKE55866,11:LC=11 1770 IF LS=6 THEN POKE55866,3:LC=3 1780 RETURN 1790 IF LS=1 THEN L1=L1-100:L2=L2-100 1800 IF LS=2 THEN L1=L1+25:L2=L2+25 1810 IF LS=3 THEN FO=FO+1:GOTO 870 1820 IF LS=4 THEN LS=INT(RND(1)*6)+1:GOTO 1790 1830 IF LS=5 THEN GOSUB 1860 1840 IF LS=6 THEN GOSUB 1890 1850 LS=0:LP=32:LC=0:RETURN 1860 FORZ=1TO17:FORQ=1TO17 1870 IF M$(Q,Z)="#" THEN POKE1024+Q+((Z+1)*40),32 1880 NEXT:NEXT:RETURN 1890 FORZ=1TO17:FORQ=1TO17 1900 IF M$(Z,Q)="#" THEN POKE1024+Q+((Z+1)*40),96 1910 NEXT:NEXT:RETURN 2000 REM SETUP 2010 RESTORE 2020 PRINTCHR$(147);CHR$(142);CHR$(8); 2030 PRINT"PLEASE WAIT- POKING A BIT OF DATA" 2040 FORR=0TO15:READA$:NEXT 2050 FORSP=1 TO 7:FORDA=0 TO 62 2060 READ VA 2070 POKE(242+SP)*64+DA,VA:NEXT:NEXT 2080 POKE53248+21,0 2090 POKE53248+37,3:POKE53248+38,1 2100 FORVA=0TO7:POKE53248+VA+39,7:NEXT 2120 RETURN 2130 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2 2140 DATA0,0,10,0,0,42,0,0,170,0,2,170,0,2,170,0 2150 DATA10,168,0,10,168,0,42,170,0,42,170,0,42,170,0,42 2160 DATA170,0,10,170,0,2,170,3,240,170,0,0,0,0,0,0 2170 DATA0,42,170,10,170,170,170,170,160,160,10,160,143 2180 DATA192,160,143,16,160,128,16,168,42,10,170,42,170 2190 DATA170,2,170,170,168,10,170,170,160,0,170,170,0,170 2200 DATA170,170,170,170,170,170,170,170,170,170,170,170,170 2210 DATA170,170,170,170,0,0,0,0,0,0,170,0,0,10,160,0,242 2220 DATA170,0,12,170,160,76,170,168,76,128,170,2,162,42 2230 DATA170,138,170,170,42,170,168,170,170,130,170,170,10 2240 DATA170,170,42,170,170,170,170,170,170,170,170,170,170,170,170 2250 DATA170,170,170,170,170,170,170,170,0,0,0,0,48,0,12,252 2260 DATA0,51,240,0,63,192,0,63,255,0,63,63,0,15,0,0,143 2270 DATA0,0,163,240,0,168,60,0,170,0,0,170,0,0,170,0,0 2280 DATA170,0,0,170,0,0,170,0,0,170,0,0,170,0,0,170,0,0,0,50 2290 DATA170,0,50,170,3,252,10,15,255,192,0,63,255,0,255,240 2300 DATA0,255,2,0,240,42,0,0,42,0,0,10,0,0,2,0,0,0,0,0 2310 DATA0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 2320 DATA170,170,170,170,170,170,170,170,170,42,170,170,42,170,168 2330 DATA42,170,160,170,170,131,170,170,15,170,170,63,170,170,60 2340 DATA170,160,252,170,128,241,10,140,241,0,140,241,0,12 2350 DATA196,0,3,197,0,3,197,0,0,197,0,0,0,0,0,0,0,0,0,170 2360 DATA170,170,170,170,170,170,170,170,170,170,170,2,170,170,242 2370 DATA170,170,196,170,170,20,170,168,20,170,163,84,170 2380 DATA163,84,170,160,84,170,128,84,170,0,84,160,0,4,0,0 2390 DATA80,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,170 2400 DATA3,0,168,0,0,168,12,0,168,12,0,160,49,0,0,241 2410 DATA0,48,241,0,252,240,0,243,240,0,3,240,0 2420 DATA63,192,0,63,0,0,60,0,0,60,0,0,0,0,0,0,0,0,0 2430 DATA0,0,0,0,0,0,0,0,0,0,0 3000 FORS=0TO7:D=S:IF D>3 THEN D=D-4 3010 X=150+D*24 3020 Y=150+INT(S/4)*40 3030 POKE53248+S*2,X 3040 POKE53248+S*2+1,Y 3050 NEXT:RETURN
� PACATTACK 9 �2000:�1360:�53280,5:�53281,0:�"�"