This program is a humorous Texas-themed pecan recipe collection that presents five menu options: Pecan Pie, Pecan Pralines, Pecan Brittle, a comedic “Pecan Diet Loaf,” and a satirical calorie-counting entry. Navigation is driven by a single-character INPUT multiplied by 100 to jump directly to recipe subroutines via GO TO 100*C. The “Diet Loaf” section (line 8000) defines a 6-character UDG set by POKEing 8 bytes each into addresses 65368–65415, then renders a two-row, three-character wide graphic of a pecan using those UDGs alongside semicircular PLOT arcs drawn with a trigonometric FOR loop. A companion SCREEN$ file (“SQUATIMSCR”) is loaded at startup as a title screen, and the program includes SAVE lines at line 9998–9999 to re-save both the program and the screen file.
Program Analysis
Program Structure
The program is organized into clearly separated blocks, each handling a distinct function:
- Lines 10–35: Initialization — loads a SCREEN$ file, sets caps lock via
POKE 23658,8, and displays a humorous intro sequence. - Lines 40–55: Main menu — displays five options and routes execution using the
GO TO 100*Ccomputed jump idiom. - Lines 100–199: Pecan Pie recipe.
- Lines 200–299: Pecan Pralines recipe.
- Lines 300–399: Pecan Brittle recipe.
- Lines 400–410: Pecan Diet Loaf (comedic entry, calls UDG subroutine at line 8000).
- Lines 500–505: “Pecan Preachments” — a calorie-counting joke, ends with
STOP. - Lines 8000–8200: UDG definition and graphical display subroutine for the Diet Loaf.
- Lines 9990–9995: Shared “Copy or Return” subroutine, called by each recipe.
- Lines 9997–9999: Save/maintenance utilities.
Menu Navigation Technique
The menu dispatch at line 55 uses a well-known BASIC idiom: LET C=VAL C$: GO TO 100*C. This multiplies the user’s numeric choice (1–5) by 100, jumping directly to lines 100, 200, 300, 400, or 500 without a chain of IF statements. Input validation is minimal — an empty string is caught at line 50 and loops back, but non-numeric or out-of-range input would cause an error.
UDG Definition and Pecan Graphic
Lines 8000–8026 define a 2×3 grid of User Defined Graphics representing a stylized pecan for the Diet Loaf gag. Six UDGs (\a through \f) are loaded by POKEing 8 bytes each into addresses 65368–65415. The DATA statements provide the bitmap patterns. The UDGs are then rendered in a 2-row, 3-column arrangement at line 8110:
- Top row:
PRINT AT 19,14;"\a\b\c" - Bottom row:
PRINT AT 20,14;"\d\e\f"
The graphic is displayed with FLASH 1 and PAPER 6 for comedic emphasis before being reset.
Trigonometric Arc Drawing
Lines 8120 and 8130 draw two concentric semicircles using PLOT inside FOR loops over V = 0 TO PI STEP PI/90, producing 90-step arcs. The outer arc uses radius 127 and the inner arc radius 105, both centered at x=127, y=0, creating a “half-disc” outline at the bottom of the screen to frame the UDG pecan graphic. This is a straightforward parametric circle technique common in BASIC graphics programming.
Key BASIC Idioms
| Line(s) | Idiom | Purpose |
|---|---|---|
| 50 | IF C$="" THEN GO TO 45 | Guards against empty INPUT before VAL conversion |
| 55 | GO TO 100*C | Computed branch replacing IF/THEN chain |
| 8002–8012 | Sequential FOR/READ/POKE loops | Loads UDG bitmaps from DATA statements |
| 9993 | IF R$="C" THEN COPY | Conditional printer copy of recipe on screen |
Notable Anomalies and Observations
- Line 505 ends menu option 5 (“Pecan Preachments”) with
STOPrather than calling theGO SUB 9990copy/return subroutine used by the other recipes. This means the program halts after viewing that entry rather than offering a return to menu. - Line 9997 contains a bare
STOPthat is unreachable during normal program flow but serves as a safety barrier before the SAVE utilities at lines 9998–9999. - Line 15 uses
POKE 23658,8to force caps-lock mode, ensuring uppercase input matching for theIF R$="C"check at line 9993. - The apostrophe in
GRANDMA'Sat line 203 appears as a literal character inside the string, which is valid since it is not a quote character. - The
RESTOREat line 8000 resets the DATA pointer before the UDG loading loops, ensuring the correct DATA values are read even if the subroutine were called more than once.
Content
Source Code
10 PRINT "LOADING": BORDER 2: LOAD "SQUATIMSCR"SCREEN$
15 POKE 23658,8
20 PAUSE 280: CLS : PRINT AT 5,4;"THESE recipes do NOT begin.."
25 PRINT AT 10,4; INK 3;"Steal one chicken"; INK 0;AT 15,4;"THESE are TEXAS recipes": PAUSE 340: CLS
30 PRINT AT 10,5; INK 2;"RUSTLE 3 LBS. PECANS": PAUSE 160: PRINT AT 19,0;"Just tidying up under the tree.": INK 9
35 PAUSE 280
40 CLS : PRINT AT 2,14;"MENU";''"1. PECAN PIE";''"2. PECAN PRALINES";''"3. PECAN BRITTLE";''"4. PECAN DIET LOAF";''"5. PECAN PREACHMENTS"
45 INPUT ''"CHOOSE BY NUMBER ";C$
50 IF C$="" THEN GO TO 45
55 LET C=VAL C$: GO TO 100*C
100 CLS : REM PECAN PIE RECIPE
101 PRINT '"EASY BUT EXPENSIVE PECAN PIE----BEST YOU OWN A GUNNY SACK"
105 PRINT '"1+1/8 C. SUGAR";'"1/4 C. BUTTER OR MARGARINE";'"1/2 C. WHITE OR DARK KARO SYRUP";'"3 EGGS WELL-BEATEN";'"1 C. PECANS"
108 PRINT '"MOST TEXANS PREFER THE DARK KARO"
110 PRINT '"IF USING BOUGHT PIE CRUST, PAN WILL BE SMALL SO USE 4 EGGS & 2 C. PECANS & MAKE 2 PIES."
115 PRINT '"BRING SUGAR, SYRUP, & BUTTER TO BOIL IN SAUCEPAN. COOL WELL. BEAT EGGS & ADD TO MIXTURE; BEATAGAIN; ADD PECANS; POUR INTO UN-BAKED PIE SHELLS & BAKE FOR 50' AT 350 DEGREES. COOL & SLICE."
198 GO SUB 9990
199 GO TO 40
200 CLS : REM PECAN PRALINE RECIPE
201 PRINT '"PECAN PRALINES--BEST YOU OWN A CANDY THERMOMETER"
203 PRINT '"FORGET GRANDMA'S IRON SKILLET FOR CARMELIZING SUGAR--BAKING SODA IS CATALYST."
205 PRINT '"2+1/3 C. SUGAR";'"1/8 tspn. BAKING SODA";'"1/3 C. WHITE KARO SYRUP";'"3/4 C. EVAP. MILK";'"1 tspn. VANILLA 3 C. PECANS"
210 PRINT '"BOIL SUGAR, SYRUP, SODA, & MILK IN MED. SAUCEPAN. STIR CONSTANT-LY TILL 238 DEGREES. OFF STOVE, STIR IN VANILLA & PECANS. DROP BY SPOONFUL ONTO WAXED PAPER. LET STAND TILL FIRM---3-4 HRS. STORE IN COVERED CONTAINER."
298 GO SUB 9990
299 GO TO 40
300 CLS : REM PECAN BRITTLE
302 PRINT "PECAN BRITTLE--BEST BRITTLE BY FAR"
304 PRINT '"2 C. PECANS";'"2 C. SUGAR";'"1/2 C. HOT WATER";'"1 C. WHITE KARO";'"2 tspn.SODA"
306 PRINT '"BRING TO BOIL ALL INGREDIENTS EXCEPT SODA. TURN HEAT TO MED. &CONTINUE TO BOIL 25-30 MIN. STIROCCASIONALLY. SYRUP MUST BE DARK& THICK--238 DEGREES. OFF HEAT ADD SODA QUICKLY TO MIX. ZIPPILYPOUR ONTO BUTTERED COOKIE SHEET.COOL. HARDENS QUICKLY."
398 GO SUB 9990
399 GO TO 40
400 CLS : REM PECAN DIET LOAF
401 PRINT '"PECAN DIET LOAF--BEST YOU CAN DOON PENANCE DAYS"
402 PRINT ''"TAKE 1 PECAN-HALF, SHELLED, ROOMTEMPERATURE. PLACE FLAT SIDE DOWN ON CHOPPING BOARD. WITH SHARP KNIFE SLICE CROSSWISE TO THE LENGTH OF PECAN-HALF AS YOU WOULD SLICE A MEATLOAF. SLICE THINLY ACROSS THE GRAIN. PLACE ON UNBUTTERED PLATTER. YOU MAY HAVE PORTIONS ALL DURING THE DAYTILL ENTIRE DIET LOAF IS CON- SUMED. TWEEZERS ARE PERMITTED."
408 PAUSE 1500: GO SUB 8000
410 FLASH 0: GO TO 40
500 CLS : PRINT '" Calorie countS for pecan pie, pralines, & brittle are unknown.";''" I don't WANT to know."
503 PAUSE 360: PRINT AT 10,5;"IF YOU COUNT CALORIES,";AT 14,5;"COUNT TO YOURSELF!"
505 STOP
8000 CLS : RESTORE : REM 6-PART UDG OF PECAN DIET LOAF
8002 FOR a=65368 TO 65375: READ n: POKE a,n: NEXT a
8004 FOR b=65376 TO 65383: READ n: POKE b,n: NEXT b
8006 FOR c=65384 TO 65391: READ n: POKE c,n: NEXT c
8008 FOR d=65392 TO 65399: READ n: POKE d,n: NEXT d
8010 FOR e=65400 TO 65407: READ n: POKE e,n: NEXT e
8012 FOR f=65408 TO 65415: READ n: POKE f,n: NEXT f
8021 DATA 128,64,32,16,0,0,0,7
8022 DATA 129,66,36,0,0,0,0,255
8023 DATA 1,2,4,8,0,0,0,128
8024 DATA 14,25,55,111,240,192,221,127
8025 DATA 0,0,255,255,1,3,135,255
8026 DATA 128,128,128,128,128,252,254,255
8110 PAPER 6: FLASH 1: PRINT AT 19,14;"\a\b\c";AT 20,14;"\d\e\f"
8115 PAPER 7: INK 0
8120 FOR V=0 TO PI STEP PI/90: PLOT 127+127*COS V,0+127*SIN V: NEXT V
8130 FOR V=0 TO PI STEP PI/90: PLOT 127+105*COS V,0+105*SIN V: NEXT V
8150 PRINT AT 1,1;"PECAN DIET LOAF--ANYWAY YOU SLICE IT, YOU'RE LEAN FOR A DAY": PAUSE 380
8200 RETURN
9990 REM COPY OR RETURN TO MENU
9991 INPUT "COPY OR RETURN TO MAIN MENU? C/R?";R$
9992 IF R$="" THEN GO TO 9991
9993 IF R$="C" THEN COPY
9995 RETURN
9997 STOP
9998 SAVE "SQUAW-T" LINE 10: PRINT "RE-LOAD ""SQUATIMSCR"" SCREEN$ ";'"GOTO 9999 WHEN READY TO SAVE": STOP
9999 SAVE "SQUATIMSCR"SCREEN$
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.


