10000 '************************************************************* 10010 '***** PC-GOLF THE GOLFER's PROGRAM PC-GOLF ***** 10020 '***** Version 1.3 (C) 1982,1983,1984 Ed Chandler ***** 10030 '************************************************************* 10040 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10050 ' 3. GET THE GOLFERS ROSTER 10060 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10070 CLS:PRINT MNU3$:PRINT 10072 IF ROS=0 THEN 10080 10075 DEF SEG=&H40:I%=PEEK(&H17):I%=I% OR 32:POKE &H17,I% 'num lock on 10080 MNU1$="1. REVIEW the golfer's roster.":PRINT SPC(3);MNU1$ 10090 MNU2$="2. ADD a new player to the roster.":PRINT SPC(3);MNU2$ 10100 MNU4$="3. CHANGE the golfer's roster.":PRINT SPC(3);MNU4$ 10110 MNU5$="4. DELETE a player from the roster.":PRINT SPC(3);MNU5$ 10120 MNU6$="5. ERASE a player's score sheet.":PRINT SPC(3)MNU6$ 10130 PRINT SPC(3);MNURT$:PRINT 10140 M1$="key":M2$="(1,2,3,4,5 OR M). ":GOSUB 570 10150 IF KB=1 THEN 10250 'review 10160 IF KB=2 THEN 10320 'add 10170 IF KB=3 THEN 11080 'update 10180 IF KB=4 THEN 12030 'delete 10190 IF KB=5 THEN 12270 'erase scores 10200 IF KB$="M" OR KB$="m" THEN 530 'back to main 10210 GOSUB 610:GOTO 10070 10220 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10230 ' 3.1. Review Player Roster 10240 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10250 GOSUB 10260:GOTO 10070 'return 10260 CLS:PRINT MNU1$:X=1:GOSUB 550 'display player roster 10270 IF PR=0 THEN GOSUB 580 ELSE GOSUB 590 10280 RETURN 10290 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10300 ' 3.2. ADD a Player to the Roster 10310 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10320 GOSUB 10330:GOTO 10070 'return 10330 CLS:PRINT MNU2$:IF CACT>0 THEN 10360 10340 PRINT:PRINT"To add a player to the roster you must first" 10350 PRINT"add his home course to the course directory.":GOSUB 580:RETURN 10360 IF PACT"Y" THEN RETURN 10420 CLS:PRINT MNU2$:PRINT:PRINT"Are you adding a man or woman golfer?" 10430 PRINT:PRINT" 1. Man":PRINT" 2. Woman" 10440 PRINT:LINE INPUT"ENTER the correct line number. ";KB$ 10450 KB=VAL(KB$):IF KB<1 OR KB>2 THEN GOSUB 610:GOTO 10420 10460 IF KB=1 THEN T1$=MSEX$ ELSE T1$=FSEX$ 10470 CLS:PRINT MNU2$:PRINT 10480 LINE INPUT "ENTER the name of the player you're adding. ";KB$ 10490 L=LEN(KB$):IF L>0 AND L<=NMAX THEN 10530 10500 PRINT:PRINT"Please limit the name to ";NMAX;" letters maximum." 10510 GOSUB 580:GOTO 10470 10520 '+++++ find PLAYER ID # for the addition 10530 GOSUB 700:GOSUB 660 'open PDIR,DAT 10540 FOR I=1 TO PMAX:GET #4,I:RN=CVI(A4$) 'ID # 10550 IF RN=0 THEN RN=I:GOTO 10610 'USE THIS SLOT FOR PLAYER ID 10560 NEXT:IF RN0 AND KB<= CMAX AND TMP(KB)=KB THEN 10790 'entry ok 10770 PRINT:PRINT "Please choose a line number from the list." 10780 GOSUB 580:GOTO 10740 10790 RSET E4$=KB$ 'course id# 10800 '+++++ customary tee box +++++ 10810 CLS:PRINT MNU2$:PRINT 10820 GOSUB 10840:GOTO 10970 10830 '+++++ 10840 GOSUB 655:GET #3,KB:CLOSE #3 'get course 10850 PRINT"Which tee will this player normally use?":PRINT:T=1 10860 IF CVS(K2$)<>0 THEN PRINT USING" #. GOLD";T:T$(T)="g":T=T+1 10870 IF CVS(L2$)<>0 THEN PRINT USING" #. BLUE";T:T$(T)="b":T=T+1 10880 IF CVS(F2$)<>0 THEN PRINT USING" #. WHITE";T:T$(T)="w":T=T+1 10890 IF CVS(I2$)<>0 THEN PRINT USING" #. RED";T:T$(T)="r":T=T+1 10900 PRINT:LINE INPUT"ENTER the line number of the player's usual tee. ";KB$ 10910 KB=VAL(KB$):IF KB>0 AND KB"Y" THEN RETURN 11130 CLS:PRINT MNU4$:X=1:GOSUB 550 'show roster 11140 IF PR=0 THEN GOSUB 580:RETURN 'empty roster 11150 PRINT:LINE INPUT"ENTER the line number of the player you want to change. ";KB$ 11160 KB=VAL(KB$):IF KB>0 AND KB<=PMAX AND TMP(KB)=KB THEN RN=KB:GOTO 11200 11170 ' 11180 GOSUB 611:GOTO 11130 11190 '+++++ change a field +++++ 11200 GOSUB 660:GET #4,RN 'get record to be changed 11210 GOSUB 670:GET #5,RN 'player.dat 11220 KB$=B4$:GOSUB 700:PN$=KB$ 'player name 11230 CLS:PRINT MNU4$:PRINT 11240 PRINT "LINE #" 11250 PRINT " 1. Player's Name";SPC(5);B4$ 11260 PRINT " 2. Telephone ";SPC(5);C4$ 11270 PRINT " 3. Handicap ";SPC(5);D4$ 11280 N=VAL(E4$):T$=MID$(GCDIR$(N),3,NMAX) 11290 PRINT " 4. Home Course ";SPC(5);T$:KB$=T$:GOSUB 700:CN$=KB$ 'name 11300 T$="Gold":IF G4$="b" THEN T$="Blue" 11310 IF G4$="w" THEN T$="White" ELSE IF G4$="r" THEN T$="Red" 11320 PRINT " 5. Usual tee box";SPC(5)T$ 11330 PRINT:LINE INPUT"ENTER the number of the line you want to change. ";KB$ 11340 KB=VAL(KB$):IF KB>0 AND KB<=5 THEN 11390 11350 PRINT:PRINT "Please choose a line number from the list." 11360 GOSUB 580:GOTO 11230 11370 ' 11380 ' 11390 KB$=INKEY$:IF KB$<>"" THEN 11390 11400 '+++++ player name +++++ 11410 IF KB<>1 THEN 11480 11420 CLS:PRINT MNU4$ 11430 PRINT:LINE INPUT"ENTER the replacement name. ";KB$ 11440 IF LEN(KB$)>0 AND LEN(KB$)<=NMAX THEN GOSUB 700:LSET B4$=KB$:GOTO 11980 11450 PRINT:PRINT"The name is too long. ";NMAX;" letters maximum. Try again." 11460 GOSUB 580:GOTO 11420 11470 '+++++ phone # +++++ 11480 IF KB<>2 THEN 11560 11490 CLS:PRINT MNU4$ 11500 PRINT:LINE INPUT"ENTER the replacement phone number. ";KB$ 11510 L=LEN(KB$):IF L=8 THEN 11540 11520 PRINT:PRINT"Please limit the phone number to 8 characters." 11530 GOSUB 580:GOTO 11410 11540 RSET C4$=KB$:GOTO 11980 'phone # 11550 '+++++ handicap +++++ 11560 IF KB<>3 THEN 11770 11570 T$=RIGHT$(C5$,1):IF T$<>"T" AND T$<>" " THEN 11610 'no hcap yet 11580 PRINT:PRINT"A handicap of ";C5$;" has been established for ";PN$;"." 11590 PRINT:PRINT"You cannot change an established handicap." 11600 GOSUB 580:GOTO 11980 11610 CLS:PRINT MNU4$ 11620 PRINT:LINE INPUT"ENTER the replacement handicap. ";KB$ 11630 GOSUB 11650:IF X=0 THEN 11750 ELSE 11610 11640 '+++++ 11650 X=0:T$=LEFT$(KB$,1):L=LEN(KB$):IF L<1 OR L>2 THEN 11700 11660 N=VAL(LEFT$(KB$,2)):IF T$="+" THEN N=VAL(MID$(KB$,2,1)) 11670 KB$=LEFT$(KB$,2):IF N<0 OR N>40 THEN 11700 11680 IF T$="-" THEN 11700 11690 IF F4$=MSEX$ AND N<=36 OR F4$=FSEX$ THEN RETURN 11700 PRINT:PRINT"Handicap limits are:":PRINT 11710 PRINT" Men 0 through 36" 11720 PRINT" Women 0 through 40" 11730 PRINT" Scratch use + sign" 11740 GOSUB 580:X=-1:RETURN 11750 T1$=KB$+"*":LSET D4$=T1$:RSET C5$=D4$:GOTO 11980 'h'cap 11760 '+++++ course ID +++++ 11770 IF KB<>4 THEN 11950 11780 CLS:PRINT MNU4$:M1=0:GOSUB 540 'show courses 11790 PRINT:LINE INPUT"ENTER the line number of the NEW home course. ";KB$ 11800 KB=VAL(KB$):IF KB>0 AND KB<=CMAX AND TMP(KB)=KB THEN 11830 'entry ok 11810 PRINT:PRINT "Please choose a line number from the list.." 11820 GOSUB 580:GOTO 11780 11830 IF B5$="00" OR INSTR(CN$,"*")<>0 THEN 11920 'tra if no home course yet 11840 PRINT:PRINT"A home course, ";CN$;", is already assigned for ";PN$;"." 11850 PRINT"Changing or reassigning home courses will erase all recorded" 11860 PRINT"gross scores and putts. Scores will have to be built up at" 11870 PRINT"the new or reassigned home course." 11880 ' 11890 PRINT:PRINT"This will not affect the player's adjusted gross scores nor" 11900 PRINT"the differentials used to calculate the player's handicap." 11910 RESTORE 816:GOSUB 600:IF KB$<>"Y" THEN 11980 11920 GOSUB 671:RSET E4$=STR$(KB):RSET B5$=E4$ 'course ID number 11930 LSET A5$="I" 'set invalid data flag 11940 '+++++ tee box +++++ 11950 CLS:PRINT MNU4$:PRINT 11960 KB=VAL(E4$):GOSUB 10840 'get new tee 11970 '+++++ update PDIR.DAT, PLAYER.DAT +++++ 11980 PUT #4,RN:PUT #5,RN:CLOSE #5,#4 11990 CLS:PRINT "UPDATE completed for ";B4$:X=1:GOSUB 550:GOSUB 580:RETURN 12000 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12010 ' 3.4. Delete a player from the directory 12020 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12030 GOSUB 12040:GOTO 10070 12040 CLS:PRINT MNU5$ 12050 ' 12060 RESTORE 819:GOSUB 600:IF KB$<>"Y" THEN RETURN 12070 CLS:PRINT MNU5$ 12080 X=1:GOSUB 550 'show roster 12090 IF PR=0 THEN GOSUB 580:RETURN 12100 ' 12110 PRINT:LINE INPUT"ENTER the line number of the player you want to delete. ";KB$ 12120 KB=VAL(KB$):IF KB>0 AND KB<=PMAX AND TMP(KB)=KB THEN RN=KB:GOTO 12150 12130 GOSUB 611:GOTO 12070 12140 '+++++ 12150 RESTORE 820:GOSUB 600 12160 IF KB$<>"Y" THEN 12040 12170 X=-1:GOSUB 630 'reduce PACT count 12180 GOSUB 660:GET #4,RN 12190 M1$=B4$:GOSUB 661 'inits 12200 PUT #4,RN:CLOSE #4 'empty slot 12210 GOSUB 670:GOSUB 672:PUT #5,RN:CLOSE #5 'empty slot 12220 CLS:PRINT "Deletion completed for ";M1$ 12230 X=1:GOSUB 550:GOSUB 580:RETURN 12240 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12250 ' 5. ERASE a players gross scores 12260 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12270 GOSUB 12280:GOTO 10070 12280 CLS:PRINT MNU6$ 12290 ' 12300 RESTORE 835:GOSUB 600 12310 IF KB$<>"Y" THEN RETURN 12320 CLS:PRINT MNU6$:X=1:GOSUB 550 'show roster 12330 IF PR=0 THEN GOSUB 580:RETURN 12340 PRINT:LINE INPUT"ENTER the player's line number for erasing scores. ";KB$ 12350 KB=VAL(KB$):IF KB>0 AND KB<=PMAX AND TMP(KB)=KB THEN RN=KB:GOTO 12380 12360 ' 12370 GOSUB 611:GOTO 12320 12380 RESTORE 813:GOSUB 600 12390 IF KB$<>"Y" THEN 12280 12400 CLS:PRINT MNU6$:PRINT 12410 PRINT SPC(4)"1. ERASE the gross scores for all rounds." 12420 PRINT SPC(4)"2. ERASE the putting scores for all rounds." 12430 PRINT SPC(4)"3. ERASE both the gross and putting scores." 12440 PRINT SPC(4)"4. None of the above. Don't erase anything." 12450 PRINT:PRINT SPC(8)"NOTE: This will not affect the adjusted gross scores" 12460 PRINT SPC(14)"used in calculating the players USGA handicap." 12470 PRINT:M1$="PRESS the number of your choice. (1,2,3 or 4) ":GOSUB 560 12480 IF KB>0 AND KB<5 THEN 12510 12490 PRINT:PRINT"You must choose a number from the list. Try again." 12500 GOSUB 580:GOTO 12400 12510 IF KB=4 THEN 12280 'save the day 12520 RESTORE 814:GOSUB 600:IF KB$<>"Y" THEN 12400 12530 GOSUB 660:GET#4,RN:CLOSE #4 12540 GOSUB 670:GET #5,RN:IF KB=2 THEN 12600 12550 '+++++ scores 12560 RSET E5$=MKI$(0):LSET F5$=STRING$(40,E5$):LSET G5$=STRING$(36,E5$) 12570 LSET H5$=STRING$(18,"9"):RSET I5$=MKI$(999) 12580 '+++++ putts 12590 IF KB<>3 THEN 12620 12600 RSET J5$=MKI$(0):LSET K5$=STRING$(40,J5$):LSET L5$=STRING$(36,J5$) 12610 LSET M5$=STRING$(18,"9"):RSET N5$=MKI$(999) 12620 PUT #5,RN:CLOSE #5 12630 CLS:PRINT MNU6$:PRINT:PRINT"Erasure completed for ";B4$ 12640 GOSUB 580:RETURN 14000 '+++++ grunt work 14010 DELETE 490-9999 14020 SAVE"b:player.asc",A 14030 RUN"b:main.bas" 15000 'for chain delete 4000 '+++++ grunt work 14010 D