The Oregon Trail For Texas Instruments TI-99/4 and compatible computers. NOT FOR USE WITH TI CALCUATORS! NOTE: If "keying in", do not include preface or credits/changes section Credits at bottom of document. Please see revisions (Below credits) for more information) This is the standard version (Build 32 version 5.10), for TI-99 systems with memory expansions. For systems without memory expansion modules, use a compact version. TEST BUILD 32 v5.01 1 PRINT "TEST-BUILD 32/VERSION 5.10" 2 PRINT "LOADING" 3 PRINT "LOADING" 4 PRINT "LOADING" 5 DIM SA(4,4) 10 DIM S$(4) 15 DIM DT$(19) 20 DIM WD$(7) 25 DIM D(15) 30 FOR LP=1 TO 4 35 FOR D1=1 TO 4 40 READ SA(LP,D1) 45 NEXT D1 50 READ S$(LP) 55 NEXT LP 60 DATA 66,65,78,71,"BANG",66,76,65,77,"BLAM" 65 DATA 66,79,79,77,"BOOM",87,72,65,77,"WHAM" 70 FOR LP=1 TO 19 75 READ DT$(LP) 80 NEXT LP 85 DATA "APRIL 12","APRIL 26","MAY 10","MAY 24","JUNE 7" 90 DATA "JUNE 21","JULY 5","JULY 19","AUGUST 2","AUGUST 16","AUGUST 31","SEPTEMBER 13" 95 DATA "SEPTEMBER 27","OCTOBER 11","OCTOBER 25","NOVEMBER 8","NOVEMBER 22" 100 DATA "DECEMBER 6","DECEMBER 20" 105 FOR LP=1 TO 7 110 READ WD$(LP) 115 NEXT LP 120 DATA "MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY" 125 FOR D1=1 TO 15 130 READ D(D1) 135 NEXT D1 140 DATA 6,11,13,15,17,22,32,35,37,42,44,54,64,69,95 145 CALL CLEAR 150 RANDOMIZE 155 PRINT :"HOW GOOD A SHOT ARE YOU?" 160 PRINT " (1) ACE MARKSMAN" 165 PRINT " (2) GOOD SHOT" 170 PRINT " (3) FAIR TO MIDDLIN'" 175 PRINT " (4) NEED MORE PRACTICE" 180 PRINT " (5) SHAKY KNEES":: 185 INPUT "(1-5): ":D9 190 IF (D9<1)+(D9>5)THEN 185 195 D9=D9*25 200 X1=-1 205 T=700 210 GOSUB 2575 215 PRINT :"HOW MUCH DO YOU WANT TO" 220 PRINT "SPEND ON YOUR OXEN TEAM?" 225 INPUT "(200-300) ":A 230 IF (A<200)+(A>300)THEN 225 235 T=T-A 240 GOSUB 2575 245 INPUT "ON FOOD? ":F 250 IF (F<0)+(F>T)THEN 245 255 T=T-F 260 IF T=0 THEN 335 265 GOSUB 2575 270 INPUT "ON AMMUNITION? ":B 275 IF (B<0)+(B>T)THEN 270 280 T=T-B 285 IF T=0 THEN 335 290 GOSUB 2575 295 INPUT "ON CLOTHING ?":C 300 IF (C<0)+(C>T)THEN 295 305 T=T-C 310 IF T=0 THEN 335 315 GOSUB 2575 320 INPUT "ON MISC. SUPPLIES? ":M1 325 IF (M1<0)+(M1>T)THEN 320 330 T=T-M1 335 B=B*50 340 PRINT :"MONDAY - MARCH 29, 1847" 345 GOTO 405 350 IF M>=2040 THEN 2120 355 D3=D3+1 360 PRINT :"MONDAY - "; 365 IF D3>19 THEN 380 370 PRINT DT$(D3); 375 GOTO 400 380 PRINT :"YOU HAVE BEEN ON THE TRAIL" 385 PRINT "TOO LONG -- YOUR FAMILY DIES IN THE FIRST BLIZZARD" 390 PRINT "OF WINTER" 395 GOTO 2090 400 PRINT ", 1847":: 405 GOSUB 2520 410 IF F>=13 THEN 420 415 PRINT :"YOU'D BETTER DO SOME HUNTING OR BUY FOOD , AND SOON!!!!" 420 F=INT(F) 425 B=INT(B) 430 C=INT(C) 435 M1=INT(M1) 440 T=INT(T) 445 M=INT(M) 450 M2=M 455 IF (S4=1)+(K8=1)THEN 465 460 GOTO 485 465 IF T<20 THEN 2045 470 T=T-20 475 PRINT "THE DOCTOR'S BILL IS $20" 480 K8=0 485 IF M9=1 THEN 500 490 PRINT "TOTAL MILEAGE IS";M 495 GOTO 510 500 PRINT :"TOTAL MILEAGE IS 950" 505 M9=0 510 GOSUB 2490 515 IF (X1=-1)+(T<=0)THEN 550 520 X1=X1*(-1) 525 PRINT :"DO YOU WANT TO (1) STOP AT" 530 INPUT "THE NEXT FORT, (2) HUNT, OR (3) CONTINUE? ":X 535 IF (X<1)+(X>3)THEN 525 540 X=INT(X) 545 GOTO 595 550 INPUT "DO YOU WANT TO (1) HUNT, OR (2) CONTINUE? ":X 555 IF (X<1)+(X>2)THEN 550 560 X=X+1 565 IF (X=3)+(B>39)THEN 590 570 PRINT :"SORRY --- YOU NEED MORE" 575 PRINT "BULLETS TO GO HUNTING" 580 PRINT :"CONTINUING..." 585 X=3 590 X1=X1*(-1) 595 ON X GOTO 600,720,810 600 IF T<=0 THEN 710 605 PRINT :"YOU HAVE $";T 610 PRINT "ENTER WHAT YOU WISH TO SPEND ON THE FOLLOWING" 615 INPUT "FOOD $":P 620 IF (P<0)+(P>T)THEN 605 625 T=T-P 630 F=F+2/3*P 635 IF T=0 THEN 710 640 INPUT "AMMUNITION $":P 645 IF (P<0)+(P>T)THEN 640 650 T=T-P 655 B=INT(B+2/3*P*50) 660 IF T=0 THEN 710 665 INPUT "CLOTHING $":P 670 IF (P<0)+(P>T)THEN 665 675 T=T-P 680 C=C+2/3*P 685 IF T=0 THEN 710 690 INPUT "MISC. SUPPLIES $":P 695 IF (P<0)+(P>T)THEN 690 700 T=T-P 705 M1=M1+2/3*P 710 M=M-45 715 GOTO 810 720 IF B>39 THEN 740 725 PRINT :"SORRY --- YOU NEED MORE" 730 PRINT "BULLETS TO GO HUNTING" 735 GOTO 525 740 M=M-45 745 GOSUB 2330 750 IF B1<=1 THEN 775 755 IF 100*RND<13*B1 THEN 805 760 PRINT :"NICE SHOT, RIGHT ON TARGET! GOOD EATIN' TONIGHT!!" 765 B=B-10-3*B1 770 GOTO 810 775 PRINT :"RIGHT BETWEEN THE EYES" 780 PRINT "---YOU GOT A BIG ONE!!!" 785 PRINT "FULL BELLIES TONIGHT!" 790 F=F+52+RND*6 795 B=B-10-RND*4 800 GOTO 810 805 PRINT :"YOU MISSED---AND YOUR DINNERGOT AWAY" 810 IF F>=13 THEN 820 815 GOTO 2030 820 PRINT :"DO YOU WANT TO EAT" 825 PRINT " (1) POORLY" 830 PRINT " (2) MODERATELY OR" 835 INPUT " (3) WELL? ":E 840 IF (E<1)+(E>3)THEN 820 845 E=INT(E) 850 F=F-8-5*E 855 IF F>=0 THEN 875 860 F=F+8+5*E 865 PRINT :"NOT ENOUGH TO EAT THAT WELL" 870 GOTO 820 875 M=M+200+(A-220)/5+10*RND 880 L1=0 885 C1=0 890 IF RND*10>((M/100-4)^2+72)/((M/100-4)^2+12)-1 THEN 1215 895 PRINT :"RIDERS AHEAD. THEY "; 900 S5=0 905 IF RND<.8 THEN 920 910 PRINT "DON'T " 915 S5=1 920 PRINT "LOOK HOSTILE" 925 PRINT :"TACTICS" 930 PRINT " (1) RUN" 935 PRINT " (2) ATTACK" 940 PRINT " (3) CONTINUE" 945 INPUT " (4) CIRCLE WAGONS? ":T1 950 IF (T1<1)+(T1>4)THEN 925 955 T1=INT(T1) 960 IF RND>.2 THEN 970 965 S5=1-S5 970 IF S5=1 THEN 1110 975 ON T1 GOTO 980,1005,1070,1090 980 M=M+20 985 M1=M1-15 990 B=B-150 995 A=A-40 1000 GOTO 1165 1005 GOSUB 2330 1010 B=B-B1*40-80 1015 IF B1>1 THEN 1035 1020 PRINT :"NICE SHOOTING!" 1025 PRINT "YOU DROVE THEM OFF!!" 1030 GOTO 1165 1035 IF B1<=4 THEN 1060 1040 PRINT :"LOUSY SHOT---YOU GOT KNIFED" 1045 K8=1 1050 PRINT "YOU HAVE TO SEE THE DOCTOR" 1055 GOTO 1165 1060 PRINT :"BIT SLOW WITH YOUR COLT .45" 1065 GOTO 1165 1070 IF RND>.8 THEN 1155 1075 B=B-150 1080 M1=M1-15 1085 GOTO 1165 1090 GOSUB 2330 1095 B=B-B1*30-80 1100 M=M-25 1105 GOTO 1015 1110 ON T1 GOTO 1115,1130,1165,1145 1115 M=M+15 1120 A=A-10 1125 GOTO 1165 1130 M=M-5 1135 B=B-100 1140 GOTO 1165 1145 M=M-20 1150 GOTO 1165 1155 PRINT :"THEY DID NOT ATTACK" 1160 GOTO 1215 1165 IF S5=0 THEN 1185 1170 PRINT :"RIDERS WERE FRIENDLY, BUT" 1175 PRINT "CHECK FOR POSSIBLE LOSSES" 1180 GOTO 1215 1185 PRINT :"RIDERS WERE HOSTILE," 1190 PRINT "CHECK FOR LOSSES" 1195 IF B>=0 THEN 1215 1200 PRINT :"YOU RAN OUT OF BULLETS AND" 1205 PRINT "GOT MASSACRED BY THE RIDERS" 1210 GOTO 2090 1215 R1=INT(100*RND)+1 1220 FOR D1=1 TO 15 1225 IF R1<=D(D1)THEN 1235 1230 NEXT D1 1235 IF D1>10 THEN 1245 1240 ON D1 GOTO 1250,1270,1295,1330,1345,1365,1385,1425,1525,1565 1245 ON D1-10 GOTO 1585,1620,1650,1815,1795,1825 1250 PRINT :"WAGON BREAKS DOWN--LOSE TIME & SUPPLIES FIXING IT" 1255 M=M-15-5*RND 1260 M1=M1-8 1265 GOTO 1845 1270 PRINT :"OX INJURES LEG---SLOWS YOU" 1275 PRINT "DOWN REST OF TRIP" 1280 M=M-25 1285 A=A-20 1290 GOTO 1845 1295 PRINT :"BAD LUCK---YOUR DAUGHTER" 1300 PRINT "BROKE HER ARM. YOU HAD TO" 1305 PRINT "STOP AND USE SUPPLIES TO" 1310 PRINT "MAKE A SLING" 1315 M=M-5-4*RND 1320 M1=M1-2-3*RND 1325 GOTO 1845 1330 PRINT :"OX WANDERS OFF, SPEND TIME LOOKING FOR IT" 1335 M=M-17 1340 GOTO 1845 1345 PRINT :"YOUR SON GETS LOST---SPEND" 1350 PRINT "HALF A DAY LOOKING FOR HIM" 1355 M=M-10 1360 GOTO 1845 1365 PRINT :"UNSAFE WATER---LOSE TIME" 1370 PRINT "LOOKING FOR CLEAN SPRING" 1375 LET M=M-10*RND*-2 1380 GOTO 1845 1385 IF M>950 THEN 1730 1390 PRINT :"HEAVY RAINS---TIME &" 1395 PRINT "SUPPLIES LOST" 1400 F=F-10 1405 B=B-500 1410 M1=M1-15 1415 M=M-10*RND-5 1420 GOTO 1845 1425 PRINT :"BANDITS ATTACK!" 1430 CALL SOUND(1000,-4,0) 1435 GOSUB 2330 1440 B=B-20*B1 1445 IF B>=0 THEN 1465 1450 PRINT :"YOU RAN OUT OF BULLETS--THEY GET LOTS OF CASH" 1455 T=T/3 1460 GOTO 1470 1465 IF B1<=1 THEN 1510 1470 PRINT :"YOU GOT SHOT IN THE LEG" 1475 PRINT "AND TOOK ONE OF YOUR OXEN" 1480 K8=1 1485 PRINT :"BETTER HAVE A DOC LOOK AT" 1490 PRINT "YOUR WOUND" 1495 M1=M1-5 1500 A=A-20 1505 GOTO 1845 1510 PRINT :"QUICKEST DRAW OUTSIDE OF" 1515 PRINT "DODGE CITY!!! YOU GOT 'EM!" 1520 GOTO 1845 1525 PRINT :"THERE WAS A FIRE IN YOUR" 1530 PRINT "WAGON---FOOD & SUPPLIES" 1535 PRINT "DAMAGED!" 1540 F=F-40 1545 B=B-400 1550 M1=M1-RND*8-3 1555 M=M-15 1560 GOTO 1845 1565 PRINT :"LOSE YOUR WAY IN HEAVY FOG" 1570 PRINT "...TIME IS LOST" 1575 M=M-10-5*RND 1580 GOTO 1845 1585 PRINT :"YOU KILLED A POISONOUS SNAKEAFTER IT BIT YOU" 1590 B=B-10 1595 M1=M1-5 1600 IF M1>=0 THEN 1845 1605 PRINT :"YOU DIE OF SNAKEBITE SINCE" 1610 PRINT "YOU HAVE NO MEDICINE" 1615 GOTO 2090 1620 PRINT :"WAGON GETS SWAMPED FORDING" 1625 PRINT "RIVER--LOSE FOOD & CLOTHES" 1630 F=F-30 1635 C=C-20 1640 M=M-20-20*RND 1645 GOTO 1845 1650 PRINT :"WILD ANIMALS ATTACK!" 1655 CALL SOUND(1000,-7,0) 1660 GOSUB 2330 1665 IF B>39 THEN 1690 1670 PRINT :"YOU WERE TOO LOW ON BULLETS" 1675 PRINT "THE WOLVES OVERPOWERED YOU" 1680 K8=1 1685 GOTO 2065 1690 IF B1>2 THEN 1705 1695 PRINT :"NICE SHOOTIN' PARDNER---THEYDIDN'T GET MUCH" 1700 GOTO 1710 1705 PRINT :"SLOW ON THE DRAW---THEY GOT AT YOUR FOOD & CLOTHES" 1710 B=B-20*B1 1715 C=C-B1*4 1720 F=F-B1*8 1725 GOTO 1845 1730 PRINT :"COLD WEATHER---BRRRRR!---YOU" 1735 IF C>22+4*RND THEN 1750 1740 PRINT "DON'T "; 1745 C1=1 1750 PRINT "HAVE ENOUGH CLOTHING" 1755 PRINT "TO KEEP WARM" 1760 IF C1=0 THEN 1845 1765 GOTO 2405 1770 PRINT :"HAIL STORM--SUPPLIES DAMAGED" 1775 M=M-5-RND*10 1780 B=B-200 1785 M1=M1-4-RND*3 1790 GOTO 1845 1795 IF E=1 THEN 2405 1800 IF E=3 THEN 1815 1805 IF RND>.25 THEN 2405 1810 GOTO 1845 1815 IF RND<.5 THEN 2405 1820 GOTO 1845 1825 PRINT :"HELPFUL NATIVES SHOW YOU" 1830 PRINT "WHERE TO FIND MORE FOOD" 1835 F=F+14 1840 GOTO 1845 1845 IF M<=950 THEN 350 1850 IF RND*10>9-((M/100-15)^2+72)/((M/100-15)^2+12)THEN 1925 1855 PRINT :"RUGGED MOUNTAINS" 1860 IF RND>.1 THEN 1885 1865 PRINT :"YOU GOT LOST AND LOSE" 1870 PRINT "VALUABLE TIME TRYING TO FINDA TRAIL!" 1875 M=M-60 1880 GOTO 1925 1885 IF RND>.11 THEN 1915 1890 PRINT :"WAGON DAMAGED! LOSE TIME ANDSUPPLIES" 1895 M1=M1-5 1900 B=B-200 1905 M=M-20-30*RND 1910 GOTO 1925 1915 PRINT :"THE GOING GETS SLOW..." 1920 M=M-45-RND/.02 1925 IF F1=1 THEN 1950 1930 F1=1 1935 IF RND<.8 THEN 1985 1940 PRINT :"YOU MADE IT SAFELY THROUGH" 1945 PRINT "SOUTH PASS--NO SNOW" 1950 IF M<1700 THEN 1970 1955 IF F2=1 THEN 1970 1960 F2=1 1965 IF RND<.7 THEN 1985 1970 IF M>950 THEN 350 1975 M9=1 1980 GOTO 350 1985 PRINT :"BLIZZARD IN MOUNTAINS AT" 1990 PRINT "SOUTH PASS, TIME & SUPPLIES LOST" 1995 L1=1 2000 F=F-25 2005 M1=M1-10 2010 B=B-300 2015 M=M-30-40*RND 2020 IF C<18+2*RND THEN 2405 2025 GOTO 1970 2030 PRINT :"YOU RAN OUT OF FOOD AND" 2035 PRINT "STARVED TO DEATH" 2040 GOTO 2090 2045 PRINT "YOU CAN'T AFFORD A DOCTOR" 2050 GOTO 2065 2055 PRINT :"YOU RAN OUT OF MEDICAL" 2060 PRINT "SUPPLIES" 2065 PRINT :"YOU DIED OF "; 2070 IF K8=1 THEN 2085 2075 PRINT "PNEUMONIA" 2080 GOTO 2090 2085 PRINT "INJURIES" 2090 PRINT :"WE ARE SORRY YOU DIDN'T GET TO THE GREAT TERRITORY OF OREGON" 2095 PRINT :"BETTER LUCK NEXT TIME!" 2100 PRINT ::"- SINCERELY," 2105 PRINT :"THE OREGON CITY" 2110 PRINT "CHAMBER OF COMMERCE" 2111 PRINT "DECEMBER 10TH, 1847." 2115 STOP 2120 F9=(2040-M2)/(M-M2) 2125 F=F+(1-F9)*(8+5*E) 2130 PRINT :"YOU FINALLY ARRIVED AT" 2135 PRINT "OREGON CITY AFTER 2040 LONG MILES---HOORAY!!!!!" 2140 PRINT "A REAL PIONEER!":: 2145 FOR LP=1 TO 1000 2150 NEXT LP 2155 F9=INT(F9*14) 2160 D3=D3*14+F9 2165 F9=F9+1 2170 IF F9<8 THEN 2180 2175 F9=F9-7 2180 PRINT WD$(F9) 2185 IF D3>124 THEN 2205 2190 D3=D3-93 2195 PRINT "JULY";D3;"1847" 2200 GOTO 2295 2205 IF D3>155 THEN 2225 2210 D3=D3-124 2215 PRINT "AUGUST";D3;"1847" 2220 GOTO 2295 2225 IF D3>185 THEN 2245 2230 D3=D3-155 2235 PRINT "SEPTEMBER";D3;"1847" 2240 GOTO 2295 2245 IF D3>216 THEN 2265 2250 D3=D3-185 2255 PRINT "OCTOBER";D3;"1847" 2260 GOTO 2295 2265 IF D3>246 THEN 2285 2270 D3=D3-216 2275 PRINT "NOVEMBER";D3;"1847" 2280 GOTO 2295 2285 D3=D3-246 2290 PRINT "DECEMBER";D3;"1847" 2295 GOSUB 2520 2300 GOSUB 2490 2305 PRINT :"PRESIDENT JAMES K. POLK" 2310 PRINT "SENDS YOU HIS HEARTIEST" 2315 PRINT "CONGRATULATIONS AND WISHES" 2320 PRINT "YOU A PROSPEROUS LIFE AHEAD AT YOUR NEW HOME." 2325 STOP 2330 S6=INT(RND*4+1) 2335 PRINT :"TYPE ";S$(S6) 2340 TIME=0 2345 LTR=1 2350 CALL KEY(0,K,S) 2355 TIME=TIME+1 2360 IF (S=0)+(S=-1)THEN 2350 2365 IF K<>SA(S6,LTR)THEN 2350 2370 PRINT CHR$(SA(S6,LTR)); 2375 LTR=LTR+1 2380 IF LTR<5 THEN 2350 2385 B1=TIME-D9 2390 IF B1>0 THEN 2400 2395 B1=0 2400 RETURN 2405 IF 100*RND<10+35*(E-1)THEN 2440 2410 IF 100*RND<100-(40/4^(E-1))THEN 2460 2415 PRINT :"SERIOUS ILLNESS---YOU MUST" 2420 PRINT "STOP FOR MEDICAL ATTENTION" 2425 M1=M1-10 2430 S4=1 2435 GOTO 2475 2440 PRINT :"MILD ILLNESS---MEDICINE USED" 2445 M=M-5 2450 M1=M1-2 2455 GOTO 2475 2460 PRINT "BAD ILLNESS---MEDICINE USED." 2465 M=M-5 2470 M1=M1-5 2475 IF M1<0 THEN 2055 2480 IF L1=1 THEN 1970 2485 GOTO 1845 2490 PRINT :"FOOD:";INT(F) 2495 PRINT "BULLETS:";INT(B) 2500 PRINT "CLOTHING:";INT(C) 2505 PRINT "MISC. SUPPLIES:";INT(M1) 2510 PRINT "CASH:";INT(T) 2515 RETURN 2520 IF F>=0 THEN 2530 2525 F=0 2530 IF B>=0 THEN 2540 2535 B=0 2540 IF C>=0 THEN 2550 2545 C=0 2550 IF M1>=0 THEN 2560 2555 M1=0 2560 IF T>0 THEN 2570 2565 T=0 2570 RETURN 2575 PRINT :"YOU HAVE $";T 2580 RETURN version 5.10/BUILD 32 -removed disclaimer (build 29) -changes are refferd to in build numbers (build 29) -we will release patches until another version with those features comes out, if, say, build 2017 has, say 30 endings, and, maybe, build 1971 has, maybe, 20, but build 2017 is not out yet, you can patch build 1971 to have more features as we develop them. -minor updates and story enhancements.(build 32) -versions with the same version number can be different (eg 5.0/build 32 vs v5.0/build 37) -if you have any inqires, ideas,or issues, please post at AtariAge @ http://atariage.com/forums/topic/268340-tho-oregon-trail-for-ti-994