Listing of file='XREF010D' on disk='vmedia/701-2048D.wvd.zip'
# Sector 414, program filename = 'XREF010D'
0010 REM XREF010D,00-00(03/30/76),12003A - COPYRIGHT WANG LABS. INC., 1976
0470 GOTO 5100
0480 DEFFNN(N)=256*VAL(W$(N))+VAL(STR(W$(N),2,1))
0490 %####
0500 %<####> --
0510 %'### -
0540 RETURN
0570 IF P9=1THEN 540
: B=0
: A$=R$
: IF R$<HEX(80)THEN 690
: IF R$>HEX(EB)THEN 820
: MAT SEARCHA$(),=R$TO W$()
: X=FNN(1)
: MAT COPY A$()<X+1,10>TO A$()<541,10>
: X=POS(A$(55)>7F)
: A$=STR(A$(55),1,(1-SGN(X))*10+X-SGN(X))
: B=1-INT(VAL(R$)/192)
0690 IF R$=HEX(0D)THEN 780
0710 IF B+C+LEN(A$)>P4THEN 860
0730 IF A$<HEX(20)THEN 760
: IF A$>HEX(7F)THEN 760
: PRINT TAB(C);A$;
0760 C=B+C+LEN(A$)
: RETURN
0780 C=P4
: H=H+1
0800 RETURN
0820 IF R$=HEX(FF)THEN 800
: A$=A1$(VAL(R$)-239)
: GOTO 710
0860 E=E+1
: PRINT " "
: C=P2+6
: IF E<P3THEN 730
: GOSUB 5660
: GOTO 730
0950 R$=HEX(00)
: T=1
: DATA LOAD BA T#2,(G,G)R$()
: FOR I=1TO 7
: MAT SEARCHR$(),=A1$(I)TO W$()
: IF W$(1)=HEX(0000)THEN 1090
: X=FNN(1)
: J=LEN(A1$(I))
: MAT COPY R$()<X+J,257-X-J>TO R$()<X+1,256-X>
: BIN(W$(1))=239+I
: MAT COPY W$()<1,1>TO R$()<X,1>
1090 NEXT I
: GOTO 1560
1130 C=P4
: H=H+1
1150 T=T-1
: GOTO 1450
1190 PRINT " "
: E=P3
: GOSUB 3780
: H$="PROGRAM LISTING"
: INIT(FF)V$()
: D,H,L,V(1),V(2),V(3)=0
: E=P3
: C=P4
: A=1
: PRINT " "
: GOTO 1450
1320 MAT SEARCHV$()<1,L+2>,>STR(N$(1),1,2)TO W$()STEP 2
: X=FNN(1)
: MAT COPY -V$()<X,L-X+1>TO -V$()<X,L-X+3>
: L=L+2
: MAT COPY N$()<1,2>TO V$()<X,2>
: GOTO 1490
1420 IF R$=":"THEN 1130
: IF R$=HEX(FF)THEN 1150
1450 IF L>L4-6THEN 1190
: MAT SEARCHV$()<1,L+2>,=STR(N$(1),1,2)TO W$()STEP 2
: IF W$(1)=HEX(0000)THEN 1320
1490 MAT SEARCHV$()<1,L+2>,>STR(N$(1),1,2)TO W$()STEP 2
: X=FNN(1)
: MAT COPY -V$()<X,L-X+1>TO -V$()<X,L-X+3>
: MAT COPY L$()<1,2>TO V$()<X,2>
: L=L+2
1560 IF R$=" "THEN 1610
: D$,R0$=R$
: S0$=S$
: $TRAN(D$,T$())
: AND (D$,10)
1610 T=T+1
: MAT COPY R$()<T,1>TO W$()
: R$,S$=W$(1)
: $TRAN(S$,T$())
: AND (S$,0F)
: IF R$=HEX(00)THEN 1560
: IF R$=HEX(FF)THEN 3070
: IF R$=HEX(FD)THEN 950
: IF R$=HEX(FE)THEN 3780
: IF R$=":"THEN 2540
1710 IF S$=HEX(06)THEN 2590
: IF S$=HEX(08)THEN 2610
: GOSUB 570
: IF P9=2THEN 1560
: IF R$>HEX(80)THEN 1560
: IF D$=HEX(00)THEN 1560
: IF S$<>HEX(01)THEN 1560
: N$(1)=HEX(D000)
: A1$=HEX(BF)
: ADDC(A1$,R$)
: ROTATE(A1$,4)
: A2$=A1$
: AND (A1$,F0)
: AND (A2$,0F)
: OR (STR(N$(1),1,1),A2$)
1920 OR (STR(N$(1),2,1),A1$)
1950 T=T+1
: MAT COPY R$()<T,1>TO W$()
: R$,S$=W$(1)
: $TRAN(S$,T$())
: AND (S$,0F)
: IF R$<>HEX(22)THEN 2030
: T=T-1
: GOTO 1560
2030 IF R$=":"THEN 1130
: GOSUB 570
: IF R$=" "THEN 1950
: IF S$=HEX(01)THEN 1560
: IF S$=HEX(02)THEN 2210
: IF S$=HEX(03)THEN 2160
: IF S$<>HEX(04)THEN 1420
: OR (STR(N$(1),1,1),04)
: GOTO 1420
2160 OR (STR(N$(1),1,1),08)
: GOTO 2230
2210 BIN(A1$)=VAL(R$)-47
: OR (STR(N$(1),2,1),A1$)
2230 T=T+1
: MAT COPY R$()<T,1>TO W$()
: R$,S$=W$(1)
: $TRAN(S$,T$())
: AND (S$,0F)
: IF R$=":"THEN 1130
: GOSUB 570
: IF R$=" "THEN 2230
: IF S$=HEX(03)THEN 2390
: IF S$<>HEX(04)THEN 1420
: OR (STR(N$(1),1,1),04)
: GOTO 1420
2390 OR (STR(N$(1),1,1),08)
2400 T=T+1
: MAT COPY R$()<T,1>TO W$()
: R$,S$=W$(1)
: $TRAN(S$,T$())
: AND (S$,0F)
: IF R$=":"THEN 1130
: GOSUB 570
: IF R$=" "THEN 2400
: IF R$<>"("THEN 1420
: OR (STR(N$(1),1,1),04)
: GOTO 1420
2540 C=P4
: H=H+1
: GOTO 1710
2590 T$=HEX(3A)
: GOTO 2640
2610 IF R$=HEX(22)THEN 2630
: IF S0$=HEX(05)THEN 2830
2630 T$=R$
2640 GOSUB 570
2650 T=T+1
: MAT COPY R$()<T,1>TO W$()
: R$,S$=W$(1)
: $TRAN(S$,T$())
: AND (S$,0F)
: IF R$=HEX(0D)THEN 2770
: IF R$=T$THEN 2740
: GOSUB 570
: GOTO 2650
2740 IF T$<>HEX(3A)THEN 2770
: C=P4
: H=H+1
2770 GOSUB 570
: GOTO 1560
2830 GOSUB 570
: IF P9=2THEN 1560
: N$(1)=HEX(F000)
: IF R0$=HEX(CE)THEN 2880
: N$(1)=HEX(F100)
2880 I=0
2890 T=T+1
: MAT COPY R$()<T,1>TO W$()
: R$,S$=W$(1)
: $TRAN(S$,T$())
: AND (S$,0F)
: IF R$=" "THEN 2970
: IF S$<>HEX(02)THEN 3010
: I=I*10+VAL(R$)-48
2970 GOSUB 570
: GOTO 2890
3010 BIN(STR(N$(1),2,1))=I
: IF R$=":"THEN 1130
: T=T-1
: GOTO 1420
3070 MAT COPY R$()<T+1,2>TO W$()
: T=T+2
: UNPACK(####)W$(1)TO X
: IF P9=1THEN 3200
: IF C+4>P4THEN 3340
3140 PRINT TAB(C);
: PRINTUSING 490,X;
: C=C+5
: IF P9=2THEN 1560
3200 IF R0$<>HEX(00)THEN 3300
: R0$=HEX(FF)
: D=D+1
: L$(1)=W$(1)
: GOTO 1560
3300 BIN(N$(1))=INT(X/256)+160
: BIN(STR(N$(1),2,1))=X-INT(X/256)*256
: GOTO 1450
3340 PRINT " "
: C=P2+5*SGN(VAL(R0$))
: E=E+1
: IF E<P3THEN 3140
: GOSUB 5660
: GOTO 3140
3430 U=P2+3
: W$(1)=HEX(9999)
: MAT SEARCHV$()<I+2,L-I+4>,>W$(1)TO W$()
: X=INT(FNN(1)/2)
: PRINTUSING 500,X;
: U=U+10
3510 I=I+2
: MAT COPY V$()<I,2>TO W$()
: IF W$(1)>HEX(9999)THEN 3640
: U=U+5
: IF U+5>P4THEN 3680
3580 UNPACK(####)W$(1)TO X
: PRINT TAB(U);
: PRINTUSING 490,X;
: GOTO 3510
3640 PRINT " "
: U=P2
: RETURN
3680 PRINT " "
: E=E+1
: U=P2+18
: IF E<P3THEN 3580
: GOSUB 5660
: GOTO 3580
3780 IF P9=2THEN 540
: A=2
: H$="LINE NUMBER CROSS REFERENCE"
: E=P3
: I=1
: MAT COPY V$()<I,2>TO W$()
3880 IF W$(1)>HEX(CFFF)THEN 4010
: IF E<P3THEN 3910
: GOSUB 5660
3910 PRINT HEX(0A);TAB(P2);
: PRINTUSING 490,(VAL(W$(1))-160)*256+VAL(STR(W$(1),2,1));
: PRINT " - ";
: E=E+2
: GOSUB 3430
: V(1)=V(1)+1
: GOTO 3880
4010 H$="VARIABLE CROSS REFERENCE"
: A$=W$(1)
: AND (A$,0C)
: E=P3
4080 IF W$(1)>HEX(EFFF)THEN 4750
: IF E<P3THEN 4120
: GOSUB 5660
4120 A1$=W$(1)
: AND (A1$,0C)
: IF STR(A$,1,1)=A1$THEN 4270
: IF E<P3THEN 4170
: GOSUB 5660
4170 PRINT HEX(0A);TAB(P2);
: FOR K=P2TO P4-2STEP 2
: PRINT "* ";
: NEXT K
: PRINT
: E=E+2
: A$=A1$
4270 A1$=W$(1)
: A2$=STR(W$(1),2,1)
: AND (A1$,01)
: AND (A2$,F0)
: OR (A1$,A2$)
: ROTATE(A1$,4)
: ADDC(A1$,41)
: PRINT HEX(0A);TAB(P2);A1$;
: A1$=STR(W$(1),2,1)
: AND (A1$,0F)
: IF A1$=HEX(00)THEN 4480
: BIN(A1$)=VAL(A1$)+47
: PRINT A1$;
4480 A1$=W$(1)
: AND (A1$,0C)
: IF A1$=HEX(04)THEN 4620
: IF A1$=HEX(08)THEN 4580
: IF A1$=HEX(0C)THEN 4660
: GOTO 4670
4580 PRINT "$";
: GOTO 4670
4620 PRINT "()";
: GOTO 4670
4660 PRINT "$()";
4670 PRINT TAB(P2+5);" - ";
: E=E+2
: GOSUB 3430
: V(2)=V(2)+1
: GOTO 4080
4750 H$="LOCATION OF DEFFN's"
: A1$=HEX(F0)
: E=P3
4800 IF W$(1)>HEX(F1FF)THEN 5010
: IF STR(W$(1),1,1)=A1$THEN 4850
: H$="SPECIAL FUNCTION CROSS REFERENCE"
: A1$=HEX(F1)
: E=P3
4850 IF E<P3THEN 4870
: GOSUB 5660
4870 E=E+2
: PRINT HEX(0A);TAB(P2);
: PRINTUSING 510,VAL(STR(W$(1),2,1));
: GOSUB 3430
: IF A1$=HEX(F1)THEN 4800
: V(3)=V(3)+1
: GOTO 4800
5010 H$="SUMMARY"
: GOSUB 5660
: PRINT TAB(P2);"TEXT LINES =";D;TAB(P2+30);"TEXT STATEMENTS =";H
: PRINT
: PRINT TAB(P2);"LINE NUMBERS =";V(1);TAB(P2+30);"VARIABLES =";V(2)
: PRINT TAB(P2);"SPECIAL FUNCTIONS =";V(3)
: RETURN
5100 GOSUB 5910
: PRINT "MOUNT INPUT PLATTER"
: GOSUB 5840
: F=1
: N$=HEX(0000000000000000)
5150 GOSUB 6050
: IF N$=HEX(0000000000000000)THEN 5570
5170 DEFFN'0
: LIMITS T#2,N$,G,I,I
: DATA LOAD BA T#2,(G,G)R$()
: SELECT PRINT 005(140)
: AND (R$(1,1),F0)
: IF R$(1,1)<>HEX(50)THEN 5340
: SELECT PRINT 215(140)
: PRINT HEX(0D0C);"FILE - ";N$;" - PROTECTED"
: GOTO 5540
5340 GOSUB 5910
: PRINT "PROCESSING FILE ";F-1
: PRINT "NAME - ";N$;TAB(64)
: SELECT PRINT 215(140)
: INIT(FF)V$()
: D,H,L,V(1),V(2),V(3)=0
: H$="PROGRAM LISTING"
: A,E(1),E(2)=1
: E=P3
: C=P4
: GOSUB 950
: KEYIN H1$,5500,5500
5500 IF H1$<>"H"THEN 5150
: H1$=" "
: GOSUB 5910
: GOSUB 5840
5540 GOTO 5150
5570 PRINT HEX(0D0C0C07)
5580 DEFFN'15
: SELECT PRINT 005(64)
: PRINT HEX(03);"MOUNT ISS PLATTER"
: GOSUB 5840
: COM CLEAR N1$()
: LOAD DC T#0,"START040"
5660 PRINT
: KEYIN H1$,5740,5740
5680 PRINT HEX(0C0E);TAB(P2/2);Q1$;TAB(((P4-P2)/2+P2-8)/2);N$;TAB(P4/2-8);"PAG
E";E(A)
: PRINT TAB(P2);H$
: PRINT " "
: E=3
: E(A)=E(A)+1
: RETURN
5740 IF H1$<>"P"THEN 5680
: H1$=" "
: GOSUB 5910
: GOSUB 5840
: PRINT "PROCESSING FILE ";F-1
: PRINT "NAME - ";N$;TAB(64)
: SELECT PRINT 215(140)
: GOTO 5680
5840 SELECT CO 205
: PRINT HEX(010A)
5860 KEYIN A$,5860,5860
: INPUT "KEY RETURN(EXEC) TO RESUME",A$
: SELECT CO 005
5910 SELECT PRINT 005(64)
: PRINT HEX(01);,,,,,,,,,,,,HEX(01)
: RETURN
5960 DEFFN'1
: IF P9=2THEN 540
: E(2)=1
: SELECT PRINT 215(140)
: GOSUB 3780
: SELECT PRINT 005(64)
: RETURN
6050 IF M$="ALL"THEN 6110
: IF F>P5THEN 6090
: N$=N1$(F)
: GOTO 6130
6090 INIT(00)N$
: RETURN
6110 GOSUB 6170
: IF N5<0THEN 6110
6130 F=F+1
: RETURN
6170 GOSUB '229(2,N$)
: N5,N1=0
: IF R6<>0THEN 6220
: R=0
: GOTO 6360
6220 IF R6=16THEN 6340
: R6=R6+1
6240 FOR N0=R6TO 16
: IF (N0-1)+ABS(R-1)=0THEN 6330
: IF STR(R9$(N0),1,1)=HEX(00)THEN 6320
: IF STR(R9$(N0),1,1)=HEX(21)THEN 6330
: IF STR(R9$(N0),1,2)=HEX(1080)THEN 6300
: GOTO 6330
6300 N$=STR(R9$(N0),9,8)
: N1=1
6320 N0=16
6330 NEXT N0
6340 IF N1=1THEN 6400
: IF R>=R4THEN 6390
6360 DATA LOAD BA T#2,(R,R)R9$()
: R6=1
: GOTO 6240
6390 INIT(00)N$
6400 RETURN
6410 DEFFN'229(R9,R9$)
: DATA LOAD BA T#R9,(0,R3)R9$()
: AND (STR(R9$(1),2,1),7F)
: R4=VAL(STR(R9$(1),2,1))
: R1$=R9$
: XOR (STR(R1$,2),R1$)
: R2$=STR(R1$,8,1)
: R3$=HEX(0000)
: ADDC(R3$,R2$)
: ADDC(R3$,R2$)
: ADDC(R3$,R2$)
6420 ADD(STR(R3$,1,1),STR(R3$,2,1))
: R3=VAL(R3$)
: R3=R3-INT(R3/R4)*R4
: R5=R3
6430 DATA LOAD BA T#R9,(R3,R)R9$()
: R6=0
: FOR R7=1TO 16
: IF R3<>0THEN 6440
: IF R7<>1THEN 6440
: R7=2
6440 R2$=STR(R9$(R7),1,1)
: IF R2$=HEX(00)THEN 6460
: IF R2$=HEX(10)THEN 6450
: IF R2$<>HEX(11)THEN 6470
6450 IF STR(R9$(R7),9,8)<>R9$THEN 6470
: R6=R7
6460 R7=16
6470 NEXT R7
: IF R2$=HEX(00)THEN 6480
: IF R6<>0THEN 6480
: R2$=HEX(00)
: R3=R3-1
: IF R3=R5THEN 6480
: IF R3>=0THEN 6430
: R3=R4-1
: GOTO 6430
6480 RETURN