10 REM" ƒWALL WALLY by G.Leng 20 30 DIM code 300:PROCassemble 40 IFK%<>999Z%=0:K%=999 50 MODE7:VDU23;8202;0;0;0;:PROCtitles 60 DIMA%(19,75),C%(4,2),N%(4,2) 70 MODE5 80 VDU15,23;8202;0;0;0; 90 FLAG=0:targ%=5000:liv%=3:col%=0:screen%=1:sc%=0 100 REPEAT 110 PROCstart 120 dead%=0 130 PROCscreen 140 COLOUR3:COLOUR128 150 TIME=0:B%=0:CASH%=0:S%=0 160 M%=0:m%=10-screen%:IFm%<1m%=1 170 IFscreen%=1m%=-1 180 REPEAT 190 IFINKEY-74ANDB%<6G%=1 200 IFINKEY-98PROCleft 210 IFINKEY-67PROCright 220 PROCcheck 230 IFINKEY-73PROCup 240 IFINKEY-105PROCdown 250 PROCcheck 260 M%=M%+1:IFM%=m%M%=0:PROCmeanie 270 G%=0 280 IFy%=72PROChalf 290 UNTILy%=1ANDQ%=1ANDX%=1ORdead%=1 300 IFdead%=1PROClife 310 IFFLAG=1FLAG=0:Q%=0:X%=1:Y%=28:y%=1:MX%=19:MY%=0:NX%=19:NY%=0:GOTO120 320 *FX15,1 330 IFFLAG=2PROCend:RUN 340 DATA95,131,95,91,127,91,87,123,87 350 360 REM WIN 370 SOUND1,1,101,4:SOUND1,1,117,4:SOUND1,1,129,4:SOUND1,1,149,8 380 PROCscore 390 col%=1 400 IFscreen%<10:?&72=?&73 410 screen%=screen%+1:FORI%=1TO5000:NEXT 420 UNTIL0 430 440 DEFPROCmeanie 450 IFTIME MOD2=1NX%=MX%+SGN(X%-MX%) ELSENY%=MY%+SGN(Y%-MY%) 460 IFNY%>30ORNY%<0MX%=NX%:MY%=NY%:ENDPROC 470 IFNX%=X%ANDNY%=Y%PROCmeanmove:SOUND1,-15,50,8:PRINTTAB(8,Y%+1)"DEAD!":dead%=1:ENDPROC 480 PRINTTAB(NX%,NY%); 490 CALL code 500 IF?&70=32PROCmeanmove 510 ENDPROC 520 530 DEFPROCmeanmove 540 PRINTTAB(MX%,MY%)" "; 550 MX%=NX%:MY%=NY% 560 COLOUR1 570 PRINTTAB(MX%,MY%)CHR$mean% 580 COLOUR3 590 mean%=mean%+1:IFmean%=230mean%=226 600 SOUND&13,-8,mean%,1 610 ENDPROC 620 630 DEFPROCcol 640 A%=RND(7):B%=RND(7):C%=RND(7) 650 IFA%=B%ORB%=C%ORA%=C%GOTO640 660 VDU19,1,A%;0;19,2,B%;0;19,3,C%;0; 670 ENDPROC 680 690 DEFPROCend 700 RESTORE:FORN%=1TO9:READI%:SOUND1,1,I%,6:NEXT:SOUND&101,1,115,8:SOUND&102,1,83,8 710 IFsc%>Z%PRINT'"HI-SCORE!"':Z%=sc% 720 I%=GET 730 ENDPROC 740 750 DEFPROClife 760 FORN%=1TO5000:NEXT 770 liv%=liv%-1:PROCscore 780 IFliv%=0PRINT'"GAME OVER":FLAG=2 ELSEFLAG=1 790 ENDPROC 800 810 DEFPROCscore 820 IFdead%=0T%=TIME DIV100:S%=(200-T%)*10+(6-B%)*100 830 S%=S%+CASH% 840 sc%=sc%+S% 850 COLOUR1 860 PRINTTAB(0,31):FORN%=1TO12:PRINT:NEXT 870 IFdead%=0PRINTTAB(0,31)'"SCREEN ";screen%;" COMPLETED."' 880 IFdead%=0PRINT'"Blasters: ";6-B%;" x100=";(6-B%)*100 890 IFdead%=0PRINT"Time: ";200-T%;" x10=";(200-T%)*10 900 PRINT"Cash: `";CASH%'' 910 PRINT"Score:";S%''"TOTAL SCORE=";sc%' 920 IFsc%>=targ% liv%=liv%+1:PRINT'"EXTRA LIFE!":SOUND3,-15,160,4:targ%=targ%+5000 930 PRINT'"Lives left:";liv% 940 FORN%=1TO10:PRINT:NEXT 950 COLOUR3 960 ENDPROC 970 980 DEFPROChalf 990 SOUND1,1,129,4:SOUND1,1,157,4:SOUND1,1,177,8 1000 VDU30:CALLmess 1010 FORN%=0TO10000:NEXT 1020 PRINTTAB(0,0)"Time taken : ";INT(TIME/100);"sec";SPC(20); 1030 FORN%=0TO10000:NEXT 1040 Q%=1:y%=y%-1 1050 PRINTTAB(X%,Y%)" ";TAB(0,0)SPC(40);:Y%=Y%+1:PRINTTAB(X%,Y%);CHR$230; 1060 ENDPROC 1070 1080 DEFPROCstart 1090 R%=RND(-screen%) 1100 ENVELOPE1,1,0,0,0,0,0,0,120,-5,0,0,120,0 1110 VDU23,224,&40,&40,&FF,4,4,4,&FF,&40 1120 VDU23,225,0,&7E,&42,&5A,&5A,&42,&7E,0 1130 VDU23,226,0,8,8,8,8,8,8,0 1140 VDU23,227,0,0,4,8,16,32,0,0 1150 VDU23,228,0,0,0,0,&3C,0,0,0 1160 VDU23,229,0,0,32,16,8,4,0,0 1161 VDU23,230,&C3,&24,&3C,&E7,&18,&66,&81,&81 1170 VDU19,3,6,0,0,0 1180 RESTORE1250 1190 FORI%=0TO19 1200 READA%:SOUND2,1,A%+(screen%*8),8 1210 PRINTTAB(0,0);20-I%;" ";:FORJ%=0TO72 1220 A%(I%,J%)=RND(3)-1 1230 NEXT:NEXT 1240 SOUND2,1,17+(screen%*8),8 1250 DATA65,81,73,85,81,93,85,101,93,81,85,73,81,65,73,61,65,45,33,45 1260 X%=1:Y%=28:y%=1 1270 MX%=19:MY%=0 1280 NX%=19:NY%=0 1290 mean%=226 1300 A%(X%,y%)=0 1310 FORN%=0TO4:F%=RND(18):G%=RND(70):A%(F%,G%)=3:C%(N%,1)=F%:C%(N%,2)=G% 1320 NEXT 1330 FORN%=0TO4:F%=RND(18):G%=RND(70):A%(F%,G%)=4:N%(N%,1)=F%:N%(N%,2)=G% 1340 NEXT 1350 Q%=0 1360 ?&75=F% 1370 IFscreen%>10?&75=8 1380 ENDPROC 1390 1400 DEFPROCscreen 1410 *FX15,1 1420 PRINTTAB(0,31)'"Press key.";:I%=GET 1430 CLS:IFcol%=1PROCcol 1440 col%=0 1450 COLOUR1:COLOUR130 1460 FORI%=0TO29 1470 PRINTTAB(0,I%)CHR$224;TAB(19,I%)CHR$224; 1480 NEXT 1490 PRINTTAB(1,29)STRING$(18,CHR$224); 1500 FORI%=0TO2:FORJ%=0TO2 1510 IFA%(I%,J%)=1PRINTTAB(I%,29-J%)CHR$224; 1520 NEXT:NEXT 1530 COLOUR3:COLOUR128 1540 FORN%=0TO4:G%=C%(N%,2):IFG%<28F%=C%(N%,1):PRINTTAB(F%,29-G%)"`"; 1550 NEXT 1560 FORN%=0TO4:G%=N%(N%,2):IFG%<28F%=N%(N%,1):PRINTTAB(F%,29-G%)CHR$225; 1570 NEXT 1580 PRINTTAB(X%,Y%);CHR$230; 1590 COLOUR1:COLOUR130:PRINTTAB(X%-1,Y%+1)CHR$224;:COLOUR3:COLOUR128 1600 ENDPROC 1610 1620 DEFPROCcheck 1630 P%=A%(X%,y%) 1640 IFP%=3PROCcash 1650 IFP%=4PROCnasty 1660 IFY%=1PROCfind1 1670 IFY%=29PROCfind2 1680 IFTIME>20000SOUND1,-15,15,8:PRINTTAB(0,Y%)"OUT OF TIME!":dead%=1 1690 ENDPROC 1700 1710 DEFPROCfind1 1720 FORN%=0TO4 1730 IFC%(N%,2)=y%+1ANDY%=1PRINTTAB(C%(N%,1),Y%-1)"`" 1740 IFN%(N%,2)=y%+1ANDY%=1PRINTTAB(N%(N%,1),Y%-1)CHR$225; 1750 NEXT:ENDPROC 1760 1770 DEFPROCfind2 1780 FORN%=0TO4 1790 IFC%(N%,2)=y%-1ANDY%=29PRINTTAB(C%(N%,1),Y%+1)"`" 1800 IFN%(N%,2)=y%-1ANDY%=29PRINTTAB(N%(N%,1),Y%+1)CHR$225 1810 NEXT:ENDPROC 1820 1830 DEFPROCcash 1840 N%=RND(100)+100 1850 CASH%=CASH%+N% 1860 PRINTTAB(X%-1,Y%+1);N%; 1870 SOUND1,-10,200,4 1880 A%(X%,y%)=0 1890 N%=-1:REPEAT:N%=N%+1:UNTILC%(N%,1)=X%ANDC%(N%,2)=y% 1900 C%(N%,1)=0:C%(N%,2)=75 1910 ENDPROC 1920 1930 DEFPROCnasty 1940 dead%=1 1950 PRINTTAB(8,Y%)"DEAD!" 1960 SOUND1,-15,15,8 1970 ENDPROC 1980 1990 DEFPROCleft 2000 IFX%=1ORA%(X%-1,y%)=1ENDPROC 2010 PRINTTAB(X%,Y%)" "; 2020 X%=X%-1 2030 PRINTTAB(X%,Y%);CHR$230; 2040 D%=y%-(30-Y%) 2050 COLOUR1:COLOUR130 2060 FORI%=y%-1TOy%+1 2070 C%=A%(X%-1,I%) 2080 IFC%=1PRINTTAB(X%-1,30-(I%-D%))CHR$224 2090 NEXT 2100 COLOUR3:COLOUR128 2110 SOUND&12,-8,100+X%,1 2120 ENDPROC 2130 2140 DEFPROCright 2150 IFX%=18ORA%(X%+1,y%)=1ENDPROC 2160 PRINTTAB(X%,Y%)" "; 2170 X%=X%+1 2180 PRINTTAB(X%,Y%);CHR$230; 2190 D%=y%-(30-Y%) 2200 COLOUR1:COLOUR130 2210 FORI%=y%-1TOy%+1 2220 IFA%(X%+1,I%)=1PRINTTAB(X%+1,30-(I%-D%))CHR$224; 2230 NEXT:COLOUR3:COLOUR128 2240 SOUND&12,-8,100+X%,1 2250 ENDPROC 2260 2270 DEFPROCup 2280 IFy%=124OR(A%(X%,y%+1)=1ANDG%=0)ENDPROC 2290 IFG%=1ANDA%(X%,y%+1)=1B%=B%+1:SOUND&10,1,6,8:G%=0:A%(X%,y%+1)=0:COLOUR1:COLOUR130:FORN%=0TO60:PRINTTAB(X%,Y%-1)CHR$224;TAB(X%,Y%-1)" ";:NEXT:COLOUR3:COLOUR128 2300 PRINTTAB(X%,Y%)" "; 2310 Y%=Y%-1:y%=y%+1 2320 IFY%=0Y%=1:VDU30,11:COLOUR1:COLOUR130:PRINTTAB(0,0)CHR$224;TAB(19,0)CHR$224;:COLOUR3:COLOUR128:MY%=MY%+1 2330 PRINTTAB(X%,Y%);CHR$230; 2340 COLOUR1:COLOUR130 2350 FORI%=X%-1TOX%+1 2360 IFA%(I%,y%+1)=1PRINTTAB(I%,Y%-1)CHR$224; 2370 NEXT 2380 COLOUR3:COLOUR128 2390 ENDPROC 2400 2410 DEFPROCdown 2420 IFy%=1ENDPROC 2430 IFA%(X%,y%-1)=1:ENDPROC 2440 PRINTTAB(X%,Y%)" "; 2450 Y%=Y%+1:y%=y%-1 2460 IFY%=30Y%=29:PRINTTAB(0,31):COLOUR1:COLOUR130:PRINTTAB(0,Y%)CHR$224;TAB(19,Y%)CHR$224;:COLOUR3:COLOUR128:MY%=MY%-1 2470 IFy%=1COLOUR1:COLOUR130:PRINTTAB(0,Y%+1)STRING$(20,CHR$224);:COLOUR3:COLOUR128 2480 PRINTTAB(X%,Y%);CHR$230; 2490 COLOUR1:COLOUR130 2500 FORI%=X%-1TOX%+1 2510 IFA%(I%,y%-1)=1PRINTTAB(I%,Y%+1)CHR$224; 2520 NEXT:COLOUR3:COLOUR128 2530 ENDPROC 2540 2550 DEFPROCtitles 2560 FORN%=1TO2:PRINTCHR$141CHR$131" *** WALL WALLY ***":NEXT 2570 RESTORE2660 2580 REPEAT 2590 READD$ 2600 IFD$<>" "PRINTD$ 2610 UNTILD$=" " 2620 IFZ%<>0PRINTTAB(25,10);"Hi-score:"TAB(27,11)"†";;Z%; 2630 VDU30 2640 I%=GET:ENDPROC 2650 2660 DATA" ƒ By Graham Leng" 2661 DATA,,"†Use keys:" 2670 DATA,,"† Z _ left" 2680 DATA"† X _ right" 2690 DATA"† * _ up" 2700 DATA"† ? _ down" 2710 DATA"† RTN _ blaster" 2720 DATA,,"‚Explore maze „ SCORE FOR:" 2730 DATA"‚Avoid nasties" 2740 DATA"‚Collect cash „Cash collected" 2750 DATA"‚Blast up only (max 6) „Blasters left" 2760 DATA"‚Time limit 200 secs „Time left" 2770 DATA"‚Three lives" 2780 DATA,"ƒPress key" 2790 DATA" " 2800 ENDPROC 2810 2820 DEFPROCassemble 2830 RESTORE3130 2840 OSBYTE=&FFF4:OSASCI=&FFE3 2850 ?&72=0 2860 FORN%=0TO3STEP3 2870 P%=code 2880 [OPT0 \ OR OPTN% 2890 LDA#&87:JSR OSBYTE 2900 STX&70 2910 RTS 2920 2930 .mess LDX&72 2940 .loop LDA data,X 2950 BEQ end 2960 CMP#32:BEQ over 2970 SEC:SBC&75 2980 .over JSR OSASCI 2990 INX:JMP loop 3000 .end INX 3010 STX&73 3020 RTS 3030 .data 3040 ]:NEXT 3050 FORN%=1TO10 3060 READ A$ 3070 [OPT0 3080 EQUS A$ 3090 EQUB 0 3100 ] 3110 NEXT 3120 ENDPROC 3130 DATA ZHOO GRQH1 QRZ ILQG \RXU ZD\ EDFN 3140 DATA UV[ IHK I\[ [OPZ PZ [OL LHZ` IP[ 3150 DATA bLWW bLWWd NLOP_ 3160 DATA bcPh R^^[= ZTT_ ^] V^X]V 3170 DATA XBMM XBMMZ XJ[ 3180 DATA \JQQ ITSJ \FQQ \FQQ^J]UJWY 3190 DATA RWWW888 aKVV aKVVc ]WK\^ K]]+ 3200 DATA V^^S U^a P QTVX]]Ta 3210 DATA ]IEL% [LEX E TPE]IV 3220 DATA OZMI\ [\]NN) []XMZ IKM __ KPIUX