          EJECT
*         CTEXT CTP$DFT_ENVIRONMENT_RTNS
*
*         THIS DECK CONTAINS CODE TO PROCESS
*         ENVIRONMENT AND SHORT WARNINGS

 PEW      SPACE  4,10
**        PEW - PROCESS ENVIRONMENT WARNING.
*
*         CALLS  CIL, CLR, IDA, /PEWQ/ZMR, VCK, *LOG*, *SWI*, *SWP*.


          ROUTINE PEW

          LRD    DP+1
          RJM    SPB         SET PP BOUNDS
          LDN    1
          STM    WARN
          LDN    VER5
          RJM    VCK         CHECK VERSION
          PJP    PEW3        IF VERSION 5 OR GREATER
          LDM    PWEP
          NJP    PEW2        IF ENVIRONMENT ENTRY PRESENT
          RJM    SWA         SET WARNING ENTRY ACTIVE
 PEW1     LDDL   BC+BCDA
          LPC    0#F0FF
          ADC    0#0700      SET ELEMENT ID TO NOT MEANINGFUL
          STDL   BC+BCDA
          LDN    0
          STM    DFTA        NULL ACTION CODE
          RJM    /PEWQ/ZMR
          CALL   SWI
          CALL   LOG
          LDM    FREE
          STM    PWEP
          RJM    CIL         CLEAR INTERLOCK ON THIS ENTRY
          LDN    0
          STM    FREE
          LJM    PEWX        RETURN

 PEW2     RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          CRDL   BC          GET EXISTING BUFFER CONTROL WORD
          CALL   SWI         SET WARNING MAINTENANCE BUFFER ENTRY
          LJM    PEWX        RETURN

 PEW3     LDN    0
          STM    DFTA        NULL DFT ACTION CODE
          RJM    FEI         FORM THE ELEMENT ID REGISTER
          RJM    CWE         CHECK WARNING ENTRY
          ZJP    PEWX        IF THIS WARNING ALREADY SEEN
          RJM    SWA         SET WARNING ENTRY ACTIVE
          LDDL   BC+BCDA
          LPC    0#F0FF
          ADC    0#0700      SET ELEMENT ID TO NOT MEANINGFUL
          STDL   BC+BCDA
          LDN    77
          STM    PWEP        SET POWER WARNING ENTRY ACTIVE
          LDN    NRSP
          RJM    IDA         INCREMENT DFT POINTER  ADDRESS
          CRDL   W0
          LDD    W0
          ADC    NRSBL+RR+1  OFFSET TO *EID* REGISTER PLACEMENT
          LRD    W1
          CWML   MRVAL,ON    WRITE *EID* REGISTER TO SCRATCH NON REGISTER BUFFER
          LDN    1
          STM    RTP1        SET FLAG TO USE NON REGISTER BUFFER
          LDN    NRSBL       NON REGISTER STATUS BUFFER ENTRY BASE LENGTH
          STM    LLOG
          CALL   LOG
          LJM    PEWX        RETURN

 SWI      SPACE  4,10
**        SWI - SET WARNING ENTRY IN MAINTENANCE BUFFER.
*
*         CALLS  IMB, PAC, SPB.
*
*         USES   CM - CM+3, T1, T3.


          ROUTINE SWI

          LRD    DP+1
          RJM    SPB         SET OS BOUNDS
          LDD    EI          ELEMENT ORDINAL
          SHN    -2
          STD    T1
          SHN    2
          RAD    T1
          ADDL   BC+BCOFF
          RJM    IMB
          CRDL   CM
          LDD    EI
          LPN    3
          STD    T3
          LDN    0#10
          STM    CM,T3
          LDD    T1
          ADDL   BC+BCOFF
          RJM    IMB
          CWDL   CM
          RJM    FEI         FORM EID REGISTER
          LDN    1
          ADDL   T1
          ADDL   T3
          ADDL   BC+BCOFF
          RJM    IMB
          CWML   MRVAL,ON    REWRITE ELEMENT ID FOR ELEMENT WITH WARN
          LJM    SWIX        RETURN
          EJECT
 CLW      SPACE  4,10
