Language Usage is a three-part educational BASIC program that drills grammar rules including subject-verb agreement, double negatives, pronoun usage, irregular verb forms, and homonyms, spanning Parts I, II, and III saved as separate files (“LAN1”, “LAN2”, “LAN3”). Each part presents four-line sentences on screen and asks the student to identify which line contains a grammatical error (Part I) or choose the correct word from two options (Parts II and III). The program uses a notable numeric-alias system throughout, initializing single-letter variables (U=1, T=2, H=3, F=4, V=5, X=6, S=7, E=8, IX=9, W=10, C=100, K=500) via PI/PI arithmetic so that line-number targets in GO TO and GO SUB statements are expressed as arithmetic expressions rather than literal numbers. A real-time timer is implemented by polling PEEK 16437 (the ZX81 frame counter) and accumulating elapsed time in fractional minutes, displaying a running MM:SS clock for timed test modes. Score tracking uses DIM arrays for per-category wrong answers, and the program supports four modes: practice pass 1, practice pass 2, timed test pass 1, and timed test pass 2.
Program Analysis
Program Structure
The listing comprises three independent but structurally identical program files, each saved under a different name (“LAN1”, “LAN2”, “LAN3”) and each covering a distinct set of grammar topics. Part I addresses double negatives, subject-verb agreement, and pronoun usage. Part II covers the may/can distinction, irregular verb forms, and consistency of tense. Part III handles homonyms, lay/lie, set/sit, and among/between. Each part shares the same high-level architecture:
- Line 1:
GOTO 1000— title/splash sequence. - Lines 1000–1199: Title screen with SCROLL-based animation, menu presentation, and mode selection.
- Lines 1200–1268/1259:
DIM K$(…)— loads the grammar-rule strings used for on-screen rule display. - Lines 1269–1399: Sets array
C(N)to indicate how many sub-lines each rule covers, andNPfor total question count. - Lines 1330–1390: Displays the “RULES COVERED” screen.
- Lines 1400–1495: Timed test entry with “LAN” password check.
- Lines 1500–1550: Box-drawing subroutine driven by
F$coordinates. - Lines 1814–1899: Initialization subroutine — zeroes all counters and dimensions arrays.
- Lines 1900–1999: Constant-setup subroutine; also calls initialization and directions.
- Lines 2000–3xxx/5xxx: Question data and main question loop.
- Lines 5000–5020: End-of-session routing — cycles through practice pass 1 → practice pass 2 → timed test pass 1 → timed test pass 2 → results.
- Lines 5100–5104: Four-line SCROLL subroutine.
- Lines 6000–6010:
CLEAR,SAVE,RUN.
Numeric Alias System
One of the most prominent techniques in all three parts is the use of short variable names as integer aliases, initialized once in the subroutine at line 1900. All arithmetic is built on U=PI/PI (=1), with each subsequent alias adding 1:
| Variable | Value | Variable | Value |
|---|---|---|---|
U | 1 | W | 10 |
T | 2 | C | 100 |
H | 3 | K | 500 |
F | 4 | O | 0 |
V | 5 | T0 | 20 |
X | 6 | TT | 22 |
S | 7 | H0 | 30 |
E | 8 | FT | 14 |
IX | 9 | C0 (Parts II/III) | 500 |
Every GOTO and GOSUB target is written as an arithmetic expression using these aliases, e.g. GOSUB K*H/T = GOSUB 750, GOTO T*K = GOTO 1000, GOSUB X*X*W = GOSUB 360. This serves both as a memory-saving technique (expressions sharing already-loaded variable values) and as a mild obfuscation. Parts II and III introduce C0 (= K = 500) as a second alias to distinguish it from the array name C(), since Part II reuses K for 500 but adds C0=C*W at line 1914.
Question Data Encoding in A$
Each question is encoded as a single string A$ whose leading characters are positional metadata. For Part I, the string begins with a two-digit row, two-digit column, and other layout parameters parsed with VAL A$(U TO T), VAL A$(H TO F), etc. For Parts II and III, an extended header encodes screen positions for both choice words, the display subroutine number, and which word is correct. The question text then follows inline. The display subroutines (lines 6–43 in each part) decode this header using VAL on substrings and jump to the appropriate layout routine via GOSUB VAL A$(W+S TO W+E). Different layout subroutines handle cases where one or both words wrap, are parenthesized, or split across lines.
Real-Time Timer
The timer subroutine at lines 100–145 polls PEEK 16437 (the system frame counter) to detect frame advances. Each detected tick increments TIME by 0.071111 (approximately 1/14 of a second, since the counter ticks at roughly 50 Hz but is sampled at display rate). When TIME - TIME0 >= 1/6 of a minute (i.e. about 10 seconds), the displayed MM:SS is updated. The timer only runs when E1 or E2 is set (timed-test modes), and it executes inside the keypress-wait loop so no separate interrupt mechanism is needed.
Mode and Session Flags
Four boolean flags control program flow:
P1: Practice pass 1 active.P2: Practice pass 2 active.E1: Timed test pass 1 active.E2: Timed test pass 2 active.
At the end-of-session handler (line 5000 onward), the program cycles: if P1 just finished, it sets P2=1; if E1 just finished, it sets E2=1; otherwise it goes to results. The timed test requires the user to type “LAN” as a code at the entry screen (line 1445/1448), preventing accidental entry.
Score Tracking
Per-category wrong-answer counts are stored in DIM Q(N) where N matches CON (the current grammar category, 1–5 depending on the part). Global counters NWRONG and NWRONG1 track total errors and first-attempt errors respectively. Results screens (line 300+) display per-category scores as fractions and percentages, computed inline with INT (C*R(N)/denominator) where C=100 converts to a percentage.
Box-Drawing Subroutine
The subroutine at lines 1500–1550 draws a decorative border box using block graphics characters. It reads four two-digit coordinate fields from the string F$ (top row P, bottom row B, left column L, right column R) and draws the top/bottom edges with ▀▀▀▀/▄▄▄▄, side edges with ▌/▐, and corners with ▛▜▙▟. It is called via GOSUB K*H/T (= GOSUB 750) after setting F$ to the desired coordinates.
String Array for Rules Text
Grammar rule text is stored in a fixed-width string array K$(N, width) dimensioned with enough rows for all rule lines. Each part uses different dimensions: Part I uses DIM K$(21, 30), Part II DIM K$(23, 29), Part III DIM K$(22, 29). Individual rule lines are assigned by index and printed sequentially. The C(N) array stores how many sub-lines follow each rule header, allowing the display loop (lines 1340–1355) to print as many continuation lines as needed.
Notable Techniques and Anomalies
- In Part III, the strings
E$andH$hold conjugation-pair data (e.g."(LAY LIE)(LAID LAY)…"and"(AMONG BETWEEN)") that are sliced inline into questionA$strings, avoiding repetition of common word pairs. - The SLOW/FAST switching around keypress loops (lines 79–86, 100–145) is idiomatic: SLOW mode is entered to allow display refresh, FAST is restored once a key is detected.
- Part I uses
G$="4 (NO ERRORS)"as the label for choice 4, allowing a “no error” option; Parts II and III use a two-choice model only. - Line 9998 in Parts II and III (
PRINT PEEK 16412+256*PEEK 16413-16384) is a developer diagnostic that prints the size of the BASIC program in bytes; it is not reachable in normal execution. - The
WRONGflag prevents double-counting: if a question was already answered wrong on first attempt, the second-attempt wrong counter is not incremented again. - Part I line 1090 prints copyright text at
AT T0,T(row 20), while Part III prints it at line 1092 — minor layout differences between parts reflecting independent editing. - In Part II lines 1517–1518 and 1537–1538, the box-drawing subroutine checks
INKEY$for “F” or “S” mid-loop to allow switching between FAST and SLOW display speed — a feature absent from Parts I and III.
Content
Image Gallery
Source Code
1 GOTO 1000
2 CLS
3 IF NOT E1+P1+E2+P2 THEN GOSUB C*E
4 IF E1+E2 THEN PRINT AT U,W+V;"TIME USED ";MIN;":";SEC
5 LET F$="4 (NO ERRORS)"
6 IF NP-NLEFT>=H AND CN<>V THEN GOTO E
7 PRINT AT W,S;"SELECT THE LINE";AT W+T,V;"WHICH HAS AN ERROR"
9 PRINT AT W+X,O;"1 ";A$(X TO VAL A$(U TO T));AT W+S,O;"2 ";A$(VAL A$(U TO T)+U TO VAL A$(H TO F));AT W+E,O;"3 ";A$(VAL A$(H TO F)+U TO );AT W+IX,O;G$
10 IF CON<>T THEN GOSUB H0
12 SLOW
13 GOSUB C
14 GOSUB C*T
15 IF DONE<>U THEN GOTO T0+X
16 IF CON<>T THEN GOSUB W*F
17 RETURN
27 GOTO W+H
30 LET D=C(CN)
31 LET C(CN)=H
33 IF CON=F THEN LET C(CN)=F
34 RETURN
40 LET C(CN)=D
41 RETURN
79 SLOW
80 IF INKEY$ <>"" THEN GOTO E*W
81 IF INKEY$ ="" THEN GOTO E*W+U
86 LET C$=INKEY$
87 FAST
89 IF C$=CHR$ (C+W+E) THEN RUN K+C
90 LET LL=O
91 RETURN
100 SLOW
101 IF INKEY$ <>"" THEN GOTO C+U
102 LET C$=""
103 IF INKEY$ <>"" THEN LET C$=INKEY$
104 IF C$<>"" THEN GOTO C+C/T
105 IF NOT E1+E2 THEN GOTO C+T
110 LET T2=PEEK 16437
115 LET TICK=(T2<>T1)
120 IF NOT TICK THEN GOTO C+T
125 LET T1=T2
130 LET TIME=TIME+.071111
135 IF TIME-TIME0<U/X THEN GOTO C+T
140 LET TIME0=TIME
141 LET MIN=INT TIME0
142 LET SEC=W*INT (X*(TIME0-MIN))
143 PRINT AT U,H0-V;MIN;":";SEC
145 GOTO C+T
150 LET IK=O
152 IF C$=CHR$ (C+W+E) THEN RUN C+K
153 FAST
155 IF C$<>A$(V) THEN RETURN
160 LET IK=U
162 RETURN
180 IF CON=T THEN GOSUB C*E+C/T
181 IF IK=U THEN GOTO K/F
182 GOTO C*T+U
200 GOTO C+W*E
201 IF NOT E1+E2 THEN GOTO T*C+F
202 LET NWRONG=NWRONG+U
203 GOTO 272
204 IF WRONG=U THEN GOTO T*C+H0
205 LET F$=J$
206 IF C(CN)<=V THEN LET F$(F TO F)=STR$ (C(CN)+F)
207 IF C(CN)>V THEN LET F$(H TO F)=STR$ (C(CN)+F)
216 GOSUB K*H/T
217 PRINT AT C(CN)+V,O;S$;S$;S$;S$;S$
218 PRINT AT U,U;"THE RULE IS --- ";L$;AT T,U;K$(CN);AT C(CN)+H,U;" ";L$;Q$;AT C(CN),U;L$;L$;AT C(CN)+H,W+U;"[T][R][Y] [A][G][A][I][N]"
219 FOR N=T TO X
220 PRINT AT N+U,U;
221 IF CN=E AND N>T THEN PRINT AT N+T,U;
222 IF C(CN)>=N THEN PRINT K$(CN+N-U)
223 NEXT N
224 LET DONE=O
225 LET NWRONG1=NWRONG1+U
226 LET WRONG=U
227 IF CON=T THEN GOSUB 860
229 RETURN
230 PRINT AT C(CN)+H,X;"█[T][H][E]█[E][R][R][O][R]█[I][S]█[I][N]█[L][I][N][E]█";CHR$ (156+VAL (A$(V)));"█";
237 LET NWRONG=NWRONG+U
238 IF CON THEN LET Q(CON)=Q(CON)+U
240 GOTO 265
250 IF NOT E1+E2 THEN GOTO 255
252 GOTO 273
255 CLS
256 LET F$="07110920"
257 GOSUB K*H/T
258 PRINT AT IX,W+T;"[C][O][R][R][E][C][T]"
259 LET F$="15170427"
260 GOSUB K*H/T
261 PRINT AT W+X,X;NP-NLEFT+U;" DONE; ";NLEFT-U;" TO GO";
265 GOSUB X*X*W
270 LET WRONG=O
271 GOTO 273
272 LET Q(CON)=Q(CON)+U
273 LET DONE=U
275 LET NLEFT=NLEFT-U
276 IF NLEFT=O THEN GOTO K*V
277 IF CON=T THEN GOSUB E*C+W*X
280 RETURN
300 CLS
305 IF P2+E2 THEN GOTO H*C+W+V
306 LET F$="03200427"
307 GOSUB K*H/T
311 PRINT AT V,S;"YOUR SCORE CARD",AT IX,V;NP-NWRONG1;" RIGHT ON FIRST TRY",AT W+U,V;NWRONG1-NWRONG;" RIGHT ON SECOND TRY",AT W+H,V;NWRONG;" WRONG "
312 GOSUB X*X*W
313 RUN K+C
315 LET F$="00200031"
316 GOSUB K*H/T
317 IF NOT P2 THEN GOTO 322
318 LET NWRONG=NWRONG1
319 PRINT AT U,F;"PRACTICE"
322 IF E2 THEN PRINT AT T0-U,T;"TIME USED: ";MIN;":";SEC
324 PRINT AT T,T;"TEST RESULTS";AT U,T0+S;"PER-";TAB W+IX;"SCORE CENT";AT S,T;"DBL. NEGATIVES";TAB W+E;R(U);TAB T0+U;"OF ";T;TAB T0+E;INT C*R(U)/T;
325 PRINT AT F,T;"SUBJECT/VERB";TAB W+E;R(T);TAB T0+U;"OF ";E;TAB T0+E;INT (C*R(T)/E);TAB T;"AGREEMENT"
327 PRINT AT IX,T;"PRONOUNS AS";TAB W+E;R(H);TAB T0+U;"OF ";T;TAB T0+E;INT C*R(H)/T;TAB T;"SUBJECTS"
329 PRINT AT W+T,T;"PRONOUNS AS";TAB W+E;R(F);TAB T0+U;"OF ";T;TAB T0+E;INT C*R(F)/T;TAB T;"OBJECTS"
330 PRINT AT W+V,T;"PRONOUNS AND";TAB W+E;R(V);TAB T0+U;"OF ";T;TAB T0+E;INT C*R(V)/T;TAB T;"ANTECEDENTS"
332 PRINT AT W+E,S;"TOTAL:";TAB W+E;W+X-NWRONG;TAB T0+U;"OF ";W+X;TAB T0+E;INT (C*(W+X-NWRONG)/(W+X))
334 GOSUB X*X*W
340 RUN K+C
360 PRINT AT T0+U,X;"[P][R][E][S][S]█[C]█[T][O]█[C][O][N][T][I][N][U][E]"
362 GOSUB E*W-U
365 RETURN
700 CLS
710 RETURN
800 LET F$="00020031"
801 LET UU=U
802 IF CON=T THEN GOSUB E*C+W*V
804 LET F$(F TO F)=STR$ (C(CN)+UU)
810 GOSUB K*H/T
820 PRINT AT U,U;K$(CN)
825 FOR N=T TO X
828 IF CN=E AND N>=H THEN GOTO 832
830 IF C(CN)>=N THEN PRINT AT N,U;K$(CN+N-U)
831 GOTO 834
832 IF C(CN)>=N THEN PRINT AT N+U,U;K$(CN+N-U)
834 NEXT N
835 IF CON=T THEN GOSUB E*C+W*X
840 RETURN
850 LET D1=CN
851 LET K$(W+U)=K$(D1)
852 LET CN=E
853 LET D2=C(E)
854 LET C(E)=F
855 LET UU=T
856 RETURN
860 LET K$(W+U)=K$(F+W)
861 LET CN=D1
862 LET C(E)=D2
863 RETURN
900 CLS
905 LET F$="01200229"
910 GOSUB K*H/T
915 PRINT AT T,W+U;"DIRECTIONS",AT F,F;"(1) YOU WILL BE GIVEN",TAB E;"FOUR LINES OF WORDS",AT S,F;"(2) FIND THE LINE THAT",TAB E;"HAS AN ERROR IN IT"
930 PRINT AT W,F;"(3) PUSH THE NUMBER",TAB E;"OF THAT LINE",AT FT,F;"WORDS BEGINNING WITH",TAB F;"CAPITALS APPEAR AS";TAB F;"FOLLOWS:",AT W+E,E;"[M]R. [M]RS. [G]EORGE"
934 GOSUB X*X*W
935 RETURN
1000 CLS
1003 FAST
1010 GOSUB 1900
1011 SLOW
1012 SCROLL
1014 PRINT TAB H;"LANGUAGE USAGE"
1016 GOSUB K*V+C+U
1018 PRINT TAB T0;"MASTER"
1020 GOSUB K*V+C
1053 LET F$="12160019"
1054 GOSUB K*H/T
1055 LET F$="15191728"
1056 GOSUB K*H/T
1057 PRINT AT W+V,T0-U;"▜";AT W+X,T0-H;"▙";AT W+V,H0-U;"TM"
1058 SCROLL
1059 SCROLL
1074 PRINT TAB W+T;"PART I"
1075 SCROLL
1076 SCROLL
1083 PRINT TAB S;"GRADES 4 THRU 12"
1085 GOSUB K*V+C
1089 PRINT TAB T;"SOFTWARE FOR EXCELLENCE"
1090 PRINT AT T0,T;"COPYRIGHT 1982 BY"
1094 SCROLL
1095 PAUSE H*C
1100 FAST
1101 GOSUB 1900
1102 GOSUB T*K-E*W
1105 CLS
1107 LET F$="00190031"
1110 GOSUB K*H/T
1112 LET Z$="▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
1114 PRINT AT T,V;"LANGUAGE USAGE PART I";AT F,U;Z$;Z$;TAB U;"PREPARATION - RULES";TAB U;"▀▀▀▀▀▀";Z$;AT S,U;"1 SUBJECT/VERB AGREEMENT";TAB U;"2 DOUBLE NEGATIVES";TAB U;"3 PRONOUNS AS SUBJECTS";TAB U;"4 PRONOUNS AS OBJECTS";TAB U;"5 PRONOUN/ANTECEDENT AGREEMENT";AT W+H,U;Z$;Z$;TAB U;"TRAINING CAMP";TAB U;Z$;AT W+S,U;"6 TEST PRACTICE",TAB U;"7 TIMED TEST"
1120 PRINT AT T0,S;"[C][H][O][O][S][E]█[A]█[N][U][M][B][E][R]"
1125 GOSUB T*K-C*T
1126 LET LL=U
1130 GOSUB E*W-U
1132 LET L=CODE C$-T*W-E
1135 IF L<U OR L>S THEN GOTO K+C+H0
1140 IF L<=V THEN GOTO 1158
1141 FAST
1142 GOTO 1134+H*L
1152 LET P1=U
1153 LET NP=W+E
1154 GOTO T*K
1155 LET E1=U
1156 LET NP=W+E
1157 GOTO K+C*F
1158 LET CON=L
1159 IF L=U THEN LET CON=T
1160 IF L=T THEN LET CON=U
1162 GOTO 1269
1200 DIM K$(T0+V,H0)
1214 LET K$(U)="DO NOT USE MORE THAN ONE"
1216 LET K$(T)="NEGATIVE IN A CLAUSE"
1218 LET K$(H)="([I] CANNOT GET NOTHING DONE.)"
1220 LET K$(F)=" REMEMBER THAT ADVERBS SUCH"
1222 LET K$(V)=" AS HARDLY, BARELY, SCARCELY,"
1224 LET K$(X)=" ETC. ARE NEGATIVES"
1226 LET K$(S)="SUBJECT/VERB AGREEMENT--"
1228 LET K$(E)="A VERB MUST AGREE WITH"
1230 LET K$(IX)="ITS SUBJECT IN NUMBER"
1232 LET K$(W)="WATCH OUT FOR"
1234 LET K$(W+U)=" CONTRACTIONS"
1236 LET K$(W+T)=" SUBJECTS COMING AFTER VERBS"
1238 LET K$(W+H)=" DISTRACTING PHRASES"
1240 LET K$(W+F)=" CONTRACTIONS"
1242 LET K$(W+V)=" COMPOUND SUBJECTS"
1244 LET K$(W+X)="WHEN A PRONOUN IS THE [S][U][B][J][E][C][T]"
1246 LET K$(W+S)="OF A VERB, USE THE SUBJECTIVE"
1248 LET K$(W+E)="FORM"
1254 LET K$(T0-U)="WHEN A PRONOUN IS THE [O][B][J][E][C][T]"
1256 LET K$(T0)="OF A VERB OR PREPOSITION, USE"
1257 LET K$(T0+U)="THE OBJECTIVE FORM "
1259 LET K$(T0+T)=" ([M]ARSHA CALLED [T][H][E][M].)"
1261 LET K$(T0+H)="A PRONOUN MUST AGREE WITH"
1262 LET K$(T0+F)="ITS ANTECEDENT IN NUMBER,"
1263 LET K$(T0+V)="GENDER, AND PERSON"
1268 RETURN
1269 GOSUB T*IX*C
1270 IF CON<>U THEN GOTO 1280
1272 LET C(U)=H
1273 LET C(F)=H
1275 LET NP=T
1276 GOTO 1330
1280 IF CON<>T THEN GOTO 1291
1281 LET C(S)=U
1282 LET C(E)=H
1283 LET C(W+U)=U
1284 LET C(W+T)=U
1285 LET C(W+H)=U
1287 LET C(W+V)=U
1289 LET NP=E
1290 GOTO 1330
1291 IF CON<>H THEN GOTO 1305
1292 LET C(W+X)=H
1294 LET NP=T
1298 GOTO 1330
1305 IF CON<>F THEN GOTO 1310
1306 LET C(T0-U)=F
1308 LET NP=T
1309 GOTO 1330
1310 IF CON<>V THEN GOTO 1330
1311 LET C(T0+H)=H
1313 LET NP=T
1314 GOTO 1330
1317 LET B$="EXAMPLE - ERROR IN "
1318 LET A$="[E]VERY BOY TO [H][I][S] POST."
1319 PRINT AT W+U,U;"I. ";B$;TAB TT+U;"[N][U][M][B][E][R]";AT W+H,F;A$;AT W+H,W+S;"[T][H][E][I][R] POST.";AT W+X,W+U;"-CORRECT-";AT W+E,V;A$
1320 GOSUB X*X*W
1321 SLOW
1325 PRINT AT W+U,U;"II. ";B$;TAB TT+T;"[G][E][N][D][E][R] ";AT W+H,F;A$;AT W+H,W+S;"[H][E][R] POST. ";AT W+X,W+U;"-CORRECT-";AT W+E,V;A$
1326 GOSUB X*X*W
1327 SLOW
1328 PRINT AT W+U,U;"III. ";B$;TAB TT+H;"[P][E][R][S][O][N]";AT W+H,F;A$;AT W+H,W+S;"[Y][O][U][R] POST.";AT W+X,W+U;"-CORRECT-";AT W+E,V;A$
1329 RETURN
1330 CLS
1335 LET F$="00200031"
1336 GOSUB K*H/T
1337 PRINT AT U,E;"RULES COVERED",TAB U;Z$;Z$;
1338 LET M=S
1339 GOSUB 1360
1340 FOR N=U TO H0-U
1341 IF NOT C(N) THEN GOTO 1355
1342 IF N=E THEN LET M=M+U
1344 PRINT AT M,U;K$(N)
1345 FOR L=T TO X
1346 IF C(N)<L THEN GOTO 1354
1347 LET M=M+U
1348 IF N=E AND L=H THEN LET M=M+T
1350 PRINT AT M,U;K$(N+L-U)
1353 NEXT L
1354 LET M=M+T
1355 NEXT N
1357 IF CON=H THEN PRINT TAB V;"([T][H][E][Y] CALLED [A]NN.)"
1359 GOTO 1370
1360 IF CON=T THEN LET M=F
1361 PRINT AT F,U;
1362 IF CON=U THEN PRINT "DOUBLE NEGATIVES--"
1363 IF CON=H THEN PRINT "PRONOUNS AS SUBJECTS--"
1364 IF CON=F THEN PRINT "PRONOUNS AS OBJECTS--"
1365 IF CON=V THEN PRINT "PRONOUN/ANTECEDENT AGREEMENT"
1369 RETURN
1379 IF CON=V THEN GOSUB 1315
1380 IF CON<>H AND CON<>F THEN GOTO 1387
1381 PRINT AT W+T,F;"SUBJECTIVE OBJECTIVE";AT W+H,E;"I ........... ME";TAB E;"WE .......... US";TAB S;"YOU ......... YOU";TAB X;"HE,SHE ..... HIM,HER",TAB S;"THEY ....... THEM",TAB H;"WHO,WHOEVER . WHOM,WHOMEVER"
1382 IF CON=H THEN PRINT AT W+T,F;"[S][U][B][J][E][C][T][I][V][E]"
1383 IF CON=F THEN PRINT AT W+T,T0-U;"[O][B][J][E][C][T][I][V][E]"
1387 GOSUB X*X*W
1390 GOTO T*K
1400 FAST
1405 CLS
1410 PRINT AT H,W;"▛▀▀▀▀▀▀▀▀▀▀▜";TAB W;"▌TIMED TEST▐";TAB W;"▙▄▄▄▄▄▄▄▄▄▄▟"
1420 PRINT AT E,F;" TO START THE TEST";AT W,V;"TYPE THE CODE LETTERS";AT W+T,F;" THENPRESS ENTER"
1430 SLOW
1443 INPUT C$
1445 IF C$="LAN" THEN GOTO 1470
1450 PRINT AT T0,E;"[S][O][R][R][Y]█[W][R][O][N][G]█[C][O][D][E]"
1451 FOR N=U TO V*W
1452 NEXT N
1455 GOTO C+K
1470 LET E1=U
1495 GOTO T*K
1500 LET P=VAL F$(U TO T)
1505 LET B=VAL F$(H TO F)
1507 LET L=VAL F$(V TO X)
1510 LET R=VAL F$(S TO E)
1514 FOR N=L TO R STEP F
1515 PRINT AT P,N;"▀▀▀▀";
1516 PRINT AT B,N;"▄▄▄▄";
1520 NEXT N
1530 FOR N=P TO B
1535 PRINT AT N,L;"▌";AT N,R;"▐";
1540 NEXT N
1545 PRINT AT P,L;"▛";AT P,R;"▜";AT B,L;"▙";AT B,R;"▟";
1550 RETURN
1814 LET E1=O
1815 LET E2=O
1820 LET P1=O
1821 LET P2=O
1822 LET TD=C
1823 LET LL=O
1825 DIM R(V)
1830 DIM C(H0-U)
1836 DIM Q(V)
1841 LET NWRONG=O
1842 LET TIME=O
1843 LET NWRONG1=O
1844 LET MIN=O
1845 LET SEC=O
1850 LET TIME0=-U
1860 LET T2=O
1870 LET T1=O
1890 LET WRONG=O
1899 RETURN
1900 LET U=PI/PI
1901 LET T=U+U
1902 LET H=T+U
1903 LET F=H+U
1904 LET V=F+U
1905 LET X=V+U
1906 LET S=X+U
1907 LET E=S+U
1908 LET IX=E+U
1909 LET W=V+V
1910 LET C=W*W
1911 LET K=C*W
1912 LET O=U-U
1913 LET T0=W*T
1914 LET TT=T0+T
1916 LET H0=H*W
1917 LET FT=W+F
1918 LET J$="00050031"
1919 LET L$=" "
1920 LET Q$=L$+L$
1921 LET S$=Q$+Q$
1995 GOSUB K+T*C
1996 GOSUB T*K-T*C
1999 RETURN
2000 FAST
2001 LET UP=T*K+S*W
2003 LET CN=U
2004 LET NLEFT=NP
2005 LET CON=U
2007 LET G$="4 (NO ERRORS)"
2008 GOSUB IX*C
2200 LET CON=U
2201 LET CN=U
2209 IF NOT P1+C(CN) THEN GOTO 2220
2210 LET A$="29512[T]HE MAPS ARE SO WRINKLEDTHAT WE CANNOT MAKE NOSENSE OUT OF THEM."
2215 GOSUB T
2229 IF NOT P2 THEN GOTO 2240
2230 LET A$="23421[I]T DOESN▘T MAKE NOSENSE TO PUT WAX ONA RUSTY CAR."
2235 GOSUB T
2249 IF NOT C(CN) THEN GOTO 2260
2250 LET A$="27501[D]EBBIE CAN▘T HARDLY BEEXPECTED TO GET A FIRSTCHAIR IN THE BAND THIS YEAR."
2255 GOSUB T
2269 IF NOT E2 THEN GOTO 2280
2270 LET A$="28541[I] CANNOT ACCEPT NO MORECHECKS FOR ITEMS PURCHASEDAT THE STORE."
2275 GOSUB T
2289 IF NOT E1 THEN GOTO 2300
2290 LET A$="24434[I]T DOESN▘T MAKE ANYDIFFERENCE WHO GOESFIRST IN THIS CONTEST."
2295 GOSUB T
2300 LET CON=T
2301 LET CN=W+U
2309 IF NOT P1+C(CN) THEN GOTO 2320
2310 LET A$="21361[T]HERE▘S THE BOYSWHO TOOK MY HATAND GLOVES."
2315 GOSUB T
2329 IF NOT P2 THEN GOTO 2340
2330 LET A$="24401[W]HERE▘S THE RABBITSYOU SAID YOU HADCAUGHT?"
2335 GOSUB T
2349 IF NOT C(CN) THEN GOTO 2360
2350 LET A$="25431[D]ON▘T SHE CARE ABOUTTHE COMPLAINTS SHEHAS BEEN RECEIVING?"
2355 GOSUB T
2369 IF NOT E2 THEN GOTO 2380
2370 LET A$="28523[T]HIS ALGEBRA PROBLEM ISVERY HARD TO FIGURE OUT.[I]T DON▘T MAKE SENSE."
2375 GOSUB T
2389 IF NOT E1 THEN GOTO 2400
2390 LET A$="23404[W]HERE▘S THE FUNNY-LOOKING COAT WITHTHREE SLEEVES?"
2395 GOSUB T
2401 LET CN=W+T
2409 IF NOT P1+C(CN) THEN GOTO 2420
2410 LET A$="16274[H]ERE ARE MYKEYS FOR MYNEW AUTOMOBILE."
2415 GOSUB T
2429 IF NOT P2 THEN GOTO 2440
2430 LET A$="19341[W]HERE IS [H]ARRYAND [L]OUISE THISEVENING?"
2435 GOSUB T
2449 IF NOT C(CN) THEN GOTO 2460
2450 LET A$="17312[S]HOULD WE GOWHERE THERE ISTWO MOVIE THEATERS?"
2455 GOSUB T
2469 IF NOT E2 THEN GOTO 2480
2470 LET A$="22371[T]HERE IS AT LEASTTWO REASONS FORMY ASKING."
2475 GOSUB T
2489 IF NOT E1 THEN GOTO 2500
2490 LET A$="25424[H]ERE IS THE BEST ONEOF THE NEW MOVIESTHIS YEAR."
2495 GOSUB T
2501 LET CN=W+H
2509 IF NOT P1+C(CN) THEN GOTO 2520
2510 LET A$="26452[O]NE OF THE [B]OY [S]COUTSARE LOOKING FOR THETRAIL MARKINGS."
2515 GOSUB T
2529 IF NOT P2 THEN GOTO 2540
2530 LET A$="26451[T]HREE HOURS▘ WORK AREALL [I] AM ABLE TO DOTHIS AFTERNOON."
2535 GOSUB T
2549 IF NOT C(CN) THEN GOTO 2560
2550 LET A$="25422[T]HE PAIL OF CHERRIESARE READY TO TAKETO THE MARKET."
2555 GOSUB T
2569 IF NOT E2 THEN GOTO 2580
2570 LET A$="23422[S]IX MONTHS▘ EFFORTARE INVOLVED IN THEPAINTING OF THAT BOAT."
2575 GOSUB T
2589 IF NOT E1 THEN GOTO 2600
2590 LET A$="27484[W]HEN YOU GET A MINUTE,THE HAMPER OF CLOTHESIS READY TO GO UPSTAIRS."
2595 GOSUB T
2701 LET CN=W+V
2709 IF NOT P1+C(CN) THEN GOTO 2720
2710 LET A$="26471[M]IKE AND [P]AT IS GOINGWITH ME TO THE COUNTYFAIR THIS [S]ATURDAY."
2715 GOSUB T
2729 IF NOT P2 THEN GOTO 2740
2730 LET A$="23441[I]S THE DOG AND THECAT ABLE TO GET ALONGIN AN AUTOMOBILE?"
2735 GOSUB T
2749 IF NOT C(CN) THEN GOTO 2760
2750 LET A$="28492[A]FTER THE CLASS, EITHER[A]LICE OR [M]ARGARET AREGOING TO TAKE MY BOOKS."
2755 GOSUB T
2769 IF NOT E2 THEN GOTO 2780
2770 LET A$="21481[I]N THE BOOK IS ACOLORFUL PICTURE FROM [M]AINEAND A BRIEF HISTORY."
2775 GOSUB T
2789 IF NOT E1 THEN GOTO 2800
2790 LET A$="27474[E]ITHER THE [G]REY OR THE[B]LUE IS GOING TO WINTHE FOOTBALL GAME."
2795 GOSUB T
2800 LET CON=H
2801 LET CN=W+X
2809 IF NOT P1+C(CN) THEN GOTO 2820
2810 LET A$="17291[F]RANK AND MEARE GOING TOTHE POOL."
2815 GOSUB T
2829 IF NOT P2 THEN GOTO 2840
2830 LET A$="23434[S]HE AND [T]ERRI WERETHE BEST PAINTERS INTHE COMMUNITY."
2835 GOSUB T
2849 IF NOT C(CN) THEN GOTO 2860
2850 LET A$="19342[F]OR THE PRIZESUS GIRLS HAD TOWIN OR PLACE EACH TIME."
2855 GOSUB T
2869 IF NOT E2 THEN GOTO 2880
2870 LET A$="25411[W]HOMEVER GOES SHOULDBE OUR VERY BESTREPRESENTATIVE."
2875 GOSUB T
2889 IF NOT E1 THEN GOTO 2900
2890 LET A$="22364[W]ILL EITHER HE ORSHE BE ABLE TOMEET THE DEADLINE?"
2895 GOSUB T
2900 LET CON=F
2901 LET CN=T0-U
2909 IF NOT P1+C(CN) THEN GOTO 2920
2910 LET A$="23493[T]HERE SHOULD BE NOREASON FOR ANY DIFFERENCESTO OCCUR BETWEEN YOU AND [I]."
2915 GOSUB T
2929 IF NOT P2 THEN GOTO 2940
2930 LET A$="28473[W]ILL YOUR OLDER BROTHERBE ABLE TO ACT AS ACHAPERON FOR YOU AND [I]?"
2935 GOSUB T
2949 IF NOT C(CN) THEN GOTO 2960
2950 LET A$="28493[A]LL OF THE DONUTS WHICHWE COOKED WERE SHAREDWITH [S]ARA AND SHE."
2955 GOSUB T
2969 IF NOT E2 THEN GOTO 2980
2970 LET A$="29552[I]F WE TAKE ALL THE MONEYSAVED BY YOU AND HE, A NEWCAR COULD BE PURCHASED."
2975 GOSUB T
2989 IF NOT E1 THEN GOTO 3000
2990 LET A$="29524[J]UST BETWEEN YOU AND ME,[I] DO NOT THINK OUR POORTEAM HAS A CHANCE."
2995 GOSUB T
3000 LET CON=V
3001 LET CN=T0+H
3009 IF NOT P1+C(CN) THEN GOTO 3020
3010 LET A$="23434[T]HE DOG APPEARS TOFIND HIS BONES AFTERHE BURIES THEM."
3015 GOSUB T
3029 IF NOT P2 THEN GOTO 3040
3030 LET A$="23403[B]OTH THE [B]LUE TEAMAND THE [G]REY TEAMWON ITS GAMES."
3035 GOSUB T
3049 IF NOT C(CN) THEN GOTO 3060
3050 LET A$="23402[E]ITHER [P]AUL OR [S]AMHAS THEIR NUMBERSREVERSED."
3055 GOSUB T
3069 IF NOT E2 THEN GOTO 3080
3070 LET A$="23414[J]ACK AND [M]ARY SHOWEXCELLENT POISE INTHEIR ACTING ROLES."
3075 GOSUB T
3089 IF NOT E1 THEN GOTO K*V
3090 LET A$="23423[N]EITHER CHERRY NORSTRAWBERRY HAS LOSTTHEIR FLAVOR."
3095 GOSUB T
5000 IF P1<>U THEN GOTO 5005
5001 LET P1=O
5002 LET P2=U
5004 GOTO T*K+C
5005 IF E1<>U THEN GOTO 5030
5006 LET E1=O
5007 LET E2=U
5008 GOTO T*K+C
5030 LET R=W+X-NWRONG
5032 LET R(U)=T-Q(U)
5034 LET R(T)=E-Q(T)
5036 LET R(H)=T-Q(H)
5038 LET R(F)=T-Q(F)
5040 LET R(V)=T-Q(V)
5044 GOTO C*H
5100 SCROLL
5101 SCROLL
5102 SCROLL
5103 SCROLL
5104 RETURN
6000 CLEAR
6005 SAVE "LAN[1]"
6010 RUN
1 GOTO 1000
6 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));A$(VAL A$(H TO F) TO VAL A$(V TO X));A$(VAL A$(S TO E) TO VAL A$(IX TO W));AT W+V,O;A$(VAL A$(W+U TO W+T) TO )
7 RETURN
9 PRINT AT W+F,O;A$(TT TO VAL A$(IX TO W));AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(W+U TO W+T) TO )
10 RETURN
12 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));AT W+X,O;A$(VAL A$(H TO F) TO );AT W+S,VAL (A$(W+H TO W+F));"1";TAB VAL (A$(W+V TO W+X));"2"
13 LET X$=A$(VAL A$(S TO E) TO VAL A$(IX TO W))
14 RETURN
15 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));AT W+V,O;A$(VAL A$(H TO F) TO VAL A$(V TO X));A$(VAL A$(S TO E) TO VAL A$(IX TO W));A$(VAL A$(W+U TO W+T) TO )
17 RETURN
18 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));AT W+X,O;"(";A$(VAL A$(H TO F) TO );AT W+S,VAL (A$(W+H TO W+F));"1";TAB VAL (A$(W+V TO W+X));"2"
20 RETURN
21 PRINT AT W+F,O;A$(TT TO VAL A$(V TO X));")";AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(S TO E) TO )
22 RETURN
24 PRINT AT W+F,O;A$(TT TO VAL A$(U TO T));A$(VAL A$(H TO F) TO VAL (A$(V TO X)));AT W+V,O;A$(VAL A$(S TO E) TO )
25 RETURN
27 PRINT AT W+F,O;"(";A$(VAL A$(H TO F) TO VAL A$(IX TO W));AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(W+U TO W+T) TO )
28 RETURN
30 PRINT AT W+F,O;A$(VAL A$(H TO F) TO VAL A$(V TO X));A$(VAL A$(S TO E) TO VAL A$(IX TO W));AT W+V,O;A$(VAL A$(W+U TO W+T) TO )
31 RETURN
33 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));AT W+V,O;A$(VAL A$(S TO E) TO VAL A$(IX TO W));A$(VAL A$(W+U TO W+T) TO )
34 LET X$=A$(VAL A$(S TO E) TO VAL A$(IX TO W))
35 RETURN
36 PRINT AT W+F,O;A$(TT TO VAL A$(IX TO W));AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(W+U TO W+T) TO )
37 RETURN
39 PRINT AT W+F,O;A$(TT TO VAL A$(U TO T));A$(VAL A$(H TO F) TO VAL (A$(V TO X)));AT W+V,O;A$(VAL A$(W+U TO W+T) TO )
40 RETURN
42 PRINT AT W+F,O;A$(TT TO VAL A$(IX TO W));AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(W+U TO W+T) TO )
43 RETURN
79 SLOW
80 IF INKEY$ <>"" THEN GOTO E*W
82 IF INKEY$ ="" THEN GOTO E*W+T
83 FAST
84 LET C$=INKEY$
85 IF C$=CHR$ 118 THEN GOTO K+C
86 RETURN
100 SLOW
101 IF INKEY$ <>"" THEN GOTO C+U
102 LET C$=""
103 IF INKEY$ <>"" THEN LET C$=INKEY$
104 IF C$<>"" THEN GOTO C+C/T
105 IF NOT E1+E2 THEN GOTO C+T
110 LET T2=PEEK 16437
115 LET TICK=(T2<>T1)
120 IF NOT TICK THEN GOTO C+T
125 LET T1=T2
130 LET TIME=TIME+.071111
135 IF TIME-TIME0<U/X THEN GOTO C+T
140 LET TIME0=TIME
141 LET MIN=INT TIME0
142 LET SEC=W*INT (X*(TIME0-MIN))
143 PRINT AT U,H0-V;MIN;":";SEC
145 GOTO C+T
150 LET IK=O
152 IF C$=CHR$ 118 THEN GOTO C+K
153 FAST
155 IF C$<>A$(TT-U) THEN RETURN
160 LET IK=U
162 RETURN
200 IF IK=U THEN GOTO K/F
201 IF NOT E1+E2 THEN GOTO T*C+F
202 LET NWRONG=NWRONG+U
203 GOTO 272
204 CLS
205 LET WRONG=U
206 GOSUB VAL A$(T0-U TO T0)
207 PRINT AT E,O;"THE CORRECT WORD IS...";AT W,(T0-U-LEN X$)/T;"-";X$;"-"
208 GOSUB E*C
220 GOSUB X*X*W
233 FAST
234 LET DONE=U
235 LET NWRONG1=NWRONG1+U
237 LET NWRONG=NWRONG+U
238 IF CON THEN LET Q(CON)=Q(CON)+U
240 GOTO 270
250 IF NOT E1+E2 THEN GOTO 255
252 GOTO 273
255 CLS
256 LET F$="07110920"
257 GOSUB K*H/T
258 PRINT AT IX,W+T;"[C][O][R][R][E][C][T]"
259 LET F$="15170427"
260 GOSUB K*H/T
261 PRINT AT W+X,X;NP-NLEFT+U;" DONE; ";NLEFT-U;" TO GO"
265 GOSUB X*X*W
270 LET WRONG=O
271 GOTO 273
272 LET Q(CON)=Q(CON)+U
273 LET DONE=U
275 LET NLEFT=NLEFT-U
276 IF NLEFT=O THEN GOTO K*V
280 RETURN
300 CLS
302 LET A$=" OUT OF "
305 IF E1+E2+P1+P2 THEN GOTO 315
306 LET F$="03200427"
307 GOSUB K*H/T
311 PRINT AT V,S;"YOUR SCORE CARD",AT IX,IX;NP-NWRONG1;AT IX,W+T;" RIGHT",AT W+H,IX;NWRONG;AT W+H,W+T;" WRONG "
312 GOSUB X*X*W
313 GOTO K+C
320 LET F$="00200031"
321 GOSUB K*H/T
322 FAST
323 PRINT AT T,W;"TEST RESULTS";AT F,W+X;"SCORE";TAB T0+F;"PERCENT";
324 IF P1+P2 THEN PRINT AT U,W+T;"PRACTICE"
325 PRINT AT W+T,T;"MAY AND CAN";TAB W+F;R(U);A$;T;TAB T0+S;INT (C*R(U)/T)
327 PRINT AT IX,T;"IRREGULAR";TAB T;"VERB FORMS";TAB W+F;R(T);A$;F;TAB T0+S;INT (C*R(T)/F)
329 PRINT AT X,T;"CONSISTENCY";TAB T;"OF TENSE";TAB W+F;R(H);A$;T;TAB T0+S;INT (C*R(H)/T)
332 PRINT AT W+V,H;"TOTAL";TAB W+F;E-NWRONG;A$;E;TAB T0+S;INT (C*(E-NWRONG)/E+.5)
333 IF E1+E2 THEN PRINT AT T0-U,E;"TIME USED ";MIN;":";SEC
334 GOSUB X*X*W
340 GOTO K+C
360 PRINT AT T0+U,X;"[P][R][E][S][S]█[C]█[T][O]█[C][O][N][T][I][N][U][E]"
362 GOSUB E*W-U
365 RETURN
700 CLS
710 RETURN
800 LET F$="00050031"
805 IF CON=U THEN PRINT AT U,U;K$(T),TAB U;K$(H),TAB U;K$(V),TAB U;K$(X)
807 IF CON=T THEN PRINT AT U,U;K$(S),TAB U;K$(E),TAB U;K$(IX),TAB U;K$(W)
808 IF CON=H THEN PRINT AT U,U;K$(W+V),TAB U;K$(W+X),TAB U;K$(W+S),TAB U;K$(W+E)
812 IF CON=F THEN PRINT AT U,U;K$(T0),TAB U;K$(T0+U),TAB U;K$(T0+T),TAB U;K$(T0+H)
815 GOSUB K*H/T
850 RETURN
900 CLS
905 LET F$="01200229"
910 GOSUB K*H/T
915 PRINT AT T,W+U;"DIRECTIONS",AT F,F;"1 YOU WILL BE GIVEN",TAB X;"ONE OR MORE SENTENCES";AT S,F;"2 THERE WILL BE A CHOICE",TAB X;"OF TWO POSSIBLE WORDS";AT W,F;"3 PUSH THE NUMBER OF",TAB X;"THE CORRECT WORD"
930 PRINT AT W+F,F;"WORDS BEGINNING WITH",TAB F;"CAPITALS APPEAR AS";TAB F;"FOLLOWS:",AT T0-T,F;"[M]R. [M]RS. [G]EORGE"
933 LET TD=C/T
934 GOSUB X*X*W
935 RETURN
1003 SLOW
1010 GOSUB 1900
1012 SCROLL
1014 PRINT TAB H;"LANGUAGE USAGE"
1015 GOSUB K*V+C+U
1045 PRINT TAB T0;"MASTER"
1046 GOSUB K*V+C
1053 LET F$="12160019"
1054 GOSUB K*H/T
1055 LET F$="15191728"
1056 GOSUB K*H/T
1057 PRINT AT W+V,T0-U;"▜";AT W+X,T0-H;"▙"
1058 SCROLL
1059 SCROLL
1074 PRINT TAB W+T;"PART II"
1075 SCROLL
1076 SCROLL
1083 PRINT TAB S;"GRADES 4 THRU 12"
1085 GOSUB K*V+C
1091 SCROLL
1093 PRINT TAB T;"SOFTWARE FOR EXCELLENCE"
1094 SCROLL
1095 PRINT AT W+IX,T;"COPYRIGHT 1982 BY";AT V,H0-U;"TM"
1097 PAUSE H*C
1102 FAST
1103 GOSUB T*K-E*W
1105 CLS
1107 LET F$="00190031"
1110 GOSUB K*H/T
1112 LET Z$="▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
1114 PRINT AT T,V;"LANGUAGE USAGE PART II";AT F,U;Z$;Z$;AT V,T;"PREPARATION - RULES";TAB U;"▀▀▀▀▀▀";Z$;AT E,V;"1 CONSISTENCY OF TENSE";AT IX,V;"2 IRREGULAR VERB FORMS";TAB V;"3 MAY AND CAN";AT W+H,U;Z$;Z$;TAB T;"TRAINING CAMP";TAB U;Z$;AT W+S,V;"4 TEST PRACTICE",TAB V;"5 TIMED TEST"
1120 PRINT AT T0,S;"[C][H][O][O][S][E]█[A]█[N][U][M][B][E][R]"
1125 GOSUB T*K-C*T
1130 GOSUB E*W-U
1132 LET L=CODE C$-T*W-E
1135 IF L<U OR L>V THEN GOTO 1130
1140 IF L<=H THEN GOTO 1158
1141 FAST
1142 IF L<>F THEN GOTO 1155
1152 LET P1=U
1153 LET NP=E
1154 GOTO T*K
1155 LET E1=U
1156 LET NP=E
1157 GOTO K+C*F
1158 LET CON=F-L
1165 GOTO 1260
1200 DIM K$(T0+H,T0+IX)
1210 LET K$(U)=" MAY AND CAN"
1211 LET K$(T)="MAY AND MIGHT IMPLY"
1212 LET K$(H)=" PERMISSION TO DO SOMETHING"
1213 LET K$(F)=" "
1214 LET K$(V)="CAN AND COULD IMPLY "
1215 LET K$(X)=" CAPABILITY TO DO SOMETHING"
1216 LET K$(S)="IRREGULAR VERBS DO NOT SHOW"
1217 LET K$(E)=" PAST TENSE BY SIMPLY ADDING"
1218 LET K$(IX)=" -ED, -T, OR -D TO THE"
1219 LET K$(W)=" PRESENT TENSE"
1220 LET K$(W+U)="YOUR MEMORY OF THE PRINCIPAL"
1221 LET K$(W+T)=" PARTS OF IRREGULAR VERBS"
1222 LET K$(W+H)=" WILL BE TESTED IN THE WORK"
1223 LET K$(W+F)=" TO FOLLOW"
1224 LET K$(W+V)="MAKE THE TENSE OF A VERB"
1225 LET K$(W+X)=" CONSISTENT WITH THE PRESENT,"
1226 LET K$(W+S)=" PAST,OR FUTURE TENSE IMPLIED"
1227 LET K$(W+E)=" BY THE REST OF THE SENTENCE"
1228 LET K$(T0-U)=" ACCEPT AND EXCEPT"
1229 LET K$(T0)="ACCEPT IS A VERB MEANING TO"
1230 LET K$(T0+U)=" AGREE WITH OR TO RECEIVE"
1231 LET K$(T0+T)="EXCEPT IS A PREPOSITION"
1232 LET K$(T0+H)=" MEANING LEAVE OUT"
1259 RETURN
1260 GOSUB T*IX*C
1270 IF CON<>U THEN GOTO K+C*H-T0
1272 LET C(U)=U
1273 LET C(T)=T
1274 LET C(V)=T
1275 LET NP=H
1277 GOTO 1330
1280 IF CON<>T THEN GOTO K+C*H-W
1281 LET C(S)=F
1283 LET C(W+U)=F
1286 LET NP=F
1288 GOTO 1330
1290 IF CON<>H THEN GOTO K+C*H
1293 LET C(W+V)=F
1297 LET NP=T
1300 IF CON<>F THEN GOTO 1330
1302 LET C(T0-U)=U
1304 LET C(T0)=T
1306 LET C(T0+T)=T
1308 LET NP=T
1330 CLS
1331 LET F$="01200031"
1332 GOSUB K*H/T
1333 PRINT AT T,E;"RULES COVERED",TAB U;Z$;Z$;
1334 IF CON=U THEN GOTO 1341
1335 LET M=E
1336 IF CON=H THEN PRINT AT X,F;"CONSISTENCY OF TENSE"
1337 IF CON=T THEN PRINT AT X,X;"IRREGULAR VERBS"
1338 GOTO 1342
1341 LET M=X
1342 FOR N=U TO T0+H
1343 IF NOT C(N) THEN GOTO 1355
1344 PRINT AT M,T;K$(N)
1345 IF C(N)<T THEN GOTO 1354
1346 LET M=M+U
1347 PRINT AT M,T;K$(N+U)
1348 IF C(N)<H THEN GOTO 1354
1349 LET M=M+U
1350 PRINT AT M,T;K$(N+T)
1351 IF C(N)<F THEN GOTO 1354
1352 LET M=M+U
1353 PRINT AT M,T;K$(N+H)
1354 LET M=M+T
1355 NEXT N
1359 GOSUB X*X*W
1360 IF C(S) THEN GOSUB K*F
1380 GOTO T*K
1400 FAST
1405 CLS
1410 PRINT AT H,W;"▛▀▀▀▀▀▀▀▀▀▀▜";TAB W;"▌TIMED TEST▐";TAB W;"▙▄▄▄▄▄▄▄▄▄▄▟"
1420 PRINT AT E,V;"TO START THE TEST";AT W,V;"TYPE THE CODE LETTERS";AT W+T,V;"THEN PRESS ENTER"
1430 SLOW
1445 INPUT T$
1448 IF T$="LAN" THEN GOTO 1470
1450 PRINT AT T0,E;"[S][O][R][R][Y]█[W][R][O][N][G]█[C][O][D][E]"
1451 LET TD=W
1452 GOSUB X*X*W
1455 GOTO C+K
1470 LET E1=U
1495 GOTO T*K
1500 LET P=VAL F$(U TO T)
1505 LET B=VAL F$(H TO F)
1507 LET L=VAL F$(V TO X)
1510 LET R=VAL F$(S TO E)
1514 FOR N=L TO R STEP F
1515 PRINT AT P,N;"▀▀▀▀";
1516 PRINT AT B,N;"▄▄▄▄";
1517 IF INKEY$ ="F" THEN FAST
1518 IF INKEY$ ="S" THEN SLOW
1520 NEXT N
1530 FOR N=P TO B
1535 PRINT AT N,L;"▌";AT N,R;"▐"
1537 IF INKEY$ ="F" THEN FAST
1538 IF INKEY$ ="S" THEN SLOW
1540 NEXT N
1545 PRINT AT P,L;"▛";AT P,R;"▜";AT B,L;"▙";AT B,R;"▟"
1550 RETURN
1814 LET E1=O
1816 LET E2=O
1818 LET P2=O
1820 LET P1=O
1825 DIM R(F)
1830 DIM C(T0+H)
1836 DIM Q(F)
1841 LET NWRONG=O
1842 LET TIME=O
1843 LET NWRONG1=O
1844 LET MIN=O
1845 LET SEC=O
1850 LET TIME0=-U
1860 LET T2=O
1870 LET T1=O
1890 LET WRONG=O
1899 RETURN
1900 LET U=PI/PI
1901 LET T=U+U
1902 LET H=T+U
1903 LET F=H+U
1904 LET V=F+U
1905 LET X=V+U
1906 LET S=X+U
1907 LET E=S+U
1908 LET IX=E+U
1909 LET W=V+V
1910 LET C=W*W
1911 LET K=C*W
1912 LET O=U-U
1913 LET T0=W*T
1914 LET K=C*W
1915 LET TT=T0+T
1916 LET H0=H*W
1917 LET FT=W+F
1918 LET J$="00050031"
1919 LET L$=" "
1995 GOSUB K+T*C
1996 GOSUB T*K-T*C
1999 RETURN
2000 FAST
2001 LET UP=T*K+S*W
2002 GOSUB K-C
2003 LET CN=T
2004 LET NLEFT=NP
2007 CLS
2008 LET CON=U
2009 IF NOT P1+C(CN) THEN GOTO 2020
2011 LET A$="222729314849020642302([C]AN [M]AY) [I] GO TO THE MOVIEAFTER [I] FINISH MY MUSIC LESSON?"
2012 GOSUB UP
2020 LET CN=V
2025 IF NOT P2 THEN GOTO 2045
2028 LET A$="222729314748020642302([C]AN [M]AY) [I] START WATCHINGTHE BALL GAME NOW?"
2030 GOSUB UP
2045 IF NOT E1 THEN GOTO 2100
2046 LET A$="454645474955020612151[D]ID YOU DECIDE WHETHER [I](MAY CAN) GO OR NOT?"
2048 GOSUB UP
2055 GOTO 2100
2070 CLS
2071 IF NOT E1+E2+P2+P1 THEN GOSUB K-T*C
2072 IF E1+E2 THEN PRINT AT U,W+V;"TIME USED ";MIN;":";SEC
2073 IF NP-NLEFT>=H AND CN<>V THEN GOTO 2075
2074 PRINT AT E,F;"SELECT THE CORRECT WORD"
2075 PRINT AT W+U,O;
2076 LET X$=A$(VAL A$(H TO F) TO VAL A$(V TO X))
2077 GOSUB VAL A$(W+S TO W+E)
2080 SLOW
2085 GOSUB C
2090 GOSUB C*T
2092 IF DONE=U THEN RETURN
2094 IF DONE=T THEN GOTO C*C-U
2097 GOTO 2085
2100 IF NOT E2 THEN GOTO 2140
2103 LET A$="262830364344071109061[W]HEN (CAN MAY) YOU GETTHE LAWN MOWER WORKING?"
2105 GOSUB UP
2140 LET CN=T
2145 IF NOT C(CN) THEN GOTO 2395
2146 LET A$="242628345051050909061[H]E (CAN MAY) CARRY A FOOTBALLAS WELL AS ANYONE."
2150 GOSUB UP
2160 LET A$="222325315354020642301([C]AN [M]AY) YOU MAKE A DECISION ASTO WHO IS THE BEST CANDIDATE?"
2165 GOSUB UP
2395 LET CN=S
2396 LET CON=T
2397 IF NOT P1+C(CN) THEN GOTO 2445
2398 LET A$="243336384546061209062[H]E (BEARED BORE) UP WELLUNDER THE LOAD."
2400 GOSUB UP
2445 IF NOT P2 THEN GOTO 2495
2446 LET A$="324043454748141909062[T]HE CHORUS (RISED ROSE) TOSING."
2450 GOSUB UP
2495 IF NOT E1 THEN GOTO 2545
2496 LET A$="314043454950131909062[T]HE GIRLS (SINGED SANG) WITHUNUSUAL CLARITY."
2500 GOSUB UP
2545 IF NOT E2 THEN GOTO 2575
2546 LET A$="242629374647051109061[H]E (FLED FLEED) THE SCENEOF THE ACCIDENT."
2550 GOSUB UP
2575 IF NOT C(CN) THEN GOTO 2595
2576 LET A$="495158596466041118332[T]HE CROPS IN THE GARDEN WERE(FREEZED FROZEN) BY THE COLD."
2580 GOSUB UP
2597 IF NOT P1+C(CN) THEN GOTO 2645
2598 LET A$="374447495051182321242[T]HE VISITOR HAD (RANG RUNG)THE BELL SEVERAL TIMES."
2600 GOSUB UP
2645 IF NOT P2 THEN GOTO 2655
2646 LET A$="303843454849121809062[H]AD THEY (CHOSE CHOSEN) THERED, THEY WOULD HAVE WON."
2650 GOSUB UP
2695 IF NOT E1 THEN GOTO 2745
2696 LET A$="293134414344101509061[S]HE HAS (SWUM SWAM) ATNEAR RECORD SPEED."
2700 GOSUB UP
2745 IF NOT E2 THEN GOTO 2755
2746 LET A$="283641435253101609062[H]AD HE (BROKE BROKEN) THE SEAL,THE GAS WOULD HAVE ESCAPED."
2750 GOSUB UP
2775 IF NOT C(CN) THEN GOTO 2785
2776 LET A$="364450525354182521242[T]HE FARMER HAS (WROTE WRITTEN)TO THE TRUCK MANUFACTURER."
2780 GOSUB UP
2785 LET CN=W+V
2786 LET CON=H
2796 IF NOT P1+C(CN) THEN GOTO 2805
2797 LET A$="333941434445141821242[Y]ESTERDAY [I] (SEE SAW)THE STORM COMING."
2800 GOSUB UP
2845 IF NOT P2 THEN GOTO 2895
2846 LET A$="454749505254010518332[T]HE [G]OLDEN [A]GE OF [G]REECE(IS WAS) LONG AGO."
2850 GOSUB UP
2895 IF NOT E1 THEN GOTO 2915
2896 LET A$="252728344243050909061[N]OW (IS WAS) THE BESTTIME TO ORDER SEED."
2900 GOSUB UP
2915 IF NOT E2 THEN GOTO 2925
2916 LET A$="252728344243050909061[H]OW (IS WAS) THE PLAYPRACTICE CURRENTLY GOING?"
2917 GOSUB UP
2930 IF NOT C(CN) THEN GOTO V*K
2931 LET A$="464850575859020618151[T]HE ARTS IN [G]REAT [B]RITAIN(ARE WERE) SUPPORTED NOW."
2932 GOSUB UP
4000 GOSUB K*F+C
4002 PRINT AT S,IX;"[R][E][G][U][L][A][R]█[V][E][R][B][S]";AT W+H,U;"WALK";TAB W;"WALKED";TAB T0+U;"WALKED";AT W+V,U;"TOSS";TAB W;"TOSSED";TAB T0+U;"TOSSED";AT W+S,U;"LISTEN";TAB W;"LISTENED";TAB T0+U;"LISTENED"
4004 LET TD=C
4006 GOSUB W*X*X
4008 GOSUB K*F+C
4010 PRINT AT S,E;"[I][R][R][E][G][U][L][A][R]█[V][E][R][B][S]";AT W+H,U;"SING";TAB W+U;"SANG";TAB TT;"SUNG";AT W+V,U;"BURST";TAB W+1;"BURST";TAB TT;"BURST";AT W+S,U;"FEEL";TAB W+U;"FELT";TAB TT;"FELT"
4012 GOSUB W*X*X
4014 RETURN
4100 CLS
4102 PRINT AT U,E;"EXAMPLES OF THE";AT T,S;"PRINCIPAL PARTS OF";AT H,T;"REGULAR AND IRREGULAR VERBS";AT IX,O;"PRESENT";TAB W+U;"PAST";TAB TT;"PAST"," TENSE";TAB W;"TENSE";TAB W+IX;"PARTICIPLE"
4104 RETURN
5000 IF P1<>U THEN GOTO 5005
5001 LET P1=O
5002 LET P2=U
5004 GOTO T*K+E
5005 IF E1<>U THEN GOTO 5014
5006 LET E2=U
5007 LET E1=O
5008 GOTO T*K+E
5014 LET R=E-NWRONG
5015 LET R(U)=T-Q(U)
5016 LET R(T)=F-Q(T)
5017 LET R(H)=T-Q(H)
5018 LET R(F)=T-Q(F)
5020 GOTO C*H
5100 SCROLL
5101 SCROLL
5102 SCROLL
5103 SCROLL
5104 RETURN
6000 CLEAR
6005 SAVE "LAN[2]"
6010 RUN
9998 PRINT PEEK 16412+256*PEEK 16413-16384
1 GOTO 1000
6 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));A$(VAL A$(H TO F) TO VAL A$(V TO X));A$(VAL A$(S TO E) TO VAL A$(IX TO W));AT W+V,O;A$(VAL A$(W+U TO W+T) TO )
7 RETURN
9 PRINT AT W+F,O;A$(TT TO VAL A$(IX TO W));AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(W+U TO W+T) TO )
10 RETURN
12 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));AT W+X,O;A$(VAL A$(H TO F) TO );AT W+S,VAL (A$(W+H TO W+F));"1";TAB VAL (A$(W+V TO W+X));"2"
13 LET X$=A$(VAL A$(S TO E) TO VAL A$(IX TO W))
14 RETURN
15 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));AT W+V,O;A$(VAL A$(H TO F) TO VAL A$(V TO X));A$(VAL A$(S TO E) TO VAL A$(IX TO W));A$(VAL A$(W+U TO W+T) TO )
17 RETURN
18 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));AT W+X,O;"(";A$(VAL A$(H TO F) TO );AT W+S,VAL (A$(W+H TO W+F));"1";TAB VAL (A$(W+V TO W+X));"2"
20 RETURN
21 PRINT AT W+F,O;A$(TT TO VAL A$(V TO X));")";AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(S TO E) TO )
22 RETURN
24 PRINT AT W+F,O;A$(TT TO VAL A$(U TO T));A$(VAL A$(H TO F) TO VAL (A$(V TO X)));AT W+V,O;A$(VAL A$(S TO E) TO )
25 RETURN
27 PRINT AT W+F,O;"(";A$(VAL A$(H TO F) TO VAL A$(IX TO W));AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(W+U TO W+T) TO )
28 RETURN
30 PRINT AT W+F,O;A$(VAL A$(H TO F) TO VAL A$(V TO X));A$(VAL A$(S TO E) TO VAL A$(IX TO W));AT W+V,O;A$(VAL A$(W+U TO W+T) TO )
31 RETURN
33 PRINT AT W+F,O;A$(TT TO (VAL A$(U TO T)));AT W+V,O;A$(VAL A$(S TO E) TO VAL A$(IX TO W));A$(VAL A$(W+U TO W+T) TO )
34 LET X$=A$(VAL A$(S TO E) TO VAL A$(IX TO W))
35 RETURN
36 PRINT AT W+F,O;A$(TT TO VAL A$(IX TO W));AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(W+U TO W+T) TO )
37 RETURN
39 PRINT AT W+F,O;A$(TT TO VAL A$(U TO T));A$(VAL A$(H TO F) TO VAL (A$(V TO X)));AT W+V,O;A$(VAL A$(W+U TO W+T) TO )
40 RETURN
42 PRINT AT W+F,O;A$(TT TO VAL A$(IX TO W));AT W+V,VAL A$(W+H TO W+F);"1";AT W+V,VAL A$(W+V TO W+X);"2";AT W+S,O;A$(VAL A$(W+U TO W+T) TO )
43 RETURN
79 SLOW
80 IF INKEY$ <>"" THEN GOTO E*W
82 IF INKEY$ ="" THEN GOTO E*W+T
83 FAST
84 LET C$=INKEY$
85 IF C$=CHR$ 118 THEN GOTO C0+C
86 RETURN
100 SLOW
101 IF INKEY$ <>"" THEN GOTO C+U
102 LET C$=""
103 IF INKEY$ <>"" THEN LET C$=INKEY$
104 IF C$<>"" THEN GOTO C+C/T
105 IF NOT E1+E2 THEN GOTO C+T
110 LET T2=PEEK 16437
115 LET TICK=(T2<>T1)
120 IF NOT TICK THEN GOTO C+T
125 LET T1=T2
130 LET TIME=TIME+.071111
135 IF TIME-TIME0<U/X THEN GOTO C+T
140 LET TIME0=TIME
141 LET MIN=INT TIME0
142 LET SEC=W*INT (X*(TIME0-MIN))
143 PRINT AT U,H0-V;MIN;":";SEC
145 GOTO C+T
150 LET IK=O
152 IF C$=CHR$ 118 THEN GOTO C+C0
153 FAST
155 IF C$<>A$(TT-U) THEN RETURN
160 LET IK=U
162 RETURN
200 IF IK=U THEN GOTO C0/F
201 IF NOT E1+E2 THEN GOTO T*C+F
202 LET NWRONG=NWRONG+U
203 GOTO 272
204 CLS
205 LET WRONG=U
206 GOSUB VAL A$(T0-U TO T0)
207 PRINT AT E,O;"THE CORRECT WORD IS...";AT W,(T0-U-LEN X$)/T;"-";X$;"-"
208 GOSUB E*C
210 GOSUB X*X*W
233 FAST
234 LET DONE=U
235 LET NWRONG1=NWRONG1+U
237 LET NWRONG=NWRONG+U
238 IF CON THEN LET Q(CON)=Q(CON)+U
240 GOTO 270
250 IF NOT E1+E2 THEN GOTO 255
252 GOTO 273
255 CLS
256 LET F$="07110920"
257 GOSUB C0*H/T
258 PRINT AT IX,W+T;"[C][O][R][R][E][C][T]"
259 LET F$="15170427"
260 GOSUB C0*H/T
261 PRINT AT W+X,X;NP-NLEFT+U;" DONE; ";NLEFT-U;" TO GO"
265 GOSUB X*X*W
270 LET WRONG=O
271 GOTO 273
272 LET Q(CON)=Q(CON)+U
273 LET DONE=U
275 LET NLEFT=NLEFT-U
276 IF NLEFT=O THEN GOTO C0*V
280 RETURN
300 CLS
302 LET A$=" OUT OF "
305 IF P1+P2+E1+E2 THEN GOTO H*C+T0
306 LET F$="03200427"
307 GOSUB C0*H/T
311 PRINT AT V,S;"YOUR SCORE CARD",AT IX,IX;NP-NWRONG1;AT IX,W+T;" RIGHT",AT W+H,IX;NWRONG;AT W+H,W+T;" WRONG "
312 GOSUB X*X*W
313 GOTO C0+C
320 LET F$="00200031"
321 GOSUB C0*H/T
322 FAST
323 PRINT AT H,W;"TEST RESULTS";AT V,W+X;"SCORE";TAB T0+F;"PERCENT";
324 IF P1+P2 THEN PRINT AT T,W+T;"PRACTICE"
325 PRINT AT S,U;"HOMONYMS";TAB W+H;R(U);A$;X;TAB T0+X;INT (C*R(U)/X)
327 PRINT AT IX,U;"LAY AND LIE";TAB W+H;R(T);A$;F;TAB T0+X;INT (C*R(T)/F)
329 PRINT AT W+U,U;"SET AND SAT";TAB W+H;R(H);A$;F;TAB T0+X;INT (C*R(H)/F)
330 PRINT AT W+H,U;"AMONG AND";AT W+F,T;"BETWEEN";TAB W+H;R(F);A$;T;TAB T0+X;INT (C*R(F)/T)
332 PRINT AT W+S,H;"TOTAL";TAB W+T;W+X-NWRONG;A$;W+X;TAB T0+X;INT (C*(W+X-NWRONG)/(W+X)+.5)
333 IF E1+E2 THEN PRINT AT T0-U,E;"TIME USED ";MIN;":";SEC
334 GOSUB X*X*W
340 GOTO C0+C
360 PRINT AT T0+U,X;"[P][R][E][S][S]█[C]█[T][O]█[C][O][N][T][I][N][U][E]"
361 SLOW
362 GOSUB E*W-U
363 FAST
365 RETURN
700 CLS
710 RETURN
800 LET F$="00040031"
801 IF CON=F THEN LET F$="00050031"
803 IF CON=U THEN PRINT AT U,U;K$(U),TAB U;K$(T),TAB U;K$(H)
804 IF CON=T THEN PRINT AT U,U;K$(IX),TAB U;K$(H+W)
805 IF CON=H THEN PRINT AT U,U;K$(W+E),TAB U;K$(W+IX),TAB U;K$(T0)
806 IF CON=F THEN PRINT AT U,U;K$(T0+H),TAB U;K$(T0+F),TAB U;K$(T0+V),TAB U;K$(T0+X)
810 GOSUB C0*H/T
850 RETURN
900 CLS
905 LET F$="01200229"
910 GOSUB C0*H/T
915 PRINT AT T,W+U;"DIRECTIONS",AT F,F;"1 YOU WILL BE GIVEN",TAB X;"ONE OR MORE SENTENCES";AT S,F;"2 THERE WILL BE A CHOICE",TAB X;"OF TWO POSSIBLE WORDS";AT W,F;"3 PUSH THE NUMBER OF",TAB X;"THE CORRECT WORD"
930 PRINT AT W+F,F;"WORDS BEGINNING WITH",TAB F;"CAPITALS APPEAR AS";TAB F;"FOLLOWS:",AT T0-T,F;"[M]R. [M]RS. [G]EORGE"
934 GOSUB X*X*W
935 RETURN
1003 SLOW
1010 GOSUB 1900
1012 SCROLL
1014 PRINT TAB H;"LANGUAGE USAGE"
1015 GOSUB C0*V+C+U
1045 PRINT TAB T0;"MASTER"
1046 GOSUB C0*V+C
1053 LET F$="12160019"
1054 GOSUB C0*H/T
1055 LET F$="15191728"
1056 GOSUB C0*H/T
1057 PRINT AT W+V,T0-U;"▜";AT W+X,T0-H;"▙";AT W+V,H0-U;"TM"
1058 SCROLL
1059 SCROLL
1074 PRINT TAB W+U;"PART III"
1075 SCROLL
1076 SCROLL
1083 PRINT TAB S;"GRADES 4 THRU 12"
1085 GOSUB C0*V+C
1089 PRINT TAB T;"SOFTWARE FOR EXCELLENCE"
1092 PRINT AT T0,T;"COPYRIGHT 1982 BY"
1094 SCROLL
1095 PAUSE H*C
1102 FAST
1103 GOSUB T*K-E*W
1105 CLS
1107 LET F$="00200031"
1110 GOSUB C0*H/T
1112 LET Z$="▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
1114 PRINT AT T,F;"LANGUAGE USAGE PART III";AT F,U;"▀▀";Z$;Z$;AT V,T;"PREPARATION - RULES";TAB U;"▀▀▀▀▀▀▀";Z$;AT E,V;"1 HOMONYMS";AT IX,V;"2 LAY AND LIE";AT W,V;"3 SET AND SIT";AT W+U,V;"4 AMONG AND BETWEEN";AT W+H,U;"▀▀";Z$;Z$;TAB T;"TRAINING CAMP";AT W+V,U;"▀";Z$;AT W+S,V;"5 TEST PRACTICE",TAB V;"6 TIMED TEST"
1120 PRINT AT T0+U,S;"[C][H][O][O][S][E]█[A]█[N][U][M][B][E][R]"
1125 GOSUB T*C0-C*T
1130 GOSUB E*W-U
1132 LET L=CODE C$-T*W-E
1135 IF L<U OR L>X THEN GOTO 1130
1140 IF L<=F THEN GOTO 1158
1141 FAST
1142 GOTO 1137+H*L
1152 LET P1=U
1153 LET NP=W+X
1154 GOTO T*K
1155 LET E1=U
1156 LET NP=W+X
1157 GOTO K+C*F
1158 LET CON=L
1159 GOTO 1260
1200 DIM K$(T0+X,T0+IX)
1210 LET K$(U)="HOMONYMS ARE WORDS SIMILAR"
1211 LET K$(T)=" IN SOUND BUT DIFFERENT IN"
1212 LET K$(H)=" MEANING (EXAMPLE:TO,TWO,TOO)"
1213 LET K$(F)="THE MEANING AND SPELLING OF"
1214 LET K$(V)=" HOMONYMS MUST BE MEMORIZED--"
1215 LET K$(X)=" NO GENERAL RULES ARE"
1216 LET K$(S)=" AVAILABLE"
1217 LET K$(E)=" LAY AND LIE"
1218 LET K$(IX)="LAY MEANS TO PUT OR PLACE"
1219 LET K$(W)=" "
1220 LET K$(W+U)=" (PRINCIPAL PARTS ARE--LAY,"
1221 LET K$(W+T)=" LAID, HAVE LAID, LAYING)"
1222 LET K$(W+H)="LIE MEANS TO REST OR RECLINE"
1223 LET K$(W+F)=" "
1224 LET K$(W+V)=" (PRINCIPAL PARTS ARE--LIE,"
1225 LET K$(W+X)=" LAY, HAVE LAIN, LYING)"
1226 LET K$(W+S)=" SET AND SIT"
1227 LET K$(W+E)="SET MEANS TO PLACE OR PUT"
1228 LET K$(W+IX)=" SOMETHING"
1229 LET K$(T0)="SIT MEANS TO BE SEATED"
1230 LET K$(T0+U)=" "
1231 LET K$(TT)=" AMONG AND BETWEEN"
1232 LET K$(T0+H)="USE BETWEEN WHEN TWO (PEOPLE"
1233 LET K$(T0+F)=" OR THINGS) ARE INVOLVED"
1234 LET K$(T0+V)="USE AMONG WHEN MORE"
1235 LET K$(T0+X)=" THAN TWO ARE INVOLVED"
1259 RETURN
1260 GOSUB T*IX*C
1270 IF CON<>U THEN GOTO C0+C*H-T0
1272 LET C(U)=H
1273 LET C(F)=F
1275 LET NP=X
1276 LET TD=C-T
1277 GOTO 1330
1280 IF CON<>T THEN GOTO C0+C*H-W
1281 LET C(E)=U
1282 LET C(IX)=U
1283 LET C(W+U)=T
1284 LET C(W+H)=U
1285 LET C(W+V)=T
1286 LET NP=F
1290 IF CON<>H THEN GOTO C0+C*H
1293 LET C(W+S)=U
1295 LET C(W+E)=T
1296 LET C(T0)=T
1297 LET NP=F
1300 IF CON<>F THEN GOTO 1330
1301 LET C(TT)=U
1302 LET C(T0+H)=T
1303 LET C(T0+V)=T
1304 LET NP=T
1330 CLS
1333 LET F$="01200031"
1334 GOSUB C0*H/T
1335 PRINT AT T,E;"RULES COVERED";TAB U;Z$;Z$;"▀▀"
1336 IF CON<>U THEN GOTO 1340
1337 LET M=E
1338 PRINT AT X,W;"HOMONYMS"
1339 GOTO 1342
1340 IF CON=H THEN GOTO 1380
1341 LET M=X
1342 FOR N=U TO T0+S
1343 IF NOT C(N) THEN GOTO 1355
1344 PRINT AT M,U;K$(N)
1345 IF C(N)<T THEN GOTO 1354
1346 LET M=M+U
1347 PRINT AT M,U;K$(N+U)
1348 IF C(N)<H THEN GOTO 1354
1349 LET M=M+U
1350 PRINT AT M,U;K$(N+T)
1351 IF C(N)<F THEN GOTO 1354
1352 LET M=M+U
1353 PRINT AT M,U;K$(N+H)
1354 LET M=M+T
1355 NEXT N
1359 GOSUB X*X*W
1360 GOTO T*K
1380 PRINT AT X,T;K$(S+W);AT E,U;K$(W+E);TAB U;K$(W+IX);AT W+U,H;"(PRINCIPAL PARTS ARE-- SET,",TAB F;"SET, HAVE SET, SETTING)"
1381 PRINT AT W+F,U;K$(T0),AT W+X,H;"(PRINCIPAL PARTS ARE-- SIT,",TAB F;"SAT, HAVE SAT, SITTING)"
1382 GOTO 1359
1400 FAST
1405 CLS
1410 PRINT AT H,W;"▛▀▀▀▀▀▀▀▀▀▀▜";TAB W;"▌TIMED TEST▐";TAB W;"▙▄▄▄▄▄▄▄▄▄▄▟"
1420 PRINT AT E,V;"TO START THE TEST";AT W,V;"TYPE THE CODE LETTERS";AT W+T,V;"THEN PRESS ENTER"
1430 SLOW
1446 INPUT C$
1448 IF C$="LAN" THEN GOTO 1470
1450 PRINT AT T0,E;"[S][O][R][R][Y]█[W][R][O][N][G]█[C][O][D][E]"
1452 GOSUB X*X*W
1455 GOTO C+C0
1470 LET E1=U
1495 GOTO T*C0
1500 LET P=VAL F$(U TO T)
1505 LET B=VAL F$(H TO F)
1507 LET L=VAL F$(V TO X)
1510 LET R=VAL F$(S TO E)
1514 FOR N=L TO R STEP F
1515 PRINT AT P,N;"▀▀▀▀";
1516 PRINT AT B,N;"▄▄▄▄";
1520 NEXT N
1530 FOR N=P TO B
1535 PRINT AT N,L;"▌";AT N,R;"▐"
1540 NEXT N
1545 PRINT AT P,L;"▛";AT P,R;"▜";AT B,L;"▙";AT B,R;"▟"
1550 RETURN
1814 LET E1=O
1816 LET E2=O
1818 LET P2=O
1820 LET P1=O
1825 DIM R(F)
1830 DIM C(T0+S)
1836 DIM Q(F)
1841 LET NWRONG=O
1842 LET TIME=O
1843 LET NWRONG1=O
1844 LET MIN=O
1845 LET SEC=O
1850 LET TIME0=-U
1860 LET T2=O
1870 LET T1=O
1890 LET WRONG=O
1899 RETURN
1900 LET U=PI/PI
1901 LET T=U+U
1902 LET H=T+U
1903 LET F=H+U
1904 LET V=F+U
1905 LET X=V+U
1906 LET S=X+U
1907 LET E=S+U
1908 LET IX=E+U
1909 LET W=V+V
1910 LET C=W*W
1911 LET K=C*W
1912 LET O=U-U
1913 LET T0=W*T
1914 LET C0=C*W
1915 LET TT=T0+T
1916 LET H0=H*W
1917 LET FT=W+F
1918 LET J$="00050031"
1919 LET L$=" "
1922 LET E$="(LAY LIE)(LAID LAY)(LAYING LYING)(LAID LAIN)(SET SIT)(SETTING SITTING)"
1923 LET H$="(AMONG BETWEEN)"
1995 GOSUB C0+T*C
1996 GOSUB T*C0-T*C
1999 RETURN
2000 FAST
2001 LET UP=T*K+X*W
2002 GOSUB 900
2003 LET CN=U
2004 LET NLEFT=NP
2007 CLS
2008 LET CON=U
2009 IF NOT P1+C(CN) THEN GOTO 2025
2011 LET A$="293945474950122009062[T]ELL ME (WEATHER WHETHER) ORNOT YOU ARE GOING."
2012 GOSUB UP
2025 IF NOT P2 THEN GOTO 2045
2028 LET A$="515352586163020612152[I]F YOU WOULD RATHER PLAY CARDS (ITS IT▘S) REALLY YOUR CHOICE."
2030 GOSUB UP
2045 IF NOT E1 THEN GOTO 2100
2046 LET A$="364448517576182421242[D]O NOT LET THE (RAINS REINS) HANG LOOSELY IN YOUR HANDS."
2048 GOSUB UP
2055 GOTO 2100
2060 CLS
2062 IF NOT E1+E2+P1+P2 THEN GOSUB E*C
2072 IF E1+E2 THEN PRINT AT U,W+V;"TIME USED ";MIN;":";SEC
2073 IF NP-NLEFT>=H AND CN<>V THEN GOTO 2075
2074 PRINT AT X+U,F;"SELECT THE CORRECT WORD"
2075 PRINT AT W+U,O;
2076 LET X$=A$(VAL A$(H TO F) TO VAL A$(V TO X))
2077 GOSUB VAL A$(W+S TO W+E)
2080 SLOW
2085 GOSUB C
2090 GOSUB C*T
2092 IF DONE=U THEN RETURN
2094 IF DONE=T THEN GOTO C*C-U
2097 GOTO 2085
2100 IF NOT E2 THEN GOTO 2145
2103 LET A$="313334404344111509061[I]F YOU GO (TO TOO) THEPLAY, I WILL JOIN YOU."
2105 GOSUB UP
2145 IF NOT C(CN) THEN GOTO 2194
2146 LET A$="334247505152162321242[T]HE READING (COARSE COURSE) WAS DIFFICULT BUT WORTHWHILE."
2150 GOSUB UP
2196 IF NOT P1+C(CN) THEN GOTO 2245
2199 LET A$="252736495152092009061[T]HE (PRINCIPLES PRINCIPALS) OFGRAVITY ARE PARTIALLY KNOWN."
2200 GOSUB UP
2245 IF NOT P2 THEN GOTO 2295
2247 LET A$="404851545556222721242[K]ITTY [H]AWK WAS THE (SIGHT SITE) OF THE [W]RIGHT BROTHERS▘ FLIGHT."
2250 GOSUB UP
2295 IF NOT E1 THEN GOTO 2345
2296 LET A$="505159687476122012152[C]HOCOLATE, IN ANY FORM, IS MYFAVORITE (DESERT DESSERT)."
2300 GOSUB UP
2345 IF NOT E2 THEN GOTO 2375
2346 LET A$="474851535765071312151[D]O YOU KNOW WHICH PEDAL ISTHE (BRAKE BREAK)?"
2355 GOSUB UP
2375 IF NOT C(CN) THEN GOTO 2395
2376 LET A$="474856586269121712151[T]HE FIRE CHIEF ASKED US TOKEEP THE (AISLE ISLE) CLEAR."
2380 GOSUB UP
2397 IF NOT P1+C(CN) THEN GOTO 2445
2398 LET A$="252729365152061009061[S]HE (LED LEAD) THE BAND DURINGTHIS YEAR▘S CONCERT."
2400 GOSUB UP
2445 IF NOT P2 THEN GOTO 2495
2446 LET A$="314450525354152521242[T]EXAS WAS (ALL READY ALREADY)A STATE BY 1850."
2450 GOSUB UP
2495 IF NOT E1 THEN GOTO 2545
2496 LET A$="232529374950051109061[A] (PEACE PIECE) WAS ACHIEVEDBEFORE WAR BROKE OUT."
2500 GOSUB UP
2545 IF NOT E2 THEN GOTO 2575
2546 LET A$="404349505355030918332[T]O ME, THAT IS ONLY (PASSED PAST) HISTORY."
2550 GOSUB UP
2575 IF NOT C(CN) THEN GOTO 2595
2576 LET A$="353741424749172236391[I]F YOU HAVE A (LOOSE LOSE) FLAP, THE TENT MAY TEAR."
2580 GOSUB UP
2595 LET CON=T
2596 LET CN=W+H
2597 IF NOT P1+C(CN) THEN GOTO 2645
2598 LET A$="222729314647020642302([L]AY [L]IE) DOWN IF YOU ARETIRED."
2600 GOSUB UP
2645 IF NOT P2 THEN GOTO 2655
2646 LET A$="273436385051081309062[H]ARRY "+E$(W TO T0-1)+" ON THE COUCHWATCHING [T][V]."
2650 GOSUB UP
2655 LET CN=IX
2695 IF NOT E1 THEN GOTO 2745
2696 LET A$="373944455152192636391[T]HE VOTERS WERE "+E$(T0 TO H0+H)+"BALLOTS IN THE BOX."
2700 GOSUB UP
2745 IF NOT E2 THEN GOTO 2755
2746 LET A$="293134415051101509061[S]HE HAS "+E$(H0+F TO F*W+F)+" ASIDE HERSCHOOL WORK AGAIN."
2750 GOSUB UP
2755 LET CN=(W+H)
2775 IF NOT C(CN) THEN GOTO 2785
2776 LET A$="363844454951031018332[I]S THAT OLD DOG(LAYING LYING) IN THE YARD?"
2780 GOSUB UP
2785 LET CN=IX
2796 IF NOT P1+C(CN) THEN GOTO 2805
2797 LET A$="222325315051020627301([L]AY [L]IE) ASIDE YOUR DISPUTESAND ARGUMENTS THIS EVENING."
2800 GOSUB UP
2805 LET CN=W+H
2845 IF NOT P2 THEN GOTO 2895
2846 LET A$="283436384849091309062[I]F YOU "+E$(U TO IX)+" IN THE SUNTOO LONG, YOU WILL BURN."
2850 GOSUB UP
2895 IF NOT E1 THEN GOTO 2915
2896 LET A$="384548505152192421242[Y]OU HAVE ALREADY "+E$(H0+F TO W*F+F)+"IN BED FOR HALF THE DAY."
2900 GOSUB UP
2915 IF NOT E2 THEN GOTO 2925
2916 LET A$="374650525354202721242[I]S THE BRACELET "+E$(T0 TO H0+H)+"ON THE COUNTER?"
2917 GOSUB UP
2925 LET CN=IX
2930 IF NOT C(CN) THEN GOTO 3400
2931 LET A$="262831374748071209061[J]UDY "+E$(W TO T0-U)+" THE GLOVESTHERE YESTERDAY."
2932 GOSUB UP
3400 LET CON=H
3405 LET CN=T0
3410 IF NOT P1+C(CN) THEN GOTO 3430
3411 LET A$="283436384647091309062[P]LEASE "+E$(W*F+V TO W*V+H)+" WHEREVERYOU WISH."
3415 GOSUB UP
3430 LET CN=W+E
3440 IF NOT P2 THEN GOTO 3480
3441 LET A$="222325314647020627301([S]ET [S]IT) THE PACKAGES ONTHE TABLE IN THE KITCHEN."
3445 GOSUB UP
3480 IF NOT E1 THEN GOTO 3510
3481 LET A$="222329394849041227301([S]ETTING [S]ITTING) THE TABLEIS EASY."
3485 GOSUB UP
3510 LET CN=T0
3520 IF NOT E2 THEN GOTO 3550
3521 LET A$="223137395354041242302([S]ETTING [S]ITTING) WILL FEEL GOODAFTER ALL OUR WALKING."
3530 GOSUB UP
3550 LET CN=W+E
3560 IF NOT C(CN) THEN GOTO 3600
3566 LET A$="313335414546121609061[W]OULD YOU "+E$(W*F+V TO W*V+H)+" YOURBOOTS ON THE NEWSPAPERS?"
3567 GOSUB UP
3600 LET CN=T0
3605 IF NOT P1+C(CN) THEN GOTO 3630
3606 LET A$="334349515253162421242[H]E FOUND US "+E$(W*V+F TO W*S)+"ON THE SWING."
3610 GOSUB UP
3640 IF NOT P2 THEN GOTO 3670
3641 LET A$="344450525354172521242[T]HE VASE WAS "+E$(W*V+F TO W*S)+"ON THE EDGE OF THE TABLE."
3645 GOSUB UP
3680 IF NOT E1 THEN GOTO 3710
3681 LET A$="334349515253162421242[I]S YOUR DOG "+E$(W*V+F TO W*S)+"IN YOUR FATHER▘S CHAIR AGAIN?"
3685 GOSUB UP
3710 LET CN=W+E
3720 IF NOT E2 THEN GOTO 3750
3721 LET A$="283032384950091309061[I]F YOU "+E$(W*F+V TO W*V+H)+" THAT CAT ONMY LAP, I WILL SCREAM."
3725 GOSUB UP
3750 LET CN=T0
3760 IF NOT C(CN) THEN GOTO 3780
3761 LET A$="334349515253162421242[T]HAT CAT IS "+E$(W*V+F TO W*S)+"ON MY LAP."
3765 GOSUB UP
3780 LET CON=F
3781 LET CN=T0+H
3782 IF NOT P1+C(CN) THEN GOTO 3800
3785 LET A$="505256586466031018332[T]HIS IS A GOOD SECRET TO KEEP"+H$+" THE TWO OF US."
3786 GOSUB UP
3800 LET CN=T0+V
3802 IF NOT P2 THEN GOTO 3820
3805 LET A$="444650525860031018332[D]O NOT PUT YOUR FINGERS"+H$+" TWO ROCKS."
3806 GOSUB UP
3822 IF NOT E1 THEN GOTO 3840
3825 LET A$="222327374950031027301([A]MONG [B]ETWEEN) THE [C]OLONIESTHERE WERE SOME DISPUTES."
3826 GOSUB UP
3842 IF NOT E2 THEN GOTO 3860
3845 LET A$="485054646566031018151[Y]OUR TIME HAS TO BE DIVIDED"+H$+" MANY TASKS."
3846 GOSUB UP
3860 LET CN=T0+H
3862 IF NOT C(CN) THEN GOTO C0*V
3865 LET A$="495059616575132012151[J]UDY, [K]AREN, AND [L]YNN SHAREDTHE PAPER "+H$+" THEM."
3866 GOSUB UP
5000 IF P1<>U THEN GOTO 5005
5001 LET P1=O
5002 LET P2=U
5004 GOTO T*C0+E
5005 IF E1<>U THEN GOTO 5014
5006 LET E2=U
5007 LET E1=O
5008 GOTO T*C0+E
5014 LET R=W+F-NWRONG
5015 LET R(U)=X-Q(U)
5016 LET R(T)=F-Q(T)
5017 LET R(H)=F-Q(H)
5018 LET R(F)=T-Q(F)
5020 GOTO C*H
5100 SCROLL
5101 SCROLL
5102 SCROLL
5103 SCROLL
5104 RETURN
6000 CLEAR
6005 SAVE "LAN[3]"
6010 RUN
9998 PRINT PEEK 16412+256*PEEK 16413-16384
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.