Deck EXDRVR Part 003

7 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
05740  M00S05459.exdrvr  +++|      GOTO STRLBL[LLR$RS[0]];
05741  M00S05460.exdrvr  +++|
05742  M00S05461.exdrvr  +++|#
05743  M00S05462.exdrvr  +++|*     INITIAL DRIVER REQUEST STATE.
05744  M00S05463.exdrvr  +++|#
05745  M00S05464.exdrvr  +++|
05746  M00S05465.exdrvr  +++|STRINIT:
05747  M00S05466.exdrvr  +++|      IF LLR$MBH[0] EQ 0
05748  M00S05467.exdrvr  +++|      THEN                           # ** PATCH #
05749  M00S05468.exdrvr  +++|        BEGIN
05750  M00S05469.exdrvr  +++|        FE$RTN[0] = "STRCART0.";
05751  M00S05470.exdrvr  +++|        GOTO STRCART2;
05752  M00S05471.exdrvr  +++|        END
05753  M00S05472.exdrvr  +++|
05754  M00S05473.exdrvr  +++|      P<KWORD> = LOC(LLR$KWORDS[0]);
05755  M00S05474.exdrvr  +++|      IF LLR$UCPABT[0]               ##
05756  M00S05475.exdrvr  +++|        AND NOT KW$COMP[0]           # K-DISPLAY MSG PENDING #
05757  M00S05476.exdrvr  +++|      THEN                           # IGNORE UCP ABORT #
05758  M00S05477.exdrvr  +++|        BEGIN  # EXIT #
05759  M00S05478.exdrvr  +++|        RETURN;                      # AVOID ISSUING INFINITE STORES #
05760  M00S05479.exdrvr  +++|        END  # EXIT #
05761  M00S05480.exdrvr  +++|
Line S00068 Modification History
M01 (Added by) mse1
Seq #  *Modification Id* Act 
----------------------------+
05762  M01S00068.mse1    +++|      IF LLR$SCU[0] EQ 0             # NO CHANNEL/CU SAVED #
05763  M01S00069.mse1    +++|        AND LLR$DRFUL[0]             # ERROR OCCURRED #
05764  M01S00070.mse1    +++|      THEN                           # DATA ERROR AFTER GOOD REW/UNL #
05765  M01S00071.mse1    +++|        BEGIN  # SAVE #
05766  M01S00072.mse1    +++|        LLR$SCIF[0] = LLR$CIF[0];    # SAVE TO DECIDE ON RETRY #
05767  M01S00073.mse1    +++|        LLR$SCU[0] = LLR$CU[0];
05768  M01S00074.mse1    +++|        END  # SAVE #
05769  M01S00075.mse1    +++|
05770  M00S05481.exdrvr  +++|      LLR$SDR[0] = LLR$DR[0];        # IN CASE EJECTING CARTRIDGE #
05771  M00S05482.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
05772  M00S05483.exdrvr  +++|      P<UDT$MSG> = P<MBFHDR> + 1;
05773  M00S05484.exdrvr  +++|      IF MBF$WORD[0] NQ 0
05774  M00S05485.exdrvr  +++|      THEN                           # LAST MESSAGE NOT PROCESSED #
05775  M00S05486.exdrvr  +++|        BEGIN  # CHECK #
05776  M00S05487.exdrvr  +++|        IF MS$MSG[0] GQ HFC$MVLMVR   # MOUNT-VOLUME #
05777  M00S05488.exdrvr  +++|          AND MS$MSG[0] LQ HFC$MVLMNW
05778  M00S05489.exdrvr  +++|        THEN                         # FORCED STORE ON DATA TRANSFER #
05779  M00S05490.exdrvr  +++|          BEGIN  # OK #
05780  M00S05491.exdrvr  +++|          MBF$WORD[0] = 0;           # PRESET HEADER #
05781  M00S05492.exdrvr  +++|          MS$MSG[0] = HFC$STCRNF;    # FORCE REWIND/UNLOAD #
05782  M00S05493.exdrvr  +++|          END  # OK #
05783  M00S05494.exdrvr  +++|
05784  M00S05495.exdrvr  +++|        ELSE                         # SOFTWARE ERROR #
05785  M00S05496.exdrvr  +++|          BEGIN  # ABORT #
05786  M00S05497.exdrvr  +++|          FE$RTN[0] = "STRCART1.";
05787  M00S05498.exdrvr  +++|          GOTO STRCART2;
05788  M00S05499.exdrvr  +++|          END  # ABORT #
05789  M00S05500.exdrvr  +++|
05790  M00S05501.exdrvr  +++|        END  # CHECK #
05791  M00S05502.exdrvr  +++|
05792  M00S05503.exdrvr  +++|      ELSE                           # ISSUE NORMAL STORE #
05793  M00S05504.exdrvr  +++|        BEGIN  # OK #
Line S05505 Modification History
M01 (Removed by) mse1
Seq #  *Modification Id* Act 
----------------------------+
05794  M01S05505.mse1    ---|        IF LLR$LDERR[0]              # DDE ON LOAD #
05795  M01S05506.mse1    ---|        THEN                         # TURN OFF DRD ONLY #
05796  M01S05507.mse1    ---|          BEGIN  # OFF #
05797  M01S05508.mse1    ---|          GOTO STRCART5;
05798  M01S05509.mse1    ---|          END  # OFF #
05799  M01S05510.mse1    ---|
05800  M00S05511.exdrvr  +++|        MS$MSG[0] = HFC$STCRNV;
05801  M00S05512.exdrvr  +++|        END  # OK #
05802  M00S05513.exdrvr  +++|
05803  M00S05514.exdrvr  +++|      MBF$SAVE[0] = SAVEMOST;
05804  M00S05515.exdrvr  +++|      LLR$RS[0] = PROCST"CONT1";
05805  M00S05516.exdrvr  +++|
05806  M00S05517.exdrvr  +++|#
05807  M00S05518.exdrvr  +++|*     ISSUE M860 MESSAGE TO STORE CARTRIDGE.
05808  M00S05519.exdrvr  +++|#
05809  M00S05520.exdrvr  +++|
05810  M00S05521.exdrvr  +++|STRCUBE:
05811  M00S05522.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
05812  M00S05523.exdrvr  +++|      SENDMSG;                       # SEND M860 MESSAGE #
05813  M00S05524.exdrvr  +++|      IF MBF$SBADDR[0] EQ 0          ##
05814  M00S05525.exdrvr  +++|        AND LLR$DR[0] EQ RESPTYP4"OK4"  # GOOD HARDWARE #
05815  M00S05526.exdrvr  +++|      THEN                           # RESPONSE NOT YET RECEIVED #
05816  M00S05527.exdrvr  +++|        BEGIN  # RETRY #
05817  M00S05528.exdrvr  +++|        RETURN;
05818  M00S05529.exdrvr  +++|        END  # RETRY #
05819  M00S05530.exdrvr  +++|
Line S00076 Modification History
M01 (Added by) mse1
Seq #  *Modification Id* Act 
----------------------------+
05820  M01S00076.mse1    +++|      IF MS$RETCODE[0] EQ HRC$CSNERR # CSN/DRD IN USE #
05821  M01S00077.mse1    +++|        AND MS$MSG[0] EQ HFC$STCRNV  # NORMAL STORE #
05822  M01S00078.mse1    +++|      THEN                           # MAY BE *ACQUIRE* ERROR RCVY #
05823  M01S00079.mse1    +++|        BEGIN  # CHECK #
05824  M01S00080.mse1    +++|        IF NOT LLR$LDERR[0]
05825  M01S00081.mse1    +++|        THEN                         # DRIVER ERROR #
05826  M01S00082.mse1    +++|          BEGIN  # ABORT #
05827  M01S00083.mse1    +++|          FE$RTN[0] = "STRCART2.";
05828  M01S00084.mse1    +++|          GOTO STRCART2;
05829  M01S00085.mse1    +++|          END  # ABORT #
05830  M01S00086.mse1    +++|
05831  M01S00087.mse1    +++|        ELSE                         # CARTRIDGE HAD LOADED OK #
05832  M01S00088.mse1    +++|          BEGIN  # IGNORE #
05833  M01S00089.mse1    +++|          MS$RETCODE[0] = 0;         # DRD IN USE BY THIS LLRQ #
05834  M01S00090.mse1    +++|          END  # IGNORE #
05835  M01S00091.mse1    +++|
05836  M01S00092.mse1    +++|        END  # CHECK #
05837  M01S00093.mse1    +++|
05838  M00S05531.exdrvr  +++|      SM$ACCBUSY[LLR$SMO[0]] = FALSE;# SM ARM NOT IN USE #
05839  M00S05532.exdrvr  +++|      IF LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"
05840  M00S05533.exdrvr  +++|      THEN                           # HARDWARE PROBLEM #
05841  M00S05534.exdrvr  +++|        BEGIN  # EXIT #
05842  M00S05535.exdrvr  +++|        IF LLR$SDR[0] EQ 0
05843  M00S05536.exdrvr  +++|        THEN                         # SAVE THIS ERROR FOR EXEC #
05844  M00S05537.exdrvr  +++|          BEGIN  # SAVE #
05845  M00S05538.exdrvr  +++|          LLR$SDR[0] = LLR$DR[0];
05846  M00S05539.exdrvr  +++|          END  # SAVE #
05847  M00S05540.exdrvr  +++|
05848  M00S05541.exdrvr  +++|        GOTO STRCART3;               # ASSUME CARTRIDGE NOT STORED #
05849  M00S05542.exdrvr  +++|        END  # EXIT #
05850  M00S05543.exdrvr  +++|
05851  M00S05544.exdrvr  +++|      IF MS$RETCODE[0] EQ HRC$CSNERR  # FORCED STORE VOLUME UNLOADED #
05852  M00S05545.exdrvr  +++|        OR (MS$RETCODE[0] EQ 0       # NO M860 ERROR #
Line S05546 Modification History
M01 (Removed by) exdrvr3
Seq #  *Modification Id* Act 
----------------------------+
05853  M01S05546.exdrvr3 ---|        AND (LLR$RQI[0] EQ REQNAME"RQILABL"  # SSLABEL HANDLES EJECTS #
Line S00018 Modification History
M01 (Added by) exdrvr3
Seq #  *Modification Id* Act 
----------------------------+
05854  M01S00018.exdrvr3 +++|        AND ((LLR$RQI[0] EQ REQNAME"RQILABL"  # SSLABEL HANDLES EJECTS #
05855  M01S00019.exdrvr3 +++|        AND NOT LLR$UCPABT[0])       # SSLABEL MUST BE UP #
05856  M00S05547.exdrvr  +++|        OR LLR$Y[0] NQ SM$EXIT$TY    # CARTRIDGE NOT EJECTED #
05857  M00S05548.exdrvr  +++|        OR LLR$Z[0] NQ SM$TY$Z))
05858  M00S05549.exdrvr  +++|      THEN                           # DO NOT ISSUE K-DISPLAY MSG #
05859  M00S05550.exdrvr  +++|        BEGIN  # MATRIX #
05860  M00S05551.exdrvr  +++|        GOTO STRCART3;
05861  M00S05552.exdrvr  +++|        END  # MATRIX #
05862  M00S05553.exdrvr  +++|
05863  M00S05554.exdrvr  +++|      IF MS$RETCODE[0] EQ HRC$CELEMP  # CELL FULL #
05864  M00S05555.exdrvr  +++|        AND NOT (LLR$Y[0] EQ SM$EXIT$TY  # NOT OUTPUT TRAY FULL #
05865  M00S05556.exdrvr  +++|        AND LLR$Z[0] EQ SM$TY$Z)
05866  M00S05557.exdrvr  +++|      THEN                           # TURN SM OFF IN UDT #
05867  M00S05558.exdrvr  +++|        BEGIN  # OFF #
05868  M00S05559.exdrvr  +++|        P<PTHSTAT> = LOC(SM$STS[LLR$SMO[0]]);
05869  M00S05560.exdrvr  +++|        SMST = SMST1;                # ASSUME 2ND CU #
05870  M00S05561.exdrvr  +++|        IF LLR$CU[0] EQ SM$CUO0[LLR$SMO[0]]
05871  M00S05562.exdrvr  +++|        THEN                         # RESET INDEX TO 1ST CU #
05872  M00S05563.exdrvr  +++|          BEGIN  # RESET #
05873  M00S05564.exdrvr  +++|          SMST = SMST0;
05874  M00S05565.exdrvr  +++|          END  # RESET #
05875  M00S05566.exdrvr  +++|
05876  M00S05567.exdrvr  +++|        PATHBIT(SMST,PATH$DF"U$ON") = OFF;
Line S05568 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
05877  M01S05568.exdrvr2 ---|        GOTO STRCARTA;               # FIXES COMPILER BUG #
05878  M01S05569.exdrvr2 ---|
05879  M01S05570.exdrvr2 ---|STRCARTA:
05880  M01S05571.exdrvr2 ---|        STSP = SM$STS0[LLR$SMO[0]];  # RESET GLOBAL FLAGS #
05881  M01S05572.exdrvr2 ---|        STSS = SM$STS1[LLR$SMO[0]];
05882  M01S05573.exdrvr2 ---|        SM$FLAG[LLR$SMO[0]] = STSP LOR STSS;
Line S00157 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
05883  M01S00157.exdrvr2 +++|
05884  M01S00158.exdrvr2 +++|                                               CONTROL REACTIVE;
05885  M01S00159.exdrvr2 +++|
05886  M01S00160.exdrvr2 +++|        SM$FLAG[LLR$SMO[0]] = SM$STS0[LLR$SMO[0]] LOR  # RESET GLOBALS #
05887  M01S00161.exdrvr2 +++|                              SM$STS1[LLR$SMO[0]];
05888  M01S00162.exdrvr2 +++|
05889  M01S00163.exdrvr2 +++|                                               CONTROL INERT;
05890  M01S00164.exdrvr2 +++|
05891  M00S05574.exdrvr  +++|        END  # OFF #
05892  M00S05575.exdrvr  +++|
05893  M00S05576.exdrvr  +++|#
05894  M00S05577.exdrvr  +++|*     ISSUE A K-DISPLAY MESSAGE INFORMING THE OPERATOR THAT
05895  M00S05578.exdrvr  +++|*     EITHER A CARTRIDGE WAS EJECTED, THE OUTPUT TRAY WAS
05896  M00S05579.exdrvr  +++|*     FULL, OR A MATRIX CELL WAS FULL.
05897  M00S05580.exdrvr  +++|#
05898  M00S05581.exdrvr  +++|
05899  M00S05582.exdrvr  +++|      P<KWORD> = LOC(LLR$KWORDS[0]);
05900  M00S05583.exdrvr  +++|      KW$WORD[0] = 0;
05901  M00S05584.exdrvr  +++|      KW$LINE1[0] = KM"KM2";         # PRESET MESSAGE ORDINALS #
05902  M00S05585.exdrvr  +++|      KW$LINE2[0] = KM"KM9";         # ASSUME CARTRIDGE EJECTED #
05903  M00S05586.exdrvr  +++|      KW$IC[0] = TRUE;               # SET IMMEDIATE COMPLETION #
05904  M00S05587.exdrvr  +++|      KW$DF[0] = TRUE;               # ISSUE TO JOB DAYFILE #
05905  M00S05588.exdrvr  +++|      IF LLR$CSNT[0] NQ 0            # *TDAM* REQUEST #
05906  M00S05589.exdrvr  +++|        AND (LLR$SDR[0] EQ RESPTYP4"UNK$CART"  # UNEXPECTED LABEL #
05907  M00S05590.exdrvr  +++|        OR LLR$SDR[0] EQ RESPTYP4"CART$LB$ERR")
05908  M00S05591.exdrvr  +++|      THEN                           # INDICATE LABEL ERROR IN MESSAGE #
05909  M00S05592.exdrvr  +++|        BEGIN  # RESET #
05910  M00S05593.exdrvr  +++|        KW$LINE2[0] = KM"KM8";
05911  M00S05594.exdrvr  +++|        KW$LINE3[0] = KM"KM9";       # CARTRIDGE EJECTED #
05912  M00S05595.exdrvr  +++|        END  # RESET #
05913  M00S05596.exdrvr  +++|
05914  M00S05597.exdrvr  +++|      IF MS$RETCODE[0] EQ HRC$CELEMP
05915  M00S05598.exdrvr  +++|      THEN                           # CELL WAS FULL #
05916  M00S05599.exdrvr  +++|        BEGIN  # FULL #
05917  M00S05600.exdrvr  +++|        KW$LINE2[0] = KM"KM11";      # ASSUME MATRIX CELL FULL #
05918  M00S05601.exdrvr  +++|        KW$LINE3[0] = KM"KM16";      # SM TURNED OFF #
05919  M00S05602.exdrvr  +++|        IF LLR$Y[0] EQ SM$EXIT$TY    ##
05920  M00S05603.exdrvr  +++|          AND LLR$Z[0] EQ SM$TY$Z
05921  M00S05604.exdrvr  +++|        THEN                         # OUTPUT TRAY IS FULL #
05922  M00S05605.exdrvr  +++|          BEGIN  # TRAY #
05923  M00S05606.exdrvr  +++|          KW$LINE2[0] = KM"KM19";
05924  M00S05607.exdrvr  +++|          KW$LINE3[0] = 0;           # SM LEFT ON #
05925  M00S05608.exdrvr  +++|          KW$IC[0] = FALSE;          # WAIT FOR OPERATOR RESPONSE #
05926  M00S05609.exdrvr  +++|          KW$DF[0] = FALSE;
05927  M00S05610.exdrvr  +++|          END  # TRAY #
05928  M00S05611.exdrvr  +++|
05929  M00S05612.exdrvr  +++|        END  # FULL #
05930  M00S05613.exdrvr  +++|
05931  M00S05614.exdrvr  +++|      KW$RPGO[0] = TRUE;             # ALLOW GO RESPONSE #
05932  M00S05615.exdrvr  +++|      KP$EQ = UD$ESTO[LLR$CU[0]];    # PRESET MESSAGE PARAMETERS #
05933  M00S05616.exdrvr  +++|      P<MWBTMP> = LOC(UD$CAMF[LLR$CU[0]]);  # LOCATE READ FET #
05934  M00S05617.exdrvr  +++|      P<FETMWB> = MWB$ADDR[LLR$CIF[0]];
05935  M00S05618.exdrvr  +++|      P<FETMRA> = P<FETMWB> - 1;
05936  M00S05619.exdrvr  +++|      P<FETMRB> = FRA$MRBADR[0];
05937  M00S05620.exdrvr  +++|      KP$CN = FMR$CHAN[0];
05938  M00S05621.exdrvr  +++|      KP$DT = SM$ID[LLR$SMO[0]];
05939  M00S05622.exdrvr  +++|      KP$YA = LLR$Y[0];              # SET FULL CELL #
05940  M00S05623.exdrvr  +++|      KP$ZA = LLR$Z[0];
05941  M00S05624.exdrvr  +++|      KREQ(LOC(KWORD),KLINK);        # SEND K-DISPLAY REQUEST #
05942  M00S05625.exdrvr  +++|
05943  M00S05626.exdrvr  +++|STRCART3:
Line S05627 Modification History
M01 (Removed by) mse1
Seq #  *Modification Id* Act 
----------------------------+
05944  M01S05627.mse1    ---|      IF MS$RETCODE[0] EQ HRC$CSNERR
05945  M01S05628.mse1    ---|      THEN                           # RETRY FORCED AS NORMAL STORE #
Line S00094 Modification History
M01 (Added by) mse1
Seq #  *Modification Id* Act 
----------------------------+
05946  M01S00094.mse1    +++|      IF MS$RETCODE[0] EQ HRC$CSNERR # RETRY FORCED AS NORMAL STORE #
05947  M01S00095.mse1    +++|        OR LLR$LDERR[0]              # RCVY FROM *ACQ* ERROR #
05948  M01S00096.mse1    +++|        OR LLR$CSNT[0] EQ 0          # ERROR RELATED TO UTILITY #
05949  M01S00097.mse1    +++|      THEN                           # BUFFERED LOG NOT NEEDED #
05950  M00S05629.exdrvr  +++|        BEGIN  # SKIP #
05951  M00S05630.exdrvr  +++|        GOTO STRCART5;
05952  M00S05631.exdrvr  +++|        END  # SKIP #
05953  M00S05632.exdrvr  +++|
Line S05633 Modification History
M01 (Removed by) mse1
Seq #  *Modification Id* Act 
----------------------------+
05954  M01S05633.mse1    ---|      IF LLR$CSNT[0] EQ 0            # BUFFERED LOG NOT NEEDED #
05955  M01S05634.mse1    ---|      THEN                           # PROCESSING COMPLETE #
05956  M01S05635.mse1    ---|        BEGIN  # SKIP #
05957  M01S05636.mse1    ---|        GOTO STRCART5;
05958  M01S05637.mse1    ---|        END  # SKIP #
05959  M01S05638.mse1    ---|
05960  M00S05639.exdrvr  +++|      IF KW$LINE2[0] EQ KM"KM19"     # OUTPUT TRAY FULL #
05961  M00S05640.exdrvr  +++|        AND NOT KW$COMP[0]
05962  M00S05641.exdrvr  +++|      THEN                           # RETRY STORE REQUEST #
05963  M00S05642.exdrvr  +++|        BEGIN  # EXIT #
05964  M00S05643.exdrvr  +++|        GOTO STRCART4;
05965  M00S05644.exdrvr  +++|        END  # EXIT #
05966  M00S05645.exdrvr  +++|
05967  M00S05646.exdrvr  +++|      IF LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"
05968  M00S05647.exdrvr  +++|      THEN                           # BUFFERED LOG NOT NEEDED #
05969  M00S05648.exdrvr  +++|        BEGIN  # SKIP #
05970  M00S05649.exdrvr  +++|        GOTO STRCART5;               # TREAT DRD AS FULL #
05971  M00S05650.exdrvr  +++|        END  # SKIP #
05972  M00S05651.exdrvr  +++|
05973  M00S05652.exdrvr  +++|      IF MBF$SBADDR[0] NQ 0
05974  M00S05653.exdrvr  +++|      THEN                           # CLEAR SBT ENTRY #
05975  M00S05654.exdrvr  +++|        BEGIN  # CLEAR #
05976  M00S05655.exdrvr  +++|        P<UDT$MSG> = MBF$SBADDR[0];
05977  M00S05656.exdrvr  +++|        ZFILL(UDT$MSG,MSGLT);
05978  M00S05657.exdrvr  +++|        END  # CLEAR #
05979  M00S05658.exdrvr  +++|
05980  M00S05659.exdrvr  +++|      MBF$WORD[0] = 0;               # CLEAR MESSAGE STATUS #
05981  M00S05660.exdrvr  +++|      MBF$SAVE[0] = SAVEPART;
05982  M00S05661.exdrvr  +++|      P<UDT$MSG> = P<MBFHDR> + 1;
05983  M00S05662.exdrvr  +++|      MS$MSG[0] = HFC$DBLD0;         # SET *DUMP BUF LOG* FUNCTION #
05984  M00S05663.exdrvr  +++|      LLR$RS[0] = PROCST"CONT2";
05985  M00S05664.exdrvr  +++|
05986  M00S05665.exdrvr  +++|#
05987  M00S05666.exdrvr  +++|*     ISSUE M860 MESSAGE TO DUMP BUFFERED LOG.
05988  M00S05667.exdrvr  +++|#
05989  M00S05668.exdrvr  +++|
05990  M00S05669.exdrvr  +++|STRBUFL:
05991  M00S05670.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
05992  M00S05671.exdrvr  +++|      SENDMSG;                       # SEND M860 MESSAGE #
05993  M00S05672.exdrvr  +++|      IF MBF$SBADDR[0] EQ 0          ##
05994  M00S05673.exdrvr  +++|        AND LLR$DR[0] EQ RESPTYP4"OK4"
05995  M00S05674.exdrvr  +++|      THEN                           # RESPONSE NOT YET RECEIVED #
05996  M00S05675.exdrvr  +++|        BEGIN  # RETRY #
05997  M00S05676.exdrvr  +++|        RETURN;
05998  M00S05677.exdrvr  +++|        END  # RETRY #
05999  M00S05678.exdrvr  +++|
06000  M00S05679.exdrvr  +++|      LLR$DR[0] = RESPTYP4"OK4";     # DO NOT RETURN ERRORS #
06001  M00S05680.exdrvr  +++|
06002  M00S05681.exdrvr  +++|#
06003  M00S05682.exdrvr  +++|*     TURN OFF THE DRD IF AN M860 RESPONSE TO
06004  M00S05683.exdrvr  +++|*     A DRD MESSAGE WAS A DEVICE DRIVER ERROR, OR THE RESPONSE
06005  M00S05684.exdrvr  +++|*     TIMED OUT.
06006  M00S05685.exdrvr  +++|#
06007  M00S05686.exdrvr  +++|
06008  M00S05687.exdrvr  +++|STRCART5:
06009  M00S05688.exdrvr  +++|      IF MS$RETCODE[0] EQ HRC$CSNERR  # RETRY AS NORMAL STORE FIRST #
06010  M00S05689.exdrvr  +++|        OR NOT LLR$DRFUL[0]
06011  M00S05690.exdrvr  +++|      THEN                           # DO NOT TURN OFF DRD #
06012  M00S05691.exdrvr  +++|        BEGIN  # OK #
06013  M00S05692.exdrvr  +++|        GOTO STRCART4;
06014  M00S05693.exdrvr  +++|        END  # OK #
06015  M00S05694.exdrvr  +++|
Line S00098 Modification History
M01 (Added by) mse1
Seq #  *Modification Id* Act 
----------------------------+
06016  M01S00098.mse1    +++|#
06017  M01S00099.mse1    +++|*     DECIDE IF RETRY COUNT AND RETRY TIME JUSTIFY TURNING DRD OFF.
06018  M01S00100.mse1    +++|#
06019  M01S00101.mse1    +++|
06020  M01S00102.mse1    +++|      P<MWBTMP> = LOC(UD$CAMF[LLR$SCU[0]]);  # LOCATE BAD CHAN FETS #
06021  M01S00103.mse1    +++|      P<FETMWB> = MWB$ADDR[LLR$SCIF[0]];
06022  M01S00104.mse1    +++|      P<FETMRA> = P<FETMWB> - 1;
06023  M01S00105.mse1    +++|      P<FETMRB> = FRA$MRBADR[0];
06024  M01S00106.mse1    +++|      IF FMW$ERROR[0]                # ORIGINALLY A CHANNEL ERROR #
06025  M01S00107.mse1    +++|      THEN                           # RETRY CNT ALREADY INCREMENTED #
06026  M01S00108.mse1    +++|        BEGIN  # CLEAR #
06027  M01S00109.mse1    +++|        FMW$ERROR[0] = FALSE;        # IN CASE OF ANOTHER CHAN ERR #
06028  M01S00110.mse1    +++|        END  # CLEAR #
06029  M01S00111.mse1    +++|
06030  M01S00112.mse1    +++|      ELSE                           # ONLY A DRD ERROR #
06031  M01S00113.mse1    +++|        BEGIN  # BUMP #
06032  M01S00114.mse1    +++|        FMW$RCNT[0] = FMW$RCNT[0] + 1;  # RECORD ERROR #
06033  M01S00115.mse1    +++|        END  # BUMP #
06034  M01S00116.mse1    +++|
06035  M01S00117.mse1    +++|      RTIME(RTIMESTAT);
06036  M01S00118.mse1    +++|      IF (FMW$RCNT[0] EQ 1           # START OF ERROR SEQUENCE #
06037  M01S00119.mse1    +++|        AND FMW$RCNT[0] LS MAXCHERR)  ##
06038  M01S00120.mse1    +++|        OR (FMW$RCNT[0] GR 1         # RETRY TIME EXPIRED #
06039  M01S00121.mse1    +++|        AND RTIMSECS[0] GQ FMW$RTIME[0])
06040  M01S00122.mse1    +++|      THEN                           # RESET CHAN FOR NEW INTERVAL #
06041  M01S00123.mse1    +++|        BEGIN  # RESET #
06042  M01S00124.mse1    +++|        FMW$RCNT[0] = 1;             # IN CASE INTERVAL EXPIRED #
06043  M01S00125.mse1    +++|        FMW$RTIME[0] = RTIMSECS[0] + MAXCHERRTM;  # RESET RETRY TIME #
06044  M01S00126.mse1    +++|        END  # RESET #
06045  M01S00127.mse1    +++|
Line S00165 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
06046  M01S00165.exdrvr2 +++|      IF LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"
06047  M01S00166.exdrvr2 +++|      THEN                           # DRD CANNOT BE REUSED #
06048  M01S00167.exdrvr2 +++|        BEGIN  # OFF #
06049  M01S00168.exdrvr2 +++|        FMW$RCNT[0] = MAXCHERR;      # 7990 WOULD ABORT A RE-ACQUIRE #
06050  M01S00169.exdrvr2 +++|        END  # OFF #
06051  M01S00170.exdrvr2 +++|
Line S00128 Modification History
M01 (Added by) mse1
Seq #  *Modification Id* Act 
----------------------------+
06052  M01S00128.mse1    +++|      IF (FMW$RCNT[0] GR 1           ##
06053  M01S00129.mse1    +++|        AND FMW$RCNT[0] GQ MAXCHERR  ##
06054  M01S00130.mse1    +++|        AND RTIMSECS[0] GQ FMW$RTIME[0])  # ERROR SEQUENCE EXPIRED #
06055  M01S00131.mse1    +++|        OR FMW$RCNT[0] LS MAXCHERR   # SEQUENCE NOT COMPLETE #
06056  M01S00132.mse1    +++|      THEN                           # DRD NOT READY TO BE TURNED OFF #
06057  M01S00133.mse1    +++|        BEGIN  # ON #
06058  M01S00134.mse1    +++|        GOTO STRCART4;               # SKIP TURNING OFF DRD #
06059  M01S00135.mse1    +++|        END  # ON #
06060  M01S00136.mse1    +++|
06061  M01S00137.mse1    +++|      FMW$RCNT[0] = 0;               # PRESET IN CASE OF MORE ERRORS #
06062  M01S00138.mse1    +++|
06063  M01S00139.mse1    +++|#
06064  M01S00140.mse1    +++|*     PRESET UDT TO TURN OFF DRD.
06065  M01S00141.mse1    +++|#
06066  M01S00142.mse1    +++|
06067  M00S05695.exdrvr  +++|      DRVRACTIVE = TRUE;             # IN CASE DRD MSG TIMED OUT #
06068  M00S05696.exdrvr  +++|      P<PTHSTAT> = LOC(D1$ST[LLR$SMO[0]]);  # ASSUME LOWER DRD #
06069  M00S05697.exdrvr  +++|      IF LLR$DRD[0] EQ 0
06070  M00S05698.exdrvr  +++|      THEN                           # UPPER DRD GOING OFF #
06071  M00S05699.exdrvr  +++|        BEGIN  # RESET #
06072  M00S05700.exdrvr  +++|        P<PTHSTAT> = LOC(D0$ST[LLR$SMO[0]]);
06073  M00S05701.exdrvr  +++|        END  # RESET #
06074  M00S05702.exdrvr  +++|
06075  M00S05703.exdrvr  +++|      DRST = DRST1;                  # ASSUME 2ND CU #
06076  M00S05704.exdrvr  +++|      IF LLR$CU[0] EQ SM$CUO0[LLR$SMO[0]]
06077  M00S05705.exdrvr  +++|      THEN                           # RESET DRD INDEX TO 1ST CU #
06078  M00S05706.exdrvr  +++|        BEGIN  # RESET #
06079  M00S05707.exdrvr  +++|        DRST = DRST0;
06080  M00S05708.exdrvr  +++|        END  # RESET #
06081  M00S05709.exdrvr  +++|
06082  M00S05710.exdrvr  +++|      PATHBIT(DRST,PATH$DF"U$ON") = OFF;
06083  M00S05711.exdrvr  +++|      PATHBIT(DRST,PATH$DF"U$CU$ACK") = ON;
06084  M00S05712.exdrvr  +++|      PATHBIT(DRST,PATH$DF"U$DONE") = OFF;
06085  M00S05713.exdrvr  +++|
06086  M00S05714.exdrvr  +++|                                               CONTROL REACTIVE;
06087  M00S05715.exdrvr  +++|
06088  M00S05716.exdrvr  +++|      IF LLR$DRD[0] EQ 0
06089  M00S05717.exdrvr  +++|      THEN                           # STOP LOADS TO UPPER DRD #
06090  M00S05718.exdrvr  +++|        BEGIN  # DRD 0 #
06091  M00S05719.exdrvr  +++|        D0$FLAG[LLR$SMO[0]] = D0$STSP[LLR$SMO[0]] LOR
06092  M00S05720.exdrvr  +++|                                D0$STSS[LLR$SMO[0]];
06093  M00S05721.exdrvr  +++|        END  # DRD 0 #
06094  M00S05722.exdrvr  +++|
06095  M00S05723.exdrvr  +++|      ELSE                           # STOP LOADS TO LOWER DRD #
06096  M00S05724.exdrvr  +++|        BEGIN  # DRD 1 #
06097  M00S05725.exdrvr  +++|        D1$FLAG[LLR$SMO[0]] = D1$STSP[LLR$SMO[0]] LOR
06098  M00S05726.exdrvr  +++|                                D1$STSS[LLR$SMO[0]];
06099  M00S05727.exdrvr  +++|        END  # DRD 1 #
06100  M00S05728.exdrvr  +++|
06101  M00S05729.exdrvr  +++|                                               CONTROL INERT;
06102  M00S05730.exdrvr  +++|
06103  M00S05731.exdrvr  +++|      LLR$SSD[0] = LLR$D$SMO[0];     # SAVE SM/DRD ORDINALS #
06104  M00S05732.exdrvr  +++|      LLR$RS[0] = PROCST"CONT3";
06105  M00S05733.exdrvr  +++|      RETURN;
06106  M00S05734.exdrvr  +++|
06107  M00S05735.exdrvr  +++|#
06108  M00S05736.exdrvr  +++|*     ISSUE A K-DISPLAY MESSAGE STATING THAT THE DRD WAS
06109  M00S05737.exdrvr  +++|*     TURNED OFF.
06110  M00S05738.exdrvr  +++|#
06111  M00S05739.exdrvr  +++|
06112  M00S05740.exdrvr  +++|STRDRDO:
06113  M00S05741.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
06114  M00S05742.exdrvr  +++|      P<UDT$MSG> = P<MBFHDR> + 1;
06115  M00S05743.exdrvr  +++|      LLR$D$SMO[0] = LLR$SSD[0];     # RESTORE SM/DRD ORDINALS #
06116  M00S05744.exdrvr  +++|      P<KWORD> = LOC(LLR$KWORDS[0]);
06117  M00S05745.exdrvr  +++|      KW$WORD[0] = 0;
06118  M00S05746.exdrvr  +++|      KW$LINE1[0] = KM"KM3";         # PRESET MESSAGE ORDINALS #
06119  M00S05747.exdrvr  +++|      KW$LINE2[0] = KM"KM16";
06120  M00S05748.exdrvr  +++|      KW$IC[0] = TRUE;               # SET IMMEDIATE COMPLETION #
06121  M00S05749.exdrvr  +++|      KW$DF[0] = TRUE;               # SEND TO JOB DAYFILE #
06122  M00S05750.exdrvr  +++|      KW$RPGO[0] = TRUE;             # ALLOW GO RESPONSE #
06123  M00S05751.exdrvr  +++|      KP$EQ = UD$ESTO[LLR$CU[0]];    # PRESET MESSAGE PARAMETERS #
06124  M00S05752.exdrvr  +++|      P<MWBTMP> = LOC(UD$CAMF[LLR$CU[0]]);  # LOCATE READ FET #
06125  M00S05753.exdrvr  +++|      P<FETMWB> = MWB$ADDR[LLR$CIF[0]];
06126  M00S05754.exdrvr  +++|      P<FETMRA> = P<FETMWB> - 1;
06127  M00S05755.exdrvr  +++|      P<FETMRB> = FRA$MRBADR[0];
06128  M00S05756.exdrvr  +++|      KP$CN = FMR$CHAN[0];
06129  M00S05757.exdrvr  +++|      KP$DT = SM$ID[LLR$SMO[0]];
06130  M00S05758.exdrvr  +++|      KP$ID = D1$SUN[LLR$SMO[0]];    # ASSUME LOWER DRD #
06131  M00S05759.exdrvr  +++|      IF LLR$DRD[0] EQ 0
06132  M00S05760.exdrvr  +++|      THEN                           # LOWER DRD HAD ERROR #
06133  M00S05761.exdrvr  +++|        BEGIN  # RESET #
06134  M00S05762.exdrvr  +++|        KP$ID = D0$SUN[LLR$SMO[0]];
06135  M00S05763.exdrvr  +++|        END  # RESET #
06136  M00S05764.exdrvr  +++|
06137  M00S05765.exdrvr  +++|      KREQ(LOC(KWORD),KLINK);        # SEND K-DISPLAY REQUEST #
06138  M00S05766.exdrvr  +++|
06139  M00S05767.exdrvr  +++|STRCART4:
06140  M00S05768.exdrvr  +++|      IF LLR$DRD[0] EQ 0
06141  M00S05769.exdrvr  +++|      THEN                           # UPPER DRD EMPTY #
06142  M00S05770.exdrvr  +++|        BEGIN  # CLEAR #
06143  M00S05771.exdrvr  +++|        D0$FULL[LLR$SMO[0]] = FALSE;
06144  M00S05772.exdrvr  +++|        END  # CLEAR #
06145  M00S05773.exdrvr  +++|
06146  M00S05774.exdrvr  +++|      ELSE                           # LOWER DRD EMPTY #
06147  M00S05775.exdrvr  +++|        BEGIN  # CLEAR #
06148  M00S05776.exdrvr  +++|        D1$FULL[LLR$SMO[0]] = FALSE;
06149  M00S05777.exdrvr  +++|        END  # CLEAR #
06150  M00S05778.exdrvr  +++|
06151  M00S05779.exdrvr  +++|      IF LLR$SDR[0] NQ 0
06152  M00S05780.exdrvr  +++|      THEN                           # RESTORE ORIGINAL ERROR FOR EXEC #
06153  M00S05781.exdrvr  +++|        BEGIN  # RESET #
06154  M00S05782.exdrvr  +++|        LLR$DR[0] = LLR$SDR[0];
06155  M00S05783.exdrvr  +++|        END  # RESET #
06156  M00S05784.exdrvr  +++|
06157  M00S05785.exdrvr  +++|      IF LLR$PRCNME[0] EQ REQTYP4"INITHW"
06158  M00S05786.exdrvr  +++|      THEN                           # CLEAR SO UDT SCAN CAN FINISH #
06159  M00S05787.exdrvr  +++|        BEGIN  # CLEAR #
06160  M00S05788.exdrvr  +++|        IF MS$RETCODE[0] NQ HRC$CSNERR  # DRD NOT YET OFF #
06161  M00S05789.exdrvr  +++|        THEN                         # NOT RETRYING AS NORMAL STORE #
06162  M00S05790.exdrvr  +++|          BEGIN  # OFF #
06163  M00S05791.exdrvr  +++|          LLR$DRFUL[0] = FALSE;
06164  M00S05792.exdrvr  +++|          END  # OFF #
06165  M00S05793.exdrvr  +++|
06166  M00S05794.exdrvr  +++|        LLR$DRDOFF[0] = FALSE;
06167  M00S05795.exdrvr  +++|        LLR$LDERR[0] = FALSE;        # IN CASE LOAD ERROR OCCURRED #
06168  M00S05796.exdrvr  +++|        END  # CLEAR #
06169  M00S05797.exdrvr  +++|
06170  M00S05798.exdrvr  +++|      LLR$RS[0] = PROCST"COMPLETE";
06171  M00S05799.exdrvr  +++|      IF MS$RETCODE[0] EQ HRC$CSNERR  # RETRY AS NORMAL STORE #
06172  M00S05800.exdrvr  +++|        OR (KW$LINE2[0] EQ KM"KM19"  # RETRY STORE TO OUTPUT TRAY #
06173  M00S05801.exdrvr  +++|        AND NOT KW$COMP[0])
06174  M00S05802.exdrvr  +++|      THEN                           # RETRY STORING CARTRIDGE #
06175  M00S05803.exdrvr  +++|        BEGIN  # RETRY #
06176  M00S05804.exdrvr  +++|        LLR$RS[0] = PROCST"INITIAL";
06177  M00S05805.exdrvr  +++|        END  # RETRY #
06178  M00S05806.exdrvr  +++|
06179  M00S05807.exdrvr  +++|      IF MBF$SBADDR[0] NQ 0
06180  M00S05808.exdrvr  +++|      THEN                           # CLEAR SBT ENTRY #
06181  M00S05809.exdrvr  +++|        BEGIN  # CLEAR #
06182  M00S05810.exdrvr  +++|        P<UDT$MSG> = MBF$SBADDR[0];
06183  M00S05811.exdrvr  +++|        ZFILL(UDT$MSG,MSGLT);
06184  M00S05812.exdrvr  +++|        END  # CLEAR #
06185  M00S05813.exdrvr  +++|
06186  M00S05814.exdrvr  +++|      MBF$WORD[0] = 0;               # CLEAR MESSAGE STATUS #
06187  M00S05815.exdrvr  +++|      RETURN;
06188  M00S05816.exdrvr  +++|
06189  M00S05817.exdrvr  +++|STRCART2:
06190  M00S05818.exdrvr  +++|      MESSAGE(FEMSG,UDFL1);
06191  M00S05819.exdrvr  +++|      ABORT;
06192  M00S05820.exdrvr  +++|      END  # STRCART #
06193  M00S05821.exdrvr  +++|
06194  M00S05822.exdrvr  +++|    TERM
06195  M00S05823.exdrvr  +++|PROC XFRDATA;
06196  M00S05824.exdrvr  +++|# TITLE XFRDATA - TRANSFER DATA TO/FROM M860.                         #
06197  M00S05825.exdrvr  +++|
06198  M00S05826.exdrvr  +++|      BEGIN  # XFRDATA #
06199  M00S05827.exdrvr  +++|
06200  M00S05828.exdrvr  +++|#
06201  M00S05829.exdrvr  +++|**    XFRDATA - TRANSFER DATA TO/FROM M860.
06202  M00S05830.exdrvr  +++|*
06203  M00S05831.exdrvr  +++|*     *XFRDATA* PROCESSES *DRQUEUE* REQUESTS TO MOUNT AND UNLOAD
06204  M00S05832.exdrvr  +++|*     VOLUMES, AND INITIATES DATA TRANSFERS BETWEEN *SSEXEC* AND THE
06205  M00S05833.exdrvr  +++|*     M860 HARDWARE.
06206  M00S05834.exdrvr  +++|*
06207  M00S05835.exdrvr  +++|*     PROC XFRDATA
06208  M00S05836.exdrvr  +++|*
06209  M00S05837.exdrvr  +++|*     ENTRY      P<LLRQ> = *DRQUEUE* ENTRY ADDRESS.
06210  M00S05838.exdrvr  +++|*
06211  M00S05839.exdrvr  +++|*     EXIT       THE *DRQUEUE* ENTRY REQUEST STATE FIELD HAS BEEN
06212  M00S05840.exdrvr  +++|*                UPDATED TO INDICATE WHERE SUBSEQUENT PROCESSING OF
06213  M00S05841.exdrvr  +++|*                THIS REQUEST IS TO CONTINUE.
06214  M00S05842.exdrvr  +++|*
06215  M00S05843.exdrvr  +++|*     MESSAGES   *EXEC ABNORMAL, XFRDATA1.* - UDT MESSAGE BUFFER STILL
06216  M00S05844.exdrvr  +++|*                                             IN USE.
06217  M00S05845.exdrvr  +++|*
06218  M00S05846.exdrvr  +++|*                *EXEC ABNORMAL, XFRDATA2.* - FATAL ERROR RECEIVED IN
06219  M00S05847.exdrvr  +++|*                                             M860 *MOUNT VOLUME*
06220  M00S05848.exdrvr  +++|*                                             RESPONSE.
06221  M00S05849.exdrvr  +++|*
06222  M00S05850.exdrvr  +++|*     NOTES      THIS IS A PSEUDO-REENTRANT PROCEDURE.
06223  M00S05851.exdrvr  +++|#
06224  M00S05852.exdrvr  +++|
06225  M00S05853.exdrvr  +++|
06226  M00S05854.exdrvr  +++|#
06227  M00S05855.exdrvr  +++|****  PROC XFRDATA - XREF LIST BEGIN.
06228  M00S05856.exdrvr  +++|#
06229  M00S05857.exdrvr  +++|
06230  M00S05858.exdrvr  +++|      XREF
06231  M00S05859.exdrvr  +++|        BEGIN
06232  M00S05860.exdrvr  +++|        PROC ABORT;                  # ABORT #
06233  M00S05861.exdrvr  +++|        PROC CALLPP;                 # PASS MESSAGES/DATA TO PP #
06234  M00S05862.exdrvr  +++|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
06235  M00S05863.exdrvr  +++|        PROC RTIME;                  # GET TIME SINCE DEADSTART #
06236  M00S05864.exdrvr  +++|        PROC SENDMSG;                # SEND M860 MESSAGE #
06237  M00S05865.exdrvr  +++|        PROC ZFILL;                  # ZERO-FILL BUFFER #
06238  M00S05866.exdrvr  +++|        END
06239  M00S05867.exdrvr  +++|
06240  M00S05868.exdrvr  +++|#
06241  M00S05869.exdrvr  +++|****  PROC XFRDATA - XREF LIST END.
06242  M00S05870.exdrvr  +++|#
06243  M00S05871.exdrvr  +++|
06244  M00S05872.exdrvr  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
06245  M00S05873.exdrvr  +++|*CALL,COMBFAS
06246  M00S05874.exdrvr  +++|*CALL,COMBCDD
06247  M00S05875.exdrvr  +++|*CALL COMBCPR
06248  M00S05876.exdrvr  +++|*CALL,COMBFET
06249  M00S05877.exdrvr  +++|*CALL,COMBHFC
06250  M00S05878.exdrvr  +++|*CALL,COMBLRQ
06251  M00S05879.exdrvr  +++|*CALL,COMBUDT
06252  M00S05880.exdrvr  +++|*CALL,COMXMSC
06253  M00S05881.exdrvr  +++|
06254  M00S05882.exdrvr  +++|      ITEM I          I;             # INDEX #
06255  M00S05883.exdrvr  +++|
06256  M00S05884.exdrvr  +++|      SWITCH XFRLBL:PROCST           # DRIVER REQUEST STATE #
06257  M00S05885.exdrvr  +++|            XFRINIT:INITIAL,         # INITIAL STATE #
06258  M00S05886.exdrvr  +++|            XFRMNVL:CONT1,           # CONTINUATION 1 #
06259  M00S05887.exdrvr  +++|            XFRPDAT:CONT2,           # CONTINUATION 2 #
06260  M00S05888.exdrvr  +++|            XFRINCR:CONT3,           # CONTINUATION 3 #
06261  M00S05889.exdrvr  +++|            XFRUNLD:CONT4,           # CONTINUATION 4 #
06262  M00S05890.exdrvr  +++|            XFRRESP:CONT5;           # CONTINUATION 5 #
06263  M00S05891.exdrvr  +++|                                               CONTROL EJECT;
06264  M00S05892.exdrvr  +++|
06265  M00S05893.exdrvr  +++|      GOTO XFRLBL[LLR$RS[0]];
06266  M00S05894.exdrvr  +++|
06267  M00S05895.exdrvr  +++|#
06268  M00S05896.exdrvr  +++|*     INITIAL DRIVER REQUEST STATE.
06269  M00S05897.exdrvr  +++|#
06270  M00S05898.exdrvr  +++|
06271  M00S05899.exdrvr  +++|XFRINIT:
06272  M00S05900.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
06273  M00S05901.exdrvr  +++|      IF MBF$WORD[0] NQ 0
06274  M00S05902.exdrvr  +++|      THEN                           # DRD STILL IN USE #
06275  M00S05903.exdrvr  +++|        BEGIN  # ABORT #
06276  M00S05904.exdrvr  +++|        FE$RTN[0] = "XFRDATA1.";
06277  M00S05905.exdrvr  +++|        GOTO XFRDATA1;
06278  M00S05906.exdrvr  +++|        END  # ABORT #
06279  M00S05907.exdrvr  +++|
06280  M00S05908.exdrvr  +++|      P<UDT$MSG> = P<MBFHDR> + 1;
06281  M00S05909.exdrvr  +++|      MBF$SAVE[0] = SAVEMOST;
06282  M00S05910.exdrvr  +++|      MS$MSG[0] = HFC$MVLMVR;        # ASSUME READING DATA #
06283  M00S05911.exdrvr  +++|      LLR$RS[0] = PROCST"CONT1";
06284  M00S05912.exdrvr  +++|
06285  M00S05913.exdrvr  +++|#
06286  M00S05914.exdrvr  +++|*     ISSUE M860 MESSAGE TO MOUNT VOLUME.
06287  M00S05915.exdrvr  +++|#
06288  M00S05916.exdrvr  +++|
06289  M00S05917.exdrvr  +++|XFRMNVL:
06290  M00S05918.exdrvr  +++|      P<FETFHB> = LLR$MSFET[0];
06291  M00S05919.exdrvr  +++|      FHB$UNIT[0] = D1$SUN[LLR$SMO[0]];
06292  M00S05920.exdrvr  +++|      IF LLR$DRD[0] EQ 0
06293  M00S05921.exdrvr  +++|      THEN                           # UPPER DRD BEING USED #
06294  M00S05922.exdrvr  +++|        BEGIN  # RESET #
06295  M00S05923.exdrvr  +++|        FHB$UNIT[0] = D0$SUN[LLR$SMO[0]];
06296  M00S05924.exdrvr  +++|        END  # RESET #
06297  M00S05925.exdrvr  +++|
06298  M00S05926.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
06299  M00S05927.exdrvr  +++|      SENDMSG;                       # SEND M860 MESSAGE #
06300  M00S05928.exdrvr  +++|      IF LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"
06301  M00S05929.exdrvr  +++|      THEN                           # HARDWARE PROBLEM #
06302  M00S05930.exdrvr  +++|        BEGIN  # EXIT #
06303  M00S05931.exdrvr  +++|        IF MS$INTER[0] NQ 0          # CIF SELECTED #
06304  M00S05932.exdrvr  +++|        THEN                         # DATA TRANSFER STOPPED #
06305  M00S05933.exdrvr  +++|          BEGIN  # NO DATA #
06306  M00S05934.exdrvr  +++|          B<LLR$CIF[0],1>UD$DBACT[LLR$CU[0]] = OFF;
06307  M00S05935.exdrvr  +++|          END  # NO DATA #
06308  M00S05936.exdrvr  +++|
06309  M00S05937.exdrvr  +++|        IF MBF$SENT[0]
06310  M00S05938.exdrvr  +++|        THEN                         # IGNORE RESPONSES #
06311  M00S05939.exdrvr  +++|          BEGIN  # IGNORE #
06312  M00S05940.exdrvr  +++|          MSGCNT(LLR$CIF[0],LLR$CU[0]) = MSGCNT(LLR$CIF[0],LLR$CU[0])-1;
06313  M00S05941.exdrvr  +++|                                     # COUNT INCLUDED REWIND/UNLOAD #
06314  M00S05942.exdrvr  +++|          END  # IGNORE #
06315  M00S05943.exdrvr  +++|
06316  M00S05944.exdrvr  +++|        GOTO XFRDATA2;
06317  M00S05945.exdrvr  +++|        END  # EXIT #
06318  M00S05946.exdrvr  +++|
06319  M00S05947.exdrvr  +++|      IF MBF$SBADDR[0] EQ 0
06320  M00S05948.exdrvr  +++|      THEN                           # RESPONSE NOT YET RECEIVED #
06321  M00S05949.exdrvr  +++|        BEGIN  # RETRY #
06322  M00S05950.exdrvr  +++|        RETURN;
06323  M00S05951.exdrvr  +++|        END  # RETRY #
06324  M00S05952.exdrvr  +++|
06325  M00S05953.exdrvr  +++|      IF MS$RETCODE[0] NQ 0
06326  M00S05954.exdrvr  +++|      THEN                           # SOFTWARE ERROR #
06327  M00S05955.exdrvr  +++|        BEGIN  # ABORT #
06328  M00S05956.exdrvr  +++|        FE$RTN[0] = "XFRDATA2.";
06329  M00S05957.exdrvr  +++|        GOTO XFRDATA1;
06330  M00S05958.exdrvr  +++|        END  # ABORT #
06331  M00S05959.exdrvr  +++|
06332  M00S05960.exdrvr  +++|      ZFILL(UDT$MSG,MSGLT);          # CLEAR STORAGE BUFFER #
06333  M00S05961.exdrvr  +++|      MBF$SBADDR[0] = 0;             # CLEAR SBT ENTRY ADDRESS #
06334  M00S05962.exdrvr  +++|      MBF$TMOUT[0] = 0;              # CLEAR MESSAGE TIMEOUT #
06335  M00S05963.exdrvr  +++|      LLR$RS[0] = PROCST"CONT2";
06336  M00S05964.exdrvr  +++|
06337  M00S05965.exdrvr  +++|#
06338  M00S05966.exdrvr  +++|*     PASS DATA BUFFER ADDRESS TO PP TO START DATA TRANSFER.
06339  M00S05967.exdrvr  +++|#
06340  M00S05968.exdrvr  +++|
06341  M00S05969.exdrvr  +++|XFRPDAT:
06342  M00S05970.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
06343  M00S05971.exdrvr  +++|      P<UDT$MSG> = P<MBFHDR> + 1;
06344  M00S05972.exdrvr  +++|      CALLPP(IRMDAT);
06345  M00S05973.exdrvr  +++|      IF LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"
06346  M00S05974.exdrvr  +++|      THEN                           # HARDWARE PROBLEM #
06347  M00S05975.exdrvr  +++|        BEGIN  # EXIT #
06348  M00S05976.exdrvr  +++|        GOTO XFRDATA2;
06349  M00S05977.exdrvr  +++|        END  # EXIT #
06350  M00S05978.exdrvr  +++|
06351  M00S05979.exdrvr  +++|      IF B<FMR$CIF[0],1>UD$DBACT[LLR$CU[0]] EQ ON  ##
06352  M00S05980.exdrvr  +++|        AND P<FETMWB> NQ 0           # CHANNEL WAS ALLOCATED #
06353  M00S05981.exdrvr  +++|      THEN                           # DATA TRANSFER STARTED #
06354  M00S05982.exdrvr  +++|        BEGIN  # RETRY #
06355  M00S05983.exdrvr  +++|        LLR$RS[0] = PROCST"COMPLETE";# RETURN WHEN COPY COMPLETE #
06356  M00S05984.exdrvr  +++|        END  # RETRY #
06357  M00S05985.exdrvr  +++|
06358  M00S05986.exdrvr  +++|      RETURN;
06359  M00S05987.exdrvr  +++|
06360  M00S05988.exdrvr  +++|#
06361  M00S05989.exdrvr  +++|*     AWAIT M860-INITIATED UNLOAD MESSAGE.
06362  M00S05990.exdrvr  +++|#
06363  M00S05991.exdrvr  +++|
06364  M00S05992.exdrvr  +++|XFRINCR:
06365  M00S05993.exdrvr  +++|      SLOWFOR I = 1 STEP 1 UNTIL PPCBTSIZE
06366  M00S05994.exdrvr  +++|      DO                             # NOTE DATA TRANSFER COMPLETE #
06367  M00S05995.exdrvr  +++|        BEGIN  # SCAN #
06368  M00S05996.exdrvr  +++|        IF LLR$MSFET[0] EQ PPU$DBADDR[I]
06369  M00S05997.exdrvr  +++|        THEN                         # REMOVE ADDRESS #
06370  M00S05998.exdrvr  +++|          BEGIN  # CLEAR #
06371  M00S05999.exdrvr  +++|          PPU$DBADDR[I] = 0;
06372  M00S06000.exdrvr  +++|          B<LLR$CIF[0],1>UD$DBACT[LLR$CU[0]] = OFF;
06373  M00S06001.exdrvr  +++|                                     # FREE PP FOR NEXT DATA XFER #
06374  M00S06002.exdrvr  +++|          END  # CLEAR #
06375  M00S06003.exdrvr  +++|
06376  M00S06004.exdrvr  +++|        END  # SCAN #
06377  M00S06005.exdrvr  +++|
06378  M00S06006.exdrvr  +++|      IF LLR$DRFUL[0]
06379  M00S06007.exdrvr  +++|      THEN                           # DATA TRANSFER ERROR #
06380  M00S06008.exdrvr  +++|        BEGIN  # EXIT #
Line S00143 Modification History
M01 (Added by) mse1
Seq #  *Modification Id* Act 
----------------------------+
06381  M01S00143.mse1    +++|        LLR$SCIF[0] = LLR$CIF[0];    # SAVE TO DECIDE IF DRD GOES OFF #
06382  M01S00144.mse1    +++|        LLR$SCU[0] = LLR$CU[0];
06383  M00S06009.exdrvr  +++|        MSGCNT(LLR$CIF[0],LLR$CU[0]) = MSGCNT(LLR$CIF[0],LLR$CU[0])-1;
06384  M00S06010.exdrvr  +++|        GOTO XFRDATA2;               # DO NOT EXPECT REWIND/UNLOAD #
06385  M00S06011.exdrvr  +++|        END  # EXIT #
06386  M00S06012.exdrvr  +++|
06387  M00S06013.exdrvr  +++|      RTIME(RTIMESTAT);              # RESET MESSAGE TIMEOUT #
06388  M00S06014.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
06389  M00S06015.exdrvr  +++|      MBF$TMOUT[0] = RTIMSECS[0];
06390  M00S06016.exdrvr  +++|      LLR$RS[0] = PROCST"CONT4";
06391  M00S06017.exdrvr  +++|
06392  M00S06018.exdrvr  +++|XFRUNLD:
06393  M00S06019.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
06394  M00S06020.exdrvr  +++|      SENDMSG;                       # AWAIT UNLOAD MESSAGE #
06395  M00S06021.exdrvr  +++|      IF LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"
06396  M00S06022.exdrvr  +++|      THEN                           # RESPONSE TIMED OUT #
06397  M00S06023.exdrvr  +++|        BEGIN  # EXIT #
06398  M00S06024.exdrvr  +++|        GOTO XFRDATA2;
06399  M00S06025.exdrvr  +++|        END  # EXIT #
06400  M00S06026.exdrvr  +++|
06401  M00S06027.exdrvr  +++|      IF MBF$SBADDR[0] EQ 0
06402  M00S06028.exdrvr  +++|      THEN                           # MESSAGE NOT YET RECEIVED #
06403  M00S06029.exdrvr  +++|        BEGIN  # RETRY #
06404  M00S06030.exdrvr  +++|        RETURN;
06405  M00S06031.exdrvr  +++|        END  # RETRY #
06406  M00S06032.exdrvr  +++|
06407  M00S06033.exdrvr  +++|      IF LLR$PRCNME[0] EQ REQTYP4"CPY$DA"   # VOLUME DESTAGE #
06408  M00S06034.exdrvr  +++|      THEN                           # RETURN STATISTICS #
06409  M00S06035.exdrvr  +++|        BEGIN  # STATS #
06410  M00S06036.exdrvr  +++|        LLR$LT$ST[0] = MS$PARM1A[0]; # LAST STRIPE WRITTEN #
06411  M00S06037.exdrvr  +++|        LLR$LOG$ST[0] = MS$PARM2[0]; # LOGICAL STRIPE POSITION #
06412  M00S06038.exdrvr  +++|        END  # STATS #
06413  M00S06039.exdrvr  +++|
06414  M00S06040.exdrvr  +++|      MBF$SENT[0] = FALSE;
06415  M00S06041.exdrvr  +++|      MS$MSG$R[0] = TRUE;            # SET AS UNLOAD RESPONSE #
06416  M00S06042.exdrvr  +++|      LLR$RS[0] = PROCST"CONT5";
06417  M00S06043.exdrvr  +++|
06418  M00S06044.exdrvr  +++|#
06419  M00S06045.exdrvr  +++|*     ISSUE RESPONSE TO M860-INITIATED UNLOAD MESSAGE.
06420  M00S06046.exdrvr  +++|#
06421  M00S06047.exdrvr  +++|
06422  M00S06048.exdrvr  +++|XFRRESP:
06423  M00S06049.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
06424  M00S06050.exdrvr  +++|      SENDMSG;                       # SEND UNLOAD RESPONSE #
06425  M00S06051.exdrvr  +++|      IF LLR$DR[0] EQ RESPTYP4"OK4"  # HARDWARE GOOD #
06426  M00S06052.exdrvr  +++|        AND NOT MBF$SENT[0]
06427  M00S06053.exdrvr  +++|      THEN                           # RESPONSE NOT YET SENT #
06428  M00S06054.exdrvr  +++|        BEGIN  # RETRY #
06429  M00S06055.exdrvr  +++|        RETURN;
06430  M00S06056.exdrvr  +++|        END  # RETRY #
06431  M00S06057.exdrvr  +++|
06432  M00S06058.exdrvr  +++|XFRDATA2:
06433  M00S06059.exdrvr  +++|      IF MBF$SBADDR[0] NQ 0
06434  M00S06060.exdrvr  +++|      THEN                           # CLEAR SBT ENTRY #
06435  M00S06061.exdrvr  +++|        BEGIN  # CLEAR #
06436  M00S06062.exdrvr  +++|        P<UDT$MSG> = MBF$SBADDR[0];
06437  M00S06063.exdrvr  +++|        ZFILL(UDT$MSG,MSGLT);
06438  M00S06064.exdrvr  +++|        END  # CLEAR #
06439  M00S06065.exdrvr  +++|
06440  M00S06066.exdrvr  +++|      IF NOT LLR$DRFUL[0]
06441  M00S06067.exdrvr  +++|      THEN                           # DO NOT ISSUE FORCED-STORE #
06442  M00S06068.exdrvr  +++|        BEGIN  # NORMAL #
06443  M00S06069.exdrvr  +++|        MBF$WORD[0] = 0;             # STOP *STRCART* FROM FORCING #
06444  M00S06070.exdrvr  +++|        END  # NORMAL #
06445  M00S06071.exdrvr  +++|
06446  M00S06072.exdrvr  +++|      LLR$RS[0] = PROCST"COMPLETE";
06447  M00S06073.exdrvr  +++|      RETURN;
06448  M00S06074.exdrvr  +++|
06449  M00S06075.exdrvr  +++|XFRDATA1:
06450  M00S06076.exdrvr  +++|      MESSAGE(FEMSG,UDFL1);
06451  M00S06077.exdrvr  +++|      ABORT;
06452  M00S06078.exdrvr  +++|      END  # XFRDATA #
06453  M00S06079.exdrvr  +++|
06454  M00S06080.exdrvr  +++|    TERM