*        704725   SIGMA 5/7         BPM M:INIT1
         SYSTEM   SIG7FDP
MODE     EQU      1
         DO       MODE=1
SD       EQU      1
         ELSE
SD       EQU      0
         FIN
DEBUG    EQU      0
CFU      EQU      1
BPMLIB   EQU      0                 1=BUILD BPM LIB UNDER CP-V
*BPMLIB=1 MUST BE USED ONLY WITH MODE=1 AND THEN JUST TO
*FORM A LOADER TO USE IN BUILDING BPM LIBRARIES UNDER CP-V.
         DO       MODE=0
NAMELIST EQU      1
         ELSE
NAMELIST  EQU     0
         FIN
         CSECT    1
         DEF      MCI1
MCI1     EQU      %
         DEF      INIT1
         REF      M2,M3,M4,M5,M6,M7,M8,M15,M16,M17,M20,M32,MN1,MN2,;
                  MN3,MN4,MN8,MN9,MN16,M826,MSKFTYPE,Y1,Y2,Y4,Y8,Y01,;
                  Y02,Y08,Y0C,Y0F,Y001,Y002,Y004,Y008,Y00C,;
                  Y001F,Y00FFFF,Y0001,Y0002,Y0003,Y0004,Y0005,Y0006,;
                  Y0007,Y0008,Y000B,;
                  Y0301,Y0303,Y0343,Y0304,Y0405,Y0502,;
                  Y00FF,YFF00FFFF,Y000F,YFFF0FFFF,TXF:,TXM:,;
                  TXLIB,TX6F4:,TXASTL,TXHEAD,;
                  HEADWD,TXTREE,STK2,RFDFSTK2,PASSCODE
         REF      READLM,WRITELM,CLOSE,M:LL,M:EF,M:LM,M:DIC
         REF      DECLSTK,DECLSTK1,DECLBAS,RFDFBAS,RFDFSTK,;
                  RFDFSTK1,EXPRSTK,EXPRSTK1,EXPRBAS,BSEG1,BSEG2,;
                  CSEG1,CSEG2,CROM1,CROM2,CRFDF1,CRFDF2,CURBYTE,;
                  RCDSIZE,SEQNUM,SEVLEV,XSL,LASTCARD,BUF,BUF2,;
                  BFR,TEMPPTR,TREEPTR,FCOUNT,FTABLE,;
                  ERRTAB,ERRSTK,TCBSIZE,TCBPTR,FTAB,RSEG00,;
                  RSEG01,RSEG10,RREL00,RREL01,RREL10,CSEG00,;
                  CREL00,CREL01,CREL10,MAX00,;
                  MAX01,MAX10,DLOC,PLOC,SLOC,LOC,START,LOCCT,;
                  LOADBAS,MODBAS,RELDBAS,MBIAS,FBIAS,BIAS,;
                  RDIG,MODSIZ,NOTLLM,MAXRFDF,MAXEXPR,TOPOMEM,;
                  OPENEF,READEF,OPENDIC,USID
         REF      LOCWD
         REF      ROOTFLG,LIBFLG,HEADADR
         REF      HEADSIZE
         REF      LMNSW
         REF      CHKLM
         REF      ER32
         REF      PBUF
         REF      TEMPSIZE,DECLSIZE,EXPRDIS,;
                  RFLOADIS,RFDFDIS,NXROMDIS,SBLNKDIS,ROM1DIS,;
                  TMPSZDIS,NUNSTDIS,00DIS,01DIS,10DIS,NRWACCT,;
                  TREESIZE,TREEDIS,BIASDIS,LOWLIMDS,FCOMDIS,;
                  ERRDIS,LMNDIS,USACTDIS,LMPASS,LMEXPDIS,;
                  RDACT1,ROMSIZE,TCBBLNK
         REF      PASS3RET
         DEF      NOASGNS
         REF      M:LIB
         REF      DSTK2,GETSEG,ER8
         REF      ER10X
         REF      ER20
         REF      TXM:DO
         REF      LIBER
         REF      BREFBIT,TXS:OVRL,DOREFPTR,RFLDTBSZ
         REF      TRESIZ
         REF      TSTACK
         REF      ENTFLAG
         REF      ERFLAG
         DO       MODE=1
         REF      J:JIT
         REF      JB:BCP
         REF      J:EUP
         REF      ALOCCT
         REF      CORELIB
         REF      MREFLAG,TOVBPSD,TOVBALPSD
         DO       CFU=1
         REF      TXM:STAR,CFUPTR
         FIN
         FIN
         REF      M:MSG
         REF      ER7X
         REF      RFLDMODS
         REF      CODE
         DO       SD=1
         REF      SYMBOLTB
         FIN
         DO       MODE=0
         REF      CJOB
         FIN
         DO       MODE=0
         REF      SNM:LM
         FIN
         PAGE
BE       EQU      X'683'
BNEZ     EQU      X'693'
BGE      EQU      X'681'
BGEZ     EQU      X'681'
BL       EQU      X'691'
BAZ      EQU      X'684'
BCR8     EQU      X'688'
BCR10    EQU      X'68A'
BLE      EQU      X'682'
BEZ      EQU      X'683'
BANZ     EQU      X'694'
*        QUIT     ERROR,CONDITION,OUTPUT
         REF      MESSAGE
QUIT     CNAME
         PROC
