Home » Archimedes archive » Games » Holed Out 2 - Designer (1989)(The Fourth Dimension).adf » H3D
H3D
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Games » Holed Out 2 - Designer (1989)(The Fourth Dimension).adf |
Filename: | H3D |
Read OK: | ✔ |
File size: | CBFB bytes |
Load address: | FFFFFB41 |
Exec address: | EF8FC5CC |
File contents
10REM >!DESIGNER.HOLEDOUT3D 20REM PROGRAMMED BY G.J.KEY BETWEEN 16-10-89 AND 20-10-89 30REM (C) THE FOURTH DIMENSION 40REM 50SYS"Hourglass_Smash" 60REM*FX229,1 70REM*FX200,2 80DIM OB%(6),OB$(6),TRX%(96),TRY%(96),HX%(30,30),HY%(30,30),CO%(30),PTS%(30) 90PROCpointer:PROCinitiate 100PROCinstruct 110*FX229 120REMONERROR 130PROCcolours(12) 140*SCHOOSE SCREEN 150*CHANNELVOICE 1 BELL 160PLOT&ED,0,0 170TIME=0 180*FX15 190REPEAT:MOUSEX%,Y%,T% 200IFTIME>3000SOUND1,-15,300,1:TIME=0 210UNTILT%ORINKEY(10)<>TRUE 220*CHANNELVOICE 1 1 230REPEAT 240Ineditor=FALSE 250PROCgetoptions 260ONERROROFF 270REM*FX229,1 280PROCcolours(12) 290Hole%=1:totscore%()=0 300FORT%=1TOnoofplayers:hsp%(T%)=T%:NEXT 310X%=0 320REPEAT 330IFX%>718ORHole%=18UNTILTRUE:UNTILFALSE 340round%=FALSE 350PROCinitcloud 360li%=RND(4)-1 370PROCgetstart 380PROCinitwind 390PROCsetplayer 400REPEAT 410PROCwhichplayer 420IFround%UNTILTRUE:PROCboard:UNTILFALSE 430PROCgetplayvals 440PROClight 450PROCsine(X%,Y%) 460PROCdrawscreen 470PROCspot 480MOVEmx%(g%,Hand%),my%(g%):MOVEBY120,176 490*SGET PLAIN 500*SCHOOSE BALL1 510PLOT&ED,xs%,ys% 520MOVEmx%(g%,Hand%),my%(g%):MOVEBY120,176 530*SGET BLACK 540*SCHOOSE 20 550ba%=sty%=y1%:GCOL8,0 560IFba%PLOT&ED,bag%(Hand%),-754 570REPEAT 580VDU23,27;m%(1,g%)|:PLOT&ED,mx%(g%,Hand%),my%(g%) 590PROCgetinfo 600D%=FALSE:B%=FALSE 610W%=TRUE:K%=FALSE 620PROCwalter 630PROCflight 640IFABSsx%>640PROCchofsc 650IFNOTW%PROCsplash:UNTILFALSE:ELSEUNTILTRUE 660PROCputback 670UNTILFALSE 680REM 690 700DEFPROCedit 710exit=FALSE:BEATS20 720island=412 730REMCourse$="EDITOR" 740LOCALflag,mem,len,par,NO%,NT%,ob%,closed:REM,PTS%(),HX%(),HY%(),CO%(),TRX%(),TRY%(),OB%(),OB$():DIM OB%(6),OB$(6),TRX%(96),TRY%(96),HX%(20,20),HY%(20,20),CO%(20),PTS%(20),sx%,sy% 750OB%(0)=9:OB$(0)="ROUGH " 760OB%(1)=7:OB$(1)="FAIRWAY" 770OB%(2)=5:OB$(2)="GREEN " 780OB%(3)=2:OB$(3)="BUNKER " 790OB%(4)=4:OB$(4)="PATH " 800OB%(5)=6:OB$(5)="WATER " 810OB%(6)=&107:OB$(6)="TEE " 820REPEAT 830closed=TRUE 840PROCsetmainv 850mappoint%=0:map?(mappoint%+&2F8)=1 860len=500:par=4:PROCstartup 870PROCgrid 880REPEAT 890PROCchooseob 900IFmem<10VDU7:UNTIL0 910IFexit UNTILTRUE:UNTILTRUE:ENDPROC 920mem-=2 930PROCbutt(0) 940PROCgetcent 950PROCreq("DRAW OUTLINE") 960COLOUR8:PRINTTAB(0,2)"LEFT BUTTON TO FIX THE LOCATION OF A POINT" 970PRINT"RIGHT BUTTON TO JOIN ENDS TO COMPLETE THE OBJECT AND EXIT":COLOUR13 980sx%=-HY%(NO%,0)*1.5:sy%=-HX%(NO%,0)*1.5 990REMMOVE-HY%(NO%,0)*1.5,-HX%(NO%,0)*1.5 1000REPEAT 1010COLOUR134:COLOUR12:VDU28,0,31,79,0:PRINTTAB(62,1);~mem;" ":COLOUR13:COLOUR139:VDU28,1,30,78,25 1020PROCmou 1030GCOL3,13 1040LINEsx%,sy%,X%,Y% 1050WAIT:WAIT 1060LINEsx%,sy%,X%,Y% 1070IFY%>-368THEN 1080IFK%=4THEN 1090IF mem>=4THEN 1100GCOL0,OB%(ob%) 1110PTS%(NO%)+=1 1120MOVE-HY%(NO%,0)*1.5,-HX%(NO%,0)*1.5 1130MOVEsx%,sy% 1140PLOT85,X%,Y% 1150sx%=X%:sy%=Y% 1160PROCgrid 1170REMMOVE-HY%(NO%,0)*1.5,-HX%(NO%,0)*1.5:MOVEX%,Y% 1180HX%(NO%,PTS%(NO%))=-Y%/1.5 1190HY%(NO%,PTS%(NO%))=-X%/1.5 1200PRINTTAB(58,1);"OBJECT HAS ";PTS%(NO%);" POINTS" 1210mem-=4 1220PROCbutt(0) 1230ENDIF 1240ENDIF 1250ENDIF 1260closed=K%=1 1270IFPTS%(NO%)=20closed=TRUE 1280UNTILclosed 1290IFPTS%(NO%)>1THEN 1300PLOT85,-HY%(NO%,1)*1.5,-HX%(NO%,1)*1.5 1310NO%+=1 1320ELSE 1330mem=mem+2+4*(PTS%(NO%)+1) 1340VDU7 1350ENDIF 1360PROCredisplay 1370UNTIL0 1380ENDPROC 1390 1400DEFPROCsetmainv 1410PROCcolours(12):MOUSEON 1420REMCOLOUR3,208,160,144:REM FLESH 1430REMCOLOUR3,32,144,208:REM WATER 1440 1450COLOUR0,80,80,80 1460PROCmesbox(0,256,1279,768) 1470PROCmesbox(0,0,1279,256) 1480VDU24,16;272;1263;1007;:GCOL134:CLG 1490VDU28,1,30,78,25:COLOUR139:CLS 1500ENDPROC 1510 1520DEFPROCstartup 1530holep=1:PROCreadhole2 1540ENDPROC 1550 1560DEFPROCinputlength 1570REM*FX229,1 1580REPEAT 1590CLS 1600COLOUR8:PRINTTAB(0,2)"ACCEPTABLE RANGE IS BETWEEN 50 AND 504 YARDS"'"YOU CAN NO LONGER ABORT THE 'NEW' OPTION"CHR$7:COLOUR13 1610INPUTTAB(0,0)"PLEASE ENTER HOLE LENGTH {YARDS} "len 1620UNTILlen>49ANDlen<505 1630PROCgetpar 1640REMPROCwrimap(len) 1650mem=&2E6 1660HX%(0,0)=0 1670HY%(0,0)=len DIV2 1680HX%(0,1)=160 1690HY%(0,1)=len+40 1700HX%(0,2)=-160 1710HY%(0,2)=len+40 1720HX%(0,3)=-180 1730HY%(0,3)=-180 1740HX%(0,4)=180 1750HY%(0,4)=-180 1760CO%(0)=9 1770PTS%(0)=4 1780mem=mem-5*4-2 1790DEFPROCstartup2 1800VDU26,24,12;268;1267;1011;:CLG 1810ORIGINisland+len,640 1820COLOUR134:COLOUR12:PRINTTAB(2,1);len;" YARDS : PAR ";par;" : HOLE No. ";map?(mappoint%+&2F8);" : T X ";:P%=mappoint%+&2E8:PRINT;FNmap2 DIV21;" : T Y ";FNmap2 DIV21;" : Memory &";~mem 1830VDU28,1,30,78,25:COLOUR139:CLS 1840GCOL9 1850MOVE-HY%(0,0)*1.5,HX%(0,0)*1.5 1860FORT%=1TO4 1870MOVE-HY%(0,0)*1.5,HX%(0,0)*1.5 1880PLOT85,-HY%(0,T%)*1.5,HX%(0,T%)*1.5 1890NEXT 1900PLOT85,-HY%(0,1)*1.5,HX%(0,1)*1.5 1910*FX229,0 1920ENDPROC 1930 1940DEFPROCgetpar 1950LOCALnpar,A% 1960*FX229 1970LOCALERROR:ONERRORLOCAL:GOTO2070 1980SYS6,229,0,255 TO ,A% 1990*FX15 2000REPEAT:CLS 2010COLOUR8:PRINTTAB(0,2)"THE CURRENT PAR IS ";par;"."'"THE ACCEPTABLE RANGE IS 2 TO 5":IFA%=0PRINT"ESCAPE TO ABORT" 2020COLOUR13:INPUTTAB(0,0)"WHAT IS THE HOLE PAR ? "npar 2030IFnpar<2ORnpar>5 VDU7 2040UNTILnpar>1ANDnpar<6 2050par=npar 2060P%=mappoint%+&2E8:PROCwrimap(0) 2070REM*FX229,1 2080ENDPROC 2090 2100DEFPROCgetcent 2110COLOUR8:PROCreq("POSITION CENTRE"):COLOUR13 2120PTS%(NO%)=0 2130REPEAT 2140PROCmou 2150IFY%>-368THEN 2160IFK%THEN 2170closed=FALSE 2180HX%(NO%,0)=-Y%/1.5 2190HY%(NO%,0)=-X%/1.5 2200ENDIF 2210ENDIF 2220UNTILclosed=FALSE 2230mem-=4 2240PROCbutt(0) 2250ENDPROC 2260 2270DEFPROCgrid 2280GCOL0,0 2290LOCALX%,Y% 2300X%=-1500 2310VDU23,6,&55,&55,&55,&55,&55,&55,&55,&55 2320REPEAT 2330MOVEX%*1.5,-384:PLOT29,X%*1.5,640 2340X%+=50 2350UNTILX%>600 2360VDU23,6,&11,&11,&11,&11,&11,&11,&11,&11 2370FORY%=-200TO200STEP50 2380MOVE-1000,Y%*1.5:PLOT29,1000,Y%*1.5 2390NEXT 2400LINE0,-384,0,640:LINE-1500,0,1000,0 2410GCOL5:CIRCLE0,0,25*1.5 2420GCOLCO%(NO%) 2430ENDPROC 2440 2450DEFPROCshsc(T%,C%) 2460IFC%COLOUR128+8:COLOUR11:ELSE COLOUR128+11:COLOUR8 2470CASET%OF 2480WHEN1:PRINTTAB(30,2) "DELETE OBJECT" 2490WHEN2:PRINTTAB(30,3)"ALTER OBJECT" 2500WHEN3:PRINTTAB(47,2)"SAVE COURSE" 2510WHEN4:PRINTTAB(64,2)"LOAD COURSE" 2520WHEN5:PRINTTAB(47,3)"READ HOLE" 2530WHEN6:PRINTTAB(64,3)"WRITE HOLE" 2540WHEN7:PRINTTAB(47,4)"ISLAND" 2550WHEN8:PRINTTAB(64,4)"'NEW' HOLE" 2560WHEN9:PRINTTAB(47,5)"INSERT TREES"CHR$30 2570WHEN10:PRINTTAB(64,5)"VIEW HOLE"CHR$30 2580WHEN11:PRINTTAB(30,4)"ALTER PAR" 2590WHEN12:PRINTTAB(30,5)"ALTER No."CHR$30 2600WHEN13:PRINTTAB(9,5)"EXIT EDITOR"CHR$30 2610ENDCASE 2620COLOUR128+11:COLOUR13 2630ENDPROC 2640 2650DEFPROCchooseob 2660dob%=TRUE 2670REPEAT 2680PROCshowcols 2690COLOUR15:PRINTTAB(2,2)"HOLED OUT COURSE DESIGNER" 2700PRINTTAB(6,3)"EDITING "Course$ 2710 2720FORT%=1TO13:PROCshsc(T%,FALSE):NEXT 2730ob%=TRUE 2740odob%=1 2750obob%=0 2760REPEAT 2770*FX15 2780MOUSEX%,Y%,K% 2790IFY%+640>193ANDY%+640<224THEN 2800dob%=(X%-48+island+len)DIV176 2801IFisland<0ANDdob%>0dob%=TRUE 2810IFgreen ANDdob%=2dob%=TRUE 2820IFtee ANDdob%=6dob%=TRUE 2830IF(X%-48+island+len)MOD176>112dob%=TRUE 2840IFdob%<>TRUE PROCsc2(FALSE,dob%) 2850IFdob%<>odob%PROCsc2(TRUE,odob%):odob%=dob% 2860IFK%ANDdob%<>TRUE THEN 2870ob%=dob% 2880PROCshowchosen:GCOLOB%(ob%):VDU7 2890COLOUR12 2900ENDIF 2910ELSE 2920IFdob%<>TRUE:PROCsc2(TRUE,dob%):dob%=TRUE 2930ENDIF 2940IFob%=TRUE 2950bX%=(X%-160+island+len) 2960bob%=FALSE 2961IFY%<-574ANDY%>-606ANDbX%>610ANDbX%<800:bob%=9:IFK%PROCinserttrees:UNTILTRUE:UNTIL0 2962IFY%>-577ANDY%<-544ANDbX%>610ANDbX%<704:bob%=7:IFK%PROCdrawisland:UNTILTRUE:UNTIL0 2963IFisland<0THEN3100 2970IFY%>-577ANDY%<-544ANDbX%>334ANDbX%<480:bob%=11:IFK%PROCgetpar:PROCredisplay:UNTILTRUE:UNTIL0 2980IFY%>-606ANDY%<-574ANDbX%>334ANDbX%<480:bob%=12:IFK%PROCgetholeno:PROCredisplay:UNTILTRUE:UNTIL0 2990IFY%>-513ANDY%<-481ANDbX%>334ANDbX%<541ANDNO%>1:bob%=1:IFK%PROCdelete:UNTILTRUE:UNTIL0 3000IFY%>-545ANDY%<-512ANDbX%>334ANDbX%<526ANDNO%>1:bob%=2:IFK%PROCalter:UNTILTRUE:UNTIL0 3010IFY%>-513ANDY%<-481ANDbX%>610ANDbX%<782:bob%=3:IFK%PROCsavecourse:UNTILTRUE:UNTIL0 3020IFY%>-513ANDY%<-481ANDbX%>880ANDbX%<1056:bob%=4:IFK%PROCloadcourse:UNTILTRUE:UNTIL0 3030IFY%>-545ANDY%<-512ANDbX%>610ANDbX%<752:bob%=5:IFK%PROCreadhole:UNTILTRUE:UNTIL0 3040IFY%>-545ANDY%<-512ANDbX%>880ANDbX%<1040:bob%=6:IFK%PROCwritehole:UNTILTRUE:UNTIL0 3050IFY%<-574ANDY%>-606ANDbX%>888ANDbX%<1024:bob%=10:IFK%Ineditor=TRUE:PROCdrawmap(0):Ineditor=FALSE:VDU4:PROCsetmainv:PROCstartup2:PROCredisplay:OSCLI"FX229,1":UNTILTRUE:UNTIL0 3060REMIFY%<-574ANDY%>-606ANDbX%>610ANDbX%<800:bob%=9:IFK%PROCinserttrees:UNTILTRUE:UNTIL0 3070IFY%<-574ANDY%>-606ANDbX%>2ANDbX%<172:bob%=13:IFK%exit=TRUE:UNTILTRUE:UNTILTRUE:ENDPROC 3080IFY%>-577ANDY%<-544ANDbX%>610ANDbX%<704:bob%=7:IFK%PROCdrawisland:UNTILTRUE:UNTIL0 3090IFY%>-577ANDY%<-544ANDbX%>880ANDbX%<1040:bob%=8:IFK%PROCnewit:UNTILTRUE:UNTIL0 3100IFbob%<>obob%PROCshsc(obob%,FALSE):obob%=0 3110IFbob%PROCshsc(bob%,TRUE):obob%=bob% 3120ENDIF 3130REMPRINTTAB(0,4)Y%,X%-48+island+len; 3140UNTILob%<>TRUE 3150CO%(NO%)=OB%(ob%) 3160IFob%=6PROCdrawtee:UNTIL0 3170IFob%=2PROCdrawgreen:UNTIL0 3180UNTILTRUE 3190ENDPROC 3200 3210DEFPROCsc2(C%,dob%) 3220IFdob%=TRUE ENDPROC 3230IFC%=0AND((dob%=2ANDgreen)OR(dob%=6ANDtee))ENDPROC 3240IFC% COLOUR128+11:COLOUROB%(dob%) ELSE COLOUR128+OB%(dob%):COLOUR11 3250PRINTTAB(dob%*11+2,0)OB$(dob%); 3260COLOUR128+11:COLOUR13 3270ENDPROC 3280 3290DEFPROCdrawisland 3300island=island EOR-348 3310PROCredisplay 3320ENDPROC 3330 3340DEFPROCnewit 3350LOCALA$ 3360*FX229 3370LOCALERROR:ONERRORLOCAL:GOTO3480 3380CLS 3390PRINT"NEW ---- ARE YOU SURE [Y/N] ?"CHR$7 3400COLOUR8:PRINT'"'NEW' WILL PRODUCE A BLANK HOLE TEMPLATE DESTROYING THE CURRENT HOLE DATA"'"ESCAPE TO ABORT":COLOUR13 3410*FX15 3420REPEAT:A$=INKEY$(0):UNTILA$<>"":REM BUG IN BASIC PREVENTS USE OF GET WITH A LOCAL ERROR HANDLER 3430IFA$<>"Y"ANDA$<>"y"ENDPROC 3440tee=FALSE:green=FALSE 3450PROCinputlength 3460NO%=1:NT%=TRUE 3470PROCgrid 3480REM*FX229,1 3490ENDPROC 3500 3510DEFPROCwritehole 3520LOCALgp%,tp% 3530CLS 3540PRINT"WRITING HOLE ";mappoint%DIV&300+1 3550PRINT"ARE YOU SURE [Y/N] ?"CHR$7 3560COLOUR8:PRINT'"IT IS NECCESSARY TO WRITE THE HOLE DATA INTO MEMORY" 3570PRINT"BEFORE IT CAN BE SAVED TO DISC OR BEFORE USING 'VIEW HOLE'":COLOUR13 3580*FX15 3590*FX229 3600LOCALERROR:ONERRORLOCAL:GOTO3980 3610REPEAT 3620A$=INKEY$(0) 3630UNTILA$<>"" 3640IFA$<>"Y"ANDA$<>"y"GOTO3980 3650P%=0 3660PROCverify:IFP%>&2E8 VDU7:PRINT"ERROR MEMORY ABOUT TO BE OVERWRITTEN!!"'"PRESS SPACE":REPEATUNTILGET=32:GOTO3980 3670gp%=0:tp%=0 3680FORT%=1TONO%-1 3690IFCO%(T%)=&107 tp%=TRUE 3700IFCO%(T%)=5 gp%=T% 3710NEXT 3720IFgp%=FALSE CLS:COLOUR8:PRINTTAB(0,1)"THERE IS NO GREEN THEREFORE I CAN'T WRITE THIS HOLE!"'"PLEASE PRESS SPACE"CHR$7:REPEATUNTILINKEY-99:GOTO3980 3730IFtp%=FALSE CLS:COLOUR8:PRINTTAB(0,1)"THERE IS NO TEE THEREFORE I CAN'T WRITE THIS HOLE!"'"PLEASE PRESS SPACE"CHR$7:REPEATUNTILINKEY-99:GOTO3980 3740IF gp%<>NO%-1THEN 3750X%=gp%:PROCdelete2 3760PROCdrawgreen2 3770ENDIF 3780P%=mappoint%+&2E8:PROCwrimap(teeY%):PROCwrimap(teeX%) 3790P%=mappoint% 3800A%=EVAL("&"+STR$(FNdistance(teeX%,teeY%))):map?(P%+&2FA)=A%:map?(mappoint%+&2FB)=A%DIV256 3810map?(P%+&2F9)=par 3820map?(P%+&2F8)=holep MOD19-(holep>18) 3830PROCwrimap1(NT%+1) 3840FORT%=0TONT% 3850PROCwrimap(TRX%(T%)) 3860PROCwrimap(TRY%(T%)) 3870NEXT 3880PROCwrimap1(NO%) 3890FORT%=0TONO%-1 3900C%=CO%(T%):IFC%=2C%=1 3910PROCwrimap1(C%) 3920PROCwrimap1(PTS%(T%)) 3930FORI%=0TOPTS%(T%) 3940PROCwrimap(HX%(T%,I%)) 3950PROCwrimap(HY%(T%,I%)) 3960NEXT 3970NEXT 3980REM*FX229,1 3990ENDPROC 4000 4010DEFPROCverify 4020P%+=1 4030FORT%=0TONT% 4040P%+=2 4050P%+=2 4060NEXT 4070P%+=1 4080FORT%=0TONO%-1 4090P%+=2 4100FORI%=0TOPTS%(T%) 4110P%+=2 4120P%+=2 4130NEXT 4140NEXT 4150ENDPROC 4160 4170DEFPROCwrimap1(A%) 4180map?P%=A%:P%+=1 4190ENDPROC 4200 4210DEFPROCwrimap(A%) 4220A%=A%*21 4230map?P%=A%:P%+=1 4240map?P%=A%>>8:P%+=1 4250ENDPROC 4260 4270DEFPROCgetholeno 4280LOCALn% 4290*FX229 4300LOCALERROR:ONERRORLOCAL GOTO4390 4310REPEAT 4320CLS 4330COLOUR8:PRINTTAB(0,2)"CURRENT HOLE No. IS ";holep'"CHANGING THE HOLE No. IS A WAY OF COPYING ONE HOLE TO ANOTHER"'"ESCAPE TO ABORT":COLOUR13 4340*FX15 4350INPUTTAB(0,0)"WHAT IS THE NEW HOLE No. {1 TO 18} ? "n% 4360UNTILn%>0ANDn%<19 4370holep=n% 4380mappoint%=(holep-1)*&300 4390REM*FX229,1 4400ENDPROC 4410 4420DEFPROCreadhole 4430*FX229 4440LOCALERROR:ONERRORLOCAL GOTO4860 4450green=FALSE:tee=TRUE 4460REPEAT 4470CLS 4480*FX15 4490COLOUR8:PRINTTAB(0,2)"THE EXISTING HOLE DATA WILL BE LOST IF IT HAS NOT BEEN WRITTEN INTO"'"MEMORY BY FIRST SELECTING THE 'WRITE HOLE' OPTION!" 4500PRINT"ESCAPE TO ABORT":COLOUR13 4510INPUTTAB(0,0)"WHICH HOLE DO YOU WISH TO EDIT {1 TO 18} "holep 4520UNTILholep>0ANDholep<19 4530DEFPROCreadhole2 4540P%=(holep-1)*&300 4550len=(VAL(STR$~((map!(P%+&2FA))AND&FFFF))) 4560par=map?(P%+&2F9) 4570mappoint%=P% 4580P%=mappoint%+&2E8:teeY%=FNmap2 DIV21:teeX%=FNmap2 DIV21 4590IFINTFNdistance(teeX%,teeY%)<>len len=INTFNdistance(teeX%,teeY%) 4600P%=mappoint% 4610mem=&2E8 4620tee=FALSE:green=FALSE 4630NT%=FNmap1-1 4640FORT%=0TONT% 4650TRX%(T%)=FNmap2 DIV21 4660TRY%(T%)=FNmap2 DIV21 4670mem-=4 4680NEXT 4690 4700NO%=FNmap1:mem-=1 4710FORT%=0TONO%-1 4720CO%(T%)=FNmap1:mem-=1 4730IFCO%(T%)=5green=TRUE 4740IFCO%(T%)=1CO%(T%)=2 4750 4760PTS%(T%)=FNmap1:mem-=1 4770FORI%=0TOPTS%(T%) 4780HX%(T%,I%)=FNmap2 DIV21 4790HY%(T%,I%)=FNmap2 DIV21 4800mem-=4 4810NEXT 4820IF CO%(T%)=7ANDPTS%(T%)=3ANDABS(HY%(T%,1)-teeX%)<45 tee=TRUE:CO%(T%)=&107 4830NEXT 4840PROCstartup2 4850PROCredisplay 4860REM*FX229,1 4870ENDPROC 4880 4890DEFPROCloadcourse 4900PROCcolours(9):PROCscreenbox 4910MOUSETO530,512:MOUSEON 4920Ineditor=TRUE 4930PROCgetcourse("EDIT") 4940Ineditor=FALSE 4950PROCcolours(12) 4960PROCsetmainv 4970mappoint%=0:map?(mappoint%+&2F8)=1 4980len=500:par=4:PROCstartup 4990PROCgrid:REM:tee=TRUE 5000MOUSEON 5010ENDPROC 5020 5030DEFPROCsavecourse 5040LOCALPointer,R0 5050DIM Pointer 28 5060$Pointer="<Obey$Dir>.MODULES.SHOOSH" 5070*FX229 5080LOCALERROR 5090ONERRORLOCALIFERR<>17:PROCredisplay:VDU26:PROCmeswind2(" "+REPORT$+" ","PLEASE","PRESS SPACE",1,3):REPEATUNTILINKEY-99:ELSEVDU24,16;272;1263;1007;:GOTO5400 5100REPEAT 5110SYS"OS_File",5,Pointer TO R0 5120IFR0<>0 THEN 5130PROCmeswind2("I CAN'T SAVE TO THE DESIGNER DISC","PLEASE INSERT ANOTHER DISC","AND PRESS SPACE",1,3) 5140REPEATUNTILINKEY-99 5150ENDIF 5160UNTILR0=0 5170ONERRORLOCAL:PROCredisplay:PROCmeswind2(" "+REPORT$+" ","PLEASE","PRESS SPACE",2,3):REPEATUNTILGET=32:PROCredisplay:IFERR=17:GOTO5400 5180*MOUNT 5190ORIGIN0,128 5200REPEAT 5210PROCcentbox(FALSE,STRING$(13," ")+"CURRENT DISC CATALOGUE"+STRING$(13," "),8,20):COLOUR8 5220VDU24,16;272;1263;1007; 5230REMGCOL128+11:CLG:GCOL128+6 5240VDU28,17,21,62,3,4 5250file$="" 5260CLS:VDU14:*. 5270VDU15:*FX15 5280PRINT'"PLEASE ENTER COURSE NAME."; 5290SYS"OS_ReadLine",Pointer,10,32,126 TO ,R0 5300IFR0=0 UNTIL0 5310Pointer?(R0+1)=13 5320file$=$Pointer 5330FORT%=1TOR0 5340IFMID$(file$,T%,1)=" " MID$(file$,T%,1)="_" 5350NEXT 5360UNTILfile$>"" 5370FORT%=1TOLENfile$ 5380OSCLI("SAVE $."+file$+" "+STR$~map+" +3600") 5390OSCLI("SETTYPE $."+file$+" C1F") 5400REM*FX229,1 5410PROCredisplay 5420ENDPROC 5430 5440DEFPROCinserttrees 5450REM*FX229,1 5460LOCALflag,C% 5470CLS:PROCbutt(0) 5480PRINT"INSERT OR DELETE TREES"':COLOUR8 5490PRINT"LEFT BUTTON TO INSERT" 5500PRINT"MIDDLE BUTTON TO DELETE" 5510PRINT"RIGHT BUTTON TO EXIT" 5520PRINT"MAXIMUM OF 96 TREES PER HOLE"CHR$30:COLOUR13 5530REPEAT 5540MOUSEX%,Y%,K% 5550X%=X%DIV6*6 5560Y%=Y%DIV6*6 5570C%=POINT(X%,Y%) 5580PRINTTAB(40,1);NT%+1;" TREES INSERTED" 5590PRINTTAB(40,2)"&";~mem;" BYTES LEFT " 5600IFFNdistance(-X%/1.5,-Y%/1.5)<40ANDK%=4UNTIL0 5610IF(C%=6ORC%=0)ANDK%=4UNTIL0 5620IFK%=4THEN 5630IFNT%<95THEN 5640IFmem>4THEN 5650NT%+=1 5660GCOL14 5670CIRCLEFILLX%,Y%,8 5680TRX%(NT%)=-Y%/1.5:TRY%(NT%)=-X%/1.5 5690mem-=4 5700PROCbutt(0) 5710ELSEVDU7 5720ENDIF 5730ENDIF 5740ENDIF 5750IFK%=2THEN 5760IFNT%>TRUE THEN 5770flag=FALSE 5780FORT%=0TONT% 5790IFABS(-TRY%(T%)*1.5-X%)<12ANDABS(-TRX%(T%)*1.5-Y%)<12flag=T%+1:T%=1000 5800NEXT 5810IFflag THEN 5820IFflag<>NT%+1THEN 5830FORT%=flag-1 TONT%-1 5840TRX%(T%)=TRX%(T%+1):TRY%(T%)=TRY%(T%+1) 5850NEXT 5860ENDIF 5870NT%-=1 5880mem+=4 5890PROCredisplay 5900PROCbutt(0) 5910ENDIF 5920ELSEVDU7 5930ENDIF 5940ENDIF 5950UNTILK%=1 5960PROCbutt(0) 5970*FX229,0 5980ENDPROC 5990 6000DEFPROCdrawtee 6010IFtee VDU7:ENDPROC 6020IFmem<18PRINT"NOT ENOUGH MEMORY!! PRESS SPACE:"CHR$7:REPEATUNTILGET=32:ENDPROC 6030PROCbutt(0) 6040COLOUR8:PRINTTAB(1,2)"POSITION TEE THEN ANY BUTON TO EXIT":COLOUR11 6050tee=TRUE 6060LOCALx%,y%,a%,b,c,d%,e% 6070a%=180:y%=0:x%=-len*1.5 6080MOUSETOx%,y% 6090REPEAT 6100MOUSEX%,Y%,K% 6110IFY%>y%ANDa%>160a%-=1 6120IFY%<y%ANDa%<200 a%+=1 6130x%=(COSRADa%*len)*1.5 6140y%=(SINRADa%*len)*1.5 6150MOUSETOx%,y% 6160UNTILK% 6170X%=-x%/1.5:Y%=-y%/1.5 6180HX%(NO%,0)=Y%:HY%(NO%,0)=X% 6190P%=mappoint%+&2E8:PROCwrimap(Y%):PROCwrimap(X%) 6200len=INTFNdistance(X%,Y%) 6210b=SINRADa%:c=COSRADa% 6220HX%(NO%,0)=b*-10+-c*20+Y%:HY%(NO%,0)=c*-10+b*20+X% 6230HX%(NO%,1)=b*10+-c*20+Y%:HY%(NO%,1)=c*10+b*20+X% 6240HX%(NO%,2)=b*10+-c*-20+Y%:HY%(NO%,2)=c*10+b*-20+X% 6250HX%(NO%,3)=b*-10+-c*-20+Y%:HY%(NO%,3)=c*-10+b*-20+X% 6260teeX%=X%:teeY%=Y% 6270mem-=18 6280PTS%(NO%)=3 6290NO%+=1 6300PROCredisplay 6310ENDPROC 6320 6330DEFPROCalter 6340LOCALx%,y%,x1%,y1%,x2%,y2%,x3%,y3%,flag,C% 6350*FX229 6360LOCALERROR:ONERRORLOCAL PROCredisplay:OSCLI"FX229,1":ENDPROC 6370CLS:COLOUR8:PRINTTAB(0,2)"THE OVERALL SHAPE AND POSITION OF AN OBJECT CAN BE ADJUSTED"'"BUT NOT THE NUMBER OF EDGE POINTS."'"ESCAPE TO ABORT":COLOUR13 6380REPEAT 6390PROCfindone:PROCredisplay 6400PRINTTAB(0,0)"SELECT AND MOVE POINTS TO THEIR REQUIRED POSITIONS " 6410COLOUR 8:PRINTTAB(0,4)"RIGHT BUTTON TO EXIT"'"ESCAPE TO ABORT"CHR$30:COLOUR13 6420IFCO%(X%)=5VDU7:UNTIL0 6430UNTILTRUE 6440PROCoutline 6450PROCbutt(0) 6460REPEAT 6470REPEAT 6480MOUSEx%,y%,K% 6490flag=FALSE 6500IFK%THEN 6510FORT%=0TOPTS%(X%) 6520IFABS(-HY%(X%,T%)*1.5-x%)<12ANDABS(-HX%(X%,T%)*1.5-y%)<12flag=TRUE:x%=T% 6530NEXT 6540ENDIF 6550IFK%=1UNTILTRUE:UNTILTRUE:PROCredisplay:OSCLI"FX229,1":ENDPROC 6560UNTILflag 6570x1%=-HY%(X%,x%MODPTS%(X%)+1)*1.5 6580y1%=-HX%(X%,x%MODPTS%(X%)+1)*1.5 6590T%=x%-1:IFT%<1T%=PTS%(X%) 6600x2%=-HY%(X%,T%)*1.5 6610y2%=-HX%(X%,T%)*1.5 6620x3%=-HY%(X%,x%)*1.5 6630y3%=-HX%(X%,x%)*1.5 6640GCOL3,8 6650IFx%<>0THEN 6660REPEAT 6670WAIT:WAIT 6680LINEx1%,y1%,x3%,y3% 6690LINEx3%,y3%,x2%,y2% 6700CIRCLEx3%,y3%,8 6710REPEAT 6720MOUSEx3%,y3%,K% 6730x3%=x3%DIV6*6 6740y3%=y3%DIV6*6 6750PRINTTAB(58,0)"Y ";-INT(x3%/1.5),"X ";INT(y3%/1.5);" " 6760*FX112,2 6770C%=POINT(x3%,y3%) 6780*FX112,1 6790REMIFC%<>7ANDBEAT=0:SOUND1,-15,120,4 6800IFK%=0ANDNOT((C%=7ANDisland>0)OR(island<0ANDx3%>600ANDx3%<900ANDABSy3%<220))K%=4 6810UNTILK%=0OR(C%=7ANDisland>0)OR(island<0ANDx3%>600ANDx3%<900ANDABSy3%<220) 6820LINEx1%,y1%,x3%,y3% 6830LINEx3%,y3%,x2%,y2% 6840CIRCLEx3%,y3%,8 6850UNTILK%=0 6860ELSE 6870REPEAT 6880WAIT:WAIT 6890CIRCLEx3%,y3%,8 6900REPEAT 6910MOUSEx3%,y3%,K% 6920x3%=x3%DIV6*6 6930y3%=y3%DIV6*6 6940PRINTTAB(58,0)"Y ";-INT(x3%/1.5),"X ";INT(y3%/1.5);" " 6950*FX112,2 6960C%=POINT(x3%,y3%) 6970*FX112,1 6980REMIFC%<>7ANDBEAT=0:SOUND1,-15,120,4 6990IFK%=0ANDNOT((C%=7ANDisland>0)OR(island<0ANDx3%>600ANDx3%<900ANDABSy3%<220))K%=4 7000UNTILK%=0OR(C%=7ANDisland>0)OR(island<0ANDx3%>600ANDx3%<900ANDABSy3%<220) 7010CIRCLEx3%,y3%,8 7020UNTILK%=0 7030ENDIF 7040PRINTTAB(58,0)" " 7050HY%(X%,x%)=-x3%/1.5 7060HX%(X%,x%)=-y3%/1.5 7070PROCredisplay 7080PROCoutline 7090UNTIL0 7110ENDPROC 7120 7130DEFPROCoutline 7140GCOL0,8 7150MOVE-HY%(X%,1)*1.5,-HX%(X%,1)*1.5 7160FORI%=1TOPTS%(X%) 7170DRAW-HY%(X%,I%)*1.5,-HX%(X%,I%)*1.5 7180NEXT 7190DRAW-HY%(X%,1)*1.5,-HX%(X%,1)*1.5 7200FORI%=1TOPTS%(X%) 7210CIRCLE-HY%(X%,I%)*1.5,-HX%(X%,I%)*1.5,8 7220NEXT 7230CIRCLE-HY%(X%,0)*1.5,-HX%(X%,0)*1.5,8 7240ENDPROC 7250 7260DEFPROCdelete 7270CLS 7280*FX229 7290COLOUR8:PRINTTAB(0,2)"CLICKING ON ONE OF THE RED OBJECT CENTRES WILL RESULT IN THAT OBJECTS"'"DELETION. PLEASE TAKE CARE!"'"ESCAPE TO ABORT":COLOUR13 7300LOCALERROR:ONERRORLOCAL PROCredisplay:GOTO7470 7310PROCfindone 7320DEFPROCdelete2 7330IFCO%(X%)=5green=FALSE 7340IFCO%(X%)=&107 tee=FALSE 7350mem=mem+6+PTS%(X%)*4 7360IFX%<>NO%-1THEN 7370FORT%=X%+1TONO% 7380FORI%=0TOPTS%(T%) 7390HX%(T%-1,I%)=HX%(T%,I%) 7400HY%(T%-1,I%)=HY%(T%,I%) 7410NEXT 7420CO%(T%-1)=CO%(T%) 7430PTS%(T%-1)=PTS%(T%):NEXT 7440ENDIF 7450NO%-=1 7460PROCredisplay 7470REM*FX229,1 7480ENDPROC 7490 7500DEFPROCfindone 7510LOCALERROR:ONERRORLOCAL ENDPROC 7520PRINTTAB(0,0)"THERE ARE ";NO%-1;" OBJECTS DEFINED. SELECT A CENTRE POINT" 7530GCOL8 7540FORT%=1TONO%-1 7550CIRCLE-HY%(T%,0)*1.5,-HX%(T%,0)*1.5,8 7560NEXT 7570REPEAT 7580MOUSEX%,Y%,K% 7590flag=FALSE 7600IFK%THEN 7610FORT%=1TONO%-1 7620IF(ABS(-HY%(T%,0)*1.5-X%))<12AND(ABS(-HX%(T%,0)*1.5-Y%))<12flag=TRUE:X%=T%:T%=NO%-1 7630NEXT 7640ENDIF 7650UNTILflag 7660ENDPROC 7670 7680DEFPROCredisplay 7690VDU26:*FX112,2 7700CLG:GCOL7 7710ORIGINisland+len,640 7720MOVE-HY%(0,0)*1.5,-HX%(0,0)*1.5 7730FORI%=1TOPTS%(0) 7740MOVE-HY%(0,0)*1.5,-HX%(0,0)*1.5 7750PLOT85,-HY%(0,I%)*1.5,-HX%(0,I%)*1.5 7760NEXT 7770PLOT85,-HY%(0,1)*1.5,-HX%(0,1)*1.5 7780*FX112,1 7790VDU26,24,12;268;1267;1011;4:OFF:CLG 7800ORIGINisland+len,640 7810DEFPROCredisplay2 7820COLOUR134:COLOUR12:PRINTTAB(2,1);len;" YARDS : PAR ";par;" : HOLE No. ";map?(mappoint%+&2F8);" : T X ";:P%=mappoint%+&2E8:PRINT;FNmap2 DIV21;" : T Y ";FNmap2 DIV21;" : Memory &";~mem 7830VDU28,1,30,78,25:COLOUR139:REM:CLS 7840IFNO%>0THEN 7850FORT%=0TONO%-1 7860GCOLCO%(T%) 7870MOVE-HY%(T%,0)*1.5,-HX%(T%,0)*1.5 7880FORI%=1TOPTS%(T%) 7890MOVE-HY%(T%,0)*1.5,-HX%(T%,0)*1.5 7900PLOT85,-HY%(T%,I%)*1.5,-HX%(T%,I%)*1.5 7910NEXT 7920PLOT85,-HY%(T%,1)*1.5,-HX%(T%,1)*1.5 7930IFCO%(T%)=&107 ORCO%(T%)=5 GCOL12:POINT-HY%(T%,0)*1.5,-HX%(T%,0)*1.5 7940NEXT 7950ENDIF 7960IFNT%>TRUE THEN 7970GCOL14 7980FORT%=0TONT% 7990CIRCLEFILL-TRY%(T%)*1.5,-TRX%(T%)*1.5,8 8000NEXT 8010ENDIF 8020PROCgrid 8030ENDPROC 8040 8050DEFPROCdrawgreen 8060IFgreen VDU7:ENDPROC 8070IFmem<54PRINT"NOT ENOUGH MEMORY!! PRESS SPACE:"CHR$7:REPEATUNTILGET=32:ENDPROC 8080DEFPROCdrawgreen2 8090green=TRUE 8100mem-=2 8110HX%(NO%,0)=0 8120HY%(NO%,0)=0 8130mem-=4 8140CO%(NO%)=5 8150PTS%(NO%)=0 8160MOVE0,0 8170FORT%=0TO330STEP30 8180PTS%(NO%)+=1 8190mem-=4 8200MOVE0,0 8210HX%(NO%,PTS%(NO%))=SINRADT%*25 8220HY%(NO%,PTS%(NO%))=COSRADT%*25 8230PLOT85,-HY%(NO%,PTS%(NO%))*1.5,-HX%(NO%,PTS%(NO%))*1.5 8240NEXT 8250PLOT85,-HY%(NO%,1)*1.5,-HX%(NO%,1)*1.5 8260NO%+=1 8270PROCredisplay 8280ENDPROC 8290 8300DEFPROCmou 8310LOCALC% 8320REPEAT 8330MOUSEX%,Y%,K% 8340X%=X%DIV6*6 8350Y%=Y%DIV6*6 8360IFob%>2ANDob%<6THEN 8370IF(X%/1.5)<-(len-(ABS(Y%DIV6)))THEN 8380X%=-(len-(ABS(Y%DIV6)))*1.5 8390X%=X%DIV6*6 8400MOUSETOX%,Y% 8410ENDIF 8420ENDIF 8430PRINTTAB(58,0)"Y ";-INT(X%/1.5),"X ";INT(Y%/1.5);" " 8440PRINTTAB(58,2);~mem;" BYTES LEFT" 8450PRINTTAB(58,3);NO%;" OBJECTS DRAWN" 8460*FX112,2 8470C%=POINT(X%,Y%) 8480*FX112,1 8490IFC%<>7ANDK%ANDBEAT=0:SOUND1,-15,120,4 8500UNTIL(C%=7ANDisland>0)OR(ob%=0ANDisland<0ANDX%>600ANDX%<900ANDABSY%<220) 8510ENDPROC 8520 8530DEFPROCreq(A$) 8540VDU28,1,30,20,30:CLS 8550COLOUR8:PRINTA$; 8560VDU28,1,30,78,25,7 8570ENDPROC 8580 8590DEFPROCshowcols 8600CLS 8610FORT%=0TO6 8620COLOUROB%(T%):PRINTTAB(T%*11+2)OB$(T%); 8630NEXT 8640ENDPROC 8650DEFPROCshowchosen 8660CLS:COLOUROB%(ob%) 8670PRINTTAB(0,0)"DRAWING "OB$(ob%) 8680ENDPROC 8690 8700DEFPROCinstruct 8710PROCcolours(9):PROCscreenbox 8720IFFNquest("DO YOU REQUIRE INSTRUCTIONS?","YES","NO",0):PROCbutt(0):ENDPROC 8730PROCcolours(12):PROCmesbox(0,0,1279,1023) 8740GCOL12:RECTANGLE998,640,160,256 8750LINE1058,896,1066,940:DRAW1090,940:DRAW1098,896 8760GCOL139:GCOL1:FILL1078,900 8770COLOUR1,240,240,192 8780COLOUR2,240,208,208 8790COLOUR3,240,240,224 8800GCOL1:RECTANGLEFILL1000,644,156,248 8810GCOL3:RECTANGLEFILL1000,644,156,124 8820FORT%=0TO2 8830GCOL12:RECTANGLE1012+T%*50,800,32,64 8840GCOL2:RECTANGLEFILL1014+T%*50,804,28,56 8850GCOL12:MOVE1020+T%*50,850:VDU5:PRINT;T%+1 8860NEXT:VDU4:OFF 8870COLOUR139:COLOUR12 8880VDU28,2,30,78,3 8890PRINTTAB(0,0)"Game control in the Archimedes version of ";:COLOUR9:PRINT"HOLED OUT";:COLOUR12:PRINT" is via"'"the MOUSE, the keys are numbered as indicated on the right." 8900PRINT'"The differences to the instructions as shown in the manual"'"are as follows:" 8910PRINT'"STROKEPLAY/"TAB(16)"There can be up to 6 players in any round" 8920PRINT'"GAME CONTROLS/"''"1. SELECT CLUB. Use the MOUSE to indicate the club required then"TAB(16)"press any button to go to the next stage" 8930PRINT'"2. DIRECTION. Position the cursor with the MOUSE then either." 8940PRINTSPC(16)"Press [2] to go to the next stage." 8950PRINTSPC(16)"Press [1] or [3] to select another club" 8960PRINT'"3. POWER."TAB(16)"As soon as the direction has been selected by pressing [2]" 8970PRINTTAB(16)"the bar indicator will start to move." 8980PRINTTAB(16)"Pressing [2] will give a Normal shot" 8990PRINTTAB(16)"Pressing [1] will give a Hooked shot" 9000PRINTTAB(16)"Pressing [3] will give a Sliced shot" 9010PRINT'"To read courses from alternate discs simply insert the disc when in the" 9020PRINT"COURSES window and press ESCAPE." 9030PRINT'TAB(22)"PRESS ANY BUTTON TO CONTINUE" 9040PROCbutt(0) 9050REPEAT:MOUSEX%,Y%,K%:UNTILK%:SOUND1,-10,200,1 9060PROCbutt(0) 9070VDU28,2,30,78,1 9080CLS:COLOUR14 9090 9100PRINT'"Operation of the EDITOR :-" 9110COLOUR12 9120PRINT'"The main EDITOR panel consists of a plan of the hole being edited and an" 9130PRINT"Options window. The options are split into two groups." 9140PRINT'"The first contains 7 different coloured drawing options which are used to" 9150PRINT"draw the various objects on the hole {Green, Fairway, Water ect}." 9160PRINT'"The second group are all coloured red and control the EDITOR actions" 9170PRINT"{Load and Save files, Object deletion ect} all these actions have their own" 9180PRINT"Help text. The best way to discover their operation is to try them out for" 9190PRINT"yourself." 9200PRINT'"All course files are saved in the $ directory on drive :0 and it is not" 9210PRINT"possible to save files to the EDITOR disc. There are no special actions to" 9220PRINT"read or write to another disc simply insert the disc before selecting Load" 9230PRINT"or Save." 9240PRINT'"Before you can 'SAVE' a hole as part of a course or 'VIEW' a hole you must" 9250PRINT"use the 'WRITE HOLE' option to store the data into course memory." 9260PRINT'"When SAVING a course to disc you can use spaces in the file name so that" 9270PRINT"names such as 'PINE ISLES' are quite acceptable, The spaces will be replacedby underline characters when the file is saved and restored on loading." 9280PRINT''TAB(22)"PRESS ANY BUTTON TO CONTINUE" 9290PROCbutt(0) 9300REPEAT:MOUSEX%,Y%,K%:UNTILK%:SOUND1,-10,200,1 9310PROCbutt(0):CLS 9320PRINT"Operation of the EDITOR :-" 9330PRINT'"It is possible to draw one object over the top of another, so some thought" 9340PRINT"will be required when constructing a hole if the final result is to be as" 9350PRINT"you visualise it. Placing areas of water or bunkers underneath the green" 9360PRINT"can have unpredictable results so try to avoid doing this." 9370PRINT'"If you select the 'ISLAND' option it will toggle the hole plan to the left" 9380PRINT"of the screen. In this mode you will only be able to draw an island with" 9390PRINT"colour 'ROUGH' and position trees on the island. Select 'ISLAND' again to" 9400PRINT"return to the normal editing mode." 9410PRINT'"The hole plan is divided into 50 yard squares these should be used in" 9420PRINT"conjunction with the club distances on your quick reference card to ensure" 9430PRINT"that you don't draw an object that is too big to hit the ball over." 9440PRINT'"At the top of the Hole Plan, the Hole length, Par, Tee X and Tee Y " 9450PRINT"coordinates and amount of Hole memory remaining are displayed. The" 9460PRINT"X and Y coordinates are reversed from the normal convention, X being" 9470PRINT"vertical and Y horizontal, Zero being centred upon the hole." 9480PRINT"If you can't draw an object check that there is enough memory left for" 9490PRINT"the operation." 9500PRINT'"Finally you don't have to design all 18 holes before saving a course to disc" 9510PRINT"so as soon as you have created a hole you can save the course, leave the " 9520PRINT"editor with the 'EXIT EDITOR' option and test play you own holes!" 9530PRINT''TAB(22)"PRESS ANY BUTTON TO CONTINUE" 9540PROCbutt(0) 9550REPEAT:MOUSEX%,Y%,K%:UNTILK%:SOUND1,-10,200,1 9560PROCbutt(0) 9570ENDPROC 9580REM 9590DEFPROCchofsc 9600*FX112,3 9610CLS 9620IFSGNx1%=TRUE ORIGIN1280,768+O%-6166*green%:ELSEORIGIN0,768+O%-6166*green% 9630P%=rough 9640GCOLFNmap1:PROCdrawit 9650GCOLFNmap1:PROCdrawit 9660P%=water:GCOL6:PROCdrawit 9670G%=POINT(xs%,ys%) 9680IFG%=6ORG%=11W%=FALSE 9690*FX112,1 9700ENDPROC 9710REM 9720DEFPROCpreview 9730REPEAT 9740PROCcolours(9):PROCscreenbox:MOUSEON 9750lhol%=FNchoseahole 9760IFNOTlhol%PROCdrawmap(lhol%) 9770UNTILlhol%=TRUE 9780ENDPROC 9790REM 9800DEFPROCdrawmap(holeno%) 9810IFIneditor THENREM*FX229,1 9820PROCinitcloud 9830li%=2:PROCinitwind 9840LOCALr%,l%,OL%,A%,AA%,T%,I%,SP%,X%,Y%,A$ 9850X%=640:Y%=512 9860REPEAT 9870P%=mappoint%+holeno%:SP%=P% 9880OL%=(VAL(STR$~((map!(P%+&2FA))AND&FFFF))) 9890AA%=FNmap1 9900FORA%=1TOAA% 9910l%=FNmap2/10.5 9920r%=FNmap2/10.5 9930x%(A%)=r%:y%(A%)=l% 9940NEXT 9950I%=FNmap1-1 9960T%=FNmap1:T%=FNmap1:P%=P%+T%*4+4 9970l%=0:r%=0:t%=0:b%=0 9980PROCcolours(12):PROCscreenbox:GCOL137 9990PROCmesbox(532-OL%,294,OL%*2+212,692) 10000VDU26,24,548-OL%;310;548+OL%+180;970;:CLG 10010ORIGIN592+OL%,640 10020FORT%=1TOI%:GCOLFNmap1 10030np%=FNmap1 10040PROCmap2(CX%,CY%,4):PROCmap2(SX%,SY%,4) 10050FORI%=1TOnp%-1:PROCmap2(XI%,YI%,85):MOVECX%,CY%:NEXT 10060PLOT85,SX%,SY% 10070NEXT:GCOL14 10080FORT%=1TOAA%:IFPOINT(-x%(T%),-y%(T%))<>6CIRCLEFILL-x%(T%),-y%(T%),8 10090NEXT:GCOL0:POINT0,0 10100VDU26 10110PROCsmallmes(144,166,12,"POSITION POINTER ON VIEWPOINT THEN PRESS THE MIDDLE BUTTON") 10120IFIneditor A$="EDITOR":ELSE:A$="HOLE SELECTOR" 10130A$="RIGHT BUTTON TO RETURN TO THE "+A$ 10140PROCsmallmes(608-LENA$*8,66,12,A$) 10150MOUSEON:MOUSETOX%,Y% 10160REPEAT 10170MOUSERECTANGLE548-OL%,310,OL%*2+180,660 10180MOUSEX%,Y%,T% 10190IFX%<688THENr%=(688-X%)DIV8ELSEr%=(X%-688)DIV8 10200MOUSERECTANGLE548-OL%,310+r%,OL%*2+180,660-r%*2 10210y%=((592+OL%)-X%)DIV2 10220x%=(640-Y%)DIV2 10230 10240IFT%=4P%=SP%+&2E8:X%=FNmap2:Y%=FNmap2:PROCdisplayview2(X%,Y%,SP%):UNTILTRUE:UNTILFALSE 10250IFT%=2PROCdisplayview(X%,Y%,SP%):UNTILTRUE:UNTILFALSE 10260UNTILT%:UNTILTRUE 10270ENDPROC 10280REM 10290DEFPROCdisplayview(X%,Y%,SP%) 10300YY%=(((592+OL%)-X%)DIV2)*21 10310X%=((640-Y%)DIV2)*21 10320MOUSEOFF 10330LOCALA$,mappoint%:mappoint%=SP% 10340DEFPROCdisplayview2(X%,YY%,SP%) 10350IFABSX%<42ANDABSYY%<42X%=42:YY%=42 10360OL%=(FNdistance(X%,YY%)):green%=(OL%<525):OL%=OL%/21 10370A$=Course$+" HOLE "+STR$(holeno%DIV&300+1)+", " 10380IFgreen% A$=A$+STR$(OL%*3)+" FEET":ELSEA$=A$+STR$OL%+" YARDS" 10390A$=A$+" FROM HOLE" 10400PROClight 10410PROCsine(X%,Y%) 10420PROCdrawscreen 10430VDU26:X%=640-LENA$*8-24:PROCsmallmes(X%,860,13,A$) 10440PROCbutt(0) 10450REPEATMOUSEX%,Y%,SP%:UNTILSP% 10460PROCbutt(0) 10470ENDPROC 10480REM 10490DEFPROCmap2(RETURN x%,RETURN y%,p%) 10500y%=-FNmap2/10.5:x%=-FNmap2/10.5 10510PLOTp%,x%,y% 10520ENDPROC 10530REM 10540DEFFNchoseahole 10550PROCbutt(0) 10560LOCALX%,Y%,K%,F%,N%,out% 10570PROCcentbox(TRUE,"PLEASE SELECT A HOLE",12,10) 10580PROCmesbox(464,444,148,100):PROCdono2(1) 10590PROCmesbox(704,536,80,80) 10600PROCsmallmes(704,462,12,"EXIT") 10610PROCmesbox(704,368,80,80) 10620GCOL15:MOVE744,600:MOVE720,554:PLOT85,768,554 10630MOVE744,388:MOVE720,432:PLOT85,768,432:LINE720,436,768,436 10640GCOL8:LINE720,432,744,388:DRAW768,432 10650LINE720,558,744,600:DRAW768,558 10660MOUSERECTANGLE480,388,432,220 10670N%=1:REPEAT:MOUSEX%,Y%,K% 10680IFK%THEN 10690IFX%>716THEN 10700IFX%<772THEN 10710IFY%>544N%=N%MOD18+1:PROCdono2(N%):SOUND1,-10,200,1:PROCbutt(0) 10720IFY%<442N%-=1:N%=N%-(N%=0)*18:PROCdono2(N%):SOUND1,-10,200,1:PROCbutt(0) 10730ENDIF 10740IFY%>472ANDY%<516out%=TRUE:F%=TRUE:SOUND1,-10,200,1 10750ENDIF 10760IFX%<604THEN 10770IFY%>456ANDY%<540F%=TRUE 10780ENDIF 10790ENDIF 10800UNTILF%=TRUE 10810=((N%-1)*&300)ORout% 10820REM 10830DEFPROCdono2(A%) 10840LOCALA$,T%:A$=STR$(A%) 10850GCOL11:RECTANGLEFILL476,464,124,64 10860MOVE476-32*(A%<10),520 10870GCOL12:FORT%=1TOLENA$:PROCdouble(VAL(MID$(A$,T%,1))):NEXT 10880ENDPROC 10890REM 10900DEFPROCgetoptions 10910FORT%=1TO6:jump%(T%)=T%:NEXT 10920*CHANNELVOICE 1 1 10930REPEAT:REPEAT 10940PROCcolours(9):PROCscreenbox 10950MOUSETO640,496 10960IFFNquest("EDIT HOLES OR PLAY ROUND?","PLAY","EDIT",0)PROCgetcourse("EDIT"):PROCedit:OSCLI"FX229":UNTILFALSE 10970PROCbutt(0):*FX229 10980mappoint%=0:PROCgetcourse("PLAY"):mapstart%=map+mappoint% 10990IFFNquest("PREVIEW HOLES OR PLAY ROUND?","PLAY","PREVIEW",0)PROCpreview:UNTILFALSE:ELSEUNTILTRUE 11000play%=FNquest("UNDER WHICH RULES ARE YOU TO PLAY?","MATCH PLAY","STROKE PLAY",0)+1:REM 1=MATCH 2=STROKE 11010noofplayers=FNnoplaying 11020FORT%=1TOnoofplayers 11030PROCgetname(T%) 11040hand%(T%)=1-FNquest("IS "+name$(T%)+" LEFT OR RIGHT HANDED?","LEFT","RIGHT",0) 11050PROCgetskill(T%) 11060NEXT 11070IFFNconfirm(noofplayers)UNTIL0 11080UNTILTRUE 11090REM CHANGE THE FOLLOWING NUMBER TO (HOLE NO. -1)*&300 11100REMmappoint%=&2400 11110ENDPROC 11120 11130DEFPROCgetcourse(E$) 11140LOCALN%,I%,T%,C%,C$,E%,X,Y,Z 11150*FX21,9 11160PROCbutt(0):*FX229 11170LOCALERROR:ONERRORLOCAL:IFERR<>17PROCcentbox(TRUE," "+REPORT$+" ",8,1):ORIGIN0,-256:PROCcentbox(FALSE,"PLEASE PRESS SPACE",8,1):ORIGIN0,0:REPEATUNTILINKEY-99:ELSEIFIneditor:OSCLI"FX229,1":ENDPROC 11180*FX15 11190C%=1:E%=-368:I%=0 11200REPEAT 11210PROCreaddir 11220IFI%=0THEN 11230*FX15 11240PROCcentbox(TRUE,"NO COURSES ON THIS DISC!",5,1):VDU7:N%=INKEY(300) 11250ORIGIN0,-256:PROCcentbox(FALSE,"PLEASE PRESS SPACE",8,1):ORIGIN0,0:REPEATUNTILINKEY-99 11260ENDIF 11270UNTILI%<>0 11280N%=((I%+1)DIV2*36)DIV32 11290PROCcentbox(TRUE,"COURSES AVAILABLE TO "+E$,5,N%+2) 11300T%=512-I%DIV2*18 11310MOUSERECTANGLE272,T%-24,736,I%*18 11320FORN%=1TOI% 11330PROCshowcat(N%,8+(N%=1)*2) 11340NEXT 11350OX=1 11360REPEAT 11370MOUSEX,Y,Z 11380X=-(X>640)+((T%-20+I%*18)-Y)DIV36*2+1 11390IFX>I%X=I% 11400IFX<>OX PROCshowcat(OX,8):PROCshowcat(X,6):OX=X 11410UNTILZ 11420Course$=FNno_s(F$(X)) 11430OSCLI"L. $."+F$(X)+" "+STR$~map 11440REM*FX229,1 11450ENDPROC 11460 11470DEFPROCshowcat(N%,C%) 11480VDU5 11490LOCALE% 11500IFN%AND1 E%=-368:ELSE E%=48 11510GCOL3+C% 11520RECTANGLEFILL640+E%,T%+I%*18-16-((N%+1)DIV2)*36,320,32 11530GCOLC% 11540MOVE640+E%,T%+I%*18+12-((N%+1)DIV2)*36 11550PRINTFNno_s(F$(N%)) 11560ENDPROC 11570 11580DEFFNno_s(C$) 11590LOCALT% 11600FORT%=1TOLENC$ 11610IFMID$(C$,T%,1)="_"MID$(C$,T%,1)=" " 11620NEXT 11630=C$ 11640 11650DEFPROCreaddir 11660LOCALR4,T%,C%,name,Point,buffer,filetype 11670*MOUNT 11680DIM Point 11,buffer 34,name 2 11690$name="*":filetype=&C1F 11700$Point="$"+CHR$0:R4=0 11710REPEAT 11720SYS"OS_GBPB",10,Point,buffer,77,R4,34,name TO ,,,,R4 11730IFbuffer!&10=1AND((!buffer>>8)AND&FFF)=filetype THEN 11740I%+=1:T%=&14 11750REPEAT 11760C%=buffer?T% 11770T%-=(C%<>0) 11780UNTILT%=&1EORC%=0 11790buffer?T%=13 11800F$(I%)=$(buffer+&14) 11810ENDIF 11820UNTILR4=-1 11830ENDPROC 11840 11850REM 11860DEFFNconfirm(T%) 11870LOCALN%,I%,A$:I%=(T%+(T%AND1)) 11880PROCbutt(0) 11890PROCcolours(12):PROCscreenbox 11900PROCcentbox(FALSE," ARE THE FOLLOWING GAME OPTIONS CORRECT? ",15,10+I%) 11910VDU28,10,20+I%DIV2,69,13-I%DIV2,4:OFF 11920COLOUR12:COLOUR139:PRINT;T%;" PLAYER"; 11930IFT%<>1PRINT"S"; 11940PRINT", PLAYING AT ";Course$;", UNDER "; 11950CASEplay%OF 11960WHEN1:PRINT"MATCH"; 11970WHEN2:PRINT"STROKE"; 11980ENDCASE 11990PRINT" PLAY RULES" 12000PRINTTAB(0,1)STRING$(60,"-") 12010COLOUR6:PRINTTAB(0,2)"NAME"TAB(22)"DEXTERITY"TAB(46)"SKILL":COLOUR12 12020PRINTTAB(0,3)STRING$(60,"-") 12030PRINTTAB(0,4); 12040PROCboardcol 12050FORN%=1TOT% 12060COLOURN%+4 12070PRINTname$(N%)TAB(22); 12080CASEhand%(N%)OF 12090WHEN0:PRINT"RIGHT"; 12100WHEN1:PRINT"LEFT"; 12110ENDCASE 12120PRINT" HANDED"TAB(46); 12130A$=FNskillname(currents%(N%)) 12140PRINTA$ 12150NEXT 12160COLOUR12:PRINTSTRING$(60,"-") 12170PROCsmallmes(520,368-I%*16,8,"YES") 12180PROCsmallmes(680,368-I%*16,8,"NO") 12190MOUSERECTANGLE536,376-I%*16,208,44:MOUSE ON 12200REPEAT 12210MOUSEX%,Y%,K% 12220UNTIL(X%<590ORX%>692)ANDK% 12230SOUND1,-10,200,1 12240=X%>692 12250ENDPROC 12260REM 12270DEFPROCboardcol 12280COLOUR5,208,0,0 12290COLOUR6,144,128,80 12300COLOUR7,112,112,112 12310COLOUR8,240,112,0 12320COLOUR9,96,96,48 12330COLOUR10,208,80,144 12340ENDPROC 12350REM 12360DEFPROCgetskill(T%) 12370PROCbutt(0) 12380LOCALX%,Y%,K%,F%,N% 12390PROCcentbox(TRUE,"WHAT IS "+name$(T%)+"S SKILL LEVEL?",15,12) 12400PROCmesbox(356,464,416,64):PROCdoskill(currents%(T%)) 12410PROCmesbox(820,540,80,80) 12420PROCmesbox(820,372,80,80) 12430GCOL15:MOVE860,604:MOVE836,558:PLOT85,884,558 12440MOVE860,388:MOVE836,432:PLOT85,884,432:LINE836,436,884,436 12450GCOL8:LINE836,432,860,388:DRAW884,432 12460LINE836,562,860,604:DRAW884,562 12470MOUSERECTANGLE372,388,514,220 12480N%=1:REPEAT:MOUSEX%,Y%,K% 12490IFK%THEN 12500IFX%>836THEN 12510IFY%>544ANDN%<4N%+=1:PROCdoskill(N%):SOUND1,-10,200,1:PROCbutt(0) 12520IFY%<442ANDN%>1N%-=1:PROCdoskill(N%):SOUND1,-10,200,1:PROCbutt(0) 12530ENDIF 12540IFX%<780THEN 12550IFY%>475ANDY%<514F%=TRUE 12560ENDIF 12570ENDIF 12580UNTILF%=TRUE 12590SOUND1,-10,200,1 12600currents%(T%)=N% 12610ENDPROC 12620REM 12630DEFPROCdoskill(T%) 12640LOCALA$ 12650A$=FNskillname(T%) 12660GCOL11:RECTANGLEFILL372,480,12*32,32 12670GCOL12:MOVE372,508:PRINTA$ 12680ENDPROC 12690REM 12700DEFFNskillname(T%) 12710LOCALA$ 12720CASET%OF 12730WHEN1:A$="BEGINNER" 12740WHEN2:A$="ENTHUSIAST" 12750WHEN3:A$="AMATEUR" 12760WHEN4:A$="PROFESSIONAL" 12770ENDCASE 12780=A$ 12790REM 12800DEFPROCgetname(T%) 12810PROCbutt(0) 12820LOCALX%,Y%,K%,Q,OX%,OY%,A$,B$:A$=name$(T%) 12830IFnoofplayers>1THEN 12840CASET%OF 12850WHEN1:B$="FIRST " 12860WHEN2:B$="SECOND " 12870WHEN3:B$="THIRD " 12880WHEN4:B$="FOURTH " 12890WHEN5:B$="FIFTH " 12900WHEN6:B$="SIXTH " 12910ENDCASE 12920ENDIF 12930IFLENA$<10A$=A$+STRING$(10-LENA$," ") 12940PROCcentbox(TRUE,"WHAT IS THE "+B$+"PLAYERS NAME?",15,8) 12950MOUSERECTANGLE306,480,634,48 12960PROCsmallmes(784,472,11,"OK") 12970PROCsmallmes(288,472,11,A$) 12980MOUSEOX%,OY%,K%:TIME=1000 12990REPEAT 13000PROCbutt(0) 13010A$=name$(T%) 13020MOVE336,516:PRINTA$; 13030GCOL139:*FX21 13040REPEAT 13050Q=INKEY(0):IFQ<>TRUE OR(X%<702ANDK%) TIME=0:MOUSEOX%,OY%,K%:MOUSEOFF 13060IFQ<>127Q=Q AND223 13070IF(Q>64ANDQ<91)ORQ=127THEN 13080IFLENA$<>10ANDQ<>127A$=A$+CHR$Q:VDUQ:SOUND1,-10,200,1 13090IFLENA$<>0ANDQ=127A$=LEFT$(A$,LENA$-1):VDUQ:SOUND1,-10,200,1 13100ENDIF 13110MOUSEX%,Y%,K% 13120IFTIME>500ORABS(X%-OX%)>8ORABS(Y%-OY%)>8MOUSEON 13130UNTIL(X%>792ANDK%)ORQ=13 13140IFA$=""SOUND1,-15,125,20:name$(T%)=defname$(T%):TIME=0:UNTILFALSE 13150SOUND1,-10,200,1:UNTILTRUE 13160GCOL140:name$(T%)=A$ 13170defname$(T%)=A$ 13180ENDPROC 13190REM 13200DEFFNnoplaying 13210PROCbutt(0) 13220IFplay%=1THEN=2 13230LOCALX%,Y%,K%,F%,N% 13240PROCcentbox(TRUE,"HOW MANY PLAYERS?",12,10) 13250PROCmesbox(464,444,84,100):PROCdono(1) 13260PROCmesbox(704,536,80,80) 13270PROCmesbox(704,372,80,80) 13280GCOL15:MOVE744,600:MOVE720,554:PLOT85,768,554 13290MOVE744,388:MOVE720,432:PLOT85,768,432:LINE720,436,768,436 13300GCOL8:LINE720,432,744,388:DRAW768,432 13310LINE720,558,744,600:DRAW768,558 13320MOUSERECTANGLE480,384,292,220 13330N%=1:REPEAT:MOUSEX%,Y%,K% 13340IFK%THEN 13350IFX%>716THEN 13360IFY%>544ANDN%<6N%+=1:PROCdono(N%):SOUND1,-10,200,1:PROCbutt(0) 13370IFY%<442ANDN%>1N%-=1:PROCdono(N%):SOUND1,-10,200,1:PROCbutt(0) 13380ENDIF 13390IFX%<540THEN 13400IFY%>456ANDY%<540F%=TRUE 13410ENDIF 13420ENDIF 13430UNTILF%=TRUE 13440SOUND1,-10,200,1 13450=N% 13460REM 13470DEFPROCdono(A%) 13480GCOL11:RECTANGLEFILL476,468,60,64 13490MOVE476,520 13500GCOL12:PROCdouble(A%) 13510ENDPROC 13520REM 13530DEFFNquest(A$,B$,C$,H%) 13540LOCALL%,D%,R% 13550R%=704+FNlength(LENC$) 13560L%=600-FNlength(LENB$) 13570PROCcentbox(TRUE,A$,12,6+H%) 13580D%=464-H%*32 13590PROCsmallmes(L%,D%,11,B$) 13600PROCsmallmes(704,D%,11,C$) 13610MOUSERECTANGLEL%+16,D%+8,R%-L%-64,48 13620MOUSE ON 13630PROCbutt(0) 13640REPEAT:MOUSEL%,R%,D% 13650UNTILD%AND(L%<568ORL%>712) 13660SOUND1,-10,200,1 13670D%=-(L%>712) 13680=D% 13690REM 13700DEFFNlength(L%) 13710L%+=3:IF(L%AND1)-0L%+=1 13720=L%*32 13730REM 13740DEFPROCdouble(C%) 13750C%=128+4*C% 13760VDUC%,C%+1,8,8,10,C%+2,C%+3,11 13770ENDPROC 13780REM 13790DEFPROCscreenbox 13800LOCALM%:M%=MODEDIV6 13810PROCmesbox(0,0,1279,1023) 13820VDU24,16;16;1263;1007;:GCOL140:CLG 13830DEFPROCtextwind 13840VDU28,1,30,38*M%,1:COLOUR140:CLS 13850ENDPROC 13860REM 13870DEFPROCcentbox(cls,A$,C%,H%) 13880IFcls CLS 13890LOCALT%,I%,M% 13900IFMODE=9M%=16ELSEM%=8 13910T%=640-LENA$*M% 13920I%=512+H%*16 13930PROCmesbox(T%-M%,496-H%*16-20*(H%=1),LENA$*M%*2+M%*2,H%*32+32) 13940GCOLC%:MOVET%,I%-16*(H%=1):VDU5:PRINTA$ 13950ENDPROC 13960REM 13970DEFPROCsmallmes(x%,y%,C%,A$) 13980LOCALo%,M% 13990IFMODE=12M%=16ELSEM%=32 14000o%=(1-(LENA$AND1))*M% 14010PROCmesbox(x%,y%,LENA$*M%+M%*2+o%,64) 14020GCOL12:VDU5:MOVEx%+M%+o%DIV2,y%+44:PRINTA$; 14030ENDPROC 14040REM 14050DEFPROCmesbox(x%,y%,X%,Y%) 14060GCOL8:RECTANGLEFILLx%,y%,X%,Y% 14070GCOL3:RECTANGLEx%+4,y%+4,X%-8,Y%-8 14080GCOL4:RECTANGLEx%+8,y%+8,X%-16,Y%-16 14090GCOL11:RECTANGLEFILLx%+12,y%+12,X%-24,Y%-24 14100ENDPROC 14110 14120DEFPROCmeswind2(A$,B$,C$,F%,C%) 14130*CHANNELVOICE 1 1 14140VDU26 14150LOCALX%,x%,x2%,c%,I%,Y% 14160Y%=80-(B$<>"")*48-(C$<>"")*48 14170X%=(LENA$*16+32):x%=640-X%DIV2 14180PROCmesbox(x%,800,X%,Y%) 14190GCOL3,C% 14200VDU5:X%=x%+16 14210x%=640-(LENB$*8) 14220x2%=640-(LENC$*8) 14230FORI%=1TOF%*2+1 14240MOVEX%,772+Y%:PRINTA$ 14250IFB$<>""MOVEx%,724+Y%:PRINTB$ 14260IFC$<>""MOVEx2%,676+Y%:PRINTC$ 14270PROCdel(50) 14280SOUND1,-10,180,1 14290NEXT 14300ENDPROC 14310REM 14320DEFPROCmeswind(A$,B$,C$,F%,C%) 14330PROCmeswind2(A$,B$,C$,F%,C%) 14340VDU4:OFF 14350GCOL8,0 14360*SCHOOSE topofscreen 14370PLOT&ED,0,704 14380PROCwindows2 14390ENDPROC 14400REM 14410DEFPROCboard 14420totscore%()=totscore%()+currentS%() 14430FORT%=1TOnoofplayers:holescores%(hsp%(T%),Hole%)=currentS%(T%):NEXT 14440PROCboardcol 14450COLOUR3,0,144,0:GCOL131:CLG 14460PROCwinsort 14470LOCALP%,Y%,T%,I%,S%,mp%,A$,sc%,O% 14480O%=(play%=2)*4:VDU26 14490GCOL0:RECTANGLEFILL60,76,1156,920 14500GCOL64,0:RECTANGLEFILL64,80,1148,128 14510GCOL48,0:RECTANGLEFILL64,992,1148,-128 14520GCOL12:MOVE768,544:MOVE1212,992:PLOT85,1212,80 14530GCOL13:MOVE512,544:MOVE64,80:PLOT85,64,992 14540GCOL11:RECTANGLEFILL98,112,1080,848 14550GCOL0:RECTANGLE98,112,1080,848 14560VDU24,100;116;1176;956;:ORIGIN98,116:VDU5 14570GCOL14:FORP%=1TO6:Y%=788-P%*132 14580GCOL7:LINE0,Y%+124,1080,Y%+124 14590GCOL14:LINE0,Y%,1080,Y% 14600FORT%=40TO80STEP40:LINE0,Y%+T%,1080,Y%+T%:NEXT 14610FORT%=1TO8:X%=T%*120:LINEX%,Y%,X%,Y%+80:NEXT 14620NEXT 14630FORP%=1TOnoofplayers 14640mp%=mapstart%+&2F9:Y%=728-(P%-1)*132:GCOL12 14650FORI%=0TO-40STEP-40:FORT%=0TO8:MOVET%*120+4,Y%+I%:PRINT;?mp%:mp%+=&300 14660NEXT:NEXT:NEXT 14670FORP%=1TOnoofplayers 14680mp%=mapstart%+&2F9:Y%=728-(P%-1)*132:X%=32:par%=0 14690FORT%=1TOHole%:IFT%=10Y%-=40:X%=32 14700sc%=holescores%(hsp%(P%),T%)-?mp%:par%+=?mp%:MOVEX%,Y% 14710CASESGNsc%OF 14720WHEN 0:A$="PAR":GCOL15 14730WHEN 1:A$="+"+STR$sc%:GCOL5 14740WHEN-1:A$=STR$sc%:GCOL0 14750ENDCASE 14760PRINTSTRING$(5-LENA$," ");A$ 14770X%+=120:mp%+=&300 14780NEXT 14790GCOLjump%(P%)+4:MOVE4,768-(P%-1)*132:PRINTname$(P%)TAB(20+O%); 14800CASEcurrents%(P%)OF 14810WHEN1:PRINT"{BEGINNER}"; 14820WHEN2:PRINT"{ENTHUSIAST}"; 14830WHEN3:PRINT"{AMATEUR}"; 14840WHEN4:PRINT"{PROFESSIONAL}"; 14850ENDCASE 14860PRINTTAB(40+O%);totscore%(P%);" STROKE"CHR$(-(totscore%(P%)>1)*83)TAB(53); 14870A$=" : "+STR$Hole%+" HOLE"+STRING$(-(Hole%>1),"S")+" PLAYED" 14880CASEplay%OF 14890WHEN1:PROCmatch 14900WHEN2:PROCstroke 14910ENDCASE 14920NEXT 14930GCOL15:T%=542-LENA$*8:MOVET%,824:PRINTA$ 14940GCOL12:RECTANGLET%-8,788,LENA$*16+14,48 14950VDU26:PROCsmallmes(360,32,11," CONTINUE ") 14960PROCsmallmes(720,32,11,"QUIT ROUND") 14970REPEAT 14980MOUSERECTANGLE372,44,528,40 14990MOUSEON:MOUSETO464,64 15000PROCbutt(0):TIME=0:REPEATUNTILTIME>100 15010REPEAT:MOUSEX%,Y%,T% 15020UNTILT%AND(X%<556ORX%>718) 15030IFX%>718PROCconfirm:IFX%>926MOVE0,0:OSCLI("SCHOOSE topofscreen"):PLOT&ED,0,0:UNTIL0 15040UNTILTRUE 15050COLOUR0:VDU4:OFF 15060MOUSEOFF 15070GCOL139 15080ENDPROC 15090REM 15100DEFPROCconfirm 15110PROCbutt(0) 15120PROCgtos(0) 15130PROCmesbox(640,32,512,160) 15140GCOL8:MOVE656,176:PRINT"ARE YOU SURE YOU WANT TO QUIT?" 15150PROCsmallmes(794,60,8,"YES") 15160PROCsmallmes(916,60,8,"NO") 15170MOUSERECTANGLE806,72,178,40:MOUSETO890,82 15180REPEAT:MOUSEX%,Y%,T% 15190UNTILT%AND(X%<866ORX%>926) 15200ENDPROC 15210REM 15220DEFPROCmatch 15230LOCALT%,B$,S1%,S2% 15240FORT%=1TOHole% 15250IF holescores%(hsp%(1),T%)<holescores%(hsp%(2),T%)S1%+=1 15260IF holescores%(hsp%(2),T%)<holescores%(hsp%(1),T%)S2%+=1 15270NEXT:T%=ABS(S2%-S1%) 15280B$=STR$(T%):IFT%B$=B$+" UP"ELSEB$="EVEN" 15290B$=STRING$(14-LENB$," ")+B$ 15300CASEP%OF 15310WHEN1:IFS1%>=S2%PRINTB$ 15320WHEN2:IFS2%>=S1%PRINTB$ 15330ENDCASE 15340A$=Course$+" : MATCH PLAY"+A$ 15350ENDPROC 15360REM 15370DEFPROCstroke 15380LOCALT%,B$ 15390T%=totscore%(P%)-par%:B$=STR$(ABST%) 15400CASESGNT%OF 15410WHEN0:B$="EVEN PAR" 15420WHEN1:B$=B$+" OVER PAR" 15430WHEN-1:B$=B$+" UNDER PAR" 15440ENDCASE 15450PRINTSTRING$(14-LENB$," ");B$ 15460A$=Course$+" : STROKE PLAY"+A$ 15470ENDPROC 15480REM 15490DEFPROCshowwind 15500LOCALw$,T%,C%,s%,i%,x1%,y1%,BX%,BY% 15510IFgreen% C%=9:w$="SLOPE":s%=-2ELSEC%=6:w$="WIND":s%=4 15520COLOUR13:PRINTTAB(26,0)"DIRECTION OF"TAB(29,1)w$ 15530FORT%=C%TOC%+s%STEPs% 15540GCOLT% 15550CIRCLE526,820,88+i% 15560CIRCLE526,820,12+i% 15570i%+=4:NEXT 15580GCOL8 15590MOVE526,820 15600BX%=wx*25:BY%=wy*25 15610x1%=va*BY%+vb*BX%:y1%=vi*BY%+va*BX% 15620DRAW526+x1%,820+y1% 15630ENDPROC 15640REM 15650DEFPROCsetwind 15660WX=0:WY=0:F%=green% 15670wc=5+4*green%:wc2=wc 15680IFF%:P%=mappoint%+&2F4:wx=FNmap2/3:wy=FNmap2/3:ENDPROC 15690wx=0:wy=0:IFskill%<3ENDPROC 15700wx=Wx:wy=Wy 15710ENDPROC 15720REM 15730DEFPROCinitwind 15740LOCALa% 15750stren%=RND(36) 15760a%=RND(360) 15770Wx=((COSRADa%)*stren%)/9 15780Wy=((SINRADa%)*stren%)/9 15790Fx=(SINRADa%)*(15+(stren%DIV2)) 15800Fy=(COSRADa%)*(15+(stren%DIV2)) 15810ENDPROC 15820REM 15830DEFPROCspot 15840bs%=1:BX=0:BY%=-R%:h%=0 15850x1%=va*BY%+vb*BX:y1%=vi*BY%+va*BX 15860PROCvt(y1%,x1%,H%):ys%-=4 15870*FX112,2 15880lie%=POINT(xs%+2,ys%) 15890PROCwellie(0) 15900IFNOTgreen%THEN 15910T%=POINT((mx%(0,Hand%)+4+T%+80*Hand%),my%(0)) 15920IFT%=6ORT%=11THEN 15930PROCwellie(30) 15940ENDIF 15950ENDIF 15960*FX112,1 15970MOVExs%,ys%:MOVEBY10,16 15980ox%=xs%:oy%=ys% 15990osx%=xs%:osy%=ys% 16000sx%=xs%:sy%=ys% 16010*SGET gr 16020*SGET sh 16030ENDPROC 16040REM 16050DEFPROCwellie(W%) 16060LOCALT% 16070FORT%=1TO8:m%(T%,0)=T%+W%:NEXT 16080wellie%=W%=30 16090ENDPROC 16100REM 16110DEFPROCsplash 16120*CHANNELVOICE 1 PLOP 16130LOCALA$,r%,a%,T%,x%,y% 16140bad%=FALSE:SOUND1,-15,5,20 16150FORr%=5TO55STEP5 16160IFr%>9THEN 16170GCOL6:WAIT:WAIT 16180FORa%=0TO45 16190x%=xs%+C(a%)*(r%-10):y%=ys%+S(a%)*((r%-10)>>2) 16200IFPOINT(x%,y%)=11POINTx%,y% 16210NEXT 16220ENDIF 16230GCOL11:IFr%<50THEN 16240WAIT:WAIT 16250FORa%=0TO45:x%=xs%+C(a%)*r%:y%=ys%+S(a%)*(r%>>2) 16260IFPOINT(x%,y%)=6POINTx%,y% 16270NEXT 16280ENDIF 16290NEXT 16300stroke%+=1 16310IFG%=11A$="THE SEA"ELSEA$="WATER" 16320PROCmeswind("BALL LOST IN "+A$,"FORFEIT ONE STROKE","PLEASE PLAY AGAIN",5,6) 16330PROCgetplayvals 16340PROCspot 16350*SCHOOSE plain 16360WAIT:PLOT&ED,mx%(g%,Hand%),my%(g%):VDU23,27;m%(1,g%)|:PLOT&ED,mx%(g%,Hand%),my%(g%) 16370ENDPROC 16380REM 16390DEFPROCputback 16400IFNOTgreen%THEN 16410IFABSx1%<80x1%=(80+RND(30))*SGNx1% 16420IFABSy1%<80y1%=(80+RND(30))*SGNy1% 16430ENDIF 16440currentR%(1)=FNdistance(ABSx1%,ABSy1%) 16450currentx%(1)=x1% 16460currenty%(1)=y1% 16470currentS%(1)=stroke% 16480ENDPROC 16490REM 16500DEFPROCswapall 16510SWAP currentR%(I%),currentR%(I%-1) 16520SWAP currentx%(I%),currentx%(I%-1) 16530SWAP currenty%(I%),currenty%(I%-1) 16540SWAP currents%(I%),currents%(I%-1) 16550SWAP currentS%(I%),currentS%(I%-1) 16560SWAP totscore%(I%),totscore%(I%-1) 16570SWAP oldpos%(I%),oldpos%(I%-1) 16580SWAP name$(I%),name$(I%-1) 16590SWAP hsp%(I%),hsp%(I%-1) 16600SWAP hand%(I%),hand%(I%-1) 16610SWAP jump%(I%),jump%(I%-1) 16620ENDPROC 16630REM 16640DEFPROCwinsort 16650LOCALT%,I% 16660IFnoofplayers<>1THEN 16670FORT%=1TOnoofplayers:FORI%=2TOnoofplayers 16680IFoldpos%(I%)<oldpos%(I%-1)THEN 16690PROCswapall 16700ENDIF 16710NEXT:NEXT 16720FORT%=1TOnoofplayers:FORI%=2TOnoofplayers 16730IFcurrentS%(I%)<currentS%(I%-1)THEN 16740PROCswapall 16750ENDIF 16760NEXT:NEXT 16770ENDIF 16780ENDPROC 16790REM 16800DEFPROCsetplayer 16810LOCALT% 16820FORT%=1TOnoofplayers 16830oldpos%(T%)=T% 16840NEXT 16850ENDPROC 16860REM 16870DEFPROCwhichplayer 16880LOCALT%,I% 16890IFnoofplayers<>1THEN 16900FORT%=1TOnoofplayers 16910FORI%=2TOnoofplayers 16920IFcurrentR%(I%)>currentR%(I%-1)THEN 16930PROCswapall 16940ENDIF 16950NEXT:NEXT 16960ENDIF 16970stroke%=currentS%(1) 16980skill%=currents%(1) 16990IFcurrentx%(1)=0ANDcurrenty%(1)=0THEN 17000round%=TRUE:mappoint%+=&300 17010ENDIF 17020IFhand%(1)<>Hand%THEN 17030Hand%=hand%(1) 17040FORT%=1TO11:OSCLI("SFlipY "+STR$(T%)):NEXT 17050FORT%=31TO38:OSCLI("SFlipY "+STR$(T%)):NEXT 17060*SFlipY 20 17070ENDIF 17080ENDPROC 17090REM 17100DEFPROCgetplayvals 17110X%=currentx%(1):YY%=currenty%(1) 17120ENDPROC 17130REM 17140DEFPROClight 17150Y%=YY% 17160IFY%>0ANDX%>0!px%=li% 17170IFY%>0ANDX%<=0!px%=(li%+1)AND3 17180IFY%<=0ANDX%<=0!px%=(li%+2)AND3 17190IFY%<=0ANDX%>0!px%=(li%+3)AND3 17200ENDPROC 17210REM 17220DEFPROCdrawscreen 17230P%=mappoint%:AA%=FNmap1 17240PROCcaltre(x%(),y%(),z%()) 17250CALLsort,bs%,R%,BY%,K%,x1%,y1%,h%,AA%,x%(),z%(),y%() 17260PROCwindows:PROCsceen 17270ENDPROC 17280REM 17290DEFPROCsine(X%,Y%) 17300R%=FNdistance(ABSX%,ABSY%) 17310green%=(R%<525):Ma=.7-(green%*.3) 17320OL%=(VAL(STR$~((map!(mappoint%+&2FA))AND&FFFF)))>440 17330r=12096-2000*green%-1500*(OL%ANDNOTgreen%) 17340d=r-R% 17350g%=-green%:O%=-6292*green%:H%=250+O% 17360va=-X%/R%:vb=Y%/R%:vi=-vb 17370ENDPROC 17380REM 17390DEFFNdistance(x%,y%) 17400=SQR(x%^2+y%^2) 17410REM 17420DEFPROCgetstart 17430P%=&2E8+mappoint%:X%=FNmap2 17440YY%=FNmap2 17450Hole%=map?(mappoint%+&2F8) 17460stx%=X%:sty%=YY% 17470REMYY%=15*21:X%=0 17480FORT%=1TOnoofplayers 17490currentx%(T%)=X% 17500currenty%(T%)=YY% 17510currentR%(T%)=FNdistance(X%,YY%) 17520currentS%(T%)=0 17530NEXT 17540ENDPROC 17550REM 17560DEFPROCchhole 17570B%-=1 17580IF(B%>0ANDya>4)ORh%>30ENDPROC 17590IFh%>1ORABS(OBY%-BY%)>5PROCric:B%=4:ENDPROC 17600DEFPROCchhole2 17610D%=TRUE:*SCHOOSE sh 17620PLOT&ED,osx%,osy% 17630*SCHOOSE gr 17640PLOT&ED,ox%,oy% 17650*CHANNELVOICE 1 HOLED 17660SOUND1,-15,20,20 17670PROCdel(150) 17680PROCholedout 17690ya=0:u=0:ud=0:p%=0:h%=0:x1%=0:y1%=0 17700ENDPROC 17710REM 17720DEFPROCholedout 17730LOCALA$,B$,C$,F%,S% 17740S%=stroke%-map?(mappoint%+&2F9) 17750CASES%OF 17760WHEN1:A$="IT'S A BOGIE":B$="" 17770WHEN0:A$="HOLED OUT TO PAR":B$="WELL DONE!" 17780WHEN-1:A$="NICE ONE "+name$(1):B$="IT'S A BIRDIE" 17790WHEN-2:A$="SUPERB PLAY "+name$(1):B$="IT'S AN EAGLE" 17800WHEN-3:A$="CONGRATULATIONS "+name$(1):B$="YOU'VE FLOWN AN ALBATROSS" 17810OTHERWISE A$="HOLED OUT "+STR$S%+" OVER PAR":B$="" 17820ENDCASE 17830C$="":F%=3:S%=5:IFstroke%=1A$="WOW! IT'S A HOLE IN ONE":B$="KNOCKED IN BY":C$=name$(1):F%=6:S%=3 17840IF LENA$<LENB$REPEAT:A$=" "+A$+" ":UNTILLENA$>=LENB$ 17850PROCmeswind(A$,B$,C$,F%,S%) 17860PROCdel(50) 17870ENDPROC 17880REM 17890DEFPROCric 17900SOUND4,-15,20,1 17910DEFPROC2ric 17920u=u*4:IFu=0u=(3+RND(5))*SGNx1% 17930ya=ya DIV2:p%=ya DIV3 17940IFNOTgreen%ANDya=0 h%=0:p%=0 17950ENDPROC 17960REM 17970DEFPROCflight 17980OBY%=BY% 17990REPEATPROCfly:VDU23,27;m%(8,g%)|:PLOT&ED,mx%(g%,Hand%),my%(g%):IFba%:VDU23,27;20|:PLOT&ED,bag%(Hand%),-754 18000IFgreen%ANDh%=0SYS6,112,2:G%=POINT(sx%+4,sy%+4):SYS6,112,1:IFG%=0PROCchhole 18010OBY%=BY%:IFNOTgreen%ANDABS(x1%+4)<5ANDABS(y1%)<5PROCchhole 18020IFABSsl>ya sl=ya/2*SGNsl 18030wc-=1:IFwc=0THEN 18040wc=wc2:IFwc2>1wc2-=1 18050WX+=wx:WY+=wy 18060ENDIF 18070UNTILya<=0ANDh%=0ANDABSp%<2 18080YY%=y1%:X%=x1% 18090IFD%ORNOTgreen%ENDPROC 18100*FX112,2 18110G%=POINT(sx%,sy%) 18120G1%=POINT(sx%,sy%+8) 18130*FX112,1 18140IF(G%ANDG1%)=0PROCchhole2 18150ENDPROC 18160REM 18170DEFPROCfly 18180IFh%<4ANDya<16WAIT 18190WAIT:BX+=u*yd+Sl:Sl+=sl:u-=ud:IFABSu>ya u=u>>1 18200BY%+=ya*yd:IFya>0 ya-=.5:ELSEya=0 18210x1%=va*BY%+vb*BX+WX:y1%=vi*BY%+va*BX+WY:h%+=p%*Ma:p%-=1:IFp%<10F%=TRUE 18220IFh%<=0 PROCbounce 18230PROCvt(y1%,x1%,H%):sx%=xs%:sy%=ys%:PROCvt(y1%,x1%,H%-h%) 18240IFK%=TRUE ud=0:ya=0:p%=0:u=0:K%=1:SOUND3,-10,20,40 18250IFW%CALL plotball,bs%,oy%,ox%,osy%,osx%,ys%,xs%,sy%,sx% 18260ENDPROC 18270REM 18280DEFPROCwalter 18290*CHANNELVOICE 1 SHOOSH 18300LOCALT%,I% 18310yd=1+(.75*green%):FORT%=1TO5:*SCHOOSE BLACK 18320WAIT:PLOT&ED,mx%(g%,Hand%),my%(g%):VDU23,27;m%(T%,g%)|:PLOT&ED,mx%(g%,Hand%),my%(g%):FORI%=0TOT%:WAIT:NEXT:NEXT 18330FORT%=5TO1STEPTRUE:*SCHOOSE BLACK 18340IFT%=3ANDNOTgreen%SOUND1,SO%,40,40 18350FORI%=1TOT%:WAIT:NEXT:PLOT&ED,mx%(g%,Hand%),my%(g%):VDU23,27;m%(T%,g%)|:PLOT&ED,mx%(g%,Hand%),my%(g%):NEXT 18360SOUND2,SO%,1,10 18370FORT%=6TO8:IFT%>6PROCfly:ELSEWAIT 18380*SCHOOSE plain 18390IFNOTgreen%:WAIT:PLOT&ED,mx%(g%,Hand%),my%(g%)ELSEWAIT 18400VDU23,27;m%(T%,g%)|:PLOT&ED,mx%(g%,Hand%),my%(g%) 18410IFlie%=1:GCOL1:FORI%=0TO20:POINTsa%(0,T%-6,I%)+(T%+10)*Hand%,sa%(1,T%-6,I%)+my%(g%):NEXT:GCOL8,0 18420NEXT 18430PROCfly:PROCfly 18440*SCHOOSE plain 18450WAIT:PLOT&ED,mx%(g%,Hand%),my%(g%):VDU23,27;m%(8,g%)|:PLOT&ED,mx%(g%,Hand%),my%(g%) 18460ENDPROC 18470REM 18480DEFPROCdel(T%) 18490TIME=0:REPEATUNTILTIME>T% 18500ENDPROC 18510REM 18520DEFPROCbunker 18530GCOL32,0:H%+=2:P%=oP% 18540PROCdrawbunk 18550GCOL2:H%+=2:P%=oP% 18560PROCdrawbunk 18570H%-=4 18580ENDPROC 18590REM 18600DEFPROCdrawbunk 18610np%=FNmap1:PROCmap(CX%,CY%,H%,4,r):PROCmap3(SX%,SY%,H%,4,r,CX%) 18620FORI%=1TOnp%-1:PROCmap3(XI%,YI%,H%,85,r,CX%):MOVECX%,CY%:NEXT 18630PLOT85,SX%,SY% 18640ENDPROC 18650REM 18660DEFPROCmap3(RETURN x%,RETURN y%,z%,p%,r,CX%) 18670LOCALpO% 18680y%=FNmap2:x%=FNmap2:xe=va*x%+vb*y%:ze=(vi*x%+va*y%+r)*Ma:x%=d*xe DIVze:y%=-(d*z%DIVze)*2 18690IFNOTgreen%IFy%>-32ORy%<&FFFF8000 y%=-6000 18700x%=x%-SGN(x%-CX%)*4 18710pO%=POINT(x%,y%) 18720WHILEpO%>3 18730y%+=4:pO%=POINT(x%,y%) 18740ENDWHILE 18750PLOTp%,x%,y% 18760ENDPROC 18770REM 18780DEFPROCsceen 18790No%=FNmap1 18800rough=P% 18810IFgreen%THEN 18820Co%=FNmap1 18830REPEAT:np%=FNmap1 18840P%=P%+np%*4+4:Co%=FNmap1:No%-=1 18850UNTILCo%=5ORCo%=1:P%-=1 18860ENDIF 18870sP%=P%:FORT%=1TONo%:Co%=FNmap1:IFCo%=6water=P% 18880IFgreen%ANDCo%=4THEN 18890np%=FNmap1:P%=P%+np%*4+4 18900ELSE:oP%=P%:Co%=Co%-((Co%=1)ANDgreen%):GCOLCo% 18910PROCdrawit:IFCo%=1PROCbunker 18920ENDIF:NEXT:IFgreen%THEN 18930GCOL8,0 18940*SCHOOSE HOLE 18950PLOT&ED,-6,-(d*H%DIVr)*2-12 18960ENDIF 18970PROCtrees:*FX112,2 18980IFgreen%COLOUR135:ELSECOLOUR139 18990CLS:P%=sP%:FORT%=1TONo%:Co%=FNmap1:GCOLCo% 19000IFgreen%ANDCo%=4THEN 19010np%=FNmap1:P%=P%+np%*4+4 19020ELSEoP%=P%:PROCdrawit 19030ENDIF 19040NEXT 19050IFgreen%THEN 19060GCOL8,0 19070*SCHOOSE BLACKHOLE 19080PLOT&ED,-6,-(d*H%DIVr)*2-12 19090ENDIF 19100*FX112,1 19110CASEjump%(1)OF 19120WHEN1:COLOUR8,208,0,0 19130WHEN2:COLOUR8,144,128,80 19140WHEN3:COLOUR8,112,112,112 19150WHEN4:COLOUR8,240,112,0 19160WHEN5:COLOUR8,96,96,48 19170WHEN6:COLOUR8,208,80,144 19180ENDCASE 19190ENDPROC 19200REM 19210DEFPROCgtos(Y%) 19220VDU26:MOVE0,Y%:MOVE1279,Y%+319:*SGET topofscreen 19230ENDPROC 19240REM 19250DEFPROCgetinfo 19260*CHANNELVOICE 1 1 19270LOCALya2,BX%,BY%,yst% 19280PROCgtos(704) 19290ORIGIN80,0 19300VDU24,0;704;1131;1023; 19310GCOL139:COLOUR139:CLG 19320GCOL8:RECTANGLE0,704,412,319 19330RECTANGLE412,704,228,319 19340RECTANGLE640,704,491,319 19350GCOL3:RECTANGLE4,708,404,311 19360RECTANGLE416,708,220,311 19370RECTANGLE644,708,483,311 19380GCOL4:RECTANGLE8,712,396,303 19390RECTANGLE420,712,212,303 19400RECTANGLE648,712,475,303 19410OFF:VDU28,6,8,74,1:COLOUR12 19420PRINTTAB(41,0)"PLAYER : ";:COLOUR8:PRINTname$(player%):COLOUR12 19430PRINTTAB(41,1)"PLAYING AT : "Course$ 19440PRINTTAB(41,2)"HOLE NUMBER : ";Hole% 19450PRINTTAB(41,3)"PAR : ";~map?(mappoint%+&2F9) 19460PRINTTAB(41,4)"OVERALL LENGTH : ";~(map!(mappoint%+&2FA))AND&FFFF;" YARDS" 19470PRINTTAB(41,5)"RANGE TO HOLE : ";:COLOUR8:PRINT;(R%DIV21)*(1-green%*2);:IFgreen%:PRINT" FEET":ELSEPRINT" YARDS" 19480COLOUR12:PRINTTAB(41,6)"STROKES PLAYED : ";stroke% 19490PROCshowlie 19500PROCsetwind 19510PROCshowwind 19520REPEAT 19530ORIGIN80,0 19540PROCgetclub 19550COLOUR12:PRINTTAB(2)"DIRECTION THEN POWER" 19560COLOUR8:PRINTTAB(4)A$(vp%)" SELECTED" 19570GCOL8:RECTANGLE46,776,320,128:RECTANGLE44,776,324,128:LINE48,866,364,866 19580GCOL6:RECTANGLEFILL48,870,316,32:GCOL12:MOVE78,898:VDU5:PRINT"CLUB POWER METER"CHR$4:OFF 19590LINE56,784,56,824:FORT%=49TO100:IFINT((T%/100*T%)MOD25)=0:LINET%*3+56,784,T%*3+56,824 19600NEXT 19610RECTANGLE56,792,300,24 19620GCOL11:RECTANGLEFILL56,796,300,16 19630my%=256-green%*164:SYS6,106,2 19640ORIGIN0,0 19650MOUSERECTANGLE432+(green%=0)*160,my%,414-(green%=0)*320,0:MOUSETO640,my% 19660xs%=0:OX%=0:u=0 19670REPEAT:MOUSEX%,Y%,C% 19680IFC%=1ORC%=4UNTILTRUE:UNTILFALSE 19690a%=(X%-xs%-640)/8:IFABSa%<10a%=SGNa% 19700u+=a% 19710IFX%<>xs%THEN 19720BX%=0:BY%=-R%:PROCvt(vi*BY%+va*BX%,va*BY%+vb*BX%,H%):yst%=ys%+25 19730REPEAT:BX%+=u:BY%+=80:PROCvt(vi*BY%+va*BX%,va*BY%+vb*BX%,H%):UNTILys%>=yst% 19740ENDIF 19750MOUSETOxs%-640,my% 19760UNTILC%=2 19770MOUSEOFF 19780p%=FNpower 19790SO%=-15*p%/100 19800IFNOTgreen%ANDvp%=13u=u+RND(5)-3 19810u=u/(8-g%*2):ya=INT((CV%(vp%)/100)*p%):IFya<1ya=1 19820ud=u/(ya*3) 19830p%=p%*.32:h%=0 19840IFvp%=13p%=5*-(green%=FALSE) 19850PROCdel(100):stroke%+=1 19860VDU4,26:OFF:*SCHOOSE topofscreen 19870GCOL8,0:PLOT&ED,0,704 19880PROCwindows2 19890ENDPROC 19900REM 19910DEFPROCshowlie 19920LOCALa$ 19930a$="ON THE ":COLOUR8 19940PRINTTAB(41,7); 19950bunk%=FALSE:bad%=FALSE:wind%=skill%>2 19960IFgreen%THEN 19970IFlie%=5 PRINTa$"GREEN";:ELSEPRINT"ON EDGE OF GREEN";:lie%=5 19980ENDIF 19990CASElie%OF 20000WHEN1:PRINT"IN A BUNKER ";:PROCgob 20010WHEN4:PRINT"ON A PATHWAY"; 20020WHEN6:PROCwetmes 20030WHEN7:IFy1%<>sty%:PRINTa$"FAIRWAY";:ELSEPRINTa$"TEE"; 20040WHEN9:PRINT"IN THE ROUGH ";:PROCgob 20050ENDCASE 20060ENDPROC 20070REM 20080DEFPROCwetmes 20090GCOL6:bunk%=TRUE:LOCALT% 20100T%=RND(3) 20110CASET%OF 20120WHEN1,3:PRINT"IN SHALLOW WATER"; 20130WHEN2:IFwellie%PRINT"IT'S A WELLIE JOB";:ELSEPRINT"BALANCED ON LILY PAD"; 20140ENDCASE 20150ENDPROC 20160REM 20170DEFPROCgob 20180LOCALg$,b$:g$="GOOD LIE":IFlie%=9b$="BAD LIE":ELSEb$="PLUGGED" 20190CASEskill%OF 20200WHEN1:PRINT"NO EFFECT"; 20210WHEN2,3:PRINTg$;:bunk%=TRUE 20220WHEN4:bunk%=TRUE:IFRND(2)=2PRINTb$;:bad%=1:ELSEPRINTg$; 20230ENDCASE 20240ENDPROC 20250REM 20260DEFFNpower 20270LOCALX%,C%,c%,p%,a% 20280ORIGIN80,0 20290COLOUR12:PROCbutt(0):PROCdel(1):a%=1 20300WHILEC%=0ANDc%<>156 20310p%+=a%:IFp%=100a%=TRUE 20320c%+=1:GCOL8:IFc%AND1WAIT 20330RECTANGLEFILL56,796,p%*3,16:GCOL11:RECTANGLEFILL56+p%*3,796,300-p%*3,16 20340PRINTTAB(2,4);INT(p%/100*p%)-(c%<10);"% ":MOUSEX%,X%,C% 20350ENDWHILE 20360Sl=0:sl=0 20370IFvp%<>13THEN 20380CASEC%OF 20390WHEN1:sl=.05 20400WHEN4:sl=-.05 20410ENDCASE 20420ENDIF 20430IFskill%<>1THEN 20440CASElie%OF 20450WHEN1,9:p%=(p%/100)*red%(vp%,bad%) 20460WHEN6:a%=vp%-2*(p%<11):p%=p%/100*red%(a%,bad%) 20470ENDCASE 20480ENDIF 20490SOUND1,-10,200,1 20500IFp%<1p%=1 20510=p% 20520REM 20530DEFPROCgetclub 20540PROCbutt(0):PROCcls 20550IFgreen%vp%=13:ENDPROC 20560LOCALX%,Y%,C%,x%,y%,ox%,oy% 20570ox%=-100:OFF:VDU28,6,8,74,1:PROCmrect(1):MOUSE ON:COLOUR12:REM:SYS6,106,3 20580FORT%=0TO13:PRINTTAB(TX%(T%),TY%(T%))A$(T%);:NEXT 20590COLOUR2:PRINTTAB(6,0)"SELECT A CLUB":TEMPO&2000:BEATS100:VDU5:GCOL3,2:PROCbox 20600REPEAT:IFBEAT=0:GCOL3,2:PRINTTAB(7,1)"SELECT A CLUB":REPEATUNTILBEAT<>0 20610MOUSEX%,Y%,C%:x%=X%DIV128:y%=Y%AND&FFE0 20620IFx%<>ox%ORy%<>oy%PROCbox 20630PROCmrect(X%):vp%=3^x%+(x%=0)+28-y%DIV32+(x%=2ANDy%<832) 20640UNTILC%<>0 20650PROCbutt(0):VDU4 20660DEFPROCcls 20670OFF:VDU28,6,8,29,1:CLS 20680ENDPROC 20690REM 20700DEFPROCbox 20710GCOL3,6 20720RECTANGLEFILL32+128*ox%,oy%,96,32 20730RECTANGLEFILL32+128*x%,y%,96,32 20740SOUND1,-10,200,1 20750ox%=x%:oy%=y% 20760ENDPROC 20770REM 20780DEFPROCmrect(R%) 20790IFR%>288PROCiop2 20800CASER%OF 20810WHEN 1:MOUSERECTANGLE38,844,90,72:MOUSETO83,912 20820WHEN 162:MOUSERECTANGLE38,844,90,72:MOUSETO83,846 20830WHEN 128:MOUSERECTANGLE162,752,90,164:MOUSETO208,912 20840WHEN 252:PROCiop 20850WHEN 288:MOUSERECTANGLE162,752,90,164:MOUSETO208,756 20860ENDCASE 20870ENDPROC 20880REM 20890DEFPROCiop 20900IFY%>835THEN 20910MOUSERECTANGLE288,836,90,80:MOUSETO349,912 20920ELSE MOUSERECTANGLE288,752,90,50:MOUSETO349,778 20930ENDIF 20940ENDPROC 20950REM 20960DEFPROCiop2 20970IFY%=836MOUSERECTANGLE288,752,90,50:MOUSETO349,786 20980IFY%=802MOUSERECTANGLE288,836,90,80:MOUSETO349,856 20990ENDPROC 21000REM 21010DEFPROCbutt(on) 21020LOCALD%,C% 21030REPEAT 21040MOUSED%,D%,C% 21050UNTILC%=on 21060ENDPROC 21070REM 21080DEFPROCwindows 21090VDU26:GCOL128:CLG:PROCmaincols 21100IFNOTgreen%THEN 21110GCOL6:RECTANGLEFILL 0,0,1280,736 21120GCOL4:LINE0,732,1280,732 21130GCOL138:VDU24,0;736;1279;1023;:CLG 21140PROCclouds 21150ELSEGCOL135:CLG 21160ENDIF 21170DEFPROCwindows2 21180VDU26:ORIGIN640,768+O%-6166*green% 21190ENDPROC 21200REM 21210DEFPROCclouds 21220LOCALC%,T%,O% 21230IFvb>0 O%=DEGASNva ELSEO%=180+(180-DEGASNva) 21240O%=ABSO%*3.5:GCOL11 21250FORC%=1TO12:FORT%=1TO12 21260ELLIPSEFILL(CL%(0,C%,T%)+O%)MOD2520+I%,CL%(1,C%,T%),256,64 21270NEXT:NEXT 21280ENDPROC 21290REM 21300DEFPROCinitcloud 21310LOCALC%,T%,X%,Y% 21320FORC%=0TO12:X%=194*C%+RND(194):Y%=RND(288)+736 21330FORT%=0TO12:CL%(0,C%,T%)=X%+RND(5)*40:CL%(1,C%,T%)=Y%+RND(5)*12 21340NEXT:NEXT 21350ENDPROC 21360REM 21370DEFPROCbounce 21380h%=0:p%=-p%/2.2 21390IFvp%=13ANDNOTgreen%ANDRND(10)=5PROC2ric 21400*FX112,2 21410G%=POINT(sx%,sy%) 21420*FX112,1 21430CASEG%OF 21440WHEN1:p%=p%>>1:IFp%>4:ya=ya*.3:ELSEya=ya*.75 21450WHEN4:IFp%>3ANDya<>0p%=p%*1.5:ya=ya*1.3:ud=ud/1.3 21460WHEN6,11:W%=FALSE:xs%=1000:sx%=1000:ya=0:p%=0:h%=0:CALL plotball,bs%,oy%,ox%,osy%,osx%,ys%,xs%,sy%,sx% 21470WHEN9,-1:ya=ya/1.5:p%=p%>>1:u=u/2:ud=ud/2 21480ENDCASE 21490ENDPROC 21500REM 21510DEFPROCdrawit 21520np%=FNmap1:PROCmap(CX%,CY%,H%,4,r):PROCmap(SX%,SY%,H%,4,r) 21530FORI%=1TOnp%-1:PROCmap(XI%,YI%,H%,85,r):MOVECX%,CY%:NEXT 21540PLOT85,SX%,SY% 21550ENDPROC 21560REM 21570DEFPROCvt(x%,y%,z%) 21580xe%=va*x%+vb*y%:ze%=(vi*x%+va*y%+r)*Ma:xs%=d*xe% DIVze%:ys%=-(d*z% DIVze%)*2 21590ENDPROC 21600REM 21610DEFPROCcaltre(RETURN x%(),RETURN y%(),RETURN z%()) 21620LOCALi%,l%,lo%,n% 21630FORA%=1TOAA% 21640l%=FNmap2:trex!(A%*4)=l% 21650i%=FNmap2:trey!(A%*4)=i% 21660xe=va*i%+vb*l% 21670ze=(vi*i%+va*l%+r)*Ma 21680x%(A%)=d*xe DIVze:y%(A%)=-(d*H% DIVze)*2 21690z%(A%)=-(d*(H%+200)DIVze)*2 21700NEXT 21710ENDPROC 21720REM 21730DEFPROCmap(RETURN x%,RETURN y%,z%,p%,r) 21740y%=FNmap2:x%=FNmap2:xe=va*x%+vb*y%:ze=(vi*x%+va*y%+r)*Ma:x%=d*xe DIVze:y%=-(d*z%DIVze)*2 21750IFNOTgreen%IFy%>-32ORy%<&FFFF8000 y%=-6000 21760PLOTp%,x%,y% 21770ENDPROC 21780REM 21790DEFFNmap1:P%+=1:=map?(P%-1) 21800REM 21810DEFFNmap2:P%+=2:Q%=map!(P%-2)AND&FFFF 21820IFQ%>&7FFFQ%=Q%OR&FFFF0000 21830=Q% 21840REM 21850DEFPROCtrees 21860PF%=TRUE:PB%=-(d*H%DIV(r*Ma))*2 21870PT%=-(d*(H%-30)DIV(r*Ma))*2 21880FB%=-(d*(H%-24)DIV(r*Ma))*2 21890xe=va*Fx+vb*Fy:ze=(vi*Fx+va*Fy+r)*Ma:FX%=d*xe DIVze:FY%=-(d*(H%-16-(stren%DIV4))DIVze)*2 21900IFgreen%ENDPROC 21910FORT%=AA%TO1STEPTRUE 21920X1%=x%(T%):Y%=y%(T%) 21930IFPF%ANDY%<PB% GCOL11:MOVE0,PB%:DRAW0,PT%:GCOL3:MOVE0,FB%:PLOT85,FX%,FY%:PF%=FALSE 21940IF(ABSX1%>400ORY%>-708)ANDABSX1%<800ANDY%>-1000THEN 21950x%=(ABSY%-ABSz%(T%))>>1:y%=-x%>>2:ya%=y%*1.5:xa%=x%>>4:yd%=ya%>>2 21960GCOLtr%!(((px%+1)AND3)*4):RECTANGLEFILLX1%,Y%,-xa%,y% 21970GCOLtr%!(((px%+2)AND3)*4):RECTANGLEFILLX1%,Y%,xa%,y% 21980Y%+=y%:xa%=xa%*2:z%(T%)=FALSE:x%=x%*.8:xa%=xa%*.8 21990CALLplottree,xa%,y%,x%,X1%,Y%,ya%,yd% 22000ELSE z%(T%)=TRUE 22010ENDIF 22020NEXT 22030ENDPROC 22040REM 22050DEFPROCinitiate 22060Hand%=0:green%=0:tee=FALSE:Ineditor=FALSE 22070GCOL0,1 22080PROCcolours(12) 22090DIMred%(13,1),F$(77) 22100DIM CL%(1,12,12) 22110DIM code &900 22120DIM map &6D00 22130DIM parb 20 22140DIM x%(96),y%(96),z%(96) 22150DIMTX%(13),TY%(13),A$(13),CV%(13) 22160DIMmx%(1,1),my%(1),m%(8,1),bag%(1),name$(6),defname$(6):player%=1 22170DIMholescores%(6,18),currentx%(6),currenty%(6),currentR%(6),currentS%(6),currents%(6),totscore%(6),oldpos%(6),hsp%(6),hand%(6),jump%(6) 22180DIMC(45),S(45) 22190DIMsa%(1,2,20) 22200currents%()=1 22210FORI%=2TO4 22220FORN%=0TO20 22230sa%(0,I%-2,N%)=RND(I%*8)-I%*4 22240sa%(1,I%-2,N%)=I%*12+16+RND(I%)*4 22250NEXT 22260NEXT 22270FORT%=0TO45 22280C(T%)=COSRAD(T%*8):S(T%)=SINRAD(T%*8) 22290NEXT 22300mx%(0,1)=-2:mx%(0,0)=-96:my%(0)=-728 22310mx%(1,1)=-4:mx%(1,0)=-64:my%(1)=-13121 22320bag%(0)=-196:bag%(1)=120 22330sx%=TRUE:sy%=TRUE:r=11096 22340RESTORE 22550 22350FORT%=0TO13 22360READTX%(T%),TY%(T%),A$(T%),CV%(T%) 22370NEXT 22380PROCwellie(0) 22390FORT%=1TO8:READm%(T%,1):NEXT 22400FORI%=0TO1:FORT%=0TO13:READred%(T%,I%):NEXT, 22410CX%=0:CY%=0:SX%=0:SY%=0:XI%=0:YI%=0 22420h%=0:x1%=0:y1%=0:K%=0:BY%=0:bs%=0 22430defname$(1)="JOHN" 22440defname$(2)="GEORGE" 22450defname$(3)="PAUL" 22460defname$(4)="RINGO" 22470defname$(5)="MICK" 22480defname$(6)="JERRY" 22490PROCcode 22500*POINTER 22510MOUSE OFF 22520MOUSECOLOUR1,0,240,0 22530MOUSECOLOUR2,0,128,0 22540ENDPROC 22550DATA1,2,1 WOOD,74 22560DATA1,3,3 WOOD,70 22570DATA1,4,5 WOOD,68 22580DATA9,2,1 IRON,67 22590DATA9,3,2 IRON,65 22600DATA9,4,3 IRON,63 22610DATA9,5,4 IRON,61 22620DATA9,6,5 IRON,59 22630DATA9,7,6 IRON,57 22640DATA17,2,7 IRON,55 22650DATA17,3,8 IRON,53 22660DATA17,4,9 IRON,48 22670DATA17,6,WEDGE,41 22680DATA17,7,PUTTER,60 22690DATA9,10,10,11,11,9,9,9 22700DATA30,40,48,55,61,66,71,76,81,85,89,93,96,100 22710DATA1,1,1,1,1,1,15,40,55,66,76,85,93,1 22720REM 22730DEFPROCcolours(M%) 22740WAIT:MODEM%:OFF 22750PROCmaincols 22760VDU23,17,4,1| 22770VDU23,2,&EF,&FE,&EF,&FE,&EF,&FE,&EF,&FE 22780VDU23,3,&12,&21,&12,&21,&12,&21,&12,&21 22790VDU23,4,&C0,&0C,&C0,&0C,&C0,&0C,&C0,&0C 22800VDU23,5,&D4,&4D,&D4,&4D,&D4,&4D,&D4,&4D 22810ENDPROC 22820DEFPROCmaincols 22830REM 22840COLOUR0,0,0,0:REM BLACK 22850COLOUR1,176,128,0:REM DARK SAND 22860COLOUR2,176,160,48:REM LIGHT SAND 22870COLOUR3,208,160,144:REM FLESH 22880COLOUR4,144,144,144:REM PATH 22890COLOUR5,16,208,0:REM GREEN 22900COLOUR6,32,144,208:REM WATER 22910COLOUR7,0,160,0:REM FAIRWAY 22920COLOUR8,208,0,0:REM RED 22930COLOUR9,0,112,0:REM ROUGH 22940COLOUR10,96,192,224:REM SKY 22950COLOUR11,240,240,240:REM WHITE 22960COLOUR12,80,48,16:REM DARK BROWN 22970COLOUR13,96,64,48:REM LIGHT BROWN 22980COLOUR14,16,64,48:REM DARK GREEN (TREE) 22990COLOUR15,0,96,64:REM LIGHTER GREEN (TREE) 23000ENDPROC 23010REM 23020DEFPROCpointer 23030DIMpar 20,block 112 23040RESTORE23150 23050FORT%=0TO108STEP4:READblock!T%:NEXT 23060?par=0 23070par?1=2 23080par?2=8 23090par?3=14 23100par?4=16 23110par?5=7 23120par!6=block 23130MODE12 23140A%=21:B%=par:C%=par DIV256:SYS 7,A%,B%,C% 23150DATA&AAAA,&AAAA0000,&9556,&95560000,&AA96,&96AA0000,&A6,&9A000000,&2A,&A8000000,&0,&0,&0,&0,&0,&0,&0,&0,&2A,&A8000000,&A6,&9A000000,&AA96,&96AA0000,&9556,&95560000,&AAAA,&AAAA0000 23160ENDPROC 23170REM 23180DEFPROCcode 23190OSCLI("LOAD <Obey$Dir>.holedout4 "+STR$~code) 23200plotball=code+&188 23210plottree=code 23220sort=code+&7E0 23230px%=code+&158 23240tr%=code+&148 23250trex=code+&4B8 23260trey=code+&63C 23270ENDPROC
� >!DESIGNER.HOLEDOUT3D 9� PROGRAMMED BY G.J.KEY BETWEEN 16-10-89 AND 20-10-89 � (C) THE FOURTH DIMENSION (� 2ș"Hourglass_Smash" < �*FX229,1 F �*FX200,2 PL� OB%(6),OB$(6),TRX%(96),TRY%(96),HX%(30,30),HY%(30,30),CO%(30),PTS%(30) Z�pointer:�initiate d �instruct n *FX229 x�ONERROR ��colours(12) �*SCHOOSE SCREEN �*CHANNELVOICE 1 BELL ��&ED,0,0 ��=0 � *FX15 ��:ȗX%,Y%,T% ��>3000�1,-15,300,1:�=0 ��T%��(10)<>� �*CHANNELVOICE 1 1 �� �Ineditor=� ��getoptions �*FX229,1 �colours(12) "Hole%=1:totscore%()=0 ,#�T%=1�noofplayers:hsp%(T%)=T%:� 6X%=0 @� J�X%>718�Hole%=18��:�� Tround%=� ^�initcloud hli%=�(4)-1 r �getstart | �initwind ��setplayer �� ��whichplayer ��round%��:�board:�� ��getplayvals � �light ��sine(X%,Y%) ��drawscreen � �spot �%�mx%(g%,Hand%),my%(g%):�BY120,176 �*SGET PLAIN �*SCHOOSE BALL1 ��&ED,xs%,ys% %�mx%(g%,Hand%),my%(g%):�BY120,176 *SGET BLACK *SCHOOSE 20 &ba%=sty%=y1%:�8,0 0�ba%�&ED,bag%(Hand%),-754 :� D/�23,27;m%(1,g%)|:�&ED,mx%(g%,Hand%),my%(g%) N�getinfo X D%=�:B%=� b W%=�:K%=� l�walter v�flight ��sx%>640�chofsc ��W%�splash:��:��� ��putback ��� �� � � ��edit �exit=�:Ȟ20 �island=412 ��Course$="EDITOR" ��flag,mem,len,par,NO%,NT%,ob%,closed:�,PTS%(),HX%(),HY%(),CO%(),TRX%(),TRY%(),OB%(),OB$():DIM OB%(6),OB$(6),TRX%(96),TRY%(96),HX%(20,20),HY%(20,20),CO%(20),PTS%(20),sx%,sy% �OB%(0)=9:OB$(0)="ROUGH " �OB%(1)=7:OB$(1)="FAIRWAY" OB%(2)=5:OB$(2)="GREEN " OB%(3)=2:OB$(3)="BUNKER " OB%(4)=4:OB$(4)="PATH " OB%(5)=6:OB$(5)="WATER " * OB%(6)=&107:OB$(6)="TEE " 4� >closed=� H �setmainv R&mappoint%=0:map?(mappoint%+&2F8)=1 \len=500:par=4:�startup f �grid p� z �chooseob ��mem<10�7:�0 ��exit ��:��:� � mem-=2 ��butt(0) ��getcent ��req("DRAW OUTLINE") �9�8:�0,2)"LEFT BUTTON TO FIX THE LOCATION OF A POINT" �D�"RIGHT BUTTON TO JOIN ENDS TO COMPLETE THE OBJECT AND EXIT":�13 �+sx%=-HY%(NO%,0)*1.5:sy%=-HX%(NO%,0)*1.5 �(�MOVE-HY%(NO%,0)*1.5,-HX%(NO%,0)*1.5 �� �D�134:�12:�28,0,31,79,0:�62,1);~mem;" ":�13:�139:�28,1,30,78,25 ��mou �3,13 �sx%,sy%,X%,Y% Ȗ:Ȗ $�sx%,sy%,X%,Y% . �Y%>-368� 8 �K%=4� B � mem>=4� L�0,OB%(ob%) VPTS%(NO%)+=1 `$�-HY%(NO%,0)*1.5,-HX%(NO%,0)*1.5 j�sx%,sy% t �85,X%,Y% ~sx%=X%:sy%=Y% � �grid �2�MOVE-HY%(NO%,0)*1.5,-HX%(NO%,0)*1.5:MOVEX%,Y% �HX%(NO%,PTS%(NO%))=-Y%/1.5 �HY%(NO%,PTS%(NO%))=-X%/1.5 �-�58,1);"OBJECT HAS ";PTS%(NO%);" POINTS" � mem-=4 ��butt(0) �� �� �� �closed=K%=1 ��PTS%(NO%)=20closed=� �closed �PTS%(NO%)>1� '�85,-HY%(NO%,1)*1.5,-HX%(NO%,1)*1.5 NO%+=1 (� 2mem=mem+2+4*(PTS%(NO%)+1) <�7 F� P�redisplay Z�0 d� n x��setmainv ��colours(12):ȗ� �"�COLOUR3,208,160,144:REM FLESH �!�COLOUR3,32,144,208:REM WATER � ��0,80,80,80 ��mesbox(0,256,1279,768) ��mesbox(0,0,1279,256) � �24,16;272;1263;1007;:�134:� ��28,1,30,78,25:�139:� �� � � ��startup �holep=1:�readhole2 � ��inputlength " �*FX229,1 ,� 6� @l�8:�0,2)"ACCEPTABLE RANGE IS BETWEEN 50 AND 504 YARDS"'"YOU CAN NO LONGER ABORT THE 'NEW' OPTION"�7:�13 J0�0,0)"PLEASE ENTER HOLE LENGTH {YARDS} "len T�len>49�len<505 ^�getpar h�PROCwrimap(len) rmem=&2E6 |HX%(0,0)=0 �HY%(0,0)=len �2 �HX%(0,1)=160 �HY%(0,1)=len+40 �HX%(0,2)=-160 �HY%(0,2)=len+40 �HX%(0,3)=-180 �HY%(0,3)=-180 �HX%(0,4)=180 �HY%(0,4)=-180 �CO%(0)=9 � PTS%(0)=4 �mem=mem-5*4-2 ���startup2 �26,24,12;268;1267;1011;:� ȑisland+len,640 ��134:�12:�2,1);len;" YARDS : PAR ";par;" : HOLE No. ";map?(mappoint%+&2F8);" : T X ";:P%=mappoint%+&2E8:�;�map2 �21;" : T Y ";�map2 �21;" : Memory &";~mem &�28,1,30,78,25:�139:� 0�9 :�-HY%(0,0)*1.5,HX%(0,0)*1.5 D�T%=1�4 N�-HY%(0,0)*1.5,HX%(0,0)*1.5 X$�85,-HY%(0,T%)*1.5,HX%(0,T%)*1.5 b� l"�85,-HY%(0,1)*1.5,HX%(0,1)*1.5 v*FX229,0 �� � ���getpar ��npar,A% � *FX229 ��:��:�TVH �ș6,229,0,255 � ,A% � *FX15 ��:� �c�8:�0,2)"THE CURRENT PAR IS ";par;"."'"THE ACCEPTABLE RANGE IS 2 TO 5":�A%=0�"ESCAPE TO ABORT" �+�13:�0,0)"WHAT IS THE HOLE PAR ? "npar ��npar<2�npar>5 �7 ��npar>1�npar<6 par=npar P%=mappoint%+&2E8:�wrimap(0) �*FX229,1 � * 4 ��getcent >"�8:�req("POSITION CENTRE"):�13 HPTS%(NO%)=0 R� \�mou f �Y%>-368� p�K%� zclosed=� �HX%(NO%,0)=-Y%/1.5 �HY%(NO%,0)=-X%/1.5 �� �� � �closed=� � mem-=4 ��butt(0) �� � � ��grid ��0,0 � �X%,Y% �X%=-1500 )�23,6,&55,&55,&55,&55,&55,&55,&55,&55 � �X%*1.5,-384:�29,X%*1.5,640 $ X%+=50 .�X%>600 8)�23,6,&11,&11,&11,&11,&11,&11,&11,&11 B�Y%=-200�200�50 L!�-1000,Y%*1.5:�29,1000,Y%*1.5 V� `!�0,-384,0,640:�-1500,0,1000,0 j�5:ȏ0,0,25*1.5 t �CO%(NO%) ~� � ���shsc(T%,C%) ��C%�128+8:�11:� �128+11:�8 � ȎT%� ��1:�30,2) "DELETE OBJECT" ��2:�30,3)"ALTER OBJECT" ��3:�47,2)"SAVE COURSE" ��4:�64,2)"LOAD COURSE" ��5:�47,3)"READ HOLE" ��6:�64,3)"WRITE HOLE" ��7:�47,4)"ISLAND" ��8:�64,4)"'NEW' HOLE" �9:�47,5)"INSERT TREES"�30 �10:�64,5)"VIEW HOLE"�30 �11:�30,4)"ALTER PAR" �12:�30,5)"ALTER No."�30 (�13:�9,5)"EXIT EDITOR"�30 2� <�128+11:�13 F� P Z��chooseob d dob%=� n� x �showcols �)�15:�2,2)"HOLED OUT COURSE DESIGNER" ��6,3)"EDITING "Course$ � ��T%=1�13:�shsc(T%,�):� � ob%=� �odob%=1 �obob%=0 �� � *FX15 �ȗX%,Y%,K% ��Y%+640>193�Y%+640<224� �dob%=(X%-48+island+len)�176 ��island<0�dob%>0dob%=� ��green �dob%=2dob%=� �tee �dob%=6dob%=� %�(X%-48+island+len)�176>112dob%=� �dob%<>� �sc2(�,dob%) "(�dob%<>odob%�sc2(�,odob%):odob%=dob% ,�K%�dob%<>� � 6ob%=dob% @�showchosen:�OB%(ob%):�7 J�12 T� ^� h �dob%<>�:�sc2(�,dob%):dob%=� r� | �ob%=� �bX%=(X%-160+island+len) � bob%=� �A�Y%<-574�Y%>-606�bX%>610�bX%<800:bob%=9:�K%�inserttrees:��:�0 �@�Y%>-577�Y%<-544�bX%>610�bX%<704:bob%=7:�K%�drawisland:��:�0 ��island<0��T\L �H�Y%>-577�Y%<-544�bX%>334�bX%<480:bob%=11:�K%�getpar:�redisplay:��:�0 �K�Y%>-606�Y%<-574�bX%>334�bX%<480:bob%=12:�K%�getholeno:�redisplay:��:�0 �B�Y%>-513�Y%<-481�bX%>334�bX%<541�NO%>1:bob%=1:�K%�delete:��:�0 �A�Y%>-545�Y%<-512�bX%>334�bX%<526�NO%>1:bob%=2:�K%�alter:��:�0 �@�Y%>-513�Y%<-481�bX%>610�bX%<782:bob%=3:�K%�savecourse:��:�0 �A�Y%>-513�Y%<-481�bX%>880�bX%<1056:bob%=4:�K%�loadcourse:��:�0 �>�Y%>-545�Y%<-512�bX%>610�bX%<752:bob%=5:�K%�readhole:��:�0 �@�Y%>-545�Y%<-512�bX%>880�bX%<1040:bob%=6:�K%�writehole:��:�0 ��Y%<-574�Y%>-606�bX%>888�bX%<1024:bob%=10:�K%Ineditor=�:�drawmap(0):Ineditor=�:�4:�setmainv:�startup2:�redisplay:�"FX229,1":��:�0 �X�IFY%<-574ANDY%>-606ANDbX%>610ANDbX%<800:bob%=9:IFK%PROCinserttrees:UNTILTRUE:UNTIL0 �<�Y%<-574�Y%>-606�bX%>2�bX%<172:bob%=13:�K%exit=�:��:��:� @�Y%>-577�Y%<-544�bX%>610�bX%<704:bob%=7:�K%�drawisland:��:�0 <�Y%>-577�Y%<-544�bX%>880�bX%<1040:bob%=8:�K%�newit:��:�0 &�bob%<>obob%�shsc(obob%,�):obob%=0 &!�bob%�shsc(bob%,�):obob%=bob% 0� :&�PRINTTAB(0,4)Y%,X%-48+island+len; D�ob%<>� NCO%(NO%)=OB%(ob%) X�ob%=6�drawtee:�0 b�ob%=2�drawgreen:�0 l�� v� � ���sc2(C%,dob%) � �dob%=� � �(�C%=0�((dob%=2�green)�(dob%=6�tee))� �/�C% �128+11:�OB%(dob%) � �128+OB%(dob%):�11 ��dob%*11+2,0)OB$(dob%); ��128+11:�13 �� � ���drawisland �island=island �-348 ��redisplay �� ��newit �A$ *FX229 *�:��:�tXM 4� >&�"NEW ---- ARE YOU SURE [Y/N] ?"�7 Hj�8:�'"'NEW' WILL PRODUCE A BLANK HOLE TEMPLATE DESTROYING THE CURRENT HOLE DATA"'"ESCAPE TO ABORT":�13 R *FX15 \S�:A$=�(0):�A$<>"":� BUG IN BASIC PREVENTS USE OF GET WITH A LOCAL ERROR HANDLER f�A$<>"Y"�A$<>"y"� ptee=�:green=� z�inputlength �NO%=1:NT%=� � �grid � �*FX229,1 �� � ���writehole ��gp%,tp% �� �%�"WRITING HOLE ";mappoint%�&300+1 ��"ARE YOU SURE [Y/N] ?"�7 �>�8:�'"IT IS NECCESSARY TO WRITE THE HOLE DATA INTO MEMORY" �E�"BEFORE IT CAN BE SAVED TO DISC OR BEFORE USING 'VIEW HOLE'":�13 � *FX15 *FX229 �:��:�tLO � $A$=�(0) .�A$<>"" 8�A$<>"Y"�A$<>"y"�tLO BP%=0 L\�verify:�P%>&2E8 �7:�"ERROR MEMORY ABOUT TO BE OVERWRITTEN!!"'"PRESS SPACE":���=32:�tLO Vgp%=0:tp%=0 `�T%=1�NO%-1 j�CO%(T%)=&107 tp%=� t�CO%(T%)=5 gp%=T% ~� �p�gp%=� �:�8:�0,1)"THERE IS NO GREEN THEREFORE I CAN'T WRITE THIS HOLE!"'"PLEASE PRESS SPACE"�7:���-99:�tLO �n�tp%=� �:�8:�0,1)"THERE IS NO TEE THEREFORE I CAN'T WRITE THIS HOLE!"'"PLEASE PRESS SPACE"�7:���-99:�tLO �� gp%<>NO%-1� �X%=gp%:�delete2 ��drawgreen2 �� �3P%=mappoint%+&2E8:�wrimap(teeY%):�wrimap(teeX%) �P%=mappoint% �TA%=�("&"+�(�distance(teeX%,teeY%))):map?(P%+&2FA)=A%:map?(mappoint%+&2FB)=A%�256 �map?(P%+&2F9)=par �&map?(P%+&2F8)=holep �19-(holep>18) ��wrimap1(NT%+1) �T%=0�NT% �wrimap(TRX%(T%)) �wrimap(TRY%(T%)) � (�wrimap1(NO%) 2�T%=0�NO%-1 <C%=CO%(T%):�C%=2C%=1 F�wrimap1(C%) P�wrimap1(PTS%(T%)) Z�I%=0�PTS%(T%) d�wrimap(HX%(T%,I%)) n�wrimap(HY%(T%,I%)) x� �� � �*FX229,1 �� � ���verify � P%+=1 � �T%=0�NT% � P%+=2 � P%+=2 �� � P%+=1 ��T%=0�NO%-1 � P%+=2 �I%=0�PTS%(T%) P%+=2 P%+=2 "� ,� 6� @ J��wrimap1(A%) Tmap?P%=A%:P%+=1 ^� h r��wrimap(A%) |A%=A%*21 �map?P%=A%:P%+=1 �map?P%=A%>>8:P%+=1 �� � ���getholeno ��n% � *FX229 ��:�� �TfQ �� �� ��8:�0,2)"CURRENT HOLE No. IS ";holep'"CHANGING THE HOLE No. IS A WAY OF COPYING ONE HOLE TO ANOTHER"'"ESCAPE TO ABORT":�13 � *FX15 �3�0,0)"WHAT IS THE NEW HOLE No. {1 TO 18} ? "n% �n%>0�n%<19 holep=n% mappoint%=(holep-1)*&300 & �*FX229,1 0� : D��readhole N *FX229 X�:�� �d|R bgreen=�:tee=� l� v� � *FX15 ���8:�0,2)"THE EXISTING HOLE DATA WILL BE LOST IF IT HAS NOT BEEN WRITTEN INTO"'"MEMORY BY FIRST SELECTING THE 'WRITE HOLE' OPTION!" ��"ESCAPE TO ABORT":�13 �:�0,0)"WHICH HOLE DO YOU WISH TO EDIT {1 TO 18} "holep ��holep>0�holep<19 ���readhole2 �P%=(holep-1)*&300 �&len=(�(�~((map!(P%+&2FA))�&FFFF))) �par=map?(P%+&2F9) �mappoint%=P% �5P%=mappoint%+&2E8:teeY%=�map2 �21:teeX%=�map2 �21 �=稤distance(teeX%,teeY%)<>len len=��distance(teeX%,teeY%) �P%=mappoint% mem=&2E8 tee=�:green=� NT%=�map1-1 �T%=0�NT% *TRX%(T%)=�map2 �21 4TRY%(T%)=�map2 �21 > mem-=4 H� R \NO%=�map1:mem-=1 f�T%=0�NO%-1 pCO%(T%)=�map1:mem-=1 z�CO%(T%)=5green=� ��CO%(T%)=1CO%(T%)=2 � �PTS%(T%)=�map1:mem-=1 ��I%=0�PTS%(T%) �HX%(T%,I%)=�map2 �21 �HY%(T%,I%)=�map2 �21 � mem-=4 �� �C� CO%(T%)=7�PTS%(T%)=3��(HY%(T%,1)-teeX%)<45 tee=�:CO%(T%)=&107 �� � �startup2 ��redisplay � �*FX229,1 � ��loadcourse $�colours(9):�screenbox .ȗ�530,512:ȗ� 8Ineditor=� B�getcourse("EDIT") LIneditor=� V�colours(12) ` �setmainv j&mappoint%=0:map?(mappoint%+&2F8)=1 tlen=500:par=4:�startup ~�grid:�:tee=TRUE �ȗ� �� � ���savecourse ��Pointer,R0 �� Pointer 28 �($Pointer="<Obey$Dir>.MODULES.SHOOSH" � *FX229 �� �u���<>17:�redisplay:�26:�meswind2(" "+�$+" ","PLEASE","PRESS SPACE",1,3):���-99:��24,16;272;1263;1007;:�TXU �� �ș"OS_File",5,Pointer � R0 �R0<>0 � e�meswind2("I CAN'T SAVE TO THE DESIGNER DISC","PLEASE INSERT ANOTHER DISC","AND PRESS SPACE",1,3) ���-99 � ( �R0=0 2g��:�redisplay:�meswind2(" "+�$+" ","PLEASE","PRESS SPACE",2,3):���=32:�redisplay:�=17:�TXU < *MOUNT Fȑ0,128 P� ZB�centbox(�,�13," ")+"CURRENT DISC CATALOGUE"+�13," "),8,20):�8 d�24,16;272;1263;1007; n�GCOL128+11:CLG:GCOL128+6 x�28,17,21,62,3,4 �file$="" ��:�14:*. � �15:*FX15 �"�'"PLEASE ENTER COURSE NAME."; �+ș"OS_ReadLine",Pointer,10,32,126 � ,R0 ��R0=0 �0 �Pointer?(R0+1)=13 �file$=$Pointer ��T%=1�R0 �&�file$,T%,1)=" " �file$,T%,1)="_" �� � �file$>"" ��T%=1��file$ )�("SAVE $."+file$+" "+�~map+" +3600") �("SETTYPE $."+file$+" C1F") �*FX229,1 "�redisplay ,� 6 @��inserttrees J �*FX229,1 T�flag,C% ^�:�butt(0) h!�"INSERT OR DELETE TREES"':�8 r�"LEFT BUTTON TO INSERT" |�"MIDDLE BUTTON TO DELETE" ��"RIGHT BUTTON TO EXIT" �*�"MAXIMUM OF 96 TREES PER HOLE"�30:�13 �� �ȗX%,Y%,K% � X%=X%�6*6 � Y%=Y%�6*6 �C%=�X%,Y%) �#�40,1);NT%+1;" TREES INSERTED" �#�40,2)"&";~mem;" BYTES LEFT " �)�distance(-X%/1.5,-Y%/1.5)<40�K%=4�0 ��(C%=6�C%=0)�K%=4�0 � �K%=4� ��NT%<95� �mem>4� NT%+=1 �14 &ȏȐX%,Y%,8 0'TRX%(NT%)=-Y%/1.5:TRY%(NT%)=-X%/1.5 : mem-=4 D�butt(0) N��7 X� b� l� v �K%=2� ��NT%>� � � flag=� � �T%=0�NT% �C�(-TRY%(T%)*1.5-X%)<12��(-TRX%(T%)*1.5-Y%)<12flag=T%+1:T%=1000 �� ��flag � ��flag<>NT%+1� ��T%=flag-1 �NT%-1 �+TRX%(T%)=TRX%(T%+1):TRY%(T%)=TRY%(T%+1) �� �� � NT%-=1 � mem+=4 �redisplay �butt(0) � ��7 *� 4� > �K%=1 H�butt(0) R*FX229,0 \� f p ��drawtee z �tee �7:� �9�mem<18�"NOT ENOUGH MEMORY!! PRESS SPACE:"�7:���=32:� ��butt(0) �6�8:�1,2)"POSITION TEE THEN ANY BUTON TO EXIT":�11 � tee=� ��x%,y%,a%,b,c,d%,e% �a%=180:y%=0:x%=-len*1.5 �ȗ�x%,y% �� �ȗX%,Y%,K% ��Y%>y%�a%>160a%-=1 ��Y%<y%�a%<200 a%+=1 �x%=(��a%*len)*1.5 �y%=(��a%*len)*1.5 ȗ�x%,y% �K% X%=-x%/1.5:Y%=-y%/1.5 $HX%(NO%,0)=Y%:HY%(NO%,0)=X% .-P%=mappoint%+&2E8:�wrimap(Y%):�wrimap(X%) 8len=��distance(X%,Y%) Bb=��a%:c=��a% L6HX%(NO%,0)=b*-10+-c*20+Y%:HY%(NO%,0)=c*-10+b*20+X% V4HX%(NO%,1)=b*10+-c*20+Y%:HY%(NO%,1)=c*10+b*20+X% `6HX%(NO%,2)=b*10+-c*-20+Y%:HY%(NO%,2)=c*10+b*-20+X% j8HX%(NO%,3)=b*-10+-c*-20+Y%:HY%(NO%,3)=c*-10+b*-20+X% tteeX%=X%:teeY%=Y% ~mem-=18 �PTS%(NO%)=3 � NO%+=1 ��redisplay �� � ���alter �*�x%,y%,x1%,y1%,x2%,y2%,x3%,y3%,flag,C% � *FX229 �"�:�� �redisplay:�"FX229,1":� ��:�8:�0,2)"THE OVERALL SHAPE AND POSITION OF AN OBJECT CAN BE ADJUSTED"'"BUT NOT THE NUMBER OF EDGE POINTS."'"ESCAPE TO ABORT":�13 �� ��findone:�redisplay B�0,0)"SELECT AND MOVE POINTS TO THEIR REQUIRED POSITIONS " =� 8:�0,4)"RIGHT BUTTON TO EXIT"'"ESCAPE TO ABORT"�30:�13 �CO%(X%)=5�7:�0 �� (�outline 2�butt(0) <� F� Pȗx%,y%,K% Z flag=� d�K%� n�T%=0�PTS%(X%) xB�(-HY%(X%,T%)*1.5-x%)<12��(-HX%(X%,T%)*1.5-y%)<12flag=�:x%=T% �� �� �&�K%=1��:��:�redisplay:�"FX229,1":� � �flag �"x1%=-HY%(X%,x%�PTS%(X%)+1)*1.5 �"y1%=-HX%(X%,x%�PTS%(X%)+1)*1.5 �T%=x%-1:�T%<1T%=PTS%(X%) �x2%=-HY%(X%,T%)*1.5 �y2%=-HX%(X%,T%)*1.5 �x3%=-HY%(X%,x%)*1.5 �y3%=-HX%(X%,x%)*1.5 ��3,8 ��x%<>0� � Ȗ:Ȗ �x1%,y1%,x3%,y3% "�x3%,y3%,x2%,y2% ,ȏx3%,y3%,8 6� @ȗx3%,y3%,K% Jx3%=x3%�6*6 Ty3%=y3%�6*6 ^1�58,0)"Y ";-�(x3%/1.5),"X ";�(y3%/1.5);" " h*FX112,2 rC%=�x3%,y3%) |*FX112,1 �&�IFC%<>7ANDBEAT=0:SOUND1,-15,120,4 �D�K%=0��((C%=7�island>0)�(island<0�x3%>600�x3%<900��y3%<220))K%=4 �=�K%=0�(C%=7�island>0)�(island<0�x3%>600�x3%<900��y3%<220) ��x1%,y1%,x3%,y3% ��x3%,y3%,x2%,y2% �ȏx3%,y3%,8 � �K%=0 �� �� � Ȗ:Ȗ �ȏx3%,y3%,8 �� �ȗx3%,y3%,K% x3%=x3%�6*6 y3%=y3%�6*6 1�58,0)"Y ";-�(x3%/1.5),"X ";�(y3%/1.5);" " &*FX112,2 0C%=�x3%,y3%) :*FX112,1 D&�IFC%<>7ANDBEAT=0:SOUND1,-15,120,4 ND�K%=0��((C%=7�island>0)�(island<0�x3%>600�x3%<900��y3%<220))K%=4 X=�K%=0�(C%=7�island>0)�(island<0�x3%>600�x3%<900��y3%<220) bȏx3%,y3%,8 l �K%=0 v� ��58,0)" " �HY%(X%,x%)=-x3%/1.5 �HX%(X%,x%)=-y3%/1.5 ��redisplay ��outline ��0 �� � � ��outline ��0,8 �"�-HY%(X%,1)*1.5,-HX%(X%,1)*1.5 ��I%=1�PTS%(X%) $�-HY%(X%,I%)*1.5,-HX%(X%,I%)*1.5 � "�-HY%(X%,1)*1.5,-HX%(X%,1)*1.5 �I%=1�PTS%(X%) *'ȏ-HY%(X%,I%)*1.5,-HX%(X%,I%)*1.5,8 4� >%ȏ-HY%(X%,0)*1.5,-HX%(X%,0)*1.5,8 H� R \��delete f� p *FX229 z��8:�0,2)"CLICKING ON ONE OF THE RED OBJECT CENTRES WILL RESULT IN THAT OBJECTS"'"DELETION. PLEASE TAKE CARE!"'"ESCAPE TO ABORT":�13 ��:�� �redisplay:�Tn] ��findone � ��delete2 ��CO%(X%)=5green=� ��CO%(X%)=&107 tee=� �mem=mem+6+PTS%(X%)*4 ��X%<>NO%-1� ��T%=X%+1�NO% ��I%=0�PTS%(T%) �HX%(T%-1,I%)=HX%(T%,I%) �HY%(T%-1,I%)=HY%(T%,I%) �� �CO%(T%-1)=CO%(T%) PTS%(T%-1)=PTS%(T%):� � NO%-=1 $�redisplay . �*FX229,1 8� B L ��findone V�:�� � `G�0,0)"THERE ARE ";NO%-1;" OBJECTS DEFINED. SELECT A CENTRE POINT" j�8 t�T%=1�NO%-1 ~%ȏ-HY%(T%,0)*1.5,-HX%(T%,0)*1.5,8 �� �� �ȗX%,Y%,K% � flag=� ��K%� ��T%=1�NO%-1 �M�(�(-HY%(T%,0)*1.5-X%))<12�(�(-HX%(T%,0)*1.5-Y%))<12flag=�:X%=T%:T%=NO%-1 �� �� � �flag �� � ��redisplay �26:*FX112,2 �:�7 ȑisland+len,640 ( �-HY%(0,0)*1.5,-HX%(0,0)*1.5 2�I%=1�PTS%(0) < �-HY%(0,0)*1.5,-HX%(0,0)*1.5 F%�85,-HY%(0,I%)*1.5,-HX%(0,I%)*1.5 P� Z#�85,-HY%(0,1)*1.5,-HX%(0,1)*1.5 d*FX112,1 n!�26,24,12;268;1267;1011;4:�:� xȑisland+len,640 ���redisplay2 ���134:�12:�2,1);len;" YARDS : PAR ";par;" : HOLE No. ";map?(mappoint%+&2F8);" : T X ";:P%=mappoint%+&2E8:�;�map2 �21;" : T Y ";�map2 �21;" : Memory &";~mem ��28,1,30,78,25:�139:�:CLS ��NO%>0� ��T%=0�NO%-1 ��CO%(T%) �"�-HY%(T%,0)*1.5,-HX%(T%,0)*1.5 ��I%=1�PTS%(T%) �"�-HY%(T%,0)*1.5,-HX%(T%,0)*1.5 �'�85,-HY%(T%,I%)*1.5,-HX%(T%,I%)*1.5 �� �%�85,-HY%(T%,1)*1.5,-HX%(T%,1)*1.5 �@�CO%(T%)=&107 �CO%(T%)=5 �12:Ȓ-HY%(T%,0)*1.5,-HX%(T%,0)*1.5 � � �NT%>� � "�14 , �T%=0�NT% 6%ȏȐ-TRY%(T%)*1.5,-TRX%(T%)*1.5,8 @� J� T �grid ^� h r��drawgreen |�green �7:� �9�mem<54�"NOT ENOUGH MEMORY!! PRESS SPACE:"�7:���=32:� ���drawgreen2 �green=� � mem-=2 �HX%(NO%,0)=0 �HY%(NO%,0)=0 � mem-=4 �CO%(NO%)=5 �PTS%(NO%)=0 ��0,0 ��T%=0�330�30 �PTS%(NO%)+=1 � mem-=4 �0,0 HX%(NO%,PTS%(NO%))=��T%*25 HY%(NO%,PTS%(NO%))=��T%*25 &7�85,-HY%(NO%,PTS%(NO%))*1.5,-HX%(NO%,PTS%(NO%))*1.5 0� :'�85,-HY%(NO%,1)*1.5,-HX%(NO%,1)*1.5 D NO%+=1 N�redisplay X� b l ��mou v�C% �� �ȗX%,Y%,K% � X%=X%�6*6 � Y%=Y%�6*6 ��ob%>2�ob%<6� ��(X%/1.5)<-(len-(�(Y%�6)))� �X%=-(len-(�(Y%�6)))*1.5 � X%=X%�6*6 �ȗ�X%,Y% �� �� �/�58,0)"Y ";-�(X%/1.5),"X ";�(Y%/1.5);" " ��58,2);~mem;" BYTES LEFT" ! �58,3);NO%;" OBJECTS DRAWN" !*FX112,2 !C%=�X%,Y%) ! *FX112,1 !*�C%<>7�K%�Ə=0:�1,-15,120,4 !4;�(C%=7�island>0)�(ob%=0�island<0�X%>600�X%<900��Y%<220) !>� !H !R ��req(A$) !\�28,1,30,20,30:� !f�8:�A$; !p�28,1,30,78,25,7 !z� !� !���showcols !�� !��T%=0�6 !��OB%(T%):�T%*11+2)OB$(T%); !�� !�� !���showchosen !��:�OB%(ob%) !��0,0)"DRAWING "OB$(ob%) !�� !� !���instruct "�colours(9):�screenbox "C�quest("DO YOU REQUIRE INSTRUCTIONS?","YES","NO",0):�butt(0):� "'�colours(12):�mesbox(0,0,1279,1023) "$�12:ȓ998,640,160,256 ".*�1058,896,1066,940:�1090,940:�1098,896 "8�139:�1:Ȑ1078,900 "B�1,240,240,192 "L�2,240,208,208 "V�3,240,240,224 "`�1:ȓȐ1000,644,156,248 "j�3:ȓȐ1000,644,156,124 "t�T%=0�2 "~�12:ȓ1012+T%*50,800,32,64 "��2:ȓȐ1014+T%*50,804,28,56 "�!�12:�1020+T%*50,850:�5:�;T%+1 "� �:�4:� "��139:�12 "��28,2,30,78,3 "���0,0)"Game control in the Archimedes version of ";:�9:�"HOLED OUT";:�12:�" is via"'"the MOUSE, the keys are numbered as indicated on the right." "�T�'"The differences to the instructions as shown in the manual"'"are as follows:" "�B�'"STROKEPLAY/"�16)"There can be up to 6 players in any round" "؈�'"GAME CONTROLS/"''"1. SELECT CLUB. Use the MOUSE to indicate the club required then"�16)"press any button to go to the next stage" "�G�'"2. DIRECTION. Position the cursor with the MOUSE then either." "�.�(16)"Press [2] to go to the next stage." "�3�(16)"Press [1] or [3] to select another club" # Q�'"3. POWER."�16)"As soon as the direction has been selected by pressing [2]" # 0�16)"the bar indicator will start to move." #/�16)"Pressing [2] will give a Normal shot" #/�16)"Pressing [1] will give a Hooked shot" #(/�16)"Pressing [3] will give a Sliced shot" #2O�'"To read courses from alternate discs simply insert the disc when in the" #<'�"COURSES window and press ESCAPE." #F(�'�22)"PRESS ANY BUTTON TO CONTINUE" #P�butt(0) #Z!�:ȗX%,Y%,K%:�K%:�1,-10,200,1 #d�butt(0) #n�28,2,30,78,1 #x �:�14 #� #�"�'"Operation of the EDITOR :-" #��12 #�P�'"The main EDITOR panel consists of a plan of the hole being edited and an" #�>�"Options window. The options are split into two groups." #�Q�'"The first contains 7 different coloured drawing options which are used to" #�H�"draw the various objects on the hole {Green, Fairway, Water ect}." #�L�'"The second group are all coloured red and control the EDITOR actions" #�R�"{Load and Save files, Object deletion ect} all these actions have their own" #�R�"Help text. The best way to discover their operation is to try them out for" #��"yourself." #�O�'"All course files are saved in the $ directory on drive :0 and it is not" #�R�"possible to save files to the EDITOR disc. There are no special actions to" $Q�"read or write to another disc simply insert the disc before selecting Load" $�"or Save." $R�'"Before you can 'SAVE' a hole as part of a course or 'VIEW' a hole you must" $"H�"use the 'WRITE HOLE' option to store the data into course memory." $,P�'"When SAVING a course to disc you can use spaces in the file name so that" $6��"names such as 'PINE ISLES' are quite acceptable, The spaces will be replacedby underline characters when the file is saved and restored on loading." $@)�''�22)"PRESS ANY BUTTON TO CONTINUE" $J�butt(0) $T!�:ȗX%,Y%,K%:�K%:�1,-10,200,1 $^�butt(0):� $h!�"Operation of the EDITOR :-" $rR�'"It is possible to draw one object over the top of another, so some thought" $|P�"will be required when constructing a hole if the final result is to be as" $�P�"you visualise it. Placing areas of water or bunkers underneath the green" $�A�"can have unpredictable results so try to avoid doing this." $�R�'"If you select the 'ISLAND' option it will toggle the hole plan to the left" $�P�"of the screen. In this mode you will only be able to draw an island with" $�Q�"colour 'ROUGH' and position trees on the island. Select 'ISLAND' again to" $�)�"return to the normal editing mode." $�M�'"The hole plan is divided into 50 yard squares these should be used in" $�Q�"conjunction with the club distances on your quick reference card to ensure" $�J�"that you don't draw an object that is too big to hit the ball over." $�K�'"At the top of the Hole Plan, the Hole length, Par, Tee X and Tee Y " $�J�"coordinates and amount of Hole memory remaining are displayed. The" $�K�"X and Y coordinates are reversed from the normal convention, X being" $�C�"vertical and Y horizontal, Zero being centred upon the hole." %M�"If you can't draw an object check that there is enough memory left for" %�"the operation." %T�'"Finally you don't have to design all 18 holes before saving a course to disc" %&P�"so as soon as you have created a hole you can save the course, leave the " %0H�"editor with the 'EXIT EDITOR' option and test play you own holes!" %:)�''�22)"PRESS ANY BUTTON TO CONTINUE" %D�butt(0) %N!�:ȗX%,Y%,K%:�K%:�1,-10,200,1 %X�butt(0) %b� %l� %v��chofsc %�*FX112,3 %�� %�=�x1%=� ȑ1280,768+O%-6166*green%:�ȑ0,768+O%-6166*green% %�P%=rough %��map1:�drawit %��map1:�drawit %�P%=water:�6:�drawit %�G%=�xs%,ys%) %��G%=6�G%=11W%=� %�*FX112,1 %�� %�� %� ��preview &� &�colours(9):�screenbox:ȗ� &lhol%=�choseahole & �lhol%�drawmap(lhol%) &*�lhol%=� &4� &>� &H��drawmap(holeno%) &R�Ineditor ��*FX229,1 &\�initcloud &fli%=2:�initwind &p(�r%,l%,OL%,A%,AA%,T%,I%,SP%,X%,Y%,A$ &zX%=640:Y%=512 &�� &�P%=mappoint%+holeno%:SP%=P% &�&OL%=(�(�~((map!(P%+&2FA))�&FFFF))) &� AA%=�map1 &� �A%=1�AA% &�l%=�map2/10.5 &�r%=�map2/10.5 &�x%(A%)=r%:y%(A%)=l% &�� &�I%=�map1-1 &�"T%=�map1:T%=�map1:P%=P%+T%*4+4 &�l%=0:r%=0:t%=0:b%=0 &� �colours(12):�screenbox:�137 '&�mesbox(532-OL%,294,OL%*2+212,692) ')�26,24,548-OL%;310;548+OL%+180;970;:� 'ȑ592+OL%,640 '$�T%=1�I%:�map1 '. np%=�map1 '8%�map2(CX%,CY%,4):�map2(SX%,SY%,4) 'B,�I%=1�np%-1:�map2(XI%,YI%,85):�CX%,CY%:� 'L�85,SX%,SY% 'V �:�14 '`8�T%=1�AA%:�-x%(T%),-y%(T%))<>6ȏȐ-x%(T%),-y%(T%),8 'j�:�0:Ȓ0,0 't�26 '~V�smallmes(144,166,12,"POSITION POINTER ON VIEWPOINT THEN PRESS THE MIDDLE BUTTON") '�.�Ineditor A$="EDITOR":�:A$="HOLE SELECTOR" '�*A$="RIGHT BUTTON TO RETURN TO THE "+A$ '�!�smallmes(608-�A$*8,66,12,A$) '�ȗ�:ȗ�X%,Y% '�� '�!ȗȓ548-OL%,310,OL%*2+180,660 '�ȗX%,Y%,T% '�'�X%<688�r%=(688-X%)�8�r%=(X%-688)�8 '�)ȗȓ548-OL%,310+r%,OL%*2+180,660-r%*2 '�y%=((592+OL%)-X%)�2 '�x%=(640-Y%)�2 '� ( E�T%=4P%=SP%+&2E8:X%=�map2:Y%=�map2:�displayview2(X%,Y%,SP%):��:�� ( &�T%=2�displayview(X%,Y%,SP%):��:�� ( �T%:�� (� ((� (2��displayview(X%,Y%,SP%) (<YY%=(((592+OL%)-X%)�2)*21 (FX%=((640-Y%)�2)*21 (Pȗ� (Z�A$,mappoint%:mappoint%=SP% (d��displayview2(X%,YY%,SP%) (n�X%<42��YY%<42X%=42:YY%=42 (x7OL%=(�distance(X%,YY%)):green%=(OL%<525):OL%=OL%/21 (�.A$=Course$+" HOLE "+�(holeno%�&300+1)+", " (�7�green% A$=A$+�(OL%*3)+" FEET":�A$=A$+�OL%+" YARDS" (�A$=A$+" FROM HOLE" (� �light (��sine(X%,Y%) (��drawscreen (�/�26:X%=640-�A$*8-24:�smallmes(X%,860,13,A$) (��butt(0) (��ȗX%,Y%,SP%:�SP% (��butt(0) (�� (�� (���map2(� x%,� y%,p%) )!y%=-�map2/10.5:x%=-�map2/10.5 ) �p%,x%,y% )� )"� ),ݤchoseahole )6�butt(0) )@�X%,Y%,K%,F%,N%,out% )J,�centbox(�,"PLEASE SELECT A HOLE",12,10) )T&�mesbox(464,444,148,100):�dono2(1) )^�mesbox(704,536,80,80) )h �smallmes(704,462,12,"EXIT") )r�mesbox(704,368,80,80) )|%�15:�744,600:�720,554:�85,768,554 )�2�744,388:�720,432:�85,768,432:�720,436,768,436 )� �8:�720,432,744,388:�768,432 )��720,558,744,600:�768,558 )�ȗȓ480,388,432,220 )�N%=1:�:ȗX%,Y%,K% )��K%� )��X%>716� )��X%<772� )�6�Y%>544N%=N%�18+1:�dono2(N%):�1,-10,200,1:�butt(0) )�A�Y%<442N%-=1:N%=N%-(N%=0)*18:�dono2(N%):�1,-10,200,1:�butt(0) )�� )�*�Y%>472�Y%<516out%=�:F%=�:�1,-10,200,1 )�� *�X%<604� *�Y%>456�Y%<540F%=� *� *&� *0 �F%=� *:=((N%-1)*&300)�out% *D� *N��dono2(A%) *X�A$,T%:A$=�(A%) *b�11:ȓȐ476,464,124,64 *l�476-32*(A%<10),520 *v)�12:�T%=1��A$:�double(�(�A$,T%,1))):� *�� *�� *���getoptions *��T%=1�6:jump%(T%)=T%:� *�*CHANNELVOICE 1 1 *��:� *��colours(9):�screenbox *�ȗ�640,496 *�\�quest("EDIT HOLES OR PLAY ROUND?","PLAY","EDIT",0)�getcourse("EDIT"):�edit:�"FX229":�� *��butt(0):*FX229 *�:mappoint%=0:�getcourse("PLAY"):mapstart%=map+mappoint% *�M�quest("PREVIEW HOLES OR PLAY ROUND?","PLAY","PREVIEW",0)�preview:��:��� *�hplay%=�quest("UNDER WHICH RULES ARE YOU TO PLAY?","MATCH PLAY","STROKE PLAY",0)+1:� 1=MATCH 2=STROKE +noofplayers=�noplaying +�T%=1�noofplayers +�getname(T%) + Qhand%(T%)=1-�quest("IS "+name$(T%)+" LEFT OR RIGHT HANDED?","LEFT","RIGHT",0) +*�getskill(T%) +4� +>�confirm(noofplayers)�0 +H�� +R7� CHANGE THE FOLLOWING NUMBER TO (HOLE NO. -1)*&300 +\�mappoint%=&2400 +f� +p +z��getcourse(E$) +��N%,I%,T%,C%,C$,E%,X,Y,Z +�*FX21,9 +��butt(0):*FX229 +�~�:��:�<>17�centbox(�," "+�$+" ",8,1):ȑ0,-256:�centbox(�,"PLEASE PRESS SPACE",8,1):ȑ0,0:���-99:��Ineditor:�"FX229,1":� +� *FX15 +�C%=1:E%=-368:I%=0 +�� +��readdir +� �I%=0� +� *FX15 +�;�centbox(�,"NO COURSES ON THIS DISC!",5,1):�7:N%=�(300) +�>ȑ0,-256:�centbox(�,"PLEASE PRESS SPACE",8,1):ȑ0,0:���-99 +�� , �I%<>0 ,N%=((I%+1)�2*36)�32 ,1�centbox(�,"COURSES AVAILABLE TO "+E$,5,N%+2) ,$T%=512-I%�2*18 ,.ȗȓ272,T%-24,736,I%*18 ,8�N%=1�I% ,B�showcat(N%,8+(N%=1)*2) ,L� ,VOX=1 ,`� ,jȗX,Y,Z ,t'X=-(X>640)+((T%-20+I%*18)-Y)�36*2+1 ,~ �X>I%X=I% ,�,�X<>OX �showcat(OX,8):�showcat(X,6):OX=X ,��Z ,�Course$=�no_s(F$(X)) ,��"L. $."+F$(X)+" "+�~map ,� �*FX229,1 ,�� ,� ,���showcat(N%,C%) ,��5 ,��E% ,��N%�1 E%=-368:� E%=48 ,� �3+C% - /ȓȐ640+E%,T%+I%*18-16-((N%+1)�2)*36,320,32 - �C% -%�640+E%,T%+I%*18+12-((N%+1)�2)*36 -�no_s(F$(N%)) -(� -2 -<ݤno_s(C$) -F�T% -P �T%=1��C$ -Z�C$,T%,1)="_"�C$,T%,1)=" " -d� -n=C$ -x -� ��readdir -�(�R4,T%,C%,name,Point,buffer,filetype -� *MOUNT -�� Point 11,buffer 34,name 2 -�$name="*":filetype=&C1F -�$Point="$"+�0:R4=0 -�� -�6ș"OS_GBPB",10,Point,buffer,77,R4,34,name � ,,,,R4 -�0�buffer!&10=1�((!buffer>>8)�&FFF)=filetype � -�I%+=1:T%=&14 -�� -�C%=buffer?T% -�T%-=(C%<>0) .�T%=&1E�C%=0 .buffer?T%=13 .F$(I%)=$(buffer+&14) ."� ., �R4=-1 .6� .@ .J� .Tݤconfirm(T%) .^�N%,I%,A$:I%=(T%+(T%�1)) .h�butt(0) .r�colours(12):�screenbox .|Z�centbox(�," ARE THE FOLLOWING GAME OPTIONS CORRECT? ",15,10+I%) .�!�28,10,20+I%�2,69,13-I%�2,4:� .��12:�139:�;T%;" PLAYER"; .��T%<>1�"S"; .�*�", PLAYING AT ";Course$;", UNDER "; .�Ȏplay%� .��1:�"MATCH"; .��2:�"STROKE"; .�� .��" PLAY RULES" .��0,1)�60,"-") .�1�6:�0,2)"NAME"�22)"DEXTERITY"�46)"SKILL":�12 .��0,3)�60,"-") .��0,4); / �boardcol /�N%=1�T% / �N%+4 /&�name$(N%)�22); /0Ȏhand%(N%)� /:�0:�"RIGHT"; /D�1:�"LEFT"; /N� /X�" HANDED"�46); /b A$=�skillname(currents%(N%)) /l�A$ /v� /��12:��60,"-") /�$�smallmes(520,368-I%*16,8,"YES") /�#�smallmes(680,368-I%*16,8,"NO") /�!ȗȓ536,376-I%*16,208,44:ȗ � /�� /�ȗX%,Y%,K% /��(X%<590�X%>692)�K% /��1,-10,200,1 /�=X%>692 /�� /�� /���boardcol /��5,208,0,0 0�6,144,128,80 0�7,112,112,112 0�8,240,112,0 0 �9,96,96,48 0*�10,208,80,144 04� 0>� 0H��getskill(T%) 0R�butt(0) 0\�X%,Y%,K%,F%,N% 0f;�centbox(�,"WHAT IS "+name$(T%)+"S SKILL LEVEL?",15,12) 0p3�mesbox(356,464,416,64):�doskill(currents%(T%)) 0z�mesbox(820,540,80,80) 0��mesbox(820,372,80,80) 0�%�15:�860,604:�836,558:�85,884,558 0�2�860,388:�836,432:�85,884,432:�836,436,884,436 0� �8:�836,432,860,388:�884,432 0��836,562,860,604:�884,562 0�ȗȓ372,388,514,220 0�N%=1:�:ȗX%,Y%,K% 0��K%� 0��X%>836� 0�8�Y%>544�N%<4N%+=1:�doskill(N%):�1,-10,200,1:�butt(0) 0�8�Y%<442�N%>1N%-=1:�doskill(N%):�1,-10,200,1:�butt(0) 0�� 0��X%<780� 1�Y%>475�Y%<514F%=� 1� 1� 1$ �F%=� 1.�1,-10,200,1 18currents%(T%)=N% 1B� 1L� 1V��doskill(T%) 1`�A$ 1jA$=�skillname(T%) 1t�11:ȓȐ372,480,12*32,32 1~�12:�372,508:�A$ 1�� 1�� 1�ݤskillname(T%) 1��A$ 1� ȎT%� 1��1:A$="BEGINNER" 1��2:A$="ENTHUSIAST" 1��3:A$="AMATEUR" 1��4:A$="PROFESSIONAL" 1�� 1�=A$ 1�� 2 ��getname(T%) 2 �butt(0) 2*�X%,Y%,K%,Q,OX%,OY%,A$,B$:A$=name$(T%) 2�noofplayers>1� 2( ȎT%� 22�1:B$="FIRST " 2<�2:B$="SECOND " 2F�3:B$="THIRD " 2P�4:B$="FOURTH " 2Z�5:B$="FIFTH " 2d�6:B$="SIXTH " 2n� 2x� 2��A$<10A$=A$+�10-�A$," ") 2�6�centbox(�,"WHAT IS THE "+B$+"PLAYERS NAME?",15,8) 2�ȗȓ306,480,634,48 2��smallmes(784,472,11,"OK") 2��smallmes(288,472,11,A$) 2�ȗOX%,OY%,K%:�=1000 2�� 2��butt(0) 2�A$=name$(T%) 2��336,516:�A$; 2��139:*FX21 2�� 2�2Q=�(0):�Q<>� �(X%<702�K%) �=0:ȗOX%,OY%,K%:ȗ� 3�Q<>127Q=Q �223 3�(Q>64�Q<91)�Q=127� 3+�A$<>10�Q<>127A$=A$+�Q:�Q:�1,-10,200,1 3".�A$<>0�Q=127A$=�A$,�A$-1):�Q:�1,-10,200,1 3,� 36ȗX%,Y%,K% 3@%�>500��(X%-OX%)>8��(Y%-OY%)>8ȗ� 3J�(X%>792�K%)�Q=13 3T5�A$=""�1,-15,125,20:name$(T%)=defname$(T%):�=0:�� 3^�1,-10,200,1:�� 3h�140:name$(T%)=A$ 3rdefname$(T%)=A$ 3|� 3�� 3�ݤnoplaying 3��butt(0) 3��play%=1�=2 3��X%,Y%,K%,F%,N% 3�)�centbox(�,"HOW MANY PLAYERS?",12,10) 3�$�mesbox(464,444,84,100):�dono(1) 3��mesbox(704,536,80,80) 3��mesbox(704,372,80,80) 3�%�15:�744,600:�720,554:�85,768,554 3�2�744,388:�720,432:�85,768,432:�720,436,768,436 3� �8:�720,432,744,388:�768,432 3��720,558,744,600:�768,558 4ȗȓ480,384,292,220 4N%=1:�:ȗX%,Y%,K% 4�K%� 4&�X%>716� 405�Y%>544�N%<6N%+=1:�dono(N%):�1,-10,200,1:�butt(0) 4:5�Y%<442�N%>1N%-=1:�dono(N%):�1,-10,200,1:�butt(0) 4D� 4N�X%<540� 4X�Y%>456�Y%<540F%=� 4b� 4l� 4v �F%=� 4��1,-10,200,1 4�=N% 4�� 4���dono(A%) 4��11:ȓȐ476,468,60,64 4��476,520 4��12:�double(A%) 4�� 4�� 4�ݤquest(A$,B$,C$,H%) 4� �L%,D%,R% 4�R%=704+�length(�C$) 4�L%=600-�length(�B$) 5�centbox(�,A$,12,6+H%) 5D%=464-H%*32 5�smallmes(L%,D%,11,B$) 5 �smallmes(704,D%,11,C$) 5*ȗȓL%+16,D%+8,R%-L%-64,48 54ȗ � 5>�butt(0) 5H�:ȗL%,R%,D% 5R�D%�(L%<568�L%>712) 5\�1,-10,200,1 5fD%=-(L%>712) 5p=D% 5z� 5�ݤlength(L%) 5�L%+=3:�(L%�1)-0L%+=1 5� =L%*32 5�� 5���double(C%) 5�C%=128+4*C% 5� �C%,C%+1,8,8,10,C%+2,C%+3,11 5�� 5�� 5���screenbox 5��M%:M%=�6 5��mesbox(0,0,1279,1023) 5��24,16;16;1263;1007;:�140:� 6��textwind 6�28,1,30,38*M%,1:�140:� 6� 6$� 6.��centbox(cls,A$,C%,H%) 68 �cls � 6B �T%,I%,M% 6L��=9M%=16�M%=8 6VT%=640-�A$*M% 6`I%=512+H%*16 6j=�mesbox(T%-M%,496-H%*16-20*(H%=1),�A$*M%*2+M%*2,H%*32+32) 6t�C%:�T%,I%-16*(H%=1):�5:�A$ 6~� 6�� 6���smallmes(x%,y%,C%,A$) 6� �o%,M% 6���=12M%=16�M%=32 6�o%=(1-(�A$�1))*M% 6�$�mesbox(x%,y%,�A$*M%+M%*2+o%,64) 6�!�12:�5:�x%+M%+o%�2,y%+44:�A$; 6�� 6�� 6���mesbox(x%,y%,X%,Y%) 6��8:ȓȐx%,y%,X%,Y% 6��3:ȓx%+4,y%+4,X%-8,Y%-8 7 �4:ȓx%+8,y%+8,X%-16,Y%-16 7 #�11:ȓȐx%+12,y%+12,X%-24,Y%-24 7� 7 7(��meswind2(A$,B$,C$,F%,C%) 72*CHANNELVOICE 1 1 7<�26 7F�X%,x%,x2%,c%,I%,Y% 7P!Y%=80-(B$<>"")*48-(C$<>"")*48 7ZX%=(�A$*16+32):x%=640-X%�2 7d�mesbox(x%,800,X%,Y%) 7n �3,C% 7x�5:X%=x%+16 7�x%=640-(�B$*8) 7�x2%=640-(�C$*8) 7��I%=1�F%*2+1 7��X%,772+Y%:�A$ 7��B$<>""�x%,724+Y%:�B$ 7��C$<>""�x2%,676+Y%:�C$ 7��del(50) 7��1,-10,180,1 7�� 7�� 7�� 7���meswind(A$,B$,C$,F%,C%) 7��meswind2(A$,B$,C$,F%,C%) 8�4:� 8�8,0 8*SCHOOSE topofscreen 8"�&ED,0,704 8, �windows2 86� 8@� 8J��board 8T'totscore%()=totscore%()+currentS%() 8^A�T%=1�noofplayers:holescores%(hsp%(T%),Hole%)=currentS%(T%):� 8h �boardcol 8r�3,0,144,0:�131:� 8|�winsort 8�!�P%,Y%,T%,I%,S%,mp%,A$,sc%,O% 8�O%=(play%=2)*4:�26 8��0:ȓȐ60,76,1156,920 8��64,0:ȓȐ64,80,1148,128 8��48,0:ȓȐ64,992,1148,-128 8�&�12:�768,544:�1212,992:�85,1212,80 8�"�13:�512,544:�64,80:�85,64,992 8��11:ȓȐ98,112,1080,848 8��0:ȓ98,112,1080,848 8�%�24,100;116;1176;956;:ȑ98,116:�5 8��14:�P%=1�6:Y%=788-P%*132 8��7:�0,Y%+124,1080,Y%+124 8��14:�0,Y%,1080,Y% 9&�T%=40�80�40:�0,Y%+T%,1080,Y%+T%:� 9'�T%=1�8:X%=T%*120:�X%,Y%,X%,Y%+80:� 9� 9&�P%=1�noofplayers 90,mp%=mapstart%+&2F9:Y%=728-(P%-1)*132:�12 9::�I%=0�-40�-40:�T%=0�8:�T%*120+4,Y%+I%:�;?mp%:mp%+=&300 9D �:�:� 9N�P%=1�noofplayers 9X5mp%=mapstart%+&2F9:Y%=728-(P%-1)*132:X%=32:par%=0 9b"�T%=1�Hole%:�T%=10Y%-=40:X%=32 9l7sc%=holescores%(hsp%(P%),T%)-?mp%:par%+=?mp%:�X%,Y% 9vȎ�sc%� 9�� 0:A$="PAR":�15 9�� 1:A$="+"+�sc%:�5 9��-1:A$=�sc%:�0 9�� 9���5-�A$," ");A$ 9�X%+=120:mp%+=&300 9�� 9�5�jump%(P%)+4:�4,768-(P%-1)*132:�name$(P%)�20+O%); 9�Ȏcurrents%(P%)� 9��1:�"{BEGINNER}"; 9��2:�"{ENTHUSIAST}"; 9��3:�"{AMATEUR}"; 9��4:�"{PROFESSIONAL}"; :� :A�40+O%);totscore%(P%);" STROKE"�(-(totscore%(P%)>1)*83)�53); :6A$=" : "+�Hole%+" HOLE"+�-(Hole%>1),"S")+" PLAYED" : Ȏplay%� :* �1:�match :4�2:�stroke :>� :H� :R �15:T%=542-�A$*8:�T%,824:�A$ :\�12:ȓT%-8,788,�A$*16+14,48 :f)�26:�smallmes(360,32,11," CONTINUE ") :p%�smallmes(720,32,11,"QUIT ROUND") :z� :�ȗȓ372,44,528,40 :�ȗ�:ȗ�464,64 :��butt(0):�=0:���>100 :��:ȗX%,Y%,T% :��T%�(X%<556�X%>718) :�D�X%>718�confirm:�X%>926�0,0:�("SCHOOSE topofscreen"):�&ED,0,0:�0 :��� :��0:�4:� :�ȗ� :��139 :�� :�� :� ��confirm ;�butt(0) ;�gtos(0) ;�mesbox(640,32,512,160) ;$1�8:�656,176:�"ARE YOU SURE YOU WANT TO QUIT?" ;.�smallmes(794,60,8,"YES") ;8�smallmes(916,60,8,"NO") ;Bȗȓ806,72,178,40:ȗ�890,82 ;L�:ȗX%,Y%,T% ;V�T%�(X%<866�X%>926) ;`� ;j� ;t��match ;~�T%,B$,S1%,S2% ;��T%=1�Hole% ;�;� holescores%(hsp%(1),T%)<holescores%(hsp%(2),T%)S1%+=1 ;�;� holescores%(hsp%(2),T%)<holescores%(hsp%(1),T%)S2%+=1 ;��:T%=�(S2%-S1%) ;�%B$=�(T%):�T%B$=B$+" UP"�B$="EVEN" ;�B$=�14-�B$," ")+B$ ;� ȎP%� ;��1:�S1%>=S2%�B$ ;��2:�S2%>=S1%�B$ ;�� ;�!A$=Course$+" : MATCH PLAY"+A$ ;�� <