home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 119 / SGDS 119.2mg / SDGS.119 / C / DP.EASY.GRADER (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1991-08-05  |  17.1 KB  |  433 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 0  REM EASY GRADER BY D.P.
  2. 1  PRINT  CHR$(4);"PR#3": PRINT 
  3. 2  POKE 34,0: POKE 35,24: POKE 33,80: POKE 32,0: CLEAR : GOTO 500
  4. 3  POKE 1403,28: PRINT "Press any key to go on.";: GET B$: PRINT  CHR$(13): VTAB ( PEEK(37) -1): CALL  -868: RETURN 
  5. 6  IF NC = 1  OR NC = 2  THEN D = 13: RETURN 
  6. 8  IF NC = 3  OR NC = 4  THEN D = 12: RETURN 
  7. 10  IF NC = 5  OR NC = 6  THEN D = 11: RETURN 
  8. 12  IF NC = 7  OR NC = 8  THEN D = 10: RETURN 
  9. 14  IF NC = 9  THEN D = 9: RETURN 
  10. 16  IF T = 0  THEN P = 74: RETURN 
  11. 18 P = 14 +(6 *T): RETURN 
  12. 20  HOME : FOR I = 1 TO NV: VTAB (V(I)): GOSUB 22: NEXT I: RETURN 
  13. 22  PRINT " ______________________________________________________________________________": RETURN 
  14. 24  IF V(3) = 0  THEN D = 24: RETURN 
  15. 26 D = 6 +(2 *V(3)): RETURN 
  16. 30 E$ = "": VTAB D: POKE 1403,T:Z = 0
  17. 40  IF A = 1  OR A = 2  THEN  PRINT "....................": VTAB D: POKE 1403,T
  18. 42  IF A = 0  THEN  PRINT "....": VTAB D: POKE 1403,T
  19. 44  IF A = 3  THEN  PRINT "....";: VTAB 3: PRINT : VTAB D: POKE 1403,T
  20. 46  IF A = 4  THEN  PRINT "    ": VTAB D: POKE 1403,T
  21. 48  IF A = 5  THEN  PRINT "    ";: VTAB 3: PRINT : VTAB D: POKE 1403,T
  22. 50  IF A = 4  OR A = 5  THEN  PRINT " " CHR$(8);: GOTO 60
  23. 55  PRINT "." CHR$(8);
  24. 60  IF  PEEK(49152) <128  THEN  PRINT "_" CHR$(8);: GOTO 50
  25. 70  GET B$
  26. 75  IF B$ =  CHR$(13)  AND A < >3  AND A < >5  THEN  PRINT : GOTO 170
  27. 80  IF B$ =  CHR$(13)  THEN  VTAB 3: PRINT : GOTO 170
  28. 90  IF B$ =  CHR$(127)  AND A = 2  AND E$ = ""  THEN  PRINT : GOTO 170
  29. 95  IF B$ =  CHR$(127)  THEN B$ =  CHR$(8)
  30. 100  IF B$ =  CHR$(4)  AND (A = 1  OR A = 2)  THEN  POKE 1403,T: PRINT ".................... ": VTAB D: POKE 1403,T:E$ = "": GOTO 50
  31. 102  IF B$ =  CHR$(4)  AND A = 0  THEN  POKE 1403,T: PRINT ".... ": VTAB D: POKE 1403,T:E$ = "": GOTO 50
  32. 104  IF B$ =  CHR$(4)  AND A = 4  THEN  POKE 1403,T: PRINT "     ": VTAB D: POKE 1403,T:E$ = "": GOTO 50
  33. 106  IF B$ =  CHR$(4)  AND A = 3  THEN  POKE 1403,T: PRINT ".... ";: VTAB 3: PRINT : VTAB D: POKE 1403,T:E$ = "": GOTO 50
  34. 108  IF B$ =  CHR$(4)  AND A = 5  THEN  POKE 1403,T: PRINT "     ";: VTAB 3: PRINT : VTAB D: POKE 1403,T:E$ = "": GOTO 50
  35. 110  IF B$ =  CHR$(27)  AND A < >3  AND A < >5  THEN  POKE 1403,T: PRINT :E$ = "": GOTO 170
  36. 115  IF B$ =  CHR$(27)  THEN  POKE 1403,T: PRINT "     ";:E$ = "": VTAB 3: PRINT : GOTO 170
  37. 120  IF B$ =  CHR$(8)  THEN  IF  LEN(E$) = 1  THEN E$ = "": PRINT  CHR$(8);: GOTO 50
  38. 130  IF B$ =  CHR$(8)  THEN  IF  LEN(E$)  THEN E$ =  LEFT$(E$, LEN(E$) -1): PRINT  CHR$(8);: GOTO 50
  39. 140 S = 0:F =  ASC(B$): IF A < >4  AND A < >5  THEN 148
  40. 141  IF F >57  OR (F <48  AND (F < >45  AND F < >46))  THEN 160
  41. 142  IF F = 45  THEN  IF  LEN(E$)  THEN 160
  42. 144  IF F = 46  THEN Z = Z +1: IF Z >1  THEN  GOSUB 180
  43. 146 S =  -1: GOTO 150
  44. 148  IF (F >64  AND F <91)  OR (F >96  AND F <123)  OR (F >47  AND F <58)  OR F = 32  OR F = 46  OR F = 39  OR F = 45  THEN S =  -1
  45. 150  IF S =  -1  THEN  IF  LEN(E$) <C  THEN E$ = E$ +B$: PRINT B$;: GOTO 165
  46. 160  PRINT  CHR$(7);
  47. 165  GOTO 50
  48. 170 Z = 0: RETURN 
  49. 180 B$ = ""
  50. 182  FOR I = 1 TO  LEN(E$)
  51. 184  IF  MID$ (E$,I,1) < >"."  THEN B$ = B$ + MID$ (E$,I,1)
  52. 186  NEXT I
  53. 188 E$ = B$: VTAB D: POKE 1403,T: PRINT E$;:Z = 1:B$ = "."
  54. 189  RETURN 
  55. 190  DATA Easy Grader - Course Selector,Enter Student Names,Edit Student Names,Enter New Grades,Spreadsheet of Grades,Print Grade Info. to Printer,End
  56. 200  IF T = 2  THEN P = 27: RETURN 
  57. 204  IF T = 1  THEN P = 0: RETURN 
  58. 207  IF T = 0  THEN P = 54: RETURN 
  59. 210  VTAB D: POKE 1403,P: PRINT "                          ": RETURN 
  60. 212  IF E = 1  AND CNT = 1  THEN CNT = 0:I = 0: GOTO 238
  61. 213  HOME : VTAB 11: POKE 1403,20: PRINT "Please stand by while I delete the name.": IF NG >0  THEN  VTAB 13: POKE 1403,10: PRINT "There are grades in the memory, so this might take a while."
  62. 214  IF E = CNT  THEN 235
  63. 216  FOR I = E TO CNT -1
  64. 218 N$(I) = N$(I +1)
  65. 220  IF NG = 0  THEN 230
  66. 222  FOR T = 0 TO NG
  67. 224 G(I,T) = G(I +1,T)
  68. 226  NEXT T
  69. 230  NEXT I
  70. 235 N$(CNT) = "": IF NG >0  THEN  FOR I = 0 TO NG:G(CNT,I) = 0: NEXT I
  71. 236 CNT = CNT -1
  72. 238 SA = 1: RETURN 
  73. 295  ONERR  GOTO 385
  74. 296  HOME : VTAB 11: POKE 1403,21: PRINT "Please stand by while I load the data.": VTAB 13: POKE 1403,28: PRINT "This might take a while."
  75. 316  PRINT  CHR$(4);"OPEN COURSE."KN: PRINT  CHR$(4);"READ COURSE."KN
  76. 320  INPUT CNT
  77. 325  INPUT NG
  78. 330  IF CNT = 0  THEN 360
  79. 335  FOR I = 1 TO CNT: INPUT N$(I): NEXT 
  80. 340  IF NG = 0  THEN 360
  81. 345  FOR E = 0 TO NG: FOR I = 0 TO CNT: INPUT G(I,E): NEXT 
  82. 350  IF E >0  THEN  INPUT G$(E)
  83. 355  NEXT 
  84. 360 SA = 0
  85. 385  PRINT  CHR$(4)"close": POKE 216,0: GOTO 590
  86. 400  IF SA = 0  THEN 490
  87. 405  HOME : VTAB 11: POKE 1403,21: PRINT "Please stand by while I save the data.": VTAB 13: POKE 1403,28: PRINT "This might take a while."
  88. 426  PRINT  CHR$(4);"OPEN COURSE."KN: PRINT  CHR$(4);"WRITE COURSE."KN
  89. 430  PRINT CNT
  90. 435  PRINT NG
  91. 440  IF CNT = 0  THEN 470
  92. 445  FOR I = 1 TO CNT: PRINT N$(I): NEXT 
  93. 450  IF NG = 0  THEN 470
  94. 455  FOR E = 0 TO NG: FOR I = 0 TO CNT: PRINT G(I,E): NEXT 
  95. 460  IF E >0  THEN  PRINT G$(E)
  96. 465  NEXT 
  97. 470  PRINT  CHR$(4);"CLOSE"
  98. 490 SA = 0: RETURN 
  99. 500  DIM MU$(16),V(6),N$(50),G(50,40),G$(40),P(50)
  100. 505  HOME 
  101. 510  VTAB 11: POKE 1403,21: PRINT "Please stand by while I load the data."
  102. 515  PRINT  CHR$(4);"OPEN SEUG"
  103. 520  PRINT  CHR$(4);"READ SEUG"
  104. 525  INPUT RC$
  105. 530  INPUT NC
  106. 535  INPUT TN$
  107. 540  IF NC = 0  THEN 560
  108. 545  FOR I = 1 TO NC
  109. 550  INPUT MU$(I)
  110. 555  NEXT I
  111. 560  PRINT  CHR$(4);"CLOSE SEUG"
  112. 562 MU$(0) = "Easy Grader Master": FOR I = (NC +1) TO (NC +7): READ MU$(I): NEXT I
  113. 570  HOME : IF NC = 0  THEN  VTAB 11: POKE 1403,11: PRINT "There are no courses to enter students and/or grades for.": VTAB 12: GOSUB 3: PRINT  CHR$(4);"-DP.EASY.MASTER"
  114. 572  IF Z < > -23  THEN 1500
  115. 580 M = 1:Z = 0
  116. 590  IF M = 1  THEN S = 1:F = NC:T = 27:E = 0: GOSUB 6
  117. 592  IF M = 2  THEN S = (NC +1):F = (NC +7):T = 23:E = 1:D = 10
  118. 599  HOME 
  119. 600  IF M = 1  THEN V(1) = 1:V(2) = 6:V(3) = 19:V(4) = 23:NV = 4: GOSUB 20: VTAB 3: POKE 1403,13: PRINT "E A S Y   G R A D E R - C O U R S E   S E L E C T O R": VTAB 5: POKE 1403,25: PRINT "Press [CONTROL] - [E] to End."
  120. 602  IF M = 2  THEN V(1) = 1:V(2) = 8:V(3) = 18:V(4) = 22:NV = 4: GOSUB 20: VTAB 3: POKE 1403,29: PRINT "E A S Y   G R A D E R": VTAB 4: POKE 1403,38: PRINT "BY": VTAB 5: POKE 1403,30: PRINT "Donpaul C. Stephens": VTAB 7: POKE 1403,8: PRINT "Grades for: ";TN$;"    Course: ";K$
  121. 610  IF M = 1  THEN  VTAB (D -1): POKE 1403,T: PRINT "0 -> ";MU$(0)
  122. 620  VTAB D: POKE 1403,T: INVERSE : PRINT "1 -> ";MU$(S): NORMAL 
  123. 625 N = 1:A = 1:C = S +1: IF NC = 1  THEN 650
  124. 630  FOR I = C TO F:N = N +1: POKE 1403,T: PRINT N;" -> ";MU$(I): NEXT 
  125. 650  IF M = 1  THEN  VTAB 21: POKE 1403,12: PRINT "PRESS [RETURN] TO ACCEPT THE HIGHLIGHTED COURSE/OPTION ";: GET A$: IF A$ =  CHR$(13)  THEN  PRINT " ": GOTO 790
  126. 655  IF M = 2  THEN  VTAB 20: POKE 1403,16: PRINT "PRESS [RETURN] TO ACCEPT THE HIGHLIGHTED OPTION ";: GET A$: IF A$ =  CHR$(13)  THEN  PRINT " ": GOTO 790
  127. 670 C =  ASC(A$)
  128. 672  IF M = 1  AND C = 5  THEN 820
  129. 680  IF C = 11  OR C = 8  OR C = 45  THEN 710
  130. 690  IF C = 21  OR C = 10  OR C = 43  THEN A$ =  STR$(A +1): IF  VAL(A$) >N  THEN A$ =  STR$(E)
  131. 700  GOTO 720
  132. 710 A$ =  STR$(A -1): IF  VAL(A$) > = E  THEN 720
  133. 715 A$ =  STR$(N)
  134. 720  IF  ASC(A$) < ASC( STR$(E))  OR  ASC(A$) > ASC( STR$(N))  THEN A$ = " "
  135. 730  PRINT A$
  136. 740  IF  VAL(A$) = (A)  THEN 790
  137. 750  IF  ASC(A$) < ASC( STR$(E))  OR  ASC(A$) > ASC( STR$(N))  THEN 650
  138. 760  VTAB (D +A -1): POKE 1403,T: PRINT A;" -> ";MU$(S +A -1)
  139. 770 A =  VAL(A$)
  140. 780  VTAB (D +A -1): POKE 1403,T: INVERSE : PRINT A;" -> ";MU$(S +A -1): NORMAL : GOTO 650
  141. 790 A$ = "": IF M < >1  THEN 830
  142. 792  IF A < >0  THEN 810
  143. 795  HOME : VTAB 11: POKE 1403,8: PRINT "Are you sure you want to go to the Easy Grader Master (Y or N)?";: GET A$: PRINT A$: IF A$ = "Y"  OR A$ = "y"  THEN  PRINT  CHR$(4);"-DP.EASY.MASTER"
  144. 800  GOTO 580
  145. 810 KN = A:K$ = MU$(A):M = 2: GOTO 295
  146. 820  HOME : VTAB 11: POKE 1403,13: PRINT "Are you sure you want to leave this program (Y or N)?";: GET A$: PRINT A$: IF A$ = "Y"  OR A$ = "y"  THEN  PRINT  CHR$(4);"BYE"
  147. 825  GOTO 590
  148. 830  ON A GOTO 840,900,1350,1540,1900,2750,820
  149. 839  END 
  150. 840  CLEAR :Z =  -23: GOTO 500
  151. 900  HOME :V(1) = 1:V(2) = 6:V(3) = 9:V(4) = 12:V(5) = 15:V(6) = 20:NV = 6: GOSUB 20
  152. 910  VTAB 3: POKE 1403,14: PRINT "Enter Student Names for Course: ";K$: VTAB 5: POKE 1403,27: PRINT "Press [ESC] for main menu."
  153. 920  IF CNT = 0  THEN  VTAB 8: POKE 1403,20: PRINT "Last name entered: ";: INVERSE : PRINT "NONE": NORMAL : GOTO 930
  154. 925  VTAB 8: POKE 1403,20: PRINT "Last name entered: ";: INVERSE : PRINT N$(CNT): NORMAL 
  155. 930  VTAB 11: POKE 1403,27: PRINT "Current number on file: ";CNT
  156. 940  VTAB 14: POKE 1403,18: PRINT "Enter names as: Last Name (Space) First Name"
  157. 945  IF CNT >49  THEN  VTAB 17: POKE 1403,13: PRINT "I am sorry, but this program only keeps grades for 50 people.": PRINT : GOSUB 3: GOTO 1020
  158. 950 CNT = CNT +1
  159. 960  VTAB 17: POKE 1403,25: PRINT "Name #";CNT;" :";:D = 17:T = 33 + LEN( STR$(CNT)):A = 1:C = 20: GOSUB 30
  160. 970  IF E$ = ""  AND B$ =  CHR$(27)  THEN CNT = CNT -1: GOTO 1020
  161. 980 SA = 1:ST = 1
  162. 990 N$(CNT) =  LEFT$(E$ +"....................",20)
  163. 1010  VTAB 8: CALL  -868: VTAB 11: CALL  -868: VTAB 17: CALL  -868: VTAB 18: CALL  -868: GOTO 920
  164. 1020  HOME : IF ST = 0  THEN 1150
  165. 1030  VTAB 11: POKE 1403,21: PRINT "Please stand by while I sort the data.": IF NG >0  THEN  VTAB 13: POKE 1403,10: PRINT "There are grades in the memory, so this might take a while."
  166. 1040 B = 0:CRT = 2:SA = 1
  167. 1050  FOR I = CNT TO CRT  STEP  -1
  168. 1060  IF N$(I) > = N$(I -1)  THEN 1120
  169. 1070 E$ = N$(I):N$(I) = N$(I -1):N$(I -1) = E$:B = I
  170. 1080  IF NG = 0  THEN 1120
  171. 1090  FOR T = 0 TO NG
  172. 1100 D = G(I,T):G(I,T) = G(I -1,T):G(I -1,T) = D
  173. 1110  NEXT T
  174. 1120  NEXT I
  175. 1130  IF B < >0  THEN CRT = B +1:B = 0: GOTO 1050
  176. 1140 ST = 0
  177. 1150  IF P =  -1  THEN P = 0: RETURN 
  178. 1160  HOME : GOSUB 400:M = 2: GOTO 590
  179. 1165  HOME :V(1) = 4:V(2) = 23:NV = 2: GOSUB 20
  180. 1170  VTAB 1:CRT = 0: POKE 1403,9: PRINT "Use letters, arrows, and +/- keys to locate the name to edit."
  181. 1180  VTAB 3: POKE 1403,17: PRINT "Press [Return] to accept name - [ESC] to exit"
  182. 1190  VTAB 6: POKE 1403,0: INVERSE : PRINT "1  -> ";N$(1): NORMAL :CRT = 1:S = 1:F = 1
  183. 1195  IF CNT = 1  THEN 1250
  184. 1200  FOR I = 2 TO CNT
  185. 1205 D = 6 + INT((I/3) -0.1)
  186. 1210  IF CRT = 0  AND I <10  THEN  VTAB D: POKE 1403,0: PRINT I;"  -> ";N$(I): GOTO 1217
  187. 1214  IF CRT = 0  THEN  VTAB D: POKE 1403,0: PRINT I;" -> ";N$(I)
  188. 1217  IF CRT = 0  AND I <CNT  THEN I = I +1:CRT = 1
  189. 1220  IF CRT = 1  AND I <10  THEN  VTAB D: POKE 1403,27: PRINT I;"  -> ";N$(I): GOTO 1227
  190. 1224  IF CRT = 1  THEN  VTAB D: POKE 1403,27: PRINT I;" -> ";N$(I)
  191. 1227  IF CRT = 1  AND I <CNT  THEN I = I +1:CRT = 2
  192. 1230  IF CRT = 2  AND I <10  THEN  VTAB D: POKE 1403,54: PRINT I;"  -> ";N$(I): GOTO 1237
  193. 1234  IF CRT = 2  THEN  VTAB D: POKE 1403,54: PRINT I;" -> ";N$(I)
  194. 1237  IF CRT = 2  AND I <CNT  THEN CRT = 0
  195. 1240  NEXT I
  196. 1250  VTAB 3: POKE 1403,17: PRINT "Press [Return] to accept name - [ESC] to exit ";: GET B$
  197. 1255 C =  ASC(B$):A$ = " ": IF (C >64  AND C <91)  OR (C >96  AND C <123)  OR C = 43  OR C = 45  THEN A$ = B$
  198. 1256  PRINT A$: IF C = 27  OR B$ =  CHR$(13)  THEN  RETURN 
  199. 1257  IF C = 43  OR C = 21  OR C = 45  OR C = 8  OR C = 10  OR C = 11  THEN 1260
  200. 1258  GOTO 1285
  201. 1260  IF C = 43  OR C = 21  THEN F = S +1: IF F >CNT  THEN F = 1
  202. 1265  IF C = 45  OR C = 8  THEN F = S -1: IF F <1  THEN F = CNT
  203. 1267  IF CNT <4  THEN 1280
  204. 1270  IF C = 10  THEN F = S +3: IF F >CNT  THEN F =  INT((3 *((S/3) - INT(S/3))) +1.2)
  205. 1275  IF C = 11  THEN F = S -3: IF F <1  THEN F = ((( INT(CNT/3)) *3) +(S -1)): IF F >CNT  THEN F = F -3: IF F >CNT  THEN F = F -3
  206. 1280 F =  INT(F): GOTO 1298
  207. 1285 B$ =  CHR$(C -32 *(C >96  AND C <123)): FOR I = 1 TO CNT
  208. 1290  IF B$ =  MID$ (N$(I),1,1)  THEN F = I:I = CNT
  209. 1295  NEXT I
  210. 1298  IF F = S  THEN 1250
  211. 1300 T =  INT((3 *((S/3) - INT(S/3))) +0.2): GOSUB 200
  212. 1303 D = 6 + INT((S/3) -0.1)
  213. 1305  GOSUB 210
  214. 1310  IF S <10  THEN  VTAB D: POKE 1403,P: PRINT S;"  -> ";N$(S): GOTO 1320
  215. 1315  VTAB D: POKE 1403,P: PRINT S;" -> ";N$(S)
  216. 1320 T =  INT((3 *((F/3) - INT(F/3))) +0.2): GOSUB 200
  217. 1323 D = 6 + INT((F/3) -0.1)
  218. 1325  GOSUB 210
  219. 1330  IF F <10  THEN  VTAB D: POKE 1403,P: INVERSE : PRINT F;"  -> ";N$(F): NORMAL : GOTO 1340
  220. 1335  VTAB D: POKE 1403,P: INVERSE : PRINT F;" -> ";N$(F): NORMAL 
  221. 1340 S = F: GOTO 1250
  222. 1350  HOME : IF CNT = 0  THEN  VTAB 11: POKE 1403,26: PRINT "There are no names to edit.": VTAB 12: GOSUB 3: GOSUB 400:M = 2: GOTO 590
  223. 1360  IF CNT = 0  THEN 1350
  224. 1370  GOSUB 1165
  225. 1380  HOME : IF C = 27  THEN 1020
  226. 1390 E = S
  227. 1400 V(1) = 1:V(2) = 8:V(3) = 14:V(4) = 20:NV = 4: GOSUB 20
  228. 1410  VTAB 3: POKE 1403,35: PRINT "Change Name"
  229. 1420  VTAB 5: POKE 1403,27: PRINT "Press [ESC] to keep name."
  230. 1430  VTAB 7: POKE 1403,25: PRINT "Press [DELETE] to delete name."
  231. 1440  VTAB 11: POKE 1403,25: PRINT "Old Name: ";N$(E)
  232. 1450  VTAB 16: POKE 1403,21: PRINT "Enter New Name : ";:D = 16:T = 38:A = 2:C = 20: GOSUB 30
  233. 1460  IF E$ = ""  AND B$ =  CHR$(27)  THEN 1370
  234. 1470  IF E$ = ""  AND B$ =  CHR$(127)  THEN  GOSUB 212: GOTO 1490
  235. 1480 N$(E) =  LEFT$(E$ +"....................",20):SA = 1
  236. 1485 ST = 1:P =  -1: GOSUB 1020
  237. 1490  HOME : GOTO 1360
  238. 1500  HOME : VTAB 9: POKE 1403,27: PRINT "Welcome to the Easy Grader":Z = 0
  239. 1505  VTAB 11: POKE 1403,26: PRINT "Enter your code to continue:":D = 14:T = 38:C = 4:A = 0: GOSUB 30
  240. 1510  IF E$ = ""  AND B$ =  CHR$(27)  THEN 1530
  241. 1515  IF E$ = RC$  THEN 580
  242. 1518  PRINT  CHR$(7);
  243. 1520 Z = Z +1: IF Z <3  THEN  VTAB 16: POKE 1403,28: PRINT "Invalid Code - Try Again": VTAB 18: GOSUB 3: VTAB 11: CALL  -868: VTAB 16: CALL  -868: GOTO 1505
  244. 1525  VTAB 16: POKE 1403,22: PRINT "Third Invalid Code - Entrance Denied": VTAB 18: GOSUB 3
  245. 1530  PRINT  CHR$(4);"BYE"
  246. 1540  HOME : IF CNT = 0  THEN  VTAB 11: POKE 1403,20: PRINT "There are no names to enter grades for.": VTAB 12: GOSUB 3:M = 2: GOTO 590
  247. 1545  IF NG = 0  THEN  FOR I = 1 TO CNT:G(I,0) = 0: NEXT I
  248. 1550 V(1) = 1:V(2) = 6:V(3) = 9:V(4) = 12:V(5) = 21:NV = 5: GOSUB 20
  249. 1560  VTAB 3: POKE 1403,15: PRINT "Enter New Grades for Course: ";K$: VTAB 5: POKE 1403,27: PRINT "Press [ESC] for main menu."
  250. 1570  IF NG = 0  THEN G(0,0) = 0: VTAB 8: POKE 1403,28: PRINT "Last item entered: ";: INVERSE : PRINT "*NONE*": NORMAL : GOTO 1580
  251. 1575  VTAB 8: POKE 1403,28: PRINT "Last item entered: ";: INVERSE : PRINT G$(NG): NORMAL 
  252. 1580  VTAB 11: POKE 1403,19: PRINT "Current number of graded items on file: ";NG
  253. 1585  IF NG >39  THEN  VTAB 16: POKE 1403,8: PRINT "I am sorry, but this program only keeps track of 40 graded items": VTAB 17: POKE 1403,30: PRINT "per marking period.": VTAB 19: GOSUB 3: GOSUB 400:M = 2: GOTO 590
  254. 1590 NG = NG +1
  255. 1600  IF NG <10  THEN  VTAB 18: POKE 1403,32: PRINT "(default - GI0";NG;")"
  256. 1605  IF NG >9  THEN  VTAB 18: POKE 1403,32: PRINT "(default - GI";NG;")"
  257. 1610  VTAB 15: POKE 1403,29: PRINT "Graded item #";NG;" :";:D = 15:T = 45 + LEN( STR$(NG)):A = 0:C = 4: GOSUB 30
  258. 1620  IF E$ = ""  AND B$ =  CHR$(27)  THEN NG = NG -1: GOSUB 400:M = 2: GOTO 590
  259. 1630  IF E$ = ""  AND NG <10  THEN G$(NG) = "GI0" + STR$(NG): GOTO 1650
  260. 1635  IF E$ = ""  AND NG >9  THEN G$(NG) = "GI" + STR$(NG): GOTO 1650
  261. 1640 G$(NG) =  LEFT$(E$ +"....",4)
  262. 1650  VTAB 8: CALL  -868: VTAB 11: CALL  -868: VTAB 12: CALL  -868: VTAB 15: CALL  -868: VTAB 18: CALL  -868
  263. 1660  VTAB 8: POKE 1403,13: PRINT "Please enter the total points in the graded item: ";G$(NG)
  264. 1670 D = 13:T = 38:A = 4:C = 4: GOSUB 30
  265. 1680  IF E$ = ""  AND B$ =  CHR$(27)  THEN G$(NG) = "":NG = NG -1: GOSUB 400:M = 2: GOTO 590
  266. 1685 G(0,NG) =  VAL(E$)
  267. 1690  IF G(0,NG) = 0  THEN  PRINT  CHR$(7);: VTAB 19: POKE 1403,14: PRINT "This total is zero, is this a valid total (Y or N)?";: GET A$: PRINT " ": VTAB 19: CALL  -868: IF A$ < >"Y"  AND A$ < >"y"  THEN  VTAB 13: CALL  -868: GOTO 1670
  268. 1700  IF G(0,NG) <0  THEN  PRINT  CHR$(7);: VTAB 19: POKE 1403,12: PRINT "This total is negative, is this a valid total (Y or N)?";: GET A$: PRINT " ": VTAB 19: CALL  -868: IF A$ < >"Y"  AND A$ < >"y"  THEN  VTAB 13: CALL  -868: GOTO 1670
  269. 1710 G(0,0) = G(0,0) +G(0,NG)
  270. 1720  FOR I = 1 TO CNT:G(I,NG) = 0: NEXT I
  271. 1730 SA = 1
  272. 1740 E = 1
  273. 1750  VTAB 3: CALL  -868: VTAB 8: CALL  -868: VTAB 13: CALL  -868
  274. 1760  VTAB 3: POKE 1403,7: PRINT "Enter Students' Individual Grades for Course: ";K$: VTAB 8: POKE 1403,31: PRINT "Graded item: ";G$(NG): VTAB 11: POKE 1403,31: PRINT "Total Points: ";G(0,NG): VTAB 12: GOSUB 22
  275. 1770  VTAB 14: POKE 1403,23: PRINT "Student ";E;" -> ";N$(E)
  276. 1780  VTAB 17: POKE 1403,24: PRINT "Enter the student's grade: ";:D = 17:T = 51:C = 4:A = 4: GOSUB 30
  277. 1790  IF E$ = ""  AND B$ =  CHR$(27)  THEN  GOSUB 400:M = 2: GOTO 590
  278. 1797 G(E,NG) =  VAL(E$)
  279. 1800  IF G(E,NG) >G(0,NG)  THEN  PRINT  CHR$(7);: VTAB 19: POKE 1403,5: PRINT "This grade is above the total amount of points alloted for this item,": VTAB 20: POKE 1403,24: PRINT "is this a valid grade (Y or N)?";: GET A$: PRINT " ": VTAB 19: CALL  -868: VTAB 20: CALL  -868
  280. 1810  IF G(E,NG) <0  THEN  PRINT  CHR$(7);: VTAB 20: POKE 1403,11: PRINT "This grade is below zero, is this a valid grade (Y or N)?";: GET A$: PRINT " ": VTAB 20: CALL  -868
  281. 1820  IF (G(E,NG) >G(0,NG)  OR G(E,NG) <0)  AND (A$ < >"Y"  AND A$ < >"y")  THEN  VTAB 17: CALL  -868: GOTO 1780
  282. 1825 G(E,0) = G(E,0) +G(E,NG):A$ = "": VTAB 14: CALL  -868: VTAB 17: CALL  -868: IF E <CNT  THEN E = E +1: GOTO 1770
  283. 1830  VTAB 14: POKE 1403,7: PRINT "Grades have been entered for all students currently on record for": VTAB 16: POKE 1403,17: PRINT "taking this course for the graded item, ";G$(NG);"."
  284. 1835 E = 0
  285. 1840  VTAB 18: POKE 1403,8: PRINT "Do you wish to enter another new grade for this course (Y or N)?";: GET A$: PRINT " ": IF A$ < >"Y"  AND A$ < >"y"  THEN  GOSUB 400:M = 2: GOTO 590
  286. 1855  GOTO 1540
  287. 1900  HOME : IF CNT = 0  THEN  VTAB 11: POKE 1403,15: PRINT "There are no names to display on the spreadsheet.": VTAB 12: GOSUB 3: GOSUB 400:M = 2: GOTO 590
  288. 1910  IF NG = 0  THEN  VTAB 11: POKE 1403,11: PRINT "There are no grades to display or edit on the spreadsheet.": VTAB 12: GOSUB 3: GOSUB 400:M = 2: GOTO 590
  289. 1915  HOME :M = 1:N = 1:E = 1:V(0) = 1:V(1) = 1:V(5) = 1:V(2) = 0:V(3) = 0:V(4) = 0:V(6) = 0
  290. 1920  VTAB 2: POKE 1403,0: PRINT "Press: [RETURN] to edit item, [ESC] to back out, [CONTROL] - [G] for Grade Info."
  291. 1930  VTAB 4: POKE 1403,0: PRINT "Student    Item   :": VTAB 5: POKE 1403,1: PRINT "Names      Points:": VTAB 6: GOSUB 22
  292. 1940 C = V(1) -1:V(6) = 0: FOR I = 8 TO 24  STEP 2:C = C +1: VTAB I: POKE 1403,0: PRINT N$(C);: IF C = CNT  THEN V(6) = I:I = 24
  293. 1970  NEXT :V(2) = C: IF V(6) = 0  THEN V(6) = 24
  294. 1985 V(4) = E -1: FOR I = 20 TO 74  STEP 6:V(4) = V(4) +1:V(3) = V(1): VTAB 4: POKE 1403,I: PRINT G$(V(4));
  295. 2000 QX = G(0,V(4)): VTAB 5: POKE 1403,I +1 +(QX <10) +(QX <100) -(QX <0) -(QX < -9) -(QX < -99): PRINT QX;: VTAB 7: POKE 1403,I -1: PRINT "|";: FOR C = 8 TO V(6)
  296. 2010 QX = G(V(3),V(4)): VTAB C: POKE 1403,I +1 +(QX <10) +(QX <100) -(QX >999) -(QX < -99): PRINT QX;: IF C >6  THEN  VTAB C: POKE 1403,I -1: PRINT "|";
  297. 2050 C = C +1: IF V(3) <V(2)  THEN V(3) = V(3) +1
  298. 2060  IF C >6  AND C <24  THEN  VTAB C: POKE 1403,I -1: PRINT "|";
  299. 2070  NEXT : IF V(4) = NG  THEN I = 74
  300. 2080  NEXT : VTAB 3: PRINT 
  301. 2083 T =  INT((10 *((M/10) - INT(M/10))) +0.2): GOSUB 16
  302. 2086  IF N =  -1  THEN D = 4: GOTO 2094
  303. 2090  IF N = 0  THEN D = 5: GOTO 2094
  304. 2092 V(3) =  INT((9 *((N/9) - INT(N/9))) +0.2): GOSUB 24
  305. 2094  IF N =  -1  THEN  VTAB D: POKE 1403,P: INVERSE : PRINT G$(M);: NORMAL : GOTO 2100
  306. 2097  VTAB D: POKE 1403,(P +4 - LEN( STR$(G(N,M)))): INVERSE : PRINT G(N,M);: NORMAL 
  307. 2100  VTAB 5: POKE 1403,7: PRINT "00";: VTAB 4: POKE 1403,16: PRINT "0";: VTAB 4: POKE 1403,(18 - LEN( STR$(M))): PRINT M;: VTAB 3: PRINT 
  308. 2103  IF N >0  THEN  VTAB 5: POKE 1403,(9 - LEN( STR$(N))): PRINT N;: VTAB 3: PRINT 
  309. 2105  VTAB 1: POKE 1403,13: PRINT "Use letters, arrows or +/- keys to view the grade items.";: GET B$
  310. 2110 C =  ASC(B$): VTAB 3: PRINT : IF C = 43  OR C = 21  OR C = 45  OR C = 8  OR C = 10  OR C = 11  OR C = 13  OR C = 27  OR C = 7  THEN 2130
  311. 2112  IF (C >64  AND C <91)  OR (C >96  AND C <123)  THEN C = C -32 *(C >96): GOTO 2280
  312. 2120  PRINT  CHR$(7);: GOTO 2100
  313. 2130  IF C = 13  THEN 2300
  314. 2135  IF B$ =  CHR$(27)  THEN  VTAB 3: PRINT : GOSUB 400:M = 2: GOTO 590
  315. 2138  IF C = 7  THEN 2380
  316. 2140  IF C = 43  OR C = 21  THEN V(5) = M +1: IF V(5) >NG  THEN V(5) = M: PRINT  CHR$(7);:B$ = "": GOTO 2100
  317. 2150  IF C = 45  OR C = 8  THEN V(5) = M -1: IF V(5) <1  THEN V(5) = M: PRINT  CHR$(7);:B$ = "": GOTO 2100
  318. 2160  IF C = 10  THEN V(0) = N +1: IF V(0) >CNT  THEN V(0) = N: PRINT  CHR$(7);:B$ = "": GOTO 2100
  319. 2170  IF C = 11  THEN V(0) = N -1: IF V(0) < -1  THEN V(0) = N: PRINT  CHR$(7);:B$ = "": GOTO 2100
  320. 2180 T =  INT((10 *((M/10) - INT(M/10))) +0.2): GOSUB 16
  321. 2190  IF N =  -1  THEN D = 4: GOTO 2210
  322. 2195  IF N = 0  THEN D = 5: GOTO 2210
  323. 2200 V(3) =  INT((9 *((N/9) - INT(N/9))) +0.2): GOSUB 24
  324. 2210  IF N =  -1  THEN  VTAB D: POKE 1403,P: PRINT G$(M);: GOTO 2230
  325. 2220  VTAB D: POKE 1403,(P +4 - LEN( STR$(G(N,M)))): PRINT G(N,M);
  326. 2230  IF V(0) >V(2)  THEN N = V(0):V(1) = V(2) +1: POKE 34,6: HOME : POKE 34,0: GOTO 1940
  327. 2240  IF V(0) <V(1)  AND V(1) < >1  THEN N = V(0):V(1) = V(1) -9: POKE 34,6: HOME : POKE 34,0: GOTO 1940
  328. 2250  IF V(5) >V(4)  THEN M = V(5):E = V(4) +1: POKE 34,6: POKE 33,61: POKE 32,19: HOME : POKE 32,0: POKE 33,80: POKE 34,0: VTAB 4: POKE 1403,20: CALL  -868: VTAB 5: POKE 1403,20: CALL  -868: GOTO 1985
  329. 2260  IF V(5) <E  THEN M = V(5):E = E -10: POKE 34,6: POKE 33,61: POKE 32,19: HOME : POKE 32,0: POKE 33,80: POKE 34,0: VTAB 4: POKE 1403,20: CALL  -868: VTAB 5: POKE 1403,20: CALL  -868: GOTO 1985
  330. 2270  VTAB 3: PRINT :M = V(5):N = V(0): GOTO 2083
  331. 2280 QC =  -1: FOR QQ = 1 TO CNT: IF  ASC( LEFT$(N$(QQ),1)) = C  THEN QC = QQ:QQ = CNT
  332. 2282  NEXT : IF QC <0  THEN 2120
  333. 2284 V(3) =  INT(9 *(QC/9) - INT(QC/9) +.2): GOSUB 24
  334. 2286 V(1) =  INT((QC -1)/9) *9 +1:V(2) = V(1) +8:V(0) = QC:V(3) = V(0) -V(3) +1
  335. 2288 N = V(0): POKE 34,6: HOME : POKE 34,0: GOTO 1940
  336. 2300  VTAB 3: PRINT :C = 4:T = P
  337. 2310  IF N =  -1  THEN A = 3: INVERSE : GOSUB 30: NORMAL : GOTO 2330
  338. 2320 A = 5: INVERSE : GOSUB 30: NORMAL 
  339. 2330  VTAB 3: PRINT : VTAB D: POKE 1403,P: PRINT "     ";: VTAB 3: PRINT 
  340. 2340  IF E$ = ""  AND B$ =  CHR$(27)  THEN 2083
  341. 2345 SA = 1: IF N < > -1  THEN 2370
  342. 2350  IF E$ = ""  AND M <10  THEN G$(M) = "GI0" + STR$(M): GOTO 2083
  343. 2355  IF E$ = ""  AND M >9  THEN G$(M) = "GI" + STR$(M): GOTO 2083
  344. 2360 G$(M) =  LEFT$(E$ +"....",4): GOTO 2083
  345. 2370 G(N,0) = G(N,0) -G(N,M):G(N,M) =  VAL(E$):G(N,0) = G(N,0) +G(N,M): GOTO 2083
  346. 2380  POKE 34,6: POKE 33,61: POKE 32,19: HOME : POKE 32,0: POKE 33,80: POKE 34,0: VTAB 4: POKE 1403,20: CALL  -868: VTAB 5: POKE 1403,20: CALL  -868: VTAB 3: PRINT : VTAB 1: CALL  -868: VTAB 2: CALL  -868
  347. 2390  IF N <1  THEN N = 1
  348. 2400  VTAB 2: POKE 1403,15: PRINT "Please stand by while I calculate the percentages."
  349. 2402  FOR I = 1 TO CNT
  350. 2403  IF   NOT G(0,0)  THEN P(I) = 100: GOTO 2407
  351. 2405 P(I) = ( INT((G(I,0)/G(0,0)) *10000))/100
  352. 2407  NEXT I
  353. 2409  VTAB 3: PRINT : VTAB 2: CALL  -868:Z = 0
  354. 2410  VTAB 1: POKE 1403,13: PRINT "Use letters, arrows or +/- keys to view the grade items.": VTAB 2: POKE 1403,0: PRINT "Press: [ESC] for main menu, [CONTROL] - [B] to go back to the grade spreadsheet."
  355. 2415  IF Z = 0  THEN 2450
  356. 2420 C = V(1) -1
  357. 2425 V(6) = 0
  358. 2430  FOR I = 8 TO 24  STEP 2
  359. 2435 C = C +1: VTAB I: POKE 1403,0: PRINT N$(C);: IF C = CNT  THEN V(6) = I:I = 24
  360. 2440  NEXT I
  361. 2445 V(2) = C: IF V(6) = 0  THEN V(6) = 24
  362. 2450  VTAB 4: POKE 1403,22: PRINT "Total Points";: VTAB 5: POKE 1403,(32 - LEN( STR$(G(0,0)))): PRINT G(0,0);: VTAB 7: POKE 1403,19: PRINT "|";
  363. 2455 V(3) = V(1)
  364. 2460  FOR C = 8 TO V(6)
  365. 2470  VTAB C: POKE 1403,(32 - LEN( STR$(G(V(3),0)))): PRINT G(V(3),0);
  366. 2475  IF C >6  THEN  VTAB C: POKE 1403,19: PRINT "|";
  367. 2480 C = C +1
  368. 2485  IF V(3) <V(2)  THEN V(3) = V(3) +1
  369. 2490  IF C >6  AND C <24  THEN  VTAB C: POKE 1403,19: PRINT "|";
  370. 2495  NEXT : VTAB 3: PRINT 
  371. 2500  VTAB 4: POKE 1403,40: PRINT "Percentage";
  372. 2505 V(3) = V(1)
  373. 2510  FOR C = 8 TO V(6)
  374. 2520  VTAB C: POKE 1403,(47 - LEN( STR$(P(V(3))))): PRINT P(V(3));
  375. 2525 C = C +1
  376. 2530  IF V(3) <V(2)  THEN V(3) = V(3) +1
  377. 2535  NEXT : VTAB 3: PRINT 
  378. 2540 V(3) =  INT((9 *((N/9) - INT(N/9))) +0.2): GOSUB 24
  379. 2550  VTAB D: POKE 1403,(32 - LEN( STR$(G(N,0)))): INVERSE : PRINT G(N,0);: NORMAL 
  380. 2560  VTAB D: POKE 1403,(47 - LEN( STR$(P(N)))): INVERSE : PRINT P(N);: NORMAL 
  381. 2570  VTAB 5: POKE 1403,7: PRINT "00";: VTAB 5: POKE 1403,(9 - LEN( STR$(N))): PRINT N;: VTAB 3: PRINT 
  382. 2575  VTAB 1: POKE 1403,13: PRINT "Use letters, arrows or +/- keys to view the grade items.";: GET B$
  383. 2580 C =  ASC(B$): VTAB 3: PRINT : IF C = 10  OR C = 11  OR C = 27  OR C = 2  THEN 2590
  384. 2582  IF (C >64  AND C <91)  OR (C >96  AND C <123)  THEN C = C -32 *(C >96): GOTO 2700
  385. 2585  PRINT  CHR$(7);: GOTO 2570
  386. 2590  IF B$ =  CHR$(27)  THEN  VTAB 3: PRINT : GOSUB 400:M = 2: GOTO 590
  387. 2600  IF C = 10  THEN V(0) = N +1: IF V(0) >CNT  THEN V(0) = N: PRINT  CHR$(7);:B$ = "": GOTO 2570
  388. 2610  IF C = 11  THEN V(0) = N -1: IF V(0) <1  THEN V(0) = N: PRINT  CHR$(7);:B$ = "": GOTO 2570
  389. 2620  IF C = 2  THEN 2675
  390. 2630 V(3) =  INT((9 *((N/9) - INT(N/9))) +0.2): GOSUB 24
  391. 2640  VTAB D: POKE 1403,(32 - LEN( STR$(G(N,0)))): PRINT G(N,0);: VTAB D: POKE 1403,(47 - LEN( STR$(P(N)))): PRINT P(N);
  392. 2650  IF V(0) >V(2)  THEN N = V(0):V(1) = V(2) +1: POKE 34,6: HOME : POKE 34,0: GOTO 2420
  393. 2660  IF V(0) <V(1)  AND V(1) < >1  THEN N = V(0):V(1) = V(1) -9: POKE 34,6: HOME : POKE 34,0: GOTO 2420
  394. 2670  VTAB 3: PRINT :N = V(0): GOTO 2540
  395. 2675  FOR I = 1 TO CNT:P(I) = 0: NEXT I
  396. 2680  POKE 34,6: POKE 33,61: POKE 32,19: HOME : POKE 32,0: POKE 33,80: POKE 34,0: VTAB 4: POKE 1403,20: CALL  -868: VTAB 5: POKE 1403,20: CALL  -868: VTAB 3: PRINT : VTAB 1: CALL  -868: VTAB 2: CALL  -868
  397. 2690  VTAB 1: POKE 1403,13: PRINT "Use letters, arrows or +/- keys to view the grade items.": VTAB 2: POKE 1403,0: PRINT "Press: [RETURN] to edit item, [ESC] to back out, [CONTROL] - [G] for Grade Info."
  398. 2695  GOTO 1985
  399. 2700 QC =  -1: FOR QQ = 1 TO CNT: IF  ASC( LEFT$(N$(QQ),1)) = C  THEN QC = QQ:QQ = CNT
  400. 2702  NEXT : IF QC <0  THEN 2585
  401. 2704 V(3) =  INT(9 *(QC/9) - INT(QC/9) +.2): GOSUB 24
  402. 2706 V(1) =  INT((QC -1)/9) *9 +1:V(2) = V(1) +8:V(0) = QC:V(3) = V(0) -V(3) +1
  403. 2708 N = V(0): POKE 34,6: HOME : POKE 34,0: GOTO 2420
  404. 2750  HOME : IF CNT = 0  THEN  VTAB 11: POKE 1403,13: PRINT "There are no names to print out grade information for.": VTAB 12: GOSUB 3:M = 2: GOTO 590
  405. 2760  IF NG = 0  THEN  VTAB 11: POKE 1403,8: PRINT "There are no grades in memory for course: ";K$: VTAB 12: GOSUB 3:M = 2: GOTO 590
  406. 2770  VTAB 11: POKE 1403,2: PRINT "In order to Print the Grade Information to a Printer, one must be connected.": VTAB 12: POKE 1403,12: PRINT "Is there a printer connected to this computer (Y or N)?";: GET A$: PRINT : IF A$ < >"Y"  AND A$ < >"y"  THEN M = 2: GOTO 590
  407. 2780  HOME : VTAB 2: POKE 1403,15: PRINT "Please stand by while I calculate the percentages."
  408. 2790  FOR I = 1 TO CNT
  409. 2795  IF   NOT G(0,0)  THEN P(I) = 100: GOTO 2810
  410. 2800 P(I) = ( INT((G(I,0)/G(0,0)) *10000))/100
  411. 2810  NEXT I
  412. 2815 A$ = ""
  413. 2820  PRINT : VTAB 2: CALL  -868
  414. 2830  VTAB 11: POKE 1403,8: PRINT "Please turn the printer on and press any key to begin printing.";: GET A$: PRINT 
  415. 2835  IF A$ =  CHR$(27)  THEN A$ = "": GOTO 3000
  416. 2837 A$ = ""
  417. 2840  VTAB 11: CALL  -868
  418. 2850  VTAB 11: POKE 1403,30: PRINT "Printing in process."
  419. 2860  PRINT  CHR$(4);"PR#1": PRINT  CHR$(9)"80N": PRINT 
  420. 2870  GOSUB 22: PRINT : POKE 1403,27: PRINT "Student Grade Information": PRINT : POKE 1403,8: PRINT "Grades for: ";TN$;"    Course: ";K$: PRINT : PRINT "       Student Names           Total Points         Percentage"
  421. 2880  PRINT  SPC( 41 - LEN( STR$(G(0,0))))G(0,0): GOSUB 22: PRINT 
  422. 2890  FOR I = 1 TO CNT:T = T +1
  423. 2900  IF I <10  THEN  PRINT I;"  -> ";N$(I);
  424. 2910  IF I >9  THEN  PRINT I;" -> ";N$(I);
  425. 2920  PRINT  SPC( 15 - LEN( STR$(G(I,0))))G(I,0);
  426. 2930  PRINT  SPC( 18 - LEN( STR$(P(I))))P(I)
  427. 2940  PRINT 
  428. 2950  IF T = 18  AND I < >CNT  THEN  PRINT  CHR$(12): PRINT : GOSUB 22: PRINT : POKE 1403,27: PRINT "Student Grade Information": PRINT : POKE 1403,8: PRINT "Grades for: ";TN$;"    Course: ";K$: PRINT : PRINT "       Student Names           Total Points         Percentage"
  429. 2960  IF T = 18  AND I < >CNT  THEN  POKE 1403,(41 - LEN( STR$(G(0,0)))): PRINT G(0,0): GOSUB 22: PRINT :T = 0
  430. 2970  NEXT I
  431. 2980  PRINT  CHR$(12)
  432. 2990  PRINT  CHR$(4);"PR#0": PRINT : PRINT  CHR$(4);"PR#3": PRINT : HOME 
  433. 3000  HOME : FOR I = 1 TO CNT:P(I) = 0: NEXT I:M = 2: GOTO 590