LF       EQU      %
         DO       NUM(AF)=3
         DO       AF(2)~=0
         GEN,12,20  AF(2),%+4+MODE
         FIN
         STW,AF(3) CODE
         ELSE
         DO       AF(2)~=0
         GEN,12,20  AF(2),%+3+MODE
         FIN
         FIN
         LI,R3    AF(1)
         DO       MODE=1
         LI,R4    AF(3)=SR3
         FIN
         B        MESSAGE
         PEND
SNAP     CNAME
         PROC
LF       CAL1,3   %+1
         DATA     0,AF(1),AF(2),AF(3),AF(4),X'02000000'
         PEND
         PAGE
*                 SYMBOLIC 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
SR1      EQU      8
SR2      EQU      9
SR3      EQU      10
SR4      EQU      11
D1       EQU      12
D2       EQU      13
D3       EQU      14
D4       EQU      15
         PAGE
*                 IMMEDIATE CONSTANTS FOR LOADER.
K0       EQU      0
K1       EQU      1
K2       EQU      2
K3       EQU      3
K4       EQU      4
K5       EQU      5
K6       EQU      6
K7       EQU      7
K8       EQU      8
K9       EQU      9
KA       EQU      X'A'
KB       EQU      X'B'
KC       EQU      X'C'
KD       EQU      X'D'
KE       EQU      X'E'
KF       EQU      X'F'
K10      EQU      X'10'
K11      EQU      X'11'
K12      EQU      X'12'
K13      EQU      X'13'
K14      EQU      X'14'
K15      EQU      X'15'
K16      EQU      X'16'
K17      EQU      X'17'
K19      EQU      X'19'
K1C      EQU      X'1C'
K1E      EQU      X'1E'
K1F      EQU      X'1F'
K20      EQU      X'20'
K24      EQU      X'24'
K39      EQU      X'39'
K3C      EQU      X'3C'
K3F      EQU      X'3F'
K40      EQU      X'40'
K43      EQU      X'43'
K6C      EQU      X'6C'
K78      EQU      X'78'
K80      EQU      X'80'
KFF      EQU      X'FF'
K100     EQU      X'100'
K120     EQU      X'120'
K1FF     EQU      X'1FF'
K168     EQU      X'168'            * D360
KNX400   EQU      -X'400'
KNX600   EQU      -X'600'
K200     EQU      X'200'
K202     EQU      X'202'
K256     EQU      X'256'
K800     EQU      X'800'
KC00     EQU      X'C00'
K2000    EQU      X'2000'
K3FFF    EQU      X'3FFF'
K7FFF    EQU      X'7FFF'
K8000    EQU      X'8000'
KFF00    EQU      X'FF00'
K10000   EQU      X'10000'
K1FFFF   EQU      X'1FFFF'
K20000   EQU      X'20000'
KN1      EQU      -1
KN2      EQU      -2
KN3      EQU      -3
KN4      EQU      -4
KN8      EQU      -8
KN16     EQU      -16
KN100    EQU      -100
KTE      EQU      'E'
TREEADR  EQU      PBUF+8
CSEGADR  EQU      PBUF+12
CSEGNO   EQU      PBUF+13
         PAGE
INIT1    EQU      %
*                                   THIS ROUTINE GETS ALL AVAILABLE DATA
*                                   PAGES. R6 CONTAINS THE SIZE OF
*                                   THE LOCCT, TREE AND ROM TABLES
*                                   (PROVIDED BY CCI). IT CALCULATES
*                                   STACK POINTER
*                                   DOUBLE WORDS FOR THE DECLARATION,
*                                   REF/DEF AND EXPRESSION STACK.
*                                   IT ALSO SAVES THE USER ID, GIVEN
*                                   IN R7.
*                                   POINTER TO THE TEMPSTACK.
         LI,R1    -TEMPSIZE       ZERO
         LI,R0    0               DYNAMIC DATA
         STW,R0   DECLSTK+TEMPSIZE,R1   AND TEMPSTACK
         BIR,R1   %-1
         LI,R0    TSTACK+1          SET UP TSTACK DW
         LW,R1    STK2
         STD,R0   TSTACK
         LI,R0    TSTACK
         DO       DEBUG~=0
         LI,R7    0
         FIN
         STW,R7   ENTFLAG           SAVE FLAG FROM CCI/PASS3
         DO       MODE=1
         LW,R7    J:JIT
         FIN
         AND,R7   M16
         SLS,R7   8
         STW,R7   USID
         STW,SR1  PASS3RET          SAVE ID FOR POSSIBLE RETURN TO PASS3
         PSW,SR3  *R0               SAVE RETURN TO LDR
         DO       MODE=0
         LI,R1    0
         CI,R5    KC
         BLE      %+2
         LI,R1    -1
         STW,R1   TRESIZ            SET OVERLAY FLAG
         FIN
         DO       MODE=1
*                                   SET MEMORY VIOLATION TRAP CONTROL
         CAL1,8   M:TRAP
         FIN
         CAL1,8   M:GP              GET ALL POSSIBLE CORE
         LW,R1    SR1
         MI,R1    K200              NO. OF WORDS GOTTEN.
         STW,SR2  LOCCT
         LCW,R2   R1                ZERO
         AW,R1    SR2               GOTTEN
         LI,R3    0                 CORE.
         STW,R3   *R1,R2
         BIR,R2   %-1
         DO       MODE=1
         LW,R1    J:EUP
         SLS,R1   9
         AI,R1    X'1FE'
         FIN
         DO       MODE=0
         AI,R1    KN2
         FIN
         STW,R1   TOPOMEM
         PAGE
         DO       DEBUG=1
