100 CLR ›110 PMMODE=2:GRMODE=0›120 GOSUB 31100›130 GOSUB 23500›140 GOSUB 1610›150 DIM PX(4),PY(4),DR(4),SPEED(4),SDTBL(14),SP(4)›160 GOSUB 2000›170 DR(1)=1:DR(2)=4›180 DR(3)=8:DR(4)=1›190 SPEED(1)=2:SPEED(2)=4:SPEED(3)=2:SPEED(4)=4›200 SP(1)=8:SP(2)=10:SP(3)=8:SP(4)=8›210 PX(1)=85:PY(1)=30:PX(2)=86:PY(2)=77›220 PX(3)=99:PY(3)=66:PX(4)=115:PY(4)=65›230 A=USR(PMSET,PDV,0,ADR(PMARR$),SP(1))›240 A=USR(PMSET,PDV,1,ADR(BALL$),SP(2))›250 A=USR(PMSET,PDV,2,ADR(CUBE$),SP(3))›260 A=USR(PMSET,PDV,3,ADR(TANK$),SP(4))›270 FOR CT=1 TO 4›280 A=USR(PMPOS,PDV,CT-1,PX(CT),PY(CT)):REM SET INIT X,Y POS›290 A=USR(PXYS,PDV,CT-1,PX(CT),PY(CT),DR(CT),SPEED(CT))›300 NEXT CT›310 A=USR(PMAN,PDV,2,6,2)›320 A=USR(PMAN,PDV,1,8,4)›325 A=USR(PMAN,PDV,0,14,1)›330 CT=2›340 POSITION 5,3:? "FREE MEM = ";FRE(0)›350 POKE 53256,0:POKE 53257,0›360 PX(4)=25:PY(4)=10›370 POKE 53258,0:POKE 53257,0›380 A=USR(ADR(WIND2$),ADR(DBUF$),0)›390 A=USR(ADR(WIND2$),ADR(DBUF$),1)›400 S=STICK(0):SH=S:IF S<>15 THEN GOTO 500›405 REM IF S=15 THEN SET DIR TO 0›410 A=USR(PXYS,PDV,0,PX(1),PY(1),0,SPEED(1))›420 DR(CT)=INT(RND(0)*9)›430 IF CT<>4 THEN GOTO 460›440 SPEED(CT)=INT(RND(0)*8)+1›450 GOTO 580›460 PX(CT)=INT(RND(0)*40)+35›470 SPEED(CT)=INT(RND(0)*4)+1›480 PY(CT)=INT(RND(0)*50)+30›490 GOTO 600›500 IF (SH2=SH) THEN GOTO 540›505 DX=(S=5 OR S=6 OR S=7)-(S=9 OR S=10 OR S=11):DX=DX*14›510 DY=(S=5 OR S=9 OR S=13)-(S=6 OR S=10 OR S=14):DY=DY*14›520 DR(1)=SDTBL(SH)›525 SH2=SH›530 A=USR(PMSET,PDV,0,ADR(PMARR$((DR(1)*112)-111)),SP(1))›540 PX(1)=PEEK(PDV):PX(1)=PX(1)+DX›550 PY(1)=PEEK(PDV+1):PY(1)=PY(1)+DY›560 A=USR(PXYS,PDV,0,PX(1),PY(1),DR(1),SPEED(1))›570 GOTO 660›580 IF DR(4)=0 THEN GOTO 600›590 A=USR(PMSET,PDV,3,ADR(TANK$((DR(4)*8)-7)),SP(1))›600 A=USR(PXYS,PDV,CT-1,PX(CT),PY(CT),DR(CT),SPEED(CT))›610 IF CT<>3 THEN GOTO 640›620 A=USR(PMAN,PDV,CT-1,6,SPEED(CT))›630 GOTO 660›640 IF CT=4 THEN GOTO 660›650 A=USR(PMAN,PDV,CT-1,8,SPEED(CT))›660 IF PEEK(764)<>255 THEN GOSUB 700›670 CT=CT+1:IF CT=5 THEN CT=2›680 GOTO 390›690 REM KEYS READ 1,2,3 OR SPACE›700 IF PEEK(764)<>31 THEN GOTO 740›710 IF PEEK(PDV+(32))=0 THEN PWRK=1:GOTO 820›720 A=USR(PMPOS,PDV,1,0,PY(2))›730 GOTO 1010›740 IF PEEK(764)<>30 THEN GOTO 780›750 IF PEEK(PDV+(64))=0 THEN PWRK=2:GOTO 820›760 A=USR(PMPOS,PDV,2,0,PY(3))›770 GOTO 1010›780 IF PEEK(764)<>26 THEN GOTO 830›790 IF PEEK(PDV+(96))=0 THEN PWRK=3:GOTO 820›800 A=USR(PMPOS,PDV,3,0,PY(4))›810 GOTO 1010›820 A=USR(PMPOS,PDV,PWRK,95,61)›830 IF PEEK(764)<>33 THEN 1010›832 A=USR(PMAN,PDV,0,0,1)›834 A=USR(PMAN,PDV,1,0,1)›840 A=USR(PMPOS,PDV,0,119,61)›842 A=USR(PXYS,PDV,0,119,61,1,2)›844 A=USR(PMPOS,PDV,1,119,61)›846 A=USR(PXYS,PDV,1,119,61,1,2)›850 A=USR(PMSET,PDV,0,ADR(CUBE$),8)›852 A=USR(PMSET,PDV,1,ADR(CUBE$),8)›860 A=USR(PMAN,PDV,0,6,SPEED(3)+1)›862 A=USR(PMAN,PDV,1,6,SPEED(3)+2)›870 A=USR(PMPOS,PDV,2,119,61)›880 A=USR(ADR(WIND2$),ADR(DBUF$),2)›900 POKE 764,255:REM PAUSE ROUTINE›910 A=USR(PMSET,PDV,3,ADR(TANK$),8)›920 A=USR(PMAN,PDV,3,8,SPEED(4))›940 FOR DD=1 TO 50:NEXT DD›950 A=USR(PXYS,PDV,3,INT(RND(0)*80)+65,INT(RND(0)*30)+35,RND(0)*9,(RND(0)*5)+2)›960 IF PEEK(764)=255 THEN GOTO 940›970 A=USR(ADR(WIND2$),ADR(DBUF$),2)›980 REM A=USR(PMAN,PDV,1,0,0)›982 REM A=USR(PMAN,PDV,0,0,0)›990 A=USR(PMSET,PDV,1,ADR(BALL$),10)›1000 A=USR(PMAN,PDV,1,8,SPEED(2))›1002 A=USR(PMSET,PDV,0,ADR(PMARR$((DR(1)*112)-111)),SP(1))›1004 A=USR(PXYS,PDV,0,PX(1),PY(1),DR(1),SPEED(1))›1006 A=USR(PMAN,PDV,0,14,0)›1010 IF PEEK(764)=28 THEN POP :GOTO 9900›1020 A=USR(PMAN,PDV,3,0,0)›1030 POKE 764,255:RETURN ›1600 REM TANK SHAPES-CLOCKWISE N-NE-SE-S-SW-W-NW ****›1610 REM TANK STRING SETUP›1620 DIM TANK$(64):TANK$(1,64)="*>>>> <þ<üxxü<þ< >>>>*<þ