660 REM PUT AN OUT ON CURRENT Y LINE STARTING AT XB
670 AN = INT(AN)
680 A1 = INT(AN/10)
690 A2 = AN -A1 *10
700 IF A1 = 0 THEN A1 = 10
710 A1 = A1 +1
720 A2 = A2 +1
730 REM PUT FIRST CHARACTER OUT
740 ID = A1:Y = YB +L *48:X = XB: GOSUB 280
750 REM PUTOUT SECOND
760 ID = A2:Y = YB +L *48:X = XB +4: GOSUB 280
770 RETURN
780 REM PUT A PLUS
790 POKE 0,0: POKE 1,49
800 POKE 2,YB +68: POKE 3,3: POKE 4,0: POKE 5,12
810 CALL V +3: RETURN
820 REM get a new problem
830 K = INT( RND(1) *10): IF KL = K THEN 830
840 KL = K
850 K2 = LIMIT
860 IF GA < >1 THEN RETURN
870 REM MAKE A SUBTRACTION PROBLEM
880 K2 = INT( RND(1) *LIMIT) +1: IF K2 >LIMIT THEN 880
890 IF K2 <1 THEN K2 = 1
900 RETURN
910 REM Blank out answer area
920 L = 2
930 ID = 11
940 REM PUT FIRST CHARACTER OUT
950 Y = YB +L *48:X = XB: GOSUB 280
960 REM PUTOUT SECOND
970 Y = YB +L *48:X = XB +4: GOSUB 280
980 RETURN
990 REM get an answer
1000 P = 0
1010 MX = M1:AN = PEEK(ST):AN = 0:M3 = AN
1020 D3 = K *K2
1030 D1 = INT(D3/10)
1040 D2 = D3 -D1 *10
1050 IF D1 = 0 THEN 1100
1060 GOSUB 1250
1070 IF MX = 0 THEN 1160: REM bad anser
1080 AN = KP:M3 = AN:L = 2: GOSUB 660
1090 IF KP < >D1 THEN 1160: REM bad answer
1100 GOSUB 1250: REM get next digit
1110 AN = KP +AN *10
1120 IF (MX = 0) OR (D2 < >KP) THEN 1160
1130 M1 = M1 -15: IF M1 <100 THEN M1 = 100: REM SPEED IT UP
1140 GOSUB 660
1150 M3 = 0: RETURN
1160 REM bad answer
1170 AN = D3:L = 2: GOSUB 660
1180 FOR P1 = 1 TO 5: ON (SN = 0) GOSUB 3380: NEXT
1190 X = 16:Y = 127:ID = 17: GOSUB 280
1200 CALL V +9,180: REM WAIT 3 SECONDS
1210 ID = 18: GOSUB 280
1220 M1 = M1 +60: IF M1 >(2 *M2) THEN M1 = M2
1230 MX = 0
1240 RETURN
1250 REM GET KEY
1260 K$ = ""
1270 CALL V +6,MX,KP: IF MX = 0 THEN GOSUB 250: RETURN
1280 IF (KP >96) AND (KP <123) THEN KP = KP -32
1290 K$ = CHR$(KP): IF (K$ = "/") OR (K$ = "?") OR (K$ = "N") OR (K$ = "Q") OR (K$ = "S") OR (K$ = "H") OR (K$ = CHR$(27)) THEN GOSUB 2160:J4 = PEEK(ST): GOTO 1270
1300 IF (KP <48) OR (KP >57) THEN GOSUB 250: GOTO 1270
1310 KP = KP -48
1320 RETURN
1330 REM update score
1340 IF (MX = 0) AND (SC = >0) THEN SC = SC -50: GOTO 1360
2520 IF (A$ = "M") OR (A$ = "m") THEN CALL 54915: GOTO 170
2522 IF (A$ = "Q") OR (A$ = "q") OR (A$ = CHR$(27)) THEN POKE 48688,R0: POKE 48689,R1: TEXT : NORMAL : PRINT CHR$(4)"BYE"
2530 RETURN
2650 REM PUT OUT LEVEL SELECTION BOX
2660 GOSUB 1430
2670 POKE 32,3: POKE 33,17: POKE 34,2: POKE 35,21
2680 HOME
2690 PRINT " Study Mixed"
2700 PRINT " Facts Through"
2710 PRINT "---------------": PRINT
2720 PRINT "1. One's Table"
2730 PRINT "2. Two's Table"
2740 PRINT "3. Three's Table"
2750 PRINT "4. Four's Table"
2760 PRINT "5. Five's Table"
2770 PRINT "6. Six's Table"
2780 PRINT "7. Seven's Table"
2790 PRINT "8. Eight's Table"
2800 PRINT "9. Nine's Table"
2810 VTAB 17: PRINT " Enter Choice"
2820 P = 2: GOSUB 310:P = 0: IF RD = 1 THEN 2650
2830 IF (KP <49) OR (KP >58) THEN GOSUB 250: GOTO 2820
2840 J = PEEK(ST):KP = KP -48
2850 LIMIT = KP
2860 GOSUB 1460
2870 PRINT CHR$(20): HOME
2880 SC = 0:MX = SC: GOSUB 1330: RETURN
2890 REM PUT OUT GAME SELECTION BOX
2900 GOSUB 1430
2910 POKE 32,3: POKE 33,17: POKE 34,2: POKE 35,21
2920 HOME
2930 PRINT " SELECT GAME"
2940 PRINT "---------------": PRINT
2950 PRINT "1:Multiplication"
2960 PRINT " facts for a"
2970 PRINT " single number."
2980 PRINT
2990 PRINT "2:Mixed "
3000 PRINT " multiplication"
3010 PRINT " facts."
3020 VTAB 17: PRINT " Enter Choice"
3030 P = 2: GOSUB 310:P = 0: IF RD = 1 THEN 2890
3040 IF (KP < >49) AND (KP < >50) THEN GOSUB 250: GOTO 3030
3050 J = PEEK(ST):KP = KP -48
3060 IF KP = 1 THEN GA = 0
3070 IF KP = 2 THEN GA = 1
3080 PRINT CHR$(20): HOME
3090 RETURN
3100 REM PUT OUT QUIT BOX
3110 RD = 1
3120 GOSUB 1430
3130 POKE 32,3: POKE 33,17: POKE 34,2: POKE 35,21
3140 HOME
3150 PRINT " MULTI-FLASH"
3160 PRINT "---------------": PRINT
3170 PRINT "Press N for a"
3180 PRINT "new game."
3190 VTAB 16: PRINT "Press any other"
3200 PRINT "key to continue"
3210 KP = PEEK(ST)
3220 KP = PEEK(KB): IF KP <128 THEN 3220
3230 KP = PEEK(KB) -128
3240 A$ = CHR$(KP):J = PEEK(ST)
3250 IF (A$ = "N") OR (A$ = "n") THEN CALL 54915::SC = 0:MX = SC: GOTO 170
3260 IF P >0 THEN RETURN
3270 GOSUB 2280
3280 REM <CTRL-0x0d><CTRL-0x0d>*****<CTRL-0x0d>NAME:GS MONOCHROME<CTRL-0x0d>PASS:NOTHING<CTRL-0x0d>USES:$C029<CTRL-0x0d>CALLS:$FE1F<CTRL-0x0d>RETURNS: HIRES GRAPHICS BECOME COLORLESS<CTRL-0x0d>*****<CTRL-0x0d>
3290 CALL PEEK(121) + PEEK(122) *256 +28: REM 8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF ^ TAB( IF ) TAB( <CTRL-0x09> PLOT ) TAB( `
3300 RETURN
3310 REM <CTRL-0x0d><CTRL-0x0d>*****<CTRL-0x0d>NAME:GS COLOR<CTRL-0x0d>PASS:NOTHING<CTRL-0x0d>USES:$C029<CTRL-0x0d>CALLS:$FE1F<CTRL-0x0d>RETURNS: COLORED GRAPHICS<CTRL-0x0d>*****<CTRL-0x0d>
3320 CALL PEEK(121) + PEEK(122) *256 +28: REM 8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF _ TAB( IF ) TAB( ) SIN PLOT ) TAB( `
3330 RETURN
3340 REM successful sound
3350 Z = P:D = 20
3360 FOR P = 212 TO 96 STEP -11: GOSUB 3390: NEXT P
3370 P = 96:D = 200: GOSUB 3390:P = Z: RETURN
3380 P = 96:D = 30: GOSUB 3390:P = Z: RETURN
3390 REM <CTRL-0x0d><CTRL-0x0d>*****<CTRL-0x0d>NAME:HUMMY TONE<CTRL-0x0d>PASS:P:PITCH D:DURATION<CTRL-0x0d>USES:$50,$BEE0-1<CTRL-0x0d>CALLS:$DEBE,DD67,E752<CTRL-0x0d>RETURNS: A TONE<CTRL-0x0d>*****<CTRL-0x0d>
3400 CALL PEEK(121) + PEEK(122) *256 +32,P,D: REM GET COS g EXP R CHR$ ONERR P PLOT TAN GET GET COS g EXP R CHR$ ONERR P PLOT ATN GET PLOT 0 TAB( GR MID$ MID$ = <CTRL-0x05> OR ATN GET <UNKNOWN TOKEN><CTRL-0x13> * = <CTRL-0x05> RESTORE TAN GET = <UNKNOWN TOKEN> RIGHT$<CTRL-0x01> = MID$ IF TAN GET = PEEK````