*         CTEXT  CTP$DFT_SEND_PACKET_ALL
*
*         THIS DECK DEFINES ROUTINES WHICH WILL INITIATE PACKET
*         ACTIVITY.
 SPD      SPACE  4,10
**        SPD - SEND PACKET DATA.
*
*

          ROUTINE SPD

*         DETERMINE IF DUAL IOU PACKETS ARE NEEDED.

          LDML   DI4CW       CHECK DUAL I4 PACKETS
          ZJN    SPD1        IF NO REQUEST
          CALL   LDS         LOAD DFT INTO SECONDARY IOU
          UJP    SPDX        RETURN

*         DETERMINE IF BACKGROUND PACKETS ARE ALLOWED.

 SPD1     LDML   CELCW       CHECK CONSOLE LOGGING STATUS
          NJN    SPD2        IF LOGGING OUTSTANDING/IN PROGRESS
          LDM    MRTU        CHECK IF MRT UPDATE NEEDS TO BE LOGGED
          ZJN    SPD3        IF MRT HAS NOT BEEN UPDATED
          LDN    77          INITIATE MRT TRANSFER
          STM    CELCW
 SPD2     CALL   LTC         LOG TO CONSOLE
          UJP    SPDX        RETURN

*         CHECK FOR GENERAL PACKET REQUESTS.

 SPD3     LDM    PKTCW
          ZJN    SPD4        IF NO REQUEST PRESENT
          STML   RTP1
          LDN    1           SET LENGTH TO 1 8-BIT BYTE
          STML   RTP2
          CALL   PKT         SEND REQUESTED PACKET
          LDML   CALB+1      CHECK FOR ERROR
          ZJN    SPD5        IF NO ERROR, SET RESPONSE PENDING AND RETURN
          LDN    0           CLEAR CONTROL WORD
          UJP    SPD6        RETURN

*         SEND CHECK-IN PACKET IF TIME HAS ELAPSED.

 SPD4     LDM    S0FLG
          ZJP    SPDX        IF NOT S0/S0E
          LDM    CPSA        CHECK ELAPSED TIME FLAG
          ZJP    SPDX        IF NOT TIME TO SEND CHECK-IN PACKET
          LDN    0           CLEAR FLAG
          STM    CPSA
*         LDN    PKRCI       SEND CHECK-IN PACKET
*         STML   RTP1
*         CALL   PKT
          UJP    SPDX        **** DISABLE CHECK-IN PACKETS FOR NOW ****

*         UPDATE *PKTCW* AND RETURN.

 SPD5     LDC    PKWRP       CLEAR REQUEST AND SET RESPONSE PENDING
 SPD6     STML   PKTCW
          LJM    SPDX        RETURN
 MPR      SPACE  4,10
**        MPR - MAKE PACKET REQUEST.
*
*         ENTRY  (RTP1) = REQUEST.
*                (PKTCW) = PACKET CONTROL WORD.
*
*         EXIT   (PKTCW) UPDATED IF NO REQUEST PREVIOUSLY PRESENT.
*                (RTP1) = 0, IF REQUEST QUEUED.
*                       = 1, IF REQUEST QUEUE FULL.

          ROUTINE  MPR

          LDM    PKTCW       CHECK PREVIOUS REQUEST (IGNORE RESPONSE PENDING)
          NJN    MPR1        IF PREVIOUS REQUEST PRESENT
          LDM    RTP1        MERGE REQUEST WITH RESPONSE PENDING STATUS IF ANY
          RAML   PKTCW
          LDN    0           SET REQUEST RECORDED
          STML   RTP1
          LJM    MPRX        RETURN

 MPR1     LRD    DP+1
          RJM    SPB         SET OS PP BOUNDS
          LDN    BC
          RJM    CLR         CLEAR SCRATCH CONTROL WORD
          LDN    0
          STD    ET
          SETDAN (EPCO,DAQF)
          SETFLG (BC.FL)
          LDN    NRSBL-1
          STM    LLOG
          LDN    1
          STM    RTP1
          CALL   LOG         LOG THE ERROR
          LJM    MPRX        RETURN
*         END    CTP$DFT_SEND_PACKET_ALL
