10 ! PROGRAM TO EXTRACT TABLE OF CONTENTS FROM BASIC DOCUMENTATION 20 DIM A$[79]V,PG$[4]V,DD$[60],OU$[80]V,B$[11]V 30 DD$=". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " 32 NF=0 40 B=0 : CALL "SPAWNB"("RNO BASIC.TMP=BASIC.1ST",B) 50 OPEN #3, "BASIC.TMP/RO" 60 IF END #3 THEN 200 65 ! WRITE INTRO STUFF 70 OPEN #4, "BASIC.TOC/WR" 71 PRINT #4, ".PAGE" 72 PRINT #4, ".CENTER" 73 PRINT #4, "^^TABLE OF CONTENTS" 74 PRINT #4, ".FG 1;.NOFILL" 80 INPUT LINE #3, A$ 85 ! CHECK FOR SPECIAL WORDS 90 IF POS(A$,"PAGE ")>65 THEN GOSUB 1000 100 IF POS(A$,"CHAPTER")>1 THEN GOSUB 2000 110 IF POS(A$,"APPENDIX")>1 THEN GOSUB 3000 120 IF POS(A$,".") = 12 THEN GOSUB 4000 130 GOTO 80 200 PRINT #4, "\\" : PRINT #4, ".FILL" 205 CLOSE 210 EXIT 1000 ! GET NEW PAGE NUMBER 1001 PG$=SBS$(A$,POS(A$,"PAGE ")+5) 1010 RETURN 2000 ! GET NEW CHAPTER 2001 A$=SBS$(A$,POS(A$,"CH"),9) 2005 PG$=SBS$(A$,9,1)+"-1" 2010 B$=A$+" " 2015 INPUT LINE #3, A$ : INPUT LINE #3, A$ 2016 IF POS(A$,CHR$(13))>1 THEN LET A$=SBS$(A$,1,LEN(A$)-1) 2017 IF POS(A$,CHR$(13))=1 THEN LET A$=SBS$(A$,2) 2018 A$=SBS$(A$,2,LEN(A$)-1) 2019 IF POS(A$," ")=1 THEN 2018 2020 GOSUB 5000 2021 PRINT #4, " " 2022 PRINT #4, OU$;PG$ 2025 PRINT OU$;PG$ 2030 RETURN 3000 ! GET NEW APPENDIX 3001 A$=SBS$(A$,POS(A$,"AP"),10) 3005 PG$=SBS$(A$,10,1)+"-1" 3010 B$=A$+" " 3015 INPUT LINE #3, A$ : INPUT LINE #3, A$ 3016 IF POS(A$,CHR$(13))>1 THEN LET A$=SBS$(A$,1,LEN(A$)-1) 3017 IF POS(A$,CHR$(13))=1 THEN LET A$=SBS$(A$,2) 3018 A$=SBS$(A$,2,LEN(A$)-1) 3019 IF POS(A$," ")=1 THEN 3018 3020 GOSUB 5000 3021 PRINT #4, " " 3022 PRINT #4, OU$;PG$ 3025 PRINT OU$;PG$ 3026 NF=1 3030 RETURN 4000 ! GET HEADLEVEL NAME 4001 IF POS(A$,CHR$(13))>1 THEN LET A$=SBS$(A$,1,LEN(A$)-1) 4002 IF NF>0 THEN RETURN 4005 A$=SBS$(A$,2,LEN(A$)-1) 4010 IF POS(A$," ")=1 THEN 4005 4015 IF ASC(SBS$(A$,1,1)) > 55 THEN RETURN 4020 B$=" " 4025 GOSUB 5000 4030 PRINT #4, OU$;PG$ 4035 PRINT OU$;PG$ 4040 RETURN 5000 ! FIX <,#, AND & 5000 NC=0 5002 CP=1 5005 JJ=POS(A$,"<",CP) : IF JJ<1 THEN 5015 5007 CP=JJ+2 : NC=NC+1 5010 A$=SEG$(A$,1,JJ-1)+"_"+SEG$(A$,JJ,LEN(A$)) : GOTO 5005 5015 CP=1 5016 JJ=POS(A$,"&",CP) : IF JJ<1 THEN 5025 5017 CP=JJ+2 : NC=NC+1 5020 A$=SEG$(A$,1,JJ-1)+"_"+SEG$(A$,JJ,LEN(A$)) : GOTO 5016 5025 CP=1 5026 JJ=POS(A$,"#",CP) : IF JJ<1 THEN 5035 5027 CP=JJ+2 : NC=NC+1 5030 A$=SEG$(A$,1,JJ-1)+"_"+SEG$(A$,JJ,LEN(A$)) : GOTO 5026 5035 K=LEN(A$)+LEN(B$)+NC 5037 J=K-2*INT(K/2) 5039 IF J=1 THEN LET A$=A$+" " 5040 OU$=B$+A$+DD$ 5045 OU$=SBS$(OU$,1,62+NC) 5050 RETURN