*THIS ROUTINE READS THE LOCCT
* WHICH WAS FORMED PREVIOUSLY BY THE LOCCT PROCESSOR.
* THE ROUTINE IS INCLUDED HERE UNDER THE ASSEMBLY PARAMETER
* DEBUG=2 AS A CONVENIENCE FOR !RUNNING THE LOADER AS A USER
* RATHER THAN AS A PROCESSOR.
READLOCCT EQU     %
         PSW,SR2  *R0
         PSW,D4   *R0
         REF      M:BI,PRINT
         CAL1,8   IGTRAP
         LI,R6    0                 SIZE.
         LI,D4    -1                CHECKSUM.
         LW,D2    LOCCT             BUFFER.
PASS3LCT EQU      %
         LW,R1    *D2
         CAL1,1    READBI
         AI,D4    1
         LB,SR2   *D2               GET CODE
         CI,SR2   X'3E'
         BE       %+3
         CI,SR2   X'1E'
         BNE      BADLCT            BAD CODE
         LI,R3    1
         LB,R2    *D2,R3            GET SEQ.
         CW,R2    D4
         BNE      BADLCT            BAD SEQ.
         LI,R3    2
         LB,R2    *D2,R3            GET CHECKSUM
         LI,R4    0
         STB,R4   *D2,R3            SET CHECKSUM IN IMAGE=0
         LI,R3    3
         LB,R3    *D2,R3            GET BYTE COUNT.
         AW,R6    R3                ACCUMULATE TOTAL.
         AI,R6    -4                RECORD SIZE (BYTES).
         SLS,R3   -2                MAKE WORDS.
         PSW,R3   *R0
         AI,D2    -1
         AW,R4    *D2,R3            FORM A WORD
         BDR,R3   %-1               CHECKSUM IMAGE.
         LH,R5    R4
         AND,R4   M16
         CI,R5    0
         BEZ      %+3               TAKE CARE OF OVERFLOW.
         AW,R4    R5
         B        %-5
         SLD,R4   -8                FORM A BYTE
         SLS,R5   -8                CHECKSUM OF IMAGE.
         CI,R4    0
         BEZ      %+3
         AH,R4    R5
         B        %-5
         SLD,R4   16
         CW,R4    R2
         BNE      BADLCT            BAD CHECKSUM.
         PLW,R3   *R0
         AI,D2    1
         STW,R1   *D2               RESTORE LAST WORD OF PREV. IMAGE.
         AW,D2    R3
         AI,D2    -1
         CI,SR2   X'1E'
         BNE      PASS3LCT
         LI,R5    M:BI
         CAL1,1   CLOSE
         PLW,D4   *R0
         PLW,SR2  *R0
         B        CONTINUE
BADLCT   EQU      %
         LI,R5    BAD
         CAL1,9   2
IGTRAP   GEN,8,7,17  X'14',0,TRAP
         GEN,24,8 0,3
READBI    EQU     %
         GEN,8,24 X'10',M:BI
         GEN,4,28 X'F',0
         DATA     BADLCT
         DATA     BADLCT
         DATA     X'8000000D'
         DATA     120
BAD      TEXTC    'BAD LOCCT FILE'
CONTINUE EQU      %
         SLS,R6   -2
         MTW,1    LOCCT
         FIN
         PAGE
         DO       DEBUG=0
*                                    GET THE LOCCT,TREE AND ROM TABLES
*                                   FROM: ABS AREA ON RAD (BPM)
*                                     OR JIT (CP-V)
         DO       MODE~=1
         LW,R5    LOCCT
         SLS,R6   2
         LI,R7    36
         CAL1,1   RDABS            READ FROM ABS AREA
         SLS,R6   -2
         ELSE
         LI,R1    1
         LB,D3    JB:BCP,R1
         AI,D3    1                  GET LOCATION OF LOCCT
         SLS,D3   9                 FROM JIT
         LW,R6    *D3               PICK UP SIZE OF LOCCT IN WORDS.
         STW,R6   ENTFLAG
         AND,R6   M16
         STW,R6   BUF
         LW,R5    R6
         AI,R5    KNX600
         BLZ      ENUFF             IF INITIAL 4 PAGES IS NOT ENOUGH,
         CAL1,8   M:GP2               GET ADDITIONAL PAGES REQUIRED
         AI,R5    KNX400
         BGEZ     %-2
ENUFF    EQU      %
         LW,R5    LOCCT
         AI,R5    -1
         LW,R2    *D3,R6            MOVE FROM JIT
         STW,R2   *R5,R6
         BDR,R6   %-2
         LW,R6    BUF
         FIN
         FIN
         PAGE