**        CLW - CLEAR WARNING ENTRY.
*
*         ENTRY  (RTP2) = OFFSET INTO BUFFER CONTROL WORDS.
*                (DP - DP+2) = R-POINTER VALUE.
*
*         USES   T1, T2, CM - CM+3.
*
*         CALLS  CLR, IDA, SET, SPB.


          ROUTINE  CLW

          LDM    RTP2
          STM    CLWA
          LRD    DP+1
          RJM    SPB         SET PP BOUNDS
 CLW1     LDN    BC
          RJM    CLR         CLEAR BC AREA
          LDBC   (BC.FI)
          STDL   BC+BCFLG
          LDM    CLWA
          RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          RDSL   BC          SET INTERLOCK
          LDDL   BC+BCFLG
          SHN    21-BC.FI
          MJN    CLW1        IF INTERLOCK PREVIOUSLY SET
          LDN    1
          STM    DSIF        DFT HAS SET THE I/L FLAG
          LDN    BC
          RJM    CLR

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - FLAGS = VALID 170, VALID 180, LOG (OS), INTERLOCK.
*         DFT ANALYSIS - OS ACTION = WARNING CLEAR.
*                                  = SYSTEM RESUME (VERSION 4).

          SETFLG (BC.FV7,BC.FV8,BC.FL,BC.FI)
          SETOSA OSWC,OSSR
          LDM    CLWA
          RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          CRDL   CM          GET ASSOC BUFFER CONTROL WORD
          LDDL   CM+BCOA     CLEAR PREVIOUS OS ACTION
          LPC    0#FF00
          LMDL   BC+BCOA     SET NEW OS ACTION
          STDL   CM+BCOA
          LDDL   CM+BCFLG
          LPC    0#FF00      CLEAR OLD FLAGS
          LMDL   BC+BCFLG    SET NEW FLAGS
          STDL   CM+BCFLG
          LDDL   CM+BCDA
          LPC    0#FF        GET OLD ANALYSIS
          STD    T1
          LDN    DALW
          SBD    T1
          NJN    CLW2        IF NOT LONG WARNING
          LDN    DALWC
          UJN    CLW5        PROCESS LONG WARNING

 CLW2     LDN    DALPW
          SBD    T1
          NJN    CLW3        IF NOT LONG POWER WARNING
          LDN    DALPWC
          UJN    CLW5        PROCESS LONG POWER WARNING

 CLW3     LDN    DASPW
          SBD    T1
          NJN    CLW4        IF NOT SHORT POWER WARNING

*         DFT ANALYSIS - OS ACTION = WARNING CLEAR.
*                                  = SYSTEM UNSTEP (VERSION 4).

          SETOSA OSWC,OSSU
          LDDL   CM+BCOA     CLEAR PREVIOUS OS ACTION
          LPC    0#FF00
          LMDL   BC+BCOA     SET NEW OS ACTION
          STDL   CM+BCOA
          LDN    DASWC
          UJN    CLW5        PROCESS SHORT POWER WARNING

 CLW4     LDN    0           ERROR CODE
 CLW5     STD    T2          SAVE ANALYSIS FOR CLEAR CONDITION
          LDDL   CM+BCDA
          LPC    0#FF00      MASK OFF OLD ANALYSIS
          ADD    T2
          STDL   CM+BCDA
          LDM    CLWA
          RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          CWDL   CM          REWRITE ENTRY WITH CLEAR STATUS
          LDN    CM
          RJM    SET
          LDDL   CM+BCFLG
          LMBC   (BC.FI)
          STDL   CM+BCFLG
          LDM    CLWA
          RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          RDCL   CM          CLEAR THE INTERLOCK ON THE ENTRY
          LDN    0
          STM    DSIF        DFT HAS CLEARED ITS INTERLOCK ON THE ENTRY

          CHECK  E8
          CHECK  E7

          LDN    0
          STM    VOSD        CLEAR VALID OS DATA ACCUMULATOR
          LJM    CLWX        RETURN

 CLWA     CON    0
 SWA      SPACE  4,10
