         SYSTEM   SIG7FDP
         SYSTEM   BPM
*
*
         DEF      UBMONITOR
         REF      P2ERR
         REF      P2OVLOP
         REF      SSIZE,SDGANSG,CORE,M:TM,LLIST,READSTRG
         REF      COREALLOC,SYNTAX,WRITELM,MODGEN
         REF      AVTBLGTH,#MXSTRM,SYMBCOUNT,PRIVDEV
         REF      LORBIN,#RBTS
         REF      OCPTYP
         REF      #GRANPER
         REF      BIG9FLG
         REF      LPART#
         REF      TEXTAUK
         REF      ABNERR2
         REF      P2ABRT
         REF      PASS2OUT
         REF      DCTSIZE
         REF      DP3275
         REF      MCDEV
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
DYN      CNAME
         PROC
LF       EQU      %-DYNAM
         GEN,1,15,16 AF(1),AF(2),AF(3)
         PEND
RFDFSIZ  EQU      240
CFUSIZ   EQU      19
ROMSIZ   EQU      X'1C'
SPECSTART  DATA   0
SPECLGTH DATA     0
MFSVAL   DATA     0
VALLCLX  DATA     0
         BOUND    8
SITESTRT DATA     X'40404040',X'40404040',X'40404040'
SITETOP  DATA     X'40404040'
         BOUND    8
CSE%7    DATA     X'5BFF7AF7'
         DATA     X'F2F44040'
X1FFFE   DATA     X'1FFFE'
CSEDFLGS DATA     0
CONFFLGS DATA     0
M1111    DATA     X'01010101'
M0111    DATA     X'00010101'
M1011    DATA     X'01000101'
M1101    DATA     X'01010001'
M0101    DATA     X'00010001'
MTAB     EQU      %-CONFFLGS
*        CONVERSION TABLE        SYMBOLS    SHIFT FACTOR - 1
CLUNITAB DATA     X'00000809'    - A B C     0   1   2   3
         DATA     X'0A0B0C0D'    D E F G     4   5   6   7
         DATA     X'10110012'    H I - J     8   9  10  11
         DATA     X'13141518'    K L M N    12  13  14  15
         DATA     X'191A1B1C'    O P Q R    16  17  18  19
         DATA     X'00001D20'    - - S T    20  21  22  23
         DATA     X'21222324'    U V W X    24  25  26  27
         DATA     X'2528292A'    Y Z 0 1    28  29  30  31
         DATA     X'2B2C2D30'    2 3 4 5    32  33  34  35
         DATA     X'31323334'    6 7 8 9    36  37  38  39
SPECTABS DATA     X'292A2B2C'    ACTUAL SHIFT COUNT FOR %,#,@,:
SPECSYMB TEXTC    '%#@:'         SPECIAL SYMBOLS FOR CLUSTER/UNIT TAB
         BOUND    8
PRESENTF DATA     0,0            D.W. TABLE OF PREVIOUSLY ENCOUNTERED
*                                SYMBOLS. BITS SET AS PER SHIFT
*                                FACTOR NOTATIONS FOR CLUNITAB ABOVE
TEMPSTAK DATA     %+1               TEMP STACK POINTER D. W.
         GEN,16,16 16,0
         RES      16
XC0      DATA     X'C0'
XFFFF    DATA     X'FFFF'
X7       DATA     7
X38      DATA     X'38'
X7F      DATA     X'7F'
XF0404040 DATA    '0   '
MOC      TEXTC    'M:OC'
         DATA     2,0,X'200003',X'60002'
ORGROM   DATA     X'1C00801C',X'0306D4D6','NORG',12**24,X'0A010100'
         DATA     X'20',X'02020E00'
ROMSIZE  EQU      X'1C'
THREE    DATA     3,1
STBYHA   EQU      %
         STB,9    *12,1
         STH,9    *12,1
CONFIGNM TEXTC    'M:CONFIG'
CSEBRNM  TEXTC    'CSEBRANCH'
HAND     TEXTC    'HANDLERS'
TPOVFLGS DATA X'01010000'
         BOUND 8
CSES7    TEXTC    'CSES7'
CSES9    TEXTC    'CSES9'
CSEX560  TEXTC    'CSEX560'
CSECOM   TEXTC    'CSECOM'
RAS      TEXTC    'RAS'
         TEXT     '    '
XTQROOT  TEXTC    'TQROOT'
XPWP     TEXTC    'PWP'
         TEXT     '    '
BUFPOOLS RES      4
BUF      RES      100
CSEDBUF  EQU      %
         LIST     0
         DO1      200
         DATA     0
         LIST     1
NGMSG    TEXTC    '*** COMBINATION OF SIG9/SIG7/X560/BIG - ILLEGAL',;
                  ' OR ALL OF THESE ARE MISSING'
NGSYMB   TEXTC    '*** UNRECOGNZIED DEVICE SYMBOL ON ONE OF ',;
                  'THE DEVICE CARDS. SYMBOL IS:   '
NOMCDEV  TEXTC    '***SINCE AN X560 WAS SPECIFIEDAN MC DEVICE SHOUL',;
                  'D HAVE BEEN INCLUDED IN THE DEVICE CONTROL COMMANDS'
NOENHAND TEXTC    '*** TROUBLE WITH SPEC:HAND -  ',;
                  'HANDLERS RECORD NOT INCLUDED'
NO560    TEXTC    '***SINCE AN MCA0B WAS SPECIFIED IN DEVICE COMMAND',;
                  'S AN X560 SHOULD BE INCLUDED IN THIS COMMAND'
CPUNAME  TEXTC    'M:CPU'
FQMSG    TEXTC    '*** FQUEUE >= QUEUE - FQUEUE IGNORED'
FMPMSG   TEXTC    '*** FMPOOL>= MPOOL - FMPOOL IGNORED'
FCFUMSG  TEXTC    '*** FCFU >= CFU - BKGD HAS NO CFU'
ANSMSG   TEXTC    '*** NOT BOTH ANSDET AND',;
         ' ANSPROT-IGNORED'
AVGSMSG  TEXTC    '*** AVGSER OUT OF RANGE --DEFAULT',;
                  ' (1) USED'
BIGSIGMSG  TEXTC   '*** BIG9 SPECIFIED -- SIG9 ALSO INCLUDED'
NOGO     EQU      %
         LW,14    L(X'00200000')    CHECK FCD BIT OF DCB
         AND,14   M:TM              IS DCB OPEN?
         BAZ      %+2               NO
         M:CLOSE  M:TM,(SAVE)       YES
         LI,14    NOENHAND
         MTW,1    P2ERR,R3
         CAL1,2   LLIST
         B        EXITOUT
