          EJECT
*         CTEXT CTP$DFT_LOG_COUNTERS
*
*         THIS DECK CONTAINS CODE TO PROCESS TOP OF HOUR
*         STATISTICS

          QUAL   *
 LGC      SPACE  4,10
**        LGC - LOG COUNTERS.
*
*         CALLS  CLR, GNE, IDA, IMB, PAC, SLS, SPB, /DSIGHE/RHT, *LOG*.


          ROUTINE LGC
          LDM    RMCF
          NJN    LGC0        IF ALREADY THRU RMC THIS TOP OF HOUR
          CALL   RMC         RESET ANY MODEL DEPENDENT COUNTERS
 LGC0     LRD    DP+1
          RJM    SPB         SET THE OS BOUNDS

*         TOP OF HOUR PROCESSING DOES NOT NEED INFORMATION
*         SUPPLIED BY *ET* *EI* CELLS. IN THIS CASE THEY ARE ZEROED.

          LDN    0
          STD    EI          ELEMENT INDEX
          STD    ET          ELEMENT TYPE
          LDN    BC
          RJM    CLR         CLEAR TEMPORARY BUFFER CONTROL WORD
          LDN    VER5
          RJM    VCK         CHECK VERSION
          PJP    LGC2        IF VERSION 5 OR GREATER
          LDN    VER4
          RJM    VCK
          PJP    LGC1        IF VERSION 4
          RJM    LM3         LOG MAINFRAME ELEMENT COUNTERS PRE VERSION 4
          RJM    /LGC/ZMR
          LDM    ELCO        NUMBER OF ELEMENTS
          STD    T3
          LDN    0
          RJM    IMB         INCREMENT MAINTENANCE REGISTER BUFFER
          CWML   LGCC,T3     WRITE COUNTERS TO SCRATCH MAINTENANCE REGISTER BUFFER
          LDN    0
          STM    RTP1
          CALL   LOG         LOG THE DATA
          LDN    BC
          RJM    CLR
          RJM    PSI         PREPARE SECDED ID TABLE
          RJM    /LGC/ZMR    ZERO OUT MAINTENANCE REGISTER BUFFER
          LDN    0
          RJM    IMB
          CWML   LGCA,W7     WRITE TABLE TO MAINTENANCE REGISTER BUFFER
          CALL   LOG
          RJM    CZF         CLEAR Z FLAG
          LJM    LGCX        RETURN

 LGC1     RJM    LM4         LOG MAINFRAME ELEMENT COUNTERS VERSION 4 AND GREATER
          LDN    0
          RJM    IMB         INCREMENT MAINTENANCE REGISTER BUFFER
          CWML   LGCC,T3
          LDN    0
          STM    RTP1
          CALL   LOG         LOG THE DATA
          LDN    BC
          RJM    CLR
          RJM    PSI         PREPARE SECDED ID TABLE
          RJM    /LGC/ZMR
          LDN    0
          RJM    IMB         INCREMENT MAINTENANCE REGISTER BUFFER
          CWML   LGCA,W7
          LDN    0
          STM    RTP1
          CALL   LOG         LOG THE DATA
          RJM    CZF         CLEAR THE Z FLAG
          UJP    LGCX        RETURN

 LGC2     LDM    TOHI        GET CURRENT PHASE OF PROCESSING
          STD    T1
          LJM    0,T1

 LGC3     RJM    CFB         CHECK FOR FREE BUFFER
          MJP    LGCX        IF BUFFER NOT AVAILABLE
          LDN    1
          STM    RTP1
          RJM    LM4         SETUP ELEMENT COUNTERS FOR VERSION 4 OR GREATER
          LDN    NRSP
          RJM    IDA         INCREMENT POINTER ADDRESS
          CRDL   CM
          LRD    CM+1
          LDD    CM
          ADC    RR+1+5
          CWML   LGCC,T3     WRITE COUNTERS TO SCRATCH NRSB
          LDN    NRSBL-1
          ADD    T3
          STM    LLOG
          CALL   LOG
          LDC    LGC4
          STM    TOHI        SAVE NEXT PHASE TO PROCESS
 LGC4     RJM    CFB         CHECK FOR FREE BUFFER
          MJP    LGCX        IF BUFFER NOT AVAILABLE
          LDN    BC
          RJM    CLR
          RJM    PSI         PREPARE SECDED ID TABLE
          LDN    NRSP
          RJM    IDA         INCREMENT POINTER ADDRESS
          CRDL   CM
          LRD    CM+1
          LDD    CM
          ADC    RR+1+5
          CWML   LGCA,W7     WRITE SECDED ID DATA TO NON REGISTER SCRATCH
          LDN    1
          STM    RTP1
          LDN    NRSBL-1
          ADD    W7
          STM    LLOG
          CALL   LOG         LOG SECDED ID DATA
          CALL   TPD         TEST PATH TO DEDICATED LOAD DEVICE
          RJM    RPT         RESET PIT
          LDC    LGC5
          STML   TOHI        SET NEXT EXECUTION POINT
 LGC5     LDML   PKTCW
          NJP    LGCX        IF PACKET CONTROL WORD IS CURRENTLY BUSY
          CALL   RED         READ 960 EPM DATA
          LDC    LGC3        SET STARTING PROCEDURE
          STML   TOHI
          RJM    CZF         CLEAR THE Z FLAG
          LJM    LGCX        RETURN
 CZF      SPACE  4,10
