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

  1. 10  REM  ************************
  2. 20  REM  * REVIEWER.MAINT       *
  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  CLEAR : TEXT : HOME : VTAB 7: PRINT "ONE MOMENT PLEASE..."
  34. 340  IF  PEEK(768) = 0  AND  PEEK(769) = 255  THEN F = 1
  35. 350  DIM SU$(33),QU$(100),CA$(100)
  36. 360 B$ =  CHR$(136):U$ =  CHR$(223)
  37. 370 BB$ = "":UU$ = "": FOR I = 1 TO 240::BB$ = BB$ + CHR$(136):UU$ = UU$ + CHR$(95): NEXT 
  38. 380  TEXT : HOME 
  39. 390  PRINT "THE REVIEWER": PRINT "MAINTENANCE MODULE": PRINT "BY RUDY A. GUY"
  40. 400  PRINT "COPYRIGHT 1987 BY MICROSPARC, INC.": PRINT : PRINT "PUT CAPS LOCK KEY ON"
  41. 410  POKE 34,5: HOME 
  42. 420  IF F = 1  THEN F = 0: GOTO 440
  43. 430  POKE 768,0: POKE 769,255
  44. 440  ONERR  GOTO 1620
  45. 450  PRINT  CHR$(4)"VERIFY NAMES"
  46. 460  PRINT  CHR$(4)"OPEN NAMES": PRINT  CHR$(4)"READ NAMES": INPUT SU:SU = (SU >32) *32 +(SU <33) *SU: IF SU = 0  THEN  PRINT  CHR$(4)"CLOSE": GOTO 480
  47. 470  FOR I = 1 TO SU: INPUT SU$(I): NEXT : PRINT  CHR$(4)"CLOSE NAMES":
  48. 480 W1$ = " IS ":W2$ = " ARE ": VTAB 7: HTAB 2: PRINT "THERE";: IF SU = 1  THEN  PRINT W1$;"CURRENTLY "SU" FILE STORED.": GOTO 510
  49. 490  PRINT W2$"CURRENTLY "SU" FILES STORED."
  50. 500  POKE 216,0
  51. 510  VTAB 9: HTAB 11: PRINT "1. ADD A NEW SUBJECT": HTAB 11: PRINT "2. MAKE CHANGES": HTAB 11: PRINT "3. LIST ALL SUBJECTS": HTAB 11: PRINT "4. DELETE A SUBJECT": HTAB 11: PRINT "5. QUIT"
  52. 520  PRINT : HTAB 7: PRINT "SELECT ONE OF THE ABOVE:";: POKE  -16368,0: GET YN$: PRINT YN$: POKE  -16368,0
  53. 530  IF YN$ < >"1"  AND YN$ < >"2"  AND YN$ < >"3"  AND YN$ < >"4"  AND YN$ < >"5"  THEN  HOME : GOTO 480
  54. 540  POKE 34,5: HOME 
  55. 550  IF YN$ = "3"  THEN 600
  56. 560  IF YN$ = "4"  THEN 680
  57. 570  IF YN$ = "1"  THEN 870
  58. 580  IF YN$ = "2"  THEN 1190
  59. 590  TEXT : HOME : END 
  60. 600  REM  LIST MODULE
  61. 610  HOME 
  62. 620  IF SU = 0  THEN  VTAB 12: PRINT "NO RECORDS IN FILE.": VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: POKE  -16368,0: HOME : GOTO 330
  63. 630  FOR I = 1 TO SU: IF I <10  THEN  PRINT " "I" "SU$(I): GOTO 650
  64. 640  PRINT I" "SU$(I)
  65. 650  FOR I = 16  THEN  POKE 32,19: POKE 33,19: HOME 
  66. 660  NEXT 
  67. 670  POKE 32,0: POKE 33,40: VTAB 23: PRINT "PRESS RETURN FOR MENU.";: POKE  -16368,0: GET YN$: POKE  -16368,0: PRINT : POKE 34,5: HOME : GOTO 480
  68. 680  REM  DELETE MODULE
  69. 690  IF SU = 0  THEN  HOME : VTAB 12: PRINT "NO RECORDS ON DISK!": VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: POKE  -16368,0: GOTO 330
  70. 700  HOME : GOSUB 1540
  71. 710  POKE 32,0: POKE 33,39: POKE 34,23
  72. 720  HOME 
  73. 730  INPUT "DELETE WHICH SUBJECT :";D$:D =  VAL(D$): IF D <1  OR D >SU  THEN  HOME : GOTO 330
  74. 740 EE$ = "TYPE 'DEL' TO CONFIRM :":K$ = "":L = 3:VV = 23:HH = 1: GOSUB 90: IF K$ = "DEL"  THEN 760
  75. 750  HOME : GOTO 330
  76. 760  POKE 34,5: HOME : VTAB 12: PRINT "SUBJECT BEING DELETED."
  77. 770  PRINT  CHR$(4)"DELETE ";SU$(D): PRINT  CHR$(4)"DELETE "SU$(D)".INST"
  78. 780  IF D = 1  AND SU = 1  THEN SU = 0:SU$(1) = "": GOTO 800
  79. 790  FOR I = D TO SU -1:SU$(I) = SU$(I +1): NEXT :SU = SU -1
  80. 800  PRINT  CHR$(4)"OPEN NAMES": PRINT  CHR$(4)"WRITE NAMES": PRINT SU: FOR I = 1 TO SU: PRINT SU$(I): NEXT : PRINT  CHR$(4)"CLOSE"
  81. 810  POKE 34,5: HOME 
  82. 820  IF SU = 0  THEN  GOTO 330
  83. 830  GOSUB 1540
  84. 840  PRINT 
  85. 850  POKE 32,0: POKE 33,40: HTAB 1: PRINT "DELETE ANOTHER (Y/N)?";: POKE  -16368,0: GET YN$: PRINT YN$: POKE  -16368,0: IF YN$ = "Y"  OR YN$ =  CHR$(121)  THEN 730
  86. 860  GOTO 330
  87. 870  REM  ADD MODULE
  88. 880 SU = SU +1: IF SU >32  THEN  HOME : VTAB 12: PRINT "THERE ARE ALREADY 32 REVIEW SUBJECTS.": VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: POKE  -16368,0: HOME : GOTO 330
  89. 890  HOME :VV = 12:HH = 1:EE$ = "ENTER SUBJECT NAME: ":K$ = "":L = 15 -5 *( PEEK(48896) = 76): GOSUB 90:SU$(SU) = K$: IF SU$(SU) = ""  THEN 890
  90. 900  HOME : VTAB 7:A$ = "ENTER ANY SPECIAL INSTRUCTIONS FOR THE": GOSUB 1600
  91. 910 A$ =  MID$ (SU$(SU),1,14) +" FILE.": GOSUB 1600
  92. 920 VV = 12:HH = 1:L = 238:K$ = "":EE$ = "": GOSUB 90:IN$ = K$: IF  LEN(IN$) = 0  THEN 900
  93. 930  ONERR  GOTO 1700
  94. 940  PRINT  CHR$(4)"OPEN "SU$(SU)".INST": PRINT  CHR$(4)"WRITE "SU$(SU)".INST": PRINT  CHR$(34);IN$: PRINT  CHR$(4)"CLOSE": POKE 216,0
  95. 950  IF F = 1  THEN  RETURN 
  96. 960 CN = 1
  97. 970  HOME : VTAB 7: INVERSE : PRINT "(QUESTION NO."CN")   NUMBER REMAINING ";100 -CN
  98. 980  NORMAL 
  99. 990 VV = 9:L = 200:K$ = "":EE$ = "":HH = 1
  100. 1000  IF F = 1  THEN 1020
  101. 1010  VTAB 15: PRINT : PRINT "ENTER YOUR QUESTION ABOVE.": PRINT "PRESS RETURN TO QUIT."
  102. 1020  GOSUB 90:QU$(CN) = K$
  103. 1030  IF F = 1  THEN F = 0: RETURN 
  104. 1040  IF F = 2  THEN 1070
  105. 1050  IF QU$(CN) = ""  AND CN = 1  THEN  PRINT  CHR$(4)"DELETE "SU$(SU)".INST": RUN 
  106. 1060  IF QU$(CN) = ""  THEN CN = CN -1: GOTO 1140
  107. 1070  HOME : PRINT "QUESTION ";CN: PRINT : PRINT QU$(CN):VV = 15:HH = 1:L = 50
  108. 1080 EE$ = "":K$ = "": VTAB 20: PRINT "ENTER THE CORRECT ANSWER.": GOSUB 90:CA$(CN) = K$
  109. 1090  IF  LEN(CA$(CN)) = 0  THEN  VTAB 15: GOTO 1070
  110. 1100  IF F = 1  THEN F = 0: RETURN 
  111. 1110  VTAB 20: CALL  -868: PRINT "IS THIS INFORMATION CORRECT?";: POKE  -16368,0: GET YN$: PRINT YN$: POKE  -16368,0: IF YN$ = "N"  OR YN$ =  CHR$(110)  THEN 970
  112. 1120  IF F = 2  THEN F = 0: RETURN 
  113. 1130 CN = CN +1: IF CN <101  THEN 970
  114. 1140  HOME : VTAB 12: PRINT "WRITING FILE ";: PRINT SU$(SU);: PRINT " TO THE DISK.": ONERR  GOTO 1720
  115. 1150  PRINT  CHR$(4)"OPEN NAMES": PRINT  CHR$(4)"WRITE NAMES": PRINT SU: FOR I = 1 TO SU: PRINT SU$(I): NEXT : PRINT  CHR$(4)"CLOSE"
  116. 1160  PRINT  CHR$(4)"OPEN "SU$(SU): PRINT  CHR$(4)"WRITE "SU$(SU): PRINT CN: FOR I = 1 TO CN: PRINT  CHR$(34);QU$(I): PRINT  CHR$(34);CA$(I): NEXT : PRINT  CHR$(4)"CLOSE": POKE 216,0
  117. 1170  GOTO 330
  118. 1180  REM  MAKE CHANGES
  119. 1190  IF SU = 0  THEN  VTAB 12: PRINT "NO RECORDS ON DISK!": VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: PRINT YN$: POKE  -16368,0: GOTO 330
  120. 1200  HOME : PRINT : GOSUB 1540
  121. 1210  POKE 34,22: POKE 32,0: POKE 33,40: VTAB 23: HOME : PRINT "ENTER TOPIC TO MODIFY BY NUMBER:";: INPUT SE: IF SE <1  OR SE >SU  THEN  GOTO 1210
  122. 1220  POKE 34,5: HOME : ONERR  GOTO 1690
  123. 1230  TEXT : HOME : VTAB 12: PRINT "READING IN ";SU$(SE);" INFORMATION": POKE 34,13: HOME 
  124. 1240  PRINT  CHR$(4)"OPEN "SU$(SE): PRINT  CHR$(4)"READ "SU$(SE): INPUT NU: FOR I = 1 TO NU: INPUT QU$(I),CA$(I): NEXT 
  125. 1250  PRINT  CHR$(4)"CLOSE ";SU$(SE)
  126. 1260  POKE 34,5: HOME 
  127. 1270  PRINT  CHR$(4)"OPEN ";SU$(SE)".INST": PRINT  CHR$(4)"READ "SU$(SE)".INST": INPUT IN$: PRINT  CHR$(4)"CLOSE"
  128. 1280  POKE 216,0
  129. 1290  VTAB 7: PRINT "("SU$(SE)") INSTRUCTIONS.": PRINT : PRINT IN$
  130. 1300  PRINT : PRINT "CHANGE (Y/N)?";: POKE  -16368,0: GET YN$: PRINT YN$: POKE  -16368,0: IF YN$ = "N"  OR YN$ =  CHR$(110)  THEN  HOME : GOTO 1320
  131. 1310 SU = SE:F = 1: GOSUB 900:F = 0: HOME 
  132. 1320  FOR I = 1 TO NU
  133. 1330  VTAB 5: PRINT : PRINT "QUESTION ";I: PRINT : PRINT QU$(I): PRINT : PRINT "CORRECT ANSWER": PRINT : PRINT CA$(I)
  134. 1340  VTAB 21: PRINT "<C>HANGE QUESTION <N>EW ANSWER <D>ELETE <S>KIP TO NEXT QUESTION <ESC> FOR MENU"
  135. 1350  PRINT "SELECT BY LETTER:";: POKE  -16368,0: GET L$: PRINT L$: POKE  -16368,0:
  136. 1360  IF L$ < >"C"  AND L$ < >"N"  AND L$ < >"D"  AND L$ < >"S"  AND L$ < > CHR$(99)  AND L$ < > CHR$(110)  AND L$ < > CHR$(100)  AND L$ < > CHR$(115)  AND L$ < > CHR$(27)  THEN 1260
  137. 1370  IF L$ = "C"  OR L$ =  CHR$(99)  THEN CN = I:F = 1:CH = 1: GOSUB 970: HOME : GOTO 1330
  138. 1380  IF L$ =  CHR$(27)  THEN  GOTO 1450
  139. 1390  IF L$ = "N"  OR L$ =  CHR$(110)  THEN CN = I:F = 1:CH = 1: GOSUB 1070: HOME : GOTO 1330
  140. 1400  IF L$ = "D"  OR L$ =  CHR$(100)  THEN CH = 1: GOSUB 1500
  141. 1410  HOME : NEXT 
  142. 1420  HOME : VTAB 12: PRINT "DO YOU WISH TO ADD ANOTHER QUESTION? (Y/N)";:: POKE  -16368,0: GET YN$: PRINT YN$: POKE  -16368,0
  143. 1430  IF YN$ = "Y"  OR YN$ =  CHR$(121)  THEN F = 2:CH = 1:NU = NU +1:CN = NU: HOME : GOSUB 970: GOTO 1420
  144. 1440  ON YN$ < >"N"  AND YN$ < > CHR$(110) GOTO 1420: IF   NOT CH  THEN  GOTO 330
  145. 1450  ONERR  GOTO 1710
  146. 1460  HOME : VTAB 12: PRINT "REWRITING "SU$(SE)" FILE.": POKE 34,13: HOME 
  147. 1470  PRINT  CHR$(4)"OPEN "SU$(SE): PRINT  CHR$(4)"WRITE"SU$(SE): PRINT NU
  148. 1480  FOR I = 1 TO NU: PRINT  CHR$(34);QU$(I): PRINT  CHR$(34);CA$(I): NEXT : PRINT  CHR$(4)"CLOSE"
  149. 1490  POKE 34,5: POKE 216,0: GOTO 330
  150. 1500  IF I = 1  AND NU = 1  THEN  HOME : VTAB 12: PRINT "RETURNING TO MENU. PLEASE SELECT THE    DELETE OPTION.": FOR I = 1 TO 3000: NEXT : GOTO 330
  151. 1510  IF I = NU  THEN NU = NU -1: RETURN 
  152. 1520 S = I:I = I -1: FOR J = S TO NU -1
  153. 1530 QU$(J) = QU$(J +1):CA$(J) = CA$(J +1): NEXT :I = 1 +NU:NU = NU -1: FOR I = S TO NU: POP : HOME : GOTO 1330
  154. 1540  HOME 
  155. 1550  FOR I = 1 TO SU: IF I <10  THEN  PRINT " "I" "SU$(I): GOTO 1570
  156. 1560  PRINT I" "SU$(I)
  157. 1570  IF I = 16  THEN  POKE 32,19: POKE 33,19: HOME 
  158. 1580  NEXT 
  159. 1590  RETURN 
  160. 1600  HTAB (20 - LEN(A$)/2) +1: PRINT A$: RETURN 
  161. 1610  REM  ::::ERROR ROUTINE
  162. 1620 ER =  PEEK(222)
  163. 1630  IF ER = 6  OR (ER = 5  AND  PEEK(48896) = 76)  THEN  PRINT : PRINT  CHR$(4)"CLOSE": PRINT  CHR$(4)"OPEN NAMES": PRINT  CHR$(4)"WRITE NAMES": PRINT 0: PRINT  CHR$(4)"CLOSE": CALL  -3288: GOTO 450
  164. 1640  IF ER = 5  THEN  PRINT  CHR$(4)"CLOSE": PRINT  CHR$(4)"OPEN NAMES": PRINT  CHR$(4)"WRITE NAMES": PRINT 0: PRINT  CHR$(4)"CLOSE": CALL  -3288: GOTO 480
  165. 1650  IF ER = 8  THEN  TEXT : HOME : VTAB 7: PRINT "I/O ERROR": PRINT "PLEASE CHECK DISK": VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: POKE  -16368,0: CALL  -3288: PRINT : GOTO 330
  166. 1660 EL =  PEEK(218) + PEEK(219) *256
  167. 1670  TEXT : HOME : VTAB 7: PRINT "ERROR TYPE "ER" IN LINE #"EL
  168. 1680  END 
  169. 1690  TEXT : HOME : VTAB 7: PRINT "ERROR READING FILE": VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: POKE  -16368,0: CALL  -3288: PRINT : GOTO 1220
  170. 1700  HOME : VTAB 7: PRINT "ERROR WRITING FILE": PRINT "PLEASE CHECK DISK": VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: POKE  -16368,0: CALL  -3288: PRINT : GOTO 930
  171. 1710  HOME : VTAB 7: PRINT "ERROR WRITING FILE": PRINT "PLEASE CHECK DISK": VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: POKE  -16368,0: CALL  -3288: PRINT : GOTO 1450
  172. 1720  HOME : VTAB 7: PRINT "ERROR WRITING FILE": PRINT "PLEASE CHECK DISK": VTAB 22: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET YN$: POKE  -16368,0: CALL  -3288: PRINT : GOTO 1140