1 ' FILENAME: TXT2HLP.BAS VERSION: 1.2 AUTHOR: LEEMAC JUN 87 Lee McEwen, 2426 Stone Haven Ct, Orange Park, FL 32065 2 ' TEXT TO HELP FILE CONVERTER. This program is self-documenting, with the accompanying file, TXT2HLP.HLP. It is used to convert text files to help files. 3 ' Copyright (c) 1987. All rights reserved. Non-commercial use and distribution is authorized with following reservations: 1) The following files are distributed with the program: 4 ' a) TXT2HLP.HLP: The menu and help file for this program. b) TXT2HLP.TXT: The wordprocessor source file for the help file above. 2) The original author's name and address remain all files. 5 ' 3) There be no charge for distribution other than postage costs, or on-line charges in the case of electronic distribution. 100 GOSUB 60000 110 GOSUB 60010 120 PRINT CLS$: X=1: GET#3,X: X=VAL(SN$): Y=X+VAL(SL$): WHILE+ X"": LSET SNUM$=PNUM$(X): LSET SLEN$=PLEN$(X): LSET STOPIC$=PTOPIC$(X): PUT#1,X: X=X+1: WEND: X=X-1 1150 WHILE+ NOT(EOF(2)): X=X+1: LINE INPUT#2,A$: LSET TXT$=A$: IF LEFT$(TXT$,2)="\T" OR LEFT$(TXT$,2)="\t" THEN X=X-1: ELSE PUT#1,X: PRINT TXT$ 1160 WEND: CLOSE: IN=FRE(0): RETURN 2000 D=0: GOSUB 12000: IF IN$="Q" THEN RETURN 2010 OPEN "R",1,INFILE$,78: FIELD 1, 78 AS TXT$: GOSUB 11000: IF X=0 THEN 2030: ELSE PRINT CLS$: PRINT "Enter 'Q' to Quit.": PRINT 2020 INPUT "WHICH RECORD";IN$: GOSUB 60040: IF LEFT$(IN$,1)="Q" THEN 2030: ELSE X=VAL(IN$): GET#1,X: PRINT TXT$: GOTO 2020 2030 CLOSE: RESET: PRINT: PRINT "Press any key to continue.": A$=INPUT$(1): RETURN 3000 D=0: GOSUB 12000: IF IN$="Q" THEN RETURN 3010 OPEN "R",1,INFILE$,78: FIELD #1,78 AS TXT$: FIELD #1,5 AS SNUM$,5 AS SLEN$,48 AS STOPIC$: GOSUB 11000: IF X=0 THEN 3110: ELSE X=1 3020 PRINT CLS$: PRINT "The following is a list of topics in this file:": PRINT: GET#1,X: WHILE VAL(SLEN$)>0: PRINT RIGHT$(STRING$(3,32)+STR$(X),3);") ";STOPIC$: X=X+1: GET#1,X: WEND 3030 PRINT BELL$: PRINT "Enter number beside topic you wish to read, or 'Q' to quit. ";: INLEN=2: GOSUB 60030: IF IN$="Q" THEN 3110 3040 IF VAL(IN$)<1 OR VAL(IN$)>X-1 THEN 3030: ELSE X=VAL(IN$) 3050 GET#1,X: Y=VAL(SNUM$): Z=VAL(SLEN$) 3060 PRINT CLS$: K=Y: WHILE+ K 0: PRINT RIGHT$(STRING$(2,32)+STR$(X-1),2);") ";ST$: X=X+1: GET#3,X: WEND 4020 PRINT BELL$: PRINT "Enter number beside topic you wish help on, or 'Q' to quit. ";: INLEN=2: GOSUB 60030: IF IN$="Q" THEN 4110 4030 IF VAL(IN$)<1 OR VAL(IN$)>X-1 THEN 4020: ELSE X=VAL(IN$) 4040 GET#3,X+1: Y=VAL(SN$): Z=VAL(SL$) 4050 PRINT CLS$: K=Y: WHILE+ K"Q" THEN PRINT: PRINT: PRINT "KILL ";OUTFILE$;"?";BELL$;BELL$: PRINT "Are you sure? (Y/N) ";: INLEN=1: GOSUB 60030: IF IN$="Y" THEN KILL OUTFILE$ 8010 RETURN 9000 CLOSE: RESET: PRINT CLS$: PRINT: PRINT: PRINT "Program terminated.": END '----SUBROUTINES FOLLOW---- 10000 IF ERR=53 THEN PRINT BELL$: PRINT BELL$;"File not found": PRINT BELL$: RESUME NEXT 10010 PRINT "UNIDENTIFIED ERROR! ERROR LINE:";ERL,"ERROR NUMBER:";ERR: STOP 11000 X=1: WHILE+ X>0: GET#1,X: IF TXT$=STRING$(78,0) THEN X=X+1: ELSE X=-1 11010 IF X=10 THEN PRINT: PRINT: PRINT "File not found.": CLOSE: KILL INFILE$: X=0 11020 WEND: RETURN 12000 PRINT CLS$: FILE$=INFILE$: D$="input": IF D=1 THEN FILE$=OUTFILE$: D$="output": ELSE IF D=2 THEN FILE$=OUTFILE$: D$="KILL" 12010 IF FILE$="" THEN FILE$="A:NONAME.TXT" 12020 PRINT "Make the following selections for ";D$;" file:": PRINT: PRINT "Current drive selected: ";LEFT$(FILE$,1): PRINT "Enter new drive (A - P) or to keep current selection: "; 12030 INLEN=1: GOSUB 60030: IF (IN$<"A" OR IN$>"P") AND IN$<>"" THEN PRINT: PRINT BELL$: PRINT "Invalid drive selection!": PRINT "Limit choice between 'A' and 'P'! ";: GOTO 12030 12040 PRINT: PRINT: IF IN$="" THEN FILE1$=LEFT$(FILE$,2): ELSE FILE1$=IN$+":" 12050 X=INSTR(FILE$,"."): IF X=0 THEN FILE$=FILE$+".": GOTO 12050 12060 PRINT "Current filename selected (w/out extension): ";: PRINT MID$(FILE$,3,X-3): PRINT "Enter new filename or to keep current selection: "; 12070 INLEN=8: GOSUB 60030: PRINT: PRINT: IF IN$="" THEN FILE1$=FILE1$+MID$(FILE$,3,X-3): ELSE FILE1$=FILE1$+IN$ 12080 PRINT "Do you wish to have an extension on your ";D$;" filename? ";: INLEN=1: GOSUB 60030: IF IN$="N" THEN 12110: ELSE IF IN$<>"Y" THEN 12080 12090 PRINT: PRINT: PRINT "Current extension selected: ";MID$(FILE$,X+1,LEN(FILE$)): PRINT "Enter new extension or to keep current selection: "; 12100 INLEN=3: GOSUB 60030: IF IN$="" THEN FILE1$=FILE1$+MID$(FILE$,X,LEN(FILE$)): ELSE FILE1$=FILE1$+"."+IN$ 12110 PRINT: PRINT: PRINT "You have entered: ";FILE1$ 12120 PRINT: PRINT "Is this correct? (Y/N/Q) ";: INLEN=1: GOSUB 60030: IF IN$="Y" THEN 12130: ELSE IF IN$="N" THEN PRINT: PRINT: GOTO 12000: ELSE IF IN$<>"Q" THEN 12120: ELSE 12140 12130 IF D THEN OUTFILE$=FILE1$: ELSE INFILE$=FILE1$ 12140 RETURN 60000 ON ERROR GOTO 10000: DIM PNUM$(100),PLEN$(100),PTOPIC$(100): HOME$=CHR$(30): CLS$=CHR$(26)+"TEXT TO HELP"+SPACE$(44)+"LEEMAC JUN 87": CLS$=CLS$+CHR$(10)+CHR$(13)+"FILE CONVERTER v1.2"+CHR$(10)+CHR$(13): BELL$=CHR$(7) 60001 CDOWN$=STRING$(24,10): COVER$=SPACE$(80): CAPS=1: RETURN 60010 CLOSE 3: OPEN "R",3,"TXT2HLP.HLP",78: FIELD #3, 78 AS TX$: FIELD #3, 5 AS SN$, 5 AS SL$, 48 AS ST$ 60011 X=1: WHILE+ X>0: GET#3,X: IF TX$=STRING$(78,0) THEN X=X+1: ELSE X=-1 60012 IF X=10 THEN PRINT BELL$: PRINT "Help file not available!": PRINT CHR$(34);"TXT2HLP.HLP";CHR$(34);: PRINT " required to run this program.": PRINT BELL$: END 60013 WEND: RETURN 60030 IN$="": PRINT BELL$;: FOR J=1 TO INLEN 60031 A$=INKEY$: IF A$="" THEN 60031 60032 IF A$=CHR$(8) THEN J=J-1: IF LEN(IN$)>1 THEN IN$=LEFT$(IN$,LEN(IN$)-1): PRINT A$;" ";A$;: GOTO 60031: ELSE IN$="": PRINT A$;" ";A$;: GOTO 60031 60033 IF A$=CHR$(13) THEN J=INLEN: GOTO 60035 60034 IN$=IN$+A$: PRINT A$; 60035 NEXT J: IF CAPS THEN GOSUB 60040 60036 CAPS=1: RETURN 60040 FOR J=1 TO LEN(IN$): IF MID$(IN$,J,1)>CHR$(64) THEN MID$(IN$,J,1)=CHR$(ASC(MID$(IN$,J,1)) AND 95) 60041 NEXT J: RETURN 61000 ' Things to add: 61001 ' 1) Ability to see remaining space on disk. 61002 ' 2) Ability to have imbedded prompt lines in ovl/help file, which would give the prompt, and the screen positioning for the prompt for user input. 61003 ' 3) A full compliment of error codes and error trapping.