home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / bc_sf / sf-draft.bas < prev    next >
Encoding:
BASIC Source File  |  1987-05-02  |  32.4 KB  |  729 lines

  1. 1 REM Filename:   SF-DRAFT
  2. 2     K$="Copyright Frederick G. Volking 1986"
  3. 3     K$="6891 gnikloV .G kcirederF thgirypoC"
  4. 10     KEY OFF : CLS : GOSUB 11000
  5. 20     DIM SCR$(23),SCR1$(23)
  6. 25     DIM VARDIC$(99),VARTYP%(99),VARLEN%(99),VARMSK%(99),VARFLD$(99)
  7. 30     DIM VARVAR$(99),VARROW%(99),VARCOL%(99),VARSTAT$(99)
  8. 35     MAXVARS%=99:REM if changing above DIM's change this to MATCH!
  9. 50     DEF FNL$(NL%,NL1%)="3"+RIGHT$(STR$((NL%*100)+10000+NL1%),4)
  10. 60     DEF FNL1$(NL2!,NL3%)=RIGHT$(STR$(NL2!+NL3%),LEN(STR$(NL2!))-1)
  11. 100    GOSUB 42200 :REM get system data CARRY.DAT
  12. 110    GOSUB 20000 :REM display screen
  13. 120    QM$=CHR$(34) : SQM$=CHR$(39)
  14. 190 DIM WIN%(1,23,80) : GOSUB 45000
  15. 1000 REM start
  16. 1020    IF CLR%=1 THEN COLOR CLR3%
  17. 1030    LOCATE 4,57 : PRINT BCFILE$+".BAS";
  18. 1040    K%=1
  19. 1050    LOCATE 5,56,0 : PRINT SPACE$(10);
  20. 1060    GOSUB 30000
  21. 1100    REM collect next
  22. 1110       LOCATE 5,56+K%,1,0,7
  23. 1120       K$=INKEY$ : IF K$="" THEN GOTO 1120
  24. 1125       IF RIGHT$(K$,1)=CHR$(59) THEN HELP%=523 : GOSUB 45100 : GOTO 1100
  25. 1127       IF RIGHT$(K$,1)="P" THEN GOSUB 30000 : GOTO 1100
  26. 1130       IF K$=CHR$(27) THEN GOSUB 65100 : GOTO 1100
  27. 1140       IF K$<>MID$("BasiCoder"+CHR$(13),K%,1) THEN SOUND 50,3 : GOTO 1120
  28. 1150       PRINT MID$("BasiCoder",K%,1);
  29. 1160       IF K%<10 THEN K%=K%+1 : GOTO 1100
  30. 2000 REM begin
  31. 2002    MARKTIME#=(VAL(LEFT$(TIME$,2))*3600)+((VAL(MID$(TIME$,4,2))*60)+VAL(MID$(TIME$,7,2)))-MARKTIME%
  32. 2005    WX%=9 : WY%=34 : WMSG$="Working" : GOSUB 39500
  33. 2006    GOSUB 39625
  34. 2010    GOSUB 41000 :REM open error file
  35. 2015    PRINT #3, "====== Data Item Verification ======= Begin...";TIME$
  36. 2020    GOSUB 42330 :REM get DIC info
  37. 2030    TCFILE$=BCFILE$
  38. 2040    GOSUB 42250 :REM test PIC
  39. 2050    IF TCFILE$<>BCFILE$ THEN GOSUB 22000 ELSE GOSUB 43000 : REM no screen
  40. 2100 REM verify variable
  41. 2110    FOR C%=1 TO 23
  42. 2115       SCR1$(C%)=SCR$(C%)
  43. 2118       IF INKEY$=CHR$(27) THEN GOSUB 65100
  44. 2120       NEXT
  45. 2140    FOR C%=0 TO TOPVAR%
  46. 2145        GOSUB 39625
  47. 2150        VARREPT%=0
  48. 2155        IF VARROW%(C%)<1 OR VARCOL%(C%)<1 THEN GOSUB 2400 : GOTO 2210
  49. 2156        IF (VARCOL%(C%)+VARLEN%(C%))>80 THEN GOSUB 2200
  50. 2160        FOR L%=1 TO VARLEN%(C%)
  51. 2180            IF MID$(SCR1$(VARROW%(C%)),(VARCOL%(C%)-1)+L%,1)<>" " THEN GOSUB 2300
  52. 2190            MID$(SCR1$(VARROW%(C%)),(VARCOL%(C%)-1)+L%,1)=CHR$(128+C%)
  53. 2195            IF INKEY$=CHR$(27) THEN GOSUB 65100
  54. 2196        NEXT : NEXT
  55. 2197     GOTO 2500
  56. 2200            REM report illegal
  57. 2205               CERR%=CERR%+1
  58. 2210               MSG$="Error - Off Screen Placement" : PRINT #3, CERR%;" - ";MSG$;
  59. 2220               IF MSG%>10 THEN MSG%=12
  60. 2230               GOSUB 39000
  61. 2240               MSG$="  Variable#"+STR$(C%)+" in row#"+STR$(VARROW%(C%))
  62. 2245               PRINT #3, MSG$
  63. 2250               GOSUB 39000
  64. 2260               RETURN
  65. 2300            REM report conflict
  66. 2301               IF VARREPT%=1 THEN GOTO 2360
  67. 2305               CERR%=CERR%+1 : VARREPT%=1
  68. 2310               MSG$="Error - Screen Text Conflict" : PRINT #3, CERR%;" - ";MSG$;
  69. 2320               IF MSG%>10 THEN MSG%=12
  70. 2330               GOSUB 39000
  71. 2340               MSG$="  Variable#"+STR$(C%)+" in row#"+STR$(VARROW%(C%))
  72. 2345               PRINT #3, MSG$
  73. 2350               GOSUB 39000
  74. 2360               RETURN
  75. 2400            REM non display veriable
  76. 2410               MSG$="Comment: Non-located Variable" : PRINT #3, MSG$;
  77. 2420               GOSUB 39000
  78. 2430               MSG$="  #"+STR$(C%)+" Name:"+VARDIC$(C%) : PRINT #3, MSG$
  79. 2440               GOSUB 39000
  80. 2450               MSG$="  Processing as Non-Display" : GOSUB 39000
  81. 2460               RETURN
  82. 2500 REM prep files
  83. 2505    GOSUB 23000 :REM assign variable names
  84. 2510    GOSUB 41100 :REM open & test template
  85. 2520    GOSUB 41200 :REM open output file
  86. 2530    WX%=9 : WY%=34 : WMSG$="Done   " : GOSUB 39500
  87. 2540    WX%=10: WY%=34 : WMSG$="Working" : GOSUB 39500
  88. 2550    PRINT #3, "====== Record Handling ============== Begin...";TIME$
  89. 2560    IL!=111
  90. 2570    GOSUB 19000 :REM cycle till line found
  91. 2630    I$="112 :REM dimension user defined variables  "
  92. 2640    GOSUB 2730
  93. 2650    FOR C%=1 TO TOPVAR%
  94. 2660       IF INKEY$=CHR$(27) THEN GOSUB 65100
  95. 2670       I$=I$+VARVAR$(C%)+"2),"
  96. 2680       IF LEN(I$)>70 THEN GOSUB 2730
  97. 2690       NEXT
  98. 2710       GOTO 2800
  99. 2730            REM put line & prepare next
  100. 2740               I$=LEFT$(I$,LEN(I$)-1) : GOSUB 39600
  101. 2750               IL!=VAL(I$)+2 : I$=RIGHT$(STR$(IL!),LEN(STR$(IL!))-1)
  102. 2760               I$=I$+"    DIM "
  103. 2770               RETURN
  104. 2800    REM last DIM variable
  105. 2810            I$=I$+"DATKEY$(2)"
  106. 2820            GOSUB 39600
  107. 2830    IL!=180 : GOSUB 19000  :REM cycle
  108. 2840    I$="180       FILENAME$="+QM$+BCFILE$+QM$+" : BCIKEYLEN1%="+STR$(VARLEN%(0))
  109. 2850    GOSUB 39600
  110. 2860    IL!=3060 : GOSUB 19000 :REM cycle
  111. 2870    I$="3060   ENSTAT$="+VARSTAT$(0)+" : ENDFLT$="+QM$+QM$
  112. 2880    GOSUB 39600
  113. 2900    IL!=7060 : GOSUB 19000 :REM cycle
  114. 2910    I$="7060   ENSTAT$="+VARSTAT$(0)+" : ENDFLT$="+QM$+QM$
  115. 2920    GOSUB 39600
  116. 2922    WX%=10: WY%=34 : WMSG$="Done   " : GOSUB 39500
  117. 2924    WX%=11: WY%=34 : WMSG$="Working" : GOSUB 39500
  118. 2926    PRINT #3, "====== Record Display =============== Begin...";TIME$
  119. 2930    IL!=20060 : GOSUB 19000 :REM cycle
  120. 2940    FOR C%=1 TO 23
  121. 2941      IF INKEY$=CHR$(27) THEN GOSUB 65100
  122. 2942      I%=LEN(SCR$(C%))
  123. 2943      IF I%=0 THEN GOTO 2980
  124. 2944      IF RIGHT$(SCR$(C%),1)=" " THEN SCR$(C%)=LEFT$(SCR$(C%),(I%-1))   : GOTO 2942
  125. 2950      I$=RIGHT$(STR$(20050+(C%*10)),5)+"     LOCATE "
  126. 2960      I$=I$+STR$(C%)+",1 : PRINT "+QM$+SCR$(C%)+QM$+";"
  127. 2970      GOSUB 39600
  128. 2975      SCR$(C%)=""
  129. 2980      NEXT
  130. 2990    I$=RIGHT$(STR$(20050+(C%*10)),5)+"     RETURN "
  131. 3000    GOSUB 39600
  132. 3010    I$="21000 :REM show a data record"
  133. 3015    GOSUB 39600
  134. 3020    FOR C%=0 TO TOPVAR%
  135. 3025        IF INKEY$=CHR$(27) THEN GOSUB 65100
  136. 3030        IF VARSTAT$(C%)="" THEN GOTO 3110
  137. 3050        I$=RIGHT$(STR$(21000+((C%+1)*5)),5)+"     LOCATE"
  138. 3060        I$=I$+STR$(VARROW%(C%))+","+STR$(VARCOL%(C%))+" : PRINT "
  139. 3070        ON VARTYP%(C%) GOTO 3080,3090,3090,3090,3080
  140. 3080        I$=I$+VARVAR$(C%)+"BCA%);" : GOTO 3100
  141. 3090        I$=I$+"RIGHT$(SPACE$("+STR$(VARLEN%(C%))+")+STR$("+VARVAR$(C%)+"BCA%)),"+STR$(VARLEN%(C%))+");"
  142. 3100        GOSUB 39600
  143. 3110        NEXT
  144. 3120    I$=RIGHT$(STR$(21000+((C%+1)*10)),5)+"     RETURN" : GOSUB 39600
  145. 3130    IL!=23000 : GOSUB 19000 :REM cycle
  146. 3140    I$="23000 :REM blank out all data fields"
  147. 3145    GOSUB 39600
  148. 3220    FOR C%=0 TO TOPVAR%
  149. 3225        IF INKEY$=CHR$(27) THEN GOSUB 65100
  150. 3230        IF VARSTAT$(C%)="" THEN GOTO 3310
  151. 3250        I$=RIGHT$(STR$(23000+((C%+1)*10)),5)+"     LOCATE"
  152. 3260        I$=I$+STR$(VARROW%(C%))+","+STR$(VARCOL%(C%))+" : PRINT STRING$("
  153. 3265        I$=I$+STR$(VARLEN%(C%))+",249);"
  154. 3300        GOSUB 39600
  155. 3310        NEXT
  156. 3320    I$=RIGHT$(STR$(23000+((C%+1)*10)),5)+"     RETURN" : GOSUB 39600
  157. 3400    I$="24000 :REM set all data items of specified data array to NULL or ZERO"
  158. 3405    GOSUB 39600
  159. 3410    FOR C%=0 TO TOPVAR%
  160. 3420        IF INKEY$=CHR$(27) THEN GOSUB 65100
  161. 3430        I$=RIGHT$(STR$(24000+((C%+1)*10)),5)+"     "
  162. 3435        I$=I$+VARVAR$(C%)+"BCA%)="
  163. 3440        IF VARTYP%(C%)=1 OR VARTYP%(C%)=5 THEN I$=I$+QM$+QM$ ELSE I$=I$+"0"
  164. 3450        GOSUB 39600
  165. 3460        NEXT
  166. 3470    I$=RIGHT$(STR$(24000+((C%+1)*10)),5)+"     RETURN" : GOSUB 39600
  167. 3480    IL!=30030 : GOSUB 19000 :REM cycle
  168. 3490    I$="30030   ENSTAT$="+VARSTAT$(0)+" : ENDFLT$=DATKEY$(0)" : GOSUB 39600
  169. 3500    IL!=30090 : GOSUB 19000 :REM cycle
  170. 3510    WX%=11: WY%=34 : WMSG$="Done   " : GOSUB 39500
  171. 3520    WX%=12: WY%=34 : WMSG$="Working" : GOSUB 39500
  172. 3530    PRINT #3, "====== Data Collection ============== Begin...";TIME$
  173. 3540    INC%=0 : GOSUB 16000 :REM assemble ON GOTO
  174. 3550    I$=FNL$(0,90)+"    "+I$ : GOSUB 39600
  175. 4000 REM data collection area
  176. 4010    YESDATE%=0
  177. 4050    FOR C%=1 TO TOPVAR%
  178. 4055       IF INKEY$=CHR$(27) THEN GOSUB 65100
  179. 4060       I$=FNL$(C%,0)
  180. 4065       I$=I$+" :REM collect "+VARDIC$(C%)
  181. 4070       GOSUB 39600
  182. 4080       I$=FNL$(C%,10)+"    ENSTAT$="+VARSTAT$(C%)+" : ENDFLT$="
  183. 4090       IF VARTYP%(C%)=1 OR VARTYP%(C%)=5 THEN I$=I$+VARVAR$(C%)+"0)" ELSE I$=I$+"STR$("+VARVAR$(C%)+"0))"
  184. 4100       GOSUB 39600
  185. 4110       I$=FNL$(C%,20)+"    GOSUB 40000 : "
  186. 4120       IF VARTYP%(C%)<>5 THEN GOTO 4290 :REM not date
  187. 4125          YESDATE%=1 :REM confirm julian
  188. 4130          I$=I$+"BCJDATE$=ENRETURN$ : GOSUB 60500 : GOSUB 60000 : GOSUB 60100"
  189. 4140          GOSUB 39600
  190. 4150          I$=FNL$(C%,30)+"    "+VARVAR$(C%)
  191. 4160          I$=I$+"0)=RIGHT$(STR$(100+BCJLNM%),2)+RIGHT$(STR$(100+BCJLND%),2)+RIGHT$(STR$(1900+BCJLNY%),2)"
  192. 4170          GOSUB 39600
  193. 4180          I$=FNL$(C%,40)+"    LOCATE"+STR$(VARROW%(C%))+","+STR$(VARCOL%(C%))+",0 : PRINT "+VARVAR$(C%)+"0)"
  194. 4190          GOSUB 39600
  195. 4200          GOTO 4340
  196. 4290     REM process other than a date
  197. 4300       I$=I$+VARVAR$(C%)+"0)="
  198. 4310       IF VARTYP%(C%)=1 THEN I$=I$+"ENRETURN$" ELSE I$=I$+"VAL(ENRETURN$)"
  199. 4320       GOSUB 39600
  200. 4340     REM prepare ON GOTO line
  201. 4350       INC%=C% : GOSUB 16000 : I$=FNL$(C%,50)+"    "+I$
  202. 4360       GOSUB 39600
  203. 4370     NEXT
  204. 4380     I$=FNL$(TOPVAR%+1,0)+"     GOTO 30000" : GOSUB 39600
  205. 4390    WX%=12: WY%=34 : WMSG$="Done   " : GOSUB 39500
  206. 4400    WX%=13: WY%=34 : WMSG$="Working" : GOSUB 39500
  207. 4410    PRINT #3, "====== Input Routine ================ Begin...";TIME$
  208. 4420    IL!=42000!
  209. 4430    GOSUB 19000 :REM cycle
  210. 4440    GOSUB 39600
  211. 4450    WX%=13: WY%=34 : WMSG$="Done   " : GOSUB 39500
  212. 4460    WX%=14: WY%=34 : WMSG$="Working" : GOSUB 39500
  213. 4470    PRINT #3, "====== ISAM Routine ================= Begin...";TIME$
  214. 4480    IL!=53010!
  215. 4490    GOSUB 19000 :REM cycle
  216. 4510    WX%=14: WY%=34 : WMSG$="Done   " : GOSUB 39500
  217. 4520    WX%=15: WY%=34 : WMSG$="Working" : GOSUB 39500
  218. 4530    PRINT #3, "====== File Fields ================== Begin...";TIME$
  219. 4620    I$=I$+QM$+BCFILE$+".DAT"+QM$+","+STR$(TOTBYTES%)
  220. 4630    GOSUB 39600
  221. 4650    I%=20 : I$=FNL1$(53000!,I%)+"   FIELD #2"
  222. 4700    FOR C%=0 TO TOPVAR%
  223. 4705       IF INKEY$=CHR$(27) THEN GOSUB 65100
  224. 4710       I$=I$+","+VARFLD$(C%)+" as BCXD"+RIGHT$(STR$(100+C%),2)+"$"
  225. 4720       TOTBY%=TOTBY%+VAL(VARFLD$(C%))
  226. 4730       IF LEN(I$)>200 THEN GOSUB 4760
  227. 4740       NEXT
  228. 4750       GOTO 4810
  229. 4760       REM save and prepare new
  230. 4762          GOSUB 39600
  231. 4764          TTOTBY%=TOTBY% : TTT%=0
  232. 4768          I%=I%+10 : I$=FNL1$(53000!,I%)+"   FIELD #2"
  233. 4770          REM add junk fielding
  234. 4774             TTT%=TTT%+1
  235. 4776             IF TTOTBY%<=200 THEN GOTO 4790
  236. 4778             I$=I$+",200 AS BCCC"+RIGHT$(STR$(100+TTT%),2)+"$"
  237. 4780             TTOTBY%=TTOTBY%-200
  238. 4785             GOTO 4770
  239. 4790          I$=I$+","+STR$(TTOTBY%)+" AS BCCC"+RIGHT$(STR$(100+TTT%),2)+"$"
  240. 4800          RETURN
  241. 4810    REM write final lines
  242. 4820       GOSUB 39600
  243. 4830       I%=I%+10 : I$=FNL1$(53000!,I%)+"   RETURN"
  244. 4840       GOSUB 39600
  245. 4850    WX%=15: WY%=34 : WMSG$="Done   " : GOSUB 39500
  246. 4860    WX%=16: WY%=34 : WMSG$="Working" : GOSUB 39500
  247. 4870    PRINT #3, "====== Record Access ================ Begin...";TIME$
  248. 4880    I$="54000 :REM get a data file record"
  249. 4885    GOSUB 39600
  250. 4890    I$="54010    GET #2, DATREC%(BCA%)"   : GOSUB 39600
  251. 4895    I%=10
  252. 4900    FOR C%=0 TO TOPVAR%
  253. 4905       IF INKEY$=CHR$(27) THEN GOSUB 65100
  254. 4910       I%=I%+10
  255. 4920       ON VARTYP%(C%) GOTO 4930,4940,4950,4960,4970
  256. 4930       I$=FNL1$(54000!,I%)+"   "+VARVAR$(C%)+"BCA%)=BCXD"+RIGHT$(STR$(100+C%),2)+"$" : GOTO 5010
  257. 4940       I$=FNL1$(54000!,I%)+"   "+VARVAR$(C%)+"BCA%)=CVI(BCXD"+RIGHT$(STR$(100+C%),2)+"$)" : GOTO 5010
  258. 4950       I$=FNL1$(54000!,I%)+"   "+VARVAR$(C%)+"BCA%)=CVS(BCXD"+RIGHT$(STR$(100+C%),2)+"$)" : GOTO 5010
  259. 4960       I$=FNL1$(54000!,I%)+"   "+VARVAR$(C%)+"BCA%)=CVD(BCXD"+RIGHT$(STR$(100+C%),2)+"$)" : GOTO 5010
  260. 4970       I$=FNL1$(54000!,I%)+"   BCJLNK%=CVI(BCXD"+RIGHT$(STR$(100+C%),2)+"$) : GOSUB 60100"
  261. 4980       GOSUB 39600
  262. 4990       I%=I%+10
  263. 5000       I$=FNL1$(54000!,I%)+"   "+VARVAR$(C%)+"BCA%)=RIGHT$(STR$(100+BCJLNM%),2)+RIGHT$(STR$(100+BCJLND%),2)+RIGHT$(STR$(1900+BCJLNY%),2)"
  264. 5010    REM recombine
  265. 5020       GOSUB 39600
  266. 5030       NEXT
  267. 5040       I%=I%+10 : I$=FNL1$(54000!,I%)+"   RETURN" : GOSUB 39600
  268. 5050       I$="55000 :REM put a data file record"
  269. 5055       GOSUB 39600
  270. 5060       I%=0
  271. 5070       FOR C%=0 TO TOPVAR%
  272. 5075       IF INKEY$=CHR$(27) THEN GOSUB 65100
  273. 5080          I%=I%+10
  274. 5090       ON VARTYP%(C%) GOTO 5100,5110,5120,5130,5140
  275. 5100       I$=FNL1$(55000!,I%)+"   LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$="+VARVAR$(C%)+"BCA%)": GOTO 5170
  276. 5110       I$=FNL1$(55000!,I%)+"   LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$=MKI$("+VARVAR$(C%)+"BCA%))" : GOTO 5170
  277. 5120       I$=FNL1$(55000!,I%)+"   LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$=MKS$("+VARVAR$(C%)+"BCA%))" : GOTO 5170
  278. 5130       I$=FNL1$(55000!,I%)+"   LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$=MKD$("+VARVAR$(C%)+"BCA%))" : GOTO 5170
  279. 5140       I$=FNL1$(55000!,I%)+"   BCJDATE$="+VARVAR$(C%)+"BCA%) : GOSUB 60500 : GOSUB 60000"
  280. 5150       GOSUB 39600 : I%=I%+10
  281. 5160       I$=FNL1$(55000!,I%)+"   LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$=MKI$(BCJLNK%)"
  282. 5170    REM recombine
  283. 5180       GOSUB 39600
  284. 5190       NEXT
  285. 5200       I%=I%+10 : I$=FNL1$(55000!,I%)+"   PUT #2, DATREC%(BCA%)" : GOSUB 39600
  286. 5210       I%=I%+10 : I$=FNL1$(55000!,I%)+"   RETURN" : GOSUB 39600
  287. 5220    WX%=16: WY%=34 : WMSG$="Done   " : GOSUB 39500
  288. 5230    WX%=17: WY%=34 : WMSG$="Working" : GOSUB 39500
  289. 5240    PRINT #3, "====== Exit ========================= Begin...";TIME$
  290. 5290    IL!=65100! : GOSUB 19000
  291. 5295    WX%=17: WY%=34 : WMSG$="Done   " : GOSUB 39500
  292. 5296    PRINT #3, "====== Finished ===================== END ....";TIME$
  293. 5300 REM complete
  294. 5310      FOR C%=7 TO 20
  295. 5320            LOCATE C%,44,0 : PRINT SPACE$(30);
  296. 5330            NEXT
  297. 5340      FOR CDAMN%=1 TO 200 : SOUND 1150,1 : SOUND 1150,0 : NEXT
  298. 5350      IF CLR%=1 THEN COLOR CLR1%
  299. 5360      LOCATE  8,44,0 : PRINT "  ─────────────────────────   ";
  300. 5370      LOCATE 15,44,0 : PRINT "  ─────────────────────────   ";
  301. 5380      LOCATE 17,44,0 : PRINT "  ─────────────────────────   ";
  302. 5390      LOCATE 19,44,0 : PRINT "  ─────────────────────────   ";
  303. 5400      IF CLR%=1 THEN COLOR CLR2%
  304. 5410      LOCATE  7,44,0 : PRINT " Program Generation Complete! ";
  305. 5420      LOCATE  9,44,0 : PRINT "   BASic Program:             ";
  306. 5430      LOCATE 10,44,0 : PRINT "        KEY File:             ";
  307. 5440      LOCATE 11,44,0 : PRINT "       DATa File:             ";
  308. 5450      LOCATE 12,44,0 : PRINT " DICtionary File:             ";
  309. 5460      LOCATE 13,44,0 : PRINT "    PICture File:             ";
  310. 5470      LOCATE 14,44,0 : PRINT "      ERRor File:             ";
  311. 5480      LOCATE 16,44,0 : PRINT " For BASIC intpter use        ";
  312. 5490      LOCATE 18,44,0 : PRINT " See          for more info   ";
  313. 5500      LOCATE 20,44,0 : PRINT " Press          or          : ";
  314. 5510      IF CLR%=1 THEN COLOR CLR6%
  315. 5520      LOCATE  9,62,0 : PRINT BCFILE$;".BAS";
  316. 5530      LOCATE 10,62,0 : PRINT BCFILE$;".KEY";
  317. 5540      LOCATE 11,62,0 : PRINT BCFILE$;".DAT";
  318. 5550      LOCATE 12,62,0 : PRINT BCFILE$;".DIC";
  319. 5560      LOCATE 13,62,0 : PRINT BCFILE$;".PIC";
  320. 5570      LOCATE 14,62,0 : PRINT BCFILE$;".ERR";
  321. 5580      LOCATE 16,67,0 : PRINT "/S:";RIGHT$(STR$(TOTBYTES%),LEN(STR$(TOTBYTES%))-1);
  322. 5590      IF CLR%=1 THEN COLOR CLR4%
  323. 5600      LOCATE 18,49,0 : PRINT "<F1>";
  324. 5610      LOCATE 20,51,0 : PRINT "<F1>";
  325. 5620      LOCATE 20,63,0 : PRINT "<ESC>;
  326. 5630      IF CLR%=1 THEN COLOR CLR3%
  327. 5640      LOCATE 18,53,0 : PRINT "Help";
  328. 5650      LOCATE 20,55,0 : PRINT "Help";
  329. 5660      LOCATE 20,68,0 : PRINT "Done";
  330. 5670      LOCATE 20,73,1,0,7
  331. 5680      K$=INKEY$ : IF K$="" THEN GOTO 5680
  332. 5690      IF K$=CHR$(27) THEN GOTO 65160
  333. 5700      IF RIGHT$(K$,1)=CHR$(59) THEN HELP%=555 : GOSUB 45100 : GOTO 5670
  334. 5710      SOUND 50,3 : GOTO 5680
  335. 11000 REM print working
  336. 11020    IF CLR%=1 THEN COLOR CLR0%
  337. 11030    LOCATE  9,30 : PRINT "┌──────────────┐";
  338. 11040    LOCATE 10,30 : PRINT "│ working .... │";
  339. 11050    LOCATE 11,30 : PRINT "└──────────────┘";
  340. 11060    RETURN
  341. 16000 REM prepare ON GOTO line
  342. 16010     RABS%=500 : RC%=INC%
  343. 16020     LABS%=500 : LC%=INC%
  344. 16030     UABS%=500 : UC%=INC%
  345. 16040     DABS%=500 : DC%=INC%
  346. 16050    FOR Q%=0 TO TOPVAR%
  347. 16060       IF INKEY$=CHR$(27) THEN GOSUB 65100
  348. 16070       IF Q%=INC% OR VARSTAT$(Q%)="" THEN GOTO 16180
  349. 16080       RDEV%=VARROW%(INC%)-VARROW%(Q%)
  350. 16090       C1DEV%=VARCOL%(INC%)-VARCOL%(Q%)
  351. 16110       C2DEV%=VARCOL%(INC%)-(VARCOL%(Q%)+VARLEN%(Q%))
  352. 16120       IF ABS(C1DEV%)<ABS(C2DEV%) THEN CDEV%=C1DEV% ELSE CDEV%=C2DEV%
  353. 16125       CDEV%=INT((CDEV%+2)/3)
  354. 16130       TABS%=(ABS(RDEV%)+ABS(CDEV%))
  355. 16140       IF RDEV%=0 AND CDEV%<1 THEN GOSUB 16200:GOTO 16180:REM right only
  356. 16145       IF RDEV%=0 AND CDEV%>0 THEN GOSUB 16300:GOTO 16180:REM left  only
  357. 16150       IF CDEV%=0 AND RDEV%<1 THEN GOSUB 16500:GOTO 16180:REM down  only
  358. 16155       IF CDEV%=0 AND RDEV%>0 THEN GOSUB 16400:GOTO 16180:REM up    only
  359. 16160       IF RDEV%<1 THEN GOSUB 16500 ELSE GOSUB 16400      :REM down  else up
  360. 16170       IF CDEV%<1 THEN GOSUB 16200 ELSE GOSUB 16300      :REM right else left
  361. 16180       NEXT
  362. 16190    GOTO 16600
  363. 16200     REM right
  364. 16210       IF TABS%=>RABS% THEN GOTO 16230
  365. 16220       RABS%=TABS% : RC%=Q%
  366. 16230       RETURN
  367. 16300     REM left
  368. 16310       IF TABS%=>LABS% THEN GOTO 16330
  369. 16320       LABS%=TABS% : LC%=Q%
  370. 16330       RETURN
  371. 16400     REM up
  372. 16410       IF TABS%=>UABS% THEN GOTO 16430
  373. 16420       UABS%=TABS% : UC%=Q%
  374. 16430       RETURN
  375. 16500     REM down
  376. 16510       IF TABS%=>DABS% THEN GOTO 16530
  377. 16520       DABS%=TABS% : DC%=Q%
  378. 16530       RETURN
  379. 16600   REM assemble on goto line
  380. 16610       I$="ON ENWAY% GOTO "
  381. 16620       I$=I$+FNL$(UC%,0)+","+FNL$(DC%,0)+","+FNL$(LC%,0)+","+FNL$(RC%,0)
  382. 16630       I$=I$+",30000,"+FNL$(TOPVAR%,0)+",29000"
  383. 16640       RETURN
  384. 19000 REM cycle till line discovered
  385. 19010   LINE INPUT #4,I$
  386. 19020   WHILE VAL(I$)<>IL!
  387. 19030      GOSUB 39600
  388. 19040      LINE INPUT #4, I$
  389. 19050       IF INKEY$=CHR$(27) THEN GOSUB 65100
  390. 19060      WEND
  391. 19070   RETURN
  392. 20000 REM display main
  393. 20010   CLS : IF CLR%=1 THEN COLOR CLR1%,0
  394. 20020 PRINT "╔═════════════════════════════════════════════════════════════════════════════╗"
  395. 20030 PRINT "║                                                                             ║"
  396. 20040 PRINT "╚═════╤══════════════════════════════════════════════════════════════════╤════╝"
  397. 20050 PRINT "      │                                                                  │"
  398. 20060 PRINT "      │                                                                  │"
  399. 20070 PRINT "      ├───────────────────────────────────┬──────────────────────────────┤"
  400. 20080 PRINT "      │                                   │                              │"
  401. 20090 PRINT "      │  ──────────────────     ────────  │       ────────────────       │"
  402. 20100 PRINT "      │                                   │                              │"
  403. 20110 PRINT "      │                                   │                              │"
  404. 20120 PRINT "      │                                   │                              │"
  405. 20130 PRINT "      │                                   │                              │"
  406. 20140 PRINT "      │                                   │                              │"
  407. 20150 PRINT "      │                                   │                              │"
  408. 20160 PRINT "      │                                   │                              │"
  409. 20170 PRINT "      │                                   │                              │"
  410. 20180 PRINT "      │                                   │                              │"
  411. 20190 PRINT "      ├───────────────────────────────────┤                              │"
  412. 20200 PRINT "      │                                   │                              │"
  413. 20210 PRINT "      │                                   │                              │";
  414. 20220 LOCATE 21,1 : PRINT "┌─────┴───────────────────────────────────┼──────────────────────────────┴────┐";
  415. 20222 LOCATE 22,1 : PRINT "│                                         │                                   │";
  416. 20224 LOCATE 23,1 : PRINT "└─────────────────────────────────────────┴───────────────────────────────────┘";
  417. 20230 LOCATE 2,4 : IF CLR%=1 THEN COLOR CLR5%
  418. 20240 PRINT "BasiCoder-SF(tm)   Copyright Frederick G. Volking 1985-1986    Ver: 2.5.4";
  419. 20250 IF CLR%=1 THEN COLOR CLR2%
  420. 20260 LOCATE  4,36 : PRINT "Program to generate:";
  421. 20270 LOCATE  5,13 : PRINT "Type the word `";
  422. 20271 IF CLR%=1 THEN COLOR CLR3%
  423. 20272                PRINT "BasiCoder";
  424. 20273 IF CLR%=1 THEN COLOR CLR2%
  425. 20274                PRINT "' exactly to begin:";
  426. 20280 LOCATE  7, 9 : PRINT "Programming Operation    Status";
  427. 20290 LOCATE  7,45 : PRINT "Errors=    File:";
  428. 20292 IF CLR%=1 THEN COLOR CLR3%
  429. 20294                PRINT BCFILE$;".ERR";
  430. 20296 IF CLR%=1 THEN COLOR CLR2%
  431. 20300 LOCATE  9, 9 : PRINT "Data Verification........";
  432. 20310 LOCATE 10, 9 : PRINT "        Record Handling";
  433. 20320 LOCATE 11, 9 : PRINT "     Display of Records";
  434. 20330 LOCATE 12, 9 : PRINT "        Data Collection";
  435. 20340 LOCATE 13, 9 : PRINT "          Input Routine";
  436. 20350 LOCATE 14, 9 : PRINT "           ISAM routine";
  437. 20360 LOCATE 15, 9 : PRINT "            File FIELDs";
  438. 20370 LOCATE 16, 9 : PRINT "          Record Access";
  439. 20380 LOCATE 17, 9 : PRINT "                   Exit";
  440. 20390 LOCATE 19, 9 : PRINT "Program Size (bytes) :";
  441. 20400 LOCATE 20,18 : PRINT "Elapsed Time:";
  442. 20410 IF CLR%=1 THEN COLOR CLR4%
  443. 20420 LOCATE 22,3  : PRINT "<ESC>";
  444. 20430 IF CLR%=1 THEN COLOR CLR3%
  445. 20440 PRINT " anytime aborts program generation";
  446. 20445 IF CLR%=1 THEN COLOR CLR7%
  447. 20450 LOCATE 22,45 : PRINT "Include REM's in Source (Y/N):";
  448. 20460 IF CLR%=1 THEN COLOR CLR0%
  449. 20470 PRINT " Yes";
  450. 20480 GOSUB 21000
  451. 20500 RETURN
  452. 21000 REM display command
  453. 21010    LOCATE 25,1 : PRINT SPACE$(79); : LOCATE 25,1
  454. 21020    IF CLR%=1 THEN COLOR CLR4%
  455. 21030    PRINT "<F1>";
  456. 21040    IF CLR%=1 THEN COLOR CLR3%
  457. 21050    PRINT "Help";
  458. 21060    RETURN
  459. 22000 REM no screen - use defaults
  460. 22010   MSG$=" No Screen Set - Using Default" : PRINT #3, MSG$ : GOSUB 39000
  461. 22020   FOR T%=1 TO 23
  462. 22030       SCR$(T%)=SPACE$(80)
  463. 22035       IF INKEY$=CHR$(27) THEN GOSUB 65100
  464. 22040       NEXT
  465. 22050   MAXDICLEN%=0
  466. 22060   FOR T%=0 TO TOPVAR%
  467. 22070      IF LEN(VARDIC$(T%))>MAXDICLEN% THEN MAXDICLEN%=LEN(VARDIC$(T%))
  468. 22075      IF INKEY$=CHR$(27) THEN GOSUB 65100
  469. 22080      NEXT
  470. 22090   FOR T%=0 TO TOPVAR%
  471. 22095      IF INKEY$=CHR$(27) THEN GOSUB 65100
  472. 22097      IF VARROW%(T%)>0 AND VARCOL%(T%)>0 THEN GOTO 22210 :REM pre-placed
  473. 22100      X%=T%+1
  474. 22110      IF X%<24 THEN GOTO 22170
  475. 22120         X%=X%-23
  476. 22130         VARROW%(T%)=X%
  477. 22140         VARCOL%(T%)=41+MAXDICLEN%
  478. 22150         MID$(SCR$(X%),41,LEN(VARDIC$(T%)))=VARDIC$(T%)
  479. 22160         GOTO 22210
  480. 22170         REM default right
  481. 22180              VARROW%(T%)=X%
  482. 22190              VARCOL%(T%)=(MAXDICLEN%+1)
  483. 22200              MID$(SCR$(X%),1,LEN(VARDIC$(T%)))=VARDIC$(T%)
  484. 22210      NEXT
  485. 22220      RETURN
  486. 23000 REM assign variable
  487. 23005   VARVAR$(0)="DATKEY" : VARTYP%(0)=1 : VARMSK%(0)=1
  488. 23006   TOTBYTES%=0
  489. 23010   FOR C%=0 TO TOPVAR%
  490. 23015     GOSUB 39625
  491. 23020     IF VARVAR$(C%)<"          " THEN VARVAR$(C%)="VAR"+RIGHT$(STR$(100+C%),2)
  492. 23030     ON VARTYP%(C%) GOTO 23040,23050,23060,23070,23080
  493. 23040       VARVAR$(C%)=VARVAR$(C%)+"$(" : TOTBYTES%=TOTBYTES%+VARLEN%(C%)
  494. 23045        VARFLD$(C%)=RIGHT$(STR$(VARLEN%(C%)),LEN(STR$(VARLEN%(C%)))-1): GOTO 23090
  495. 23050       VARVAR$(C%)=VARVAR$(C%)+"%(" : TOTBYTES%=TOTBYTES%+2
  496. 23055        VARFLD$(C%)="2" : GOTO 23090
  497. 23060       VARVAR$(C%)=VARVAR$(C%)+"!(" : TOTBYTES%=TOTBYTES%+4
  498. 23065        VARFLD$(C%)="4" : GOTO 23090
  499. 23070       VARVAR$(C%)=VARVAR$(C%)+"#(" : TOTBYTES%=TOTBYTES%+8
  500. 23075        VARFLD$(C%)="8" : GOTO 23090
  501. 23080       VARVAR$(C%)=VARVAR$(C%)+"$(" : TOTBYTES%=TOTBYTES%+2
  502. 23085        VARFLD$(C%)="2" : GOTO 23090
  503. 23090   REM assign stat strings
  504. 23100       IF VARROW%(C%)<1 OR VARCOL%(C%)<1 THEN GOTO 23170
  505. 23110       VARSTAT$(C%)=QM$+RIGHT$(STR$(100+VARROW%(C%)),2)
  506. 23120       VARSTAT$(C%)=VARSTAT$(C%)+RIGHT$(STR$(100+VARCOL%(C%)),2)
  507. 23130       VARSTAT$(C%)=VARSTAT$(C%)+RIGHT$(STR$(100+VARLEN%(C%)),2)
  508. 23140       VARSTAT$(C%)=VARSTAT$(C%)+RIGHT$(STR$(VARMSK%(C%)),1)
  509. 23150       IF VARTYP%(C%)=1 OR VARTYP%(C%)=5 OR C%=0 THEN T$="0" ELSE T$="1"
  510. 23160       VARSTAT$(C%)=VARSTAT$(C%)+T$+QM$
  511. 23170   REM combine
  512. 23180       NEXT
  513. 23190   RETURN
  514. 30000 REM for REM's or no
  515. 30010    IF CLR%=1 THEN COLOR CLR0%
  516. 30020    LOCATE 22,76,1,0,7
  517. 30030    K$=INKEY$ : IF K$="" THEN GOTO 30020
  518. 30040    IF K$=CHR$(13) OR RIGHT$(K$,1)="H" THEN RETURN
  519. 30045    IF K$=CHR$(27) THEN GOSUB 65100 : GOTO 30000
  520. 30050    IF RIGHT$(K$,1)=CHR$(59) THEN HELP%=542 : GOSUB 45100 : GOTO 30000
  521. 30060    IF K$="Y" OR K$="y" THEN PRINT "Yes"; : PACK%=0 : GOTO 30000
  522. 30070    IF K$="N" OR K$="n" THEN PRINT "No "; : PACK%=1 : GOTO 30000
  523. 30080    SOUND 50,3 : GOTO 30000
  524. 32000 REM pack
  525. 32010    R%=INSTR(I$,":REM")
  526. 32020    IF R%<1 THEN GOTO 32200
  527. 32030    I$=LEFT$(I$,R%-1)
  528. 32040    R%=R%-1
  529. 32050    WHILE MID$(I$,R%,1)=" "
  530. 32060      R%=R%-1
  531. 32070      WEND
  532. 32080    I$=LEFT$(I$,R%)
  533. 32090    R1$=STR$(VAL(I$))
  534. 32100    R1%=LEN(R1$)-1
  535. 32110    IF R1%=R% THEN I$=I$+" "+SQM$
  536. 32200    REM remove spaces
  537. 32210       R1$=STR$(VAL(I$))
  538. 32220       R2%=LEN(R1$)
  539. 32230       IL$=RIGHT$(R1$,R2%-1)
  540. 32240       R%=0 : R1%=R2%
  541. 32250       WHILE MID$(I$,R1%,1)=" "
  542. 32260          R%=R%+1 : R1%=R1%+1
  543. 32270          WEND
  544. 32280       IR$=RIGHT$(I$,LEN(I$)-((R2%+R%)-1))
  545. 32290       I$=IL$+" "+IR$
  546. 32300    REM remove extra spaces
  547. 32310       R%=INSTR(I$," : ")
  548. 32320       IF R%<1 THEN RETURN
  549. 32330       I$=LEFT$(I$,R%-1)+":"+RIGHT$(I$,LEN(I$)-(R%+2))
  550. 32340       GOTO 32300
  551. 39000 REM display message
  552. 39005    IF CLR%=1 THEN COLOR CLR3%
  553. 39010    MSG%=MSG%+1
  554. 39020    IF MSG%>12 THEN MSG%=1
  555. 39030    LOCATE 8+MSG%,44 : PRINT SPACE$(30);
  556. 39040    LOCATE 8+MSG%,44 : PRINT MSG$;
  557. 39050    IF CERR%>0 THEN LOCATE 7,52 : PRINT USING "###";CERR%;
  558. 39090    IF CLR%=1 THEN COLOR CLR0%
  559. 39500 REM display status
  560. 39505    IF WX%<1 OR WY%<1 THEN GOTO 39540
  561. 39510    LOCATE WX%,WY% : IF CLR%>0 THEN COLOR CLR7%
  562. 39520    PRINT WMSG$; : LOCATE WX%,WY%,1,0,7
  563. 39530    IF CLR%>0 THEN COLOR CLR0%
  564. 39540    FOR CDAMN%=1 TO 5 : SOUND 5000,1 : SOUND 1150,0 : NEXT
  565. 39550    RETURN
  566. 39600 REM write file update
  567. 39605    IF PACK%=1 THEN GOSUB 32000
  568. 39610    PSIZE!=PSIZE!+LEN(I$)
  569. 39620    PRINT #5, I$
  570. 39625 REM branch in
  571. 39630    IF CLR%=1 THEN COLOR CLR5%
  572. 39640    LOCATE 19,32 : PRINT USING "##,###";PSIZE!;
  573. 39645    MARKTIME1#=(VAL(LEFT$(TIME$,2))*3600)+((VAL(MID$(TIME$,4,2))*60)+VAL(MID$(TIME$,7,2)))-MARKTIME#
  574. 39650    MARKMIN%=INT(MARKTIME1#/60)
  575. 39655    MARKSEC%=INT(MARKTIME1#-(MARKMIN%*60))
  576. 39660    MARK$=RIGHT$(STR$(100+MARKMIN%),2)+":"+RIGHT$(STR$(100+MARKSEC%),2)
  577. 39690    LOCATE 20,33 : PRINT MARK$;
  578. 39700    IF CLR%=1 THEN COLOR CLR0%
  579. 39710    RETURN
  580. 41000 REM open error file
  581. 41010    OPEN "o", #3, BCFILE$+".ERR"
  582. 41013    PRINT #3, "BasiCoder Program Generation"
  583. 41020    PRINT #3, DATE$;" / ";TIME$
  584. 41030    PRINT #3, "Generation of File : ";BCFILE$;".BAS"
  585. 41060    RETURN
  586. 41100 REM open template file
  587. 41110    OPEN "r", #4, "SF-DRAFT.DAT",1
  588. 41120    L!=LOF(4)
  589. 41130    CLOSE #4
  590. 41140    IF L!<29000 THEN GOTO 64000
  591. 41150    OPEN "i", #4, "SF-DRAFT.DAT"
  592. 41160    RETURN
  593. 41200 REM open output
  594. 41210    OPEN "o", #5, BCFILE$+".BAS"
  595. 41220    RETURN
  596. 42200 REM get system info
  597. 42202    OPEN "i", #2, "SF-CARRY.DAT"
  598. 42204    INPUT #2, BCFILE$,K$
  599. 42206    INPUT #2, CLR%   ,K$
  600. 42208    INPUT #2, CLR0%  ,K$
  601. 42210    INPUT #2, CLR1%  ,K$
  602. 42212    INPUT #2, CLR2%  ,K$
  603. 42214    INPUT #2, CLR3%  ,K$
  604. 42216    INPUT #2, CLR4%  ,K$
  605. 42218    INPUT #2, CLR5%  ,K$
  606. 42220    INPUT #2, CLR6%  ,K$
  607. 42222    INPUT #2, CLR7%  ,K$
  608. 42224    INPUT #2, CLR8%  ,K$
  609. 42226    INPUT #2, CLR9%  ,K$
  610. 42228    CLOSE #2
  611. 42240    RETURN
  612. 42250 REM test file exist
  613. 42260    IF TCFILE$<="        " THEN GOTO 42310
  614. 42270    OPEN "r", #2, TCFILE$+".PIC",1
  615. 42280    L%=LOF(2)
  616. 42290    CLOSE #2
  617. 42300    IF L%>0 THEN RETURN
  618. 42305       KILL TCFILE$+".PIC"
  619. 42310       TCFILE$=""
  620. 42320       RETURN
  621. 42330 REM retrieve data
  622. 42340    OPEN "i", #2, BCFILE$+".DIC"
  623. 42350    INPUT #2, BCFILE$
  624. 42360    FOR T%=0 TO MAXVARS%
  625. 42365       IF INKEY$=CHR$(27) THEN GOSUB 65100
  626. 42370       INPUT #2, VARDIC$(T%),VARTYP%(T%),VARLEN%(T%),VARMSK%(T%),VARVAR$(T%),VARROW%(T%),VARCOL%(T%)
  627. 42380       NEXT
  628. 42390    INPUT #2, CV%,VO%,TOPVAR%
  629. 42400    CLOSE #2
  630. 42410    RETURN
  631. 42420 REM put system info
  632. 42430    OPEN "o", #2, "SF-CARRY.DAT"
  633. 42432    PRINT #2, BCFILE$,",Active File --------------------12"
  634. 42434    PRINT #2, CLR%   ,",Color 0-NO 1-YES ---------------11"
  635. 42436    PRINT #2, CLR0%  ,",..... Major Text Color ---------10"
  636. 42438    PRINT #2, CLR1%  ,",..... Border Lines Color ------- 9"
  637. 42440    PRINT #2, CLR2%  ,",..... Data Prompts Color ------- 8"
  638. 42442    PRINT #2, CLR3%  ,",..... Command Line Color #1 ---- 7"
  639. 42444    PRINT #2, CLR4%  ,",..... Command Line Color #2 ---- 6"
  640. 42446    PRINT #2, CLR5%  ,",..... Title Text Color --------- 5"
  641. 42448    PRINT #2, CLR6%  ,",..... Default Data Color ------- 4"
  642. 42450    PRINT #2, CLR7%  ,",..... Special Messages Color --- 3"
  643. 42452    PRINT #2, CLR8%  ,",..... Help Window Color -------- 2"
  644. 42454    PRINT #2, CLR9%  ,",..... Misc. Color -------------- 1"
  645. 42458    CLOSE #2
  646. 42460    RETURN
  647. 43000 REM get screen
  648. 43010    OPEN "i", #2, BCFILE$+".PIC"
  649. 43020    FOR T%=1 TO 23
  650. 43025       IF INKEY$=CHR$(27) THEN GOSUB 65100
  651. 43030       INPUT #2, SCR$(T%)
  652. 43035       SCR$(T%)=LEFT$(SCR$(T%)+SPACE$(80),80)
  653. 43040       NEXT
  654. 43050    IF EOF(2)=(-1) THEN GOTO 43070
  655. 43060    INPUT #2, CX%,CY%
  656. 43070    CLOSE #2
  657. 43080    RETURN
  658. 45000 REM open help file
  659. 45010   OPEN "r",#1,"SF-TUTOR.DAT",72
  660. 45020   FIELD #1,70 AS HLP$,2 AS HLP1$
  661. 45030   RETURN
  662. 45100 REM help
  663. 45105    LOCATE 1,1,1,0,0 : HELP1%=HELP%
  664. 45110    IF CLR%=1 THEN COLOR CLR8%
  665. 45120    GET #1,HELP1%
  666. 45130    HELP$=HLP$
  667. 45140    WW%=INSTR(HELP$,"@")+3
  668. 45150    FOR W%=1 TO WW%
  669. 45160       WIN%(0,1,W%)=SCREEN(1,W%)
  670. 45170       IF CLR%=1 THEN WIN%(1,1,W%)=((SCREEN(1,W%,1)) MOD 16)
  671. 45180       NEXT
  672. 45190    LOCATE 1,1,1,0,0 : PRINT STRING$(WW%,220);
  673. 45200    WX%=1
  674. 45210    WHILE LEFT$(HELP$,1)<>"^"
  675. 45220       WX%=WX%+1
  676. 45230       FOR W%=1 TO WW%
  677. 45240          WIN%(0,WX%,W%)=SCREEN(WX%,W%)
  678. 45250          IF CLR%=1 THEN WIN%(1,WX%,W%)=((SCREEN(WX%,W%,1)) MOD 16)
  679. 45260          NEXT
  680. 45270       LOCATE WX%,1,1,0,0
  681. 45280       PRINT CHR$(221)+" "+LEFT$(HELP$,WW%-4)+" "+CHR$(222);
  682. 45290       HELP1%=HELP1%+1
  683. 45300       GET #1,HELP1%
  684. 45310       HELP$=HLP$
  685. 45320       WEND
  686. 45330    WX%=WX%+1
  687. 45350    FOR W%=1 TO WW%
  688. 45360       WIN%(0,WX%,W%)=SCREEN(WX%,W%)
  689. 45370       IF CLR%=1 THEN WIN%(1,WX%,W%)=((SCREEN(WX%,W%,1)) MOD 16)
  690. 45380       NEXT
  691. 45390    LOCATE WX%,1 : PRINT RIGHT$(STRING$(WW%,223)+" <ESC>"+CHR$(223),WW%);
  692. 45400    LOCATE WX%,WW%-6,1,0,7
  693. 45410    K$=INKEY$ : IF K$<>CHR$(27) THEN GOTO 45410
  694. 45420    FOR W1%=1 TO WW%
  695. 45430       FOR W%=1 TO WX%
  696. 45440          LOCATE W%,W1%,1,0,0
  697. 45450          IF CLR%=1 THEN COLOR WIN%(1,W%,W1%)
  698. 45460          PRINT CHR$(WIN%(0,W%,W1%));
  699. 45470          NEXT
  700. 45480       NEXT
  701. 45490    IF CLR%=1 THEN COLOR CLR0%
  702. 45500    LOCATE 1,1,1,0,7
  703. 45510    RETURN
  704. 64000 REM file missing error
  705. 64005   IF CLR%=1 THEN COLOR CLR5%
  706. 64010   LOCATE  9,44 : PRINT " FATAL ERROR ..............  ";
  707. 64015   LOCATE 10,44 : PRINT "     Data File Missing       ";
  708. 64020   LOCATE 11,44 : PRINT "                             ";
  709. 64025   LOCATE 13,44 : PRINT " File: SF-DRAFT.DAT must be  ";
  710. 64030   LOCATE 14,44 : PRINT "   on current default drive  ";
  711. 64035   LOCATE 15,44 : PRINT "      under current default  ";
  712. 64040   LOCATE 17,44 : PRINT "              sub-directory  ";
  713. 64050   LOCATE 19,44 : PRINT "                             ";
  714. 64055   LOCATE 20,44 : PRINT "Press <ESC>:                 ";
  715. 64056   LOCATE 20,56,1,0,7
  716. 64060   IF INKEY$<>CHR$(27) THEN GOTO 64060
  717. 64065   CLOSE : CLS : END
  718. 65100 REM exit?
  719. 65110    IF CLR%=1 THEN COLOR CLR7%
  720. 65120    LOCATE 25,1,1,0,7
  721. 65130    PRINT "Abort program generation? Y/N :";
  722. 65140    K$=INKEY$ : IF K$="" THEN GOTO 65140
  723. 65145    LOCATE 25,1 : PRINT SPACE$(45); : IF CLR%=1 THEN COLOR CLR0%
  724. 65150    IF K$<>"Y" AND K$<>"y" THEN GOSUB 21000 : RETURN
  725. 65160    REM success
  726. 65170        CLOSE : CLS : GOSUB 11000 : CLEAR : CHAIN "SF-START"
  727. 65501     K$="Copyright Frederick G. Volking 1986"
  728. 65502     K$="6891 gnikloV .G kcirederF thgirypoC"
  729.