**        SWA - SET WARNING ACTIVE.
*
*         EXIT   SCRATCH BUFFER CONTROL WORD SET TO LONG WARNING ANALYSIS.
*
*         CALLS  CCA, CLR.


 SWA      SUBR               ENTRY/EXIT
          LDN    BC
          RJM    CLR

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = LONG WARNING.
*         DFT ANALYSIS - ERROR PRIORITY = ENVIRONMENT.
*         DFT ANALYSIS - FLAGS = VALID 170, VALID 180, LOG (OS).
*         DFT ANALYSIS - OS ACTION = ENVIRONMENT WARNING.
*                                  = SYSTEM IDLE/CHECKPOINT (VERSION 4).

          SETDAN (EPEN,DALW)
          SETFLG (BC.FL,BC.FV7,BC.FV8)
          SETOSA OSEW,OSSI
          LDM    BATT        GET IF RUNNING ON BATTERY
          NJN    SWA0        IF USING BATTERY
          RJM    CCA         CHECK IF THE CONSOLE IS ALIVE
          NJP    SWAX        IF CONSOLE OK (OR NOT PRESENT)

*         SET UP SCRATCH BUFFER CONTROL WORD.
*         DFT ANALYSIS - ANALYSIS = LONG POWER WARNING.
*         DFT ANALYSIS - ERROR PRIORITY = ENVIRONMENT.
*         DFT ANALYSIS - OS ACTION = LONG POWER WARNING.
*                                  = SYSTEM IDLE/CHECKPOINT (VERSION 4).

 SWA0     SETDAN (EPEN,DALPW)
          SETOSA OSLPW,OSSI
          LJM    SWAX        RETURN
 FEI      SPACE  4,10
**        FEI - FORM ELEMENT ID REGISTER.
*
*         EXIT   (MRVAL) HOLDS FORMED ELEMENT ID REGISTER.
*
*         NOTE   THE REGISTER IS FORMED FROM A MAINFRAME RECONFIGURATION
*                TABLE ENTRY.


 FEI      SUBR               ENTRY/EXIT
          LDN    0
          STML   MRVAL
          STML   MRVAL+1
          LDML   HBUF+1+EM   MODEL NUMBER
          SHN    -4
          STDL   T2
          LDML   HBUF+1+EN   ELEMENT NUMBER
          SHN    10
          LMDL   T2          ELEMENT NUMBER / MODEL NUMBER
          STML   MRVAL+2
          LDML   HBUF+1+ESU  UPPER PART OF SERIAL NUMBER
          LPN    17
          SHN    14
          LMML   HBUF+1+ELL  LOWER PART OF SERIAL NUMBER
          STML   MRVAL+3
          LDD    ET
          SBN    PROCID
          NJN    FEI1        IF NOT A PROCESSOR
          LDM    CPUO
          ZJN    FEI1        IF PROCESSOR 0
          LDML   MRVAL+2
          LPC    0#FF
          STML   MRVAL+2
          LDN    0#10        SECOND PROCESSOR CODE
          SHN    8D
          LMML   MRVAL+2
          STML   MRVAL+2
          UJP    FEIX        REWRITE ELEMENT ID

 FEI1     LDD    ET
          SBN    IOUID
          NJP    FEIX        IF NOT AN IOU
          LDM    IOUO
          ZJP    FEIX        IF IOU0
          LDML   MRVAL+2
          LPC    0#FF
          STML   MRVAL+2
          LDN    0#10        SECOND IOU CODE
          SHN    8D
          LMML   MRVAL+2
          STML   MRVAL+2
          UJP    FEIX        RETURN
 SWP      SPACE  4,10
