OREGON78/OREGON78.RC.bas
Ted Thompson 084cb6c505 Inital Commit
First upload of what I think is a bug free release
2018-09-12 17:05:38 -07:00

741 lines
25 KiB
QBasic

100 REM PROGRAM NAME - OREGON----------------------------FOR THE MEANING OF THE VARIABLES USED, LIST LINES 7210-7560 ----------------------------
110 GOTO 140
120 VTAB 24: PRINT " <HIT ANY KEY TO CONTINUE...>";: WAIT - 16384,128: POKE - 16368,0
130 RETURN
140 TEXT : PRINT CHR$ (21): HOME
150 PRINT "PROGRAM NAME - OREGON VERSION:01/01/78": VTAB 2
160 PRINT "----------------------------------------": VTAB 3
170 PRINT " ORIGINALLY WRITTEN FOR"
180 PRINT " MINN. EDUCATIONAL COMPUTING CONSORTIUM"
190 PRINT " CDC CYBER 70/73-26 IN BASIC 3.1"
200 PRINT " AND PUBLISHED IN"
210 PRINT " CREATIVE COMPUTING MAY/JUNE 1978"
220 PRINT " VOL 4, NO 3, PAGES 132-139"
230 PRINT "----------------------------------------": VTAB 10
240 PRINT "ORIGINAL PROGRAMMING:"
250 PRINT " BILL HEINEMANN - 1971": VTAB 13
260 PRINT "SUPPORT RESEARCH AND MATERIALS:"
270 PRINT " DON RAVITSCH - MECC STAFF": VTAB 16
280 PRINT "CHIPMUNK BASIC PORT:"
290 PRINT " CHRISTOPHER PENDERSON - 2018": VTAB 19
300 PRINT "APPLESOFT BASIC PORT:"
310 PRINT " THEODORE THOMPSON - 2018"
320 VTAB 24: PRINT "DO YOU NEED INSTRUCTIONS (Y/N)";
330 GET C$
340 REM FOLLOWING LINE ACTS AS A
350 REM RANDOMIZE STATEMENT
360 X = RND ( - 1 * ( PEEK (78) + 256 * PEEK (79)))
370 IF C$ = "N" THEN HOME : GOTO 1060
380 IF NOT (C$ = "Y") THEN 330
390 HOME
400 REM ***INSTRUCTIONS***
410 PRINT "THIS PROGRAM SIMULATES A TRIP OVER THE"
420 PRINT "OREGON TRAIL FROM INDEPENDENCE, MISSOURI": VTAB 3
430 PRINT "TO OREGON CITY, OREGON IN 1847."
440 PRINT
450 PRINT "YOUR FAMILY OF FIVE WILL COVER THE 2040"
460 PRINT "MILE OREGON TRAIL IN 5-6 MONTHS ---"
470 VTAB 11
480 PRINT "IF YOU MAKE IT ALIVE."
490 VTAB 17
500 PRINT "YOU HAD SAVED $900 TO SPEND FOR THE"
510 PRINT "TRIP, AND YOU'VE JUST PAID $200 FOR A"
520 PRINT "WAGON."
530 GOSUB 120: HOME
540 PRINT "YOU WILL NEED TO SPEND THE REST OF YOUR"
550 PRINT "MONEY ON THE FOLLOWING ITEMS:"
560 PRINT
570 PRINT " OXEN - YOU CAN SPEND $200-$300 ON"
580 PRINT " YOUR TEAM. THE MORE YOU"
590 PRINT " SPEND, THE FASTER YOU'LL GO": VTAB 7
600 PRINT " BECAUSE YOU'LL HAVE BETTER"
610 PRINT " ANIMALS."
620 PRINT
630 PRINT " FOOD - THE MORE YOU HAVE, THE LESS": VTAB 11
640 PRINT " CHANCE THERE IS OF GETTING"
650 PRINT " SICK."
660 PRINT
670 PRINT "AMMUNITION - $1 BUYS A BELT OF 50"
680 PRINT " BULLETS. YOU WILL NEED"
690 PRINT " BULLETS FOR ATTACKS BY"
700 PRINT " ANIMALS AND BANDITS, AND"
710 PRINT " FOR HUNTING FOOD."
720 GOSUB 120: HOME
730 PRINT " CLOTHING - THIS IS ESPECIALLY"
740 PRINT " IMPORTANT FOR THE COLD"
750 PRINT " WEATHER YOU WILL"
760 PRINT " ENCOUNTER WHEN CROSSING": VTAB 5
770 PRINT " THE MOUNTAINS."
780 PRINT
790 PRINT "MISC. SUPPLIES - THIS INCLUDES MEDICINE"
800 PRINT " AND OTHER THINGS YOU"
810 PRINT " WILL NEED FOR SICKNESS"
820 PRINT " AND EMERGENCY REPAIRS"
830 PRINT
840 PRINT "YOU CAN SPEND ALL YOUR MONEY BEFORE YOU"
850 PRINT "START YOUR TRIP - OR YOU CAN SAVE SOME"
860 PRINT "OF YOUR CASH TO SPEND AT FORTS ALONG THE": VTAB 15
870 PRINT "WAY WHEN YOU RUN LOW. HOWEVER, ITEMS"
880 PRINT "COST MORE AT THE FORTS. YOU CAN ALSO GO"
890 PRINT "HUNTING ALONG THE WAY TO GET MORE FOOD."
900 GOSUB 120: HOME
910 PRINT "WHENEVER YOU HAVE TO USE YOUR TRUSTY"
920 PRINT "RIFLE ALONG THE WAY, YOU WILL BE TOLD TO": VTAB 3
930 PRINT "TYPE IN A WORD (ONE THAT SOUNDS LIKE A"
940 PRINT "GUN SHOT). THE FASTER YOU TYPE IN THAT"
950 PRINT "WORD AND HIT THE "; CHR$ (34);"RETURN"; CHR$ (34);" KEY, THE"
960 PRINT "BETTER LUCK YOU'LL HAVE WITH YOUR GUN."
970 PRINT
980 PRINT "AT EACH TURN, ALL ITEMS ARE SHOWN IN "
990 PRINT "DOLLAR AMOUNTS EXCEPT BULLETS."
1000 PRINT
1010 PRINT "WHEN ASKED TO ENTER MONEY AMOUNTS, DON'T": VTAB 12
1020 PRINT "USE A "; CHR$ (34);"$"; CHR$ (34);"."
1030 PRINT
1040 PRINT "GOOD LUCK!!!"
1050 GOSUB 120: HOME
1060 REM **DIFFICULTY SETUP**
1070 PRINT "HOW GOOD A SHOT ARE YOU WITH YOUR RIFLE?": VTAB 3
1080 PRINT " (1) ACE MARKSMAN (2) GOOD SHOT "
1090 PRINT " (3) FAIR TO MIDDLIN' "
1100 PRINT " (4) NEED MORE PRACTICE (5) SHAKY KNEES"
1110 PRINT
1120 PRINT "ENTER ONE OF THE ABOVE -- THE BETTER YOU": VTAB 8
1130 PRINT "CLAIM YOU ARE, THE FASTER YOU'LL HAVE TO": VTAB 9
1140 PRINT "BE WITH YOUR GUN TO BE SUCCESSFUL."
1150 PRINT
1160 INPUT "CHOOSE (1-5)->";D9$
1170 D9 = VAL (D9$): IF D9 < 1 OR D9 > 5 OR INT (D9) < > D9 THEN PRINT CHR$ (7);: VTAB PEEK (37): CALL - 868: GOTO 1160
1190 REM ***INITIAL PURCHASES***
1200 X1 = 0
1210 D3 = 0:M9 = 0:M = 0:F2 = 0:F1 = 0:S4 = 0:K8 = 0
1220 DIM S$(4):S$(1) = "BANG":S$(2) = "BLAM":S$(3) = "POW":S$(4) = "WHAM"
1230 HOME : ONERR GOTO 1600
1240 QNUM = 1: VTAB 1: PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
1250 INPUT "YOUR OXEN TEAM? $";A
1260 IF A > = 200 THEN 1290
1270 PRINT : INVERSE : PRINT CHR$ (7);" NOT ENOUGH ";: NORMAL : FOR DLY = 1 TO 1000: NEXT : HTAB 1: CALL - 868: HTAB 1: VTAB 2: CALL - 868
1280 GOTO 1240
1290 IF A < = 300 THEN 1320
1300 PRINT : INVERSE : PRINT CHR$ (7);"TOO MUCH";: NORMAL : FOR DLY = 1 TO 1000: NEXT : HTAB 1: CALL - 868: HTAB 1: VTAB 2: CALL - 868
1310 GOTO 1240
1320 QNUM = 2: VTAB 15: CALL - 958: VTAB 4: PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
1330 INPUT "FOOD? $";F
1340 IF F > = 0 THEN 1360
1350 GOTO 1600
1360 QNUM = 3: PRINT : PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
1370 INPUT "AMMUNITION? $";B
1380 IF B > = 0 THEN 1400
1390 GOTO 1600
1400 QNUM = 4: PRINT : PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
1410 INPUT "CLOTHING? $";C
1420 IF C > = 0 THEN 1440
1430 GOTO 1600
1440 QNUM = 5: PRINT : PRINT "HOW MUCH DO YOU WANT TO SPEND ON"
1450 INPUT "MISCELLANEOUS SUPPLIES? $";M1
1460 IF M1 > = 0 THEN 1480
1470 GOTO 1600
1480 T = 700 - A - F - B - C - M1
1490 IF T > = 0 THEN 1530
1500 PRINT : PRINT CHR$ (7);"YOU OVERSPENT--YOU ONLY HAD $700 TO"
1510 PRINT "SPEND. BUY AGAIN": PRINT
1520 GOTO 1240
1530 B = 50 * B: POKE 216,0: REM POKE CLEARS ONERR
1540 PRINT : PRINT "AFTER ALL YOUR PURCHASES,"
1550 PRINT "YOU NOW HAVE ";T;" DOLLARS LEFT"
1560 GOSUB 120: HOME
1570 PRINT "MONDAY MARCH 29 1847"
1580 PRINT "--------------------"
1590 GOTO 2120
1600 PRINT : INVERSE : PRINT CHR$ (7);" IMPOSSIBLE ";: NORMAL : FOR DLY = 1 TO 1000: NEXT : HTAB 1: CALL - 868: HTAB 1: VTAB ( PEEK (37) - 1): CALL - 868
1610 ON QNUM GOTO 1240,1330,1370,1410,1450
1620 IF M > = 2040 THEN 6030
1630 REM ***SETTING DATE***
1640 D3 = D3 + 1
1650 GOSUB 120: HOME
1660 PRINT "MONDAY ";
1670 ON D3 GOTO 1680,1700,1720,1740,1760,1780,1800,1820,1840,1860,1880,1900,1920,1940,1960,1980,2000,2020,2040,2060
1680 PRINT "APRIL 12 ";
1690 GOTO 2090
1700 PRINT "APRIL 26 ";
1710 GOTO 2090
1720 PRINT "MAY 10 ";
1730 GOTO 2090
1740 PRINT "MAY 24 ";
1750 GOTO 2090
1760 PRINT "JUNE 7 ";
1770 GOTO 2090
1780 PRINT "JUNE 21 ";
1790 GOTO 2090
1800 PRINT "JULY 5 ";
1810 GOTO 2090
1820 PRINT "JULY 19 ";
1830 GOTO 2090
1840 PRINT "AUGUST 2 ";
1850 GOTO 2090
1860 PRINT "AUGUST 16 ";
1870 GOTO 2090
1880 PRINT "AUGUST 31 ";
1890 GOTO 2090
1900 PRINT "SEPTEMBER 13 ";
1910 GOTO 2090
1920 PRINT "SEPTEMBER 27 ";
1930 GOTO 2090
1940 PRINT "OCTOBER 11 ";
1950 GOTO 2090
1960 PRINT "OCTOBER 25 ";
1970 GOTO 2090
1980 PRINT "NOVEMBER 8 ";
1990 GOTO 2090
2000 PRINT "NOVEMBER 22 ";
2010 GOTO 2090
2020 PRINT "DECEMBER 6 ";
2030 GOTO 2090
2040 PRINT "DECEMBER 20 ";
2050 GOTO 2090
2060 PRINT "YOU HAVE BEEN ON THE TRAIL TOO LONG ------"
2070 PRINT "YOUR FAMILY DIES IN THE FIRST BLIZZARD OF WINTER"
2080 GOTO 5690
2090 PRINT "1847";:HP = PEEK (36): PRINT
2100 FOR I = 1 TO HP - 1: PRINT "-";: NEXT : PRINT "-"
2110 REM ***BEGINNING EACH TURN***
2120 IF F > = 0 THEN 2140
2130 F = 0
2140 IF B > = 0 THEN 2160
2150 B = 0
2160 IF C > = 0 THEN 2180
2170 C = 0
2180 IF M1 > = 0 THEN 2200
2190 M1 = 0
2200 IF F > = 13 THEN 2220
2210 PRINT "YOU'D BETTER DO SOME HUNTING": PRINT " OR BUY FOOD AND SOON!!!!": PRINT
2220 F = INT (F)
2230 B = INT (B)
2240 C = INT (C)
2250 M1 = INT (M1)
2260 T = INT (T)
2270 M = INT (M)
2280 M2 = M
2290 IF S4 = 1 THEN 2320
2300 IF K8 = 1 THEN 2320
2310 GOTO 2360
2320 T = T - 20
2330 IF T < 0 THEN 5600
2340 PRINT "DOCTOR'S BILL IS $20"
2350 S4 = 0:K8 = 0
2360 IF M9 = 1 THEN 2390
2370 PRINT "TOTAL MILEAGE: ";M
2380 GOTO 2410
2390 PRINT "TOTAL MILEAGE: 950"
2400 M9 = 0
2410 VTAB PEEK (37) + 1: PRINT "FOOD BULLETS CLOTHES MISC.SUPP. CASH";: VTAB PEEK (37) + 1
2420 VP = PEEK (37) + 3: HTAB 2: PRINT F;: HTAB 8: PRINT B;: HTAB 17: PRINT C;: HTAB 26: PRINT M1;: HTAB 38: PRINT T;: VTAB VP: HTAB 1
2430 IF X1 = 0 THEN 2490
2440 X1 = NOT X1
2450 PRINT "DO YOU (1)STOP AT THE NEXT FORT,"
2460 INPUT "(2)HUNT, OR (3)CONTINUE? ";X$
2470 IF VAL (X$) < > 1 AND VAL (X$) < > 2 AND VAL (X$) < > 3 THEN PRINT CHR$ (7): VTAB PEEK (37) - 1: CALL - 868: GOTO 2460
2480 X = VAL (X$): GOTO 2590
2490 INPUT "DO YOU (1)HUNT OR (2)CONTINUE? ";X$
2500 IF VAL (X$) < > 1 AND VAL (X$) < > 2 THEN PRINT CHR$ (7): VTAB PEEK (37) - 1: CALL - 868: GOTO 2490
2510 X = VAL (X$): IF X = 1 THEN 2520
2520 LET X = X + 1
2530 IF X = 3 THEN 2580
2540 IF B > 39 THEN 2580
2550 PRINT "TOUGH---"
2560 PRINT "YOU NEED MORE BULLETS TO GO HUNTING"
2570 GOTO 2040
2580 X1 = NOT X1
2590 ON X GOTO 2610,2860,3040
2600 REM ***STOPPING AT FORT***
2610 VTAB VP: CALL - 958: PRINT "ENTER WHAT YOU WISH TO SPEND": PRINT "ON THE FOLLOWING": PRINT
2620 PRINT "FOOD";
2630 GOSUB 2650
2640 GOTO 2730
2650 INPUT P
2660 IF P < 0 THEN 2720
2670 T = T - P
2680 IF T > = 0 THEN 2720
2690 PRINT "YOU DON'T HAVE THAT MUCH--KEEP YOUR SPENDING DOWN"
2700 T = T + P
2710 P = 0
2720 RETURN
2730 F = F + 2 / 3 * P
2740 PRINT "AMMUNITION";
2750 GOSUB 2650
2760 LET B = INT (B + 2 / 3 * P * 50)
2770 PRINT "CLOTHING";
2780 GOSUB 2650
2790 C = C + 2 / 3 * P
2800 PRINT "MISCELLANEOUS SUPPLIES";
2810 GOSUB 2650
2820 M1 = M1 + 2 / 3 * P
2830 M = M - 45
2840 GOSUB 120: GOTO 3040
2850 REM ***HUNTING***
2860 IF B > 39 THEN 2890
2870 PRINT "TOUGH---YOU NEED MORE BULLETS TO GO HUNTING"
2880 GOTO 2450
2890 M = M - 45
2900 GOSUB 6850
2910 IF B1 < = 1 THEN 2980
2920 IF 100 * RND (1) < 13 * B1 THEN 3030
2930 F = F + 48 - 2 * B1
2940 PRINT "NICE SHOT--RIGHT ON TARGET--GOOD EATIN' TONIGHT!!"
2950 B = B - 10 - 3 * B1
2960 GOSUB 120: GOTO 3040
2970 REM **BELLS IN LINE 2660**
2980 PRINT CHR$ (7); CHR$ (7);"RIGHT BETWEEN THE EYES": PRINT " ---YOU GOT A BIG ONE!!!!"
2990 PRINT "FULL BELLIES TONIGHT!"
3000 F = F + 52 + RND (1) * 6
3010 B = B - 10 - RND (1) * 4
3020 GOSUB 120: GOTO 3040
3030 PRINT "YOU MISSED---AND YOUR DINNER GOT AWAY...": GOSUB 120
3040 IF F > = 13 THEN 3070
3050 HOME : GOTO 5580
3060 REM ***EATING***
3070 VTAB VP: HTAB 1: CALL - 958: PRINT "DO YOU EAT (1)POORLY, (2)MODERATELY, OR"
3080 INPUT "(3)WELL? ";E
3090 IF E > 3 THEN 3070
3100 IF E < 1 THEN 3070
3110 LET E = INT (E)
3120 LET F = F - 8 - 5 * E
3130 IF F > = 0 THEN 3170
3140 F = F + 8 + 5 * E
3150 PRINT "YOU CAN'T EAT THAT WELL"
3160 GOTO 3070
3170 LET M = M + 200 + (A - 220) / 5 + 10 * RND (1)
3190 C1 = 0
3200 L1 = C1
3210 REM ***RIDERS ATTACK***
3230 IF RND (1) * 10 > ((M / 100 - 4) ^ 2 + 72) / ((M / 100 - 4) ^ 2 + 12) - 1 THEN 3900
3240 PRINT : PRINT "RIDERS AHEAD. THEY ";
3250 S5 = 0
3270 IF RND (1) < .8 THEN 3300
3280 PRINT "DON'T ";
3290 S5 = 1
3300 PRINT "LOOK HOSTILE..."
3310 PRINT : PRINT "TACTICS:"
3320 PRINT " (1) RUN (2) ATTACK (3) CONTINUE"
3330 PRINT " (4) CIRCLE WAGONS": PRINT
3340 IF RND (1) > .2 THEN 3360
3350 S5 = 1 - S5
3360 INPUT "CHOOSE (1-4)->";T1$
3370 T1 = VAL (T1$): IF T1 < 1 OR T1 > 4 OR INT (T1) < > T1 THEN PRINT CHR$ (7);: VTAB PEEK (37): CALL - 868: GOTO 3360
3380 VTAB 10: CALL - 958
3390 IF S5 = 1 THEN 3680
3400 IF T1 > 1 THEN 3460
3410 M = M + 20
3420 M1 = M1 - 15
3430 B = B - 150
3440 A = A - 40
3450 GOTO 3820
3460 IF T1 > 2 THEN 3590
3470 GOSUB 6850
3480 B = B - B1 * 40 - 80
3490 IF B1 > 1 THEN 3520
3500 PRINT "NICE SHOOTING---YOU DROVE THEM OFF"
3510 GOTO 3820
3520 IF B1 < = 4 THEN 3570
3530 PRINT "LOUSY SHOT---YOU GOT KNIFED"
3540 K8 = 1
3550 PRINT "YOU HAVE TO SEE OL' DOC BLANCHARD"
3560 GOTO 3820
3570 PRINT "KINDA SLOW WITH YOUR COLT .45"
3580 GOTO 3820
3590 IF T1 > 3 THEN 3640
3600 IF RND (1) > .8 THEN 3800
3610 LET B = B - 150
3620 M1 = M1 - 15
3630 GOTO 3820
3640 GOSUB 6850
3650 B = B - B1 * 30 - 80
3660 M = M - 25
3670 GOTO 3490
3680 IF T1 > 1 THEN 3720
3690 M = M + 15
3700 A = A - 10
3710 GOTO 3820
3720 IF T1 > 2 THEN 3760
3730 M = M - 5
3740 B = B - 100
3750 GOTO 3820
3760 IF T1 > 3 THEN 3780
3770 GOTO 3820
3780 M = M - 20
3790 GOTO 3820
3800 PRINT "THEY DID NOT ATTACK"
3810 GOTO 3900
3820 IF S5 = 0 THEN 3850
3830 PRINT "RIDERS WERE FRIENDLY, BUT CHECK FOR": PRINT "POSSIBLE LOSSES"
3840 GOTO 3900
3850 PRINT "RIDERS WERE HOSTILE--CHECK FOR LOSES"
3860 IF B > = 0 THEN 3900
3870 PRINT "YOU RAN OUT OF BULLETS AND GOT MASSACRED BY THE RIDERS"
3880 GOTO 5690
3890 REM ***SELECTION OF EVENTS***
3900 D1 = 0: PRINT
3910 RESTORE
3920 R1 = 100 * RND (1)
3930 LET D1 = D1 + 1
3940 IF D1 = 16 THEN 5140
3950 READ D
3960 IF R1 > D THEN 3930
3970 DATA 6,11,13,15,17,22,32,35,37,42,44,54,64,69,95
3980 ON D1 GOTO 3990,4040,4090,4150,4190,4230,4270,4340,4530,4600,4640,4730,4790,5030,5080,5140
3990 PRINT "WAGON BREAKS DOWN"
4000 PRINT " --LOSE TIME AND SUPPLIES FIXING IT"
4010 LET M = M - 15 - 5 * RND (1)
4020 LET M1 = M1 - 8
4030 GOTO 5190
4040 PRINT "OX INJURES LEG"
4050 PRINT " ---SLOWS YOU DOWN REST OF TRIP"
4060 LET M = M - 25
4070 LET A = A - 20
4080 GOTO 5190
4090 PRINT "BACK LUCK---YOUR DAUGHTER BROKE HER ARM"
4100 PRINT "YOU HAD TO STOP AND USE SUPPLIES TO"
4110 PRINT "MAKE A SLING"
4120 M = M - 5 - 4 * RND (1)
4130 M1 = M1 - 2 - 3 * RND (1)
4140 GOTO 5190
4150 PRINT "OX WANDERS OFF"
4160 PRINT " ---SPEND TIME LOOKING FOR IT"
4170 M = M - 17
4180 GOTO 5190
4190 PRINT "YOUR SON GETS LOST"
4200 PRINT " ---SPEND HALF THE DAY LOOKING FOR HIM"
4210 M = M - 10
4220 GOTO 5190
4230 PRINT "UNSAFE WATER"
4240 PRINT " --LOSE TIME LOOKING FOR CLEAN SPRING"
4250 LET M = M - 10 * RND (1) - 2
4260 GOTO 5190
4270 IF M > 950 THEN 4960
4280 PRINT "HEAVY RAINS---TIME AND SUPPLIES LOST"
4290 F = F - 10
4300 B = B - 500
4310 M1 = M1 - 15
4320 M = M - 10 * RND (1) - 5
4330 GOTO 5190
4340 PRINT "BANDITS ATTACK"
4350 GOSUB 6850
4360 B = B - 20 * B1
4370 IF B > = 0 THEN 4420
4380 PRINT "YOU RAN OUT OF BULLETS"
4390 PRINT " ---THEY GET LOTS OF CASH"
4400 T = T / 3
4410 GOTO 4430
4420 IF B1 < = 1 THEN 4500
4430 PRINT "YOU GOT SHOT IN THE LEG AND"
4440 PRINT " THEY TOOK ONE OF YOUR OXEN"
4450 K8 = 1
4460 PRINT "BETTER HAVE A DOC LOOK AT YOUR WOUND"
4470 M1 = M1 - 5
4480 A = A - 20
4490 GOTO 5190
4500 PRINT "QUICKEST DRAW OUTSIDE OF DODGE CITY!!!"
4510 PRINT "YOU GOT 'EM!"
4520 GOTO 5190
4530 PRINT "THERE WAS A FIRE IN YOUR WAGON"
4540 PRINT " --FOOD AND SUPPLIES DAMAGE!"
4550 F = F - 40
4560 B = B - 400
4570 LET M1 = M1 - RND (1) * 8 - 3
4580 M = M - 15
4590 GOTO 5190
4600 PRINT "LOSE YOUR WAY IN HEAVY FOG"
4610 PRINT " ---TIME IS LOST"
4620 M = M - 10 - 5 * RND (1)
4630 GOTO 5190
4640 PRINT "YOU KILLED A POISONOUS SNAKE"
4650 PRINT " ---AFTER IT BIT YOU"
4660 B = B - 10
4670 M1 = M1 - 5
4680 IF M1 > = 0 THEN 4720
4690 PRINT "YOU DIE OF SNAKEBITE"
4700 PRINT " SINCE YOU HAVE NO MEDICINE"
4710 GOTO 5690
4720 GOTO 5190
4730 PRINT "WAGON GETS SWAMPED FORDING RIVER"
4740 PRINT " --LOSE FOOD AND CLOTHES"
4750 F = F - 30
4760 C = C - 20
4770 M = M - 20 - 20 * RND (1)
4780 GOTO 5190
4790 PRINT "WILD ANIMALS ATTACK!"
4800 GOSUB 6850
4810 IF B > 39 THEN 4860
4820 PRINT "YOU WERE TOO LOW ON BULLETS--"
4830 PRINT "THE WOLVES OVERPOWERED YOU"
4840 K8 = 1
4850 GOTO 5640
4860 IF B1 > 2 THEN 4900
4870 PRINT "NICE SHOOTIN' PARTNER"
4880 PRINT " ---THEY DIDN'T GET MUCH"
4890 GOTO 4920
4900 PRINT "SLOW ON THE DRAW"
4910 PRINT " ---THEY GOT AT YOUR FOOD AND CLOTHES"
4920 B = B - 20 * B1
4930 C = C - B1 * 4
4940 F = F - B1 * 8
4950 GOTO 5190
4960 PRINT "COLD WEATHER---BRRRRRR!---YOU ";
4970 IF C > 22 + 4 * RND (1) THEN 5000
4980 PRINT "DONT'T ";
4990 C1 = 1
5000 PRINT "HAVE": PRINT "ENOUGH CLOTHING TO KEEP YOU WARM"
5010 IF C1 = 0 THEN 5190
5020 GOTO 7030
5030 PRINT "HAIL STORM---SUPPLIES DAMAGED"
5040 M = M - 5 - RND (1) * 10
5050 B = B - 200
5060 M1 = M1 - 4 - RND (1) * 3
5070 GOTO 5190
5080 IF E = 1 THEN 7030
5090 IF E = 3 THEN 5120
5100 IF RND (1) > .25 THEN 7030
5110 GOTO 5190
5120 IF RND (1) < .5 THEN 7030
5130 GOTO 5190
5140 PRINT "HELPFUL INDIANS SHOW YOU WHERE"
5150 PRINT " TO FIND MORE FOOD"
5160 F = F + 14
5170 GOTO 5190
5180 REM ***MOUNTAINS***
5190 IF M < = 950 THEN 1620
5210 IF RND (1) * 10 > 9 - ((M / 100 - 15) ^ 2 + 72) / ((M / 100 - 15) ^ 2 + 12) THEN 5360
5220 PRINT : PRINT "RUGGED MOUNTAINS"
5230 IF RND (1) > .1 THEN 5280
5240 PRINT : PRINT "YOU GOT LOST---LOSE VALUABLE"
5250 PRINT " TIME TRYING TO FIND TRAIL!"
5260 M = M - 60
5270 GOTO 5360
5280 IF RND (1) > .11 THEN 5340
5290 PRINT : PRINT "WAGON DAMAGED!": PRINT " ---LOSE TIME AND SUPPLIES"
5300 M1 = M1 - 5
5310 B = B - 200
5320 M = M - 20 - 30 * RND (1)
5330 GOTO 5360
5340 PRINT " ---THE GOING GETS SLOW"
5350 M = M - 45 - RND (1) / .02
5360 IF F1 = 1 THEN 5410
5370 F1 = 1
5380 IF RND (1) < .8 THEN 5480
5390 PRINT : PRINT "YOU MADE IT SAFELY THROUGH SOUTH PASS"
5400 PRINT " --NO SNOW"
5410 IF M < 1700 THEN 5450
5420 IF F2 = 1 THEN 5450
5430 F2 = 1
5440 IF RND (1) < .7 THEN 5480
5450 IF M > 950 THEN 1620
5460 M9 = 1
5470 GOTO 1620
5480 PRINT : PRINT "BLIZZARD IN MOUNTAIN PASS"
5490 PRINT " --TIME AND SUPPLIES LOST"
5500 L1 = 1
5510 F = F - 25
5520 M1 = M1 - 10
5530 B = B - 300
5540 M = M - 30 - 40 * RND (1)
5550 IF C < 18 + 2 * RND (1) THEN 7030
5560 GOTO 5450
5570 REM ***DYING***
5580 PRINT "YOU RAN OUT OF FOOD AND STARVED TO DEATH";
5590 GOTO 5690
5600 LET T = 0
5610 PRINT "YOU CAN'T AFFORD A DOCTOR"
5620 GOTO 5640
5630 PRINT : PRINT "YOU RAN OUT OF MEDICAL SUPPLIES"
5640 PRINT "YOU DIED OF ";
5650 IF K8 = 1 THEN 5680
5660 PRINT "PNEUMONIA"
5670 GOTO 5690
5680 PRINT "INJURIES"
5690 GOSUB 120: HOME
5700 PRINT "DUE TO YOUR UNFORTUNATE SITUATION, THERE";
5710 PRINT "ARE A FEW FORMALITIES WE MUST GO THROUGH"
5720 PRINT
5730 PRINT
5740 INPUT "WOULD YOU LIKE A MINISTER?";C$
5750 PRINT
5760 INPUT "WOULD YOU LIKE A FANCY FUNERAL?";C$
5770 PRINT
5780 PRINT "WOULD YOU LIKE US TO INFORM YOUR"
5790 INPUT "NEXT OF KIN?";C$
5800 PRINT
5810 IF C$ = "YES" OR C$ = "Y" THEN 5850
5820 PRINT "BUT YOUR AUNT SADIE IN ST. LOUIS IS"
5830 PRINT "REALLY WORRIED ABOUT YOU."
5840 GOTO 5860
5850 PRINT "THAT WILL BE $4.50 FOR THE TELEGRAPH": PRINT "CHARGE."
5860 GOSUB 120: HOME
5870 INVERSE : PRINT SPC( 40);
5880 PRINT " WE THANK YOU FOR THIS INFORMATION AND ";
5890 PRINT " WE ARE SORRY YOU DIDN'T MAKE IT TO THE ";
5900 PRINT " GREAT TERRITORY OF OREGON. ";
5910 PRINT " ";
5920 PRINT " BETTER LUCK NEXT TIME. ";
5930 PRINT " ";
5940 PRINT " ";
5950 PRINT " SINCERELY, ";
5960 PRINT " ";
5970 PRINT " THE OREGON CITY ";
5980 PRINT " CHAMBER OF COMMERCE ";
5990 PRINT SPC( 40): NORMAL : PRINT
6010 PRINT "RUN COMPLETE.": END
6020 REM ***FINAL TURN***
6030 F9 = (2040 - M2) / (M - M2)
6040 F = F + (1 - F9) * (8 + 5 * E)
6050 PRINT
6060 REM **BELLS IN LINES 5470,5480**
6070 PRINT CHR$ (7);"YOU FINALLY ARRIVED AT OREGON CITY"
6080 PRINT CHR$ (7);"AFTER 2040 LONG MILES---HOORAY!!!!!"
6090 PRINT "A REAL PIONEER!"
6100 GOSUB 120: HOME
6110 F9 = INT (F9 * 14)
6120 D3 = D3 * 14 + F9
6130 F9 = F9 + 1
6140 IF F9 < 8 THEN 6160
6150 F9 = F9 - 7
6160 ON F9 GOTO 6170,6190,6210,6230,6250,6270,6290
6170 PRINT "MONDAY ";
6180 GOTO 6300
6190 PRINT "TUESDAY ";
6200 GOTO 6300
6210 PRINT "WEDNESDAY ";
6220 GOTO 6300
6230 PRINT "THURSDAY ";
6240 GOTO 6300
6250 PRINT "FRIDAY ";
6260 GOTO 6300
6270 PRINT "SATURDAY ";
6280 GOTO 6300
6290 PRINT "SUNDAY ";
6300 IF D3 > 124 THEN 6340
6310 D3 = D3 - 93
6320 PRINT "JULY ";D3;" 1847"
6330 GOTO 6520
6340 IF D3 > 155 THEN 6380
6350 D3 = D3 - 124
6360 PRINT "AUGUST ";D3;" 1847"
6370 GOTO 6520
6380 IF D3 > 185 THEN 6420
6390 D3 = D3 - 155
6400 PRINT "SEPTEMBER ";D3;" 1847"
6410 GOTO 6520
6420 IF D3 > 216 THEN 6460
6430 D3 = D3 - 185
6440 PRINT "OCTOBER ";D3;" 1847"
6450 GOTO 6520
6460 IF D3 > 246 THEN 6500
6470 D3 = D3 - 216
6480 PRINT "NOVEMBER ";D3;" 1847"
6490 GOTO 6520
6500 D3 = D3 - 246
6510 PRINT "DECEMBER ";D3;" 1847"
6520 PRINT
6540 IF B > 0 THEN 6560
6550 LET B = 0
6560 IF C > 0 THEN 6580
6570 LET C = 0
6580 IF M1 > 0 THEN 6600
6590 LET M1 = 0
6600 IF T > 0 THEN 6620
6610 LET T = 0
6620 IF F > 0 THEN 6640
6630 LET F = 0
6640 VTAB PEEK (37) + 1: PRINT "FOOD BULLETS CLOTHES MISC.SUPP. CASH";: VTAB PEEK (37) + 1
6650 VP = PEEK (37) + 3: HTAB 2: PRINT F;: HTAB 8: PRINT B;: HTAB 17: PRINT C;: HTAB 26: PRINT M1;: HTAB 38: PRINT T;: VTAB VP: HTAB 1
6660 PRINT
6670 INVERSE : PRINT SPC( 40);
6680 PRINT " PRESIDENT JAMES K. POLK SENDS YOU HIS ";
6690 PRINT " HEARTIEST CONGRATULATIONS ";
6700 PRINT " ";
6710 PRINT " AND WISHES YOU A PROSPEROUS LIFE AHEAD ";
6720 PRINT " ";
6730 PRINT " AT YOUR NEW HOME ";
6740 PRINT SPC( 40): NORMAL
6750 REM 'STOP' COMMAND BELOW CHANGED TO 'END' BY C.D.P.
6760 PRINT "RUN COMPLETE.": END
6770 REM ***SHOOTING SUB-ROUTINE***
6780 REM THE METHOD OF TIMING THE SHOOTING (LINES 6210-6240)
6790 REM WILL VARY FROM SYSTEM TO SYSTEM. FOR EXAMPLE, H-P
6800 REM USERS WILL PROBABLY PREFER TO USE THE 'ENTER' STATEMENT.
6810 REM IF TIMING ON THE USER'S SYSTEM IS HIGHLY SUSCEPTIBLE
6820 REM TO SYSTEM RESPONSE TIME, THE FORMULA IN LINE 6240 CAN
6830 REM BE TAILORED TO ACCOMMODATE THIS BY EITHER INCREASING
6840 REM OR DECREASING THE 'SHOOTING' TIME RECORDED BY THE SYSTEM
6850 S6 = INT ( RND (1) * 4 + 1)
6860 PRINT "TYPE ";S$(S6);"->";
6870 H = 14:CN = H:C$ = "":B3 = 0: HTAB CN: PRINT "_";
6880 KEY = PEEK (49152):B3 = B3 + 1: IF KEY < 128 THEN 6880
6890 POKE 49168,0
6900 IF KEY = 141 THEN 6956: REM RETURN
6910 IF KEY = 136 THEN CN = CN - 1: GOTO 6940: REM BACKSPACE
6920 IF KEY < 161 OR KEY > 254 THEN 6880: REM NOT ALPHA-NUMBERIC
6930 C$ = C$ + CHR$ (KEY - 128): HTAB CN: PRINT CHR$ (KEY - 128)"_";:CN = CN + 1: GOTO 6880
6940 IF LEN (C$) < 2 THEN CN = H:C$ = ""
6950 IF LEN (C$) > 1 THEN C$ = LEFT$ (C$, LEN (C$) - 1)
6955 HTAB CN: PRINT "_ ";: HTAB CN: GOTO 6880
6956 B1 = (B3 / 17.5) - (D9 - 1): REM 1ST PARENTHETICAL RESOLVES TO SECONDS
6960 HTAB CN: PRINT " ";B3 / 17.5: PRINT
6970 IF B1 > 0 THEN 6990
6980 B1 = 0
6990 IF C$ = S$(S6) THEN 7010
7000 B1 = 9
7010 RETURN
7020 REM ***ILLNESS SUB-ROUTINE***
7030 IF 100 * RND (1) < 10 + 35 * (E - 1) THEN 7110
7050 IF 100 * RND (1) < 100 - (40 / 4 ^ (E - 1)) THEN 7150
7060 PRINT "SERIOUS ILLNESS---"
7070 PRINT "YOU MUST STOP FOR MEDICAL ATTENTION"
7080 M1 = M1 - 10
7090 S4 = 1
7100 GOTO 7180
7110 PRINT "WILD ILLNESS---MEDICINE USED"
7120 M = M - 5
7130 M1 = M1 - 2
7140 GOTO 7180
7150 PRINT "BAD ILLNESS---MEDICINE USED"
7160 M = M - 5
7170 M1 = M1 - 5
7180 IF M1 < 0 THEN 5630
7190 IF L1 = 1 THEN 5450
7200 GOTO 5190
7210 REM ***IDENTIFICATION OF VARIABLES IN THE PROGRAM***
7220 REM A = AMOUNT SPENT ON ANIMALS
7230 REM B = AMOUNT SPENT ON AMMUNITION
7240 REM B1 = ACTUAL RESPONSE TIME FOR INPUTTING "BANG"
7250 REM B3 = CLOCK TIME AT START OF INPUTTING "BANG"
7260 REM C = AMOUNT SPENT ON CLOTHING
7270 REM C1 = FLAG FOR INSUFFICIENT CLOTHING IN COLD WEATHER
7280 REM C$ = YES/N0 RESPONSE TO QUESTIONS
7290 REM D1 = COUNTER IN GENERATING EVENTS
7300 REM D3 = TURN NUMBER FOR SETTING DATE
7310 REM D4 = CURRENT DATE
7320 REM D9 = CHOICE OF SHOOTING EXPERTISE LEVEL
7330 REM E = CHOICE OF EATING
7340 REM F = AMOUNT SPENT ON FOOD
7350 REM F1 = FLAG FOR CLEARING SOUTH PASS
7360 REM F2 = FLAG FOR CLEARING BLUE MOUNTAINS
7370 REM F9 = FRACTION OF 2 WEEKS TRAVELED ON FINAL TURN
7380 REM K8 = FLAG FOR INJURY
7390 REM L1 = FLAG FOR BLIZZARD
7400 REM M = TOTAL MILEAGE WHOLE TRIP
7410 REM M1 = AMOUNT SPENT ON MISCELLANEOUS SUPPLIES
7420 REM M2 = TOTAL MILEAGE UP THROUGH PREVIOUS TURN
7430 REM M9 = FLAG FOR CLEARING SOUTH PASS IN SETTING MILEAGE
7440 REM P = AMOUNT SPENT ON ITEMS AT FORT
7450 REM R1 = RANDOM NUMBER IN CHOOSING EVENTS
7460 REM S4 = FLAG FOR ILLNESS
7470 REM S5 = ""HOSTILITY OF RIDERS"" FACTOR
7480 REM S6 = SHOOTING WORD SELECTOR
7490 REM S$ = VARIATIONS OF SHOOTING WORD
7500 REM T = CASH LEFT OVER AFTER INITIAL PURCHASES
7510 REM T1 = CHOICE OF TACTICS WHEN ATTACKED
7520 REM X = CHOICE OF ACTION FOR EACH TURN
7530 REM X1 = FLAG FOR FORT OPTION
7540 REM DLY = DUMMY FOR DELAY LOOPS
7550 REM QNUM = QUESTION NUMBER FOR TRACKING
7560 REM VP = VERTICAL POSITION TO TRACK VTABS