THE GAME
Applachian Trail places you in the boots of a hiker whose goal is to walk the entire length of the 2000-mile Trail from Springer Mountain, Georgia, to Mt. Katahdin, Maine. Your journey begins in April as soon as the southern part of the Trail is clear of snow, and you must reach the northern terminus before the early snowfalls block the Presidential Mountain Range in New Hampshire.
Along the way, you encounter the same hazards reported in the diaries of hundreds of hikers. Some are natural hazards—prolonged heavy rain, late snowstorms, poison ivy; others are physical problems—hypothermia, excessive weight loss, blisters; and still other problems involve difficulties with equipment—torn raingear, worn-out boots, and broken zippers. It is not easy to complete the Appalachian Trail, but your chances of success will be better if you remember the following:
- Careful planning is important. When deciding what to pack, you must make many trade-offs—generally among comfort, weight, and food.
- Your method of food supply has a great effect on the success of your hike. You must choose one of the following methods:
- Bury caches of food along the trail. This has to be done prior to your hike and requires a great deal of planning.
- Purchase food as you go along. This is the cheapest method, but requires time-consuming off-trail excursions.
- Have a friend send food to post offices along the way. This is one compromise that works well for many hikers, but this method also requires a great deal of planning.
- The nutritional value of your food is important. You must decide how many calories you want to replenish each day and how to get them from each of the five food groups.
Prepare carefully and deal intelligently with the obstacles you encounter, and five million steps later you can join the elite group of fewer than 2000 hikers who have completed the Appalachian Trail. Happy hiking!
THE STORY
The Appalachian Trail is a continuous footpath that roughly follows the crest of the Appalachian mountain range through 14 states from Springer Mountain in northern Georgia to Mt. Katahdin in the central Maine wilderness.
In 1922, the first mile of the trail was cut and marked in Palisades Interstate Park in New York. Fifteen years later, in August 1937, the trail was proclaimed complete when the last two stretches—the south slope of Mt. Sugarloaf in Maine and a dense section near the Davenport Gap in Tennessee—were finally cut and marked. Over the years many sections have been relocated, particularly in the Great Smoky Mountains and Shenandoah National Park, but the total length of the trail remains a bit over 2000 miles.
The Appalachian Trail Conference, organized in 1925 when the project was barely under way, coordinated the effort to build what is today the longest marked footpath in the world. Today the Conference continues to coordinate the efforts of the organizations and individuals who maintain and preserve the Trail. Although the U.S. Department of the Interior is responsible for the administration of the Trail, volunteers still play the major role in clearing, maintaining, and "operating" the Trail.
The Appalachian Mountain system is not an unbroken range, but consists of many mountain ranges often separated by deep valleys. Some of the more notable ranges include the Great Smokies, the Blue Ridge Mountains, the Alleghenies, the Catskills, the Green Mountains, and the White Mountains.
The Trail passes through 14 eastern states. West Virginia has the least Trail mileage of any state—5.2 miles with another 20.0 miles along its border with Virginia—while Virginia boasts the longest section of trail—464.7 miles. The most mountainous stretches are in Vermont and New Hampshire. The roughest stretches are in Pennsylvania and New Jersey, and the worst weather is generally thought to occur in Maine.
Myron H. Avery was the first person to walk the entire length of the Appalachian Trail, starting in Maine in the 1920s when the Trail was still in its formative stage and finishing the last section 14 years later in the fall of 1936. Another early hiker who walked the entire trail, again in several sections, was George W. Outer-bridge, who started in 1932 and finished in 1939.
When in 1948 Earl Shaffer set out to walk the entire Trail in one continuous trip, most people thought the task quite impossible and him foolhardy to try it. Until that time, the Trail had been in existence for some 11 years and only six or seven people had walked the entire length, each doing so in a series of relatively short hikes over a period of years.
Shaffer had served 41/2 years in the Army in World War II, most of it in the Pacific theater, and had a yearning to spend some time alone in the wilderness. He prepared himself by doing jujitsu exercises and abstaining from smoking. He carried what was considered at the time a light load in a rucksack and set out from Mt. Oglethorpe in Georgia on April 4, 1948. He carried mostly dried foods augmented by food purchased along the route.
Shaffer had ordered a complete set of guidebooks and maps, but they did not arrive in time for his trip. Thus, he relied upon the trail markers, often quite poor, his compass, and instinct to find his way. The trail was in bad condition because maintenance had been curtailed during wartime; indeed, entire sections were obliterated by nettles, poison ivy, and briars, and logging had destroyed many blazed trees and markers.
Nevertheless, with a great deal of perseverance Shaffer managed to reach Mt. Katahdin in Maine on August 5, 1948, just 124 days after setting out. He averaged 16.5 miles per day, but because of detours and leaving the trail for food and supplies, his actual average daily mileage was probably closer to 18 or 19. This is a remarkable average, even for hikers today carrying lightweight equipment on a well-marked trail.
Seventeen years later, in 1965, when he was 45, Shaffer hiked the Trail again, this time from Mt. Katahdin to Springer Mountain. He thus became the first person both to hike the Trial continuously and to hike it continuously in both directions. On his second hike, he left on July 19, 1965 (after black-fly season in Maine) and reached Springer Mountain in freezing weather on October 25, exactly 99 days later. His average daily mileage was a spectacular 20.5, a rate few hikers have exceeded since.
Another early through hiker was Gene Espy, who, at age 24 in 1951, hiked from Mt. Oglethorpe, Georgia, to Mt. Katahdin in exactly four months. Unlike some other hikers, he prepared no food caches and made no arrangements to be met anywhere along the way. Like most early hikers, Espy carried a fairly heavy load—45 pounds—even though he had only minimal extra clothing and equipment.
Espy is one of the few hikers who report having seen more than one or two rattlesnakes. In his diary he records killing nearly 20, the largest nearly 4 feet long. He also notes seeing four copperheads within a 20-minute period along one section of the Trail in Pennsylvania. These snake encounters made Espy a staunch proponent of carrying a strong walking stick.
Another notable early through hiker was Mrs. Emma Gatewood, better known as Grandma Gatewood, who, in the summer of 1955 at age 67, walked the entire Trail, thus becoming the sixth person and the first woman to complete it. Seventeen months later, in April 1957, she was back on the Trail again, completing it in September. Her first journey took 146 days, and her second took 142 days. Her pack of less than 20 pounds was probably the lightest ever taken on the Trail, and she rarely cooked a meal. Unlike many other hikers who chose heavy military boots, Grandma Gatewood wore lightweight men's Keds, wearing out six pairs in the course of her journey. Neither did she carry a tent, sleeping bag, nor regular backpack; instead she carried a blanket and a rain cape in a homemade shoulder bag. Also, contrary to the rules of hiking, she carried no guidebook, map, or compass.
Over the next seven years, Grandma Gatewood continued to hike various sections of the Trail, some in a north-south direction and, in 1964, when she was age 77, these sections totaled a third completion of the Trail. Moreover, she took time out in 1959 to walk the entire Oregon Trail in honor of its 100th anniversary.
The only other person to have completed the trail three times was also a woman, Dorothy Laker. In contrast to Grandma Gatewood's style, Dorothy Laker did a thorough job of planning for her hikes and carried the best equipment she could afford. It paid off, and she completed her first trip in 1957 in 161 days. Her second trip, which started on June 14, 1962, had to be aborted on October 17 at Mt. Moriah, New Hampshire. On her third hike she got an earlier start, May 4, 1964, and successfully completed the Trail 151 days later on October 2.
Nine years later, in 1971, Laker attempted to complete the last section of her second hike, setting out from Mt. Moriah on August 23, 1971. Unfortunately, she twisted her ankle badly in a boggy area near Saddleback and shortly thereafter a stretch of particularly cold, wet weather set in. She pushed on, but she fell while fording the swollen Kennebec River, ending her attempt to finish the Trail that year. Finally, the next year, more determined than ever, she finished the last 152 miles in a grueling 12-day effort.
There are nearly as many approaches to hiking the Trail as there are people who attempt to do it. Let's consider the various pros and cons of different approaches.
Shelter: There are campsites along the Trail, in most cases no more than a day's hike apart. At many of these campsites there are roofed shelters, generally three-sided with an open front. Shelter facilities are, according to the Appalachian Trail Conference, "primarily provided for the long-distance hiker who may have no other means of shelter. Persons planning short hikes are asked to consider this and plan to carry tents." All very nice in theory, but scores of hikers note that all too often the shelters are packed with Boy Scouts, day campers, or fishermen who have made a shelter their base of operations.
The obvious alternative to using trail shelters is to carry a tent, although many hikers in the fifties and sixties reported great satisfaction in discarding a heavy tent along the way by cutting it up to use as a groundcloth. However, tent design has made great strides since then, and lightweight, modestly roomy tents are now widely available. Needless to say, the larger the tent, the more it weighs, although there is something to be said for a tent large enough to accommodate both you and your pack.
Sleeping: Grandma Gatewood and some other early hikers swore by blankets, but again, the latest lightweight sleeping bags weigh very little more than a single wool blanket yet are considerably more versatile. The key questions today usually boil down to bag shape (mummy—very confining and very warm; rectangular—roomy but heavy; and semi-rectangular—a cross between mummy and rectangular) and insulation material (goose down—warm, lightweight, and expensive—or a synthetic material—heavier than down but cheaper and much faster to dry when it gets wet).
Many of the shelters have bedframes with cut and broken springs. These are murder on sleeping bags, not to mention uncomfortable. Hikers are well advised to carry a heavy groundcloth to protect sleeping bags from these hazards, as well as for those nights when they must sleep outside on the ground. The floors of shelters are often made from rough logs that are equally uncomfortable; hence, an air mattress or foam pad is a practical necessity.
Cooking: For the most part, the campfire is an item of nostalgia due to the scarcity of dry wood and the danger of forest fires.
Indeed, open fires are not permitted anywhere along the Trail except in fireplaces provided at designated campsites. Therefore, most people carry a small stove. The technology of stoves has also improved greatly during the last decade, and extremely lightweight units which burn a variety of fuels (white gas, propane, and butane) are now available. Some of these fuels, especially white gas, can be purchased easily along the Trail, while others can be carried in compact cylinders or fuel bottles.
Of course, some hikers dispense with cooking altogether and eat cold food on the Trail, stopping for an occasional hot meal at a restaurant or store along the way.
Food supply: The three common methods of obtaining food are buried caches, packages sent ahead and held at post offices, and purchasing needed supplies at stores along the route. Each has its advantages and disadvantages. Food caches require no time-consuming off-trail excursions. Furthermore, canned goods can be buried along with the usual dried and concentrated foodstuffs, thereby giving the hiker a substantial dinner and breakfast when he digs up a cache. Depending upon how many caches are buried—some hikers bury as many as 50—the food load carried by the hiker can be potentially very light.
Purchasing food is the cheapest method of supply, because stores stock ordinary groceries rather than expensive trail mixes. On the other hand, this method requires many off-trail excursions, some of which can be quite long, and the food carried can be relatively heavy.
Food sent to and held at post offices along the way is a compromise; the hiker can send lightweight camp-supply meals and augment them with food purchased from stores, usually found near the post office.
No matter what the method of resupply, most hikers' diets are unbalanced and quite different from what they normally eat. Almost invariably the trail diet is deficient in fruits and fresh vegetables and abundant in grains and fibers. Because he is walking all day, the hiker burns up far more calories than he would in the course of a normal day at home. All these factors mean that he is calling upon his body to make some fairly radical adjustments in a short period of time. Some people's bodies adjust better than others', but nearly everyone experiences diet-related problems to some extent.
Water: It is advisable to carry a canteen or water bag to assure a supply of potable water. In many areas along the Trail the water is unsafe for drinking, and a considerable distance may pass before potable water can be found. All water obtained from unprotected or open sources should be purified by boiling or by chemical treatment before use.
Pack: Hikers constantly debate the relative merits of the external versus internal frame pack. The external frame pack rides farther away from the back and is cooler on hot days. Sleeping bag and mattress are usually carried on the outside and can be attached to the pack frame in a way that gives optimum weight distribution. Because these items are carried on the outside, an external frame pack generally holds more, but it also weighs more.
Everything normally is put inside of an internal frame pack, although some hikers still tie a sleeping pad to the outside. Proponents say that an internal frame pack keeps a hiker's things drier and is lighter and more compact than an external frame pack.
Footwear: Boots, say some hikers, make or break the trip.
Grandma Gatewood wouldn't agree, but in this she is clearly in the minority. Probably the major debate about footwear these days is leather versus synthetics. Many hikers still swear by a heavy handcrafted pair of one-piece leather boots, while others like a synthetic blend, alone or in some combination with leather, for its ability to breathe and dry quickly.
It is rare that a pair of boots, even the best custom-made pair, will last the entire trail without needing at least new soles. New soles usually last about 800 to 1000 miles; the rocky areas of Pennsylvania and New Jersey will do in a second pair; and the mountains of New England will finish off a third.
Raingear: When it rains on the Appalachian Trail it often comes down for days or weeks at a time. Thus, no matter what kind of raingear he carries, the hiker gets wet as the water seeps under his clothes, down his neck, and into his boots. Therefore, one approach is to not carry any raingear at all and to dry off when stopping at night but not otherwise. Most people still attempt to keep partially dry and carry a poncho or rain parka, and some hikers even carry rain pants.
Hazards: Most through hikers report that the first thing non-hikers ask about is snakes. In fact, snakes avoid human contact and many hikers have walked the entire Trail without seeing a single one. Nevertheless, it is probably better to err on the side of caution, and practically every hiker carries a 1 oz. snakebite kit.
For the most part, other animals also avoid humans, except if they have been fed by people (as have some of the bears in the Great Smoky Mountain National Park) or if they have been successful in the past finding food open in packs (raccoons, porcupines, and skunks usually do). Mice, which make their homes in many of the shelters, are always a problem.
But by far the most dangerous animals are the dogs found roaming about the small towns from Georgia to Pennsylvania. Not afraid of humans, they are perhaps the worst enemies hikers face on the trip. Against curs, as well as many other animals, the best defense is to avoid them and the second defense is a heavy hiking stick.
For many hikers, the worst hazard along the Trail is the poison ivy, oak, and sumac. In some stretches it is impossible to go around the thickets of poison ivy, and the hiker who has any susceptibility at all will probably come down with a case.
Probably the most common injury is a twisted ankle. The many rock scrambles, stream crossings, and boggy areas offer ample opportunity to put a foot down on an unstable surface.
A long hike is rough on equipment, and most hikers rip, tear, and wear out socks, pants, shirts, zippers, straps, stuff sacks, tents, groundcloths, and practically everything else at an amazing rate. It is vital to carry a small sewing kit and make repairs at the first sign of a rip. Worn socks should be replaced immediately to avoid blisters, whereas other items can be replaced later.
Trail markings: In theory, from each blaze on the Trail it is possible to see the next one. In practice, it isn't so. The Trail often has long sections where there are few opportunities for orientation or checking the route. The Trail guidebooks advise hikers never to proceed more than a quarter mile (roughly five minutes of hiking) without noticing some Trail indication. The cardinal mistake is an insistence on going forward when the route seems obscure or dubious.
Major stretches of the Trail are relocated almost every year because of commercial or residential development. Thus, even the latest maps and guidebooks are invariably out of date. The hiker must remain alert to the painted blazes and, if they deviate from the guidebook, should follow the blazes in preference to the printed data. In practice, this means that he will almost inevitably get lost—or at least stray from the Trail—more than once during the trip.
A decision to walk the Trail is not something to be undertaken lightly. A major physical and mental commitment is needed—a commitment to being alone and independent for three to seven months; a commitment to overcoming boredom, discomfort, weather, and hazards; a commitment to forcing the body to do more than it has ever done before; and a commitment to enjoying the challenge and adventure of a lifetime.
BIBLIOGRAPHY
Appalachian Trail Guides. Appalachian Trail Conference. Harpers Ferry, WV, 1984.
Fletcher, Colin. The New Complete Walker. New York: Knopf. 1982.
Hare, James R. (ed). Hiking the Appalachian Trail (2 vols). Emmaus, PA: Rodale Press, 1975.
Look, Dennis. Joy of Backpacking. Sacramento, CA: Jalmar Press, 1976.
Manning. Harvey. Backpacking: One Step At a Time. Seattle, WA: REI Press, 1972.
THE PROGRAM
At over 550 lines, the Appalachian Trail program is by far the largest in this book. There are two reasons for this: First, such a trip requires a tremendous amount of personal preparation—food, clothing, equipment, physical conditioning—which, in the program, requires over 175 lines of code. Second, walking the Trail is a complex undertaking, requiring many decisions and trade-offs. For example, you may set a brisk hiking rate for yourself. However, this means you will burn more calories and have to eat (and carry) more food. In turn, this means that your load is heavier, which slows you down and causes you to burn even more calories.
Not all of the possible interactions have been included in the program and you may wish to modify it to include others. Some suggestions for doing this are included in the description of the program.
Because this program uses many of the same techniques and routines as other programs in this book, only those that are unique or suitable for modification are discussed.
You are asked to make decisions about seven major items of equipment: tent, pack, sleeping bag, foam pad, stove, boots, and raingear (Lines 550–910). If you opt for an internal frame pack, everything you take must fit inside (Line 680), whereas with an external frame pack, your sleeping bag and foam pad may be carried on the outside (Line 670). I have assumed a volume of 3000 cu. in. for clothing, food, toilet supplies, eating utensils, guidebooks, etc. If you feel this is too little or too much, the volume can be changed. Also, the descriptions of the main items can be changed in the data statements (Lines 4740–5080). Each item requires four pieces of data: name, weight (ounces), price (dollars), and volume (cu. in.).
Actually, prices are not used, except to give you some idea of the cost of everything if purchased new. However, as many hikers seem to stay on rather limited budgets, it would be easy to add a routine to make sure that you stay within a certain total cost.
With respect to the food to be carried, you are asked to specify the percentage of each of five food groups that you want to eat (Lines 1050–1200). Note that the screen is cleared at the beginning of this routine. This allows all five food groups to be listed on the screen and the cursor to be moved beside each group so you can enter its percentage in your diet (Line 1150).
It takes different weights of various types of food to produce one calorie of energy. For example, one gram of protein produces four calories, while a gram of fat produces nine calories. Thus, depending upon how many calories of energy you want to replenish each day, you must eat a certain weight of food. This calculation of food weight (FWT) is made in Line 1340.
Because fat produces the most calories per gram, the lightest food load would consist of 100% fat. Obviously, no body could actually digest this, and it would be a disastrous choice. However, currently the program does not check for a balanced diet. Although you occasionally get indigestion (subroutine at Line 2590) it is a random occurrence and happens whether or not you have specified a balanced diet.
The main program is extremely short, 13 lines, and simply calls a series of subroutines to deal with hiking pace and mishaps (Lines 1560–1690). Currently the program checks on the hiker every three days (Line 1570). This could just as easily be done more or less often, or could be a function of distance. You might think that checking on a hiker every x miles might make more sense than every x days. However, after studying the accounts of scores of through hikers, it became apparent that far fewer things happened to faster hikers, while slower ones were plagued with problems. Thus, it seems that something happens every x days whether you are covering 8 or 28 miles a day.
Note that many mishaps are a function of date or distance or both. For example, you can't have snow in New England (Line 1660) until you reach New England (distance > 1545 miles) and until September 13 (time in days > 166).
Sometimes in a program you want events to occur periodically as a function of a variable that is not increasing uniformly. For example, in this program, you have the opportunity to establish a new hiking pace and a new diet every 400 miles. But, depending upon initial hiking pace and mishaps, you may be walking a different distance every day. Thus, we put in a counter, STV, which is multiplied by 400 and compared with your cumulative mileage every three days.
1680 IF D > (STV + 1) * 400 THEN GOSUB 1820
The variable STV is incremented by 1 in the first line of the subroutine; thus, the second time around, Line 1680 will look for 800 miles, and so on. Naturally, with this approach you will rarely hit a multiple of 400 miles on the button, but you will never go more than three days beyond the specified distance.
Many of the subroutines which deal with mishaps (Lines 2060–3320) have a counter that indicates how many times that mishap has occurred. For example, the statement in Line 2460, IF HZ(I) > 1 THEN RETURN. This is used to determine the maximum number of times that particular mishaps can occur. On the actual Trail, there is no limit to the number of times a snake can curl up in your boot or how often you can slip on rocks. Hence, if you wish, you can eliminate some or all of the tests for values of HZ.
The remaining subroutines are more or less straightforward, although one particularly messy formula ought to be explained. It is found in Line 1250 with a variation in Line 3970, specifically:
CD = INT(WB * 11.5 + WB * DINPT * .3 + (WB + WP) * DINPT * .21 + WB * (15 - TW) * .22)
This formula calculates your daily usage of calories. The first element of calorie usage is daily body maintenance (basal metabolism) of 1150 calories per day per 100 pounds of body weight, i.e, WB (body weight in pounds) times 11.5. Actually, women have a basal metabolism of 1100 calories per 100 pounds, and men 1200; you can easily make this correction, since the program asks for your sex in Line 210.
The second element is calories burned due to walking. This is proportional to the rate of walking times the time of walking (which, of course, is distance). According to studies done at Carnegie-Mellon University, the average person burns 90 calories per 100 pounds of body weight per hour at a walking speed of 3 mph. Thus, the second element in the formula equals 0.3 times body weight (in pounds) times rate (mph) times time (hours).
The third element is the calorie usage due to climbing. Assuming a body efficiency of about 30%, you use about 110 calories in raising every 100 pounds of total weight (body weight plus pack weight) each 1000 feet in elevation. Since, on average, the Trail involves a climb of 200 feet per mile, factoring these values together leads to the third element of the equation: 0.21 times (body weight + pack weight) times distance.
The fourth element of daily calorie usage is that from non-walking chores (cooking, dishwashing, eating, dressing, writing, etc.). If most of these activities are reasonably non-strenuous, calorie usage will be about 22 calories per 100 pounds of body weight per hour. Assuming nine hours of sleep (24 - 9 = 15), we subtract walking hours from 15 (your 15 waking hours) and multiply those hours by 0.22 times body weight.
There are many interesting modifications that can be made to this program to make it more realistic, but I leave it to you to discover these and incorporate them into the program.
PROGRAM VARIABLES
A Answer to input query, numeric value
A$ Answer to input query, string
CADD Calories added due to carrying weight of food
CAL Calories to eat per day, user input
CALOFF Calories of weight lost per day
CD Calorie usage per day
COST(n) Cost of item in pack (n = 1 to 7)
CST(n) Cost of item in pack, temporary (n = 1 to 4)
CT Total of food groups
D Distance into hike, cumulative
DB Distance when sole put on boot
DDAYS Distance walked in 3 days
DINPT Distance per day, calculated from player input
DLC(n) Distance from one location to the next (n = 1 to 21)
DM Distance per day, theoretical from player input
DMAX Distance per day, maximum due to physical condition
DY Days of food to be carried
FD(n) Diet percentage of each food group (n = 1 to 5)
FOOD Type of food resupply
FWT Food weight (oz.)
HZ(n) Hazard indicator (n = 1 to 25)
I Temporary iteration variable
ITEM$(n) Item to pack (n = 1 to 7)
ITM$(n) Item to pack, temporary (n = 1 to 4)
IVY Sensitivity to poison ivy, player input
J Temporary iteration variable
LC$(n) Location name (n = 1 to 21)
MD Day of month
MO$ Month name
PC Physical condition, player input
R(n) Reduction in walking rate due to mishaps (n = 1 to 10)
RAIN Feelings about rain, player input
RM Rate of walking multiplier
RN Random-number seed value
RT Rate-of-walking multiplier, temporary
RW Rate-of-walking, player input (mph)
SNO Snow indicator (number of times of heavy snow)
SP$(n) Categories of stuff to pack (n = 1 to 7)
STK Walking stick (0 = no, 1 = yes)
STV Stop to get new input variable (400 - mile markers)
T Time into hike (days)
TD Time, temporary (days)
TM Time delay due to mishap (days)
TS Time since last weight-loss calculation
TSLOW(n) Time slowed down by mishap (n = 1 to 10)
TT Temporary indicator that date has been printed
TW Time of walking per day, player input (hours)
U Changes of underwear
VL(n) Volume of item in pack (cu. in.), temporary (n = 1 to 4)
VOL(n) Volume of item in pack (cu. in.) (n = 1 to 7)
VOL1 Volume of tent, stove, and raingear
VOL2 Volume of sleeping bag and mattress
WADD Weight added to pack for food
WB Weight, body (lbs.)
WHT(n) Weight of item in pack, temporary (oz.) (n = 1 to 4)
WP Weight of pack (oz. in input section, lbs. in hiking section)
WT(n) Weight of item in pack (oz.) (n = 1 to 7)
WTLOSS Weight loss since last weight-loss calculation
WTLOST Weight loss, total
WTOZ Weight in oz. (for printing only)
WTPND Weight in lbs. (for printing only)
X$ Temporary string variable
X Temporary average miles per day
PROGRAM LISTINGS
Download APP.BAS (tokenized BASIC format)
100 CLS : KEY OFF
110 LOCATE 10, 1 : X$ = "Appalachian Trail" : GOSUB 5590
120 LOCATE 13, 1 : X$ = "(c) by David H. Ahl, 1986" : GOSUB 5590
130 LOCATE 23, 1 : X$ = "Press any key to continue." : GOSUB 5590
140 WHILE LEN(INKEY$) = 0 : RN = RN + 1 : WEND
150 WHILE RN > 32767 : RN = RN - 65535! : WEND : RANDOMIZE RN : CLS : GOSUB 5620
160 DIM HZ(25), DLC(25), LC$(25)
170 WHILE LEN(INKEY$) = 0 : RN = RN + 1 : WEND : DB = 300 : 'New boot gives 300 extra mi
180 '
190 'Data Input Section
200 CLS : PRINT "First we need some data about you." : PRINT
210 INPUT "Your sex (male or female)";A$ : GOSUB 5540
220 IF A$< >"M" AND A$< >"F" THEN PRINT "Answer 'M' or 'F' please." : GOTO 210
230 INPUT "Your weight in pounds";WB
240 IF WB > 79 AND WB < 401 THEN 260
250 PRINT "Surely you jest. Let's try that one again." : GOTO 230
260 PRINT "What is your physical condition (1 = excellent, 2 = good, ";
270 INPUT "3 = fair, 4 = poor)";PC
280 IF PC < 1 OR PC > 4 THEN PRINT "Answer 1, 2, 3, or 4 please." : GOTO 260
290 PRINT : PRINT "Walking pace: You may change your pace as the hike progresses."
300 PRINT "Remember, a faster pace covers the distance more quickly but"
310 PRINT "burns more calories and has a higher risk of injury."
320 PRINT "Slow and deliberate......1.7 mph"
330 PRINT "Moderate and vigorous......3 mph"
340 PRINT "Fast and very difficult....4 mph"
350 INPUT "At what rate in mph do you wish to walk (number & decimal okay)";RW
360 IF RW < 1 OR RW > 4.2 THEN PRINT "A rate of" RW "mph is silly." : GOTO 350
370 PRINT : PRINT "Walking hours per day: You may change this as time goes on."
380 INPUT "To start, how many hours do you wish to walk per day";TW
390 IF TW > 14 THEN PRINT "That's just too ambitious." : GOTO 380
400 IF TW * RW < 7 THEN PRINT "You won't even reach NJ by Christmas." : GOTO 380
410 PRINT : PRINT "Your sensitivity to poison ivy:"
420 PRINT " (1) Highly sensitive" : PRINT " (2) Moderately sensitive"
430 PRINT " (3) Immune" : PRINT " (4) Had series of desensitization shots"
440 INPUT "Which number describes you";IVY
450 IF IVY < 1 OR IVY > 4 THEN PRINT "What's that? Let's try again." : GOTO 440
460 PRINT : PRINT "People who have hiked the Trail have different feelings ";
470 PRINT "about rain:" : PRINT " (1) Let it pour, I love it."
480 PRINT " (2) No problem as long as the sun comes out every few days."
490 PRINT " (3) Five solid days of rain really gets me down."
500 PRINT " (4) If I foresee a long stretch of rain, I'll hole up in a"
510 PRINT " shelter or motel and wait it out."
520 INPUT "Which number most closely describes your feeling";RAIN
530 IF RAIN < 1 OR RAIN > 4 THEN PRINT "Not possible. Again please." : GOTO 520
540 '
550 'Data on what to carry
560 PRINT : PRINT "You must make some decisions about what to pack."
570 FOR I = 1 TO 7 : READ SP$(I) : PRINT : PRINT SP$(I) ":"
580 FOR J = 1 TO 4 : READ ITM$(J), WHT(J), CST(J), VL(J) : PRINT J ".. " ITM$(J)
590 WEIGHT = WHT(J) : PRINT " "; : GOSUB 5430
600 IF VL(J) > 0 THEN PRINT "," VL(J) "cu in";
610 IF CST(J) > 0 THEN PRINT ", price: $" CST(J)
620 NEXT J
630 INPUT "Which one do you want (number)";A
640 IF A < 1 OR A > 4 THEN PRINT "Come on now; answer 1, 2, 3, or 4" : GOTO 630
650 ITEM$(I) = ITM$(A) : WT(I) = WHT(A) : COST(I) = CST(A) : VOL(I) = VL(A) : NEXT I
660 VOL1 = VOL(1) + VOL(5) + VOL(7) : VOL2 = VOL(3) + VOL(4) : PRINT
670 IF COST(2) > 135 THEN IF VOL(2) > 3000 + VOL1 THEN 720 ELSE 690
680 IF VOL(2) > 3000 + VOL1 + VOL2 THEN 720 : 'Internal pack hold stuff?
690 PRINT "Your pack is too small to hold all those things plus clothes and"
700 PRINT "food. You'll have to take a larger pack or some smaller items."
710 PRINT : PRINT "Let's try again…" : RESTORE : GOTO 570
720 INPUT "How many changes of underwear do you want to take";U
730 IF U > 6 THEN PRINT "This is not a picnic. Take fewer." : GOTO 720
740 INPUT "Do you want to take a walking stick (Y or N)";A$ : GOSUB 5540
750 IF A$ = "Y" THEN STK = 1 ELSE STK = 0
760 PRINT : PRINT "To summarize, here is what you have chosen:"
770 FOR I = 1 TO 7 : PRINT SP$(I) " : " ITEM$(I) : NEXT I
780 PRINT "Changes of underwear:" U
790 IF STK = 1 THEN PRINT "Walking stick."
800 PRINT " In addition, you must carry (or wear) a hat, short-sleeve shirt,
810 PRINT "chamois shirt, light jacket, long underwear, hiking shorts, long"
820 PRINT "pants, 3 pairs socks, eating gear, water bottle, soap, toilet tissue,
830 PRINT "toilet supplies, towel, first-aid kit, snakebite kit, flashlight,
840 PRINT "100' nylon cord, watch, compass, lighter, bandanna, sewing kit, insect
850 PRINT "repellent, Swiss Army knife, water-purifier tablets, notebook, maps,
860 PRINT "guidebook, stuff sacks, moleskin, camera, and money." : PRINT
870 FOR I = 1 TO 7 : WP = WP + WT(I) : CST = CST + COST(I) : NEXT I : 'Summarize weights
880 WP = WP + 190 + U * 4 : IF STK = 1 THEN WP = WP + 24
890 PRINT "If you bought everything new, the total cost would be $" 225 + CST
900 PRINT "The total weight of what you are wearing and carrying is";
910 WEIGHT = WP : GOSUB 5430 : PRINT : PRINT ".... not including food or water."
920 '
930 'Data on food
940 GOSUB 5390 : PRINT : PRINT "Common systems of food supply include:"
950 PRINT " (1) Caches buried along the trail. Pros: no wasted time leaving"
960 PRINT " the Trail for food, heavy items can be buried."
970 PRINT " (2) Food sent to post offices along the way. Pros: more flexible"
980 PRINT " than caches. Cons: P.O.s closed nights, Sat pm and Sun."
990 PRINT " (3) Grocery stores and restaurants. Pros: good variety, cheap."
1000 PRINT " Cons: wasted time leaving Trail, limited opening hours."
1010 INPUT "Which will be your major method of food supply"; FOOD
1020 IF FOOD < 1 OR FOOD > 3 THEN PRINT "Sorry, try again." : GOTO 1010
1030 IF FOOD = 1 THEN RT = 1 ELSE RT = .95 : 'Off-trail excursions reduce walking rate
1040 RM = RT : GOSUB 5510 : 'Short pause before screen clears
1050 CLS
1060 PRINT "Obviously, you will carry your food in the most efficient form:"
1070 PRINT "dried, dehydrated, concentrated, etc. However, you must specify"
1080 PRINT "the percentage of your diet accounted for by each of the following"
1090 PRINT "food groups (remember, all five must add up to 100)."
1100 PRINT " (1) Dairy foods, cheese, yogurt"
1110 PRINT " (2) Fruits and vegetables"
1120 PRINT " (3) Meat, poultry, fish, eggs"
1130 PRINT " (4) Bread, cereal, seeds, nuts,"
1140 PRINT " (5) Margarine, lard, oils, fats"
1150 CT = 0 : FOR I = 1 TO 5 : LOCATE I + 4, 39 : INPUT FD(I) : CT = CT + FD(I) : NEXT I
1160 LOCATE 10, 39 : PRINT CT "%" : PRINT
1170 IF CT = 100 THEN PRINT "Very good." : GOTO 1220
1180 PRINT "Sorry, but your percentages add up to" CT "rather than to 100%."
1190 PRINT : PRINT "Press any key when you're ready to try again."
1200 WHILE LEN(INKEY$) = 0 : WEND : GOTO 1050
1210 '
1220 'Calculate calorie usage
1230 DM = RW * TW : IF DM > 30 THEN DM = 30 : 'Desired distance = rate * time
1240 'Calories = metabolism + walking + climbing + camp activities
1250 CD = INT(WB * 11.5 + WB * DM * .3 + (WB + WP / 16) * DM * .21 + WB * (15 - TW) * .22)
1260 PRINT : PRINT "Given your weight and that of your supplies, your walking"
1270 PRINT "speed, and your walking time per day, you can expect"
1280 PRINT "to burn at least" CD "calories per day."
1290 PRINT : INPUT "How many calories worth of food do you want to eat"; CAL
1300 IF CAL > .6 * CD THEN 1330
1310 PRINT "Your body will rebel against burning that much body fat."
1320 PRINT "Better eat a bit more…" : GOTO 1290
1330 IF CAL > 1.5 * CD THEN PRINT "No blimps allowed on the trail." : GOTO 1290
1340 FWT = INT(CAL * 3.2/(4 * FD(1) + 3 * FD(2) + 4 * FD(3) + 4 * FD(4) + 9 * FD(5))) : WEIGHT = FWT
1350 PRINT "That means eating an approx food weight per day of"; : GOSUB 5430
1360 PRINT : PRINT : IF FOOD = 3 THEN DY = 2 ELSE DY = 3 : 'Avg days of food carried
1370 WADD = DY * FWT + 17 : CADD = WADD * DM * .21 : WP = WP + WADD : CD = CD + CADD
1380 PRINT "Food and water add" WADD "oz. to your trail weight bringing your"
1390 PRINT "total weight (worn and carried) to"; : WEIGHT = WP : GOSUB 5430 : PRINT
1400 PRINT : X$ = "Preparations are finally complete!" : GOSUB 5590 : GOSUB 5510
1410 '
1420 'Main Hiking Section
1430 'Initial calculations, data, and messages
1440 WP = WP / 16 : GOSUB 1930 : 'Calculate true hiking pace
1450 PRINT : PRINT : GOSUB 5100 : 'Read locations
1460 PRINT " It is April 1 and you briskly step out on the approach trail"
1470 PRINT "at Amicalola Falls, Georgia. You hike the 6.9 miles to the peak"
1480 PRINT "of Springer Mountain and sign the trail log, the first of many"
1490 PRINT "that you intend to sign. Your hike will take you through 14"
1500 PRINT "states as the Trail wanders 2007 miles along the Appalachian"
1510 PRINT "Mountains to Baxter Peak on Mt. Katahdin in Maine. It is a"
1520 PRINT "challenging trail with an average climb of 200 feet each mile."
1530 PRINT "Fewer than 2000 people have walked its entire length. Good luck!"
1540 PRINT : GOSUB 5390
1550 '
1560 'Main loop starts here
1570 T = T + 3 : TD = INT(T + .5) : PRINT : GOSUB 5200 : 'Check on the hiker every 3 days
1580 DDAYS = 3 * RM * DINPT : D = D + DDAYS : IF D > 1999 THEN 4560
1590 PRINT "You have walked" INT(D) "miles. ";
1600 FOR I = 1 TO 21 : IF D > DLC(I) - 17 AND D < DLC(I) + 17 THEN 1620 : 'Near anyplace?
1610 NEXT I : PRINT : GOTO 1630
1620 PRINT "You are near" LC$(I)
1630 IF D > 1466 THEN R(10) = .85 : TSLOW(10) = 2007 : 'Slow going in mountains
1640 GOSUB 1710 : 'Any mishaps recently?
1650 IF T > 12 THEN GOSUB 4030 : 'Long stretch of rain?
1660 IF D > 1545 AND T > 166 THEN GOSUB 4260 : 'Snow in New England
1670 IF D > 1845 AND KEN = 0 THEN GOSUB 4380 : 'Kennebec River crossing
1680 IF D > (STV + 1) * 400 THEN GOSUB 1820 : 'Allow user to reset input variables
1690 GOSUB 5390 : GOTO 1570 : 'Go back to start of hiking loop
1700 '
1710 'Subroutine to determine which mishap, if any, occurs
1720 TM = 0 : RN = INT(1 + 40 * RND(1)) : IF RN > 35 THEN RN = 36 : 'Mishap occurs
1730 IF RN > 12 THEN 1760
1740 ON RN GOSUB 2070, 2110, 2150, 2220, 2260, 2300, 2320, 2340, 2390, 2410, 2430, 2460
1750 GOTO 1800
1760 IF RN > 24 THEN 1790
1770 ON RN - 12 GOSUB 2530, 2570, 2600, 2630, 2670, 2710, 2750, 2770, 2790, 2820, 2870, 2910
1780 GOTO 1800
1790 ON RN - 24 GOSUB 2960, 2990, 3010, 3040, 3070, 3100, 3130, 3170, 3200, 3220, 3260, 3340
1800 T = T + TM : GOSUB 2020 : RETURN : 'Time delay resulting from mishap
1810 '
1820 'Subroutine to let user reset input variables
1830 STV = STV + 1 : INPUT "Want to change walking pace or hours of walking"; A$
1840 GOSUB 5540 : IF A$< >"y "THEN 1910
1850 INPUT "New walking pace (mph)"; RW
1860 IF RW < 1 OR RW > 4.5 THEN PRINT "A rate of" RW "mph is silly." : GOTO 1850
1870 INPUT "New hours per day on the trail"; TW
1880 IF TW > 14 THEN PRINT "Come now; that's just too ambitious." : GOTO 1870
1890 IF STK = 1 THEN 1910 ELSE PRINT "Want to change your mind and carry a";
1900 INPUT "walking stick";A$ : GOSUB 5540 : IF A$ = "Y" THEN STK = 1
1910 PRINT : GOSUB 1930 : RETURN
1920 '
1930 'Subroutine to establish true hiking pace
1940 DINPT = RW * TW : 'Desired distance = walking rate * hours per day
1950 IF D > 600 THEN PC = 1 : 'Under 600 miles physical condition limits mileage
1960 DMAX = 6 + 6 * (5 - PC) : IF DINPT > DMAX THEN DINPT = DMAX
1970 IF WB / WP > 6 THEN 1990 : 'Body weight to pack weight ratio under 6?
1980 DINPT = (.49 + .086 * WB / WP) * DINPT : 'Heavy pack cuts down speed
1990 IF STV = 0 THEN RETURN : 'No chance to change diet at the start
2000 GOSUB 3820 : RETURN : 'Chance to change diet as trip progresses
2010 '
2020 'Subroutine to alter hiking rate due to mishaps
2030 RM = RT : FOR I = 1 TO 10 : IF TSLOW(I) > T THEN RM = RM * R(I)
2040 NEXT I : RETURN
2050 '
2060 'Subroutines for 35 assorted mishaps follow
2070 IF D > 360 OR HZ(6) = 1 THEN RETURN ELSE TM = .5 : HZ(6) = 1
2080 PRINT "You run into Rangers on military exercises who advise you to avoid"
2090 PRINT "the trail for the next few miles because of booby traps." : RETURN
2100 '
2110 IF D < 800 OR HZ(12) = 1 THEN RETURN ELSE TM = 1 : HZ(12) = 1
2120 PRINT "The back-support strap on your backpack has worn through. You'll"
2130 PRINT "have to find a shoemaker to sew on a piece of heavy leather." : RETURN
2140 '
2150 IF D - DB < 500 THEN RETURN ELSE IF HZ(15) = 1 THEN 2180 ELSE TM = 1 : HZ(15) = 1
2160 PRINT "The soles of your boots have worn through. You'll have to get new"
2170 PRINT "soles at a shoemaker." : RETURN
2180 IF D - DB < 800 THEN RETURN ELSE TM = 1.5 : DB = D : HZ(15) = 0
2190 PRINT "Your repaired boot soles are going again. You'll have to buy a new"
2200 PRINT "pair of boots along the way." : RETURN
2210 '
2220 IF D - DB < 700 THEN RETURN ELSE IF HZ(24) = 1 THEN RETURN ELSE TM = 1 : HZ(24) = 1
2230 PRINT "The uppers on your boots are starting to separate from the soles."
2240 PRINT "You'll have to get them repaired by shoemaker." : RETURN
2250 '
2260 IF D < 1000 OR HZ(23) = 1 THEN RETURN ELSE TM = .4 : HZ(23) = 1
2270 PRINT "The seat of your pants has worn through. You can take off the"
2280 PRINT "pockets and sew them over the holes." : RETURN
2290 '
2300 TM = .3 : PRINT "Mice got into your food last night. Yuck." : RETURN
2310 '
2320 TM = .3 : PRINT "Some Boy Scouts kept you awake 'til 1 am last night." : RETURN
2330 '
2340 IF D > 900 THEN RETURN ELSE TM = .1
2350 PRINT "Curs attack you as you are walking through a small town."
2360 IF STK = 1 THEN PRINT "You drive them off with your walking stick." : RETURN
2370 PRINT "They nip at your heels. You should really carry a stick." : RETURN
2380 '
2390 TM = .3 : PRINT "Trail is poorly marked and you get temporarily lost." : RETURN
2400 '
2410 TM = .2 : PRINT "Broken zipper on your pack. Lose time drying stuff." : RETURN
2420 '
2430 TM = .3 : PRINT "Route marked on map is out of date. You lose time trying"
2440 PRINT "to get back on the trail." : RETURN
2450 '
2460 IF HZ(1) > 1 THEN RETURN ELSE TM = 2 : HZ(1) = HZ(1) + 1 : DOC = 1
2470 PRINT "You forget to shake out your boot and a snake has curled up inside"
2480 PRINT "for the night. You're scared and he's mad." : GOSUB 5510
2490 IF RND(1) < .9 THEN PRINT "He slithers away and all is okay. Whew!" : RETURN
2500 PRINT "It's a rattler and he bites you. You'll have to get a doctor."
2510 GOTO 3360
2520 '
2530 IF D > 165 OR HZ(7) = 1 THEN RETURN ELSE HZ(7) = 1 : RN = INT(1 + 4 * RND(1)) : TM = RN
2540 PRINT "Late snow in the Smokies. The trail is unpassable for" RN "days."
2550 RETURN
2560 '
2570 IF HZ(8) > 3 THEN RETURN ELSE HZ(8) = HZ(8) + 1 : R(1) = .9 : TSLOW(1) = T + 14
2580 PRINT "You have some nasty blisters that will slow your pace." : RETURN
2590 '
2600 IF HZ(9) > 2 THEN RETURN ELSE HZ(9) = HZ(9) + 1 : R(2) = .7 : TSLOW(2) = T + 3
2610 PRINT "You have bad indigestion from an unbalanced diet." : RETURN
2620 '
2630 IF D > 870 OR HZ(10) = 1 THEN RETURN ELSE HZ(10) = 1 : TM = .5
2640 PRINT "A bear got into your food and ripped your pack last night. It's"
2650 PRINT "a good thing he wasn't hungry for human burgers." : RETURN
2660 '
2670 IF HZ(11) > 1 THEN RETURN ELSE HZ(11) = HZ(11) + 1 : R(3) = .75 : TSLOW(3) = T + 6
2680 PRINT "You twisted your ankle crossing a stream. That will slow your"
2690 PRINT "pace for a few days. Be more careful!" : RETURN
2700 '
2710 IF HZ(2) = 1 THEN RETURN ELSE HZ(2) = 1 : DOC = 2
2720 PRINT "You slipped on some rocks on a ledge. It's incredibly painful!"
2730 PRINT "Better see a doctor." : GOTO 3360
2740 '
2750 TM = .3 : PRINT "A branch snaps in your eye. Lose time to treat it." : RETURN
2760 '
2770 TM = .3 : PRINT "Bad case of constipation. Better change diet." : RETURN
2780 '
2790 TM = .5 : PRINT "You fell in a stream and everything got wet. Lose time"
2800 PRINT "drying out your sleeping bag and clothes." : RETURN
2810 '
2820 IF HZ(13) = 1 THEN RETURN ELSE HZ(13) = 1 : TM = 1.5
2830 PRINT "Last night you saw an animal moving near you and swatted at it."
2840 GOSUB 5510 : PRINT "Big mistake! It was a skunk. You'll have to wash"
2850 PRINT "what you can and replace the rest." : RETURN
2860 '
2870 IF HZ(14) = 1 THEN RETURN ELSE HZ(14) = 1 : TM = 2
2880 PRINT "Lowliest of the low! Someone stole your pack while you were taking"
2890 PRINT "a shower. You'll have to replace everything." : RETURN
2900 '
2910 IF HZ(3) = 1 THEN RETURN ELSE HZ(3) = 1 : TM = 3 : DOC = 3
2920 PRINT "After five solid days of rain, everything is soaked and you just"
2930 PRINT "can't stop shivering. You feel so terrible that you'll have to"
2940 PRINT "see a doctor." : GOTO 3360
2950 '
2960 IF HZ(16) = 1 THEN RETURN ELSE HZ(16) = 1 : TM = .4
2970 PRINT "You cut your hand badly with your knife. Be careful!" : RETURN
2980 '
2990 TM = .3 : PRINT "Socks worn through. You'll have to buy new ones." : RETURN
3000 '
3010 IF HZ(17) = 1 THEN RETURN ELSE HZ(17) = 1 : TM = 1
3020 PRINT "Bad toothache. You'll have to find a dentist soon." : RETURN
3030 '
3040 IF HZ(18) = 2 OR WT(1) = 0 THEN RETURN ELSE HZ(18) = HZ(18) + 1 : TM = .5
3050 PRINT "Tent ripped. You'll have to sew on a patch." : RETURN
3060 '
3070 IF D < 1000 OR HZ(19) = 1 THEN RETURN ELSE HZ(19) = 1 : TM = .3
3080 PRINT "Your groundcloth is in shreds. Must buy a new one." : RETURN
3090 '
3100 IF D < 500 OR HZ(20) = 1 OR WT(7) = 0 THEN RETURN ELSE HZ(20) = 1 : TM = .4
3110 PRINT "Bad rip in raingear. Must get a replacement." : RETURN
3120 '
3130 IF D < 600 OR HZ(21) = 1 OR STK = 0 THEN RETURN ELSE HZ(21) = 1 : R(4) = .9 : TM = .4
3140 PRINT "Your walking stick breaks. You can get a new one in the next"
3150 PRINT "town. Maybe they make 'em better up here." : TSLOW(4) = T + 4 : RETURN
3160 '
3170 IF HZ(22) = 1 THEN RETURN ELSE HZ(22) = 1 : TM = .4
3180 PRINT "Your water bag springs a leak. Better get a new one soon!" : RETURN
3190 '
3200 TM = .2 : PRINT "You run out of toilet tissue. Yucko!" : RETURN
3210 '
3220 PRINT "You run out of water and the springs marked on the map seem"
3230 PRINT "to have vanished or dried up. Better take it easy for a bit."
3240 HZ(5) = 1 : R(5) = .9 : TSLOW(5) = T + 3 : RETURN
3250 '
3260 IF HZ(4) = 3 THEN RETURN ELSE HZ(4) = HZ(4) + 1 : DOC = 4
3270 PRINT "Oh oh, you stumble into a thicket of poison ivy. Zowie!"
3280 IF IVY = 1 OR (IVY = 2 AND RND(1) > .5) THEN 3290 ELSE 3300
3290 PRINT "You got it really bad. You'll have to see a doctor." : GOTO 3360
3300 PRINT "Like it or not, you got a mild case. It itches like crazy but the"
3310 PRINT "calamine seems to have it under control. It slows you down tho'."
3320 R(6) = .9 : TSLOW(6) = T + 7 : TM = .4 : RETURN
3330 '
3340 PRINT "Walking…walking…walking…walking." : RETURN
3350 '
3360 'Subroutine to deal with serious injuries and illnesses
3370 PRINT : PRINT "You're feeling horrible, but you found a nice country doctor."
3380 ON DOC GOTO 3410, 3480, 3570, 3640, 3700
3390 '
3400 'Rattlesnake bite
3410 PRINT "He examines your swollen leg and says," : GOSUB 5510
3420 PRINT "'Good thing you got here so quickly. I'll give you a shot of anti-"
3430 PRINT "venin but you're going to be out of commission for a good 4 days—"
3440 PRINT "and even after that you'll have to take it easy for a while.'"
3450 TM = 4 : R(7) = .7 : TSLOW(7) = T + 15 : RETURN
3460 '
3470 'Broken or sprained leg
3480 PRINT "He examines your leg and says," : GOSUB 5510 : IF RND(1) > .7 THEN 3520
3490 PRINT "'That's a very nasty sprain. I'll tape it up, but you'll have to"
3500 PRINT "take it easy for at least a month.'"
3510 TM = 1.5 : R(8) = .6 : TSLOW(8) = T + 30 : RETURN
3520 PRINT "'Bad news, my young friend. Your leg is broken. I'm surprised you"
3530 PRINT "got here under your own power. But this is the end of your hike."
3540 PRINT "Sorry, but maybe you can try again next year.'" : GOTO 4610
3550 '
3560 'Hypothermia
3570 PRINT "He examines you and says," : GOSUB 5510 : TM = INT(5 + 6 * RND(1))
3580 PRINT "'That prolonged rain and cold has put you in a condition that we"
3590 PRINT "call hypothermia. You can stay in town here at a motel and I'll"
3600 PRINT "keep an eye on you, but you can't go back on the Trail for at"
3610 PRINT "least" TM "days. Sorry, but that's the way it is.'" : RETURN
3620 '
3630 'Poison Ivy
3640 PRINT "He only needs a glance to see that you are suffering from an"
3650 PRINT "extremely bad case of poison ivy. He puts you in a clinic for"
3660 PRINT "a few days and tells you what you already knew—that you'll just"
3670 PRINT "have to let it run its course." : TM = 5 : RETURN
3680 '
3690 'Excessive weight loss
3700 PRINT "He examines you and says," : GOSUB 5510 : IF WTLOST > .33 * WB THEN 3770
3710 PRINT "'You may want to lose some weight, but it's coming off far too"
3720 PRINT "quickly. Your body just can't cope. I'm going to keep you here"
3730 PRINT "for a week on a controlled diet—and then for the rest of the trip"
3740 PRINT "you'll have to go at a slower pace. Also, I want you to consume"
3750 PRINT "at least as many calories per day as your body is using up.'"
3760 WB = 1.18 * WB : TM = 7 : R(9) = .8 : TSLOW(9) = T + 30 : RETURN
3770 PRINT "'Believe it or not, you are in an advanced stage of starvation."
3780 PRINT "You're going to have to remain here for a few weeks on a controlled"
3790 PRINT "diet to stabilize your body chemistry. And then you will go home—"
3800 PRINT "yes, HOME, and not back to the Trail this year.'" : GOTO 4610
3810 '
3820 'Subroutine to examine weight loss
3830 CALOFF = CD - 1.03 * CAL : 'Augment diet by 3% with ice cream, etc.
3840 TS = T - TL : TL = T : 'Time (in days) of this trip segment
3850 WTLOSS = CALOFF * TS / 3500 : WTLOST = WTLOST + WTLOSS : IF WTLOSS < 1 THEN RETURN
3860 PRINT "Since the start of the trip, you have lost" INT(WTLOST) "pounds."
3870 IF WTLOST > .07 * WB THEN 3900 : 'Lost more than 7% of orig body weight?
3880 PRINT "Right now you are feeling fit as a fiddle, but remember, you"
3890 PRINT "still have a long way to go." : GOTO 3970
3900 IF WTLOST>.15 * WB THEN 3930 : 'Lost more than 15% of orig body weight?
3910 PRINT "You occasionally feel a bit lightheaded and shaky. You really"
3920 PRINT "should eat a bit more." : GOTO 3970
3930 PRINT "That's far too much weight to lose in this short period of time."
3940 IF WTLOST > .24 * WB THEN HZ(5) = 1 : DOC = 5 : GOSUB 3360 : GOTO 3970
3950 PRINT "You frequently feel lightheaded, nauseated, and sluggish. You'd"
3960 PRINT "better add to your diet…and soon!"
3970 WB = WB.WTLOSS : CD = INT(WB * 11.5 + WB * DINPT * .3 + (WB + WP) * DINPT * .21 + WB * (15 - TW) * .22)
3980 PRINT "At your current pace, you are burning" CD "calories per day."
3990 PRINT : INPUT "How many calories worth of food do you want to eat";CAL
4000 IF CD - CAL > 400 THEN PRINT "Okay, suit yourself."
4010 RETURN
4020 '
4030 'Subroutine to deal with a long period of rain
4040 IF RND(1) < .94 THEN HZ(5) = 0 : RETURN : '6% chance of heavy rain
4050 IF HZ(5) = 1 THEN HZ(5) = 0 : RETURN : 'In a dry stretch?
4060 HZ(25) = HZ(25) + 1 : TM = RAIN * 1.7 : IF HZ(25) > 4 THEN HZ(25) = 4
4070 ON HZ(25) GOTO 4080, 4130, 4150, 4180
4080 PRINT "It has been raining steadily for the past week and you are"
4090 PRINT "thoroughly soaked—your clothes, your sleeping bag, your food,"
4100 PRINT "and, yes, your spirits. What a bummer." : GOSUB 5510
4110 PRINT "If it continues for another week, you're going to have fungus"
4120 PRINT "growing on your skin." : RETURN
4130 PRINT "Good grief! More rain—torrential, blustery, miserable rain."
4140 PRINT "This is really beginning to get you down." : RETURN
4150 PRINT "Would you believe it? It is raining again. Not the pitter-patter"
4160 PRINT "of the songwriters, but steady, heavy, cold rain." : GOSUB 5510
4170 PRINT "…and more rain. Won't it ever stop?" : RETURN
4180 PRINT "Unbelievable…it is raining again…and has been for the past week.
4190 IF (RAIN = 2 OR RAIN = 3) AND D < 1900 THEN 4230 ELSE RETURN
4200 IF RAIN = 4 THEN PRINT "Okay, you resign yourself to wait it out." : RETURN
4210 PRINT "Even your cheerful attitude toward rain is taking a beating, but"
4220 PRINT "you keep slogging along, hoping for a letup." : RETURN
4230 GOSUB 5510 : PRINT : PRINT "That's it. You can't take any more. Maybe"
4240 PRINT "you'll try again next year, but that's it for now." : GOTO 4610
4250 '
4260 'Subroutine to deal with snow in New England
4270 IF T > 200 AND RND(1) > .5 THEN 4290 : '50% chance of snow after Oct 15
4280 IF RND(1) > .2 THEN RETURN : '20% chance of snow
4290 SNO = SNO + 1 : PRINT "Oh oh, New England is getting some snow…"
4300 IF SNO = 1 THEN PRINT "but you keep pushing on." : RETURN
4310 IF SNO > 2 THEN 4350 : '3 heavy snowfalls and you're out
4320 PRINT "You pushed through the last flurries but this looks"
4330 PRINT "more serious. You say to yourself, 'I've gone this"
4340 PRINT "far, I'm going to go all the way.' And on you go…" : RETURN
4350 PRINT "You made a gallant attempt to get through, but the Park"
4360 PRINT "Rangers won't let you go on. Too bad." : GOTO 4610
4370 '
4380 'Subroutine to deal with the Kennebec River
4390 KEN = 1 : PRINT : PRINT "You have arrived at the Kennebec River."
4400 INPUT "Did you make prior arrangements to get across";A$ : GOSUB 5540
4410 IF A$< >"Y" THEN 4450 ELSE RN = RND(1) : IF RN > .5 THEN 4440
4420 PRINT "Fortunately the person you called showed up to meet you with"
4430 PRINT "a canoe. You get across in jig time." : TM = .5 : GOTO 4540
4440 GOSUB 5510 : PRINT "Too bad; the guy you called didn't show up." : GOTO 4460
4450 PRINT "That wasn't very sensible. What will you do now?" : GOSUB 5510
4460 IF RND(1) > .7 THEN 4520 : '30% chance you can ford the river
4470 PRINT "The river is running very high and the logs from the sawmill are"
4480 PRINT "very dangerous. You'll have to hang around until another hiker"
4490 PRINT "(who, hopefully, has arranged for a canoe) shows up or hope that"
4500 PRINT "someone comes along." : GOSUB 5510 : TM = INT(2 + 3 * RND(1))
4510 PRINT "Finally…you're across, but it cost you" TM "days." : GOTO 4540
4520 PRINT "Fortunately the river isn't running too high and you can probably"
4530 PRINT "wade across downstream at the ford. Boy, were you lucky!" : TM = .6
4540 T = T + TM : RETURN
4550 '
4560 'Reached end of trail!
4570 PRINT "You reached the end of the trail at Baxter Peak on Mt. Katahdin!"
4580 FOR J = 1 TO 3 : GOSUB 5510 : NEXT J : CLS : FOR J = 1 TO 10
4590 BEEP : X$ = "CONGRATULATIONS!" : LOCATE 12, 1 : GOSUB 5590
4600 FOR I = 1 TO 100 : NEXT I : CLS : FOR I = 1 TO 50 : NEXT I : NEXT J : D = 2007
4610 TD = INT(T + .5) : D = INT(D) : X = (INT(.5 + 10 * D / TD)) / 10 : 'End game statistics
4620 PRINT : PRINT "It is now "; : GOSUB 5220 : PRINT "and you have been on the"
4630 PRINT "trail for" TD "days. You have covered" D "miles. Your average"
4640 PRINT "speed, considering all the delays, was ";
4650 PRINT USING "##.#";X; : PRINT " miles per day."
4660 WB = INT(WB + .5) : WL = INT(WTLOST + .5) : IF WL > 0 THEN X$ = "less" : GOTO 4680
4670 X$ = "more" : WL = -WL
4680 PRINT "You weighed" WB "pounds at the end," WL X$ " than at the start."
4690 PRINT "Nice going!"
4700 PRINT : INPUT "Would you like to try again (Y or N)"; A$ : GOSUB 5540
4710 IF A$ = "Y" THEN RUN ELSE CLS : KEY ON : END
4720 '
4730 'Names of items that can be carried
4740 DATA "Tent"
4750 DATA "Sierra Designs Divine Light, 20 sq ft, max height 34 in.", 35, 135, 214
4760 DATA "Eureka! Crescent Bike, 22 sq ft, height 43 in.", 48, 125, 353
4770 DATA "Moss Starlet, 29 sq ft; with vestibule, 37; height 39 in.", 78, 250, 334
4780 DATA "None. Use trail shelters and sleep in open.", 0, 0, 0
4790 DATA "Pack"
4800 DATA "Kelty Mountaineer external - frame with Seneca pack", 69, 139, 3975
4810 DATA "Jansport D2 external - frame pack", 99, 169, 5520
4820 DATA "Camp Trails Grey Wolf internal - frame pack, large", 82, 119, 5975
4830 DATA "Coleman Peak 1 model 680 internal - frame pack", 58, 115, 4013
4840 DATA "Sleeping bag"
4850 DATA "North Face Blue Kazoo, mummy, goose down, rated 25 deg", 34, 140, 452
4860 DATA "Slumberjack Bike Lite, mummy, Quallofil, rated 30 deg", 50, 65, 808
4870 DATA "REI 747 Wide Body, semi-rect, Quallofil, rated 30 deg", 54, 90, 1884
4880 DATA "L.L. Bean Ultra - Lite, rectangular, Quallofil, rated 35 deg", 58, 80, 804
4890 DATA "Sleeping pad/mattress"
4900 DATA "Sevylor Superlight air mattress", 32, 20, 360
4910 DATA "Therm-A-Rest self - inflating ultra-lite pad", 28, 48, 325
4920 DATA "Ensolite 1/2 in. pad", 24, 23, 300
4930 DATA "None.", 0, 0, 0
4940 DATA "Stove"
4950 DATA "MSR Whisperlite, uses white gas (available along trail)", 18, 37, 120
4960 DATA "Gaz Bleuet, fuel: butane cartridge (light and reliable)", 16, 20, 106
4970 DATA "Primus Grasshopper, fuel: propane cylinder (long life)", 22, 19, 90
4980 DATA "None (incidentally, wood fires are PROHIBITED on the trail)", 0, 0, 0
4990 DATA "Boots"
5000 DATA "Asolo Trail II S, mid-ankle leather boots", 49, 140, 0
5010 DATA "Danner Featherlight Trail, mid-ankle leather & Gore-Tex boot", 52, 95, 0
5020 DATA "Timberland Lightweight Hiker, mid-ankle fabric and Gore-Tex", 46, 50, 0
5030 DATA "Raichle Montagnas, full-height leather boots", 80, 125, 0
5040 DATA "Raingear"
5050 DATA "Early Winters Ultralight Gore-Tex rain parka" 13, 145, 25
5060 DATA "Patagonia featherweight Gore-Tex shell" 7, 58, 15
5070 DATA "Campmor nylon poncho", 16, 25, 22
5080 DATA "None.", 0, 0, 0
5090 '
5100 FOR I = 1 TO 21 : READ DLC(I), LC$(I) : NEXT I : RETURN
5110 DATA 79, "Bly Gap, GA", 165, "Doe Knob, NC", 302, "Big Bald Mt., NC"
5120 DATA 384, "Wilbur Lake, TN", 483, "Big Walker Lookout, VA", 602, "Tinker Mt., VA"
5130 DATA 698, "Salt Log Gap, VA", 800, "Fishers Gap, VA", 889, "Potomac River, WV"
5140 DATA 966, "Piney Mt., PA", 1099, "Baer Rocks, PA", 1190, "High Point, NC"
5150 DATA 1272, "Shenandoah Mt., NY", 1361, "Sages Ravine, CT", 1435
5160 DATA "Mt. Greylock, MA", 1554, "Killington, VT", 1687, "Mt. Washington, NH"
5170 DATA 1776, "Bemis Pond, ME", 1855, "Kennebec River, ME", 1922
5180 DATA "Chairback Mt., ME", 1992, "Penobscot West Branch, ME"
5190 '
5200 'Subroutine to print the date
5210 IF TT = TD THEN RETURN : 'Printed this date already?
5220 IF TD < 31 THEN 5250 ELSE IF TD < 62 THEN 5260 ELSE IF TD < 90 THEN 5270
5230 IF TD < 121 THEN 5280 ELSE IF TD < 152 THEN 5290 ELSE IF TD < 182 THEN 5300
5240 IF TD < 213 THEN 5310 ELSE IF TD < 225 THEN 5320 ELSE GOTO 5340
5250 MO$ = "April" : MD = TD : GOTO 5330
5260 MO$ = "May" : MD = TD - 30 : GOTO 5330
5270 MO$ = "June" : MD = TD - 61 : GOTO 5330
5280 MO$ = "July" : MD = TD - 89 : GOTO 5330
5290 MO$ = "August" : MD = TD - 120 : GOTO 5330
5300 MO$ = "September" : MD = TD - 151 : GOTO 5330
5310 MO$ = "October" : MD = TD - 181 : GOTO 5330
5320 MO$ = "November" : MD = TD - 212
5330 PRINT MO$; MD; : TT = TD : RETURN
5340 PRINT : PRINT "It's November 12 and all the New England states are covered"
5350 PRINT "with snow. You have no chance of finishing the trail. Better"
5360 PRINT "luck next year. You have been out on the"
5370 TD = INT(T + .5) : D = INT(D) : X = (INT(.5 + 10 * D / TD)) / 10 : GOTO 4630
5380 '
5390 'Subroutine to temporarily break execution
5400 PRINT : X$ = "Press any key to continue" : GOSUB 5590
5410 WHILE LEN(INKEY$) = 0 : WEND : PRINT : RETURN
5420 '
5430 'Subroutine to print weights by pounds and ounces
5440 WTPND = INT(WEIGHT / 16) : WTOZ = WEIGHT - 16 * WTPND
5450 IF WTPND > 1 THEN PRINT WTPND "pounds"; : GOTO 5470
5460 IF WTPND = 1 THEN PRINT " 1 pound"; : GOTO 5470
5470 IF WTOZ > 1 THEN PRINT WTOZ "ounces"; : RETURN
5480 IF WTOZ = 1 THEN PRINT " 1 ounce";
5490 RETURN
5500 '
5510 'Subroutine to make a short pause
5520 FOR I = 1 TO 900 : NEXT I : RETURN
5530 '
5540 'Subroutine to extract the first letter of an input answer
5550 IF A$ = "" THEN A$ = "Y" : RETURN
5560 A$ = LEFT$(A$, 1) : IF A$ >= "A" AND A$ <= "Z" THEN RETURN
5570 A$ = CHR$(ASC(A$) - 32) : RETURN
5580 '
5590 'Subroutine to print centered lines
5600 PRINT TAB((70 - LEN(X$)) / 2) X$; : RETURN
5610 '
5620 'Subroutine to print the instructions
5630 X$ = "Appalachian Trail" : GOSUB 5590 : PRINT : PRINT
5640 PRINT " You are a hiker whose goal is to walk the entire 2007 miles of"
5650 PRINT "the Appalachian Trail from Springer Mt., GA, to Mt. Katahdin, Maine."
5660 PRINT "You set out in April as soon as the Smokies are clear of snow, and"
5670 PRINT "you must reach the northern terminus before it is blocked by snow."
5680 PRINT " Your hike is divided into three-day segments. Along the way,"
5690 PRINT "you encounter natural hazards, difficulties with your equipment,"
5700 PRINT "and physical problems."
5710 PRINT " Careful planning for your hike is very important. In deciding"
5720 PRINT "what to pack, you have to make trade-offs—generally between weight"
5730 PRINT "and comfort. Of course, everything must fit in your pack."
5740 PRINT " You must decide how you will obtain food along the route, how"
5750 PRINT "much to eat in each food group, and how many calories to replenish."
5760 PRINT " You must decide at what pace you will walk, and how long to"
5770 PRINT "hike each day. Of course, a faster pace will cover mileage more"
5780 PRINT "quickly than a slower one, but it is much harder on your body."
5790 PRINT " You don't have many choices when dealing with mishaps. It is"
5800 PRINT "assumed that you are a sensible hiker, make repairs when necessary,"
5810 PRINT "replace things that wear out, and see a doctor if you get sick."
5820 PRINT "Nevertheless, mishaps cost you time, of which you have little to"
5830 PRINT "spare as you take another of the five million steps towards Maine."
5840 PRINT : X$ = "Press any key when you're ready to go." : GOSUB 5590 : RETURN
Return to Table of Contents | Previous Section | Next Section