*COMDECK COMNCER
CER       TITLE  CER - LOG CERFILE MESSAGE. 
**        CER - LOG CERFILE MESSAGE.
* 
*         SET UP CERFILE MESSAGE. 
*         IF LOAD-NEEDED NOT ALREADY SET IN EST 
*         THEN
*           CALL FLE/FRE AND IML TO DAYFILE MESSAGE.
*         RESTORE D.T5 - D.T7.
*         RETURN. 
* 
*         ENTRY  ERROR INFORMATION SAVED BY ERR.
*                DCSAVE - DCSAVE+4 = SAVED DIRECT CELLS (NDR).
* 
*         EXIT   (ERRA) =0, ERROR LOGGED. 
* 
*         USES   D.T0 - D.T5, PPMES4. 
* 
*         CALLS  R.MTR. 
  
  
 CER      ENM    X                 ENTRY/EXIT 
          LDD    D.PPMES1 
          ADN    3
  
 NDR      IF     DEF,NDR
          CWM    DCSAVE,ONE        SAVE DIRECT CELLS (D.T5-D.TW1) 
          SBN    1
 NDR      ENDIF 
  
          CRM    CERAE,ONE         SAVE DIRECT CELLS
          LDD    CHNRES 
          STM    CERAA             SAVE CHANNEL RESERVED FLAG 
          LDM    INPA 
          STM    CERAC             SAVE BUFFER ADDRESS IN *INP* 
          LDM    OUTA 
          STM    CERAD             SAVE BUFFER ADDRESS IN *OUT* 
          RJM    RES               RESERVE CHANNEL
          RJM    CPS               PRESET COMMON MESSAGE FIELDS 
          MJN    CER6              IF NAD ALEADY OUT-OF-SERVICE 
          RJM    CPT               PRESET LOCAL/PATH MESSAGE FIELDS 
          LDD    ERROR
          SBK    NADERRP
          PJN    CER1              IF NOT LOCAL NAD ERROR 
          RJM    FLE               FORMAT LOCAL NAD ERRORS
          UJN    CER5 
  
 CER1     RJM    FRE               FORMAT REMOTE NAD ERRORS 
  
 CER5     STM    CERAB             LENGTH OF MESSAGE
          LDN    0
          RJM    REL               COMPLETELY RELEASE CHANNEL 
          LDC    **                LENGTH OF MAINTENANCE LOG MESSAGE
 CERAB    EQU    *-1
          RJM    IML               ISSUE MAINTENANCE LOG
 CER6     LDN    0
          RJM    REL               RELEASE CHANNEL COMPLETELY 
          LDC    ** 
 CERAC    EQU    *-1
          STM    INPA              RESTORE BUFFER ADDRESS TO *INP*
          LDC    ** 
 CERAD    EQU    *-1
          STM    OUTA              RESTORE BUFFER ADDRESS TO *OUT*
          LDC    0                 CHANNEL RESERVED FLAG
 CERAA    EQU    *-1
          ZJN    CER7              IF CHANNEL WAS NOT RESERVED
          RJM    RES               RESERVE CHANNEL
 CER7     LDD    D.PPMES1 
          CWM    CERAE,ONE
          SBN    1
          CRD    D.T5              RESTORE D.T5 - D.T7
          LDN    0
          STD    ERROR             CLEAR ERROR ENCOUNTERED
          STM    ERRF              CLEAR RETRY COUNT
          LJM    CERX 
  
 CERAE    BSS    5                 DIRECT CELL SAVE AREA
 CPT      SPACE  4,10 
**        CPT - COMMON PRESET FOR LOCAL AND PATH ERRORS.
* 
*         ENTRY - CHANNEL RESERVED. 
* 
*         EXIT  - CHANNEL RESERVED. 
*                 MAINTENANCE LOG FIELDS COMMON TO LOCAL NAD
*                 AND PATH ERROR MESSAGES HAVE BEEN SET UP. 
  
  
 CPT      ENM    X
          LDK    P.ZERO 
  
 NOS      IF     DEF,NOS
          CRM    CERJ,ONE 
          SBN    1
          CRM    CERN,ONE 
          SBN    1
          CRM    CERS,ONE 
          ERRNZ  CERLL-CERMSGH-3*5   CODE DEPENDS ON VALUE
 NOS      ELSE
          CRM    CERE,ONE 
          SBN    1
          CRM    CERJ+1,ONE 
          SBN    1
          CRM    CERN,ONE 
          SBN    1
          CRM    CERS,ONE 
          ERRNZ  CERLL-CERMSGH-4*5   CODE DEPENDS ON VALUE
 NOS      ENDIF 
  
          LDM    ERRE 
          STM    CERE              SET INITIAL FUNCTION 
          LDM    ERRC 
          STM    CERF              SET INITIAL CONTROLWARE STATUS 
          LDM    ERRD 
          STM    CERG              SET INITIAL HARDWARE STATUS
          LDM    ERRF 
          SHN    6
          STM    CERH              SET RETRY COUNT
          LDM    ERRH 
          STD    D.T0              NEXT FLAG FUNCTION POINTER 
          LDN    3                 NUMBER OF FLAG FUNCTIONS SAVED 
          STD    D.T1 
 CPT1     LDM    ERRG,D.T0
          STM    CERJ,D.T1         MOVE FLAG FUNCTION 
          AOD    D.T0 
          LPN    3
          STD    D.T0              POINT TO NEXT FUNCTION 
          SOD    D.T1 
          PJN    CPT1              IF MORE TO MOVE
          UJK    CPTX 
 FLE      SPACE  4,10 
