Squawtime

Developer(s): Joan Kealy
Date: 198x
Type: Program
Platform(s): TS 2068
Tags: Home

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:

  1. Lines 10–35: Initialization — loads a SCREEN$ file, sets caps lock via POKE 23658,8, and displays a humorous intro sequence.
  2. Lines 40–55: Main menu — displays five options and routes execution using the GO TO 100*C computed jump idiom.
  3. Lines 100–199: Pecan Pie recipe.
  4. Lines 200–299: Pecan Pralines recipe.
  5. Lines 300–399: Pecan Brittle recipe.
  6. Lines 400–410: Pecan Diet Loaf (comedic entry, calls UDG subroutine at line 8000).
  7. Lines 500–505: “Pecan Preachments” — a calorie-counting joke, ends with STOP.
  8. Lines 8000–8200: UDG definition and graphical display subroutine for the Diet Loaf.
  9. Lines 9990–9995: Shared “Copy or Return” subroutine, called by each recipe.
  10. 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)IdiomPurpose
50IF C$="" THEN GO TO 45Guards against empty INPUT before VAL conversion
55GO TO 100*CComputed branch replacing IF/THEN chain
8002–8012Sequential FOR/READ/POKE loopsLoads UDG bitmaps from DATA statements
9993IF R$="C" THEN COPYConditional printer copy of recipe on screen

Notable Anomalies and Observations

  • Line 505 ends menu option 5 (“Pecan Preachments”) with STOP rather than calling the GO SUB 9990 copy/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 STOP that 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,8 to force caps-lock mode, ensuring uppercase input matching for the IF R$="C" check at line 9993.
  • The apostrophe in GRANDMA'S at line 203 appears as a literal character inside the string, which is valid since it is not a quote character.
  • The RESTORE at 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

Related Products

Related Articles

Related Content

Image Gallery

Squawtime

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.

Scroll to Top