100 PAPER 0:INK 7:CSIZE 0,0:CLS
105 lastword$=""
110 PRINT "1 Spell a word"\"2 Finger addition"\"3 Addition where sum <=10"\"4 Addition"
115 PRINT "5 Subtraction with small numbers"\"6 Subtraction"\"7 Tables"
120 INPUT \"Enter question type"!type
130 IF type<1 OR type>7 THEN PRINT "Try again":GO TO 120
140 IF type>1 THEN GO TO 2000
1000 INPUT "Enter word to spell"!word$
1010 IF LEN(word$)<4 OR LEN(word$)>10 THEN PRINT "Try again":GO TO 1000
1020 initialise
1030 AT #5,0,10:PRINT #5,word$
1040 AT #5,0,10:INK #5,7:UNDER #5,1
1050 FOR i=1 TO LEN(word$)
1060 IF NOT(INKEY$(-1)==word$(i)) THEN wrong 1:GO TO 1060
1070 BEEP 5000,0:PRINT #5," ";
1080 drop i+9,2
1090 END FOR i
1100 FOR j=i+10 TO 19:drop j,8
1110 man:STOP
2000 initialise
2010 FOR i=10 TO 19
2020 CLS #5
2030 SELect ON type
2040 =2,3,4
2045 IF type<4 THEN range=10:ELSE range=50
2050 j=RND(1 TO range):k=RND(1 TO range):word$=j+k
2060 IF type=3 AND word$>10 OR type=2 AND (j>5 OR k>5) THEN GO TO 2050
2070 PRINT #5,TO 6,j!"+"!k!"="!;
2080 =5,6
2085 IF type<6 THEN range=10:ELSE range=50
2090 j=RND(1 TO 50):k=RND(1 TO 50):word$=j-k
2100 IF j-k<1 THEN GO TO 2090
2110 PRINT #5,TO 6,j!"-"!k!"="!;
2120 =7
2130 j=RND(1 TO 12):k=RND(1 TO 12):word$=j*k
2140 PRINT #5,TO 6,j!"x"!k!"="!;
2150 END SELect 
2155 IF word$=lastword$ THEN GO TO 2020
2160 FOR j=1 TO LEN(word$)
2170 IF NOT(INKEY$(-1)==word$(j)) THEN wrong 1:GO TO 2170
2180 BEEP 5000,0:PRINT #5,word$(j);
2190 END FOR j
2200 drop i,2:lastword$=word$
2210 END FOR i
2220 man:STOP
5000 DEFine PROCedure drop(ch,sp)
5010 LOCal j
5020 PAUSE 40/sp:BEEP 0,26-ch,127,2000,1
5030 FOR j=0 TO 120/sp:SCROLL #ch,sp
5040 IF ch<19 THEN PRINT #ch," ";ch-9:ELSE PRINT #ch,10
5050 BEEP:PAUSE 40/sp:BEEP 0,70+ch*3,30+ch*3,2000,-1
5060 FOR j=1 TO 40/sp:PAN #3,sp
5070 BEEP:PAUSE 40/sp
5080 END DEFine 
5090 DEFine PROCedure wrong(sp)
5100 LOCal j
5110 BEEP 5000,100
5120 no_errors=no_errors+1
5130 FOR j=1 TO 40/sp:PAN #4,sp:IF NOT BEEPING THEN BEEP 0,254
5140 BEEP:PAUSE 40/sp
5150 IF no_errors>=10 THEN RECOL 0,0,0,0,0,0,0,0:STOP
5160 END DEFine 
5170 DEFine PROCedure sock(ch)
5180 IF ch<10 THEN RETurn 
5190 OPEN #ch,"scr_40x120a"&((ch-10)*40+36)&"x18"
5200 PAPER #ch,1:INK #ch,RND(8 TO 255)||2:CLS #ch:SCALE #ch,119,0,-119:LINE #ch,15,-28
5210 FILL #ch,1:LINE_R #ch TO 0,28,10,0 TO 0,-26,0,1
5220 FILL #ch,1:ARC_R #ch TO -3,-8,-PI/4:LINE_R #ch TO -7,-7
5230 ARC_R #ch TO -7,7,-PI:LINE_R #ch TO 7,8
5240 FILL #ch,0:CSIZE #ch,3,1
5250 END DEFine 
5260 DEFine PROCedure initialise
5270 PAPER 1:INK 7:CLS:BLOCK 448,2,0,0,7:BLOCK 4,122,0,0,7:BLOCK 4,122,444,0,7:SCALE 200,0,-200
5280 OPEN #3,scr_448x31a32x138
5290 PAPER #3,4:INK #3,6:CLS #3:SCALE #3,31,0,-30
5300 FOR i=0 TO -30 STEP -5:LINE #3,4-i/5,i TO 36+i/5,i
5310 FOR j=-16 TO 16 STEP 4:LINE #3,20+j,0 TO 20+j*10/16,-30
5320 OPEN #4,scr_448x10a32x169
5330 PAPER #4,4:CLS #4:SCALE #4,10,0,-9
5340 INK #4,0:FILL #4,1:CIRCLE #4,17,-4,2,4,0:FILL #4,0
5350 INK #4,2:LINE #4,17,-4 TO 17,-9,13,-4 TO 9,-9,21,-4 TO 25,-9
5360 INK #4,7:POINT #4,25,-2,24,-2
5370 no_errors=0
5380 OPEN #5,con_448x36a32x179
5390 PAPER #5,2:INK #5,0:BORDER #5,5,4:CLS #5:CSIZE #5,3,1:OVER #5,1
5400 FOR i=10 TO 19:sock i
5410 END DEFine 
5420 DEFine PROCedure man
5430 BEEP 0,15,39,5000,6,15,0,12:INK 7:LINE 300,-50
5440 FOR i=1 TO no_errors*4+4:PAN #4,-10
5450 CIRCLE_R 0,0,6:ARC_R -3,-2 TO 6,0,PI/2:POINT_R 0,4,-6,0,3,-2
5460 FILL 1:ARC_R 0,-6 TO -12,-7,PI/2:LINE_R TO 0,-21 TO 12,0 TO 0,28
5470 FILL 1:ARC_R TO 12,-7,-PI/2:LINE_R TO 0,-21 TO -12,0 TO 0,28
5480 FILL 1:INK 5:LINE_R -7,-28 TO 0,-34 TO 15,0 TO 0,34
5490 FILL 0:INK 0:LINE_R TO 0,24,-15,-24 TO 0,24,7,-28 TO 0,-32
5500 FILL 1:INK 7:LINE_R -1,1 TO -6,0 TO 0,-3 TO 6,0 TO 0,3
5510 FILL 1:LINE_R 2,0 TO 6,0 TO 0,-3 TO -6,0 TO 0,3
5520 FILL 0:LINE_R -8,32 TO -4,0 TO 0,3,18,-3 TO 4,0 TO 0,3
5530 ARC_R -19,32 TO -20,10,-PI/4:FILL 1:CIRCLE_R 0,10,10,3,0:FILL 0
5540 OVER -1
5550 FOR i=1 TO 15:PAUSE 20:CURSOR 336,28:PRINT "WELL DONE!"
5560 OVER 0:BEEP
5570 END DEFine 
