Digital Archaeology: Recovered TI BASIC "Recipes" Program for the TI-99/4A Home Computer
Some time ago I digitized a couple of audio cassettes from my childhood containing programs for the old Texas Instruments TI-99/4A home computer system. The TI-99/4A was my first computer, and I have such fond memories of writing my own programs in TI BASIC, Texas Instrument’s variant of the then-ubiquitous BASIC programming language. I uploaded the audio recordings of the unknown programs to my personal YouTube channel (Zachary Fruhling’s YouTube Channel) in hope that eventually the programs themselves could be recovered—short of obtaining a vintage TI-99/4A system and a cassette recorder, and loading up the programs the old-fashioned way.
Thanks to an anonymous benefactor known only to me as "cas,” who was able to recover the source code for these mysterious TI BASIC programs from the audio files, I was able to recover an old Recipes program that my dad, George A. Fruhling, had programmed for my mom in the early 1980s (likely around 1982 or 1983). I was able to load up the program in the Classic99 emulator—the existence of which I am ever grateful for!—and I created the following video of the program for anyone interested. The program is not complete, unfortunately, but it is an interesting window into the era when the purchase of a home computer was often justified by the possibility of storing and retrieving one's family recipes electronically—something that we now take for granted, of course.
It was such a lovely surprise to see this recipe program my dad made for my mom, sometime before they divorced when I was five years old. And while the program is incomplete, I discovered a number of ideas for recipes that have fallen out of use in my family’s culinary history (e.g., the ultimate cheesecake, oriental casserole, etc.) to ask my mother about in an attempt to recover or recreate. Not surprisingly, however, there were some family recipe staples that were mentioned in the program and that are still in use to this day (e.g., Swedish pancakes, fruit cobbler, etc.).
What can one say about this except to note, as French philosopher Michel Foucault might have drawn attention to, that some branches on the tree of knowledge—culinary knowledge, technical knowledge, or otherwise—end up on the cutting room floor of history? Perhaps it’s even because of Foucault’s work, and his epistemic notion of archaeology (as distinct from the discipline more commonly referred to as “archaeology”—see The Archaeology of Knowledge by Michel Foucault) that I am interested in what I now refer to as “digital archaeology” in the first place. Through some digital sleuthing, digging, and tenacity, it is possible to recover lost cultural and epistemic artifacts that shed light on these lost branches from the tree of our cultural, epistemic, or (in this case) technological history.
In the not-too-distant future, some decades hence, there will be no one alive to remember the fact that one had to justify to one’s spouse the purchase of a personal computer in the first place—much less as a means to store one’s family recipes. Although some devices, like the Honeywell Kitchen Computer, were never to be, I am pleased to recover an actual piece of man-on-the-street computer history revealing how early personal computers were used—or envisioned to be used—whether in practice or as a piece of economic sleight of hand to justify shelling out a few hundreds or thousands of dollars for a machine that didn’t have an obvious practical application for the everyday American in the late 1970s and early 1980s.
Lest we forget, however, that we now literally carry around pocket-sized computers in our own pockets, and in a nod to this culinary archaeological branch of computer history, just last week I whipped out my iPhone and looked up an important family recipe—a cream cheese “salmon loaf” recipe, in this case, which didn’t make an appearance in my dad’s Recipes program for whatever reason. Although we now may snicker a bit at justifying the purchase of a personal computer for the questionable purpose of storing and retrieving family recipes as hopelessly regressive, arguably a lingering vestige of 1950s sexual politics, even into the ostensibly progressive era of 1970s second-wave feminism, perhaps those early “computers in the kitchen” advocates were on to something after all, if popular online culinary/recipe websites have anything to say about it!
In fact, I’ve thought about adding a Recipes section to my own website—stay tuned—proof positive perhaps that the culinary and technological apple doesn’t fall far from the proverbial tree!
For Further Reading:
Beginner’s BASIC for the Texas Instruments TI-99/4A Home Computer
When Americans Dreamed of Kitchen Computers by Alex Ketchum (Atlas Obscura)
Digital Archaeology: Recovered TI Basic Programs for the Texas Instruments TI-99/4A Home Computer
Source Code for Recipes:
For those who are interested, here is the (incomplete) TI BASIC source code for Recipes, exactly as it was recovered from the audio cassette tape on which it had been saved:
1 CALL CLEAR
2 CALL SCREEN ( 14 )
4 PRINT "THIS IS A PROGRAM OF SUZANNE FRUHLING'S RECIPES." : : : : : : : : : :
6 CALL SOUND ( 2000 , 30000 , 30 )
8 CALL SOUND ( 2000 , 30000 , 30 )
10 CALL CLEAR
12 PRINT "SUZANNE, PRESS 1 TO CONTINUE." : : : : : : : : : :
13 CALL SOUND ( 2000 , 30000 , 30 )
14 PRINT "OTHERS, PRESS SOME OTHER NUMBER TO CONTINUE." : : : : :
16 INPUT A
18 IF A = 1 THEN 35
20 CALL CLEAR
22 CALL SCREEN ( 6 )
24 PRINT "HELLO, I AM PLEASED TO SHOW YOU SUZANNE'S RECIPES. PLEASE ENTER YOUR NAME TO CONTINUE." : : : : : :
26 INPUT A$
28 CALL CLEAR
30 PRINT "WELL " ; A$ ; "," ; "GET READY FOR SOME DELICIOUS IDEAS." : : : : : : : : : :
31 CALL SOUND ( 2000 , 30000 , 30 )
32 CALL SOUND ( 2000 , 30000 , 30 )
33 CALL SOUND ( 2000 , 30000 , 30 )
34 GO TO 100
35 CALL CLEAR
36 CALL SCREEN ( 13 )
38 A$ = "SUZANNE"
40 PRINT "HI " ; A$ ; "," ; " LET ME REMIND YOU THAT YOUR RECIPES ARE SCRUMPTIOUS!" : : : : : : : : : :
42 PRINT
44 CALL SOUND ( 2000 , 30000 , 30 )
46 CALL SOUND ( 2000 , 30000 , 30 )
48 PRINT TAB ( 7 ) ; "HERE THEY ARE:" : : : : : : :
50 CALL SOUND ( 2000 , 30000 , 30 )
52 CALL SOUND ( 2000 , 30000 , 30 )
100 CALL CLEAR
102 CALL SCREEN ( 14 )
104 PRINT "RECIPES (MAIN SECTIONS)"
105 PRINT
106 PRINT "1. BEVERAGES"
107 PRINT
108 PRINT "2. BREADS"
109 PRINT
110 PRINT "3. BREAKFAST ITEMS"
111 PRINT
112 PRINT "4. DESSERTS"
113 PRINT
114 PRINT "5. LUNCHES"
115 PRINT
116 PRINT "6. MAIN DISHES"
117 PRINT
118 PRINT "7. SALADS"
119 PRINT
120 PRINT "8. SAUCES"
121 PRINT
122 PRINT "9. SOUPS"
123 PRINT
124 PRINT "10. VEGETABLES"
125 PRINT
145 INPUT "PLEASE ENTER DESIRED NUMBER. " : B
150 IF ( B < 1 ) + ( B > 10 ) THEN 100
155 ON B GO TO 200, 250, 300, 350, 400, 450, 500, 550, 600, 650
195 GO TO 100
200 CALL CLEAR
202 PRINT " BEVERAGES"
204 PRINT
206 PRINT "1. CHARLIE'S DRINKS"
208 PRINT : : : : : : : : : : : :
216 INPUT "PLEASE ENTER DESIRED NUMBER. " : C
218 IF ( C < 1 ) + ( C > 1 ) THEN 200
220 ON C GO TO 2000
250 CALL CLEAR
252 PRINT " BREADS"
253 PRINT
254 PRINT "1. BANANA BREAD"
255 PRINT
256 PRINT "2. DATE NUT BREAD"
257 PRINT
258 PRINT "3. NUT TREE BREAD"
259 PRINT
260 PRINT "4. GRANOLA"
261 PRINT : : : : : : : :
266 INPUT "PLEASE ENTER DESIRED NUMBER. " : D
268 IF ( D < 1 ) + ( D > 4 ) THEN 250
270 ON D GO TO 2500, 2550, 2600, 2650
300 CALL CLEAR
302 PRINT " BREAKFAST ITEMS"
303 PRINT
304 PRINT "1. SWEEDISH PANCAKES"
305 PRINT : : : : : : : : : :
316 INPUT "PLEASE ENTER DESIRED NUMBER. " : E
318 IF ( E < 1 ) + ( E > 1 ) THEN 300
320 ON E GO TO 3000
350 CALL CLEAR
352 PRINT " DESSERTS"
353 PRINT
354 PRINT "1. CAKES"
355 PRINT
356 PRINT "2. CANDIES"
357 PRINT
358 PRINT "3. COBBLERS"
359 PRINT
360 PRINT "4. COOKIES"
361 PRINT
362 PRINT "5. FROSTINGS"
363 PRINT
364 PRINT "6. ICE CREAM"
365 PRINT
366 PRINT "7. OTHER/MISC."
367 PRINT
368 PRINT "8. PIES"
369 PRINT
370 PRINT "9. PUDDINGS"
371 PRINT :
372 INPUT "PLEASE ENTER DESIRED NUMBER. " : F
373 IF ( F < 1 ) + ( F > 9 ) THEN 350
374 ON F GO TO 1000, 1030, 1060, 1090, 1120, 1150, 1180, 1210, 1240
400 CALL CLEAR
402 PRINT " LUNCHES"
403 PRINT
404 PRINT "1. MUSHROOM CHEESE TART"
405 PRINT
406 PRINT "2. TUNA BURGERS"
416 INPUT "PLEASE ENTER DESIRED NUMBER. " : G
418 IF ( G < 1 ) + ( G > 2 ) THEN 400
420 ON G GO TO 3500, 3550
450 CALL CLEAR
452 PRINT " MAIN DISHES"
453 PRINT
454 PRINT "1. BEEF"
455 PRINT
456 PRINT "2. CASSEROLES"
457 PRINT
458 PRINT "3. FISH"
459 PRINT
460 PRINT "4. OTHER/MISC."
461 PRINT
462 PRINT "5. PORK/HAM"
463 PRINT
464 PRINT "6. POULTRY"
465 PRINT
466 PRINT "7. STEWS"
467 PRINT : : :
469 INPUT "PLEASE ENTER DESIRED NUMBER. " : H
470 IF ( H < 1 ) + ( H > 7 ) THEN 450
472 ON H GO TO 1400, 1430, 1460, 1490, 1520, 1550, 1580
500 CALL CLEAR
502 PRINT " SALADS"
503 PRINT
504 PRINT "1. BEAN"
505 PRINT
506 PRINT "2. FRUIT"
507 PRINT
508 PRINT "3. JELLO"
509 PRINT
510 PRINT "4. LETTUCE/CABBAGE"
511 PRINT
512 PRINT "5. OTHER/MISC."
513 PRINT : : : : :
516 INPUT "PLEASE ENTER DESIRED NUMBER. " : I
518 IF ( I < 1 ) + ( I > 5 ) THEN 500
520 ON I GO TO 1700, 1730, 1760, 1790, 1820
550 CALL CLEAR
552 PRINT " SAUCES"
553 PRINT
554 PRINT "1. B.B.Q. SAUCE"
555 PRINT
556 PRINT "2. CHINESE B.B.Q. SAUCE"
557 PRINT
558 PRINT "3. FISH SAUCE"
559 PRINT
560 PRINT "4. RAISIN SAUCE"
561 PRINT : : : : : : :
566 INPUT "PLEASE ENTER DESIRED NUMBER. " : J
568 IF ( J < 1 ) + ( J > 4 ) THEN 550
570 ON J GO TO 4000, 4050, 4100, 4150
600 CALL CLEAR
602 PRINT " SOUPS"
603 PRINT
604 PRINT "1. HARVEST SALMON CHOWDER"
605 PRINT : : : : : : : : : : : : :
616 INPUT "PLEASE ENTER DESIRED NUMBER. " : K
618 IF ( K < 1 ) + ( K > 1 ) THEN 600
620 ON K GO TO 4500
650 CALL CLEAR
652 PRINT " VEGETABLES"
653 PRINT
654 PRINT "1. CREAMED SPINACH"
655 PRINT : : : : : : : : : : : :
666 INPUT "PLEASE ENTER DESIRED NUMBER. " : L
668 IF ( L < 1 ) + ( L > 1 ) THEN 650
670 ON L GO TO 5000
1000 CALL CLEAR
1002 PRINT " CAKES"
1003 PRINT
1004 PRINT "1. CARROT CAKE"
1005 PRINT
1006 PRINT "2. CHARLIE'S CHEESE CAKE"
1007 PRINT
1008 PRINT "3. COCONUT CAKE"
1009 PRINT
1010 PRINT "4. EASY LEMON CAKE"
1011 PRINT
1012 PRINT "5. RAW APPLE CAKE"
1013 PRINT
1014 PRINT "6. ROCKY ROAD CAKE"
1015 PRINT
1016 PRINT "7. RUM CAKE"
1017 PRINT
1018 PRINT "8. THE ULTIMATE CHEESE CAKE"
1019 PRINT : :
1020 INPUT "PLEASE ENTER DESIRED NUMBER. " : AA
1021 IF ( AA < 1 ) + ( AA > 8 ) THEN 1000
1022 ON AA GO TO 5500, 5550, 5600, 5650, 5700, 5750, 5800, 5850
1030 CALL CLEAR
1032 PRINT " CANDIES"
1033 PRINT
1034 PRINT "1. DATE SWIRLS"
1035 PRINT
1036 PRINT "2. SPICED NUTS"
1037 PRINT : : : : : : : : : : :
1046 INPUT "PLEASE ENTER DESIRED NUMBER. " : BB
1048 IF ( BB < 1 ) + ( BB > 2 ) THEN 1030
1050 ON BB GO TO 6000, 6050
1060 CALL CLEAR
1062 PRINT " COBBLERS"
1063 PRINT
1064 PRINT "1. FRUIT COBBLER"
1065 PRINT : : : : : : : : : : : : : :
1076 INPUT "PLEASE ENTER DESIRED NUMBER. " : CC
1078 IF ( CC < 1 ) + ( CC > 1 ) THEN 1060
1080 ON CC GO TO 6600
1090 CALL CLEAR
1092 PRINT " COOKIES"
1093 PRINT
1094 PRINT "1. CARNIVAL COOKIES"
1095 PRINT
1096 PRINT "2. PEANUT BUTTER COOKIES"
1097 PRINT
1098 PRINT "3. SNICKER DOODLES"
1099 PRINT
1100 PRINT "4. SUGAR COOKIES"
1101 PRINT : : : : : : :
1106 INPUT "PLEASE ENTER DESIRED NUMBER. " : DD
1108 IF ( DD < 1 ) + ( DD > 4 ) THEN 1090
1110 ON DD GO TO 7000, 7050, 7100, 7150
1120 CALL CLEAR
1122 PRINT " FROSTINGS"
1123 PRINT
1124 PRINT "1. CREAM CHEESE FROSTING"
1125 PRINT
1126 PRINT "2. STRAWBERRY FROSTING"
1127 PRINT : : : : : : : : : : :
1136 INPUT "PLEASE ENTER DESIRED NUMBER. " : EE
1138 IF ( EE < 1 ) + ( EE > 2 ) THEN 1120
1140 ON EE GO TO 7500, 7550
1150 CALL CLEAR
1152 PRINT " ICE CREAM"
1153 PRINT
1154 PRINT "1. VANILLA ICE CREAM"
1155 PRINT : : : : : : : : : : : : :
1166 INPUT "PLEASE ENTER DESIRED NUMBER. " : FF
1168 IF ( FF < 1 ) + ( FF > 1 ) THEN 1150
1170 ON FF GO TO 7750
1180 CALL CLEAR
1182 PRINT " OTHER/MISC."
1183 PRINT
1184 PRINT "1. APPLE CRISP"
1185 PRINT
1186 PRINT "2. VANILLA MOOSE"
1187 PRINT : : : : : : : : : : :
1196 INPUT "PLEASE ENTER DESIRED NUMBER. " : GG
1198 IF ( GG < 1 ) + ( GG > 2 ) THEN 1180
1200 ON GG GO TO 8000, 8050
1210 CALL CLEAR
1212 PRINT " PIES"
1213 PRINT
1214 PRINT "1. LEMON MERINGUE"
1215 PRINT
1216 PRINT "2. STRAWBERRY"
1217 PRINT : : : : : : : : : : :
1226 INPUT "PLEASE ENTER DESIRED NUMBER. " : HH
1228 IF ( HH < 1 ) + ( HH > 2 ) THEN 1210
1230 ON HH GO TO 8250, 8300
1240 CALL CLEAR
1242 PRINT " PUDDINGS"
1243 PRINT
1244 PRINT "1. BAKED CARAMEL PUDDING"
1245 PRINT : : : : : : : : : : : : :
1256 INPUT "PLEASE ENTER DESIRED NUMBER. " : II
1258 IF ( II < 1 ) + ( II > 1 ) THEN 1240
1260 ON II GO TO 8500
1400 CALL CLEAR
1402 PRINT " BEEF"
1403 PRINT
1404 PRINT "1. BEEF STROGANOFF"
1405 PRINT : : : : : : : : : : : : :
1416 INPUT "PLEASE ENTER DESIRED NUMBER. " : JJ
1418 IF ( JJ < 1 ) + ( JJ > 1 ) THEN 1400
1420 ON JJ GO TO 8750
1430 CALL CLEAR
1432 PRINT " CASSEROLES"
1433 PRINT
1434 PRINT "1. CHILE RELLENOS"
1435 PRINT
1436 PRINT "2. IMPOSSIBLE QUICHE"
1437 PRINT
1438 PRINT "3. LASGNE"
1439 PRINT
1440 PRINT "4. ORIENTAL CASSEROLE"
1441 PRINT : : : : : : :
1446 INPUT "PLEASE ENTER DESIRED NUMBER. " : KK
1448 IF ( KK < 1 ) + ( KK > 4 ) THEN 1430
1450 ON KK GO TO 9000, 9050, 9100, 9150
1460 CALL CLEAR
1462 PRINT " FISH"
1463 PRINT
1464 PRINT "1. TUNA FLOENTINE"
1465 PRINT : : : : : : : : : : : : :
1476 INPUT "PLEASE ENTER DESIRED NUMBER. " : LL
1477 IF ( LL < 1 ) + ( LL > 1 ) THEN 1460
1478 ON LL GO TO 9500
1490 CALL CLEAR
1492 PRINT " OTHER/MISC."
1493 PRINT
1494 PRINT "1. NO ENTRIES AT THIS TIME (RESERVED LINE 9750)"
1495 PRINT : : : : : : : : : : : :
1506 CALL SOUND ( 2000 , 30000 , 30 )
1508 CALL SOUND ( 2000 , 30000 , 30 )
1510 GO TO 450
1520 CALL CLEAR
1522 PRINT " PORK/HAM"
1523 PRINT
1524 PRINT "1. PORK CHOPS"
1525 PRINT
1526 PRINT "2. SCALLOPED HAM AND POTATOES"
1527 PRINT : : : : : : : : : : :
1536 INPUT "PLEASE ENTER DESIRED NUMBER. " : NN
1538 IF ( NN < 1 ) + ( NN > 2 ) THEN 1520
1540 ON NN GO TO 10000, 10050
1550 CALL CLEAR
1552 PRINT " POULTRY"
1553 PRINT
1554 PRINT "1. ALPINE CHICKEN"
1555 PRINT
1556 PRINT "2. CHICKEN ALMOND"
1557 PRINT : : : : : : : : : : :
1566 INPUT "PLEASE ENTER DESIRED NUMBER. " : OO
1568 IF ( OO < 1 ) + ( OO > 2 ) THEN 1550
1570 ON OO GO TO 10250, 10300
1580 CALL CLEAR
1582 PRINT " STEWS"
1583 PRINT
1584 PRINT "1. GOLDEN CHICKEN STEW"
1585 PRINT : : : : : : : : : : : : :
1596 INPUT "PLEASE ENTER DESIRED NUMBER. " : PP
1598 IF ( PP < 1 ) + ( PP > 1 ) THEN 1580
1600 ON PP GO TO 10500
1700 CALL CLEAR
1702 PRINT " BEAN SALADS"
1703 PRINT
1704 PRINT "1. BEAN SALAD"
1705 PRINT : : : : : : : : : : : : :
1716 INPUT "PLEASE ENTER DESIRED NUMBER. " : QQ
1718 IF ( QQ < 1 ) + ( QQ > 1 ) THEN 1700
1720 ON QQ GO TO 11000
1730 CALL CLEAR
1732 PRINT " FRUIT SALADS"
1733 PRINT
1734 PRINT "1. SOUR CREAM SALAD"
1735 PRINT : : : : : : : : : : : : :
1746 INPUT "PLEASE ENTER DESIRED NUMMBER. " : RR
1748 IF ( RR < 1 ) + ( RR > 1 ) THEN 1730
1750 ON RR GO TO 11250
1760 CALL CLEAR
1762 PRINT " JELLO SALADS"
1763 PRINT
1764 PRINT "1. CRANBERRY CREAM SALAD"
1765 PRINT
1766 PRINT "2. ORANGE JELLO SALAD"
1767 PRINT
1768 PRINT "3. PEACH JELLO"
1769 PRINT
1770 PRINT "4. STRAWBERRY JELLO"
1771 PRINT : : : : :
1776 INPUT "PLEASE ENTER DESIRED NUMBER. " : SS
1778 IF ( SS < 1 ) + ( SS > 4 ) THEN 1760
1780 ON SS GO TO 11500, 11550, 11600, 11650
1790 CALL CLEAR
1792 PRINT " LETTUCE/CABBAGE SALADS"
1793 PRINT
1794 PRINT "1. CHARLIE'S COLE SLAW"
1795 PRINT : : : : : : : : : : : : :
1806 INPUT "PLEASE ENTER DESIRED NUMBER. " : TT
1808 IF ( TT < 1 ) + ( TT > 1 ) THEN 1790
1810 ON TT GO TO 11750
1820 CALL CLEAR
1822 PRINT " OTHER/MISC. SALADS"
1823 PRINT
1824 PRINT "1. ANTIPASTO RELISH SALAD"
1825 PRINT : : : : : : : : : : : : :
1836 INPUT "PLEASE ENTER DESIRED NUMBER. " : UU
1838 IF ( UU < 1 ) + ( UU > 1 ) THEN 1820
1840 ON UU GO TO 12000