*         CTEXT  CTP$DFT PROCESS DISK ERROR.
*
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC. 1992
 PDE      SPACE  4,15
**        PDE - PROCESS DISK ERROR ENCOUNTERED BY *2AP*.
*
*         ENTRY  (RTP1) = *2AP* FUNCTION NUMBER.
*                (RTP2) = 1/RETURN, 1/SET STATUS, 1/ NOT OS REQUEST, 7/0, 6/OFFSET.
*                IF SET STATUS, THEN RETURN WILL NOT BE PROCESSED.
*                (CALB+1) = *2AP* ERROR STATUS.
*                IF (CALB+1) = 2, THEN THE FOLLOWING IS TRUE -
*                ((TOUB)) = LENGTH OF BUFFER.
*                ((TOUB)+1) = DEVICE TYPE.
*                ((TOUB)+2) = CHANNEL NUMBER.
*                ((TOUB)+3 - (TOUB)+LENGTH-1) = STATUS BUFFER.
*
*         EXIT   TO *ERR1*, IF RETURN NOT REQUESTED.
*                IN THIS CASE A RESPONSE CODE OF EITHER 2 OR 6 IS
*                RETURNED.


          ROUTINE  PDE

          LRD    DP+1
          RJM    SPB         SET PP BOUNDS
          LDN    NRSBL-1
          STM    LLOG        PRESET THE LENGTH TO LOG IN NRSB
          LDML   CALB+1      ERROR CODE
          LMN    2
          NJP    PDE2        IF NOT DISK ERROR
          LDML   TOUB        ADDRESS OF BUFFER
          STDL   T1
          SBN    1           FWA OF BLOCK TO WRITE TO CM
          STML   PDEB
          LDIL   T1          LENGTH
          STDL   T2
          SBN    4
          MJP    PDE2        IF STATUS NOT AVAILABLE
          LDML   1,T1        DEVICE TYPE
          LMN    77
          ZJP    PDE2        IF STATUS NOT AVAILABLE

