Listing of file='CROSSRF' on disk='vmedia/tbo_81.wvd.zip'
# Sector 438, program filename = 'CROSSRF'
0010 REM 03/03/81 CROSSnK + CROSSRF +CROSSRF0 T.OLSEN WANG R&D
0025 COM R0$16,S3,I$(1)52,V2$1
: I$(1)=HEX(3A0D222F23D7FF9AA2D2)
: STR(I$(1),11)="FRTECPBADGHIJKLMNOQSUVWXYZ"
: STR(I$(1),37)=HEX(E1E48A8B8CE8DFEAA89786A195969B9C)
: R0$=HEX(010D0220033A04270523062F07402020)
0090 V1=E9
: V2=F9
: V3=D9
: V4=T9
: V5=X9
: V6=Q9
0100 GOTO 480
0110 REM ..refer to %CROSS for descriptive material
0450 IF D=0THEN 460
: DATA LOAD BA T#2,(A,A)A$()
: GOTO 470
0460 DATA LOAD BTA$()
0470 MAT COPY A$()TO B$()
: H$=B$(1)
: AND (H$,F0)
: RETURN
0480 SELECT PRINT 005(64)
: PRINT HEX(03)
: GOSUB '15
: P6,P5=1
: REM /LISTING+SUMMARY
: M1,M=5
: L9=56
: REM /LINES/PAGE
: GOSUB 1220
0490 RESTORE
: Z=1
0500 READ C$
: C$(Z)=C$
: Z=Z+1
: IF Z<123THEN 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
: 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
: J,S2=0
: 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
: D=3
: PRINT "INPUT MEDIA=","0=TAPE OR --DISKS"
: PRINT "1=(F)310 2=(R)B10 3=(F)320 4=(R)B20 5=(F)330 6=(R)B30 7=350",
C$;D;
: INPUT D
: ON D+1GOTO 830,560,570,580,590,600,610,615
: GOTO 550
0560 SELECT #2310
: GOTO 620
0570 SELECT #2B10
: GOTO 620
0580 SELECT #2320
: GOTO 620
0590 SELECT #2B20
: GOTO 620
0600 SELECT #2330
: GOTO 620
0610 SELECT #2B30
: GOTO 620
0615 SELECT #2350
0620 P7=0
0630 DEFFN'1
: IF D=0THEN 550
: ON P7GOTO 640
: E$=" "
: PRINTUSING 632,J+1;
: INPUT " DISK PROGRAM NAME+COMMENTARY. S.F.'1 ON ERROR 80)",E$
: GOTO 650
0632 %##
0640 READ E$
: PRINT E$
0650 IF E$=" "THEN 770
: IF E$="DATA"THEN 820
: IF E$="ALL"THEN 680
: IF E$="CLEAR"THEN 671
: IF E$<>"^"THEN 660
: J=J-1
: IF J>0THEN 630
: J=0
: GOTO 630
0660 P$=E$
: LIMITS T#2,P$,S,Q,P
0670 J=J+1
: P$(J)=P$
: BIN(STR(P$(J),9))=D
: E$(J)=STR(E$,9)
: GOTO 630
0671 IF D6=0THEN 660
: P$=" "
: PRINT "CLEAR MEANINGS"
: GOTO 670
0680 S$=" "
: INPUT "COMMON ID",S$
: 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 780
: IF L$<>HEX(0000)THEN 720
: G=16
0720 NEXT G
: NEXT Z
0730 IF H=JTHEN 630
: Z=H
: FOR G=HTO J
: IF P$(G)>P$(Z)THEN 740
: 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 ON P7GOTO 620
: IF J=0THEN 550
: P7=J
: GOTO 840
0780 P$=STR(A$(G),9,8)
: IF S$=" "THEN 790
: IF STR(P$,1,LEN(S$))<>STR(S$,1,LEN(S$))THEN 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$
: GOTO 720
0820 P7=1
: PRINT "USING DATA STMTS"
: GOTO 640
0830 E,P7=1
: PRINT "HOW MANY FILES","(DEFAULT)=";P7;
: INPUT P7
0840 SELECT PRINT 005(64)
0850 GOSUB '3
: IF Z9=0THEN 1410
0860 PRINT "YOU NEED DIFFERENT DIMENSIONS"
: PRINT "SELECTPRINT 215---S.F.'3 FOR LIST"
: STOP "SET NEW VALUES STATED IN STMTS 20-70"
0870 DEFFN'3
: IF V1=E9THEN 880
: Z9=1
: PRINT "SET E9=";E9,"E$(";E9;")42","P$(";E9;")9"
0880 IF V2=F9THEN 890
: Z9=1
: PRINT "SET F9=";F9,"F$(";F9+1;",1)3"
0890 IF V3=D9THEN 900
: Z9=1
: PRINT "SET D9=";D9,"D$(";D9;")20"
0900 IF V4=T9THEN 910
: Z9=1
: PRINT "SET T9=";T9,"T$(";T9;",255)4","T1$(";T9;",255)2 T2$(";T9;",255)2
"
0910 IF V5=X9THEN 920
: Z9=1
: PRINT "SET X9=";X9,"X0$(";X9+1;")21"
0920 IF V6=Q9THEN 930
: Z9=1
: PRINT "SET Q9=";Q9,"Q$(1,";Q9+1;")4","X$(";Q9+1;")21"
0930 RETURN
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("
1090 DEFFN'2
: H=0
1100 PRINT HEX(03);"FIGURE NEW DIMENSIONS"
: PRINT
: GOSUB '13
: PRINT "KEY S.F. '4 TO GET BACK TO MAIN-LINE"
1110 H=H+1
: ON H GOTO 1120,1130,1140,1150,1160,1170
1120 PRINT "UNIQUE VARIABLES=";Q9;"OR";
: INPUT Q9
: GOTO 1100
1130 PRINT "SPECIAL FUNCTIONS=";F9;"OR";
: INPUT F9
: GOTO 1100
1140 PRINT "STMT REFS =255*";T9;"OR";
: INPUT T9
: GOTO 1100
1150 PRINT "VAR.REFS>10=";X9;"OR";
: INPUT X9
: GOTO 1100
1160 PRINT "ANNOTATION=";D9;"OR";
: INPUT D9
: GOTO 1100
1170 PRINT "PROGRAM NAMES=";E9;"OR";
: INPUT E9
: H=0
: GOTO 1100
1180 DEFFN'4
: GOSUB '3
: IF Z9=1THEN 860
: GOTO 100
1190 DEFFN'13
: PRINT "TABLE CAPACITY"," YOU CHANGE","NUMBER","MEMORY"
: PRINT "UNIQUE VARIABLES Q9 Q$() X$()",Q9,Q9*25+25
: PRINT "SPECIAL FUNCTIONS F9 F$()",F9,F9*3+3
1200 PRINT "STMT REFERENCES T9 T$()",255*T9,T9*8*255,," T1$() T2$()"
: PRINT "VARIABLE REFS.>10 X9 X0$()",X9,X9*21+21
1210 PRINT "ANNOTATION"," D9 D$()",D9,D9*20
: PRINT "PROGRAM FILES"," E9 E$() P$()",E9,E9*51
: GOSUB 1220
: RETURN
1220 PRINT "DIMENSIONED THIS WAY YOU NEED A 2200 ";
: G=4886
: REM /MINIMAL TABLES
1222 REM Z=END FOLLOWING TEXT ENTRY IN CROSSRF0
1225 Z=9102
: C$="VP or MVP"
: $IF ON /000,1228
: Z=9187
: C$="T or C+OP5"
1228 PRINT C$;" PROCESSOR WITH A MEMORY OF ";
1230 Q=G+Z+(Q9*25)+(F9*3)+((T9-1)*8*255)+(X9*21)+((D9-1)*20)+((E9-1)*51)
: Z=INT(Q/1024)
: PRINT Q;"BYTES OR ";Z;"K";
: IF Q<Z*1024THEN 1240
: PRINT "+";
1240 PRINT
: RETURN
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 "CROSSRF USES A 16K MINIMUM 2200T OR 2200B/C+OP.5"
: PRINT "1. INPUT IS PROGRAM FILES FROM DISK OR CASSETTE"
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. ENTRIES"
1390 PRINT "'0 CHANGE DISK MEDIA","'1 IN DISK FILE NAMES"
: PRINT "'2 FIGURE NEW CAPACITIES","'3 DETAIL CHANGES FROM '2"
: PRINT "'10 SUMMARY TO PRINTER/CONTINUE","'11 SUMMARY ONLY"
1400 PRINT "'12 WRITE-UP",,"'13 CAPACITIES"
: PRINT "'14 LIST OPTIONS",,"'15 S.F. ACTION"
: RETURN
1402 % #### ## #########
1405 PRINT HEX(0C030E);"CROSSRF PROGRAM LISTING INDEX"
: PRINT
: PRINT HEX(0E);D$
: PRINTUSING 1402,"DISK","#";"PROGRAM"
: FOR J=1 TO P7
: PRINTUSING 1402,VAL(STR(P$(J),9)),J,STR(P$(J),1,8);
: PRINT E$(J)
: NEXT J
: RETURN
1410 E=1
: REM /EVEN PAGE FLAG SET =0 TO SUPPRESS FEATURE
1420 GOSUB 1405
: PRINT "TURN PRINTER ON"
: SELECT PRINT 215
: ON P5+1GOTO 1425,1422
: SELECT PRINT 204
1422 PRINT
: IF P7<4THEN 1425
: GOSUB 1405
1425 SELECT PRINT 005
: $IF ON /000,1440
1430 LOAD DC T#0,"CROSSRF0"
1435 REM USE CROSSRFV FOR VP LIST OF MVP PROGRAMS GLOBAL VARIABLES ETC
1440 LOAD DC T#0,"CROSSRFV"
1450 P5=1
: INPUT "Output to 0=CRT 1=215 2=204",P5
: GOTO 510
3000 DEFFN'5
: SELECT PRINT 005(80)
: PRINT HEX(03);"BASIC-2 Verb atoms"
3020 B$=HEX(80)
: FOR A=1 TO 122
: PRINT HEXOF(B$);"=";STR(C$(A),1,10);" ";
: ADD(B$,01)
: NEXT A
3030 RETURN