10 REM A MULTIPICATION TESTER 20 REM BY ANDREW YORK IN 1996 30 REM ---------------- [0x07] [0x15] 1 :REM [0x07] [0x07] [0x07] [0x03] [0x07] [0x0C] [0x15] 40 MODE7:VDU23;10,32;0;0;0:ON ERROR IF ERR=17 THEN RUN ELSE GOTO 2070 60 *FX4,1 70 *FX18 80 PRINT" Times Table Tester ";:PRINT" TImes Table Tester ";:PRINT" ";:PRINT" ";:PRINT" "; 130 PRINT" ";:PRINT" ";:PRINT"1. A test to pit your wits against ";:PRINT" ";:PRINT"2. A random test! ":PRINT" "; 190 PRINT"3. View Multipication table ";:PRINT" ";:PRINT"4. Leave program and return to basic ";:PRINT" ";:PRINT" "; 240 PRINT" ";:PRINT" ";:PRINT" ";:PRINT" ";:PRINT" "; 290 PRINT" ";:PRINT" ";:PRINT"By A.M.York For The BBC Micro 1996 ";:REPEAT:CHOICE$=GET$:SOUND1,20,90,1 :IF CHOICE$="1" THEN PROCtest 350 IF CHOICE$="2" THEN PROCmajortest 360 IF CHOICE$="3" THEN PROCtable 370 IF CHOICE$="4" THEN PROCexit 380 UNTIL FALSE 390 DEFPROCtest :INPUTTAB(1,18);"What table (2-12) ?"A :VDU28,0,24,39,2:CLS:VDU26:IF A <2 THEN A=2 412 IF A >12 THEN A=12 420 C=1:D=5:E=2:F=0:REM"Im not very good at using all 452 REM"these stupid variables! 460 VDU28,0,24,39,2:CLS:VDU26:PRINTTAB(1,3);"Correct " :PRINTTAB(21,3);"Wrong " :PRINTTAB(4,5);"0":PRINTTAB(25,5);"0": FOR B = 1 TO 12 :D=D+2:IF B =7 THEN E=E+20:D=7 540 ANSWER= A * B:PRINTTAB(E,D);"";B" X ";A" = "; :INPUT input:IFinput=ANSWER THEN F=F+1:PRINTTAB(5,5);F:SOUND 1,90,19,1 580 IFinput <> ANSWER THEN G=G+1:PRINTTAB(25,5);G:SOUND 1,50,90,1:PROCpractice 590 NEXT B:PROCwelldone:ENDPROC 600 END 610 DEFPROCpractice:B=B-1:CORRECT=A*B 620 VDU28,0,24,39,18:PRINTTAB(5);"ppppppppppppppppppppppp" :E=0:REPEAT:PRINTTAB(5);" ":E=E+1:UNTIL E=4:PRINTTAB(5);"ppppppppppppppppppppp" :PRINTTAB(7,2);"";B;" X ";A;" = "; :INPUT wrong:IF wrong <> CORRECT THEN CLS:VDU7:GOTO 620 690 PRINTTAB(7,4);"";wrong;" + ";A;" = "; :INPUT ok :IF ok <> wrong + A THEN CLS:PRINTTAB(5);"ppppppppppppppppppppppp":E=0:REPEAT:PRINTTAB(5);" ":E=E+1:UNTIL E=4:PRINTTAB(5);"ppppppppppppppppppppp":PRINTTAB(7,2);"";B;" X ";A;" = ";wrong::GOTO 690 720 CLS:B=B+1:IF B >=7 THEN E=22 ELSE E=2 740 VDU26:ENDPROC 750 DEFPROCwelldone:VDU28,0,24,39,18:CLS:SOUND1,20,120,1 : IF F=12 THEN PRINT'"Welldone you got all twelve right!":GOTO840 790 IF F = 6 THEN PRINT'"Welldone you got half right!":GOTO840 800 IF F >10 THEN PRINT'"Good try you nearly got all them right":GOTO840 810 IF F <6 THEN PRINT'"Good try but you need some more":PRINT"practice.":GOTO840 820 IF F <4 THEN PRINT'"You need to learn your tables!":GOTO840 830 PRINT'"Good try you got ";F;" right out of twelve" 840 PRINTTAB(5);"Press Space to contine"; :REPEAT:A$=GET$:UNTIL A$=" ":CLS:VDU26:VDU28,0,24,39,2:CLS:RUN 870 DEFPROCmajortest :REM"WHAT A MESS! 872 REM"WELL AT LEAST IT WORKS 880 E=2:D=5:G=0:H=0:VDU28,0,24,39,2:CLS:VDU26:PRINTTAB(1,3);"Correct ":PRINTTAB(21,3);"Wrong ":PRINTTAB(4,5);"0" :PRINTTAB(25,5);"0" :FOR OG = 1 TO 18 :B=RND(12):IF B=0 THEN B=3 990 A=RND(12):IF A=0 THEN A=4 1000 D=D+2:IF OG =10 THEN E=23:D=7 1020 PRINTTAB(E,D);"";B" X ";A" = ";:right=B*A:INPUT input:IF input=right G=G+1:PRINTTAB(4,5);"";G:SOUND1,20,90,1 ELSE H=H+1:PRINTTAB(25,5);"";H :SOUND1,20,30,1 1060 NEXT OG:PRINTTAB(12,D+1);"PRESS SPACE";:REPEAT:A$=GET$:UNTIL A$=" ":RUN :ENDPROC 2000 DEFPROCexit:*FX8 2020 *FX4,0 2030 :VDU28,0,24,39,2:CLS:VDU26 :PRINTTAB(2,5);"BYE ....":VDU28,0,24,39,2:A$=INKEY$(30):CALL !-4 :END 2060 ENDPROC 2070 ONERROR OFF 2080 *FX4,0 2090 VDU26:CLS:REPORT:PRINT"atline";ERL:END 2130 DEFPROCtable:CLS:PRINT" Multipication Table ";:PRINT" MUlTIpIcaTIOn Table ";:PRINT" ";:PRINT" 0 1 2 3 4 5 6 7 8 9 10 ";:PRINT" "; 2190 PRINT" 1 1 2 3 4 5 6 7 8 9 10 ";:PRINT" ";:PRINT" 2 2 4 6 8 10 12 14 16 18 20 ";:PRINT" ";:PRINT" 3 3 6 9 12 15 18 21 24 27 30 "; 2240 PRINT" ";:PRINT" 4 4 8 12 16 20 24 28 32 36 40 ";:PRINT" ";:PRINT" 5 5 10 15 20 25 30 35 40 45 50 ";:PRINT" "; 2290 PRINT" 6 6 12 18 24 30 36 42 48 54 60 ";:PRINT" ";:PRINT" 7 7 14 21 28 35 42 49 56 63 70 ";:PRINT" ";:PRINT" 8 8 16 24 32 40 48 56 64 72 80 "; 2340 PRINT" ";:PRINT" 9 9 18 27 36 45 54 63 72 81 90 ";:PRINT" ";:PRINT"1010 20 30 40 50 60 70 80 90 100 ";:PRINT"Press space";:REPEAT:A$=GET$:UNTIL A$=" ":RUN:ENDPROC