--- title: "Cherry Hills Golf" id: 56169 type: "computer_media" slug: "cherry-hills-golf" url: "http://localhost/computer_media/cherry-hills-golf/" markdown_url: "http://localhost/computer_media/cherry-hills-golf.md" published_at: "2024-07-21T01:53:19+00:00" modified_at: "2026-03-30T21:29:29+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2024/07/SCR-20240720-sxgw.png" excerpt: "Play all 18 holes of a legendary U.S. Open course, choosing clubs, managing your handicap, and battling hooks, slices, and tricky putts to finish under par." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" genre: - name: "Game" slug: "game" taxonomy: "genre" url: "http://localhost/type/game/" media_type: "Program" download_url: "https://archive.org/download/timex-sinclair-software-archive/CH%20Golf%20%28198x%29%28TS2068%29%28US%29%28Program%29.zip" mediadate: "198" images: - url: "http://localhost/wp-content/uploads/2024/07/SCR-20240720-sxgw.png" - url: "http://localhost/wp-content/uploads/2024/07/SCR-20240720-swvo.png" media_type_tags: "Game" --- # Cherry Hills Golf This program is a text-based golf simulation set at Cherry Hills Country Club, site of the 1986 U.S. Open Championship, spanning all 18 holes with accurate yardages and par values for each. The player selects a handicap, a personal weakness (hook, slice, poor distance, trap shots, or putting), and chooses clubs numbered 1–4 for long irons, 13–19 for short irons, and 20 for a wedge. Shot distances are computed via two subroutines (lines 3770 and 4150) that use iterative RANDOMIZE 0 loops to constrain random outcomes within club-appropriate yardage bands. The putting subsystem converts a potency number (1–13) into a distance calculation with its own random variance, tracking strokes against par and awarding bogey, par, birdie, or eagle designations for each hole and the full round. *** ## Program Analysis ### Program Structure The program divides into several logical phases: 1. **Setup (lines 1–390):** Screen initialization, hole count selection, handicap entry, weakness selection, and variable initialization. 2. **Club reference display (lines 400–500):** Shows a club selection guide before play begins. 3. **Main game loop (lines 500–1290):** Per-hole tee display, club selection, shot computation, and fairway/approach logic. 4. **Putting subsystem (lines 1300–1820):** Green distance tracking, putt potency input, overshoot/undershoot logic, and sand trap penalties. 5. **Hole scoring and progression (lines 1820–3210):** Score tallying, hole-in-one detection, and per-hole data (yardage, par, hazards) via a large dispatch table. 6. **End-of-round summary (lines 3220–3680):** Handicap-adjusted scoring with course-level bogey/par/birdie/eagle messages. 7. **Shot distance subroutines (lines 3770–4340):** Two subroutines compute valid shot distances for irons (clubs 13–19) and woods/long irons (clubs 1–4) respectively. ### Hole Data Dispatch Table Each of the 18 holes is represented by a block of code setting `d1` (distance in yards), `p` (par), `a$` (right hazard), and `b$` (left hazard), then jumping to line 500. The dispatch is handled by a chain of `IF h1=n THEN GO TO` statements at lines 2080–2240. Hole 18 is handled by a fall-through to lines 2250–2290 (470 yards, par 4). The actual Cherry Hills yardages are faithfully encoded: | Hole | Yards | Par | Right Hazard | Left Hazard | | --- | --- | --- | --- | --- | | 1 | 409 | 4 | ADJACENT FAIRWAY | ROUGH | | 2 | 433 | 4 | ADJACENT FAIRWAY | ROUGH | | 3 | 323 | 4 | OUT OF BOUNDS | ROUGH | | 4 | 410 | 4 | ROUGH | ADJACENT FAIRWAY | | 5 | 555 | 5 | WATER | ADJACENT FAIRWAY | | 6 | 130 | 3 | (carried) | ROUGH | | 7 | 384 | 4 | (carried) | (carried) | | 8 | 229 | 3 | OUT OF BOUNDS | ROUGH | | 9 | 443 | 4 | (carried) | (carried) | | 10 | 425 | 4 | (carried) | (carried) | | 11 | 594 | 5 | (carried) | (carried) | | 12 | 203 | 3 | ADJACENT FAIRWAY | ADJACENT FAIRWAY | | 13 | 402 | 4 | ROUGH | (carried) | | 14 | 464 | 4 | (carried) | TREES | | 15 | 210 | 3 | ADJACENT FAIRWAY | ADJACENT FAIRWAY | | 16 | 419 | 4 | WATER | ROUGH | | 17 | 550 | 5 | (carried) | (carried) | | 18 | 470 | 4 | TREES | TREES | ### Shot Distance Subroutines Two subroutines generate valid shot distances using an iterative rejection-sampling technique powered by `RANDOMIZE 0`. `RANDOMIZE 0` reseeds the random number generator from the system clock each call, giving genuine randomness without a fixed seed. - **Subroutine at 3770 (irons, clubs 13–19):** Computes a base distance as `(1/c)*2000`, then multiplies by `RND` plus 60. The result is checked against club-specific lower and upper bounds in a series of `IF` chains; if out of range it loops back to line 3770 and retries. Club 13 targets roughly 150–211 yards, reducing by about 14 yards per club up to club 19 at 89–131 yards. - **Subroutine at 4150 (woods/long irons, clubs 1–4):** Uses `(1/(c+4))*1000 * RND + 150`, with club 1 targeting 190–360 yards and clubs 2–4 progressively narrower ranges down to 140–221 yards for club 4. ### Wedge and Short-Game Logic When the remaining distance is under 100 yards the player is prompted to choose a potency percentage (0.01–1.00) at line 730. The resulting distance is computed as `100 * c7 * (RND*0 + 0.5)` at line 790 — note `RND*0` always yields 0, making the multiplier a constant 0.5. The result is then scaled by `* 0.8 + 10` at line 800. This means wedge shots are entirely deterministic given the player’s input percentage, with no random element at all. ### Putting Subsystem Green distance `d2` is set to `3*d1` at line 1300 (converting yards to feet). The player picks a potency value 1–13; the effective putt distance is `INT((3*p1)*(r9+0.1)) + 1` at lines 1420–1440, then scaled by 1.7 at line 1460. The variable `z9` (set to 0.7 at line 50) acts as a “holed” threshold in feet; `z8 = 6*z9 = 4.2` is the tolerance for “passed the cup.” If the weakness `d=5` (putting), a 1-in-3 chance exists at line 1780–1810 to lip out even from within the threshold. ### Weakness and Penalty System The player’s chosen weakness `d` modifies play in specific ways: - `d=0` (hook): Random penalty triggered if `r1 <= 0.1` (10% chance), sends to the hook message. - `d=1` (slice): Same 10% chance, sends to slice/out-of-bounds message. - `d=2` (poor distance): Subtracts 50 yards from long iron shots (capped at 125) and 20 yards from short iron shots. - `d=4` (trap shots): Two-stroke penalty when overrunning the green into a sand trap instead of the normal one stroke. - `d=5` (putting): 33% lip-out chance when ball is within the holed threshold. All other players have only a 1.5% chance (`r1 > 0.015` check at line 970) of random mishit, making the game much more forgiving for those without a declared weakness. ### Hole-in-One Detection Line 2950 jumps to line 2900, which checks `IF s>1 THEN GO TO 1300` — so a hole-in-one is only recognized if the ball lands within the `z9` threshold on the very first stroke (`s=1` at that point, since `s` is incremented at line 930 before the distance check). The celebration at lines 2960–3005 plays a 10-repetition beep sequence using alternating semitones. ### Bugs and Anomalies - **Hole 18 missing from dispatch:** Line 2240 checks `IF h1=19` (end of round) but there is no `IF h1=18` — hole 18 falls through to the default block at lines 2250–2290. This works correctly but is inconsistent with the explicit dispatch pattern used for all other holes. - **Hole 3 par:** Hole 3 is set to par 4 at line 2360 despite being only 323 yards, which is unusually short for a par 4 on a U.S. Open course. - **Handicap validation:** The check at line 260 rejects handicaps of 24 or above with a message but does not loop back — execution falls through to line 290 and the game continues with the invalid handicap. - **Line 1835 dead code:**`IF s=1 THEN GO TO 1840` at line 1830 immediately falls to line 1840 regardless, making the condition irrelevant. - **`DIM n$(1,13)` at line 5:** This array is declared but never used anywhere in the program. - **Lines 2520, 2570–2580, 2670–2680, 2720–2730, 2770–2780, 3040, 3190–3200:** Several holes use `LET a$=a$` or `LET b$=b$`, which are no-ops serving only as placeholders — the hazards are simply inherited from the previous hole, which may not reflect the actual course layout. - **Lines 1300–1310 unreachable from normal flow:** The ball reaches the green via line 2950, which goes to 2900, then to 1300. However line 1310 checks `IF d2=0 THEN GO TO 1820` — since `d2=3*d1` and `d1` is always positive at this point, this branch is never taken in practice. ## Source Code ``` 1 RANDOMIZE 0 2 BORDER 2: PAPER 1: INK 9: CLS 5 DIM n$(1,13) 10 PRINT "********************************" 40 PRINT "**** Welcome to Cherry Hills ***";"******* Country Club ********" 50 LET z9=0.7: LET z8=6*z9: LET z1=0 60 PRINT "** Site of the 1986 U.S. Open **";"********* Championship *********" 65 PRINT "********************************" 70 PRINT 80 LET z=18 90 PRINT 100 PRINT "Do you want to play all 18 holes? (Y/N)" 110 INPUT a$ 120 IF a$="y" THEN GO TO 215 130 PRINT 140 PRINT "How many holes do you want to to play? <19" 150 INPUT z 160 LET z=INT z 170 IF z>8 THEN GO TO 310 180 PRINT 190 PRINT "You must be a tenderfoot!......" 200 PRINT 210 LET z1=z+1 215 PRINT 220 PRINT INVERSE 1;"The commentator will explain the";"course as you play.","Enjoy your game, see you on the","19th tee." 230 PAUSE 200: CLS 240 PRINT ''''"What is your handicap?"," (For "; INVERSE 1;z; INVERSE 0;" holes)" 250 INPUT h 260 IF h<24 THEN GO TO 290 270 PRINT 280 PRINT "You must be kidding, no one is","that bad!" 290 PRINT 300 PRINT 310 PRINT "Difficulties at GOLF include:" 320 PRINT 'TAB 8;"0=HOOK",TAB 8;"1=SLICE",TAB 8;"2=POOR DISTANCE",TAB 8;"4=TRAP SHOTS",TAB 8;"5=PUTTING" 330 INPUT "Which one is your worst (1 only)";d 340 IF d<0 THEN GO TO 330 350 IF d=3 THEN GO TO 330 360 IF d>5 THEN GO TO 330 370 LET h1=1 380 LET s=0: LET s2=0: LET s3=0: LET s8=0: LET s9=0: LET p9=0 390 LET d1=409: LET p=4 400 CLS 410 PRINT '"These are the clubs you have in","your bag." 420 PRINT '"YARDAGE DESIRED CLUB NEEDED" 425 PRINT "________________________________" 430 PRINT '"200 to 400 yards 1 to 4" 440 PRINT '"100 to 200 yards 13 to 19" 450 PRINT '"0 to 100 yards 20" 460 PRINT : PRINT INVERSE 1;"When you are ready press ENTER" 470 PAUSE 0 500 PAUSE 200: CLS 510 PRINT '"You are at the tee of hole "; INVERSE 1;h1; INVERSE 0;,"Distance "; INVERSE 1;d1; INVERSE 0;" yards","PAR "; INVERSE 1;p 520 IF h1>1 THEN GO TO 550 530 LET a$="ADJACENT FAIRWAY" 540 LET b$="ROUGH" 550 PRINT "On the right is "; FLASH 1;a$ 560 PRINT "On the left is "; FLASH 1;b$ 570 PRINT 571 IF d1>100 THEN GO TO 590 572 PRINT "You are within wedge range" 573 GO TO 720 590 INPUT "What club do you choose? ";c: CLS 600 IF c<1 THEN GO TO 590 610 IF d1<100 THEN GO TO 670 620 IF c>19 THEN GO TO 690 630 IF c>4 THEN GO TO 650 640 GO TO 820 650 IF c<13 THEN GO TO 690 660 GO TO 890 670 IF c=20 THEN GO TO 720 680 PRINT 690 PRINT FLASH 1;"IMPROPER SELECTION! CHOOSE AGAIN" 700 PRINT 710 PAUSE 60: GO TO 590 720 LET c1=100 730 PRINT "You may gauge your distance by","percent of your full swing","---from .01 to 1.00" 750 INPUT c7: CLS 760 IF c7<.01 THEN GO TO 750 770 IF c7>1.00 THEN GO TO 750 780 LET c1=c1*c7 790 RANDOMIZE 0: LET c7=c1*(RND*0+.5) 800 LET c7=(c7+10)*.8 810 GO TO 930 820 GO SUB 4150 830 IF d<>2 THEN GO TO 930 840 LET c7=c7-50 850 IF c7<125 THEN GO TO 870 860 GO TO 930 870 LET c7=125 880 GO TO 930 890 GO SUB 3770 900 IF d<>2 THEN GO TO 930 910 LET c7=c7-20 920 GO TO 930 930 LET s=s+1 940 RANDOMIZE 0: LET r1=RND 950 IF d=0 THEN GO TO 1110 960 IF d=1 THEN GO TO 1130 970 IF r1>.015 THEN GO TO 1150 980 LET r2=INT (100*r1) 990 IF r2=0 THEN GO TO 1040 1000 IF r2=1 THEN GO TO 1060 1010 LET d3=d1-INT c7 1020 PRINT FLASH 1;'"You sliced your **** shot,","went out of bounds." 1030 GO TO 1080 1040 PRINT FLASH 1;'"You sliced your **** shot,","went into water......." 1050 GO TO 1080 1060 PRINT FLASH 1;'"You hooked your **** shot,","went???????" 1070 GO TO 1080 1080 PRINT INVERSE 1; BRIGHT 1;'"Penalty stroke assessed.","Hit from previous location." 1090 LET s=s+1 1100 PAUSE 100: PRINT ''"You are "; INVERSE 1;d1; INVERSE 0;" from the pin.": GO TO 570 1110 IF r1>.1 THEN GO TO 1150 1120 GO TO 1060 1130 IF r1>.1 THEN GO TO 1150 1140 GO TO 1020 1150 LET c7=INT c7 1160 LET d3=d1-INT c7 1170 IF d3<0 THEN GO TO 1220 1180 LET d1=d3 1190 IF d113 THEN GO TO 1360 1390 IF p1<1 THEN GO TO 1360 1400 RANDOMIZE 0: LET r9=RND 1410 IF r9<.5 THEN GO TO 1400 1420 LET p7=(3*p1)*(r9+.1) 1430 LET p7=INT p7 1440 LET p7=p7+1 1460 LET p8=1.7*p7 1470 LET p8=INT p8 1480 LET g=d2-p8 1490 IF g>-45 THEN GO TO 1630 1500 IF r1>.5 THEN GO TO 1530 1510 PRINT '"You overshot the cup and landed","in the fairway...." 1520 GO TO 1580 1530 PRINT "You oversot the GREEN, and","landed in a "; FLASH 1;"SAND TRAP!!!" 1540 IF d<>4 THEN GO TO 1580 1550 PRINT "You lost two strokes getting","back to the GREEN..." 1560 LET s=s+2 1570 GO TO 1600 1580 PRINT '"You lost one stroke getting","back to the GREEN..." 1590 LET s=s+1 1600 RANDOMIZE 0: LET d2=p1*(RND+.5) 1610 LET d2=INT d2 1620 PAUSE 100: GO TO 1330 1630 IF g<0 THEN GO TO 1700 1635 LET s=s+1 1640 LET d2=g 1650 IF g5 THEN GO TO 1820 1780 RANDOMIZE 0: LET r2=RND 1790 IF r2>.333 THEN GO TO 1820 1800 LET d2=1 1810 GO TO 1740 1820 LET s2=s2+s 1830 IF s=1 THEN GO TO 1840 1840 PRINT FLASH 1; BRIGHT 1;"YOU H*O*L*E*D IT" 1850 PRINT 1860 PRINT "Your score on hole "; INVERSE 1;h1; INVERSE 0;" was "; INVERSE 1;s 1870 LET p9=p9+p 1880 PRINT '"Total par for "; INVERSE 1;h1; INVERSE 0;" holes is "; INVERSE 1;p9; INVERSE 0;," your total is "; INVERSE 1;s2 1890 LET a=p-s 1910 IF a=-1 THEN GO TO 1960 1920 IF a=0 THEN GO TO 1990 1930 IF a=1 THEN GO TO 2010 1940 IF a=2 THEN GO TO 2030 1950 GO TO 2050 1960 PRINT ' FLASH 1; BRIGHT 1;"A BOGEY....." 1980 GO TO 2050 1990 PRINT ' FLASH 1; BRIGHT 1;"A PAR" 2000 GO TO 2050 2010 PRINT ' FLASH 1; BRIGHT 1;"Very good a BIRDIE" 2020 GO TO 2050 2030 PRINT ' FLASH 1; BRIGHT 1;"*** AN EAGLE !!*.." 2040 GO TO 2050 2050 LET h1=h1+1 2060 LET s=0 2070 IF h1=z1 THEN GO TO 3220 2080 IF h1=2 THEN GO TO 2300 2090 IF h1=3 THEN GO TO 2350 2100 IF h1=4 THEN GO TO 2400 2110 IF h1=5 THEN GO TO 2450 2120 IF h1=6 THEN GO TO 2500 2130 IF h1=7 THEN GO TO 2550 2140 IF h1=8 THEN GO TO 2600 2150 IF h1=9 THEN GO TO 2650 2160 IF h1=10 THEN GO TO 2700 2170 IF h1=11 THEN GO TO 2750 2180 IF h1=12 THEN GO TO 2800 2190 IF h1=13 THEN GO TO 2850 2200 IF h1=14 THEN GO TO 3020 2210 IF h1=15 THEN GO TO 3070 2220 IF h1=16 THEN GO TO 3120 2230 IF h1=17 THEN GO TO 3170 2240 IF h1=19 THEN GO TO 3220 2250 LET d1=470 2260 LET p=4 2270 LET a$="TREES" 2280 LET b$=a$ 2290 PAUSE 100: GO TO 500 2300 LET d1=433 2310 LET p=4 2320 LET a$="ADJACENT FAIRWAY" 2330 LET b$="ROUGH" 2340 PAUSE 100: GO TO 500 2350 LET d1=323 2360 LET p=4 2370 LET a$="OUT OF BOUNDS." 2380 LET b$="ROUGH" 2390 PAUSE 100: GO TO 500 2400 LET d1=410 2410 LET p=4 2420 LET a$="ROUGH" 2430 LET b$="ADJACENT FAIRWAY" 2440 PAUSE 100: GO TO 500 2450 LET d1=555 2460 LET p=5 2470 LET a$="WATER" 2480 LET b$="ADJACENT FAIRWAY" 2490 PAUSE 100: GO TO 500 2500 LET d1=130 2510 LET p=3 2520 LET a$=b$ 2530 LET b$="ROUGH" 2540 PAUSE 100: GO TO 500 2550 LET d1=384 2560 LET p=4 2570 LET a$=a$ 2580 LET b$=a$ 2590 PAUSE 100: GO TO 500 2600 LET d1=229 2610 LET p=3 2620 LET a$="OUT OF BOUNDS." 2630 LET b$="ROUGH" 2640 PAUSE 100: GO TO 500 2650 LET d1=443 2660 LET p=4 2670 LET a$=a$ 2680 LET b$=b$ 2690 PAUSE 100: GO TO 500 2700 LET d1=425 2710 LET p=4 2720 LET a$=a$ 2730 LET b$=b$ 2740 PAUSE 100: GO TO 500 2750 LET d1=594 2760 LET p=5 2770 LET a$=b$ 2780 LET b$=b$ 2790 PAUSE 100: GO TO 500 2800 LET d1=203 2810 LET p=3 2820 LET a$="ADJACENT FAIRWAY" 2830 LET b$=a$ 2840 PAUSE 100: GO TO 500 2850 LET d1=402 2860 LET p=4 2870 LET a$="ROUGH" 2880 LET b$=b$ 2890 PAUSE 100: GO TO 500 2900 IF s>1 THEN GO TO 1300 2910 CLS : PRINT 2920 PRINT 2930 PRINT "********************************" 2940 GO TO 2960 2950 GO TO 2900 2960 PRINT FLASH 1;"**A*HOLE*IN*ONE**A*HOLE*IN*ONE**" 2970 PRINT "********************************" 2980 PRINT 2990 PRINT 3000 PRINT 3005 FOR i=1 TO 10: BEEP .05,15: BEEP .05,11: BEEP .05,7: NEXT i 3010 GO TO 1820 3020 LET d1=464 3030 LET p=4 3040 LET a$=a$ 3050 LET b$="TREES" 3060 PAUSE 100: GO TO 500 3070 LET d1=210 3080 LET p=3 3090 LET a$="ADJACENT FAIRWAY" 3100 LET b$=a$ 3110 PAUSE 100: GO TO 500 3120 LET d1=419 3130 LET p=4 3140 LET a$="WATER" 3150 LET b$="ROUGH" 3160 PAUSE 100: GO TO 500 3170 LET d1=550 3180 LET p=5 3190 LET a$=a$ 3200 LET b$=a$ 3210 PAUSE 100: GO TO 500 3220 LET s3=s2-h 3230 PAUSE 200: CLS : PRINT 3240 PRINT 3250 PRINT "Total par for these "; INVERSE 1;z; INVERSE 0;" Holes","is "; INVERSE 1;p9; INVERSE 0;", your total was "; INVERSE 1;s2 3260 PRINT '"Minus your handicap your","score is "; INVERSE 1;s3 3270 PRINT 3280 IF s3>(p9+1) THEN GO TO 3540 3290 IF s3=(p9+1) THEN GO TO 3380 3300 IF s3=p9 THEN GO TO 3420 3310 IF s3=(p9-1) THEN GO TO 3460 3320 IF s3=(p9-2) THEN GO TO 3500 3330 PRINT 3340 PRINT 3350 PRINT FLASH 1;"I DON'T BELIEVE IT!!!!!" 3360 PRINT 3370 GO TO 3540 3380 PRINT 3390 PRINT FLASH 1; INVERSE 1; BRIGHT 1;"YOU GOT A "; INVERSE 0;"BOGEY"; INVERSE 1;" FOR THE COURSE." 3400 PRINT 3410 GO TO 3540 3420 PRINT 3430 PRINT FLASH 1; INVERSE 1; BRIGHT 1;"YOU MADE PAR FOR THE COURSE." 3440 PRINT 3450 GO TO 3540 3460 PRINT 3470 PRINT FLASH 1; INVERSE 1; BRIGHT 1;"YOU GOT A"; INVERSE 0;" BIRDIE "; INVERSE 1;"FOR THE COURSE" 3480 PRINT 3490 GO TO 3540 3500 PRINT 3510 PRINT BRIGHT 1; FLASH 1; INVERSE 1;"**YOU EAGLED"; INVERSE 0; FLASH 1;" THE COURSE.**" 3520 PRINT 3530 GO TO 3540 3540 PRINT 3550 IF z<>18 THEN GO TO 3650 3640 CLS 3650 PRINT '''''''"Do you feel up to another",; INVERSE 1;z; INVERSE 0;" holes?" 3660 INPUT c$ 3670 IF c$="y" THEN GO TO 370 3680 STOP 3770 LET c6=(1/c) 3780 LET c6=c6*2000 3790 RANDOMIZE 0: LET c7=c6*RND+60 3800 IF c=13 THEN GO TO 3870 3810 IF c=14 THEN GO TO 3900 3820 IF c=15 THEN GO TO 3940 3830 IF c=16 THEN GO TO 3980 3840 IF c=17 THEN GO TO 4020 3850 IF c=18 THEN GO TO 4060 3860 IF c=19 THEN GO TO 4100 3870 IF c7<150 THEN GO TO 3770 3880 IF c7<211 THEN GO TO 4140 3890 GO TO 3770 3900 IF c7>140 THEN GO TO 3920 3910 GO TO 3770 3920 IF c7<201 THEN GO TO 4140 3930 GO TO 3770 3940 IF c7>129 THEN GO TO 3960 3950 GO TO 3770 3960 IF c7<187 THEN GO TO 4140 3970 GO TO 3770 3980 IF c7>119 THEN GO TO 4000 3990 GO TO 3770 4000 IF c7<173 THEN GO TO 4140 4010 GO TO 3770 4020 IF c7>109 THEN GO TO 4040 4030 GO TO 3770 4040 IF c7<159 THEN GO TO 4140 4050 GO TO 3770 4060 IF c7>99 THEN GO TO 4080 4070 GO TO 3770 4080 IF c7<145 THEN GO TO 4140 4090 GO TO 3770 4100 IF c7>89 THEN GO TO 4120 4110 GO TO 3770 4120 IF c7<131 THEN GO TO 4140 4130 GO TO 3770 4140 RETURN 4150 LET c8=c+4 4160 LET c7=(1/c8)*1000 4170 RANDOMIZE 0: LET c7=c7*RND 4180 LET c7=c7+150 4190 IF c=1 THEN GO TO 4250 4200 IF c=2 THEN GO TO 4280 4210 IF c=3 THEN GO TO 4310 4220 IF c7<140 THEN GO TO 4150 4230 IF c7<221 THEN GO TO 4340 4240 GO TO 4150 4250 IF c7<190 THEN GO TO 4150 4260 IF c7<360 THEN GO TO 4340 4270 GO TO 4150 4280 IF c7<170 THEN GO TO 4150 4290 IF c7<251 THEN GO TO 4340 4300 GO TO 4150 4310 IF c7<150 THEN GO TO 4150 4320 IF c7<231 THEN GO TO 4340 4330 GO TO 4150 4340 RETURN ```