********************************
***** LOAD MAP FORMAT PLAN *****
********************************
*
*
*0       1         2         3         4         5         6         7         8
*2345678901234567890123456789012345678901234567890123456789012345678901234567890
*
*********************************  SIGMA 5/6/7/9  LOAD MODULE MAP  *************
******************************** ACN= ACCTNMBR  <ROOT>  <TEMPORARY> ************
*******************************  LMN= LOADMODULENAME    BIAS=AAAAA   ***********
******************************   SGN= SEGMENTNAME       SIZE= DD.DK   **********
***************************** + =DBLE DEF   - =LIB DEF   * =UNUSED DEF *********
*
********* PROTECTION TYPES:  00 DATA        01 PROCEDURE   10 STATIC
*
*                            SEGHI-0 .....  SEGHI-1 .....  SEGHI-2 .....
*                            SEGLO-0 .....  SEGLO-1 .....  SEGLO-2 .....
*
*                            00 SIZE=.....  01 SIZE=.....  10 SIZE=.....
*
********* PREF - PRIMARY REFERENCES NOT LOCATED  ********
*
********* SREF - SECONDARY REFERENCES NOT LOADED ********
*
********* DDEF - DOUBLE/MULTIPLE DEFINED SYMBOLS ********
*
********* ADEF - ABSOLUTE SYMBOL VALUES          ********
*
********* LDEF - LIBRARY DEFINITIONS LIST        ********
*
*********  DEF - PROGRAM DEFINITIONS MAP         ********
*
*
*AAAA .SECT .  AAAAA B *DEFNAME1   AAAAA B  DEFNAME2   AAAAA B +DEFNAME3   AAAAA
*              AAAAA B  DEFNAME5   AAAAA B +DEFNAME6   AAAAA B *DEFNAME7   AAAAA
*
*
*    1         1         1
*9   0         1         2
*678901234567890123456789012345678
*
* -..... USER WDS:   ..... .SECT .
* -..... LIBR WDS:   ..... .SECT .
* -..... ???? WDS:   ..... .SECT .
         PAGE
         SYSTEM   SIG7FDP
         SYSTEM    BPM
         DEF       MAP,TSTACK,TXTYPLM,RFDFERR
         REF       M:C
         SREF     J:CCBUF
********************************
***** REGISTER DEFINITIONS *****
********************************
R0       EQU       0
R1       EQU       1
R2       EQU       2
R3       EQU       3
R4       EQU       4
R5       EQU       5
R6       EQU       6
R7       EQU       7
R8,SR1   EQU       8
R9,SR2   EQU       9
R10,SR3  EQU       10
R11,SR4  EQU       11
R12,D1   EQU       12
R13,D2   EQU       13
R14,D3   EQU       14
R15,D4   EQU       15
* * * * * * * * * * * * * * * *
         ASECT     1
%R0      EQU       BA(%)
%R1      EQU       BA(%+1)
%R2      EQU       BA(%+2)
%R3      EQU       BA(%+3)
%R4      EQU       BA(%+4)
%R5      EQU       BA(%+5)
%R6      EQU       BA(%+6)
%R7      EQU       BA(%+7)
%R8,%SR1 EQU       BA(%+8)
%R9,%SR2 EQU       BA(%+9)
%R10,%SR3 EQU      BA(%+10)
%R11,%SR4 EQU      BA(%+11)
%R12,%D1 EQU       BA(%+12)
%R13,%D2 EQU       BA(%+13)
%R14,%D3 EQU       BA(%+14)
%R15,%D4 EQU       BA(%+15)
*
***************************
***** LOAD MODULE DCB *****
***************************
M:EI     DSECT     1
         LIST      0
M:EI     M:DCB     (FILE),(KEYED),(DIRECT),(SAVE),(PASS),(IN),(INSN),;
                   (ERR,OPNERR),(ABN,OPNABN),(KEYM,36),(READ)
         LIST      1
*M:EI    M:DCB     (FILE),(KEYED),(DIRECT),(SAVE),(PASS),(IN),(INSN),;
*                  (ERR,OPNERR),(ABN,OPNABN),(KEYM,36),(READ)
         PAGE
***********************
***** FILBUF PROC *****
***********************
*
*        FILBUF,RN   BA(SOURCE),SRCDSPL,SRCSIZ,BA(DESTN)
*    (OR INDIRECT)   *WADDR1,SRCDSPL,*WADDR2,*WADDR3
* (INDIRECT,INDEXED) (*WADDR1,X1),SRCDSPL,*WADDR2,(*WADDR3,X3)
*
*
SIGMA    SET       ((S:IVAL&X'F')>6)+1
         GOTO,SIGMA     SIGMA5,SIGMA7
SIGMA5   EQU       %
G%:@#    SET       0
FILBUF   CNAME                   **MOVE BYTE STRING TO BUFFER**
         PROC
         LOCAL     OGR,X,GR,I2,I3,I4,WR,I5,I6,R,RU1,RFADR,;
                   G%:@#RCS,I,I8,I10,I11
         DO        G%:@#=0
G%:@#RCS SET       %
         CSECT     0
G%:@#RS  RES       5
G%:@#    SET       1
         ORG       G%:@#RCS
         FIN
LF       EQU       %
R        SET       CF(2)           REGISTERS
RU1      SET       R+1
OGR      SET       R,RU1,0,0,0,0,0,0,0,0,0,0
X        SET       3
         DO        NUM(AF(1))=2
OGR(X)   SET       AF(1,2)
X        SET       X+1
         FIN
         DO        NUM(AF(4))=2
OGR(X)   SET       AF(4,2)
X        SET       X+1
         FIN
I        DO        4
         DO        AFA(I,1)
OGR(X)   SET       AF(I,1)
X        SET       X+1
         FIN
         FIN
I10      DO        4
         DO        TCOR(AF(I10),S:AAD)
OGR(X)   SET       ABSVAL(WA(AF(I10)))
OGR(X+1) SET       OGR(X)+1
X        SET       X+2
         FIN
         FIN
GR       SET       1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
I2       DO        X-1
         DO        TCOR(OGR(I2),S:INT)
         DO        OGR(I2)<16
GR(OGR(I2)+1) SET  OGR(I2)
         FIN
         FIN
         FIN
         DO        (R>0)&(R<8)
         GOTO      I11
         FIN
         DO        R=0
GR(1)    SET       1
         FIN
         DO        R>7
GR(R+1)  SET       0
         FIN
I3       DO        7
         DO        GR(9-I3)=0
R        SET       8-I3
         FIN
         FIN
GR(R+1)  SET       R
I11      EQU       %
         DO        RU1>7
GR(RU1+1) SET      0
I7       DO        7
         DO        GR(9-I7)=0
RU1      SET       8-I7
         FIN
         FIN
         FIN
GR(RU1+1) SET      RU1
I4       DO        GR(1)=1
WR       SET       0
GR(1)    SET       0
         GOTO      I6
         FIN
I5       DO        8
         DO        GR(17-I5)=0
WR       SET       16-I5
         FIN
         FIN
I6       DO        8
         DO        GR(17-I6)=0
X        SET       16-I6
         FIN
         FIN
         STW,X     G%:@#RS
         DO        WR~=0
         STW,WR    G%:@#RS+1
         FIN
         DO        R~=CF(2)
         STW,R     G%:@#RS+2
         FIN
         DO        RU1~=CF(2)+1
         STW,RU1   G%:@#RS+3
         FIN
         DO        GR(1)=0
         STW,R0    G%:@#RS+4
         FIN
         DO        AFA(3)          IS SIZE INDIRECT
RFADR    SET       AF(3)
         LW,X      RFADR           YES
         ELSE
         LI,X      AF(3)           NO
         FIN
         DO        AFA(4,1)        IS DESTIN ADDR INDIRECT(,INDEXED)
RFADR    SET       AF(4,1)         YES
         LW,RU1    RFADR,AF(4,2)
         ELSE
         LI,RU1    AF(4)           NO
         FIN
         DO        CF(2)=0
         LB,WR     AF(2)
         STB,WR    0,RU1
         AI,RU1    1
         BDR,X     %-2
         GOTO      I8
         FIN
         DO        AFA(1,1)        IS SOURCE ADDR INDIRECT(,INDEXED)
RFADR    SET       AF(1,1)
         LW,R      RFADR,AF(1,2)   YES
         DO        AF(2)~=0
         AI,R      AF(2)
         FIN
         ELSE
         LI,R      AF(1)+AF(2)     NO
         FIN
         LB,WR     0,R
         STB,WR    0,RU1
         AI,R      1
         AI,RU1    1
         BDR,X     %-4
I8       EQU       %
         LW,X      G%:@#RS
         DO        WR~=0
         LW,WR     G%:@#RS+1
         FIN
         DO        R~=CF(2)
         LW,R      G%:@#RS+2
         FIN
         DO        RU1~=CF(2)+1
         LW,RU1    G%:@#RS+3
         FIN
         DO        GR(1)=0
         LW,R0     G%:@#RS+4
         FIN
         PEND
MBS      CNAME                   **MOVE BYTE STRING - SIGMA 5**
         PROC
LF       EQU       %
         LOCAL     R,RU1,X,WR
R        SET       CF(2)
RU1      SET       R+1
         DO        R<2
WR       SET       R3
X        SET       R4
         ELSE
WR       SET       R0
X        SET       R1
         FIN
         DO        WR~=0
         STW,WR    G%:@#RS+1
         FIN
         STW,X     G%:@#RS
         LB,X      RU1
         AI,R      AF(1)
         LB,WR     0,R
         STB,WR    0,RU1
         AI,R      1
         AI,RU1    1
         BDR,X     %-4
         LW,X      G%:@#RS
         DO        WR~=0
         LW,WR     G%:@#RS+1
         FIN
         PEND
         GOTO,SIGMA     SIG7END,SIGMA7
SIGMA7   EQU       %
FILBUF   CNAME                     **MOVE BYTE STRING TO BUFFER**
         PROC
LF       EQU       %
R        SET       CF(2)             REGISTERS
RU1      SET       R+1
         DO        AFA(3)            IS SIZE INDIRECT
RFADR    SET       AF(3)
         LW,R      RFADR             YES
         ELSE
         LI,R      AF(3)             NO
         FIN
         DO        AFA(4,1)          IS DESTIN ADDR INDIRECT(,INDEXED)
RFADR    SET       AF(4,1)
         LW,RU1    RFADR,AF(4,2)     YES
         ELSE
         LI,RU1    AF(4)             NO
         FIN
         STB,R     RU1               BYTE CNT & DEST ADDR IN RU1
         DO        AFA(1,1)          IS SOURCE ADDR INDIRECT(,INDEXED)
RFADR    SET       AF(1,1)
         LW,R      RFADR,AF(1,2)     YES
         ELSE
         LI,R      AF(1)             NO
         FIN
         MBS,R     AF(2)             DISPLACEMENT FROM SOURCE ADDR
         PEND
SIG7END  EQU       %
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         PAGE
         CSECT     0               %%%%% TEMP STACK %%%%%
******************************
***** MAP ROUTINE TSTACK *****
******************************
TSTACK   EQU      %
         DO       212
         DATA
         LIST     0
         FIN
         LIST     1
