10 ' Escape from Stingy's Castle
20 ' By Paul Robson 30 ' 40 ON ERROR GOTO 1580 50 MODE 1:FOR f=0 TO 3:INK f,0:NEXT:BORDER 0 60 GOSUB 1590:GOSUB 1270:pr=&A7F8:q=&A85F:DEFINT r,s 70 MODE 0:PAPER 0:CLS:INK 1,0:LOCATE 5,7:PEN 1:PRINT"PLEASE PRESS":LOCATE 8,10:PRINT i$"1"i$" or "i$"2"i$ 80 LOCATE 6,16:PEN 2:PRINT"1.JOYSTICK":LOCATE 6,19:PRINT"2.KEYBOARD" 90 INK 0,15:INK 1,0:INK 2,26:BORDER 15 100 IF INKEY(64)=0 THEN up=72:do=73:ri=75:le=74:fi=76:GOTO 110 ELSE IF INKEY(65)=0 THEN up=0:do=2:ri=1:le=8:fi=9:GOTO 110 ELSE 100 110 RESTORE:rm=50:rg=5:c=1:me=13:me2=0 120 pb2=0:CALL &A823:IF rm=70 THEN 860 130 srm=0:IF rm=66 THEN srm=66:rm=54 ELSE IF rm=67 THEN srm=67:rm=52 ELSE IF rm=68 THEN srm=68:rm=50 140 IF rm=65 THEN PEN 13:CALL &A86F 150 PEN 1:CALL &A583,rm:nxt=0:pb=0:gs=0:ss=0 160 IF srm<>0 THEN rm=srm 170 READ n:IF n=-1 THEN READ s:IF s=rm THEN 190 180 GOTO 170 190 READ h,v,h2,v2,d 200 CALL &8057,h2,v2,2 210 ERASE nr:DIM nr(15):x=1 220 READ n:IF n=0 THEN 250 230 READ o,p:nr(x)=n:nr(x+1)=o:nr(x+2)=p:PRINT tr$:CALL pr,n,o,247,10:PRINT op$ 240 x=x+3:GOTO 220 250 READ n:IF n=0 THEN 270 260 READ o:PRINT tr$:CALL pr,n,o,243,8:PRINT op$:GOTO 250 270 READ n:IF n=0 THEN 290 280 READ o:LOCATE n,o:PEN 6:PRINT b$:GOTO 270 290 IF rm=50 THEN FOR i=4 TO 17:PRINT tr$:CALL pr,i,10,243,8:PRINT op$:NEXT:LOCATE 11,10:PRINT" ":LOCATE 11,11:PRINT" " 300 IF rm=59 THEN LOCATE 11,14:PEN 13:PRINT b$ ELSE IF rm=61 THEN LOCATE 3,23:PEN 5:PRINT"*!ALL THE BEST!*" 310 IF rm=62 THEN LOCATE 8,14:PEN 13:PRINT b$ ELSE IF rm=63 THEN LOCATE 8,4:PAPER 1:PEN 3:PRINT CHR$(94)"WAY OUT ":PAPER 0:ss=1 320 IF rm=64 THEN LOCATE 7,13:PEN 10:PRINT"SORRY!" ELSE IF rm=67 THEN LOCATE 16,21:PEN 1:PRINT CHR$(94) 330 IF rm=68 THEN FOR i=20 TO 21:LOCATE 4,i:PEN 1:PRINT STRING$(13,b$);:PEN 13:PRINT b$:NEXT:LOCATE 4,22:PEN 13:PRINT"*DO NOT ERASE*":LOCATE 4,23:PRINT"SIGNED-SCROOGE" 340 LOCATE 1,3:PEN 12:PRINT STRING$(me,b$):LOCATE 1,3:PEN 7:PAPER 12 350 FOR j=1 TO me:PRINT MID$(m$,j,1);:NEXT:PAPER 0 360 WINDOW#1,1,20,1,2:PAPER #1,0:PEN #1,1 370 PRINT#1,i$"P"i$"LACE BLOCK";:GOSUB 1250 380 c=c+1:IF c=6 THEN c=7 ELSE IF c=15 THEN c=1 390 POKE q,c:POKE q+14,c:POKE q+15,c:CALL &A841 400 EVERY 10 GOSUB 1000 410 IF pb AND NOT pb2 OR nxt THEN 560 420 CALL &8057,h,v,1 430 IF ss=1 AND h2=14 AND v2=12 THEN FOR del=1 TO 40:NEXT 440 IF INKEY(27)=0 AND pb=0 THEN 1080 450 IF d=1 THEN t=-20:t2=424 ELSE IF d=2 THEN t=-20:t2=378 ELSE IF d=3 THEN t=12:t2=408 ELSE IF d=4 THEN t=-42:t2=408 460 t3=TEST((h*32)+t,t2-(v*16)) 470 IF t3=6 THEN GOSUB 1020:GOTO 450 480 IF t3=1 THEN 550 490 CALL &8057,h,v,0 500 v=v-(2 AND d=1)+(2 AND d=2):h=h-(d=3)+(d=4) 510 IF t3=10 THEN 1190 520 IF t3=0 THEN 560 530 IF t3=4 OR t3=5 THEN x=h2:y=v2:e=4:GOTO 940 540 IF t3=8 OR t3=9 THEN x=h:y=v:e=8:GOTO 940 550 IF d=2 THEN d=1:GOTO 450 ELSE IF d=1 THEN d=2:GOTO 450 ELSE IF d=3 THEN d=4:GOTO 450 ELSE IF d=4 THEN d=3:GOTO 450 560 IF INKEY(fi)=0 THEN rg=11-rg:CALL &8057,h2,v2,0:sw=1:GOTO 770 570 IF TEST((h2*32)-16,392-(v2*16))=0 THEN x=h:y=v:e=4:GOTO 940 580 IF rg=6 THEN 800 590 IF INKEY(up)=0 THEN dir=-20:dir2=424:GOTO 670 600 IF INKEY(do)=0 THEN dir=-20:dir2=378:GOTO 670 610 IF INKEY(ri)=0 THEN dir=12:dir2=408:GOTO 670 620 IF INKEY(le)=0 THEN dir=-52:dir2=408:GOTO 670 630 IF INKEY(67)=0 THEN 110 640 IF me=0 THEN x=h:y=v:GOTO 940 650 IF gs THEN 1100 660 GOTO 410 670 t6=TEST((h2*32)+dir,dir2-(v2*16)) 680 IF rm=68 AND h2=4 AND v2=22 THEN PRINT TR$:CALL pr,18,8,247,10:PRINT op$ 690 IF t6=1 OR t6=6 OR t6=10 THEN 800 700 CALL &8057,h2,v2,0 710 h2=h2-(dir=12)+(dir=-52) 720 v2=v2-(2 AND dir2=424)+(2 AND dir2=378) 730 CALL &8057,h2,v2,2 740 IF t6=8 OR t6=9 THEN x=h2:y=v2:e=8:GOTO 940 750 IF t6=2 OR t6=3 THEN x=h:y=v:e=4:GOTO 940 760 GOTO 800 770 IF rg=6 THEN 790 780 CALL &8057,h2,v2,2:GOTO 800 790 LOCATE h2,v2:PEN 6:PRINT CHR$(242):LOCATE h2,v2+1:PRINT b$ 800 IF sw=1 THEN sw=0:FOR del=1 TO 100:NEXT 810 sw=0 820 IF gs THEN 1100 830 IF h2=h AND v2=v AND nxt THEN 120 840 IF nxt=1 THEN FOR del=1 TO 50:NEXT:GOTO 560 ELSE 410 850 ' win 860 z=REMAIN(0) 870 MODE 0:POKE &A85F,1:FOR i=1 TO 250:POKE &C000+(RND*&4000),128:NEXT 880 FOR f=18 TO 24:LOCATE 1,f:PEN 1:PRINT STRING$(20,143);:NEXT 890 FOR i=1 TO 50:r=RND*16+2:s=RND*14+2:CALL &8057,r,s,1:NEXT 900 LOCATE 6,23:PEN 3:PAPER 1:PRINT"THANK YOU!":CALL &A841:RESTORE 1560:FOR j=1 TO 28:READ no,du:SOUND 1,no,du*10,15,2:NEXT 910 LOCATE 4,19:PRINT"ANOTHER GAME?":LOCATE 6,20:PRINT i$"Y"i$"ES or "i$"N"i$"O" 920 IF INKEY(43)=0 THEN RUN ELSE IF INKEY(46)=0 THEN CLS:STOP ELSE 920 930 ' dead 940 z=REMAIN(0) 950 IF nxt=0 THEN CALL &8057,h,v,1 960 SOUND 1,20,0,1,1:SOUND 1,10,0,1,1,1 970 IF me=0 THEN 990 980 j=(x*32)-32:k=382-(y*16):FOR i=1 TO 250:PLOT j+(RND*20+5),k+(RND*20+5),RND*1+e:NEXT 990 SOUND 1,500,0,15,,1,1:CLS:FOR del=1 TO 2000:NEXT:GOTO 110 1000 DI:IF me2>99 THEN LOCATE me,3:PRINT op$;" ":me2=0:me=me-1:IF me=0 THEN RETURN 1010 me2=me2+1:PLOT (me*32-32)+(RND*30),352+(RND*14),0:EI:RETURN 1020 IF rm=66 AND d=3 THEN FOR i=16 TO 23:LOCATE 11,i:PEN 1:PRINT b$:NEXT 1030 r=RND*1+1 1040 IF d>2 THEN d=r:RETURN 1050 IF r=1 THEN d=4 ELSE d=3 1060 RETURN 1070 ' place block 1080 CLS#1:PRINT#1," <FIRE> WHEN READY" 1090 h3=h2:v3=v2:gs=1:pb=1 1100 WHILE INKEY(fi)<>0:GOTO 560:WEND 1110 CLS#1:PEN#1,1:PRINT#1," "i$"S"i$"NOWBALL or ";:PEN#1,6:PRINT#1,i$"J"i$"ELLY?" 1120 IF INKEY(60)=0 THEN b=1:GOTO 1130 ELSE IF INKEY(45)=0 THEN b=6:GOTO 1130 ELSE 1120 1130 LOCATE h2,v2:PEN b:PRINT CHR$(242) 1140 LOCATE h2,v2+1:IF b=1 THEN PRINT CHR$(243) ELSE PRINT b$ 1150 h2=h3:v2=v3:gs=0:CLS#1:GOSUB 1250 1160 IF rm=60 THEN LOCATE 12,22:PEN 6:PRINT b$ 1170 pb2=1:GOTO 730 1180 ' next room 1190 SOUND 1,50,15,5,1,1:GOSUB 1250:GOSUB 1260 1200 IF ga THEN ga=0:RETURN 1210 IF rm=68 THEN rm=70:nxt=1:GOTO 560 1220 x=1 1230 IF h=nr(x) AND v=nr(x+1) THEN rm=nr(x+2):nxt=1:CLS#1:GOSUB 1250:GOTO 560 1240 x=x+3:GOTO 1230 1250 LOCATE #1,17,1:PEN#1,1:PRINT #1,i$"Q"i$"UIT":RETURN 1260 CALL &8057,h,v,0:RETURN 1270 tr$=CHR$(22)+CHR$(1):op$=CHR$(22)+CHR$(0):i$=CHR$(24):b$=CHR$(143) 1280 m$="MELTOMETER":DIM nr(15) 1290 a=102:b=126:d=129:f=255 1300 SYMBOL 242,0,24,60,b,b,b,f,f:SYMBOL 243,f,f,b,b,b,60,24,0 1310 SYMBOL 244,42,93,189,191,b,b,f,f:SYMBOL 245,b,b,b,60,24,0,0,0 1320 SYMBOL 246,0,0,16,0,32,8,34,f:SYMBOL 247,f,165,165,a,a,60,60,a 1330 SYMBOL 248,0,0,b,b,b,b,b,b:SYMBOL 249,b,b,b,b,b,b,0,0 1340 SYMBOL 250,f,f,d,d,d,d,d,133:SYMBOL 251,133,d,d,d,d,d,f,f 1350 ENV 1,100,-2,2:ENT 1,50,5,1:ENV 2,15,-1,15 1360 RETURN 1370 DATA -1,50,4,8,4,22,3,18,16,51,0,17,14,17,18,10,20,10,22,10,12,10,14,10,18,11,22,0,0 1380 DATA -1,51,3,17,2,17,3,13,9,52,17,13,53,13,23,54,0,12,11,14,15,12,15,12,19,16,15,12,21,0,0 1390 DATA -1,52,18,15,18,17,1,1,11,55,0,16,13,7,17,0,0 1400 DATA -1,53,6,7,5,7,3,0,0,0 1410 DATA -1,54,13,8,13,6,2,8,8,56,0,13,22,9,20,11,16,9,12,9,6,0,0 1420 DATA -1,55,14,15,15,15,4,0,9,13,0,0 1430 DATA -1,56,16,7,17,7,4,3,7,57,8,23,59,16,23,61,0,6,9,6,15,7,21,4,9,17,15,11,9,11,15,11,21,0,0 1440 DATA -1,57,13,8,14,8,4,8,22,58,0,0,7,8,0 1450 DATA -1,58,9,19,9,17,2,0,7,9,0,9,23,6,21,0 1460 DATA -1,59,11,8,11,6,2,6,18,60,0,7,22,0,11,10,16,14,17,8,0 1470 DATA -1,60,17,8,18,8,4,8,16,62,0,10,10,0,11,8,0 1480 DATA -1,61,10,10,10,8,2,0,0,10,22,0 1490 DATA -1,62,17,16,18,16,4,6,10,63,0,5,12,4,16,7,12,5,14,0,0 1500 DATA -1,63,19,20,19,22,1,7,4,64,3,22,65,0,2,8,17,12,12,16,2,20,12,12,15,12,16,12,17,4,19,4,13,8,0,3,12,10,10,5,17,19,17,16,18,17,24,4,22,9,16,0 1510 DATA -1,64,10,18,10,20,1,0,0,10,15,0 1520 DATA -1,65,2,7,2,5,2,1,9,58,16,23,66,0,4,5,19,7,10,15,17,21,18,19,6,7,3,21,0,0 1530 DATA -1,66,9,8,9,6,2,14,6,67,0,0,9,24,14,22,13,5,0 1540 DATA -1,67,3,9,2,9,3,20,15,50,16,19,68,0,2,11,9,17,14,13,0,0 1550 DATA -1,68,10,8,10,6,2,0,0,0 1560 DATA 53,7,63,6,60,1.5,53,1.5,40,5,42,1,40,1,36,3,40,3,42,3,47,3,53,7 1570 DATA 42,1,40,1,36,3,40,3,42,3,47,3,53,3,40,3,63,3,53,1,47,1,53,3,60,3,63,3,71,3,80,7 1580 MODE 1:INK 0,0:INK 1,26:PEN 1:PRINT CHR$(7);"Error in line";ERL:END 1590 IF PEEK(250)=255 THEN RETURN 1600 INK 1,26:LOCATE 13,12:PRINT"PLEASE WAIT...." 1610 MEMORY &7FFF:RESTORE 1720:ln=1720 1620 FOR adr=&8032 TO &847F STEP 13 1630 READ byte$:chk=0 1640 FOR i=0 TO 12 1650 v=VAL("&"+MID$(byte$,i*2+1,2)) 1660 POKE adr+i,v:chk=chk+v 1670 NEXT 1680 IF chk<>VAL("&"+RIGHT$(byte$,3)) THEN INK 1,26:PEN 1:PRINT"ERROR IN LINE";ln:STOP 1690 ln=ln+10:NEXT 1700 MODE 0:CALL &8032 1710 POKE 250,255:RETURN 1720 DATA 2100c01150000619dd210080dd3bc 1730 DATA 7500dd7401dd23dd231910f321504 1740 DATA 77811183a5012003edb0c9cd7e606 1750 DATA 800602c5d50608c5d5eda0eda06e4 1760 DATA eda0eda0d13e088257c110eed179a 1770 DATA e521500019ebe1c110dfc9dd6e6ff 1780 DATA 00260029292929292911ac8019272 1790 DATA e5dd6e02dd5e04cd9a80d1ebc97dd 1800 DATA 1d2dcb2526804e23466b2600cb3f3 1810 DATA 25cb2509c900000000000000001e7 1820 DATA 00000000000000000000000000000 1830 DATA 00000000000000000000000000000 1840 DATA 00000000000000000000000000000 1850 DATA 00000000000000000000000000000 1860 DATA 0000000000cccc8800cccc8800440 1870 DATA cccc8844cccccc44cccccc000c77c 1880 DATA 0c08040c0c0c048c0c8c040c8c200 1890 DATA 0c040c8c0c040c8c0c040c0c0c184 1900 DATA cc4ccc0ccccc0c0ccc8c0c080050c 1910 DATA 0008000050000000f0a00050b02e8 1920 DATA f000f03070a0f03070a0f0b0f07e0 1930 DATA a050f0f0000050a000b0b03020570 1940 DATA 70303020b0b0302070303020b0440 1950 DATA b0302070303020b0b030207030440 1960 DATA 30200000000000000000000000050 1970 DATA dd460011b3a5131ab820fb131a4b9 1980 DATA feffc8fefe2008131a67131a6f619 1990 DATA 131a47131a32afa5e5cd75bb3e547 2000 DATA 8fcd5abbe12410f318da32fe0469f 2010 DATA 050e24132c0f25142dff33fe0231d 2020 DATA 090f240f2c1025102dfe020a0f202 2030 DATA 24fe02170f24ff34fe010813243df 2040 DATA 0b2c0f25042d0425082dfe0a0920b 2050 DATA 042cfe0a0f042cff37fe05080b3c3 2060 DATA 240b2c0b250b2dff36fe080506309 2070 DATA 24132c0625132dfe0b060a2cff312 2080 DATA 38fe0e110825062c0225082d01211 2090 DATA 25092d0f24112c0a25fe071208219 2100 DATA 24fe060b0c24fe060c0c24fe093aa 2110 DATA 180a24fe04180424fe041704242c9 2120 DATA ff39fe0f070825102c02240d2d315 2130 DATA 0624032dff3afe08140c2d022530d 2140 DATA 0f2c0424072d0225ff35fe04062fa 2150 DATA 0c240f2c0d25102dfe07090a2c21e 2160 DATA fe080d022cfe09090a2cfe0b09399 2170 DATA 0a2cfe0d09062cfe0d11022cff3c5 2180 DATA 3bfe0a050224022c0524092c09203 2190 DATA 25082c02250a2d0125032d0524136 2200 DATA 062dfe0b0a0524fe0b0b0524fe3aa 2210 DATA 080e0924fe080f0924ff3cfe093c7 2220 DATA 050424022c0624032c06250c2c117 2230 DATA 0525042d0124022cfe0906012c1e8 2240 DATA 0125082c0124022dfe0b080c2c1f7 2250 DATA ff3dfe090702240c2c0824052c305 2260 DATA 1125052d07240c2dfe03161024217 2270 DATA ff3efe040a0c24052c0324032c300 2280 DATA 0f25082dfe050b0b24fe070e082c1 2290 DATA 24fe070f0824ff3ffe110303243db 2300 DATA 162c1125fe0117132d1024fe04304 2310 DATA 080624092c0625072cfe0409071d7 2320 DATA 24fe04100724fe020c0724fe02398 2330 DATA 0d0724fe02050f24fe0b0a07242ae 2340 DATA fe0b0b0724fe06150a24052d042bc 2350 DATA 24fe06140924032dfe111103242e0 2360 DATA fe04181024fe1214042cfe02163b8 2370 DATA 0224fe02170224ff40fe060b073b8 2380 DATA 240b2c07250b2dfe070f0624ff2fc 2390 DATA 41fe01041324142c1325142dfe332 2400 DATA 02171224fe0305022cfe030909296 2410 DATA 2c0c24052d0424fe04110b24fe2f6 2420 DATA 100e0324fe050e052d0f24fe062bf 2430 DATA 0a0e24fe070d0424042cfe070e2b9 2440 DATA 0524fe0d0b042cfe11110324fe3b4 2450 DATA 11120324ffdd5602dd7e0006023e1 2460 DATA f5cd90bbdd6606dd6e04e5cd757cc 2470 DATA bb7a3ccd5abb3c57e12ccd75bb6f0 2480 DATA 7acd5abbf13c10dec9cd14bc016de 2490 DATA 0000afcd32bc010000cd38bc06432 2500 DATA 10c578010000cd32bcc110f5c9598 2510 DATA 215fa8aff5464823e5cd32bce16fe 2520 DATA f13cfe10280218ef3a5fa8474853c 2530 DATA cd38bcc9011a1a001a06120f06306 2540 DATA 000f00181a00002105030612c5147 2550 DATA e5cd75bb06113e8fcd5abb10fb6b3 2560 DATA e12cc110edc900000000000000394 |