*
*
ERR      LCI      7
         PLM,9    *0
         EXU      NOGO
         EXU      NOGO+1
         BAZ      ABNERR2
         M:CLOSE  M:TM,(REL)
         B        ABNERR2
*
*
NG       LI,D3    NGMSG
         MTW,1    P2ERR,R3
         CAL1,2   LLIST
         MTW,1    P2ABRT,R3         ABORT PASS2
         B        PASS2OUT
*
*
         PAGE
*
*        KEYWORDS
*
KWD      COM,32,8,24  AF(1),AF(2),AF(3)
FOP      COM,1,7,8   AF(1),AF(2),AF(3)
KWDTBLO  EQU      %
         DATA     KWDTBL-KWDTBLO
         FOP      0,0,3             0 FIND LEFT '('
         FOP      1,0,9             1 KWD
         FOP      1,0,10            2 PROCKWD
         FOP      1,0,8             3 INTEROPT
         FOP      0,1,1             4 GOTO 1
         FOP      1,3,20            5 GETSTRG
         FOP      0,1,19            6 DW TBL PTR AT 1,R5
         FOP      0,3,1             7 GO TO 3
KWDTBL   EQU      %
         TEXT     'SIG9'
         GEN,8,8,16   0,1,(SIGLOC*4)+0
         TEXT     'SIG7'
         GEN,8,8,16   0,1,(SIGLOC*4)+1
         TEXT     'SIG6'            SIG6 AND SIG7 ARE SYNONYMOUS
         GEN,8,8,16   0,1,(SIGLOC*4)+1
         TEXT     'X560'
         GEN,8,8,16   0,1,(SIGLOC*4)+2
         TEXT     'BIG'
         GEN,8,8,16   0,1,(SIGLOC*4)+3
         TEXT     'BIG9'
         GEN,8,8,16   0,1,(BIGLOC*4)+3
         TEXT     'ANS'
         GEN,8,8,16  0,1,(ANSDLOC*4)+3     ALLOW 'ANS' BUT IGNORE IT
         TEXT     'ANSDET'
         GEN,8,8,16  0,1,(ANSDLOC*4)
         TEXT     'ANSPROT'
         GEN,8,8,16  0,1,(ANSPLOC*4)+3
         TEXT     'TP'
         GEN,8,8,16   0,1,(TPLOC*4)+3
         KWD      'TSTA',1,STKLOC   DEC
         KWD      'QUEU',1,QUELOC   DEC
         KWD      'CORE',1,CORLOC   DEC
         KWD      'ORG ',2,ORGLOC   HEX
         KWD      'MPOO',1,MPOLOC   DEC
         KWD      'SPOO',1,SPOLOC   DEC
         KWD      'CPOO',1,CPOLOC   DEC
         KWD      'SFIL',1,SFILOC   DEC
         KWD      'CFU ',1,CFULOC   DEC
         KWD      'MPAT',1,MPXLOC   DEC
         KWD      'FQUE',1,FQULOC   DEC
         KWD      'FMPO',1,FMPLOC   DEC
         KWD      'FCFU',1,FCFULOC  DEC
         KWD      'INFI',1,INFILOC
         KWD      'OUTF',1,OUTFILOC
         KWD      'AVGS',1,AVGSLOC
         KWD      'ENQ ',1,ENQLOC
         TEXT     'SITE'
         GEN,8,7,17  8,0,5          KEYWORD GOTO
LKWDTBL  EQU      %
         DATA     #DYNAM            #KWDS WITH DEFAULTS
KWDPTR   GEN,15,17  LKWDTBL-KWDTBL,KWDTBLO
         PAGE
*
*   LIMITS AND DEFAULTS
*
DYNAM    EQU      %
SITEPTR  DATA     SITETOP
         DATA     SITESTRT
STKLOC   DYN      1,200,-1
QUELOC   DYN      1,4,-1
CORLOC   DYN      1,24,128
ORGLOC   DYN      1,X'60',-1
MPOLOC   DYN      1,3,-1
MPSIZ    DATA     34
SPOLOC   DYN      1,0,-1
SPSIZ    DATA     256
CPOLOC   DYN      1,0,-1
CPSIZ    DATA     40
SFILOC   DYN      1,20,-1
CFULOC   DYN      1,2,-1
MPXLOC   DYN      1,0,0
FQULOC   DYN      1,0,0
FMPLOC   DYN      1,0,0
FCFULOC  DYN      1,0,0
INFILOC  DYN      0,0,0
OUTFILOC DYN      0,0,0
AVGSLOC  DYN      0,0,0
ENQLOC   DYN      1,0,0
SIGLOC   DYN      0,0,0
BIGLOC   DYN      0,0,0
ANSDLOC  DYN      0,0,0
ANSPLOC  DYN      0,0,0
TPLOC    DYN      0,0,0
#DYNAM   EQU      %-DYNAM
UDYNAM   EQU      %
         DATA     SITETOP
         DATA     SITESTRT
         DATA     0                 NO TSTACK
         DYN      1,10,0            QUEUE
         DYN      1,128,0           CORE
         DYN      1,X'62',0         ORG
         DYN      1,5,0             MPOOL
         DATA     34                MPOOL SIZE
         DATA     0                 NO SPOOL
         DATA     256               SPOOL SIZE
         DYN      1,3,0             CPOOL
         DATA     40                CPOOL SIZE
         DATA     0                 NO SFIL
         DYN      1,40,0            CFU
         DYN      1,0,0             MPATCH
         DATA     0                 NO FQUEUE
         DATA     0                 NO FMPOOL
         DATA     0                 NO FCFU
         DYN      1,20,0            INFILES
         DYN      1,32,0            OUTFILES
         DYN      1,1,0             AVGSER
         DYN      1,0,0
         DYN      0,0,0             SIG9 CHECK
         DYN      0,0,0             BIG9 CHECK
         DYN      0,0,0             ANS
         DYN      0,0,0             ANSPROT
         DYN      0,0,0             TP
KEYAD    DATA     0
         PZE      WRITECPU          ABORT RETURN FROM COREALLOC OR MODGEN
         PAGE
