10 REM ******************************** 20 REM * CATACOMBS V1.0 * 30 REM * BY CLEVE BLAKEMORE * 40 REM ******************************** 50 POKE53281,.:POKE53280,.:PRINT"[147]"TAB(14)CHR$(8)CHR$(142)" CATACOMBS " 60 PRINTTAB(6)"[151] PLEASE WAIT...LOADING DATA! ":GOSUB840 70 POKE53272,30:POKE53265,PEEK(53265)OR64 80 PRINT""TAB(15)"SKULL #":PRINTTAB(15)"WIZARD $" 90 PRINTTAB(15)"BAT %":PRINTTAB(15)"SPIRIT &":PRINTTAB(15)"SNAKE '" 100 B=49152:E=53151:V=53248:S=1024:X=10:Y=5:MX=.:MY=.:R=80:SR=40:M=32 110 L=.:EX=239:JY=56321:SO=54272:DEF FNA(B)=Y*SR+X+S:DEF FNB(B)=PEEK(TY*SR+TX+S) 120 DEF FNX(B)=(X-3)*8+28+((X>31)*255):DEFFNE(B)=(X>31)*-1:DEFFNY(X)=Y*8+35 130 DEF FNJ(X)=15-(PEEK(JY)AND15):DEF FNC(X)=B+MX+TX+((MY+TY)*R) 140 DEF FNCX(B)=CX(D)+(CX(D)MX+X)*1 150 DEF FNCY(B)=CY(D)+(CY(D)MY+Y)*1 160 DEF FNK(Q)=PEEK(FNC(.))=M(L) 170 DEFFNCH(B)=(FNB(.)=M+8)*-1+(FNB(.)=M+9)*-2+(FNB(.)=M+13)*-3 180 DEFFNET(B)=TX<1ORTX>38ORTY<2ORTY>23 190 DEF FNM(X)=(B+CX(D)+(CY(D)*R)):DEF FNW(X)=PEEK(FNM(.))<>M:GOSUB640 200 POKEV+27,1:POKEV+39,7:POKEV+23,1:POKEV+29,1:POKEV,FNX(.):POKEV+1,FNY(.) 210 POKE2040,15:POKEV+21,1:POKEV+34,1:POKEV+36,11 220 FORD=SOTOSO+24:POKED,.:NEXT:POKESO,255:POKESO+1,27:POKES0+5,64 230 POKESO+6,128:POKESO+24,10 240 D=.:GOTO280 250 REM JOYSTICK ROUTINE 260 TX=MX+X(J):TY=MY+Y(J):IFTX<0ORTX>41ORTY<0ORTY>25THEN280 270 POKESO+4,33:MX=TX:MY=TY 280 SYS828,MX,MY:POKEFNA(.),. 290 POKESO+4,.:J=FNJ(.):TX=X+X(J):TY=Y+Y(J):IFFNK(.)THEN440 300 IFFNB(.)=MTHEN340 310 ONFNCH(.)GOSUB510,520,530 320 IFFNB(.)=EXANDKTHEN540 330 GOTO390 340 IFFNET(.)THEN260 350 POKESO+4,129:IFX<>TXORY<>TYTHENPOKEFNA(.),M 360 X=TX:Y=TY:POKEFNA(.),.:POKEV+16,FNE(.):POKEV,FNX(.):POKEV+1,FNY(.) 370 POKESO+4,. 380 REM MONSTER MOVEMENT 390 D=D+1+(D=2)*3 400 POKEFNM(.),M:TX=CX(D):TY=CY(D):CX(D)=FNCX(.):IFFNW(.)THENCX(D)=TX 410 CY(D)=FNCY(.):IFFNW(.)THENCY(D)=TY 420 POKEFNM(.),M(L) 430 GOTO280 440 GOSUB610:PRINT"[157]CHOMP";:GOSUB620 450 POKEV+21,.:POKEV+33,. 460 PRINT"[147]"TAB(13)" GOLD = ";G:PRINT" ANOTHER GAME ?[Y OR N]" 470 POKE198,. 480 GETA$:IFA$=""THEN480 490 IFA$="N"THENPOKE679,.:SYS679 500 POKEV+24,21:POKEV+17,PEEK(V+17)AND191:RUN 510 GOSUB610:PRINT"G 50":G=G+50:GOSUB620:RETURN 520 GOSUB610:PRINT" KEY ":K=1:G=G+100:GOSUB620:RETURN 530 GOSUB610:POKEV+33,2:GOSUB620:POKEV+33,.:G=G-(G>49)*-50:RETURN 540 POKEV+21,.:L=L+1:IFL=10THEN450 550 K=.:PRINT"[147]"TAB(4)" PREPARE FOR THE NEXT LEVEL !! " 560 PRINT""TAB(4)" DESCENDING DOWN TO LEVEL";L+1;"[157] " 570 POKESO+4,17:FORD=100TO.STEP-1::FORX=.TO50:NEXT:POKESO+1,D:NEXT:POKESO+1,27 580 POKESO+4,.:G=G+25:PRINTTAB(14)" GOLD = ";G; 590 GOSUB640:MX=.:MY=.:X=10:Y=5:D=.:POKEV,FNX(.):POKEV+1,FNY(.) 600 POKEV+16,FNE(.):POKEV+21,1:GOTO280 610 POKEFNC(.),M:POKEV+21,.:POKE781,Y:POKE782,X-1:POKE783,.:SYS65520:RETURN 620 POKESO+4,17:FORQ=.TO500:NEXT:POKEV+21,1:POKESO+4,.:RETURN 630 REM DUNJON GENERATOR 640 SYS916:POKEV+33,(L<5)*-15:FORQ=192TO204STEP4:POKE648,Q:PRINT"[144][147]":FORD=1TO3 650 FORX=.TO7:IF(2^XANDL(L))THENPRINT"+++++++++++[146] ";SPC(40); 660 PRINT" +++[146] +++[146]"; 670 NEXT:NEXT:NEXT:POKE648,4:POKE53283,L+2:FORA=BTOB+R:POKEA,42+64*3:NEXT 680 FORA=E-RTOE+1:POKEA,42+64*3:NEXT:FORA=BTOESTEPR:POKEA,42+64*3:NEXT 690 POKEB+3+R*3,47+64 700 A=RND(1)*60+8:Q=RND(1)*40+5:IFPEEK(B+A+Q*R)<>MTHEN700 710 POKEB+Q*R+A,EX 720 FORD=1TOL*2 730 A=RND(1)*70+5:Q=RND(1)*40+5:IFPEEK(B+Q*R+A)<>MTHEN730 740 POKEB+Q*R+A,M+8:NEXT 750 FORD=1TOL*2 760 A=RND(1)*70+5:Q=RND(1)*40+5:IFPEEK(B+Q*R+A)<>MTHEN760 770 POKEB+Q*R+A,M+13:NEXT 780 A=RND(1)*70+5:Q=RND(1)*40+5:IFPEEK(B+Q*R+A)<>MTHEN780 790 POKEB+Q*R+A,M+9 800 FORD=.TO2 810 A=RND(1)*70+5:Q=RND(1)*40+5:IFPEEK(B+Q*R+A)<>MTHEN810 820 CX(D)=INT(A):CY(D)=INT(Q):NEXT:RETURN 830 REM REDEFINED CHARACTERS 840 FORX=1TO33:READA:POKE680+X,A:NEXT:POKE56334,PEEK(56334)AND254 850 POKE1,PEEK(1)AND251:SYS681:POKE1,PEEK(1)OR4:POKE56334,PEEK(56334)OR1 860 READA:IFA=-1THEN890 870 FORX=.TO7:READD:POKE14336+A*8+X,D:NEXT:GOTO860 880 REM ML SCROLL ROUTINE 890 DIMX(10),Y(10),CX(2),CY(2),M(9),L(9):FORA=.TO10:READX(A),Y(A):NEXT 900 FORA=828TO914:READB:POKEA,B:NEXT:FORA=.TO63:POKE15*64+A,255:NEXT 910 FORA=.TO9:READL(A):NEXT:FORA=.TO9:READM(A):NEXT:FORX=916TO951:READA:POKEX,A 920 NEXT:RETURN 930 DATA 169,,133,251,133,253,169,208,133,252,169,56,133,254,162,8 940 DATA 160,,177,251,145,253,136,208,249,230,252,230,254,202,208,240,96 950 DATA000,152,152,190,217,024,060,036,195 960 DATA035,126,153,153,153,126,066,090,126 970 DATA036,024,126,024,126,153,060,126,126 980 DATA037,000,036,126,219,129,066,000,000 990 DATA038,031,021,021,014,028,156,248,112 1000 DATA039,060,066,002,028,032,024,004,008 1010 DATA040,000,000,255,129,255,153,129,255 1020 DATA041,062,034,062,008,008,056,008,056 1030 DATA042,255,129,189,165,165,189,129,255 1040 DATA043,249,249,000,159,159,000,249,249 1050 DATA045,000,000,000,000,016,000,000,000 1060 DATA047,129,066,036,024,024,036,066,129,-1 1070 DATA0,0,0,-1,0,1,0,0,-1,0,-1,-1,-1,1,0,0,1,0,1,-1,1,1 1080 DATA 32,155,183,138,24,105,0,133,4,169,192,105,0,133,5,32,155,183,224 1090 DATA 0,240,16,165,4,24,105,80,133,4,165,5,105,0,133,5,202,208,240 1100 DATA 169,0,133,2,169,4,133,3,162,24,160,39,177,4,145,2,136,16,249 1110 DATA 165,2,24,105,40,133,2,165,3,105,0,133,3,165,4,24,105,80,133 1120 DATA 4,165,5,105,0,133,5,202,16,218,96 1130 DATA 201,223,178,245,251,199,143,124,211,255 1140 DATA 35,36,37,38,39,35,36,37,38,39 1150 DATA 169,0,133,251,169,192,133,252,162,20,160,0,169,32,145,251,200 1160 DATA 192,201,208,247,24,169,200,101,251,133,251,144,2,230,252,202 1170 DATA 208,231,96