--- title: "Squawtime" id: 53873 type: "computer_media" slug: "squawtime" url: "http://localhost/computer_media/squawtime/" markdown_url: "http://localhost/computer_media/squawtime.md" published_at: "2024-05-13T19:05:04+00:00" modified_at: "2026-03-30T21:45:32+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/02/20230809-041332.jpg" excerpt: "A five-item recipe menu packed with Texas humor, complete with UDG graphics, trig-drawn arcs, and a \"Pecan Diet Loaf\" that requires tweezers to eat." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" indiv: - name: "Joan Kealy" slug: "joan-kealy" taxonomy: "indiv" url: "http://localhost/indiv/joan-kealy/" genre: - name: "Home" slug: "home" taxonomy: "genre" url: "http://localhost/type/home/" media_contents: - id: 55396 title: "SINCUS Exchange Tape 103 – Potpourri" type: "computer_media" url: "http://localhost/computer_media/sincus-exchange-tape-103-potpourri/" media_type: "Program" programmers: - name: "Joan Kealy" slug: "joan-kealy" taxonomy: "indiv" url: "http://localhost/indiv/joan-kealy/" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2024/05/SCR-20240623-ejfn.png" - url: "http://localhost/wp-content/uploads/2024/05/SCR-20240623-ejhc.png" - url: "http://localhost/wp-content/uploads/2024/05/SCR-20240623-ejhw.png" media_type_tags: "Home" --- # Squawtime 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) | 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 `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. ## 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$ ```