*         CONSTRUCT BLOCK FOR LOGGING.
*         THE HEADER HAS THE FOLLOWING FORMAT -
*         16/IOU NUMBER, 16/CH NUMBER, 16/DEVICE TYPE, 16/*2AP* FUNCTION NUM.

          LDML   2,T1        CHANNEL NUMBER
          STIL   T1
          LDM    RTP1        *2AP* FUNCTION NUMBER
          STML   2,T1
          SODL   T1
          LDM    IOUN        IOU NUMBER
          STIL   T1
          LDDL   T2          LENGTH
          ADN    3           ROUND UP TO CM WORDS
          SHN    -2
          ADN    1
          STDL   T2
          SBN    7+1
          MJP    PDE1        IF LENGTH TO LOG WITHIN LIMITS

*         DFT ANALYSIS - DISK STATUS LENGTH EXCEEDED.
*         OS ACTION - NO INTERRUPTION.
*         DFT ACTION - CONTINUE PROCESSING.

          LDN    BC
          RJM    CLR
          LDN    0
          STD    ET
          SETDAN (EPUN,DADL)
          SETFLG (BC.FL)
          LDD    T2
          STM    PDEC+3
          LDN    NRSP        NON REGISTER STATUS BUFFER
          RJM    IDA         INCREMENT DFT ADDRESS
          CRDL   W0
          LRD    W1
          LDDL   W0
          ADC    RR+NRSBL+1  BASE SIZE + HEADER WORD
          CWML   PDEC,ON     WRITE ERROR CODE TO SCRATCH SUPPORTIVE STATUS
          LDN    NRSBL
          STM    LLOG        LENGTH TO LOG
          LDN    1
          STML   RTP1
          CALL   LOG         LOG THE ERROR
          LJM    PDEX        RETURN

 PDE1     LDN    NRSP        NON REGISTER STATUS BUFFER
          RJM    IDA         INCREMENT DFT ADDRESS
          CRDL   T4
          LRD    T5
          LDML   RTP2
          SHN    21-15
          PJN    PDE1.5      IF OS REQUEST MAKE ROOM FOR EXTRA WORD
          LDN    NRSBL+7     BASE NRSB PLUS SIZE OF DISK ERROR STATUS
          STM    LLOG
          LDDL   T4
          UJN    PDE1.6      NO EXTRA WORD NECESSARY

 PDE1.5   RJM    LRP
          CRDL   CM          READ IN OS REQUEST WORD
          LDML   CALB+1      GET 2AP RESPONSE
          STDL   CM+1
          LDN    0
          STDL   CM+2
          STDL   CM+3
          LRD    T5
          LDDL   T4
          ADC    RR+NRSBL+1
          CWDL   CM          WRITE REQUEST RESPONSE TO SCRATCH BUFFER
          LDN    NRSBL+7   BASE NRSB PLUS ADDITIONAL OS REQ WORD PLUS DISK ERROR SIZE
          STM    LLOG
          LDD    T4
          ADN    1
 PDE1.6   ADC    RR+NRSBL+1     BASE SIZE + HEADER WORD
          CWML   **,T2
 PDEB     EQU    *-1

*         EXIT AS SELECTED.

 PDE2     LDN    BC
          RJM    CLR
          LDN    0
          STD    ET
          LDML   RTP2        CHECK FOR STATUS
          SHN    21-16
          PJN    PDE3        IF STATUS NOT TO BE WRITTEN
          SHN    5-5-21+16+22
          LPN    77
          RJM    RTE         RETURN *2AP* ERROR STATUS
          UJN    PDE4        LOG THE ERROR

 PDE3     LDML   RTP2        CHECK FOR RETURN
          SHN    21-17
          MJP    PDE5        IF RETURN SELECTED
          LDC    0#200       SET ERROR
          STM    JOBF
 PDE4     SETDAN (EPUN,DAPF)
          SETFLG (BC.FL)
          LDN    4
          STD    ET
          LDN    1
          STM    RTP1
          CALL   LOG         LOG THE ERROR
          LJM    ERR1        PROCESS ERROR

 PDE5     SETDAN (EPUN,DAPF)
          SETFLG (BC.FL)
          LDN    4
          STD    ET
          LDN    1
          STM    RTP1
          CALL   LOG
          LJM    PDEX        RETURN

 PDEC     BSSZ   4           TEMPORARY WORD FOR ERROR STATUS
 RTE      SPACE  4,15
**        RTE - RETURN *2AP* ERROR STATUS.
*
*         ENTRY  (A) = OFFSET TO ERROR STATUS RETURN WORD.
*                (RTP1) = *2AP* FUNCTION NUMBER FOR WHICH ERROR OCCURRED.
*                (CALB+1) = *2AP* ERROR STATUS.
*
*         EXIT   TO *ERR10* TO RETURN NON-STANDARD RESPONSE.
*
*         USES   T1, W0 - W3.
*
*         CALLS  LRP, SPB.


 RTE      SUBR               ENTRY
          STML   RTEA
          RJM    LRP         LOAD REQUEST POINTER
          RJM    SPB         SET PP BOUNDS
          LDM    RTP1        *2AP* FUNCTION NUMBER
          STDL   W0
          LDML   CALB+1      *2AP* ERROR STATUS
          STDL   W1
          LDN    0           RFU FIELD
          STDL   W2
          STDL   W3
          RJM    LRP         LOAD REQUEST POINTER
          ADML   RTEA        RETURN ERROR STATUS
          CWDL   W0
          LDC    0#600       *2AP* ENCOUNTERED ERROR
          STML   JOBF
          LJM    RTEX        RETURN NON-STANDARD RESPONSE

 RTEA     BSS    1           ERROR STATUS
*         ENDX   CTP$DFT PROCESS DISK ERROR.
