  100 RANDOMIZE 
  110 CLOSE #103
  120 SET SOUNDBUFFER200
  130 OPEN #103:"sound:"
  140 SET KEYCLICKOFF
  150 SET KEYDELAY10
  160 SET KEYRATE2
  170 SET STATUSOFF
  180 ENVELOPE NUMBER1;1,0,0,5;2,63,63,5;3,-63,-63,5
  190 ENVELOPE NUMBER2;-10,63,63,10
  200 ENVELOPE NUMBER3;-1,63,63,1;-10,-63,-63,25
  210 ENVELOPE NUMBER4;-1,63,63,1;-10,-23,-23,20
  220 ENVELOPE NUMBER5;0,43,43,2;-10,43,43,1;0,43,43,2
  230 CALL ENV4:CALL ENV5
  240 CALL TITLE
  250 STRING EGR$(4)*2
  260 LET EGR$(0)="ij"
  270 LET EGR$(1)="kl"
  280 LET EGR$(2)="mn"
  290 LET EGR$(3)="op"
  300 DIM ELL(20)
  310 LET SCORE=0:LET GAMEOVER=0
  320 GOTO  1330
  330 DEF GOVER
  340   CLEAR SOUND
  350   FOR X=1TO30
  360     SET BORDERRND(255)
  370     SOUND DURATION2,PITCH40-X
  380     SOUND DURATION2,PITCH50-X
  390   NEXT X
  400   SET BORDER0
  401   FOR X=40TO20STEP-1
  410     SOUND ENVELOPE10,DURATION10,PITCHX
  411   NEXT X
  420   WAIT 2
  430   CALL DRAWSCORE
  440   LET I$=INKEY$
  450   IF INKEY$=""THENGOTO  450
  460   LET I$=INKEY$
  470   RUN 
  480 END DEF 
  490 DEF DRAWSCORE
  500   PRINT #102,AT1,16:"SCORE ";STR$(SCORE);"     "
  510 END DEF 
  520 DEF ELLINIT
  530   FOR X=1TO20
  540     LET ELL(X)=25+RND(15)
  550   NEXT X
  560 END DEF 
  570 DEF ELLFRISS
  580   FOR X=1TO20
  590     IF RND(100)>90THEN
  600       IF ELL(X)<22THEN
  610         PRINT #102,ATELL(X)+1,X*2:LEV$(ELL(X)+1)(X*2:X*2+1)
  620         LET ELANI=MOD(ELL(X),2)
  630         PRINT #102,ATELL(X)-1,X*2:EGR$(ELANI*2)
  640         PRINT #102,ATELL(X),X*2:EGR$(ELANI*2+1)
  650         SOUND SOURCE2,STYLE32,DURATION15,ENVELOPE1,INTERRUPT,PITCH70-ELL(X)
  660       END IF 
  670       IF ELL(X)>5THENLET ELL(X)=ELL(X)-1
  680       IF ELL(X)=5THENLET GAMEOVER=1
  690     END IF 
  700   NEXT X
  710 END DEF 
  720 DEF EMB(BEX,BEY,BER)
  730   PRINT #102,ATBEY,BEX:"éÇ"
  740   PRINT #102,ATBEY+1,BEX:"à↑"
  750   IF BER=1THEN
  760     PRINT #102,ATBEY-2,BEX:"ab"
  770     PRINT #102,ATBEY-1,BEX:"cd"
  780   END IF 
  790 END DEF 
  800 DEF RE(BEX1,BEY1)
  810   PRINT #102,ATBEY1,BEX1:LEV$(BEY1)(BEX1:BEX1+1)
  820   PRINT #102,ATBEY1+1,BEX1:LEV$(BEY1+1)(BEX1:BEX1+1)
  830 END DEF 
  840 DEF GAME
  850   CALL ELLINIT
  860   LET I$=INKEY$
  870   LET I$=INKEY$
  880   PRINT #102,AT1,15:"SPACE TO START"
  890   PRINT #102,AT1,15:"              "
  900   IF I$<>" "THENGOTO  870
  910   CALL DRAWSCORE
  920   LET EX=20:LET EXOLD=EX:LET EY=5
  930   CALL EMB(EX,EY,1)
  940   CALL ELLFRISS
  950   LET I$=INKEY$
  960   IF I$=CHR$(188)THENLET EX=EX+2:CALL EMBSOUND(30+EX)
  970   IF I$=CHR$(184)THENLET EX=EX-2:CALL EMBSOUND(30+EX)
  980   IF I$=" "ORI$=CHR$(180)THENCALL LEDOB(EX,EY)
  990   IF EX<2THENLET EX=2
 1000   IF EX>40THENLET EX=40
 1010   IF EX<>EXOLDTHENCALL RE(EXOLD,EY):CALL RE(EXOLD,EY-2)
 1020   LET EXOLD=EX
 1030   IF GAMEOVER=1THENCALL GOVER
 1040   IF I$<>CHR$(27)THENGOTO  930
 1050   CLEAR FONT
 1060 END DEF 
 1070 DEF EMBSOUND(BEBE)
 1080   SOUND SOURCE0,DURATION5,INTERRUPT,ENVELOPE5,PITCHBEBE
 1090 END DEF 
 1100 DEF LEDOB(BEX,BEY)
 1110   LET X1$="ab"
 1120   LET X2$="cd"
 1130   FOR Y9=BEYTO23
 1140     IF Y9<12THENCALL EMB(BEX,BEY,0)
 1150     PRINT #102,ATY9-2,BEX:LEV$(Y9-2)(BEX:BEX+1)
 1160     PRINT #102,ATY9,BEX:X2$
 1170     PRINT #102,ATY9-1,BEX:X1$
 1180     SOUND DURATION10,PITCH50-Y9,INTERRUPT,ENVELOPE2
 1190     IF Y9=ELL(BEX/2)THEN
 1200       LET LIM=SCORE
 1210       IF LIM>25THENLET LIM=25
 1220       LET ELL(BEX/2)=50-LIM
 1230       CALL RE(BEX,Y9)
 1240       LET X1$="qr":LET X2$="st"
 1250       SOUND SOURCE1,STYLE16,PITCH70+RND(10),ENVELOPE4
 1260       LET SCORE=SCORE+1:CALL DRAWSCORE
 1270     END IF 
 1280   NEXT Y9
 1290   CALL RE(BEX,Y9-2)
 1300   LET A$=INKEY$
 1310   SOUND SOURCE1,STYLE16,DURATION25,ENVELOPE3,INTERRUPT,PITCH60
 1320 END DEF 
 1330 ! GRACHA EXPORTED
 1340 !
 1350 STRING LEV$(24)*42
 1360 DIM RAS(24,8)
 1370 TEXT 40:SET STATUSOFF:SET BORDER0
 1380 CALL ABC
 1390 SET CHARACTERORD("Ä"),0
 1400 CALL OPENLEVDISP
 1410 CALL SETFONTS
 1420 CALL DRAWLEVEL
 1430 CALL RASZT
 1440 CALL GAME
 1450 ! LEVEL
 1460 DATA "  wv      vv                  vwx       wv"
 1470 DATA "     vwx v        vwxv     vwxwv    vv wxv"
 1480 DATA "                                          "
 1490 DATA "                                          "
 1500 DATA "                                          "
 1510 DATA " Ü→Å ÜπÅ Ü→Å Ü→Å Ü→Å Ü→Å Ü→Å Ü→Å Ü→Å Ü→Å Ü"
 1520 DATA "ÆØÆÆäöäöäö▮ƒäƒ▮ƒäƒ▮ƒäƒ▮ƒäƒ▮ƒä▮öÆÆƒäƒÆØäƒÆƒ"
 1530 DATA "→ΩØÆ▮ƒØÆÆΩØÆÆΩØÆÆΩØÆÆΩØÆÆΣπØÆΩØÆÆΩØÆÆΩØÆÆΩ"
 1540 DATA "▮ƒ▮üåƒ▮ƒ▮ƒ▮ƒ▮ƒ▮ƒüå▮ƒ▮ƒäöäöäö▮ƒ▮ƒ▮ƒ▮ƒüå▮ƒ▮ƒ"
 1550 DATA "πΣπøæΣ→Ω→Ω→Ω→Ω→Ωøæ→Ω→Ω→Ω→Ω→Ω→ØÆΩ→Ω→Ωøæ→Ω→Ω"
 1560 DATA "äöäöäö▮ƒ▮ƒ▮ƒ▮ƒ▮ƒØÆ▮πΣƒ▮ƒ▮ƒΩƒ▮ƒ▮ƒ▮ƒ▮ƒØÆ▮ƒ▮ƒ"
 1570 DATA "→Ω→Ω→Ω→Ω→Ω→Ω→Ω→ΩπΣ→äöΩüå→Ω→Ω→Ω→Ω→ΩπΣπΣπΣ→Ω"
 1580 DATA "▮ƒ▮ƒ▮→Ω→Ωƒ▮üåƒ▮ƒäö▮ƒ▮ƒøæ▮ƒ▮ƒ▮ƒ▮ƒ▮ƒäöäöäö▮ƒ"
 1590 DATA "→Ωüå→▮ƒ▮ƒΩ→øæΩ→Ω→Ωƒ▮→Ω→Ω→Ω→Ω→Ω→Ω→Ω→Ω→Ω→Ω→Ω"
 1600 DATA "▮ƒøæ▮ƒ▮ƒ▮ƒ▮ØÆƒ▮ƒ▮ƒØÆ▮ƒ▮ƒ▮ƒ▮ƒ▮→Ω→ΩƒØÆüå▮ƒ▮ƒ"
 1610 DATA "→ΩØÆƒ▮→ΩπΣπΣ→Ω→Ω→Ω→Ω→Ω→Ω→Ωƒ▮→▮ƒ▮ƒΩ→Ωøæ→Ω→Ω"
 1620 DATA "▮ƒΩ→ØÆ▮ƒäöäö▮ƒ▮ƒ▮ƒ▮üåƒ▮ƒ▮ƒØÆ▮ƒ▮ƒ▮ƒ▮ƒØÆ▮ƒ▮ƒ"
 1630 DATA "→Ω→Ω→Ωüå→Ω→Ω→▮ƒΩ→▮ƒøæΩ→Ω→ΩπΣπΣπΣ→ØÆΩ→Ω→üåΩ"
 1640 DATA "▮ƒ▮ƒ▮ƒøæ▮ƒØÆ▮ƒ▮ƒ▮ƒ▮ØÆƒ▮ƒ▮ƒäöäöäö▮ƒ▮ƒ▮ƒ▮øæƒ"
 1650 DATA "πΣπΣπΣØÆπΣ→ΩπΣπΣπΣπΣπΣƒππΣπΣ→ΩπΣπΣπΣπΣ→ØÆΣ"
 1660 DATA "äöØÆäöäöäöÆÆäöäöÆöäöØÆ▮ƒäöäö▮ƒäöÆöäöØÆ▮ƒäö"
 1670 DATA "©#©©ef#u#©©#©#©©#©##©#©#u©ef©#©#©#©©u©©©u#"
 1680 DATA "©efÄgh#ÄÖÄÄu#©#ÄÖÄu#ÄÖÖ©Ä©ghÄÖu#Äef#©#©#©#"
 1690 DATA "ughÄÖÄÖÄÖuÖÄÖÄÖuÄÖÄÖÄ#uÄÖuÖÖÖÄÄÖÄghÖÄÖÄuÄÖ"
 1700 ! COLOR ROWS
 1710 DATA 36,201,203,219,36,166,254,255,
 1720 DATA 164,201,203,219,164,166,254,255,
 1730 DATA 52 ,201,203,219,52,19,174,223,
 1740 DATA 180,201,203,219,180,19,174,223,
 1750 DATA 188,201,203,219,188,19,174,223,
 1760 DATA 252,201,203,219,252,19,174,223,
 1770 DATA 140,65,217,91,129,19,174,223,
 1780 DATA 196,72,137,217,129,19,174,223,
 1790 DATA 224,72,137,217,129,19,174,223,
 1800 DATA 160,8,65,201,129,19,174,223,
 1810 DATA 160,33,41,249,129,19,174,223,
 1820 DATA 196,72,137,217,129,19,174,223,
 1830 DATA 196,72,137,217,129,19,174,223,
 1840 DATA 172,33,41,249,129,19,174,223,
 1850 DATA 140,33,41,249,129,19,174,223,
 1860 DATA 140,72,137,217,129,19,174,223,
 1870 DATA 168,72,137,217,129,19,174,223,
 1880 DATA 224,33,41,249,129,19,174,223,
 1890 DATA 224,72,137,217,129,19,174,223,
 1900 DATA 132,8,65,201,129,19,174,223,
 1910 DATA 132,8,65,201,129,19,174,223,
 1920 DATA 0,240,170,51,0,144,219,89,
 1930 DATA 0,112,98,226,0,144,219,89,
 1940 DATA 0,48,176,34,0,144,219,89,
 1950 ! FONTS
 1960 DEF SETFONTS
 1970   SET CHARACTER128,128,40,74,250,158,175,79,143,79,
 1980   SET CHARACTER129,160,10,90,218,60,90,164,120,224,
 1990   SET CHARACTER130,158,45,158,125,109,45,148,160,80,
 2000   SET CHARACTER131,88,224,208,160,68,165,20,80,64,
 2010   SET CHARACTER132,17,51,35,103,71,143,143,15,240,
 2020   SET CHARACTER133,136,132,132,194,224,225,240,240,240,
 2030   SET CHARACTER134,240,120,188,173,222,143,143,143,248,
 2040   SET CHARACTER135,240,240,240,240,120,180,90,180,240,
 2050   SET CHARACTER136,51,171,137,163,56,56,8,225,67,
 2060   SET CHARACTER137,200,89,25,88,193,193,1,120,44,
 2070   SET CHARACTER138,3,3,48,0,32,32,32,6,6,
 2080   SET CHARACTER139,12,12,192,0,64,64,64,6,6,
 2090   SET CHARACTER140,255,94,158,30,30,60,90,180,240,
 2100   SET CHARACTER141,255,255,239,223,175,207,143,143,248,
 2110   SET CHARACTER142,255,239,223,175,207,143,143,143,248,
 2120   SET CHARACTER143,239,158,30,30,30,60,90,180,240,
 2130   SET CHARACTER144,252,30,90,30,90,60,90,180,240,
 2140   SET CHARACTER145,247,143,173,15,45,30,165,210,240,
 2150   SET CHARACTER146,247,207,143,15,150,15,45,165,240,
 2160   SET CHARACTER147,252,60,30,180,90,180,90,180,240,
 2170   SET CHARACTER148,255,78,236,72,72,8,8,128,128,
 2180   SET CHARACTER149,255,127,167,23,39,35,50,50,50,
 2190   SET CHARACTER150,136,136,136,136,184,203,255,248,248,
 2200   SET CHARACTER151,50,50,50,50,242,122,254,240,240,
 2210   SET CHARACTER97,0,33,83,183,127,215,111,215,111,
 2220   SET CHARACTER98,0,128,140,236,206,78,142,28,142,
 2230   SET CHARACTER99,95,47,15,165,80,160,64,32,16,
 2240   SET CHARACTER100,88,8,88,128,16,48,96,192,128,
 2250   SET CHARACTER101,145,35,103,191,191,247,112,16,80,
 2260   SET CHARACTER102,152,200,236,222,127,126,224,128,176,
 2270   SET CHARACTER103,145,209,145,51,179,51,50,176,144,
 2280   SET CHARACTER104,144,176,144,200,232,228,232,224,192,
 2290   SET CHARACTER105,2,5,2,5,142,139,0,9,27,
 2300   SET CHARACTER106,25,21,8,5,13,10,2,8,12,
 2310   SET CHARACTER107,39,7,119,112,48,64,96,206,14,
 2320   SET CHARACTER108,14,14,238,224,209,33,97,0,0,
 2330   SET CHARACTER109,137,138,1,10,11,5,4,1,3,
 2340   SET CHARACTER110,4,10,4,10,23,29,0,9,141,
 2350   SET CHARACTER111,7,7,119,112,184,72,104,0,0,
 2360   SET CHARACTER112,78,14,238,224,192,32,96,55,7,
 2370   SET CHARACTER113,238,14,96,32,0,48,112,119,7,
 2380   SET CHARACTER114,119,7,96,64,0,192,224,238,14,
 2390   SET CHARACTER115,11,9,8,25,170,170,35,2,1,
 2400   SET CHARACTER116,13,9,17,157,2,2,14,10,12,
 2410   SET CHARACTER117,162,34,142,142,23,85,68,144,208,
 2420   SET CHARACTER118,0,0,0,102,159,15,105,240,144,
 2430   SET CHARACTER119,0,51,119,207,143,188,60,192,0,
 2440   SET CHARACTER120,0,136,204,206,111,167,211,112,16,
 2450 END DEF 
 2460 DEF DRAWLEVEL
 2470   RESTORE  1460
 2480   LET C=102
 2490   FOR X=1TO24
 2500     READ LEV$(X)
 2510     PRINT #C:LEV$(X);
 2520   NEXT X
 2530 END DEF 
 2540 DEF RASZT
 2550   RESTORE  1710
 2560   LET P=14608:LET RMO=SPEEK(255,P+3)BOR192
 2570   FOR X=1TO24
 2580     FOR Y=1TO8
 2590       READ RAS(X,Y)
 2600       SPOKE 255,P+Y+7,RAS(X,Y)
 2610     NEXT Y
 2620     SPOKE 255,P+1,168:SPOKE 255,P+3,RMO:LET P=P+16
 2630   NEXT X
 2640 END DEF 
 2650 DEF OPENLEVDISP
 2660   TEXT 40
 2670   CLOSE #102
 2680   SET VIDEOY24
 2690   SET VIDEOX42
 2700   SET VIDEOCOLOR1
 2710   OPEN #102:"video:"
 2720   PRINT #102:CHR$(27);"o";:SET #102:SCROLLOFF
 2730   DISPLAY #102:AT1FROM1TO24
 2740 END DEF 
 2750 DEF ABC
 2760   RESTORE  2830
 2770   FOR X=1TO40
 2780     READ A$
 2790     ! PRINT A$
 2800     READ A1,A2,A3,A4,A5,A6,A7,A8,A9
 2810     SET CHARACTERORD(A$),A1,A2,A3,A4,A5,A6,A7,A8,A9
 2820   NEXT X
 2830   DATA "A",68,206,138,10,14,40,160,160,0
 2840   DATA "B" ,204,170,138,140,40,40,160,192,0
 2850   DATA "C",68,138,136,136,8,8,160,64,0
 2860   DATA "D",204,138,138,168,40,40,160,192,0
 2870   DATA "E",238,136,136,140,8,8,128,224,0
 2880   DATA "F",238,136,136,140,8,128,128,128,0
 2890   DATA "G",68,138,136,136,104,40,160,64,0
 2900   DATA "H",138,138,138,172,40,40,160,160,0
 2910   DATA "I",68,68,4,4,4,64,64,64,0
 2920   DATA "J",238,34,2,6,2,160,160,64,0
 2930   DATA "K",170,138,10,12,72,160,160,160,0
 2940   DATA "L" ,136,136,8,8,8,128,128,224,0
 2950   DATA "M",168,202,44,104,40,160,160,160,0
 2960   DATA "N",138,138,104,44,74,160,160,160,0
 2970   DATA "O",68,170,138,168,40,40,160,64,0
 2980   DATA  "P",204,170,138,140,8,8,128,128,0
 2990   DATA "Q" ,204,170,138,138,40,40,164,66,0
 3000   DATA "R",204,170,138,140,40,40,160,160,0
 3010   DATA "S",68,138,136,4,2,32,160,64,0
 3020   DATA "T",206,68,4,4,64,64,64,64,0
 3030   DATA "U",170,138,138,40,40,160,160,64,0
 3040   DATA "V",170,138,138,40,160,64,64,64,0
 3050   DATA "W",170,138,138,40,160,164,10,160,0
 3060   DATA "X",170,138,10,64,64,224,10,160,0
 3070   DATA "Y",170,138,10,4,4,64,64,64,0
 3080   DATA "Z",206,2,32,4,64,128,128,224,0
 3090   !
 3100   DATA "0",68,172,138,168,40,40,160,64,0
 3110   DATA "1",34,70,10,2,32,32,32,32,0
 3120   DATA "2" ,68,170,2,4,64,128,128,224,0
 3130   DATA "3",68,170,2,4,32,32,160,64,0
 3140   DATA "4",136,136,136,8,44,64,64,64,0
 3150   DATA "5",238,136,136,12,32,32,32,192,0
 3160   DATA "6",68,138,136,12,40,160,160,64,0
 3170   DATA "7",238,2,2,66,4,64,64,64,0
 3180   DATA "8",68,138,138,4,40,160,160,64,0
 3190   DATA "9",68,138,138,36,32,32,160,64,0
 3200   !
 3210   DATA """",38,68,128,0,0,0,0,0,0
 3220   DATA "(",68,136,136,136,8,8,128,64,0
 3230   DATA ")",68,34,2,2,32,32,64,0,0
 3240   DATA ",",0,0,0,0,0,0,68,4,64
 3250   DATA " ",0,0,0,0,0,0,0,0,0
 3260 END DEF 
 3270 DEF TITLE
 3280   LET III$=INKEY$
 3290   CALL OPENLEVDISP:CALL ABC
 3300   SET BORDER32:SET #102:PALETTE32,255,254,253
 3310   PRINT #102,AT8,12:"WALL DEFENDER GAME"
 3320   PRINT #102,AT10,12:"   BY ENDI 2016"
 3330   PRINT #102,AT19,12:" ANY KEY TO START"
 3340   LET D=40
 3350   ENVELOPE NUMBER9;0,63,63,1;2,63,63,D*10
 3360   LET P=42+RND(3)
 3370   LET XT1=1
 3380   SOUND SOURCE0,PITCHP,SYNC2,STYLE16,DURATION1,DURATIOND,ENVELOPE9
 3390   SOUND SOURCE1,PITCHP,SYNC2,STYLE0,DURATIOND,ENVELOPE11
 3400   SOUND SOURCE3,SYNC2,STYLE0,DURATIOND,ENVELOPE10,STYLERND(16),LEFT192,RIGHT94
 3410   IF INKEY$<>""THENGOTO  3440
 3420   LET XT1=XT1+1
 3421   IF XT1<5THENGOTO  3380
 3430   GOTO  3360
 3440   CLEAR SOUND
 3450 END DEF 
 3460 DEF ENV4
 3470   LET P=1:LET V=63:LET D=1
 3480   LET O=-2:LET C=-63:LET S=1
 3490   ENVELOPE NUMBER10;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D
 3500 END DEF 
 3510 DEF ENV5
 3520   LET P=1:LET V=63:LET D=1
 3530   LET O=-2:LET C=-63:LET S=1
 3540   ENVELOPE NUMBER11;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D;O,C,C,S;P,V,V,D
 3550 END DEF 

