Digital Archaeology: Recovered TI BASIC "Recipes" Program for the TI-99/4A Home Computer

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:

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

Golden Mountain: Putting David Hume's Empiricism to the Test with the Midjourney AI Text-to-Image Generator (and Vice Versa!)

Golden Mountain: Putting David Hume's Empiricism to the Test with the Midjourney AI Text-to-Image Generator (and Vice Versa!)

A Tribute to Ralph Jones (KA6FDI / AA6GM): Silent Key, Mentor, Elmer, and Friend

A Tribute to Ralph Jones (KA6FDI / AA6GM): Silent Key, Mentor, Elmer, and Friend