*                                   INITIALIZE STACK POINTER DOUBLEWORDS.
         LW,SR2   LOCCT
         AW,SR2   R6                COMPUTE DECL STACK
         AI,SR2   1                 DOUBLEWORD.
         AND,SR2  MN1
         STW,SR2  DECLBAS           BASE
         AI,SR2   KN1
         LW,R2    SR2
         LW,R3    DSTK2
         STD,R2   DECLSTK           AND D.W.
         AI,R2    DECLSIZE          COMPUTE RFDF STACK
         LW,R3    RFDFSTK2
         STD,R2   RFDFSTK           D.W.
         LW,SR2   R2
         AI,SR2   K1
         STW,SR2  RFDFBAS           AND BASE.
         LW,R2    TOPOMEM
         AI,R2    K1
         LI,R3    K0                COMPUTE EXPR STACK
         STD,R2   EXPRSTK           D.W.
         AI,R2    KN1
         STW,R2   EXPRBAS           AND BASE.
         LI,R4    BUF
         STW,R4   BFR
         PAGE
         LW,R5    LOCCT
         STW,D4   FCOMDIS,R5
         LW,R6    *R5
         STW,R6   LOCWD
         LW,R2    LOCWD        CHECK FOR EXISTING LOAD MODULE
         AND,R2   Y004
         BEZ      NORM         NO
         LW,R2    LOCCT        CHECK IF LIBRARY LM.
         CI,R2    K10
         BAZ      RD%HD        NO--READ HEAD RECORD.
WR%ERR   EQU      %
         PLW,SR3  *R0
         QUIT     ER32,,SR3
RD%HD    EQU      %
         LI,R5    M:LM
         CAL1,1   OPNLM        OPEN DCB FOR LMN.
         LW,R5    SR2
         LI,R6    X'30'        LOAD NUMBER OF WORDS INTO R6
         LI,R7    TXHEAD
         BAL,SR4  CHKLM
         CAL1,1   READLM       READ HEAD RECORD.  R5=BUFFER ADDRESS.
         STW,R5   HEADADR
         INT,R3   2,R5
         SLS,R3   1            LOAD MODULE BIAS.
         STW,R3   BIAS
         INT,R3   5,R5         TREE SIZE IN WORDS.
         AI,R5    HEADSIZE     TREE ADDR (FOLLOWS HEAD)
         STW,R5   TREEADR
         AW,R5    R3
         STW,R5   RFDFBAS      REF/DEF AD(FOLLOWS TREE).
         SLS,R3   2
         STW,R3   TRESIZ       SIZE OF TREE IN BYTES.
         LW,R5    TREEADR
         LW,R6    TRESIZ
         LI,R7    TXTREE       **GET TREE RECORD**
         BAL,SR4  CHKLM
         CAL1,1   READLM       READ TREE RECORD.
         LW,R2    TREEADR
         LI,R3    0
         STW,R2   CSEGADR      CURRENT SEGMENT TREE ADR.
         STW,R3   CSEGNO       CURRENT SEGMENT DISPL IN TREE.
         LI,R3    1
         STW,R3   LMNSW        IF EXISTING LOAD MODULE.
         LW,R1    TREEADR      PLACE TREE ADDRESS INTO R1 TO BE
         AI,R1    1            USED BY FIN--POSITION BEYOND COUNT.
         PLW,SR3  *R0
         B        *SR3
NORM     EQU      %
         LI,R3    0
         STW,R3   LMNSW        SET SWITCH TO INDICATE NORMAL RUN.
         LW,R6    4,R5
         LW,R2    R6
         SLS,R6   -17               GET REF TABLE SIZE
         STW,R6   RFLDTBSZ
         AND,R2   M17
         STW,R2   4,R5              ZAP REF SIZE IN LDBIAS OF THE LOCCT
*                                   ADJUST THE RELATIVE POINTER TO THE
*                                   ATREE AND ROM TABLES TO ACTUAL ADDRESSES
         AWM,R5   1,R5
         AWM,R5   2,R5
         LW,R6    2,R5
         AI,R6    KN1
         AWM,R6   *R6
         MTW,1    *R6
         LW,R2    1,R5
         LW,R1    2,R5
         DO       MODE=1
         CAL1,8   M:FCP             RELEASE ALL COMMON PAGES
         FIN
*                                   ZERO THE LAST 6 WORDS OF EACH
*                                   SEGMENT OF THE TREE TABLE.
ZTREE    LW,R4    R1
         AI,R4    KN1
         LW,R6    R1
         AI,R6    K4
         LI,D1    K0
ZTREE1   LI,R7    K6
         STW,D1   *R6,R7
         BDR,R7   %-1
         AI,R6    KB
         CW,R6    *R4
         BL       ZTREE1
*
*
*                                   MOVE THE M:LM OPEN PLIST ABOVE
*                                   THE TEMPSTACK
         LW,R4    *R0
         LI,R3    LMPLX-LMPL
         LW,R6    LMPL-1,R3
         STW,R6   *R4,R3
         BDR,R3   %-2
*                                   SET UP OPEN PLIST WITH ALL
*                                   PARAMETERS FROM THE LOCCT. USE
*                                   "IDL" IF IT IS A LIBRARY LOAD
*                                   MODULE.
         LW,R6    8,R4
         AND,R6   YFF00FFFF
         STW,R6   8,R4
         LCI      9
         LM,R6    10,R5
         LCI      3
         STM,R6   9,R4
         LI,R7    -1                IF THIS IS A LIBRARY,
         DO       MODE=1
         AND,R6   Y00FFFF           (CORE OR :LIB TYPE),
         CW,R6    :P                INHIBIT CORE LIBRARY
         BNE      ISITLIB
         STW,R7   CORELIB
         DO       SD=1
         STW,R7   SYMBOLTB          SET DONT FORM IST
         FIN
         FIN
