50 HS=5000:H$="NEW HORIZONS"
100 MODE 8:PAPER 7:INK 0:CLS:udg:START_CHAR_SET
200 DIM B$(20,40)
205 X=1
210 IN$="                                 *** ZFRED *** THE AIM OF THE GAME IS TO PAINT THE PYRAMID WHILST AVOIDING THE MONSTER AND BALLS_EACH LEVEL GETS PROGRESSIVELY HARDER_AS YOU PROGRESS THROUGH THE GAME YOU MAY HAVE TO PAINT THE PYRAMID MORE THAN ONCE TO COMPLETE THE SCREEN_YOU MAY NOT HAVE TO TOTALLY PAINT IN A PYRAMID TO COMPLETE THE LEVEL_YOU GAIN AN EXTRA LIFE FOR EACH SCREEN COMPLETED_YOU MAY USE THE ESCAPE PODS TO AVOID THE MONSTER_                                  "
215 CLS:CSIZE 2,0:AT 4,13:PRINT "CONTROLS:":AT 6,0:PRINT "    Q                           I  ":AT 16,0:PRINT "    Z                           N"
220 AT 10,6:INK 6:PAPER 2:FLASH 1:PRINT "PRESS ANY KEY TO CONTINUE":FLASH 0
230 INK 0:PAPER 4:CSIZE 3,1:AT 0,0:PRINT IN$(X TO X+27):CSIZE 2,0
240 IF INKEY$<>"" THEN GO TO 290
250 X=X+1:IF X=472 THEN X=1
260 GO TO 230
290 FOR THICKNESS=0 TO 96 STEP 4
291 BORDER THICKNESS,0
292 END FOR THICKNESS
293 BORDER 0
300 LI=3:SC=0:L=1
350 C=1:D=1:X=1:Y=1:MONSTER=0:BALL=0:Q=0:V=0:COUNT=26:O=L/3:Z=0:E=10:F=2:G=10:H=32:ODE=0
400 A=3:B=17
450 INK 0:PAPER 7:CLS
500 OVER -1
800 GO SUB 2400
900 OVER -1
1000 P=0:IF B<2 THEN DIE
1100 IF B$(A+1,B)=CHR$(0) THEN DIE
1200 AT A,B:INK 6:PRINT CHR$(115);CHR$(116);CHR$(117):AT A+1,B:PRINT CHR$(118);CHR$(119);CHR$(120)
1210 IF A=C AND B=D THEN L=1:DIE
1220 IF A=X AND B=Y AND MONSTER=1 AND B$(A+1,B)<>CHR$(0) THEN L=1:DIE:X=3:Y=17
1222 IF A=G-1 AND B=H THEN BLURP=1:ESCAPE
1224 IF A=E-1 AND B=F THEN DISC
1225 IF RND(1 TO (50-L))=1 THEN BALL=1
1227 IF RND(1 TO (100-(L*2)))=1 THEN MONSTER=1
1230 IF MONSTER=1 THEN MONSTERMOVE
1240 IF BALL=1 THEN BALLMOVE
1300 IF KEYROW(6)=8 THEN GO SUB 1800:A=A-2:B=B-3:P=1:GO TO 1610
1400 IF KEYROW(2)=2 THEN GO SUB 1800:A=A+2:B=B-3:P=1:GO TO 1610
1500 IF KEYROW(5)=4 THEN GO SUB 1800:A=A-2:B=B+3:P=1:GO TO 1610
1600 IF KEYROW(7)=64 THEN GO SUB 1800:A=A+2:B=B+3:P=1:GO TO 1610
1610 IF BALL=1 THEN AT C,D:INK 2:OVER -1:PRINT CHR$(97);CHR$(98);CHR$(99):AT C+1,D:PRINT CHR$(100);CHR$(101);CHR$(102)
1611 IF MONSTER=1 THEN AT X,Y:OVER -1:INK 4:PRINT CHR$(36);CHR$(37);CHR$(38):AT X+1,Y:PRINT CHR$(39);CHR$(40);CHR$(41)
1690 IF P=1 THEN GO TO 1000
1700 GO TO 1210
1800 BEEP 1000,3,43,4,7,7,8:IF B$(A+1,B)=CHR$(103) THEN SCORE:RETurn 
1805 IF B$(A+1,B)<>CHR$(103) AND Z=1 THEN SCORE:RETurn 
1810 AT A,B:INK 6:PRINT CHR$(115);CHR$(116);CHR$(117):AT A+1,B:PRINT CHR$(118);CHR$(119);CHR$(120)
1900 RETurn 
2000 DEFine PROCedure DIE
2005 BEEP 10000,325,4,3,5,3,15
2100 LI=LI-1:OVER 0:AT 0,21:INK 0:CSIZE 2,1:PRINT LI:OVER -1:CSIZE 2,0:IF LI=0 THEN FINISH
2110 IF L=1: AT A,B:INK 6:OVER -1:PRINT CHR$(115);CHR$(116);CHR$(117):AT A+1,B:PRINT CHR$(118);CHR$(119);CHR$(120)
2200 A=3:B=17
2210 IF L=1: AT A,B:INK 6:OVER -1:PRINT CHR$(115);CHR$(116);CHR$(117):AT A+1,B:PRINT CHR$(118);CHR$(119);CHR$(120):L=0
2220 MONSTER=0
2225 V=0
2300 END DEFine 
2400 OVER 0:INK 0
2500 UP=16
2600 FOR ACROSS=2 TO 17 STEP 3
2700 UP=UP-2:RESTORE 
2800 T=0:FOR I=UP TO 17:READ M:AT I,ACROSS:PRINT CHR$(M);CHR$(M+1);CHR$(M+2):B$(I,ACROSS)=CHR$(M):B$(I,ACROSS+1)=CHR$(M+1):B$(I,ACROSS+2)=CHR$(M+2):IF M=109 THEN T=T+1:IF T=2 THEN RESTORE :T=0
2900 AT 18,ACROSS:PRINT CHR$(112);CHR$(113);CHR$(114)
3000 NEXT ACROSS
3100 UP=2
3200 FOR ACROSS=17 TO 34 STEP 3
3300 UP=UP+2:RESTORE 
3400 T=0:FOR I=UP TO 17 STEP 1:READ M:AT I,ACROSS:PRINT CHR$(M);CHR$(M+1);CHR$(M+2):B$(I,ACROSS)=CHR$(M):B$(I,ACROSS+1)=CHR$(M+1):B$(I,ACROSS+2)=CHR$(M+2):IF M=109 THEN T=T+1:IF T=2 THEN RESTORE :T=0
3500 AT 18,ACROSS:PRINT CHR$(112);CHR$(113);CHR$(114)
3600 NEXT ACROSS
3605  OVER -1
3610 AT E,F:INK 2:PAPER 7:FLASH 1:PRINT CHR$(91);CHR$(92);CHR$(93):AT E+1,F:PRINT CHR$(94);CHR$(95);CHR$(96):B$(E,F)=CHR$(91):B$(E,F+1)=CHR$(92):B$(E,F+2)=CHR$(93):B$(E+1,F)=CHR$(94):B$(E,F+1)=CHR$(95):B$(E,F+2)=CHR$(96)
3620 AT G,H:INK 2:PAPER 7:FLASH 1:PRINT CHR$(91);CHR$(92);CHR$(93):AT G+1,H:PRINT CHR$(94);CHR$(95);CHR$(96):B$(G,H)=CHR$(91):B$(G,H+1)=CHR$(92):B$(G,H+2)=CHR$(93):B$(G+1,H)=CHR$(94):B$(G,H+1)=CHR$(95):B$(G,H+2)=CHR$(96):FLASH 0
3700 OVER 0:AT 0,0:CSIZE 2,1:PRINT "SCORE=";SC:AT 0,15:PRINT "LIVES=";LI:AT 0,28:PRINT "LEVEL=";L:CSIZE 2,0:AT 19,0:PRINT "HI_SCORE=";HS;" BY ";H$:OVER -1
3750 OVER -1:RETurn 
3800 DATA  103,106,109,109
3900 DEFine PROCedure OK
4000 DELETE MDV1_ZFRED:SAVE MDV1_ZFRED:DELETE MDV2_ZFRED:SAVE MDV2_ZFRED
4100 END DEFine 
4110 DEFine PROCedure SCORE
4120 INK 6:OVER -1:AT A,B:PRINT CHR$(115);CHR$(116);CHR$(117):AT A+1,B:PRINT CHR$(118);CHR$(119);CHR$(120)
4125 AT A+1,B:OVER 0:INK O+1:PRINT CHR$(42);CHR$(43);CHR$(44):AT A+2,B:PRINT CHR$(45);CHR$(46);CHR$(47):OVER -1:B$(A+1,B)=CHR$(42):B$(A+1,B+1)=CHR$(43):B$(A+1,B+2)=CHR$(44):B$(A+1,B)=CHR$(45):B$(A+2,B+1)=CHR$(46):B$(A+2,B+2)=CHR$(47)
4130 SC=SC+10:CSIZE 2,1:AT 0,6:OVER 0:INK 0:PRINT SC:CSIZE 2,0:OVER -1:COUNT=COUNT-1:IF COUNT=0 THEN O=O-1
4140 IF COUNT=0 AND O<=0 THEN NEXTLEVEL
4150 IF O>0 AND COUNT=0 THEN COUNT=28:Z=1
4190 END DEFine 
4200 DEFine PROCedure udg
4400 base_char_set=ALCHP(1024)
4600 LBYTES "zfred_gra",base_char_set
4800 CHAR_USE #1,base_char_set,0
4900 END DEFine 
5000 :
5100 DEFine PROCedure START_CHAR_SET
5300 PRINT "INVALID PROC"
5500 END DEFine 
5600 DEFine PROCedure graphics
5610 CHAR_USE #1,0,0
5800 RECHP base_char_set
6300 END DEFine 
6400 RETurn 
7000 DEFine PROCedure BALLMOVE
7010 IF Q=0 THEN C=3:D=17:Q=1
7020 R=RND(1TO 10)
7030 IF R>5 AND D>4 THEN D=D-3:C=C+2:GO TO 7050
7040 IF R<5 AND D<34 THEN D=D+3:C=C+2:GO TO 7050
7042 IF A=C AND B=D THEN L=1:DIE
7045 GO TO 7020
7050 IF BALL=1 THEN AT C,D:OVER -1:INK 2:PRINT CHR$(97);CHR$(98);CHR$(99):AT C+1,D:PRINT CHR$(100);CHR$(101);CHR$(102):BEEP -3000,3,4,5,6,7,8
7080 IF C>=16 THEN BALL=0:Q=0:AT C,D:INK 2:OVER -1:PRINT CHR$(97);CHR$(98);CHR$(99):AT C+1,D:PRINT CHR$(100);CHR$(101);CHR$(102):BEEP
7100 END DEFine 
8000 DEFine PROCedure MONSTERMOVE
8010 IF V=0 THEN X=3:Y=17:V=1
8020 IF B$(X+1,Y)=CHR$(0) THEN MONSTER=0:V=0:GO TO 8100
8030 IF X>A THEN X=X-2
8035 IF X<A THEN X=X+2
8040 IF Y>B THEN Y=Y-3
8045 IF Y<B THEN Y=Y+3
8047 IF A=X AND B=Y THEN L=1:DIE:X=3:Y=17
8050 IF MONSTER=1 THEN AT X,Y:OVER -1:INK 4:PRINT CHR$(36);CHR$(37);CHR$(38):AT X+1,Y:PRINT CHR$(39);CHR$(40);CHR$(41):BEEP -3000,4,3,5,3,5
8100 END DEFine 
9000 DEFine PROCedure NEXTLEVEL
9005 CLS:AT 10,10:PRINT "NEXT LEVEL":PAUSE 100
9006 CLS
9010 LI=LI+1
9015 L=L+1
9020 GO TO 350
11000 DEFine PROCedure FINISH
11005 CLS
11006 INK 0:PAPER 7:CLS
11010 IF HS>SC THEN GO TO 205
11020 HS=SC
11030 AT 10,0:PRINT "CONGRATULATIONS,YOU HAVE BEATEN THE  HI_SCORE.PLEASE ENTER YOUR NAME(<15)"
11040 INPUT H$:IF  LEN(H$)>14 THEN GO TO 11030
11090 CLS:GO TO 200
11095 END DEFine 
12000 DEFine PROCedure ESCAPE
12010 IF BLURP=1 THEN B$(10,32)=CHR$(0):B$(10,33)=CHR$(0):B$(10,34)=CHR$(0):B$(11,32)=CHR$(0):B$(11,33)=CHR$(0):B$(11,34)=CHR$(0):BLURP=0
12020 AT G,H:OVER -1:INK 2:PAPER 7:PRINT CHR$(91);CHR$(92);CHR$(93):AT G+1,H:PRINT CHR$(94);CHR$(95);CHR$(96):B$(G,H)=CHR$(91):B$(G,H+1)=CHR$(92):B$(G,H+2)=CHR$(93):B$(G+1,H)=CHR$(94):B$(G,H+1)=CHR$(95):B$(G,H+2)=CHR$(96)
12022 AT A,B:INK 6:PRINT CHR$(115);CHR$(116);CHR$(117):AT A+1,B:PRINT CHR$(118);CHR$(119);CHR$(120)
12025 G=G-2:H=H-3:A=A-2:B=B-3:IF G<=3 THEN A=3:B=17
12026 AT A,B:INK 6:PRINT CHR$(115);CHR$(116);CHR$(117):AT A+1,B:PRINT CHR$(118);CHR$(119);CHR$(120)
12030 AT G,H:OVER -1:INK 2:PAPER 7:PRINT CHR$(91);CHR$(92);CHR$(93):AT G+1,H:PRINT CHR$(94);CHR$(95);CHR$(96):B$(G,H)=CHR$(91):B$(G,H+1)=CHR$(92):B$(G,H+2)=CHR$(93):B$(G+1,H)=CHR$(94):B$(G,H+1)=CHR$(95):B$(G,H+2)=CHR$(96)
12050 END DEFine 
13000 DEFine PROCedure DISC
13010 IF BLURP=1 THEN B$(10,2)=CHR$(0):B$(10,3)=CHR$(0):B$(10,4)=CHR$(0):B$(11,2)=CHR$(0):B$(11,3)=CHR$(0):B$(11,4)=CHR$(0):BLURP=0
13020 AT E,F:INK 2:PAPER 7:PRINT CHR$(91);CHR$(92);CHR$(93):AT E+1,F:PRINT CHR$(94);CHR$(95);CHR$(96):B$(E,F)=CHR$(91):B$(E,F+1)=CHR$(92):B$(E,F+2)=CHR$(93):B$(E+1,F)=CHR$(94):B$(E,F+1)=CHR$(95):B$(E,F+2)=CHR$(96)
13022 AT A,B:INK 6:PRINT CHR$(115);CHR$(116);CHR$(117):AT A+1,B:PRINT CHR$(118);CHR$(119);CHR$(120)
13025 E=E-2:F=F+3:A=A-2:B=B+3:IF E<=3 THEN A=3:B=17
13026 AT A,B:INK 6:PRINT CHR$(115);CHR$(116);CHR$(117):AT A+1,B:PRINT CHR$(118);CHR$(119);CHR$(120)
13030 AT E,F:OVER -1:INK 2:PAPER 7:PRINT CHR$(91);CHR$(92);CHR$(93):AT E+1,F:PRINT CHR$(94);CHR$(95);CHR$(96):B$(E,F)=CHR$(91):B$(E,F+1)=CHR$(92):B$(E,F+2)=CHR$(93):B$(E+1,F)=CHR$(94):B$(E,F+1)=CHR$(95):B$(E,F+2)=CHR$(96)
13040 END DEFine 
