1 REM Ins{nd av Lennart Einarsson <6554> 1986-05-28 18.28.00 10 REM ======= M]NLANDA.BAS ========== 20 REM 30 REM Ett av dom gammla ABC80 spelen 40 REM 50 REM som fanns till dom f|rsta ABC- 60 REM 70 REM maskinerna som kom ut. <6554> 80 REM 90 REM ======= M]NLANDA.BAS ========== 100 GOSUB 2570 : REM PRESENTATION 110 FOR \=1 TO 4000 : NEXT \ 120 ; CHR$(12);CUR(22,0);"Vill Du ha instruktioner ?"; : GET Q$ : ; Q$ : IF Q$="J" OR Q$="j" THEN GOSUB 2360 130 FOR \=1 TO 3000 : NEXT \ 140 GOSUB 1200 : REM RITA SKALRAMAR 150 Z$="MEN LILLE GUSTAV,JAG SA JU TILL DIG ATT" 160 DIM X$=10 170 G$=CHR$(135) : G1$=CHR$(151) 180 N=26000 190 Q2$=STRING$(15,32)+G1$ 200 L=0 : A=120 : V=.6 : M=32500 : N=16500 : G=.001 : Z=1.8 210 GOSUB 1090 220 ; CUR(19,1);G$"Ange br{nsle:"G1$; 230 ; CUR(20,1);G$"0 eller 8-200"G1$; 240 ; CUR(21,1);G$"(L/S) "+CHR$(151);CUR(21,8); 250 ONERRORGOTO 240 260 INPUT K 270 ; CUR(23,1); 280 IF V>0 THEN ; CUR(6,0);Q2$;CUR(7,0);Q2$;CUR(9,0);Q2$;CUR(10,0);Q2$;CUR(16,0);Q2$; 290 T=10 300 IF K<0 OR K>200 THEN 330 310 IF K>=8 THEN 350 320 IF K=0 THEN 350 330 REM 340 GOTO 240 350 IF (M-N)<.001 THEN 510 360 IF T<.001 THEN 210 370 S=T 380 IF (N+S*K-M)<0 THEN 400 390 S=(M-N)/K 400 GOSUB 990 410 IF I<=0 THEN 870 420 IF V>0 THEN 470 430 ; CUR(6,0);"NU STIGER VI !"G1$;CUR(7,0);""G1$ 440 ; CUR(6,0);"HAR DU ]NGRAT"G1$;CUR(7,0);"DIG ?"G1$;CUR(9,0);"DET VAR N-E-R"G1$;CUR(10,0);"DU SKULLE..."G1$; 450 ; CUR(16,0);"NU STIGER VI JU"G1$;CUR(17,0);""G1$ 460 GOTO 490 470 IF V>.63 THEN ; CUR(6,0);"NU SVARTNAR DET";CUR(7,0);"ALLT F\R \GONEN"; 480 IF J<0 THEN 920 490 GOSUB 1030 500 GOTO 350 510 OUT 6,7 : ; CUR(19,0)"BR[NSLET SLUT "G1$CUR(20,0)"SKA JAG SL] P]"G1$CUR(21,0)"RESERVEN? "G1$ 520 GET Q$ 530 IF Q$="J" OR Q$="j" THEN ; CHR$(12);CUR(10,1);Z$ ELSE 550 540 ; " FYLLA P] RESERVEN INNAN VI ]KTE..." 550 ; : ; " DET H[R KAN BARA SLUTA P] ETT S[TT." : FOR I=1 TO 4500 : NEXT I : OUT 6,9 560 S=(SQR(V*V+2*A*G)-V)/G 570 V=V+S*G : L=L+S 580 ; CHR$(12);CUR(22,1);G$"LANDAT!"G1$; 590 FOR I=1 TO 2000 : NEXT I 600 OUT 6,0 610 W=100*V 620 IF W>=2.5 THEN S=1 : GOTO 660 630 GOSUB 1650 640 ; CUR(22,1);G$"EN PERFEKT LANDNING"G1$; 650 GOTO 820 660 IF W>=10 THEN 700 670 GOSUB 1650 : REM bild p} lyckad landning 680 ; CUR(22,1);G$"GRATTIS, MJUKLANDNING!"G1$; 690 GOTO 820 700 IF W>=25 THEN 740 710 GOSUB 1650 720 ; CUR(22,1);G$"LANDNINGEN KUNDE VARIT MJUKARE"G1$ 730 GOTO 820 740 IF W>=60 THEN 780 750 GOSUB 2030 760 ; CUR(22,1);G$"KAPSELN F\RST\RD! OSIS...."G1$; : FOR I=1 TO 2000 : NEXT I 770 GOTO 820 780 OUT 6,9 : FOR [=1 TO 1000 : NEXT [ : OUT 6,0 790 GOSUB 2030 : REM m}nbilden 800 GOSUB 2210 : REM korsen 810 ; CUR(22,1);G$"KRATERN BLEV";INT(W*.5);" M DJUP!!!"G1$; 820 ; CUR(23,1);G$"VILL DU F\RS\KA IGEN"; 830 INPUT X$ 840 X$=LEFT$(X$,1) 850 IF X$="J" OR X$="j" THEN 140 860 GOTO 1080 870 IF S<.005 THEN 580 880 S=2*A/(V+SQR(V*V+2*A*(G-Z*K/M))) 890 GOSUB 990 900 GOSUB 1030 910 GOTO 870 920 W=(1-M*G/(Z*K))/2 930 S=M*V/(Z*K*(W+SQR(W*W+V/Z)))+.05 940 GOSUB 990 950 IF I<=0 THEN 870 960 GOSUB 1030 970 IF J>=0 THEN 350 980 IF V<=0 THEN 350 990 Q=S*K/M 1000 J=V+G*S+Z*(-Q-Q2/2-Q3/3-Q4/4-Q5/5) 1010 I=A-G*S*S/2-V*S+Z*S*(Q/2+Q2/6+Q3/12+Q4/20+Q5/30) 1020 RETURN 1030 L=L+S 1040 T=T-S 1050 M=M-S*K 1060 A=I : V=J 1070 RETURN 1080 END 1090 Z2%=18% 1100 ]=26 1110 Z1%=(M-N)/16000*]+.5 1120 GOSUB 1510 : REM br{nslem{taren 1130 Z2%=Z2%+21% 1140 Z1%=A/120*]+.5 1150 GOSUB 1510 : REM h|jdm{taren 1160 Z2%=Z2%+21% 1170 Z1%=V*(]+5)+.5-2.6 1180 GOSUB 1510 : REM hastighetsm{taren 1190 RETURN 1200 REM rita ramen 1210 ; CHR$(12) 1220 FOR I=1 TO 24 : ; : ; CHR$(151); : NEXT I 1230 FOR I=5 TO 68 STEP 21 1240 FOR J=34 TO 79 1250 SETDOT I,J 1260 NEXT J : NEXT I 1270 FOR I=5 TO 68 1280 SETDOT I,33 1290 SETDOT I,79 1300 NEXT I 1310 REM rita rubriker 1320 G$=CHR$(135) : REM grafikslut 1330 G1$=CHR$(151) : REM start grafik 1340 ; CUR(4,20);G$;"BR[NSLE (1000L)"G1$; 1350 ; CUR(7,19);G$"0 5 10 15"G1$; 1360 ; CUR(11,20);G$"H\JD (M)"G1$; 1370 ; CUR(14,19);G$"0 500 1000 1500"G1$ 1380 ; CUR(18,20);G$"HASTIGHET (M/S)"G1$ 1390 ; CUR(21,18);G$" 0 50 100 150"G1$; 1400 REM rita skalor **** 1410 FOR I=18 TO 60 STEP 21 1420 FOR J=40 TO 74 STEP 10 1430 SETDOT I,J 1440 NEXT J 1450 FOR J=40 TO 74 STEP 10 1460 SETDOT I+1,J 1470 NEXT J : NEXT I 1480 REM DISPLAYEN KLAR 1490 RETURN 1500 REM ***************************** 1510 REM RITA LINJE 1520 REM 1530 FOR I=40 TO 44+Z1% 1540 IF I>79 THEN 1590 1550 SETDOT Z2%,I 1560 SETDOT Z2%-1%,I 1570 SETDOT Z2%-2%,I 1580 NEXT I 1590 FOR I=78 TO 44+Z1%+1 STEP -1 1600 CLRDOT Z2%,I 1610 CLRDOT Z2%-1%,I 1620 CLRDOT Z2%-2%,I 1630 NEXT I 1640 RETURN 1650 REM ************************** 1660 REM **** RITA M]NLANDSKAP **** 1670 REM ************************** 1680 GOSUB 2010 1690 ; CUR(0,13);'"7atxrx!' 1700 ; CUR(1,14);'"////!' 1710 ; CUR(4,3);"!"; 1720 ; CUR(8,32);"0" 1730 ; CUR(12,1);"0" : ; CUR(12,11);"0" : ; CUR(12,25);"!"; 1740 ; CUR(14,17);"`0" : ; CUR(14,35);"`" 1750 ; CHR$(151);CUR(15,4);'pp' : ; CUR(15,16);'`%#t'; 1760 ; CUR(15,4);"pp" : ; CUR(15,16);"`%#t" 1770 ; CUR(16,1);",,#" : ; CUR(16,6);"#l0" : ; CUR(16,13);"`pp%" : ; CUR(16,19);'"),,,###,d0' 1780 ; CHR$(151);CUR(17,8);'",,,.!' : ; CUR(17,29);'"),ppp8&#,,' 1790 ; CHR$(151) : ; CUR(19,21);'`&-,#d' 1800 IF A>1 THEN 2000 1810 REM ************************** 1820 REM ***** RITA RAKET **** 1830 REM ************************** 1840 R=0 1850 ; CUR(R-1,3)" ";CHR$(151);CUR(R,6);" 5 "; 1860 ; CUR(R+1,4);G1$;" x}0 " 1870 ; CUR(R+2,4);G1$;"h";CHR$(127,127);"} "; 1880 ; CUR(R+3,4);G1$;"7#5"; 1890 ; CUR(R+4,4);G1$;"5"; 1900 ; CUR(R+5,4);G1$;"5"; 1910 ; CUR(R+6,4);G1$;"5"; 1920 ; CUR(R+7,3);G1$;" 5 "; 1930 ; CUR(R+8,2);G1$;" x}0 "; 1940 ; CUR(R+9,2);G1$;"x}0"; 1950 ; CUR(R+10,2);G1$;"########!"; 1960 R=R+1 : IF R>=10 THEN 2000 1970 FOR [=1 TO 150 : NEXT [ 1980 GOTO 1850 1990 FOR P=1 TO 1000 : NEXT P 2000 RETURN 2010 FOR I=1 TO 24 : ; : ; CHR$(151) : NEXT I 2020 RETURN 2030 REM ***************************** 2040 REM rita m}nlandskap 2050 REM ***************************** 2060 GOSUB 2010 : REM T\M SK[RMEN 2070 FOR I=1 TO 24 : ; : ; CHR$(151); : NEXT I 2080 ; CUR(0,13);'"7axtrx!' 2090 ; CUR(1,14);'"////!' 2100 ; CUR(3,12);'$' 2110 ; CUR(4,3);'!' 2120 ; CUR(7,17);'!' 2130 ; CUR(8,32);'0' 2140 ; CUR(12,1);'0' : ; CUR(12,11);'0' : ; CUR(12,25);'!' 2150 ; CUR(14,17);'`0' : ; CUR(14,35);'`' 2160 ; CUR(15,4);'pp' : ; CUR(15,16);'`%#t' 2170 ; CUR(16,1);',,#' : ; CUR(16,6)'#l0' : ; CUR(16,13);'`pp%' : ; CUR(16,19);'"),,,###,d0' 2180 ; CUR(17,8);'",,,#!' : ; CUR(17,29);'"),ppp8&#,,'"" 2190 ; CUR(19,21);'`&-,#d' 2200 RETURN 2210 REM **************************** 2220 REM rita kors 2230 REM **************************** 2240 FOR L=14 TO 2 STEP -3 2250 K=L 2260 FOR R=22 TO 1 STEP -1 2270 ; CUR(R+1,K-1);" ";CUR(R+2,K-1);" "; 2280 ; CUR(R,K);"n$";CUR(R+1,K);"j"; 2290 K=K+1 2300 FOR J=1 TO 50 : NEXT J 2310 OUT 6,73+128 2320 NEXT R 2330 NEXT L 2340 OUT 6,137 2350 RETURN 2360 REM INSTRUKTIONER 2370 ; CHR$(12) 2380 ; "* INSTRUKTION F\R ABC80 RYMDPILOTER *" : ; 2390 ; "Du befinner Dig p} 1500 meters h|jd" 2400 ; "ovanf|r m}nytan." 2410 ; : ; "Ditt uppdrag {r att ta ner m}nlandar-" 2420 ; "kapseln helskinnad p} m}nytan." 2430 ; : ; "Ner kommer Du alltid, men" 2440 ; "f|r att landa litet mjukare {r det" 2450 ; "l{mpligt att anv{nda bromsraketerna." 2460 ; "Du har 15.000 liter br{nsle att bromsa" 2470 ; "med. G|r Du slut p} br{nslet innan" 2480 ; "Du kommit ner f}r Du skylla Dig sj{lv..." 2490 ; "Du skall ange |nskat br{nslep}drag" 2500 ; "i LITER per SEKUND. Detta v{rde anv{nds" 2510 ; "i 10 sekunder. Efter att }nyo ha tittat" 2520 ; "p} instrumenten anger Du ett nytt" 2530 ; "gasp}drag. Till}tet {r 8-200 LITER per" 2540 ; "SEKUND eller 0 som betyder fritt fall." 2550 ; : ; "TRYCK N[R DU [R KLAR ATT B\RJA ?"; : GET Q$ : ; Q$ 2560 RETURN 2570 IF PEEK(590)<>40 ; INP(3) 2580 T%=-1% 2590 FOR I=1 TO 24 : ; : ; CHR$(151); : NEXT I 2600 FOR R%=0% TO 22% 2610 FOR K%=1% TO 39% 2620 IF R%<3% OR R%>19% THEN 2640 2630 IF K%>4% AND K%<36% THEN 2650 2640 ; CUR(R%,K%); : IF T%>0% THEN ; "f"; ELSE ; "9"; 2650 NEXT K% : T%=-T% : NEXT R% 2660 ; CUR(8,10);CHR$(135)"ABC80 PRESENTERAR"CHR$(151); 2670 ; CUR(12,9);CHR$(135)"*** A P O L L O ***"CHR$(151); 2680 ; CUR(14,7);CHR$(135)" ett simuleringsspel "CHR$(151); 2690 RETURN