          EJECT
*         CTEXT  CTP$DFT CHECK PKTS FOR NON S0.
*
*         COPYRIGHT CONTROL DATA SYSTEMS INC. 1992
*
*         THIS DECK CONTAINS ROUTINES FOR CHECKING ERRORS AND STATUS
*         RELATED TO PACKETS.
 CER      SPACE  4,15
**        CER - CHECK ERROR RESPONSE.
*
*         ENTRY  (CALB+1) = 0, IF NO ERROR.
*                (CALB+2) = FWA OF BUFFER.
*
*         EXIT   (PES1) = 8000(16), IF SEQUENCE NUMBER MISMATCH.
*                       = ERROR CODE.
*
*         USES   T1.
*
*         CALLS  ICC, IDA, *LOG*, SPB, VCK.



          ROUTINE CER        ENTRY/ EXIT

          LDM    CALB+1
          STM    PES1        SAVE CTI STATUS
          LDML   PKTCW
          LPC    0#100
          ZJP    CER0        IF NOT EPM RELATED PACKETS
          LDM    CALB+1
          NJP    CER3        IF PACKET ERROR
          LDML   TOIP+1      NUMBER OF BYTES IN PACKET DATA
          SHN    -10
          SHN    -1          2 BYTES PER PP WORD
          STD    T1
          LDM    TOIP
          LPC    0#FF
          SHN    7
          LMDL   T1          OR IN UPPER BITS
          STD    T1
          LDML   TOIP,T1
          LPC    0#FF
          UJP    CER2

 CER0     LDM    CALB+1
          ZJN    CER1        IF NO ERROR
          STM    PKERR       SAVE LAST RESPONSE PACKET ERROR CODE
          LDN    1           OFFSET TO SEQUENCE NUMBER

*         ENSURE PACKET SEQUENCE NUMBER MATCHES CURRENT REQUEST.

 CER1     ADM    CALB+2
          STD    T1
          LDI    T1
 CER2     LMM    PKSEQ
          LPC    0#FF
          STML   CERA+2      SAVE RETURNED SEQUENCE

          NJP    CER6        IF NUMBERS DO NOT MATCH
          LDM    CALB+1
          ZJP    CERX        IF NO ERROR

*         DFT ANALYSIS - PACKET RESPONSE ERROR.
*         DFT FLAGS -  LOGGING.

 CER3     LDN    BC
          RJM    CLR
          LDN    0
          STD    ET
 CER4     SETDAN (EPUN,DAPC) PACKET COMMUNICATION ERROR
          SETFLG (BC.FL)
          LDM    CALB+1
          STM    CERA+3
 CER5     LDN    NRSP        NON REGISTER STATUS BUFFER
          RJM    IDA         INCREMENT DFT ADDRESS
          CRDL   W0
          LRD    W1
          RJM    SPB         SET PP BOUNDARY
          LDDL   W0
          ADC    RR+NRSBL+1  BASE SIZE + HEADER WORD
          CWML   CERA,ON     WRITE ERROR CODE TO SCRATCH SUPPORTIVE STATUS
          LDN    NRSBL
          STM    LLOG        LENGTH TO LOG
          LDN    1
          STM    RTP1
          CALL   LOG         LOG THE ERROR
          LJM    CERX

*         DFT ANALYSIS - SEQUENCE NUMBER ERROR.
*         DFT FLAGS - LOGGING.

 CER6     LDN    BC
          RJM    CLR
          LDN    0
          STD    ET
          SETDAN (EPUN,DASQ) PACKET SEQUENCE NUMBER ERROR
          SETFLG (BC.FL)
          LDM    PKSEQ
          STM    CERA+3
          LDC    0#8000
          STML   PES1        SEQUENCE MISMATCH ERROR CODE
          UJP    CER5

 CERA     BSS    4

*         END    CTP$DFT CHECK PKTS FOR NON S0.