UBMONITOR LI,R1   #DYNAM
         LW,4     KWDPTR
         LI,R2    UDYNAM
         BAL,SR4  SYNTAX
         LW,13    CORLOC,5          CONVERT CORE SIZE
         SLS,13   10                TO WORDS
         STW,13   CORLOC,5
         LCI      15
         PSM,R1   TEMPSTAK
         LW,12    MPOLOC,5
         LW,13    MPSIZ
         LW,14    CPOLOC,5
         LW,15    CPSIZ
         LCI      4
         STM,12   BUFPOOLS
         LI,9     TEXTAUK
         MTW,1    *9
         LI,10    16
         M:OPEN   M:TM,(FILE,'TAURTMP'),(INOUT),(KEYED),(DIRECT),;
                  (ABN,ERR),(ERR,ERR),(SAVE)
         M:WRITE  M:TM,(BUF,BUFPOOLS),(SIZE,*10),(KEY,*9),(NEWKEY),;
                  (WAIT),(ABN,ERR),(ERR,ERR)
         LW,R6    DCTSIZE,R3
         AI,R6    3
         SLS,R6   -2
         SLS,R6   +3
         LW,R4    TEXTAUK
         MTW,-4   R4
         STW,R4   KEYAD
         M:READ   M:TM,(BUF,BUF),(SIZE,*R6),(KEY,KEYAD),(WAIT),;
                  (ABN,ERR),(ERR,ERR)
         M:CLOSE  M:TM,(SAVE)
         LW,D2    SIGLOC,R5         CHECK FOR ALL LEGAL COMBINATIONS
         BEZ      NG                OF SIG9/SIG7/X560/BIG
         CI,D2    1                 WAS BIG SPECIFIED
         BAZ      %+2
         MTW,1    BIGLOC,R5
         LI,R4    MTAB
         CW,D2    CONFFLGS-1,R4
         BE       NG
         BDR,R4   %-2
         SLS,D2   8
         BCS,8    SIG9              IF 1 BIT HAS PASSED BIT 0, IT'S SIG9
         SLS,D2   8
         BCS,8    SIG7              IF 1 BIT (BYTE 1) HAS PASSED BIT 0
         SLS,D2   -16
         CH,D2    M1111             ARE BYTE 2/3 = 0101
         BNE      %+4               BRANCH IF ONLY X560 FLAG IS SET
         LI,R6    1                 SET FLAGS FOR M:CONFIG CODE
         MTB,1    R6                SAVE CONFIGURATION FLAGS
         STW,R6   CONFFLGS          SAVE CONFIGURATION FLAGS
         LI,R6    X'20'
         OR,R6    CSEDFLGS          SET 560  FLAG
         STW,R6   CSEDFLGS
         B        CPURFDFS
SIG9     LI,R6    X'40'
         OR,R6    CSEDFLGS          SET SIG9 BIT IN FLAG WORD
         STW,R6   CSEDFLGS
         CI,D2    0
         BE       CPURFDFS          BRANCH IF ONLY SIG9 WAS SPECIFIED
         SLS,D2   8
         BCR,8    CHK560            BRANCH IF NOT A SIG7/SIG9 COMBO
         LI,R6    X'80'
         OR,R6    CSEDFLGS          SET SIG7 BIT IN FLAG WORD
         STW,R6   CSEDFLGS
         CI,D2    0
         BE       CPURFDFS          ONLY SIG9/SIG7 WERE SPECIFIED
CHK560   SLS,D2   8
         BCR,8    SIG9BIG           BRANCH IF ONLY SIG9/BIG SPECIFIED
SET560FL LI,R6    X'20'             SET X560 FLAG
         OR,R6    CSEDFLGS
         STW,R6   CSEDFLGS
         B        CPURFDFS
SIG9BIG  LH,R6    M1101
         STH,R6   CONFFLGS          SAVE CONFIGURATION FLAGS
         B        CPURFDFS
SIG7     LI,R6    X'80'             SET SIG7 BIT IN FLAG WORD
         OR,R6    CSEDFLGS
         STW,R6   CSEDFLGS
         CI,D2    0                 WAS ONLY SIG7 SPECIFIED
         BNE      SET560FL          BRANCH IF X560 ALSO SPECIFIED
CPURFDFS LI,D1    2*RFDFSIZ
         LI,D2    -1
         BAL,SR4  COREALLOC         GET SOME WORK AREA
         BAL,SR3  MODGEN
         LI,D1    4
         TEXTC    'CSEP%MSTAT%SZE0'
         LI,D1    6
         TEXTC    'CSEP%PSTAT%SZE0'
         LW,D1    CSEDFLGS
         STW,D1   *SR1
         TEXTC    'CSED%MACHINE1'
         B        %+1
         AI,SR1   1
         LCI      3
         PSM,R7   *R0
         CI,D1    X'80'
         BE       CLEANUPAA
         BAL,SR3  MODGEN
         TEXTC    'CSED%MSTAT1'
         B         %+1
CHK9560  CI,D1    X'40'             CHECK FOR ANY COMBINATION OF SIG9
         BAZ      VARSIZ3           BRANCH IF NOT COMBINATION WITH SIG9
VARSIZ4  AI,SR1   20
         CI,D1    X'20'             CHK FOR 560 COMBO
         BANZ     ANY560
         B        CLEANUPA
VARSIZ3  AI,SR1   15                HERE FOR SIG7/560 OR JUST 560
ANY560   BAL,SR3  MODGEN
         AI,SR1   1
         TEXTC    'CSED%BP%STATUS1'
         TEXTC    'CSED%PSTAT1'
         AI,SR1   1
         TEXTC    'CSED%MI%STATUS1'
         AI,SR1   6
         TEXTC    'CSED%PROC%CNTL1'
         B        %+1
         LI,D2    CSEDBUF
         LI,D1    DP3275
         AW,D1    R3
         LW,R6    DCTSIZE,R3         TOTAL # OF DEVICES SPECIFIED
         AI,R6    -1
         LI,R4    -1
         LI,R2    0
GRANDLUP AI,R4    1
         AI,R2    2                 R2 POINTS TO CHANNEL SYMBOL 4 EACH DEVICE
         LB,R1    *D1               GET # OF 3275 PACKS SPECIFIED
         LI,D3    4                 ASSUME MIOP PROCESSOR FOR THIS CLUSTER
         LB,R5    BUF,R2            GET A CHANNEL SYMBOL FROM THE DCT1
*                                   TABLE
         CI,R5    'A'               CHECK FOR ALPHANUMERICS
         BL       SPECSYMBL         BRANCH IF ONE OF SPECIAL SYMBOLS
         EOR,R5   XC0               SUBTRACT OFF 'C0'
         LD,SR3   PRESENTF          CHECK IF THIS SYMBOL HAS ALREADY
         LW,SR2   R5                BEEN ENCOUNTERED
         AI,SR2   X'301'            GET SET FOR APPROPRIATE SHIFT
         S,SR3    *SR2
         CI,SR4   1                 BIT WILL BE SET IF ALREADY ENCOUNTERRED
         BANZ     SKIPNTRY
         AI,SR4   1
         EOR,SR2  X7F               GET TWO'S COMPLEMENT OF SR2
         AI,SR2   1
         S,SR3    *SR2
         STD,SR3  PRESENTF          SET BIT ON FIRST OCCURENCE OF SYMBOL
         AW,R5    XC0
