180 TEXT : VTAB 10: CALL -868: INPUT "ENTER NAME OF THE COURSE ";N$: IF N$ = "" THEN PRINT CHR$(4)"RUN GOLF"
190 REM ****CHECK COURSE NAME****
200 N$ = "G" +N$
210 FOR I = 1 TO LEN(N$): IF ( MID$ (N$,I,1) <"A" OR MID$ (N$,I,1) >"Z") AND ( VAL( MID$ (N$,I,1)) = 0) THEN CALL -958: PRINT "INVALID FILE NAME": GOTO 180
220 NEXT
230 IF LEN(N$) >7 THEN CALL -958: PRINT "COURSE NAME MAY BE NO LONGER THAN SIX CHARACTERS": GOTO 180
240 ONERR GOTO 2460
250 PRINT D$;"OPEN COURSE.LIST"
260 PRINT D$;"READ COURSE.LIST"
270 INPUT NUM: IF NUM = 0 THEN 350
280 FOR K = 1 TO NUM
290 INPUT M$,KQ
300 IF M$ < >N$ THEN 340
310 VTAB 15: PRINT "*** SORRY,COURSE " RIGHT$(N$, LEN(N$) -1): PRINT "*** IS ALREADY ON THE DISK."
320 PRINT "*** USE ANOTHER COURSE NAME."
330 F = 1: GOTO 350
340 NEXT K
350 PRINT D$;"CLOSE COURSE.LIST"
360 IF F = 1 THEN F = 0: GOTO 180
370 :
380 REM ****CREATE GOLF HOLE****
390 :
400 ONERR GOTO 2350
410 HOME : VTAB 11: PRINT "(MAXIMUM OF 10)": VTAB 10: INPUT "ENTER NUMBER OF HOLES FOR THE COURSE";A$:H = VAL(A$): IF H < = 0 OR H >10 THEN 410
420 PRINT : PRINT : PRINT "EACH HOLE REQUIRES ABOUT 36 SECTORS": PRINT "YOUR COURSE WILL REQUIRE ";H *36;" SECTORS.": PRINT : PRINT "CONTINUE? (Y/N)": GET K$: IF K$ < >"Y" THEN PRINT : PRINT CHR$(4)"RUN GOLF"
430 FOR KQ = 1 TO H: HGR : GOSUB 1900
440 :
450 REM ****GET SHAPE DATA****
460 :
470 FOR K = 1 TO 6
480 READ S$,SN,SS,R,CLR
490 IF K >2 THEN HOME : VTAB 22: PRINT "ANY "S$" ON HOLE "KQ" ?": VTAB 24: PRINT "ENTER Y OR N ";: GET A$: IF A$ = "N" THEN 980
500 IF K >2 AND A$ < >"Y" THEN 490
510 HOME : SCALE= SS: ROT= 0:QQ = SS:R = 0:F = 0
520 INVERSE
530 :
540 REM ****PUT SHAPE ON SCREEN***
550 :
560 VTAB 22: HTAB (26 - LEN(S$))/2: PRINT "POSITION FOR THE "S$
570 NORMAL
580 VTAB 23: INPUT "HOW MANY LINES FROM THE LEFT ";A$:LE = VAL(A$)
590 VTAB 23: CALL -868: INPUT "HOW MANY LINES FROM THE TOP ";A$:LT = VAL(A$)
600 X = 10 *LE:Y = 10 *LT: IF X >260 OR Y >150 THEN HOME : VTAB 21: INVERSE : PRINT "TRY AGAIN": NORMAL : GOTO 560
610 IF X < = 0 OR Y < = 0 THEN HOME : VTAB 21: INVERSE : PRINT "TRY AGAIN": NORMAL : GOTO 560
620 ROT= R: XDRAW SN AT X,Y
630 HOME : VTAB 22: PRINT "CHANGE THE "S$" POSITION? Y/N ? ";: GET A$: IF A$ = "Y" THEN XDRAW SN AT X,Y: GOTO 510
640 IF A$ < >"N" THEN 630
650 TX = X:TY = Y
660 IF K = 2 THEN XDRAW SN AT X,Y: HCOLOR= CLR: DRAW SN AT X,Y: GOTO 910
670 IF K = 3 THEN XDRAW SN AT X,Y: HCOLOR= CLR: DRAW SN AT X,Y: GOTO 910
680 IF K >3 THEN XDRAW SN AT X,Y: HCOLOR= CLR: DRAW SN AT X,Y: GOTO 880
690 :
700 REM ****ROTATE TEE****
710 :
720 HOME : VTAB 21: HTAB (23 - LEN(S$))/2: INVERSE : PRINT "POSITION FOR THE "S$: NORMAL
1850 C = C +1:X = X +CX:Y = Y +CY:B$ = B$ +A$: HCOLOR= CLR: DRAW SN AT X,Y: GOTO 1720
1860 RETURN
1870 :
1880 REM ****DRAW BOUNDARY****
1890 :
1900 HCOLOR= 3: HPLOT 0,0 TO 0,150 TO 260,150 TO 260,0 TO 0,0: FOR KK = 0 TO 260 STEP 10: HPLOT KK,148 TO KK,152: HPLOT KK,0 TO KK,2: NEXT KK
1910 HPLOT 1,0 TO 1,150: HPLOT 259,150 TO 259,0
1920 FOR KK = 0 TO 150 STEP 10: HPLOT 0,KK TO 2,KK: HPLOT 258,KK TO 263,KK: NEXT KK
1930 :
1940 REM ****DRAW NUMBERS****
1950 :
1960 SCALE= 1: HCOLOR= 3
1970 FOR KK = 1 TO 39: READ RR,SN,XC,YC: ROT= RR: DRAW SN AT XC,YC: NEXT KK
1980 RETURN
1990 :
2000 REM ****GET KEYPRESS****
2010 :
2020 VTAB 24: HTAB 5: PRINT "PRESS THE ";: INVERSE : PRINT "RETURN";: NORMAL : PRINT " KEY TO GO ON...";: GET A$: HOME : RETURN
2030 :
2040 REM ****GET DRAWING MOVES****
2050 :
2060 IF A$ = "Q" THEN CX = -1:CY = -1: GOTO 2140
2070 IF A$ = "W" THEN CX = 0:CY = -1: GOTO 2140
2080 IF A$ = "E" THEN CX = 1:CY = -1: GOTO 2140
2090 IF A$ = "A" THEN CX = -1:CY = 0: GOTO 2140
2100 IF A$ = "D" THEN CX = 1:CY = 0: GOTO 2140
2110 IF A$ = "Z" THEN CX = -1:CY = 1: GOTO 2140
2120 IF A$ = "X" THEN CX = 0:CY = 1: GOTO 2140
2130 IF A$ = "C" THEN CX = 1:CY = 1: GOTO 2140
2140 RETURN
2150 GOTO 250
2160 :
2170 REM ****NUMBER SHAPE DATA****
2180 :
2190 DATA 0,7,265,12,0,8,268,22,0, 9,265,32,0,10,268,42,0,11,265,52
2200 DATA 32,12,268,57,0,13,265,72,0,14,265,82,0,12,265,92,0,7,265,102
2210 DATA 0,6,269,102,0,7,265,112,0,7,270,112,0,7,265,122,0,8 ,273,122
2220 DATA 0,7,265,132,0,9 ,270,131,0,7,265,142,0,10,273,142,0,8,21,159
2230 DATA 0,10,41,159,32,12,61,152,0,14,80,159,0,7,98,159,0,6,101,159
2240 DATA 0,7,115,159,0,8,123,159,0,7,135,159,0,10,143,159,0,7,155,159
2250 DATA 32,12,163,152,0,7,175,159,0,14,181,159,0,8,199,159,0,6,201,159
2260 DATA 0,8,219,159,0,8,225,159,0,8,239,159,0,10,244,159
2270 :
2280 REM ****SHAPE DATA****
2290 :
2300 DATA "TEE",2,1, 0,3,"GREEN",15,1, 0,6,"TREE",3,2 ,0,1,"ROUGH",4,2, 6,5
2310 DATA "SANDTRAP",4,2 ,0,7,"WATER",3,2 ,58,2
2320 :
2330 REM *** DISK ERROR TRAP ***
2340 :
2350 CALL -3288:ER = PEEK(222)
2360 IF ER = 4 THEN PRINT "DISK WRITE PROTECTED": GOTO 2430
2370 IF ER = 6 THEN PRINT "FILE NOT FOUND": GOTO 2430
2380 IF ER = 8 THEN PRINT "DISK I/O ERROR": GOTO 2430
2390 IF ER = 9 THEN PRINT "DISK FULL": GOTO 2430
2400 IF ER = 10 THEN PRINT "FILE LOCKED": GOTO 2430
2410 IF ER = 11 OR ER = 13 THEN PRINT "FILE NAME ERROR": INPUT "ENTER A NEW FILE NAME";N$:N$ = "G" +N$
2420 PRINT "ERROR #";ER" IN LINE "; PEEK(218) + PEEK(219) *256
2430 PRINT "PRESS ANY KEY TO CONTINUE": GET K$: PRINT
2440 ON EL GOTO 1050,1290,1360,1470
2450 GOTO 180
2460 CALL -3288: PRINT D$"CLOSE": IF PEEK(222) < >5 THEN PRINT "DISK ERROR #"; PEEK(222): PRINT "PRESS A KEY TO TRY AGAIN": GET K$: PRINT : HOME : GOTO 180