ENDTSTK  EQU       %
LOCCT    EQU       TSTACK+0          POINTER TO LOCCT TABLE
LOCORE   EQU       TSTACK+0          LOW CORE ADDR AVAILABLE
HICORE   EQU       TSTACK+1          HIGH CORE ADDR
CALLFLG  EQU       TSTACK+2          !MAP-M:LINK FLAG
MAPFLG   EQU       TSTACK+3          MAP=1 SUMMARY=0
CCLIBX   EQU       TSTACK+4          CC (LIB) PARAM PRESENT
CCSUMX   EQU       TSTACK+5          CC (SUMM) PARAM PRESENT
CCLMNX   EQU       TSTACK+6          CC (LMN) PARAM PRESENT
BIAS     EQU       TSTACK+7          LOAD MODULE BIAS VALUE
PERMFLG  EQU       TSTACK+8          PERM=1 TEMP=0
LIBFLG   EQU       TSTACK+9          LIBR=1 EXEC=0
HEADADR  EQU       TSTACK+10         ADDR OF HEAD RECORD
HEADSIZ  EQU       TSTACK+11         SIZE OF HEAD RECORD
TREEADR  EQU       TSTACK+12         ADDR OF FIRST TREE TABLE
TREESIZ  EQU       TSTACK+13         TREE SIZE IN BYTES
RFDFADR  EQU       TSTACK+14         ADDR OF REF/DEF STACK
RFDFSIZ  EQU       TSTACK+15         REF/DEF STACK SIZE IN BYTES
DISPDEF  EQU       TSTACK+16         ADDR OF DISPLACED DEFS STACK
NXTDISP  EQU       TSTACK+17         ADDR OF NEXT LOC IN DISP DEFS STK
ROOTFLG  EQU       TSTACK+18         ROOT=1 OTHER=0
CSEGADR  EQU       TSTACK+19         ADDR OF CURRENT SEG IN TREE
CSEGNO   EQU       TSTACK+20         CURRENT SEG NO
GETPAGES EQU       TSTACK+21         FPT FOR M:GP
COLINDX  EQU       TSTACK+22         LL BUFFER COLUMN INDEX
MAPCHAIN EQU       TSTACK+23         ADDR OF FIRST ENTRY IN CHAIN
ENDRFDF  EQU       TSTACK+24         ADDR OF LAST RFDF STK WORD
ENDTREE  EQU       TSTACK+206        ADDR OF LAST TREE WORD
*                  VACUOUS WORD FOR SEGMENT WITHOUT CONTROL SECTIONS
LIBSYN   EQU       TSTACK+27         LIBRARY SYNONYM FOR ':LIB'
MAPSPD   EQU       TSTACK+38         SPD FOR MAP PUSH/PULL STACK
MAPSTK   EQU       TSTACK+40         FIRST LOCATION OF STACK
LLBUF    EQU       TSTACK+104        M:LL BUFFER
CCBUF    EQU       TSTACK+104        CONTROL CARD BUFFER
SEGHI    EQU       TSTACK+138        HEX HI SEG BOUNDARIES
SEGLO    EQU       TSTACK+144        HEX LO SEG BOUNDARIES
SEGSZ    EQU       TSTACK+150        HEX SIZES OF PT AREAS
EIOPEN   EQU       TSTACK+165
EIPLIST  EQU       TSTACK+169        PLIST
EILMN    EQU       TSTACK+169
EIACN    EQU       TSTACK+178
EIPASS   EQU       TSTACK+181
REGSAV   EQU       TSTACK+184
LISK     EQU       ENDRFDF
CCNAMX   EQU       TSTACK+200        CC(NAME)PARAM PRESENT
NAMFLG   EQU       TSTACK+201        ALPHA SORTED SYMBOLS
CCVALX   EQU       TSTACK+202        CC(VALUE) PARAM PRESENT
VALFLG   EQU       TSTACK+203        VALUE SORTED SYMBOLS
ERRSW    EQU       TSTACK+204        G:PG OVERFLOW
ERRSW1   EQU       TSTACK+205
PRCDSECT EQU       TSTACK+207
FBRS     EQU       TSTACK+208
NSK      EQU       TSTACK+209
VALFLGSV EQU       TSTACK+210
REG15    EQU       TSTACK+211
GOFM     TEXTC     ' ***** LOW BKGD UPPER LIMIT.  DISPLACED DEFS ',;
                   'DELETED:    *********************************',;
                   '*********************************************'
FLNOLIB  DATA     0                 1/DON'T LIST LIB DEFS
FLNOUNLB DATA     0                 1/DON'T LIST UNUSED LIB DEFS
         BOUND    8
TXDATA   TEXT     '!DATA'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         PAGE
*********************************
***** TSTACK INITIAL VALUES *****
*********************************
         ORG       HEADSIZ
         DATA      12
         ORG       CCLIBX          **CCI PARAM PRESENT FLAGS INIT**
         DATA      0,0,0
         ORG       MAPSPD          ** INITIAL VALUE OF MAPPER'S SPD **
         DATA      MAPSTK
         DATA      X'80408000'
         ORG       EIOPEN       %%%%% M:OPEN  M:EI,(FILE,LMN) %%%%%
         GEN,8,24  X'14',M:EI
         DATA      X'C0000000'
         PZE       OPNERR
         PZE       OPNABN
         ORG       EILMN           **LMN CONTROL WORD**
         DATA      X'01000008'
         DATA      X'40404040'
         DATA      X'40404040'
         DATA      X'40404040'
         DATA      X'40404040'
         DATA      X'40404040'
         DATA      X'40404040'
         DATA      X'40404040'
         DATA      X'40404040'
         ORG       EIACN           **ACN CONTROL WORD**
         DATA      X'02000002'
         DATA      X'40404040'
         DATA      X'40404040'
         ORG       EIPASS          **PASS CONTROL WORD**
         DATA      X'03010002'       LAST ENTRY
         DATA      X'40404040'
         DATA      X'40404040'
         ORG       CCNAMX
         DATA      X'40404040',0,X'40404040',0,0,0
         ORG       ENDTSTK
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         PAGE
**************************************
***** REGISTER USAGE CONVENTIONS *****
**************************************
*
*  MAJOR PROCESSING ROUTINES:   BAL,R15  MAJOR
*                                        ARGUMENTS IN ANY REGISTER
*                                        R8-R15, R0-R4 SAVED
*                                        R5-R7 VOLATILE (RETURN RESULTS)
*                                        R15 LINK
*  UTILITY ROUTINES         :   BAL,R11  UTILITY
*                                        ARGUMENTS/RESULTS IN R5-R10
*                                        R0-R4 UNUSED
*                                        R11 LINK
*                                        R12-R15 UNUSED
*  I/O REQUESTS:  R5 <-- BUFFER ADDRESS
*                 R6 <-- BUFFER SIZE
*                 R7 <-- RECORD KEY ADDRESS
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         PAGE
         CSECT     1               %%%%% PROGRAM CONTROL %%%%%
**************************************
***** LOAD MAP PROCESSOR CONTROL *****
**************************************
*
*  NOTES: 1. THIS SECTION IS THE CONTROL PORTION OF THE PROCESSOR.
*            ALL OTHER MAJOR ROUTINES ARE CALLED FROM HERE.
*         2. LM AND MAP PARAMETERS ARE SET IN A TSTACK.  THE DATA
*            COMES FROM ONE OF 3 SOURCES:
*              (A) THE LOCCT TABLE ON SECTOR 36 OF THE RAD ABS AREA
*              (B) THE !MAP PROCESSOR CONTROL CARD
*              (C) A !ASSIGN M:EI CARD IF PRESENT
*         3. 'MAP' IS ENTERED EITHER FROM CCI OR FROM THE
*            LOADER USING AN  M:LINK.  WHEN ENTERED FROM CCI, 'MAP'
*            RECOGNIZES THE FOLLOWING CC OPTIONS:
*              (LMN,NAME,ACCT,PASS)     -  AS FOR !RUN CARD
*              (LIB)                    -  LIBRARY LM
*              (SUMM)                   -  SIZE/PREF SUMMARY ONLY
*            THE (LMN) OPTION WITH NO NAME CAUSES THE PROCESSOR TO
*            USE THE DATA FROM THE LAST !ASSIGN M:EI.  NO (LMN) OPTION
*            CAUSES THE LAST LM FORMED TO BE MAPPED.
*         4. ALL PRINTING IS DONE VIA M:LL AND READING IS DONE
*            VIA M:C (CC) AND M:EI (LOCCT & LM)
*
**********************************
***** OUTPUT BUFFER POINTERS *****
**********************************
BALLBUF  EQU       BA(LLBUF)         BA(M:LL DCB BUFFER)
BFL%%    EQU       BA(LLBUF)+0       TRIM LEFT  =28
BFR%%    EQU       BA(LLBUF)+71      TRIM RIGHT
BFHDNGS  EQU       BA(LLBUF)+30      HEADINGS
BFACN    EQU       BA(LLBUF)+39      ACN
BFROOT   EQU       BA(LLBUF)+49      '<ROOT>'
BFTYPLM  EQU       BA(LLBUF)+57      LM TYPE
BFLMN    EQU       BA(LLBUF)+39      LMN
BFBIAS   EQU       BA(LLBUF)+62      BIAS
BFSGN    EQU       BA(LLBUF)+39      SEG NAME
BFSGSZ   EQU       BA(LLBUF)+62      SEGSIZE
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TXTYPLM  DATA      BA(TXTEMP),BA(TXPERM),BA(TXLIBR)
***********************************
***** OUTPUT BUFFER TEXT DATA *****
***********************************
TX%%     TEXT      ' ******************************'
TXLN0    TEXT      '****  SIGMA 5/6/7/9  LOAD MODULE MAP  ****'
TXLN1    TEXT      '*** ACN=                               ***'
TXLN2    TEXT      '**  LMN=                   BIAS=        **'
TXLN3    TEXT      '*   SGN=                   SIZE=     K   *'
TXLN3G   TEXT      ' + =DBLE DEF   - =LIB DEF   * =UNUSED DEF '
TXPTLN4  TEXT      'A ******** PROTECTION TYPES:'
         TEXT    '  00 DATA        01 PROCEDURE   10 STATIC   '
TXHILN5  TEXT      'SEGHI-0        SEGHI-1        SEGHI-2     '
TXLOLN6  TEXT      'SEGLO-0        SEGLO-1        SEGLO-2     '
TXSZLN7  TEXT      '00 SIZE=       01 SIZE=       10 SIZE=    '
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TXPERM   TEXT      '<PERMANENT>'
TXTEMP   TEXT      '<TEMPORARY>'
TXLIBR   TEXT      '< LIBRARY >'
TXROOT   TEXT      '<ROOT>'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TXHEAD   TEXTC     'HEAD'
TXTREE   TEXTC     'TREE'
TX:LIB   TEXTC     ':LIB'
TXVAIN   TEXT      'GDM - JA'
         DATA      X'D5407DF7'
         TEXT      '1  *********'
***************************
***** TEXT DATA SIZES *****
***************************
SZ%%     EQU       31
SZHDNGS  EQU       42
SZTYPLM  EQU       11
SZROOT   EQU       6
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         PAGE
************************************************
***** I/O FPT'S AND ERROR/ABNORMAL RETURNS *****
************************************************
RDLOCCT  GEN,8,24  X'16',M:EI
         DATA      X'F8000000'
         PZE       ERRABS
         PZE       ABNABS
         PZE      *LOCCT
         DATA      1024
         DATA      36
SETABS   GEN,8,24  X'06',M:EI
         DATA      X'C0000000'
         PZE       ERRABS
         PZE       ABNABS
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ERRABS   EQU       %
ABNABS   EQU       %
         M:PRINT   (MESS,LOCCTERR)
         LW,R2    =C'ERR'            SET ERROR FLAG FOR M:ERR
         B         MAPEXIT
LOCCTERR TEXTC     ' ***** UNABLE TO RETRIEVE LOCCT TABLE *****'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
OPNERR   EQU       %
OPNABN   EQU       %
         M:PRINT   (MESS,EIERR)
         LW,R2    =C'ERR'            SET ERROR FLAG FOR M:ERR
         B         MAPEXIT
EIERR    TEXTC     ' ***** UNABLE TO ACCESS LOAD MODULE FILE *****'
NOLMN    EQU      %
         M:PRINT  (MESS,TCNOLMN)    PRINT 'NO LMN SPECIFIED'
         LW,R2    ='ERR'            SET ERROR FLAG FOR M:ERR
         B        MAPEXIT           B; ERROR EXIT
TCNOLMN  TEXTC    ' ***** NO LMN SPECIFIED'
SOFM     TEXTC     ' ***** LOW BKGD UPPER LIMIT,NAME SORT ITEMS DELE',;
                   'TED *****'
GOFMX    TEXTC     ' ***** IF PRESENT,REMOVE MAP NAME OR VAL',;
                   'UE',;
                   ' OPTION FROM CONTROL CARD *****'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         PAGE
MAP      EQU       %               **THIS IS JUST THE BEGINNING**
         LCI       0                 SAVE THE REGISTERS
         PSM,R0    MAPSPD
         STW,SR1   CALLFLG           SAVE ENTRY FLAG TILL LATER
BPMBUG   SET       0             *****CONDITIONAL ASSEMBLY*****
         M:GP      1               GET A PAGE FOR LOCCT AND HEAD
         STW,R9    LOCORE          **INITIALIZE TSTACK**
         STW,R9    HEADADR
         M:DEVICE  M:LL,(VFC)
         LW,R1     CALLFLG         **GET CALLFLAG AND BRANCH**
         BNEZ      LINKENTR          M:LINK ENTRY
         PAGE
CCIENTRY LI,R2     1               **!MAP CCI ENTRY** (R1)=0,(R2)=1
         STW,R2    PERMFLG           PERM UNLESS LOCCT (TEMP)
         STW,R2    MAPFLG            MAP UNLESS CHANGED BY CC (SUMM)
         STW,R1    NAMFLG
         STW,R1    VALFLG
         STW,R1    LIBFLG            NON-LIB UNLESS CC OR LOCCT (LIB)
         BAL,R15   MAPCCI          **READ AND INTERP CC - SET FLAGS**
         CW,R1     CCLMNX            LMN PARAM PRESENT
         BNEZ      GETHEAD             YES - GET HEAD