**        SWP - SHORT WARNING PROCESSOR.
*
*         CALLS  CIL, CLR, IDA, SPB, VCK, /PEWQ/ZMR, *LOG*, *SWI*.


          ROUTINE SWP

          LRD    DP+1
          RJM    SPB         SET PP OS BOUNDS
          LDN    1
          STM    SHRR        SHORT WARNING ERROR
          STM    WARN
          LDN    VER5
          RJM    VCK         CHECK VERSION
          PJP    SWP4        IF VERSION 5
          LDM    SWEP        EXISTING SHORT WARNING ENTRY OFFSET
          NJP    SWP3        IF EXISTING ENTRY
          LDN    BC
          RJM    CLR

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = SHORT POWER WARNING.
*         DFT ANALYSIS - ERROR PRIORITY = SHORT WARNING.
*         DFT ANALYSIS - FLAGS = LOGGING, VALID 170, VALID 180.
*         DFT ANALYSIS - OS ACTION = SHORT POWER WARNING.
*                                  = SYSTEM STEP (VERSION 4).

          SETDAN (EPSW,DASPW)
          SETFLG (BC.FL,BC.FV7,BC.FV8)
          SETOSA OSSPW,OSSS
          LDN    0           SET NULL ACTION CODE
          STM    DFTA
          RJM    /PEWQ/ZMR   ZERO MAINTENANCE REGISTER BUFFER
          LDDL   BC+BCDA
          LPC    0#F0FF
          LMC    0#0700      SET ELEMENT ID TO NOT MEANINGFUL
          STDL   BC+BCDA
          CALL   SWI         SET WARNING ENTRY
          CALL   LOG
          LDM    FREE
          STM    SWEP        SET UP SHORT WARNING ENTRY OFFSET
          RJM    CIL         CLEAR INTERLOCK ON THIS ENTRY
          LDN    0
          STM    FREE
          LJM    SWPX        RETURN

 SWP3     RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          CRDL   BC          GET EXISTING BUFFER CONTROL WORD
          CALL   SWI         UPDATE EXISTING ENTRY
          LJM    SWPX        RETURN

 SWP4     LDN    0           SET NULL ACTION CODE
          STM    DFTA
          RJM    FEI         FORM THE ELEMENT ID REGISTER
          RJM    CWE         CHECK WARNING ENTRY
          ZJP    SWPX        IF THIS WARNING ALREADY SEEN

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = SHORT POWER WARNING.
*         DFT ANALYSIS - ERROR PRIORITY = SHORT WARNING.
*         DFT ANALYSIS - FLAGS = LOGGING, VALID 170, VALID 180.
*         DFT ANALYSIS - OS ACTION = SHORT POWER WARNING.
*                                  = SYSTEM STEP (VERSION 4).

          SETDAN (EPSW,DASPW)
          SETFLG (BC.FL,BC.FV7,BC.FV8)
          SETOSA OSSPW,OSSS
          LDDL   BC+BCDA
          LPC    0#F0FF
          LMC    0#0700      SET ELEMENT ID TO NOT MEANINGFUL
          STDL   BC+BCDA
          LDN    NRSP
          RJM    IDA         INCREMENT DFT POINTER  ADDRESS
          CRDL   W0
          LDD    W0
          ADC    NRSBL+RR+1  OFFSET TO *EID* REGISTER PLACEMENT
          LRD    W1
          CWML   MRVAL,ON    WRITE *EID* REGISTER TO SCRATCH NON REGISTER BUFFER
          LDN    1
          STM    RTP1        SET FLAG TO USE NON REGISTER BUFFER
          LDN    NRSBL
          STM    LLOG
          CALL   LOG
          LJM    SWPX        RETURN
 CLI      SPACE  4,10
