home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / bc_sf / sf-facts.bas < prev    next >
Encoding:
BASIC Source File  |  1994-05-25  |  37.5 KB  |  783 lines

  1. 1 REM Filename:   SF-FACTS
  2. 2     K$ = "Copyright Frederick G. Volking 1986"
  3. 3     K$ = "6891 gnikloV .G kcirederF thgirypoC"
  4. 10     CLS : KEY OFF: GOSUB 18000
  5. 20     DIM SCR$(23)
  6. 30     DIM RSVD$(5): GOSUB 42000
  7. 40     DIM ENTEST$(9): GOSUB 41000
  8. 50     REPL$ = CHR$(249): REPL2$ = REPL$ + REPL$
  9. 60     DIM VARDIC$(99), VARTYP%(99), VARLEN%(99), VARMSK%(99)
  10. 70     DIM VARVAR$(99), VARROW%(99), VARCOL%(99)
  11. 80     MAXVARS% = 99: REM if changing above DIM's change this to MATCH!
  12. 90     TOPVAR% = 0
  13. 100    DIM WIN%(1, 23, 80): GOSUB 42560
  14. 1000 REM START & RETART
  15. 1010    CV% = 1: VO% = 1
  16. 1020    GOSUB 42100: REM open, field and rtrieve temp file
  17. 10000 REM data item entry phase
  18. 10020    GOSUB 20000: REM show data items screen
  19. 10040    GOSUB 42100: REM get system info
  20. 10060    IF BCFILE$ <= "        " THEN GOTO 10180
  21. 10080    TCFILE$ = BCFILE$: GOSUB 42250: REM test data file
  22. 10100    IF TCFILE$ <= "        " THEN GOTO 10180
  23. 10120    GOSUB 42330: REM get file data
  24. 10140    GOSUB 21000: REM fill data items screen varbs
  25. 10160    IF CV% = 0 THEN GOTO 10580 ELSE GOTO 10920
  26. 10180    REM collect file name
  27. 10200        ENSTAT$ = "04260880": ENDFLT$ = BCFILE$: HELP% = 1
  28. 10220        GOSUB 40000: REM collect
  29. 10240        IF ENWAY% = 20 THEN GOSUB 21980: GOTO 10180
  30. 10250        IF ENWAY% = 16 THEN GOSUB 21880: GOTO 10180
  31. 10260        IF ENRETURN$ <= "        " THEN SOUND 50, 3: GOTO 10180
  32. 10280        BCFILE$ = ENRETURN$
  33. 10300        TCFILE$ = BCFILE$: GOSUB 42250: REM test bcfile$
  34. 10320        IF TCFILE$ = "" THEN GOTO 10460
  35. 10340        MSG$ = "File Exists ... Load? Y/N:": HELP% = 197: GOSUB 21410
  36. 10360        IF ENWAY% > 0 OR ENRETURN$ = "n" OR ENRETURN$ = "N" THEN GOTO 10180
  37. 10380        GOSUB 42330: REM get bcfile$ data
  38. 10400        GOSUB 21000: REM display
  39. 10420        GOSUB 42420: REM put away system info
  40. 10440        GOTO 10580
  41. 10460        REM verify new file
  42. 10480           MSG$ = "New File ... Correct? Y/N": HELP% = 210: GOSUB 21410
  43. 10500           IF ENWAY% > 0 OR ENRETURN$ = "n" OR ENRETURN$ = "N" THEN GOTO 10180
  44. 10520           GOSUB 21290
  45. 10540           GOSUB 21000
  46. 10560           GOTO 10580
  47. 10580  REM collect key dic-desc
  48. 10600    ENSTAT$ = "10142020": ENDFLT$ = VARDIC$(0): HELP% = 91
  49. 10620    GOSUB 40000: VARDIC$(0) = ENRETURN$
  50. 10640    ON (ENWAY% + 1) GOTO 10700, 10580, 10700, 10580, 10880, 10660, 10660, 10660, 10660, 10660, 10660, 10660, 10920, 10660, 10660, 10660, 10660, 14180
  51. 10660    ON (ENWAY% - 4) GOSUB 12960, 13040, 13160, 13580, 12640, 12780, 21520, 22020, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920
  52. 10680    GOTO 10580
  53. 10700  REM collect key length
  54. 10720    ENSTAT$ = "10420241": ENDFLT$ = RIGHT$(STR$(VARLEN%(0)), 2): HELP% = 55
  55. 10740    GOSUB 40000: VARLEN%(0) = VAL(ENRETURN$)
  56. 10760    IF VARLEN%(0) < 1 THEN VARLEN%(0) = 1
  57. 10780    IF VARLEN%(0) > 40 THEN VARLEN%(0) = 40
  58. 10800    LOCATE 10, 42: PRINT USING "##"; VARLEN%(0);
  59. 10820    ON (ENWAY% + 1) GOTO 10880, 10580, 10700, 10580, 10880, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10880, 10840, 10840, 10840, 10840, 14180
  60. 10840    ON (ENWAY% - 4) GOSUB 12960, 13040, 13160, 13580, 12640, 12780, 21520, 22020, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920
  61. 10860    GOTO 10700
  62. 10880 REM collect data items
  63. 10900   IF CV% < 1 THEN CV% = 1
  64. 10920   REM collect data dictionary name
  65. 10940        ENROW% = (CV% - (VO% - 1)) + 11: ENCOL% = 14: ENLEN% = 20: ENTEST% = 2: ENKIND% = 0
  66. 10960        ENDFLT$ = VARDIC$(CV%): HELP% = 17
  67. 10980        GOSUB 40100: REM collect
  68. 11000        VARDIC$(CV%) = ENRETURN$
  69. 11020        IF VARTYP%(CV%) = 0 THEN GOSUB 11340
  70. 11040        IF CV% = 1 AND ENWAY% = 3 THEN CV% = 0: GOTO 10580
  71. 11060        ON (ENWAY% + 1) GOTO 11120, 12060, 11120, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 10920, 11080, 11080, 11080, 11080, 14180
  72. 11080        ON (ENWAY% - 2) GOSUB 12440, 12540, 12960, 13040, 13160, 13580, 12640, 12780, 21520, 22020, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920, 19000
  73. 11100        GOTO 10920
  74. 11120   REM collect type$
  75. 11140        LOCATE (CV% - (VO% - 1)) + 11, 35
  76. 11160        IF VARTYP%(CV%) < 1 OR VARTYP%(CV%) > 5 THEN VARTYP%(CV%) = 1
  77. 11180        ON VARTYP%(CV%) GOSUB 11400, 11500, 11600, 11700, 11800
  78. 11200        ENROW% = (CV% - (VO% - 1)) + 11: ENCOL% = 35: ENLEN% = 1: ENTEST% = 9: ENKIND% = 0
  79. 11220        ENDFLT$ = RIGHT$(STR$(VARTYP%(CV%)), 1): HELP% = 32: GOSUB 40100
  80. 11240        IF ENPASS% > 0 THEN VARTYP%(CV%) = VAL(ENRETURN$): LOCATE (CV% - (VO% - 1)) + 11, 35: ON VARTYP%(CV%) GOSUB 11400, 11500, 11600, 11700, 11800
  81. 11260        IF CV% = 1 AND ENWAY% = 3 THEN GOTO 10580
  82. 11280        ON (ENWAY% + 1) GOTO 12060, 10920, 12060, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 10920, 11300, 11300, 11300, 11300, 14180
  83. 11300        ON (ENWAY% - 2) GOSUB 12440, 12540, 12960, 13040, 13160, 13580, 12640, 12780, 21520, 22020, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920, 19000
  84. 11320        GOTO 11120
  85. 11340      REM assign a blank set of fields
  86. 11360        IF VARDIC$(CV%) = "" AND VARTYP%(CV%) = 0 AND VARLEN%(CV%) = 0 AND ENWAY% <> 4 THEN RETURN
  87. 11380        VARTYP%(CV%) = 1: LOCATE (CV% - (VO% - 1)) + 11, 35
  88. 11400        REM text
  89. 11420           PRINT "1txt";
  90. 11440           IF VARLEN%(CV%) > 79 THEN VARLEN%(CV%) = 79
  91. 11460           IF VARLEN%(CV%) = 0 THEN VARLEN%(CV%) = 20
  92. 11480           GOTO 11900
  93. 11500        REM integer
  94. 11520           PRINT "2int";
  95. 11540           VARLEN%(CV%) = 4
  96. 11560           VARMSK%(CV%) = 4
  97. 11580           GOTO 11900
  98. 11600        REM single
  99. 11620           PRINT "3sng";
  100. 11640           VARMSK%(CV%) = 5
  101. 11660           IF VARLEN%(CV%) > 38 THEN VARLEN%(CV%) = 38
  102. 11680           GOTO 11900
  103. 11700        REM double
  104. 11720           PRINT "4dbl";
  105. 11740           VARMSK%(CV%) = 5
  106. 11760           IF VARLEN%(CV%) > 38 THEN VARLEN%(CV%) = 38
  107. 11780           GOTO 11900
  108. 11800        REM date
  109. 11820           PRINT "5day";
  110. 11840           VARLEN%(CV%) = 6
  111. 11860           VARMSK%(CV%) = 4
  112. 11880           GOTO 11900
  113. 11900           REM combine
  114. 11920              IF VARDIC$(CV%) = "" THEN VARDIC$(CV%) = "BLANK": LOCATE (CV% - (VO% - 1)) + 11, 14: PRINT VARDIC$(CV%);
  115. 11940              IF VARLEN%(CV%) < 1 THEN VARLEN%(CV%) = 1
  116. 11960              IF VARMSK%(CV%) < 1 THEN VARMSK%(CV%) = 3
  117. 11980              LOCATE (CV% - (VO% - 1)) + 11, 42: PRINT RIGHT$(STR$(VARLEN%(CV%)), 2);
  118. 12000              LOCATE (CV% - (VO% - 1)) + 11, 49: PRINT RIGHT$(STR$(VARMSK%(CV%)), 1);
  119. 12020              IF CV% > TOPVAR% THEN TOPVAR% = CV%
  120. 12040              RETURN
  121. 12060   REM collect length
  122. 12080        IF VARTYP%(CV%) = 0 THEN GOSUB 11340
  123. 12100        IF VARTYP%(CV%) = 5 THEN GOTO 12300
  124. 12120        ENROW% = (CV% - (VO% - 1)) + 11: ENCOL% = 42: ENLEN% = 2: ENTEST% = 4: ENKIND% = 1
  125. 12140        ENDFLT$ = RIGHT$(STR$(VARLEN%(CV%)), 2): HELP% = 55
  126. 12160        GOSUB 40100: REM collect
  127. 12180        IF ENPASS% = 0 THEN GOTO 12300
  128. 12200        ENRETURN% = VAL(ENRETURN$)
  129. 12220        IF ENRETURN% < 1 THEN ENRETURN% = 1
  130. 12240        IF VARTYP%(CV%) = 2 AND ENRETURN% > 4 THEN ENRETURN% = 4
  131. 12260        IF (VARTYP%(CV%) = 3 OR VARTYP%(CV%) = 4) AND ENRETURN% > 38 THEN ENRETURN% = 38
  132. 12280        VARLEN%(CV%) = ENRETURN%
  133. 12300        REM combine
  134. 12320           LOCATE (CV% - (VO% - 1)) + 11, 42
  135. 12340           PRINT RIGHT$(STR$(VARLEN%(CV%)), 2);
  136. 12360        IF CV% = 1 AND ENWAY% = 3 THEN GOTO 10700
  137. 12380        IF ENWAY% = 0 THEN GOSUB 12540: GOTO 10920
  138. 12390        ON (ENWAY% + 1) GOTO 10920, 11120, 10920, 12400, 12400, 12400, 12400, 12400, 12400, 12400, 12400, 12400, 10920, 12400, 12400, 12400, 12400, 14180
  139. 12400        ON (ENWAY% - 2) GOSUB 12440, 12540, 12960, 13040, 13160, 13580, 12640, 12780, 21520, 22020, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920, 19000
  140. 12420        GOTO 12060
  141. 12440 REM up
  142. 12460   IF CV% = 1 THEN RETURN
  143. 12480   CV% = CV% - 1
  144. 12500   IF CV% < VO% THEN GOTO 12640
  145. 12520   RETURN
  146. 12540 REM down
  147. 12560   IF CV% = MAXVARS% THEN RETURN
  148. 12580   CV% = CV% + 1
  149. 12600   IF CV% > (VO% + 9) THEN GOTO 12780
  150. 12620   RETURN
  151. 12640 REM PgUp
  152. 12660   IF VO% = 1 THEN CV% = 1: RETURN
  153. 12680   VO% = VO% - 9
  154. 12700   IF VO% < 1 THEN VO% = 1
  155. 12720   GOSUB 21080
  156. 12740   CV% = VO% + 8
  157. 12760   RETURN
  158. 12780 REM PgDn
  159. 12800   IF VO% = (MAXVARS% - 9) THEN CV% = MAXVARS%: RETURN
  160. 12820   VO% = VO% + 9
  161. 12840   CV% = VO% + 1
  162. 12860   IF VO% > TOPVAR% THEN VO% = TOPVAR% - 8: CV% = TOPVAR%
  163. 12880   IF VO% < 1 THEN VO% = 1
  164. 12900   IF (VO% + 9) > MAXVARS% THEN VO% = (MAXVARS% - 9)
  165. 12920   GOSUB 21080
  166. 12940   RETURN
  167. 12960 REM home
  168. 12980   VO% = 1: CV% = 1
  169. 13000   GOSUB 21080
  170. 13020   RETURN
  171. 13040 REM end
  172. 13060   VO% = TOPVAR% - 8
  173. 13080   IF VO% < 1 THEN VO% = 1
  174. 13100   CV% = TOPVAR%
  175. 13120   GOSUB 21080
  176. 13140   RETURN
  177. 13160 REM insert a line
  178. 13180   IF TOPVAR% = MAXVARS% THEN RETURN
  179. 13200   TOPVAR% = TOPVAR% + 1
  180. 13220   FOR T% = TOPVAR% TO CV% STEP (-1)
  181. 13240      VARDIC$(T%) = VARDIC$(T% - 1)
  182. 13260      VARTYP%(T%) = VARTYP%(T% - 1)
  183. 13280      VARLEN%(T%) = VARLEN%(T% - 1)
  184. 13300      VARMSK%(T%) = VARMSK%(T% - 1)
  185. 13320      VARVAR$(T%) = VARVAR$(T% - 1)
  186. 13340      VARROW%(T%) = VARROW%(T% - 1)
  187. 13360      VARCOL%(T%) = VARCOL%(T% - 1)
  188. 13380      NEXT
  189. 13400      VARDIC$(CV%) = "blank"
  190. 13420      VARTYP%(CV%) = 1
  191. 13440      VARLEN%(CV%) = 20
  192. 13460      VARMSK%(CV%) = 3
  193. 13480      VARVAR$(CV%) = ""
  194. 13500      VARROW%(CV%) = 0
  195. 13520      VARCOL%(CV%) = 0
  196. 13540      GOSUB 21080
  197. 13560      RETURN
  198. 13580 REM delete a line
  199. 13600   IF CLR% = 1 THEN COLOR CLR7%
  200. 13620   LOCATE (CV% - (VO% - 1)) + 11, 1: PRINT "Delete"; CHR$(26);
  201. 13640   LOCATE (CV% - (VO% - 1)) + 12, 1: PRINT "Y/N:";
  202. 13660   IF CLR% = 1 THEN COLOR CLR0%
  203. 13680   ENROW% = (CV% - (VO% - 1)) + 12: ENCOL% = 5: ENLEN% = 1: ENTEST% = 7: ENKIND% = 0
  204. 13700   ENDFLT$ = "": HELP% = 77: GOSUB 40100
  205. 13720   IF ENRETURN$ = "Y" OR ENRETURN$ = "y" THEN GOTO 13740 ELSE GOTO 14100
  206. 13740   TOPVAR% = TOPVAR% - 1
  207. 13760   FOR T% = CV% TO TOPVAR%
  208. 13780      VARDIC$(T%) = VARDIC$(T% + 1)
  209. 13800      VARTYP%(T%) = VARTYP%(T% + 1)
  210. 13820      VARLEN%(T%) = VARLEN%(T% + 1)
  211. 13840      VARMSK%(T%) = VARMSK%(T% + 1)
  212. 13860      VARVAR$(T%) = VARVAR$(T% + 1)
  213. 13880      VARROW%(T%) = VARROW%(T% + 1)
  214. 13900      VARCOL%(T%) = VARCOL%(T% + 1)
  215. 13920      NEXT
  216. 13940   VARDIC$(TOPVAR% + 1) = ""
  217. 13960   VARTYP%(TOPVAR% + 1) = 0
  218. 13980   VARLEN%(TOPVAR% + 1) = 0
  219. 14000   VARMSK%(TOPVAR% + 1) = 0
  220. 14020   VARVAR$(TOPVAR% + 1) = ""
  221. 14040   VARROW%(TOPVAR% + 1) = 0
  222. 14060   VARCOL%(TOPVAR% + 1) = 0
  223. 14080   GOSUB 21080
  224. 14100   REM branch in for no don't delete
  225. 14120      LOCATE (CV% - (VO% - 1)) + 11, 1: PRINT "       ";
  226. 14140      LOCATE (CV% - (VO% - 1)) + 12, 1: PRINT "       ";
  227. 14160   RETURN
  228. 14180 REM collect defaults
  229. 14200   IF CV% < 1 THEN CV% = 1
  230. 14220   IF TOPVAR% = 0 THEN GOTO 10880
  231. 14240 REM collect mask
  232. 14260    IF CV% > TOPVAR% THEN CV% = TOPVAR%
  233. 14280    IF VARTYP%(CV%) <> 1 THEN GOTO 14420
  234. 14300    ENROW% = (CV% - (VO% - 1)) + 11: ENCOL% = 49: ENLEN% = 1: ENTEST% = 9: ENKIND% = 0
  235. 14320    ENDFLT$ = RIGHT$(STR$(VARMSK%(CV%)), 1): HELP% = 222: GOSUB 40100
  236. 14340    VARMSK%(CV%) = VAL(ENRETURN$)
  237. 14360    ON (ENWAY% + 1) GOTO 14420, 15400, 14420, 14380, 14380, 14380, 14380, 14240, 14380, 14380, 14380, 14380, 10920
  238. 14380    ON (ENWAY% - 2) GOSUB 12440, 12540, 12960, 13040, 22020, 13580, 12640, 12780, 21520, 10180, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920, 19000
  239. 14400    GOTO 14240
  240. 14420 REM collect variable name
  241. 14440    IF CV% > TOPVAR% THEN CV% = TOPVAR%
  242. 14460    ENROW% = (CV% - (VO% - 1)) + 11: ENCOL% = 53: ENLEN% = 10: ENTEST% = 8: ENKIND% = 0
  243. 14480    ENDFLT$ = VARVAR$(CV%): HELP% = 244: GOSUB 40100
  244. 14500    VARVAR$(CV%) = ENRETURN$
  245. 14520    IF ENPASS% = 0 OR VARVAR$(CV%) = "" THEN GOTO 15100
  246. 14540    BCERR% = 0
  247. 14560    FOR T% = 1 TO TOPVAR%
  248. 14580        IF T% = CV% THEN GOTO 14660
  249. 14600        IF VARVAR$(CV%) <> VARVAR$(T%) THEN GOTO 14660
  250. 14620        BCERR% = T%
  251. 14640        T% = TOPVAR%
  252. 14660        NEXT
  253. 14680    IF BCERR% = 0 THEN GOTO 14820
  254. 14700    MSG$ = "ERROR: Duplicate in line" + STR$(BCERR%) + " <CR>:": HELP% = 290
  255. 14720    REM error process
  256. 14740       SOUND 50, 3
  257. 14760       GOSUB 21410
  258. 14780       VARVAR$(CV%) = ""
  259. 14800       GOTO 14420
  260. 14820    REM verify valid variable name
  261. 14840       T% = ASC(LEFT$(VARVAR$(CV%), 1))
  262. 14850       IF LEFT$(VARVAR$(CV%), 2) = "BC" THEN T% = 100
  263. 14852       IF LEFT$(VARVAR$(CV%), 1) = "E" THEN KX% = ASC(MID$(VARVAR$(CV%), 2, 1)): IF KX% > 47 AND KX% < 58 THEN T% = 100
  264. 14854       IF LEFT$(VARVAR$(CV%), 1) = "D" THEN KX% = ASC(MID$(VARVAR$(CV%), 2, 1)): IF KX% > 47 AND KX% < 58 THEN T% = 100
  265. 14860       IF T% > 64 AND T% < 91 THEN GOTO 14920
  266. 14880       MSG$ = "ERROR:Invalid variable name <CR>:": HELP% = 298
  267. 14900       GOTO 14720
  268. 14920    REM test for reserved word
  269. 14940       IF LEFT$(VARVAR$(CV%), 2) = "FN" THEN GOTO 15040
  270. 14960       FOR T% = 0 TO 5
  271. 14980          IF INSTR(RSVD$(T%), VARVAR$(CV%)) > 0 THEN BCERR% = 1
  272. 15000          NEXT
  273. 15020       IF BCERR% = 0 THEN GOTO 15100
  274. 15040       REM reserved word error
  275. 15060          MSG$ = "ERROR: Basic Reserved Word <CR>:": HELP% = 311
  276. 15080          GOTO 14720
  277. 15100    ON (ENWAY% + 1) GOTO 15160, 14240, 15160, 15120, 15120, 15120, 15120, 14420, 15120, 15120, 15120, 15120, 10920
  278. 15120    ON (ENWAY% - 2) GOSUB 12440, 12540, 12960, 13040, 22020, 13580, 12640, 12780, 21520, 10180, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920, 19000
  279. 15140    GOTO 14420
  280. 15160 REM collect row
  281. 15180    IF CV% > TOPVAR% THEN CV% = TOPVAR%
  282. 15200    ENROW% = (CV% - (VO% - 1)) + 11: ENCOL% = 65: ENLEN% = 2: ENTEST% = 4: ENKIND% = 1
  283. 15220    ENDFLT$ = RIGHT$(STR$(VARROW%(CV%)), 2): HELP% = 259: GOSUB 40100
  284. 15240    VARROW%(CV%) = VAL(ENRETURN$)
  285. 15260    IF VARROW%(CV%) < 25 THEN GOTO 15320
  286. 15280    VARROW%(CV%) = 25: LOCATE (CV% - (VO% - 1)) + 11, 65
  287. 15300    PRINT USING "##"; VARROW%(CV%);
  288. 15320    IF CV% = 1 AND ENWAY% = 3 THEN GOTO 15640
  289. 15340    ON (ENWAY% + 1) GOTO 15400, 14420, 15400, 15360, 15360, 15360, 15360, 15160, 15360, 15360, 15360, 15360, 10920
  290. 15360    ON (ENWAY% - 2) GOSUB 12440, 12540, 12960, 13040, 22020, 13580, 12640, 12780, 21520, 10180, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920, 19000
  291. 15380    GOTO 15160
  292. 15400 REM collect col
  293. 15420    IF CV% > TOPVAR% THEN CV% = TOPVAR%
  294. 15440    ENROW% = (CV% - (VO% - 1)) + 11: ENCOL% = 69: ENLEN% = 2: ENTEST% = 4: ENKIND% = 1
  295. 15460    ENDFLT$ = RIGHT$(STR$(VARCOL%(CV%)), 2): HELP% = 273: GOSUB 40100
  296. 15480    VARCOL%(CV%) = VAL(ENRETURN$)
  297. 15500    IF VARCOL%(CV%) < (79 - VARLEN%(CV%)) THEN GOTO 15560
  298. 15520    VARCOL%(CV%) = (79 - VARLEN%(CV%)): LOCATE (CV% - (VO% - 1)) + 11, 69
  299. 15540    PRINT USING "##"; VARCOL%(CV%);
  300. 15560    IF CV% = 1 AND ENWAY% = 3 THEN GOTO 15840
  301. 15580    ON (ENWAY% + 1) GOTO 14240, 15160, 14240, 15600, 15600, 15600, 15600, 15400, 15600, 15600, 15600, 15600, 10920
  302. 15600    ON (ENWAY% - 2) GOSUB 12440, 12540, 12960, 13040, 22020, 13580, 12640, 12780, 21520, 10180, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920, 19000
  303. 15620    GOTO 15400
  304. 15640 REM collect key row
  305. 15660    ENSTAT$ = "10650241": ENDFLT$ = RIGHT$(STR$(VARROW%(0)), 2): HELP% = 259
  306. 15680    GOSUB 40000
  307. 15700    VARROW%(0) = VAL(ENRETURN$)
  308. 15720    IF VARROW%(0) < 25 THEN GOTO 15780
  309. 15740    VARROW%(0) = 25: LOCATE 10, 65
  310. 15760    PRINT USING "##"; VARROW%(0);
  311. 15780    ON (ENWAY% + 1) GOTO 15840, 15640, 15840, 15640, 15160, 15800, 15800, 15160, 15800, 15800, 15800, 15800, 10920
  312. 15800    ON (ENWAY% - 2) GOSUB 12440, 12540, 12960, 13040, 22020, 13580, 12640, 12780, 21520, 10180, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920
  313. 15820    GOTO 15640
  314. 15840 REM collect key col
  315. 15860    ENSTAT$ = "10690241": ENDFLT$ = RIGHT$(STR$(VARCOL%(0)), 2): HELP% = 273
  316. 15880    GOSUB 40000
  317. 15900    VARCOL%(0) = VAL(ENRETURN$)
  318. 15920    IF VARCOL%(0) < (79 - VARLEN%(0)) THEN GOTO 15980
  319. 15940    VARCOL%(0) = (79 - VARLEN%(0)): LOCATE 10, 69
  320. 15960    PRINT USING "##"; VARROW%(0);
  321. 15980    ON (ENWAY% + 1) GOTO 15640, 15640, 15840, 15640, 15400, 15800, 15800, 15400, 15800, 15800, 15800, 15800, 10920
  322. 16000    ON (ENWAY% - 2) GOSUB 12440, 12540, 12960, 13040, 22020, 13580, 12640, 12780, 21520, 10180, 21580, 21640, 21700, 21820, 22020, 22020, 22020, 21920
  323. 16020    GOTO 15840
  324. 17000 REM clear screen & print working
  325. 17010    CLS
  326. 17020    LOCATE 10, 30
  327. 17030    PRINT "Working ....";
  328. 17040    RETURN
  329. 18000 REM clear and print working
  330. 18020    IF CLR% = 1 THEN COLOR CLR0%
  331. 18030    LOCATE 9, 30: PRINT "┌──────────────┐";
  332. 18040    LOCATE 10, 30: PRINT "│ working .... │";
  333. 18050    LOCATE 11, 30: PRINT "└──────────────┘";
  334. 18060    RETURN
  335. 19000 REM swap variables
  336. 19005   HELP% = 577
  337. 19010   LOCATE 4, 36: IF CLR% = 1 THEN COLOR CLR7%
  338. 19020   PRINT "<^S>wap Code:   Code:   Do?(Y/N):";
  339. 19040   REM collect swap var 1
  340. 19050       GOSUB 19800
  341. 19070       ENSTAT$ = "04490241": ENDFLT$ = RIGHT$(STR$(SVAR1%), 2)
  342. 19080       GOSUB 40000: SVAR1% = VAL(ENRETURN$)
  343. 19090       SWAPIT% = 0: GOSUB 19900: IF SWAPIT% = 1 THEN GOTO 19040
  344. 19100       IF ENWAY% = 20 THEN GOTO 19950
  345. 19110       IF SVAR1% < 1 THEN SVAR1% = 1: SOUND 50, 3: GOSUB 19800: GOTO 19040
  346. 19120       IF SVAR1% > TOPVAR% THEN SVAR1% = TOPVAR%: SOUND 50, 3: GOSUB 19800: GOTO 19040
  347. 19130   REM collect swap var 2
  348. 19140       GOSUB 19800
  349. 19150       ENSTAT$ = "04570241": ENDFLT$ = RIGHT$(STR$(SVAR2%), 2)
  350. 19160       GOSUB 40000: SVAR2% = VAL(ENRETURN$)
  351. 19170       SWAPIT% = 0: GOSUB 19900: IF SWAPIT% = 1 THEN GOTO 19130
  352. 19180       IF ENWAY% = 20 THEN GOTO 19950
  353. 19190       IF SVAR2% < 1 THEN SVAR2% = 1: SOUND 50, 3: GOSUB 19800: GOTO 19130
  354. 19200       IF SVAR2% > TOPVAR% THEN SVAR2% = TOPVAR%: SOUND 50, 3: GOSUB 19800: GOTO 19130
  355. 19210       IF SVAR2% = SVAR1% THEN SVAR2% = 0: SOUND 50, 3: GOSUB 19800: GOTO 19130
  356. 19220   REM collect action DO?
  357. 19230       ENSTAT$ = "04690170": ENDFLT$ = "Y": GOSUB 40000
  358. 19240       SWAPIT% = 0: GOSUB 19900: IF SWAPIT% = 1 THEN GOTO 19220
  359. 19250       IF ENWAY% = 20 THEN GOTO 19950
  360. 19260       IF ENRETURN$ = "N" OR ENRETURN$ = "n" THEN GOTO 19040
  361. 19270            SWAP VARDIC$(SVAR1%), VARDIC$(SVAR2%)
  362. 19280            SWAP VARTYP%(SVAR1%), VARTYP%(SVAR2%)
  363. 19290            SWAP VARLEN%(SVAR1%), VARLEN%(SVAR2%)
  364. 19300            SWAP VARMSK%(SVAR1%), VARMSK%(SVAR2%)
  365. 19310            SWAP VARVAR$(SVAR1%), VARVAR$(SVAR2%)
  366. 19320            SWAP VARROW%(SVAR1%), VARROW%(SVAR2%)
  367. 19330            SWAP VARCOL%(SVAR1%), VARCOL%(SVAR2%)
  368. 19340            GOSUB 21080: REM show swaped screen
  369. 19350            GOTO 19040
  370. 19800   REM show swap variables
  371. 19810       LOCATE 4, 49: IF CLR% = 1 THEN COLOR CLR0%
  372. 19820       PRINT USING "##"; SVAR1%;
  373. 19830       LOCATE 4, 57
  374. 19840       PRINT USING "##"; SVAR2%;
  375. 19850       RETURN
  376. 19900   REM change view from swap
  377. 19905     IF ENWAY% = 5 THEN GOSUB 12960: SWAPIT% = 1: RETURN: REM home
  378. 19910     IF ENWAY% = 6 THEN GOSUB 13040: SWAPIT% = 1: RETURN: REM end
  379. 19915     IF ENWAY% = 9 THEN GOSUB 12640: SWAPIT% = 1: RETURN: REM PgUp
  380. 19920     IF ENWAY% = 10 THEN GOSUB 12780: SWAPIT% = 1: RETURN: REM PgDn
  381. 19930     RETURN
  382. 19950   REM swapping done - return
  383. 19955     LOCATE 4, 36: PRINT SPACE$(34);
  384. 19960     IF CLR% = 1 THEN COLOR CLR0%
  385. 19965     ENWAY% = 99
  386. 19970     RETURN
  387. 20000 REM show data items screen
  388. 20010   CLS : IF CLR% = 1 THEN COLOR CLR1%, 0
  389. 20020   PRINT "╔═════════════════════════════════════════════════════════════════════════════╗"
  390. 20030   PRINT "║                                                                             ║"
  391. 20040   PRINT "╚══════╤══════════════════════════════════════════════════════════════╤═══════╝"
  392. 20050   PRINT "       │                                                              │"
  393. 20060   PRINT "       ├────┬────────────────────┬────┬──────╥────────────────────────┤"
  394. 20070   PRINT "       │    │                    │    │      ║                        │"
  395. 20080   PRINT "       │    │                    │    │      ║     ┬          ┬   ┬   │"
  396. 20090   PRINT "       │    │                    │    │      ║     │          │   │   │"
  397. 20100   PRINT "       ├────┼────────────────────┼────┼──────╫─────┼──────────┼───┼───┤"
  398. 20110   PRINT "       │    │                    │    │      ║     │          │   │   │"
  399. 20120   PRINT "       ├────┼────────────────────┼────┼──────╫─────┼──────────┼───┼───┤"
  400. 20130   PRINT "       │    │                    │    │      ║     │          │   │   │"
  401. 20140   PRINT "       │    │                    │    │      ║     │          │   │   │"
  402. 20150   PRINT "       │    │                    │    │      ║     │          │   │   │"
  403. 20160   PRINT "       │    │                    │    │      ║     │          │   │   │"
  404. 20170   PRINT "       │    │                    │    │      ║     │          │   │   │"
  405. 20180   PRINT "       │    │                    │    │      ║     │          │   │   │"
  406. 20190   PRINT "       │    │                    │    │      ║     │          │   │   │"
  407. 20200   PRINT "       │    │                    │    │      ║     │          │   │   │"
  408. 20210   PRINT "       │    │                    │    │      ║     │          │   │   │"
  409. 20220   PRINT "       │    │                    │    │      ║     │          │   │   │"
  410. 20230   PRINT "       └────┴────────────────────┴────┴──────╨─────┴──────────┴───┴───┘"
  411. 20240   IF CLR% = 1 THEN COLOR CLR3%
  412. 20250   PRINT "Action Keys:"; : IF CLR% = 1 THEN COLOR CLR4%
  413. 20270   PRINT " <"; CHR$(24); "> <"; CHR$(25); "> <"; CHR$(26); "> <"; CHR$(27); "> <Home> <End> <PgUp> <PgDn> <Ins> <Del> <^S>";
  414. 20275   IF CLR% = 1 THEN COLOR CLR3%
  415. 20276   PRINT "wap"; : IF CLR% = 1 THEN COLOR CLR4%
  416. 20280   LOCATE 24, 1: PRINT "              <F1>"; : IF CLR% = 1 THEN COLOR CLR3%
  417. 20290   PRINT "Help  "; : IF CLR% = 1 THEN COLOR CLR4%
  418. 20310   PRINT "<F2>"; : IF CLR% = 1 THEN COLOR CLR3%
  419. 20330   PRINT "Generate-code  "; : IF CLR% = 1 THEN COLOR CLR4%
  420. 20350   PRINT "<F3>"; : IF CLR% = 1 THEN COLOR CLR3%
  421. 20370   PRINT "Edit-Data-Items  "; : IF CLR% = 1 THEN COLOR CLR4%
  422. 20390   PRINT "<F4>"; : IF CLR% = 1 THEN COLOR CLR3%
  423. 20410   PRINT "Edit-Screen"; ; : LOCATE 25, 1: IF CLR% = 1 THEN COLOR CLR4%
  424. 20440   PRINT "               <F5>"; : IF CLR% = 1 THEN COLOR CLR3%
  425. 20460   PRINT "Save  "; : IF CLR% = 1 THEN COLOR CLR4%
  426. 20480   PRINT "<F6>"; : IF CLR% = 1 THEN COLOR CLR3%
  427. 20500   PRINT "Load  "; : IF CLR% = 1 THEN COLOR CLR4%
  428. 20520   PRINT "<F7>"; : IF CLR% = 1 THEN COLOR CLR3%
  429. 20540   PRINT "Restart  "; : IF CLR% = 1 THEN COLOR CLR4%
  430. 20560   PRINT "<F8>"; : IF CLR% = 1 THEN COLOR CLR3%
  431. 20580   PRINT "Edit-Defaults  "; : IF CLR% = 1 THEN COLOR CLR4%
  432. 20600   PRINT "<ESC>"; : IF CLR% = 1 THEN COLOR CLR3%
  433. 20620   PRINT "QUIT"; : IF CLR% THEN COLOR CLR5%
  434. 20640   LOCATE 2, 4: PRINT "BasiCoder-SF(tm)   Copyright Frederick G. Volking 1985-1986    Ver: 2.5.4"
  435. 20650   IF CLR% = 1 THEN COLOR CLR2%
  436. 20660   LOCATE 4, 10: PRINT "Data File Name:"
  437. 20670   LOCATE 6, 22: PRINT "Data"
  438. 20680   LOCATE 6, 48: PRINT "Default Specifications"
  439. 20690   LOCATE 7, 9: PRINT "Code"
  440. 20700   LOCATE 7, 20: PRINT "Glossary"
  441. 20710   LOCATE 7, 35: PRINT "Type"
  442. 20720   LOCATE 7, 40: PRINT "Length"
  443. 20730   LOCATE 8, 22: PRINT "Name"
  444. 20740   LOCATE 8, 48: PRINT "Mask"
  445. 20750   LOCATE 8, 54: PRINT "Variable"
  446. 20760   LOCATE 8, 64: PRINT "Row"
  447. 20770   LOCATE 8, 68: PRINT "Col"
  448. 20780   IF CLR% = 1 THEN COLOR CLR6%
  449. 20790   LOCATE 10, 11: PRINT "0"
  450. 20800   LOCATE 10, 35: PRINT "KEY$"
  451. 20810   LOCATE 10, 49: PRINT "1"
  452. 20820   LOCATE 10, 55: PRINT "DATKEY"
  453. 20830   IF CLR% = 1 THEN COLOR CLR0%
  454. 20840   RETURN
  455. 21000 REM fill data items screen variables
  456. 21010       LOCATE 4, 26: IF BCFILE$ > "" THEN PRINT BCFILE$;  ELSE PRINT STRING$(8, REPL$);
  457. 21020       LOCATE 10, 14: IF VARDIC$(0) > "" THEN PRINT VARDIC$(0);  ELSE PRINT STRING$(20, REPL$);
  458. 21030       LOCATE 10, 42: IF VARLEN%(0) > 0 THEN PRINT USING "##"; VARLEN%(0);  ELSE PRINT STRING$(2, REPL$);
  459. 21040       LOCATE 10, 65: IF VARROW%(0) > 0 THEN PRINT USING "##"; VARROW%(0);  ELSE PRINT STRING$(2, REPL$);
  460. 21050       LOCATE 10, 69: IF VARCOL%(0) > 0 THEN PRINT USING "##"; VARCOL%(0);  ELSE PRINT STRING$(2, REPL$);
  461. 21060    GOSUB 21080
  462. 21070    RETURN
  463. 21080 REM fill varbs area of data item edit screen
  464. 21090    FOR X% = 0 TO 9
  465. 21100       T1% = VO% + X%
  466. 21110       X1% = X% + 12
  467. 21120       LOCATE X1%, 10: PRINT USING "##"; T1%;
  468. 21130           LOCATE X1%, 14: IF VARDIC$(T1%) > "" THEN PRINT VARDIC$(T1%) + SPACE$(20 - (LEN(VARDIC$(T1%))));  ELSE PRINT STRING$(20, REPL$);
  469. 21140           LOCATE X1%, 35
  470. 21150              ON VARTYP%(T1%) GOTO 21170, 21180, 21190, 21200, 21210
  471. 21160              PRINT REPL2$; REPL2$; : GOTO 21220
  472. 21170              PRINT "1txt"; : GOTO 21220
  473. 21180              PRINT "2int"; : GOTO 21220
  474. 21190              PRINT "3sng"; : GOTO 21220
  475. 21200              PRINT "4dbl"; : GOTO 21220
  476. 21210              PRINT "5day";
  477. 21220           LOCATE X1%, 42: IF VARLEN%(T1%) > 0 THEN PRINT USING "##"; VARLEN%(T1%);  ELSE PRINT REPL2$;
  478. 21230           LOCATE X1%, 49: IF VARMSK%(T1%) > 0 THEN PRINT USING "#"; VARMSK%(T1%);  ELSE PRINT REPL$;
  479. 21240           LOCATE X1%, 53: IF VARVAR$(T1%) > "" THEN PRINT VARVAR$(T1%) + SPACE$(10 - (LEN(VARVAR$(T1%))));  ELSE PRINT STRING$(10, REPL$);
  480. 21250           LOCATE X1%, 65: IF VARROW%(T1%) > 0 THEN PRINT USING "##"; VARROW%(T1%);  ELSE PRINT REPL2$;
  481. 21260           LOCATE X1%, 69: IF VARCOL%(T1%) > 0 THEN PRINT USING "##"; VARCOL%(T1%);  ELSE PRINT REPL2$;
  482. 21270           NEXT
  483. 21280    RETURN
  484. 21290 REM erase all variables
  485. 21300   FOR T% = 0 TO MAXVARS%
  486. 21310      VARDIC$(T%) = ""
  487. 21320      VARTYP%(T%) = 0
  488. 21330      VARLEN%(T%) = 0
  489. 21340      VARMSK%(T%) = 0
  490. 21350      VARVAR$(T%) = ""
  491. 21360      VARROW%(T%) = 0
  492. 21370      VARCOL%(T%) = 0
  493. 21380      NEXT
  494. 21390    CV% = 1: VO% = 1: TOPVAR% = 0
  495. 21400    RETURN
  496. 21410 REM display message & collect response
  497. 21420    IF CLR% = 1 THEN COLOR CLR7%
  498. 21430    GOSUB 21470
  499. 21440    ENSTAT$ = "04690170": ENDFLT$ = ""
  500. 21450    GOSUB 40000
  501. 21460    MSG$ = ""
  502. 21470 REM display message in message area
  503. 21480    LOCATE 4, 35: PRINT SPACE$(36);
  504. 21490    LOCATE 4, (68 - (LEN(MSG$))): PRINT MSG$;
  505. 21500    IF CLR% = 1 THEN COLOR CLR0%
  506. 21510    RETURN
  507. 21520 REM F2 - generate code
  508. 21530    MSG$ = "Generate Code? Y/N:": HELP% = 107: GOSUB 21410
  509. 21540    IF ENWAY% > 0 OR ENRETURN$ = "n" OR ENRETURN$ = "N" THEN RETURN
  510. 21545    GOSUB 17000
  511. 21550    GOSUB 42420
  512. 21560    GOSUB 42470
  513. 21570    CLOSE : CLS : GOSUB 18000: CLEAR : CHAIN "SF-DRAFT"
  514. 21580 REM F4 - edit screen
  515. 21590    MSG$ = "Edit the Input Screen? Y/N:": HELP% = 124: GOSUB 21410
  516. 21600    IF ENWAY% > 0 OR ENRETURN$ = "n" OR ENRETURN$ = "N" THEN RETURN
  517. 21605    GOSUB 17000
  518. 21610    GOSUB 42420
  519. 21620    GOSUB 42470
  520. 21630    CLOSE : CLS : GOSUB 18000: CLEAR : CHAIN "SF-PLACE"
  521. 21640 REM F5 - save
  522. 21650    MSG$ = "Save Data? Y/N:": HELP% = 137: GOSUB 21410
  523. 21660    IF ENWAY% > 0 OR ENRETURN$ = "n" OR ENRETURN$ = "N" THEN RETURN
  524. 21670    GOSUB 42420
  525. 21680    GOSUB 42470
  526. 21690    RETURN
  527. 21700 REM F6 - load
  528. 21710    MSG$ = "Save Data before Load? Y/N:": HELP% = 152: GOSUB 21410
  529. 21720    IF ENWAY% > 0 THEN RETURN
  530. 21730    IF ENRETURN$ = "N" OR ENRETURN$ = "n" THEN GOTO 21760
  531. 21740    GOSUB 42420
  532. 21750    GOSUB 42470
  533. 21760    REM verify load
  534. 21770       MSG$ = "Load New File? Y/N:": HELP% = 160: GOSUB 21410
  535. 21780       IF ENWAY% > 0 OR ENRETURN$ = "n" OR ENRETURN$ = "N" THEN RETURN
  536. 21790       BCFILE$ = "": CV% = 1: VO% = 1: TOPVAR% = 0
  537. 21800       GOSUB 42420
  538. 21810       RUN
  539. 21820 REM F7 - restart at initial menu?
  540. 21830    MSG$ = "Save Data before Restart? Y/N:": HELP% = 187: GOSUB 21410
  541. 21840    IF ENWAY% > 0 THEN RETURN
  542. 21850    IF ENRETURN$ = "N" OR ENRETURN$ = "n" THEN GOTO 21880
  543. 21860    GOSUB 42420
  544. 21870    GOSUB 42470
  545. 21880    REM verify exit to start
  546. 21890       MSG$ = "Restart? Y/N:": HELP% = 513: GOSUB 21410
  547. 21900       IF ENWAY% > 0 OR ENRETURN$ = "n" OR ENRETURN$ = "N" THEN RETURN
  548. 21905       GOSUB 17000
  549. 21910       CLOSE : CLS : GOSUB 18000: CLEAR : CHAIN "SF-START"
  550. 21920  REM <ESC> quit
  551. 21930    MSG$ = "Save Data before EXIT? Y/N:": HELP% = 170: GOSUB 21410
  552. 21940    IF ENWAY% > 0 THEN RETURN
  553. 21950    IF ENRETURN$ = "N" OR ENRETURN$ = "n" THEN GOTO 21980
  554. 21960    GOSUB 42420
  555. 21970    GOSUB 42470
  556. 21980    REM verify load
  557. 21990       MSG$ = "Exit to System? Y/N:": HELP% = 177: GOSUB 21410
  558. 22000       IF ENWAY% > 0 OR ENRETURN$ = "n" OR ENRETURN$ = "N" THEN RETURN
  559. 22010       GOTO 65000
  560. 22020  REM fake gosub for compiler
  561. 22030    RETURN
  562. 40000 REM enput routine begins
  563. 40010    ENROW% = VAL(MID$(ENSTAT$, 1, 2))
  564. 40020    ENCOL% = VAL(MID$(ENSTAT$, 3, 2))
  565. 40030    ENLEN% = VAL(MID$(ENSTAT$, 5, 2))
  566. 40040    ENTEST% = VAL(MID$(ENSTAT$, 7, 1))
  567. 40050    ENKIND% = VAL(MID$(ENSTAT$, 8, 1))
  568. 40100 REM start & restart
  569. 40110    LOCATE ENROW%, ENCOL%, 0, 0, 7
  570. 40120    IF ENKIND% = 0 THEN PRINT (LEFT$(ENDFLT$ + STRING$(ENLEN%, 249), ENLEN%));  ELSE PRINT (RIGHT$(STRING$(ENLEN%, 249) + STR$(VAL(ENDFLT$)), ENLEN%));
  571. 40130    ENPASS% = 0
  572. 40140    ENRETURN$ = ""
  573. 40150 REM cycle & recycle character collection
  574. 40160    LOCATE ENROW%, (ENCOL% + ENPASS%), 1, 0, 7
  575. 40170    ENCHAR$ = INKEY$
  576. 40180    IF ENCHAR$ = "" THEN GOTO 40170: REM recycle
  577. 40185    IF (ENTEST% = 1 OR ENTEST% = 8) AND ENCHAR$ > CHR$(96) AND ENCHAR$ < CHR$(123) THEN ENCHAR$ = CHR$(ASC(ENCHAR$) - 32)
  578. 40190    IF INSTR(ENTEST$(ENTEST%), ENCHAR$) > 0 THEN GOTO 40240: REM good char
  579. 40200    IF LEN(ENCHAR$) = 1 THEN EN% = INT((INSTR(41, ENTEST$(0), ENCHAR$) + 1) / 2): GOTO 40220
  580. 40210    EN% = INT((INSTR(ENTEST$(0), ENCHAR$) + 1) / 2)
  581. 40220    ON EN% GOTO 40510, 40520, 40530, 40540, 40550, 40560, 40570, 40580, 40590, 40600, 40610, 40620, 40630, 40640, 40650, 40660, 40670, 40680, 40690, 40700, 40710, 40720, 40730, 40725
  582. 40230    SOUND 50, 3: GOTO 40150: REM recycle
  583. 40240    REM valid character - process
  584. 40250       IF ENPASS% > 0 THEN GOTO 40280: REM no field erase
  585. 40260       PRINT STRING$(ENLEN%, 249);
  586. 40270       LOCATE ENROW%, ENCOL%, 1, 0, 7
  587. 40280    REM skip field erase
  588. 40285       IF ENPASS% = ENLEN% THEN ENWAY% = 0: GOTO 40150: REM exit routine
  589. 40290       ENPASS% = ENPASS% + 1
  590. 40300       PRINT ENCHAR$;
  591. 40310       ENRETURN$ = ENRETURN$ + ENCHAR$
  592. 40330       GOTO 40150: REM recycle
  593. 40500 REM branch control for special key pressed
  594. 40510    GOSUB 42650: GOTO 40150: REM F1
  595. 40520    ENWAY% = 11: GOTO 40800: REM F2
  596. 40530    ENWAY% = 12: GOTO 40800: REM F3
  597. 40540    ENWAY% = 13: GOTO 40800: REM F4
  598. 40550    ENWAY% = 14: GOTO 40800: REM F5
  599. 40560    ENWAY% = 15: GOTO 40800: REM F6
  600. 40570    ENWAY% = 16: GOTO 40800: REM F7
  601. 40580    ENWAY% = 17: GOTO 40800: REM F8
  602. 40590    ENWAY% = 18: GOTO 40800: REM F9
  603. 40600    ENWAY% = 19: GOTO 40800: REM F10
  604. 40610    ENWAY% = 3: GOTO 40800: REM up
  605. 40620    ENWAY% = 4: GOTO 40800: REM down
  606. 40630    ENWAY% = 1: GOTO 40800: REM left
  607. 40640    ENWAY% = 2: GOTO 40800: REM rght
  608. 40650    ENWAY% = 5: GOTO 40800: REM home
  609. 40660    ENWAY% = 6: GOTO 40800: REM end
  610. 40670    ENWAY% = 7: GOTO 40800: REM ins
  611. 40680    ENWAY% = 8: GOTO 40800: REM del
  612. 40690    ENWAY% = 9: GOTO 40800: REM PgUp
  613. 40700    ENWAY% = 10: GOTO 40800: REM PgDn
  614. 40710    ENWAY% = 0: GOTO 40800: REM CR
  615. 40720    ENWAY% = 20: GOTO 40800: REM ESC
  616. 40725    ENWAY% = 21: GOTO 40800: REM ^S = swap
  617. 40730    REM backspace character pressed:REM BkSp
  618. 40740       IF ENPASS% < 2 THEN GOTO 40100: REM start/restart
  619. 40750       ENPASS% = ENPASS% - 1
  620. 40760       LOCATE ENROW%, ENCOL% + ENPASS%, 0, 0, 7
  621. 40770       PRINT CHR$(249);
  622. 40780       ENRETURN$ = LEFT$(ENRETURN$, ENPASS%)
  623. 40790       GOTO 40150: REM recycle
  624. 40800 REM field exit - finish subroutine
  625. 40810    IF ENPASS% < 1 THEN ENRETURN$ = ENDFLT$
  626. 40820    IF ENKIND% = 1 THEN ENRETURN$ = RIGHT$(SPACE$(ENLEN%) + STR$(VAL(ENRETURN$)), ENLEN%)
  627. 40830    LOCATE ENROW%, ENCOL%, 0, 0, 7
  628. 40840    IF ENRETURN$ > "" THEN PRINT LEFT$(ENRETURN$ + SPACE$(ENLEN%), ENLEN%);  ELSE PRINT STRING$(ENLEN%, REPL$);
  629. 40850    RETURN
  630. 41000 REM establish test strings required by enput routine
  631. 41010    FOR C% = 1 TO 10
  632. 41020       KEY C%, "": REM f1-f10
  633. 41030       ENTEST$(0) = ENTEST$(0) + CHR$(0) + CHR$(58 + C%): REM 1 - 10
  634. 41040       NEXT
  635. 41050    ENTEST$(0) = ENTEST$(0) + CHR$(0) + CHR$(72) + CHR$(0) + CHR$(80) + CHR$(0) + CHR$(75)
  636. 41060    ENTEST$(0) = ENTEST$(0) + CHR$(0) + CHR$(77) + CHR$(0) + CHR$(71) + CHR$(0) + CHR$(79) + CHR$(0) + CHR$(82)
  637. 41070    ENTEST$(0) = ENTEST$(0) + CHR$(0) + CHR$(83) + CHR$(0) + CHR$(73) + CHR$(0) + CHR$(81)
  638. 41080    ENTEST$(0) = ENTEST$(0) + CHR$(13) + CHR$(0) + CHR$(27) + CHR$(0) + CHR$(8) + CHR$(0) + CHR$(19)
  639. 41090    ENTEST$(1) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 "
  640. 41100    ENTEST$(2) = ENTEST$(1) + "abcdefghijklmnopqrstuvwxyz.,-"
  641. 41110    ENTEST$(3) = ENTEST$(2) + "!@#$%^&*()_=+~[{]};:'<>/?\|" + CHR$(34)
  642. 41120    ENTEST$(4) = "0123456789"
  643. 41130    ENTEST$(5) = ENTEST$(4) + ".-"
  644. 41140    ENTEST$(6) = CHR$(0)
  645. 41150    ENTEST$(7) = "yYnN"
  646. 41160    ENTEST$(8) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
  647. 41170    ENTEST$(9) = "12345"
  648. 41180 RETURN
  649. 42000 REM collect BASIC reserved words
  650. 42010    OPEN "i", #1, "SF-WORDS.DAT"
  651. 42020    IF EOF(1) <> 0 THEN GOTO 42070
  652. 42030    LINE INPUT #1, K$
  653. 42040    RSVD$(K%) = RSVD$(K%) + " " + K$
  654. 42050    IF LEN(RSVD$(K%)) > 240 THEN K% = K% + 1
  655. 42060    GOTO 42020
  656. 42070    REM collection complete
  657. 42080       CLOSE #1
  658. 42090       RETURN
  659. 42100 REM open & get file info
  660. 42110    OPEN "r", #2, "SF-CARRY.DAT", 1
  661. 42120    L% = LOF(2)
  662. 42130    CLOSE #2
  663. 42140    IF L% > 0 THEN GOTO 42200
  664. 42145    KILL "SF-CARRY.DAT"
  665. 42150    BCFILE$ = ""
  666. 42160    CLR% = 0: CLR0% = 15: CLR1% = 9: CLR2% = 12: CLR3% = 7: CLR4% = 4
  667. 42170    CLR5% = 4: CLR6% = 8: CLR7% = 2: CLR8% = 14
  668. 42180    GOSUB 42420
  669. 42190    RETURN
  670. 42200    REM get system information
  671. 42202    OPEN "i", #2, "SF-CARRY.DAT"
  672. 42204    INPUT #2, BCFILE$, K$
  673. 42206    INPUT #2, CLR%, K$
  674. 42208    INPUT #2, CLR0%, K$
  675. 42210    INPUT #2, CLR1%, K$
  676. 42212    INPUT #2, CLR2%, K$
  677. 42214    INPUT #2, CLR3%, K$
  678. 42216    INPUT #2, CLR4%, K$
  679. 42218    INPUT #2, CLR5%, K$
  680. 42220    INPUT #2, CLR6%, K$
  681. 42222    INPUT #2, CLR7%, K$
  682. 42224    INPUT #2, CLR8%, K$
  683. 42226    INPUT #2, CLR9%, K$
  684. 42228    CLOSE #2
  685. 42240    RETURN
  686. 42250 REM test data file for existance
  687. 42260    IF TCFILE$ <= "        " THEN GOTO 42310
  688. 42270    OPEN "r", #2, TCFILE$ + ".DIC", 1
  689. 42280    L% = LOF(2)
  690. 42290    CLOSE #2
  691. 42300    IF L% > 0 THEN RETURN
  692. 42305       KILL TCFILE$ + ".DIC"
  693. 42310       TCFILE$ = ""
  694. 42320       RETURN
  695. 42330 REM file exists - retrieve data
  696. 42340    OPEN "i", #2, BCFILE$ + ".DIC"
  697. 42350    INPUT #2, BCFILE$
  698. 42360    FOR T% = 0 TO MAXVARS%
  699. 42370       INPUT #2, VARDIC$(T%), VARTYP%(T%), VARLEN%(T%), VARMSK%(T%), VARVAR$(T%), VARROW%(T%), VARCOL%(T%)
  700. 42380       NEXT
  701. 42390    INPUT #2, CV%, VO%, TOPVAR%
  702. 42394    IF (CV% < VO%) OR (CV% > (VO% + 9)) THEN VO% = CV%
  703. 42400    CLOSE #2
  704. 42410    RETURN
  705. 42420 REM put away system information
  706. 42430    OPEN "o", #2, "SF-CARRY.DAT"
  707. 42432    PRINT #2, BCFILE$, ",Active File --------------------12"
  708. 42434    PRINT #2, CLR%, ",Color 0-NO 1-YES ---------------11"
  709. 42436    PRINT #2, CLR0%, ",..... Major Text Color ---------10"
  710. 42438    PRINT #2, CLR1%, ",..... Border Lines Color ------- 9"
  711. 42440    PRINT #2, CLR2%, ",..... Data Prompts Color ------- 8"
  712. 42442    PRINT #2, CLR3%, ",..... Command Line Color #1 ---- 7"
  713. 42444    PRINT #2, CLR4%, ",..... Command Line Color #2 ---- 6"
  714. 42446    PRINT #2, CLR5%, ",..... Title Text Color --------- 5"
  715. 42448    PRINT #2, CLR6%, ",..... Default Data Color ------- 4"
  716. 42450    PRINT #2, CLR7%, ",..... Special Messages Color --- 3"
  717. 42452    PRINT #2, CLR8%, ",..... Help Window Color -------- 2"
  718. 42454    PRINT #2, CLR9%, ",..... Misc. Color -------------- 1"
  719. 42458    CLOSE #2
  720. 42460    RETURN
  721. 42470 REM put away data
  722. 42480    OPEN "o", #2, BCFILE$ + ".DIC"
  723. 42490    WRITE #2, BCFILE$
  724. 42500    FOR T% = 0 TO MAXVARS%
  725. 42510       WRITE #2, VARDIC$(T%), VARTYP%(T%), VARLEN%(T%), VARMSK%(T%), VARVAR$(T%), VARROW%(T%), VARCOL%(T%)
  726. 42520       NEXT
  727. 42525    IF VARDIC$(CV%) = "" THEN CV% = CV% - 1
  728. 42530    WRITE #2, CV%, VO%, TOPVAR%
  729. 42540    CLOSE #2
  730. 42550    RETURN
  731. 42560 REM open help file
  732. 42570   OPEN "r", #1, "SF-TUTOR.DAT", 72
  733. 42580   FIELD #1, 70 AS HLP$, 2 AS HLP1$
  734. 42590   RETURN
  735. 42650 REM help requested
  736. 42655    HELP1% = HELP%
  737. 42660    IF CLR% = 1 THEN COLOR CLR8%
  738. 42670    GET #1, HELP1%
  739. 42680    HELP$ = HLP$
  740. 42690    WW% = INSTR(HELP$, "@") + 3
  741. 42700    FOR W% = 1 TO WW%
  742. 42710       WIN%(0, 1, W%) = SCREEN(1, W%)
  743. 42720       IF CLR% = 1 THEN WIN%(1, 1, W%) = ((SCREEN(1, W%, 1)) MOD 16)
  744. 42730       NEXT
  745. 42740    LOCATE 1, 1, 1, 0, 0: PRINT STRING$(WW%, 220)
  746. 42750    WX% = 1
  747. 42760    WHILE LEFT$(HELP$, 1) <> "^"
  748. 42770       WX% = WX% + 1
  749. 42780       FOR W% = 1 TO WW%
  750. 42790          WIN%(0, WX%, W%) = SCREEN(WX%, W%)
  751. 42800          IF CLR% = 1 THEN WIN%(1, WX%, W%) = ((SCREEN(WX%, W%, 1)) MOD 16)
  752. 42810          NEXT
  753. 42820       LOCATE WX%, 1, 1, 0, 0
  754. 42830       PRINT CHR$(221) + " " + LEFT$(HELP$, WW% - 4) + " " + CHR$(222);
  755. 42840       HELP1% = HELP1% + 1
  756. 42850       GET #1, HELP1%
  757. 42860       HELP$ = HLP$
  758. 42870       WEND
  759. 42880    WX% = WX% + 1
  760. 42900    FOR W% = 1 TO WW%
  761. 42910       WIN%(0, WX%, W%) = SCREEN(WX%, W%)
  762. 42920       IF CLR% = 1 THEN WIN%(1, WX%, W%) = ((SCREEN(WX%, W%, 1)) MOD 16)
  763. 42930       NEXT
  764. 42940    LOCATE WX%, 1, 1, 0, 0: PRINT RIGHT$(STRING$(WW%, 223) + " <ESC> " + CHR$(223), WW%);
  765. 42950    LOCATE WX%, WW% - 6, 1, 0, 7
  766. 42960    K$ = INKEY$: IF K$ <> CHR$(27) THEN GOTO 42960
  767. 42970    FOR W1% = 1 TO WW%
  768. 42980       FOR W% = 1 TO WX%
  769. 42990          LOCATE W%, W1%, 1, 0, 0
  770. 43000          IF CLR% = 1 THEN COLOR WIN%(1, W%, W1%), 0
  771. 43010          PRINT CHR$(WIN%(0, W%, W1%));
  772. 43020          NEXT
  773. 43030       NEXT
  774. 43040    IF CLR% = 1 THEN COLOR CLR0%
  775. 43050    LOCATE 1, 1, 1, 0, 7
  776. 43060    RETURN
  777. 65000 REM exit
  778. 65010    CLS
  779. 65040    CLOSE : END
  780. 65501     K$ = "Copyright Frederick G. Volking 1986"
  781. 65502     K$ = "6891 gnikloV .G kcirederF thgirypoC"
  782.  
  783.