home *** CD-ROM | disk | FTP | other *** search
/ The Glitch Apple Disk Collection / 2014.glitch.apple.collection.zip / indexed / PROGOLF1.DSK / GS.bas < prev    next >
BASIC Source File  |  2014-09-09  |  11KB  |  164 lines

  1. 0  REM ==>GOLF.STARTUP
  2. 5  IF  PEEK(103) +256 * PEEK(104) < >24576  THEN  POKE 103,0: POKE 104,96: POKE 24576,0: &  RUN "GS"
  3. 10  LOMEM: 38600
  4. 20  CLEAR :X% = 0:Y% = 0:H% = 0:LN% = 0:PX% = 0:PY% = 0:Q$ = ""
  5. 25  ONERR  GOTO 12000
  6. 26 ER = 0
  7. 30  &  RECALL "GU"
  8. 60  POKE 232,0: POKE 233,28
  9. 70  HOME : POKE 34,0
  10. 80  CALL 4045
  11. 90  POKE  -16297,0: POKE  -16304,0: POKE  -16302,0: POKE  -16300,0
  12. 100  REM  DEMO
  13. 120  FOR I = 1 TO 2500: NEXT : CALL 4082
  14. 150  SCALE= 1: ROT= 0: POKE 230,32
  15. 190  FOR I = 1 TO 2000: NEXT 
  16. 200  HCOLOR= 3: DRAW 60 AT 130,81: DRAW 66 AT 131,84
  17. 210  FOR I = 1 TO 1400: NEXT I
  18. 220  FOR I = 63 TO 65: XDRAW I AT 131,76: FOR J = 1 TO 100: NEXT J: XDRAW I AT 131,76: NEXT I
  19. 230  FOR I = 65 TO 64  STEP  -1: XDRAW I AT 131,76: FOR J = 1 TO 100: NEXT J: XDRAW I AT 131,76
  20. 240  XDRAW 63 AT 131,76
  21. 250 I =  PEEK( -16336) - PEEK( -16336)
  22. 260  FOR I = 131 TO 238: HCOLOR= 3: DRAW 66 AT I,84: FOR J = 1 TO 10: NEXT : HCOLOR= 1: DRAW 66 AT I,84: NEXT I
  23. 270  HCOLOR= 0: DRAW 66 AT 237,84: DRAW 66 AT 238,84:I =  PEEK( -16336) - PEEK( -16336)
  24. 350  POKE 230,32: HCOLOR= 3
  25. 370  FOR I = 1 TO 3000: NEXT 
  26. 900  TEXT : HOME : VTAB 11: PRINT  SPC( 9);"PROFESSIONAL TOUR GOLF": VTAB 13: HTAB 20: PRINT "BY": VTAB 15: HTAB 12: PRINT "HENRY L. RICHBOURG": POKE 34,18: VTAB 22
  27. 905  PRINT "IS THIS A NEW <N> OR CONTINUED <C> GAME       -->";: FLASH : PRINT " ";: NORMAL : POKE  -16368,0: POKE  -16384,0
  28. 910  IF  PEEK( -16384) < >195  AND  PEEK( -16384) < >206  THEN 910
  29. 915  IF  PEEK( -16384) = 206  THEN 1000
  30. 919  POKE 216,0: TEXT : HOME : VTAB 5
  31. 920  PRINT "INSERT YOUR ";: INVERSE : PRINT "SSI SAVE GAME DISK";: NORMAL : PRINT " AND": PRINT "PRESS THE <SPACE BAR> TO CONTINUE ";: INVERSE : PRINT " ": NORMAL : POKE  -16368,0: POKE  -16384,0
  32. 922  IF  PEEK( -16384) < >160  THEN 922
  33. 923  ONERR  GOTO 919
  34. 924  &  READ "GAME.CAT"
  35. 925  INPUT GC$: &  END 
  36. 926  HOME : INVERSE : PRINT  SPC( 9)"SAVE GAME DISK CATALOG" SPC( 9): NORMAL : FOR I = 1 TO 10: PRINT "GAME # "I;: HTAB 12: IF  MID$ (GC$,I,1) = "0"  THEN  PRINT "FREE";: GOTO 928
  37. 927  PRINT "IN USE";
  38. 928  HTAB 21: PRINT "GAME # "I +10;: HTAB 32: IF  MID$ (GC$,I +10,1) = "0"  THEN  PRINT "FREE": GOTO 930
  39. 929  PRINT "IN USE"
  40. 930  NEXT : PRINT : PRINT "PRESS <RETURN> FOR A NEW GAME OR": INPUT "ENTER NUMBER OF GAME TO CONTINUE ";A$: IF A$ = ""  THEN  TEXT : HOME : GOTO 1000
  41. 931  IF  VAL(A$) <1  OR  VAL(A$) >20  THEN 926
  42. 934 I =  VAL(A$): IF  MID$ (GC$,I,1) = "0"  THEN  PRINT : PRINT "GAME # "I" DOES NOT EXIST<CTRL-G><CTRL-G>.": FOR I = 1 TO 1000: NEXT : GOTO 926
  43. 935  POKE 0,I
  44. 936  CLEAR 
  45. 937  &  RECALL "REG." + STR$( PEEK(0))
  46. 938  &  RECALL "GAME." + STR$( PEEK(0))
  47. 939 I = CB%
  48. 940  HOME : VTAB 5: PRINT "INSERT THE MASTER GOLF DISK OR COURSE   MODULE DISK ON WHICH THE SUSPENDED      GAME WAS BEING PLAYED AND PRESS THE     <SPACE BAR> TO CONTINUE": POKE  -16384,0: POKE  -16368,0
  49. 941  IF  PEEK( -16384) < >160  THEN 941
  50. 945  ONERR  GOTO 940
  51. 950  &  READ "GCO"
  52. 955  INPUT NC%: INPUT CB%: &  END 
  53. 960  IF I < >CB%  THEN  FLASH : PRINT "<CTRL-G><CTRL-G>ERROR. YOU DO NOT HAVE THE RIGHT DISK!!": NORMAL : FOR J = 1 TO 2500: NEXT : GOTO 940
  54. 965  &  RECALL "GSC"
  55. 967 I =  VAL( RIGHT$(CO$, LEN(CO$) -1)): POKE 251,12 +4 *I: CALL 3117
  56. 968  &  RECALL "PS"
  57. 969  INVERSE : VTAB 1: FOR I = 1 TO P1%: HTAB 12 +I *6: PRINT PL$(I);: NEXT : NORMAL 
  58. 970  FOR I = 1 TO H% -1: VTAB (I +1 +(I >9)): FOR J = 1 TO P1%: HTAB 13 +6 *J: PRINT S%(I +(I >9),J);: NEXT : NEXT : INVERSE : VTAB 11: FOR J = 1 TO P1%: HTAB 12 +6 *J: IF S%(10,J) <10  THEN  PRINT " ";
  59. 971  PRINT S%(10,J);: NEXT : NORMAL : IF H% -1 <10  THEN 974
  60. 972  VTAB 21: INVERSE : FOR J = 1 TO P1%: HTAB 12 +6 *J: IF S%(20,J) <10  THEN  PRINT " ";
  61. 973  PRINT S%(20,J);: NEXT : NORMAL 
  62. 974  VTAB 22: FOR J = 1 TO P1%: HTAB 12 +6 *J: IF S%(21,J) <10  THEN  PRINT " ";
  63. 975  PRINT S%(21,J);: NEXT : VTAB 24: POKE 34,23
  64. 980  CALL 3111: &  RUN "GP"
  65. 1000  REM  INITIALIZE
  66. 1050  CLEAR :X% = 0:Y% = 0:H% = 0:LN% = 0:PX% = 0:PY% = 0:Q$ = ""
  67. 1100  POKE  -16368,0: PRINT : POKE 232,0: POKE 233,28
  68. 1150  POKE  -16303,0: POKE 34,18: HOME : POKE 34,0
  69. 1200  VTAB 22: HTAB 1: PRINT "HOW MANY PLAYERS IN YOUR GROUP (1-4) ";: GET A$: PRINT : IF  ASC(A$) <49  OR  ASC(A$) >52  THEN  PRINT "GROUPS ARE RESTRICTED TO 1-4 PLAYERS": GOTO 1200
  70. 1250 P1% =  VAL(A$): POKE  -16368,0
  71. 1300  DIM C%(3,18,4),S%(21,4),PL$(4),CL$(17),O1%(4),O2%(4),CO%(4),YD(4),DR%(4),XL(4),YL(4),PU(3,2,8,2),TX%(18),TY%(18),HX%(18),HY%(18),SC(18),PH%(18),PV%(18),HO%(1,3),T%(4),O3%(4),YE(4),YO%(18),A9%(18)
  72. 1350  DIM Q$(80),ID$(4),CS(2,3),AP%(18,3),CF%(8),DF(18),GH%(4),TP%(4),IG%(4)
  73. 1400  HOME : VTAB 6: PRINT "PLEASE ENTER ";: INVERSE : PRINT "EXACTLY THREE";: NORMAL : PRINT " INITIALS FOR EACH PLAYER IN THE DESIRED ORDER OF PLAYFOR THE FIRST HOLE:": VTAB 10: POKE  -16368,0: FOR I = 1 TO P1%:PL$(I) = "": PRINT "PLAYER NO. ";I;" -> ";: FOR J = 1 TO 3
  74. 1450  GET A$: POKE  -16368,0: IF ( ASC(A$) = 13  OR ( ASC(A$) = 8  AND J = 1)) GOTO 1450
  75. 1500  IF  ASC(A$) < >8 GOTO 1650
  76. 1550 J = J -1: PRINT A$;: IF J = 1  THEN PL$(I) = "": GOTO 1450
  77. 1600 PL$(I) =  LEFT$(PL$(I),J -1): GOTO 1450
  78. 1650  PRINT A$;:PL$(I) = PL$(I) +A$: NEXT J: PRINT : NEXT I: POKE  -16368,0: POKE  -16384,0
  79. 1700  VTAB 22: HTAB 8: PRINT " INSERT PLAYER DISK THEN  ": PRINT  SPC( 12);"PRESS  <RETURN>";: FOR I = 0 TO 750: NEXT : VTAB 22: HTAB 1: PRINT  SPC( 78);: FOR I = 0 TO 40: IF  PEEK( -16384) < >141  THEN  NEXT : GOTO 1700
  80. 1750 I = 40: NEXT : POKE  -16368,0: POKE  -16384,0
  81. 1800 ER = 1: ONERR  GOTO 12000
  82. 1850  &  READ "PLAYER.NAMES"
  83. 1900  FOR I = 1 TO 80: INPUT Q$(I): NEXT 
  84. 1950  &  END 
  85. 1960 I = 0:I1 = 1:I2 = 20: TEXT : HOME : GOTO 2000
  86. 1970  IF I1 = 1  THEN I1 = 41:I2 = 60: GOTO 2000
  87. 1980 I1 = 1:I2 = 20
  88. 2000  POKE 34,0: VTAB 1: HTAB 1: FOR J = I1 TO I2:A$ = " " + STR$(J):A$ =  RIGHT$(A$,2): HTAB 1: CALL  -868: PRINT A$"  "Q$(J);: HTAB 21: PRINT J +20"  "Q$(J +20): NEXT : INVERSE : PRINT "    PRESS <RETURN> FOR MORE PLAYERS     ": NORMAL : POKE 34,21: VTAB 22
  89. 2050  HOME : PRINT PL$(I +1);: PRINT " SELECT CHARACTERISTICS ("I1"-"I2 +20;: INPUT ") ";A$:J =  VAL(A$): IF A$ = ""  THEN 1970
  90. 2060  IF J <I1  OR J >I2 +20  THEN 2050
  91. 2070  IF Q$(J) = "<NOT ASSIGNED>"  THEN 12100
  92. 2100 IG%(I +1) = J
  93. 2150 ER = 2: ONERR  GOTO 12000
  94. 2200 A$ = "PD." + STR$(J): &  READ A$
  95. 2250  FOR J = 0 TO 18: FOR K = 0 TO 4: INPUT C%(I,J,K): NEXT K,J: FOR J = 0 TO 2: FOR K = 0 TO 8: FOR I9 = 0 TO 2: INPUT PU(I,J,K,I9): NEXT : NEXT : NEXT : &  END 
  96. 2300  PRINT "HUMAN <H> OR COMPUTER <C> ";: POKE  -16368,0
  97. 2350  GET A$: IF A$ < >"C"  AND A$ < >"H"  THEN 2350
  98. 2400  PRINT A$:ID$(I +1) = A$
  99. 2450 I = I +1: IF I <P1%  THEN  HOME : GOTO 2050
  100. 2500  TEXT : HOME : VTAB 6
  101. 2550  FOR I = 1 TO 21: FOR J = 1 TO P1%:S%(I,J) = 0: NEXT J,I
  102. 2600 PI = 3.14159265:RA = .0174532925: FOR I = 1 TO P1%:CO%(I) = 0:O1%(I) = I:O2%(I) = I: NEXT 
  103. 2650  POKE  -16368,0: PRINT : PRINT "    IF YOU ARE USING A COURSE MODULE           INSERT THE MODULE DISK NOW": PRINT : PRINT  SPC( 19);: INVERSE : PRINT "OR": NORMAL : PRINT : PRINT "     RE-INSERT THE MASTER GOLF DISK": PRINT : PRINT  SPC( 18);"THEN"
  104. 2700  VTAB 16: HTAB 14: PRINT "PRESS <RETURN>";: FOR I = 0 TO 500: NEXT : HTAB 1: CALL  -868: FOR I = 0 TO 40: IF  PEEK( -16384) < >141  THEN  NEXT : GOTO 2700
  105. 2750 I = 50: NEXT : POKE  -16368,0: POKE  -16384,0: HOME 
  106. 2800  DIM A$(3)
  107. 2850 ER = 3: ONERR  GOTO 12000
  108. 2900  REM => J=#COURSES ON DISK          I1=COURSE BASE #
  109. 2950  &  READ "GCO"
  110. 3000  INPUT NC%: INPUT CB%
  111. 3050  FOR I = 1 TO NC%: INPUT A$(I): NEXT 
  112. 3100  &  END 
  113. 3150 ER = 4: ONERR  GOTO 12000
  114. 3200  &  RECALL "GSC"
  115. 3250  POKE 232,0: POKE 233,28: POKE  -16368,0
  116. 3300  VTAB 6: PRINT " WHICH COURSE WOULD YOU LIKE TO PLAY?": PRINT : FOR I = 1 TO NC%: HTAB 9: PRINT I" - "A$(I): NEXT 
  117. 3350  VTAB 12: HTAB 9: PRINT "ENTER COURSE NUMBER";: FOR I = 0 TO 500: NEXT : HTAB 1: CALL  -868: FOR I = 0 TO 20: IF  PEEK( -16384) <177  OR  PEEK( -16384) >176 +NC%  THEN  NEXT : GOTO 3350
  118. 3400 I = 20: NEXT : GET CO$: POKE  -16368,0: POKE  -16384,0
  119. 3450  REM => CN%=COURSE NUMBER           FOR RECORD UPDATE
  120. 3500 CN% = CB% + VAL(CO$)
  121. 3550  IF CO$ = "1"  THEN  POKE 251,16: POKE 1928,49: GOTO 3750
  122. 3600  IF CO$ = "2"  THEN  POKE 251,20: POKE 1072,50: GOTO 3750
  123. 3650  IF CO$ = "3"  THEN  POKE 251,24: POKE 1200,51: GOTO 3750
  124. 3700  GOTO 3350
  125. 3750  PRINT  SPC( 6);"DO YOU WANT WIND EFFECT?";: FOR I = 0 TO 500: NEXT : HTAB 1: CALL  -868: FOR I = 0 TO 40: IF  PEEK( -16384) <128  THEN  NEXT : GOTO 3750
  126. 3800 I = 50: NEXT : GET A$:WF% = (A$ = "Y"):J = WF% *2 +11: PRINT  SPC( J);"WIND ";: IF A$ < >"Y"  THEN  INVERSE : PRINT "NOT";: NORMAL : PRINT " ";
  127. 3850  PRINT "IN PLAY"
  128. 3900 CO$ = "." +CO$: POKE  -16368,0
  129. 3950  VTAB 17: HTAB 9: PRINT "PRESS <RETURN> TO BEGIN";: FOR I = 1 TO 500: NEXT : HTAB 8: CALL  -868: FOR I = 1 TO 25:J =  RND(1): IF  PEEK( -16384) < >141  THEN  NEXT : GOTO 3950
  130. 4000 I = 25: NEXT : POKE  -16384,0: POKE  -16368,0
  131. 4050  CALL 3117: INVERSE : VTAB 1: FOR I = 1 TO P1%: HTAB 12 +I *6: PRINT PL$(I);: NEXT I: VTAB 24: HTAB 10: PRINT "LOADING COURSE DATA";: NORMAL : HTAB 38: POKE 33,2: POKE 32,37: POKE 34,23: PRINT : PRINT 
  132. 4100 ER = 5: ONERR  GOTO 12000
  133. 4150 A$ = "GCD" +CO$: &  READ A$
  134. 4200  FOR I = 1 TO 17: INPUT CL$(I): NEXT : FOR I = 1 TO 18: INPUT TX%(I): INPUT TY%(I): INPUT SC(I): INPUT PH%(I): INPUT PV%(I): NEXT I
  135. 4250  FOR I = 1 TO 18: FOR J = 0 TO 3: INPUT HO%(0,J): INPUT HO%(1,J): NEXT J:J =  INT( RND(1) *4):HX%(I) = HO%(0,J):HY%(I) = HO%(1,J): NEXT I
  136. 4300  FOR I = 1 TO 18: INPUT YO%(I): NEXT : FOR I = 1 TO 18: INPUT A9%(I): NEXT 
  137. 4350  FOR I = 1 TO 18: FOR J = 0 TO 3: INPUT AP%(I,J): NEXT J,I
  138. 4400  FOR I = 0 TO 8: INPUT CF%(I): NEXT 
  139. 4450  FOR I = 1 TO 18: INPUT DF(I): NEXT 
  140. 4500  INPUT G$
  141. 4550  &  END 
  142. 4560  &  READ "GST"
  143. 4570  FOR I = 0 TO 30: INPUT Q$(I): NEXT 
  144. 4580  &  END 
  145. 4600  POKE 32,0: POKE 33,40
  146. 4650 W% = WF% *(5 + RND(1) *11):WG% = WF% *(3 + RND(1) *3)
  147. 4700  &  RECALL "PS"
  148. 4750 ER = 6: ONERR  GOTO 12000
  149. 4800 H% = 1: CALL 3111: &  RUN "GP
  150. 11000  FOR I = 1 TO  LEN(Q$):F =  ASC( MID$ (Q$,I,1)) -31: HCOLOR= 3: DRAW F AT X +(I -1) *7,Y:F =  PEEK( -16336): NEXT : RETURN 
  151. 12000  REM =>ERROR HANDLING
  152. 12010  ON ER GOTO 12020,12070,12020,12020,12070,12020
  153. 12020  IF  PEEK(222) < >1 GOTO 12130
  154. 12030  POKE  -16303,0: POKE 32,0: POKE 33,40: POKE 216,0: PRINT : PRINT "<CTRL-G>YOU DO NOT HAVE THE PROPER DISK<CTRL-G>!";: FOR EQ = 1 TO 2000: NEXT : PRINT : INPUT "INSERT PROPER DISK AND PRESS <RETURN>";ER$
  155. 12040  ONERR  GOTO 12000
  156. 12050  ON ER GOTO 1800,2150,2850,3150,4100,4750
  157. 12060  RESUME 
  158. 12070  IF  PEEK(222) < >1  AND  PEEK(222) < >5 GOTO 12130
  159. 12080  IF  PEEK(222) = 1 GOTO 12030
  160. 12090  POKE 216,0: IF ER = 5 GOTO 12120
  161. 12100  PRINT : PRINT "REQUESTED PLAYER FILE DOES NOT EXIST<CTRL-G><CTRL-G><CTRL-G>!";: FOR EQ = 1 TO 2000: NEXT : PRINT 
  162. 12110  GOTO 2050
  163. 12120  TEXT : HOME : PRINT "COURSE DATA FILE READ ERROR!<CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>": END 
  164. 12130  TEXT : HOME : PRINT "ERROR NUMBER "; PEEK(222);" IN LINE "; PEEK(218) +256 * PEEK(219);"<CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G><CTRL-G>": END