home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib24b.dsk / NAVIGATOR.1.bas < prev    next >
BASIC Source File  |  2023-02-26  |  7KB  |  254 lines

  1. 10  REM ********7.11.85*********
  2. 20  REM *     NAVIGATOR.1      *
  3. 30  REM *    BY LEE SWOBODA    *
  4. 40  REM *  COPYRIGHT (C) 1985  *
  5. 50  REM *  BY MICROSPARC, INC  *
  6. 60  REM *  CONCORD, MA. 01742  *
  7. 70  REM ************************
  8. 80  REM 
  9. 90  REM 
  10. 100 BLANK$ = "                                       ": REM 39 SPACES
  11. 110 Q$ =  CHR$(34)
  12. 120 D$ =  CHR$(4)
  13. 130  REM ----------------------
  14. 140  REM READ FORMAT PARAMETERS
  15. 150  REM ----------------------
  16. 160 EF = 1: ONERR  GOTO 2460
  17. 170  PRINT D$"OPEN NAVIGATOR.TXT"
  18. 180  PRINT D$"READ NAVIGATOR.TXT"
  19. 190  INPUT NAME$,AUTH$,DT$,SELECT,COMMENTS,LMARGIN,RMARGIN,LPAGE,BMARGIN,D1,D2,SLOT
  20. 200  PRINT D$"CLOSE"
  21. 210  POKE 216,0
  22. 220  IF LPAGE = 0  THEN LPAGE = 66
  23. 230  IF RMARGIN = 0  THEN RMARGIN = 79
  24. 240  IF D1 = 0  THEN D1 = 1
  25. 250  IF D2 = 0  THEN D2 = 2
  26. 260  IF SLOT = 0  THEN SLOT = 1
  27. 270  REM -----------------
  28. 280  REM PROGRAM DATA MENU
  29. 290  REM -----------------
  30. 300 HEADER$ = "PROGRAM DATA"
  31. 310  GOSUB 2000
  32. 320 FOOTER$ = ""
  33. 330  GOSUB 2170
  34. 340  REM ENTER PROGRAM NAME
  35. 350  VTAB 10
  36. 360  PRINT "PROGRAM NAME (1 OR 2 FOR CATALOG)"
  37. 370  VTAB 11: CALL  -868: INPUT ": ";NAME$
  38. 380 NF$ =  LEFT$(NAME$,1)
  39. 390 EF = 4: ONERR  GOTO 2460
  40. 400  IF NF$ = "1"  OR NF$ = "2"  THEN  HOME : PRINT D$"CATALOGD";(NF$ = "2") +1: GET Z$: PRINT Z$: GOTO 300
  41. 410  POKE 216,0
  42. 420  IF NAME$ = ""  OR NF$ <"A"  OR NF$ >"Z" GOTO 350
  43. 430  REM ENTER AUTHOR'S NAME
  44. 440  VTAB 12
  45. 450  INPUT "AUTHOR = ";AUTH$
  46. 460  IF AUTH$ = "" GOTO 440
  47. 470  REM CONVERT TO LOWER CASE
  48. 480 I$ =  LEFT$(AUTH$,1)
  49. 490  IF  LEN(AUTH$) <2 GOTO 560
  50. 500  FOR I = 2 TO  LEN(AUTH$)
  51. 510 J =  ASC( MID$ (AUTH$,I,1))
  52. 520  IF  MID$ (AUTH$,I -1,1) < >" "  AND J >64  AND J <91  THEN J = J +32
  53. 530 I$ = I$ + CHR$(J)
  54. 540  NEXT I
  55. 550 AUTH$ = I$
  56. 560  REM ENTER DATE
  57. 570  VTAB 14
  58. 580  CALL  -868
  59. 590  INPUT "DATE (9 CHARS):";IN$
  60. 600  IF  LEN(IN$) >9  THEN 570
  61. 610  PRINT IN$: INPUT "OK? ";Y$: IF Y$ < >"Y" GOTO 570
  62. 620 DT$ = IN$
  63. 630  REM ----------------
  64. 640  REM DATA FORMAT MENU
  65. 650  REM ----------------
  66. 660 HEADER$ = "FORMAT DATA"
  67. 670  GOSUB 2000
  68. 680 FOOTER$ = "NUMBER TO CHANGE OR N"
  69. 690  GOSUB 2170
  70. 700  VTAB 10
  71. 710  PRINT "1) LEFT MARGIN      = "LMARGIN
  72. 720  PRINT "2) RIGHT MARGIN     = "RMARGIN
  73. 730  PRINT "3) LINES PER PAGE   = "LPAGE
  74. 740  PRINT "4) BOTTOM MARGIN    = "BMARGIN
  75. 750  PRINT "5) PRINT REMARKS?   = ";
  76. 760  IF COMMENTS = 0  THEN  PRINT "N"
  77. 770  IF COMMENTS = 1  THEN  PRINT "Y"
  78. 780  PRINT "6) NAVIGATOR IN DRIVE "D1
  79. 790  PRINT "7) PROGRAM IN DRIVE   "D2
  80. 800  PRINT "8) PRINTER IN SLOT    "SLOT
  81. 810  VTAB 21: HTAB 25
  82. 820  PRINT "?";
  83. 830  GET A$
  84. 840  PRINT 
  85. 850  IF A$ = "N" GOTO 1170
  86. 860  REM ---------
  87. 870  REM EDIT DATA
  88. 880  REM ---------
  89. 890 A =  VAL(A$)
  90. 900  IF A <1  OR A >8 GOTO 810
  91. 910  PRINT 
  92. 920 FOOTER$ = ""
  93. 930  GOSUB 2170
  94. 940  VTAB 9 +A: HTAB 23
  95. 950  CALL  -868
  96. 960  INPUT "";A$
  97. 970 B =  VAL(A$)
  98. 980  ON A GOTO 990,1010,1030,1050,1070,1110,1130,1150
  99. 990  IF B <1  OR B >20 GOTO 940
  100. 1000 LMARGIN = B: GOTO 660
  101. 1010  IF B <60  OR B >79 GOTO 940
  102. 1020 RMARGIN = B: GOTO 660
  103. 1030  IF B <50  OR B >88 GOTO 940
  104. 1040 LPAGE = B: GOTO 660
  105. 1050  IF B <1  OR B >10 GOTO 940
  106. 1060 BMARGIN = B: GOTO 660
  107. 1070  IF A$ < >"Y"  AND A$ < >"N" GOTO 940
  108. 1080 COMMENTS = 0
  109. 1090  IF A$ = "Y"  THEN COMMENTS = 1
  110. 1100  GOTO 660
  111. 1110  IF B <1  OR B >2 GOTO 940
  112. 1120 D1 = B: GOTO 660
  113. 1130  IF B <1  OR B >2 GOTO 940
  114. 1140 D2 = B: GOTO 660
  115. 1150  IF B <1  OR B >7 GOTO 940
  116. 1160 SLOT = B: GOTO 660
  117. 1170  REM --------------
  118. 1180  REM SELECTION MENU
  119. 1190  REM --------------
  120. 1200 HEADER$ = "LISTINGS"
  121. 1210  GOSUB 2000
  122. 1220 FOOTER$ = "SELECT"
  123. 1230  GOSUB 2170
  124. 1240  VTAB 10
  125. 1250  PRINT "1) LISTING ONLY"
  126. 1260  VTAB 12
  127. 1270  PRINT "2) FLOW CHART ONLY"
  128. 1280  VTAB 14
  129. 1290  PRINT "3) LISTING & FLOW CHART"
  130. 1300  VTAB 21: HTAB 10
  131. 1310  PRINT "?";
  132. 1320  GET A$
  133. 1330 A =  VAL(A$)
  134. 1340  IF A <1  OR A >3 GOTO 1300
  135. 1350 SELECT = A
  136. 1360 NR = 2
  137. 1370  IF SELECT = 2  THEN NR = 3
  138. 1380  PRINT 
  139. 1390  HOME 
  140. 1400  GOSUB 1420
  141. 1410  GOTO 1670
  142. 1420  REM ----------------
  143. 1430  REM SAVE FORMAT DATA
  144. 1440  REM ----------------
  145. 1450 EF = 2: ONERR  GOTO 2460
  146. 1460  PRINT D$"OPEN NAVIGATOR.TXT,D"D1
  147. 1470  PRINT D$"WRITE NAVIGATOR.TXT"
  148. 1480  PRINT NAME$
  149. 1490  PRINT AUTH$
  150. 1500  PRINT DT$
  151. 1510  PRINT SELECT
  152. 1520  PRINT COMMENTS
  153. 1530  PRINT LMARGIN
  154. 1540  PRINT RMARGIN
  155. 1550  PRINT LPAGE
  156. 1560  PRINT BMARGIN
  157. 1570  PRINT D1
  158. 1580  PRINT D2
  159. 1590  PRINT SLOT
  160. 1600  PRINT D$"CLOSE": PRINT D$"OPEN EXX": PRINT D$"CLOSE EXX": PRINT D$"DELETE EXX"
  161. 1610  POKE 216,0
  162. 1620  RETURN 
  163. 1630 EF = 3: ONERR  GOTO 2460
  164. 1640  PRINT D$"VERIFY"NAME$",D"D2
  165. 1650  POKE 216,0
  166. 1660  RETURN 
  167. 1670  IF D1 = D2 GOTO 2290
  168. 1680  REM --------------
  169. 1690  REM FORM TEXT FILE
  170. 1700  REM --------------
  171. 1710  HOME 
  172. 1720  VTAB 10: POKE  -16368,0
  173. 1730  PRINT "PLACE NAVIGATOR DISK IN DRIVE #"D1
  174. 1740  PRINT 
  175. 1750  PRINT "PLACE THE DISK CONTAINING"
  176. 1760  PRINT "'"NAME$"'"
  177. 1770  PRINT "IN DRIVE #"D2","
  178. 1780  PRINT : PRINT "BE SURE PRINTER IS ON LINE,": PRINT : PRINT "AND PRESS ANY KEY";
  179. 1790  CALL  -756
  180. 1800  HOME 
  181. 1810  VTAB 12: HTAB 13
  182. 1820  PRINT "THE NAVIGATOR"
  183. 1830 D$ =  CHR$(4)
  184. 1840 Q$ =  CHR$(34)
  185. 1850  GOSUB 1630
  186. 1860  PRINT D$"OPEN EXE,D"D1
  187. 1870  PRINT D$"WRITE EXE"
  188. 1880  PRINT "NEW"
  189. 1890  PRINT "LOAD "NAME$",D"D2
  190. 1900 F$ = "RUN NAVIGATOR." + STR$(NR) +",D" + STR$(D1)
  191. 1910  PRINT "0 D$=CHR$(4):?D$"Q$"OPENEXX,D"(D1)Q$":?D$"Q$"WRITEEXX"Q$":LIST1-:?D$"Q$"CLOSE"Q$":?D$"Q$F$Q$
  192. 1920  PRINT "RUN"
  193. 1930  PRINT D$"CLOSE"
  194. 1940  PRINT D$"EXEC EXE,D"D1
  195. 1950  END 
  196. 1960  REM ===========
  197. 1970  REM SUBROUTINES
  198. 1980  REM ===========
  199. 1990  REM 
  200. 2000  REM -----------
  201. 2010  REM MENU HEADER
  202. 2020  REM -----------
  203. 2030  HOME 
  204. 2040  PRINT 
  205. 2050  PRINT  TAB( 12)"THE NAVIGATOR"
  206. 2060  PRINT 
  207. 2070  PRINT  TAB( 9)"BASIC LISTING UTILITY"
  208. 2080  PRINT  TAB( 8)"AND FLOW CHART FORMATTER"
  209. 2090  PRINT 
  210. 2100  INVERSE 
  211. 2110  PRINT BLANK$
  212. 2120  VTAB 7
  213. 2130  PRINT "  "HEADER$
  214. 2140  NORMAL 
  215. 2150  VTAB 10
  216. 2160  RETURN 
  217. 2170  REM -----------
  218. 2180  REM MENU FOOTER
  219. 2190  REM -----------
  220. 2200  VTAB 21
  221. 2210  INVERSE 
  222. 2220  PRINT BLANK$
  223. 2230  VTAB 21
  224. 2240  PRINT "  "FOOTER$" "
  225. 2250  NORMAL 
  226. 2260  VTAB 23
  227. 2270  PRINT  TAB( 4)"COPYRIGHT 1985 MICROSPARC, INC."
  228. 2280  RETURN 
  229. 2290  REM ---------
  230. 2300  REM ONE-DRIVE
  231. 2310  REM ---------
  232. 2320  HOME 
  233. 2330  VTAB 12: POKE  -16368,0
  234. 2340  PRINT "BE SURE PRINTER IS ON LINE,": PRINT : PRINT "AND PRESS ANY KEY";
  235. 2350  GET A$: PRINT 
  236. 2360  GOSUB 1630: REM  VERIFY EXISTENCE OF PROGRAM
  237. 2370  PRINT D$"OPEN EX1,D"D1
  238. 2380  PRINT D$"WRITE EX1"
  239. 2390  PRINT "LOAD"NAME$
  240. 2400 F$ = "RUN NAVIGATOR." + STR$(NR) +",D" + STR$(D1)
  241. 2410  PRINT "0HOME:D$=CHR$(4):?D$"Q$"OPENEXX,D"(D1)Q$":?D$"Q$"WRITEEXX"Q$":LIST1-:?D$"Q$"CLOSE"Q$":?D$"Q$F$Q$
  242. 2420  PRINT "RUN"
  243. 2430  PRINT D$"CLOSE"
  244. 2440  PRINT D$"EXEC EX1,D"D1
  245. 2450  END 
  246. 2460 E =  PEEK(222):EL =  PEEK(218) +256 * PEEK(219): POKE 216,0
  247. 2470  IF EF = 1  AND E = 5  THEN  PRINT D$"CLOSE": PRINT D$"DELETE NAVIGATOR.TXT": GOTO 220
  248. 2480  IF EF = 3  AND E = 10  THEN  ON (D1 = D2) +1 GOTO 2320,1710
  249. 2490  IF EF = 3  THEN EF = 3 +2 *(D1 = D2)
  250. 2500  IF E = 4  THEN  HOME : VTAB 12: PRINT "DISK WRITE PROTECTED": GOTO 2530
  251. 2510  IF E = 6  THEN  HOME : VTAB 12: PRINT "FILE NOT FOUND":EF = EF +(EF = 3): ON (D1 = D2) +1 GOTO 2530,2540
  252. 2520  HOME : VTAB 12: PRINT "ERROR #";E" IN LINE "EL"."
  253. 2530  PRINT : PRINT "PRESS ANY KEY TO CONTINUE";: GET Z$: PRINT : ON EF GOTO 160,1400,1850,300,2360
  254. 2540  PRINT : PRINT "YOUR PROGRAM AND NAVIGATOR MUST BE": PRINT " ON THE SAME DISK!": END