; CHECKSUM DATA›;[EC 61 1B 36 B8 1C C8 1E›; 4C 34 CD 5E 3C 82 2A 56›; DF 77 62 ED 61 C7 5A 14›; 20 C1 6C 4F E9 2C D1 EB›; 6C 95 E1 84 AF 0B 1A 88›; 3B EE ]›››PROC STICK(BYTE PN)› VARSET(4)› IF ST(0)<>15 THEN› ATRACT=0› IF SAX(4)=0 THEN› STIK=ST(0) & 1› IF STIK = 0 THEN› DIR(4)=0› FI› STIK=ST(0) & 2› IF STIK=0 THEN› DIR(4)=1› FI› FI› IF SAY(4)=0 THEN› STIK=ST(0) & 8› IF STIK=0 THEN› DIR(4)=3› FI› STIK=ST(0) & 4› IF STIK=0 THEN› DIR(4)=2› FI› FI› FI› CHCH(4)› IF DDM=1 AND PN=4 THEN› LOOK()› FI›RETURN›››PROC CHCOL()› BYTE COP› COL=0› FOR COP=0 TO 3 DO› IF MPL(COP)>0 THEN COL=MPL(COP) FI› OD› HITCLR=0›RETURN››PROC GR4()› GRAPHICS(0) DLIST=PEEKC(560)› POKE(752,1) PRINT(" ")› DLIST(3)=66› FOR LP0=6 TO 28 DO› DLIST(LP0)=4› OD› FOR LP0=0 TO 40 DO› Y40(LP0)=LP0*40› OD› FOR LP0=0 TO 12 DO› T8M(LP0)=LP0*8› OD› FOR LP0=0 TO 4 DO› T3M(LP0)=LP0*3› OD›RETURN›››PROC CHSETUP()› P106=PEEK(106)-12 CHSET=P106*256› RAMTOP=P106 GR4() CHBAS=P106› MOVEBLOCK(CHSET,57344,1024)› FOR CLP0=0 TO 288-1 DO› POKE((CHSET+520)+CLP0,CHST(CLP0))› OD› SCR=PEEKC(88)›RETURN›››PROC PM_SET()› SDMCTL=62› GRPRIOR=1+16› GRACTL=3› FOR LP0=0 TO 3 DO› SIZEP(LP0)=0› OD› PMBASE=P106+4 PMTEMP=(P106+4)*256› M0=PMTEMP+768 PL0=M0+256› PL1=PL0+256 PL2=PL1+256 PL3=PL2+256› PAD(0)=PL0 PAD(1)=PL1› PAD(2)=PL2 PAD(3)=PL3› PCOLR(0)=0*16+10› PCOLR(1)=12*16+5› PCOLR(2)=8*16+4› PCOLR(3)=4*16+4› ZERO(PMTEMP,2048)›RETURN›››PROC PAUSE()› POSITION(33,0) PRINT("PAUSED")› FOR LP0=0TO 7 DO› AUDFC(LP0)=0› OD› CH=255› DO› UNTIL CH<255 OD› CH=255› POSITION(33,0) PRINT(" ")›RETURN››PROC MIRROR()› BYTE SC› FOR LP0=0 TO 19 DO› FOR LP1=0 TO 23 DO› SC=SCR(LP0+Y40(LP1))› IF SC=78 OR SC=80 THEN SC==+1› ELSEIF› SC=79 OR SC=81 THEN SC==-1› FI› IF SC=67 THEN SC==+1› ELSEIF SC=68 THEN SC==-1› FI› IF SC=83 THEN SC==+1› ELSEIF SC=84 THEN SC==-1› FI› SCR((39-LP0)+Y40(LP1))=SC› OD› OD›RETURN››PROC BOARDS()› IC=70 LP0=0› P0X=PRL(LP0)› WHILE P0X<40 DO› P0Y=PRL(LP0+1)› P1X=PRL(LP0+2) P1Y=PRL(LP0+3)› PL(P0X,P0Y) DR(P1X,P1Y) LP0==+4› P0X=PRL(LP0)› OD› IC=73 LP0=0 P0X=PUD(LP0)› WHILE P0X<40 DO› P0Y=PUD(LP0+1)› P1X=PUD(LP0+2) P1Y=PUD(LP0+3)› PL(P0X,P0Y) DR(P1X,P1Y) LP0==+4› P0X=PUD(LP0)› OD› IC=69 PL(12,9)› IC=98› FOR LP0=0 TO 2 DO› PL(LP0,1) DR(LP0,10)› PL(LP0,14) DR(LP0,23)› OD› PL(0,12) DR(2,12) PL(19,8) DR(19,10)› PL(10,8) PL(10,10) PL(12,14) IC=85› FOR LP0=0 TO 4 STEP 2 DO› P0X=DOOR(LP0) P0Y=DOOR(LP0+1)› PL(P0X,P0Y)› OD› IC=84› FOR LP0=4 TO 15 STEP 2 DO› P0X=DOOR(LP0) P0Y=DOOR(LP0+1)› IC=83 PL(P0X,P0Y)› IC=84 PL(P0X+1,P0Y)› OD› MIRROR()› FOR LP0=0 TO 10 DO› R=RAND(15)› PCOLR(6)=R*16+8› FOR CLP0=0 TO 3500 DO OD› OD› FOR LP0=0 TO 11 STEP 2 DO› P0X=ENER(LP0) P0Y=ENER(LP0+1)› IC=86+INE PL(P0X,P0Y)› IC=87+INE PL(P0X+1,P0Y)› OD› FOR LP0=0 TO 15 STEP 2 DO› P0X=KEYS(LP0) P0Y=KEYS(LP0+1)› IC=96 PL(P0X,P0Y)› IC=97 PL(P0X+1,P0Y)› OD› FOR CLP0=40 TO 959 DO› TS0=SCR(CLP0) TS1=SCR(CLP0+1)› IF TS0=0 AND TS1=0 THEN› SCR(CLP0)=193 SCR(CLP0+1)=194› GC==+1› FI› OD›RETURN›››PROC TITLE()› XTRA=3 OSCOR=0 SSC=5 COL=0 INE=0› FOR LP0=0 TO 7 DO› HPOSP(LP0)=0› OD› DELAY=700› RAMTOP=MEM› GRAPHICS(1)› SETCOLOR(4,0,0) SETCOLOR(0,8,3)› SETCOLOR(1,2,8)› DLIST=PEEKC(560) DLIST(10)=7› DLIST(11)=7› POKE(752,1)› SCR=PEEKC(88)› PRSCOR()› POSITION(5,5) PRINTD (6,"ÍÉÄÁÓ")› POSITION(9,6) PRINTD(6,"ÍÁÚĹ")› POSITION(2,14)› PRINTDE(6," press ĆÉŇĹ or")› PRINTD(6," ÓÔÁŇÔ to ĐĚÁŮ") PUTE()› PRINT(" by Ken Miller")› SNDRST()› DO› FOR LP0=0 TO 1 DO› TS0=COL› DO› WSYNC=0 PFCOLR2=TS0 TS0==+1› UNTIL VCOUNT=128 OD› OD› COL==-1› UNTIL CONSOL=6 OR STRIG0=0 OD› COL=0 TS0=0› ZERO(SCOR,8) PRSCOR()› CHSETUP()› PM_SET()› HITCLR=0›RETURN››PROC START()› BYTE R› DO› SNDRST()› GC=0 GG=0› FOR LP0=0 TO 3 DO› STX(LP0)=124 STY(LP0)=96› OD› STX(4)=124 STY(4)=160 BRPO(1)=0› ZERO(SCR,959) BOARDS()› FOR LP0=0 TO XTRA-1 DO› SCR(21+LP0)=82› OD› ZERO(M0,1279)› SETCOLOR(0,0,14) SETCOLOR(1,8,10)› SETCOLOR(2,3,5) SETCOLOR(3,2,8)› SETCOLOR(4,0,0)› DIR(4)=2 SP=2› FOR LP0=0 TO 4 DO› SPIN(LP0)=0 EDF(LP0)=0 PDF(LP0)=0› SPT(LP0)=0 SPN(LP0)=0› OD› DO› IF CH<255 THEN PAUSE() FI› IF SCOR(3)>OSCOR THEN› OSCOR=SCOR(3) XTRA==+1› SCR(21+(XTRA-1))=82› FI› IF SCOR(3)=0 THEN OSCOR=0 FI› IF ST0>0 THEN› AUDFC(0)=ST0 AUDFC(1)=32+1› ST0==-1› ELSE AUDFC(1)=0› FI› IF ST2>0 THEN› AUDFC(2)=10+ST2› AUDFC(3)=128+64+2› ST2==-1› ELSE AUDFC(3)=0› FI› IF ST3>0 THEN› AUDFC(4)=12+ST3 AUDFC(5)=64+32+2› ST3==-1› ELSE AUDFC(5)=0› FI› IF GC=GG THEN DELAY==-25› IF DELAY<10 OR DELAY>700› THEN DELAY=10› FI› INE==+2› IF INE>8 THEN INE=0 FI› THO==+1› IF THO>5 THEN THO=1 FI› START()› FI› IF GG=75 THEN› IC=99 PL(19,10)› IC=100 PL(20,10)› MBT=350› FI› IF MBT>0 THEN MBT==-1 FI› IF MBT=1 THEN› IC=98 PL(19,10)› PL(20,10)› FI› CHCOL()› IF PT=0 THEN ESC=2 FI› IF COL>0 THEN› IF COL=8 THEN COL=3› ELSE› COL== RSH 1› FI› IF DIR(4)>1 THEN PDF(4)=1› ELSE PDF(4)=0› FI› IF DIR(COL)>1 THEN PDF(COL)=1› ELSE› PDF(COL)=0› FI› IF POWER>0 OR PT>0 THEN› IF EDF(COL)=0 THEN EDF(COL)=80› IF EDF(COL)=80 THEN› FOR ELP=1 TO ESC DO› HUND(1)› OD› ESC==+1› FI› IF ESC>16 THEN ESC=8 FI› FI› ELSEIF PDF(4)=PDF(COL)› AND EDF(COL)=0 THEN› ZERO(M0,1279) PMM=0› FOR LP0=0 TO 3 DO› STX(LP0)=124 STY(LP0)=96› OD› SNDRST()› FOR CLP0=0 TO 500 DO› SPT(4)==+1› IF SPT(4)>SPN(4) RSH 3 THEN› SPT(4)=0 SPN(4)==+6› IF SPN(4)>250 THEN SPN(4)=0 FI› SPIN(4)==+1› IF SPIN(4)>3 THEN SPIN(4)=0 FI› FI› PMST(M0,P0,SPIN(4))› PM_GO(STX(4),STY(4),PMM)› AUDFC(6)=SPIN(4) LSH 4› AUDFC(7)=2› FOR LP0=0 TO 200 DO OD› OD› AUDFC(6)=0 AUDFC(7)=0 SPT(4)=0› SPN(4)=0 ZERO(M0,255) DIR(4)=2› STX(4)=124 STY(4)=160 COL=0› PMST(M0,P0,DIR(4))› PM_GO(STX(4),STY(4),PMM)› FOR CLP0=0 TO 40000 DO OD› SCR(21+(XTRA-1))=0 XTRA==-1› IF XTRA=0 THEN TITLE() START()› FI› FI› FI› COL=0› IF POWER>0 THEN POWER==-1› FOR LP0=0 TO 3 DO› PCOLR(LP0)=2*16+6› OD› ELSEIF PT>0 THEN PT==-1 PD==-1› FOR LP0=0 TO 3 DO› PCOLR(LP0)=2*16+6› OD› IF PD>200 THEN PD=5› PCOLR(0)=0*16+10› PCOLR(1)=12*16+5› PCOLR(2)=8*16+4 PCOLR(3)=4*16+4› FI› FI› FOR LP0=0 TO 3 DO› IF EDF(LP0)=0 THEN› EMBR(LP0)› PMST(PAD(LP0),EP,DIR(LP0))› PM_GO(STX(LP0),STY(LP0),PMM)› ELSE› EDF(LP0)==-1 SPT(LP0)==+1› IF EDF(LP0)>2 THEN› IF SPT(LP0)>SPN(LP0) THEN› SPT(LP0)=0 SPN(LP0)==+1› IF SPN(LP0)>15 THEN› SPN(LP0)=0› FI› SPIN(LP0)==+1› IF SPIN(LP0)>3 THEN› SPIN(LP0)=0› FI› SES=SPNA(SPIN(LP0))› PMST(PAD(LP0),EP,SES)› PM_GO(STX(LP0),STY(LP0),PMM)› AUDFC(4)=SPIN(LP0) AUDFC(5)=4› ELSEIF EDF(LP0)>2 AND› EDF(LP0)<5 THEN› AUDFC(6)=0 AUDFC(7)=0› SPT(LP0)=0 SPN(LP0)=0› ZERO(PAD(LP0),255) DIR(LP0)=1› STX(LP0)=124 STY(LP0)=96› EMBR(LP0)› PMST(PAD(LP0),EP,DIR(LP0))› PM_GO(STX(LP0),STY(LP0),PMM)› EDF(LP0)=0› FI› FI› FI› OD› STICK(4)› PMST(M0,P0,DIR(4))› PM_GO(STX(4),STY(4),PMM)› PMM==+1› IF PMM>2 THEN PMM=0 FI› FOR CLP0=0 TO DELAY DO OD› UNTIL CONSOL=6 OD› TITLE()› OD›RETURN››PROC MAIN()› ZERO(SCOR,8)› MEM=RAMTOP› TITLE() START()›RETURN››rrrrrrrrrrrrrr