          EJECT
          CTEXT  CTP$DFT RUN TIME ERROR HANDLER.
*
*         THIS COMMON DECK CONTAINS ERROR HANDLING ROUTINES
*         USED BY ALL VARIANTS OF DFT.
 ERRH     SPACE  4,15
**        ERRH - ERROR HANDLING FOR DFT RUN TIME ERRORS.
*
*         ENTRY  (RTP1) = 4/F,12/ANALYSIS CODE.
*                F = 0, IF PROCESSING IS TO RESUME AFTER MESSAGE PROCESSED.
*                    1, IF DFT IS TO TERMINATE.
*
*                (BC - BC+3) = SCRATCH BUFFER CONTROL WORD USED FOR LOGGING.
*
*                (FREE) = THE LAST LOGGED BUFFER CONTROL WORD FOR CPU ERRORS.
*
*         EXIT   TO *DFT10*, IF NORMAL RUNNING CALL.
*                TO *IDD*, IF TERMINATE CALL.
*
*         USES   ERRC, T1 - T7, W0 - W7.
*
*         CALLS  RCS.


          ROUTINE ERRH

          EXITMR  ERH40
          FATALMR  ERH40
          LDML   RTP1        GET MESSAGE AND ACTION
          STM    CMED
          STD    T1
          SHN    -12D
          STM    ERRC

*         SET THE ELEMENT TYPE IN THE SCRATCH BUFFER CONTROL WORD TO INTERNAL ERROR

          LDN    VER5
          RJM    VCK         CHECK VERSION
          MJN    ERH1        IF LESS THAN VERSION 5
          LDN    6
          STD    ET          RESET ELEMENT TYPE TO INTERNAL ERROR
          LDDL   BC+BCDA
          LPC    0#F0FF
          LMC    0#0600
          STDL   BC+BCDA

*         CHECK FOR SPECIAL ACTION REQUIRED.

 ERH1     LDD    T1
          LMK    DAMT
          ZJN    ERH5        IF 617 - DFT DETECT MTR T/O
          LMK    DAFC&DAMT
          NJP    ERH10       IF NOT 218 - FATAL CPU N ERROR
          LDDL   BC+BCDA
          LPC    0#F000
          LMC    DALP
          STDL   BC+BCDA     SET TO DFT LOGGED PROCESSOR FAILURE ANALYSIS
          LDN    0
          STM    RTP1
          LDM    FREE        GET LAST LOGGED BUFFER CONTROL WORD
          ZJN    ERH4        IF NOT DEFINED USE INITIAL
          RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          CRDL   CM          READ IN BUFFER CONTROL WORD
          LDDL   CM+1        GET DFT ANALAYSIS CODE FROM LIVE ERROR
          LPC    0#FFF
          STML   CMED        SAVE FOR EICB MESSAGE
 ERH4     LDM    CPUO        CPU ORDINAL
 ERH5     NJN    ERH6        IF CPU1
          LDC    1RC         CPU0 ELEMENT SPECIFIER
          STML   CMEB
          LDML   CPU0M       CPU0 MODEL NUMBER
          UJN    ERH7        CONVERT DIGITS TO ASCII

 ERH6     LDC    1RD         CPU1 ELEMENT SPECIFIER
          STML   CMEB
          LDML   CPU1M       CPU1 MODEL NUMBER
 ERH7     RJM    CDA         CONVERT DIGITS TO ASCII
          STML   CMEC
          UJN    ERH20       CONSTRUCT MESSAGE IN EICB

 ERH10    LDM    IOUN        NUMBER OF IOU IN WHICH DFT IS EXECUTING
          STD    T1          TRANSLATE IOU NUMBER TO ELEMENT SPECIFIER
          LDML   ERHA,T1
          STML   CMEB
          LDML   IOUM        IOU MODEL NUMBER
          RJM    CDA         CONVERT DIGITS TO ASCII
          STML   CMEC

 ERH20    LDK    1RD         SET DFT PRODUCT
          STM    CMEA
          RJM    CME         CONSTRUCT MESSAGE IN EICB
          STM    RTP2        SAVE EICB ACCESS FLAG
          LDN    VER5
          RJM    VCK         CHECK VERSION
          MJP    ERH25       IF LESS THAN VERSION 5
          LDM    CMED
          LMC    DAPZ
          ZJP    ERH25       IF BUILD STRUCTURE FAILURE
          LDN    0
          STD    T1
          LDK    /CTPCME/TCHPL
          STD    T2
ERH21     LDML   /CTPCME/TCHP,T1
          LMML   CMED
          ZJP    ERH25       IF CH 17 ERROR
          AOD    T1
          SBD    T2
          MJN    ERH21       IF MORE CODES TO CHECK
          LDN    1
          STM    RTP1        SET TO LOG TO THE NON REGISTER STATUS BUFFER
          SETFLG (BC.FL,BC.FV7,BC.FV8)
          LDM    ERRC
          ZJN    ERH22       IF NOT TO TERMINATE DFT
          SETOSA OSNA,OSSS
 ERH22    LDN    NRSBL-1
          STM    LLOG
          CALL   LOG         LOG THE ERROR
 ERH25    LDM    ERRC        CHECK TERMINATE FLAG
          ZJP    ERH50       IF DFT IS TO CONTINUE
          LDM    RTP2
          SBN    1
          ZJN    ERH30       IF EICB CANNOT BE WRITTEN

*         NOTIFY *SCI* THAT *DFT* HAS DELIBERATELY HUNG ITSELF.

          LDN    D8RLP       READ RELOCATION CONTROL WORD
          RJM    IIB
          CRDL   W0
          LDDL   W3          RELOCATION CONTROL WORD LENGTH
          ZJN    ERH30       IF NOT DEFINED
          LRD    W1
          LDD    W0
          ADC    RR
          CRDL   W4
          LDDL   W4          SET DELIBERATE HANG STATUS
          LPC    177377
          LMC    400
          STDL   W4
          LRD    W1
          RJM    SPB         SET OS BOUNDS
          LDD    W0          REWRITE RELOCATION CONTROL WORD
          ADC    RR
          CWDL   W4
 ERH30    LDDL   BC+BCDA     REPORT ANALYSIS CODE AND HANG
 ERH40    RJM    IDD
 ERH50    EXITMR FMR         RESET TO NORMAL ERROR HANDLER
          FATALMR  FMR
          RJM    RCS         RESET CALL BLOCK
          LJM    DFT10       EXIT TO MAIN LOOP

 ERHA     CON    1RI         IOU0 ELEMENT SPECIFIER
          CON    1RJ         IOU1 ELEMENT SPECIFIER

*         END    CTP$DFT_RUN_TIME_ERROR_HANDLER


