SCREEN 2,320,200,5,1 WINDOW 2,"MCZIPPY",(1,1)-(310,180),0,2 FOR T=0 TO 15 PALETTE T,0,0,0 NEXT T PALETTE 3,1,1,1 DIM Q(1000) DIM AZ(40) ON BREAK GOSUB CLOSEIT BREAK ON GOTO MCSKIP: CLOSEIT: SCREEN CLOSE 2 LIST END WKEY: G$=INKEY$ IF G$="" THEN WKEY: RETURN RESCO: PALETTE 4,0,0,.1 PALETTE 5,0,0,.2 PALETTE 6,0,0,.3 PALETTE 7,0,0,.4 PALETTE 8,.1,0,0 PALETTE 9,.2,0,0 PALETTE 10,.3,0,0 PALETTE 11,.4,0,0 PALETTE 12,.1,.1,.1 PALETTE 13,.2,.2,.1 PALETTE 14,.3,.3,0 PALETTE 15,.4,.4,0 PALETTE 16,0,.1,0 PALETTE 17,0,.2,0 PALETTE 18,0,.3,0 PALETTE 19,0,.4,0 RESCR: LOCATE 20,3 PALETTE 31,1,1,1 COLOR 31,0 PRINT SCORE;" " RETURN BRK: FOR X=1 TO 50:NEXT X RETURN SND: SOUND FREQ,3,255,0 RETURN BLUE: PALETTE 4,0,0,.5 PALETTE 5,0,0,.6 PALETTE 6,0,0,.8 PALETTE 7,0,0,1 FREQ=261.63 IF OOFF=0 THEN GOSUB SND GOSUB BRK GOSUB RESCO RETURN RED: PALETTE 8,.5,0,0 PALETTE 9,.6,0,0 PALETTE 10,.8,0,0 PALETTE 11,1,0,0 FREQ=246.94 IF OOFF=0 THEN GOSUB SND GOSUB BRK GOSUB RESCO RETURN YELLOW: PALETTE 12,.5,.5,0 PALETTE 13,.6,.6,0 PALETTE 14,.8,.8,0 PALETTE 15,1,1,0 FREQ=220 IF OOFF=0 THEN GOSUB SND GOSUB BRK GOSUB RESCO RETURN GREEN: PALETTE 16,0,.5,0 PALETTE 17,0,.6,0 PALETTE 18,0,.8,0 PALETTE 19,0,1,0 FREQ=196 IF OOFF=0 THEN GOSUB SND GOSUB BRK GOSUB RESCO RETURN WKEYY: G$=INKEY$ GOSUB NEWN IF G$="" THEN WKEYY RETURN MCSKIP: HI=0 COLOR 3,0 PRINT PRINT PRINT" MICHAEL KOHN PRESENTS" PRINT PRINT" MEMORY V1.1" FOR T=1 TO 5 PRINT NEXT T PRINT SPC(9);"PRESS A KEY TO START " GOSUB NEAT GOSUB WKEYY PRINT CHR$(12) PALETTE 3,0,0,0 GOSUB MCZIPPY GOSUB NEAT DEFINT Z DIM Z(256) FOR T=0 TO 255 Z(T)=INT(256*RND(1))-128 NEXT T WAVE 0,Z START: SCORE=0 GOSUB RESCR AGAIN: GOSUB NEWN RANDOMIZE TIMER I=INT(RND(1)*4) Q(SCORE)=I FOR T=0 TO SCORE IF Q(T)=0 THEN GOSUB BLUE IF Q(T)=1 THEN GOSUB RED IF Q(T)=2 THEN GOSUB GREEN IF Q(T)=3 THEN GOSUB YELLOW FOR BR=1 TO 80:NEXT BR NEXT T GOSUB LETGO FOR T=0 TO SCORE R=Q(T) V=R IF R=0 THEN R=8 IF R=1 THEN R=4 IF R=2 THEN R=2 IF R=3 THEN R=6 DORK: GOSUB WKEY IF G$="8" THEN GOSUB BLUE IF G$="2" THEN GOSUB GREEN IF G$="4" THEN GOSUB RED IF G$="6" THEN GOSUB YELLOW IF G$<>"8" AND G$<>"2" AND G$<>"6" AND G$<>"4" THEN GOTO DORK IF VAL(G$)<>R THEN GOSUB WRONG NEXT T SCORE = SCORE + 1 IF SCORE > HI THEN HI=SCORE IF SCORE = 999 THEN GOTO BUST GOSUB RESCO FOR AA=1 TO 400:NEXT AA GOTO AGAIN WRONG: T=100000& SOUND 97,10,255,0 OOFF=1 FOR T=1 TO 5 IF V=0 THEN GOSUB BLUE IF V=1 THEN GOSUB RED IF V=2 THEN GOSUB GREEN IF V=3 THEN GOSUB YELLOW NEXT T OOFF=0 PRINT CHR$(12) PRINT PRINT " YOUR SCORE :";SCORE PRINT PRINT " HI SCORE :";HI PRINT PRINT PRINT GOSUB LETGO PRINT" PRESS A KEY TO START " GOSUB NEAT GOSUB WKEYY PRINT CHR$(12) GOSUB MCZIPPY GOSUB NEAT GOTO START BUST: FOR R=1 TO 5 FOR T=1 TO 15:NEXT T PALETTE 4,0,0,.7 PALETTE 5,0,0,.8 PALETTE 6,0,0,.9 PALETTE 7,0,0,1 PALETTE 8,.7,0,0 PALETTE 9,.8,0,0 PALETTE 10,.9,0,0 PALETTE 11,1,0,0 PALETTE 12,.7,.7,0 PALETTE 13,.8,.8,0 PALETTE 14,.9,.9,0 PALETTE 15,1,1,0 PALETTE 16,0,.7,0 PALETTE 17,0,.8,0 PALETTE 18,0,.9,0 PALETTE 19,0,1,0 GOSUB RESCO NEXT R PRINT "YOU CHEATED!" PRINT "THERE IS NO WAY YOU COULD BEAT ME!" PRINT "PRESS A KEY TO PLAY AGAIN" GOSUB WKEY PRINT CHR$(12) GOTO START MCZIPPY: RESTORE READ MC,ZI,PP FOR T=0 TO 3 LINE (T*5+125,T*5+20)-(125+40-T*5,60-T*5),T+4,BF NEXT T READ MC,ZI,PP FOR T=0 TO 3 LINE (T*5+PP,T*5+MC)-(PP+40-T*5,ZI-T*5),T+8,BF NEXT T READ MC,ZI,PP FOR T=0 TO 3 LINE (T*5+PP,T*5+MC)-(PP+40-T*5,ZI-T*5),T+12,BF NEXT T READ MC,ZI,PP FOR T=0 TO 3 LINE (T*5+PP,T*5+MC)-(PP+40-T*5,ZI-T*5),T+16,BF NEXT T GOSUB RESCO RETURN DATA 20,60,125 DATA 70,110,65 DATA 70,110,185 DATA 120,160,125 LETGO: FOR T=1 TO 60 G$=INKEY$ NEXT T RETURN NEAT: PEZ=0 GOSUB RESTT PALETTE 20,1,0,1 PALETTE 21,.9,0,.9 PALETTE 22,.8,0,.8 PALETTE 23,.7,0,.7 PALETTE 24,.6,0,.6 PALETTE 25,.5,0,.5 PALETTE 26,.4,0,.4 PALETTE 27,.3,0,.3 PALETTE 28,.2,0,.2 PALETTE 29,.1,0,.1 FOR T=1 TO 10 LINE (T+2,T)-(308-T,180-T),T+19,B NEXT T RETURN NEWN: IF PEZ=0 THEN GOSUB PEZA IF PEZ=1 THEN GOSUB PEZB IF PEZ=2 THEN GOSUB PEZC IF PEZ=3 THEN GOSUB PEZD IF PEZ=4 THEN GOSUB PEZE IF PEZ=5 THEN GOSUB PEZF IF PEZ=6 THEN GOSUB PEZG IF PEZ=7 THEN GOSUB PEZH POED=1 FOR PO=1 TO 30 STEP 3 PALETTE POED+19,AZ(PO),AZ(PO+1),AZ(PO+2) POED=POED+1 NEXT PO RETURN PEZA: IF CZ=1 THEN CZ=.1 FOR ZO=30 TO 1 STEP -3 IF CZ>1 THEN Z=0:GOTO SKIPZIP AZ(ZO-1)=CZ SKIPZIP: NEXT ZO CZ=CZ+.1 IF CZ>1 THEN PEZ=PEZ+1:CZ=1 RETURN PEZB: IF CZ=1 THEN CZ=.1 FOR ZO=1 TO 30 IF AZ(ZO)=1 THEN PEZ=PEZ+1:CZ=1:ZP=30 RETURN PEZC: IF CZ=1 THEN CZ=.9:ZP=30 FOR ZO=1 TO ZP STEP 3 AZ(ZO)=CZ AZ(ZO+1)=CZ AZ(ZO+2)=CZ NEXT ZO CZ=CZ-.1 ZP=ZP-3 IF CZ=<0 THEN PEZ=PEZ+1:CZ=1 RETURN PEZD: FOR ZO=1 TO 15 STEP 3 AZ(ZO)=AZ(ZO)+.1 AZ(ZO+1)=AZ(ZO+1)+.1 AZ(ZO+2)=AZ(ZO+2)+.1 NEXT ZO FOR ZO=16 TO 30 STEP 3 AZ(ZO)=AZ(ZO)-.1 AZ(ZO+1)=AZ(ZO+1)-.1 AZ(ZO+2)=AZ(ZO+2)-.1 NEXT ZO FOR ZO=1 TO 30 IF AZ(ZO)<0 THEN AZ(ZO)=0 IF AZ(ZO)>1 THEN AZ(ZO)=1 NEXT ZO IF AZ(1)=>.9 THEN PEZ=PEZ+1 RETURN PEZE: FOR ZO=16 TO 30 STEP 3 AZ(ZO)=AZ(ZO)+.1 NEXT ZO IF AZ(16)=>.9 THEN PEZ=PEZ+1 RETURN PEZF: FOR ZO=1 TO 15 STEP 3 AZ(ZO)=AZ(ZO)-.1 AZ(ZO+1)=AZ(ZO+1)-.1 AZ(ZO+2)=AZ(ZO+2)-.1 NEXT ZO FOR ZO=16 TO 30 STEP 3 AZ(ZO)=AZ(ZO)-.1 NEXT ZO IF AZ(1)<.1 THEN PEZ=PEZ+1 RETURN PEZG: FOR ZO=1 TO 30 AZ(ZO)=0 NEXT ZO PEZ=PEZ+1:CZ=1 RETURN PEZH: IF CZ=1 THEN ZP=3:CZ=0 FOR ZO=1 TO ZP STEP 3 AZ(ZO)=AZ(ZO)+.1 AZ(ZO+2)=AZ(ZO+2)+.1 NEXT ZO ZP=ZP+3 IF ZP>30 THEN PEZ=0:CZ=1 RETURN RESTT: CZ=1 FOR QO=1 TO 30 STEP 3 AZ(QO)=CZ AZ(QO+1)=0 AZ(QO+2)=CZ CZ=CZ-.1 NEXT QO CZ=1 RETURN