LUP3275  EQU      %
         LB,D4    *D1,R1            CHECK TABLE VALUE AGAINST CURRENT SYMBOL
         CW,R5    D4                IS CURRENT ENTRY A 3275 SYMBOL
         BE       ITS3275
         BDR,R1   LUP3275           BRANCH IF NOT
STORTYPE EQU      %
         STB,D3   *SR1,R4           MIOP OR RMP TYPE GOES INTO CNTL TABLE
         EOR,R5   XC0               SUBTRACT OFF 'C0'
         LB,R5    CLUNITAB,R5       GET TRUE PROCESSOR ADDRESS
         STB,R5   *D2,R4            STORE IT   IN TEMP BUFFER
         BEZ      MINSYSTM          IF R5 = 0, CHANNEL SYMBOL WAS 'A'
GENCLUST AI,R4    1                 DO FOLLOWING FOR ALL CLUSTERS
         LI,D3    2                 MI TYPE GOES INTO CNTL TABLE
         STB,D3   *SR1,R4
         AND,R5   X38               DISCARD UNIT PART AND KEEP CLUSTER
         AI,R5    6                 PART OF 6-BIT ADDRESS (HIGH ORDER 3
         STB,R5   *D2,R4            BITS = CLUSTER PART. LOW ORDER 3 BITS
         AI,R4    1                 = UNIT PART)
         AI,R5    1                 GENERATE MI AND PI CLUSTER,UNIT
         STB,R5   *D2,R4            ADDRESSES
         LI,D3    3                 GENERATE PI TYPE
         STB,D3   *SR1,R4
ENDLOOP  BDR,R6   GRANDLUP
         B        CLEANUP
ITS3275  LI,D3    5                 GENERATE RMP TYPE
         B        STORTYPE
MINSYSTM AI,R4    1
         LW,D3    X38               GENERATE ONE SU ADDRESS
         STB,D3   *D2,R4
         LI,D3    7                 GENERATE ONE SU TYPE
         STB,D3   *SR1,R4
         AI,R4    1
         LI,D3    1                 GENERATE ONE CPU TYPE
         STB,D3   *SR1,R4
         LI,D3    5                 GENERATE ONE CPU ADDRESS
         STB,D3   *D2,R4
         B        GENCLUST
SPECSYMBL LI,R7   3
SPSYMBLP CB,R5    SPECSYMB,R7
         BNE      NEXTSYMB
         LB,SR2   SPECTABS,R7
         LD,SR3   PRESENTF          CHK IF ALREADY PROCESSED
         AI,SR2   X'300'
         S,SR3    *SR2
         CI,SR4   1
         BANZ     SKIPNTRY
         AI,SR4   1
         EOR,SR2  X7F
         AI,SR2   1
         S,SR3    *SR2
         STD,SR3  PRESENTF
         LW,R5    R7                SPECIAL SYMBOLS HAVE ADDRESSES
         AI,R5    1                 OF: 01,02,03 & 04 REPCTIVELY
         STB,D3   *SR1,R4           STORE AWAY MIOP TYPE
         STB,R5   *D2,R4
         B        GENCLUST
NEXTSYMB BDR,R7   SPSYMBLP
         CI,R7    0
         BE       SPSYMBLP          DO ONE MORE TIME
         STB,R5   NGSYMB+18
         LI,D3    NGSYMB            IF NEGATIVE, DON'T RECOGNIZE SYMBOL
         B        NG+1
SKIPNTRY AI,R4    -1
         B        ENDLOOP
CLEANUP  EQU      %
         LW,D1    R4
         BAL,SR3  MODGEN
         TEXTC    'CSEP%PROC%SIZE0'
         AI,R4    4                 CONVERT # OF CLUSTER-UNIT ADDRESSES
         SLS,R4   -2                INTO # OF WORDS USED
         AW,SR1   R4
         TEXTC    'CSED%PROC%ADDR1'
         B        %+1
         LW,R6    R4
         AI,R6    -1
         LW,R5    *D2,R6            MOVE DATA FROM TEMP BUFFER TO LOAD
         STW,R5   *SR1,R6           MODULE
         BDR,R6   %-2
         LW,R5    *D2
         STW,R5   *SR1
         AW,SR1   R4
CLEANUPA EQU      %
         LW,R5    *R0
         AI,R5    -1
         STW,SR1  *R5               SAVE NEW VALUE OF SR1 IN STACK
         LW,D1    CSEDFLGS
CLEANUPAA EQU     %
         MTW,0    MCDEV,R3          CHK IF MCDEV SPECIFIED
         BEZ      CHK560Z           CHK IF 560 SPECIFIED
         CI,D1    X'20'             IF MC THEN CHK FOR 560 ALSO
         BANZ     CLEANUPC          BR. IF O.K.
         LI,D3    NO560             PRINT ERR MESS.
         MTW,1    P2ERR,R3
CLEANUPB CAL1,2   LLIST
         B        CLEANUPC
CHK560Z  CI,D1    X'20'
         BAZ      CLEANUPC          BR IF O.K.. NO MC AND NO 560
         LI,D3    NOMCDEV
         MTW,1    P2ERR,R3
         B        CLEANUPB
CLEANUPC LCI      15
         PLM,R1   TEMPSTAK
         LCI      3
         PLM,R7   *R0
NOTTAUR  EQU      %
         MTW,0    BIGLOC,5          BIG9 SPEC ?
         BEZ      CALCMFS           BRANCH IF NOT
         MTW,1    BIG9FLG,R3        SET FLAG FOR SPROCS IN IMC
         LW,D2    SIGLOC,R5
         MTB,0    D2                CHK IF SIG9 SPECIFIED
         BNEZ     CALCMFS
         MTB,1    D2
         STW,D2   SIGLOC,R5         NO SET SIG9 FLAG
         LI,14    BIGSIGMSG         TELL USER
         CAL1,2   LLIST