*                                      NO  - GET LOCCT
* * * * * * * * * * * * * * * * * *
LINKENTR EQU       %               **M:LINK ENTRY**
GETLOCCT EQU       %               **COMES HERE ALSO IF NO CC (LMN)**
         LB,R2    X'2B'             L/SYSTEM VERSION FROM X'2B'
         SLS,R2   -4                RIGHT JUSTIFY
         CI,R2    6                 C/VERSION W/6 (UTS)
         BE       NOLMN             BE; UTS, CAN'T DO ABS READ OF LOCCT
         CI,R2    7                 C/VERSION W/7 (CP-V)
         BE       NOLMN             BE; CP-V, CAN'T DO ABS READ OF LOCCT
         CAL1,1    SETABS
         CAL1,1    RDLOCCT           LOCCT TO *LOCORE
         LW,R1     LOCCT
         LI,R4     0                 (R4)=0
         CW,R4     CALLFLG
         BEZ       LOCCT1            IGNORE LOCCT MAP BIT ON CCI ENTRY
         LI,R5     1                 (R5)=1
         CW,R5    *LOCCT
         BANZ      LOCCT1            MAP=1
         STW,R4    MAPFLG            SUMMARY=0
         STW,R4    NAMFLG            ELIMINATE SORT BY NAME
         STW,R4    VALFLG               AND KEY
LOCCT1   LI,R3     8
         CW,R3    *LOCCT
         BANZ      LOCCT2            PERM=1
         STW,R4    PERMFLG           TEMP=0
LOCCT2   LI,R3     X'10'
         CW,R3    *LOCCT
         BAZ       LOCCT3            NON-LIB=0
         LI,R5     1
         STW,R5    LIBFLG            LIB=1
***** FOLLOWING TWO LIMES DEPENDENT ON CHANGES TO CCI
         STW,R4    NAMFLG            ELIMINATE SORT BY NAME
         STW,R4    VALFLG            SET SORT BY VALUE SWITCH
***** PRECEDING TWO LINES DEPENDENT ON CHANGES TO CCI
LOCCT3   LW,R2     2,R1            **DETERMINE HEAD RECORD ADDR**
         AW,R2     LOCCT             (=TREE DISPL IN WORD 2 OF LOCCT)
         STW,R2    HEADADR
         LI,R4     2
         SLS,R1    2               **MOVE LMN & PASSWD TO EIPLIST**
         FILBUF,R2 (*R1),40,12,BA(EILMN+1)
         LB,R2     EILMN+1           NO BYTES IN LMN
         SLS,R2   -2
         AI,R2     1                 NO WORDS IN LMN
         STB,R2    EILMN,R4          SET WDS USED IN CONTROL WORD
         LW,R2     EIPASS+1
         BEZ       GETHEAD           NO PASSWORD (ONLY 1ST HALF TESTED)
         FILBUF,R2 (*R1),60,8,BA(EIPASS+1)
         STB,R4    EIPASS,R4         SET WDS USED IN CONTROL WORD
         PAGE
* * * * * * * * * * * * * * * * * *
GETHEAD  LI,R2     1               **OPEN M:EI & GET HEAD RECORD**
         STW,R2    ROOTFLG           ROOT SEGMENT FIRST
         LI,R7     TXHEAD
         CW,R2     LIBFLG
         BNE       HEAD1             NOT LIB
         FILBUF,R4 BA(EILMN+1),0,32,BA(LIBSYN)  /  MOVE LMN TO LIBSYN
         FILBUF,R4 BA(TX:LIB),0,5,BA(EILMN+1)   /  MOVE :LIB TO LMN
         LI,R4     2
         STB,R4    EILMN,R4          SET NO WDS USED IN CONTROL WORD
         LB,R6     LIBSYN
         MTB,4     LIBSYN            INCREMENT LIBSYN SIZE FOR SUFFIX
         AI,R6     BA(LIBSYN)+1
         FILBUF,R4 BA(TXHEAD),1,4,*R6  /  'HEAD' SUFFIX TO LIB SYNONYM
         LI,R7     LIBSYN
HEAD1    EQU       %
         LI,R5     X'0F'
         AND,R5    M:EI
         CI,R5     X'03'
         BNE       %+2
         LI,R5     X'01'
         LI,R3     3
         STB,R5    EIOPEN+1,R3
         LI,R3     2
         LB,R5     EIACN,R3
         BNEZ      %+4
         LI,R3     1
         LI,R5     1
         STB,R5    EILMN,R3
HEAD2    CAL1,1    EIOPEN
         M:READ    M:EI,(BUF,*HEADADR),(SIZE,24),(KEY,*R7),(WAIT)
         LW,R5     HEADADR
         INT,R3    2,R5
         SLS,R3    1                 LOAD MODULE BIAS
         STW,R3    BIAS
         INT,R3    5,R5              TREE SIZE IN WORDS
         AW,R5     HEADSIZ           TREE ADDR (FOLLOWS HEAD)
         STW,R5    TREEADR
         AW,R5     R3
         STW,R5    RFDFADR           REF/DEF ADDR (FOLLOWS TREE)
         STW,R5    ENDTREE
         SLS,R3    2
         STW,R3    TREESIZ           SIZE OF TREE IN BYTES
         LI,R5     10              **GET MAXRFDF & REQ'D PAGES**
         LH,R5    *HEADADR,R5
         MI,R5     2               **GET 2* RFDF SIZE IN PAGES**
         DW,R5    =512               WORDS TO PAGES
         AI,R5     1                 +1 FOR GOOD LUCK
         DO        BPMBUG            *****COND ASSEMB ON SIDR #     *****
         M:GP      255               GET ALL AVAILABLE PAGES
         ELSE
         LI,R4     X'08'
         STW,R5    GETPAGES
         STB,R4    GETPAGES
         CAL1,8    GETPAGES         (ASSUMES PAGES AVAILABLE)
         FIN
         SLS,R8    9                 R5<--NO. WORDS OBTAINED
         AI,R8     511                    + EARLIER M:GP PAGE -1
         AW,R8     LOCORE            R5<--HIGH CORE ADDR
         STW,R8    HICORE
         STW,R8    DISPDEF
         STW,R8    NXTDISP
         PAGE
* * * * * * * * * * * * * * * * * *
GETTREE  LI,R7     TXTREE          **GET TREE RECORD**
         CW,R2     LIBFLG            (R2)=1  (R6)=BA(LIBSYN)+N
         BNE       TREE1
         FILBUF,R4 BA(TXTREE),1,4,*R6  /  'TREE' SUFFIX TO LIB SYNONYM
         LI,R7     LIBSYN
TREE1    M:READ    M:EI,(BUF,*TREEADR),(SIZE,*TREESIZ),(KEY,*R7),(WAIT)
         AWM,R2    TREEADR           (R2)=1  -  ADDR OF FIRST TREE TABLE
