10 DIMC(7,4,8),K(128),X,Y,S,O,T,CB,CE,T9,PK,TY,N1,N2,N3,N4,N5,N6,N7,N8,OX,OY,P,CH,LN,MX,ZE,SO,SC,HP,LV,LL,I$
20 CLS0:GOSUB820:GOSUB900:GOSUB740:GOTO850
200 RESET(X+C(S,O,N1),Y+C(S,O,N2)):RESET(X+C(S,O,N3),Y+C(S,O,N4))
250 RESET(X+C(S,O,N5),Y+C(S,O,N6)):RESET(X+C(S,O,N7),Y+C(S,O,N8)):RETURN
300 CH=POINT(X+C(S,O,N1),Y+C(S,O,N2))ORPOINT(X+C(S,O,N3),Y+C(S,O,N4))
350 CH=CHORPOINT(X+C(S,O,N5),Y+C(S,O,N6))ORPOINT(X+C(S,O,N7),Y+C(S,O,N8)):RETURN
355 X=OX:GOTO570
357 O=SO:GOTO570
360 TY=Y-N1:Y=T9:GOTO570
370 OX=X:GOSUB200:X=X-N1:GOSUB300:ONCHGOTO355,355,355,355,355,355,355
378 GOTO570
380 OX=X:GOSUB200:X=X+N1:GOSUB300:ONCHGOTO355,355,355,355,355,355,355
388 GOTO570
390 SO=O:GOSUB200:O=O+N1:IFO=N5THENO=N1
392 GOSUB300:ONCHGOTO357,357,357,357,357,357,357
395 GOTO570
396 SO=O:GOSUB200:O=O-N1:IFO=ZETHENO=N4
397 GOSUB300:ONCHGOTO357,357,357,357,357,357,357
398 GOTO570
399 SET(OX,OY,P):GOTO660
400 S=RND(N7):X=15:O=RND(N4)
500 FORY=N3TOT9:CH=POINT(X+C(S,O,N1),Y+C(S,O,N2))ORPOINT(X+C(S,O,N3),Y+C(S,O,N4))
510 ONCHORPOINT(X+C(S,O,N5),Y+C(S,O,N6))ORPOINT(X+C(S,O,N7),Y+C(S,O,N8))GOTO360,360,360,360,360,360,360
520 SET(X+C(S,O,N1),Y+C(S,O,N2),S):SET(X+C(S,O,N3),Y+C(S,O,N4),S)
530 SET(X+C(S,O,N5),Y+C(S,O,N6),S):SET(X+C(S,O,N7),Y+C(S,O,N8),S):ONK(PEEK(PK)ANDPEEK(N2))GOTO390,370,380,396,940
540 GOSUB200
570 NEXT
575 SC=SC+N4:PRINT@24,SC;:Y=TY:IFY-N2<HPTHENHP=Y-N2:IFHP<N3THENHP=N3 
585 SET(X+C(S,O,N1),Y+C(S,O,N2),S):SET(X+C(S,O,N3),Y+C(S,O,N4),S)
587 SET(X+C(S,O,N5),Y+C(S,O,N6),S):SET(X+C(S,O,N7),Y+C(S,O,N8),S):IFTY<N3THEN940
590 MX=TY+N2:IFMX>LNTHENMX=LN
600 FORY=TY-N1TOMX
610 CH=ZE:FORX=CBTOCE:CH=CH+ABS(POINT(X,Y)>ZE)
620 NEXTX:IFCH<LLTHEN690
630 SOUNDN1,N1
640 FOROY=Y TO HPSTEP-N1:FOROX=CBTOCE:P=POINT(OX,OY-N1):ONPGOTO399,399,399,399,399,399,399
650 RESET(OX,OY)
660 NEXTOX,OY:HP=HP+N1
690 NEXTY:GOTO400
740 PRINT@499,"LEVEL (1-5)?";
745 I$=INKEY$:IFI$=""THEN745
750 LV=VAL(I$):IFLV<1ORLV>5THENSOUND100,1:GOTO745
755 IFLV=1THENCB=10:CE=19:LL=10
756 IFLV=2THENCB=8:CE=21:LL=14
757 IFLV=3THENCB=6:CE=23:LL=18
758 IFLV=4THENCB=4:CE=25:LL=22
759 IFLV=5THENCB=2:CE=27:LL=26
760 GOSUB790:RETURN
790 PRINT@498,"";:FORT=1TO13:PRINTCHR$(128);:NEXTT:RETURN
795 RETURN
800 FORX=(CB-N2)TO(CE+N2):SET(X,0,6):SET(X,1,6):SET(X,30,6):SET(X,31,6):NEXTX
810 FORY=0TO31:SET((CB-N2),Y,6):SET((CB-N1),Y,6):SET(CE+N1,Y,6):SET(CE+N2,Y,6):NEXTY
815 PRINT@18,"SCORE:       ";:
816 GOSUB790
817 PRINT@18+96,"HIGH:        ";:RETURN
820 PRINT@148+96,"MC-TETRIS";
830 PRINT@216+96,"BY";
840 PRINT@276+96,"JIM GERRIE";
845 RETURN
850 FORY=0TO511STEP32:PRINT@Y,"";:FORX=1TO15:PRINTCHR$(128);:NEXTX,Y
860 GOSUB800
870 IFSC>=HITHENHI=SC
875 SC=0:PRINT@24,SC;:PRINT@18+96+6,HI;
880 HP=28:GOTO400
890 TY=N2:Y=T9:GOTO570
900 T=192:PRINT@T+32, "A=MOVE LEFT    ";
901 PRINT@T+64, "S=MOVE RIGHT   ";
902 PRINT@T+96, "SPACE=FLIP     ";
903 PRINT@T+128,"ENTER=FLIP BACK";
904 FORS=1TO7:FORO=1TO4:FORT=1TO8:READC(S,O,T):NEXTT:NEXTO:NEXTS
905 T9=999:TY=0:PK=17023:LN=29:ZE=0:S=2:O=1:SC=0
910 N1=1:N2=2:N3=3:N4=4:N5=5:N6=6:N7=7:N8=8
920 K(32)=1:K(65)=2:K(83)=3:K(13)=4:K(81)=5
925 PRINT@500,"PRESS A KEY";
930 I$=INKEY$:T=RND(10):IFI$=""THEN930
935 RETURN
940 PRINT@500,"PLAY AGAIN?";
950 I$=INKEY$:T=RND(10):IFI$=""THEN950
960 IFI$="Y"THENGOSUB740:GOTO850
970 IFI$="N"THEN990
980 GOTO940
990 END
1000 DATA -1,0,0,0,1,0,2,0
1010 DATA 0,-1,0,0,0,1,0,2
1020 DATA -1,0,0,0,1,0,2,0
1030 DATA 0,-1,0,0,0,1,0,2
2000 DATA -1,0,0,0,1,0,0,1
2010 DATA 0,-1,0,0,1,0,0,1
2020 DATA 0,-1,-1,0,0,0,1,0
2030 DATA 0,-1,-1,0,0,0,0,1
3000 DATA -1,0,0,0,1,0,-1,1
3010 DATA 0,-1,0,0,0,1,1,1
3020 DATA -1,0,0,0,1,0,1,-1
3030 DATA -1,-1,0,-1,0,0,0,1
4000 DATA -1,0,0,0,1,0,1,1
4010 DATA 0,-1,1,-1,0,0,0,1
4020 DATA -1,-1,-1,0,0,0,1,0
4030 DATA 0,-1,0,0,-1,1,0,1
5000 DATA 0,0,1,0,0,1,1,1
5010 DATA 0,0,1,0,0,1,1,1
5020 DATA 0,0,1,0,0,1,1,1
5030 DATA 0,0,1,0,0,1,1,1
6000 DATA 0,0,1,0,-1,1,0,1
6010 DATA 0,-1,0,0,1,0,1,1
6020 DATA 0,0,1,0,-1,1,0,1
6030 DATA 0,-1,0,0,1,0,1,1
7000 DATA -1,0,0,0,0,1,1,1
7010 DATA 0,-1,0,0,-1,0,-1,1
7020 DATA -1,0,0,0,0,1,1,1
7030 DATA 0,-1,0,0,-1,0,-1,1
