          CTEXT  CTP$CONSTRUCT MESSAGE IN EICB
          SPACE  4,10
 QUAL$    IF     -DEF,QUAL$
          QUAL   CTPCME
 QUAL$    ENDIF
          BASE   M
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC. 1992
 CME      SPACE  4,10
**        CME - CONSTRUCT MESSAGE IN EICB.
*
*         THIS ROUTINE CONSTRUCTS A MESSAGE IN THE FORM -
*                HH:MM:SS ERR=PEMMZXXX
*         WHERE -
*                P = PRODUCT ID (D FOR DFT, S FOR SCI).
*                E = ELEMENT SPECIFIER (C=CPU0, D=CPU1, I=IOU0, J=IOU1).
*               MM = MODEL NUMBER OF ELEMENT THAT REPORTED ERROR.
*                Z = THE LETTER *Z*.
*              XXX = ANALYSIS CODE.
*
*         ENTRY  (IB - IB+2) = RFA OF EICB.
*                (PPTY) = 0, IF UPPER PP.
*                (CMEA) = PRODUCT ID IN ASCII.
*                (CMEB) = ELEMENT SPECIFIER IN ASCII.
*                (CMEC) = MODEL NUMBER IN ASCII.
*                (CMED) = ANALYSIS CODE.
*
*         EXIT   (A) = 0, IF EICB CAN BE WRITTEN.
*                      1, IF EICB CANNOT BE WRITTEN.
*                      2, IF MESSAGE IS ALREADY PRESENT.
*                (T2) = MESSAGE LENGTH.
*                (CMEE) = FORMATTED MESSAGE AS WRITTEN TO THE EICB.
*
*         USES   T1, T2, T4, T5, T6, T7.
*
*         CALLS  CDA, CSD, GEL, IIB, SPB.


 CME40    LDN    1           EICB CANNOT BE WRITTEN

 CME      SUBR               ENTRY/EXIT
          RJM    GEL         GET EICB LEVEL
          SBN    4
          MJN    CME40       IF NO MESSAGE BUFFER IN EICB (REV < 4)

*         IF C170 OS IS PRESENT, THEN VERIFY THAT THE PP IS ON THE
*         CORRECT SIDE OF THE OS BOUNDS TO WRITE THE MESSAGE TO THE
*         EICB.  IF NOT ON THE CORRECT SIDE OF OS BOUNDS, THEN A
*         CHECK IS MADE TO SEE IF THE REPORTED PROBLEM IS A CH17
*         PROBLEM.  IF THIS IS THE CASE, THEN THE EICB CANNOT BE
*         WRITTEN SINCE SPB WOULD HAVE TO USE CH17.

          LDD    T6          GET THE OS TYPE
          LPN    3
          SHN    21-1
          LMDL   T7
          SHN    5-21
          ZJN    CME20       IF C170 OS NOT PRESENT
          LDM    PPTY
          NJN    CME20       IF A LOWER PP
          STD    T1
          LDK    TCHPL
          STD    T2
 CME10    LDML   TCHP,T1     CHECK FOR CH17 PROBLEM
          LMML   CMED
          ZJN    CME40       IF CH17 PROBLEM
          AOD    T1
          SBD    T2
          MJN    CME10       IF NOT END OF LIST

          LRD    IB+1        GET INTERFACE BLOCK R-POINTER
          RJM    SPB         SET PP BOUNDS

*         CHECK TO SEE IF EICB CURRENTLY HAS A MESSAGE IN IT.

 CME20    LDN    DFCM+2      GET ADDRESS TO READ FROM
          RJM    IIB
          CRML   CMEE,ON
          LDML   CMEE
          ZJN    CME30       IF NO ERROR PRESENT (BEFORE BUFFER BLANKED)
          LMC    2R
          ZJN    CME30       IF NO ERROR PRESENT
          LDN    2
          UJP    CMEX        RETURN

 CME30    LDK    CMEE
          RJM    GAT         GET ASCII TIME
          LDK    1R=         INSERT PRODUCT IDENTIFIER
          SHN    10
          LMML   CMEA
          STML   CMEE+6
          LDML   CMEB        ELEMENT SPECIFIER
          SHN    10
          STDL   T1
          LDML   CMEC        MODEL NUMBER
          SHN    -10         EXTRACT UPPER DIGIT
          LMDL   T1
          STML   CMEE+7
          LDML   CMEC        EXTRACT LOWER DIGIT OF MODEL NUMBER
          LPC    0#FF
          SHN    10
          LMC    1RZ
          STML   CMEE+10
          LDML   CMED        CONVERT UPPER TWO DIGITS OF ANALYSIS CODE
          SHN    -4
          RJM    CDA         CONVERT DIGITS TO ASCII
          STML   CMEE+11
          LDML   CMED        CONVERT LEAST SIGNIFICANT DIGIT OF ANALYSIS CODE
          LPN    17
          RJM    CSD         CONVERT SINGLE DIGIT TO ASCII
          SHN    10
          LMC    1R
          STML   CMEE+12

