*DECK MALET2Z 
          IDENT  MALET2Z
          LCC    OVERLAY(2,44,O=AREA3)
*CALL,VERS
          COMMENT OVERLAY FOR MALET  "VERS" 
          TITLE  MALET2Z - CROSS-REFERENCE PROCESSOR
*CALL ASSYTAG 
          EJECT 
          TITLE 
*CALL MALMAC
* 
*         OVERLAY SUBROUTINE ENTRY TABLE
* 
*                - MUST LOAD AT FRONT OF OVRLAY - 
* 
          USE    /ENTRY2Z/
 ENTRIES  SET    1
* 
*         LINKAGE CALLS TO MALET2Z
* 
 XREFM    LINK
          USE    *
* 
*         SUBROUTINES IN LOWER LEVEL OVERLAYS 
* 
          EXT    PRINT
          EXT    CVTDIS 
* 
*         DATA AREAS IN MALET00 
* 
          EXT    BLANKS 
          EXT    CNTLINE
          EXT    CNTMAX 
          EXT    HEADER 
          EXT    XRBUF
          EXT    LXRBUF 
          EXT    XRFLAG 
          EXT    XRBUFM 
          EXT    FXREF
          EXT    ZZZXREF
          EJECT 
 XREFM    TITLE  XREFM - MODULE CROSS-REFERENCE 
**        XREFM - MODULE CROSS-REFERENCE
* 
*         K.B.SMITH. 78/04/26 
* 
*         XREFM SORTS REFERENCE DATA COLLECTED BY THE COMPILER
*         AND PRINTS A CROSS-REFERENCE LINSTING.
* 
*         ROUTINES CALLED - PRINT 
*                           XREFPR
*                           CVTDIS
* 
*         DATA AREAS USED - XRBUF 
* 
*         USES   A - 1,2,6,7. 
*                X - 1,2,3,4,5,6,7. 
*                B - 2,3,4,5. 
  
**        STEP -01- SORT REFERENCE DATA IN XRBUF
* 
 XREFM    DATA   0                 ENTRY/EXIT 
          MX3    42 
          MX4    -17
          SB2    XRBUF
          SB3    B2+LXRBUF
 XREF1    SA1    B2 
          SB4    B2+B1
          ZR     X1,XREF5          IF DONE
 XREF2    SA2    B4 
          ZR     X2,XREF4          IF END OF LIST 
          BX6    X1*X3
          BX7    X2*X3
          LX6    42 
          LX7    42 
          IX6    X7-X6
          NZ     X6,XREF2A         IF DIFFERENT NAME
          BX6    -X4*X1 
          BX7    -X4*X2 
          IX6    X7-X6
 XREF2A   PL     X6,XREF3          IF IN CORRECT ORDER
          BX6    X2 
          SA6    A1                SWAP ENTRIES 
          BX7    X1 
          SA7    A2 
          BX1    X6 
 XREF3    SB4    B4+B1
          LT     B4,B3,XREF2       IF NOT END OF BUFFER 
 XREF4    SB2    B2+B1
          LT     B2,B3,XREF1
  
**        STEP -02- FORCE PRINT BANNER OUTPUT AND PRINT HEADING 
* 
 XREF5    SX6    CNTMAX 
          SA6    CNTLINE           FORCE BANNER OUTPUT
          SA1    HEADER            GET MODULE NAME
          BX6    X1*X3
          SA6    XREFA+3           PUT IN HEADER
          SA6    XRBUFM 
          SB2    XREFA
          SB1    B0          USE PAGING FORMAT FOR PRINTING 
          RJ     PRINT             PRINT HEADER 
  
**        STEP -03- FORMAT TABLE AND PRINT IT.
          SB4    XRBUF
          SB5    B4+LXRBUF
 XREF6    SA1    B4 
          SA2    XREFB
          MX3    42 
          BX6    X1*X3
          BX2    X2-X6
          ZR     X2,XREF8B         IF SAME NAME AS LAST LINE
          RJ     XREFPR            PRINT CURRENT LINE 
          SA1    B4 
          BX6    X1*X3
          SA6    XREFB             SAVE NEW NAME
          BX1    X6 
          RJ     TRBLK             ADD TRAILING BLANKS
          LX7    54 
          SA7    XRPRA             STORE IN PRINT LINE
 XREF8B   ZR     X1,XREF10         IF END OF DATA 
          SA1    B4 
          RJ     CVTDIS            CONVERT LINE NUMBER
          SA1    XRPRB
          SA2    BLANKS 
          MX6    -18
          BX7    -X6*X7 
          BX2    X6*X2
          BX7    X2+X7
          SA7    X1                STORE IN PRINT LINE
          SX6    X1+B1
          SA6    A1                BUMP POINTER 
          SX2    X6-XRPRA-XRPRAL
          MI     X2,XREF9          IF LINE NOT FULL 
          RJ     XREFPR            PRINT FULL LINE
 XREF9    SB4    B4+B1             BUMP BUFFER POINTER
          LT     B4,B5,XREF6       IF NOT DONE
  
