--- title: "Minuteman" id: 55110 type: "computer_media" slug: "minuteman" url: "http://localhost/computer_media/minuteman/" markdown_url: "http://localhost/computer_media/minuteman.md" published_at: "2024-06-16T15:11:39+00:00" modified_at: "2026-03-30T21:44:06+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2024/06/SCR-20260329-nejf.png" excerpt: "A countdown from 10 to liftoff drives this missile launch simulation, complete with rising beep tones and an ASCII rocket that scrolls upward across the screen." 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/" genre: - name: "Demo" slug: "demo" taxonomy: "genre" url: "http://localhost/type/demo/" media_contents: - id: 54965 title: "ISTUG Public Domain Library 5" type: "computer_media" url: "http://localhost/computer_media/istug-public-domain-library-5/" media_type: "Program" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2024/06/SCR-20260329-nejf.png" media_type_tags: "Demo" --- # Minuteman This program simulates a missile launch countdown and liftoff sequence. It counts down from 10 to 0 using a FOR loop, displaying each number centered on screen with a BEEP tone whose pitch rises proportionally with the countdown value. After reaching zero, it prints “IGNITION” and “LIFT OFF” messages before transitioning to an animation loop that draws a simple ASCII-art rocket shape using asterisks and slash characters. The rocket animation uses POKE 23692,255 to suppress the automatic scroll prompt, combined with repeated PRINT with trailing commas to scroll the rocket upward through the display. *** ## Program Analysis ### Program Structure The program is divided into two main phases, connected by a `GO TO` at line `30` that jumps into the countdown sequence rather than falling through to the rocket animation: 1. **Countdown phase (lines 230–310):** A `FOR M=10 TO 0 STEP -1` loop counts down with a centered screen display, a pitched BEEP, and a short PAUSE before clearing the screen. After the loop, “IGNITION” and “LIFT OFF” messages are displayed, then control jumps back to line `40`. 2. **Rocket animation phase (lines 40–220):** An ASCII-art rocket is printed line by line, with trailing double commas (`,,`) advancing the print position. A `FOR N=1 TO 22` loop at lines `210–220` prints blank lines to scroll the rocket upward, ending with `STOP`. ### Countdown Mechanics The countdown loop at lines `230–260` uses `PRINT AT 11,16;M` to place each digit near the center of the screen. The `BEEP .5,M*2` call produces a tone whose pitch increases with `M`, giving a rising-pitch effect as the countdown progresses from 10 down to 0 — which means pitch actually falls during the countdown, since `M` decreases. This is an inverted pitch sweep: highest pitch at 10, silence (pitch 0) at liftoff. ### Scroll Suppression with POKE 23692,255 Line `40` uses `POKE 23692,255` to write to the system variable `SCRCT` (scroll count). This resets the scroll prompt counter, preventing the “scroll?” message from halting execution during the rocket’s upward scroll animation. Without this POKE, the interpreter would pause and wait for a keypress after a certain number of lines have scrolled. ### Rocket ASCII Art and Scroll Technique The rocket shape spans lines `40–200` and is constructed from standard ASCII characters. The trailing `,,` after each `PRINT` statement moves to the next line without a newline gap, keeping the rocket image compact. The legs of the rocket use `/ \\ / \\` (escaped backslashes) and `!` characters for the exhaust nozzles. After the rocket body is drawn, lines `210–220` loop 22 times printing empty lines (`PRINT ,,`) to scroll the rocket up and off the top of the screen, simulating liftoff. The program then hits `STOP`, ending execution. ### Key Variables | Variable | Usage | | --- | --- | | `M` | Countdown loop counter (10 down to 0); also used as BEEP pitch multiplier | | `N` | Scroll loop counter (1 to 22) for rocket animation | ### Notable Techniques and Anomalies - The initial `GO TO 230` at line `30` skips the rocket drawing code so the countdown always runs first on program start. - The screen setup at line `20` sets PAPER blue (1), INK white (7), and BORDER blue, giving a sky-like color scheme throughout. - Because `BEEP .5,M*2` ties pitch to the loop counter `M`, the sound descends from a high note to silence across the countdown rather than ascending — a subtle inversion of the expected dramatic rising pitch. - The `STOP` at line `220` means the program is not a loop; it must be re-run manually to repeat the sequence. - The `PRINT AT 21,16;" ",,` at the start of line `40` clears a position at the bottom of the screen, likely a remnant or precaution before drawing begins — its effect is minor but positions the cursor before the rocket body PRINTs follow. ## Source Code ``` 10 REM *** MUF'S "MINUTEMAN" 20 PAPER 1: INK 7: CLS : BORDER 1 30 GO TO 230 40 POKE 23692,255: PRINT AT 21,16;" ",, 50 PRINT " * ",, 60 PRINT " *** ",, 70 PRINT " ***** ",, 80 PRINT "*******",, 90 PRINT "* *",, 100 PRINT "* *",, 110 PRINT "* *",, 120 PRINT "* *",, 130 PRINT "* *",, 140 PRINT "* *",, 150 PRINT "* *",, 160 PRINT "*******",, 170 PRINT "/ \\ / \\",, 180 PRINT "!!! !!!",, 190 PRINT "!!! !!!",, 200 PRINT "!!! !!!",, 210 FOR N=1 TO 22 220 PRINT ,,: NEXT n: STOP 230 FOR M=10 TO 0 STEP -1 240 PRINT AT 11,16;M 250 BEEP .5,M*2 260 PAUSE 30: CLS : NEXT m 270 PRINT AT 11,13;"IGNITION" 280 BEEP .5,5: PAUSE 30 290 PRINT AT 11,13;"LIFT OFF" 300 BEEP .5,10: PAUSE 30: CLS 310 GO TO 40 ```