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 » disk50a2_progs1.d64 » pacattack
- Personal collection » Commodore disks » disk65a_programs_1.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:�"�"