**        STEP -03- CHECK FOR LOST REFERENCES AND OUTPUT
*                MESSAGE IF ANY 
* 
 XREF10   SA1    XRFLAG 
          ZR     X1,XREF11         IF NO LOST REFERENCES
          RJ     CVTDIS            CONVERT NUMBER LOST
          SA1    BLANKS 
          MX2    -24
          BX1    X1*X2
          BX7    -X2*X7 
          BX7    X7+X1
          SA7    XREFD             PUT IN MESSAGE 
          SB2    A7 
          SB1    B0          USE PAGING FORMAT FOR PRINTING 
          RJ     PRINT
  
**        STEP -04- IF GLOBAL CROSS-REFERENCE IS ACTIVE, WRITE
*                   CROSS REFERENCE DATA TO ZZZXREF.
  
 XREF11   SA2    FXREF
          ZR     X2,XREF14         IF INACTIVE
          SX6    X2+B1
          SA6    A2                FLAG DATA OUTPUT 
          SB2    XRBUF
          SB3    B2+LXRBUF
          SX6    B2 
          MX2    1
          LX2    18 
 XREF12   SA1    B2 
          ZR     X1,XREF13         IF LAST ENTRY
          BX7    X1*X2
          NZ     X7,XREF12A        IF ITEM TO BE OMITTED
          BX7    X1 
          SA7    X6 
          SX6    X6+B1
 XREF12A  SB2    B2+B1
          LT     B2,B3,XREF12 
          IFEQ   NOSBE,1
 XREF13   SX2    XRBUFM 
          LX2    30 
          BX6    X2+X6
          SA6    ZZZXREF+5         SET WRITE LENGTH 
          WRITOUT  ZZZXREF
          WRITER  ZZZXREF,,RECALL 
          ENDIF 
          IFEQ   NOS,1
 XREF13   SX1    XRBUFM 
          IX6    X6-X1
          WRITEW  ZZZXREF,XRBUFM,X6    WRITE DATA 
          WRITER  ZZZXREF,RECALL
          ENDIF 
  
**        STEP -05- RETURN
* 
 XREF14   EQ     XREFM             RETURN 
* 
* 
 XREFA    DIS    ,/ CROSS-REFERENCE TABLE FOR              /
 XREFB    DATA   0
 XREFC    VFD    60/3A000 
 XREFD    DATA   10H
          DIS    ,/B LOST REFERENCES./
          EJECT 
 XREFPR   TITLE  XREFPR - PRINT CROSS-REFERENCE LINE
**        XREFPR - PRINT CROSS-REFERENCE LINE 
* 
*         K.B.SMITH 78/04/26
* 
*         CALL PRINT TO PRINT LINE BUFFER THEN CLEARS LINE BUFFER 
* 
*         EXIT   LINE HAS BEEN PRINTED
* 
* 
*         ROUTINES CALLED - PRINT 
* 
*         DATA AREAS USED - XRPRA 
* 
*         USES   A - 5,6. 
*                X - 5,6. 
*                B - 2,3. 
* 
  
**        STEP -01- IF DATA IN LINE PRINT IT
* 
 XREFPR   DATA   0
          SB2    XRPRA
          SA5    B2+B1
          ZR     X5,XRPR2          IF LINE EMPTY
          SB1    B0          USE PAGING FORMAT FOR PRINTING 
          RJ     PRINT
  
**        STEP -02- CLEAR PRINT LINE
* 
          SB2    B2+B1
          SB3    B2+XRPRAL
          MX6    0
 XRPR1    SA6    B2 
          SB2    B2+B1
          LT     B2,B3,XRPR1
          SX6    XRPRA+1
          SA6    XRPRB             RESET POINTER
  
**        STEP -03- RETURN
* 
 XRPR2    EQ     XREFPR            RETURN 
* 
* 
 XRPRA    BSSZ   13                PRINT LINE 
 XRPRAL   EQU    *-XRPRA
          DATA   0
          EJECT 
 TRBLK    TITLE  TRBLK - CONVERT TRAILING ZEROS TO TRAILING BLANKS
**        TRBLK - CONVERT TRAILING ZEROS TO TRAILING BLANKS 
* 
*         K.B.SMITH. 78/05/12.
* 
*         ENTRY  X1 CONTAINES DATA TO BE CONVERTED
* 
*         EXIT   X7 CONTAINES CONVERTED DATA
* 
*         ROUTINES CALLED - NONE. 
* 
*         DATA AREAS USED - NONE. 
* 
*         USES   A - 2. 
*                X - 2,5,7. 
*                B - NONE.
* 
  
 TRBLK    DATA   0                 ENTRY/EXIT 
          MX5    6
          SA2    BLANKS 
 TRBLK1   BX7    X1*X5             FORM MASK OF NON-ZERO CHARACTERS 
          BX7    X1-X7
          ZR     X7,TRBLK2         IF DONE
          AX5    6
          EQ     TRBLK1 
 TRBLK2   BX7    -X5*X2 
          BX7    X7+X1             ADD BLANKS 
          EQ     TRBLK             RETURN 
 XRPRB    VFD    60/XRPRA+1 
*         DUMMY ENTRY 
 MALET2Z  BSS    0
          ENTRY  MALET2Z
          END    MALET2Z
