LOADBC
          IDENT  LOADBC,110B,LOADBC 
          ABS 
          SST 
          ENTRY  LOADBC 
          ENTRY  RFL= 
          ENTRY  SSJ= 
          SYSCOM B1 
          TITLE  LOADBC - LOAD BUFFER CONTROLWARE.
*COMMENT  LOADBC - LOAD BUFFER CONTROLWARE. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 LOADBC   SPACE  4,10 
*****     LOADBC - DOWNLOAD DISK OR NAD CONTROLWARE.
* 
*         W. J. SMITH.       79/07/21.
*         J. L. LARSON.      83/06/14.
* 
*         LOAD APPROPRIATE CONTROLWARE ON REQUESTED CHANNEL.
 LOADBC   SPACE  4,10 
***       *LOADBC* IN CONJUNCTION WITH THE PP PROGRAM *1LC* WILL DOWN-
*         LOAD CONTROLWARE TO THE REQUESTED CHANNEL AND CONTROLLER. 
* 
*         COMMAND CALL - (DISK AND LOCAL NAD FORMAT)
* 
*         LOADBC(C=XX,F=EEEEEEE,D=DDDDDDD)
* 
*         XX     OCTAL CHANNEL NUMBER.  IF NOT SPECIFIED
*                (FOR A SYSTEM INITIATED REQUEST), CHANNEL IS 
*                DETERMINED FROM THE CHANNEL CONTROLWARE TABLE OR 
*                THE EST (CONTROL MODULE LOAD). 
*                IF THE PREFIX C IS USED THE CHANNEL IS A CONCURRENT
*                CHANNEL. (IE. C4 = CONCURRENT CHANNEL 4) 
* 
*         EEEEEEE  FILE NAME TO LOAD CONTROLWARE FROM 
*                  (DEFAULT = SYSTEM FILE). 
* 
*         DDDDDDD  FILE NAME TO DUMP CONTROLLER MEMORY TO BEFORE
*                  CONTROLLER RELOAD. THE DUMP CAPABILITY IS AVAILABLE
*                  FOR 7155/7165/7255 CONTROLLERS ONLY
*                  (DEFAULT = NO LOAD). 
* 
*         *LOADBC* PRESENTLY ASSUMES A CONTROLLER PHYSICAL EQUIPMENT
*         NUMBER OF ZERO. 
* 
*         COMMAND CALL - (CONTROL MODULE) 
* 
*         LOADBC(EQ=EO,F=EEEEEEE) 
* 
*         EO     CONTROL MODULE EST ORDINAL.
*         EEEEEEE  FILE NAME TO LOAD CONTROLWARE FROM 
*                  (DEFAULT = SYSTEM FILE). 
* 
* 
*         *LOADBC* CAN ALSO LOAD CONTROLWARE ON REMOTE NADS 
*         VIA *NLD* AFTER FIRST OBTAINING VALIDATION FROM *CVL*.
* 
*         COMMAND CALL - (REMOTE NAD FORMAT)
* 
*         LOADBC(C=XX,ND=AA,TY=BBB,LT=CC,AC=DDDD,F=EEEEEEE) 
* 
*         XX     OCTAL CHANNEL NUMBER.
*         AA     HEXADECIMAL REMOTE NAD NUMBER. 
*         BBB    TYPE OF CONTROLWARE TO LOAD. 
*                170 - CYBER 170 (DEFAULT). 
*                IBM - IBM. 
*                MIN - COMMON MINICOMPUTER. 
*                200 - CYBER 20X. 
*         CC     LOGICAL TCU ENABLES MASK.
*         DDDD   HEXADECIMAL ACCESS CODE. 
*         EEEEEEE  FILE NAME TO LOAD CONTROLWARE FROM 
*                  (DEFAULT = SYSTEM FILE). 
 LOADBC   SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         * BUFFER ARGUMENT ERROR.* 
