10 ONERRORRUN 20 *K.10PA.=&1900|MO.|MRUN|M 30 DEFFNS="TRADE" 40 MODE7:VDU23;8202;0;0;0;0; 50 DIMO$(2,20),P%(20,1),G$(20),G%(5,20),E$(20),E%(5,20) 60 PRINT'':PROCc("†Seafarer. V2",1):PRINT':PROCc("ƒBy C.J.Richardson.",1):PRINT':PROCc("‚Instructions? Y/N",1):PROCm:REPEAT:A$=GET$:UNTIL A$="Y"ORA$="N":IFA$="Y"PROCi 70 ONERROR:IFERR=17:PROCq ELSE IFERR=20:CLS:PROCc("†You broke the bank! Start again.",1):PROCw:PROCq ELSE REPORT:PRINTERL:END 80 REPEAT:PROCt:CLS 90 IFZ%=1PROCf 100 IFZ%=2PROCk 110 IFZ%=3PROCl 120 IFZ%=4PROCe 130 IFZ%=5PROCs:U%=U%+1 140 IFZ%=6F%=OPENOUT"TRADATA":FORL%=0TO20:PRINT#F%,E%(2,L%),G%(0,L%),G%(2,L%),G%(3,L%),G%(4,L%),G%(5,L%):NEXT:PRINT#F%,N%,M%,U%,V%:CLOSE#F% 150 IF Z%=7 F%=OPENIN"TRADATA":FORL%=0TO20:INPUT#F%,E%(2,L%),G%(0,L%),G%(2,L%),G%(3,L%),G%(4,L%),G%(5,L%):NEXT:INPUT#F%,N%,M%,U%,V%:CLOSE#F% 160 UNTILE%(2,0)<1000 AND G%(2,0)-E%(2,1)<1:M%=0 170 PROCq:END 180 DEFPROCq 190 S%=0:FORL%=1TO20:S%=S%+G%(2,L%)*G%(0,L%):NEXT 200 CLS:PRINT''':IFM%=0 PROCc("†You went bankrupt. TERRIBLE!",1) 210 PROCc("ƒYou made `"+STR$E%(2,0)+" in "+STR$U%+" turns",1) 220 PROCc("ƒYour cargo value `"+STR$S%,1) 230 IF U%<>0:PROCc("‚You scored "+STR$INT((S%+E%(2,0))/U%),1) 240 PROCc("†Press A to play again.",1):PROCc("†Press C to claim reward",1):PROCc("†Press E to END.",1):PROCc("ƒAny other key to continue",1):A$=GET$:IFA$="A"ORM%=0:RUN 250 IFA$="C":IFE%(2,14)=1:IFG%(2,0)=M%:IFE%(2,0)>600000 PROCc("ƒYou earned the reward!",1):PROCo ELSE IFA$="C"PROCc("ƒYou haven't made enough yet!",1):PROCc("ƒIs your hold full?",1):PROCw 260 IF A$="E"END 270 ENDPROC 280 DEFPROCs 290 CLS:PROCc("†Sail from "+O$(0,N%)+". Fuel:",1) 300 FORL%=1TO20:PRINTTAB(3);"‚";O$(0,L%);TAB(17);"ƒ";O$(1,L%);TAB(30);"†";(ABS(P%(N%,0)-P%(L%,0))+ABS(P%(N%,1)-P%(L%,1)))*V%:NEXT:PROCh 310 K%=(ABS(P%(N%,0)-P%(A%,0))+ABS(P%(N%,1)-P%(A%,1)))*V% 320 CLS:PRINT''':PROCc("†You need: "+STR$K%+" fuel/service units.",1):IF E%(2,1)0 F%=G%(2,L%)/10:G%(2,L%)=G%(2,L%)-F%:G%(2,0)=G%(2,0)-F%:NEXT ELSE IF J%=3 OR J%=4 NEXT 390 IFJ%=3PROCj("Loss of goods by theft") 400 IFJ%=4PROCj("Goods washed overboard") 410 N%=A% 420 PROCp 430 ENDPROC 440 DEFPROCj(A$):CLS:PROCc("†"+A$,1) 450 IFJ%=1A$="Charged `20000 for repairs!":E%(2,0)=E%(2,0)-20000 460 IFJ%=2A$="Charged `10000 for repairs!":E%(2,0)=E%(2,0)-10000 470 IFJ%=3A$="Charged `1000 extra insurance!":E%(2,0)=E%(2,0)-1000 480 IFJ%=4A$="Charged `2000 extra insurance!":E%(2,0)=E%(2,0)-2000 490 PROCc("‚"+A$,1):PROCw:ENDPROC 500 DEFPROCk:CLS:PROCc("† Buy Goods. Price ` Ave ` ",1):FORL%=1TO20:PRINTTAB(3);"ƒ";G$(L%);:IFG%(2,L%)>0 PRINTTAB(26);"*"; 510 IFG%(0,L%)<>0 PRINTTAB(27);G%(0,L%);TAB(33);G%(1,L%) 520 NEXT:PROCh 530 IF G%(0,A%)=0 ENDPROC 540 PROCa("Buy"):B%=VAL F$*G%(0,A%):IF B%>E%(2,0):PROCg("†Not enough money"):ENDPROC 550 IF G%(2,0)+VALF$>M%PROCg("†You haven't got enough space!"):ENDPROC 560 E%(2,0)=E%(2,0)-B%:G%(2,A%)=G%(2,A%)+VALF$ 570 G%(2,0)=G%(2,0)+VALF$ 580 ENDPROC 590 DEFPROCg(A$):PROCc(A$,1):PRINT:PROCc("†Press a key",1):REPEATUNTILGET:ENDPROC 600 DEFPROCl:CLS:PROCc("† Sell Goods. Offer ` Ave ` ",1):FORL%=1TO20:PRINTTAB(3);"ƒ";G$(L%);:IFG%(2,L%)>0 PRINTTAB(26);"*"; 610 IFG%(0,L%)<>0 PRINTTAB(27);G%(0,L%);TAB(33);G%(1,L%) 620 NEXT:PROCh 630 PROCa("Sell"):B%=VAL F$:IF B%>G%(2,A%):PROCg("†You haven't got that many!"):ENDPROC 640 IF A%=19:IF RND(10)<>1 PROCg("†They don't want it."):ENDPROC 650 E%(2,0)=E%(2,0)+(G%(0,A%)*B%):G%(2,A%)=G%(2,A%)-B% 660 G%(2,0)=G%(2,0)-B% 670 ENDPROC 680 DEFPROCa(A$):CLS:PROCc("†"+A$+" "+G$(A%),1) 690 PROCc("ƒPrice at "+O$(0,N%),1):PROCc("ƒ`"+STR$G%(0,A%)+" per unit/ton",1) 700 PROCd:ENDPROC 710 DEFPROCd:IF A$<>"":PROCc("ƒYou have "+STR$G%(2,A%)+" units/tons",1) ELSE PROCc("ƒYou have "+STR$E%(2,A%)+" units/tons",1) 720 PRINT:PROCc("ƒYou have `"+STR$E%(2,0),1) 730 IFA%<>19:IFA$="Buy" PROCc("ƒYou can afford "+STR$(INT(E%(2,0)/G%(0,A%))),1) 740 PRINT:PROCc("†"+A$+" how many?",1) 750 F$="":REPEATP$=GET$:IFASCP$=127F$=LEFT$(F$,LEN(F$)-1):P$="" 760 IFASCP$>47IFASCP$<58 F$=F$+P$ 770 PRINTTAB(0,16):PROCc("†"+F$+" ",1):UNTIL ASCP$=13 780 ENDPROC 790 DEFPROCi:CLS:RESTORE2030:C%=0:REPEAT:C%=C%+1:READA$:PROCc("ƒ"+A$,1):IFC%MOD11=0PROCc("†"+"Press a key.",1):REPEATUNTILGET 800 UNTILA$="":PROCw:RESTORE:ENDPROC 810 DEFPROCp:A$=O$(2,N%):Q%=0:FORL%=3TO5:IFG%(L%,0)=N%Q%=L%:NEXT ELSE NEXT 820 IFQ%>0IF RND(6)=1:FORL%=1TO20:F%=VAL(MID$(A$,L%,1)):G%(Q%,L%)=FNn(G%(1,L%)):NEXT 830 IF Q%>0:FORL%=1TO20:G%(0,L%)=G%(Q%,L%):NEXT 840 IFQ%=0:FORL%=0TO20:G%(5,L%)=G%(4,L%):G%(4,L%)=G%(3,L%):NEXT:FORL%=1TO20:F%=VAL(MID$(A$,L%,1)):G%(0,L%)=FNn(G%(1,L%)):G%(3,L%)=G%(0,L%):NEXT:G%(3,0)=N% 850 FORL%=1TO20 860 F%=VAL(MID$(A$,L%+20,1)):E%(0,L%)=FNn(E%(1,L%)) 870 NEXT:G%(0,19)=-9024-RND(1000) 880 ENDPROC 890 DEFFNn(C%):IF F%=0:=0 900 IF C%<2:=C% 910 IFF%<9 IF RND(F%+2)=1:=0 920 D%=C%/10:C%=C%-(D%/2):C%=C%+(RND(D%+2)):=C% 930 DEFPROCe:CLS:PROCc("†Buy Equipment. Price:",1):FORL%=1TO20:PRINTTAB(3);"ƒ";E$(L%);:IF E%(0,L%)>0 PRINTTAB(26);"`";E%(0,L%) 940 NEXT:PROCh 950 CLS:PROCc("†"+E$(A%),1) 960 PROCc("ƒPrice at "+O$(0,N%),1):PROCc("ƒ`"+STR$E%(0,A%)+" per unit/ton",1) 970 A$="":PROCd:R%=VALF$:IF R%=0:ENDPROC 980 IFE%(0,A%)=0 PROCg("†Not available!"):ENDPROC 990 IFE%(2,0)1IF G%(2,19)>0:PROCg("†You have toxic waste on board!"):ENDPROC 1010 IFA%>1R%=1 1020 IF A%>1:FORL%=2TO20:E%(2,L%)=0:NEXT:E%(2,A%)=1:M%=VAL LEFT$(E$(A%),5):FORL%=0TO20:G%(2,L%)=0:NEXT:E%(2,1)=0 1030 IFA%=1:IF G%(2,0)+R%>M%:PROCg("†Not enough space for all that!"):ENDPROC ELSE IF A%=1:E%(2,1)=E%(2,1)+R%:G%(2,0)=G%(2,0)+R% 1040 E%(2,0)=E%(2,0)-(E%(0,A%)*R%) 1050 V%=M%/1000 1060 ENDPROC 1070 DEFPROCh 1080 PROCc("Use SPACE and RETURN to choose",1) 1090 A%=1:L%=0:REPEAT:PRINTTAB(0,A%+1);" ";TAB(0,A%+1);" " 1100 IFL%=32A%=A%+1:IFA%=21A%=1 1110 PRINTTAB(0,A%+1);"";TAB(39,A%+1);"œ":L%=GET:UNTILL%=13 1120 ENDPROC 1130 DEFPROCm:FORL%=1TO20:READO$(0,L%),O$(1,L%),O$(2,L%),P%(L%,0),P%(L%,1):NEXT 1140 FORL%=1TO20:READG$(L%),G%(1,L%):NEXT 1150 FORL%=1TO20:READE$(L%),E%(1,L%):NEXT 1160 N%=15:E%(2,0)=600000:M%=1000:E%(2,2)=1:V%=M%/1000:U%=0 1170 PROCp 1180 ENDPROC 1190 DEFPROCt:CLS:PROCc("†Docked in: "+O$(0,N%)+" "+O$(1,N%),1):PRINT 1200 PROCc("†You have `"+STR$E%(2,0)+" on "+STR$U%+" voyages",1) 1210 PROCc("‚You can:",1) 1220 PROCc("ƒSee information",1) 1230 PROCc("ƒBuy goods",1) 1240 PROCc("ƒSell goods",1) 1250 PROCc("ƒBuy equipment",1) 1260 PROCc("ƒSet sail",1) 1270 PROCc("ƒSave game",1) 1280 PROCc("ƒLoad game",1) 1290 PRINT:PROCc("‚Use SPACE and RETURN to choose",1) 1300 Z%=1:L%=0:REPEAT 1310 PRINTTAB(0,(Z%*2)+5);" ";TAB(0,(Z%*2)+6);" " 1320 IFL%=32Z%=Z%+1:IFZ%=8Z%=1 1330 PRINTTAB(0,(Z%*2)+5);"";TAB(35,(Z%*2)+5);"œ"'"";TAB(35,(Z%*2)+6);"œ" 1340 L%=GET 1350 UNTILL%=13 1360 ENDPROC 1370 DEFPROCw:PRINT:PROCc("ˆPRESS A KEY",0):REPEATUNTILGET:CLS:ENDPROC 1380 DEFPROCf:CLS:PROCc("ƒGoods. ‚Average price. †Carried.",1):FORL%=1TO20:PRINT"ƒ";G$(L%);TAB(23);"‚`";G%(1,L%);TAB(30);"†";G%(2,L%):NEXT:PROCw 1390 PROCc("ƒEquipment. ‚Average price. †Owned.",1):FORL%=1TO20:PRINT"ƒ";E$(L%);TAB(17);"‚`";E%(1,L%);TAB(29);"†";E%(2,L%):NEXT:PROCw 1400 PROCc("‚Ports To Visit. †Fuel needed:",1):FORL%=1TO20:PRINT"‚";O$(0,L%);TAB(18);"ƒ";O$(1,L%);TAB(33);"†";(ABS(P%(N%,0)-P%(L%,0))+ABS(P%(N%,1)-P%(L%,1)))*V%:NEXT:PROCw:ENDPROC 1410 DEFPROCc(P$,H%):IFH%=1P$=""+P$ 1420 FORL%=0TOH%:PRINTTAB(18-LENP$/2);P$:NEXT:ENDPROC 1430 DATARotterdam,Netherlands,8258639089996977992799988777666555000000,7,2 1440 DATAKobe,Japan,5999899789879998982799988776655555000000,14,6 1450 DATANew Orleans,USA,8776939944976889982699887765554322000000,2,3 1460 DATASingapore,Singapore,8464739249777887982899887766554442000000,10,7 1470 DATAYokohama,Japan,7793629289886786972799998877666555000000,12,6 1480 DATAMarseille,France,6654799784998677972699988776655554000000,7,4 1490 DATAAntwerp,Belgium,8654789289545588872799876543333220000000,7,3 1500 DATAKawasaki,Japan,8564329289656787872899877665542220000000,13,6 1510 DATAHong Kong,Hong Kong,7875239249787558862799877665422220000000,11,6 1520 DATATubarao,Brazil,6849439244436759862699876554332220000000,2,6 1530 DATAKaohsiung,Taiwan,8794629289455648762599776544332220000000,11,7 1540 DATAVancouver,Canada,8798798678798978982799776543222220000000,1,1 1550 DATAHamburg,West Germany,6474359289475496762699775433322220000000,8,1 1560 DATALos Angeles,USA,8244869289787665762799766433222200000000,2,2 1570 DATALondon,England,4479879589577465677899775432222000000000,6,4 1580 DATARichard's Bay,S.Africa,5225979289444567637999754322222000000000,1,7 1590 DATALe Havre,France,6033487789343778632799754322220000000000,7,5 1600 DATAGenoa,Italy,3334566249334336532899643222200000000000,9,4 1610 DATATampa,USA,2859659289422445422499663222000000000000,2,4 1620 DATAPort Headland,Australia,8589784967222924422599742222000000000000,11,8 1630 DATAIron ore,942 1640 DATACoal,985 1650 DATALight Machinery,4251 1660 DATAGrain,245 1670 DATAFruit,224 1680 DATAMeat,2196 1690 DATAOther food items,3145 1700 DATALivestock,998 1710 DATAChemicals,1245 1720 DATALight Electrical,12679 1730 DATAClothing,5398 1740 DATASteel,4962 1750 DATAFurnishings,6298 1760 DATAFarm machinery,9639 1770 DATAIndustrial Machinery,9458 1780 DATAConstruction materials,452 1790 DATALeisure goods,1928 1800 DATAMedical equipment,5462 1810 DATAIndustrial waste,-9547 1820 DATATimber,7324 1830 DATA"Fuel and service",342 1840 DATA1000 Ton vessel,12000000 1850 DATA3000 Ton vessel,14000000 1860 DATA6000 Ton vessel,17000000 1870 DATA9000 Ton vessel,20000000 1880 DATA12000 Ton vessel,24000000 1890 DATA15000 Ton vessel,29000000 1900 DATA20000 Ton vessel,31000000 1910 DATA24000 Ton vessel,35000000 1920 DATA30000 Ton vessel,40000000 1930 DATA33000 Ton vessel,45000000 1940 DATA40000 Ton vessel,48000000 1950 DATA45000 Ton vessel,52000000 1960 DATA49000 Ton vessel,58000000 1970 DATA,0 1980 DATA,0 1990 DATA,0 2000 DATA,0 2010 DATA,0 2020 DATA,0 2030 DATAThe aim of this sea trading 2040 DATAsimulation is to make as 2050 DATAmuch money as you can by 2060 DATAsailing between the major 2070 DATAports of the world trading 2080 DATAgoods between them. 2090 DATAYou can buy larger vessels 2100 DATAto carry more goods if you 2110 DATAhave enough money. 2120 DATAThe simulation offers you a number 2130 DATAof options which can be selected 2140 DATAby using the space bar and RETURN 2150 DATAThe options are: 2160 DATA1. See information about all the 2170 DATAgoods and equipment that you can 2180 DATAbuy and sell, also you will see 2190 DATAa list of all the ports that you 2200 DATAcan visit. 2210 DATA2. Buy goods to trade. Use 2220 DATAthe space bar and RETURN to 2230 DATAselect the item that you wish 2240 DATAto buy. Then enter the amount. 2250 DATAif you see a * next to the 2260 DATA"price, this means that you" 2270 DATAhave some of those goods 2280 DATAin your cargo. 2290 DATA3. Sell goods. Use the space 2300 DATAbar and return to select the 2310 DATA"item that you wish to sell, then" 2320 DATAenter the amount. 2330 DATA4. Buy fuel or a new vessel. 2340 DATA"When you buy a new vessel," 2350 DATAmake sure that you have used up 2360 DATAall the fuel and sold all the 2370 DATAgoods from your old vessel because 2380 DATAyou cannot transfer any of it to 2390 DATAyour new one. 2400 DATA5. Sail to another port. 2410 DATA The amount 2420 DATAof fuel that you will need is 2430 DATAshown after the name of the port. 2440 DATAOnce on the way there are a number 2450 DATA"of things that can happen, bad" 2460 DATAweather for instance. The program 2470 DATAwill tell you if anything happens. 2480 DATA6. Save a game 2490 DATAYou can save the game to play 2500 DATAanother time. 2510 DATAYou will then be 2520 DATAable to load the game 2530 DATAand continue where you left off. 2540 DATA7. Load a game. 2550 DATAYou can load a game that you saved 2560 DATApreviously using the above option. 2570 DATAyou can then 2580 DATAcontinue from where you left off. 2590 DATAYou start with a small ship. 2600 DATAYou will need to buy goods 2610 DATAcheaply and sell them for more 2620 DATAthan you paid for them. So check 2630 DATAthe average prices and buy when 2640 DATAthe price of the goods for sale in 2650 DATAthe port are lower. Sell when the 2660 DATAprice at another port is higher. 2665 DATAThe average price is shown in the 2666 DATAend column when you buy or sell. 2670 DATAWhen you have made enough money 2680 DATA"trading like this, you will be" 2690 DATAable to buy a larger vessel and 2700 DATAtherefore deal in larger amounts 2710 DATAof goods. You will also be able to 2720 DATAcarry more fuel and travel 2730 DATAfurther. When you buy a new ship 2740 DATAyou will get nothing for the old 2750 DATA"one, so be very careful when" 2760 DATAdeciding whether to buy a new ship. 2770 DATAOne of the items is shown as a 2780 DATAnegative amount. This means that 2790 DATA"you are paid to take it, but have" 2800 DATA to pay to get rid of it. 2810 DATA"If you are short of cash, don't" 2820 DATA"worry, you are allowed to go" 2830 DATAoverdrawn for fuel and crew. 2840 DATAIf you run out of money or 2850 DATAPress ESCAPE you will be 2860 DATAshown a summary of your 2870 DATAgame so far. You can then 2880 DATAchoose to continue or restart 2890 DATA"" 2900 DEFPROCo:RESTORE2950 2910 ENVELOPE1,1,0,0,0,1,1,1,60,-4,-1,-1,120,90:B$="C D EF G A Bc d ef":C$="55551111555511555566661154321155":E$="88887777888877888899997A88357A88":D$="123475.A.86...9":T%=9:O%=6:READA$,Q%:I%=TIME:W%=0:X%=FALSE:Y%=O%+4*INSTR(D$,LEFT$(C$,1)) 2920 REPEAT 2930 IFW%<=0W%=W%+3:IFLENC$SOUND&11,1,Y%-(S%-Y%)*X%,-1:SOUND&12,1ANDX%,S%+12,-1:X%=NOTX%:Y%=O%+4*INSTR(D$,LEFT$(C$,1)):S%=O%+4*INSTR(D$,LEFT$(E$,1)):C$=RIGHT$(C$,LENC$+X%):E$=RIGHT$(E$,LENE$+X%) 2940 W%=W%-Q%:C%=C%-Q%:SOUND&13,1,O%+4*(INSTR(B$,LEFT$(A$,1))-(INSTR(A$,"#")>0)+12),-1:I%=I%+Q%*T%:REPEATUNTILTIME>I%:READ A$,Q%:UNTILA$="dne":ENDPROC 2950 DATAF,1,F,1,F,1,F,3,F,1,F,1,F,1,F,2,c,1,A,2,F,1,A,2,c,1,f,2,c,1,A,2,F,1,C,1,C,1,C,1,C,3,C,1,C,1,C,1,C,2,G,1,E,2,C,1,E,2,G,1,A#,2,G,1,E,2,C,1 2960 DATAF,1,F,1,F,1,F,3,F,1,F,1,F,1,F,2,c,1,A,2,F,1,A,2,c,1,f,3,F,3,C,2,f,1,e,2,d,1,c,2,A#,1,A,2,G,1,F,3,A,3,F,3,A,2,A#,1 2970 DATAc,1,c,1,c,1,c,3,c,1,c,1,c,1,c,3,d,2,e,1,f,2,e,1,d,2,c,1,A#,2,A,1,A#,2,c,1,d,2,c,1,A#,2,A,1,G,2,F,1,E,2,F,1,G,2,F,1,E,2,C,1,D,2,E,1 2980 DATAF,1,F,1,F,1,F,3,F,1,F,1,F,1,F,3,F,1,F,1,F,1,F,3,F,1,F,1,F,1,F,3,C,2,f,1,e,2,d,1,c,2,A#,1,A,2,G,1,F,3,A,3,F,6,dne,0