**        CZF - CLEAR THE Z FLAG.
*
*         CALLS  IDA, SET, SPB.
*
*         USES   CM - CM+3.
*
*         NOTE   THE Z FLAG INDICATES TOP OF HOUR PROCESSING BY DFT. IT
*                IS SET BY THE OPERATING SYSTEM AND CLEARED BY DFT.


 CZF      SUBR               ENTRY/EXIT
          LDN    CM
          RJM    SET         SET UP LOCK WORD
          LMBC   DH.FZ
          STDL   CM+3
          LRD    DP+1
          RJM    SPB         SET PP BOUNDS
          LDN    HDRP
          RJM    IDA
          RDCL   CM          READ AND CLEAR LOCK
          LDN    0
          STM    RMCF        CLEAR RESET MODEL DEP COUNTERS FLAG
          UJN    CZFX        RETURN
 LM3      SPACE  4,10
**        LM3 - LOG MAINFRAME ELEMENT COUNTERS VERSION 3.
*
*         CALLS  GNE, IDA, RHT.
*
*         USES   CM - CM+3, T2, T3, T4.


 LM3      SUBR               ENTRY/EXIT

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = PROCESS MAINFRAME ELEMENT COUNTERS.
*         DFT ANALYSIS - ERROR PRIORITY = TOP OF HOUR.
*         DFT ANALYSIS - FLAGS = LOG (OS).

          SETDAN (EPTH,DATHM)
          SETFLG (BC.FL)
          LDDL   BC+BCDA
          LPC    0#F0FF
          ADC    0#0700      ELEMENT ID IS NOT MEANINGFUL
          STDL   BC+BCDA
          LDM    ELCO        COUNT OF ELEMENTS IN MAINFRAME
          STD    T3          SAVE FOR MOVES
          LDM    NBUF
          ADM    NUMHW
          RJM    IDA
          CRML   LGCC,T3      READ IN ELEMENT COUNTERS

*         ZERO THE COUNTERS AREA.

          LDM    NBUF
          ADM    NUMHW
          STD    T4
          LDM    ELCO
          SBN    1
          STD    T3
 LM31     LDD    T4
          ADD    T3
          RJM    IDA
          CRDL   CM          GET COUNTER (I)
          LDDL   CM
          LPC    0#7F7F      CLEAR THRESHOLD EXCEEDED BITS
          STDL   CM
          LDN    0
          STD    CM+1
          STD    CM+2
          STD    CM+3
          LDD    T4
          ADD    T3
          RJM    IDA
          CWDL   CM          REPLACE COUNTER(I)
          SOD    T3
          PJN    LM31        IF MORE TO DO

*         PUT ELEMENT TYPE IN THRESHOLD FIELD OF COUNTER ENTRY.

          RJM    /DSIGHE/RHT
          LDN    0
          STD    T2
 LM32     RJM    GNE         GET AN ELEMENT
          MJP    LM3X        IF NO MORE ELEMENTS
          STM    LGCC,T2     STORE ELEMENT TYPE IN THRESHOLD FIELD
          LDN    4
          RAD    T2
          UJN    LM32        PROCESS NEXT ELEMENT
          LJM    LM3X        RETURN
 LM4      SPACE  4,10
