          EJECT
*         CTEXT  DSI$930 DUMP LOAD IDLE PP
 DSIDLI   SPACE  4,10
***              THIS COMMON DECK CONTAINS THE S0/S0E-SPECIFIC VARIANTS OF
*         THE ROUTINES CONTAINED IN COMMON DECK *DSI$DUMP_LOAD_IDLE_PP*.
*         THE S0/S0E ARE SO DIFFERENT FROM OTHER IOU-S THAT HAVING SEPARATE
*         ROUTINES MAKES MORE SENSE THAN THE AMOUNT OF SPECIAL CASING
*         THAT WOULD OTHERWISE BE REQUIRED.
 DDP      SPACE  4,10
***       DDP - DEADSTART DUMP PP.
*
*         ENTRY  (A) = PP TYPE AND NUMBER.
*                (T1) = CHANNEL NUMBER ON DEADSTART PP ON.
*
*         EXIT   PP DOING BLOCK OUTPUT ON CHANNEL (T1).
*
*         USES   EC, RN, T1.


 DDP      SUBR               ENTRY/EXIT
          RJM    PPR
          LDD    T1
          STM    IDPA        SET CHANNEL NUMBER
          LDM    IDPA+5
          LPN    37
          LMC    140         SET *DUMP*/*IDLE*
          STM    IDPA+5
          RJM    PDC         PREPARE DEADSTART CHANNEL
          WRITMR IDPA        DEADSTART LOAD IOU
          UJN    DDPX        RETURN
 DLP      SPACE  4,10
***       DLP - DEADSTART LOAD PP.
*
*         ENTRY  (A) = PP TYPE AND NUMBER.
*                (T1) = CHANNEL NUMBER TO DEADSTART PP TO.
*
*         EXIT   PP DOING BLOCK INPUT ON CHANNEL (T1).
*
*         USES   EC, RN, T1.


 DLP      SUBR               ENTRY/EXIT
          RJM    PPR
          LDD    T1          SET CHANNEL NUMBER
          STM    IDPA
          LDM    IDPA+5
          LPN    37
          LMC    200         SET *LOAD*
          STM    IDPA+5
          RJM    PDC         PREPARE DEADSTART CHANNEL
          WRITMR IDPA        DEADSTART LOAD IOU
          UJN    DLPX        RETURN
 IDP      SPACE  4,10
**        IDP - IDLE PP.
*
*         ENTRY  (A) = PP TYPE AND NUMBER TO IDLE.
*
*         EXIT   PP IDLED.
*
*         USES   EC, RN.


 IDP      SUBR               ENTRY/EXIT
          RJM    PPR         PRESET PP
          LDN    16
          STM    IDPA        SET TO CHANNEL 16
          LDM    IDPA+5
          LPN    37
          LMN    40          SET *IDLE*
          STM    IDPA+5
          WRITMR IDPA        WRITE IOU REGISTER TO IDLE PP
          RJM    WFI         WAIT FOR IDLE
          NJN    IDP2        IF IDLE DID NOT OCCUR
 IDP1     UJN    IDPX        RETURN

*         AT THIS POINT THE PP DID NOT IDLE FROM JUST AN IDLE.
*         RETRY DOING A DUMP IDLE IN CASE THE PP IS HUNG.

 IDP2     LDM    IDPA+5
          LPN    37
          LMC    140         SET *DUMP*/*IDLE*
          STM    IDPA+5
          WRITMR IDPA
          RJM    WFI         WAIT FOR IDLE
          UJN    IDP1        RETURN

 IDPA     BSS    10
 PDC      SPACE  4,10
**        PDC - PREPARE DEADSTART CHANNEL.
*
*         ENTRY  (T1) = CHANNEL NUMBER TO DEADSTART PP ON.
*
*         EXIT   CHANNEL ACTIVE AND EMPTY.


 PDC      SUBR               ENTRY/EXIT
          LDC    DCNI+40
          ADD    T1
          STM    PCHA
          LMC    ACNI&DCNI
          STM    PCHB
 PCHA     DCN    CH+40       DEACTIVATE POSSIBLE ACTIVE CHANNEL
 PCH1     SBN    1
          PJN    PCH1        WAIT A BIT
 PCHB     ACN    CH+40       ACTIVATE EMPTY CHANNEL
          UJN    PDCX        RETURN
 PPR      SPACE  4,10
**        PPR - PRESET PP ROUTINES.
*
*         SETS *EC* AND STATUS REGISTER NUMBERS ACCORDINGLY.
*
*         ENTRY  (A) = PP TYPE AND NUMBER.
*
*         EXIT   (A) IS RESTORED TO ENTRY VALUE.


 PPR      SUBR               ENTRY/EXIT
          STML   PPTN        SAVE PP TYPE AND NUMBER
          LPN    37          ISOLATE PP NUMBER
          ADN    S0IEC       SET *EC* REGISTER NUMBER
          STM    PPRE
          ADN    S0IST-S0IEC SET STATUS-1 REGISTER NUMBER
          STM    PPRS
          LDML   I0CC        SET CONNECT CODE
          STDL   EC
          LDM    PPRE        SET REGISTER NUMBER
          STD    RN
          READMR IDPA
          LDML   PPTN        RESTORE PP TYPE AND NUMBER
          UJN    PPRX        RETURN

 PPRE     CON    0           *EC* REGISTER NUMBER
 PPRS     CON    0           STATUS-1 REGISTER NUMBER
 WFI      SPACE  4,10
**        WFI - WAIT FOR IDLE.
*
*         ENTRY  (IDPA - IDPA+7) = CURRENT *EC* REGISTER.
*
*         EXIT   (A) = 0 IF PP IS IDLED.
*
*         USES   RN, T1.


 WFI      SUBR               ENTRY/EXIT
          LDC    500D
          STDL   T1
          LDM    PPRS        SET STATUS-1 REGISTER NUMBER
          STD    RN
 WFI1     READMR WFIA        READ PP STATUS 1 REGISTER
          LDM    WFIA+2
          LPC    177
          LMC    177
          ZJN    WFI2        IF IDLED
          SODL   T1
          NJN    WFI1        IF NOT TIMED OUT
          LDN    77
 WFI2     UJN    WFIX        RETURN

 WFIA     BSSZ   10

*         END    DSI$930 DUMP LOAD IDLE PP