* * * * * * * * * * * * * * * * * *
CLRTREE  LW,R2     TREEADR         **CLEAR LAST WORD IN EACH TREE**
         LI,R3     0                 (DISPLACED DEF'S FLAG)
         STW,R2    CSEGADR           CURRENT SEGMENT TREE ADDR
         STW,R3    CSEGNO            CURRENT SEGMENT DISPL IN TREE
         STW,R3    10,R2
         AI,R2     11
         CW,R2     ENDTREE
         BL        %-3
         BAL,R11   CLRBUF            INIT LL BUFFER
         B         NXTSEG+3
         PAGE
* * * * * * * * * * * * * * * * * *
NXTSEG   EQU       %               **PRELIMINARIES ELIMINATED WE     **
*                                  **NOW GET DOWN TO MAPPING BUSINESS**
         LI,R1     11
         AWM,R1    CSEGNO            INCR SEG DISPL
         AWM,R1    CSEGADR           INCR SEG ADDR TO NEXT TREE
         LW,R1     CSEGADR         R1 <--CURRENT SEG TREE
         CW,R1     ENDTREE
         BGE       ENDMAP
* * * * * * * * * * * * * * * * * *
LINE0    LW,R2     ROOTFLG         **PRINT LINES 0,1 IF ROOT**
         BEZ       LINE2             ELSE LINE 2
LINE01   BAL,R11   MOVE%%            SET UP FOR LINE 0
         FILBUF,R4 BA(TXLN0),0,SZHDNGS,BFHDNGS    LINE 2 HEADING TO BUF
         BAL,R11   WRTCLR
         LW,R3     LIBFLG
         BEZ       LINE11            NOT LIBRARY LM
         LI,R4     0               **SET SEPCIAL LIBRARY ITEMS**
         STW,R4    ROOTFLG           RESET ROOT FLAG
         LI,R2     2               R2 <--LM TYPE INDEX
         B         LINE11+1
* * * * * * * * * * * * * * * * * *
MOVE%%  FILBUF,R6  BA(TX%%),0,SZ%%,BFL%%
         FILBUF,R6  BA(TX%%),0,SZ%%,BFR%%
         B        *R11
* * * * * * * * * * * * * * * * * *
LINE11   LW,R2     PERMFLG         R2 <--LM TYPE INDEX
         BAL,R11   MOVE%%
         FILBUF,R4 BA(TXLN1),0,SZHDNGS,BFHDNGS
         FILBUF,R4 BA(M:EI+32),0,8,BFACN  'ACCTNMBR' TO LLBUF
         CI,R2     2
         BE        LINE12
         FILBUF,R4 BA(TXROOT),0,SZROOT,BFROOT     '<ROOT>' TO LLBUF
LINE12   EQU       %
         FILBUF,R4 (*TXTYPLM,R2),0,SZTYPLM,BFTYPLM
         BAL,R11   WRTCLR          **WRITE LINE 1**
LINE2    BAL,R11   MOVE%%          **SET UP AND PRINT LINE 2**
         LW,R2     ROOTFLG
         BNEZ      LINE21            ROOT/NOT LIB (NO NEW PAGE)
         LW,R2     LIBFLG
         BNEZ      LINE21            LIB (NO NEW PAGE)
         LI,R4     'B'
         LW,R2     MAPFLG
         BEZ       %+2               SUMMARY, SPACE 2 LINES
         LI,R4     '1'               ELSE NEW PAGE
         STB,R4    LLBUF
LINE21   FILBUF,R4 BA(TXLN2),0,SZHDNGS,BFHDNGS  /  HEADING TO LLBUF
         LW,R7     BIAS
         BAL,R11   BINHEX
         BAL,R11   LJADDR
         LB,R3     M:EI+23
         FILBUF,R4 %R8,0,SZADDR,BFBIAS          /  BIAS TO LLBUF
         FILBUF,R4 BA(M:EI+23),1,*R3,BFLMN
         BAL,R11   WRTCLR
* * * * * * * * * * * * * * * * * *
LINE3    BAL,R11   MOVE%%          **SET UP AND PRINT LINE 3**
         FILBUF,R4 BA(TXLN3),0,SZHDNGS,BFHDNGS  /  HEADING TO LLBUF
         LW,R2     LIBFLG
         BNEZ      LINE31            LIB/NOT ROOT
         LW,R2     ROOTFLG
         BEZ       LINE31            NOT ROOT
         LI,R2     0
         STW,R2    ROOTFLG           RESET ROOT FLAG
LINE31   LW,R2     R1
         SLS,R2    2                 CURRENT SEG TREE ADR
         LB,R3    *R1                SEGNAME SIZE
         FILBUF,R4 *R2,1,*R3,BFSGN              /  SEG NAME TO LLBUF
         LI,R2     10              **DETERMINE SEGMENT SIZE**
         LI,R5     0
LINE32   AH,R5    *R1,R2             ACCUM SUM OF PT SIZES FROM TREE
         AI,R2     4
         CI,R2     18
         BLE       LINE32
         SLS,R5    1                 DW SIZE TO WORDS
         LI,R4     0
         DW,R4    =1024              SEG SIZE IN R5
         STW,R5    R7                WHOLE 'K' TO R7
         SLD,R4   -32
         DW,R4    =103               FRACTION 'K' IN R5 (DEC)
         LB,R5     BNHX%TAB,R5
         STB,R5    R5                SET UP SIZE AS DECIMAL QTY=XXX.X
         LI,R3     3                 CONVERT WHOLE K TO DECIMAL
LINE33   LI,R6     0
         DW,R6    =10
         LB,R6     BNHX%TAB,R6
         STB,R6    R4,R3
         BDR,R3    LINE33
         LI,R6     '.'               INSERT DEC PT
         STB,R6    R4
         SCS,R4    8                 XXX.X IN R4R5
         FILBUF,R6 %R4,0,5,BFSGSZ               /  SEG SIZE TO LLBUF
         BAL,R11   WRTCLR          **WRITE LINE 3**
* * * * * * * * * * * * * * * * * *
         BAL,R11  MOVE%%            MOVE IN *'S ON SIDES OF BUFFER
         FILBUF,R4 BA(TXLN3G),0,SZHDNGS,BFHDNGS / HEADING TO LLBUF
         BAL,R11   WRTCLR          **WRITE LINE 3+ **
* * * * * * * * * * * * * * * * * *
LINE4    FILBUF,R4 BA(TXPTLN4),0,72,BALLBUF     /  SUMMARY HDNG TO LLBUF
         BAL,R11   WRTCLR
* * * * * * * * * * * * * * * * * *
LINE567  LI,R2     'A'             **DOUBLE SPACE TO LINE 5**
         STB,R2    LLBUF
         BAL,R15   SEGEVAL         **EVALUATE SEG SUMMARY DATA**
         LI,R2     3
NEXT567  LW,R5     R2                SET LINE INDEX IN R5 FOR VALMOVE
         BAL,R11   VALMOVE           MOVE TEXT & SUMMARY DATA
         CI,R5     1
         BNE       %+3               NOT LINE 7
         LI,R3     'A'
         STB,R3    LLBUF             DOUBLE SPACE ON LINE 7
         BAL,R11   WRTCLR            WRITE THE LINE
         BDR,R2    NEXT567           DO NEXT LINE
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
GETRFDF  EQU       %               **GET THE RFDF STACK**
         MTB,1     *CSEGADR
         LB,R3    *CSEGADR           SET UP THE KEY
         STB,R2   *CSEGADR,R3        IE: KEY TEXTC 'SEGNAME#'
         LI,R6     12                WHERE # IS X'00'
         LH,R6     *CSEGADR,R6       GET RFDF SIZE
         STW,R6    ENDRFDF
         SLS,R6    2
         STW,R6    RFDFSIZ           RFDF SIZE IN BYTES
         LW,R6     RFDFADR
         AWM,R6    ENDRFDF           END OF RFDF STACK +1
         M:READ    M:EI,(BUF,*RFDFADR),(SIZE,*RFDFSIZ),(KEY,*R1),(WAIT)
* * * * * * * * * * * * * * * * * *
REFORM   BAL,R15   PREPROC         **PREPROCESS THE RFDF STACK**
         LI,R2     3                 SET PSMA INDEX
         BAL,R15   PSMALIST        **LIST PREF'S, SREF'S, DDEF'S**
         BDR,R2    %-1
         LW,R2     MAPFLG
         BEZ       NXTSEG            NO MAP OPTION - DO NEXT SEGMENT
         LI,R2     4
         BAL,R15   PSMALIST          LIST THE ADEF'S
         LW,R2     LIBFLG
         BEZ       NONLIB            MAP REQUESTED - DO THE DEF'S
         BAL,R15   LIBCHAIN        **CHAIN RFDF FOR LIB LISTING**
         B         DOMAP
NONLIB   BAL,R15   SORTMAP         **SORT AND CHAIN RFDF FOR MAP**
* * * * * * * * * * * * * * * * * *
DOMAP    BAL,R15   MAPLIST         %%%%%PRINT THE MAP AND TTFN!%%%%%
         BAL,R11   WRTCLR            CLEAR REMAINS IN LLBUF
         B         NXTSEG            CHECK FOR ANOTHER SEGMENT
ENDMAP   EQU       %               **COMES HERE AFTER LAST SEGMENT**
         M:CLOSE   M:EI,(SAVE)
****************************
***** THE ESCAPE HATCH *****
****************************
MAPEXIT  EQU       %               **IT ALL ENDS HERE**
         M:CLOSE   M:LL,(SAVE)
         LW,SR1    ERRSW
         BEZ       MAPEXIT1
         M:PRINT   (MESS,GOFMX)
MAPEXIT1 EQU       %
         LW,SR1    CALLFLG           WHO CALLED
         BEZ       NONLINK
         LCI       0                 CALLED VIA M:LINK
         PLM,R0    MAPSPD
         STW,SR1   TRCFPT+1        **SPECIFY CALLER**
,TRCFPT  M:LDTRC   'XXX'             AND RETURN
* * * * * * * * * * * * * * * * * *
NONLINK  CW,R2    =C'ERR'            CALLED FROM CCI
         BE        ERREXIT
         M:EXIT                    **EXIT HERE FOR NORMAL PROC END**
ERREXIT  LC       *X'4F'            L/JOB FLAGS
         BCS,8    %-2               B/ONLINE; DO M:EXIT
         M:ERR                      ERROR JOB STEP
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         PAGE
         CSECT     1               %%%%% UTILITY ROUTINES %%%%%
***************************************
***** REF/DEF STACK PREPROCESSING *****  BAL,R15  PREPROC
***************************************           NO ARGUMENTS
*
*  NOTES: 1. IRRELEVANT ENTRIES (TO MAP) ARE DELETED(IE: SET TYPE=X'F')
*              EG: -ENTRIES <3 WORDS IN LENGTH
*                  -RESOLUTION NOT ONE IN %RESOL TABLE
*                  -DEF'S WITH POINTERS TO ANOTHER TREE TABLE
*                     (THESE ARE ALSO MOVED TO DISPLACED DEF STACK)
*                  -C/DSEC ENTRIES WITH SIZE=0
*                  -ENTRIES OTHER THAN TYPES 0,1,2,3,6,8,B.
*         2. VALUES ARE RESOLVED TO BYTE DISPL & WORD ADDR (X'0B0AAAAA')
*         3. CONTROL WORD IS RE-FORMATTED
*              EG: -BIT 11 IS RESET (0)
*                  -BIT 10 IS SET FOR ADEF'S
*                  -BIT 31 IS SET FOR ALL DEF'S IN LIB LM'S
*                  -BIT 30 IS RESET FOR DEF'S IN LIB LM'S
*         4. VALUE WORDS IN LIB LM'S SET TO ZERO EXCEPT FOR ADEF'S
*         5. FINAL FORMAT IS SHOWN IN SUBROUTINE 'SORTMAP'
*                                  **RESOLUTION TABLE**
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
RFDFERR  TEXTC     '***** BAD REF/DEF STACK - DEAD END *****'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
%RESOL   DATA      X'01000000'       BYTE -  SLD,R  -2
         DATA      X'00010000'       HALF -  SLD,R  -1
         DATA      X'00000100'       WORD -  SLD,R   0
         DATA      X'00000001'       DBL  -  SLD,R   1
         DATA      X'0'              ABS
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
%TYPE    B         %DEF            **PROCESSING CONTROL TABLE**
         B         %PREF
         B         %SREF
         B         %DSEC
         B         %DELETE
         B         %DELETE
         B         %CSEC
         B         %DELETE
         B         %DDEF
         B         %DELETE
         B         %DELETE
         B         %DSEC
         B         %DELETE
         B         %DELETE
         B         %DELETE
         B         %DELETE
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
%RESOLVE SLD,R4   -2               **RESOLVE VALUE EXU'S**
         SLD,R4   -1
         SLD,R4    0
         SLD,R4    1
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
PREPROC  EQU       %               **ENTERED HERE**
         LCI       13                SAVE REGISTERS AND INITIALIZE
         PSM,R8    MAPSPD
         LW,R1     RFDFADR         R1 <--ADDR OF CURRENT RFDF ENTRY
         LW,R13   RFDFADR           L/RFDFADR; THIS REG WILL POINT TO
*                                   .. WHERE THE NEXT GOOD ENTRY
*                                   .. IS STORED; THE GOOD ENTRIES ARE
*                                   .. COMPACTED IN THE RDFD AREA
         LW,R14    LIBFLG          R14<--LIBR LM FLAG
* * * * * * * * * * * * * * * * * *
PRCLOOP  LB,R2    *R1              **CHECK FOR IRRELEVANT ENTRY**
         BNEZ      %+4             R2 <-- ENTRY SIZE
         M:PRINT   (MESS,RFDFERR)    SIZE=0 - RFDF STACK DEAD END
         LW,R2    =C'ERR'            SET ERROR FLAG FOR M:ERR
         B         MAPEXIT           ABORT MAP
         CI,R2     2
         BLE       %DELETE           <3 WORD ENTRY
         LW,R4     2,R1              GET RESOL WORD
         LI,R3     5
         CW,R4     %RESOL-1,R3       CHECK RESOLUTION
         BE        PRCOK           R3 <-- RESOLUTION INDEX
         BDR,R3    %-2
         B         %DELETE           BAD RESOLUTION WORD
PRCOK    LH,R6    *R1              **RES & SIZE OK - GET TYPE
         AND,R6   =X'F'
         LW,R4    0,R1              L/1ST WD OF RFDF ENTRY
         B         %TYPE,R6        **GO TO RESPECTIVE TYPE PROC**
* * * * * * * * * * * * * * * * * *
%DEF     EQU       %               **DEF'S, DDEF'S, & ADEF'S**
         CW,R4    FLNOLIB           C/WD 0 WITH NO LIB DEF LIST FLAG
         BANZ     %DELETE           BANZ; FLAG IS SET AND THIS IS A LIB
*                                   .. DEF; SKIP THIS ENTRY
         LI,R5    3                 L/3; MASK FOR BITS 30-31
         AND,R5   R4                &3 W/WD 0 OF ENTRY
         BEZ      %DDEF             BEZ; PROCESS THIS ENTRY
         CW,R5    FLNOUNLB          C/BITS 30-31 OF WD 0 W/NO UNUSED LIB
*                                   .. DEF LIST FLAG
         BE       %DELETE           BE; THIS IS AN UNUSED LIB DEF AND
*                                   .. WE WANT TO INHIBIT LISTING OF THEM
%DDEF    EQU       %
         AND,R4   =X'FFCFFFFF'       RESET ADEF AND LISTED BITS
         CI,R3     5
         BE        %ADEF             ADEF (RES WD =0)
         STW,R4    0,R1            R4 <--CONTROL WORD
         CI,R14    0
         BNEZ      PRCLIB            SET VAL & RES ZERO FOR LIB LM DEF'S
         BAL,R11   PRCRESLV          RESOLVE VALUE, SET ROSOL WD ZERO
         B         %DSPLCHK
* * * * * * * * * * * * * * * * * *
%ADEF    OR,R4    =X'00200000'       SET THE ADEF BIT
         STW,R4    0,R1            R4 <--CONTROL WORD
         LI,R5     0
         STW,R5    2,R1              RESET RESOL WD TO ZERO
         B         %DSPLCHK
* * * * * * * * * * * * * * * * * *
%DSPLCHK AND,R4   =X'0000FFFC'     **CHECK FOR DISPL DEF**
         BEZ       PRCNXT            NO
         CW,R4     TREESIZ           NO ALSO IF TREE PTR OUTSIDE TREE
         BGE       PRCNXT
         LW,R3     TREEADR         **YES - MOVE DEF AND FLAG TREE TABLE*
         SLS,R4   -2
         AW,R3     R4                POINTER TO DEF'S TREE
         LW,R4    =X'FFFFFFFF'
         STW,R4    10,R3           **SET FLAG IN TREE**
         LW,R4     R1
         SLS,R4    2                 BA(RFDF ENTRY)
         LW,R5     NXTDISP           WA(NEXT DISPL DEF LOC)
         SW,R5     R2                BUILD DISPL DEF STACK FROM TOP DOWN
         CW,R5     ENDRFDF
         BG        PRCDDD
         LI,R15    %DELETE
         B         PRCDSP4
PRCDDD   EQU       %
         STW,R5    NXTDISP           UPDATE NXTDISP POINTER
         STB,R2    R5                SIZE IN WORDS
         SLS,R5    2                 CNT,BA(NEXT LOC)
         MBS,R4    0               **MOVE DEF**
         B         %DELETE           DELETE ENTRY FROM CURRENT STACK
* * * * * * * * * * * * * * * * * *
%CSEC    EQU       %               **CSEC'S & DSEC'S HERE**
%DSEC    EQU       %
         LW,R4    *R1                GET SIZE
         AND,R4   =X'FFFF'
         BEZ       %DELETE           DELETE ZERO SIZE ENTRY
         LI,R4     0
         LW,R5    =X'00380000'       RESET TYPE
         STS,R4   *R1
         CI,R14    0                 EXEC OR LIBR LM
         BNEZ      PRCLIB            LIB - SET RES & VAL WDS ZERO
         BAL,R11   PRCRESLV          RESOLVE VALUE & SET RES WD ZERO
         B         PRCNXT
* * * * * * * * * * * * * * * * * *
%PREF    EQU       %               **SKIP PREF'S  **
%SREF    EQU       %               **SKIP SREF'S  **
PRCNXT   EQU       %               **GET NEXT ENTRY*
         SLS,R2   2                 G/# OF BYTES IN THIS ENTRY
         LW,R12   R1                L/ADR OF CURRENT ENTRY; SOURCE FOR MOVE
         SLD,R12  2                 G/BA OF SOURCE AND DEST
         STB,R2   R13               B/BC IN MBS DBL WD
         MBS,R12  0                 M/CURRENT ENTRY TO NEXT AVAIL POSITION
         SLD,R12  -2                RETURN PNTRS TO WD RESOLUTION
         STW,R12  R1                RETURN CURRENT ENTRY PNTR TO R1
PRCNXT10 CW,R1     ENDRFDF          CHECK END RFDF STACK
         BGE       PRCDISPL         END - GO AND GET ANY DISPLACED DEFS
         B         PRCLOOP
* * * * * * * * * * * * * * * * * *
%DELETE  AW,R1    R2                +SIZE TO CURRENT PNTR; SKIP THIS ENTRY
         B         PRCNXT10
* * * * * * * * * * * * * * * * * *
PRCLIB   CI,R4     0               **SPECIAL PROC FOR LIB LM'S**
         BEZ       %+4               ON ENTRY (R4)=CNTRL WD FOR DEF
         OR,R4    =X'0001'                    (R4)=0 FOR C/DSEC
         STW,R4    0,R1              SET BIT 31 FOR DEF'S
         LI,R4     0
         STW,R4    1,R1              RESET VALUE
         STW,R4    2,R1              RESET RESOL
         B         PRCNXT
* * * * * * * * * * * * * * * * * *
PRCRESLV LI,R5     0               **RESOLVE VALUE WORD**
         LW,R4     1,R1
         EXU       %RESOLVE-1,R3     SHIFT VALUE AS REQUIRED TO WA
         SCS,R5    2                 BYTE DISPL
         STB,R5    R4                VALUE FORMAT = X'0B0AAAAA'
         STW,R4    1,R1            **NEW VALUE**
         LI,R4     0
         STW,R4    2,R1            **RESOL = 0**
         LW,R4     0,R1              RESTORE CONTROL WORD TO R4
         B        *R11
* * * * * * * * * * * * * * * * * *
PRCDISPL STW,R13  ENDRFDF           RESET PNTR TO END OF RFDF AREA
         LW,R3     CSEGADR         **CHK FOR ANY DISPL DEF'S       **
         LW,R4     10,R3           **AND RETRIEVE IF ANY, ELSE EXIT**
         BEZ       PRCEXIT
         LW,R1     NXTDISP         R1 <--CURRENT DISPL DEF
         LW,R3     CSEGNO
         SLS,R3    2               R3 <--CURR SEG TREE DISPL *4
PRCDSP1  LW,R6     ENDRFDF           R2 <- NEXT AVAIL REF/DEF LOC
         LW,R8     0,R1              NEXT TREE POINTER FROM DEF
         AND,R8   =X'0000FFFC'       TREE DISPL MASK
         LB,R2     *R1                 SIZE ENTRY
         CW,R8     R3
         BNE       PRCDSP2           NOT FROM CURRENT SEGMENT
         LW,R4     R1
         SLS,R4    2                 BA(CURRENT DISPL DEF)
         LW,R5     R6                  WA(NEXT RFDF LOC)
         AW,R5     R2
         CW,R5     NXTDISP
         BLE       PRCDSP3
         LI,R15    PRCDSP2
         B         PRCDSP4
PRCDSP3  EQU       %
         LW,R5     R6
         STB,R2    R5
         SLS,R5    2                 CNT,BA(NEXT RFDF)
         MBS,R4    0               **MOVE DEF**
         AWM,R2    ENDRFDF             UPDATE ENDRFDF ADDR
PRCDSP2  AW,R1     R2                  UPDATE DISPL DEF POINTER
         CW,R1     DISPDEF           END OF DISPL DEFS
         BGE       PRCEXIT           YES
         B         PRCDSP1           NO
* * * * * * * * * * * * * * * * * *
PRCEXIT  LCI       13
         PLM,R8    MAPSPD
         B        *R15
PRCDSP4  EQU       %
         LI,R5     GOFM+15
         STB,R2    R5
         AND,R5    =X'0FFFFFFF'
         SLS,R5    2
PRCDSP5  EQU       %
         STW,R5    ERRSW
         MBS,R4    0                 MOVE DEF NAME
         M:PRINT   (MESS,GOFM)
         B         *R15
         PAGE
**********************************
***** SORT AND CHAIN REF/DEF *****  BAL,R15  SORTMAP
***** STACK FOR DEF MAP      *****           NO ARGUMENTS
**********************************
*                                        1            2          3
*     REF/DEF ENTRY FORMATS |01234567|89|0|1|2345|67890123456789|0|1|
*     (AFTER PRE-PROCESSING | NO OF  |PT|A|F|TYPE| POINTER TO   |U|L|
*            BY 'PREPROC')  | WORKS  |RY|D|L|F,O,| PROPER TREE  |S|I|
*                           |  IN    |OP|E|A|1,2,|              |D|B|
*                           | ENTRY  |TE|F|G|3,6,|------------------|
*                                    |  | | |8   | DW SIZE OF C/DSEC|
*
*                           VALUE = X'0B0AAAAA'  RESOL = X'00000000'
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SORTMAP  EQU       %               **ENTER HERE**
         LCI       13                SAVE REGISTERS AND
         PSM,R8    MAPSPD            INITIALIZE INDICES & POINTERS
         LI,R12    X'1FFFF'        R72<-- CHAIN LINK (SRTLINK, SRTEXIT)
         LI,R7     0
         STW,R7    NSK
         LW,R7     LISK
SRTLOOP  LW,R3     RFDFADR         R3 <-- NEXT RFDF ENTRY (FROM SRTNXT)
         LI,R14    0               R14<-- CURRENT MAX (SRTVALU, SRTLINK)
         LI,R13    X'1FFFF'        R13<-- POINTER TO CURRENT MAX ENTRY
SRTLOOP1 LW,R2     R3              R2 <-- CURRENT ENTRY
         LW,R6     0,R2            **PROCESS RFDF ENTRY IF TYPE OK**
         AND,R6   =X'00270000'       TYPE MASK
         BEZ       SRTVALU           DEF/DDEF ENTRY
         SLS,R6   -16
         CI,R6     7
         BGE       SRTNXT            ADEF OR DELETED ENTRY
         CI,R6     2
         BLE       SRTNXT            PREF OR SREF
SRTVALU  LI,R3     8               **CHECK RESOL WORD**
         LB,R4    *R2,R3             GET IT
         CI,R4     X'FF'
         BE        SRTNXT            ALREADY CHAINED
         LI,R3     1               **CHECK VALUE IF UNCHAINED**
         LW,R10   *R2,R3             GET IT (OMIT BYTE DISPL)
         AND,R10  =X'1FFFF'
         CW,R10    R14
         BL        SRTNXT            NOT NEW MAX
         BG        SRTNUMAX          NEW MAX
         CI,R6     0                 EQUAL TO CURRENT MAX
         BNEZ      SRTNXT            REPLACE CURRENT MAX ON DEF/DDEF ONLY
SRTNUMAX STW,R2    R13             **SAVE POINTER TO NEW MAX ENTRY**
         STW,R10   R14               SAVE NEW VALUE
* * * * * * * * * * * * * * * * * *
SRTNXT   LB,R3    *R2              **GET NEXT RFDF ENTRY**
         AW,R3     R2
         CW,R3     ENDRFDF
         BGE       SRTLINK           END OF RFDF STACK - ADD CHAIN LINK
         B         SRTLOOP1          PROCESS NEXT RFDF ENTRY
* * * * * * * * * * * * * * * * * *
SRTLINK  CI,R13    X'1FFFF'        **SAVE CHAIN LINK IN MAX VAL ENTRY**
         BE        SRTEXIT           NO NEW MAX - EXIT
         LI,R3     X'FF'
         STB,R3    R12               CHAIN FLAG IN NEW RESOL WORD
         LI,R3     2                 STORE CHAIN LINK IN RESOL WORD
         STW,R12  *R13,R3              OF CURRENT MAX ENTRY
         STW,R13   R12               SAVE ENTRY POINTER AS NEW LINK
         LW,R3     *R13
         AND,R3    =X'00270000'
         SLS,R3    -16
         CI,R3     6                 CONTROL SECTION
         BE        SRTLOOP              YES
         LW,R15    NAMFLG
         BEZ       SRTLOOP
         AI,R13    +3
         AI,R7     1
         CW,R7     NXTDISP           OUT OF CORE
         BLE       SRTLNK1              NO
         AI,R7     -1
         LW,R3     ERRSW1
         BNEZ      SRTLNK1
         M:PRINT   (MESS,SOFM)
         STW,R7    ERRSW1
         STW,R7    ERRSW
         B         SRTLNK2
SRTLNK1  EQU       %
         STW,R13   -1,R7             CREATE SORT KEY
SRTLNK2  EQU       %
         AI,R13    -3
         B         SRTLOOP
* * * * * * * * * * * * * * * * * *
SRTEXIT2 EQU       %
         CW,R7     LISK
         BE        *R15
         SW,R7     LISK
         STW,R7    NSK
         STW,R15   REG15
         LI,14     3
         BAL,R15   SSSUBR            SORT LIST
         DATA      REGSAV            REGISTER SAVE AREA
         DATA      LISK              TOURNAMENT AREA LOCATION
         DATA      NSK               NUMBER OF SORT KEYS
         LW,R15    REG15
         B         *R15
SRTEXIT  EQU       %
         LW,R15    NAMFLG
         BEZ       SRTEXIT1
         BAL,R15   SRTEXIT2          PERFORM SORT
SRTEXIT1 EQU       %
         STW,R12   MAPCHAIN        **SAVE FIRST CHAIN LINKAT MAPCHAIN**
         LCI       13
         PLM,R8    MAPSPD            RESTORE REGISTERS
         B        *R15               EXIT
SSSUBR   LW,R14   *R15
         LCI      0
         STM,R1   *R14
         LW,R1    R15
         LW,R2    1,R1
         LW,R8    0,R2
         LW,R3    2,R1
         LW,R9    0,R3
         AI,R8    -1
         LW,R10   R9
         BE       SSSUBR32
SSSUBRB  SLS,R10  -1
         LW,R10   R10
         BE       SSSUBR32
         LW,R11   R9
         SW,R11   R10
         LI,R3    1
SSSUBR11 LW,R1    R3
SSSUBR12 LW,R2    R1
         AW,R2    R10
         LW,R4    R8
         AW,R4    R1
         LW,R5    R8
         AW,R5    R2
         LW,R6    0,R4
         LW,R7    0,R5
         SLS,R6   2
         SLS,R7   2
         LB,R13   0,R6
         CB,R13   0,R7
         BL       SSSUBR20
         LB,R13   0,R7
SSSUBR20 B        SSSUBR23
SSSUBR21 BDR,R13  SSSUBR23
         B        SSSUBR2E
SSSUBR23 AI,R6    1
         AI,R7    1
         LB,R0    0,R6
         CB,R0    0,R7
         BE       SSSUBR21
         BLE      SSSUBR2E
         LW,R6    0,R4
         XW,R6    0,R5
         STW,R6   0,R4
         SW,R1    R10
         BG       SSSUBR12
SSSUBR2E AI,R3    1
         CW,R3    R11
         BG       SSSUBRB
         B        SSSUBR11
SSSUBR32 LW,R14   *R15
         LCI      0
         LM,R1    *R14
         AI,R15   R3
         B        *R15
         PAGE
*******************************
***** CHAIN LIBRARY LIST  *****  BAL,R15 LIBCHAIN
***** ENTRIES FOR LISTING *****          NO ARGUMENTS
*******************************
*
*  REF/DEF STACK FORMAT: (AS FOR MAP 'SORT')
*  CHAINING TECHNIQUE  : 1. CHAIN CSEC/DSEC ENTRIES IN ORDER FOUND
*                           UNTIL A DEF/DDEF IS FOUND WHILE NIL BACK-LOG
*                        2. SAVE POINTER TO DEF AND THEN LOCATE ITS
*                           CSEC/DSEC AT END OF A STRING OF DEF'S.
*                        3. LINK THE CSEC/DSEC AND SET BYTE 0 OF
*                           RESOLUTION WORD TO X'FF' SO THAT IT WILL
*                           BE BYPASSED AFTER DEF'S ARE LINKED.
*                        4. CONTINUE AS IN 1.
*                        5. SET VALUE WORDS IN CSEC/DSEC ENTRIES.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
LIBCHAIN EQU       %               **ENTER HERE & SAVE REGISTERS**
         LCI       13
         PSM,R8    MAPSPD          **INITIALIZE**
         LI,R14    0               R14<-- VALUE FOR NEXT CSEC
         LI,R13    MAPCHAIN-2      R13<-- POINTER TO LAST LINKED ENTRY
         LW,R3     RFDFADR         R3 <-- POINTER TO NEXT RFDF ENTRY
         LI,R12    0               R12<-- SET BACK-LOG OF DEF'S TO NIL
         LI,R10   -1               R10<-- SET DEF BY-PASS FLAG
LBCSRCH  LW,R1     R3              **SEARCH FOR NEXT DEF/DDEF   **
         LW,R8     0,R1            **OR C/DSECT ENTRY (LINK ALL **
         AND,R8   =X'00270000'       TYPE MASK
         BEZ       LBCDEF          **C/DSEC'S UNTIL DEF IS FOUND**
         SLS,R8   -16
         CI,R8     7
         BGE       LBCNXT            ADEF OR DELETED - SKIP
         CI,R8     2
         BLE       LBCNXT            PREF OR SREF - SKIP
         LI,R4     8               **CSEC OR DSEC - GET RESOL FLAG**
         LB,R4    *R1,R4
         CI,R4     X'FF'
         BE        LBCEND            ALREADY LINKED - END OF DEF BACKLOG
         LI,R4     1
         LH,R5    *R1,R4             GET SIZE
         SLS,R5    1
         STW,R14  *R1,R4             SET VALUE IN C/DSEC ENTRY
         AW,R14    R5                INCR VALUE BY CSEC SIZE FOR NEXT
         BAL,R11   LBCLINK           LINK THE CSEC
         CI,R12    0                 CHECK BACK-LOG
         BEZ       LBCNXT            NO BACK-LOG OF DEF'S - CONTINUE
         LW,R3     R12               DEF BACK-LOG - GO LINK THEM
         LI,R10    0                 RESET DEF BY-PASS FLAG
         B         LBCSRCH
* * * * * * * * * * * * * * * * * *
LBCDEF   CI,R10    0               **LINK DEF'S IF BYPASS FLAG RESET**
         BEZ       LBCDF1            FLAG RESET - LINK DEF
         CI,R12    0
         BNEZ      LBCNXT            BY PASS TO NEXT C/DSEC
         STW,R1    R12             **FIRST DEF IN NEW C/DSEC
         B         LBCNXT            SAVE POINTER & FIND CSEC ENTRY
LBCDF1   BAL,R11   LBCLINK         **LINK CURRENT DEF**
         B         LBCNXT            GET NEXT ENTRY
* * * * * * * * * * * * * * * * * *
LBCLINK  LI,R4     X'FF'           **STORE CURRENT ENTRY POINTER**
         AI,R13    2                 AND LINKED FLAG IN RESOL WORD OF
         STW,R1   *R13               LAST LINKED ENTRY
         STB,R4   *R13
         LW,R13    R1                SET LAST LINK TO NEW LAST LINK
         B        *R11
* * * * * * * * * * * * * * * * * *
LBCNXT   LB,R3    *R1              **GET NEXT SEQUENTIAL RFDF ENTRY**
         AW,R3     R1
         CW,R3     ENDRFDF
         BGE       LBCEXIT           END OF RFDF STK
         B         LBCSRCH
* * * * * * * * * * * * * * * * * *
LBCEND   LI,R12    0               **COMES HERE AT END OF DEF BACK-LOG**
         LI,R10   -1                 RESET BACK-LOG FLAG & SET BYPASS
         B         LBCNXT
* * * * * * * * * * * * * * * * * *
LBCEXIT  AI,R13    2               **END OF RFDF STACK**
         LW,R4    =X'FF01FFFF'       SET LAST ENTRY FLAG "X'FF01FFFF'
         STW,R4   *R13
         LCI       13
         PLM,R8    MAPSPD            RESTORE REGISTERS
         B        *R15
         PAGE
********************************
***** LIST REF/DEF ENTRIES *****  BAL,R15  PSMALIST
***** SPECIFIED BY TYPE    *****           R2 <-- PSMA TYPE INDEX
********************************
*
*  NOTES: 1. PREF'S, SREF'S, DDEF'S, & ADEF'S ARE LISTED HERE
*         2. TYPE IS SPECIFIED IN R2 ON ENTRY
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TXPREF TEXT 'A ******** PREF - PRIMARY REFERENCES NOT LOCATED  ********'
TXSREF TEXT 'A ******** SREF - SECONDARY REFERENCES NOT LOADED ********'
TXDDEF TEXT 'A ******** DDEF - DOUBLE/MULTIPLY DEFINED SYMBOLS ********'
TXADEF TEXT 'A ******** ADEF - ABSOLUTE SYMBOL VALUES          ********'
SZTITLE  EQU       58
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TXTITLE  DATA      BA(TXDDEF),BA(TXSREF),BA(TXPREF)
         DATA      BA(TXADEF),BA(TXLDEF),BA(TXDEF)
         DATA      BA(TXSEC)
TXRTHDG  DATA      BA(TXUSERLN),BA(TXLIBRLN),BA(TXUNKNLN)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
PSMATAB  DATA      X'00080000'     DDEF
         DATA      X'00010000'     SREF
         DATA      X'00020000'     PREF
         DATA      X'00200000'     ADEF
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
PSMALIST EQU       %               **THEY ALL COME IN HERE**
         LCI       13
         PSM,R8    MAPSPD            SAVE REG & INIT
         LI,R7     0
         STW,R7    NSK
         LW,R7     LISK
         LW,R1     RFDFADR         R1  <--CURRENT ENTRY POINTER
* * * * * * * * * * * * * * * * * *
PSMA1ST  BAL,R11   PSMAGET         **GET FIRST RFDF ENTRY OF TYPE**
*                                    NEVER RETURNS IF NONE
         FILBUF,R4 (*TXTITLE-1,R2),0,SZTITLE,BALLBUF   /  TYPE HEADER
         BAL,R11   WRTCLR            WRITE HEADER
         LW,R7     LISK
         LI,R11    PSMAREST+1
         B         PSMAREST+1
PSMAREST BAL,R11   PSMAGET         **GET REST OF ENTRIES & LIST**
         AI,R1     +3
         AI,R7     1
         CW,R7     NXTDISP         OUT OF CORE
         BLE       PSM1               NO
         AI,R7     -1
         LW,R3     ERRSW1
         BNEZ      PSM2
         M:PRINT   (MESS,SOFM)
         STW,R7    ERRSW1
         B         PSM2
PSM1     EQU       %
         STW,R1    -1,R7
PSM2     EQU       %
         AI,R1     -3
         B         PSMANXT           LOOP UNTIL END OF RFDF STACK
* * * * * * * * * * * * * * * * * *
PSMAGET  LW,R12    0,R1            **GET NEXT ENTRY OF TYPE SPEC**
         AND,R12  =X'002F0000'
         CW,R12    PSMATAB-1,R2
         BE       *R11               RETURN TO CALL POINT IF CORRECT
PSMANXT  LB,R3    *R1              **CHECK END OF RFDF**
         AW,R1     R3
         CW,R1     ENDRFDF
         BE        PSMAEXIT          YES - EXIT
         B         PSMAGET           NO  - GET NEXT ENTRY
* * * * * * * * * * * * * * * * * * *
PSMAEXIT EQU       %
         BAL,15    SRTEXIT2          PERFORM SORT
         BAL,15    MAPFIN3           PERFORM LISTING
         LI,R15    0
         STW,R15   ERRSW1          RESET ERROR SWITCH
         LW,R3     COLINDX           CHECK BUFFER
         BEZ       %+2
         BAL,R11   WRTCLR            CLEAR IT IF USED
         LCI       13
         PLM,R8    MAPSPD
         B        *R15
* * * * * * * * * * * * * * * * * *
         PAGE
******************************************
***** LIST LOAD MAP OR LIBRARY DEF'S *****  BAL,R15  MAPLIST
******************************************           NO ARGUMENTS
*
*  NOTES:    ROUTINE PRINTS THE APPROPRIATE HEADING AND THEN
*            FOLLOWS THE REF/DEF STACK CHAIN STARTING AT  *MAPCHAIN.
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TXLDEF TEXT 'A ******** LDEF - LIBRARY DEFINITIONS LIST        ********'
TXDEF  TEXT  'A *******  DEF - PROGRAM DEFINITIONS MAP           ******'
TXRDEF  TEXT 'A *******  RELOCATABLE DEFINITIONS SORTED BY NAME  ******'
TXSEC   TEXT 'A *******  SECT - PROGRAM SECTIONS MAP             ******'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MAPLIST  EQU       %               **THINGS START TO HAPPEN HERE**
         PSW,R15   MAPSPD            SAVE LINK
         BAL,R11   WRTCLR          **CLEAR BUFFER & MOVE IN HEADINGS**
         LW,R15    VALFLGSV
         STW,R15   VALFLG
         BAL,R14   RMAP
         LI,R15    1
         STW,R15   VALFLG
         LW,R15    NAMFLG
         BEZ       MAPFIN1
         LI,R6     1
         BAL,R14   RMAP2
         B         MAPFIN4
RMAP     EQU       %
         LW,R6     VALFLG
         BEZ       RMAP1
         LCW,R6    LIBFLG            LIB OR MAP INDEX
RMAP2    EQU       %
         FILBUF,R4 (*TXTITLE+5,R6),0,SZTITLE,BALLBUF
RMAP1    EQU       %
         LW,R4     MAPCHAIN          R4 <--NEXT ENTRY POINTER
         LI,R5     X'1FFFF'
         STW,R5    MAPCHAIN
         LI,R5     MAPCHAIN-2
         STW,R5    PRCDSECT
         BAL,R11   WRTCLR            WRITE HEADING (OR SECT TYPE 2)
* * * * * * * * * * * * * * * * * *
MAPLOOP CI,R4      X'1FFFF'          EXIT IF NEXT ENTRY POINTER =1FFFF
         BE         MAPFIN
         LW,R1      R4             R1 <--CURRENT ENTRY POINTER
         LW,R4     2,R1            R4 <-- NEXT ENTRY POINTER
         AND,R4   =X'1FFFF'
         LW,R12    0,R1              GET TYPE
         AND,R12  =X'00070000'
         BNEZ      MAPSEC
MAPDEF   EQU       %
         LW,R15    VALFLG
         BEZ       MAPLOOP
         BAL,R15   PROCNTRY          **PROCESS DEF (MOVE TO CUR BUFF)
         B         MAPLOOP
*
MAPSEC   CI,R4     X'1FFFF'        **PROCESS C/DSEC'S HERE**
         BE        %+4               LAST ENTRY IN CHAIN (TYPE 2)
         LW,R12    0,R4              CHECK NEXT ENTRY TYPE
         AND,R12  =X'00070000'
         BEZ       MAPSC1            DEF --> USER OR LIBR(TYPE 0 OR 1)
         LI,R2     2                 SEC --> NO DEFS (TYPE 2)
         B         MAPSC2
MAPSC1   LW,R2     0,R4              GET LIB FLAG FROM BIT 31
         AND,R2   =X'0001'
MAPSC2   EQU       %                 PROCESS NEW C/DSECT
         LW,R15    VALFLG
         BEZ       %+2
         BAL,R15   NUSECT            BUILD C/DSECT CHAIN
         LW,R5     PRCDSECT
         STW,R1    2,R5
         STW,R4    2,R1
         STW,R4    PRCDSECT
         LW,R15    VALFLG
         BEZ       MAPLOOP
         CI,R2     2
         BE        MAPLOOP-1         PRINT TYPE 2 LINE NOW
         B         MAPLOOP
* * * * * * * * * * * * * * * * * *
MAPFIN   EQU       %
         LW,R15    VALFLG
         BEZ       %+2
         BAL,R11   WRTCLR            FLUSH BUFFER
         LW,R5     PRCDSECT          TERMINATE C/DSECT CHAIN
         LI,R4     X'1FFFF'
         STW,R4    2,R5
         B         *R14
MAPFIN4  EQU       %
         LW,R5     NSK
         BEZ       MAPFIN1
         FILBUF,R4 BA(TXRDEF),0,SZTITLE,BALLBUF
         BAL,R11   WRTCLR            WRITE SORTED BY NAME HEADING
         STW,R15   REGSAV+1
         BAL,R15   MAPFIN3         PERFORM LISTING
         LW,R15    REGSAV+1
MAPFIN1  EQU       %
         PLW,R15   MAPSPD          GET LINK AND EXIT
         B         *R15
MAPFIN3  EQU       %
         LW,R4     LISK              GET TOURNAMENT AREA LOCATION
         LW,R5     NSK                  AND NUMBER OF SORT KEYS
         BEZ       *R15
         STW,R15   REGSAV+2
MAPFIN2  EQU       %
         LW,R1     0,R4
         AI,R1     -3                COMPUTE INITIAL LOCATION DEF ENTRY
         STW,R5    REGSAV
         STW,R4    REGSAV+3
         BAL,R15   PROCNTRY        **PROCESS DEF (MOVE TO CURRENT BUFF)
         LW,R4     REGSAV+3
         LW,R3     =X'00100000'
         STS,R3    *R1               SET ENTRY LISTED BIT IN CNTRL WD
         AI,R4     1
         LW,R5     REGSAV
         BDR,R5    MAPFIN2
         BAL,R11   WRTCLR            FLUSH LAST LINE
         LW,R15    REGSAV+2
         B         *R15            EXIT
* * * * * * * * * * * * * * * * * *
         PAGE
************************************
***** START NEW CSEC/DSEC LINE *****  BAL,R15  NUSECT
***** FOR DEF MAP OR LDEF LIST *****           R1 <-- RFDF ENTRY ADDR
************************************           R2 <-- USER/LIBR/UNKN FLG
*                                                     =0   =1   =2
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
TXSECT   TEXT      'SECT'
TXUSERLN TEXT      '-      USER WDS:          SECT'
TXLIBRLN TEXT      '-      LIBR WDS:          SECT'
TXUNKNLN TEXT      '-      ???? WDS:          SECT'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SZADDR   EQU       5
SZRTHDG  EQU       30
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
BFLSCTAD EQU       BA(LLBUF)+1       LEFT SECTION ADDR
BFRSCTAD EQU       BA(LLBUF)+116     RIGHT
BFLSCTYP EQU       BA(LLBUF)+7       LEFT 'C' OR 'D' CHAR (SECTION)
BFRSCTYP EQU       BA(LLBUF)+122     RIGHT
BFLPROT  EQU       BA(LLBUF)+13      LEFT PROTECTION TYPE IND
BFRPROT  EQU       BA(LLBUF)+128     RIGHT
BFRTHDG  EQU       BA(LLBUF)+97      SECTION HEADING ON RIGHT OF PAGE
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
NUSECT   EQU       %
         LCI       13
         PSM,R8    MAPSPD            SAVE REGISTERS
         LW,R3     COLINDX           CHECK IF BUFFER USED
         BEZ       %+2               YES, ELSE
         BAL,R11   WRTCLR            WRITE & CLEAR LLBUF
* * * * * * * * * * * * * * * * * *
*                                  **MOVE TEXT DATA TO LLBUF**
         FILBUF,R4 BA(TXSECT),0,4,BFLSCTYP+1  /  'SECT' TO LS PAGE
         FILBUF,R4 (*TXRTHDG,R2),0,SZRTHDG,BFRTHDG  /  HEADING ON RS
         FILBUF,R4 BA(TXRDEF),0,1,BALLBUF
* * * * * * * * * * * * * * * * * *
         LW,R3     0,R1            **MOVE PROT TYPE TO LLBUF**
         AND,R3   =X'00C00000'       GET PT FROM CONTROL WORD
         SLS,R3   -22
         LB,R3     BNHX%TAB,R3
         LI,R4     BFLPROT
         STB,R3    0,R4              PT ON LS PAGE
         LI,R4     BFRPROT
         STB,R3    0,R4              PT ON RS PAGE
* * * * * * * * * * * * * * * * * *
         LW,R7     1,R1            **ADDRESS VALUE TO LLBUF**
         BAL,R11   BINHEX
         BAL,R11   LJADDR            HEX ADDR IN R8R9
         FILBUF,R6 %R8,0,SZADDR,BFLSCTAD  /  TO LS PAGE
         FILBUF,R6 %R8,0,SZADDR,BFRSCTAD  /  TO RS PAGE
* * * * * * * * * * * * * * * * * *
         LW,R7     0,R1            **SECTION SIZE TO LLBUF**
         AND,R7   =X'FFFF'
         SLS,R7    1                 NO OF WORDS
         BAL,R11   BINHEX
         BAL,R11   LJADDR            HEX SIZE IN R8R9
         FILBUF,R6 %R8,0,SZADDR,BFRTHDG+1  /  TO RS PAGE SUMMARY
* * * * * * * * * * * * * * * * * *
         LW,R3     0,R1            **PROCESS AS CSEC OR DSEC**
         AND,R3   =X'00070000'       TYPE FROM CONTROL WORD
         SLS,R3   -16
         LI,R5     C'C'
         CI,R3     6
         BE        %+2
         AI,R5     1                 DSECT ONLY
         LI,R4     BFLSCTYP
         STB,R5    0,R4              'C' OR 'D' TO LS PAGE
         LI,R4     BFRSCTYP
         STB,R5    0,R4              'C' OR 'D' TO LS PAGE
         CI,R5     C'C'
         BE        NSEXIT            EXIT IF CSECT
         BAL,R15   PROCNTRY        **PROCESS SYMBOL IN DSECT ENTRY**
NSEXIT   LCI       13
         PLM,R8    MAPSPD
         B        *R15
         PAGE
***************************************
***** ENTER CURRENT REF/DEF IN LL *****  BAL,R15  PROCNTRY
***** BUFFER & WRITE IF FULL      *****           R1 <-- RFDF ENTRY ADDR
***************************************           R5-R7  VOLATILE
*
*                  REF/DEF VALUE = 0B0AAAAA       B = BYTE DISPL
*                                             AAAAA = WORD ADDR
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
BFADDR   DATA      BA(LLBUF)+16,BA(LLBUF)+36,BA(LLBUF)+56,BA(LLBUF)+76
BFBYTE   DATA      BA(LLBUF)+22,BA(LLBUF)+42,BA(LLBUF)+62,BA(LLBUF)+82
BFFLG    DATA      BA(LLBUF)+24,BA(LLBUF)+44,BA(LLBUF)+64,BA(LLBUF)+84
BFSYM    DATA      BA(LLBUF)+25,BA(LLBUF)+45,BA(LLBUF)+65,BA(LLBUF)+85
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
PROCNTRY EQU       %
         LCI       13
         PSM,R8    MAPSPD            SAVE REGISTERS
         LI,R4     12
         LB,R4    *R1,R4             BYTE COUNT FOR SYMBOL IN R4
         LW,R3     R4                  1-11 -- 1 COL  12-31 -- 2 COL
         AI,R3     8                  32-51 -- 3 COL  52-63 -- 4 COL
         DW,R3    =20
         AI,R3     1               R3 <-- NO LLBUF COLS REQD
         LW,R5     COLINDX
         AW,R5     R3
         CI,R5     4               **CHECK IF REQD COLS AVAIL**
         BLE       PYAVAIL           YES
         BAL,R11   WRTCLR            NO - CLEAR LLBUF
PYAVAIL  LW,R2     COLINDX         R2 <-- COLUMN INDEX
* * * * * * * * * * * * * * * * * *
         LW,R5     R1              **MOVE SYMBOL TO LLBUF**
         SLS,R5    2                 BA(RFDF ENTRY) IN R5
         FILBUF,R6 *R5,13,*R4,(*BFSYM,R2)  /  SYMBOL TO LLBUF
* * * * * * * * * * * * * * * * * *
         LW,R4     0,R1            **CHECK ENTRY TYPE**
         LW,R7     R4
         AND,R7    =X'00030000'
         CW,R7     =X'00030000'      DSECT
         BE        %+3                  YES
         CW,R4    =X'00070000'     R4 <-- RFDF ENTRY CONTROL WORD
         BANZ      PYEXIT            NO VALUE (PREF OR SREF)
         LW,R7     1,R1
         BAL,R11   BINHEX            R8R9 <-- HEX VALUE '0B0AAAAA'
         CW,R4    =X'00200000'       CHECK IF ABS
         BAZ       PYDEF             NO
         BAL,R11   ABSVAL            YES - CLEAR HI ORDER ZEROES
         LI,R12    8                 SAVE BYTE CNT IN R4
         B         PYVALMV
PYDEF    LW,R5     LIBFLG          **CHECK IF LIBR LM**
         BNEZ      PYEXIT            YES - IGNORE VALUE OF DEF
         LH,R5     R8              **MOVE VALUE TO LLBUF**
         LW,R6     BFBYTE,R2
         STB,R5    0,R6              BYTE DISPL 'B' TO LLBUF
         BAL,R11   LJADDR            LEFT JUST ADDR IN R8R9
         LI,R12    5                 BYTE CNT
PYVALMV  FILBUF,R6 %R8,0,*R12,(*BFADDR,R2) 'AAAAA'/0B0AAAAA' TO LLBUF
* * * * * * * * * * * * * * * * * *
         CW,R4    =X'00200000'     **CHECK FOR FLAGS**
         BANZ      PYEXIT            ADEF
         LI,R7     C'*'
         LW,R5     BFFLG,R2          BA(FLAG IN LLBUF)
         CW,R4    =X'00000002'
         BAZ       %+2
         LI,R7     C' '              USED FLAG
         CW,R4    =X'00100000'
         BAZ       %+2
         LI,R7     C'+'              DDEF FLAG
         STB,R7    0,R5              MOVE FLAG TO LLBUF
* * * * * * * * * * * * * * * * * *
PYEXIT   AWM,R3    COLINDX         **INCR COLUMN INDEX - OMIT CHECK**
         LCI       13
         PLM,R8    MAPSPD            RESTORE REGISTERS
         B        *R15               EXIT
         PAGE
**************************************
***** BIN/HEX CONVERSION ROUTINE *****  BAL,R11  BINHEX
**************************************
*                                                R7 <-- DATA TO CONV (BIN)
*                                                R8 <-- 1ST HALF HEX
*                                                R9 <-- 2ND HALF HEX
*                                                R11<-- LINK
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
BNHX%TAB TEXT      '0123456789ABCDEF'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
BINHEX   EQU       %
         LI,R5    -8
BNHX1    LI,R6     0               ** CONVERT DIGIT TO CHAR **
         SLD,R6    4
         LB,R6     BNHX%TAB,R6
         STB,R6    R10,R5
         BIR,R5    BNHX1
         B        *R11
********************************************
***** LEFT JUSTIFY BIN/HEX ADDR RESULT *****  BAL,R11  LJADDR
********************************************           R8R9 <-- HEX VALU
*                                                      R11  <-- LINK
*
LJADDR   SLD,R8    24              **ENTER HERE FOR  DEF OR DDEF**
ABSVAL   LI,R5    -8               **ENTER HERE FOR ADEF**
LJAD1    LB,R6     R10,R5
         CI,R6     C'0'
         BNE      *R11
         LI,R6     C' '              REPLACE HIGH ZEROES WITH BLANKS
         STB,R6    R10,R5
         CI,R5    -2                 EXIT BEFORE LOW ORDER DIGIT
         BE       *R11
         BIR,R5    LJAD1
*********************************************
***** WRITE CONTENTS OF LLBUF AND CLEAR *****
*********************************************
*                                    BAL,R11  WRTCLR
*                                             NO ARGUMENTS
WRTCLR   EQU       %
         M:WRITE   M:LL,(BUF,LLBUF),(SIZE,133),(WAIT)
CLRBUF   LI,R7     C' '
         STB,7    7
         LD,R8     R0                SAVE R0,R1
         FILBUF,0  0,%R7+3,133,BALLBUF    CLEAR THE BUFFER
         LD,R0     R8                RESTORE R0,R1
         LI,R10    0                 RESET COLUMN INDEX
         STW,R10   COLINDX
         B        *R11
         PAGE
****************************************
***** MAP CONTROL CARD INTERPRETER *****  BAL,R15  MAPCCI
****************************************
*
*  RECOGNIZES ONLY THE OPTIONS (LIB),(SUMM),(LMN,... )
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CCERMSG  TEXTC     '%%%%% PROCESSOR CALLING CARD IN ERROR %%%%%'
CCKEYW   TEXT      'LIB '          (LIB) CC OPTION
         TEXT      'SUM '          (SUMM) CC OPTION
         TEXT      'LMN '          (LMN,... ) CC OPTION
         TEXT      'NAM '            (NAME) CC OPTION
         TEXT      'VAL '            (VALUE) CC OPTION
         TEXT     'NOL '            (NOLIB) CC OPTION - DON'T LIST LIB
*                                   .. DEFS
         TEXT     'NOU '            (NOUNUSEDLIB) CC OPTION - DON'T LIST
*                                   .. UNUSED LIB DEFS
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
MAPCCI   EQU       %               **SAVE REGISTERS & GET CC**
         LCI       13
         PSM,R8    MAPSPD
         LCI      2
         LM,R8    J:CCBUF           L/1ST 2 WDS OF COMMAND BUFFER
         M:READ    M:C,(BUF,CCBUF),(SIZE,80),(WAIT)
         CD,R8    TXDATA            C/1ST 2 WDS OF COMMAND W/!DATA
         BNE      %+2               BNE; NOT !RUN (LMN,MAP)/!DATA
         M:WRITE  M:LL,(BUF,CCBUF),(SIZE,80),(WAIT)    PRINT COMMAND
         STW,R1    REGSAV+1
         STW,R2    REGSAV+2
         LI,R3     -80
CCNXTOP  EQU       %
         AI,R3     1
CCN1     EQU       %
         LB,R4     CCBUF+20,R3
         CI,R4     C'.'
         BE        CCEXIT          TERMINATOR FOUND - EXIT
         CI,R4    X'15'
         BE       CCEXIT
         CI,R4    X'0D'
         BE       CCEXIT
         CI,R4     C'('
         BE        CCN2            LOCATE KEY WORD
         BIR,R3    CCN1
         B         CCEXIT          END OF CC - EXIT
CCN2     EQU       %             **GET KEY WORD**
         STW,R3    R1              SAVE FIRST BYTE ADR OF KEYWORD
         AI,R1     BA(CCBUF)+83
         LI,R2     2
         LI,R4     3
         LI,R5     C' '
         LB,R0     0,R1            MOVE 1ST 3 CHAR TO R5
         AI,R1     -1
         STB,R0    R5,R2
         AI,R2     -1
         BDR,R4    %-4
         AI,R3     1
CCN3     EQU       %
         LB,R4     CCBUF+20,R3
         CI,R4     C')'
         BE        CCN4
         CI,R4     C','
         BE        CCN4
         BIR,R3    CCN3
         B         CCERR
CCN4     EQU       %
         LI,R4     7
         CW,R5     CCKEYW-1,R4
         BE        CCOPT-1,R4
         BDR,R4    %-2
         B         CCERR             INVALID CC KEYWORD
* * * * * * * * * * * * * * * * * *
CCOPT    B         CCLIB
         B         CCSUM
         B         CCLMN
         B         CCALP
         B         CCVAL
         B        CCNOL
         B        CCNOU
* * * * * * * * * * * * * * * * * *
CCENDOP  EQU       %
         LB,R4     CCBUF+20,R3   **GO TO END OF CURRENT OPTION**
         CI,R4     C')'
         BNE       CCERR           INVALIE PUNC
         AI,R3     1
         LB,R4     CCBUF+20,R3
         CI,R4     C' '
         BE        CCEXIT          TERMINATOR FOUND
         CI,R4     C','
         BE        CCNXTOP         ANOTHER PARAM FOLLOWS
         CI,R4     C'.'
         BE        CCEXIT          TERMINATOR FOUND
         CI,R4    X'15'
         BE       CCEXIT
         CI,R4    X'0D'
         BE       CCEXIT
         B         CCERR
* * * * * * * * * * * * * * * * * *
CCLIB    LI,R4     'CC'            **SET LIBRARY FLAGS**
         STW,R4    CCLIBX            CC PARAM PRESENT
         LI,R4     1
         STW,R4    LIBFLG            LIBR LM
         B         CCENDOP
* * * * * * * * * * * * * * * * * *
CCSUM    LI,R4     'CC'            **RESET MAP FLAG**
         STW,R4    CCSUMX            CC PARAM PRESENT
         LI,R4     0
         STW,R4    MAPFLG            NO MAP - SUMMARY ONLY
         B         CCENDOP
* * * * * * * * * * * * * * * * * *
CCLMN    LI,R4     'CC'            **GET LMN AND MOVE TO M:EI PLIST**
         STW,R4    CCLMNX            CC PARAM PRESENT
         BAL,R11   CCGETPRM          GET THE NAME (R12)= MBS SOURCE
         CI,R14    31
         BG        CCERR             LMN > 31 CHAR
         LI,R13    BA(EILMN+1)+1                  (R14)= MBS LENGTH
         LI,R15    WA(EILMN+1)
         STB,R14  *R15               TEXTC FORMAT FOR NAME
         BAL,R11   CCMOVPRM          MOVE THE NAME
         BAL,R11   CCGETPRM        **GET ACN AND MOVE TO PLIST**
         LI,R13    BA(EIACN+1)
         LI,R15    WA(EIACN+1)
         BAL,R11   CCMOVPRM
         LI,R11   2                 L/2; # OF WDS IN THIS ENTRY
         STB,R11  *R15,R5           S/# WDS
         BAL,R11   CCGETPRM        **GET PASSWORD & MOVE TO PLIST**
         LI,R13    BA(EIPASS+1)
         LI,R15    WA(EIPASS+1)
         BAL,R11   CCMOVPRM
         B         CCENDOP
CCALP    EQU       %                 **SET ALPHA SORTED SYMBOL FLAG**
         LI,R4     'CC'
         STW,R4    CCNAMX            CC PARAM PRESENT
         LI,R4     1
         STW,R4    NAMFLG            NAME FLAG
         B         CCENDOP
CCVAL    EQU       %                 ** SET VALUE FLAG **
         LI,R4     'CC'
         STW,R4    CCVALX            CC PARAM PRESENT
         LI,R4     1
         STW,R4    VALFLG
         B         CCENDOP
* * * * * * * * * * * * * * * * * *
CCNOL    LI,R4    1                 L/1
         STW,R4   FLNOLIB           SET NO LIB DEF LIST FLAG
         B        CCENDOP
* * * * * * * * * * * * * * * * * *
CCNOU    LI,R4    1                 L/1
         STW,R4   FLNOUNLB          SET NO UNUSED LIB DEF LIST FLAG
         B        CCENDOP
* * * * * * * * * * * * * * * * * *
CCGETPRM EQU       %             **CHECK IF LAST PARAM**
         LB,R4     CCBUF+20,R3
         CI,R4     C')'
         BE        CCENDOP         NO MORE PARAM IN OPTION
CCGET2   EQU       %
         AI,R3     1
         STW,R3    R12
         AI,R12    BA(CCBUF)+80  **GET FIRST BYTE ADDR PARAM**
CCGET3   EQU       %
         LB,R4     CCBUF+20,R3
         CI,R4     C')'
         BE        CCGET4
         CI,R4     C','
         BE        CCGET4
         BIR,R3    CCGET3
         B         CCERR
CCGET4   EQU       %
         STW,R3    R13
         AI,R13    BA(CCBUF+20)    ADDR OF LAST
         SW,R13    R12
         STW,R13   R14           **LENGTH OF PARAM IN R14**
         B         *R11
* * * * * * * * * * * * * * * * * *
CCMOVPRM EQU       %             **MOVE PARAM AS SPECIFIED TO PLIST**
         LW,R4     R14
         LW,R1     R12
         LW,R2     R13
         LB,R0     0,R1
         AI,R1     1
         STB,R0    0,R2
         AI,R2     1
         BDR,R4    %-4
         SLS,R14   -2              (R13)=DESTN BA
         AI,R14    1               (R14)=LENGTH
         LI,R5     -2              (R1)=WA(DESTN)
         STB,R14   *R15,R5       **PLUG NO WORDS USED IN CNTRL WD**
         B         *R11
* * * * * * * * * * * * * * * * * *
CCERR    M:PRINT   (MESS,CCERMSG)
         BAL,R11   WRTCLR            PRINT BAD CC & EXIT
         LI,R4     '%'
         AI,R3     BA(CCBUF)+80
         STB,R4    0,R3              FLAG THE ERROR
         BAL,R11   WRTCLR
         LW,R2    =C'ERR'            SET ERROR FLAG FOR M:ERR
         B         MAPEXIT           TOO BAD -- BYE BYE!
* * * * * * * * * * * * * * * * * *
CCEXIT   EQU       %
         LW,R8     MAPFLG
         OR,R8     NAMFLG
         OR,R8     VALFLG
         STW,R8    MAPFLG
         LW,R8     CCLMNX
         CI,R8     'CC'
         BNE       CCEXIT1
         LW,R8     NAMFLG
         OR,R8     VALFLG
         BNEZ      CCEXIT1
         LI,R8     1
         STW,R8    VALFLG
CCEXIT1  EQU       %
         LW,R1     REGSAV+1
         LW,R2     REGSAV+2
         LW,R8     VALFLG
         STW,R8    VALFLGSV
         LCI       13
         PLM,R8    MAPSPD
         B        *R15
* * * * * * * * * * * * * * * * * *
         PAGE
****************************************
***** SEGMENT SUMMARY CALCULATIONS *****  BAL,R15  SEGEVAL
****************************************           R1 <--CURRENT SEG ADR
*
*  HI & LO BOUNDARIES FOR EACH PROT TYPE & PROT TYPE SIZES
*  ARE EVALUATED AND STORED IN TSTACK
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         BOUND     8
ZEROS    TEXT      ' 0000'
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SEGEVAL  EQU       %               **ENTERS HERE**
         LCI       13
         PSM,R8    MAPSPD            SAVE REGISTERS
         LI,R2     9                 10 POINTER
         LI,R3     3                 STORE HEX INDEX
SGLNXT   LW,R4    *R1,R2             SIZE
         INT,R13   R4                LO BOUND IN R13
         LH,R4     R4                SIZE IN R4
         BEZ       SGLZERO
         SLS,R4    1                 SIZE IN WORDS
         SLS,R13   1                 DA(LO BOUND)
         LW,R7     R13
         AW,R7     R4
         AI,R7    -1                 HI BOUND IN R7
         BAL,R11   BINHEX
         BAL,R11   LJADDR
         STD,R8    SEGHI-2,R3        SAVE HEX HI BOUND
       LW,R7       R13
         BAL,R11   BINHEX
         BAL,R11   LJADDR
         STD,R8    SEGLO-2,R3        SAVE HEX LO BOUND
         LW,R7     R4
         BAL,R11   BINHEX
         BAL,R11   LJADDR
         STD,R8    SEGSZ-2,R3        SAVE HEX SIZE
SGLDECR  AI,R2    -2
         BDR,R3    SGLNXT          **PROCESS NEXT PROT TYPE**
         LCI       13              **EXIT**
         PLM,R8    MAPSPD
         B        *R15
* * * * * * * * * * * * * * * * * *
SGLZERO  LD,R8     ZEROS           **STORE ZEROS FOR NULL PT'S**
         STD,R8    SEGHI-2,R3
         STD,R8    SEGLO-2,R3
         STD,R8    SEGSZ-2,R3
         B         SGLDECR           EXIT - CONTINUE NEXT PT
* * * * * * * * * * * * * * * * * *
         PAGE
*********************************************
*****MOVE REQUESTED SUMMARY TO LL BUFFER*****  BAL,R1  VALMOVE
*********************************************          R5 <-- LINE INDEX
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
BFSGDATA DATA      BA(LLBUF)+38,BA(LLBUF)+53,BA(LLBUF)+68
TXSGINFO DATA      WA(SEGSZ),WA(SEGLO),WA(SEGHI)
TXHDG567 DATA      BA(TXSZLN7),BA(TXLOLN6),BA(TXHILN5)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
VALMOVE  EQU       %               **ENTER HERE**
         PSW,R11   MAPSPD            SAVE LINK
         FILBUF,R10 (*TXHDG567-1,R5),0,SZHDNGS,BFHDNGS  /  TEXT TO LLBUF
         LI,R6     3                 START WITH PT 10
         LW,R7     TXSGINFO-1,R5     GET ADDR OF DATA FOR CURRENT LINE
         AI,R7    -2
VMNEXT   LD,R8    *R7,R6             GET DATA IN R8R9
         FILBUF,R10 %R8,0,5,(*BFSGDATA-1,R6)  /  MOVE TO LLBUF
         BDR,R6    VMNEXT            NEXT PT
         PLW,R11   MAPSPD            RESTORE LINK
         B        *R11               EXIT
* * * * * * * * * * * * * * * * * *
         END       MAP