**        LM4 - LOG MAINFRAME ELEMENT COUNTERS VERSION 4.
*
*         CALLS  GNE, IDA, SLS, RHT.
*
*         USES   CM - CM+3, T2, T3, T4.


 LM4      SUBR               ENTRY/EXIT

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = PROCESS MAINFRAME ELEMENT COUNTERS.
*         DFT ANALYSIS - ERROR PRIORITY = TOP OF HOUR.
*         DFT ANALYSIS - FLAGS = LOG (OS).

          SETDAN (EPTH,DATHM)
          SETFLG (BC.FL)
          LDDL   BC+BCDA
          LPC    0#F0FF
          ADC    0#0700      ELEMENT ID IS NOT MEANINGFUL
          STDL   BC+BCDA
          LDN    MECP
          RJM    IDA
          CRDL   W0          READ IN THE MEC POINTER WORD
          LDC    MTMEC*10000 MRB TYPE FOR MEC
          ADDL   W3          LOGGED MRB SIZE
          RJM    SLS         SET LOGGED MRB SIZE/TYPE IN SUPPORTIVE STATUS
          LDDL   W3
          STDL   T3          SAVE LENGTH OF COUNTERS
          STDL   CM+1
          LRD    W1
          LDD    W0
          ADC    RR
          CRML   LGCC,T3     READ IN THE COUNTERS BUFFER

*         RIGHT JUSTIFY THE ID FIELD OF EACH MAINFRAME ELEMENT COUNTERS
*         ENTRY.

          LDN    0
          STD    CM
 LM41     LDML   LGCC,CM
          SHN    -10
          STML   LGCC,CM
          LDN    4           POSITION TO NEXT CENTRAL MEMORY WORD
          RADL   CM
          SODL   CM+1
          NJN    LM41        IF MORE TO RIGHT JUSTIFY

*         ZERO THE COUNTERS AREA.

 LM42     LDD    W0
          ADC    RR
          CRDL   CM          READ IN COUNTER (I)
          LDDL   CM
          LPC    0#FF00
          STDL   CM          CLEAR ANY THRESHOLD EXCEEDED FLAGS
          LDN    0
          STD    CM+1
          STD    CM+2
          STD    CM+3
          LDD    W0
          ADC    RR
          CWDL   CM
          AOD    W0          GET TO NEXT ELEMENT COUNTER
          SOD    W3
          NJN    LM42        IF MORE TO DO
          LJM    LM4X        RETURN
 PSI      SPACE  4,10
**        PSI - PROCESS SECDED ID TABLE.
*
*         EXIT   (W7) = NUMBER OF WORDS TO TRANSFER.
*                (LGCC) = FORMATTED SECDED ID TABLE DATA.
*
*         CALLS  CLR, IDA, PAC, SLS, VCK.
*
*         USES   MRVAL, T3, W4 - W7.


 PSI      SUBR               ENTRY/EXIT

*         SET UP SCRATCH BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ANALYSIS = PROCESSING SECDED ID TABLE.
*         DFT ANALYSIS - ERROR PRIORITY = TOP OF HOUR.
*         DFT ANALYSIS - FLAGS = LOG (OS).

          SETDAN (EPTH,DATHS)
          SETFLG (BC.FL)
          LDDL   BC+BCDA
          LPC    0#F0FF
          ADC    0#0700      ELEMENT ID IS NOT MEANINGFUL
          STDL   BC+BCDA
          LDN    SECP        SECDED ID TABLE POINTER
          RJM    IDA
          CRDL   W4          SECDED ID TABLE POINTER
          LDM    LBUF
          SBD    W7
          PJN    PSI1        IF SECDED ID TABLE < BUFFER SIZE
          LDM    LBUF
          STD    W7
 PSI1     LDC    MTSIT*10000 MRB TYPE FOR SECDED ID TABLE
          ADDL   W7          LOGGED MRB SIZE
          RJM    SLS         SET LOGGED MRB SIZE/TYPE IN SUPPORTIVE STATUS
          LRD    W5
          LDD    W4
          ADC    RR
          CRML   LGCC,W7      READ IN SECDED ID TABLE

*         GET THE OPTIONS INSTALLED REGISTER AND PLACE AT THE
*         BEGINNING OF THE LOGGED SECDED ID TABLE ENTRIES.

 PSI2     READMR RDATA,CMCC,OIMR
          RJM    PAC         PACK THE REGISTER
          LDN    3
          STD    T3
 PSI3     LDML   MRVAL,T3
          STML   LGCA,T3
          SOD    T3
          PJN    PSI3        IF MORE TO DO

*         GET THE *EID* REGISTER AND POSITION AFTER THE *OI* REGISTER.
*         IF AT VERSION 2 OR GREATER.

          LDN    VER2
          RJM    VCK         CHECK VERSION
          MJN    PSI5        IF NOT VERSION 2
          READMR RDATA,CMCC,EIMR
          RJM    PAC         PACK THE REGISTER
          LDN    3
          STD    T3
 PSI4     LDML   MRVAL,T3
          STML   LGCB,T3
          SOD    T3
          PJN    PSI4        IF MORE TO DO

