          EJECT
*         CTEXT CTP$DFT_ANALYZE_IOU_ERRORS
*
*         ANALYSIS ROUTINES FOR I1,I2 IOUS.
*
*         NOTE:  THIS DECK USES A VARIANT OF THE ROUTINE
*         MACRO. THIS VARIANT REMOVES THE GLOBAL NATURE OF THE
*         ENTRY POINT NAMES (NAME_O, NAME_E) TO ALLOW FOR THE
*         POSSIBILITY OF EITHER I2 OR I4 BEING ON THE SYSTEM.
*
*         THE USAGE OF THIS DECK IS AS FOLLOWS
*
*         QUAL
**COPY CTP$DFT_ANALYZE_IOU_ERRORS
*         QUAL   *

 AIE      SPACE  4,10
**        AIE - ANALYSE IOU ERRORS.
*
*         ENTRY  REGISTERS LOGGED IN SCRATCH BUFFER.
*                (SUMS) = SUMMARY STATUS.
*
*         CALLS  CEE, CLR, GBV, FMB, *CFF*, *LOG*.


          ROUTINE AIE,NG

          LDN    0
          STM    NERR        SET NO ERROR FLAG FALSE
          LDN    BC
          RJM    CLR         ZERO SCRATCH BCW
          CALL   CFF         CHECK FOR FREEZE
          LDM    RTP2
          ZJN    AIE0        IF NOT TO IGNORE ERROR
          LDN    0
          STM    DFTA        NO ACTION
          STM    REGI        RESET REGISTER LIST INDEX
          UJP    AIEX

 AIE0     LDM    SUMS
          SHN    21-SSPH
          PJP    AIE3        IF NOT PROCESSOR HALT

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = UNCORRECTED IOU ERROR.
*         DFT ANALYSIS - DFT ACTION = CLEAR ERROR.
*         DFT ANALYSIS - ERROR PRIORITY = UNCORRECTED ERROR.
*         DFT ANALYSIS - FLAGS = LOG (OS).
*         DFT ANALYSIS - OS ACTION = FATAL IOU ERROR.
*                                  = SYSTEM STEP (VERSION 4).

          SETDAC DDCL
          SETDAN (EPUN,DAUIE)
          SETFLG (BC.FL)
          SETOSA OSFIE,OSSS
          LDN    0           SET TO NIO PP
          STM    GBVA
          RJM    GBV         GET BOUNDS VIOLATION
          LJM    AIE9        CONTINUE

 AIE3     LDK    IFS1
          RJM    FMB         FIND MAINTENANCE REGISTER IN SCRATCH BUFFER
          CRDL   W0
          LDDL   W2          BITS 32 - 39
          SHN    -10
          LPC    0#FB
          ZJP    AIE5        IF BITS 32 - 39 NOT SET

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = FATAL IOU ERROR.
*         DFT ANALYSIS - DFT ACTION = CLEAR ERROR.
*         DFT ANALYSIS - ERROR PRIORITY = UNCORRECTED ERROR.
*         DFT ANALYSIS - FLAGS = VALID 170, VALID 180, LOG (OS).
*         DFT ANALYSIS - OS ACTION = FATAL IOU ERROR.
*                                  = SYSTEM STEP (VERSION 4).

 AIE4     SETDAC DDCL
          SETDAN (EPUN,DAFI)
          SETFLG (BC.FV7,BC.FV8,BC.FL)
          SETOSA OSFIE,OSSS
          LJM    AIE9        CONTINUE

 AIE5     LDDL   W2
          LPC    0#FF
          ADDL   W3
          NJP    AIE4        IF ANY BITS SET
          LDDL   W2
          SHN    21-2-10     12/16 CONVERSION ERROR
          PJP    AIE7        IF NOT 12/16 ERROR

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = 12/16 CONVERSION ERROR.
*         DFT ANALYSIS - DFT ACTION = CLEAR ERROR.
*         DFT ANALYSIS - ERROR PRIORITY = CORRECTED ERROR.
*         DFT ANALYSIS - FLAGS = LOG (OS).

          SETDAC DDCL
          SETDAN (EPCO,DA1216)
          SETFLG (BC.FL)
          UJP    AIE9        CONTINUE

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = CHANNEL ERROR.
*         DFT ANALYSIS - DFT ACTION = CLEAR ERROR.
*         DFT ANALYSIS - ERROR PRIORITY = UNCORRECTED ERROR.
*         DFT ANALYSIS - FLAGS = LOG (OS).

 AIE7     SETDAC DDCL
          SETDAN (EPCO,DACHE)
          SETFLG (BC.FL)
 AIE9     CALL   LOG
          LJM    AIEX        RETURN

 GBV      SPACE  4,10