ISITLIB  EQU      %
         LW,R6    LOCWD
         CI,R6    K10
         DO       BPMLIB=1
         QUIT     X'34',BANZ        QUIT IF ATTEMPTING TO BUILD
*                                    NON-LIB LMN WITH SPECIAL
*                                    LOADER FOR CP-V USE
         ELSE
         BAZ      NOTLIB
         FIN
         DO       MODE=0
         LW,R6    SNM:LM
         CI,R6    X'FF00'           GET SIGNIFICANCE BYTE FROM M:LM SN
         QUIT     X'2E',BAZ         ABORT LOAD IF SN SPECIFIED
         FIN
         LW,R6    USID
         AW,R6    TXASTL
         STW,R6   9,R4
         LW,R6    NOACCT
         STW,R6   12,R4
         DO       MODE=1
         STW,R7   CORELIB
         FIN
         DO       SD=1
         STW,R7   SYMBOLTB          SET DONT FORM IST
         FIN
NOTLIB   LCI      2
         STM,SR2  13,R4
         STM,SR4  16,R4
         DO       BPMLIB=1
         CI,D2    0
         BNE      EXPIRE
         LW,D2    TXNEVER           DEFAULT EXPIRE FOR BPM='NEVER'
         LW,D3    TXNEVER+1
EXPIRE   EQU      %
         B        EXPROK
         FIN
         STM,D2   19,R4
         DO       MODE=1
         CI,D2    0                 IS FIRST WORD OF EXPIRE DATE ZERO
         BNEZ     EXPROK            BRANCH IF NOT
         LW,D1    R4
         AI,D1    18                  OTHERWISE,
         LI,R3    2                 CLEAR NO. OF SIGNI. WDS IN EXPIRE
         STB,D2   *D1,R3            CONTROL WD IN OPEN FPT
EXPROK   EQU      %
         FIN
         INT,R6   9,R5
         SLD,R6   1
         LW,D1    LOCCT
         AI,D1    K14
         LW,D2    D1
         AW,D2    R6
         LW,R5    R4
         AI,R5    K15
         LI,R3    2
         STB,R6   *R5,R3            SIGNIF. NO. OF WORDS FOR READ ACCTS
         LW,D3    *D1,R6
         STW,D3   *R5,R6
         BDR,R6   %-2
         AI,R5    K11
         STB,R7   *R5,R3            SIGNIF. NO. OF WDS FOR WRITE ACCTS
         LW,D3    *D2,R7
         STW,D3   *R5,R7
         BDR,R7   %-2
         DO       MODE=1
         AI,D2    K2
         LW,D1    D2
         LW,R6    LOCCT
         INT,R7   8,R6              NO. OF UNSAT ACCTS
         SLS,R7   2                   4 WDS PER ACCT
         AW,D1    R7
         LW,D2    D1
         LW,R7    5,R6              NO. OF EXECUTE ACCTS
         LH,R7    R7
         SLS,R7   1                   2 WDS PER ACCT
         AW,D2    R7
         AI,R5    K11
         STB,R7   *R5,R3            SIGNIF. # WDS FOR EX ACCTS
         MTW,0    R7
         BEZ      NOEXACCT
         LW,D3    *D1,R7
         STW,D3   *R5,R7
         BDR,R7   %-2
NOEXACCT AI,R5    K11
         LW,D1    *R6
         CW,D1    Y1
         BANZ     NOEXACT4
         LI,R7    K0
         B        NOEXVEH
NOEXACT4 EQU      %
         LI,R7    K3
         LW,D3    *D2,R7
         STW,D3   *R5,R7
         BDR,R7   %-2
         LI,R7    K3
NOEXVEH  STB,R7   *R5,R3            SIGNIF. # WDS FOR EX VEHICLE
         FIN
         LW,D1    16,R4
         BNEZ     PASSOK
         LI,R6    0
         LI,R7    X'FF00'
         STS,R6   15,R4
PASSOK   LW,R6    M:EF              SAVE ASN FIELD IN
         STW,R6   RSEG00            CASE M:EF HAS BEEN ASSIGNED TO TAPE.
*                                   PREPARE TO READ "DCB" RECORD FROM
*                                   RAD TO DISCOVER WHAT  F: ASSIGN
*                                   CARDS ARE PRESENT. DONT DO THIS
*                                   FOR LIBRARY MODULES
         LW,D4    LOCWD
         CI,D4    X'10'
         BANZ     NOASGNS5
         DO       MODE~=1
         STW,R2   LMPLX-LMPL+1,R4
         LW,R5    RFDFSTK
         SLS,R5   -9                COMPUTE BUFFER AREA ON
         AI,R5    2                 PAGE BOUNDARY, TWO PAGES
         SLS,R5   9                 ABOVE REFDEF STACK
         LW,R6    CJOB-1            GET CCITAB
         LW,R6    11,R6             GET RAD SECTOR SIZE
         SLS,R6   2                 MAX BYTE COUNT FOR THE RECORD
         LI,R7    35
*                                   THE RECORD CONSISTS OF A LIST OF
*                                   F: NUMBER NAMES IN TEXTC FORMAT
*                                   STARTING ON WORD BOUNDARIES. 1ST
*                                   WRD IN RECORD IS THE RECORD SIZE
         CAL1,1   RDABS
         LW,D1    0,R5              GET TABLE SIZE
         AW,D1    R5                POINTER TO END OF TABLE
         LW,R2    RFDFSTK
         AI,R5    1
         AI,R2    1
