home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / CLOCK / NSC.STARTUP (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1989-10-09  |  6.5 KB  |  261 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 1  REM  NO SLOT CLOCK INSTALLER
  2. 10  REM <CTRL-0x0a><CTRL-0x0a>MAIN MODULE<CTRL-0x0a>
  3. 20  HOME : PRINT  CHR$(17): VTAB 8: HTAB 6: PRINT "Loading 'NO-SLOT-UTILITIES'"
  4. 100 D$ =  CHR$(4)
  5. 110  GOSUB 2000
  6. 120 INC = 4:RT = 1:D$ =  CHR$(4)
  7. 122 L1$ = " _____________________________________<CTRL-0x0d>":L2$ = "|                                     |<CTRL-0x0d>":L3$ = "|_____________________________________|<CTRL-0x0d>"
  8. 124  GOTO 1000
  9. 130  IF CFG = INC  THEN  GOSUB 7020
  10. 140  IF  PEEK(32772) = 0  THEN  GOSUB 4000
  11. 150  GOSUB 3000
  12. 155  IF X = 3  THEN 9000
  13. 160  ON X GOSUB 4000,8000,998,10000
  14. 165  CLEAR 
  15. 166 L1$ = " _____________________________________<CTRL-0x0d>":L2$ = "|                                     |<CTRL-0x0d>":L3$ = "|_____________________________________|<CTRL-0x0d>"
  16. 170 D$ =  CHR$(4): GOTO 150
  17. 998  RETURN 
  18. 1000  REM <CTRL-0x0a><CTRL-0x0a>BACKUP/CONFIG CHECK<CTRL-0x0a>
  19. 1005  REM  INC = INPUT VAR 
  20. 1006  REM  CFG = OUTPUT VAR
  21. 1010 CFG = 0
  22. 1020  ONERR  GOTO 1100
  23. 1030  IF INC = 4  THEN  PRINT D$;"LOCK INSTALL"
  24. 1090  IF RT = 1  THEN 130
  25. 1095  IF RT = 2  THEN 2520
  26. 1099  STOP 
  27. 1100 ERR =  PEEK(222)
  28. 1110  POKE 216,0
  29. 1120  IF ERR = 4  THEN CFG = 4: GOTO 1499
  30. 1130  IF ERR > <0  THEN  PRINT ERR: STOP 
  31. 1499  GOTO 1090
  32. 2000  REM <CTRL-0x0a><CTRL-0x0a>LOAD FILES<CTRL-0x0a>
  33. 2010  PRINT D$;"BLOAD PATCH,A$8000"
  34. 2020  PRINT D$;"BLOAD CLOCKREAD,A$8200"
  35. 2030  PRINT D$;"BLOAD SEARCH,A$8100"
  36. 2040  PRINT D$;"BLOAD CLOCKWRITE,A$8300"
  37. 2050  RETURN 
  38. 2500  REM <CTRL-0x0a><CTRL-0x0a>SAVE FILES<CTRL-0x0a>
  39. 2510 INC = 4:RT = 2: GOTO 1000
  40. 2520  IF INC = CFG  THEN  GOSUB 7020: GOTO 165
  41. 2530  REM PRINT  D$;"PREFIX/NO.SLOT.CLOCK"
  42. 2540  PRINT D$;"BSAVE PATCH,A$8000"
  43. 2550  PRINT D$;"BSAVE CLOCKREAD,A$8200"
  44. 2560  PRINT D$;"BSAVE CLOCKWRITE,A$8300"
  45. 2570  RETURN 
  46. 3000  REM <CTRL-0x0a><CTRL-0x0a>DISPLAY MENU OPTIONS<CTRL-0x0a>
  47. 3010  HOME 
  48. 3020  PRINT L1$L2$;
  49. 3040  PRINT "|SMT NO-SLOT CLOCK UTILITIES DISKETTE |"
  50. 3050  PRINT "|    (C) COPYRIGHT SMT 1986-89        |"
  51. 3060  PRINT L3$;
  52. 3090  FOR I = 1 TO 10: PRINT L2$;: NEXT 
  53. 3130  PRINT L3$;
  54. 3132  VTAB 7: HTAB 10: PRINT "<ESCAPE> TO END"
  55. 3140 X = 3: POKE 49168,0
  56. 3160  GOTO 3257
  57. 3170  HTAB 3: VTAB 14: PRINT "SELECT OPTION ";: GET M$
  58. 3180  IF M$ =  CHR$(27)  THEN  VTAB 21: HTAB 2: END 
  59. 3190  IF M$ >"0"  AND M$ <"5"  THEN X =  VAL(M$)
  60. 3230  IF M$ =  CHR$(21)  OR M$ =  CHR$(10)  THEN X = X +1
  61. 3240  IF M$ =  CHR$(8)  OR M$ =  CHR$(11)  THEN X = X -1
  62. 3250  IF M$ =  CHR$(13)  THEN  RETURN 
  63. 3253  IF X >4  THEN X = 1
  64. 3254  IF X <1  THEN X = 4
  65. 3257  GOSUB 3910: GOSUB 3920: GOSUB 3930: GOSUB 3940
  66. 3259  INVERSE 
  67. 3260  ON X GOSUB 3910,3920,3930,3940
  68. 3270  GOTO 3170
  69. 3900  REM  MENU OPTIONS
  70. 3910  HTAB 3: VTAB 9: PRINT "1. CONFIGURE DISKETTE": NORMAL : RETURN 
  71. 3920  HTAB 3: VTAB 10: PRINT "2. SET CLOCK": NORMAL : RETURN 
  72. 3930  HTAB 3: VTAB 11: PRINT "3. READ CLOCK": NORMAL : RETURN 
  73. 3940  HTAB 3: VTAB 12: PRINT "4. PATCH A PRODOS DISK": NORMAL : RETURN 
  74. 4000  REM <CTRL-0x0a><CTRL-0x0a>CONFIGURE MENU<CTRL-0x0a>
  75. 4010  HOME 
  76. 4020  PRINT L1$L2$;
  77. 4040  PRINT "|       DISK CONFIGURTION MENU        |"
  78. 4050  PRINT L3$L2$;
  79. 4070  PRINT "|      WHERE HAVE YOU INSTALLED       |"
  80. 4080  PRINT "|       THE SMT NO-SLOT-CLOCK?        |"
  81. 4090  PRINT L3$;
  82. 4100  FOR I = 1 TO 12: PRINT L2$;: NEXT : PRINT L3$;
  83. 4150  FOR X1 = 1 TO 10: GOSUB 4900: NEXT :X = 9:X1 = X: INVERSE : GOSUB 4900
  84. 4160  HTAB 13: VTAB 23: PRINT "SELECT OPTION :";: GET A$
  85. 4162  IF A$ =  CHR$(27)  THEN  RETURN 
  86. 4165  IF A$ =  CHR$(13)  AND X = 10  THEN  RETURN 
  87. 4170  IF A$ =  CHR$(13)  THEN  GOSUB 4700
  88. 4180  IF A$ =  CHR$(11)  OR A$ =  CHR$(8)  THEN X = X -1: GOTO 4240
  89. 4190  IF A$ =  CHR$(10)  OR A$ =  CHR$(21)  THEN X = X +1: GOTO 4240
  90. 4200  IF A$ > = "0"  AND A$ < = "9"  THEN X =  VAL(A$): GOTO 4240
  91. 4230  GOTO 4160
  92. 4240  IF A$ = "0"  THEN X = 10
  93. 4242  FOR X1 = 1 TO 10: GOSUB 4900: NEXT 
  94. 4245  IF X >10  THEN X = 1
  95. 4247  IF X <1  THEN X = 10
  96. 4248  INVERSE 
  97. 4250 X1 = X: GOSUB 4900
  98. 4260  GOTO 4160
  99. 4700 SA = X
  100. 4710 X = 0: FOR ST = 1 TO 9: GOSUB 5020: IF FE < >0 GOTO 4740
  101. 4720  VTAB 23: HTAB 13: CALL  -868: INVERSE : PRINT " CLOCK FOUND ": NORMAL 
  102. 4730 X = ST:ST = 9
  103. 4740  NEXT ST
  104. 4750  IF FE = 0  THEN 4800
  105. 4770  VTAB 22: HTAB 4: INVERSE : PRINT "         CLOCK NOT FOUND         "
  106. 4780  VTAB 23: HTAB 4: PRINT "DO YOU WISH TO CONFIGURE ANYWAY?";: NORMAL : GET A$
  107. 4785  VTAB 22: HTAB 4: PRINT "                                 "
  108. 4786  VTAB 23: HTAB 4: PRINT "                                 "
  109. 4787  VTAB 22: HTAB 1
  110. 4789  IF A$ < >"Y"  AND A$ < >"y"  THEN  GOTO 4810
  111. 4790 X = SA: GOSUB 5020
  112. 4800  GOSUB 2500
  113. 4810  POP : RETURN 
  114. 4900 X$ =  STR$(X1 *(X1 <10)): HTAB 13: VTAB 10 +X1: PRINT X$". ";: IF X1 <8  THEN  PRINT "SLOT "X1: NORMAL : RETURN 
  115. 4970  IF X1 = 8  THEN  PRINT "MOTHER BOARD ROM": NORMAL : RETURN 
  116. 4980  IF X1 = 9  THEN  PRINT "AUTO FIND": NORMAL : RETURN 
  117. 4990  IF X1 = 10  THEN  PRINT "RETURN TO MAIN MENU": NORMAL : RETURN 
  118. 5000  REM  <CTRL-0x0a><CTRL-0x0a>FIND CLOCK/CONFIGURE CLOCKREAD-WRITE<CTRL-0x0a>
  119. 5020  ON ST GOSUB 5820,5820,5820,5820,5820,5820,5820,5960,5960,5800
  120. 5025  IF ST = 10  THEN  RETURN 
  121. 5030  CALL 33280
  122. 5040  FOR I = 1 TO 8
  123. 5050 TE(I) =  PEEK(33280 +2 +I)
  124. 5060  NEXT 
  125. 5070  RESTORE 
  126. 5080  READ TM
  127. 5090  IF TM < >999  THEN 5080
  128. 5100  DATA  999,87,4,8,4,14,44,00,00
  129. 5110  FOR I = 1 TO 8
  130. 5115  READ TM
  131. 5120  POKE 33536 +2 +I,TM
  132. 5130  NEXT 
  133. 5140  CALL 33536
  134. 5150  CALL 33280
  135. 5155 FE = 0
  136. 5156  RESTORE 
  137. 5157  READ TM: IF TM < >999  THEN  GOTO 5157
  138. 5160  FOR I = 1 TO 4
  139. 5165  READ TM
  140. 5170  IF  PEEK(33280 +2 +I) > <TM  THEN FE = 1
  141. 5180  NEXT 
  142. 5190  FOR I = 1 TO 8
  143. 5200  POKE 33536 +2 +I,TE(I)
  144. 5210  NEXT 
  145. 5215  CALL 33536
  146. 5220  RETURN 
  147. 5820 I = 192: POKE 33301,255: POKE 33302,207: POKE 33305,00: POKE 33306,I +ST: POKE 33430,255: POKE 33431,207: REM  SETUP CLOCKREAD FOR SLOT ST
  148. 5825  POKE 32771,255: POKE 32772,207: POKE 32777,I +ST: POKE 32790,I +ST: POKE 32804,I +ST: POKE 32881,255: POKE 32882,207: REM  SET PATCH UP FOR SLOT ST
  149. 5830  POKE 33558,255: POKE 33559,207: POKE 33562,00: POKE 33563,I +ST: POKE 33675,255: POKE 33676,207: REM  SETUP CLOCKWRITE FOR SLOT ST
  150. 5835  RETURN 
  151. 5960  POKE 33301,21: POKE 33302,192: POKE 33305,07: POKE 33306,192: POKE 33430,06: POKE 33431,192: REM  SETUP CLOCKREAD FOR ROM
  152. 5965  POKE 32771,07: POKE 32772,192: POKE 32777,200: POKE 32790,200: POKE 32804,200: POKE 32881,07: POKE 32882,192: REM  SET PATCH UP FOR ROM
  153. 5970  POKE 33558,21: POKE 33559,192: POKE 33562,07: POKE 33563,192: POKE 33675,06: POKE 33676,192: REM  SETUP CLOCKWRITE FOR ROM
  154. 5975  RETURN 
  155. 6000  REM <CTRL-0x0a><CTRL-0x0a>CAUTION MESG<CTRL-0x0a>
  156. 7000  REM <CTRL-0x0a><CTRL-0x0a>PRESS ANY KEY<CTRL-0x0a>
  157. 7010  VTAB 24: HTAB 8: PRINT "PRESS ANY KEY TO CONTINUE";: GET A$: RETURN 
  158. 7020  VTAB 21: HTAB 9: PRINT  CHR$(7);"DISK IS WRITE PROTECTED"
  159. 7040  VTAB 22: HTAB 6: PRINT "    PRESS 'C' TO CONTINUE  "
  160. 7045  VTAB 23: HTAB 7: PRINT "OR ANY OTHER KEY TO ABORT";
  161. 7050  GET A$: IF A$ < >"C"  AND A$ < >"c"  THEN  END 
  162. 7060  RETURN 
  163. 7100  VTAB 21: HTAB 12: PRINT  CHR$(7);"CLOCK NOT FOUND"
  164. 7110  GOTO 7040
  165. 8000  REM   <CTRL-0x0a><CTRL-0x0a><SET TIME><CTRL-0x0a>
  166. 8005  HOME 
  167. 8007  CALL 33280: REM  READ THE CLOCK INTO TIME
  168. 8010  PRINT L1$L2$;
  169. 8030  PRINT "|         SET DATE AND TIME           |"
  170. 8040  PRINT L3$;
  171. 8045  FOR I = 1 TO 8: PRINT L2$;: NEXT 
  172. 8065  PRINT "|        <ESCAPE> to Menu             |"
  173. 8070  PRINT L3$;
  174. 8073 CL = 0
  175. 8075  FOR I = 1 TO 8:T$(I) = "":X = I
  176. 8076 TS$(I) =  STR$( PEEK(33282 +I)): GOSUB 8500
  177. 8077  IF  LEN(TS$(I)) = 1  THEN TS$(I) = "0" +TS$(I)
  178. 8078  NEXT 
  179. 8080 X = 1:Y = 1:V = 1: INVERSE 
  180. 8090  GOSUB 8910: GOSUB 8920: GOSUB 8930: GOSUB 8940: GOSUB 8950: GOSUB 8960
  181. 8100 TP = 0:Y = X: IF Y >4  THEN Y = Y -1
  182. 8101  HTAB 29: VTAB 5 +Y:T$(X) = "": GET T$(X): IF T$(X) =  CHR$(27)  THEN  GOTO 150
  183. 8102  IF T$(X) < = "9"  AND T$(X) > = "0"  THEN  GOSUB 8500: GOTO 8140
  184. 8103  FOR I = 1 TO 6:TP =  ASC(T$(X)): IF TP -64 = I  OR TP -96 = I  THEN X = I:CL = 1: GOTO 8143
  185. 8105  NEXT 
  186. 8107  IF X = 7  AND T$(X) =  CHR$(13)  THEN 8600
  187. 8110  IF T$(X) =  CHR$(8)  OR T$(X) =  CHR$(11)  THEN :V = 0:X = X -1:CL = 1: GOTO 8140
  188. 8120  IF T$(X) =  CHR$(21)  OR T$(X) =  CHR$(10)  THEN :V = 1:X = X +1:CL = 1: GOTO 8140
  189. 8130  IF T$(X) =  CHR$(13)  THEN X = X +1:V = 1:CL = 1: GOTO 8140
  190. 8135  GOTO 8100
  191. 8140  IF X = 4  AND V = 1  THEN X = X +1:T$(X) = T$(X -1)
  192. 8142  IF X = 4  AND V = 0  THEN X = X -1:T$(X) = T$(X +1)
  193. 8143  IF TP -64 = I  AND I >3  THEN X = X +1
  194. 8145  IF X >7  THEN X = 1
  195. 8150  IF X <1  THEN X = 7
  196. 8165  GOSUB 8910: GOSUB 8920: GOSUB 8930: GOSUB 8940: GOSUB 8950: GOSUB 8960
  197. 8167  INVERSE 
  198. 8170  ON X GOSUB 8910,8920,8930,8530,8940,8950,8960
  199. 8175 T$(X) = ""
  200. 8180  GOTO 8100
  201. 8500  REM  FORMAT INFO ROUTINE
  202. 8505  IF CL = 1  THEN CL = 0:TS$(X) = "  "
  203. 8510 TS$(X) = TS$(X) +T$(X)
  204. 8520  IF  LEN(TS$(X)) >2  THEN TS$(X) =  RIGHT$(TS$(X),2)
  205. 8530  RETURN 
  206. 8600  REM  CHECK ENTRYS VALIDITY
  207. 8605  RESTORE 
  208. 8610  READ A: IF A < >990  THEN 8610
  209. 8615  FOR I = 1 TO 8
  210. 8620  DATA  990,99,00,12,01,31,01,99,00,24,00,60,00,99,00,99,00
  211. 8625  READ DH,DL
  212. 8630  IF  VAL(TS$(I)) >DH  OR  VAL(TS$(I)) <DL  THEN  VTAB (20): HTAB (10): PRINT  CHR$(7); CHR$(7);"INVALID TIME OR DATE": RESTORE : GOTO 8100
  213. 8640  NEXT : RESTORE 
  214. 8643 TS$(4) = "0"
  215. 8645 TS$(7) = "0":TS$(8) = "0"
  216. 8650  FOR I = 1 TO 8
  217. 8660  POKE 33536 +2 +I, VAL(TS$(I))
  218. 8670  NEXT I
  219. 8680  CALL 33536
  220. 8685  POP : GOTO 9000
  221. 8690  RETURN 
  222. 8900  REM  
  223. 8910  HTAB 10: VTAB 6: PRINT "A. YEAR ";: NORMAL : PRINT  SPC( 11);TS$(1): RETURN 
  224. 8920  HTAB 10: VTAB 7: PRINT "B. MONTH ";: NORMAL : PRINT  SPC( 10);TS$(2): RETURN 
  225. 8930  HTAB 10: VTAB 8: PRINT "C. DATE ";: NORMAL : PRINT  SPC( 11);TS$(3): RETURN 
  226. 8940  HTAB 10: VTAB 9: PRINT "D. HOUR ";: NORMAL : PRINT  SPC( 11);TS$(5): RETURN 
  227. 8950  HTAB 10: VTAB 10: PRINT "E. MINUTES ";: NORMAL : PRINT  SPC( 8);TS$(6): RETURN 
  228. 8960  HTAB 10: VTAB 11: PRINT "F. <RET> TO SET ": NORMAL : RETURN 
  229. 9000  REM  <CTRL-0x0a><CTRL-0x0a>READ TIME<CTRL-0x0a>
  230. 9010  HOME 
  231. 9020  PRINT L1$L2$L2$L3$;: FOR I = 1 TO 9: PRINT L2$;: NEXT : PRINT L3$;
  232. 9040  VTAB 3: HTAB 10: PRINT "READ DATE AND TIME"
  233. 9070  VTAB 6: HTAB 14: PRINT "YEAR"
  234. 9080  HTAB 14: PRINT "MONTH"
  235. 9090  HTAB 14: PRINT "DATE"
  236. 9100  HTAB 14: PRINT "HOUR"
  237. 9110  HTAB 14: PRINT "MINUTES"
  238. 9115  HTAB 14: PRINT "SECONDS"
  239. 9130  VTAB 13: HTAB 11: PRINT "<ESCAPE> to Menu"
  240. 9145  REM  READ TIME AND DATE
  241. 9147  POKE 49168,0: REM  CLEAR KEYBOARD STROBE
  242. 9150  CALL 33280
  243. 9160  FOR I = 1 TO 8
  244. 9170 TM$(I) =  STR$( PEEK(33280 +2 +I))
  245. 9173  IF  LEN(TM$(I)) = 1  THEN TM$(I) = "0" +TM$(I)
  246. 9175  ON I GOSUB 9910,9920,9930,9940,9950,9960,9970,9980
  247. 9180  NEXT I
  248. 9185  IF  PEEK(49152) = 155 GOTO 150
  249. 9190  GOTO 9150
  250. 9910  VTAB (6): HTAB (25): PRINT TM$(1): RETURN 
  251. 9920  VTAB (7): HTAB (25): PRINT TM$(2): RETURN 
  252. 9930  VTAB (8): HTAB (25): PRINT TM$(3): RETURN 
  253. 9940  RETURN 
  254. 9950  VTAB (9): HTAB (25): PRINT TM$(5): RETURN 
  255. 9960  VTAB (10): HTAB (25): PRINT TM$(6): RETURN 
  256. 9970  VTAB (11): HTAB (25): PRINT TM$(7): RETURN 
  257. 9980  RETURN 
  258. 10000  PRINT D$;"-INSTALL"
  259. 63000  REM  Saver routine
  260. 63010 P$ = "NSC.STARTUP":D$ =  CHR$(4)
  261. 63020  PRINT D$"PREFIX": INPUT FX$: PRINT "SAVE "FX$P$: PRINT D$" SAVE "FX$P$