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