ZX81 Quiz Builder

Related Articles: Make-It-Yourself Quiz Program
Developer(s): Dale F Lipinski
Date: 198x
Type: Program
Platform(s): TS 1000

Appears on

Assembled by Tim Ward from many sources. Contains programs 10176 – 10210.

Gallery

ZX81 Quiz Builder

Source Code

   1 REM %Q%U%I%Z% % % % % % % % % % % % % % % % % % % 
   2 REM %D%A%L%E% %F%.% %L%I%P%I%N%S%K%I% % % % % % % 
   3 REM %S%Y%N%T%A%X% %Q%U%A%R%T%E%R%L%Y% % % % % % % 
   4 REM %S%P%R%I%N%G% %1%9%8%3% % % % % % % % % % % % 
  10 LET S=0
  20 FAST 
  30 LET B$="\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''% %E%N%T%E%R% %A%N%S%W%E%R% "
  40 CLS 
  50 PRINT "WHAT TYPE OF QUIZ DO YOU WISH TOHAVE?",,"1 = MULTIPLE CHOICE","2 = TRUE OR FALSE","3 = DIRECT ANSWER",B$
  60 INPUT C$
  70 IF CODE C$<=28 OR CODE C$>=32 THEN GOTO 40
  80 CLS 
  90 PRINT "HOW MANY QUESTIONS DO YOU WISH  TO ASK?",,B$
 100 INPUT A
 110 CLS 
 120 PRINT "DO YOU WISH TO EXPLAIN THE","ANSWER IF IT IS WRONG?","1 = YES",,"0 = NO",,B$
 130 INPUT D$
 140 IF CODE D$<=27 OR CODE D$>=30 THEN GOTO 110
 160 IF D$="0" THEN LET H$=" "
 170 CLS 
 180 LET D=4
 190 IF C$="2" OR C$="3" THEN GOTO 230
 200 PRINT "WHAT IS THE MAXIMUM NUMBER OF","CHOICES PER QUESTION?","LIMIT OF 9",,B$
 210 INPUT B
 215 IF B>=10 THEN GOTO 170
 220 LET D=B+4
 230 LET E=42022
 240 CLS 
 250 PRINT "YOU WILL HAVE ";A;" QUESTIONS","WITH A TOTAL CHARACTER INPUT OF",E;TAB 0;"AN AVERAGE OF ";E/A,"CHARACTERS PER QUESTION";TAB 0;"IF THIS IS OKAY ENTER 0","IF NOT ENTER 1",,B$
 260 INPUT E$
 270 IF CODE E$<=27 OR CODE E$>=29 THEN GOTO 40
 280 DIM A(A+1,D)
 281 DIM A$(10505,4)
 282 LET L=PEEK 16400+256*PEEK 16401
 283 POKE L+1,41
 284 POKE L+2,164
 285 POKE L+3,1
 286 POKE L+4,38
 287 POKE L+5,164
 288 POKE L+6,0
 300 LET A(1,1)=1
 320 FOR F=1 TO A
 330 CLS 
 340 PRINT "WHAT IS QUESTION NUMBER ";F;"?",B$
 350 INPUT E$
 360 PRINT E$;TAB 0;"INPUT 0 IF THIS IS CORRECT","INPUT 1 IF NOT CORRECT",B$
 370 INPUT F$
 380 IF CODE F$<=27 OR CODE F$>=29 THEN GOTO 330
 390 LET H=LEN E$
 400 LET A(F,2)=A(F,1)+H
 410 LET A$(A(F,1) TO A(F,1)+H)=E$
 420 CLS 
 430 PRINT "WHAT IS THE ANSWER?"
 440 IF C$="2" THEN PRINT "1 = TRUE",,"0 = FALSE"
 450 PRINT B$
 460 INPUT E$
 465 CLS 
 470 PRINT E$;TAB 0;"INPUT 0 IF THIS IS CORRECT","INPUT 1 IF NOT CORRECT",B$
 475 IF C$="2" AND E$="1" THEN PRINT AT 0,0;"1 = TRUE"
 477 IF C$="2" AND E$="0" THEN PRINT AT 0,0;"0 = FALSE"
 480 INPUT F$
 490 IF CODE F$<=27 OR CODE F$>=29 THEN GOTO 420
 495 IF C$="1" THEN LET E$="  = "+E$
 500 LET H=LEN E$
 510 LET A(F,3)=A(F,2)+H
 520 LET A$(A(F,2) TO A(F,2)+H)=E$
 530 IF CODE D$<=28 OR CODE D$>=3 THEN GOTO 600
 540 CLS 
 550 PRINT "WHAT IS THE EXPLANATION","NO EXPLANATION INPUT A SPACE",B$
 560 INPUT H$
 565 CLS 
 570 PRINT H$;TAB 0;"INPUT 0 IF THIS IS CORRECT","INPUT 1 IF NOT CORRECT",B$
 580 INPUT F$
 590 IF CODE F$<=27 OR CODE F$>=29 THEN GOTO 540
 600 LET H=LEN H$
 610 LET A(F,4)=A(F,3)+H
 620 LET A$(A(F,3) TO A(F,3)+H)=H$
 630 IF CODE C$<=28 OR CODE C$>=30 THEN GOTO 750
 640 FOR C=1 TO B
 650 CLS 
 660 PRINT "WHAT IS THE NUMBER ";C;" CHOICE?","FOR NO CHOICE INPUT A SPACE",B$
 670 INPUT E$
 675 CLS 
 680 PRINT C;" = ";E$;TAB 0;"INPUT 0 IF THIS IS CORRECT","INPUT 1 IF NOT CORRECT",B$
 690 INPUT F$
 700 IF CODE F$<=27 OR CODE F$>=29 THEN GOTO 650
 705 LET E$=CHR$ (C+28)+" = "+E$
 710 LET H=LEN E$
 720 LET A(F,4+C)=A(F,3+C)+H
 730 LET A$(A(F,3+C) TO A(F,3+C)+H)=E$
 735 IF A$(A(F,2)+1 TO A(F,3)-1)=E$(2 TO ) THEN LET A$(A(F,2) TO A(F,2))=CHR$ (C+28)
 740 NEXT C
 750 LET A(F+1,1)=A(F,D)
 760 NEXT F
 770 CLS 
 780 PRINT "WHAT IS THE TITLE OF THE QUIZ?",B$
 790 INPUT I$
 795 CLS 
 800 PRINT I$;TAB 0;"INPUT 0 IF THIS IS CORRECT","INPUT 1 IF NOT CORRECT",B$
 810 INPUT F$
 820 IF CODE F$<=27 OR CODE F$>=29 THEN GOTO 770
 830 CLS 
 840 PRINT "WHAT IS YOUR NAME PLEASE?",B$
 850 INPUT J$
 860 CLS 
 870 PRINT "THANK YOU ";J$;TAB 0;"GET READY FOR YOUR QUIZ"
 880 PAUSE 400
 890 CLS 
 900 PRINT TAB 10;"% %Z%X%-%8%1% %Q%U%I%Z% ";TAB 0;I$;TAB 0;"TAKEN BY ";J$
 910 PAUSE 400
 920 FOR C=1 TO A
 930 CLS 
 940 LET E$=A$(A(C,1) TO A(C,2)-1)
 945 LET K$=A$(A(C,2) TO A(C,3)-1)
 950 PRINT "QUESTION NUMBER ";C;TAB 0;E$;TAB 0;B$( TO 32)
 955 IF C$="1" THEN LET K$=A$(A(C,2) TO A(C,2))
 960 IF C$="1" THEN FOR I=4 TO D-1
 970 IF C$="1" THEN PRINT A$(A(C,I) TO A(C,I+1)-1)
 980 IF C$="1" THEN NEXT I
 990 IF C$="2" THEN PRINT "1 = TRUE",,"0 = FALSE"
