--- title: "Computer Tutor" id: 56671 type: "computer_media" slug: "computer-tutor" url: "http://localhost/computer_media/computer-tutor/" markdown_url: "http://localhost/computer_media/computer-tutor.md" published_at: "2024-09-22T23:31:36+00:00" modified_at: "2026-04-03T07:59:03+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2024/09/AT.png" excerpt: "A charming alphabet quiz draws block-graphic pictures of ambulances, elephants, and zigzags to teach letter and vowel recognition — with computed GOSUB dispatch and machine-code animation tricks inside." 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: "Softsync" slug: "softsync" taxonomy: "post_tag" url: "http://localhost/tag/softsync/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" indiv: - name: "Lou Goldstein" slug: "lou-goldstein" taxonomy: "indiv" url: "http://localhost/indiv/lou-goldstein/" genre: - name: "Education" slug: "education" taxonomy: "genre" url: "http://localhost/type/education/" media_type: "Cassette" programmers: - name: "Lou Goldstein" slug: "lou-goldstein" taxonomy: "indiv" url: "http://localhost/indiv/lou-goldstein/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Computer%20Tutor%20%281982%29%28Softsync%20L%20Goldstein%20%29%28TS1000%29%28US%29%28Program%29.zip" mediadate: "1982" producer_company: - id: 11319 title: "Softsync, Inc." type: "company" url: "http://localhost/company/softsync/" images: - url: "http://localhost/wp-content/uploads/2024/09/AT.png" - url: "http://localhost/wp-content/uploads/2024/09/VT.png" - url: "http://localhost/wp-content/uploads/2024/09/AT.jpg" - url: "http://localhost/wp-content/uploads/2024/09/CT1.jpg" - url: "http://localhost/wp-content/uploads/2024/09/CT2.jpg" - url: "http://localhost/wp-content/uploads/2024/09/VT.jpg" related_products: - id: 12216 title: "Computer Tutors: Alpha/Vowel Tutors" type: "product" url: "http://localhost/product/computer-tutors-alpha-vowel-tutors/" media_type_tags: "Education" --- AlphaTutor and VowelTutor are a paired set of educational programs designed to teach children letter recognition and vowel sounds through a picture-matching quiz format. Each round randomly selects three images drawn entirely in block graphics, displays them with numbered labels, and prompts the child to identify which picture matches a highlighted letter or vowel shown in a bordered box. The programs use computed GOSUB targets (e.g., `GOSUB 200*L(K)+500` and `GOSUB 700*LS+100*L(K)+30*Z`) to dispatch to one of 26 picture-drawing subroutines covering letters A–Z and multiple vowel-sound variants. VowelTutor extends the concept with separate long and short vowel word sets per letter, selected by a random or user-chosen mode flag, and includes an animated nose-sniffing and hat/smile flip routine via `USR 16514`, pointing to a small machine-code delay loop stored in the REM statement at line 1. *** ## Program Analysis This listing contains two related programs: **AlphaTutor** and **VowelTutor**, both credited to Lou Goldstein / SoftSync Inc., 1982. AlphaTutor covers all 26 letters of the alphabet; VowelTutor extends the concept to long and short vowel sounds, offering multiple word variants per vowel. Both share the same core quiz loop and picture-rendering architecture. ### Program Structure Both programs follow the same top-level flow: 1. Title/splash screen (lines 12–14), then `RAND` to seed the RNG. 2. Initialise arrays `P(3)`, `W$(3,10)`, `L(3)` (lines 18–20). 3. Main loop (lines 30–200): pick three distinct random indices, choose one as the target, dispatch to a drawing subroutine for each, display a letter/vowel prompt box, read a numeric answer, give feedback, pause, clear and repeat. 4. Drawing subroutines: one per picture subject, each printing block-graphic art, setting `P(K)` (label column) and `W$(K)` (word string). VowelTutor adds a mode-selection screen (lines 23–27) offering long vowels, short vowels, or both, stored in `LS`, and allows the user to return to mode selection by entering `9`. ### Computed GOSUB Dispatch The most architecturally notable feature is the use of arithmetic expressions as GOSUB targets to select picture subroutines without IF/THEN chains: - AlphaTutor: `GOSUB 200*L(K)+500` — with `L(K)` in 0–25, this generates targets 500 (A=ambulance), 700 (B=boy), 900 (C=car) … 5500 (Z=zigzag), spaced 200 apart. - VowelTutor: `GOSUB 700*LS+100*L(K)+30*Z` — the `LS` factor (1=long, 2=short) shifts into a separate bank of subroutines; `L(K)` selects the vowel (1–5 = A/E/I/O/U); `Z` (0–2) selects one of up to three word variants per vowel per length. This is a compact and efficient dispatch mechanism that avoids long IF/THEN chains entirely, at the cost of requiring subroutines to be placed at exactly the computed line numbers. ### Machine Code Usage Line 1 in both programs is a `REM` statement whose body encodes a short Z80 machine-code routine. The sequence `\06\01\C5\06\64\00\10\FD\C1\10\F7\C9` disassembles as: - `LD B,1` — outer loop count - `PUSH BC` - `LD B,100 ; LD C,0` — inner delay count (25600 iterations) - `DJNZ $` — inner loop - `POP BC ; DJNZ …` — outer loop - `RET` This routine is called via `LET E=USR 16514` (the address of the REM body in the VowelTutor variant is slightly longer, hence a different offset in practice). It is used as a simple software delay in animation sequences — for example, the hat flip in AlphaTutor (lines 1901–1906), the smile animation (lines 4101–4106), and the nose-sniffing effect (lines 1163–1168 in VowelTutor). ### Key BASIC Idioms - **Block graphic art**: All pictures are rendered using the ZX81/TS1000 block graphic characters (2×2 pixel sub-characters), encoded here as zmakebas escape sequences such as `\ .`, `\:.`, `\''`, etc. - **Distinct random selection**: Lines 60 check `L(1)=L(2) OR L(1)=L(3) OR L(2)=L(3)` and loop back if any two indices collide, ensuring three distinct pictures appear each round. - **Column positioning via formula**: `LET X=10*K-5` (line 110) distributes the three picture columns evenly across the 32-character screen (columns 5, 15, 25). - **Answer box**: The target letter is displayed in a bordered box drawn with block graphics at lines 19–21 using `AT` positioning. - **PLOT for QUEEN and CONE**: The subroutines at lines 3700 and 830 use `PLOT` with pixel coordinates to draw vertical lines, since the block graphic resolution is insufficient for narrow strokes. ### VowelTutor Word-Embedding Technique In VowelTutor, word labels use a space character as a placeholder for the missing vowel (e.g., `"TR% IN"` for TRAIN, `"K% TE"` for KITE). After the round is set up, lines 151–155 scan `W$(C)` character-by-character to find the first `"% "` (space) position, then replace it with the actual vowel character `A$` — effectively filling in the blank dynamically. This lets the same word string serve as both a gapped display and, after substitution, the correct spelled form. ### Notable Subroutine Sharing AlphaTutor’s GIRL subroutine (line 1700) is shared with BOY (line 700): the BOY subroutine calls `GOSUB 1700` to draw the upper body, then the shared routine checks `IF L(K)=1 THEN RETURN` (line 1710) to exit early for BOY, or continues to draw the skirt/legs for GIRL. Similarly, VowelTutor’s WOMAN subroutine (line 4900) reuses the MAN subroutine (line 2900) for the head and torso, then overprints with different lower-body graphics. ### Array Sizing | Array | Dimensions | Purpose | | --- | --- | --- | | `P(3)` | 3 elements | Column position for each picture’s word label | | `W$(3,10)` | 3 strings × 10 chars | Word associated with each picture slot | | `L(3)` / `L(5)` | 3 (Alpha) / 5 (Vowel) | Random index for picture selection | ### Potential Anomalies - AlphaTutor has no subroutine at the computed target for letter index 0 (line 500 handles A=0, as `200*0+500=500`) — this is correct; `L(K)=INT(RND*26)` yields 0–25, mapping to lines 500–5500. - VowelTutor’s `GOSUB 700*LS+100*L(K)+30*Z` for `LS=2` (short vowels) can yield targets like 1400+30*Z (lines 1400, 1430, 1460) which are not all defined in the listing — some short-vowel variant slots appear absent, which would cause a BASIC error if selected. This may reflect incomplete subroutine coverage in the original listing. - The `PAUSE 33000` at line 14 provides a long title-screen pause (~30 seconds at normal speed) but any key press does not skip it — the user must wait it out unless they press BREAK. - In VowelTutor, the `\##` sequences in several subroutines (e.g., lines 1232, 1262, 1532) are not standard zmakebas escape sequences and likely represent inverse-video block characters or UDGs in the original tape file that were not fully decoded in this transcription. ## Source Code ``` 1 REM 61C5664010FDC110F7C92E2E2E2E2E2E 2 SAVE "AB%C" 12 PRINT AT 8,11;"ALPHATUTOR";AT 10,2;"COPYRIGHT 1982 LOU GOLDSTEIN";AT 12,6;"% %F%R%O%M% %S%O%F%T%S%Y%N%C% %I%N%C% " 13 PRINT AT 20,5;"PRESS ""ENTER"" TO START" 14 PAUSE 33000 15 RAND 17 CLS 18 DIM P(3) 19 DIM W$(3,10) 20 DIM L(3) 30 FOR K=1 TO 3 40 LET L(K)=INT (RND*26) 50 NEXT K 60 IF L(1)=L(2) OR L(1)=L(3) OR L(2)=L(3) THEN GOTO 30 80 LET C=INT (RND*3)+1 90 LET A$=CHR$ (L(C)+38) 100 FOR K=1 TO 3 110 LET X=10*K-5 120 GOSUB 200*L(K)+500 121 PRINT AT 10,P(K);"% ";W$(K,2 TO ) 130 PRINT AT 15,X;K 140 NEXT K 150 PRINT AT 19,14;":'''':";AT 20,14;": ";A$;" :";AT 21,14;":....:" 160 INPUT R 170 IF R<>C THEN PRINT AT 16,10*C-9;"% % % % % % % % % " 180 IF R=C THEN PRINT AT 16,10*C-9;"*********" 185 PRINT AT 13,P(C);W$(C) 190 PAUSE 250 195 CLS 200 GOTO 30 500 PRINT AT 3,X-3;"........";AT 4,X-3;": . :";AT 5,X-3;": ':' '''':";AT 6,X-3;":..........:";AT 7,X-3;"' ' " 501 LET P(K)=X-4 502 LET W$(K)="AMBULANCE" 510 RETURN 700 GOSUB 1700 710 PRINT AT 4,X;" :";AT 5,X;".'. ";AT 6,X-1;".' '. ";AT 7,X-2;".' '. " 711 LET P(K)=X-1 712 LET W$(K)="BOY" 720 RETURN 900 PRINT AT 5,X-3;" :% % % ";AT 6,X-3;" :% % % % % ";AT 7,X-2;"' '" 901 LET P(K)=X-1 902 LET W$(K)="CAR" 910 RETURN 1100 PRINT AT 1,X-4;" . :.. ";AT 2,X-3;"'. % . ";AT 3,X-2;"% % % ";AT 4,X-2;":'''':";AT 5,X-2;": :" 1101 LET P(K)=X-1 1102 LET W$(K)="DOG" 1110 RETURN 1300 PRINT AT 1,X-4;" .% % % ..";AT 2,X-4;"% % % % .:";AT 3,X-4;"':% % :' '..' ";AT 4,X-4;" : : " 1301 LET P(K)=X-4 1302 LET W$(K)="ELEPHANT" 1310 RETURN 1500 PRINT AT 1,X-4;" . ...";AT 2,X-4;" ::..:% % ':. ";AT 3,X-4;" :% % % % % . ";AT 4,X-4;" :' ''::'' " 1501 LET P(K)=X-2 1502 LET W$(K)="FISH" 1510 RETURN 1700 PRINT AT 0,X;"% : ";AT 1,X;"':' ";AT 2,X-1;" .':'.";AT 3,X-1;"' : ' " 1710 IF L(K)=1 THEN RETURN 1720 PRINT AT 4,X;".:. ";AT 5,X-1;".:% % . ";AT 6,X-2;" ':''''':'";AT 7,X-1;": : " 1721 LET P(K)=X-2 1722 LET W$(K)="GIRL" 1730 RETURN 1900 PRINT AT 1,X-2;"> ...... <";AT 2,X-1;".:% % :.";AT 3,X-1;" :..: ";AT 4,X-1;" : : ";AT 5,X-1;" : '' : ";AT 6,X;"''''" 1901 FOR F=1 TO 2 1902 PRINT AT 1,X-1;" ";AT 2,X-1;" ...... " 1903 LET E=USR 16514 1904 PRINT AT 1,X-1;" ...... ";AT 2,X-1;".:% % :." 1905 LET E=USR 16514 1906 NEXT F 1907 LET P(K)=X-1 1908 LET W$(K)="HAT" 1910 RETURN 2100 PRINT AT 1,X-1;" :";AT 2,X-1;" :";AT 3,X-2;" .''''''. ";AT 4,X-2;" :~~~~~~: ";AT 5,X-2;" : ' ' : ";AT 6,X-2;" : .... : ";AT 7,X-2;" '......' " 2101 LET P(K)=X-3 2102 LET W$(K)="INDIAN" 2110 RETURN 2300 PRINT AT 1,X-3;"---:.";AT 2,X-3;"':.....::...";AT 3,X-3;" :..........% >";AT 4,X-3;"--- .:'";AT 5,X-3;"---:'" 2301 LET P(K)=X-1 2302 LET W$(K)="JET" 2310 RETURN 2500 LET P(K)=X-2 2522 LET W$(K)="KING" 2523 PRINT AT 1,X-2;". . . . . ";AT 2,X-2;"':''''':' ";AT 3,X-2;" : ' ' :";AT 4,X-2;" : ' :";AT 5,X-2;" : ''' :";AT 6,X-1;"':% ' " 2530 RETURN 2700 PRINT AT 2,X-3;"A B C D";AT 3,X-2;"E F G" 2701 LET P(K)=X-4 2702 LET W$(K)="LETTERS" 2710 RETURN 2900 PRINT AT 1,X;"% : ";AT 2,X;"':' ";AT 3,X-1;"% % % : ";AT 4,X-1;": % : : ";AT 5,X-1;"' % : ' " 2910 IF L(K)=22 THEN RETURN 2920 PRINT AT 6,X-1;" :% % ";AT 7,X-1;" :: % ";AT 8,X-1;" :: % " 2921 LET P(K)=X-1 2922 LET W$(K)="MAN" 2930 RETURN 3100 PRINT AT 3,X-3;"1 2 3 4";AT 4,X-2;"5 6 7" 3101 LET P(K)=X-3 3102 LET W$(K)="NUMBERS" 3110 RETURN 3300 PRINT AT 1,X-4;". ";AT 2,X-4;" ''. .:. ... ";AT 3,X-2;"':% % ''";AT 4,X-4;" ..'':% % .. .'";AT 5,X-4;"' ..'.'.'. ''";AT 6,X-4;" .' .' '. ''.";AT 7,X-4;"' .' '. " 3301 LET P(K)=X-3 3302 LET W$(K)="OCTOPUS" 3310 RETURN 3500 PRINT AT 5,X-2;"........% ";AT 4,X+2;"*";AT 3,X+2;"*" 3501 LET P(K)=X-1 3502 LET W$(K)="PIPE" 3510 RETURN 3700 GOSUB 2500 3710 FOR Y=38 TO 29 STEP -1 3720 PLOT 2*X-4,Y 3730 PLOT 2*X+4,Y 3740 NEXT Y 3751 LET P(K)=X-2 3752 LET W$(K)="QUEEN" 3760 RETURN 3900 PRINT AT 1,X;"A";AT 2,X;"% ";AT 3,X;"% ";AT 4,X;"% ";AT 5,X;"% ";AT 6,X-1;"..% ..";AT 7,X-1;"' * '";AT 8,X;"*" 3901 LET P(K)=X-3 3902 LET W$(K)="ROCKET" 3910 RETURN 4100 PRINT AT 1,X-1;"......";AT 2,X-2;" : . . : ";AT 3,X-2;" : : ";AT 4,X-3;"> : . . : <";AT 5,X-2;" : '' : ";AT 6,X-1;"''''''" 4101 FOR F=1 TO 2 4102 PRINT AT 4,X-1;" ";AT 5,X-1;" '''' " 4103 LET E=USR 16514 4104 PRINT AT 4,X-1;" . . ";AT 5,X-1;" '' " 4105 LET E=USR 16514 4106 NEXT F 4107 LET P(K)=X-2 4108 LET W$(K)="SMILE" 4110 RETURN 4300 PRINT AT 1,X-1;" .% . ";AT 2,X-2;" .% % % . ";AT 3,X-2;"% % % % % ";AT 4,X-2;" '% % % ' ";AT 5,X-1;" '% ' ";AT 6,X;"% ";AT 7,X-1;" .% . " 4301 LET P(K)=X-2 4302 LET W$(K)="TREE" 4310 RETURN 4500 PRINT AT 1,X;".:. ";AT 2,X-1;".' : '. ";AT 3,X;" :";AT 4,X;" :" 4501 LET P(K)=X-1 4502 LET W$(K)="UP" 4510 RETURN 4700 PRINT AT 2,X-2;" .. ..";AT 3,X-2;"% % . .:% : ";AT 4,X-2;"':% % % % ' ";AT 5,X-1;"':% % ' ";AT 6,X;"':' " 4701 LET P(K)=X-4 4702 LET W$(K)="VALENTINE" 4710 RETURN 4900 GOSUB 2900 4910 PRINT AT 6,X-1;".:% % . ";AT 7,X-2;".:% % % % . ";AT 8,X-1;" :: % " 4911 LET P(K)=X-2 4912 LET W$(K)="WOMAN" 4920 RETURN 5100 PRINT AT 1,X-3;": : : : : : : ";AT 2,X-3;": : : : : ' ";AT 3,X-3;": : : ' . ";AT 4,X-3;": ' . /";AT 5,X-1;"/" 5101 LET P(K)=X-4 5102 LET W$(K)="XYLOPHONE" 5110 RETURN 5300 PRINT AT 1,X-1;" .% . ";AT 2,X-1;"% % ':";AT 3,X-1;"% % % . <";AT 4,X-1;"% % ''<";AT 5,X-1;"% % .. <";AT 6,X-1;" :% " 5301 LET P(K)=X-1 5302 LET W$(K)="YELL" 5310 RETURN 5500 PRINT AT 3,X-2;".'. .'";AT 4,X-3;" ' '. .'.'";AT 5,X;" '" 5501 LET P(K)=X-3 5502 LET W$(K)="ZIGZAG" 5510 RETURN 1 REM 61C5664010FDC110F7C92E2E2E2E2E2E2E2E2E2E2E 2 SAVE "VOWE%L" 12 PRINT AT 8,11;"VOWELTUTOR";AT 10,2;"COPYRIGHT 1982 LOU GOLDSTEIN";AT 12,7;"% %F%R%O%M% %S%O%F%T%S%Y%N%C% %I%N%C% " 13 PRINT AT 20,5;"PRESS ""ENTER"" TO START" 14 PAUSE 33000 15 RAND 16 LET V$="AEIOU" 17 CLS 18 DIM P(3) 19 DIM W$(3,10) 20 DIM L(5) 23 PRINT AT 6,0;"WHICH VOWELS DO YOU WANT TO USE?1=LONG",,"2=SHORT",,"3=BOTH",,"4=EXIT PROGRAM" 24 INPUT O 25 LET LS=O 26 CLS 27 IF O=4 THEN STOP 30 IF O=3 THEN LET LS=INT (RND*2)+1 31 FOR K=1 TO 3 32 FAST 40 LET L(K)=INT (RND*5)+1 50 NEXT K 60 IF L(1)=L(2) OR L(1)=L(3) OR L(2)=L(3) THEN GOTO 31 80 LET C=INT (RND*3)+1 90 LET A$=V$(L(C)) 99 SLOW 100 FOR K=1 TO 3 105 LET Z=INT (RND*3) 110 LET X=10*K-5 120 GOSUB 700*LS+100*L(K)+30*Z 121 PRINT AT 10,P(K);W$(K) 130 PRINT AT 15,X;K 140 NEXT K 150 PRINT AT 19,14;":'''':";AT 20,14;": ";A$;" :";AT 21,14;":....:" 151 FOR J=1 TO 10 152 IF W$(C,J)="% " THEN GOTO 155 153 NEXT J 155 LET W$(C,J)=A$ 156 INPUT R 157 IF R=9 THEN CLS 160 IF R=9 THEN GOTO 23 170 IF R<>C THEN PRINT AT 16,10*C-9;"% % % % % % % % % " 180 IF R=C THEN PRINT AT 16,10*C-9;"*********" 185 PRINT AT 13,P(C);W$(C) 190 PAUSE 250 195 CLS 200 GOTO 30 800 LET W$(K)="TR% IN" 801 LET P(K)=X-2 802 PRINT AT 2,X-1;"*";AT 3,X;"*";AT 4,X;" :... ";AT 5,X-4;" :% .:% .:% % >";AT 6,X-4;" ' ' ' ' ' '" 803 RETURN 830 LET W$(K)="C% NE" 831 LET P(K)=X-1 832 PRINT AT 1,X+1;"' ";AT 0,X-1;" .''. " 833 FOR Y=41 TO 30 STEP -1 834 PLOT 2*X-1,Y 835 NEXT Y 836 RETURN 860 LET W$(K)="D% YS" 861 LET P(K)=X-2 862 PRINT AT 2,X-1;"FRI.";AT 4,X-1;"SAT.";AT 6,X-1;"SUN." 863 RETURN 900 LET W$(K)="K% Y" 901 LET P(K)=X-1 902 PRINT AT 3,X-3;"% % ";AT 4,X-3;"% % :'''':% % ' ";AT 5,X-3;"% % ' : '" 903 RETURN 930 LET W$(K)="THR% E" 931 LET P(K)=X-2 932 PRINT AT 3,X-1;"'''': ";AT 4,X+1;": ";AT 5,X-1;" ''': ";AT 6,X+1;": ";AT 7,X-1;"''''' " 933 RETURN 960 LET W$(K)="KN% E" 961 LET P(K)=X-2 962 PRINT AT 0,X+1;"% : ";AT 1,X+1;"':' ";AT 2,X+1;": ";AT 3,X;" : '... ";AT 4,X;": ";AT 5,X-1;" : '. ";AT 6,X-1;" : '. <";AT 7,X-2;" .' : ";AT 8,X-2;"'. ''" 968 RETURN 1000 LET W$(K)="F% VE" 1001 LET P(K)=X-2 1002 PRINT AT 2,X-1;":'''' ";AT 3,X-1;":.. ";AT 4,X;" '. ";AT 5,X-1;". .' ";AT 6,X-1;" '' " 1003 RETURN 1030 LET W$(K)="K% TE" 1031 LET P(K)=X-2 1032 PRINT AT 0,X;".:. ";AT 1,X-1;" .':'.";AT 2,X-1;".:.:.:. ";AT 3,X-1;" : : :";AT 4,X;"% : ";AT 5,X;" :";AT 6,X+1;"'.";AT 7,X+1;".'";AT 8,X+1;" '" 1033 RETURN 1060 LET W$(K)="N% NE" 1061 LET P(K)=X-2 1063 PRINT AT 2,X-1;":''': ";AT 3,X-1;": : ";AT 4,X-1;"'''': ";AT 5,X-1;". : ";AT 6,X-1;"''''' " 1064 RETURN 1100 LET W$(K)="B% AT" 1101 LET P(K)=X-2 1102 PRINT AT 1,X-2;"......... ";AT 2,X-2;" '. '. ";AT 3,X-1;".' .'";AT 4,X-2;" '''':''''";AT 5,X-4;".........:......>";AT 6,X-4;"':% % % % % :'";AT 7,X-3;"''''''''''" 1103 RETURN 1130 LET W$(K)="THR% W" 1131 LET P(K)=X-2 1132 PRINT AT 2,X+2;">";AT 3,X-2;" :% > '";AT 4,X-2;" ':' .'";AT 5,X-3;" .'':'''";AT 6,X-3;"' : ";AT 7,X-2;".' '. ";AT 8,X-3;" ' '" 1133 RETURN 1160 LET W$(K)="N% SE" 1161 LET P(K)=X-2 1162 PRINT AT 1,X-1;" .% . ";AT 2,X-1;"% :.:.";AT 3,X-1;"% % ' ";AT 4,X-1;"'::'' " 1163 FOR G=1 TO 3 1164 PRINT AT 2,1+X;": " 1165 LET U=USR 16514 1166 PRINT AT 2,X+1;":." 1167 LET U=USR 16514 1168 NEXT G 1169 RETURN 1200 LET W$(K)="% NITED" 1201 LET P(K)=X-3 1202 PRINT AT 1,X-3;"........... .:";AT 2,X-4;" .% % % % % % .:% ";AT 3,X-4;" :AMERICA: ";AT 4,X-4;" '% % % % % % % : ";AT 5,X-3;"''''% % % % % : ";AT 6,X;"'::' : ";AT 7,X+1;"' " 1203 PRINT AT 11,P(K);"STATES" 1204 RETURN 1230 LET W$(K)="F% EL" 1231 LET P(K)=X-2 1232 PRINT AT 1,X-4;"######";AT 2,X-4;"##%G##";AT 3,X-4;"##%A##";AT 4,X-4;"##%S##'. :'''':";AT 5,X-4;"###### '..:....:";AT 6,X-4;"###### % % % ";AT 7,X-4;"###### : :" 1233 RETURN 1260 LET W$(K)="T% BE" 1261 LET P(K)=X-2 1262 PRINT AT 2,X-4;" ................ ";AT 3,X-4;" :##TOOTH##:.";AT 4,X-4;" :##PASTE##:'";AT 5,X-4;" '''''''''''''''' " 1263 RETURN 1500 LET W$(K)="FL% G" 1501 LET P(K)=X-2 1503 LET B=X-4 1504 PRINT AT 0,B;" ...............";AT 1,B;" :***:'''''':";AT 2,B;" :***:'''''':";AT 3,B;" :''''''''''''':";AT 4,B;" :''''''''''''':";AT 5,B;" :''''''''''''''";AT 6,B;" :" 1505 RETURN 1530 LET W$(K)="% DD" 1531 LET P(K)=X-1 1532 PRINT AT 1,X-2;"3+2=##";AT 3,X;"75";AT 4,X-1;"+23";AT 5,X-1;"''''''" 1533 RETURN 1560 LET W$(K)="P% N" 1561 LET P(K)=X-1 1562 PRINT AT 3,X-3;"........";AT 4,X-4;" :' ':.......";AT 5,X-4;" ::......:: ";AT 6,X-4;" '% % % % ' " 1563 RETURN 1600 LET W$(K)="T% N" 1601 LET P(K)=X-1 1602 LET B=X-2 1603 PRINT AT 2,B;" : :'''':";AT 3,B;" : : :";AT 4,B;" : : :";AT 5,B;" : :....:" 1604 RETURN 1630 LET W$(K)="DR% SS" 1631 LET P(K)=X-2 1632 PRINT AT 1,X-2;".::..::.";AT 2,X-3;" ':'% % ':' ";AT 3,X-2;" .% % . ";AT 4,X-3;" .% % % % . ";AT 5,X-4;" .% % % % % % . " 1633 RETURN 1660 LET W$(K)="L% G" 1661 LET P(K)=X-1 1662 LET B=X-1 1663 PRINT AT 0,X;"% : ";AT 1,X;"':' ";AT 2,B;"% % % : ";AT 3,B;": % : : ";AT 4,B;"' % : ' ";AT 5,B;" :% % ";AT 6,B;" :: ##<";AT 7,B;" :: ##<" 1664 RETURN 1700 LET W$(K)="S% X" 1701 LET P(K)=X-1 1702 LET B=X-1 1703 PRINT AT 1,X;"..";AT 2,B;".' ' ";AT 3,B;": ";AT 4,B;":.'''.";AT 5,B;": :";AT 6,B;" '..' " 1704 RETURN 1730 LET W$(K)="SH% P" 1731 LET P(K)=X-2 1732 PRINT AT 3,X-3;"..:.:.. ";AT 4,X-5;" ...% :'% :'% :'% :'";AT 5,X-4;"'::.% :.% :.% :'";AT 6,X-5;"@@@@@@@@@@@@@@@@@@@@" 1733 RETURN 1760 LET W$(K)="WR% ST" 1761 LET P(K)=X-2 1762 LET B=X-1 1763 PRINT AT 0,B;"......";AT 1,B;":'% ':";AT 2,B;"% ''% ";AT 3,B;"''% ''" 1764 LET B=X-2 1765 PRINT AT 4,B;"% % % % % ";AT 5,B;"% :% : % ";AT 6,B-1;">## :% : ##<";AT 7,B;"W W" 1766 RETURN 1800 LET W$(K)="P% T" 1801 LET P(K)=X-1 1802 PRINT AT 1,X-2;"..";AT 2,X-4;" .'' ''. ";AT 3,X-4;":. .:......";AT 4,X-4;"% % ..% % ";AT 5,X-4;"':% % % :'";AT 6,X-3;" '''' " 1803 RETURN 1830 LET W$(K)="CL% CK" 1831 LET P(K)=X-3 1832 PRINT AT 1,X;"... ";AT 2,X-2;" .'' . ''.";AT 3,X-2;": : : ";AT 4,X-3;" : :... :";AT 5,X-3;" '. .'";AT 6,X-2;"'. .' ";AT 7,X-1;"''...'' " 1833 RETURN 1860 LET W$(K)="ST% P" 1861 LET P(K)=X-2 1862 PRINT AT 0,X-2;" .% % . ";AT 1,X-3;" .% % % % . ";AT 2,X-3;"% ST P% ";AT 3,X-3;"% % % % % % ";AT 4,X-3;" '% % % % ' ";AT 5,X-2;" '% % ' ";AT 6,X-1;" :: ";AT 7,X-1;" :: " 1863 RETURN 1900 LET W$(K)="G% N" 1901 LET P(K)=X-1 1902 LET B=X-4 1903 PRINT AT 2,B;" :% % % % % -->";AT 3,B;" :: : :'''";AT 4,B;" ::...: ";AT 5,B;" :: " 1904 RETURN 1930 LET W$(K)="DR% M" 1931 LET P(K)=X-2 1932 PRINT AT 0,X+2;"/";AT 1,X-1;".. ' /";AT 2,X-3;" .'' ''. '";AT 3,X-3;":. .:";AT 4,X-3;"% % ..% % ";AT 5,X-3;"':% % % :'";AT 6,X-2;" '''' " 1933 RETURN 1960 LET W$(K)="B% S" 1961 LET P(K)=X-1 1962 LET B=X-3 1963 PRINT AT 2,B;"% '':'':''% % ";AT 3,B;"% ..:..:..% :% ";AT 4,B;"% % % % % % .:% ";AT 5,B+1;"' '" 1964 RETURN ```