**        FLE - FORMAT LOCAL NAD ERRORS.
* 
*         SAVE CURRENT CHANNEL RESERVATION STATUS.
*         CALL CHNRES TO RESERVE CHANNEL. 
*         IF RECOVERED LOCAL ERROR (ASSUME CONTROLWARE RUNNING) 
*           CALL GLN TO GET LOCAL NAD ADDRESS 
*           STORE IN MESSAGE
*         ELSE (UNRECOVERED => CONTROLWARE OR HARDWARE FAULT) 
*           CALL HST TO GET HARDWARE STATUS 
*           IF DEVICE ENABLE SWITCH ON
*             MASTER CLEAR INTERFACE
*             STOP PROCESSOR
*             GET DI STATUS FROM NAD MEMORY 
*             GET TCI STATUS I AND II FROM NAD MEMORY 
*             SET MEMORY FIELDS VALID FLAG
*             IF NAD *B1* REGISTER CONTAINS *DEAD*
*               READ NAD *B2* REGISTER
*               IF *B2* ALSO CONTAINS *DEAD*
*                 (ASSUME *MG101* CONTROLWARE)
*                 READ NAD *A* REGISTER 
*               STORE CONTROLWARE DISASTER HALT CODE
*               CHANGE SYMPTOM CODE TO *NADERDH*. 
*             IF NOT *MG101* CONTROLWARE
*               READ CONTROLWARE DETAILED STATUS FROM NAD MEMORY
*               IF DEVICE INTERFACE TYPE FROM DST IS VALID
*                 (ASSUME DST IS VALID) 
*                 STORE LOCAL NAD ADDRESS FROM DST. 
* 
*         ENTRY - CHANNEL RESERVED. 
* 
*         EXIT  - CHANNEL RESERVED. 
*                 (A) = LENGTH ON MAINTENANCE LOG MESSAGE.
  
  
 FLE      ENM    X                 ENTRY/EXIT 
          LDN    0
          STM    FLEC              ASSUME NOT *MG101* CONTROLWARE 
          LDM    ERRF 
          SBN    HRDRETRY+1 
          PJN    FLE1              IF UNRECOVERED ERROR 
          RJM    GLN               GET LOCAL NAD ADDRESS
          SHN    4
          RAM    CERL              STORE LOCAL NAD ADDRESS
          LJM    FLE8              CONTINUE 
  
 FLE1     AOM    CERH              SET UNRECOVERED FLAG (BIT 0) 
          ERRNZ  S.CERHU-0         CODE DEPENDS ON VALUE
  
 NDR      IF     DEF,NDR
          RJM    TEO               TURN EST OFF 
          LDK    RC.HRWDE 
          STD    D.REQ3+C.RC       SET HARDWARE ERROR 
 NDR      ENDIF 
  
          LDM    CSTA              FAULT MASK IN *CST* (COMNADIO) 
          STM    FLEA              SAVE MASK
          LDN    0
          STM    CSTA              DISABLE FAULT CHECK
          LDK    FCMC              INTERFACE MASTER CLEAR 
          RJM    FAN
          RJM    HST               GET HARDWARE STATUS
          MJN    FLE2              IF ERROR 
          SHN    17-S.HSTENB       DEVICE ENABLE SWITCH OFF 
          MJN    FLE2              IF ENABLE SWITCH OFF 
          RJM    EPH               ENSURE PROCESSOR IS HALTED 
          MJN    FLE2 
          LDK    N=DISTAT          DEVICE INTERFACE STATUS ADDRESS
          RJM    RNA               READ NAD ADDRESS 
          MJN    FLE2              UNABLE TO READ NAD ADDRESS 
          SHN    2*4               Z0034 -> Z3400 
          STM    CERO              SAVE LOWER 4 BITS OF DI STATUS 
          SHN    17-15             Z3400 -> 34Z00 
          LMD    D.T3              34Z00 -> 34Z12 
          SHN    1*4               34Z12 -> 4Z123 
          STM    CERN              STORE UPPER 12 BITS OF DI STATUS 
          LDK    N=TCIST1          TCI STATUS I 
          RJM    RNA               READ NAD ADDRESS 
          PJN    FLE3              IF NO ERROR
 FLE2     LJM    FLE7              ERROR
  
 FLE3     SHN    1*4               Z0034 -> Z0340 
          STM    CERP              STORE LOWER 8 BITS OF TCI ST I 
          LDD    D.T3              GET UPPER 8 BITS OF TCI ST I 
          RAM    CERO              Z0012 -> ZXX12 
          LDK    N=TCIST2          TCI STATUS II
          RJM    RNA               READ NAD ADDRESS 
          MJN    FLE2              IF ERROR 
          SHN    2*4+2             Z0034 -> 34Z00 
          LMD    D.T3              34Z00 -> 34Z12 
          SHN    2*4               34Z12 -> Z1234 
          STM    CERQ              SAVE LOWER 12 BITS OF TCI II 
          SHN    -3*4              Z1234 -> Z0001 
          RAM    CERP              SAVE UPPER 4 BITS OF TCI II
          LDM    CERH              FLAGS BYTE 
          SCN    M.CERHV
          LMN    M.CERHV           SET NAD MEMORY FIELDS VALID FLAG 
          STM    CERH 
          LDK    N=REGB1           PROCESSOR *B1* REGISTER
          RJM    RNA
          MJN    FLE2              IF ERROR 
          SHN    2*4               Z0034 -> Z3400 
          LMD    D.T3              Z3400 -> Z3412 
          LMC    0#ADDE 
          NJN    FLE4              IF NOT *DEAD*
          LDK    N=REGB2           PROCESSOR *B2* REGISTER
          RJM    RNA
          MJN    FLE4              IF ERROR 
          SHN    2*4               Z0034 -> Z3400 
          LMD    D.T3              Z3400 -> Z3412 
          LMC    0#ADDE 
          NJN    FLE5              IF NOT *DEAD*
          AOM    FLEC              ASSUME *MG101* CONTROLWARE 
          LDK    N=REGA            PROCESSOR *A* REGISTER 
          RJM    RNA
          PJN    FLE5              IF NO ERROR
 FLE4     UJN    FLE6              IF ERROR 
  
 FLE5     LDD    D.T3+1            Z0034
          SHN    2*4               Z0034 -> Z3400 
          STM    CERT              STORE LOWER 4 BITS OF DEAD CODE
          SHN    17-15             Z3400 -> 34Z00 
          LMD    D.T3              34Z00 -> 34Z12 
          SHN    1*4               34Z12 -> 4Z123 
          STM    CERS              STORE UPPER 12 BITS OF DEAD CODE 
          LDN    NADERDH           CONTROLWARE DISASTER HALT
          STD    ERROR             CHANGE ERROR TO DISASTER HALT
          LDM    CERA              CHANGE SYMPTOM CODE
          SCN    77B
          LMN    NADERDH
          STM    CERA 
 FLE6     LDC    **                *MG101* CONTROLWARE FLAG 
 FLEC     EQU    *-1
          NJN    FLE7              IF *MG101* (DST FWA UNKNOWN) 
          LDK    N=CWDST+O=DSTDTY/2  C/W DETAILED STATUS TABLE
          RJM    RNA               READ DEVICE INTERFACE TYPE 
          MJN    FLE7              IF ERROR 
          LDD    D.T3+O=DSTDTY-2*O=DSTDTY/2 
          LMK    DTYQMOD           *MG401* DEVICE TYPE
          NJN    FLE7              IF INCORRECT DEVICE TYPE 
          LDK    N=CWDST+O=DSTLNA/2  LOCAL NAD ADDRESS
          RJM    RNA               ASSUME DST IN MEMORY IS VALID
          MJN    FLE7              IF ERROR 
          LDD    D.T3+O=DSTLNA-2*O=DSTLNA/2 
          SHN    4
          RAM    CERL              STORE LOCAL NAD ADDRESS
 FLE7     LDC    **                *CST* FAULT MASK 
 FLEA     EQU    *-1
          STM    CSTA              RESTORE PREVIOUS FAULT MASK
 FLE8     LDN    CERLL/5           LENGTH OF LOCAL NAD ERROR MSG
          UJK    FLEX              RETURN 
 EPH      SPACE  4,10 