**        CLI - CLEAR INTERLOCK ON ENTRY.
*
*         ENTRY  (FREE) = INDEX OF BUFFER CONTROL WORD INTERLOCK TO CLEAR.
*
*         USES   T3.
*
*         CALLS  IDA, SET.


 CIL      SUBR               ENTRY/EXIT
          LDM    FREE
          STD    T3
          LDN    CM
          RJM    SET
          LDDL   CM+BCFLG
          LMBC   (BC.FI)
          STDL   CM+BCFLG
          LDD    T3
          RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          RDCL   CM          CLEAR INTERLOCK
          LDN    0
          STM    DSIF        DFT HAS CLEARED ITS INTERLOCK ON THE ENTRY

*         IF C180 ERROR OR NOSVE LOGGING OR VALID C180 ERROR SET
*         C180 ERROR IN DFT HEADER.

          CHECK  E8

*         IF C170 ERROR OR NOS/NOSBE LOGS OR VALID C170 ERROR SET
*         C170 ERROR IN DFT HEADER.

          CHECK  E7

          LDN    0
          STM    VOSD        CLEAR VALID OS DATA ACCUMULATOR
          LJM    CILX        RETURN
CWE       SPACE  4,10
**        CWE - CHECK WARNING ENTRY.
*
*         ENTRY  (MRVAL - MRVAL+3) = EID REGISTER TO CHECK.
*
*         EXIT   (A) = 0 = ENTRY ALREADY LOGGED AND PENDING.
*                (A) <> 0 IMPLIES ENTRY NOT SEEN.
*
*         CALLS  GBE.
*
*         USES   RTP2


 CWE0     LDN    1           NOT SEEN CONDITION
 CWE      SUBR               ENTRY/EXIT
          LDN    1
          STM    RTP1
          LDM    NNRB        NUMBER OF NON REGISTER BUFFERS
          STM    RTP2
 CWE1     RJM    IBW         INCREMENT BUFFER CONTROL WORDS
          CRML   CWEB,ON
          LDML   CWEB+1      GET DFT ANALYSIS
          SHN    -BC.ANP
          SBN    EPEN
          MJP    CWE2        IF NOT AN ENVIRONMENT ENTRY
          LDML   CWEB+1
          LPN    0#F
          SBN    4
          PJP    CWE2        IF WARNING BUT ALREADY CLEARED
          LDML   RTP2
          RJM    IBW
          ADN    NRSBL
          CRML   CWEA,ON     READ IN EID REGISTER
          LDML   MRVAL
          LMML   CWEA
          NJP    CWE2        IF NO MATCH
          LDML   CWEA+1
          LMML   MRVAL+1
          NJN    CWE2        IF NO MATCH
          LDML   CWEA+2
          LMML   MRVAL+2
          NJN    CWE2        IF NO MATCH
          LDML   CWEA+3
          LMML   MRVAL+3
          NJP    CWE2        IF NO MATCH
          UJP    CWEX        RETURN

 CWE2     SOM    RTP2
          NJP    CWE1        IF NOT DONE WITH SEARCH
          UJP    CWE0        RETURN WITH NOT FOUND

 CWEA     BSSZ   4           EID REGISTER IN NRSB
 CWEB     BSSZ   4           DFT ANALYSIS IN NRSB
          QUAL   PEWQ
 ZMR      SPACE  4,10
**        ZMR - ZERO MAINTENANCE REGISTER BLOCK 0.
*
*         USES   T1.
*
*         CALLS  IMB.


 ZMR      SUBR               ENTRY/EXIT
          LDN    0
          STD    T1
 ZMR1     LDD    T1
          RJM    IMB
          CWML   ZERO,ON
          AOD    T1
          SBM    LBUF
          PJN    ZMRX        IF DONE
          UJN    ZMR1        LOOP

 ZERO     BSSZ   4
          QUAL   *

*         END OF CTP$DFT_ENVIRONMENT_RTNS