GTASGNS1 EQU      %
         LB,R6    *R5
         AI,R6    K4                *
         SLS,R6   -2
         AI,R6    3
         LW,R7    Y0002
         STB,R6   R7
         STW,R7   0,R2              MARK THE ENTRY A PREF
         LI,R7    0
         STW,R7   1,R2              CLEAR VALUE
         STW,R7   2,R2              AND RESOLUTION FIELDS
         LW,R7    0,R5              MOVE DCB NAME INTO RFDF ENTRY
         STW,R7   3,R2
         LW,R7    1,R5              MOVE 2ND WRD TOO-IF ANY; IF NOT,
         STW,R7   4,R2              THIS WILL BE OVERWRITTEN LATER.
         AW,R2    R6                UPDATE REFDEF POINTER
         AI,R6    KN3
         AW,R5    R6                UPDATE POINTER TO TABLE
         CW,R5    D1
         BL       GTASGNS1
         SW,R2    RFDFSTK
         AI,R2    KN1               TOTAL SIZE OF NEW ENTRIES
         MSP,R2   RFDFSTK
         SLS,R2   16                INCLUDE SIZE OF NEW ENTRIES
         STW,R2   RFDFDIS,R1        IN R00T'S TREE
         LW,R2    LMPLX-LMPL+1,R4
         ELSE
         REF      J:AMR
         DO       MODE=1
         DO       CFU=1
         LW,R5    LOCCT
         LCI      2
         LM,R6    LMNDIS,R5
         CD,R6    TXM:MON
         BNE      REFCFU
         STW,R6   MREFLAG           MREF MODE IN EFFECT
         LW,R3    RFDFSTK           FOR MREF, PUT PREF'S IN
         LI,R4    12                R/D STK FOR T:OVBALPSD
         MSP,R4   RFDFSTK           AND T:OVBPSD.
         SLS,R4   16
         AWM,R4   RFDFDIS,R1        UPDATE R/D SIZE IN TREE
         LW,R5    Y0602             PREF ENTRY:  WD 0
         LI,R6    K0                             WD 1,VALUE
         LI,R7    K0                             WD 2,RES
         LCI      3
         LM,SR1   TXT:OVBAL                  WDS 3-5,NAME
         LCI      6
         STM,R5   1,R3
         LCI      3
         LM,SR1   TXT:OVB
         LCI      6
         STM,R5   7,R3
         LW,R4    R3                SAVE POINTERS TO VALUE WDS
         SW,R4    RFDFBAS
         AI,R4    K2
         STW,R4   TOVBALPSD
         AI,R4    6
         STW,R4   TOVBPSD
         LW,R4    *R0
         B        NOCFU
REFCFU   EQU      %
*                                   UNLESS LOADING THE CP-V
*                                   MONITOR OR LIBLMN,
*                                   FORCE REF TO M:*
         LW,SR1   TXM:STAR
         LW,R3    RFDFSTK
         LI,R5    4
         MSP,R5   RFDFSTK
         SLS,R5   16
         AWM,R5   6,R1
         LW,R5    Y0402
         LCI      4
         STM,R5   1,R3
         AI,R3    K1
         STW,R3   CFUPTR
         FIN
         FIN
NOCFU    EQU      %
         LW,D4    LOCWD             DON'T DO THIS
         CI,D4    X'200'            IF NO ASSIGNS
         BAZ      NOASGNS           HAVE BEEN READ
         MTW,0    J:AMR
         BEZ      NOASGNS
*                 READ ASSIGN/MERGE RECORD ABOVE REF/DEF STACK.
*                 SCAN IT FOR F:NUMBER DCBS.
*                 SET UP REF/DEF PREF ENTRY.
         LW,R5    RFDFSTK           COMPUTE
         SLS,R5   -9                BUFFER
         AI,R5    1                 AREA ON
         LW,D4    LOCCT             IF INITIAL 4 PAGES IS NOT
         SLS,D4   -9                ENOUGH TO INCLUDE
         AI,D4    4                 THE ASSIGN/MERGE RECORD
         CW,D4    R5                THEN GET
         BG       %+2               2 ADDITIONAL
         CAL1,8   M:GP2             PAGES
         SLS,R5   9                 PAGE BOUNDARY.
         STW,R5   *R5               MAKE SURE PAGE IS AVAILABLE.
         CAL1,1   RDAMR
         MTW,0    1,R5              DISPLACEMENT TO FIRST ASSIGN ENTRY.
         BEZ      NOASGNS
         STW,R5   BUF               SAVE AMR TABLE BASE.
         AW,R5    1,R5              ADDRESS OF FIRST ENTRY.
MOREAMR  EQU      %
         AI,R5    1
         LW,SR1   *R5
         SLS,SR1  -8
         AND,SR1  M16
         CI,SR1   'F:'
         BNE      AMR50
         LB,R3    *R5               FOUND AN F:.GET BYTE COUNT.