**        EPH - ENSURE PROCEESOR IS HALTED. 
* 
*         CALL HST TO GET HARDWARE STATUS.
*         IF PROCESSOR IS NOT ALREADY HALTED
*           ISSUSE STEP PROCESSOR FUNCTION
*           DELAY 10/20 MICROSECONDS
*           ASLONGAS PROCESSOR NOT HALTED AND RETRY COUNT NOT EXCEEDED
*             DELAY 10/20 MICROSECONDS
*             CHECK HARDWARE STATUS 
*             DECREMENT RETRY COUNT.
* 
*         ENTRY - NONE. 
* 
*         EXIT  - (A) < 0, IF ERROR OCCURRED. 
*                 (A) >= 0, NAD PROCESSOR IS HALTED.
  
  
 EPH      ENM    X
          RJM    HST               OBTAIN HARDWARE STATUS 
          MJN    EPHX              IF ERROR 
          LPN    M.HSTHLT          PROCESSOR HALTED MASK
          NJN    EPHX              IF PROCESSOR ALREADY HALTED
          LDK    FCSE              STEP PROCESSOR FUNCTION
          RJM    FAN
          MJN    EPHX              IF ERROR 
          LDN    77B               LONG RETRY COUNT 
          STM    EPHA 
 EPH1     LDN    20                SHORT RETRY DELAY
 EPH2     SBN    1
          NJN    EPH2              IF SHORT DELAY NOT EXPIRED 
          RJM    HST               RECHECK HARDWARE STATUS
          MJN    EPHX              IF ERROR 
          LPN    M.HSTHLT 
          NJN    EPHX              IF PROCESSOR IS NOW HALTED 
          SOM    EPHA              DECREMENT LONG RETRY COUNT 
          NJN    EPH1              IF RETRY COUNT NOT EXPIRED 
          LCN    NADERRA           FUNCTION TIMEOUT 
          UJK    EPHX              RETURN 
  
 EPHA     CON    0                 LONG RETRY COUNT 
 RNA      SPACE  4,10 