1000 PRINT B$
1010 INPUT F$
1020 IF K$=F$ THEN PRINT "% %V%E%R%Y% %G%O%O%D% %T%H%A%T% %I%S% %C%O%R%R%E%C%T% "
1030 IF K$=F$ THEN PAUSE 400
1040 IF K$=F$ THEN LET S=S+1
1050 IF K$=F$ THEN GOTO 1150
1060 PRINT "% %I% %A%M% %S%O%R%R%Y% %T%H%A%T% %I%S% %N%O%T% %C%O%R%R%E%C%T% "
1070 PAUSE 400
1080 CLS 
1090 PRINT "THE CORRECT ANSWER IS";TAB 0;A$(A(C,2) TO A(C,3)-1)
1100 IF C$="2" AND K$="1" THEN PRINT AT 1,0;"1 = TRUE"
1110 IF C$="2" AND K$="0" THEN PRINT AT 1,0;"0 = FALSE"
1120 PRINT A$(A(C,3) TO A(C,4)-1)
1130 PRINT "PRESS % %E%N%T%E%R%  TO CONTINUE",B$
1140 INPUT E$
1150 NEXT C
1160 CLS 
1170 PRINT "QUIZ IS COMPLETE. THANK YOU",J$;TAB 0,,"YOUR SCORE IS ";S;" % %C%O%R%R%E%C%T% ","OUT OF A POSSIBLE ";A;" QUESTIONS.";TAB 0;"YOUR GRADE AVERAGE IS ",S/A*100;" PER CENT"
1180 PAUSE 400
1190 PRINT AT 15,0;"DO YOU WISH TO SAVE THIS PROGRAM1 = NO",,"0 = YES",,B$
1200 LET S=0
1210 INPUT F$
1220 IF CODE F$<=27 OR CODE F$>=29 THEN GOTO 830
1230 SAVE "QUIZ-64K"
1240 GOTO 830
1250 SAVE "1018%9"
1260 RUN 
Scroll to Top