AMR10    EQU      %
         LB,SR1   *R5,R3
         CI,SR1   X'F0'             IS IT NUMERIC
         BL       AMR50
         CI,R3    3                 YES.
         BE       %+2
         BDR,R3   AMR10
         LW,R6    RFDFSTK           SET UP REF/DEF ENTRY
         AI,R6    1
         LW,R7    Y0002             SET ENTRY TYPE TO PREF.
         LB,R3    *R5
         AI,R3    4                 COMPUTE ENTRY
         SLS,R3   -2                WORD COUNT
         AI,R3    3
         STB,R3   R7
         STW,R7   0,R6              FIRST WORD OF R/D ENTRY.
         MSP,R3   RFDFSTK           ACCOUNT FOR ENTRY IN STACK
         SLS,R3   16
         AWM,R3   RFDFDIS,R1        AND IN THE TREE'S ROOT.
         LI,R3    0
         STW,R3   1,R6              VALUE.
         STW,R3   2,R6              RESOLUTION.
         LW,R3    0,R5
         STW,R3   3,R6              TEXT
         LW,R3    1,R5
         STW,R3   4,R6              MORE TEXT (MAYBE).
AMR50    EQU      %
         LW,R5    -1,R5
         BEZ      NOASGNS
         AW,R5    BUF               GO PROCESS NEXT ASSIGN.
         B        MOREAMR
ER20X    QUIT     ER20,,SR3
         FIN
NOASGNS  EQU      %                 *
         MTW,0 MREFLAG
         BNEZ     NOSGLD
         LW,R5    LOCWD
         CW,R5    RFLDMODS
         BANZ     SGLD
         LW,R5    LOCCT             REF M:SGLD IF MORE THAN
         LW,R5    2,R5              ONE  SEGMENT
         SW,R5    -1,R5
         LCW,R5   R5
         CI,R5    X'C'
         BLE      NOBREF
SGLD     EQU      %
         LCI      2
         LM,SR1   TXM:SGLD
         BAL,11   REFDCB
NOSGLD   EQU      %
         LW,R5    LOCWD
         CW,R5    BREFBIT
         BAZ      NOBREF
         LCI      2
         LM,SR1   TXS:OVRL
         BAL,11   REFDCB
NOBREF   EQU      %
*                                   IF NOTCB WAS NOT DECLARED WE
*                                   FORCE A REFERENCE TO M:DO.
         LW,R5    LOCWD
         CI,R5    K2000
         BANZ     NOASGNS5
         LCI      2
         LM,SR1   TXM:DO
         BAL,11   REFDCB
         B        NOASGNS5
REFDCB   EQU      %
         LW,R3    RFDFSTK
         LI,R5    5
         MSP,R5   RFDFSTK
         SLS,R5   16
         AWM,R5   6,R1
         LW,R5    Y0502
         LCI      5
         STM,R5   1,R3
         B        *11
NOASGNS5 EQU      %                 *
*                                   OPEN THE LOAD MODULE FILE.
         LI,R6    K8
         STW,R6   7,R4
         LI,R6    ER10X
         STW,R6   3,R4
         LW,R6    Y4
         LW,R7    YC
         STS,R6   2,R4
*                                   MOVE THE OPEN ELEMENT FILE PLIST
*                                   TO THE TSTACK.
         CAL1,1   1,R4
         CAL1,1   SETDCB
         LI,R4    OPENEF-1
         LI,R5    EFPLX-EFPL
         LW,R6    EFPL-1,R5
         STW,R6   *R4,R5
         BDR,R5   %-2
*                                   ESTABLISH VFC FOR THE MAP.
         CAL1,1   VFC
         AI,R4    17                OPENDIC-OPENEF
*                                   MOVE THE OPEN DICTIONARY PLIST
*                                   TO THE TSTACK.
         LI,R5    DICPLX-DICPL
         LW,R6    DICPL-1,R5
         STW,R6   *R4,R5
         BDR,R5   %-2
*                                   UNLESS NOSYSLIB WAS SPECIFIED WE
*                                   HAVE TO OPEN THE SYSTEM LIBRARY
*                                   AT THIS POINT TO PREVENT ANOTHER
*                                   LOADER (IN A TIME SHARED
*                                   ENVIRONMENT) FROM UPDATING IT
*                                   WHILE WE ARE USING IT.
         LW,R4    LOCWD
         CI,R4    K2
         BANZ     NOLIB
         LW,R4    *R0
         LI,R5    LIBPLX-LIBPL
         LW,R6    LIBPL-1,R5
         STW,R6   *R4,R5
         BDR,R5   %-2
         LW,R5    LOCCT
         INT,R6   9,R5
         SLD,R6   1
         INT,D2   8,R5
         SLS,D2   2
         AI,R5    K13
         AW,R5    D2
         AW,R5    R6
         AW,R5    R7
         LCI      2
         LM,R6    *R5
         STM,R6   5,R4
         CAL1,1   1,R4
NOLIB    EQU      %
*                                   IF M:EF IS ASSIGNED TO LABELED
*                                   TAPE WE MUST FLAG ALL THE ENTRIES
*                                   IN THE ROM TABLE ENTRIES TO
*                                   DISTINGUISH THEM FROM LIBRARY
*                                   LOAD MODULES FROM THE DISC,
*                                   WHEN THEY ARE ADDED TO THE TABLE
*                                   LATER.
         LI,R4    0                 PICK UP ORIGINAL ASN FIELD OF
         XW,R4    RSEG00            M:EF.
         CI,R4    K2
         BAZ      INITSIZ2
         LW,R7    LOCCT
         LW,R7    1,R7
         AI,R7    2
LROMS    LI,R5    2
         STS,R5   *R7
         AI,R7    7
         CW,R7    DECLBAS
         BLE      LROMS
         PAGE
