home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib30a.dsk / JANUARY.1987 / REVIEWER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  6KB  |  94 lines

  1. 10  REM  ************************
  2. 20  REM  * REVIEWER             *
  3. 30  REM  * BY RUDY A. GUY       *
  4. 40  REM  * COPYRIGHT (C) 1987   *
  5. 50  REM  * BY MICROSPARC, INC.  *
  6. 60  REM  * CONCORD, MA 01742    *
  7. 70  REM  ************************
  8. 80  GOTO 330
  9. 90  VTAB VV: HTAB HH: PRINT EE$;: GOSUB 100: PRINT : RETURN 
  10. 100  IF K$ = ""  THEN 150
  11. 110 BU$ =  LEFT$(BB$, LEN(K$) +1) + LEFT$(UU$,L) + LEFT$(BB$,L): PRINT K$;: INVERSE : PRINT " ";: NORMAL 
  12. 120  WAIT  -16384,128:K =  PEEK( -16384): IF K = 141  OR K = 155  THEN  PRINT B$" ";: POKE  -16368,0: RETURN 
  13. 130  IF K <160  OR K = 255  THEN 120
  14. 140  PRINT BU$;:LI = 0:K$ = "": INVERSE : PRINT " ";: NORMAL : PRINT B$;: GOTO 300
  15. 150  PRINT  LEFT$(UU$,L) LEFT$(BB$,L);:LI = 0:K$ = "": POKE  -16368,0: INVERSE : PRINT " ";: NORMAL : PRINT B$;
  16. 160  POKE  -16368,0
  17. 170 K =  PEEK( -16384): IF K <128  THEN 170
  18. 180  IF K >224  AND K <251  THEN  PRINT  CHR$(7);: GOTO 160
  19. 190  IF K >159  AND K < >255  THEN 310
  20. 200  IF K = 141  THEN  FOR K = LI TO L: PRINT " ";: NEXT : POKE  -16368,0: RETURN 
  21. 210  IF K < >155  THEN 250
  22. 220  IF LI = 0  THEN K$ =  CHR$(27): PRINT U$;: POKE  -16368,0: RETURN 
  23. 230  IF LI = L  THEN  PRINT " ";: PRINT B$;
  24. 240  PRINT  LEFT$(BB$,LI);: GOTO 150
  25. 250  IF (K < >136  AND K < >255)  THEN 300
  26. 260  IF LI = 0  THEN  PRINT  CHR$(7);: GOTO 160
  27. 270  IF LI = 1  THEN  PRINT B$;: PRINT U$U$;: PRINT B$;: PRINT B$;: INVERSE : PRINT " ";: NORMAL : PRINT B$;:LI = LI -1:K$ = "": GOTO 160
  28. 280  IF LI = L  THEN  PRINT B$;: PRINT U$" ";: PRINT B$B$;:LI = LI -1:K$ =  LEFT$(K$,LI): GOTO 160
  29. 290  PRINT B$;: PRINT U$U$;: PRINT B$;: PRINT B$;: INVERSE : PRINT " ";: NORMAL : PRINT B$;:LI = LI -1:K$ =  LEFT$(K$,LI): GOTO 160
  30. 300  IF K <160  THEN 160
  31. 310  IF LI = L  THEN  PRINT  CHR$(7);: GOTO 160
  32. 320  PRINT  CHR$(K);: INVERSE : PRINT " ";: NORMAL : PRINT B$;:K$ = K$ + CHR$(K -128):LI = LI +1: GOTO 160
  33. 330  TEXT : HOME : VTAB 7: PRINT "ONE MOMENT PLEASE..."
  34. 340 B$ =  CHR$(136):U$ =  CHR$(223)
  35. 350  FOR I = 1 TO 240:BB$ = BB$ + CHR$(136):UU$ = UU$ + CHR$(95): NEXT 
  36. 360 SC = 0
  37. 370  HOME : PRINT "THE REVIEWER": PRINT "BY RUDY A. GUY": PRINT "COPYRIGHT 1987 BY MICROSPARC, INC.": PRINT : PRINT "PLEASE PUT CAPS LOCK ON."
  38. 380  POKE 34,4
  39. 390  IF NA$ = ""  THEN VV = 12:HH = 1:K$ = "":EE$ = "ENTER YOUR FIRST NAME :":L = 10: GOSUB 90:NA$ = K$: IF NA$ = ""  THEN  HOME : GOTO 390
  40. 400  HOME : PRINT : ONERR  GOTO 900
  41. 410  PRINT  CHR$(4)"VERIFY NAMES"
  42. 420  PRINT  CHR$(4)"OPEN NAMES": PRINT  CHR$(4)"READ NAMES": INPUT SU: DIM SU$(SU): FOR I = 1 TO SU: INPUT SU$(I): NEXT : PRINT  CHR$(4)"CLOSE NAMES": POKE 216,0
  43. 430  FOR I = 1 TO SU: PRINT I" "SU$(I)
  44. 440  IF I = 18  THEN  POKE 32,19: POKE 33,19: HOME : PRINT 
  45. 450  NEXT 
  46. 460  POKE 32,0: POKE 33,39: POKE 34,23: HOME 
  47. 470  VTAB 24: HTAB 1: PRINT "SELECT ONE OF THE ABOVE TOPICS :";: INPUT SE$:SE =  VAL(SE$): IF SE <1  OR SE >SU  THEN 470
  48. 480  ONERR  GOTO 940
  49. 490  POKE 34,4: HOME : VTAB 12: PRINT "LOADING ";SU$(SE);" REVIEW INFORMATION.": POKE 34,13
  50. 500 O$ =  CHR$(4) +"OPEN " +SU$(SE):R$ =  CHR$(4) +"READ " +SU$(SE):C$ =  CHR$(4) +"CLOSE"
  51. 510  PRINT O$: PRINT R$: INPUT NU: DIM CA$(NU),QU$(NU): FOR I = 1 TO NU: INPUT QU$(I),CA$(I): NEXT : PRINT C$
  52. 520  PRINT  CHR$(4)"OPEN "SU$(SE)".INST": PRINT  CHR$(4)"READ "SU$(SE)".INST": INPUT IN$: PRINT C$: POKE 216,0
  53. 530  POKE 34,4: HOME 
  54. 540  IF  LEN(IN$) = 0  THEN 580
  55. 550  PRINT : INVERSE : PRINT "(INSTRUCTIONS)": PRINT : NORMAL 
  56. 560 N$ = IN$:M1 = 5:M2 = 1:M3 = 39: GOSUB 790
  57. 570  VTAB 23: PRINT "PRESS RETURN TO BEGIN.";: POKE  -16368,0: GET A$: POKE  -16368,0: PRINT : HOME 
  58. 580  FOR Q = 1 TO NU
  59. 590 TR = 0
  60. 600  HOME : VTAB 7
  61. 610  PRINT "("Q")";: GOSUB 780
  62. 620 VV = 15:HH = 1:EE$ = "": VTAB 13: PRINT "PLEASE ENTER YOUR ANSWER :":L =  LEN(CA$(Q)):K$ = "": GOSUB 90:SA$ = K$
  63. 630  IF SA$ = CA$(Q)  THEN 670
  64. 640 TR = TR +1
  65. 650  IF TR = 3  THEN  PRINT : PRINT "THE CORRECT ANSWER IS:": PRINT : PRINT CA$(Q): GOTO 680
  66. 660  IF SA$ < >CA$(Q)  THEN  PRINT "INCORRECT. PRESS RETURN TO TRY AGAIN.";: POKE  -16368,0:: GET YN$: PRINT YN$: POKE  -16368,0: GOTO 600
  67. 670 SC = SC +1
  68. 680  IF TR >0  THEN TR = 0: IF SA$ < >CA$(Q)  THEN 700
  69. 690  PRINT : INVERSE : PRINT "CORRECT"; CHR$(7): NORMAL 
  70. 700  IF Q = NU  THEN 720
  71. 710  VTAB 22: PRINT "PRESS RETURN FOR THE NEXT QUESTION.": PRINT "PRESS ESCAPE TO QUIT. ";: POKE  -16368,0: GET YN$: POKE  -16368,0: PRINT : IF YN$ =  CHR$(27)  THEN Q = 200
  72. 720  NEXT : IF Q >100  THEN  CLEAR : GOTO 330
  73. 730  VTAB 23: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: POKE  -16368,0: PRINT 
  74. 740  HOME : VTAB 12: PRINT NA$;", YOU GOT "SC" CORRECT OUT": PRINT "OF A POSSIBLE ";NU
  75. 750  PRINT : PRINT "YOUR SCORE IS " INT(((SC/NU) *100) +.6)
  76. 760  VTAB 23: PRINT "WOULD YOU LIKE TO TRY ANOTHER SUBJECT?";: POKE  -16368,0: IF YN$ = "Y"  OR YN$ =  CHR$(121)  THEN  CLEAR : GOTO 330
  77. 770  TEXT : HOME : END 
  78. 780 M1 = 6:M2 = 6:M3 = 39:N$ = QU$(Q)
  79. 790 LN =  LEN(N$): FOR J = M3 -M1 TO 1  STEP  -1:BP$ =  MID$ (N$,J,1): IF BP$ = " "  OR BP$ = ","  OR BP$ = ":"  OR BP$ = "."  OR BP$ = "-"  OR LN < = M3 -M1  THEN 810
  80. 800  NEXT : HTAB M1: PRINT  LEFT$(N$,M3 -M1 -1);: PRINT "-":J = M3 -M1 -1: GOTO 820
  81. 810  HTAB M1: PRINT  LEFT$(N$,J): IF LN < = M3 -M1  THEN  RETURN 
  82. 820 N1$ =  RIGHT$(N$,LN -J)
  83. 830  IF  LEFT$(N1$,1) = " "  THEN LN =  LEN(N1$) -1:N1$ =  MID$ (N1$,2,LN): GOTO 830
  84. 840 LN =  LEN(N1$): FOR J = M3 -M2 TO 1  STEP  -1:BP$ =  MID$ (N1$,J,1): IF BP$ = " "  OR BP$ = ","  OR BP$ = ":"  OR BP$ = "."  OR BP$ = "-"  OR LN < = M3 -M2  THEN 860
  85. 850  NEXT : HTAB M2: PRINT  LEFT$(N1$,M3 -M2 -1);: PRINT "-":J = M3 -M2 -1:LN =  LEN(N1$): GOTO 870
  86. 860  HTAB M2: PRINT  LEFT$(N1$,J)
  87. 870  IF LN < = M3 -M2  THEN  RETURN 
  88. 880 N1$ =  RIGHT$(N1$,LN -J): GOTO 830
  89. 890  END 
  90. 900 ER =  PEEK(222):EL =  PEEK(218) + PEEK(219) *256
  91. 910  IF ER = 6  THEN  TEXT : HOME : VTAB 12: PRINT "NO SUBJECTS AVAILABLE.": END 
  92. 920  IF ER = 5  OR ER = 107  THEN  TEXT : HOME : PRINT : PRINT  CHR$(4)"CLOSE": PRINT "NO SUBJECTS AVAILABLE.": END 
  93. 930  IF ER = 254  THEN  GOTO 330
  94. 940  HOME : VTAB 7: PRINT "ERROR READING FILE": VTAB 23: PRINT "PRESS RETURN TO RESTART": POKE  -16368,0: GET YN$: PRINT YN$: POKE  -16368,0: CALL  -3288: CLEAR : GOTO 330