Temple of Apshai (DM Program)(ATASCII Listing).Txt
10 CLR :READ U1,U2,U3,U4,U5,U6,U7,U8,U10,U14,LS,Q,HUN,MSTR:DATA 1,2,3,4,5,6,7,8,10,14,26,60,100,7000 12 DIM TM(U5),ZA(U3),ZD(U5),A$(24),C$(U1),O$(18),S(U4),P(U4),RF(U3),RN(U3),S$(11),BL$( LS) 13 POKE 1586,U0:FOR I=U0 TO U3:RF(I)=U0:RN(I)=U0:NEXT I:X=USR(1580,53248,U8) 14 BL$=" ------":FOR I=U1 TO U5:READ J:TM(I)=J:NEXT I:DATA 10,13,2,1,1 16 KA=103*256:NO=KA:NT=U4*Q+KA:D1=U8*Q+KA:D2=12*Q+KA:MT=(U14+U2)*Q+KA:MN=MT+Q:NP=M N+Q:XP=NP+Q:YP=XP+Q:TR=YP+Q 18 XR=TR+Q:YR=XR+Q:KB=KA+2251:Y2=KA+1800:X=USR(1580,KA-Q,Q) 20 ZD(U0)=U3:ZA(U1)=U0:ZD(U1)=U0:ZA(U2)=U3:ZD(U2)=U3:ZA(U3)=-U6:ZD(U3)=- U2:ZD(U4)=U5:ZD(U5)=U5:GOTO 5000 25 DATA FLAME ,DUST ,MOLD ,PIT ,,SPEAR ,NEEDLE ,XBOW ,CAVEIN ,CEILING , 50 PC=PC-U1:POKE KB+U10+U14,PEEK(KB+U10+U14)-U1:POKE KA-92,PEEK(KA-92)- U1:RETURN 55 YY=W1-W2-U5:IF YM>YY THEN YM=YY:GOTO 57 56 IF YMXX THEN XM=XX:RETURN 58 IF XMARROW";:IF J>U1 THEN ? "S"; 62 RETURN 65 SOUND U0,255,U8,U14:FOR I=20 TO U0 STEP -U1:POKE 712,I:NEXT I:SOUND U0,U0,U0,U0:RETURN 70 GOSUB 500:IF L=U0 OR C$<"0" OR C$>"9" THEN 70 71 J=ASC(C$)-48:? C$;:RETURN 72 POSITION 33,14:? PEEK(KB+13);" ";:RETURN 74 POSITION 35,U14+U1:? PEEK(KB+U14);" ";:RETURN 80 X=USR(1580,KA-Q,Q):RETURN 82 FOR I=U0 TO U3:RN(I)=U0:IF RF(I)>U0 THEN POKE NT+KR+I*Q,U3:POKE KA- 61+KR,U0:RN(I)=U1:RF(I)=U0 84 NEXT I:I=KF+U1:IF I>U3 THEN I=I-U4 85 IF RN(KF-U1)>U0 THEN RF(I)=U1 86 RETURN 90 POSITION LS,U4:? "ROOM NO.:";KR;" ":POSITION LS,U5:? "WOUNDS:";INT(HUN*PC/PH);"% ":POSITION LS,U6:? "FATIGUE:"; 91 ? INT(TA);"% ":POSITION LS,U7:? "WGT:";WC;" LBS":POSITION LS,U1:? BL$:POSITION LS,U14:? "ARROWS:";PEEK(KB+13) 92 POSITION LS,U14+U1:? "MAGIC AR:";PEEK(KB+U14):POSITION LS,U14+U2:? "TOTAL SLAIN:":POSITION LS,U14+U3:? KC 93 POSITION LS,U0:? BL$;A$:RETURN 95 GOSUB 345:GOSUB 82:NB=U0:IN=U0:KR=PEEK(NO+L):GOSUB 800:IB=U2:IF KR=U0 THEN 10000 97 GOTO 5285 100 COLOR U0 101 L1=YY:L2=YY+L-U2:IF L146 THEN L2=46 103 IF L1>46 THEN L1=46 104 IF L1=L2 OR L246 OR XXU0 THEN PLOT I/U2+U2,L1/U2:DRAWTO I/U2+U2,L2/U2:GOTO 115 113 I=I/U2+U2:J=L1/U2:L=(L2-L1)/U2+U1 114 X=USR(ADR(" ©0…Þ© …ß ±Þ…àÈ±Þ…á ±à…Ôȱà…Õ¥Ú¨É ð ©( eÔ…Ô æÕˆÐò¥Ø¨¥Üª±ÔÉ Ð − Ò) @‘Ô©( eÔ…Ô æÕÊÐã`"),I,J,L) 115 COLOR 32:PLOT 28,20:RETURN 120 COLOR 32:GOTO 101 140 COLOR U0 141 L1=XX:L2=XX+L-U2:IK=YY:IF L146 THEN L1=46 143 IF L2>46 THEN L2=46 144 IF L246 THEN RETURN 145 IF PEEK(200)<>U0 THEN PLOT L1/U2+U2,IK/U2:DRAWTO L2/U2+U2,IK/U2:GOTO 149 146 J=L1/U2+U1:L2=L2/U2:I=IK/U2:L=L2-J+1.6:IF ABS(J-L2)K=29168+(U14+U2)*KF:L=29720+(YB-YA)*U4 210 X=USR(1580,29696,255):POKE 53248,J:X=USR(1564,K,L,U14+U2):RETURN 250 RETURN 300 J=(XM-XB+V1+U1)*U2+52:K=31536+16*MQ-256*(I/U2=INT(I/U2)):L=29976+(YB-YM- W2)*U4:POKE 705,PEEK(31488+MQ) 302 X=USR(1580,29952,255):POKE 53249,J:X=USR(1564,K,L,U14+U2):RETURN 345 IF NB=U0 THEN RETURN 350 POKE 1586,U0:X=USR(1580,29952,255):RETURN 450 RETURN 500 POKE 764,255:CLOSE #U1:OPEN #U1,U4,U0,"K":FOR I=U1 TO U4*SE/(U1+U7*NB):IF NB THEN GOSUB 300:GOTO 510 505 FOR L5=U1 TO U10:NEXT L5 510 IF PEEK(764)<>255 THEN GET #U1,A:C$=CHR$(A):L=U1:RETURN 520 NEXT I:L=U0:RETURN 600 IF K=U0 THEN FOR I=U0 TO 16 STEP U2:SOUND U0,U5,U8,U8-ABS(U8-I):NEXT I 605 KF=U2:IF SGN(XL-XM)=U1 THEN KF=U4 610 IF K=U0 THEN XA=XA-SGN(XL-XM):YA=YA-SGN(YL-YM):KF=KF+U4:GOSUB 200:KF=KF- U4:XA=XA+SGN(XL-XM):YA=YA+SGN(YL-YM) 620 RETURN 650 PH=PEEK(KB+24):TA=TA-(ABS(M)/U4*(HUN/PH+U5- U5*PC/PH)*(U1+WC/(AS*AS*HUN)*U3)/U2)+11:IF TA>HUN THEN TA=HUN 660 POSITION 34,U6:? INT(TA);"%þ";:RETURN 670 Y=YB-PEEK(YP+KR)-W2:X=PEEK(XP+KR)+V1-XB:FOR L=U1 TO U10:I=X:IK=Y:IF I47 OR IK47 THEN RETURN 672 SOUND U0,85,U10,U10:COLOR 43:PLOT I/U2+U2,IK/U2:SOUND U0,U0,U0,U0:COLOR U2^U5:PLOT I/U2+U2,IK/U2:NEXT L:RETURN 679 IF PEEK(TR+KR)=U0 THEN RETURN 680 IF ABS(V2-V1-PEEK(XR+KR))=U3 THEN POKE XP+KR,PEEK(XP+KR)-U3 682 I=(V1+PEEK(XR+KR)-XB):YY=YB-W2-PEEK(YR+KR):IK=YY:IF YYU0 OR N=U0 OR ABS(XL-PEEK(XP+KR))>U3 OR ABS(YL-PEEK(YP+KR))>U3 OR RND(U0)>PEEK(Y2+140+N)/HUN THEN RETURN 700 POSITION LS,U2:RESTORE 25:FOR I=U0 TO (PEEK(Y2+150+N)):READ A$:NEXT I:? A$;"TRAP";:GOSUB 65:GOSUB 65 702 IF PEEK(Y2+120+N)<=U0 THEN 710 704 I=PEEK(Y2+120+N):NB=U1:GOSUB 4830:XM=PEEK(XP+KR):YM=PEEK(YP+KR):POSITION LS,U0:? A$;:GOTO 720 710 IF PEEK(Y2+130+N)>U0 THEN ML=PEEK(Y2+130+N):L=U1:MD=U2*ML 720 POKE NP+KR,U0:RETURN 800 LL=KR:GOTO 850 840 LL=LR 850 V3=PEEK(YR+Q+LL)+128*PEEK(YR+Q+Q+LL):V4=PEEK(YR+180+LL)+128*PEEK(YR+180+Q+LL) 852 W3=PEEK(YR+300+LL)+128*PEEK(YR+300+Q+LL):W4=PEEK(Y2+LL)+128*PEEK(Y2+Q+LL):IF LL<>KR THEN RETURN 860 V1=V3:V2=V4:W1=W3:W2=W4:RETURN 880 K=U0:FOR LL=U1 TO MQ:L=PEEK(K+KA+2121):K=K+L+U1:NEXT LL:K=K-L-U1:A$=" " 882 FOR LL=U1 TO L:A$(LL,LL)=CHR$(PEEK(K+KA+2121+LL)):NEXT LL:IF LL<=13 THEN RETURN 884 FOR I=U1 TO L:IF A$(I,I)<>" " THEN NEXT I 886 I=I-U1:S$=A$(I+U2):A$(I+U1)=" ":FOR I=I+U2 TO U2*I-U2:A$(I,I)="-":NEXT I:A$(I-U1)=S$:RETURN 1200 XA=PEEK(KA+2236):YA=PEEK(KA+2237):KF=PEEK(KA+2238):PW=PEEK(KA+2235) 1202 EX=PEEK(KB+U3)*65536+PEEK(KB+U2)*256+PEEK(KB+U1):FOR I=61 TO 80:POKE KA- I,U0:NEXT I 1210 PH=PEEK(KB+24):PC=PH:PB=PEEK(KB+18):PA=PEEK(KB+19):PS=PEEK(KB):AA=PEEK(KB+U8):T A=HUN 1212 AS=PEEK(KB+23)/U10:WM=PEEK(KB+U7):SE=PEEK(KB+U10- U1):WC=PEEK(KB+U10+U2):SM=PEEK(KB+U10):RETURN 3000 IF PEEK(KA+LR-61)=U1 THEN RETURN 3002 GOSUB 840:XX=V4-XB-U2:IF V3-XB>-U1 AND V4-XB<49 AND YB-W3>-U1 AND YB-W4<49 THEN POKE KA+LR-61,U1 3008 FOR K=U1 TO U3 STEP U2:NN=LR+K*Q:YY=YB-W3:IF NS=K THEN 3014 3009 I1=U3:L=W3-W4:IF PEEK(D2+NN)-PEEK(D1+NN)+U4=L THEN 3014 3010 GOSUB HUN:I1=U5-U2*PEEK(NT+NN) 3012 IF I1>=U0 AND I1=0 AND I1<2 THEN XX=V3-XB+PEEK(D1+NN):L=(PEEK(D2+NN)- PEEK(D1+NN)):COLOR 32-28*(PEEK(NN+NT)=2):GOSUB 141 3034 YY=YB-W4-U2:NEXT K:RETURN 4000 POKE 53248,U0:LR=KR:GOSUB 800:IF PEEK(KA+KR-61)=U1 THEN 4010 4001 GOSUB 80:POSITION LS,U10+U2:? BL$ 4002 XB=V1:YB=W1:IF PEEK(NT+LR+U3*Q)=U1 THEN XB=XB-(48-V2+V1)/U2:IF PEEK(NT+LR+Q)=U1 THEN XB=XB+(V1-XB)/U2 4003 IF PEEK(NT+LR)=U1 THEN YB=YB+48-W1+W2:IF PEEK(NT+LR+U2*Q)=U1 THEN YB=YB- (YB-W1)/U2 4004 XL=XA-V1:YL=YA-W2:IF PEEK(MT+KR)>U0 AND PEEK(MN+KR)>U0 THEN GOSUB 4500:NB=U1:GOTO 4010 4005 GOSUB 4800 4010 IF NB>U0 THEN GOSUB 300 4020 NS=U5:IF IB=U3 THEN 4050 4030 X=USR(ADR("h©0…Þ© …ß ±Þ…àÈ±Þ…á ±à…Øȱà…Ù¢# © ‘؈Ðû ¥Øi(…Ø îæÙÊÐé`")) 4032 FOR IR=U0 TO U3:I=KR+IR*Q:IF PEEK(NT+I)=U1 AND PEEK(NO+I)>U0 THEN LR=PEEK(NO+I):GOSUB 3000 4040 NEXT IR 4050 LR=KR:GOSUB 3000:GOSUB 200:GOSUB 679:GOSUB 90:RETURN 4500 MQ=PEEK(MT+KR):ML=PEEK(Y2+200+MQ):MA=PEEK(Y2+212+MQ):MP=PEEK(Y2+224+MQ):MS=PEEK (Y2+308+MQ) 4502 MD=PEEK(Y2+248+MQ):MH=PEEK(Y2+260+MQ):GOSUB 880 4520 XM=(V2-V1-U8-U1)*RND(U0)+U5:YM=(W1-W2-U8-U1)*RND(U0)+U5 4550 MF=U3*RND(U0)+U1:RETURN 4800 L=99*RND(U0)+U1:IF L>PW THEN NB=U0:A$="":RETURN 4810 L=99*RND(U0)+U1:J=U0:NB=U1:FOR I=U1 TO U10+U2:J=J+PEEK(Y2+296+I):IF L<=J THEN 4830 4820 NEXT I 4830 POKE MT+KR,I:POKE MN+KR,U1:MQ=I:ML=PEEK(Y2+200+I):MA=PEEK(Y2+212+I):MP=PEEK(Y2+224+I) 4832 MS=PEEK(Y2+308+I):MD=PEEK(Y2+248+I):MH=PEEK(Y2+260+I):GOSUB 880:GOSUB 4520:RETURN 4850 L=99*RND(U0)+U1:IF L47 AND ASC(C$)<58 THEN 5100 5047 FOR I=U1 TO U10+U8:IF C$<>O$(I,I) THEN 5050 5048 ON I GOTO 5300,5350,5390,5390,5390,5390,5390,5800,5700,5370,5900,6100,6200,6300,6140,5850 ,5600,8000 5050 NEXT I:GOTO 5044 5100 IF TAW1-U4 THEN M=W1-U4-YA:IB=U1 5150 GOTO 5281 5164 M=-M:M1=M:IF YA+MV2-U4 THEN M=V2-U4-XA:IB=U1 5240 GOTO 5281 5250 M=-M:M1=M:IF XA+MU0 THEN GOTO MSTR 5279 GOTO 7020 5281 IF IB=U0 THEN 5290 5282 XL=XA-V1:YL=YA-W2:IF PEEK(NT+KR+KF*Q-Q)<>U1 THEN 5290 5283 L=KR+KF*Q-Q:IF P(KF)>PEEK(D1+L) AND P(KF)-U1 AND V2-XB<49 AND YB-W1>-U1 AND YB-W2<49 THEN IB=U3:S(U1)=W1- W2:S(U2)=V2-V1:GOTO 5290 5286 IF KF=U1 THEN YA=W2+U4:GOTO 5030 5287 IF KF=U3 THEN YA=W1-U4:GOTO 5030 5288 XA=V2-U4:IF KF=U2 THEN XA=V1+U4 5289 GOTO 5030 5290 IF IB=U3 THEN M=M+U6*SGN(M1) 5291 IF M=U0 THEN 5295 5292 FOR I=U1 TO ABS(M):XA=XA+SGN(M)*(KF<>U1 AND KF<>U3):IF KF=U1 OR KF=U3 THEN YA=YA+SGN(M) 5293 SOUND U0,HUN,U10,U10:SOUND U0,U0,U0,U0 5294 KF=KF+12*(I/U2=INT(I/U2)):GOSUB 200:KF=KF-12*(I/U2=INT(I/U2)):NEXT I:GOSUB 200 5295 IF PEEK(KA-86)>U0 THEN M=M/U2 5296 P(U1)=XA-V1:P(U3)=P(U1):P(U2)=YA-W2:P(U4)=P(U2):P(U0)=P(U2) 5297 IF IB=U3 THEN LR=KR:GOSUB 4004:IB=U0:GOTO 5044 5298 XL=XA-V1:YL=YA-W2:GOSUB 695:IF L>U0 THEN GOSUB 650:GOTO 7020 5299 GOTO MSTR 5300 KF=KF+U1:IF KF>U4 THEN KF=U1 5310 GOSUB 200:GOTO 5044 5350 KF=KF-U1:IF KFU5 OR ABS(YL-YM)>U5 THEN ? "TOO FAR AWAY";:GOTO MSTR 5430 M=TM(IA):K=U0:GOSUB 600:P=PB-(PEEK(KB+22)-9)/U3*EXP(-U2*PC/PH)+ML/U3- ZA(IA):R=19*RND(U0)+U1 5432 IF RWM THEN AK=WM 5437 IF AKU2 OR (PEEK(KB+U10)>U0 AND IAPEEK(D1+K) AND P(KF)U3 THEN NS=NS-U4 5607 POKE NT+LR+NS*Q,U1:NS=U5:GOSUB 3000:GOTO MSTR 5620 XX=V2-XB-U2 5630 COLOR U5+59*(IJ=U0)-32*(RF(KF-U1)=U1 AND IJ=U0) 5632 I1=U3+IJ:YY=YB-W2-PEEK(D2+K):L=PEEK(D2+K)-PEEK(D1+K):GOSUB 101:RETURN 5640 XX=V1-XB:GOTO 5630 5660 YY=YB-W1 5670 COLOR U4+Q*(IJ=U0)-32*(RF(KF-U1)=U1 AND IJ=U0) 5672 I1=U1+IJ/U2:XX=V1-XB+PEEK(D1+K):L=(PEEK(D2+K)-PEEK(D1+K)):GOSUB 141:RETURN 5680 YY=YB-W2-U2:GOTO 5670 5700 K=KR+(KF-U1)*Q:IF PEEK(K+NT)=U3 AND 39*RND(U0)+U1<20+PEEK(KB+21) THEN POKE K+NT,U2:RF(KF-U1)=U1:GOTO 5710 5702 POSITION LS,U10:? "NOTHING":GOTO MSTR 5710 POSITION LS,U10:? "A SECRET DOOR";:IJ=-U2:LR=KR:ON KF GOSUB 5660,5620,5680,5640 5720 FOR J=U10 TO U0 STEP -U1:SOUND U0,J,U10,J:SOUND U1,U2*J,U10,U6:SOUND U2,J+U4,U10,J:SOUND U3,U10-J,U10,J+U4 5730 NEXT J:SOUND U3,U0,U0,U0:GOTO MSTR 5800 N=PEEK(TR+KR):POSITION LS,U10 5801 IF N=U0 OR ABS(XL-PEEK(XR+KR))>U3 OR ABS(YL-PEEK(YR+KR))>U3 THEN ? "YOU CAN'T";:GOTO MSTR 5802 POKE TR+KR,U0:POSITION LS,U10:? "TREASURE #";N;:POKE KA+N-81,PEEK(KA+N- 81)+U1 5803 WC=WC+PEEK(Y2+160+N):POSITION LS,U7:? "WGT:";WC;" LBS ":IN=U0 5804 GOSUB 680:I=PEEK(Y2+180+N):IF I>HUN THEN J=KB+I-81:POKE J,PEEK(J)+U1:J=KA+I-197:POKE J,PEEK(J)+U1:GOTO MSTR 5805 ON I+U1 GOTO MSTR,5810,5815,5820,5825,5830,5835,5806,5840,5845,5846,12000 5806 POKE KA-89,U1:GOTO MSTR 5810 J=INT(U5*RND(U0)+U1):POSITION LS,11:? J;" ITEM";:IF J>U1 THEN ? "S"; 5812 POKE KB+U6,PEEK(KB+U6)+J:GOTO MSTR 5815 PS=U4:GOTO MSTR 5820 POSITION LS,11:? "USE SWORD?";:GOSUB 500:IF L=U0 THEN 5820 5821 ? C$;:IF C$="Y" THEN PB=PB+SM:SM=U3*RND(U0)+U3*RND(U0)-U2:PB=PB- SM:WM=AS*(U7+SM)+0.5:IF SM<=U0 THEN 5823 5822 IF C$="Y" THEN SM=SM-INT(U2-PEEK(KA)/U2):IF SM>U1 THEN POSITION LS,11:? BL$;"IT GLOWS"; 5823 IF C$<>"Y" THEN POKE KA+N-81,PEEK(KA+N-81)-U1:WC=WC-PEEK(Y2+160+N) 5824 POSITION LS,U1:? BL$:GOTO MSTR 5825 J=19*RND(U0)+U1:GOSUB Q:POKE KB+13,PEEK(KB+13)+J:GOSUB 72:GOTO MSTR 5830 J=9*RND(U0)+U1:GOSUB Q:POKE KB+14,PEEK(KB+14)+J:GOSUB 74:GOTO MSTR 5835 POKE KA-90,U1:PA=PA+U1:GOTO MSTR 5840 POKE KA-88,U1:GOTO MSTR 5845 POKE KA-87,U1:GOTO MSTR 5846 PW=75:POKE KA+2235,PW:GOTO MSTR 5850 POSITION LS,U10:? "DROP WHAT?"; 5860 GOSUB 70:JJ=U10*J:GOSUB 70:JJ=JJ+J:IF JJ<21 THEN I=PEEK(KA+JJ-81):IF I>U0 THEN POKE KA+JJ-81,I-U1:GOTO 5864 5862 GOTO 5870 5864 WC=WC-PEEK(Y2+160+JJ):POSITION LS,U7:? "WGT:";WC;" LBS " 5866 IF PEEK(TR+KR)=U0 AND PEEK(Y2+180+JJ)=U0 THEN POKE TR+KR,JJ 5868 POKE XR+KR,XL:POKE YR+KR,YL:GOSUB 680 5869 SOUND U0,250,12,14:SOUND U1,U5,HUN,U5:FOR I=U1 TO U2:NEXT I:SOUND U0,U0,U0,U0:SOUND U1,U0,U0,U0 5870 POSITION LS,U0:? BL$:GOTO MSTR 5900 IF 99*RND(U0)+U1<0.3*(PEEK(KB+20)+PEEK(KB+22))*PEEK(Y2+284+MQ) THEN IN=U1:GOTO 5910 5902 GOTO MSTR 5910 POSITION LS,U10:? "PASS BY";:GOTO MSTR 6100 IF PEEK(KB+11)>U0 THEN POKE KB+11,PEEK(KB+11)-U1:J=U0:GOTO 6110 6102 GOTO 6150 6110 PC=PC+U1+J:IF PC>PH THEN PC=PH 6130 POSITION 33,U5:? INT(HUN*PC/PH);"% ";:GOTO MSTR 6140 I=KB+U6:IF PEEK(I)>U0 THEN POKE I,PEEK(I)-U1:J=U5*RND(U0)+U2:GOTO 6110 6150 POSITION LS,U10:? "NONE LEFT";:GOTO 5044 6200 JJ=PEEK(KB+21):POSITION LS,U0:? BL$:I=PEEK(NO+KR+Q*KF-Q) 6202 IF I=U0 OR PEEK(MN+I)=U0 OR 1000*RND(U0)>JJ*JJ+PEEK(KA-89)*700 THEN POSITION LS,U10:? "NOTHING";:GOTO MSTR 6210 J=MQ:MQ=PEEK(MT+I):C$=A$:GOSUB 880:POSITION LS,U10:? BL$;A$;:MQ=J:A$=C$:GOTO MSTR 6300 IF PEEK(NP+KR)>U0 AND 19*RND(U0)+U1U0 THEN 7005 7001 GOSUB 4850:IF NB=U0 THEN 5044 7002 POSITION LS,U10:? BL$;A$:POSITION LS,11:? "APPEARS":GOSUB 300:POSITION LS,U0:? A$:GOTO 5044 7005 IF IN>U0 THEN 7500 7010 IF ABS(X0-XM)>U5 OR ABS(Y0-YM)>U5 THEN 7300 7015 IM=MA 7017 IM=IM-U1:IF IMPEEK(KB+21)/U2+PEEK(KA-81) AND PEEK(KA-88)=U0 THEN 7038 7036 GOTO 7040 7038 GOSUB 50:POSITION LS,U10+U1:? "A CHILL"; 7040 K=K+INT((MD*(R-P))/U10-AA-PEEK(KB+16)):IF KU0 THEN 7017 7062 GOTO 5044 7250 IF NB=U0 THEN 5044 7252 XO=XM:YO=YM:L=U2:ON U3*RND(U0)+U1 GOTO 7260,7270,7280,7290 7260 YM=YM+L:GOTO 7490 7270 XM=XM+L:GOTO 7490 7280 YM=YM-L:GOTO 7490 7290 XM=XM-L:GOTO 7490 7300 XX=XL-XM:YY=YL-YM:IF ABS(XX)U0 THEN MF=U2 7304 GOTO 7310 7306 MF=U3:IF YY>U0 THEN MF=U1 7310 XO=XM:YO=YM:L=MS:ON MF GOTO 7320,7360,7400,7440 7320 IF YM+L>YL-U3 THEN YM=YL-U3:GOTO 7330 7322 YM=YM+L 7330 GOTO 7490 7360 IF XM+L>XL-U3 THEN XM=XL-U3:GOTO 7370 7362 XM=XM+L 7370 GOTO 7490 7400 IF YM-LU0 THEN GOSUB 350:GOSUB 450:EX=EX+20*ML*ML+15:KC=KC+U1:POSITION LS,11:? "MONSTER ";:GOTO 7503 7502 GOTO 7510 7503 ? "SLAIN":POSITION LS,17:? KC:M=PEEK(MN+KR):IF M>U0 THEN POKE MN+KR,M- U1:IF M>U1 THEN GOSUB 4500:GOTO 7505 7504 GOTO 7510 7505 POSITION LS,U10:? BL$;"AND ANOTHER":POSITION LS,U10+U1:? BL$;"APPEARS";:GOSUB 300 7510 IF MP255 THEN L6=U1:POKE 764,255 8020 NEXT L6:NEXT L5:GOTO MSTR 9000 ? "?";:POKE 764,255:CLOSE #U1:OPEN #U1,U4,U0,"K" 9010 GET #U1,A:C$=CHR$(A):IF C$<>"Y" AND C$<>"N" THEN 9010 9020 YEA=U0:IF C$="N" THEN ? "Nay":RETURN 9030 YEA=U1:? "Yea":RETURN 9500 POKE 53248,U0:POKE 53249,U0:GRAPHICS U0:POKE 709,U0:POKE 710,30:POKE 712,30:POKE 756,112:RETURN 10000 GOSUB 9500:? "Thou leavest the Dunjon" 10002 POKE 764,255:? :? "Experience:";EX:? :? "Dost wish to reenter";:GOSUB 9000:IF NOT YEA THEN 10006 10004 WC=PEEK(KB+12):KR=U1:PC=PH:XA=PEEK(KA+2236):YA=PEEK(KA+2237):KF=PEEK(KA+2238):T A=HUN:GOSUB 80:GOTO 5020 10006 A$="D:LEVEL":? :? "Dost wish to save the Dunjon";:GOSUB 9000:IF NOT YEA THEN 10018 10012 TRAP 10012:? :? "What level wouldst call it";:INPUT I:A$(U8)=STR$(I) 10013 ? "Insert disk on which to save Dunjon, and hit ";:INPUT C$:TRAP 10015:CLOSE #U1:OPEN #U1,U4,U0,A$ 10014 ? :? A$;" already exists.":? "Art thou sure thou wouldst change it";:GOSUB 9000:IF NOT YEA THEN 10006 10015 TRAP 10020:? "Saving ";A$:POKE 881,U0:CLOSE #U3:OPEN #U3,U8,U0,A$ 10016 POKE 884,U0:POKE 885,120:POKE 888,U1:POKE 889,U4:POKE 882,11:I=USR(ADR("hhhªLVä"),48):POKE 884,U0 10017 POKE 885,KA/256:POKE 888,193:POKE 889,U8:POKE 882,11:I=USR(ADR("hhhªLVä"),48):CLOSE #3:? "Level Saved!" 10018 J=INT(EX/256):POKE KB+U1,EX-J*256:JJ=INT(J/256):POKE KB+U2,J-JJ*256:POKE KB+U3,JJ:IF SMU1 THEN FOR I=U2 TO LEN(S$):IF S$(I,I)<>" " THEN S$(I,I)=CHR$(ASC(S$(I))-32):NEXT I 11014 TRAP 11016:A$="D:":A$(U3)=S$:CLOSE #U1:XIO 33,#U1,U0,U0,A$ 11016 RUN "D:INN" 11020 ? "Benedic the Cleric found Thee":GOTO 10002 11030 ? "Lowenthal the Mage found Thee":FOR I=81 TO 90:POKE KA-I,U0:NEXT I:GOTO 10002 11040 ? "Olias the Dwarf found Thee":FOR I=61 TO 90:POKE KA-I,U0:NEXT I:SM=U0:POKE KB+U10,U0:POKE KB+16,U0 11042 POKE KB+14,U0:POKE KB+U6,U0:GOTO 10002 20000 ? :? "Wouldst Thou save Thy character beforereturning to the Inn";:GOSUB 9000:IF NOT YEA THEN 10050 20001 ? :? "Insert disk on which to save Characterand hit ";:INPUT C$ 20002 GOSUB 20005:GOTO 20010 20005 S$="":FOR I=U0 TO U10:J=PEEK(KB-11+I):IF J>64 AND J<123 THEN S$(LEN(S$)+U1)=CHR$(J):GOTO 20008 20006 S$(LEN(S$)+U1)=" " 20008 NEXT I:RETURN 20010 ? :? "Storing the Adventurer hight ";S$:A$="D:":A$(U3)=S$:CLOSE #U1 20011 IF LEN(A$)>U3 THEN FOR I=U4 TO LEN(A$):A$(I,I)=CHR$(ASC(A$(I))-32):NEXT I:OPEN #U1,U8,U0,A$ 20012 FOR I=61 TO 96:J=PEEK(KA-I):? #U1,J:NEXT I:J=PEEK(KA):? #U1;J:FOR I=U0 TO 37:? #U1;PEEK(KB-12+I):NEXT I 20014 CLOSE #U1:GOTO 10050