**        RNA - READ NAD ADDRESS. 
* 
*         CALL FAN TO ISSUE SET ADDRESS FUNCTION. 
*         CALL OUT TO OUTPUT ADDRESS AND LENGTH.
*         CALL INP TO READ NAD WORD (8/12 FORMAT).
* 
*         ENTRY - (A) = NAD ADDRESS TO READ 
*                  NAD PROCESSOR IS HALTED. 
* 
*         EXIT  - (A) < 0, IF ERROR 
*                 (D.T3 - D.T4) = CONTENTS OF NAD MEMORY, IF NO ERROR 
*                   AND (A) = (D.T4). 
  
  
 RNA      ENM    X                 ENTRY/EXIT 
          STM    RNAA+1            ADDRESS IN NAD MEMORY TO READ
          SHN    -8 
          STM    RNAA 
          LDK    FCSA              FUNCTION CODE
          RJM    FAN               FUNCTION NAD 
          MJN    RNAX              ERROR IN FUNCTION TRY
          LDC    RNAA              FROM WHERE TO WRITE
          STM    OUTA 
          LDN    D.T3              TO WHERE TO READ 
          STM    INPA 
          LDN    4                 ADDRESS AND LENGTH 
          RJM    OUT               OUTPUT ADDRESS AND LENGTH
          MJN    RNAX              IF ERROR 
          NJN    RNA3              IF ALL BYTES NOT TRANSFERRED 
          RJM    WFP               WAIT FOR NAD TO BE PRIMED
          NJN    RNAX              IF ERROR 
          LDK    FCI8              SELECT 8/12 INPUT
          RJM    FAN
          NJN    RNAX              IF ERROR 
          LDN    2                 NUMBER OF BYTES TO READ FROM CHANNEL 
          RJM    INP               READ NAD MEMORY
          MJN    RNA2              IF ERROR 
          SBN    2
          NJN    RNA3              IF INCORRECT BYTE COUNT
          LDD    D.T4              RETURN WITH LOWER BYTE IN (A)
 RNA2     LJM    RNAX 
  
 RNA3     LCN    NADERRF           TRANSFER ERROR 
          UJK    RNA2              RETURN WITH ERROR
  
 RNAA     CON    **                BLOCK FOR READ FUNCTION
          CON    ** 
          CON    0
          CON    1
 TEO      SPACE  4,10 
