100 REM ************************* 110 REM * INTERPLANETARY RESCUE * 120 REM ************************* 130 REM 99'ER VERSION 1.4.1.XB 140 REM BY W.K. BALTHROP 150 REM 160 REM 170 CALL CLEAR 180 GOSUB 190 :: GOTO 320 190 CALL CHAR(96,"81423C3C3C3C4281") 200 CALL CHAR(62,"FF818199998181FF") 210 CALL CHAR(99,"026C9E1C24422401") 220 CALL CHAR(100,"00CC86C300107C20") 230 CALL CHAR(33,"FFFFFFFFFFFFFFFF") 240 CALL CHAR(94,"00") 250 CALL CHAR(95,"FFFFFFFFFFFFFFFF") 260 CALL CHAR(42,"FFFFFFFFFFFFFFFF") 270 CALL CHAR(63,"FFFFFFFFFFFFFFFF") 280 CALL CHAR(98,"183C3C7E7E7E66C3") 290 CALL CHAR(104,"5A5A5A185A") 300 CALL COLOR(1,4,1):: CALL COLOR(2,5,1) 310 RETURN 320 CALL SCREEN(16) 330 V=0 :: V1=0 :: V2=0 :: S=5000 :: F=0 :: H=0 :: D=0 :: T=0 340 TRIP=0 :: TIME=0 :: D1=0 :: D2=0 :: D3=25 :: D4=41 :: FF=0 350 GOSUB 1570 360 REM MAIN CONTROL LOOP 370 GOSUB 790 :: VOL=ABS((600000-F)/20000):: IF VOL>30 THEN VOL=30 ELSE IF VOL<0 THEN VOL=0 380 IF F>1 THEN CALL SOUND(-3000,110,VOL,220,VOL,110,VOL,-5,VOL) 390 CALL POSITION(#1,XC,YC):: CALL GCHAR(ABS((XC+4)/8+.5),ABS((YC+4)/8+.5),CC) 400 IF CC=94 AND H<2000 OR CC=95 AND H<4000 OR CC=42 AND H<6000 OR CC=63 AND H<8000 THEN 1100 410 IF TRIP=0 AND H>0 THEN TRIP=1 420 IF H=0 AND TRIP=1 THEN 1290 430 IF TRIP=2 AND H>0 THEN TRIP=3 440 IF TRIP=3 AND H=0 THEN 1470 450 TIME=TIME+1 :: IF H<=0 THEN V=0 :: V1=0 460 GOTO 370 470 DATA "^^!!!^^______*_^^^!!!^^__" 480 DATA "^!!!!^^__*_***____^!!!^^_" 490 DATA "^!!!!!^_***____**_^^^!!^_" 500 DATA "^!!>!!^^_****_****_^^!!^^" 510 DATA "!!!!!!^___*__**___^^^!^^^" 520 DATA "!!!!!!!^^_^^^_*__^^!!^___" 530 DATA "^^!!!!!!^^^^__*_^^!!^__**" 540 DATA "^^^!^^!^___^__*__^^!^_**?" 550 DATA "_^^^^^^^__*^_^_*__^!^_*??" 560 DATA "*__^^^^^_**^^^**___^^__*?" 570 DATA "?*_^__^_***^^??**__^^^__*" 580 DATA "?*^^_____**__??**__^_^^__" 590 DATA "???^^^___****^^^^_^^^^!^_" 600 DATA "???_^^__*******_^!^^^!!^_" 610 DATA "??*_^_****???**^!!^_^!!^^" 620 DATA "___^^__***???*_^!^_^^!!!!" 630 DATA "___^^^___**?*_^^!^_^!!!!!" 640 DATA "___^^_^___**__^!!!!!!>!!^" 650 DATA "__^__*___^_*_^!!^^^!!!!!^" 660 DATA "____^^^^__*_^^!!^^_^^^!^_" 670 DATA "______^^^__*_^^^^_*___^_*" 680 RETURN 690 DISPLAY AT(22,1):"ALT" 700 DISPLAY AT(23,1):"HVEL" 710 DISPLAY AT(24,1):"VVEL" 720 DISPLAY AT(22,15):"TIME" 730 DISPLAY AT(23,15):"FUEL" 740 DISPLAY AT(24,15):"PWR" 750 CALL VCHAR(6,30,63,4):: CALL VCHAR(10,30,42,4):: CALL VCHAR(14,30,95,4) 760 CALL VCHAR(18,30,94,4):: CALL HCHAR(22,28,33,3) 770 CALL SPRITE(#2,98,2,160,222,#1,96,2,D3,D4) 780 RETURN 790 CALL KEY(1,K1,S1):: CALL KEY(2,K2,S2):: IF S1=0 AND S2=0 THEN 920 800 IF S1=0 THEN 860 810 IF K1=5 THEN D1=D1-1 :: E=E-50 :: GOTO 860 820 IF K1=0 THEN D1=D1+1 :: E=E-50 :: GOTO 860 830 IF K1=2 THEN D2=D2-1 :: E=E-50 :: GOTO 860 840 IF K1=3 THEN D2=D2+1 :: E=E-50 :: GOTO 860 850 IF K1=11 THEN F=TOFF 860 IF K2=3 THEN F=F-5000 :: GOTO 920 870 IF K2=12 THEN F=F-10000 :: GOTO 920 880 IF K2=2 THEN F=F-1000 :: GOTO 920 890 IF K2=5 THEN F=F+1000 :: GOTO 920 900 IF K2=6 THEN F=F+5000 :: GOTO 920 910 IF K2=11 THEN F=F+10000 920 IF E<=0 THEN E=0 :: F=0 930 IF F<0 THEN F=0 940 IF F=0 THEN CALL PATTERN(#3,32)ELSE CALL PATTERN(#3,104) 950 V2=F/(S+E)-G :: V=V+V2 :: DV=V :: IF V<0 AND H<=0 THEN DV=0 960 D=(V1+(V2/2)):: V1=V :: H=H+D :: E=E-(ABS(F/2000)) 970 IF H<=0 THEN H=0 980 IF H>9935 THEN 1000 990 CALL LOCATE(#2,160-(H/(500/8)),222,#3,168-(H/(500/8)),222) 1000 D3=D3+D1 :: IF D3<1 THEN D3=1 ELSE IF D3>160 THEN D3=160 1010 D4=D4+D2 :: IF D4<17 THEN D4=17 ELSE IF D4>208 THEN D4=208 1020 CALL LOCATE(#1,D3,D4) 1030 DISPLAY AT(22,5)SIZE(6):H 1040 DISPLAY AT(22,20)SIZE(5):TIME 1050 DISPLAY AT(23,5)SIZE(5):SQR(D1^2+D2^2)*62.5 1060 DISPLAY AT(23,20)SIZE(6):E 1070 DISPLAY AT(24,5)SIZE(5):DV 1080 DISPLAY AT(24,20)SIZE(7):F/1000 1090 RETURN 1100 CALL HCHAR(22,1,32,96):: GOSUB 1160 1110 CALL CHARSET :: DISPLAY AT(22,3):"YOU CRASHED INTO THE HILL." 1120 IF TRIP=1 AND TIME<250 THEN FF=-22*(1000-TIME)ELSE FF=FF-5000 1130 DISPLAY AT(23,3):"ALTITUDE=";H 1140 DISPLAY AT(24,3):"VELOCITY=";V 1150 GOTO 1190 1160 FOR REP=1 TO 5 :: CALL SOUND(300,110,0,110,0,110,0,-8,0):: CALL PATTERN(#1,99) 1170 CALL SOUND(400,110,0,110,0,220,0,-4,0):: CALL PATTERN(#1,100):: NEXT REP 1180 CALL CLEAR :: CALL DELSPRITE(ALL):: CALL CHARSET :: RETURN 1190 FOR TD=1 TO 500 1200 NEXT TD 1210 CALL CLEAR :: DISPLAY AT(20,3):"WISH TO PLAY AGAIN?(Y/N)" 1220 DISPLAY AT(10,3):"YOUR SCORE IS:";(1000-TIME)+E+FF+(OPT1*OPT2*1000) 1230 ACCEPT AT(23,3)BEEP:ANS$ 1240 IF ANS$="N" THEN 1260 ELSE IF ANS$<>"Y" THEN 1230 1250 CALL CLEAR :: GOTO 170 1260 STOP 1270 CALL HCHAR(22,1,32,96) 1280 IF XC<>137 AND YC<>185 THEN GOSUB 1160 :: DISPLAY AT(22,1):"YOU MISSED THE PAD.":"YOUR SHIP HAS CRASHED." 1290 IF V>-30 THEN 1330 ELSE GOSUB 1160 :: DISPLAY AT(22,1):"YOU BLEW IT. YOU LEFT A" 1300 DISPLAY AT(23,1):"CRATER A MILE WIDE." 1310 DISPLAY AT(24,1):"VELOCITY=";V 1320 GOTO 1190 1330 IF V>-20 THEN 1370 ELSE GOSUB 1160 :: DISPLAY AT(22,1):"A BAD LANDING-TWO CREWMEN" 1340 DISPLAY AT(23,1):"ARE DEAD, AND YOU ARE HURT." 1350 DISPLAY AT(24,1):"VELOCITY=";V 1360 GOTO 1190 1370 IF V>-10 THEN 1410 ELSE GOSUB 1160 :: DISPLAY AT(22,1):"YOUR SHIP IS BADLY DAMAGED." 1380 DISPLAY AT(23,1):"THIS IS YOUR LAST FLIGHT." 1390 DISPLAY AT(24,1):"VELOCITY=";V 1400 FF=FF-3000 :: GOTO 1190 1410 IF V>-6 THEN 1430 ELSE CALL CLEAR :: CALL CHARSET :: DISPLAY AT(22,1):"A ROUGH LANDING. YOU HAVE" 1420 DISPLAY AT(23,1):"LOST 1/2 OF YOUR FUEL." :: E=E/2 :: FF=2000 :: GOTO 1450 1430 CALL CLEAR :: CALL CHARSET :: DISPLAY AT(22,1):"A PERFECT LANDING. YOU ARE" 1440 DISPLAY AT(23,1):"IN GOOD SHAPE TO RETURN." :: FF=3000 1450 DISPLAY AT(24,1):"VELOCITY=";V :: FOR TD=1 TO 500 1460 NEXT TD :: F=0 :: TRIP=2 :: GOSUB 190 :: GOSUB 1660 :: GOTO 370 1470 CALL DELSPRITE(#1,#2,#3) 1480 CALL CLEAR 1490 CALL CHARSET :: IF V<=-10 THEN 1270 ELSE CALL HCHAR(22,1,32,96) 1500 IF V>-6 THEN 1530 ELSE IF D3<>25 OR D4<>41 THEN 1270 1510 DISPLAY AT(22,1):"A ROUGH LANDING. YOUR SHIP BARELY MADE IT." 1520 FF=FF+4000 :: GOTO 1550 1530 DISPLAY AT(22,1):"CONGRATULATIONS, A PERFECT" 1540 DISPLAY AT(23,1):"LANDING. EARTH IS PROUD." 1550 DISPLAT AT(24,1):"VELOCITY=";V :: FOR TD=1 TO 2000 1560 NEXT TD :: GOTO 1190 1570 CALL CLEAR :: GOSUB 2360 :: CALL CLEAR :: DISPLAY AT(1,7):"PLANET OPTIONS" 1580 DISPLAY AT(3,1): :"1. MOON": :"2. MARS": :"3. VENUS" 1590 ACCEPT AT(10,1)VALIDATE("123")SIZE(1):OPT1 :: CALL CLEAR 1600 DISPLAY AT(1,4):"LEVEL OF DIFFICULTY" 1610 DISPLAY AT(3,1): :"1. BEGINNER": :"2. INTERMEDIATE": :"3. NOVICE": :"4. PROFESSIONAL" 1620 ACCEPT AT(12,1)VALIDATE("1234")SIZE(1):OPT2 1630 IF OPT1=1 THEN G=2 :: E=20000 :: TOFF=65000 :: GOTO 1660 1640 IF OPT1=2 THEN G=4 :: E=45000 :: TOFF=230000 :: GOTO 1660 1650 IF OPT1=3 THEN G=6 :: E=80000 :: TOFF=540000 1660 IF OPT2=1 THEN RESTORE 1730 :: GOTO 1700 1670 IF OPT2=2 THEN RESTORE 1940 :: GOTO 1700 1680 IF OPT2=3 THEN RESTORE 470 :: GOTO 1700 1690 IF OPT2=4 THEN RESTORE 2150 1700 CALL CLEAR :: CALL COLOR(8,10,12) 1710 FOR TER=1 TO 21 :: READ TERN$ :: DISPLAY AT(TER,1):TERN$ :: NEXT TER 1720 GOSUB 690 :: RETURN 1730 DATA "!!^^!!!!^^^^^^^^^^_^^^^^^" 1740 DATA "!!!!!!!!!^^^^^^^^___^^^^^" 1750 DATA "!!!!!!!!!^^^^^^^______^^^" 1760 DATA "!!!>!!!!!!^^^^^^^______^^" 1770 DATA "!!!!!!!!!!!!^^^^__**__^^^" 1780 DATA "!!!!!!!!!!!!^^^______^^^^" 1790 DATA "!!!!!!!!!!^^^_^^_____^^^^" 1800 DATA "!!!!!!!!!!^^^__^___^^^^^^" 1810 DATA "^!!!!!!!!^^^^^_^^^^^^^^^^" 1820 DATA "^^!!!^^^^^^^^^^^__^^^^!^^" 1830 DATA "^^^!^^^^^^^^_^^____^^!!^^" 1840 DATA "^^^^^^^^_^_________^!!!!^" 1850 DATA "^^^^^^^_________^^^^!!!!!" 1860 DATA "^^^^^^^____**___^^^^!!!!!" 1870 DATA "^^^^^^^________^^^^^!!!!!" 1880 DATA "^^_^^^^^__^___^^^^^^!!!!!" 1890 DATA "____^__^^_^^_^^^^^^!!!!!!" 1900 DATA "_______^^^^^^^^^^^!!!>!!!" 1910 DATA "_*_____^^__^^^^^^!!!!!!!!" 1920 DATA "****________^^^^!!!!!!!!!" 1930 DATA "*??**_______^^^^^!!!!!!!!" 1940 DATA "!!!!!!!!!!!!!!!^^^^^^^^^^" 1950 DATA "!!!!!!!!!^^!!!^^^^^__^^^^" 1960 DATA "!!!!!!!^^!!!!!^^^^___^^^^" 1970 DATA "!!!>!^^^^!!!^^^^^^___^^^^" 1980 DATA "^^!!!^^^^!!^^^^^____^^___" 1990 DATA "^^!!!^__^^!^^^^___*______" 2000 DATA "^^^^^^_^^^!!^^^__**____^^" 2010 DATA "^^^^^^^^^!!!^^____*___^^^" 2020 DATA "^^^^__^^!!^^_______^^^^^^" 2030 DATA "_^^____^^^^____^_^^^^^^^^" 2040 DATA "*___**_^^^____^^^^^!!!^^^" 2050 DATA "*_^__**__^^___^!!!!!^^^^^" 2060 DATA "_^^^__*___^___^^!!!!^^^^^" 2070 DATA "^^^^^____^^**__^!!!!^^^^^" 2080 DATA "^^^^^^___^*____^!^!^^^^^^" 2090 DATA "^^^^^____^*__^^!!!!!!!^^^" 2100 DATA "^^^^^____**__^!!!^^!!!!!^" 2110 DATA "^^^^^^^_____^^^!^^^!!>!!^" 2120 DATA "^^^^^^^^^^^^^^^^^^^^!!!^^" 2130 DATA "^^^^^^^^^!^^^^^^^^^^^^^^^" 2140 DATA "^^^^^^^^!!!^^^^^^^^^^^^^^" 2150 DATA "_______________******??**" 2160 DATA "*^^^^^__^^___^__****????*" 2170 DATA "*^!!!^___^__^^___**?????*" 2180 DATA "_^!>!^___^_^^^____*?????*" 2190 DATA "_^!!!^^^^^^^^__*****????*" 2200 DATA "_^^^^^___^___***???**??**" 2210 DATA "_**____**____***????*****" 2220 DATA "*********_**_**??????**??" 2230 DATA "**??**____**_*???????????" 2240 DATA "*????*_*****_*???????**??" 2250 DATA "??****_*????*????????*???" 2260 DATA "??*____**???*???????**??*" 2270 DATA "***_****????**??????**?**" 2280 DATA "**__*????????????********" 2290 DATA "**_*??****????****_***___" 2300 DATA "**___!*??*????**___*^^^^_" 2310 DATA "****_**?**????___^_^!!!^_" 2320 DATA "****????*?????_??^^^!>!^_" 2330 DATA "***?????**??***???_^!!!^_" 2340 DATA "*????????*?**?????*____**" 2350 DATA "***??????***??????*******" 2360 DISPLAY AT(11,2):"*************************" 2370 DISPLAY AT(12,2):"* INTERPLANETARY RESCUE *" 2380 DISPLAY AT(13,2):"*************************" 2390 CALL SOUND(-4250,110,7,220,7,110,7,-5,7) 2400 DISPLAY AT(24,1):"PRESS ANY KEY TO BEGIN" 2410 CALL SPRITE(#2,98,2,180,125,-3,0,#3,104,9,188,125,-3,0) 2420 CALL KEY(0,KEY,STAT):: IF STAT=0 THEN CALL SOUND(-1000,110,7,220,7,110,7,-5,7):: GOTO 2420 2430 CALL DELSPRITE(#2,#3):: RETURN