*         WRITE MESSAGE AND UPDATE HEADER.

          LDN    3           MESSAGE LENGTH IS 24 CHARACTERS
          STD    T2
          LDD    IB
          ADC    RR+DFCM+1   WRITE MESSAGE
          CWML   CMEE,T2
          LDD    IB
          ADC    RR+DFCM     READ OLD MESSAGE ID
          CRDL   T4
          AOD    T7          INCREMENT COUNTER
          LDN    24D
          STD    T5          SET TO 24 CHARACTERS
          LDD    IB
          ADC    RR+DFCM     WRITE OUT MESSAGE ID
          CWDL   T4
          LDN    0           EICB CAN/HAS BEEN WRITTEN
          LJM    CMEX        RETURN

 CMEA     CON    0           ASCII CODE FOR PRODUCT IDENTIFIER
 CMEB     CON    0           ASCII CODE FOR ELEMENT SPECIFIER
 CMEC     CON    0           ASCII CODE FOR MODEL NUMBER
 CMED     CON    0           ANALYSIS CODE
 CMEE     DATA   C*HH.MM.SS ERR=DEMMZ600   *
 TCHP     SPACE  4,10
**        TCHP - TABLE OF CH17 PROBLEM ANALYSIS CODES.


 TCHP     BSS    0
          CON    DAMP        CH17 PARITY ERROR
          CON    DAMI        CH17 INTERLOCK ERROR
          CON    DAMA        CH17 ACTIVE
          CON    DACI        CH17 INACTIVE
 TCHPL    EQU    *-TCHP      LENGTH OF TABLE
 GAT      SPACE  4,10
**        GAT - GET ASCII TIME STAMP.
*
*         ENTRY  (A) = FWA OF 4 BYTE RESULT BUFFER.
*                (R) = R-REGISTER FOR EICB.
*
*         USES   T3, T4.
*
*         CALLS  CDA, CSD.


 GAT10    LDC    2R
          STIL   T3
          AOD    T3
          SBD    T4
          NJN    GAT10       IF BUFFER HAS NOT BEEN BLANK FILLED

 GAT      SUBR               ENTRY/EXIT
          STD    T3          SAVE RESULT BUFFER FWA
          ADN    4           BUFFER LENGTH
          STD    T4
          LDD    IB
          ADC    RR+D8WT     READ WALL CLOCK CHIP VALUE IN EICB
          CRML   GATA,ON
          LDML   GATA+1
          ZJN    GAT10       IF I2 IOU MODEL
          LMC    0#FFFF
          ZJN    GAT10       IF CLOCK ACCESS ERROR

*         CONVERT RESULT OF READING WALL CLOCK CHIP TO
*         HH:MM:SS IN ASCII.

          LDML   GATA+2      HOURS
          SHN    -10
          RJM    CDA         CONSTANT TO DECIMAL ASCII
          STIL   T3
          AOD    T3
          LDML   GATA+2      MINUTES
          SHN    -4          MOST SIGNIFICANT DIGIT
          RJM    CSD         CONVERT SINGLE DIGIT
          SHN    12
          LMC    0#3A        COLON
          SHN    10
          STIL   T3          *:M*
          AOD    T3
          LDML   GATA+2
          RJM    CSD         CONVERT SINGLE DIGIT
          SHN    10
          LMC    0#3A        COLON
          STIL   T3          *M:*
          AOD    T3
          LDML   GATA+3      SECONDS
          SHN    -10
          RJM    CDA         CONSTANT TO DECIMAL ASCII
          STIL   T3
          UJP    GATX        RETURN

 GATA     BSS    4           SCRATCH BUFFER
 GEL      SPACE  4,10
**        GEL - GET EICB LEVEL.
*
*         EXIT   (A) = EICB LEVEL.
*                (T4 - T7) = (EICB WORD D7TY).
*
*         USES   T4, T5, T6, T7.


 GEL      SUBR               ENTRY/EXIT
          LDN    D7TY        TEST *EICB* LEVEL
          RJM    IIB
          CRDL   T4          READ *D7TY*
          LDD    T7          12 BIT LOAD
          SHN    -6          EXTRACT EICB REVISION LEVEL
          UJN    GELX        RETURN

*COPY     CTP$CONVERT_DIGITS_TO_ASCII

          BASE   *
 QUAL$    IF     -DEF,QUAL$
          QUAL   *
 CME      EQU    /CTPCME/CME
 CMEA     EQU    /CTPCME/CMEA
 CMEB     EQU    /CTPCME/CMEB
 CMEC     EQU    /CTPCME/CMEC
 CMED     EQU    /CTPCME/CMED
 CMEE     EQU    /CTPCME/CMEE
 CDA      EQU    /CTPCME/CDA
 CSD      EQU    /CTPCME/CSD
 GEL      EQU    /CTPCME/GEL
 QUAL$    ENDIF

*         END    CTP$CONSTRUCT_MESSAGE_IN_EICB.

          ENDX
