Listing of file='TBO.CRF2' on disk='vmedia/toolbox.wvd.zip'
# Sector 849, program filename = 'TBO.CRF2'
0010 REM TBO.CRF2 07/18/88 T.OLSEN 3 of 4 Basic-2 Cross-reference lister
0025 COM R0$16,S3,I$(1)52,V2$1
: I$(1)=HEX(3A0D222F23D7FF9AA2D2)
: STR(I$(1),11)="FRTECPBLADSGHIJKMNOQUVWXYZ"
: STR(I$(1),37)=HEX(E1E48A8B8CE8DFEAA89786A195969B9C)
: R0$=HEX(010D0220033A04270523062F07402020)
0030 IF D1$(10)=" "THEN LOAD T#0,"TBODISKS"8000,8800BEG 90
0090 V1=E9
: V2=F9
: V3=D0
: V4=T9
: V5=X9
: V6=Q9
0100 GOTO 480
0110 REM ..refer to %CROSS for descriptive material
0450 DATA LOAD BA T#2,(A,A)A$()
0470 MAT COPY A$()TO B$()
: H$=B$(1)
: AND (H$,F0)
: RETURN
0480 SELECT PRINT 005(64)
: GOSUB '15
: P6,P5=1
: REM /LISTING+SUMMARY
: M1,M=5
: L9=56
: REM /LINES/PAGE
0490 RESTORE
: Z=1
0500 READ C$
: C$(Z)=C$
: Z=Z+1
: IF Z<125THEN 500
: $IF ON /000,1450
0510 INPUT "DATE",D$
: D6,D7,D8=0
: INPUT "1=SAVE MEANINGS THRU ALL PROGRAMS",D6
0520 C$="DEFAULT="
: PRINT "For annotation KEY--0=Summary only 1=In Listing 2=In Margin";C$;
Q1;
: INPUT Q1
0530 M2=35
: M9=77
: IF P5=0THEN 540
: J=0
: PRINT "PAPER WIDTH NARROW=0 WIDE=1 ";C$;J;
: INPUT J
: IF J=0THEN 540
: M2=70
: M9=115
0540 M3=M1+M2
: P4,J,S2=0
: PRINT "List mode KEY--0=List + XRef 1=List only 2=XRef only"
: PRINT C$;P4;
: INPUT P4
: IF P4<0 THEN 540
0544 PRINT "START STMT",C$;S2;
: INPUT S2
: IF S2=0THEN 550
: STR(D$,LEN(D$)+2)="PARTIAL LISTING**"
0545 S3=9999
: INPUT "END STMT",S3
: IF S3<S2THEN 540
0550 DEFFN'0
: GOSUB '98
: D=D9
0580 SELECT #2<D1$(D)>
0620 P7=0
0630 DEFFN'1
: IF D=0THEN 550
: ON P7GOTO 640
: E$=" "
: PRINTUSING "##",J+1;
: INPUT " Disk Program Name+commentary. S.F.'1 ON ERROR 80)",E$
: GOTO 650
0640 READ E$
: PRINT E$
0650 IF E$=" "THEN 655
: IF E$="DATA"THEN 820
: IF E$="ALL"THEN 675
: IF E$="ALL-"THEN 675
: IF E$="CLEAR"THEN 670
: IF E$<>"^"THEN 660
: J=J-1
: IF J<1THEN J=0
: GOTO 630
0655 ON P7GOTO 620
: IF J=0THEN 550
: GOTO 1410
0660 P$=E$
: IF P$="CLEAR"THEN 670
: LIMITS T#2,P$,S,Q,P,P
: IF P<>1THEN 630
0665 J=J+1
: P$(J)=P$
: BIN(STR(P$(J),9))=D
: E$(J)=STR(E$,9)
: GOTO 630
0670 IF D6=0THEN 660
: P$=" "
: PRINT "CLEAR meanings"
: GOTO 665
0675 X=0
0680 P$=" "
: LINPUT "COMMON ID",-P$
: S$=P$
: IF E$="ALL"THEN 685
: IF P$=" "THEN IF X=0THEN 630
: IF P$=" "THEN 685
: X=X+1
: X$(X)=P$
: IF X<Q9THEN 680
0685 DATA LOAD BA T#2,(0,A)A$()
: AND (STR(A$(1),1,1),7F)
: H=J+1
0690 FOR Z=VAL(STR(A$(1),1,1))TO VAL(STR(A$(1),2,1))-1
: Q=1
: IF Z>0THEN 700
: Q=2
: PRINT "SEARCHING"
: GOTO 710
0700 DATA LOAD BA T#2,(A,A)A$()
0710 PRINT "CAT.SECTOR=";A,,HEX(0C)
: FOR G=QTO 16
: L$=STR(A$(G),1,2)
: IF L$=HEX(1080)THEN 770
: IF L$=HEX(0000)THEN G=16
0720 NEXT G
: NEXT Z
0730 IF H=JTHEN 630
: Z=H
: FOR G=HTO J
: IF P$(Z)>P$(G)THEN Z=G
0740 NEXT G
: IF H=ZTHEN 760
: XOR (P$(H),P$(Z))
: XOR (P$(Z),P$(H))
: XOR (P$(H),P$(Z))
0750 XOR (E$(H),E$(Z))
: XOR (E$(Z),E$(H))
: XOR (E$(H),E$(Z))
0760 H=H+1
: GOTO 730
0770 P$=STR(A$(G),9,8)
: IF X>0THEN 775
: IF S$=" "THEN 790
: IF STR(P$,1,LEN(S$))<>STR(S$,1,LEN(S$))THEN 720
: GOTO 790
0775 REM .ALL-
: FOR S=1TO X
: S$=X$(S)
: IF STR(P$,1,LEN(S$))=STR(S$,,LEN(S$))THEN 780
: NEXT S
: GOTO 790
0780 REM .Exclude
: S=X
: NEXT S
: GOTO 720
0790 PRINT "KEY '-' TO SKIP ";P$,HEX(0C)
: KEYIN B$,800,800
0800 KEYIN B$,810,550
: GOTO 800
0810 IF B$="-"THEN 720
: J=J+1
: P$(J)=P$
: BIN(STR(P$(J),9,1))=D
: PRINT J,"DISK=";D,"PROGRAM ";P$
: E$=" "
: INPUT "+ COMMENTARY",E$
: E$(J)=E$
: IF J<E9THEN 720
: Z=999
: NEXT Z
: STOP "# files at max. - Key CONTINUE"
: GOTO 1410
0820 P7=1
: PRINT "USING DATA STMTS"
: GOTO 640
0940 DATA "LIST","CLEAR","RUN","RENUMBER","CONTINUE","SAVE"
0950 DATA "LIMITS","COPY","KEYIN","DSKIP","AND","OR","XOR"
0960 DATA "TEMP","DISK","TAPE","TRACE","LET","FIX(","DIM","ON"
0970 DATA "STOP","END","DATA","READ","INPUT","GOSUB","RETURN"
0980 DATA "GOTO","NEXT","FOR","IF","PRINT","LOAD","REM","RESTORE"
0990 DATA "PLOT","SELECT","COM","PRINTUSING","MAT","REWIND","SKIP"
1000 DATA "BACKSPACE","SCRATCH","MOVE","CONVERT","PLOT"," STEP"
1010 DATA " THEN"," TO","BEG","OPEN","CI","R","D","CO","LGT(","OFF"
1020 DATA "DBACKSPACE","VERIFY","DA","BA","DC","FN","ABS(","SQR("
1030 DATA "COS(","EXP(","INT(","LOG(","SIN(","SGN(","RND(","TAN("
1040 DATA "ARC","#PI","TAB(","DEFFN","TAN(","SIN(","COS(","HEX("
1050 DATA "STR(","ATN(","LEN(","RE","#","%","P","BT","G","VAL(","NUM("
1060 DATA "BIN(","POS(","LS=","ALL","PACK","CLOSE","INIT","HEX"
1070 DATA "UNPACK","BOOL","ADD","ROTATE","$","ERROR","ERR","DAC"
1080 DATA "DSC","SUB","LINPUT","VER(","ELSE","SPACE","ROUND","AT(","HEXOF(","M
AX(","MIN(","MOD(","DATE","TIME"
1250 DEFFN'14
: PRINT "LIST OPTIONS"
1260 PRINT "THE CROSS-REFERENCE PROGRAM INTERPRETS PAGE FORMATTING IN A"
: PRINT "BASIC PROGRAM FILE--"
: PRINT "VARIATIONS MAY BE ENTERED IN REM% STATEMENTS"
1270 PRINT "1. REM%^+COMMENT PAGE EJECT THEN PRINT"
: PRINT "2. REM%D+COMMENT SPACE THEN PRINT, WHERE D IS 1 TO 9 LINES"
: PRINT "3. REM%+ COMMENT NOTE COMMENTS ARE PRINTED IN EXPANDED TYPE"
1280 PRINT "4. (COLON) REM/ WILL BE LISTED ON LINE OF PRIOR INSTRUCTION"
1290 PRINT "5. REM%0 FOR ENTERING DATA INTO THE VARIABLE MEANINGS TABLE."
1300 PRINT " REM%0NAME MEANING,NAME2 MEANING,...ETC."
: PRINT " NAMES CAN BE OF VARIABLES, SPECIAL FUNCTIONS, OR # REFS."
1310 PRINT "6. NOTE*** COMMENTS ENTERED AFTER GOTO OR RETURN STATEMENTS"
: PRINT " DO NOT AFFECT THE EXECUTION TIME OF A PROGRAM."
: RETURN
1320 DEFFN'12
: PRINT ,"CROSSRF--CROSS-REF. WITH MEANINGS"
: PRINT "1. INPUT is program files from disk"
1330 PRINT "2. OUTPUT is 80 or 132 column printer pages"
: PRINT "3. Variable meanings may be by REM%0 stmts."
1340 PRINT " The meanings table is cleared after a SUMMARY."
: PRINT " A SUMMARY occurs only if there are variables in a program."
1350 PRINT "4. It is efficient to store the meanings as a separate file."
: PRINT " Such a file might contain a complete program write-up"
: PRINT " and a description of all variables used."
: RETURN
1360 DEFFN'10
: PRINT "'10 IS ACTIVE ONLY IN CROSSRF OVERLAY"
: RETURN
1370 DEFFN'11
: PRINT "'11 IS ACTIVE ONLY IN CROSSRF OVERLAY"
: RETURN
1380 DEFFN'15
: PRINT "CROSSRF -- S.F. Entry points"
1385 PRINT "From prompt module:"
1386 PRINT "'0 Change Disk Media"
: PRINT "'1 Pick-up prompting in program names"
1392 PRINT "'5 display VERB atoms";TAB(40);"'15 Show S.F. actions"
1394 PRINT "'12 Write-up";TAB(40);"'14 List options"
1395 PRINT "From cross-reference listing mainline:"
1396 PRINT "'10 Summary to Printer/CONTINUE";TAB(40);"'11 Summary only"
1400 PRINT
: RETURN
1402 % ## #### --- ### ########
1405 PRINT HEX(0C030E);"CROSSRF PROGRAM LISTING INDEX"
: PRINT
: PRINT HEX(0E);D$
: PRINTUSING 1402," ","DISK","No.","PROGRAM"
: FOR J=1 TO P7
: G=VAL(STR(P$(J),9))
: PRINTUSING 1402,G,D1$(G),J,STR(P$(J),1,8);
: PRINT E$(J)
: NEXT J
: RETURN
1410 P7=J
: SELECT PRINT 005(64)
1415 E=0
: REM /.Even page listings 0=Disable 1=Enable
1420 GOSUB 1405
: IF P5=0THEN 1425
: PRINT "TURN PRINTER ON"
: ON P5SELECT PRINT 215;PRINT 204;PRINT 216
: PRINT
: IF P7>3THEN GOSUB 1405
1425 IF P4=2THEN P5=-P5
: SELECT PRINT 005
1440 LOAD DC T#0,"TBO.CRF3"
1450 P5=1
: INPUT "Output to 0=CRT 1=215 2=204 3=216",P5
: GOTO 510
3000 DEFFN'5
: SELECT PRINT 005(80)
: PRINT HEX(03);"BASIC-2 Verb atoms"
: B$=HEX(80)
: FOR A=1 TO 124
: PRINT HEXOF(B$);"=";STR(C$(A),1,10);" ";
: ADD(B$,01)
: NEXT A
: RETURN