--- title: "Alphabet Zoo" id: 71815 type: "computer_media" slug: "alphabet-zoo" url: "http://localhost/computer_media/alphabet-zoo/" markdown_url: "http://localhost/computer_media/alphabet-zoo.md" published_at: "2026-10-13T23:24:11+00:00" modified_at: "2026-10-13T23:24:12+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/alphabet-zoo-1.png" excerpt: "A two-part tape loader that splashes a styled title screen and hands control to 20,801 bytes of machine code — peek inside its construction notes." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "1984" slug: "year-1984" taxonomy: "post_tag" url: "http://localhost/tag/year-1984/" - 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: "Education" slug: "education" taxonomy: "genre" url: "http://localhost/type/education/" media_type: "Program" download_url: "https://archive.org/download/timex-sinclair-software-archive/Alphabet%20Zoo%20(1984)(Spinnaker%20Software)(TS2068)(US)(Program).zip" mediadate: "1984" images: - url: "http://localhost/wp-content/uploads/2026/10/alphabet-zoo-1.png" - url: "http://localhost/wp-content/uploads/2026/10/alphabet-zoo-2.png" media_type_tags: "Education" --- # Alphabet Zoo Alphabet Zoo is a loader program that displays a title screen while a separate machine code file is transferred from tape. The program uses PAPER, INK, BRIGHT, and FLASH attributes to create a styled splash screen with a copyright notice and estimated load time. After loading, it transfers control to machine code at address 32768 via PRINT USR 32768, which runs the code and presumably returns a value to print. A commented-out line (9993) hints at the save routine used to produce the companion code file “alpzoo.C1”, starting at address 32768 with a length of 20,801 bytes. ### Program Structure The program divides cleanly into three phases: screen setup and title display (lines 5–120), tape loading and execution (lines 130–140), and utility/maintenance lines stored as remarks at the end (lines 9992–9998). ### Screen Setup Lines 5–40 establish two distinct screen regions. Lines 5–7 set the top two rows (AT 0 and AT 1) to a neutral white-on-white appearance using `BRIGHT 0`, `PAPER 7`, and `INK 7`, effectively blanking them. Lines 10–40 then switch to blue paper with bright white ink (`PAPER 1:INK 7:BRIGHT 1`) and fill rows 2 through 21 with spaces, painting the main play area blue. ### Title Screen Content The title screen elements are positioned manually using `PRINT AT`: - Line 50: “ALPHABET ZOO” centered at row 5, column 10 - Line 60: “COPYRIGHT 1984” at row 7, column 9 - Line 70: “SPINNAKER SOFTWARE CORP.” at row 9, column 4 - Line 80–90: Load time warning (“APPROXIMATE LOAD TIME: / 2 MINUTES”) at rows 12 and 14 - Lines 100–110: A flashing “PLEASE WAIT” message at row 18, using `FLASH 1` before the print and `FLASH 0` after ### Machine Code Loading and Execution Line 130 loads the binary file `"alpzoo.C1"` directly into memory at address 32768 (the start of the upper RAM area, just above the 32K boundary). Line 140 uses `PRINT USR 32768` to call the machine code as a function; USR in this context calls the routine and returns whatever value is left in the BC register pair, which is then printed. This is a common technique when the machine code is self-contained and either does not return or returns a status value. ### Maintenance and Save Lines Lines 9992–9998 are developer utilities stored at the end of the program where they will not interfere with normal execution: - Line 9992: A `SAVE` statement to re-save this BASIC loader, set to auto-run from line 1. - Line 9993: A `REM` wrapping a `RANDOMIZE USR 100` call followed by a `SAVE` for the companion code block — 20,801 bytes starting at 32768. The `RANDOMIZE USR 100` prefix suggests a setup or compression routine at address 100 was run before saving. This line is commented out to prevent accidental execution. - Line 9998: An empty `REM`, likely a placeholder or separator. ### Notable Techniques The use of `INK 7:PAPER 7` with spaces to “erase” rows without clearing the whole screen is a deliberate technique to control which screen areas receive which attribute colors, avoiding a full `CLS` that would reset all attributes uniformly. The flashing wait prompt is toggled cleanly by bracketing only the relevant `PRINT` with `FLASH 1` and `FLASH 0`, leaving the rest of the display unaffected. ### Anomalies After line 120 sets `INK 1:PAPER 1` (blue on blue, effectively invisible text), the `LOAD` on line 130 and `PRINT USR` on line 140 execute under those attributes. The output of `PRINT USR 32768` on line 140 would therefore be printed in invisible ink, suggesting the machine code routine either never returns to BASIC or that the printed value is intentionally hidden. ## Source Code ``` 5 BRIGHT 0:PAPER 7:INK 7 6 PRINT AT 0,0;" " 7 PRINT AT 1,0;" " 10 PAPER 1:INK 7:BRIGHT 1 20 FOR i=2 TO 21 30 PRINT AT i,0;" " 40 NEXT i 50 PRINT AT 5,10;"ALPHABET ZOO" 60 PRINT AT 7,9;"COPYRIGHT 1984" 70 PRINT AT 9,4;"SPINNAKER SOFTWARE CORP." 80 PRINT AT 12,5;"APPROXIMATE LOAD TIME:" 90 PRINT AT 14,11;"2 MINUTES" 100 FLASH 1 110 PRINT AT 18,9;" PLEASE WAIT " 120 FLASH 0:INK 1:PAPER 1 130 LOAD "alpzoo.C1"CODE 32768 140 PRINT USR 32768 9992 SAVE "ALPZOO.B1" LINE 1 9993 REM RANDOMIZE USR 100:SAVE "zlpzoo.C1"CODE 32768,20801 9998 REM ```