10 ONERRORPROCerror 20 DIM lt 12:!lt=&04030201:lt!4=&08070605:lt!8=&12111009 30 *TV250 40 MODE2:VDU23;8202;0;0;0;:?&FE00=6:?&FE01=20:wh%=&B0D:lev%=&AF6:sp%=&AF7:np%=&AFF:sc%=&AAF:up%=&AB2:ts%=&A00:gs%=&A56:cs%=&A70:ad%=&AC6:mx%=&83:cls%=&B28:PROCabout_deluxe 50 rx=&71CE:sx=&71CF:sy=&71D0:dead=&71D1:how=&71D2:fin=&71D3:frame=&71D5:dir=&71D4:baddata=&73E0:badset=&74C5:*LOAD BALL 60 PROCassemble 70 ONERRORPROCerror 80 PROCdemos 90 ?sc%=0:sc%?1=0:sc%?2=0:lv%=0:l%=4:PROCcls:PROCstatus:PROCdraw 100 ?dead=0:?fin=0:?dir=3:?frame=0:A%=0:X%=?sx:Y%=?sy:CALLgs%:A%=?dir+?frame:CALLts%:REPEAT 110 TIME=0:OSCLI"FX19":CALL&7100:REPEATUNTILTIME>5 120 UNTIL?dead=&FF OR ?fin=&FF:A%=0:X%=?sx:Y%=?sy:CALLts%:IF?dead=&FF:PROCsound_fx 130 IF?dead=&FF AND l%=0:GOTO1420 140 IF?dead=&FF:l%=l%-1:A%=lv%:CALLprintscreen:TIME=0:REPEATUNTILTIME>20:PROCstatus:CALLbadset:GOTO100 150 IF?fin=&FF AND las%:PROCcompleted:PROCcls:GOTO80 160 l%=l%+1:FORB%=0TO24*(lv%+1):A%=20:CALLad%:SOUND1,-15,255,0.1:TIME=0:REPEATUNTILTIME>1:NEXT:lv%=lv%+1:A%=60:CALLcls%:TIME=0:REPEATUNTILTIME>40:PROCcls:PROCstatus:PROCdraw:GOTO100 170 DEFPROCcls:A%=0:CALLcls%:ENDPROC 180 DEFPROCstatus:IFl%<5:n%=l%:ELSE n%=4 190 Y%=18:A%=46:X%=0:CALLts%:A%=4:FORX%=4 TO (n%*5)+4 STEP 5:CALLts%:NEXT:A%=2:CALLts%:A%=45:X%=52:CALLts%:CALLup%:X%=34:A%=47:CALLts%:?lev%=lv%?lt:CALLsp%:ENDPROC 200 DEFPROCdraw:IFlv%=11:las%=TRUE:A%=lv%:CALLprintscreen:ELSE las%=FALSE:A%=lv%:CALLprintscreen 210 RESTORE(lv%*60)+710 220 FORL%=0TO19:READv%:L%?baddata=v%:NEXT:CALLbadset:ENDPROC 230 DEFPROCsound_fx 240 IF ?how=0:FORB%=100TO120STEP2:SOUND1,-15,B%,0.009:NEXT:FORB%=120TO100STEP-2:SOUND1,-15,B%,0.009:NEXT 250 IF ?how=1:FORB%=50TO60:FORC%=1TO3:SOUNDC%,-15,B%,0.002:NEXT:NEXT 260 IF ?how=2:FORB%=100TO150STEP2:SOUND1,-15,B%,0.009:NEXT 270 IF ?how=3:SOUND0,-15,4,3:A%=8:X%=?sx:Y%=?sy:CALLts%:TIME=0:REPEAT UNTILTIME>70:A%=0:CALLts% 280 ENDPROC 290 DEFPROCassemble 300 FOR opt%=0 TO 2 STEP 2 310 P%=&759E 320 [OPT opt% 330 .printscreen 340 TAX 350 LDA screenlo,X 360 STA &62 370 LDA screenhi,X 380 STA &63 390 \ 400 LDX#0 410 LDY#0 420 .printloop 430 STX&60 440 STY&61 450 LDY#0 460 LDA(&62),Y 470 LDX&60 480 LDY&61 490 JSR ts% 500 LDA&62 510 CLC 520 ADC#1 530 BCC notcarry 540 INC&63 550 .notcarry 560 STA&62 570 LDX&60:LDY&61:INX:INX:INX:INX:CPX#80:BEQ moreinc 580 JMP printloop 590 .moreinc 600 INY:INY:LDX#0:CPY#18:BNE printloop 610 LDY#0:LDA(&62),Y:STAsx 620 INY:LDA(&62),Y:STAsy:INY 630 RTS 640 .screenlo:]:P%=P%+12:[OPTopt%:.screenhi:]:P%=P%+12:NEXT:FORl%=0TO11:l%?screenlo=(&767B+(l%*203)) MOD 256:l%?screenhi=(&767B+(l%*203)) DIV 256:NEXT 650 ENDPROC 660 DEFPROCdemos 670 A%=0:CALLcls%:A%=RND(12)-1:CALLprintscreen:FORA%=52TO55:Y%=6:X%=(A%-52)*4+32:CALLts%:NEXT:FORA%=56TO59:Y%=8:X%=(A%-56)*4+32:CALLts%:NEXT 680 COLOUR5:A%=33:X%=36:Y%=13:CALLts%:A%=34:X%=40:CALLts%:PRINTTAB(5,11)"WRITTEN BY":*FX15 690 A=INKEY(500):IFA=32:ENDPROC:ELSE GOTO670 700 : 710 DATA 0,0,0,0 720 DATA 0,0,0,0 730 DATA 0,0,0,0 740 DATA 90,90,90,90 750 DATA 0,0,0,0 760 : 770 DATA 2,0,0,0 780 DATA 24,0,0,0 790 DATA 60,0,0,0 800 DATA 24,99,99,99 810 DATA 0,0,0,0 820 : 830 DATA 1,2,0,0 840 DATA 8,0,0,0 850 DATA 56,56,0,0 860 DATA 56,8,90,90 870 DATA 8,4,0,0 880 : 890 DATA 0,0,0,0 900 DATA 0,0,0,0 910 DATA 0,0,0,0 920 DATA 90,90,90,90 930 DATA 0,0,0,0 940 : 950 DATA 2,2,0,0 960 DATA 34,42,0,0 970 DATA 42,52,0,0 980 DATA 34,42,90,90 990 DATA 10,4,0,0 1000 : 1010 DATA 2,1,0,0 1020 DATA 0,44,0,0 1030 DATA 16,60,0,0 1040 DATA 12,50,90,90 1050 DATA 14,4,0,0 1060 : 1070 DATA 2,2,0,0 1080 DATA 24,28,0,0 1090 DATA 32,48,0,0 1100 DATA 24,28,90,90 1110 DATA 12,4,0,0 1120 : 1130 DATA 1,1,1,0 1140 DATA 20,28,28,0 1150 DATA 56,48,48,0 1160 DATA 40,32,36,90 1170 DATA 5,2,8,0 1180 : 1190 DATA 1,1,0,0 1200 DATA 20,2,0,0 1210 DATA 44,10,0,0 1220 DATA 30,10,90,90 1230 DATA 0,6,0,0 1240 : 1250 DATA 2,2,2,0 1260 DATA 64,10,10,0 1270 DATA 76,66,54,0 1280 DATA 70,20,20,90 1290 DATA 12,6,2,0 1300 : 1310 DATA 1,1,1,0 1320 DATA 6,28,20,76 1330 DATA 24,40,52,62 1340 DATA 40,40,52,90 1350 DATA 14,12,0,4 1360 : 1370 DATA 1,1,1,0 1380 DATA 2,66,42,0 1390 DATA 14,76,54,0 1400 DATA 6,70,50,90 1410 DATA 12,2,4,0 1420 : 1430 REM gameover 1440 : 1450 A%=2:FORX%=0TO79STEP4:Y%=18:CALLts%:NEXT:FORA%=19TO22:X%=32+((A%-19)*4):Y%=9:CALLts%:NEXT:*FX15 1 1460 COLOUR6:TIME=0:REPEATUNTILTIME>100:PROCcls:PRINTTAB(5,8)"CONTINUE??"TAB(5,13)"Hit Shift!":FORA%=44TO35STEP-1:X%=39:Y%=10:CALLts%:TIME=0:REPEATUNTILTIME>20 1470 IF INKEY(-1):A%=0 1480 NEXT 1490 IF A%<20:l%=4:PROCcls:PROCstatus:PROCdraw:GOTO100 1500 PROCcls:GOTO80 1510 : 1520 DEFPROCcompleted:*FX15 1 1530 A%=3:CALLcls%:A%=12:CALLcls%:A%=48:CALLcls%:PROCcls 1540 FORA%=52TO55:Y%=6:X%=(A%-52)*4+32:CALLts%:NEXT:FORA%=56TO59:Y%=8:X%=(A%-56)*4+32:CALLts%:NEXT 1550 PROCcycle("CONGRATULATIONS!",2,4) 1560 PROCcycle("YOU'VE DONE",5,11) 1570 PROCcycle("IT..",9,13) 1580 PROCcls:PROCcycle("YOU JUST",6,4):PROCcycle("SAVED THE WORLD!",2,6):PROCcyc("THANK YOU!",5,13) 1590 PROCcls:PROCcycle("CREDITS",0,0):PROCcyc("program ANDY NIBBS",0,2):PROCcyc("(alias SWIG)",8,4):PROCcyc("graphics STEVE PICK",0,7):PROCcyc("(alias SIP)",8,9) 1600 PROCcycle("MANY THANKS TO",0,11) 1610 PROCcyc("paul nibbs,",2,13) 1620 PROCcyc("wurble the gerbil",2,15) 1630 PROCcyc("& Thank YOU!",2,17) 1640 PROCcycle("YOU!",10,17) 1650 PROCabout_deluxe:ENDPROC 1660 DEFPROCcycle(A$,X%,Y%):FORB%=11TO9STEP-1:COLOURB%:PRINTTAB(X%,Y%)A$:TIME=0:REPEATUNTILTIME>20:NEXT:ENDPROC 1670 DEFPROCcyc(A$,X%,Y%):FORB%=9TO11:COLOURB%:PRINTTAB(X%,Y%)A$:TIME=0:REPEATUNTILTIME>20:NEXT:ENDPROC 1680 DEFPROCabout_deluxe 1690 PROCcls:PROCcycle("MasterDisk Magazine",0,0):PROCcyc("for the Master only",0,3):PROCcyc("available for `1.50",0,5):PROCcyc("(`2.00 Xmas issue)",0,7):PROCcyc("Games,reviews,utils",0,9):PROCcyc("applications+more",0,11) 1700 TIME=0:REPEATUNTILTIME>100:PROCcls:PROCcycle("SEND A CHEQUE TO",0,0):PROCcycle("ANDREW NIBBS AT",0,2):PROCcyc("Andy Nibbs",4,5):PROCcyc("2 Seaview",4,7):PROCcyc("Hoylake",4,9):PROCcyc("L47 2DD",4,11):TIME=0:REPEATUNTILTIME>300 1710 PROCcls:ENDPROC 1720 : 1730 DEFPROCerror 1740 IFERR=17:ENDPROC 1750 *TV 1760 VDU22,7:REPORT:PRINT" at line ";ERL 1770 END