*                *LOADBC* LOAD FET CONTAINED INCORRECT BUFFER POINTER.
* 
*         * CHXX, CONTROLLER RESERVED.* 
*                THE MULTIPLE-ACCESS CONTROLLER IS RESERVED THROUGH THE 
*                ALTERNATE ACCESS.  *LOADBC* DELAYS AND CONTINUES RETRY 
*                OF CONTROLWARE RELOAD VIA *1LC* UNTIL THE RESERVE IS 
*                RELEASED.
* 
*         * CONTROLLER DID NOT TAKE ALL CONTROLWARE.* 
*                THE CONTROLLER DID NOT TAKE ALL THE DATA IN THE
*                CONTROLWARE RECORD DURING LOAD PROCESSING. 
*                THE CONTENTS OF THE A REGISTER IN *1LC* WAS NOT
*                ZERO AFTER ONE OF THE *OAM* INSTRUCTIONS.
* 
*         * CONTROLLER DUMP COMPLETE.*
*                REQUESTED CONTROLLER DUMP WAS SUCCESSFUL.
* 
*         * CONTROLLER DUMP UNSUCCESSFUL.*
*                *1LC* WAS UNABLE TO DUMP 7155 CONTROLLER MEMORY DUE
*                TO FUNCTION TIMEOUT OR INCORRECT CONTROLLER RESPONSE.
* 
*         * CONTROLWARE LOAD ABORT, C=XX.*
*                REQUESTED CONTROLWARE LOAD WAS UNSUCCESSFUL. 
*                XX = CHANNEL NUMBER XX REQUESTED.
* 
*         * CONTROLWARE LOAD ABORT, EQ=XXX.*
*                REQUESTED CONTROLWARE LOAD WAS UNSUCCESSFUL. 
*                XX = CONTROL MODULE EST ORDINAL. 
* 
*         * CONTROLWARE LOAD ALREADY IN PROGRESS.*
*                REQUESTED CONTROLWARE LOAD FOR SPECIFIED CHANNEL 
*                WAS ALREADY BEING PROCESSED BY ANOTHER COPY OF 
*                *LOADBC*/*1LC*.
* 
*         * CONTROLWARE NOT FOUND.* 
*                EITHER THE SPECIFIED FILE DOES NOT CONTAIN THE 
*                REQUESTED CONTROLWARE, OR *F=0* WAS SPECIFIED. 
* 
*         * DUMP BUFFER ARGUMENT ERROR.*
*                *LOADBC* DUMP FET CONTAINED INCORRECT BUFFER POINTER.
* 
*         * ERROR IN PARAMETERS.* 
*                *LOADBC* COMMAND CONTAINED INCORRECT PARAMETER(S). 
* 
*         * FUNCTION TIMED OUT=NNNN.* 
*                *1LC* TIMED OUT IN THE FUNCTION ROUTINE WHEN 
*                FUNCTIONING THE CONTROLLER DURING LOAD PROCESSING. 
*                NNNN = FUNCTION NUMBER.
* 
*         * GENERAL STATUS  =  NNNN.* 
*                NNNN = THE GENERAL STATUS AFTER THE CONTROLWARE LOAD 
*                WAS COMPLETED.  THE CONTROLWARE LOAD WAS NOT 
*                SUCCESSFUL AND THE GENERAL STATUS IS NOT ZERO. 
* 
*         * INSUFFICIENT DUMP BUFFER SPACE.*
*                *LOADBC* DUMP FET BUFFER SPACE WAS INSUFFICIENT FOR
*                CONTROLLER MEMORY DUMP.
* 
*         * INCORRECT CHANNEL NUMBER.*
*                CHANNEL NUMBER SUPPLIED ON *LOADBC* COMMAND WAS NOT
*                NUMERIC OR WAS NOT A VALID HARDWARE CHANNEL NUMBER.
* 
*         * INCORRECT EST ORDINAL.* 
*                EST ORDINAL SUPPLIED ON *LOADBC* COMMAND WAS NOT A 
*                VALID EST ORDINAL. 
* 
*         * INCORRECT 1LC DUMP RESPONSE CODE.*
*                *1LC* RETURNED AN INCORRECT RESPONSE CODE TO *LOADBC*. 
* 
*         * LENGTH IN 52 TABLE .NE. FET.* 
*                THE CONTROLWARE RECORD LENGTH IN THE 52 TABLE DID NOT
*                EQUAL THE CONTROLWARE RECORD LENGTH SPECIFIED IN THE 
*                FET AFTER THE CONTROLWARE WAS READ INTO *LOADBC* FIELD 
*                LENGTH.
* 
*         * LOADBC ABORT - BAD INITIATION PARAMETERS.*
*                THE ACTUAL NAD MEMORY SIZE IS SMALLER THAN THE 
*                SPECIFIED *LOADBC* DEFAULT MEMORY SIZE.
* 
*         * LOADBC ABORT - XXX ERROR CODE = YYY.* 
*                PP PROGRAM XXX (*CVL* OR *NLD*) RETURNED A RESPONSE
*                CODE OF YYY WHEN VALIDATING THE NAD OR WHEN
*                LOADING NAD CONTROLWARE. 
* 
*         * LOADBC REMOTE NAD LOAD - GO OR DROP.* 
*                FLASHING DISPLAY MESSAGE INDICATING THAT *CVL* COULD 
*                NOT DETERMINE THE STATUS OF THE NAD.  OPERATOR 
*                ACTION IS REQUIRED BEFORE CONTROLWARE WILL BE
*                LOADED.
* 
*         * NO CHANNEL LOAD REQUEST.* 
*                CHANNEL WAS NOT SPECIFIED ON THE *LOADBC* COMMAND
*                AND CHANNEL CONTROLWARE LOAD REQUEST WAS NOT FOUND 
*                IN THE CHANNEL TABLE.
* 
*         * NO CONTROLWARE ON CHANNEL.* 
*                THE CHANNEL TABLES INDICATE NO CONTROLWARE 
*                EXISTS ON THE REQUESTED CHANNEL. 
* 
*         * NO GENERAL STATUS RECEIVED.*
*                AFTER A GENERAL STATUS FUNCTION IN *1LC*, THE *IAM*
*                INSTRUCTION DID NOT RECEIVE THE STATUS WORD. 
* 
*         * NO 52 TABLE IN CONTROLWARE RECORD.* 
*                THE CONTROLWARE RECORD READ FROM THE FILE DID
*                NOT CONTAIN A 52 TABLE ENTRY.
* 
*         * NO 77 TABLE IN CONTROLWARE RECORD.* 
*                THE CONTROLWARE RECORD READ FROM THE FILE DID
*                NOT CONTAIN A 77 PREFIX TABLE. 
* 
*         * NOT CORRECT CONTROLLER TYPE FOR DUMP.*
*                REQUESTED CONTROLLER DUMP WAS NOT PERFORMED SINCE
*                THE DEVICE IS NOT A 7155/7165 CONTROLLER NOR A 7255
*                ADAPTOR. 
* 
*         * NOT CONTROL MODULE EST ORDINAL.*
*                EST ORDINAL SUPPLIED ON *LOADBC* COMMAND DOES NOT
*                CORRESPOND TO A CONTROL MODULE DEVICE. 
* 
*         * SPECIFIED CHANNEL IS IN USE.* 
*                THE CHANNEL TABLES INDICATE THE SPECIFIED CHANNEL
*                WAS DOWN AND ASSIGNED TO MAINTENANCE PERSONNEL.
* 
*         * SYSTEM NOT IN ENGR MODE.* 
*                *LOADBC* AND *1LC* INITIATED FROM A NON-SYSTEM REQUEST 
*                REQUIRE ENGINEERING MODE ENABLED.
* 
*         * USER NOT SYSTEM ORIGIN.*
*                *LOADBC* AND *1LC* CAN ONLY BE INITIATED FROM SYSTEM 
*                ORIGIN OR FROM A SYSTEM REQUEST. 
* 
*         * VALIDATION DENIED - DEVICE NOT FOUND.*
*                *CVL* RETURNED A RESPONSE INDICATING THAT THE
*                SPECIFIED NAD WAS NOT FOUND IN THE EST.
* 
*         * VALIDATION DENIED - DEVICE ON OR IN USE.* 
*                *CVL* RETURNED A RESPONSE INDICATING THAT NAD
*                CONTROLWARE COULD NOT BE LOADED BECAUSE THE NAD
*                WAS TURNED ON OR IN USE. 
* 
*         * YYY FIRMWARE MATTT-VVV,CH=XX.*
*                YYY = CONTROLLER TYPE (844, 885, FSC ADAPTOR). 
*                TTT = CONTROLWARE TYPE (401, 454, 710, 721). 
*                VVV = VERSION NUMBER (A12, A13,...). 
*                XX = CHANNEL ON WHICH CONTROLWARE WAS DOWNLOADED.
 LOADBC   SPACE  4,10 
***       ERRLOG MESSAGES.
* 
*         *CHXX,MATTT,AVV,LOAD COMPLETE.* 
*                XX = CHANNEL ON WHICH DISK CONTROLWARE WAS DOWNLOADED. 
*                TTT = CONTROLWARE TYPE (MA401, MA454, MA710, MA721). 
*                VV = VERSION NUMBER (A12, A13, A15, ...).
* 
*         * CHXX,ABORT,SYYYY.*
*                AN ERROR IN GENERAL STATUS AFTER THE CONTROLWARE WAS 
*                DOWNLOADED.
*                XX = CHANNEL NUMBER XX.
*                YYYY = GENERAL STATUS. 
* 
*         * CHXX,ABORT,FYYYY.*
*                FUNCTION TIMEOUT WHEN FUNCTIONING THE DISK CONTROLLER. 
*                XX = CHANNEL NUMBER. 
*                YYYY = FUNCTION THAT TIMED OUT.
* 
*         * CHXX,ABORT,ALL DATA NOT TAKEN.* 
*                THE CONTROLLER DID NOT ACCEPT ALL THE DATA ON A
*                DOWNLOAD CONTROLWARE ATTEMPT.
*                XX = CHANNEL NUMBER. 
* 
*         * CHXX,ABORT,NO GENERAL STATUS.*
*                AFTER DOWNLOAD OF CONTROLWARE WAS COMPLETE, THE
*                GENERAL STATUS WORD WAS NOT RETURNED BY THE CONTROLLER 
*                AFTER A STATUS FUNCTION. 
*                XX = CHANNEL NUMBER. 
* 
*         * CHXX, CONTROLLER RESERVED.* 
*                THE GENERAL STATUS INDICATED THE MULTIPLE-ACCESS 
*                CONTROLLER WAS RESERVED THROUGH THE ALTERNATE ACCESS.
*                CONTROLWARE IS DOWNLOADED AFTER THE CONTROLLER RESERVE 
*                IS RELEASED. 
*                XX = CHANNEL NUMBER. 
          SPACE  4,10 
***       *LOADBC* IS A CPU PROGRAM WHICH LOADS CONTROLWARE TO
*         A SPECIFIED OR DRIVER REQUESTED CHANNEL OR CONTROL
*         MODULE.  THE CONTROLWARE IS READ FROM A LOCAL 
*         FILE OR FROM THE SYSTEM (DEFAULT) FILE. 
*         IF CONTROLWARE IS TO BE LOADED ON A DISK CHANNEL, *1LC* 
*         IS CALLED TO DO THE ACTUAL LOADING OF CONTROLWARE READ FROM 
*         *LOADBC* FIELD LENGTH.  A RESPONSE CODE IS RETURNED TO
*         *LOADBC* LOAD FET+0 AND THE APPROPRIATE DAYFILE MESSAGE 
*         IS ISSUED.  *LOADBC* WILL RETRY CONTROLWARE RELOAD VIA *1LC*
*         *CRRC* TIMES BEFORE THE RELOAD IS CONSIDERED UNSUCCESSFUL 
*         DUE TO CONTROLLER HARDWARE MALFUNCTION.  FOR 7155 DISK
*         CONTROLLERS, *1LC* WILL ALSO OPTIONALLY DUMP THE CONTROLLER 
*         MEMORY TO *LOADBC* DUMP BUFFER BEFORE RELOADING THE 
*         CONTROLWARE.  *LOADBC* WILL PERFORM A BINARY COMPARISON 
*         BETWEEN THE OLD AND NEW CONTROLWARE AND WRITE THIS
*         DATA TO A FILE THAT CAN BE PROCESSED BY *DSDI*. 
*         IF CONTROLWARE IS TO BE LOADED ON A NAD CHANNEL, *CVL* IS 
*         FIRST CALLED TO VALIDATE ACCESS TO THAT NAD.  IF VALIDATION 
*         HAS BEEN GRANTED, *NLD* IS CALLED FOUR TIMES - 1) TO LOAD 
*         CONTROLWARE USING DEFAULT NAD BUFFER AND MEMORY SIZE
*         PARAMETERS, 2) TO OBTAIN GENERAL NAD STATUS AND THE NAD-S 
*         ACTUAL MEMORY SIZE, 3) TO LOAD CONTROLWARE USING THE ACTUAL 
*         NAD MEMORY SIZE, AND 4) TO RETURN THE LOCAL NAD TO A
*         USABLE STATE.  THE ASSIGNED LOCAL NAD IS THEN RELEASED
*         BY A FINAL CALL TO *CVL*, AND AN APPROPRIATE DAYFILE
*         MESSAGE IS ISSUED.
          SPACE  4,10 
*         MACRO DEFINITIONS.
  
  
*CALL     COMCCMD 
*CALL     COMCMAC 
 NIPADD   SPACE  4,15 
**        NIPADD - NAD INITIATION PARAMETER ADDRESS.
* 
*         NIPADD W
*                W = NAD WORD ORDINAL (0-24). 
* 
*         USES   X - 2. 
*                A - 2. 
*                B - 2. 
  
  
 NIPADD   MACRO  W
          LOCAL  A,B
          MACREF NIPADD 
 A        SET    W*24/60     *NADIP* TABLE OFFSET 
 B        SET    W*24-A*60   SHIFT COUNT
          SA2    NADIP+A
          SB2    B+12D
          ENDM
 NSTADD   SPACE  4,15 
**        NSTADD - NAD STATUS WORD ADDRESS. 
* 
*         NSTADD W
*                W = NAD STATUS WORD ORDINAL (0-23).
* 
*         USES   X - 2. 
*                A - 2. 
*                B - 2. 
  
  
 NSTADD   MACRO  W
          LOCAL  A,B
          MACREF NSTADD 
 A        SET    W*16/60     NAD STATUS BLOCK OFFSET
 B        SET    W*16-A*60   SHIFT COUNT
          SA2    GST+A
          SB2    B
          ENDM
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMSDFS 
*CALL     COMSDSL 
*CALL     COMSPRD 
*CALL     COMSSSD 
*CALL     COMSSSJ 
          SPACE  4,10 
*         LOCAL SYMBOL DEFINITIONS. 
  
  
 BUFL     EQU    10000D      BUFFER SIZE NECESSARY FOR NAD CW 
 CRRC     EQU    3           CONTROLWARE RELOAD RETRY COUNT 
 CTL      EQU    201B        *CVL* LOAD CONTROLWARE FLAGS 
 CTSZ     EQU    40000B      7165 CONTROLLER MEMORY SIZE
 DBUFL    SET    CTSZ*2+4 
 DBUFL    SET    DBUFL/5+1   DUMP BUFFER LENGTH 
 FDBC     EQU    100B        FIRST DUMP BYTE TO COMPARE 
 FDWI     EQU    FDBC*2/5    FIRST DUMP WORD INDEX
 FDBI     EQU    FDBC*2-FDWI*5  FIRST DUMP BYTE INDEX 
 LDBC     EQU    13710B+1    LAST DUMP BYTE + 1 TO COMPARE
 LDWI     EQU    LDBC*2/5    LAST DUMP WORD INDEX 
 LDBI     EQU    LDBC*2-LDWI*5  LAST DUMP BYTE INDEX
 CDHZ     EQU    2410D       CONTROLWARE DIAGNOSTICS HEADER SIZE
 FLBC     EQU    CDHZ+FDBC-100B  FIRST LOAD BYTE TO COMPARE 
          ERRNG  FDBC-100B   LOAD BEGINS AT 100B AFTER DIAGNOSTICS
 FLWI     EQU    FLBC*2/5    FIRST LOAD WORD INDEX
 FLBI     EQU    FLBC*2-FLWI*5  FIRST LOAD BYTE INDEX 
 NAD      EQU    300B        *CVL* NAD DEVICE CODE
 RND      EQU    301B        *CVL* REMOTE NAD DEVICE CODE 
 RTNU     EQU    10B         RETURN EQUIPMENT BIT 
 VRNM     EQU    4           *CVL* RESPONSE - DEVICE NOT FOUND
 VRUS     EQU    6           *CVL* RESPONSE - DEVICE IN USE OR ON 
 VRSI     EQU    34B         *CVL* RESPONSE - NAD STATUS INDETERMINATE
          SPACE  4,10 
*         GLOBAL MEMORY DEFINITIONS.
  
  
          ORG    110B 
 SSJ=     VFD    36/0,12/LCCS,12/IRSI 
          BSSZ   SSJL-1 
          SPACE  4,10 
*         FILE ENVIRONMENT TABLES.
  
  
 IN       EQU    *
 SYSTEM   RFILEB BUF,BUFL,(FET=9) 
  
 DUMP     FILEB  DBUF,DBUFL 
          ORG    DUMP 
          CON    0           CLEAR DUMP FILE NAME 
          ORG    DUMP+5 
          SPACE  4,10 
*         CONTROL STORAGE CELLS.
  
  
 ACC      CON    0           REMOTE NAD ACCESS CODE 
 CCHF     CON    0           CONCURRENT CHANNEL FLAG
 CHAN     VFD    18/2H   ,42/0  CHANNEL IN DISPLAY CODE LEFT JUSTIFIED
 CHN      CON    0           CHANNEL NUMBER 
 CME      CON    0           CONTROL MODULE EST ORDINAL 
 CMES     CON    0           EST ORDINAL DISPLAY CODE LEFT JUSTIFIED
 CMQ      CON    0           CONTROL MODULE EQUIPMENT NUMBER
 CRN      CON    0           CONTROLWARE RECORD NAME LEFT JUSTIFIED 
 CWL      CON    0           CONTROLWARE LENGTH 
 DRCF     CON    0           SET IF NOT DRIVER CALL 
 ESTW     CON    -1          EST POINTER WORD *ESTP*
 FN       VFD    36/6HSYSTEM,24/0  DEFAULT CONTROLWARE FILE 
 FWC      CON    0           FWA OF CONTROLWARE 
 LTCU     CON    0           LOGICAL TCU ENABLES
 LWC      CON    0           LWA+1 OF CONTROLWARE 
 RE       CON    0           RETURN EQUIPMENT FLAG
 RL       CON    0           REMOTE NAD LOAD FLAG 
 RNAD     CON    0           REMOTE NAD NUMBER
 RT       CON    CRRC        RETRY COUNT
 TYPE     DATA   0L170       NAD CONTROLWARE TYPE 
 TYPN     CON    0           NAD TYPE FLAG
 GST      BSSZ   100B        GENERAL STATUS RETURNED BY *NLD* 
 GSTL     EQU    *           APPROXIMATE END OF GENERAL STATUS
 CVLB     SPACE  4,10 
**        *CVL* PARAMETER BLOCK.
  
  
 CVLB     BSS    0
          LOC    0
 CRC      CON    0           RESPONSE CODE
 CEO      CON    0           EST ORDINAL
 CCH      CON    1S48        CHANNEL
 CEQ      CON    1S48+NAD*10000B  LOCAL NAD DEVICE CODE 
 CUN      CON    0           UNIT (NOT USED FOR *RHF*)
 CDV      CON    1S48        NAD DEVICE CODE
 CFC      CON    0           FUNCTION CHARACTERISTICS 
 CAC      CON    0           REMOTE HOST ACCESS CODE
 CLT      CON    0           LOGICAL TCU ENABLES MASK 
 CND      CON    0           REMOTE NAD NUMBER
          LOC    *O 
 NLDB     SPACE  4,10 
**        *NLD* PARAMETER BLOCK.
  
  
 NLDB     CON    0           RESPONSE CODE
          CON    0           *FIRST*
          CON    0           *IN* 
          CON    0           *OUT*
          CON    0           *LIMIT*
          CON    0           RESERVED FOR REMOTE NAD LOADING
  
*         *NLD* PARAMETER BLOCK FOR NAD STATUS. 
  
 NADSTAT  BSS    1           WORD 0 OF *NLD* PARAMETER BLOCK
          VFD    60/GST      *FIRST*
          VFD    60/GST      *IN* 
          VFD    60/GST      *OUT*
          VFD    60/GSTL     *LIMIT*
          BSSZ   1           RESERVED FOR REMOTE NAD STATUS 
          SPACE  4,10 
*         NAD STATUS SYMBOLS. 
  
 WAMS     EQU    22D         WORD ORDINAL OF ACTUAL MEMORY SIZE 
 WUNM     EQU    12D         WORD ORDINAL OF UNUSED NAD MEMORY
 TRCM     SPACE  4,10 
**        TRCM - GENERATE MESSAGE ADDRESS TABLE.
* 
*         TRCM   BML,DAY,ERROR
* 
*         BML    BINARY MAINTENANCE LOG MESSAGE FIRST WORD ADDRESS. 
*         DAY    DAYFILE MESSAGE FIRST WORD ADDRESS.
*         ERROR  ERROR LOG MESSAGE FIRST WORD ADDRESS.
  
          PURGMAC TRCM
  
 TRCM     MACRO  BML,DAY,ERROR
          VFD    24/BML 
          VFD    18/DAY 
          VFD    18/ERROR 
          ENDM
 TLRC     SPACE  4,10 
**        TLRC - INDEXED TABLE OF LOAD RESPONSE MESSAGE ADDRESSES.
* 
*T TLRC   VFD    6/0,18/ BML ,18/ DAY ,18/ ERROR
* 
*         BML    BINARY MAINTENANCE LOG MESSAGE FIRST WORD ADDRESS. 
*         DAY    DAYFILE MESSAGE FIRST WORD ADDRESS.
*         ERROR  ERROR LOG MESSAGE FIRST WORD ADDRESS.
  
  
 TLRC     BSS    0
          LOC    0
          TRCM   ,MSG0,EMSG 
 RC1      TRCM   ,MSG1
 RC2      TRCM   ,MSG2
 RC3      TRCM   ,MSG3
 RC4      TRCM   ,MSG4
 RC5      TRCM   ,MSGRR 
 RC6      TRCM   ,MSG6
 RC7      TRCM   ,MSG7
 RC10     TRCM   ,MSG10 
 RC11     TRCM   ,MSG11 
 RC12     TRCM   ,MSG12 
 RC13     TRCM   ,MSGRR 
 RC14     TRCM   ,MSG14 
 RC15     TRCM   ,MSG15 
 RC16     TRCM   ,MSG16 
 RC17     TRCM   ,MSG17 
 RC20     TRCM   ,MSG20 
 RC21     TRCM   ,MSG21 
 RC22     TRCM   ,MSGRR 
 RC23     TRCM   ,MSGRR 
 RC24     TRCM   ,MSGRR 
 RC25     TRCM   ,MSGRR 
 RC26     TRCM   ,MSGRR 
 RC27     TRCM   ,MSGRR 
  
 RCAML    EQU    *           LOAD RESPONSE CODE ABORT MESSAGE LIMIT 
  
 RC30     TRCM   BML30,MSG30,EMSG0
 RC31     TRCM   BML31,MSG31,EMSG1
 RC32     TRCM   BML32,MSG32,EMSG2
 RC33     TRCM   BML33,MSG33,EMSG3
 RC34     TRCM   0,IRMB,EMSG4 
          LOC    *O 
 TLRCL    EQU    *-TLRC      TABLE LENGTH 
 TDMA     SPACE  4,10 
**        TDMA - INDEXED TABLE OF DUMP RESPONSE MESSAGE ADDRESSES.
* 
*         42/0, 18/DAYFILE MESSAGE ADDRESS
  
  
 TDMA     BSS    0
          LOC    0
          CON    DRM0        * CONTROLLER DUMP COMPLETE.* 
 DR1      CON    DRM1        * DUMP BUFFER ARGUMENT ERROR.* 
 DR2      CON    DRM2        * INSUFFICIENT DUMP BUFFER SPACE.* 
 DR3      CON    DRM3        * NOT CORRECT CONTROLLER TYPE FOR DUMP.* 
 DR4      CON    DRM4        * CONTROLLER DUMP UNSUCCESSFUL.* 
 TDMAL    EQU    *           TABLE LENGTH 
 DR5      CON    DRM5        * INCORRECT 1LC DUMP RESPONSE CODE.* 
          LOC    *O 
          SPACE  4,10 
*         DAYFILE MESSAGES ISSUED BY *LOADBC*.
  
  
 MSG0     DATA   C* YYY FIRMWARE VVVVVVVVV,CH=XXX.* 
 MSG1     DATA   C* USER NOT SYSTEM ORIGIN.*
 MSG2     DATA   C* SPECIFIED CHANNEL IS IN USE.* 
 MSG3     DATA   C* NO CHANNEL LOAD REQUEST.* 
 MSG4     DATA   C* ERROR IN PARAMETERS.* 
 MSG6     DATA   C* INCORRECT CHANNEL NUMBER.*
 MSG7     DATA   C* NO CONTROLWARE ON CHANNEL.* 
 MSG10    DATA   C* CONTROLWARE NOT FOUND.* 
 MSG11    DATA   C* SYSTEM NOT IN ENGR MODE.* 
 MSG12    DATA   C* BUFFER ARGUMENT ERROR.* 
 MSG14    DATA   C* CONTROLWARE LOAD ALREADY IN PROGRESS.*
 MSG15    DATA   C* NO 77 TABLE IN CONTROLWARE RECORD.* 
 MSG16    DATA   C* NO 52 TABLE IN CONTROLWARE RECORD.* 
 MSG17    DATA   C* LENGTH IN 52 TABLE .NE. FET.* 
 MSG20    DATA   C* INCORRECT EST ORDINAL.* 
 MSG21    DATA   C* NOT CONTROL MODULE EST ORDINAL.*
 MSG30    DATA   C* CONTROLLER DID NOT TAKE ALL CONTROLWARE.* 
 MSG31    DATA   C* GENERAL STATUS  =  NNNN.* 
 MSG32    DATA   C* FUNCTION TIMED OUT=NNNN.* 
 MSG33    DATA   C* NO GENERAL STATUS RECEIVED.*
 MSGRR    DATA   C* CDC RESERVED RESPONSE CODE.*
  
 DRM0     DATA   C* CONTROLLER DUMP COMPLETE.*
 DRM1     DATA   C* DUMP BUFFER ARGUMENT ERROR.*
 DRM2     DATA   C* INSUFFICIENT DUMP BUFFER SPACE.*
 DRM3     DATA   C* NOT CORRECT CONTROLLER TYPE FOR DUMP.*
 DRM4     DATA   C* CONTROLLER DUMP UNSUCCESSFUL.*
 DRM5     DATA   C* INCORRECT 1LC DUMP RESPONSE CODE.*
  
 MSGA     DATA   C* CONTROLWARE LOAD ABORT, C=XXXXXXX.* 
 MSGB     DATA   C* CONTROLWARE LOAD COMPLETE.* 
 MSGC     DATA   C* CONTROLWARE LOAD ABORT, EQ=XXXXXXX.*
          SPACE  4,10 
*         ERROR LOG MESSAGES. 
  
  
 EMSG     DATA   C*CHXXX,YYYYYYYYY,LOAD COMPLETE.*
 EMSG0    DATA   C* CHXXX,ABORT,ALL DATA NOT TAKEN.*
 EMSG1    DATA   C* CHXXX,ABORT,SYYYY.* 
 EMSG2    DATA   C* CHXXX,ABORT,FYYYY.* 
 EMSG3    DATA   C* CHXXX,ABORT,NO GENERAL STATUS.* 
 EMSG4    DATA   C* CHXXX, CONTROLLER RESERVED.*
          SPACE  4,10 
*         BML MESSAGES. 
  
  
 BMLM     VFD    12/BMLML,48/0  SET MESSAGE LENGTH
          VFD    12/DM0401,12/HI0105,12/0,12/0,12/0  CHANNEL/EQUIPMENT
          VFD    60/0        CONTROLWARE TYPE AND VERSION 
 BMLML    EQU    *-BMLM-1    MESSAGE LENGTH 
 BML30    VFD    12/BML30L,48/0  SET MESSAGE LENGTH 
          VFD    12/DM0401,12/HI0114,12/0,24/0  CHANNEL 
          VFD    60/0        NOT USED 
 BML30L   EQU    *-BML30-1   MESSAGE LENGTH 
  
 BML31    VFD    12/BML31L,48/0  SET MESSAGE LENGTH 
          VFD    12/DM0401,12/HI0115,12/0,24/0  CHANNEL 
          VFD    60/0        LAST STATUS
 BML31L   EQU    *-BML31-1   MESSAGE LENGTH 
  
 BML32    VFD    12/BML32L,48/0  SET MESSAGE LENGTH 
          VFD    12/DM0401,12/HI0116,12/0,24/0  CHANNEL 
          VFD    60/0        LAST FUNCTION
 BML32L   EQU    *-BML32-1   MESSAGE LENGTH 
  
 BML33    VFD    12/BML33L,48/0  SET MESSAGE LENGTH 
          VFD    12/DM0401,12/HI0117,12/0,24/0  CHANNEL 
          VFD    60/0        NOT USED 
 BML33L   EQU    *-BML33-1   MESSAGE LENGTH 
          TITLE  NAD CONTROLWARE PARAMETERS.
 NADCON   SPACE  4,10 
**        NADCON - GENERATE NAD CONSTANT. 
* 
*         NADCON P
*                P = HEXADECIMAL VALUE (0-FFFF).
  
  
 NADCON   MACRO  P
          LOCAL  A,B
          MACREF NADCON 
 A        SET    P/0#100
 B        SET    P-A*0#100
          VFD    4/0,8/A,4/0,8/B
          ENDM
 NADIP    SPACE  4,10 
**        NADIP - NAD INITIALIZATION PARAMETERS.
* 
*         THE FOLLOWING INITIALIZATION PARAMETERS ARE LOADED AT THE 
*         END OF THE NAD CONTROLWARE.  THEY ARE USED BY THE CONTROLWARE 
*         TO CONFIGURE THE NAD DURING INITIALIZATION. 
* 
*         NOTE - IF ENABLED NAD BUFFER TRACING IS DESIRED, THE
*         ANALYST SHOULD CHANGE THE APPROPRIATE LINE BELOW TO - 
*         NADCON 0#2954      ENABLE NAD BUFFER TRACING. 
  
  
 NADIP    BSS    0
          NADCON 0           NAD MEMORY SIZE - 1
          NADCON 0#F         TCU ENABLES
          NADCON 0           STREAM MODE
          NADCON 0#19        NUMBER OF NADS 
          NADCON 0#23        MAXIMUM NUMBER OF PATHS
          NADCON 0           RESERVED 
          NADCON 0           INTERNAL BUFFER COUNT
          NADCON 0           RESERVED 
          NADCON 0           CONTROL MESSAGE BUFFER COUNT 
          NADCON 0#81        TYPE 0 BUFFER SIZE 
          NADCON 0           TYPE 0 BUFFER COUNT
          NADCON 0#810       TYPE 1 BUFFER SIZE 
          NADCON 0           TYPE 1 BUFFER COUNT
          NADCON 0           TYPE 2 BUFFER SIZE 
          NADCON 0           TYPE 2 BUFFER COUNT
          NADCON 0           TYPE 3 BUFFER SIZE 
          NADCON 0           TYPE 3 BUFFER COUNT
          NADCON 6           TRUNK RECEIVER QUEUE LIMIT 
          NADCON 6           TRUNK SEND QUEUE LIMIT 
          NADCON 0#1E        CONTROL MESSAGE RECEIVE QUEUE LIMIT
          NADCON 0#1E        CONTROL MESSAGE SEND QUEUE LIMIT 
          NADCON 2           PATH RECEIVE QUEUE LIMIT 
          NADCON 2           PATH SEND QUEUE LIMIT
          NADCON 0           DISABLE NAD BUFFER TRACING (DEFAULT) 
          NADCON 1R:/1R:*10000B  CHARACTER SET MODE (DEFAULT 64)
          DATA   0
 LNADIP   EQU    *-NADIP
  
  
*         *NADIP* TABLE WORD OFFSETS. 
  
 WCBC     EQU    8           CONTROL MESSAGE BUFFER COUNT 
 WIBC     EQU    6           INTERNAL (SYSTEM) BUFFER COUNT 
 WMNP     EQU    4           MAXIMUM NUMBER OF PATHS
 WNMS     EQU    0           NAD MEMORY SIZE
 WTBC     EQU    12D         TYPE 1 BUFFER COUNT
  
*         NAD INITIATION PARAMETER DEFINITIONS. 
  
 DCBC     EQU    0#23        DEFAULT CONTROL MESSAGE BUFFER COUNT 
 DNMS     EQU    0#7FFF      DEFAULT NAD MEMORY SIZE - 1
 DTBC     EQU    2           DEFAULT TYPE 1 BUFFER SIZE 
 LCBC     EQU    0#30        CONTROL MESSAGE BUFFER LENGTH
 LTBC     EQU    0#820       TYPE 1 BUFFER LENGTH 
          TITLE  MAIN PROGRAM.
 LBC      SPACE  4,10 
**        LOADBC - LOAD BUFFER CONTROLWARE MAIN PROGRAM.
  
  
 LOADBC   BSS    0           ENTRY
          SB1    1
          RJ     PRS         PRESET 
          SA1    DRCF 
          NZ     X1,LBC2     IF NOT DRIVER CALL 
 LBC1     RJ     SCN         SELECT CHANNEL NUMBER
          SA1    CME
          NZ     X1,LBC2     IF LOAD REQUEST FOR CONTROL MODULE 
          RJ     CCS         CHECK CHANNEL STATUS 
 LBC2     RJ     RCF         READ CONTROLWARE FILE
 LBC3     SA2    DUMP 
          ZR     X2,LBC4     IF NO DUMP REQUESTED 
          SX2    A2+
          LX2    18 
 LBC4     SA3    CME
          SA1    CHN
          ZR     X3,LBC4.1   IF CONTROL MODULE NOT SPECIFIED
          SX1    X3+4000B    SET CONTROL MODULE FLAG FOR *1LC*
 LBC4.1   SA3    DRCF 
          LX3    10 
          BX6    X3+X1
          SA6    IN+8 
          SA3    LBCA        BUILD *1LC* CALL WORD
          BX6    X3+X2       SET DUMP REQUEST 
          MX7    42 
          SA1    IN          CLEAR FET+0 RESPONSE CODE
          SA6    LBCD+1 
          SA6    LBCB 
          BX7    X7*X1
          SA7    A1 
          SA2    CCHF        CHECK FOR CONCURRENT CHANNEL 
          NZ     X2,LBC6     IF CONCURRENT CHANNEL
          SYSTEM SPC,,A6     CALL *1LC* 
          EQ     LBC7        COMPLETE LOAD
  
 LBC6     SYSTEM CPM,R,LBCD,140B*100B  ASSIGN CIO PP FOR THE LOAD 
 LBC7     RECALL IN          WAIT FOR LOAD TO COMPLETE
          SA1    X2          GET *1LC* RESPONSE CODE
          MX0    -8 
          LX1    -1 
          BX0    -X0*X1 
          SX2    X0-RC14     CHECK FOR LOAD ALREADY IN PROGRESS 
          SA1    DRCF        CHECK IF NEED TO RESELECT CHANNEL
          BX1    X1+X2
          CX1    X1 
          ZR     X1,LBC1     IF RELOAD IN PROGRESS FOR DRIVER REQUEST 
          SA1    CME
          ZR     X1,LBC8     IF NOT CONTROL MODULE LOAD 
          SA1    IN+8        GET CHANNEL NUMBER USED
          MX6    12 
          BX1    X6*X1
          LX1    12 
          BX6    X1 
          SX1    X1+10000B
          SA6    CHN
          RJ     COD         CONVERT TO DISPLAY CODE
          LX6    48-0 
          MX4    12 
          BX6    X4*X6
          SA6    CHAN 
 LBC8     SX2    X0-RCAML 
          NG     X2,ELP      IF NOT CONTROLLER HARDWARE ERROR 
          SX6    X0-RC34
          ZR     X6,LBC9     IF CONTROLLER RESERVED 
          SA2    DRCF 
          ZR     X2,ELP      IF DRIVER CALL 
          SA2    RT          CHECK RETRY COUNT
          SX6    X2-1 
          SA6    A2+
          ZR     X6,ELP      IF RETRY COUNT EXHAUSTED 
          RJ     IRM         ISSUE RESPONSE MESSAGES
          BX2    X2-X2       PREVENT DUMP ON RETRY
          EQ     LBC4        RETRY CONTROLWARE LOAD 
  
 LBC9     RECALL
          SA1    LBCC        GET PREVIOUS CONTROLLER RESERVE FLAG 
          NZ     X1,LBC3     IF PREVIOUS CONTROLLER RESERVE 
          SX6    B1 
          SA6    A1 
          RJ     IRM         ISSUE RESPONSE MESSAGES
          EQ     LBC3        RETRY CONTROLWARE RELOAD 
  
  
 LBCA     VFD    18/3R1LC,24/0,18/IN  *1LC* CALL WORD 
 LBCB     BSS    1           *SPC* PARAMETER WORD 
 LBCC     CON    0           CONTROLLER RESERVED RESPONSE FLAG
 LBCD     CON    0,0         CALL BLOCK FOR CONCURRENT PP ASSIGNMENT
          TITLE  DISK CONTROLWARE SUBROUTINES.
 CCS      SPACE  4,15 
**        CCS - CHECK CHANNEL STATUS. 
* 
*         ENTRY  (CHN) = CHANNEL NUMBER.
* 
*         EXIT   (X5) = CONTROLWARE TYPE FOR CHANNEL. 
*                (CHAN) = CHANNEL NUMBER IN DISPLAY CODE. 
*                (CRN) = CONTROLWARE RECORD NAME. 
* 
*         ERROR  EXIT TO *ELP* WITH (X0) = ERROR RESPONSE.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 3, 6.
* 
*         CALLS  COD, RCT.
  
  
 CCS      SUBR               ENTRY/EXIT 
          SA5    CHN         CONVERT CHANNEL NUMBER TO DISPLAY
          MX0    -5          CLEAR POSSIBLE CCH FLAG
          BX1    -X0*X5 
          SX1    X1+100B     FORCE LEADING ZERO FILL
          SX0    5
          RJ     COD
          MX1    -12
          SB6    -B1
          BX6    -X1*X6 
          LX6    -12
          SA1    CHN         CHECK FOR CONCURRENT CHANNEL 
          LX1    59-5 
          PL     X1,CSS0     IF NOT A CONCURRENT CHANNEL
          SX1    1RC         ADD *C* TO CHANNEL NUMBER
          LX6    -6 
          LX1    54 
          BX6    X6+X1
 CSS0     SA6    CHAN 
          RJ     RCT         READ CHANNEL TABLES
 CCS1     SB6    B6+B1       CALCULATE WORD INDEX IN CHANNEL TABLE
          IX5    X5-X0
          PL     X5,CCS1     IF DIVIDE BY 5 NOT COMPLETE
          IX5    X5+X0       BYTE INDEX 
          SX1    12 
          IX5    X5*X1
          SB3    X5          SHIFT FOR CHANNEL BYTE 
          SA1    CBUF+B6     CHANNEL STATUS 
          MX5    -5 
          SA3    CBUF+CTALL*2+B6  CHANNEL CONTROLWARE 
          LX1    B3 
          LX3    B3 
          SX0    RC7         * NO CONTROLWARE ON CHANNEL.*
          LX3    12 
          BX5    -X5*X3      CONTROLWARE TYPE 
          SX7    X5-MXCWT 
          PL     X7,ELP      IF INCORRECT TYPE
          SA4    TCWT+X5     GET CONTROLWARE RECORD NAME
          ZR     X4,ELP      IF NO CONTROLWARE ON CHANNEL 
          BX7    X4 
          LX1    59-53
          SA7    CRN
          PL     X1,CCSX     IF CHANNEL UP
          SA2    CBUF+CTALL+B6  CHANNEL ASSIGNMENT
          MX6    12 
          LX2    B3 
          BX2    X6*X2
          R=     X0,RC2      * SPECIFIED CHANNEL IS IN USE.*
          ZR     X2,CCSX     IF CHANNEL NOT ASSIGNED
          EQ     ELP         PROCESS ERROR
 TCWT     SPACE  4,10 
**        TCWT - TABLE OF CONTROLWARE TYPES.
  
  
 TCWT     BSS    0
          LOC    0
 NOCW     CON    0           0 - NO CONTROLWARE 
 HTCW     DATA   0LBCS       1 - HT (7054/7154/7152)
 FTCW     DATA   0LBCF       2 - FT (7154/7152) 
 FMCW     DATA   0LFMD       3 - FMD (7155) 
 ADCW     DATA   0LADP       4 - FSC ADAPTER
 PHCW     DATA   0LPHD       5 - DEMA/PFMD (7155-10)
 IDCW     DATA   0LISD       6 - 7255 ADAPTOR 
 CCCW     DATA   0LMA464     7 - 7165 CCC 
 LNFL     EQU    *           LOCAL NAD FLAG 
 NDCW     DATA   0L170       10 - CYBER 170 NAD 
 CMCW     DATA   0LCMD       11 - CONTROL MODULE I
 C2CW     DATA   0LCM2       12 - CONTROL MODULE II 
 M8CW     DATA   0LCCC7990   13 - 7990 CCC
          LOC    *O 
 ELP      SPACE  4,15 
**        ELP - END *LOADBC* PROCESSING.
* 
*         ENTRY  (X0) = LOAD RESPONSE CODE. 
* 
*         USES   X - 1, 2.
*                A - 0, 1, 2. 
*                B - 2, 5.
* 
*         CALLS  IRM, SNM, VCD. 
* 
*         MACROS ABORT, ENDRUN, MESSAGE.
  
  
 ELP      BSS    0           ENTRY
          SA0    B0          SET NO ABORT FLAG
          ZR     X0,ELP1     IF LOAD COMPLETE 
          SA0    B1          SET ABORT FLAG 
          SX1    X0-RCAML 
          NG     X1,ELP2     IF NOT CONTROLLER HARDWARE ERROR 
 ELP1     RJ     VCD         VERIFY CONTROLWARE DUMP
 ELP2     RJ     IRM         ISSUE RESPONSE MESSAGES
          SB5    MSGB        * CONTROLWARE LOAD COMPLETE.*
          ZR     X0,ELP3     IF LOAD COMPLETE 
          SB5    MSGA        * CONTROLWARE LOAD ABORT, C=XX.* 
          SA1    CHAN        ENTER CHANNEL DISPLAY INTO SUMMARY MESSAGE 
          SA2    CME
          ZR     X2,ELP2.1   IF NOT CONTROL MODULE
          SB5    MSGC        * CONTROLWARE LOAD ABORT, EQ=XXX.* 
          SA1    CMES        ENTER EST ORDINAL INTO SUMMARY MESSAGE 
 ELP2.1   SB2    1RX
          RJ     SNM
 ELP3     MESSAGE  B5,0,R 
          SX1    A0+
          NZ     X1,ELP4     IF *LOADBC* TO BE ABORTED
          ENDRUN
  
 ELP4     ABORT 
 FFI      SPACE  4,10 
**        FFI - FIND FIRMWARE IDENT.
* 
*         (BUF - BUF+16) = PREFIX TABLE OF FIRMWARE RECORD. 
* 
*         (X7) = FIRMWARE TYPE AND REVISION LEVEL.
* 
*         USES   X - 1, 2, 3, 4, 7. 
*                A - 1, 2, 3. 
*                B - 2, 3.
* 
*         CALLS  USB. 
  
  
*         SET DEFAULT NAME. 
  
 FFI4     SA3    FFIB        DEFAULT NAME 
          BX7    X3 
  
 FFI      SUBR   0           ENTRY/EXIT 
          SB2    BUF+10B     FIRST WORD ADDRESS OF UNPACK 
          SB3    B0          DEFINE NO ASCII
          MX4    -6 
          RJ     USB
          SB2    70 
          SA1    USBB-1 
 FFI1     SA1    A1+B1       SCAN FOR *FIRMWARE*
          SB2    B2-B1
          SX1    X1-1RF 
          ZR     B2,FFI4     IF END OF TEXT STRING
          NZ     X1,FFI1     IF NOT *F* 
          SA2    A1+1 
          SX2    X2-1RI 
          NZ     X2,FFI1     IF NOT *I* 
          SA3    FFIA        CHECK FOR REMAINDER OF *FIRMWARE*
 FFI2     BX1    -X4*X3 
          SA2    A2+B1
          AX3    6
          IX2    X1-X2
          NZ     X2,FFI1     IF NOT *RMWARE*
          NZ     X3,FFI2     IF NOT END OF *RMWARE* 
          SB3    A2-USBB-61 
          SX7    1R          ASSEMBLE FIRMWARE IDENT
          PL     B3,FFI4     IF NOT ENOUGH CHARACTERS REMAIN
          SB3    9
 FFI3     LX7    6           POSITION ASSEMBLY
          SA2    A2+B1
          SB3    B3-B1
          BX7    X2+X7
          NZ     B3,FFI3     IF NOT END OF ASSEMBLY 
          LX7    6
          EQ     FFIX        RETURN 
  
  
 FFIA     VFD    18/0,42/7H ERAWMR
 FFIB     DATA   10H**********
 IRM      SPACE  4,15 
**        IRM - ISSUE RESPONSE MESSAGES.
* 
*         ENTRY  (X0) = LOAD RESPONSE CODE. 
* 
*         EXIT   DAYFILE AND ERROR LOG MESSAGES ISSUED
*                FOR RESPONSE CODE. 
* 
*         USES   X - 1, 2, 3, 5, 6. 
*                A - 1, 2, 3, 5, 6. 
*                B - 2, 3, 5. 
* 
*         CALLS  COD, FFI, SNM. 
* 
*         MACROS MESSAGE. 
  
  
 IRM1     SX1    X0-RCAML 
          NG     X1,IRM3     IF NOT CONTROLLER HARDWARE ERROR 
          SA1    IN+8        GET LAST FUNCTION/STATUS FROM *1LC*
          MX2    -12
          BX1    -X2*X1 
          SX1    X1+10000B   FORCE LEADING ZERO FILL
          RJ     COD         CONVERT TO DISPLAY CODE
          MX2    -24
          BX1    -X2*X6 
          SX6    1R.
          LX1    -24
          LX6    30 
          BX6    X1+X6
          SA6    MSG31+2     ENTER LAST STATUS IN MESSAGE 
          SA6    BML31+2     ENTER LAST STATUS IN MESSAGE 
          SA6    MSG32+2     ENTER LAST FUNCTION IN MESSAGE 
          SA6    BML32+2     ENTER LAST FUNCTION IN MESSAGE 
 IRM2     SB5    X5          ENTER DATA IN ERROR LOG MESSAGE
          SB3    IRMB 
          SB5    -B5
          SB2    1RY
          RJ     SNM
          SB5    IRMB        ENTER CHANNEL DISPLAY IN ERROR LOG MESSAGE 
          SB2    1RX
          SA1    CHAN 
          RJ     SNM
          MESSAGE  B5,4      ISSUE ERROR LOG MESSAGE
 IRM3     AX5    18 
          MESSAGE  X5,0,R    ISSUE LOAD RESPONSE MESSAGE
          AX5    18          CHECK FOR BML MESSAGE
          SX5    X5 
          ZR     X5,IRMX     IF NO BML MESSAGE
          SA2    X5+1 
          SA1    CHN         SET CHANNEL IN BML MESSAGE 
          LX1    24 
          BX6    X1+X2
          SA6    A2 
          MESSAGE  X5,11B,R  ISSUE LOAD COMPLETE MESSAGE TO BML 
  
  
 IRM      SUBR               ENTRY/EXIT 
          SA5    TLRC+X0     GET MESSAGE ADDRESSES
          NZ     X0,IRM1     IF NOT LOAD COMPLETE 
          SB5    MSG0        ENTER CONTROLWARE TYPE 
          SB2    1RY
          SA1    BUF+10B
          RJ     SNM
          SB5    MSG0        ENTER CHANNEL DISPLAY IN DAYFILE MESSAGE 
          SB2    1RX
          SA1    CHAN 
          RJ     SNM
          RJ     FFI         FIND FIRMWARE IDENT
          SA2    BMLM+1 
          SA1    CHN         SET CHANNEL IN BML MESSAGE 
          SA7    A2+1        STORE FIRMWARE IDENT 
          SA7    IRMC 
          LX1    24 
          BX6    X1+X2
          SA3    CMQ         SET EQUIPMENT NUMBER IN BML MESSAGE
          LX3    12 
          BX6    X1+X2
          BX6    X6+X3
          SA6    A2 
          MESSAGE  BMLM,11B,R  ISSUE LOAD COMPLETE MESSAGE TO BML 
          SB5    MSG0        ENTER CONTROLWARE TYPE 
          SB2    1RV
          BX1    X7 
          RJ     SNM
          SA1    IRMC 
          EQ     IRM2        SET CONTROLWARE TYPE IN ERROR LOG MESSAGE
  
  
 IRMA     VFD    18/0,24/4H,CH=,12/0,6/1R.
 IRMB     BSS    4
 IRMC     CON    0
 RCF      SPACE  4,20 
**        RCF - READ CONTROLWARE FILE.
* 
*         ENTRY  (TYPN) = NAD TYPE FLAG.
*                       .EQ. POSITIVE, IF *TY* OPTION NOT SPECIFIED.
*                       .EQ. NEGATIVE, IF *TY* OPTION SPECIFIED.
*                (RL) = .NE. 0, IF REMOTE NAD LOAD. 
* 
*         EXIT   (FWC) = FWA CONTROLWARE IN LOAD BUFFER.
*                (LWC) = LWA CONTROLWARE IN LOAD BUFFER.
* 
*         ERROR  EXIT TO *ELP* WITH (X0) = ERROR RESPONSE CODE. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 1, 2, 3, 6, 7. 
*                B - 2, 3, 4, 6.
* 
*         MACROS ASSIGN, READ, REWIND, SKIPB, SKIPEI, STATUS. 
  
  
 RCF2     STATUS IN          DETERMINE IF LOCAL FILE PRESENT
          SA1    X2 
          MX2    -11
          AX1    1
          BX1    -X2*X1 
          ZR     X1,ELP      IF NO LOCAL FILE 
          REWIND IN,R 
 RCF3     READ   IN,R        READ CONTROLWARE RECORD
          SA1    IN          CLEAR FET CODE AND STATUS
          MX6    51 
          BX6    X6*X1
          SA6    A1 
          SA1    IN+2        READ *IN* POINTER
          SA2    A1+B1       READ *OUT* POINTER 
          SB2    X2 
          SA3    B2 
          SB6    X1          SAVE *IN*
          MX5    12 
          MX1    6           FORM 7700 MASK 
          BX2    X5*X3
          SX0    RC15        * NO 77 TABLE IN CONTROLWARE RECORD.*
          BX1    X1-X2
          NZ     X1,ELP      IF NOT 7700 TABLE
          LX3    12 
          BX2    X5*X3       LENGTH OF 7700 TABLE 
          SX0    RC16        * NO 52 TABLE IN CONTROLWARE RECORD.*
          LX2    12 
          SB3    X2+B1
          SA2    B2+B3       READ EXPECTED 5200 TABLE 
          SX3    5200B
          SX6    A2+B1       FWA OF CONTROLWARE 
          SA6    FWC
          SB2    X6          *OUT* = FWA OF CONTROLWARE 
          SX6    X2-1        SUBTRACT LENGTH OF 5200 TABLE
          SX7    A2 
          IX7    X2+X7       ADD CONTROLWARE LENGTH 
          SB4    X6 
          BX2    X5*X2
          SA7    LWC         SAVE LWA+1 OF CONTROLWARE
          LX2    12 
          BX2    X2-X3
          NZ     X2,ELP      IF NOT 5200 TABLE
          SB6    B6-B2       *IN* - *OUT* 
          SB6    B6-B4
          SX0    RC17        * LENGTH IN 52 TABLE .NE. FET.*
          NZ     B6,ELP      IF CM WORD COUNT DOES NOT MATCH
          SA6    CWL         SAVE CONTROLWARE LENGTH
  
 RCF      SUBR               ENTRY/EXIT 
          SA1    IN 
          SA2    FN          ASSUMED FILE NAME
          SX0    RC10        * CONTROLWARE NOT FOUND.*
          ZR     X1,ELP      IF *F=0* SPECIFIED 
          MX3    42 
          BX1    X3*X1
          BX3    X1-X2
          NZ     X3,RCF2     IF ALTERNATE FILE SPECIFIED
          ASSIGN IN 
          SKIPEI IN,R        POSITION TO EOI
          SKIPB  IN,2,R      POSITION TO BEGINNING OF DIRECTORY 
          READ   IN,R        READ DIRECTORY 
          SA2    X2+2        READ *IN* POINTER
          SA3    BUF         LENGTH OF 7700 TABLE 
          SB3    X2+         (B3) = LWA+1 OF DATA READ
          SA2    CRN
          LX3    24 
          SB2    X3+BUF      FIRST RECORD ON SYSTEM DIRECTORY 
          MX7    42 
          SA1    TYPN 
          PL     X1,RCF1     IF TYPE NOT SPECIFIED
          SA3    RL 
          ZR     X3,RCF1     IF NOT REMOTE NAD LOAD 
          SA2    TYPE        USE TYPE SPECIFIED BY CALLER 
 RCF1     SA1    B2+         READ DIRECTORY ENTRY 
          GE     B2,B3,ELP   IF END OF DIRECTORY
          SB2    B2+2 
          BX3    X7*X1
          BX3    X3-X2
          NZ     X3,RCF1     IF CONTROLWARE NOT FOUND 
          BX1    -X7*X1 
          SX1    X1-10
          NZ     X1,RCF1     IF CONTROLWARE NOT FOUND 
          SA1    A1+B1       SET RANDOM ADDRESS IN FET
          MX7    -29
          SA2    IN+6 
          BX2    X7*X2
          BX6    -X7*X1 
          BX6    X6+X2
          SA6    A2 
          SA1    IN+2        RESET *IN* = *FIRST* 
          SA2    IN+1 
          MX7    -18
          BX2    -X7*X2 
          BX1    X7*X1
          BX6    X1+X2
          SA6    A1 
          EQ     RCF3        READ CONTROLWARE RECORD
 RCT      SPACE  4,10 
**        RCT - READ CHANNEL TABLES.
* 
*         ENTRY  (RCTA) = CHANNEL TABLES DESCRIPTOR WORD. 
* 
*         EXIT   CBUF = CHANNEL TABLES FROM CMR.
* 
*         USES   X - 7. 
*                A - 7. 
* 
*         MACROS SYSTEM.
  
  
 RCT      SUBR               ENTRY/EXIT 
          MX7    1           READ FROM LOW CORE 
          SA7    CBUF 
          SYSTEM RSB,R,RCTA,0  READ CHANNEL TABLES
          EQ     RCTX        RETURN 
  
  
 RCTA     VFD    12/0,12/CTALL*3,18/0,18/CBUF 
 SCN      SPACE  4,15 
**        SCN - SELECT CHANNEL NUMBER.
* 
*         ENTRY  (ESTW) = EST POINTER WORD *ESTP*.
* 
*         EXIT   IF DRIVER REQUEST FOUND IN CHANNEL TABLE - 
*                   (CHN) = CHANNEL NUMBER. 
*                   (CME) = 0.
*                   (CMQ) = 0.
*                IF DRIVER REQUEST FOUND IN CONTROL MODULE EST ENTRY -
*                   (CME) = EST ORDINAL.
*                   (CRN) = CONTROLWARE RECORD NAME LEFT JUSTIFIED. 
* 
*         ERROR  EXIT TO *ELP* WITH (X0) = ERROR RESPONSE.
* 
*         USES   X - 2, 3, 4, 5, 6, 7.
*                A - 2, 4, 6. 
*                B - 2, 3, 4, 5, 6. 
* 
*         CALLS  RCT. 
  
  
 SCN7     SA6    CHN         SAVE CHANNEL NUMBER
          LX6    59-5 
          PL     X6,SCN7.1   IF NOT CONCURRENT CHANNEL
          SA6    CCHF        SET CONCURRENT CHANNEL FLAG
 SCN7.1   SX6    HI0103 
 SCN8     SA1    BMLM+1      SET BML MESSAGE SYMPTOM CODE 
          LX6    36 
          MX5    12 
          LX5    48 
          BX1    -X5*X1 
          BX6    X1+X6
          SA6    A1 
  
 SCN      SUBR               ENTRY/EXIT 
          SB4    4
          RJ     RCT         READ CHANNEL TABLES
          SA4    CBUF+CTALL*2  GET CHANNEL CONTROLWARE ENTRY
          SX6    B0+         INITIALIZE CHANNEL NUMBER
          SA6    CME         CLEAR CONTROL MODULE EST ORDINAL 
          SA6    CMQ         CLEAR CONTROL MODULE EQUIPMENT NUMBER
 SCN1     SB4    B4-B1
          PL     X4,SCN2     IF NO CONTROLWARE LOAD REQUESTED 
          LX2    X4,B1
          PL     X2,SCN7     IF NOT LOAD IN PROGRESS
 SCN2     LX4    12 
          SX6    X6+B1       ADVANCE CHANNEL NUMBER 
          PL     B4,SCN1     IF MORE ENTRIES IN WORD
          SA4    A4+1 
          SB4    4
          SB2    A4-CBUF-CTALL*3
          NE     B2,SCN1     IF MORE CHANNELS IN TABLE
  
*         SCAN EST FOR LOAD REQUEST FOR CONTROL MODULE. 
  
          SA4    ESTW        GET LAST EST ORDINAL + 1 
          MX6    -12
          LX4    -24
          BX4    -X6*X4 
          SB3    X4 
          MX7    -11
          R=     B4,ESTE     EST ENTRY SIZE 
          SX5    2RCM        CONTROL MODULE MNEMONIC
          SB7    CBUF 
          SX0    100B 
          SB5    B7+X0       END OF BUFFER
          LX0    18 
 SCN3     SB6    B7-B4
          SA7    B6+B4       SET LOW CORE READ FLAG FOR *RSB* 
          SYSTEM RSB,R,SCNA,0  READ NEXT 100B WORDS OF EST
          SA4    SCNA        ADVANCE EST BLOCK IN *RSB* CALL
          IX6    X4+X0
          SA6    A4 
 SCN4     SB6    B6+B4
          EQ     B6,B5,SCN3  IF END OF BUFFER 
          SA4    B6          READ WORD *EQDE* OF EST ENTRY
          ERRNZ  EQDE        CODE ASSUMES *EQDE* = 0
          SA2    A4+B1
          ERRNZ  EQAE-1      CODE ASSUMES *EQAE* = 1
          LX4    -12
          BX6    -X7*X4 
          BX6    X6-X5
          LX2    59-35
          NZ     X6,SCN5     IF NOT CONTROL MODULE
          PL     X2,SCN5     IF RELOAD NOT REQUESTED
          LX2    35-34
          PL     X2,SCN6     IF LOAD NOT IN PROGRESS
 SCN5     SB2    B2+1        INCREMENT EST ORDINAL
          NE     B2,B3,SCN4  IF NOT END OF EST
          SX0    RC3         * NO CHANNEL LOAD REQUEST.*
          EQ     ELP         PROCESS ERROR
  
 SCN6     MX0    -5          SET CONTROLWARE TYPE 
          LX2    11 
          BX2    -X0*X2      GET RECORD NAME TABLE INDEX
          MX0    -3          SAVE EQUIPMENT NUMBER
          LX4    3
          BX6    -X0*X4 
          SA6    CMQ
          SA2    X2+TCWT
          BX6    X2 
          SX7    B2          SET EST ORDINAL
          SA6    CRN         SET RECORD NAME
          SA7    CME
          SX1    X7+1000B    FORCE LEADING ZERO-FILL
          RJ     COD         CONVERT TO DISPLAY CODE
          LX6    42-0 
          MX0    18 
          BX6    X0*X6
          SA6    CMES 
          SX6    HI0106 
          EQ     SCN8        SET BML MESSAGE SYMPTOM CODE 
  
 SCNA     VFD    12/0,12/100B,18/0,18/CBUF
 VCD      SPACE  4,15 
**        VCD - VERIFY CONTROLWARE DUMP.
* 
*         EXIT   CONTROLLER MEMORY DUMP VERIFIED WITH CONTROLWARE 
*                RECORD AND DUMP FILE WRITTEN.
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - ALL. 
*                B - 2, 3, 4, 5.
* 
*         MACROS MESSAGE, WRITER. 
  
  
 VCD      SUBR               ENTRY/EXIT 
          SA1    DUMP 
          ZR     X1,VCDX     IF NO DUMP REQUESTED 
          MX2    -8 
          LX1    -1 
          BX5    -X2*X1      DUMP RESPONSE CODE 
          SA0    B1          SET ABORT FLAG 
          SB5    X5-TDMAL 
          SA1    TDMA+X5     GET MESSAGE ADDRESS
          NG     B5,VCD0     IF VALID RESPONSE CODE 
          SA1    TDMA+DR5    SET INCORRECT *1LC* RESPONSE MESSAGE 
 VCD0     SB3    12 
          MESSAGE  X1,0      ISSUE DUMP STATUS MESSAGE TO DAYFILE 
          NZ     X5,VCDX     IF NOT DUMP COMPLETE 
          SA4    FWC         GET FWA CONTROLWARE IN LOAD BUFFER 
          SA5    DBUF+FDWI   GET FIRST WORD OF DUMP TO COMPARE
          SA4    X4+FLWI     GET FIRST LOAD WORD (SKIP DIAGNOSTICS) 
          LX5    FDBI*12+12 
          SB5    60-FDBI*12-12
          LX4    FLBI*12+12 
          SB4    60-FLBI*12-12
          MX3    -12
          SB2    B0 
 VCD1     BX2    X4-X5       COMPARE DUMP AND LOAD CONTROLWARE
          BX2    -X3*X2 
          ZR     X2,VCD4     IF BYTE COMPARES 
          CX6    X2 
          AX2    1
          SX6    X6-1 
          SX7    17B         INDICATE MULTIPLE BITS DID NOT VERIFY
          NZ     X6,VCD3     IF MULTIPLE BIT FAILURE
          SX7    10B         INDICATE BIT 0 DID NOT VERIFY
          ZR     X2,VCD3     IF BIT 0 FAILURE 
          SX7    B0+
 VCD2     AX2    1           LOCATE FAILING BIT POSITION
          SX7    X7+B1
          NZ     X2,VCD2     IF BIT NOT LOCATED 
 VCD3     LX7    8
          BX5    X5+X7
          LX7    X5,B5
          SA7    A5 
 VCD4     SB4    B4-B3
          LX4    12 
          PL     B4,VCD5     IF MORE BYTES IN LOAD WORD 
          SA4    A4+B1       GET NEXT LOAD WORD 
          SB4    48 
          LX4    12 
 VCD5     SB5    B5-B3
          LX5    12 
          GE     B5,B2,VCD1  IF MORE BYTES IN DUMP WORD 
          SA5    A5+1        GET NEXT DUMP WORD 
          SB5    60 
          SX1    A5-DBUF-LDWI 
          NG     X1,VCD5     IF NOT AT LAST WORD
          SB2    60-LDBI*12 
          ZR     X1,VCD5     IF COMPARING LAST WORD 
          SA3    CHAN        SET DISPLAY CHANNEL IN DUMP HEADER 
          SA2    CHID1
          SX7    DHDR        RESET DUMP FET *FIRST* AND *OUT* TO HEADER 
          LX3    -12
          BX6    X2+X3
          SA7    DUMP+3 
          SA6    CHID2
          SA7    DUMP+1 
          SA6    A2 
          WRITER A7-B1       WRITE RECORD TO DUMP FILE
          SETFS  X2,0        CLEAR FILE STATUS
          SA0    B0          SET NO ABORT FLAG
          EQ     VCDX        RETURN 
          TITLE  PROCESS NAD CONTROLWARE. 
 PNC      SPACE  4,10 
**        PNC - PROCESS NAD CONTROLWARE.
  
  
 PNC      BSS    0           ENTRY
          RJ     RCF         READ CONTROLWARE FILE
          RJ     CCV         CALL *CVL* FOR VALIDATION
          ZR     X1,PNC2     IF ALLOWED ACCESS TO NAD 
          SX2    X1-VRNM
          ZR     X2,PNC4     IF NAD NOT FOUND 
          SX2    X1-VRUS
          ZR     X2,PNC5     IF NAD IN USE OR ON
          SX2    X1-VRSI
          ZR     X2,PNC1     IF REMOTE NAD STATUS INDETERMINATE 
          SB6    3RCVL
          RJ     EMS         ISSUE ERROR MESSAGE
          ABORT 
  
 PNC1     MESSAGE  PNCA,2,R  *$LOADBC REMOTE NAD LOAD - GO OR DROP.*
          RJ     PSE         PAUSE
  
*         SET UP *NLD* EST ORDINAL AND CHANNEL PARAMETERS.
  
 PNC2     SA1    CVLB+CEO    EST ORDINAL (MAY BE ZERO)
          MX0    -12
          SA2    A1+B1       CHANNEL NUMBER 
          BX1    -X0*X1 
          BX2    -X0*X2 
          LX1    36-0 
          LX2    48-0 
          BX6    X1+X2
          SA6    NLDB        SAVE PARAMETERS FOR *NLD* CALL 
          RJ     CNP         CHECK NAD INITIATION PARAMETERS
          NZ     X6,NER      IF ERROR DETECTED BY *NLD* 
          RJ     CNL         LOAD NAD CONTROLWARE 
          SX0    0           INDICATE LOAD COMPLETE FOR *IRM* 
          RJ     IRM         ISSUE RESPONSE MESSAGES
          MESSAGE  MSGB,0    * CONTROLWARE LOAD COMPLETE.*
          SA1    NLDB+5 
          NZ     X1,PNC3     IF LOAD FOR REMOTE NAD 
          SA1    NLDB        CLEAR COMPLETION BIT IN PARAMETER BLOCK
          MX0    48 
          BX6    X0*X1
          SA6    A1 
          SYSTEM NLD,R,NLDB,4*100B  TURN NAD ON AND UP
 PNC3     RJ     RET         RETURN EQUIPMENT VIA *CVL* 
          ENDRUN
  
 PNC4     MESSAGE  PNCB,,R   * DEVICE NOT FOUND.* 
          ABORT 
  
 PNC5     MESSAGE  PNCC,,R   * DEVICE ON OR IN USE.*
          ABORT 
  
 PNCA     DATA   C*$REMOTE NAD LOAD - GO OR DROP.*
 PNCB     DATA   C* VALIDATION DENIED - DEVICE NOT FOUND.*
 PNCC     DATA   C* VALIDATION DENIED - DEVICE ON OR IN USE.* 
 CCV      SPACE  4,15 
**        CCV - SET UP PARAMETERS AND CALL *CVL*. 
* 
*         ENTRY  (RL) = REMOTE NAD LOAD FLAG. 
*                     .EQ. 0, IF LOCAL NAD LOAD.
*                     .NE. 0, IF REMOTE NAD LOAD. 
*                (CHN) = CHANNEL NUMBER (IN BINARY).
* 
*         EXIT   (X1) = RESPONSE CODE FROM *CVL*. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - NONE.
* 
*         CALLS  CVL=.
  
  
 CCV      SUBR               ENTRY/EXIT 
          SA1    CHN         SET CHANNEL
          SA2    CVLB+CCH 
          BX6    X1+X2
          SA6    A2 
          MX0    1
          SA1    RL 
          LX0    52-59
          NZ     X1,CCV1     IF REMOTE NAD LOAD 
  
*         SET UP PARAMETERS FOR DEDICATED LOCAL NAD ACCESS. 
  
          SA2    A2+B1       SET LOCAL NAD DEDICATED ACCESS FLAG
          BX6    X0+X2
          SA6    A2 
          SA2    CVLB+CDV    SET LOCAL NAD DEVICE CODE
          SX3    NAD
          BX7    X2+X3
          SA7    A2 
          SA2    A2+B1       SET *LOAD CONTROLWARE* FLAGS 
          SX3    CTL
          BX6    X2+X3
          SA6    A2 
          EQ     CCV2        CALL *CVL* 
  
*         SET UP PARAMETERS FOR DEDICATED REMOTE NAD ACCESS.
  
 CCV1     SA2    CVLB+CAC    SET ACCESS CODE
          SA1    ACC
          LX0    48-52
          BX1    X0+X1
          BX6    X1+X2       ACCESS CODE
          SA6    A2 
          SA2    A2+B1       SET TCU ENABLES MASK 
          SX3    B1 
          SA4    LTCU 
          BX2    X0+X2
          LX3    4-0
          BX7    X2+X3
          BX7    X4+X7       MERGE TCU ENABLES FIELD
          SA7    A2 
          SA2    A2+B1       SET REMOTE NAD NUMBER
          SX4    RND         SET REMOTE NAD DEVICE CODE 
          LX3    52-4 
          SA1    RNAD 
          BX2    X0+X3
          SA5    CVLB+CDV 
          BX7    X4+X5
          SA7    A5 
          BX6    X1+X2
          LX4    12          POSITION REMOTE NAD DEVICE CODE
          BX6    X4+X6
          SA6    A2 
 CCV2     SX1    CVLB        FWA OF PARAMETER BLOCK 
          SX2    1           FUNCTION REQUEST 
          RJ     CVL=        CALL *CVL* 
          SA1    CVLB+CRC    CHECK RESPONSE CODE FROM *CVL* 
          MX0    -6 
          LX1    -6 
          BX1    -X0*X1 
          EQ     CCVX        RETURN 
 CNL      SPACE  4,15 
**        CNL - CALL *NLD* TO LOAD NAD CONTROLWARE. 
* 
*         ENTRY  (NLDB - NLDB+5) = *NLD* PARAMETER BLOCK. 
*                (RL) = REMOTE NAD LOAD FLAG. 
*                     .EQ. 0, IF LOCAL NAD LOAD.
*                     .EQ. 1, IF REMOTE NAD LOAD. 
* 
*         EXIT   NAD CONTROLWARE LOADED.
* 
*         ERROR  TO *NER*, IF *NLD* DETECTED ERROR. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - NONE.
* 
*         MACROS MOVE, SYSTEM.
  
  
 CNL      SUBR               ENTRY/EXIT 
          SA1    NLDB        CLEAR COMPLETION BIT 
          MX0    48 
          BX6    X0*X1
          SA6    A1 
  
*         ENSURE INITIALIZATION PARAMETERS START ON NAD WORD BOUNDARY.
  
          SA1    CWL         GET CONTROLWARE LENGTH 
          BX7    X7-X7
          SA4    LWC         LWA+1 OF CONTROLWARE 
          LX1    59-0 
          PL     X1,CNL1     IF EVEN NUMBER OF CM WORDS 
          SA7    X4          APPEND ZERO WORD AFTER CONTROLWARE 
          SX4    X4+B1
 CNL1     SX6    X4+LNADIP   ADD NAD INITIALIZATION PARAMETERS
          SA6    NLDB+2      SET *IN* 
          SA1    FWC         SET *OUT* = *FIRST* = FWA OF CONTROLWARE 
          BX7    X1 
          SA7    A6+B1       *OUT*
          SA7    A6-B1       *FIRST*
          SX6    X6+B1       SET *LIMIT*
          SA6    A6+2 
          SA3    RL 
          ZR     X3,CNL2     IF LOCAL NAD LOAD
          SA1    ACC         ACCESS CODE
          SA2    RNAD        REMOTE NAD NUMBER
          LX1    16-0 
          SA3    LTCU        LOGICAL TCU ENABLES
          LX2    8-0
          BX6    X1+X3
          BX6    X2+X6
          SA6    NLDB+5 
 CNL2     MOVE   LNADIP,NADIP,X4
          SYSTEM NLD,R,NLDB,1*100B
          SA1    NLDB        CHECK *NLD* RESPONSE CODE
          MX0    -6 
          LX1    -6 
          BX1    -X0*X1 
          ZR     X1,CNLX     IF NO ERROR
          EQ     NER         ISSUE ERROR MESSAGE AND ABORT
 CNP      SPACE  4,15 
**        CNP - CHECK NAD INITIATION PARAMETERS.
* 
*         EXIT   (X6) = 0, IF NAD READY FOR FINAL LOAD. 
*                (X6) .GT. 0, IF *NLD* ERROR. 
* 
*         USES   X - 0, 1, 2, 5, 6. 
*                A - 1, 6.
*                B - NONE.
* 
*         CALLS  CNL, FNP, FNS, RET, SNP. 
* 
*         MACROS ABORT, MESSAGE, NIPADD, NSTADD, SYSTEM.
  
  
 CNP      SUBR               ENTRY/EXIT 
          NIPADD WNMS        GET SPECIFIED NAD MEMORY SIZE
          RJ     FNP
          NZ     X6,CNP6     IF MEMORY SIZE SPECIFIED 
          SX6    DNMS        SET DEFAULT NAD MEMORY SIZE
          NIPADD WNMS 
          RJ     SNP
          NIPADD WMNP        GET MAXIMUM NUMBER OF PATHS
          RJ     FNP
          SX5    X6+B1       SAVE MAXIMUM NUMBER OF PATHS + 1 
          NIPADD WIBC        GET INTERNAL BUFFER COUNT
          RJ     FNP
          IX6    X6-X5
          PL     X6,CNP1     IF INTERNAL BUFFER COUNT .GT. PATHS
          BX6    X5 
          NIPADD WIBC        RESET INTERNAL BUFFER COUNT
          RJ     SNP
 CNP1     SX5    DCBC 
          NIPADD WCBC        GET CONTROLWARE MESSAGE BUFFER COUNT 
          RJ     FNP
          IX6    X6-X5
          PL     X6,CNP2     IF COUNT .GE. DEFAULT
          BX6    X5 
          NIPADD WCBC        SET DEFAULT COUNT
          RJ     SNP
 CNP2     SX5    DTBC 
          NIPADD WTBC        GET TYPE 1 BUFFER COUNT
          RJ     FNP
          IX6    X6-X5
          PL     X6,CNP3     IF COUNT .GE. DEFAULT
          BX6    X5 
          NIPADD WTBC        SET DEFAULT TYPE 1 BUFFER COUNT
          RJ     SNP
 CNP3     RJ     CNL         CALL *NLD* TO LOAD CONTROLWARE 
          SA1    NLDB        SET UP NAD STATUS PARAMETER BLOCK
          MX6    48 
          BX6    X6*X1
          SA6    NADSTAT
          SA1    NLDB+5      REMOTE NAD ADDRESS 
          BX6    X1 
          SA6    NADSTAT+5
          SYSTEM NLD,R,NADSTAT,3*100B  CALL *NLD* 
          SA1    NADSTAT     CHECK *NLD* RESPONSE CODE
          MX0    -6 
          LX1    -6 
          BX6    -X0*X1 
          BX1    X6          SAVE STATUS IF *NLD* ERROR 
          NZ     X6,CNPX     IF *NLD* ERROR 
          NSTADD WAMS        GET ACTUAL MEMORY SIZE FROM STATUS 
          RJ     FNS
          SX5    X6-DNMS
          ZR     X5,CNP4     IF SAME AS DEFAULT SIZE
          NG     X5,CNP7     IF ACTUAL .LT. DEFAULT 
          NIPADD WNMS        RESET NAD MEMORY SIZE
          RJ     SNP
 CNP4     NSTADD WUNM        GET UNUSED MEMORY FROM STATUS
          RJ     FNS
          IX5    X5+X6       UNUSED MEMORY + (ACTUAL-DEFAULT) 
          SX2    LTBC        TYPE 1 BUFFER SIZE 
          IX6    X5-X2
          NG     X6,CNP5     IF NO ROOM FOR MORE TYPE 1 BUFFERS 
          BX6    X5 
          IX1    X6/X2       ADDITIONAL MEMORY USED 
          SX2    LTBC        TYPE 1 BUFFER SIZE 
          IX2    X2*X1       ADDITIONAL MEMORY USED 
          IX5    X5-X2       REMAINING UNUSED MEMORY
          NIPADD WTBC        GET CURRENT TYPE 1 BUFFER COUNT
          RJ     FNP
          IX6    X6+X1       INCREMENT COUNT
          NIPADD WTBC        RESET TYPE 1 BUFFER COUNT
          RJ     SNP
 CNP5     SX2    LCBC        CONTROLWARE MESSAGE BUFFER SIZE
          IX6    X5-X2
          NG     X6,CNP6     IF NO ROOM FOR MORE BUFFERS
          IX1    X5/X2       ADDITIONAL MESSAGE BUFFERS 
          NIPADD WCBC        GET CURRENT BUFFER COUNT 
          RJ     FNP
          IX6    X6+X1       INCREMENT COUNT
          NIPADD WCBC        RESET MESSAGE BUFFER COUNT 
          RJ     SNP
 CNP6     BX6    X6-X6
          EQ     CNPX        RETURN 
  
 CNP7     MESSAGE  CNPA,0    * LOADBC ABORT - ...*
          RJ     RET         RETURN NAD EQUIPMENT 
          ABORT 
  
 CNPA     DATA C* LOADBC ABORT - BAD INITIATION PARAMETERS.*
 EMS      SPACE  4,15 
**        EMS - ISSUE ERROR MESSAGE.
* 
*         ENTRY  (B6) = PP NAME IN DISPLAY CODE.
*                (X1) = ERROR CODE. 
* 
*         EXIT   DAYFILE MESSAGE ISSUED.
* 
*         USES   X - 1. 
*                A - NONE.
*                B - 2, 5.
* 
*         CALLS  COD, SNM.
* 
*         MACROS MESSAGE. 
  
  
 EMS      SUBR               ENTRY/EXIT 
          RJ     COD         CONVERT TO OCTAL DISPLAY CODE
          SB2    1RY         INSERT ERROR CODE INTO MESSAGE 
          SB5    EMSA 
          BX1    X4 
          RJ     SNM
          SX1    B6          INSERT PP NAME INTO MESSAGE
          SB2    1RX
          LX1    59-17
          SB5    EMSA 
          RJ     SNM
          MESSAGE  EMSA,0    *LOADBC ABORT - ...* 
          EQ     EMSX        RETURN 
  
 EMSA     DATA   C* LOADBC ABORT - XXX ERROR CODE = YYY.* 
 FNP      SPACE  4,15 
**        FNP - FETCH NAD INITIATION PARAMETER. 
* 
*         (NAD INITIATION PARAMETERS ARE 16-BIT VALUES DEFINED IN THE 
*         *NADIP* TABLE, 2.5 PARAMETERS PER CM WORD.) 
* 
*         ENTRY  (X2) = *NADIP* TABLE WORD. 
*                (B2) = SHIFT COUNT TO POSITION FIRST BYTE. 
* 
*         EXIT   (X6) = 44/0,16/VALUE.
* 
*         USES   X - 0, 2, 6. 
*                A - 2. 
*                B - 2. 
  
  
 FNP      SUBR               ENTRY/EXIT 
          MX0    -8 
          LX2    B2,X2       POSITION UPPER 8 BITS
          SB2    B2-60
          BX6    -X0*X2      EXTRACT UPPER 8 BITS 
          NG     B2,FNP1     IF PARAMETER NOT DIVIDED 
          SA2    A2+B1       GET NEXT WORD
 FNP1     LX2    12          POSITION LOWER 8 BITS
          LX6    8
          BX0    -X0*X2      EXTRACT LOWER BITS 
          IX6    X0+X6       COMBINE UPPER AND LOWER BITS 
          EQ     FNPX        RETURN 
 FNS      SPACE  4,15 
**        FNS - FETCH NAD STATUS WORD.
* 
*         ENTRY  (X2) = WORD CONTAINING FIRST DIGIT OF VALUE. 
*                (B2) = SHIFT COUNT FOR POSITIONING DIGIT.
* 
*         EXIT   (X6) = 44/0,16/NAD STATUS WORD.
* 
*         USES   X - 0, 2, 3, 6.
*                A - 2. 
*                B - 2, 3, 4. 
  
  
 FNS      SUBR               ENTRY/EXIT 
          SB4    4
          LX2    B2,X2       POSITION FIRST DIGIT 
          SB3    B4-B1       DIGIT COUNT
          MX0    4
          SX6    B0          CLEAR RESULT 
 FNS1     BX3    X0*X2       NEXT      DIGIT
          SB3    B3-B1
          BX6    X6+X3
          SB2    B2+B4       INCREMENT POSITION 
          LX6    4
          NG     B3,FNSX     IF ALL DIGITS EXTRACTED
          LX2    4           POSITION NEXT DIGIT
          SX3    B2-60
          NG     X3,FNS1     IF STILL IN SAME WORD
          SA2    A2+B1       GET NEXT WORD
          SB2    B0          RESET POSITION 
          EQ     FNS1        CONTINUE 
 NER      SPACE  4,10 
**        NER - PROCESS *NLD* ERROR.
* 
*         ENTRY  (X1) = *NLD* ERROR RESPONSE CODE.
* 
*         EXIT   NAD IS RELEASED, AND JOB IS ABORTED. 
* 
*         USES   X - NONE.
*                A - NONE.
*                B - 6. 
* 
*         CALLS  EMS, RET.
* 
*         MACROS ABORT. 
  
  
 NER      BSS    0
          SB6    3RNLD
          RJ     EMS         ISSUE ERROR MESSAGE
          RJ     RET         RETURN NAD EQUIPMENT 
          ABORT 
 PSE      SPACE  4,10 
**        PSE - PAUSE FOR OPERATOR GO/DROP. 
* 
*         USES   X - 1, 6.
*                A - 1, 6.
*                B - NONE.
* 
*         MACROS RECALL.
  
  
 PSE      SUBR               ENTRY/EXIT 
          SA1    B0          SET PAUSE FLAG IN RA+0 
          SX6    10000B 
          BX6    X1+X6
          SA6    A1 
 PSE1     RECALL
          SA1    B0          CHECK PAUSE FLAG IN RA+0 
          SX6    10000B 
          BX1    X1*X6
          NZ     X1,PSE1     IF PAUSE FLAG NOT CLEARED
          EQ     PSEX        EXIT 
 RET      SPACE  4,10 
**        RET - RETURN NAD EQUIPMENT VIA *CVL*. 
* 
*         EXIT   ANY EQUIPMENT ASSIGNED TO JOB HAS BEEN RELEASED. 
* 
*         USES   X - 0, 1, 2, 3, 6, 7.
*                A - 1, 3, 6, 7.
*                B - NONE.
* 
*         CALLS  CVL=.
  
  
 RET      SUBR               ENTRY/EXIT 
          SA1    CVLB+CEO    EST ORDINAL
          MX0    -12
          BX6    -X0*X1 
          ZR     X6,RETX     IF NO EQUIPMENT ASSIGNED 
          SA3    CVLB+CRC 
          MX2    1           SET DATA-IN-WORD FLAG
          BX7    X0*X3       CLEAR RESPONSE CODE/COMPLETION BIT 
          LX2    48-59
          SA7    A3 
          BX6    X2+X6
          SA6    A1 
          SX7    RTNU        SET RETURN EQUIPMENT FLAG
          SA7    CVLB+CFC 
          SX1    CVLB        FWA OF PARAMETER BLOCK 
          SX2    1           FUNCTION REQUEST 
          RJ     CVL=        CALL *CVL* 
          EQ     RETX        RETURN 
 SNP      SPACE  4,15 
**        SNP - SET NAD INITIATION PARAMETER. 
* 
*         ENTRY  (X2) = WORD CONTAINING FIRST BYTE OF VALUE.
*                (X6) = 44/0, 16/NEW VALUE. 
*                (B2) = SHIFT COUNT FOR POSITIONING FIRST BYTE. 
* 
*         EXIT   NAD PARAMETER RESET. 
* 
*         USES   X - 0, 2, 6. 
*                A - 2, 6.
*                B - 2. 
  
  
 SNP      SUBR               ENTRY/EXIT 
          MX0    -12
          LX6    -8          POSITION UPPER 8 BITS OF NEW VALUE 
          LX2    B2,X2       POSITION WORD
          BX2    X0*X2       CLEAR OLD VALUE
          SB2    B2-60
          BX0    -X0*X6 
          IX2    X0+X2       SET NEW VALUE (UPPER 8)
          BX0    -X0*X6      SAVE NEW VALUE (LOWER 8) 
          LX0    -4 
          LT     B2,B0,SNP1  IF PARAMETER NOT DIVIDED 
          BX6    X2 
          SA6    A2          STORE FIRST WORD (UPPER 8) 
          SA2    A2+B1       GET NEXT WORD (LOWER 8)
 SNP1     MX6    12 
          BX2    -X6*X2      CLEAR OLD VALUE (LOWER BYTE) 
          SB2    -B2         COMPLEMENT SHIFT COUNT 
          BX0    X0+X2       INSERT NEW VALUE (LOWER 8) 
          LX6    B2,X0
          SA6    A2          STORE WORD 
          EQ     SNPX        RETURN 
          TITLE  COMMON DECKS.
*         COMMON DECKS. 
  
  
*CALL     COMCARG 
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCVL 
*CALL     COMCDXB 
*CALL     COMCHXB 
*CALL     COMCLFM 
*CALL     COMCMVE 
*CALL     COMCSNM 
*CALL     COMCSYS 
*CALL     COMCUSB 
          SPACE  4,10 
          USE    LITS 
          USE    *
          TITLE  BUFFER ALLOCATION. 
*         BUFFER ALLOCATION.
  
  
 CBUF     BSS    100B        CHANNEL TABLES / EST BUFFER
          ERRNG  *-CBUF-CTALL*3  CHANNEL TABLES OVERFLOW BUFFER 
  
  
 DHDR     BSS    0           DUMP FILE HEADER 
          VFD    12/7700B,12/16B,36/0 
 CHID1    VFD    12/2HCH,12/0,36/0  CONTROLLER CHANNEL NUMBER 
 SYDT1    BSSZ   1           SYSTEM DATE ( YY/MM/DD.) 
 SYTM1    BSSZ   1           SYSTEM TIME ( HH.MM.SS.) 
          BSSZ   11 
 CHID2    VFD    12/2HCH,12/0,36/0  CONTROLLER CHANNEL NUMBER 
          VFD    12/2HID,48/5 
 SYVR     BSSZ   2           SYSTEM VERSION 
 SYDT2    BSSZ   1           SYSTEM DATE
 SYTM2    BSSZ   1           SYSTEM TIME
          BSSZ   1
          VFD    12/2HBC,48/0 
  
 DBUF     EQU    *           CONTROLLER DUMP BUFFER 
  
 BUF      EQU    DBUF+DBUFL  CONTROLLER LOAD BUFFER 
  
 RFL=     EQU    BUF+BUFL+4  FIELD LENGTH 
          TITLE  PRESET.
 PRS      SPACE  4,20 
**        PRS - PRESET PROGRAM. 
* 
*         EXIT   (CHN) = CHANNEL, IF SPECIFIED ON COMMAND.
*                (CHAN) = DISPLAY CHANNEL, IF SPECIFIED ON COMMAND. 
*                (CME) = CONTROL MODULE EST ORDINAL, IF SPECIFIED.
*                (CMES) = DISPLAY EST ORDINAL, IF SPECIFIED.
*                (CMQ) = CONTROL MODULE EQUIPMENT NUMBER. 
*                (CRN) = CONTROLWARE RECORD NAME. 
*                (DRCF) = 0 IF DRIVER CALL. 
*                (ESTW) = EST POINTER WORD *ESTP*.
*                DUMP FILE HEADER PRESET IF CONTROLLER DUMP REQUESTED.
*                TO *PNC* IF TO LOAD NAD CONTROLWARE. 
*                (RL) .NE. 0 IF REMOTE NAD LOAD.
* 
*         ERROR  EXIT TO *ELP* WITH (X0) = ERROR RESPONSE CODE. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 4, 5, 7. 
* 
*         CALLS  ARG, CCS, DXB, HXB.
* 
*         MACROS CLOCK, DATE, MESSAGE, SYSTEM.
  
  
 PRS6     RJ     CNS         CHECK IF NAD ONLY PARAMETER SPECIFIED
          SA1    DUMP 
          ZR     X1,PRSX     IF NO CONTROLLER DUMP REQUESTED
          DATE   PRSA        GET SYSTEM DATE
          SA1    PRSA 
          BX6    X1 
          SA6    SYDT1       SET SYSTEM DATE IN DUMP FILE HEADER
          SA6    SYDT2
          CLOCK  PRSA        GET SYSTEM TIME
          SA1    PRSA 
          BX6    X1 
          MX7    1
          SA6    SYTM1       SET SYSTEM TIME IN DUMP FILE HEADER
          SA6    SYTM2
          SA7    A1          READ FROM LOW CORE 
          SYSTEM RSB,R,PRSC,0  GET SYSTEM VERSION 
          SA1    PRSA        SET SYSTEM VERSION IN DUMP FILE HEADER 
          SA2    A1+B1
          BX6    X1 
          LX7    X2 
          SA6    SYVR 
          SA7    A6+B1
  
 PRS      SUBR               ENTRY/EXIT 
          SA1    XJPR 
          LX1    59-23
          MX2    -6 
          BX1    -X2*X1 
          SX0    RC1         * USER NOT SYSTEM ORIGIN.* 
          ERRNZ  SYOT        CODE DEPENDS ON VALUE
          NZ     X1,ELP      IF USER IS NOT SYSTEM ORIGIN 
          SA1    ACTR        GET ARGUMENT COUNT 
          SA4    ARGR        ADDRESS OF FIRST PARAMETER 
          SB5    TLCA        *LOADBC* ARGUMENT TABLE
          SB4    X1 
          RJ     ARG         PROCESS ARGUMENTS
          NZ     X1,PRS2     IF ARGUMENT ERROR
          SYSTEM RSB,R,PRSB,0  GET FWA CHANNEL TABLES 
          SA1    PRSA 
          MX0    -18
          AX1    12 
          BX6    -X0*X1 
          SA1    RCTA 
          LX6    18 
          BX6    X1+X6
          SA6    A1 
          SYSTEM  RSB,R,PRSD,0  GET EST POINTER WORD *ESTP* 
          SA1    ESTW 
          AX1    36 
          BX6    -X0*X1 
          SA1    SCNA        PLACE EST FWA IN *RSB* CALL
          LX6    18 
          BX6    X6+X1
          SA6    A1 
          SA1    CMEF 
          PL     X1,PRS0     IF CONTROL MODULE NOT SPECIFIED
          SA1    CHFL 
          NG     X1,PRS2     IF CHANNEL PARAMETER SPECIFIED 
          SA1    A1+B1
          SX7    B1          INDICATE NOT DRIVER CALL 
          SA7    DRCF 
          NG     X1,PRS2     IF DUMP FILE NAME SPECIFIED
          SA5    CMES        CONVERT EST ORDINAL
          RJ     CNS         CHECK IF NAD ONLY PARAMETER SPECIFIED
          SB7    B0+         SET OCTAL CONVERSION 
          RJ     DXB
          SX0    RC20        * INCORRECT EST ORDINAL.*
          NZ     X4,ELP      IF CONVERSION ERROR
          SA6    CME
          SA5    ESTW        GET LAST EST ORDINAL + 1 
          MX7    -12
          LX5    36 
          BX7    -X7*X5 
          IX7    X6-X7
          PL     X7,ELP      IF EST ORDINAL TOO BIG 
          SX7    X6-NOPE
          NG     X7,ELP      IF EST ORDINAL TOO SMALL 
          MX7    -24         ISOLATE EST FWA
          AX5    12 
          BX2    -X7*X5 
          ERRNZ  ESTE-2      CODE ASSUMES *ESTE* = 2
          LX6    1
          IX6    X2+X6
          LX6    18 
          SA1    PRSE        SET EST ENTRY ADDRESS IN *RSB* WORD
          BX6    X6+X1
          SA6    A1 
          SA7    PRSA        SET LOW CORE READ FLAG FOR *RSB* 
          SX5    2RCM 
          SYSTEM RSB,R,PRSE,0  GET EST ENTRY
          ERRNZ  EQDE        CODE ASSUMES *EQDE* = 0
          SA1    A7 
          SA2    A1+B1
          ERRNZ  EQAE-1      CODE ASSUMES *EQAE* = 1
          MX0    -3          SAVE EQUIPMENT NUMBER
          AX1    9
          BX6    -X0*X1 
          SA6    CMQ
          MX6    -11         GET MNEMONIC 
          AX1    3
          BX6    -X6*X1 
          BX6    X6-X5
          SX0    RC21        * NOT CONTROL MODULE EST ORDINAL.* 
          MX7    -5 
          NZ     X6,ELP      IF NOT *CM* DEVICE 
          AX2    24          GET CONTROLWARE TYPE 
          BX1    -X7*X2 
          SA1    X1+TCWT     GET CONTROLWARE RECORD NAME
          BX6    X1 
          SA6    CRN
          EQ     PRSX        RETURN 
  
 PRS0     R=     X6,HI0105-HI0102 
          SA5    CHAN        CONVERT CHANNEL NUMBER 
          MX7    -6 
          BX2    X5 
          LX2    6
          BX0    -X7*X2 
          SB6    -34B         SET MAXIMUM CHANNEL NUMBER
          SX0    X0-1RC 
          NZ     X0,PRS0.1   IF NOT A CONCURRENT CHANNEL
          BX5    X7*X2
          SX7    40B         SET CONCURRENT CHANNEL FLAG
          SB6    -12B         SET MAXIMUM CHANNEL NUMBER
          SA7    CCHF 
 PRS0.1   SA1    CHFL 
          PL     X1,PRS6     IF CHANNEL PARAMETER NOT SPECIFIED 
          SA1    BMLM+1      SET OPERATOR INITIATED LOAD
          LX6    36 
          IX6    X1-X6
          SA6    A1 
          SX7    B1          INDICATE NOT DRIVER CALL 
          SA7    DRCF 
          RJ     DXB
          SX0    RC6         * INCORRECT CHANNEL NUMBER.* 
          NZ     X4,ELP      IF CONVERSION ERROR
          SA1    CCHF 
          SX5    X6+B6
          IX6    X6+X1
          PL     X5,ELP      IF NOT HARDWARE CHANNEL
          SA6    CHN
          LX6    12          SET CHANNEL IN *CPM* CALL BLOCK
          SA6    LBCD 
          RJ     CCS         CHECK CHANNEL STATUS 
          SX5    X5-LNFL
          NZ     X5,PRS6     IF NOT NAD CHANNEL 
          SA3    TYFL 
          SA1    TYPE        NAD TYPE 
          MX0    18 
          BX1    X0*X1
          BX7    X3 
          SA7    TYPN        SAVE NAD TYPE FLAG 
          SA2    TRCT        TABLE OF REMOTE CONTROLWARE TYPES
          PL     X3,PRS3     IF NO NAD TYPE SPECIFIED 
 PRS1     BX2    X1-X2
          ZR     X2,PRS3     IF MATCH ON NAD TYPE 
          SA2    A2+B1
          NZ     X2,PRS1     IF NOT END OF TABLE
 PRS2     SX0    RC4         * ERROR IN PARAMETERS.*
          EQ     ELP         PROCESS ERROR
  
 PRS3     SA5    LTCU        VALIDATE LTCU ENABLES
          ZR     X5,PRS5     IF NOT REMOTE NAD LOAD 
          SB7    B0 
          RJ     DXB
          NZ     X4,PRS2     IF PARAMETER ERROR 
          SX7    -1111B      VALIDATE LTCU ENABLES
          BX5    X7*X6
          NZ     X5,PRS2     IF PARAMETER ERROR 
          MX0    4
          SA7    RL          SET REMOTE NAD LOAD FLAG 
          LX0    1
          BX7    X0*X6
 PRS4     LX0    1           CHANGE OCTAL DIGITS TO BINARY DIGITS 
          AX6    2
          BX7    X7+X6
          BX6    -X0*X6 
          NG     X0,PRS4     IF MORE DIGITS TO PROCESS
          BX7    X0*X7
          SA7    A5 
          SA5    RNAD 
          ZR     X5,PRS2     IF NO REMOTE NAD ADDRESS SPECIFIED 
          RJ     HXB
          NZ     X4,PRS2     IF PARAMETER ERROR 
          SX5    X6-0#100 
          PL     X5,PRS2     IF PARAMETER ERROR 
          SA6    A5+
          SA5    ACC
          ZR     X5,PRS5     IF NO ACCESS CODE SPECIFIED
          RJ     HXB
          NZ     X4,PRS2     IF PARAMETER ERROR 
          SX5    X6-0#10000 
          PL     X5,PRS2     IF PARAMETER ERROR 
          SA6    A5+
 PRS5     SA1    DUMP 
          ZR     X1,PNC      IF NO CONTROLLER DUMP REQUESTED
          MESSAGE  DRM3,0    * NOT CORRECT CONTROLLER TYPE FOR DUMP.* 
          EQ     PNC         PROCESS NAD CONTROLWARE LOAD 
  
  
 PRSA     CON    -1          TEMPORARY BUFFER 
 PRSB     VFD    12/0,12/1,18/CHTP,18/PRSA  CHANNEL TABLE ADDRESS 
 PRSC     VFD    12/0,12/2,18/SVNL,18/PRSA  SYSTEM VERSION
 PRSD     VFD    12/0,12/1,18/ESTP,18/ESTW  EST ADDRESS 
 PRSE     VFD    12/0,12/1,18/0,18/PRSA  CONTROL MODULE EST ENTRY 
 CNS      SPACE  4,10 
**        CNS - CHECK IF NAD ONLY PARAMETER SPECIFIED.
* 
*         EXIT   TO *PRS2* IF NAD ONLY PARAMETER SPECIFIED. 
* 
*         USES   X - 1. 
*                A - 1. 
  
  
 CNS      SUBR               ENTRY/EXIT 
          SA1    NOLP-1 
 CNS1     SA1    A1+B1
          NG     X1,PRS2     IF NAD ONLY PARAMETER SPECIFIED
          NZ     X1,CNS1     IF NOT END OF ARGUMENT TABLE 
          EQ     CNSX        RETURN 
 TLCA     SPACE  4,10 
**        TLCA - TABLE OF *LOADBC* ARGUMENTS. 
  
  
 TLCA     BSS    0
 CHFL     EQU    *           CHANNEL FLAG 
 C        ARG    CHAN,CHAN,400B 
 D        ARG    DUMP,DUMP
 F        ARG    IN,IN
 CMEF     EQU    *           CONTROL MODULE FLAG
 EQ       ARG    CMES,CMES
 NOLP     EQU    *           FOLLOWING ARE NAD ONLY *LOADBC* PARAMETERS 
 AC       ARG    ACC,ACC
 LT       ARG    LTCU,LTCU
 ND       ARG    RNAD,RNAD,400B 
 TYFL     EQU    *           NAD TYPE FLAG
 TY       ARG    TYPE,TYPE
          ARG                END OF ARGUMENT TABLE
 TRCT     SPACE  4,10 
**        TRCT - TABLE OF REMOTE CONTROLWARE TYPES. 
  
  
 TRCT     BSS    0
          DATA   0L170       CYBER 170
          DATA   0LIBM       IBM
          DATA   0LMIN       COMMON MINICOMPUTER
          DATA   0L200       CYBER 20X
          CON    0           END OF TABLE 
          SPACE  4,10 
          END 