*         ZERO THE SECDED ID TABLE.

 PSI5     LDN    CM
          RJM    CLR
          LDD    W7
          SBN    1
          STD    T3
 PSI6     LDD    W4
          ADD    T3
          ADC    RR
          CWDL   CM
          SOD    T3
          PJN    PSI6        IF MORE TO DO
          AOD    W7          ADD ROOM FOR OPTIONS INSTALLED REGISTER
          AOD    W7          ADD ROOM FOR *EID* REGISTER
          LJM    PSIX        RETURN
 CFB      SPACE  4,10
**        CFB - CHECK FOR FREE TOP OF HOUR BUFFER.
*
*         EXIT   (A) < 0  ENTRY IS NOT AVAILABLE TO BE LOGGED TO.
*
*         CALLS  IDA.
*
*         USES   W0 - W3, CFBA - CFBA+3.


 CFB      SUBR               ENTRY/EXIT
          LDN    NRSP
          RJM    IDA
          CRDL   W0          READ IN NON REGISTER STATUS BUFFER POINTER
          LRD    W1
          LDD    W0
          ADC    RR
          CRML   CFBA,ON     READ IN HEADER VALUE FOR NUMBER OF ELEMENTS AND SIZE
          LDD    W0          POINTER TO BEGINNING PF NON REGISTER BUFFER
          ADML   CFBA+3      ADD ELEMENT SIZE TO GET TO FIRST ENTRY
          ADC    RR+1        ADD IN BUFFER HEADER WORD
          CRML   CFBA,ON     READ IN BUFFER CONTROL WORD FOR TOP OF HOUR ENTRY
          LDML   CFBA+2
          SHN    21-3
          MJP    CFBX        IF LOGGING FLAG SET
          LDML   CFBA+2
          SHN    21-2        INTERLOCK FLAG
          LJM    CFBX

 CFBA     BSSZ   4
 SLS      SPACE  4,10
**        SLS - SET LOGGED MRB SIZE IN SCRATCH SUPPORTIVE STATUS BUFFER.
*
*         ENTRY  (A) = 6/MRB TYPE, 12/LOGGED MRB SIZE.
*
*         USES   T2, T3, CM - CM+3.
*
*         CALLS  IDA, VCK.


 SLS      SUBR               ENTRY/EXIT
          STD    T3          SAVE LOGGED MRB SIZE
          SHN    -14         SAVE MRB TYPE
          STD    T2
          LDN    VER4        CHECK *DFT* VERSION NUMBER
          RJM    VCK
          MJN    SLSX        IF LESS THAN VERSION 4
          LDN    VER5
          RJM    VCK         CHECK VERSION
          PJN    SLS2        IF VERSION 5 OR GREATER
          LDN    SSBP        READ SUPPORTIVE STATUS HEADER WORD
          RJM    IDA
          CRDL   CM
          AODL   CM          SKIP TO SCRATCH ENTRY HEADER WORD
          LRD    CM+1
          ADC    RR
          CRML   SLSA,ON
          LDDL   T3          SET LOGGED MRB SIZE
          STML   SLSA+3
          LDDL   T2          SET MRB TYPE
          RAML   SLSA
 SLS1     LDDL   CM          REWRITE HEADER WORD
          ADC    RR
          CWML   SLSA,ON
          UJP    SLSX        RETURN

 SLS2     LDN    NRSP
          RJM    IDA
          CRDL   CM
          AODL   CM          SKIP BUFFER HEADER WORD
          AODL   CM          SKIP BUFFER CONTROL WORD
          LRD    CM+1
          ADC    RR
          CRML   SLSA,ON
          LDN    NRSBL-1     VERSION 5 NON REGISTER BUFFER ENTRY BASE SIZE
          RAD    T3
          STML   SLSA+3      LENGTH TO LOG
          LDDL   T2
          STML   SLSA+2
          UJN    SLS1

 SLSA     BSS    4
          QUAL   LGC
 ZMR      SPACE  4,10
**        ZMR - ZERO MAINTENANCE REGISTER BLOCK 0.
*
*         EXIT   MAINTENANCE REGISTER BLOCK 0 INITIALIZED TO ZERO.
*
*         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   *

*         LGCC DENOTES THE START OF A BUFFER USED TO HOLD THE
*         MAINFRAME ELEMENT COUNTERS AND THE SECDED ID TABLE.
*         *LGCA* INCLUDES SPACE FOR TWO CM WORDS FOR *OI* AND *EID*
*         REGISTERS WHEN WRITING THE SECDED ID TABLE.

 LGCA     BSS    4           *OI* REGISTER
 LGCB     BSS    4           *EID* REGISTER
 LGCC     EQU    *           START OF LOGGED SECDED ID TABLE ENTRIES

*         END CTP$DFT_LOG_COUNTERS


