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) <