          EJECT
*         CTEXT  CTP$DFT SERVICE MEMORY ERROR.
*
*         THIS DECK CONTAINS ROUTINES TO CHECK FOR MULTIPLE ODD BIT
*         MEMORY ERRORS, CALL REWRITE MEMORY ERROR, AND UPDATE IN SECDED ID TABLE
 SME      SPACE  4,10
**        SME - SERVICE MEMORY ERROR.
*
*         CALLS  UST, *LOG*, *RWE*.


          ROUTINE SME

          LDC    MOETT
          STD    T3
 SME1     LDM    MOET,T3     GET SYNDROME ENTRY
          SBM    SYCD
          ZJN    SME2        IF HAVE A MATCH
          SOD    T3
          PJN    SME1        IF MORE ENTRIES TO CHECK
          LJM    SME3        PROCESS SINGLE BIT ERROR

*         SET UP BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ERROR PRIORITY = UNCORRECTED ERROR.
*         DFT ANALYSIS - CODE = MULTIPLE ODD BIT ERROR.
*         DFT ANALYSIS - FLAGS = VALID 170, VALID 180.
*         DFT ANALYSIS - OS ACTION = MULTIPLE ODD BIT ERROR.
*                                  = SYSTEM STEP (VERSION 4).

 SME2     SETDAN (EPUN,DAMOB)
          SETFLG (BC.FV7,BC.FV8)
          SETOSA OSMOB,OSSS
          CALL   LOG
          UJN    SME4        RETURN

*         PROCESS SINGLE BIT ERROR.

 SME3     CALL   REW         REWRITE SINGLE BIT ERROR
          RJM    UST         UPDATE SECDED ID TABLE
          ZJN    SME4        IF NOT TO LOG THIS ERROR
          CALL   LOG
 SME4     LJM    SMEX        RETURN
 MOET     SPACE  4,10
**        MOET - TABLE OF MULTIPLE ODD BIT ERRORS.
*
*         12/ CODE
*
*         CODE IS SYNDROME FOR MULTIPLE ODD BIT ERROR BEING
*         REPORTED AS SINGLE BIT ERROR.


 MOET     BSS    0
          LOC    0
          DATA   0#13,0#15,0#16,0#19,0#1A,0#1C,0#1F,0#23
          DATA   0#25,0#26,0#29,0#2A,0#2C,0#2F,0#31,0#32
          DATA   0#34,0#38,0#43,0#45,0#46,0#49,0#4A,0#4C
          DATA   0#4F,0#51,0#52,0#54,0#58,0#61,0#62,0#64
          DATA   0#68,0#83,0#85,0#86,0#89,0#8A,0#8C,0#8F
          DATA   0#91,0#92,0#94,0#98,0#A1,0#A2,0#A4,0#A8
          DATA   0#C1,0#C2,0#C4,0#C8,0#F1,0#F2,0#F4,0#F8
 MOETT    EQU    *-1
          LOC    *O
 UST      SPACE  4,10
**        UST - UPDATE SECDED ID TABLE.
*
*         ENTRY  (SBER - SBER+1) = ADDRESS OF ERROR.
*                (SYCD) = SYNDROME CODE.
*
*         EXIT   (A) <> 0 IF ENTRY SHOULD BE LOGGED.
*                (A) = 0 IF ENTRY SHOULD NOT BE LOGGED.
*                A NEW ENTRY IS CREATED OR AN EXISTING ENTRY UPDATED.
*
*         USES   T4, T5, W0 - W7.
*
*         CALLS  IDA, SPB.


 UST      SUBR               ENTRY/EXIT
          LDN    0
          STD    T4
          LDN    SECP        SECDED ID TABLE POINTER OFFSET
          RJM    IDA
          CRDL   W0          READ IN POINTER WORD
          LRD    W1          SET UP R-REGISTER
 UST1     LDD    W0
          ADD    T4
          ADC    RR
          CRDL   W4          READ ENTRY
          LDD    W4          COUNT FIELD
          ZJN    UST3        IF FREE ENTRY
          LDML   SBER
          SBDL   W5
          NJN    UST2        IF NO MATCH
          LDML   SBER+1
          SBDL   W6
          NJN    UST2        IF NO MATCH SECOND PART
          AOD    W4          MATCH - BUMP COUNT
          LDD    W0
          ADD    T4
          ADC    RR
          CWDL   W4          REWRITE ENTRY
          LDN    0
          UJN    USTX        IF OK POSITIVE

 UST2     AOD    T4
          SBD    W3
          ZJN    UST4        IF THROUGH SCANNING
          UJN    UST1        LOOP

 UST3     LDM    USTA
          NJN    UST2
          AOM    USTA        MARK THAT FREE ENTRY FOUND
          LDD    T4
          STD    T5          HOLDS FREE ENTRY
          UJN    UST2        LOOP

 UST4     LDM    USTA
          ZJN    UST5        IF NO FREE ENTRY FOUND
          LDN    1           CREATE A NEW ENTRY
          STD    W4          COUNT IS 1
          LDM    SYCD        SYNDROME
          STD    W7
          LDML   SBER+1      ADDRESS
          STDL   W6
          LDML   SBER
          STDL   W5
          RJM    SPB         SET PP BOUNDS
          LDD    W0
          ADD    T5
          ADC    RR
          CWDL   W4          WRITE NEW ENTRY
          LDN    1
 UST5     LJM    USTX        RETURN

 USTA     CON    0

*         END    CTP$DFT SERVICE MEMORY ERROR