**        GBV - GET BOUNDS VIOLATION.
*
*         ENTRY  *GBVA* IS FLAG DENOTING 1=CIO REGISTER, 0=NIO REGISTER.
*
*         EXIT   (A) = 0 PERTINENT *FS1* RESISTER NOT IN ERROR.
*
*         USES   W0 - W7.
*
*         CALLS  FMB, VCK.


 GBV      SUBR               ENTRY/EXIT
          LDM    GBVA
          NJN    GBV0        IF CIO PP
          LDC    IFS1        ADD IN *FS1* REGISTER OFFSET
          UJN    GBV1        CONTINUE

 GBV0     LDC    CIFS1       CIO *FS1* REGISTER
 GBV1     RJM    FMB         FIND MAINTENANCE REGISTER IN SCRATCH BUFFER
          CRDL   W0          GET *FS1* REGISTER
          LDDL   W0
          ADDL   W1
          ADDL   W2
          ADDL   W3
          ZJN    GBVX        IF NOTHING IN *FS1*
          LDM    GBVA
          NJN    GBV2        IF CIO PP
          LDN    IOSB        NIO OS BOUNDS
          UJN    GBV3        CONTINUE

 GBV2     LDN    CIOSB       CIO OS BOUNDS
 GBV3     RJM    FMB         FIND MAINTENANCE REGISTER IN SCRATCH BUFFER
          CRDL   W4
          LDDL   W0
          LPDL   W4          USE *OSB* AS A MASK AGAINST *FS1* REGISTER
          ZJN    GBV5        SO FAR 180 PP
 GBV4     SETFLG (BC.FV7)    SET VALID 170 FLAG
          LDN    VER2
          RJM    VCK         CHECK DFT BLOCK VERSION
          MJN    GVB4.1      IF DFT 1 SELECTED

*         DFT ANALYSIS - OS ACTION = C170 STATE STEP.

          SETOSA OSNSI,OS17S C170 STATE STEP
          LDN    1
 GVB4.1   LJM    GBVX        RETURN

 GBV5     LDM    GBVA        GET CIO OR NIO
          NJN    GBV6        IF CIO ONLY HAVE 2 BARRELS
          LDDL   W1
          LPDL   W5          USE OS BOUNDS AS MASK
          NJP    GBV4        IF 170 PP ERROR
 GBV6     SETFLG (BC.FV8)    SET VALID 180 FLAG

*         DFT ANALYSIS - OS ACTION = C180 STATE STEP.

          SETOSA OSVEI,OS18S C180 STATE STEP

          LDN    D8TY
          RJM    IIB
          CRDL   CM
          LDDL   CM+3
          LPC    0#3F
          SBN    2
          MJN    GBV30       IF OS DOESNT SUPPORT HUNG PP PROCESSING
          SETOSA OSVEI,OSHGP HUNG PP OS ACTION
 GBV30    LDN    1
          LJM    GBVX        RETURN

 GBVA     CON    0           FLAG TELLING NIO OR CIO TYPE OF PP

*         END CTP$DFT_ANALYZE_IOU_ERRORS
