10DIM dl(4, 2)
20FOR i=1 TO 4:READ dl(i, 2):NEXT i
30HOME:HTAB 3:VTAB 10
40? "Press Wildcard key to begin."; 
50POKE 16150, 255:POKE 64885, 0
60IF PEEK(64885)<128 THEN  n=RND(1):GOTO 60
70POKE 16150, 255:POKE 64885, 0
80HOME:? TAB(10); "*-MULTIMATH-*"
90?:?:? TAB(10); "DO YOU WANT TO..."
100?:? TAB(10); "(A)DD OR"
110? TAB(10); "(M)ULTIPLY?"; 
120GET t$: f=ASC(t$):IF f>90 THEN  f=f-32
130IF f<>65 AND f<>77 THEN 120
140? t$:IF f=65 THEN  op$="+":GOTO 160
150 op$="*"
160?:? TAB(10); "WOULD YOU PREFER..."
170?:? TAB(10); "(E)ASY,"
180? TAB(10); "(M)ODERATE,"
190? TAB(10); "(H)ARD, OR"
200? TAB(10); "(V)ERY HARD PROBLEMS? "; 
210GET d$: df=ASC(d$):IF df>90 THEN  df=df-32
220 dc=(df=69)+2*(df=77)+3*(df=72)+4*(df=86)
230IF dc=0 THEN 210
240? d$:FOR de=1 TO 500:NEXT de
250HOME:? "TYPE A NUMBER;"
260? "THEN PRESS <RETURN>."
270?:? "HOW MANY QUESTIONS DO YOU"
280INPUT "WANT TO TRY (1 TO 100)? "; n
290IF n>0 AND n<101 THEN 330
300?
310? "1 TO 100 ARE VALID. PLEASE TRY AGAIN."
320GOTO 270
330 zr=1: sc=0
340 m=((f=77)=(f=65)*(INT(RND(1)*3+1)))*dc
350 a=(INT(RND(1)*dl(dc, 1))+dl(dc, 2))*m
360? TAB(4); "(T)RY ANOTHER TYPE OF QUIZ, OR"
370 c=(INT(RND(1)*dl(dc, 1))+dl(dc, 2))*m
380HOME:?:? "TYPE THE ANSWER"
390? "(OR <E> TO END THE QUIZ);"
400? "THEN PRESS <RETURN>."
410?:? "PROBLEM #"; zr; " of "; n
420IF f=65 THEN  an=a+b+c:GOTO 440
430 an=a*b*c
440HTAB 11:VTAB 10:? a; op$; b; op$; c; "="; 
450INPUT a$
460IF a$="E" OR a$=CHR$(101) THEN HOME:GOTO 600
470IF VAL(a$)=0 THEN 380
480IF VAL(a$)<>an THEN 500
490?:? TAB(16); "RIGHT!": sc=sc+1:GOTO 510
500?:? TAB(11); "SORRY ... IT'S "; an; "."
510FOR de=1 TO 1000:NEXT de
520IF zr<n THEN  zr=zr+1:GOTO 340
530HOME:VTAB 2:HTAB 4
540? "YOUR SCORE IS "; sc; " OUT OF "; zr; "..."
550?
560IF sc>zr*.9 THEN ? TAB(4); "A TRUE GENIUS!":GOTO 600
570IF sc>zr*.69 THEN ? TAB(4); "SHARP AS A TACK!":GOTO 600
580IF sc>zr*.49 THEN ? TAB(4); "JUST WARMING UP!":GOTO 600
590? TAB(4); "THINK HARDER!"
600?:?:? TAB(1); "DO YOU WANT TO..."
610?
620? TAB(1); "(R)EPEAT THE SAME TYPE OF QUIZ,"
630? TAB(1); "(T)RY ANOTHER TYPE OF QUIZ, OR"
635?
640? TAB(1); "(Q)UIT? "; 
650GET k$
660IF k$="R" OR k$=CHR$(114) THEN 330
670IF k$="T" OR k$=CHR$(116) THEN 80
680IF k$<>"Q" AND k$<>CHR$(113) THEN 650
690END
1000DATA    5,1,5,6,10,11,70,21