*                                   INITSIZE ACCOUNTS, IN THE TREE
*                                   TABLE FOR EACH SEGMENT, FOR THE
*                                   TWO WORDS AT THE FRONT OF THE 01
*                                   PROTECTION TYPE FOR THE NAMELIST
*                                   AND IN THE ROOT SEGMENT FOR TREE
*                                   TABLE AND THE TCB.
         B        INITSIZ2
INITSIZE LI,R4    CSEG1
         LI,R5    BSEG1
INITSIZ1 BAL,SR4  GETSEG
         B        INITSIZ2
         B        INITSIZ2
         B        ENDINIT1
INITSIZ2 LW,R7    CSEG1
         AI,R7    01DIS
         AW,R7    R1
         LW,D4    LOCWD
         CI,D4    K10
         BANZ     NO01
         MTW,0    CSEG1
         BNEZ     INITSIZE
         LW,R5    R1
         AI,R5    KN1
         SW,R5    *R5
         LCW,R5   R5
         AI,R5    2                 ADD 1 FOR THE COUNT AND 1 IN CASE
*                                   TREE IS ODD.
         AND,R5   MN1
         SLS,R5   15
         DO       NAMELIST=1
         AW,R5    Y0004
         FIN
         AWM,R5   *R7
         LW,R4    LOCWD
         CI,R4    K2000
         BANZ     INITSIZE
NO01     MTW,0    CSEG1
         BNEZ     INITSIZE
         LW,R4    LOCWD
         CI,R4    K2000
         BANZ     INITSIZE
         AI,R7    5-7               00DIS-01DIS
         LW,R5    LOCCT
         AI,R5    TMPSZDIS
         LH,R6    *R5
         LW,R4    R6
        AI,R5    7-8               ERRDIS-TMPSZDIS
         LH,R6    *R5
         AW,R4    R6
         INT,R5   *R5
         AW,R4    R5
         AI,R4    TCBBLNK+14
         AI,R4    1
         AND,R4   MN1
         SLS,R4   15
         AWM,R4   *R7
         B        INITSIZE
*                                   INIT1 EXIT.
*
ENDINIT1 PLW,SR3  *R0
         B        *SR3
YC       DATA     X'C0000000'
         PAGE
TXM:SGLD TEXTC    'M:SGLD'
         DO       MODE=1
         REF      TRAP
M:TRAP   GEN,8,24 X'14',TRAP
         DATA     X'00200000'
M:GP     GEN,8,24 8,4
M:GP2    GEN,8,24 8,2
M:FCP    GEN,8,24 X'D',256
         ELSE
M:GP     GEN,8,24 8,256
         FIN
         DO       MODE=1
OPNLM    GEN,8,24  X'14',M:LM
         DATA     X'1000001',4
         FIN
LMPL     GEN,8,24 X'14',M:LM
         DATA     X'8F000001'
         DATA     NOASGNS,10,2,2,1
         DATA     X'01010303',0,0,0,X'02000202',0,0,X'03000202',0,0
         DATA     X'04000202',0,0,X'05001010'
         DO       16
         DATA     0
         FIN
         DO       MODE=0
         DATA     X'06011010'
         ELSE
         DATA     X'06001010'
         FIN
         DO       16
         DATA     0
         FIN
         DO       MODE=1
         DATA     X'14001010'
         DO       16
         DATA     0
         FIN
         DATA     X'15010303',0,0,0
         FIN
LMPLX    EQU      %
EFPL     GEN,8,24 X'14',M:EF
         DATA     X'C7000001'
         DATA     LIBER,ER7X,0,0,1
         DATA     X'01000303',0,0,0,X'02000202',0,0,X'03010202',0,0
EFPLX    EQU      %
DICPL    GEN,8,24 X'14',M:DIC
         DATA     X'CF000801'
         DATA     0,0,10,2,2,4
         DATA     X'01000202'
         TEXTC    ':DIC'
         DATA     X'02010202',0,0
DICPLX   EQU      %
LIBPL    GEN,8,24 X'14',M:LIB
         DATA     X'01000001'
         DATA     1
         DATA     X'02010002',0,0
LIBPLX   EQU      %
VFC     GEN,8,24 5,M:LL
         GEN,28,4 1,0
NOACCT   DATA     X'02000002'
         DO       MODE~=1
RDABS    GEN,8,24 X'16',M:LM
         DATA  X'B8000000',NOASGNS,X'80000005',X'80000006',X'80000007'
         ELSE
RDAMR    GEN,8,7,17   X'2D',0,M:EF
         DATA     X'70000000'
         DATA     ER20X
         GEN,1,31 1,R5
         DATA     X'800'
:P       DATA     X'007AD700'
         FIN
SETDCB   GEN,8,24 6,M:LM
         DATA     X'80000000',ER10X
Y0302    DATA     X'03020000'
Y0402    DATA     X'04020000'
         DO       BPMLIB=1
TXNEVER  TEXT     'NEVER'
         FIN
         DO       MODE=1
Y0602    DATA     X'06020000'
TXT:OVBAL DATA    X'0AE37AD6'
         DATA     X'E5C2C1D3'
         DATA     X'D7E2C440'
TXT:OVB  DATA     X'08E37AD6'
         DATA     X'E5C2D7E2'
         DATA     X'C4404040'
         FIN
         BOUND    8
TXM:MON  TEXTC    'M:MON'
         END