CALCMFS  LW,D2    #RBTS,R3
         MI,13    2                 VALUE FOR MFS LATER
         AI,13    2                 =2+(2*#RBTS)
         STW,13   MFSVAL
         AW,13    OUTFILOC,5
         STW,13   OUTFILOC,5        STORE CONVERTED VALUE
*                                   (OUTFILE+MFS)
         LW,12    ANSDLOC,5
         MTB,0    12                WAS ANSDET SPECIFIED
         BNE      TESTBOTH          YES THEN BRANCH
         MTW,0    ANSPLOC,5         WAS ANSPROT SPECIFIED
         BNE      ANSOK             YES, THEN LEAVE ANSPLOC = 1
STONEG   LI,12    -1                NO, THEN SET ANSPLOC = -1
         STW,12   ANSPLOC,5
         B        ANSOK
TESTBOTH MTW,0    ANSPLOC,5
         BEZ      ANSOK
         LI,14    ANSMSG            NO,ERROR
         CAL1,2   LLIST
         B        STONEG            IGNORE BOTH ANSDET AND ANSPLOC SPECS
ANSOK    EQU      %
         MTW,0    AVGSLOC,5
         BNEZ     %+3
         MTW,0    PRIVDEV,3
         BNEZ     %+4
         LI,12    1020/16
         CW,12    AVGSLOC,5         UPPER LIMIT OKAY
         BGE      GETCOR
         LI,12    4
         STW,12   AVGSLOC,5
         LI,14    AVGSMSG
         MTW,1    P2ERR,R3
         CAL1,2   LLIST
GETCOR   EQU      %
STUTS    EQU      %
         LW,12    QUELOC,5          CALCULATE
         SW,12    FQULOC,5          MAXBQ
         BLEZ     %+5               TOO SMALL
         BAL,10   MODGEN            OK, DEF IT
         TEXTC    'MAXBQ0'
         B        %+3
         LI,14    FQMSG
         CAL1,2   LLIST
         BAL,SR3  MODGEN
         LW,12    #GRANPER,3
         TEXTC    'SDGA0'
NOSYM    TEXTC    'IOQ11'           DEF IOQ1
         LW,14    QUELOC,5          CALCULATE TABLE SIZES
         AI,14    1
         LW,12    14                WD TBL
         AI,14    1
         SLS,14   -1
         LW,13    14                HWD TBL
         AI,14    1
         SLS,14   -1                BYTE TBL
         AW,8     14
         TEXTC    'IOQ21'
         TEXTC    'QFREE1'
         LW,9     8
         AW,8     14
         TEXTC    'IOQ31'           INSURE ADEQUATE SPACE
         LW,1     QUELOC,5          GEN IOQ2
         AI,1     -1
         STB,1    *9,1
         MTB,1    *9,1
         BDR,1    %-2
         MTB,1    *9
         BAL,10   MODGEN
         AW,8     14
         TEXTC    'IOQ41'
         AW,8     14
         TEXTC    'IOQ51'
         AW,8     14
         TEXTC    'IOQ61'
         AW,8     12
         TEXTC    'IOQ71'
         AW,8     14
         TEXTC    'IOQ81'
         AW,8     12
         TEXTC    'IOQ91'
         AW,8     13
         TEXTC    'IOQ101'
         AW,8     14
         TEXTC    'IOQ111'
         AW,8     14
         TEXTC    'IOQ121'
         AW,8     12
         AI,8     1                 BOUND 8
         AND,8    X1FFFE
         TEXTC    'IOQ131'
         AW,8     12
         AW,8     12
         TEXTC    'IOQ141'
         AW,8     14
         TEXTC    'IOQ151'
         AW,8     14
         TEXTC    'IOQ161'
         AW,8     12
         LW,12    CORLOC,5
         TEXTC    'CORE0'           DEF CORE SIZE
CFU      TEXTC    'ACNCFU1'
         AI,8     CFUSIZ
         TEXTC    'FILCFU1'
         AI,8     CFUSIZ
         TEXTC    'BGRCFU1'
         LI,13    CFUSIZ
         MW,13    CFULOC,5
         AI,13    -CFUSIZ
         AW,8     13
         TEXTC    'LASTCFU1'
         AI,8     CFUSIZ
MPATCH   MTW,0    MPXLOC,5
         BEZ      NOPATCH
         AI,8     1
         SLS,8    -1                BOUND 8 FOR MPATCH
         SLS,8    1
         TEXTC    'MPATCH1'
         AW,8     MPXLOC,5
NOPATCH  B        %+1
         LW,4     CORLOC,5          GET CORE SIZE
         SLS,4    -9                IN PAGES
         LCW,2    BIGLOC,5          GET COMP.BIG9 FLG
         BEZ      %+2               NOT,SET,HW TABLE
         AI,8     -8                ADJUST START OF NXT TBLE
         AI,8     -8
         BAL,10   MODGEN
         TEXTC    'MX:PPUT1'
         LW,12    8                 SAVE REG 8
         SLS,8    2,2               ADJ.ADD BY/HW
         LCW,2    2                 CNVT FLG TO POSITIVE
         AW,8     4                 INCRE.BY CORE IN PAGES
         AW,8     THREE,2           ADD FOR BOUNDING
         SLS,8    -2,2              ADJ ADD BACK TO WRD
         TEXTC    'M:FPPH1'
         LI,1     X'20'             GENERATE
         LI,9     X'21'             LINKED
         EXU      STBYHA,2
         AI,9     1
         AI,1     1
         CW,9     4
         BL       %-4
         B        %+1
         BAL,10   MODGEN
         LI,12    X'20'
         STW,12   *8
         AI,8     1
         TEXTC    'M:FPPT1'
         AI,9     -1
         STW,9    *8
         AI,8     1
         TEXTC    'M:FPPC1'
         AI,9     -X'1F'
         STW,9    *8
         AI,8     2                 BOUND 8 FOR NEXT TABLE
         SLS,8    -1
         SLS,8    1
         TEXTC    'AVRFNMT1'
         LW,9     AVTBLGTH,3        GET # TAPES
         STW,9    12                SAVE # TAPES
         MI,9     6                 6 WORDS/ENTRY
         AW,8     9
         TEXTC    'AVRSID1'
         AW,8     12                # OF TAPES
         TEXTC    'ANSFLGS1'
         LW,9     12                CALC BYTE TBL LENGTH
         AI,9     3
         SLS,9    -2
         AW,8     9
         TEXTC    'ANSPRT1'
         LW,9     ANSPLOC,5
         STW,9    *8
         AI,8     1
         TEXTC    'LAVRFMT0'        12= TOTAL TAPES
         LW,15    SPOLOC+1,5
         AW,15    SSIZE,3
         AI,15    -1
         LW,12    SSIZE,3
         TEXTC    'SSSIZE0'
         BEZ      %+3
         DW,15    SSIZE,3
         AI,10    1
         BAL,10   MODGEN
         LW,12    15
         TEXTC    'SBSECTS0'
         LW,12    SDGANSG,3
         SLD,12   -16
         SLS,13   -16
         DW,13    15
         MW,13    15
         LW,12    13
         TEXTC    'SGSIZE0'
         AI,8     1                 BOUND 8 FOR NXT TABLE
         SLS,8    -1
         SLS,8    1
         TEXTC    'SITEID1'
         LW,13    SITESTRT
         STW,13   *8
         AI,8     1
         LW,13    SITESTRT+1
         STW,13   *8
         AI,8     1
         TEXTC    'BW:CHG1'         8=TABLE ADDRESS
         AI,8     1
         TEXTC    'BL:IFS1'         MUST BE BEFORE NEXT TABLE
         LW,13    INFILOC,5         IMMEDIATELY
         AI,13    -1
         STW,13   *8
         AI,8     1
         TEXTC    'BL:OFS1'         MUST FOLLOW BL:IFS
         LW,13    OUTFILOC,5        GET CONVERTED OUTFILE VALUE
         SW,13    MFSVAL            GET USER SPEC VALUE
         AI,13    -1
         STW,13   *8
         AI,8     1
         TEXTC    'LSERIAL1'
         LW,13    AVGSLOC,5         COMPUTE LENGTH
         MI,13    16                ((16*AVGSER)+3/4)+1
         AI,13    3
         SLS,13   -2
         AI,13    1+16              16 ADDED TO INSURE MIN LENGTH
         CI,13    255               MUST BE LESS THAN 255
         BLE      %+2               YES
         LI,13    255               NO
         STW,13   12                SAVE # ENTRIES
         AI,13    3
         SLS,13   -2
         STW,8    9                 SAVE START ADDRESS
         AW,8     13
         TEXTC    'E2'              INSURE ADEQUATE SPACE
         B        %+1
         LI,4     0
         LI,6     1
         STB,6    *9,4
         AI,6     1
         AI,4     1
         CW,4     12                # OF ENTRIES
         BL       %-4
         BAL,10   MODGEN
         TEXTC    'TSERIAL1'
         STW,6    *8
         AW,8     12
         TEXTC    'RSERIAL1'
         AW,8     13
         LW,12    #RBTS,3           ANY RBTS
         BNEZ     RBTBLS            YES
         TEXTC    'LCLX0'           NO,LCLX=0
         TEXTC    'RBLIMSZ0'        #RBTS = 0
         TEXTC    'RBB:ID1'         RBB:ID = 1 WORD OF 0
         AI,8     1
         B        SIG9TEST
RBTBLS   EQU      %
         BAL,10   MODGEN
         TEXTC    'RBLIMSZ0'        #RBTS IN 12
         TEXTC    'RB:XFLG1'
         AI,8     1
         LW,13    LORBIN,3          GET LOW RBT DCT INDEX
         SLS,13   -2
         SW,8     13                BUMP PTR BACK
         TEXTC    'RBB:ID1'
         LW,12    LORBIN,3
         TEXTC    'RBLIMSIX0'       DEF LOW RBT DCT INDEX
         AW,12    #RBTS,3
         STW,12   VALLCLX
         TEXTC    'LCLX0'           LCLX=LORB+#RBTS OR HIRB+1
         AI,12    1+3               TO COMPUTE END OF TABLE
         SLS,12   -2
         AW,8     12
         SW,8     13                BUMP PTR BACK
         TEXTC    'RBB:HFE1'
         LW,12    LORBIN,3
         AW,12    #RBTS,3           TABLE LENGTH = #RBTS
         AI,12    3                 NO ENTRY AT LCLX
         SLS,12   -2
         AW,8     12
         SW,8     13                BUMP PTR
         TEXTC    'RBB:HOU1'
         AW,8     12
         SW,8     13
         TEXTC    'RBB:HIN1'
         AW,8     12
         SW,8     13
         TEXTC    'RBB:BCB1'
         AW,8     12
         LW,13    LORBIN,3
         SW,8     13                WORD TABLE
         TEXTC    'RB:BUF1'
         AW,13    #RBTS,3
         AW,8     13
SIG9TEST EQU      %
         MTW,0    TPLOC,R5          WAS TP SPECIFIED
         BEZ      ENQ
         B        %+1
         LW,SR4   TPOVFLGS
         AWM,SR4  P2OVLOP,R3        SET FLAGS RO TPOV2 & TPOV1 OVERLAYS
         AI,SR1   1
         AND,SR1  X1FFFE            BOUND8
         BAL,SR3  MODGEN
         TEXTC    'TTP1'
         AI,SR1   25
         TEXTC    'E2'              INSURE ADDEQUATE SPACE
ENQ      EQU      %
         MTW,0    ENQLOC,5          ENQ OPTION
         BLEZ     WRITECPU          NO,SKIP
         B        %+1
         AI,SR1   1
         AND,SR1  X1FFFE            BOUND 8
         MTW,1    P2OVLOP,R3        SET FLAG FOR ENQOV
         LW,11    8                 SAVE ADDRESS
         BAL,10   MODGEN
         TEXTC    'QT1'
         AW,8     ENQLOC,5
         AW,8     ENQLOC,5
         TEXTC    'E2'              INSURE SPACE
         B        %+1
         XW,8     11                RECOVER STARTING POINT
         LW,12    ENQLOC,5          GET NUMBER OF ENTRIES
         AI,12    -1                NOT THE LAST ONE
         BLEZ     %+6
         LI,2     0
         LI,1     X'10000'
         STW,1    *8,2
         AI,2     2
         AI,1     X'10000'
         BDR,12   %-3
         LW,8     11                GET ENDING ADDRESS
WRITECPU EQU      %
         LW,4     CORLOC,5          GIVE CORE SIZE
         STW,4    CORE,3            TO P2CCI
         LW,4     ORGLOC,5          SAVE INFO FOR MON::ORG
         LW,D3    CSEDFLGS
         CI,D3    X'60'             CHK FOR SIG9 AND/OR 560
         BAZ      GETCPUNM          BRANCH IF NEITHER ONE
         AI,R4    -X'43'            = (MONORG-X'52'+X'F')
         SLS,R4   -4
         CI,R4    1                 THIS CODE DESIGNED TO SKIP
         BE       %+2               INTERRUPT GROUP 1 WHICH DOESN'T
         AI,R4    1                 EXIST FOR THESE MACHINES
         AI,R4    1                 ROUND FOR H.W. TABLES
         SLS,R4   -1
         BAL,SR3  MODGEN
         TEXTC    'PFSRARM1'
         AW,SR1   R4
         TEXTC    'PFSRTRIG1'
         AW,SR1   R4
         TEXTC    'PFSRENAB1'
         AW,SR1   R4
         LW,R4    ORGLOC,R5         RESTORE R4
GETCPUNM B        %+1
         LI,14    CPUNAME
         BAL,11   WRITELM           WRITE M:CPU
         CI,8     -1
         BE       EXITOUT           ABORT RETURN
         M:OPEN   M:TM,(FILE,'MON::ORG'),(OUT),(SAVE),(CONSEC)
         AI,4     1
         AND,4    X1FFFE            BOUND8
         SLS,4    2
         AWM,4    ORGROM+3
         SLS,4    8
         AWM,4    ORGROM+5
         LI,6     2
         LB,12    ORGROM,6
         LI,13    3
         SLS,4    -8                COMPUTE
         AW,12    4                 NEW
         AW,12    4                 CHECK
         BDR,13   %-3               SUM.
         STB,12   ORGROM,6
         M:WRITE  M:TM,(BUF,ORGROM),(SIZE,ROMSIZE),(WAIT)
         M:CLOSE  M:TM,(SAVE)
         B        %+2
         PZE      WRSYMB            ERROR RETURN FOR M:SYMB
         LI,12    2*RFDFSIZ
         LI,13    -1
         BAL,11   COREALLOC
         LI,12    1
         LW,1     LPART#,3
         SLS,12   0,1
         AI,12    -1
         BAL,10   MODGEN
         TEXTC    'MBSMSK0'
         LW,12    INFILOC,5
         AI,12    1
         SLS,12   1                 FIRST TABLE ON DW
         TEXTC    'BD:ACCT1'        BOUNDARY
         AW,8     12
         SLS,12   -1
         TEXTC    'B4W:RES1'
         LW,13    12
         SLS,13   2                 X4 WORDS/ENTRY
         AW,8     13
         AI,12    1
         SLS,12   -1
         TEXTC    'BH:TIME1'
         AW,8     12
         TEXTC    'BH:PART1'
         AW,8     12
         TEXTC    'BH:SLNK1'
         AW,8     12
         TEXTC    'BH:XLNK1'
         AW,8     12
         LW,12    MFSVAL
         TEXTC    'MFS0'
         LW,12    OUTFILOC,5
         TEXTC    'OUTFIL0'
         LW,12    INFILOC,5
         TEXTC    'INFIL0'
         AW,12    OUTFILOC,5
         TEXTC    'BW:SDA1'
         AI,12    1
         LW,13    12                SAVE INFILE+OUTFILE+1
         AW,8     12
         SW,8     INFILOC,5         BUMP PTR BACK
         TEXTC    'BW:FORM1'        EFFECTIVE AREA - INFIL TO
         AW,8     13                INFIL+OUTFIL+1
         STW,14   9
         LW,14    INFILOC,5
         SLS,14   -1
         SW,8     14                BUMP PTR BACK IN HALF WORDS
         TEXTC    'BH:GRAN1'
         LW,14    13
         AI,14    1
         SLS,14   -1
         AW,8     14
         LW,14    INFILOC,5
         SLS,14   -2
         SW,8     14                BUMP PTR BACK IN BYTES
         TEXTC    'BB:COPY1'
         LW,14    13
         AI,14    3
         SLS,14   -2
         AW,8     14
         LW,14    9
         TEXTC    'BH:SID1'
         AI,12    1
         SLS,12   -1                #OF HALFWORDS
         AW,8     12
         TEXTC    'BH:LINK1'
         STW,8    9                 SAVE 8
         AW,8     12
         TEXTC    'E2'              INSURE ADEQUATE SPACE
         B        %+1
         AI,13    -2
         LI,4     1                 SET UP LINKS
         LI,6     2
         STH,6    *9,4
         AI,6     1
         AI,4     1
         CW,4     INFILOC,5
         BL       %-4
         AI,4     1
         AI,6     1
         STH,6    *9,4
         CW,4     13                13=INFILE+OUTFILE-1
         BL       %-4
         BAL,10   MODGEN
         TEXTC    'BB:PI1'
         TEXTC    'BB:DEV1'
         AI,12    1
         SLS,12   -1
         AW,8     12
         TEXTC    'BB:RID1'
         AW,8     12
         LW,D3    OCPTYP,R3         CHECK IF OCP DEVICE SPECIFIED
         BEZ      NOXP
         TEXTC    'BW:FOVL1'
         AI,D2    2                 RESTORE TO INFILE+OUTFILE+1
         AW,SR1   D2
         LW,D3    INFILOC,R5
         SLS,D3   -2                CONVERT TO BYTES THEN BUMP PTR
         SW,SR1   D3                BACK
         TEXTC    'BB:JDE1'
         AW,SR1   D3
         B        %+1
NOXP     BAL,SR3  MODGEN
         TEXTC    'S#W:SER1'
         LW,13    AVGSLOC,5         COMPUTE # OF ENTRIES
         MW,13    INFILOC,5         (((INFIL*AVGSER)+3)/4)+1
         AI,13    3
         SLS,13   -2
         AI,13    1
         STW,13   12                SAVE #OF ENTRIES
         AW,8     13
         TEXTC    'S#H:LNK1'
         STW,8    9
         AI,13    1
         SLS,13   -1                CONVERT HW TO #WORDS
         AW,8     13
         TEXTC    'E2'              INSURE ADEQUATE SPACE
         B        %+1
         AI,12    -1
         LI,4     0
         LI,6     1
         STH,6    *9,4
         AI,4     1
         AI,6     1
         CW,4     12
         BL       %-4
         BAL,10   MODGEN
         AI,13    1
         SLS,13   -1                CONVERT TO # BYTES
         TEXTC    'S#B:TYP1'
         AW,8     13
         LW,13    #MXSTRM,3         GET MXSTRM VALUE
         AW,13    SYMBCOUNT,3       + # OF SYMBDEVICES
         AI,13    2                 + 2
         TEXTC    'STW:FORM1'
         AW,8     13
         LW,14    OCPTYP,3
         BEZ      NOXP1
         LW,6     13
         TEXTC    'STW:FOV1'        SET UP PARALLEL TABLE TO STW:FORM
         AW,8     6
         TEXTC    'STB:JDE1'
         AI,6     3                 CONVERT TO BYTES FOR ANOTHER
         SLS,6    -2                PARALLEL TABLE
         AW,8     6
         B        %+1
NOXP1    BAL,10   MODGEN
         AI,13    1
         SLS,13   -1
         TEXTC    'STH:NM1'
         AW,8     13
         AI,13    1
         SLS,13   -1
         TEXTC    'STB:DPD1'
         AW,8     13
         MTW,0    #RBTS,3           ANY RBTS
         BNEZ     RBSYMTABS         YES
         TEXTC    'RB:SPMF1'
         AI,8     1
         TEXTC    'RB:MFAD1'
         AI,8     1
         TEXTC    'RBH:MFX1'
         TEXTC    'SYMND1'
         AI,8     1
         B        WRSYMB
RBSYMTABS  EQU    %
         BAL,10   MODGEN
         SW,8     LORBIN,3
         TEXTC    'RB:SPMF1'
         AW,8     VALLCLX
         AI,8     1
         SW,8     LORBIN,3
         TEXTC    'RB:MFAD1'
         AW,8     VALLCLX
         AI,8     1
         LW,12    LORBIN,3
         SLS,12   -2
         SW,8     12                BUMP PTR BACK
         TEXTC    'RBB:SMD1'
         LW,13    LORBIN,3          COMPUTE #WRDS FOR ENTRIES
         AW,13    #RBTS,3           (LORBIN+#RBTS+3)/4
         AI,13    3
         SLS,13   -2
         AW,8     13
         SLS,12   1                 CONVERT TO HALFWORD
         SW,8     12
         TEXTC    'RBH:MFX1'
         SLS,13   1                 CONVERT TO HALFWORD
         AW,8     13
         SLS,12   -1
         SLS,13   -1
         AI,8     1                 RBH:MFX   #RBTS+1 IN LENGTH
         TEXTC    'RBB:DSM1'
         AW,8     13
         SW,8     12
         TEXTC    'RBB:MXP1'
         AW,8     13
         AI,8     -1
         TEXTC    'SYMND1'
         AI,8     1
WRSYMB   EQU      %
         B        %+1
         LI,14    SYMBNM
         BAL,11   WRITELM
         CI,8     -1
         BE       EXITOUT           ABORT RETURN
         CAL1,8   =X'08000002'
         BCS,8    NOGO
         STW,9    SPECSTART
         SLS,8    11
         STW,8    SPECLGTH
         M:OPEN   M:TM,(FILE,'SPEC:HAND'),(KEYED),;
                  (INOUT),(SAVE),(ERR,NOGO),(ABN,NOGO)
         M:READ   M:TM,(BUF,*SPECSTART),(KEY,HAND),;
                  (ERR,NOGO),(ABN,NOGO),(SIZE,*SPECLGTH)
         LW,1     13+M:TM
         SLS,1    -2
CHKCSED  EQU      %
         SLS,R1   -1
         MTW,0    TPLOC,R5
         BEZ      CHKCSEDA
         LD,SR3   XTQROOT           IF TP SPECIFIED THAN TQROOT
         BAL,D4   HANDLUP           AND PWP MUST BE ADDED TO HANDLERS REC.
         LD,SR3   XPWP
         BAL,D4   HANDLUP
CHKCSEDA LW,D1    CSEDFLGS          CHK. FOR SIG7,SIG9 & 560
         CI,D1    X'60'             IF EITHER OR BOTH SIG9 & 560,
         BAZ      CHKSIG7           THEN CSECOM HANDLER IS NEEDED
         LD,SR3   CSECOM
         BAL,D4   HANDLUP
         CI,D1    X'20'             IS THERE A 560
         BAZ      CHKSIG9
         LD,SR3   CSEX560           YES INCLUDE CSEX560 HANDLER
         BAL,D4   HANDLUP
CHKSIG9  CI,D1    X'40'             IS THERE A SIG9
         BAZ      CHKSIG7
         LD,SR3   CSES9             YES. INCLUDE CSES9 HANDLER
         BAL,D4   HANDLUP
CHKSIG7  CI,D1    X'80'             IS THERE A SIG7
         BAZ      WRSPECA
         LD,SR3   CSES7             YES. INCLUDE CSES7 HANDLER
         LI,D4    WRSPECA
HANDLUP  STD,SR3  *SPECSTART,R1
         MTW,1    *SPECSTART
         AI,1     1
         B        *D4
WRSPECA  SLS,1    1
WRSPEC   EQU      %
         SLS,1    2
         M:WRITE  M:TM,(BUF,*SPECSTART),(SIZE,*1),(KEY,HAND),;
                  (ERR,NOGO),(ABN,NOGO)
         M:CLOSE  M:TM,(SAVE)
         CAL1,8   =X'09000002'
         LI,R2    1
         LI,R1    X'F1'
         LI,D1    256
         LI,D2    256
         BAL,SR4  COREALLOC
         LW,R6    CSEDFLGS          CHK IF 1 MACHINE OR MORE
         CI,R6    X'60'             IS IT SIG9 AND X560
         BE       2MACHS
         BL       SIG9R560
         CI,R6    X'80'             IS IT JUST SIG7
         BE       1SIG7             BRANCH IF SO
2MACHS   LI,R4    0
         BAL,SR3  MODGEN
         TEXTC    'CSEBRANCH1'
         B        %+2
CSENMLUP0 EQU     %
         STB,R1   CSE%560+1,R2
CSENMLUP STB,R1   CSE%NM+1,R2       ALTER TEXTC DEF NAME
         AI,R1    1
         CI,R1    X'FA'
         BNE      %+2
         LI,R1    X'C1'             NAMES GO FROM CSE%1 TO CSE%F
         CI,R1    X'C8'
         BE       FINI
         BAL,SR3  MODGEN
CSE%NM   DATA     X'06C3E2C5'
         DATA     X'5BFFF140'       2ND BYTE GETS ALTERED EACH TIME THRU
         AW,SR3   R4
         AI,SR1   1
         B        CSENMLUP
CSE%560  DATA     X'0BC3E2C5'
         DATA     X'5BFF7AF5'
         DATA     X'F6F0F2F4'
         B        CSENMLUP0
1SIG9    MTW,2    CSE%7             CHANGE 'CSE%N:7 TO CSE%N:9
1SIG7    MTB,-2   CSE%560           CHANGE BYTE SIZE OF CANNED REF NM
         LD,SR3   CSE%7
         STW,SR3  CSE%560+1
         STW,SR4  CSE%560+2
1MACH    LI,D1    -X'100'
         AWM,D1   CSE%NM+1          CONVERT TO A VALUE DEF
         LI,R4    2
         LI,D1    0
         B        CSENMLUP0
SIG9R560 CI,R6    X'20'             IS IT JUST A X560
         BNE      1SIG9             BR. IF NOT.  MUST BE SIG9
         B        1MACH
FINI     LI,D3    CSEBRNM           NOW WRITE OUT CSEBRANCH MODULE
         BAL,SR4  WRITELM
WRT:CONF EQU      %
         LI,D1    40
         LI,D2    0
         BAL,SR4  COREALLOC
         LW,R6    CONFFLGS          GET BIG/SIG9/X560 FLAGS
         BAL,SR3  MODGEN
         LB,D1    R6                =1 IF BIG SPECIFIED
         TEXTC    ':BIG0'
         SLS,R6   8                 =1 IF BOTH BIG AND SIG9 SPECIFIED
         LB,D1    R6
         TEXTC    ':B90'
         SLS,D1   9                 MULTIPLY VALUE BY 512
         TEXTC    ':BIGX5120'
         SLS,R6   16
         LB,D1    R6                =1 IF BOTH BIG AND X560 SPECIFIED
         TEXTC    ':B5600'
         LI,D3    CONFIGNM          NOW WRITE OUT M:CONFIG MODULE
         BAL,SR4  WRITELM
EXITOUT  EQU      %
         LI,12    -#DYNAM
         MSP,12   *0
         PLW,12   *0
         CW,12    0
         BE       %+2
         PSW,12   *0
         B        READSTRG
SYMBNM   TEXTC    'M:SYMB'
         END

