 SME      SPACE  4,10
**        SME - SERVICE MEMORY ERROR.
*
*         CALLS  UST, *LOG*, *REW*.


          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 TRY ANOTHER
          LJM    SME3        NOT MULTIPLE ODD ERROR


*         SET UP BUFFER CONTROL WORD.
*
*         DFT ANALYSIS - ERROR PRIORITY = UNCORRECTED ERROR.
*         DFT ANALYSIS - CODE = MULTIPLE ODD BIT ERROR.

 SME2     SETDAN (EPUN,DAMOB)

*         FLAGS = VALID 170, VALID 180.

          SETFLG (BC.FV7,BC.FV8)
          SETOSA OSMOB       OS ACTION = MULTIPLE ODD BIT ERROR
          CALL   LOG
          UJN    SME7        RETURN

 SME3     DEPCALL SME4,SMEA

 SME4     CALL   REW         REWRITE SINGLE BIT ERROR
          UJN    SME6

 SME5     CALL   REWS0       REWRITE SINGLE BIT ERROR FOR S0
 SME6     RJM    UST         UPDATE SECDED ID TABLE
          ZJN    SME7        IF NOT TO LOG THIS ERROR
          CALL   LOG
 SME7     LJM    SMEX

 SMEA     INDEX
          INDEX  M930A,SME5
          INDEX  M930B,SME5
          INDEX  M930C,SME5
          INDEX  M930D,SME5
          INDEX  MEND
 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
          EJECT
 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
          UJP    USTX        IF OK POSITIVE

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

 UST3     LDM    USTA
          NJN    UST2
          AOM    USTA        MARK THAT FREE ENTRY FOUND
          LDD    T4
          STD    T5          HOLDS FREE ENTRY
          UJP    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

 USTA     CON    0
