10 IF PAGE>&E00 GOTO1460 20 MODE7:PROCinit:PROCoil:PROCplayers 30 REPEAT 40 WEEK%=WEEK%+1 50 FORr%=1TOp-1 60 MODE2:PROCmap:MODE7:PROCdrill 70 IF a=78 THEN 90 80 PROCbore(depth%) 90 PROCsell:game=FALSE:NEXT 100 UNTIL WEEK%>14 110 game=TRUE:MODE2:PROCmap:PROCwait(3):PROCfill:PROCwait(3):PROCscore 120 END 130 ***** 140 DEFPROCinit 150 DIM name$(3),cost%(3,14),wk%(3,14),pl%(3,14),field%(9,13),S$(3,14),tot%(3) 160 WEEK%=0:L=RND(-TIME):game=FALSE:r%=1:ENDPROC 170 DEFPROCplayers 180 FORs%=1TO2:PRINTTAB(6,s%)CHR$141CHR$131"HOW MANY PLAYERS (1-4) ?":NEXT:REPEAT:A=GET:UNTILA>48ANDA<53 190 FORp=1TOA-48:PRINT'TAB(4)CHR$(p+128)"Enter the name of player No. ";p:PRINTTAB(7)CHR$(p+128)"Maximum of eight letters" 200 INPUTTAB(16)name$(p-1):IFLEN(name$(p-1))>8 name$(p-1)=LEFT$(name$(p-1),8) 210 IFLEN(name$(p-1))<1 VDU7,11:GOTO200 220 NEXT:ENDPROC 230 DEFPROCmap:VDU23;8202;0;0;0;:COLOUR131:CLS:COLOUR6:PRINTTAB(6,1)"OIL FIELD":COLOUR1:FORa%=65TO78:PRINTTAB(a%-62,3)CHR$a%:NEXT:FORa%=0TO9:PRINTTAB(1,a%+5);a%TAB(18,a%+5);a%:NEXT:COLOUR7:VDU19,7,3;0; 240 FORa%=3TO16:FORq%=5TO14:PRINTTAB(a%,q%)CHR$227:NEXT:NEXT 250 VDU19,7,7;0;:PROCshow:IF game=TRUE ENDPROC 260 VDU28,1,30,18,16:COLOUR128:CLS:COLOUR(8+r%):PRINTTAB(9-LEN(name$(r%-1))/2,1)name$(r%-1) 270 COLOUR7:PRINTTAB(2,3)"Enter drilling"TAB(3,5)"site details" 280 COLOUR5:PRINT''TAB(3)"Letter ";:REPEAT:P$=GET$:UNTILP$>"@"ANDP$<"O":PRINTP$:P=ASC(P$):SOUND0,-10,1,5 290 COLOUR6:PRINT''TAB(3)"Number ";:REPEAT:R=GET:UNTILR>47ANDR<58:PRINTCHR$R:SOUND0,-10,2,5 300 IF field%(R-48,P-65)>0 AND field%(R-48,P-65)<>3 VDU7:CLS:GOTO260 310 S$(r%-1,WEEK%-1)=P$+"-"+CHR$R:field%(R-48,P-65)=field%(R-48,P-65)+2:PROCwait(1):ENDPROC 320 DEFPROCportfolio:PROCback:FORs%=0TO1:PRINTTAB(8-LEN(name$(r%-1))DIV2,s%)CHR$(128+RND(6))CHR$141;name$(r%-1);"'s Portfolio WEEK ";WEEK%:NEXT:PRINT 330 PRINTTAB(5)"SITE"TAB(14)"COST"TAB(22)"WEEKLY"TAB(33)"P/L" 340 FORa%=1TOWEEK%:IF cost%(r%-1,a%-1)=0 THEN PRINTTAB(1,a%+4)CHR$(64+a%)TAB(3,a%+4)STRING$(37,"*"):PRINTTAB(3,a%+4)" ":GOTO370 350 PROCcalc:pl$=STR$(pl%(r%-1,a%-1)):wk$=STR$(wk%(r%-1,a%-1)) 360 PRINTTAB(1,a%+4)CHR$(64+a%)TAB(6,a%+4)S$(r%-1,a%-1)TAB(13,a%+4);cost%(r%-1,a%-1)TAB(28-LEN(wk$),a%+4)wk$TAB(38-LEN(pl$),a%+4);pl$ 370 NEXT 380 PRINTTAB(22)CHR$133"TOTAL `";:IF tot%(r%-1)<0PRINT;CHR$129;tot%(r%-1) 390 IF tot%(r%-1)>=0 THEN PRINT;CHR$130;tot%(r%-1) 400 ENDPROC 410 DEFPROCdrill:VDU23;8202;0;0;0;:x%=R-48:y%=P-65 420 IF field%(x%,y%)=1 THEN ch%=90+RND(9):co%=5000+RND(2000) 430 IF field%(x%,y%)=2 THEN ch%=70+RND(20):co%=3000+RND(2000) 440 IF field%(x%,y%)=5 THEN ch%=100:co%=10000+RND(4000) 450 FORj%=6TO7:PRINTTAB(18-LEN(name$(p-2))/2,j%)CHR$(128+RND(6))CHR$141name$(r%-1):NEXT 460 PRINTTAB(0,10)CHR$131" The chances of finding oil in this"TAB(11)CHR$131"sector are ";ch%;"%" 470 PRINT'CHR$133" The cost of drilling is `";co%;" per"TAB(11)CHR$133" fifty metres." 480 PRINT'TAB(8)CHR$136CHR$132"Do you wish to drill ?"':PROCv(89,78) 490 IFa=78 ENDPROC 500 PROCrig:FORbg%=11TO22:PRINTTAB(0,bg%)CHR$134CHR$157;TAB(39)CHR$156:NEXT 510 IF ch%=100 depth%=RND(2) 520 IF ch%>97 AND ch%<100 depth%=RND(2)+1 530 IF ch%>94 AND ch%<98 depth%=RND(3)+1 540 IF ch%>88 AND ch%<95 depth%=RND(3)+2 550 IF ch%>79 AND ch%<89 depth%=RND(3)+3 560 IF ch%>69 AND ch%<80 depth%=RND(3)+4 570 IF RND(100)>ch% depth%=8 580 ENDPROC 590 DEFPROCv(f%,l%):REPEAT:a=GET:UNTILa=f%ORa=l%:ENDPROC 600 DEFPROCsell:VDU26:CLS:PROCportfolio 610 IFRND(3)<2ORWEEK%>13PRINTTAB(7,22)CHR$133"Press any key when ready":A=GET:ENDPROC 620 VDU28,0,23,39,21:CLS:PRINTTAB(5)"Do you wish to sell any rigs ?":PROCv(78,89):IFa=78 PROCtax:ENDPROC 630 PRINT'TAB(7)"Which rig will you sell ?":REPEAT:g%=GET:UNTIL(g%>64ANDg%<65+a%-1) 640 IF cost%(r%-1,g%-65)=0 VDU7:PRINTTAB(9)CHR$136CHR$134"NOTHING TO SELL !!!":GOTO620 650 VDU28,0,23,39,0:sp%=(cost%(r%-1,g%-65)DIV2+cost%(r%-1,g%-65)DIVRND((4)+2)) 660 PRINTTAB(3,(g%-64)+4)" ";TAB(4,(g%-64)+4)STRING$(9,"*");" SOLD for `";sp%;" ";STRING$(10,"*") 670 cost%(r%-1,g%-65)=0:tot%(r%-1)=tot%(r%-1)+sp% 680 PRINTTAB(19,WEEK%+5)CHR$132CHR$136"NEW TOTAL `";:IF tot%(r%-1)<0PRINT;CHR$129;tot%(r%-1)ELSE PRINT;CHR$130;tot%(r%-1) 690 GOTO620 700 PROCtax:ENDPROC 710 DEFPROCbore(depth%) 720 PRINTTAB(5,11)CHR$130"DEPTH"TAB(27,11)CHR$129"COST":PROCwait(1):PROCtop 730 PRINTTAB(18,11)CHR$131CHR$255CHR$134CHR$157:SOUND0,-10,6,3:PROCwait(.7):VDU28,2,22,38,12,31,0,0 740 FORdrill=1TOdepth%:SOUND0,-10,6,3:cost%(r%-1,WEEK%-1)=cost%(r%-1,WEEK%-1)+co% 750 IF drill=1 pt=1 ELSE pt=0 760 PRINTTAB(pt)CHR$130;drill*50;" metres";TAB(16)CHR$131CHR$255CHR$134CHR$157; 770 ct$=STR$(cost%(r%-1,WEEK%-1)):PRINTTAB(29-LEN(ct$));CHR$129;"`";ct$:PROCwait(.7) 780 NEXT:pl%(r%-1,WEEK%-1)=-cost%(r%-1,WEEK%-1) 790 vpos=VPOS+12:IF depth%=8 VDU26:PRINTTAB(8,20)CHR$132CHR$136"This well is dry !!!":PROCwait(3):GOTO830 800 VDU26:FORa%=22TOvpos STEP-1:PRINTTAB(0,a%);CHR$132:PROCwait(.3):NEXT 810 PROCspout:wk%(r%-1,WEEK%-1)=cost%(r%-1,WEEK%-1)DIV depth%+(RND(90)*depth%*9) 820 VDU31,1,vpos+1,131:PRINT"This well will give a weekly income"TAB(15)CHR$131"of `";wk%(r%-1,WEEK%-1):PROCwait(4) 830 tot%(r%-1)=tot%(r%-1)+(-cost%(r%-1,WEEK%-1)):IF depth%=8cost%(r%-1,WEEK%-1)=0 840 ENDPROC 850 DEFPROCoil 860 FORx%=0TO9:FORy%=0TO13:field%(x%,y%)=FALSE:NEXT:NEXT 870 FORa%=0TO39 880 x%=RND(10)-1:y%=RND(14)-1:IFfield%(x%,y%)<>0 THEN880 890 field%(x%,y%)=TRUE:NEXT 900 FORa%=0TO9 910 x%=RND(10)-1:y%=RND(14)-1:IFfield%(x%,y%)<>0 THEN910 920 field%(x%,y%)=3:NEXT 930 ENDPROC 940 DEFPROCfill 950 FORx%=0TO9:FORy%=0TO13 960 IF field%(x%,y%)=0ORfield%(x%,y%)=2THENk%=2 970 IF field%(x%,y%)=-1ORfield%(x%,y%)=1THENk%=0 980 IF field%(x%,y%)=3ORfield%(x%,y%)=5THENk%=9 990 COLOURk%:PROCprint:SOUND1,-10,y%*10,1:PROCwait(.25) 1000 NEXT:NEXT:ENDPROC 1010 DEFPROCwait(time):ti=TIME+time*100:REPEAT:UNTILti