*DECK     CSESDS
USETEXT TEXTCS
USETEXT TEXTSS
USETEXT TXCMDCS 
USETEXT TXTAPSS 
PROC CSESDS;
# TITLE - SEND DEBUG SIGNAL.     #
  
      BEGIN 
# 
**    CSESDS - SEND DEBUG SIGNAL. 
* 
*     D.G. DEPEW.            82/10/01.
* 
*     THIS PROCEDURE RECEIVES ERR/LGL AND UNRECOGNIZED SMS IN NON-DEBUG 
*     MODE ONLY (IN DEBUG MODE *CSDDNT* WILL ABORT), AND GENERATES
*     CORRESPONDING UNSOLICITED REPORTS AND NETWORK LOG FILE ENTRIES TO 
*     SIGNAL THE OCCURANCE OF THESE ANAMOLIES.
* 
*     PROC CSESDS 
* 
*     ENTRY    WCBUF[0] = WORD COUNT WORD FROM ORIGINAL EVENT QUEUE 
*                         (*EVQ*) ENTRY.
*             ABHBUF[0] = APPLICATION BLOCK (EVENT) HEADER FOR THE SM 
*                         (BASED ARRAY *ABH* IN *TXTAPSS* POINTS HERE). 
*             MSGBUF[0] = BODY OF THE SM (BASED ARRAYS *CSSM* IN
*                         *TXTSMCS* AND *APSM* IN *TXTAPSS* POINT HERE).
* 
*     EXIT    1. AN ENTRY HAS BEEN PLACED IN THE OPERATOR RESPONSE
*                QUEUE (*ORQ*). 
*             2. A HOP/LG SM ENTRY HAS BEEN PLACED THE OUTGOING 
*                TRAFFIC QUEUE (*OTQ*). 
# 
  
# 
****  PROC CSESDS - XREF LIST.
# 
      XREF
        BEGIN 
        PROC CSESLE;         # SEND NETWORK LOG ENTRY                  #
        PROC MOVEI;          # MOVE STORAGE INDIRECT ADDRESS (MACREL)  #
        PROC SSBSBF;         # STORE BITFIELD                          #
        PROC SSTAQE;         # ADD QUEUE ENTRY                         #
        FUNC XCHD;           # CONVERT INTEGER TO HEXIDECIMAL DISPLAY  #
        END 
# 
****
# 
  
  
      DEF  LEVTMSG$   #4#;   # LENGTH OF EVENT MESSAGE TEXT IN WORDS   #
  
  
      ITEM WP;               # WORD POS FOR DISP CODE PFC/SFC IN EVENT #
      ITEM BP;               # BIT POS FOR DISP CODE PFC/SFC IN EVENT  #
  
  
# 
*     THE FOLLOWING ARRAYS ARE EVENT MESSAGES FOR UNRECOGNIZED AND
*     ERR/LGL SUPERVISORY MESSAGES. 
# 
      ARRAY BADSM [00:00] S(LEVTMSG$);
        BEGIN 
        ITEM BS$TEXT    C(00,00,30) = ["UNRECOGNIZED SM, PFC/SFC = "];
        ITEM BS$ZERO    U(03,00,60) = [0];
        END 
  
      ARRAY LOGERR [00:00] S(LEVTMSG$); 
        BEGIN 
        ITEM LE$TEXT    C(00,00,30) = ["LOGICAL ERROR, PFC/SFC = "];
        ITEM LE$ZERO    U(03,00,60) = [0];
        END 
  
  
  
  
  
# 
*     CHECK WHETHER THIS IS AN ERR/LGL SM AND USE THE APPROPRIATE ERROR 
*     MESSAGE.  STORE THE DISPLAY CODED PFC/SFC IN THE MESSAGE TEXT.
*     TIME STAMP THE MESSAGE. 
# 
      IF PFCSFC[0] EQ ERRLGL
      THEN                             # ERR/LGL/U SM                  #
        BEGIN 
        WP = 2;                        # SET POS OF DISP CODED PFC/SFC #
        BP = 30;
        SSBSBF (LOGERR, WP, BP, 24, XCHD(X"10000" + ERPSFC[0]));
        MOVEI (LEVTMSG$, LOC(LOGERR), LOC(CMD$TEXT[0]));
        END 
      ELSE                             # UNRECOGNIZED SM               #
        BEGIN 
        WP = 2;                        # SET POS OF DISP CODED PFC/SFC #
        BP = 42;
        SSBSBF (BADSM, WP, BP, 24, XCHD(X"10000" + PFCSFC[0])); 
        MOVEI (LEVTMSG$, LOC(BADSM), LOC(CMD$TEXT[0])); 
        END 
      CMD$TXT1[0] = CTM$CLOCK[0]; 
  
  
# 
*     NOW BUILD AND ISSUE THE *ORQ* AND THE HOP/LG *OTQ* ENTRIES. 
# 
      WCB$WORD[1] = LEVTMSG$ + 3; 
      ABHWORD[1] = 0; 
      ABHADR[1] = AUDGR2$;             # HOP AND CONTROL NOP           #
      P<MSCMD> = LOC (CMD$TXT1[0]); 
      SSTAQE (P<ORQ>, WCBUF[1], ABHBUF[1], MSCMD[0]); 
      CSESLE (0, WCBUF[1], MSCMD[0]);                 # ISSUE HOP/LG   #
  
  
      END  # CSESDS # 
  
      TERM
