(EDITORS NOTE: Thanks to the generosity of Mr. Nachbaur, we are able to provide our readers with this two-part article as an example of how an educational program can be designed and one approach to the educational goals these programs hope to attain. It is our sincere desire that you type this program in and study it in order to get the creative juices flowing for your own offerings to our Educational Program Contest-jm)
Introduction
Our children are coming into a world in which computers are a fact of everyday life. Just as we grew up taking radio, television and automobiles for granted, so the youngsters of today perceive computers as commonplace items. Unlike many adults, who still find computers complex, and slightly menacing, our kids see them without bias or prejudice.
Most children are fascinated by computers. They will watch with interest while you use your computer, even if they don’t know the meaning of all those things on the screen. They would love to participate, but the programs used by adults are simply not suited to their level.
With this in mind, we decided to run a SWN CONTEST for educational software. To get the ball rolling, we present a program that caters to young children, starting at about age 3. Interestingly, the program contains several routines from “CLEAR THAT SCREEN” (SWN #2:4), which we used to kick off our display contest. It is also an application of G. C. Harder‘s “SW LO-RES” (SWN #3:1) which was the TS1000 grand prize winner of this previous contest. The circle has thus gone around, from utilities and tools to actual applications.
This program is also an example of the “dedicated software” mentioned in a recent editorial. Have you upgraded to a more sophisticated machine? If so, use your “old” ZX81/TS1000 to give your kids, or your friends’ kids, a head start in the computer world.
The “ABC/123” program is quite long, so we are breaking it into two parts. The result of this first installment will be a self-sufficient program in its own right. It is a trainer in the recognition of the alphanumeric characters, both upper and lower case. The next installment will include a drill in single-digit addition. Both of these programs have multiple levels, automatically progressing to the next level when a previous one is mastered. Both are in a gaming format, to encourage interest and the desire to excel.
The final element, also covered in the next issue, is a bona-fide, arcade-style game, geared towards children of about age 5 and up. It re-inforces the first part of the package by encouraging rapid character recognition. Throughout the package, graphics are fast and flashy, to help maintain interest.
Part 1: The ABC Game
In this installment, we will be entering approximately one-half of the ABC/123 package. Included will be the SW-LO-RES core, various machine-code screen utilities, the main menu, all the BASIC subroutines, and the “ABC” portion of the program (menu options 1 through 3).
The Machine Code
Start off by reserving space for all the machine-code. Though we’ll only (!) be entering about 2K of machine code this time, we have to reserve enough space for the “Alpha Space Bridge” machine-code covered in Part 2. So enter a “mega-REM” of exactly 5021 bytes (this is important!). Either use a toolkit or other utility to generate this, or proceed as follows:
Enter a line 1 exactly as follows:
1 PRINT 0+0+0+0+0+0+0+0+0+0+0
+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0
+0+0+0+0+0+0
Note that there are 33 0’s, separated by “+”. Note also that the keyword is PRINT. Now edit this line (shift 1), and change the line number to 2. Continue doing this, until you have 18 identical lines, numbered 1 through 18. Finally, enter line 19 exactly as follows:
19 PRINT ,,,,0+0+0+0+0+0+0+0+0
+0+0+0+0+0+0+0+0+0+0+0+0+0
Note that line 19 only has 22 zeros. Verify that you have the correct length by entering PRINT PEEK 21535 and PRINT PEEK 21536; both should return 118. Then enter the following POKEs (no line numbers):
POKE 16510,0
POKE 16511,159
POKE 16512,19
POKE 16513,234
There. You’ve just made a 5021-byte “0 REM” statement. Now enter line 1 GOTO 9000 and NEVER delete it!
Add the lines of the hex loader program. After proofing it, save to tape for good measure. Then, take a deep breath and start entering the hexcode of Table 1. Each section represents one full screen of hex strings. RUN 7000 to start entering each screen. First enter the START address given at the top of the section. Then enter each line of hexcode (32 characters), a line at a time. After entering the last line of the section, the computer will print the checksum for that screen. The number should match the checksum given at the end of the section. If it doesn’t, you have an error somewhere. Find which line(s) are incorrect (numbered 1 through 20), and enter that line number, followed by the corrected line. When the checksum matches, enter “Y” to the “OK?” prompt. The program will stop, to allow you to save to tape, or go on with the next section. Take your time, save to tape frequently. (If you get impatient, you’ll be sorry!)
1 REM "MEGA-REM",5021 BYTES
7000 REM [illegible]
7010 FAST
7020 CLS
7030 PRINT "START=";
7040 INPUT BASE
7050 LET SUM=0
7060 FOR L=1 TO 20
7070 GOSUB 7300
7075 IF AD>21535 THEN GOTO 7090
7080 NEXT L
7090 PRINT AT 21,0;"[illegible]=";S
UM;"[illegible]"
7100 INPUT Y$
7110 IF Y$="N" THEN GOTO 7200
7120 IF BASE<>18434 THEN PRINT A
T 21,0;" RUN 7000 TO INPUT NEXT
SCREEN"
7130 STOP
7200 PRINT AT 21,0;"WHICH LINE I
S WRONG (1-20)? "
7210 INPUT L
7220 GOSUB 7300
7230 LET SUM=0
7240 FOR N=BASE TO BASE+319
7250 LET SUM=SUM+PEEK N
7260 NEXT N
7270 GOTO 7090
7300 INPUT L$
7310 PRINT AT L-1,0;L$
7320 FOR N=0 TO 15
7330 LET V=16*(CODE L$(2*N+1)-28
)+(CODE L$(2*N+2)-28)
7340 LET AD=BASE+16*(L-1)+N
7345 POKE AD,V
7350 LET SUM=SUM+V
7360 NEXT N
7370 RETURN
The Basic
When you’re done with all seven screens, you will have entered the entire SW-LO-RES core, complete upper & lower-case bit patterns, and the various screen display utilities. The next step is to enter the BASIC. Note that lines 1 through 10 must be EXACTLY as shown! Entering PRINT PEEK 21609 should return 128 (the inverse square at the end of line 5). Don’t run the program until you’ve entered all the lines, and have proofed them well.
When all is well, enter RUN 9990 to save to tape. When reloading later, the program will auto-run.
Using the Program
The first thing that comes up is the “Parent/Teacher Section,” which prompts you to enter the pupil’s name. Henceforth, the program will “remember” it, and it won’t be long before your child recognizes it as his name. Since only eight large characters can be displayed across the screen, limit your entry to 8 characters.
You are now taken to the menu. At this point, only the first three options will operate. The rest will tell you, “Not installed yet.” Pressing a key from 1 – 7 selects the corresponding drill or game. With some options, additional information is required. Going on, pressing any key except BREAK will flash the message, “HELLO, (name)” in big letters. Throughout the program, this flashing is a signal to the pupil to press “ENTER.”
Also shown are big asterisks (*) indicating which option was selected. The actual start of the program is signalled by a rather garish screen display, which is also used at the end to signal completion. A somewhat less flashy display signals the completion of each problem.
In the options you’ve installed so far, a large letter or number is flashed on the screen, and your pupil must find the corresponding key on the keyboard, and press it.
The philosophy here is not to tally “right” vs. “wrong” responses, so the program will persist until it gets the right answer. If the wrong key is pushed, a “sad face” is displayed and the program flashes, “NOT …, TRY AGAIN.” Coaching will be required of you, reading the messages aloud until the child recognizes them himself. Obviously, a child who is learning the alphabet can’t be expected to know how to read; verbal prompts are therefore kept to a bare minimum. It will also take outside work to learn the phonetic names of the characters. This program is not a baby-sitter, at least not at the outset. It is intended to supplement parental guidance, not to replace it.
Also shown, in the top left corner, is which problem the student is working on (1-26 for the alphabet drills, or 1-10 for the numbers drill of option 3). This is both for your information as you monitor the child’s progress, and also to re-inforce the significance of counting.
Pressing the right key merits (you guessed it) a “happy face.” The problem then scrolls out of view, and the next character is displayed.
Scoring is done as follows: while the program is waiting for a response, it continually “counts time.” At the end of the set of problems, the average response time (time required to get the right answer) is computed. Depending on the response time, from zero to 10 “robots” are displayed. A perfect score (10) represents an average response time of two seconds. Each unit (robot) less, represents two additional seconds average. (You can modify this, as indicated in the REM in the program listing.)
You may wish to call the little creatures “robots” or “monsters.” If the child watches CTV’s “Sesame Street,” he might prefer the term “monster” because of the positive connotation of the word (thanks to Cookie, Grover and the gang).
Options 1 and 2 can be used to drill either upper-case (capital) or lower-case letters. You will be prompted appropriately from the “Parent/Teacher Section.” Normally, you would start with capitals.
These options follow a natural progression of levels. When the child has mastered one level (by getting at least 7 robots), the program sequences to the next level, in the following order:
Alphabet Trainer (capitals) Alphabet Scramble (capitals) Alphabet Trainer (lower-case) Alphabet Scramble (lower-case)
When the entire sequence is completed, the program flashes “ALL DONE” and stops. Enter RUN to start afresh, or GOTO 9250 to keep the same name.
1. Alphabet Trainer
This sequentially flashes the letter A-Z. Its purpose is to relate the letters on the screen with those on the keyboard, and to teach the location of the keys. Young children will use the “one-finger” approach, but there’s no reason why the same program couldn’t be used to help older children learn to “touch-type” with eight fingers.
The capital letters are, for the most part, blow-ups of the character patterns in the ROM. The exceptions are letters (such as A and I) which look different on-screen than they do on the key legends. The patterns for Q, W and V were also modified to make them more easily recognized. The lower-case patterns are the more-or-less “typical” computer typeface.
2. Alphabet Scramble
This is just like the trainer, except that the letters are scrambled up, so that there will be a different sequence every time. Letters are never repeated in a given set, however, and all 26 letters appear each time through. When selecting (or progressing to) a “scramble” option, the screen will briefly go blank while the program shuffles the characters.
3. Numbers Scramble
This option is very similar to #2, except that it drills the ten numeric digits instead of the alphabet. Since the number keys are in sequence on the keyboard, there is not much point in having a “trainer” mode. Scoring is identical to the alphabetic mode.
Coaching Hints
This collection of programs follows the philosophy of the old saw, “Try, try again.” Re-inforce this with supportive coaching; if the student becomes discouraged by repeated sad faces, build up his enthusiasm with encouring remarks. Have him “find the button that looks like that (letter) on the TV.” When he gets it right, give him an enthusiastic commendation or (better yet) a hug or other physical reward.
At the end, read him the message that appears with the robot “score.” These range from “TOO SLOW” to “YAY, YOU GOT THE TOP SCORE.”
These drills (especially the alphabet) can tax a child’s attention span. Take a break for cookies and milk, or another activity, between “sets.” The computer can wait, patiently flashing the screen until your pupil returns for another go.
Make sure that the child understands that high scores result from fast response. If he starts to dawdle, a comment like “Hurry up, so you’ll get lots of monsters” might help. If you have to do it too often, though, take it as a sign that the child is losing interest. Help him finish that set, then relieve the monotony with another activity.
The BREAK key will stop operation. He’ll let you know, perhaps tearfully at first, that “the computer broke.” Assure him that all is well, and get it going again by deleting whatever garbage he managed to get on the input line, then enter CONT. After a while, the pupil will catch on and be able to do this himself.
TABLE 1: HEX-CODE FOR ABC/123, PART 1 START = 16514 76760087048302850681018605820384 07802A0C4023E501840009019402D1ED B00E84ED4218122A10402BE5018400A7 ED42019402D1EDB823E53E04011F0070 545D13EDB023233D20F2E1220E400101 280B78B120FBC9AF320940ED4B164003 03C5AF3221400AFE762009C12A0C4023 220E40C9FEDB2006CD9440C118E2FEDC 2005CDA94018F4FEDD2019030AFE21CC EE40280DD61C3804FE043802CF153209 40E118BCFED8202E2A0E401122007EFE 76231B20F93A0940BA2804FE0220041E 63180D7BFE053002CF14D6045F2A0C40 19220E4018A5A717173002CF1BCB4728 05322140CB87171600CB125F2100433A 0940BD19282A113C40D5F50E010608E5 B9C57E170D20FCCB1B23C110F47BD112 130C3E09B9E120E5F13D2803E118DAE1 0E04060456235E23E5AFCB1217CB1217 CB1317CB1317218440856F7E2A0E40F5 CHECKSUM = 28400 START = 16834 C5E57EFE762002CF1AED4B1040A7ED42 3802CF0AE1C13A2140FE002805F1EE80 1801F17723220E4010BFD5111D001922 0E40D1E10D20AB1180FF2A0E403A0940 B92804FE02200719220E40C3FD40ED4B 1040E5ED42E138F31EDF18EB00000100 101183002A0C40AFED521121007880F5 78FE0D300171F13D28032318F23E1190 5778C610FE1D3005FE053801713DBA28 07D5160019D118EC7880F578FE0E3001 71F13D28032B18F23E11905778C610FE 1E3005FE063801713DBA280BF5AFD516 00ED52D1F118E811220019109DC92A0C 400618237EFE76200310F8C9C6807718 F2002A0C4023E511210019D101B502ED B0D511210019012000D1EDB0010015CD F508C900000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 CHECKSUM = 24638 START = 17154 000000000000F0F0F0F0000000000F0F 0F0F00000000FFFFFFFF000000000000 0000F0F0F0F0F0F0F0F0F0F0F0F00F0F 0F0FF0F0F0F0FFFFFFFFF0F0F0F0AA55 AA55AA55AA5500000000AA55AA55AA55 AA550000000000242400000000001010 20000000000000083E283E0A3E080000 001000001000003C4204080008000004 08080808040000201010101020000000 10080408100000000408100804000000 003E003E0000000008083E0808000000 00003E000000000014083E0814000000 02040810200000001000001010200000 0000000808100000000000181800003C 464A52623C000018280808083E00003C 42023C407E00003C420C02423C000008 1828487E0800007E407C02423C00003C 407C42423C00007E020408101000003C 423C42423C00003C42423E023C000018 24427E424200007C427C42427C00003C CHECKSUM = 15684 START = 17474 424040423C000078444242447800007E 407C40407E00007E407C40404000003C 42404E423C000042427E424242000008 0808080808000002020242423C000044 4850684442000040404040407E000082 C6AA92828200004262524A464200003C 424242423C00007C42427C404000003C 4242524A3C02007C42427C444200003C 403C02423C0000FE1010101010000042 424242423C0000828282442810000082 828292AA440000422418182442000082 442810101000007E040810207E000000 000000000000F0F0F0F0000000000F0F 0F0F00000000FFFFFFFF000000000000 0000F0F0F0F0F0F0F0F0F0F0F0F00F0F 0F0FF0F0F0F0FFFFFFFFF0F0F0F0AA55 AA55AA55AA5500000000AA55AA55AA55 AA550000000000242400000000001010 20000000000000083E283E0A3E080000 001000001000003C4204080008000004 CHECKSUM = 20782 START = 17794 08080808040000020101010102000000 10080408100000000408100804000000 003E003E0000000008083E0808000000 00003E000000000014083E0814000000 02040810200000001000001010200000 0000000808100000000000181800003C 464A52623C000018280808083E00003C 42023C407E00003C420C02423C000008 1828487E0800007E407C02423C00003C 407C42423C00007E020408101000003C 423C42423C00003C42423E023C000000 38043C443C0000404078444478000000 3844404038000004043C44443C000000 38447C403800001C2078202020000000 3844443C043800404078444444000010 00301010380000080018080848300020 24283028240000301010101038000000 68545454440000005864444444000000 38444444380000007844447840400000 3C44443C040600002C32202020000000 CHECKSUM = 9684 START = 18114 3C403C023C0000207820202418000000 444444443C0000004444442810000000 44545454280000004428102844000000 41221408083000007C0810207C000000 00003A3B40F5CD2B0FCD2549A72002CF FFFE2820F4F1CB77C0C3230F444DC335 0F434DC3F5087D010000C3750BC50610 7C4D21000029CB111730011910F7C1C9 0E0118060E0218020E007CAAE68047D5 CD9D47E3CD9D47EBE179A7283678B1E5 ED62ED52E5C1D1210000373FF57A531E 082930058FED4A180987ED4A3803ED42 3D3C1D20EC5FF130E2CB4F2001EBCB7F C8180BCD2F47CB10D018037C07D0EBA7 ED62ED52C97C073806B5C8210100C921 FFFFC9A7ED52C9A7ED527CB5210000C0 2CC9A7ED52C818E3EB0100801804EB01 01807CA8677AA857ED522600796FD8EE 016FC97CB5210000C87AB3C82CC97CB5 B2ED6218F53E011801AFE35E235623E3 CHECKSUM = 30335 START = 18434 2B2919A72808EBE1E3EB732372C95E23 56EBC9EBCD1B48EBC9D5114B00ED4B32 40036268CD0913E56269CD0913C17C81 300104677D903001256F2B223240D1C9 3A2140CB4720197C0730093E16D7EBA7 ED62ED5201F0D81EFFC5CDE107CDAD0A E5C1215D40571E1C70CB7A28017197ED 6F83D797ED6F83D7CB7ACBFA28EF72C9 E17E23FE70282FFE762003D718F3CD29 4718EE9718023E904B452130405677D5 E5CDB20BE1D172C9CDBC477CB5E35E23 5623E3C0E1EBE97DE61F4FFDCB014E28 0AFD9638CBFFC63CD47108FD8639FE21 3A3A40DE01CDFA08FDCB01C6C9E15E23 5623E5D5210700190604562B5E2BD510 F9E1C1D17A19EBE1E3732372C5E10730 01EBCDCB47E1D8C1E9EB73C9C1E5C1C9 6E2600C911DA7FD5E5C9C5E1C9EBCD2F 49EBC9CD2F4938FBCD2F4930FBD5CDBB 02E5C12C6C2804CDBD076E26007DD1C9 CHECKSUM = 40606 **********************************
1 GOTO 9000
2 FOR I=1 TO LEN M$
3 PRINT AT R,C;
4 POKE CH,CODE M$(I)
5 IF USR BT THEN REM <>0▒
6 LET C=C+N4
8 IF C<32 THEN NEXT I
9 RETURN
10 REM DONT CHANGE ANYTHING
BEFORE LINE NO. 10
20 LET A$=INKEY$
30 LET D=D+N1
40 IF A$<"0" OR A$>L$ THEN GOT
O 20
50 RETURN
100 REM PAUSE
110 FOR I=0 TO LEN
120 NEXT I
130 RETURN
150 REM CLS SCROLL
155 POKE 16418,0
156 PRINT AT 23,0;"
"
157 POKE 16418,N2
160 FOR I=1 TO 24
170 IF USR SCR THEN
180 PRINT AT 21,31;" "
190 NEXT I
195 RETURN
200 REM REWARD
210 FOR S=1 TO SC
220 LET Y=(S>5)*8+4
230 LET Q=S*5
240 IF Q>25 THEN LET Q=Q-25
250 PRINT AT Y,Q;"> <";TAB Q;"▒
▒▒";TAB Q;"▒▒▒";TAB Q;"▒▒▒";TAB
Q;"▒ ▒"
260 NEXT S
270 RETURN
300 REM [illegible]
310 REM 5 COUNTS IN D =1 SEC.
311 REM SCORE REDUCED B[illegible]
312 REM [illegible]
313 REM [illegible]
320 LET SC=INT (11-D/(10*LEN T$
))
330 IF SC=0 OR SC=-N1 THEN LET
SC=N1
340 IF SC<-N1 THEN LET SC=0
350 GOSUB 200
360 PRINT AT 21,0;
370 GOSUB (390+20*INT (.7+SC/3)
)
380 RETURN
390 PRINT "NO GOOD, ";N$;". TOO
SLOW."
400 RETURN
410 PRINT "TRY AGAIN, ";N$
420 RETURN
430 PRINT "PRETTY GOOD ";N$;".
KEEP GOING"
440 RETURN
450 PRINT "VERY,VERY GOOD, ";N$
;"."
460 RETURN
470 PRINT AT 20,0;"*10* YAY, "
;N$;" *TOP SCORE*"
480 RETURN
500 REM [illegible]
510 PRINT AT 16,0;
520 PRINT "[illegible]"
530 PRINT "[illegible]"
540 PRINT "[illegible]"
550 PRINT "[illegible]"
560 PRINT "[illegible]"
570 PRINT "[illegible]"
580 RETURN
600 REM [illegible]
610 PRINT AT 16,0;
620 PRINT "[illegible]"
630 PRINT "[illegible]"
640 PRINT "[illegible]"
650 PRINT "[illegible]"
660 PRINT "[illegible]"
670 PRINT "[illegible]"
680 RETURN
700 REM [illegible]
710 PRINT AT 16,0;
720 FOR I=N1 TO 6
730 PRINT " "
740 NEXT I
750 RETURN
800 REM [illegible]
810 POKE FILL,CODE "▒"
820 IF USR UP THEN
830 POKE FILL,CODE "▒"
840 IF USR UP THEN
850 POKE FILL,CODE "▒"
860 IF USR UP THEN
870 POKE FILL,CODE ":"
880 IF USR UP THEN
890 POKE FILL,0
900 IF USR UP THEN
910 RETURN
920 REM [illegible]
930 POKE LN,24
940 IF USR REV THEN
950 FOR I=N1 TO 10
960 IF INKEY$<>"" THEN RETURN
970 NEXT I
980 GOTO 940
1000 REM [illegible]
1010 LET D=0
1020 FOR N=N1 TO LEN T$
1030 LET C$=T$(N)
1040 PRINT AT 0,0;N
1050 LET R=10
1060 LET C=14
1070 LET M$=C$
1080 GOSUB N2
1090 GOSUB 20
1100 IF A$=C$ THEN GOTO 1220
1110 GOSUB 600
1120 LET R=10
1130 LET C=14
1140 LET M$=" "
1150 GOSUB N2
1160 PRINT AT 11,13;"NOT ";A$;AT
13,11;"TRY AGAIN"
1170 LET LEN=30
1180 GOSUB PA
1190 GOSUB 700
1200 PRINT AT 11,13;" ";AT 1
3,11;" "
1210 GOTO 1040
1220 GOSUB 500
1230 LET LEN=25
1240 GOSUB PA
1250 GOSUB 150
1260 GOSUB 850
1270 NEXT N
1275 GOSUB 800
1280 GOSUB 300
1290 GOSUB 920
1300 GOSUB 150
1310 POKE 16752,67
1320 IF SC>7 THEN GOTO 1380
1330 PRINT AT N1,N2;
1340 IF USR BT THEN REM <>0[illegible]
1350 PRINT AT N4,N2;
1360 IF USR BT THEN REM <>0[illegible]
1370 GOTO 9640
1380 IF (F$="2" AND Y$="L") OR F
$="3" THEN GOTO 8800
1390 IF F$<>"2" THEN GOTO 1430
1400 LET F$="1"
1410 LET Y$="L"
1420 GOTO 1440
1430 LET F$="2"
1440 GOSUB 3000
1450 GOTO 9600
2000 REM [illegible]
2010 CLS
2020 PRINT "NOT INSTALLED YET"
2030 STOP
3000 REM [illegible]
3010 LET T$="0123456789"
3020 IF F$<"3" THEN LET T$="ABCD
EFGHIJKLMNOPQRSTUVWXYZ"
3030 LET L$=T$(LEN T$)
3040 IF F$="1" THEN RETURN
3050 FAST
3060 GOSUB 3300
3070 IF F$<"4" THEN GOTO 3130
3080 IF F$>"4" THEN GOTO 3150
3090 LET S$=""
3100 FOR I=N1 TO 10
3110 LET S$=S$+CHR$ (ST+28)
3120 NEXT I
3130 SLOW
3140 RETURN
3150 LET S$=T$
3160 GOSUB 3300
3170 SLOW
3180 RETURN
3300 REM [illegible]
3310 LET C=LEN T$
3320 FOR I=1 TO N4*C
3330 LET R=N1+INT (RND*C)
3340 LET T$=T$(R)+T$( TO R-N1)+T
$(R+N1 TO )
3350 NEXT I
3360 RETURN
4000 REM [illegible]
4010 GOTO 2000
8800 REM [illegible]
8810 POKE LN,24
8820 IF USR REV THEN
8830 PRINT AT N3,N2;
8840 IF USR BT THEN REM <>0 ALL
8850 PRINT AT 9,N4;
8860 IF USR BT THEN REM <>0 DONE
8870 PRINT AT 16,0;
8880 IF USR BT THEN REM <>0▒▒▒▒▒
▒▒▒
8890 LET C=16-2*LEN N$
8900 LET R=16
8910 LET M$=N$
8920 GOSUB N2
8930 GOSUB 920
8940 GOSUB 800
8950 PRINT AT 9,N2;
8960 IF USR BT THEN REM <>0THE E
ND
8970 PRINT AT 0,0;
8980 GOSUB 520
8990 STOP
8995 GOTO 9250
9000 REM [illegible]
9010 LET X$="▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ "
9020 POKE 16752,67
9030 LET BT=16601
9040 LET UP=16928
9050 LET FILL=16929
9060 LET REV=17040
9070 LET LN=17044
9080 LET SCR=17060
9090 LET CH=21609
9100 LET PA=100
9110 LET O=0
9120 LET N1=1
9130 LET N2=2
9140 LET N3=3
9150 LET N4=4
9160 LET N5=5
9165 LET HIGH=0
9170 SLOW
9180 PRINT AT 0,0;
9190 IF USR BT THEN REM <>0[illegible]
9200 PRINT AT N1,N1;"THE";AT N4,
N2;
9210 IF USR BT THEN REM <>0PROGR
AM
9220 PRINT AT 8,5;"[illegible]","WHAT IS PUPILS NAME?
(TO 8 CHAR)"
9230 INPUT N$
9240 IF LEN N$>8 OR LEN N$<N1 TH
EN GOTO 9230
9250 PRINT AT 10,12;N$;TAB 12;"▒
▒▒▒▒▒▒▒"( TO LEN N$)
9260 PRINT ,,"SELECT AN OPTION:"
,,,TAB N5;"1. ALPHABET TRAINER",
TAB N5;"2. ALPHABET SCRAMBLE",TA
B N5;"3. NUMBERS SCRAMBLE",TAB 5
;"4. ADDITION DRILL",TAB N5;"5.
ADDITION SCRAMBLE I",TAB N5;"6.
ADDITION SCRAMBLE II";TAB N5;"7.
ALPHA-SPACE BRIDGE"
9270 LET F$=INKEY$
9280 IF F$<"1" OR F$>"7" THEN GO
TO 9270
9290 PRINT AT 14+VAL F$,N4;"▒"
9300 IF F$="7" THEN GOTO 9460
9310 IF F$<>"4" THEN GOTO 9450
9320 CLS
9330 PRINT "DRILL WHICH NUMBER (
0-9)? ";
9340 INPUT ST
9350 IF ST<0 OR ST>9 THEN GOTO 9
340
9360 LET ST=INT ST
9370 IF ST<>9 THEN GOTO 9400
9380 LET FI=ST
9390 GOTO 9450
9400 PRINT ST,,,"LAST NUMBER TO
DRILL (";ST;"-9)? ";
9410 INPUT FI
9420 IF FI<ST OR FI>9 THEN GOTO
9410
9430 LET FI=INT FI
9440 PRINT FI
9450 GOSUB 3000
9460 POKE 16418,0
9470 PRINT AT 22,0;"[illegible]"
9480 IF INKEY$<>"" THEN GOTO 948
0
9490 IF INKEY$="" THEN GOTO 9490
9500 LET Y$="U"
9510 IF F$>"2" THEN GOTO 9570
9520 PRINT AT 22,0;"▒PPER (CAPIT
ALS) OR ▒OWER CASE?"
9530 IF INKEY$<>"" THEN GOTO 953
0
9540 IF INKEY$="" THEN GOTO 9540
9550 LET Y$=INKEY$
9560 IF Y$<>"U" AND Y$<>"L" THEN
GOTO 9550
9570 PRINT AT 22,0;("READY FOR P
UPIL "+N$+" ")( TO
32)
9580 POKE 16418,N2
9590 GOSUB 920
9600 CLS
9610 POKE 16752,67
9620 PRINT AT N3,N4;
9630 IF USR BT THEN REM <>0[illegible]
9640 LET M$=N$
9650 LET R=10
9660 LET C=16-2*LEN M$
9670 GOSUB N2
9680 POKE 16752,(67 AND Y$="U")+
(69 AND Y$="L")
9690 LET M$="********"( TO VAL F$
)
9700 LET R=16
9710 LET C=16-2*LEN M$
9720 GOSUB N2
9730 GOSUB 920
9740 GOSUB 800
9750 RAND
9760 IF F$="7" THEN GOTO 4000
9770 IF F$<"4" THEN GOTO 1000
9780 GOTO 2000
9990 SAVE "ABC12▒"
9994 RUN
9995 REM ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
9996 REM [illegible]
9997 REM ▒ 1985/1986 ▒
9998 REM [illegible]
9999 REM ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.