PVOL1STMRCH D%B44310010041 3PPHDR1STMRCH.BAS STMRCH00010001000100 :7258 :7258 000000DECRSTS/E PPHDR2U0051200000 M 00 P1 EXTEND 10 REM ***************** 20 REM * STAR MERCHANT * 30 REM ***************** 40 REM 50 REM INITIALIZATION 60 DIM A(5,4), D(10) 70 DIM H(20, 4), P(14), S(6), T(10) 80 PRINT TAB(12);"STAR MERCHANT" 90 PRINT \ & PRINT "You have just spent 2 million credits" 100 PRINT "on a 2 year lease for a merchant" 110 PRINT "starship. This leaves you with 2" 120 PRINT "million credits operating capital." 130 PRINT 140 PRINT "Your ship can hold a total of 20 cargos" 150 PRINT "with a total cargo weight of 200 tons." 160 PRINT "The fuel capacity of your ship is great" 170 PRINT "enough such that travel between any 2" 180 PRINT "starports is possible without" 190 PRINT "refueling." 200 PRINT 210 PRINT "You are presently traveling from Alpha" 220 PRINT "Centauri to Sol. You are carrying no" 230 PRINT "cargo." 240 PRINT \ & PRINT "Press any key to continue..."; 250 INPUT "";A$ 260 PRINT \ & PRINT "The starport trade classification" 270 PRINT "determines the cargo price but does not" 280 PRINT "determine which cargos are available." 290 PRINT 300 PRINT "Abbreviations used for trade class are" 310 PRINT "as follows:" 320 PRINT " R-Rich; P-Poor; I-Industrial;" 330 PRINT " NI-Nonindustrial; A-Agricultural;" 340 PRINT " NA-Nonagricultural" 350 PRINT 360 PRINT "Press any key to continue..."; 370 INPUT "";A$ 380 PRINT \ & PRINT "Commands available are as follows:" \ & PRINT 390 GOSUB 3420 400 R1=1 420 PRINT 430 REM * SEED RANDOM NUMBER GENERATOR 440 REM * 450 REM * 460 REM * 470 REM * 480 DEF FNA(R1)=INT(6*RND(R1))+1 490 DEF FNB(N2)=INT(N2*RND(R1))+1 500 DEF FNC(R1)=FNA(R1)+FNA(R1) 510 B2=2000000 520 D(5)=4.3 530 S1=5 540 E1=50000 550 E2=100000 560 E3=500000 570 N2=36 580 N3=10 590 W1=200 600 W2=W1 610 FOR I=1 TO 20 620 H(I, 1)=0 630 NEXT I 640 GOSUB 3650 650 FOR I=1 TO 14 660 READ P(I) 670 NEXT I 680 T5=0 690 T6=0 700 T7=0 710 GOSUB 2310 720 REM ************** & REM * MAIN LOGIC * & REM ************** 730 IF RND(R1)>.01+5E-03*B2/E3 THEN 750 740 GOSUB 1120 750 PRINT 760 PRINT " Account balance:"; \ & PRINT USING "##,###,###",B2 \ & PRINT " Empty cargo space: "; \& PRINT USING "###",W2 770 PRINT TAB(9);"Ship time:";INT(T6*1000)/1000;"years" 780 PRINT \ & INPUT "Enter command";C1 \ & PRINT 790 IF C1>0 AND C1<7 AND C1=INT(ABS(C1)) THEN 820 800 GOSUB 3420 810 GOTO 720 820 ON C1 GOSUB 1310,1480,1650,1950,2090,2180 830 B3=B2+T1 840 IF B3<0 THEN 960 850 IF T6-2*T5<2 THEN 720 860 PRINT 870 PRINT "The lease has expired on your ship." 880 IF B3<2000000 THEN 960 890 PRINT "Another lease will cost 2 million" 900 PRINT "credits." 910 INPUT "Do you wish to renew your lease (Y/N)";A$ 920 IF A$="N" OR A$="n" THEN 960 930 B2=B2-2000000 940 T5=T5+1 950 GOTO 720 960 REM *************** & REM * END PROGRAM * & REM *************** 970 G1=(B3-4000000)/T6 980 A$="loss" 990 IF G1<0 THEN 1010 1000 A$="gain" 1010 IF B3>0 THEN 1040 1020 PRINT 1030 PRINT "You no longer have sufficient funds to" \ & PRINT "operate your ship." 1040 PRINT 1050 PRINT "You began with 4 million credits and" 1060 IF B2<0 THEN B2=0 1070 PRINT "now have";B2;"credits." 1080 PRINT "Cargo in the hold is worth";T1 1090 PRINT 1100 PRINT "This represents a ";A$;" of ";ABS(INT(G1*1000)/1000) \ & PRINT "credits per year." 1110 GOTO 4690 1120 REM ********************* & REM * STRIKE SUBROUTINE * & REM ********************* 1130 PRINT 1140 PRINT "The crew has gone on strike! You are" 1150 PRINT "currently paying them";E3;"credits" \ & PRINT "annually. "; 1160 E5=E3+.5*RND(R1)*E3 1170 PRINT "They are asking for";E5;"credits." 1180 N4=0 1190 E6=E3+N4*(E5-E3)/10 1200 PRINT 1210 INPUT "Enter counter offer";E7 1220 IF E7>=E5 THEN 1280 1230 IF E70 THEN 1530 1510 PRINT "All available cargo have been bought." 1520 RETURN 1530 PRINT "No Description";TAB(20);"AMT";TAB(25);"Price";TAB(35);"%" 1540 FOR I=1 TO 5 1550 RESTORE 1560 IF A(I,1)=0 THEN 1630 1570 FOR J=1 TO 19+A(I,1) 1580 READ A$ 1590 NEXT J 1600 READ A$ 1610 PRINT USING "##",I; \ & PRINT TAB(3);A$;TAB(20); \ & PRINT USING "###", A(I,3); 1620 PRINT TAB(25); \ & PRINT USING "#########",A(I,2); \ & PRINT TAB(35); \ & PRINT USING "###",A(I,4) 1630 NEXT I 1640 RETURN 1650 REM ***************** & REM * BUY CARGO SUB * & REM ***************** 1660 PRINT "Enter the lot number of cargo that you" \ & INPUT "want to purchase";K 1670 IF K=ABS(INT(K)) AND K>0 AND K<6 THEN 1700 1680 PRINT "Invalid lot number." 1690 RETURN 1700 IF A(K,1)>0 THEN 1730 1710 PRINT "Lot";K;"has already been purchased." 1720 RETURN 1730 IF A(K,2)<=B2 THEN 1760 1740 PRINT "You can not buy cargo on credit." 1750 RETURN 1760 IF A(K,3)<=W2 THEN 1790 1770 PRINT "You do not have sufficient cargo space." 1780 RETURN 1790 FOR I=1 TO 20 1800 IF H(I,1)=0 THEN 1840 1810 NEXT I 1820 PRINT "All 20 cargo partitions are occupied." 1830 RETURN 1840 FOR J=1 TO 4 1850 H(I,J)=A(K,J) 1860 NEXT J 1870 A(K,1)=0 1880 W2=W2-H(I,3) 1890 B2=B2-H(I,2) 1900 T6=T6+3E-03 1910 N1=N1-1 1920 PRINT \ & PRINT "Transaction completed." 1930 PRINT "Cargo stored in partition";I 1940 RETURN 1950 REM ****************** & REM * SELL CARGO SUB * & REM ****************** 1960 INPUT "Enter partition of cargo to be sold";K 1970 IF K=ABS(INT(K)) AND K>0 AND K<21 THEN 2000 1980 PRINT "Invalid partition number." 1990 RETURN 2000 IF H(K,1)>0 THEN 2030 2010 PRINT "Cargo partition is empty." 2020 RETURN 2030 B2=B2+H(K,2) 2040 W2=W2+H(K,3) 2050 T6=T6+3E-03 2060 H(K,1)=0 2070 PRINT "Transaction completed." 2080 RETURN 2090 REM ********************** & REM * LIST STARPORTS SUB * & REM ********************** 2100 PRINT "No. Name"; \ & PRINT TAB(21);"Trade Cl"; \ & PRINT TAB(29);"Dist Dir" 2110 RESTORE 2120 FOR I=1 TO 10 2130 READ A$,B$ 2140 PRINT USING "##",I; \ & PRINT TAB(5);A$;TAB(21);B$; 2150 PRINT TAB(29); \ & PRINT USING "##.##",D(I); \ & PRINT TAB(35); \ & PRINT USING "###",T(I) 2160 NEXT I 2170 RETURN 2180 REM ************** & REM * TRAVEL SUB * & REM ************** 2190 IF B2>0 THEN 2220 2200 PRINT "You can not leave the starport until all" \ & PRINT "debts are cleared." 2210 RETURN 2220 PRINT "Enter destination star number "; 2230 INPUT I 2240 IF I<>S1 THEN 2270 2250 PRINT "You are already at";I 2260 RETURN 2270 IF I=ABS(INT(I)) AND I>0 AND I1 THEN 2610 2600 P2=1 2610 IF P2<14 THEN 2630 2620 P2=14 2630 H(I,4)=P(P2)*100 2640 H(I,2)=P(P2)*B1*H(I,3) 2650 T1=T1+H(I,2) 2660 NEXT I 2670 REM *********************** & REM * GET CARGOS FOR SALE * & REM *********************** 2680 N1=5 2690 FOR I=1 TO 5 2700 D2=0 2710 T2=FNB(N2) 2720 A(I,1)=T2 2730 GOSUB 3580 2740 IF T2=1 THEN 2780 2750 FOR J=1 TO (T2-1)*8 2760 READ D9 2770 NEXT J 2780 FOR J=1 TO 6 2790 READ D3 2800 D2=D2+D3*S(J) 2810 NEXT J 2820 P2=FNC(R1)+D2-1 2830 IF P2>1 THEN 2850 2840 P2=1 2850 IF P2<14 THEN 2870 2860 P2=14 2870 A(I,4)=P(P2)*100 2880 READ B1,Q1 2890 Q2=1 2900 IF T2<17 THEN 2940 2910 Q2=5 2920 IF T2<32 THEN 2940 2930 Q2=10 2940 Q3=0 2950 FOR J=1 TO Q1 2960 Q3=FNA(R1)*Q2+Q3 2970 NEXT J 2980 IF Q3>200 THEN Q3=200 2990 A(I,3)=Q3 3000 A(I,2)=B1*Q3*P(P2) 3010 NEXT I 3020 REM ******************************** & REM * DIST. AND DIRECTION OF STARS * & REM ******************************** 3030 D4=D(S1) 3040 GOSUB 3510 3050 FOR I=1 TO 10 3060 READ X1,Y1,D9 3070 X2=X1-X3 3080 Y2=Y1-Y3 3090 IF X2<>0 THEN 3150 3100 IF Y2<0 THEN 3130 3110 T(I)=90 3120 GOTO 3220 3130 T(I)=270 3140 GOTO 3220 3150 T(I)=ATN(Y2/X2)*180/3.14159 3160 IF X2>0 THEN 3180 3170 T(I)=T(I)+180 3180 IF T(I)<360 THEN 3200 3190 T(I)=T(I)-360 3200 IF T(I)>0 THEN 3220 3210 T(I)=T(I)+360 3220 D(I)=SQR(X2^2+Y2^2) 3230 NEXT I 3240 REM ********************************* & REM * ARRIVAL EXPENSE AND STAR NAMR * & REM ********************************* 3250 T6=T6+.02*D4+.02 3260 E4=(T6-T7)*E3 3270 T7=T6 3280 RESTORE 3289 IF S1=1 THEN 3330 3300 FOR I=1 TO S1-1 3310 READ A$, B$ 3320 NEXT I 3330 READ A$, B$ 3340 PRINT 3350 PRINT \ & PRINT "You have arrived at ";A$;"." \ & PRINT 3360 PRINT "Expenses have been deducted as follows:" 3370 PRINT TAB(7);"Docking fee:"; \ & PRINT USING "##,###,###",E1 3380 PRINT TAB(14);"Fuel:"; \ & PRINT USING "##,###,###", E2*D4 3390 PRINT TAB(7);"Crew salary:"; \ & PRINT USING "##,###,###", E4 3400 B2=B2-(E1+E2*D4+E4) 3410 RETURN 3415 REM ***************** & REM * LIST COMMANDS * & REM ***************** 3420 PRINT "Command";TAB(12);"Description" 3430 PRINT TAB(4);"1";TAB(12);"List cargo in hold" 3440 PRINT TAB(4);"2";TAB(12);"List cargo which" \ & PRINT TAB(12);"may be purchased" 3450 PRINT TAB(4);"3";TAB(12);"Buy cargo" 3460 PRINT TAB(4);"4";TAB(12);"Sell cargo" 3470 PRINT TAB(4);"5";TAB(12);"List starports" 3480 PRINT TAB(4);"6";TAB(12);"Travel to new star" 3490 PRINT " Other";TAB(12);"List available commands" 3500 RETURN 3510 REM **************************** & REM * RESTORE TO STAR DATA SUB * & REM **************************** 3520 RESTORE 3530 FOR L=1 TO (2*N3+N2) 3540 READ A$ 3550 NEXT L 3560 IF K0=1 THEN K0=0 \ & GOTO 3600 3570 RETURN 3580 REM ***************************** & REM * RESTORE TO CARGO DATA SUB * & REM ***************************** 3590 K0=1 \ & GOTO 3510 3600 FOR L=1 TO 3*N3 3610 READ D9 3620 NEXT L 3630 IF L0=1 THEN L0=0 \ & GOTO 3670 3640 RETURN 3650 REM ***************************** & REM * RESTORE TO PRICE DATA SUB * & REM ***************************** 3660 L0=1 \ & GOTO 3590 3670 FOR L=1 TO 8*N2 3680 READ D9 3690 NEXT L 3700 RETURN 3710 REM ************** & REM * STAR NAMES * & REM ************** 3720 DATA "Lalande 21185","NI,P" 3730 DATA "Alpha Centauri","NA,I" 3740 DATA "Sirius","A" 3750 DATA "Barnards Star","I,P" 3760 DATA "Sol","R" 3770 DATA "Ross 154","NI,NA" 3780 DATA "Epsilon Eridani","A,P" 3790 DATA "Luyten 726-8","NA" 3800 DATA "Luyten 789-6","A,NI,P" 3810 DATA "Ross 248","A,I" 3820 REM *************** & REM * CARGO NAMES * & REM *************** 3830 DATA "Crystals" 3840 DATA "Radioactives" 3850 DATA "Alloys" 3860 DATA "Medicine" 3870 DATA "Gems" 3880 DATA "Aircraft" 3890 DATA "Grav Sleds" 3900 DATA "Computers" 3910 DATA "ATV" 3920 DATA "AFV" 3930 DATA "Firearms" 3940 DATA "Ammunition" 3950 DATA "Plasma Guns" 3960 DATA "Tools" 3970 DATA "Body Armor" 3980 DATA "Farm Machinery" 3990 DATA "Liquor" 4000 DATA "Silver" 4010 DATA "Spices" 4020 DATA "Electronics" 4030 DATA "Mechanical Parts" 4040 DATA "Cybernetic Parts" 4050 DATA "Computer Parts" 4060 DATA "Machine Tools" 4070 DATA "Space Suits" 4080 DATA "Fruit" 4090 DATA "Textiles" 4100 DATA "Polymers" 4110 DATA "Meat" 4120 DATA "Petrochemicals" 4130 DATA "Grain" 4140 DATA "Wood" 4150 DATA "Copper" 4160 DATA "Tin" 4170 DATA "Steel" 4180 DATA "Aluminum" 4190 REM ************* & REM * STAR DATA * & REM ************* 4200 DATA 2.83, -7.36, 20 4210 DATA -2.4, -3.56, 9 4220 DATA 8.38, 9.93, 2 4230 DATA -6.1, 0, 24 4240 DATA 0, 0, 32 4250 DATA -8.87, 2.05, 5 4260 DATA 8.45, 6.65, 18 4270 DATA 2.99, 7.42, 1 4280 DATA -4.43, 9.3, 22 4290 DATA -.89, 10.26, 10 4300 REM ************** & REM * CARGO DATA * & REM ************** 4310 DATA 3, -2, 2, -2, 0, -4, 20000, 1 4320 DATA 0, 1, 4, -3, 0, -2, 1000000, 1 4330 DATA -2, 0, -4, 6, 1, -2, 200000, 1 4340 DATA -1, 4, -4, 3, -2, 0, 100000, 1 4350 DATA 4, -2, 4, -4, -1, 1, 1000000, 1 4360 DATA -2, 4, -3, 3, 1, -1, 1000000, 1 4370 DATA 2, 0, -1, 1, 0, 0, 6000000, 1 4380 DATA 1, 0, -2, 0, 0, 0, 10000000, 1 4390 DATA -2, 2, -2, 1, 1, 0, 300000, 1 4400 DATA 0, 2, -2, 0, 0, 1, 700000, 1 4410 DATA -2, 6, -4, 1, 0, 0, 30000, 2 4420 DATA -1, 6, -5, 2, 0, 0, 30000, 2 4430 DATA -1, 3, -2, 0, 0, 0, 200000, 2 4440 DATA -4, 7, -8, 4, 5, 0, 10000, 2 4450 DATA -3, 6, -4, 1, 0, 0, 50000, 2 4460 DATA -2, 2, -6, 0, 6, -4, 150000, 1 4470 DATA 3, 3, -1, 0, -3, 0, 10000, 1 4480 DATA 3, -1, 3, -1, 0, -2, 70000, 1 4490 DATA 4, -2, 3, -1, -5, 2, 6000, 1 4500 DATA 0, 0, -4, 4, 1, 1, 100000, 1 4510 DATA 0, 1, -3, 3, 2, 1, 75000, 1 4520 DATA 1, 0, -4, 2, 1, 0, 250000, 1 4530 DATA -1, 0, -2, 3, 0, 0, 150000, 1 4540 DATA 1, 0, -2, 1, 0, 0, 750000, 1 4550 DATA -1, 2, -3, 2, 2, 0, 400000, 1 4560 DATA 1, 2, 3, 3, -4, -6, 1000, 2 4570 DATA 3, 0, -3, 1, -5, -3, 3000, 3 4580 DATA -2, 0, 3, 3, 0, 0, 7000, 4 4590 DATA 0, 0, 5, 2, -5, 5, 1500, 4 4600 DATA 2, 0, 4, -2, 3, 0, 10000, 6 4610 DATA 0, 0, 1, 3, -5, 6, 300, 8 4620 DATA 0, 0, 1, 2, -7, 3, 1000, 2 4630 DATA 2, 2, 3, -2, -1, -4, 2000, 2 4640 DATA 2, 2, 3, -4, -1, -2, 9000, 3 4650 DATA -1, 2, 6, 0, 0, 0, 500, 4 4660 DATA -1, 1, 3, -2, 0, -2, 1000, 5 4670 REM ************** & REM * PRICE DATA * & REM ************** 4680 DATA .4, .5, .7, .8, .9, 1, 1.1, 1.2, 1.3, 1.5, 1.7, 2, 3, 4 4690 END PEOF1STMRCH.BAS STMRCH00010001000100 :7258 :7258 000030DECRSTS/E PPEOF2U0051200000 M 00 P