**        TEO - MARK NAD LOAD NEEDED IN EST ENTRY.
* 
*         ENTRY - (CERB) = EST ORDINAL. 
* 
*         EXIT  - NAD LOAD NEEDED INDICATION IS SET IN EST. 
*                 (NOS) CWNL FLAG, (NBE) S.EDN. 
  
  
 TEO      ENM    X
          LDM    CERB              EST ORDINAL
          ZJN    TEOX              IF NO EST ORDINAL
  
 NOS      IF     DEF,NOS
          STD    D.T1              STORE EST ORDINAL
          LDK    C.CWNL+4 
          STD    D.T2              FUNCTION CODE
          LDK    -M.CWNL
          STD    D.T3              MASK 
          LDK    M.CWNL 
          STD    D.T4              NEW VALUE
          LDK    M.SEQ
          RJM    R.MTR             CALL MTR TO SET LOAD NEEDED FLAG 
 NOS      ELSE
          LDN    CH.EST 
          RJM    R.RCH             RESERVE EST CHANNEL
          LDK    P.EST
          CRD    D.T0              READ EST POINTER WORD
          LDD    D.T0+C.EST 
          ADM    CERB 
          STD    D.T5              SAVE ADDRESS OF EST ENTRY
          CRD    D.T0              READ EST ENTRY 
          LDD    D.T0+C.ESTAT 
          SCK    M.EDN
          ADK    M.EDN
          STD    D.T0+C.ESTAT 
          LDD    D.T5 
          CWD    D.T0              WRITE EST ENTRY
          LDN    CH.EST 
          RJM    R.DCH             RELEASE EST CHANNEL
 NOS      ENDIF 
  
          UJN    TEOX 
 FRE      SPACE  4,10 
**        FRE - FORMAT REMOTE NAD ERRORS. 
* 
*         IF FORMATTING FOR NDR 
*         THEN
*           SELECT PATH.
*           READ PATH STATUS TABLE. 
*         SET LOCAL TRUNK ENABLES.
*         SET REMOTE ADDRESS. 
*         CALL GLN TO SET LOCAL NAD ADDRESS.
* 
*         ENTRY - CHANNEL RESERVED. 
* 
*         EXIT  - CHANNEL RESERVED. 
  
  
 FRE      ENM    X
          AOM    CERH              SET UNRECOVERED FLAG (BIT 0) 
          ERRNZ  S.CERHU-0         CODE DEPENDS ON VALUE
  
 NOS      IF     DEF,NOS
          LDC    301B 
          STM    CERY              RESET MESSAGE ID 
 NOS      ENDIF 
  
 NDR      IF     DEF,NDR
          LDK    RC.HRWDE+M.PTHERR
          STD    D.REQ3+C.RC       SET PATH ERROR 
          RJM    SEL               SELECT PATH
          MJN    FRE1              IF ERROR 
          LDK    FCST 
          RJM    FFN               READ PATH STATUS TABLE 
          NJN    FRE1              IF ERROR 
          LDK    FCBM 
          RJM    FFN               SELECT BINARY
          NJN    FRE1              IF ERROR 
          RJM    WFP               WAIT FOR PRIMED
          MJN    FRE1              IF ERROR 
          LDK    FCI8 
          RJM    FAN               INPUT 8/12 
          MJN    FRE1              IF ERROR 
          LDC    CERBUFF
          STM    INPA 
          LDN    CPSLN
          RJM    INP               INPUT PATH STATUS TABLE
          MJN    FRE1 
          SBN    CPSLN
 FRE1     NJN    FRE2              IF ERROR 
          LDM    CERBUFF+O=PCTRNA 
          STM    CERM              STORE REMOTE NAD ADDRESS 
          LDM    CERBUFF+O=PCTLTE 
          SHN    -4 
          STM    CERL              STORE LOCAL TRUNK ENABLES
 NDR      ENDIF 
  
 NLD      IF     DEF,NLD
          LDD    ND 
          STM    CERM              STORE REMOTE NAD ADDRESS 
          LDD    LT 
          STM    CERL              STORE LOCAL TRUNK ENABLES
 NLD      ENDIF 
  
 CVL      IF     DEF,CVL
          LDM    CBUF 
          STM    CERM              STORE REMOTE NAD ADDRESS 
          LDM    CBUF+1 
          SHN    -4 
          STM    CERL              STORE LOCAL TRUNK ENABLES
 CVL      ENDIF 
  
 FRE2     RJM    GLN               GET LOCAL NAD ADDRESS
          SHN    4
          RAM    CERL              STORE LOCAL NAD ADDRESS
          LDN    CERLR/5           LENGTH OF REMOTE NAD ERROR MSG 
          LJM    FREX              RETURN 
