home *** CD-ROM | disk | FTP | other *** search
- 1 REM Filename: SF-DRAFT
- 2 K$="Copyright Frederick G. Volking 1986"
- 3 K$="6891 gnikloV .G kcirederF thgirypoC"
- 10 KEY OFF : CLS : GOSUB 11000
- 20 DIM SCR$(23),SCR1$(23)
- 25 DIM VARDIC$(99),VARTYP%(99),VARLEN%(99),VARMSK%(99),VARFLD$(99)
- 30 DIM VARVAR$(99),VARROW%(99),VARCOL%(99),VARSTAT$(99)
- 35 MAXVARS%=99:REM if changing above DIM's change this to MATCH!
- 50 DEF FNL$(NL%,NL1%)="3"+RIGHT$(STR$((NL%*100)+10000+NL1%),4)
- 60 DEF FNL1$(NL2!,NL3%)=RIGHT$(STR$(NL2!+NL3%),LEN(STR$(NL2!))-1)
- 100 GOSUB 42200 :REM get system data CARRY.DAT
- 110 GOSUB 20000 :REM display screen
- 120 QM$=CHR$(34) : SQM$=CHR$(39)
- 190 DIM WIN%(1,23,80) : GOSUB 45000
- 1000 REM start
- 1020 IF CLR%=1 THEN COLOR CLR3%
- 1030 LOCATE 4,57 : PRINT BCFILE$+".BAS";
- 1040 K%=1
- 1050 LOCATE 5,56,0 : PRINT SPACE$(10);
- 1060 GOSUB 30000
- 1100 REM collect next
- 1110 LOCATE 5,56+K%,1,0,7
- 1120 K$=INKEY$ : IF K$="" THEN GOTO 1120
- 1125 IF RIGHT$(K$,1)=CHR$(59) THEN HELP%=523 : GOSUB 45100 : GOTO 1100
- 1127 IF RIGHT$(K$,1)="P" THEN GOSUB 30000 : GOTO 1100
- 1130 IF K$=CHR$(27) THEN GOSUB 65100 : GOTO 1100
- 1140 IF K$<>MID$("BasiCoder"+CHR$(13),K%,1) THEN SOUND 50,3 : GOTO 1120
- 1150 PRINT MID$("BasiCoder",K%,1);
- 1160 IF K%<10 THEN K%=K%+1 : GOTO 1100
- 2000 REM begin
- 2002 MARKTIME#=(VAL(LEFT$(TIME$,2))*3600)+((VAL(MID$(TIME$,4,2))*60)+VAL(MID$(TIME$,7,2)))-MARKTIME%
- 2005 WX%=9 : WY%=34 : WMSG$="Working" : GOSUB 39500
- 2006 GOSUB 39625
- 2010 GOSUB 41000 :REM open error file
- 2015 PRINT #3, "====== Data Item Verification ======= Begin...";TIME$
- 2020 GOSUB 42330 :REM get DIC info
- 2030 TCFILE$=BCFILE$
- 2040 GOSUB 42250 :REM test PIC
- 2050 IF TCFILE$<>BCFILE$ THEN GOSUB 22000 ELSE GOSUB 43000 : REM no screen
- 2100 REM verify variable
- 2110 FOR C%=1 TO 23
- 2115 SCR1$(C%)=SCR$(C%)
- 2118 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 2120 NEXT
- 2140 FOR C%=0 TO TOPVAR%
- 2145 GOSUB 39625
- 2150 VARREPT%=0
- 2155 IF VARROW%(C%)<1 OR VARCOL%(C%)<1 THEN GOSUB 2400 : GOTO 2210
- 2156 IF (VARCOL%(C%)+VARLEN%(C%))>80 THEN GOSUB 2200
- 2160 FOR L%=1 TO VARLEN%(C%)
- 2180 IF MID$(SCR1$(VARROW%(C%)),(VARCOL%(C%)-1)+L%,1)<>" " THEN GOSUB 2300
- 2190 MID$(SCR1$(VARROW%(C%)),(VARCOL%(C%)-1)+L%,1)=CHR$(128+C%)
- 2195 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 2196 NEXT : NEXT
- 2197 GOTO 2500
- 2200 REM report illegal
- 2205 CERR%=CERR%+1
- 2210 MSG$="Error - Off Screen Placement" : PRINT #3, CERR%;" - ";MSG$;
- 2220 IF MSG%>10 THEN MSG%=12
- 2230 GOSUB 39000
- 2240 MSG$=" Variable#"+STR$(C%)+" in row#"+STR$(VARROW%(C%))
- 2245 PRINT #3, MSG$
- 2250 GOSUB 39000
- 2260 RETURN
- 2300 REM report conflict
- 2301 IF VARREPT%=1 THEN GOTO 2360
- 2305 CERR%=CERR%+1 : VARREPT%=1
- 2310 MSG$="Error - Screen Text Conflict" : PRINT #3, CERR%;" - ";MSG$;
- 2320 IF MSG%>10 THEN MSG%=12
- 2330 GOSUB 39000
- 2340 MSG$=" Variable#"+STR$(C%)+" in row#"+STR$(VARROW%(C%))
- 2345 PRINT #3, MSG$
- 2350 GOSUB 39000
- 2360 RETURN
- 2400 REM non display veriable
- 2410 MSG$="Comment: Non-located Variable" : PRINT #3, MSG$;
- 2420 GOSUB 39000
- 2430 MSG$=" #"+STR$(C%)+" Name:"+VARDIC$(C%) : PRINT #3, MSG$
- 2440 GOSUB 39000
- 2450 MSG$=" Processing as Non-Display" : GOSUB 39000
- 2460 RETURN
- 2500 REM prep files
- 2505 GOSUB 23000 :REM assign variable names
- 2510 GOSUB 41100 :REM open & test template
- 2520 GOSUB 41200 :REM open output file
- 2530 WX%=9 : WY%=34 : WMSG$="Done " : GOSUB 39500
- 2540 WX%=10: WY%=34 : WMSG$="Working" : GOSUB 39500
- 2550 PRINT #3, "====== Record Handling ============== Begin...";TIME$
- 2560 IL!=111
- 2570 GOSUB 19000 :REM cycle till line found
- 2630 I$="112 :REM dimension user defined variables "
- 2640 GOSUB 2730
- 2650 FOR C%=1 TO TOPVAR%
- 2660 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 2670 I$=I$+VARVAR$(C%)+"2),"
- 2680 IF LEN(I$)>70 THEN GOSUB 2730
- 2690 NEXT
- 2710 GOTO 2800
- 2730 REM put line & prepare next
- 2740 I$=LEFT$(I$,LEN(I$)-1) : GOSUB 39600
- 2750 IL!=VAL(I$)+2 : I$=RIGHT$(STR$(IL!),LEN(STR$(IL!))-1)
- 2760 I$=I$+" DIM "
- 2770 RETURN
- 2800 REM last DIM variable
- 2810 I$=I$+"DATKEY$(2)"
- 2820 GOSUB 39600
- 2830 IL!=180 : GOSUB 19000 :REM cycle
- 2840 I$="180 FILENAME$="+QM$+BCFILE$+QM$+" : BCIKEYLEN1%="+STR$(VARLEN%(0))
- 2850 GOSUB 39600
- 2860 IL!=3060 : GOSUB 19000 :REM cycle
- 2870 I$="3060 ENSTAT$="+VARSTAT$(0)+" : ENDFLT$="+QM$+QM$
- 2880 GOSUB 39600
- 2900 IL!=7060 : GOSUB 19000 :REM cycle
- 2910 I$="7060 ENSTAT$="+VARSTAT$(0)+" : ENDFLT$="+QM$+QM$
- 2920 GOSUB 39600
- 2922 WX%=10: WY%=34 : WMSG$="Done " : GOSUB 39500
- 2924 WX%=11: WY%=34 : WMSG$="Working" : GOSUB 39500
- 2926 PRINT #3, "====== Record Display =============== Begin...";TIME$
- 2930 IL!=20060 : GOSUB 19000 :REM cycle
- 2940 FOR C%=1 TO 23
- 2941 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 2942 I%=LEN(SCR$(C%))
- 2943 IF I%=0 THEN GOTO 2980
- 2944 IF RIGHT$(SCR$(C%),1)=" " THEN SCR$(C%)=LEFT$(SCR$(C%),(I%-1)) : GOTO 2942
- 2950 I$=RIGHT$(STR$(20050+(C%*10)),5)+" LOCATE "
- 2960 I$=I$+STR$(C%)+",1 : PRINT "+QM$+SCR$(C%)+QM$+";"
- 2970 GOSUB 39600
- 2975 SCR$(C%)=""
- 2980 NEXT
- 2990 I$=RIGHT$(STR$(20050+(C%*10)),5)+" RETURN "
- 3000 GOSUB 39600
- 3010 I$="21000 :REM show a data record"
- 3015 GOSUB 39600
- 3020 FOR C%=0 TO TOPVAR%
- 3025 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 3030 IF VARSTAT$(C%)="" THEN GOTO 3110
- 3050 I$=RIGHT$(STR$(21000+((C%+1)*5)),5)+" LOCATE"
- 3060 I$=I$+STR$(VARROW%(C%))+","+STR$(VARCOL%(C%))+" : PRINT "
- 3070 ON VARTYP%(C%) GOTO 3080,3090,3090,3090,3080
- 3080 I$=I$+VARVAR$(C%)+"BCA%);" : GOTO 3100
- 3090 I$=I$+"RIGHT$(SPACE$("+STR$(VARLEN%(C%))+")+STR$("+VARVAR$(C%)+"BCA%)),"+STR$(VARLEN%(C%))+");"
- 3100 GOSUB 39600
- 3110 NEXT
- 3120 I$=RIGHT$(STR$(21000+((C%+1)*10)),5)+" RETURN" : GOSUB 39600
- 3130 IL!=23000 : GOSUB 19000 :REM cycle
- 3140 I$="23000 :REM blank out all data fields"
- 3145 GOSUB 39600
- 3220 FOR C%=0 TO TOPVAR%
- 3225 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 3230 IF VARSTAT$(C%)="" THEN GOTO 3310
- 3250 I$=RIGHT$(STR$(23000+((C%+1)*10)),5)+" LOCATE"
- 3260 I$=I$+STR$(VARROW%(C%))+","+STR$(VARCOL%(C%))+" : PRINT STRING$("
- 3265 I$=I$+STR$(VARLEN%(C%))+",249);"
- 3300 GOSUB 39600
- 3310 NEXT
- 3320 I$=RIGHT$(STR$(23000+((C%+1)*10)),5)+" RETURN" : GOSUB 39600
- 3400 I$="24000 :REM set all data items of specified data array to NULL or ZERO"
- 3405 GOSUB 39600
- 3410 FOR C%=0 TO TOPVAR%
- 3420 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 3430 I$=RIGHT$(STR$(24000+((C%+1)*10)),5)+" "
- 3435 I$=I$+VARVAR$(C%)+"BCA%)="
- 3440 IF VARTYP%(C%)=1 OR VARTYP%(C%)=5 THEN I$=I$+QM$+QM$ ELSE I$=I$+"0"
- 3450 GOSUB 39600
- 3460 NEXT
- 3470 I$=RIGHT$(STR$(24000+((C%+1)*10)),5)+" RETURN" : GOSUB 39600
- 3480 IL!=30030 : GOSUB 19000 :REM cycle
- 3490 I$="30030 ENSTAT$="+VARSTAT$(0)+" : ENDFLT$=DATKEY$(0)" : GOSUB 39600
- 3500 IL!=30090 : GOSUB 19000 :REM cycle
- 3510 WX%=11: WY%=34 : WMSG$="Done " : GOSUB 39500
- 3520 WX%=12: WY%=34 : WMSG$="Working" : GOSUB 39500
- 3530 PRINT #3, "====== Data Collection ============== Begin...";TIME$
- 3540 INC%=0 : GOSUB 16000 :REM assemble ON GOTO
- 3550 I$=FNL$(0,90)+" "+I$ : GOSUB 39600
- 4000 REM data collection area
- 4010 YESDATE%=0
- 4050 FOR C%=1 TO TOPVAR%
- 4055 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 4060 I$=FNL$(C%,0)
- 4065 I$=I$+" :REM collect "+VARDIC$(C%)
- 4070 GOSUB 39600
- 4080 I$=FNL$(C%,10)+" ENSTAT$="+VARSTAT$(C%)+" : ENDFLT$="
- 4090 IF VARTYP%(C%)=1 OR VARTYP%(C%)=5 THEN I$=I$+VARVAR$(C%)+"0)" ELSE I$=I$+"STR$("+VARVAR$(C%)+"0))"
- 4100 GOSUB 39600
- 4110 I$=FNL$(C%,20)+" GOSUB 40000 : "
- 4120 IF VARTYP%(C%)<>5 THEN GOTO 4290 :REM not date
- 4125 YESDATE%=1 :REM confirm julian
- 4130 I$=I$+"BCJDATE$=ENRETURN$ : GOSUB 60500 : GOSUB 60000 : GOSUB 60100"
- 4140 GOSUB 39600
- 4150 I$=FNL$(C%,30)+" "+VARVAR$(C%)
- 4160 I$=I$+"0)=RIGHT$(STR$(100+BCJLNM%),2)+RIGHT$(STR$(100+BCJLND%),2)+RIGHT$(STR$(1900+BCJLNY%),2)"
- 4170 GOSUB 39600
- 4180 I$=FNL$(C%,40)+" LOCATE"+STR$(VARROW%(C%))+","+STR$(VARCOL%(C%))+",0 : PRINT "+VARVAR$(C%)+"0)"
- 4190 GOSUB 39600
- 4200 GOTO 4340
- 4290 REM process other than a date
- 4300 I$=I$+VARVAR$(C%)+"0)="
- 4310 IF VARTYP%(C%)=1 THEN I$=I$+"ENRETURN$" ELSE I$=I$+"VAL(ENRETURN$)"
- 4320 GOSUB 39600
- 4340 REM prepare ON GOTO line
- 4350 INC%=C% : GOSUB 16000 : I$=FNL$(C%,50)+" "+I$
- 4360 GOSUB 39600
- 4370 NEXT
- 4380 I$=FNL$(TOPVAR%+1,0)+" GOTO 30000" : GOSUB 39600
- 4390 WX%=12: WY%=34 : WMSG$="Done " : GOSUB 39500
- 4400 WX%=13: WY%=34 : WMSG$="Working" : GOSUB 39500
- 4410 PRINT #3, "====== Input Routine ================ Begin...";TIME$
- 4420 IL!=42000!
- 4430 GOSUB 19000 :REM cycle
- 4440 GOSUB 39600
- 4450 WX%=13: WY%=34 : WMSG$="Done " : GOSUB 39500
- 4460 WX%=14: WY%=34 : WMSG$="Working" : GOSUB 39500
- 4470 PRINT #3, "====== ISAM Routine ================= Begin...";TIME$
- 4480 IL!=53010!
- 4490 GOSUB 19000 :REM cycle
- 4510 WX%=14: WY%=34 : WMSG$="Done " : GOSUB 39500
- 4520 WX%=15: WY%=34 : WMSG$="Working" : GOSUB 39500
- 4530 PRINT #3, "====== File Fields ================== Begin...";TIME$
- 4620 I$=I$+QM$+BCFILE$+".DAT"+QM$+","+STR$(TOTBYTES%)
- 4630 GOSUB 39600
- 4650 I%=20 : I$=FNL1$(53000!,I%)+" FIELD #2"
- 4700 FOR C%=0 TO TOPVAR%
- 4705 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 4710 I$=I$+","+VARFLD$(C%)+" as BCXD"+RIGHT$(STR$(100+C%),2)+"$"
- 4720 TOTBY%=TOTBY%+VAL(VARFLD$(C%))
- 4730 IF LEN(I$)>200 THEN GOSUB 4760
- 4740 NEXT
- 4750 GOTO 4810
- 4760 REM save and prepare new
- 4762 GOSUB 39600
- 4764 TTOTBY%=TOTBY% : TTT%=0
- 4768 I%=I%+10 : I$=FNL1$(53000!,I%)+" FIELD #2"
- 4770 REM add junk fielding
- 4774 TTT%=TTT%+1
- 4776 IF TTOTBY%<=200 THEN GOTO 4790
- 4778 I$=I$+",200 AS BCCC"+RIGHT$(STR$(100+TTT%),2)+"$"
- 4780 TTOTBY%=TTOTBY%-200
- 4785 GOTO 4770
- 4790 I$=I$+","+STR$(TTOTBY%)+" AS BCCC"+RIGHT$(STR$(100+TTT%),2)+"$"
- 4800 RETURN
- 4810 REM write final lines
- 4820 GOSUB 39600
- 4830 I%=I%+10 : I$=FNL1$(53000!,I%)+" RETURN"
- 4840 GOSUB 39600
- 4850 WX%=15: WY%=34 : WMSG$="Done " : GOSUB 39500
- 4860 WX%=16: WY%=34 : WMSG$="Working" : GOSUB 39500
- 4870 PRINT #3, "====== Record Access ================ Begin...";TIME$
- 4880 I$="54000 :REM get a data file record"
- 4885 GOSUB 39600
- 4890 I$="54010 GET #2, DATREC%(BCA%)" : GOSUB 39600
- 4895 I%=10
- 4900 FOR C%=0 TO TOPVAR%
- 4905 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 4910 I%=I%+10
- 4920 ON VARTYP%(C%) GOTO 4930,4940,4950,4960,4970
- 4930 I$=FNL1$(54000!,I%)+" "+VARVAR$(C%)+"BCA%)=BCXD"+RIGHT$(STR$(100+C%),2)+"$" : GOTO 5010
- 4940 I$=FNL1$(54000!,I%)+" "+VARVAR$(C%)+"BCA%)=CVI(BCXD"+RIGHT$(STR$(100+C%),2)+"$)" : GOTO 5010
- 4950 I$=FNL1$(54000!,I%)+" "+VARVAR$(C%)+"BCA%)=CVS(BCXD"+RIGHT$(STR$(100+C%),2)+"$)" : GOTO 5010
- 4960 I$=FNL1$(54000!,I%)+" "+VARVAR$(C%)+"BCA%)=CVD(BCXD"+RIGHT$(STR$(100+C%),2)+"$)" : GOTO 5010
- 4970 I$=FNL1$(54000!,I%)+" BCJLNK%=CVI(BCXD"+RIGHT$(STR$(100+C%),2)+"$) : GOSUB 60100"
- 4980 GOSUB 39600
- 4990 I%=I%+10
- 5000 I$=FNL1$(54000!,I%)+" "+VARVAR$(C%)+"BCA%)=RIGHT$(STR$(100+BCJLNM%),2)+RIGHT$(STR$(100+BCJLND%),2)+RIGHT$(STR$(1900+BCJLNY%),2)"
- 5010 REM recombine
- 5020 GOSUB 39600
- 5030 NEXT
- 5040 I%=I%+10 : I$=FNL1$(54000!,I%)+" RETURN" : GOSUB 39600
- 5050 I$="55000 :REM put a data file record"
- 5055 GOSUB 39600
- 5060 I%=0
- 5070 FOR C%=0 TO TOPVAR%
- 5075 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 5080 I%=I%+10
- 5090 ON VARTYP%(C%) GOTO 5100,5110,5120,5130,5140
- 5100 I$=FNL1$(55000!,I%)+" LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$="+VARVAR$(C%)+"BCA%)": GOTO 5170
- 5110 I$=FNL1$(55000!,I%)+" LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$=MKI$("+VARVAR$(C%)+"BCA%))" : GOTO 5170
- 5120 I$=FNL1$(55000!,I%)+" LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$=MKS$("+VARVAR$(C%)+"BCA%))" : GOTO 5170
- 5130 I$=FNL1$(55000!,I%)+" LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$=MKD$("+VARVAR$(C%)+"BCA%))" : GOTO 5170
- 5140 I$=FNL1$(55000!,I%)+" BCJDATE$="+VARVAR$(C%)+"BCA%) : GOSUB 60500 : GOSUB 60000"
- 5150 GOSUB 39600 : I%=I%+10
- 5160 I$=FNL1$(55000!,I%)+" LSET BCXD"+RIGHT$(STR$(100+C%),2)+"$=MKI$(BCJLNK%)"
- 5170 REM recombine
- 5180 GOSUB 39600
- 5190 NEXT
- 5200 I%=I%+10 : I$=FNL1$(55000!,I%)+" PUT #2, DATREC%(BCA%)" : GOSUB 39600
- 5210 I%=I%+10 : I$=FNL1$(55000!,I%)+" RETURN" : GOSUB 39600
- 5220 WX%=16: WY%=34 : WMSG$="Done " : GOSUB 39500
- 5230 WX%=17: WY%=34 : WMSG$="Working" : GOSUB 39500
- 5240 PRINT #3, "====== Exit ========================= Begin...";TIME$
- 5290 IL!=65100! : GOSUB 19000
- 5295 WX%=17: WY%=34 : WMSG$="Done " : GOSUB 39500
- 5296 PRINT #3, "====== Finished ===================== END ....";TIME$
- 5300 REM complete
- 5310 FOR C%=7 TO 20
- 5320 LOCATE C%,44,0 : PRINT SPACE$(30);
- 5330 NEXT
- 5340 FOR CDAMN%=1 TO 200 : SOUND 1150,1 : SOUND 1150,0 : NEXT
- 5350 IF CLR%=1 THEN COLOR CLR1%
- 5360 LOCATE 8,44,0 : PRINT " ───────────────────────── ";
- 5370 LOCATE 15,44,0 : PRINT " ───────────────────────── ";
- 5380 LOCATE 17,44,0 : PRINT " ───────────────────────── ";
- 5390 LOCATE 19,44,0 : PRINT " ───────────────────────── ";
- 5400 IF CLR%=1 THEN COLOR CLR2%
- 5410 LOCATE 7,44,0 : PRINT " Program Generation Complete! ";
- 5420 LOCATE 9,44,0 : PRINT " BASic Program: ";
- 5430 LOCATE 10,44,0 : PRINT " KEY File: ";
- 5440 LOCATE 11,44,0 : PRINT " DATa File: ";
- 5450 LOCATE 12,44,0 : PRINT " DICtionary File: ";
- 5460 LOCATE 13,44,0 : PRINT " PICture File: ";
- 5470 LOCATE 14,44,0 : PRINT " ERRor File: ";
- 5480 LOCATE 16,44,0 : PRINT " For BASIC intpter use ";
- 5490 LOCATE 18,44,0 : PRINT " See for more info ";
- 5500 LOCATE 20,44,0 : PRINT " Press or : ";
- 5510 IF CLR%=1 THEN COLOR CLR6%
- 5520 LOCATE 9,62,0 : PRINT BCFILE$;".BAS";
- 5530 LOCATE 10,62,0 : PRINT BCFILE$;".KEY";
- 5540 LOCATE 11,62,0 : PRINT BCFILE$;".DAT";
- 5550 LOCATE 12,62,0 : PRINT BCFILE$;".DIC";
- 5560 LOCATE 13,62,0 : PRINT BCFILE$;".PIC";
- 5570 LOCATE 14,62,0 : PRINT BCFILE$;".ERR";
- 5580 LOCATE 16,67,0 : PRINT "/S:";RIGHT$(STR$(TOTBYTES%),LEN(STR$(TOTBYTES%))-1);
- 5590 IF CLR%=1 THEN COLOR CLR4%
- 5600 LOCATE 18,49,0 : PRINT "<F1>";
- 5610 LOCATE 20,51,0 : PRINT "<F1>";
- 5620 LOCATE 20,63,0 : PRINT "<ESC>;
- 5630 IF CLR%=1 THEN COLOR CLR3%
- 5640 LOCATE 18,53,0 : PRINT "Help";
- 5650 LOCATE 20,55,0 : PRINT "Help";
- 5660 LOCATE 20,68,0 : PRINT "Done";
- 5670 LOCATE 20,73,1,0,7
- 5680 K$=INKEY$ : IF K$="" THEN GOTO 5680
- 5690 IF K$=CHR$(27) THEN GOTO 65160
- 5700 IF RIGHT$(K$,1)=CHR$(59) THEN HELP%=555 : GOSUB 45100 : GOTO 5670
- 5710 SOUND 50,3 : GOTO 5680
- 11000 REM print working
- 11020 IF CLR%=1 THEN COLOR CLR0%
- 11030 LOCATE 9,30 : PRINT "┌──────────────┐";
- 11040 LOCATE 10,30 : PRINT "│ working .... │";
- 11050 LOCATE 11,30 : PRINT "└──────────────┘";
- 11060 RETURN
- 16000 REM prepare ON GOTO line
- 16010 RABS%=500 : RC%=INC%
- 16020 LABS%=500 : LC%=INC%
- 16030 UABS%=500 : UC%=INC%
- 16040 DABS%=500 : DC%=INC%
- 16050 FOR Q%=0 TO TOPVAR%
- 16060 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 16070 IF Q%=INC% OR VARSTAT$(Q%)="" THEN GOTO 16180
- 16080 RDEV%=VARROW%(INC%)-VARROW%(Q%)
- 16090 C1DEV%=VARCOL%(INC%)-VARCOL%(Q%)
- 16110 C2DEV%=VARCOL%(INC%)-(VARCOL%(Q%)+VARLEN%(Q%))
- 16120 IF ABS(C1DEV%)<ABS(C2DEV%) THEN CDEV%=C1DEV% ELSE CDEV%=C2DEV%
- 16125 CDEV%=INT((CDEV%+2)/3)
- 16130 TABS%=(ABS(RDEV%)+ABS(CDEV%))
- 16140 IF RDEV%=0 AND CDEV%<1 THEN GOSUB 16200:GOTO 16180:REM right only
- 16145 IF RDEV%=0 AND CDEV%>0 THEN GOSUB 16300:GOTO 16180:REM left only
- 16150 IF CDEV%=0 AND RDEV%<1 THEN GOSUB 16500:GOTO 16180:REM down only
- 16155 IF CDEV%=0 AND RDEV%>0 THEN GOSUB 16400:GOTO 16180:REM up only
- 16160 IF RDEV%<1 THEN GOSUB 16500 ELSE GOSUB 16400 :REM down else up
- 16170 IF CDEV%<1 THEN GOSUB 16200 ELSE GOSUB 16300 :REM right else left
- 16180 NEXT
- 16190 GOTO 16600
- 16200 REM right
- 16210 IF TABS%=>RABS% THEN GOTO 16230
- 16220 RABS%=TABS% : RC%=Q%
- 16230 RETURN
- 16300 REM left
- 16310 IF TABS%=>LABS% THEN GOTO 16330
- 16320 LABS%=TABS% : LC%=Q%
- 16330 RETURN
- 16400 REM up
- 16410 IF TABS%=>UABS% THEN GOTO 16430
- 16420 UABS%=TABS% : UC%=Q%
- 16430 RETURN
- 16500 REM down
- 16510 IF TABS%=>DABS% THEN GOTO 16530
- 16520 DABS%=TABS% : DC%=Q%
- 16530 RETURN
- 16600 REM assemble on goto line
- 16610 I$="ON ENWAY% GOTO "
- 16620 I$=I$+FNL$(UC%,0)+","+FNL$(DC%,0)+","+FNL$(LC%,0)+","+FNL$(RC%,0)
- 16630 I$=I$+",30000,"+FNL$(TOPVAR%,0)+",29000"
- 16640 RETURN
- 19000 REM cycle till line discovered
- 19010 LINE INPUT #4,I$
- 19020 WHILE VAL(I$)<>IL!
- 19030 GOSUB 39600
- 19040 LINE INPUT #4, I$
- 19050 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 19060 WEND
- 19070 RETURN
- 20000 REM display main
- 20010 CLS : IF CLR%=1 THEN COLOR CLR1%,0
- 20020 PRINT "╔═════════════════════════════════════════════════════════════════════════════╗"
- 20030 PRINT "║ ║"
- 20040 PRINT "╚═════╤══════════════════════════════════════════════════════════════════╤════╝"
- 20050 PRINT " │ │"
- 20060 PRINT " │ │"
- 20070 PRINT " ├───────────────────────────────────┬──────────────────────────────┤"
- 20080 PRINT " │ │ │"
- 20090 PRINT " │ ────────────────── ──────── │ ──────────────── │"
- 20100 PRINT " │ │ │"
- 20110 PRINT " │ │ │"
- 20120 PRINT " │ │ │"
- 20130 PRINT " │ │ │"
- 20140 PRINT " │ │ │"
- 20150 PRINT " │ │ │"
- 20160 PRINT " │ │ │"
- 20170 PRINT " │ │ │"
- 20180 PRINT " │ │ │"
- 20190 PRINT " ├───────────────────────────────────┤ │"
- 20200 PRINT " │ │ │"
- 20210 PRINT " │ │ │";
- 20220 LOCATE 21,1 : PRINT "┌─────┴───────────────────────────────────┼──────────────────────────────┴────┐";
- 20222 LOCATE 22,1 : PRINT "│ │ │";
- 20224 LOCATE 23,1 : PRINT "└─────────────────────────────────────────┴───────────────────────────────────┘";
- 20230 LOCATE 2,4 : IF CLR%=1 THEN COLOR CLR5%
- 20240 PRINT "BasiCoder-SF(tm) Copyright Frederick G. Volking 1985-1986 Ver: 2.5.4";
- 20250 IF CLR%=1 THEN COLOR CLR2%
- 20260 LOCATE 4,36 : PRINT "Program to generate:";
- 20270 LOCATE 5,13 : PRINT "Type the word `";
- 20271 IF CLR%=1 THEN COLOR CLR3%
- 20272 PRINT "BasiCoder";
- 20273 IF CLR%=1 THEN COLOR CLR2%
- 20274 PRINT "' exactly to begin:";
- 20280 LOCATE 7, 9 : PRINT "Programming Operation Status";
- 20290 LOCATE 7,45 : PRINT "Errors= File:";
- 20292 IF CLR%=1 THEN COLOR CLR3%
- 20294 PRINT BCFILE$;".ERR";
- 20296 IF CLR%=1 THEN COLOR CLR2%
- 20300 LOCATE 9, 9 : PRINT "Data Verification........";
- 20310 LOCATE 10, 9 : PRINT " Record Handling";
- 20320 LOCATE 11, 9 : PRINT " Display of Records";
- 20330 LOCATE 12, 9 : PRINT " Data Collection";
- 20340 LOCATE 13, 9 : PRINT " Input Routine";
- 20350 LOCATE 14, 9 : PRINT " ISAM routine";
- 20360 LOCATE 15, 9 : PRINT " File FIELDs";
- 20370 LOCATE 16, 9 : PRINT " Record Access";
- 20380 LOCATE 17, 9 : PRINT " Exit";
- 20390 LOCATE 19, 9 : PRINT "Program Size (bytes) :";
- 20400 LOCATE 20,18 : PRINT "Elapsed Time:";
- 20410 IF CLR%=1 THEN COLOR CLR4%
- 20420 LOCATE 22,3 : PRINT "<ESC>";
- 20430 IF CLR%=1 THEN COLOR CLR3%
- 20440 PRINT " anytime aborts program generation";
- 20445 IF CLR%=1 THEN COLOR CLR7%
- 20450 LOCATE 22,45 : PRINT "Include REM's in Source (Y/N):";
- 20460 IF CLR%=1 THEN COLOR CLR0%
- 20470 PRINT " Yes";
- 20480 GOSUB 21000
- 20500 RETURN
- 21000 REM display command
- 21010 LOCATE 25,1 : PRINT SPACE$(79); : LOCATE 25,1
- 21020 IF CLR%=1 THEN COLOR CLR4%
- 21030 PRINT "<F1>";
- 21040 IF CLR%=1 THEN COLOR CLR3%
- 21050 PRINT "Help";
- 21060 RETURN
- 22000 REM no screen - use defaults
- 22010 MSG$=" No Screen Set - Using Default" : PRINT #3, MSG$ : GOSUB 39000
- 22020 FOR T%=1 TO 23
- 22030 SCR$(T%)=SPACE$(80)
- 22035 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 22040 NEXT
- 22050 MAXDICLEN%=0
- 22060 FOR T%=0 TO TOPVAR%
- 22070 IF LEN(VARDIC$(T%))>MAXDICLEN% THEN MAXDICLEN%=LEN(VARDIC$(T%))
- 22075 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 22080 NEXT
- 22090 FOR T%=0 TO TOPVAR%
- 22095 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 22097 IF VARROW%(T%)>0 AND VARCOL%(T%)>0 THEN GOTO 22210 :REM pre-placed
- 22100 X%=T%+1
- 22110 IF X%<24 THEN GOTO 22170
- 22120 X%=X%-23
- 22130 VARROW%(T%)=X%
- 22140 VARCOL%(T%)=41+MAXDICLEN%
- 22150 MID$(SCR$(X%),41,LEN(VARDIC$(T%)))=VARDIC$(T%)
- 22160 GOTO 22210
- 22170 REM default right
- 22180 VARROW%(T%)=X%
- 22190 VARCOL%(T%)=(MAXDICLEN%+1)
- 22200 MID$(SCR$(X%),1,LEN(VARDIC$(T%)))=VARDIC$(T%)
- 22210 NEXT
- 22220 RETURN
- 23000 REM assign variable
- 23005 VARVAR$(0)="DATKEY" : VARTYP%(0)=1 : VARMSK%(0)=1
- 23006 TOTBYTES%=0
- 23010 FOR C%=0 TO TOPVAR%
- 23015 GOSUB 39625
- 23020 IF VARVAR$(C%)<" " THEN VARVAR$(C%)="VAR"+RIGHT$(STR$(100+C%),2)
- 23030 ON VARTYP%(C%) GOTO 23040,23050,23060,23070,23080
- 23040 VARVAR$(C%)=VARVAR$(C%)+"$(" : TOTBYTES%=TOTBYTES%+VARLEN%(C%)
- 23045 VARFLD$(C%)=RIGHT$(STR$(VARLEN%(C%)),LEN(STR$(VARLEN%(C%)))-1): GOTO 23090
- 23050 VARVAR$(C%)=VARVAR$(C%)+"%(" : TOTBYTES%=TOTBYTES%+2
- 23055 VARFLD$(C%)="2" : GOTO 23090
- 23060 VARVAR$(C%)=VARVAR$(C%)+"!(" : TOTBYTES%=TOTBYTES%+4
- 23065 VARFLD$(C%)="4" : GOTO 23090
- 23070 VARVAR$(C%)=VARVAR$(C%)+"#(" : TOTBYTES%=TOTBYTES%+8
- 23075 VARFLD$(C%)="8" : GOTO 23090
- 23080 VARVAR$(C%)=VARVAR$(C%)+"$(" : TOTBYTES%=TOTBYTES%+2
- 23085 VARFLD$(C%)="2" : GOTO 23090
- 23090 REM assign stat strings
- 23100 IF VARROW%(C%)<1 OR VARCOL%(C%)<1 THEN GOTO 23170
- 23110 VARSTAT$(C%)=QM$+RIGHT$(STR$(100+VARROW%(C%)),2)
- 23120 VARSTAT$(C%)=VARSTAT$(C%)+RIGHT$(STR$(100+VARCOL%(C%)),2)
- 23130 VARSTAT$(C%)=VARSTAT$(C%)+RIGHT$(STR$(100+VARLEN%(C%)),2)
- 23140 VARSTAT$(C%)=VARSTAT$(C%)+RIGHT$(STR$(VARMSK%(C%)),1)
- 23150 IF VARTYP%(C%)=1 OR VARTYP%(C%)=5 OR C%=0 THEN T$="0" ELSE T$="1"
- 23160 VARSTAT$(C%)=VARSTAT$(C%)+T$+QM$
- 23170 REM combine
- 23180 NEXT
- 23190 RETURN
- 30000 REM for REM's or no
- 30010 IF CLR%=1 THEN COLOR CLR0%
- 30020 LOCATE 22,76,1,0,7
- 30030 K$=INKEY$ : IF K$="" THEN GOTO 30020
- 30040 IF K$=CHR$(13) OR RIGHT$(K$,1)="H" THEN RETURN
- 30045 IF K$=CHR$(27) THEN GOSUB 65100 : GOTO 30000
- 30050 IF RIGHT$(K$,1)=CHR$(59) THEN HELP%=542 : GOSUB 45100 : GOTO 30000
- 30060 IF K$="Y" OR K$="y" THEN PRINT "Yes"; : PACK%=0 : GOTO 30000
- 30070 IF K$="N" OR K$="n" THEN PRINT "No "; : PACK%=1 : GOTO 30000
- 30080 SOUND 50,3 : GOTO 30000
- 32000 REM pack
- 32010 R%=INSTR(I$,":REM")
- 32020 IF R%<1 THEN GOTO 32200
- 32030 I$=LEFT$(I$,R%-1)
- 32040 R%=R%-1
- 32050 WHILE MID$(I$,R%,1)=" "
- 32060 R%=R%-1
- 32070 WEND
- 32080 I$=LEFT$(I$,R%)
- 32090 R1$=STR$(VAL(I$))
- 32100 R1%=LEN(R1$)-1
- 32110 IF R1%=R% THEN I$=I$+" "+SQM$
- 32200 REM remove spaces
- 32210 R1$=STR$(VAL(I$))
- 32220 R2%=LEN(R1$)
- 32230 IL$=RIGHT$(R1$,R2%-1)
- 32240 R%=0 : R1%=R2%
- 32250 WHILE MID$(I$,R1%,1)=" "
- 32260 R%=R%+1 : R1%=R1%+1
- 32270 WEND
- 32280 IR$=RIGHT$(I$,LEN(I$)-((R2%+R%)-1))
- 32290 I$=IL$+" "+IR$
- 32300 REM remove extra spaces
- 32310 R%=INSTR(I$," : ")
- 32320 IF R%<1 THEN RETURN
- 32330 I$=LEFT$(I$,R%-1)+":"+RIGHT$(I$,LEN(I$)-(R%+2))
- 32340 GOTO 32300
- 39000 REM display message
- 39005 IF CLR%=1 THEN COLOR CLR3%
- 39010 MSG%=MSG%+1
- 39020 IF MSG%>12 THEN MSG%=1
- 39030 LOCATE 8+MSG%,44 : PRINT SPACE$(30);
- 39040 LOCATE 8+MSG%,44 : PRINT MSG$;
- 39050 IF CERR%>0 THEN LOCATE 7,52 : PRINT USING "###";CERR%;
- 39090 IF CLR%=1 THEN COLOR CLR0%
- 39500 REM display status
- 39505 IF WX%<1 OR WY%<1 THEN GOTO 39540
- 39510 LOCATE WX%,WY% : IF CLR%>0 THEN COLOR CLR7%
- 39520 PRINT WMSG$; : LOCATE WX%,WY%,1,0,7
- 39530 IF CLR%>0 THEN COLOR CLR0%
- 39540 FOR CDAMN%=1 TO 5 : SOUND 5000,1 : SOUND 1150,0 : NEXT
- 39550 RETURN
- 39600 REM write file update
- 39605 IF PACK%=1 THEN GOSUB 32000
- 39610 PSIZE!=PSIZE!+LEN(I$)
- 39620 PRINT #5, I$
- 39625 REM branch in
- 39630 IF CLR%=1 THEN COLOR CLR5%
- 39640 LOCATE 19,32 : PRINT USING "##,###";PSIZE!;
- 39645 MARKTIME1#=(VAL(LEFT$(TIME$,2))*3600)+((VAL(MID$(TIME$,4,2))*60)+VAL(MID$(TIME$,7,2)))-MARKTIME#
- 39650 MARKMIN%=INT(MARKTIME1#/60)
- 39655 MARKSEC%=INT(MARKTIME1#-(MARKMIN%*60))
- 39660 MARK$=RIGHT$(STR$(100+MARKMIN%),2)+":"+RIGHT$(STR$(100+MARKSEC%),2)
- 39690 LOCATE 20,33 : PRINT MARK$;
- 39700 IF CLR%=1 THEN COLOR CLR0%
- 39710 RETURN
- 41000 REM open error file
- 41010 OPEN "o", #3, BCFILE$+".ERR"
- 41013 PRINT #3, "BasiCoder Program Generation"
- 41020 PRINT #3, DATE$;" / ";TIME$
- 41030 PRINT #3, "Generation of File : ";BCFILE$;".BAS"
- 41060 RETURN
- 41100 REM open template file
- 41110 OPEN "r", #4, "SF-DRAFT.DAT",1
- 41120 L!=LOF(4)
- 41130 CLOSE #4
- 41140 IF L!<29000 THEN GOTO 64000
- 41150 OPEN "i", #4, "SF-DRAFT.DAT"
- 41160 RETURN
- 41200 REM open output
- 41210 OPEN "o", #5, BCFILE$+".BAS"
- 41220 RETURN
- 42200 REM get system info
- 42202 OPEN "i", #2, "SF-CARRY.DAT"
- 42204 INPUT #2, BCFILE$,K$
- 42206 INPUT #2, CLR% ,K$
- 42208 INPUT #2, CLR0% ,K$
- 42210 INPUT #2, CLR1% ,K$
- 42212 INPUT #2, CLR2% ,K$
- 42214 INPUT #2, CLR3% ,K$
- 42216 INPUT #2, CLR4% ,K$
- 42218 INPUT #2, CLR5% ,K$
- 42220 INPUT #2, CLR6% ,K$
- 42222 INPUT #2, CLR7% ,K$
- 42224 INPUT #2, CLR8% ,K$
- 42226 INPUT #2, CLR9% ,K$
- 42228 CLOSE #2
- 42240 RETURN
- 42250 REM test file exist
- 42260 IF TCFILE$<=" " THEN GOTO 42310
- 42270 OPEN "r", #2, TCFILE$+".PIC",1
- 42280 L%=LOF(2)
- 42290 CLOSE #2
- 42300 IF L%>0 THEN RETURN
- 42305 KILL TCFILE$+".PIC"
- 42310 TCFILE$=""
- 42320 RETURN
- 42330 REM retrieve data
- 42340 OPEN "i", #2, BCFILE$+".DIC"
- 42350 INPUT #2, BCFILE$
- 42360 FOR T%=0 TO MAXVARS%
- 42365 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 42370 INPUT #2, VARDIC$(T%),VARTYP%(T%),VARLEN%(T%),VARMSK%(T%),VARVAR$(T%),VARROW%(T%),VARCOL%(T%)
- 42380 NEXT
- 42390 INPUT #2, CV%,VO%,TOPVAR%
- 42400 CLOSE #2
- 42410 RETURN
- 42420 REM put system info
- 42430 OPEN "o", #2, "SF-CARRY.DAT"
- 42432 PRINT #2, BCFILE$,",Active File --------------------12"
- 42434 PRINT #2, CLR% ,",Color 0-NO 1-YES ---------------11"
- 42436 PRINT #2, CLR0% ,",..... Major Text Color ---------10"
- 42438 PRINT #2, CLR1% ,",..... Border Lines Color ------- 9"
- 42440 PRINT #2, CLR2% ,",..... Data Prompts Color ------- 8"
- 42442 PRINT #2, CLR3% ,",..... Command Line Color #1 ---- 7"
- 42444 PRINT #2, CLR4% ,",..... Command Line Color #2 ---- 6"
- 42446 PRINT #2, CLR5% ,",..... Title Text Color --------- 5"
- 42448 PRINT #2, CLR6% ,",..... Default Data Color ------- 4"
- 42450 PRINT #2, CLR7% ,",..... Special Messages Color --- 3"
- 42452 PRINT #2, CLR8% ,",..... Help Window Color -------- 2"
- 42454 PRINT #2, CLR9% ,",..... Misc. Color -------------- 1"
- 42458 CLOSE #2
- 42460 RETURN
- 43000 REM get screen
- 43010 OPEN "i", #2, BCFILE$+".PIC"
- 43020 FOR T%=1 TO 23
- 43025 IF INKEY$=CHR$(27) THEN GOSUB 65100
- 43030 INPUT #2, SCR$(T%)
- 43035 SCR$(T%)=LEFT$(SCR$(T%)+SPACE$(80),80)
- 43040 NEXT
- 43050 IF EOF(2)=(-1) THEN GOTO 43070
- 43060 INPUT #2, CX%,CY%
- 43070 CLOSE #2
- 43080 RETURN
- 45000 REM open help file
- 45010 OPEN "r",#1,"SF-TUTOR.DAT",72
- 45020 FIELD #1,70 AS HLP$,2 AS HLP1$
- 45030 RETURN
- 45100 REM help
- 45105 LOCATE 1,1,1,0,0 : HELP1%=HELP%
- 45110 IF CLR%=1 THEN COLOR CLR8%
- 45120 GET #1,HELP1%
- 45130 HELP$=HLP$
- 45140 WW%=INSTR(HELP$,"@")+3
- 45150 FOR W%=1 TO WW%
- 45160 WIN%(0,1,W%)=SCREEN(1,W%)
- 45170 IF CLR%=1 THEN WIN%(1,1,W%)=((SCREEN(1,W%,1)) MOD 16)
- 45180 NEXT
- 45190 LOCATE 1,1,1,0,0 : PRINT STRING$(WW%,220);
- 45200 WX%=1
- 45210 WHILE LEFT$(HELP$,1)<>"^"
- 45220 WX%=WX%+1
- 45230 FOR W%=1 TO WW%
- 45240 WIN%(0,WX%,W%)=SCREEN(WX%,W%)
- 45250 IF CLR%=1 THEN WIN%(1,WX%,W%)=((SCREEN(WX%,W%,1)) MOD 16)
- 45260 NEXT
- 45270 LOCATE WX%,1,1,0,0
- 45280 PRINT CHR$(221)+" "+LEFT$(HELP$,WW%-4)+" "+CHR$(222);
- 45290 HELP1%=HELP1%+1
- 45300 GET #1,HELP1%
- 45310 HELP$=HLP$
- 45320 WEND
- 45330 WX%=WX%+1
- 45350 FOR W%=1 TO WW%
- 45360 WIN%(0,WX%,W%)=SCREEN(WX%,W%)
- 45370 IF CLR%=1 THEN WIN%(1,WX%,W%)=((SCREEN(WX%,W%,1)) MOD 16)
- 45380 NEXT
- 45390 LOCATE WX%,1 : PRINT RIGHT$(STRING$(WW%,223)+" <ESC>"+CHR$(223),WW%);
- 45400 LOCATE WX%,WW%-6,1,0,7
- 45410 K$=INKEY$ : IF K$<>CHR$(27) THEN GOTO 45410
- 45420 FOR W1%=1 TO WW%
- 45430 FOR W%=1 TO WX%
- 45440 LOCATE W%,W1%,1,0,0
- 45450 IF CLR%=1 THEN COLOR WIN%(1,W%,W1%)
- 45460 PRINT CHR$(WIN%(0,W%,W1%));
- 45470 NEXT
- 45480 NEXT
- 45490 IF CLR%=1 THEN COLOR CLR0%
- 45500 LOCATE 1,1,1,0,7
- 45510 RETURN
- 64000 REM file missing error
- 64005 IF CLR%=1 THEN COLOR CLR5%
- 64010 LOCATE 9,44 : PRINT " FATAL ERROR .............. ";
- 64015 LOCATE 10,44 : PRINT " Data File Missing ";
- 64020 LOCATE 11,44 : PRINT " ";
- 64025 LOCATE 13,44 : PRINT " File: SF-DRAFT.DAT must be ";
- 64030 LOCATE 14,44 : PRINT " on current default drive ";
- 64035 LOCATE 15,44 : PRINT " under current default ";
- 64040 LOCATE 17,44 : PRINT " sub-directory ";
- 64050 LOCATE 19,44 : PRINT " ";
- 64055 LOCATE 20,44 : PRINT "Press <ESC>: ";
- 64056 LOCATE 20,56,1,0,7
- 64060 IF INKEY$<>CHR$(27) THEN GOTO 64060
- 64065 CLOSE : CLS : END
- 65100 REM exit?
- 65110 IF CLR%=1 THEN COLOR CLR7%
- 65120 LOCATE 25,1,1,0,7
- 65130 PRINT "Abort program generation? Y/N :";
- 65140 K$=INKEY$ : IF K$="" THEN GOTO 65140
- 65145 LOCATE 25,1 : PRINT SPACE$(45); : IF CLR%=1 THEN COLOR CLR0%
- 65150 IF K$<>"Y" AND K$<>"y" THEN GOSUB 21000 : RETURN
- 65160 REM success
- 65170 CLOSE : CLS : GOSUB 11000 : CLEAR : CHAIN "SF-START"
- 65501 K$="Copyright Frederick G. Volking 1986"
- 65502 K$="6891 gnikloV .G kcirederF thgirypoC"