          EJECT
*         CTEXT  CTP$DFT_OS_REQUESTS_PACKETS
*
*         THIS DECK PROVIDES O.S. REQUEST PROCESSORS WHICH
*         REQUIRE PACKET COMMUNICATION TO FUNCTION PROPERLY
 UCD      SPACE  4,10
**        UCD - UPDATE CLOCK DATA.
*
*         ENTRY  (TINB) - SHOULD HAVE THE CLOCK DATA IN THE WALL CLOCK
*                         CHIP DESCRIPTOR FORMAT.
*                UWCC - UPDATE WALL CLOCK CHIP FLAG, = 0 IMPLIES WALL CLOCK
*                       CHIP UPDATED, .NE. 0 IMPLIES WALL CLOCK CHIP NOT
*                       UPDATED.
*
*         EXIT   HDT, CDA, AND THE CHIP IF PRESENT WILL ALL BE UPDATED.
*
*         CALLS  FHE, PFC, *ERR*.


          ROUTINE UCD

          LDC    132         FUNCTION TO WRITE THE HDT
          STM    CALB

*         SET CLOCK DESCRIPTOR LENGTH.

          LDN    WCCID
          RJM    FHE         FETCH WALL CLOCK CHIP ID DESCRIPTOR
          MJP    ERR         IF WALL CLOCK CHIP DESCRIPTOR NOT FOUND
          LDM    HBUF        SET CLOCK DESCRIPTOR LENGTH
          SHN    -6
          STM    CALB+2
          LDN    1
          STM    UMEM        SET FLAG TO WRITE *2AP* TO MEMORY
          CALL   PFC         CALL *2AP* TO WRITE HDT TO ITS DATA AREA AND CM
          LDN    0
          STM    UMEM        CLEAR UPDATE MEMORY FLAG
          LDM    UWCC        GET UPDATE WALL CLOCK CHIP FLAG
          NJP    UCD2        IF NO UPDATE NECESSARY

*         AFTER THE CALL DATA WILL BE IN *TOIP*.  MOVE DATE AND TIME DATA
*         TO THE BEGINNING OF THE BUFFER IN PREPARATION FOR THE CALL TO
*         *2AP* TO UPDATE THE WALL CLOCK CHIP.

          LDN    1
          STD    T1          INDEX
          LDML   TINB
          STML   UCDB
          SBN    1
          STML   UCDC        BUFFER ADDRESS - 1
 UCD1     LDM    **,T1
 UCDB     EQU    *-1
          STM    **,T1       STORE IN PREVIOUS ENTRY
 UCDC     EQU    *-1
          AOD    T1
          SBN    7
          MJN    UCD1        IF NOT DONE MOVING
          LDM    IOUM        IOU MODEL
          SHN    -4
          LMN    2
          ZJN    UCD2        IF NO WALL CLOCK CHIP IN IOU
          LDC    131         FUNCTION TO WRITE THE WALL CLOCK CHIP
          STM    CALB
          CALL   PFC         CALL THE *2AP* OVERLAY

*         FINALLY WRITE THE DISK WITH THE UPDATED HDT.
*         DONT DO THIS ON 93X MODELS.

          LDM    S0FLG
          NJP    UCD4        IF 93X MAINFRAME
 UCD2     LDN    33          FUNCTION TO WRITE THE HDT TO DISK
          STM    CALB
          STML   RTP1        SAVE FUNCTION CODE
          CALL   PFC         CALL *2AP* WITH FUNCTION
          LDM    CALB
          ADM    CALB+1
          ADM    CALB+2
          ZJN    UCD3        IF NO ERRORS TRYING TO WRITE THE DISK
          LDN    0           NO RETURN / DO NOT SET STATUS / NO OFFSET
          STML   RTP2
          CALL   PDE         PROCESS DISK ERRORS

 UCD3     LDM    PKFLG
          ZJP    UCDX        IF PC CONSOLE IS NOT PRESENT
          LDC    PKTCW*0#400-TPKT*0#400+1*0#400+0*0#200+PKFSC  SET *UPDATE CONSOLE CLOCK* REQUEST
          STML   RTP1
          UJN    UCD5        MAKE PACKET REQUEST

 UCD4     LDM    S0FLG
          ZJN    UCD3        IF NOT S0/S0E PACKETS
          LDC    PKTCW*0#400-TPKT*0#400+1*0#400+0*0#200+PKRUC  SET *UPDATE CONSOLE CLOCK* REQUEST
          STML   RTP1
 UCD5     CALL   MPR         MAKE PACKET REQUEST
          LJM    UCDX        RETURN

*         END    CTP$DFT_OS_REQUESTS_PACKETS
