User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:exdrvr

Deck EXDRVR

Library Member Format: MODIFY

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.exdrvr  +++|PROC ACQCART;
00002  M00S00002.exdrvr  +++|# TITLE ACQCART - ACQUIRE CARTRIDGE.                                  #
00003  M00S00003.exdrvr  +++|
00004  M00S00004.exdrvr  +++|      BEGIN  # ACQCART #
00005  M00S00005.exdrvr  +++|
00006  M00S00006.exdrvr  +++|#
00007  M00S00007.exdrvr  +++|**    ACQCART - ACQUIRE CARTRIDGE.
00008  M00S00008.exdrvr  +++|*
00009  M00S00009.exdrvr  +++|*     *ACQCART* PROCESSES *DRQUEUE* REQUESTS TO LOAD CARTRIDGES
00010  M00S00010.exdrvr  +++|*     AND READ CARTRIDGE LABELS.
00011  M00S00011.exdrvr  +++|*
00012  M00S00012.exdrvr  +++|*     PROC ACQCART
00013  M00S00013.exdrvr  +++|*
00014  M00S00014.exdrvr  +++|*     ENTRY      P<LLRQ> = *DRQUEUE* ENTRY ADDRESS.
00015  M00S00015.exdrvr  +++|*
00016  M00S00016.exdrvr  +++|*     EXIT       THE *DRQUEUE* ENTRY REQUEST STATE FIELD HAS BEEN
00017  M00S00017.exdrvr  +++|*                UPDATED TO INDICATE WHERE SUBSEQUENT PROCESSING OF
00018  M00S00018.exdrvr  +++|*                THIS REQUEST IS TO CONTINUE.
00019  M00S00019.exdrvr  +++|*
00020  M00S00020.exdrvr  +++|*     MESSAGES   *EXEC ABNORMAL, ACQCART2.* - UDT MESSAGE BUFFER
00021  M00S00021.exdrvr  +++|*                                             STILL IN USE.
00022  M00S00022.exdrvr  +++|*
00023  M00S00023.exdrvr  +++|*                A K-DISPLAY MESSAGE IS ISSUED IF THE INPUT TRAY OR
00024  M00S00024.exdrvr  +++|*                MATRIX CELL IS EMPTY.
00025  M00S00025.exdrvr  +++|*
00026  M00S00026.exdrvr  +++|*     NOTES      THIS IS A PSEUDO-REENTRANT PROCEDURE.
00027  M00S00027.exdrvr  +++|#
00028  M00S00028.exdrvr  +++|
00029  M00S00029.exdrvr  +++|
00030  M00S00030.exdrvr  +++|#
00031  M00S00031.exdrvr  +++|****  PROC ACQCART - XREF LIST BEGIN.
00032  M00S00032.exdrvr  +++|#
00033  M00S00033.exdrvr  +++|
00034  M00S00034.exdrvr  +++|      XREF
00035  M00S00035.exdrvr  +++|        BEGIN
00036  M00S00036.exdrvr  +++|        PROC ABORT;                  # ABORT #
00037  M00S00037.exdrvr  +++|        PROC KREQ;                   # SEND K-DISPLAY REQUEST #
00038  M00S00038.exdrvr  +++|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
00039  M00S00039.exdrvr  +++|        PROC SENDMSG;                # SEND M860 MESSAGE #
00040  M00S00040.exdrvr  +++|        PROC ZFILL;                  # ZERO-FILL BUFFER #
00041  M00S00041.exdrvr  +++|        END
00042  M00S00042.exdrvr  +++|
00043  M00S00043.exdrvr  +++|#
00044  M00S00044.exdrvr  +++|****  PROC ACQCART - XREF LIST END.
00045  M00S00045.exdrvr  +++|#
00046  M00S00046.exdrvr  +++|
00047  M00S00047.exdrvr  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00048  M00S00048.exdrvr  +++|*CALL,COMBFAS
00049  M00S00049.exdrvr  +++|*CALL,COMBCPR
00050  M00S00050.exdrvr  +++|*CALL,COMBFET
00051  M00S00051.exdrvr  +++|*CALL,COMBHFC
00052  M00S00052.exdrvr  +++|*CALL,COMBKDD
00053  M00S00053.exdrvr  +++|*CALL,COMBLBL
00054  M00S00054.exdrvr  +++|*CALL,COMBLRQ
00055  M00S00055.exdrvr  +++|*CALL,COMBTDM
00056  M00S00056.exdrvr  +++|*CALL,COMBUCR
00057  M00S00057.exdrvr  +++|*CALL,COMBUDT
00058  M00S00058.exdrvr  +++|*CALL,COMXCTF
00059  M00S00059.exdrvr  +++|*CALL,COMXHLR
00060  M00S00060.exdrvr  +++|*CALL,COMXMSC
00061  M00S00061.exdrvr  +++|
00062  M00S00062.exdrvr  +++|      ITEM DRDFULL    B;             # NEXT-DRD FULL FLAG #
00063  M00S00063.exdrvr  +++|      ITEM DRDON      B;             # NEXT-DRD ON FLAG #
00064  M00S00064.exdrvr  +++|      ITEM I          I;             # INDEX #
00065  M00S00065.exdrvr  +++|      ITEM OTHERFULL  B;             # OTHER-DRD FULL FLAG #
00066  M00S00066.exdrvr  +++|      ITEM OTHERON    B;             # OTHER-DRD ON FLAG #
00067  M00S00067.exdrvr  +++|      ITEM TEMPALL    B;             # TEMP ALLOCATION FLAG #
00068  M00S00068.exdrvr  +++|      ITEM TEMPCSN0   U;             # FIRST 4 BYTES OF CSN #
00069  M00S00069.exdrvr  +++|      ITEM TEMPCSN1   U;             # NEXT 6 BYTES OF CSN #
00070  M00S00070.exdrvr  +++|      ITEM TEMPCSN2   U;             # LAST 2 BYTES OF CSN #
00071  M00S00071.exdrvr  +++|
00072  M00S00072.exdrvr  +++|      SWITCH ACQLBL:PROCST           # DRIVER REQUEST STATE #
00073  M00S00073.exdrvr  +++|            ACQINIT:INITIAL,         # INITIAL STATE #
00074  M00S00074.exdrvr  +++|            ACQLOAD:CONT1,           # CONTINUATION 1 #
00075  M00S00075.exdrvr  +++|            ACQREAD:CONT2;           # CONTINUATION 2 #
00076  M00S00076.exdrvr  +++|                                               CONTROL EJECT;
00077  M00S00077.exdrvr  +++|
00078  M00S00078.exdrvr  +++|      GOTO ACQLBL[LLR$RS[0]];
00079  M00S00079.exdrvr  +++|
00080  M00S00080.exdrvr  +++|#
00081  M00S00081.exdrvr  +++|*     INITIAL DRIVER REQUEST STATE.
00082  M00S00082.exdrvr  +++|#
00083  M00S00083.exdrvr  +++|
00084  M00S00084.exdrvr  +++|ACQINIT:
00085  M00S00085.exdrvr  +++|      SLOWFOR I = 1 STEP 1 WHILE (LLR$SMO[0] EQ 0)AND(I LQ MAXSMUNIT)
00086  M00S00086.exdrvr  +++|      DO                             # LOCATE SM ORDINAL FROM SM ID #
00087  M00S00087.exdrvr  +++|        BEGIN  # LOCATE #
00088  M00S00088.exdrvr  +++|        IF LLR$SMA[0] EQ SM$ID[I]    ##
00089  M00S00089.exdrvr  +++|          AND SM$EXIST[I]
00090  M00S00090.exdrvr  +++|        THEN                         # SM ORDINAL FOUND #
00091  M00S00091.exdrvr  +++|          BEGIN  # SET ORD #
00092  M00S00092.exdrvr  +++|          LLR$SMO[0] = I;
00093  M00S00093.exdrvr  +++|          END  # SET ORD #
00094  M00S00094.exdrvr  +++|
00095  M00S00095.exdrvr  +++|        END  # LOCATE #
00096  M00S00096.exdrvr  +++|
00097  M00S00097.exdrvr  +++|#
00098  M00S00098.exdrvr  +++|*     ALLOCATE DRD IN PREPARATION FOR LOAD.
00099  M00S00099.exdrvr  +++|#
00100  M00S00100.exdrvr  +++|
00101  M00S00101.exdrvr  +++|      IF LLR$SMO[0] EQ 0             # SM ORDINAL NOT FOUND #
00102  M00S00102.exdrvr  +++|        OR NOT SM$ON[LLR$SMO[0]]     # SM OFF #
00103  M00S00103.exdrvr  +++|      THEN                           # LOAD NOT POSSIBLE #
00104  M00S00104.exdrvr  +++|        BEGIN  # EXIT #
00105  M00S00105.exdrvr  +++|        DRVRACTIVE = TRUE;
00106  M00S00106.exdrvr  +++|        LLR$DR[0] = RESPTYP4"SMA$OFF";
00107  M00S00107.exdrvr  +++|        LLR$RS[0] = PROCST"COMPLETE";
00108  M00S00108.exdrvr  +++|        RETURN;
00109  M00S00109.exdrvr  +++|        END  # EXIT #
00110  M00S00110.exdrvr  +++|
00111  M00S00111.exdrvr  +++|      IF SM$SCCU[LLR$SMO[0]]         # PROCESSING SERVICE CELLS ONLY #
00112  M00S00112.exdrvr  +++|        AND LLR$PRCNME[0] NQ REQTYP4"INITHW"  # NOT SRV CELL LOAD #
00113  M00S00113.exdrvr  +++|      THEN                           # LOAD AFTER SRV CELLS PROCESSED #
00114  M00S00114.exdrvr  +++|        BEGIN  # WAIT #
00115  M00S00115.exdrvr  +++|        RETURN;
00116  M00S00116.exdrvr  +++|        END  # WAIT #
00117  M00S00117.exdrvr  +++|
00118  M00S00118.exdrvr  +++|      DRDON = D1$ON[LLR$SMO[0]]      ##
00119  M00S00119.exdrvr  +++|                AND (NOT D1$ON$ACK[LLR$SMO[0]])  ##
00120  M00S00120.exdrvr  +++|                AND (D1$DONE[LLR$SMO[0]]  ##
00121  M00S00121.exdrvr  +++|                OR SM$DONE[LLR$SMO[0]]  ##
00122  M00S00122.exdrvr  +++|                OR LLR$PRCNME[0] NQ REQTYP4"INITHW");
00123  M00S00123.exdrvr  +++|
00124  M00S00124.exdrvr  +++|      OTHERON = D0$ON[LLR$SMO[0]]    ##
00125  M00S00125.exdrvr  +++|                  AND (NOT D0$ON$ACK[LLR$SMO[0]])  ##
00126  M00S00126.exdrvr  +++|                  AND (D0$DONE[LLR$SMO[0]]  ##
00127  M00S00127.exdrvr  +++|                  OR SM$DONE[LLR$SMO[0]]  ##
00128  M00S00128.exdrvr  +++|                  OR LLR$PRCNME[0] NQ REQTYP4"INITHW");
00129  M00S00129.exdrvr  +++|
00130  M00S00130.exdrvr  +++|      DRDFULL = D1$FULL[LLR$SMO[0]];
00131  M00S00131.exdrvr  +++|      OTHERFULL = D0$FULL[LLR$SMO[0]];
00132  M00S00132.exdrvr  +++|      IF SM$TOPDRD[LLR$SMO[0]]
00133  M00S00133.exdrvr  +++|      THEN                           # UPPER DRD CHOSEN #
00134  M00S00134.exdrvr  +++|        BEGIN  # RESET #
00135  M00S00135.exdrvr  +++|        TEMPALL = DRDON;
00136  M00S00136.exdrvr  +++|        DRDON = OTHERON;
00137  M00S00137.exdrvr  +++|        OTHERON = TEMPALL;
00138  M00S00138.exdrvr  +++|        DRDFULL = D0$FULL[LLR$SMO[0]];
00139  M00S00139.exdrvr  +++|        OTHERFULL = D1$FULL[LLR$SMO[0]];
00140  M00S00140.exdrvr  +++|        END  # RESET #
00141  M00S00141.exdrvr  +++|
00142  M00S00142.exdrvr  +++|      IF DRDFULL OR NOT DRDON
00143  M00S00143.exdrvr  +++|      THEN                           # CHOSEN DRD NOT AVAILABLE #
00144  M00S00144.exdrvr  +++|        BEGIN  # CHECK OTHER DRD #
00145  M00S00145.exdrvr  +++|        IF NOT OTHERON
00146  M00S00146.exdrvr  +++|        THEN                         # OTHER DRD OFF #
00147  M00S00147.exdrvr  +++|          BEGIN  # RECHECK #
00148  M00S00148.exdrvr  +++|          IF NOT DRDON
00149  M00S00149.exdrvr  +++|          THEN                       # BOTH DRD-S OFF #
00150  M00S00150.exdrvr  +++|            BEGIN  # OFF #
00151  M00S00151.exdrvr  +++|            DRVRACTIVE = TRUE;
00152  M00S00152.exdrvr  +++|            LLR$DR[0] = RESPTYP4"SMA$OFF";  # NO ACCESS #
00153  M00S00153.exdrvr  +++|            LLR$RS[0] = PROCST"COMPLETE";
00154  M00S00154.exdrvr  +++|            END  # OFF #
00155  M00S00155.exdrvr  +++|
00156  M00S00156.exdrvr  +++|          RETURN;                    # CHOSEN DRD IS FULL #
00157  M00S00157.exdrvr  +++|          END  # RECHECK #
00158  M00S00158.exdrvr  +++|
00159  M00S00159.exdrvr  +++|        IF OTHERFULL
00160  M00S00160.exdrvr  +++|        THEN                         # OTHER DRD IS FULL #
00161  M00S00161.exdrvr  +++|          BEGIN  # WAIT #
00162  M00S00162.exdrvr  +++|          RETURN;                    # AT LEAST ONE DRD IS FULL #
00163  M00S00163.exdrvr  +++|          END  # WAIT #
00164  M00S00164.exdrvr  +++|
00165  M00S00165.exdrvr  +++|        SM$TOPDRD[LLR$SMO[0]] = NOT SM$TOPDRD[LLR$SMO[0]];
00166  M00S00166.exdrvr  +++|                                     # USE OTHER DRD #
00167  M00S00167.exdrvr  +++|        END  # CHECK OTHER DRD #
00168  M00S00168.exdrvr  +++|
00169  M00S00169.exdrvr  +++|      IF SM$TOPDRD[LLR$SMO[0]]
00170  M00S00170.exdrvr  +++|      THEN                           # UPPER DRD CHOSEN #
00171  M00S00171.exdrvr  +++|        BEGIN  # UPPER #
00172  M00S00172.exdrvr  +++|        LLR$DRD[0] = 0;
00173  M00S00173.exdrvr  +++|        D0$FULL[LLR$SMO[0]] = TRUE;
00174  M00S00174.exdrvr  +++|        D0$LLADR[LLR$SMO[0]] = P<LLRQ>;
00175  M00S00175.exdrvr  +++|        LLR$MBH[0] = LOC(D0$MSG[LLR$SMO[0]]) - 1;
00176  M00S00176.exdrvr  +++|        END  # UPPER #
00177  M00S00177.exdrvr  +++|
00178  M00S00178.exdrvr  +++|      ELSE                           # LOWER DRD CHOSEN #
00179  M00S00179.exdrvr  +++|        BEGIN  # LOWER #
00180  M00S00180.exdrvr  +++|        LLR$DRD[0] = 1;
00181  M00S00181.exdrvr  +++|        D1$FULL[LLR$SMO[0]] = TRUE;
00182  M00S00182.exdrvr  +++|        D1$LLADR[LLR$SMO[0]] = P<LLRQ>;
00183  M00S00183.exdrvr  +++|        LLR$MBH[0] = LOC(D1$MSG[LLR$SMO[0]]) - 1;
00184  M00S00184.exdrvr  +++|        END  # LOWER #
00185  M00S00185.exdrvr  +++|
00186  M00S00186.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
00187  M00S00187.exdrvr  +++|      IF MBF$WORD[0] NQ 0
00188  M00S00188.exdrvr  +++|      THEN                           # LAST MESSAGE NOT PROCESSED #
00189  M00S00189.exdrvr  +++|        BEGIN  # ABORT #
00190  M00S00190.exdrvr  +++|        FE$RTN[0] = "ACQCART2.";
00191  M00S00191.exdrvr  +++|        GOTO ACQCART2;
00192  M00S00192.exdrvr  +++|        END  # ABORT #
00193  M00S00193.exdrvr  +++|
00194  M00S00194.exdrvr  +++|      P<UDT$MSG> = P<MBFHDR> + 1;
00195  M00S00195.exdrvr  +++|      MS$MSG[0] = HFC$ACCR;          # SET *ACQUIRE* FUNCTION #
00196  M00S00196.exdrvr  +++|      IF LLR$Y[0] EQ SM$ENT$TY       # LOAD FROM ENTRY TRAY #
00197  M00S00197.exdrvr  +++|        AND LLR$Z[0] EQ SM$TY$Z
00198  M00S00198.exdrvr  +++|      THEN                           # RESET TO *ENTER* FUNCTION #
00199  M00S00199.exdrvr  +++|        BEGIN  # RESET #
00200  M00S00200.exdrvr  +++|        MS$MSG[0] = HFC$ENCRDR;
00201  M00S00201.exdrvr  +++|        END  # RESET #
00202  M00S00202.exdrvr  +++|
00203  M00S00203.exdrvr  +++|      MBF$SAVE[0] = SAVEPART;
00204  M00S00204.exdrvr  +++|      LLR$RS[0] = PROCST"CONT1";     # SET NEXT REQUEST STATE #
00205  M00S00205.exdrvr  +++|
00206  M00S00206.exdrvr  +++|#
00207  M00S00207.exdrvr  +++|*     ISSUE M860 MESSAGE TO LOAD CARTRIDGE.
00208  M00S00208.exdrvr  +++|#
00209  M00S00209.exdrvr  +++|
00210  M00S00210.exdrvr  +++|ACQLOAD:
00211  M00S00211.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
00212  M00S00212.exdrvr  +++|      SENDMSG;                       # SEND M860 MESSAGE #
00213  M00S00213.exdrvr  +++|      IF MBF$SBADDR[0] EQ 0          ##
00214  M00S00214.exdrvr  +++|        AND LLR$DR[0] EQ RESPTYP4"OK4"  # HARDWARE GOOD #
00215  M00S00215.exdrvr  +++|      THEN                           # RESPONSE NOT YET RECEIVED #
00216  M00S00216.exdrvr  +++|        BEGIN  # RETRY #
00217  M00S00217.exdrvr  +++|        RETURN;
00218  M00S00218.exdrvr  +++|        END  # RETRY #
00219  M00S00219.exdrvr  +++|
00220  M00S00220.exdrvr  +++|      SM$ACCBUSY[LLR$SMO[0]] = FALSE;# SM ARM NOT IN USE #
00221  M00S00221.exdrvr  +++|      IF (MS$MSG[0] EQ HFC$ACCR      # *ACQUIRE* ERROR #
Line S00222 Modification History
M01 (Removed by) msea023
Seq #  *Modification Id* Act 
----------------------------+
00222  M01S00222.msea023 ---|        AND MS$RETCODE[0] NQ HRC$CSNMIS)  ##
Line S00001 Modification History
M01 (Added by) msea023
Seq #  *Modification Id* Act 
----------------------------+
00223  M01S00001.msea023 +++|        AND MS$RETCODE[0] NQ 0       ##
00224  M01S00002.msea023 +++|        AND MS$RETCODE[0] NQ HRC$CSNMIS)  # HANDLE WHEN READING LABEL #
00225  M00S00223.exdrvr  +++|        OR (MS$MSG[0] EQ HFC$ENCRDR  # *ENTER* ERROR #
00226  M00S00224.exdrvr  +++|        AND MS$RETCODE[0] NQ 0)      ##
00227  M00S00225.exdrvr  +++|        OR LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"
00228  M00S00226.exdrvr  +++|      THEN                           # UNEXPECTED RESPONSE #
00229  M00S00227.exdrvr  +++|        BEGIN  # NO LOAD #
00230  M00S00228.exdrvr  +++|        IF LLR$DRFUL[0]              # DEVICE DRIVER ERROR #
00231  M00S00229.exdrvr  +++|        THEN                         # TURN OFF DRD #
00232  M00S00230.exdrvr  +++|          BEGIN  # OFF #
00233  M00S00231.exdrvr  +++|          LLR$LDERR[0] = TRUE;
00234  M00S00232.exdrvr  +++|          GOTO ACQCART1;
00235  M00S00233.exdrvr  +++|          END  # OFF #
00236  M00S00234.exdrvr  +++|
00237  M00S00235.exdrvr  +++|        IF MS$RETCODE[0] EQ 0        ##
00238  M00S00236.exdrvr  +++|          AND MS$MSG[0] EQ HFC$ACCR
00239  M00S00237.exdrvr  +++|        THEN                         # HARDWARE ERROR #
00240  M00S00238.exdrvr  +++|          BEGIN  # M860 #
00241  M00S00239.exdrvr  +++|          LLR$DR[0] = RESPTYP4"M86$HDW$PR";
00242  M00S00240.exdrvr  +++|          END  # M860 #
00243  M00S00241.exdrvr  +++|
00244  M00S00242.exdrvr  +++|        IF MS$RETCODE[0] EQ HRC$CELEMP         ##
00245  M00S00243.exdrvr  +++|          OR MS$RETCODE[0] EQ HRC$TRAYPR
00246  M00S00244.exdrvr  +++|        THEN                         # CELL EMPTY #
00247  M00S00245.exdrvr  +++|          BEGIN  # EXIT #
00248  M00S00246.exdrvr  +++|          LLR$DR[0] = RESPTYP4"CELL$EMP";
00249  M00S00247.exdrvr  +++|
00250  M00S00248.exdrvr  +++|#
00251  M00S00249.exdrvr  +++|*     SEND K-DISPLAY MESSAGE TO OPERATOR INDICATING EMPTY CELL.
00252  M00S00250.exdrvr  +++|#
00253  M00S00251.exdrvr  +++|
00254  M00S00252.exdrvr  +++|          IF LLR$PRCNME[0] NQ REQTYP4"INITHW"  # NOT SRV CELL LOAD #
00255  M00S00253.exdrvr  +++|            AND NOT (MS$MSG[0] EQ HFC$ACCR  # NOT UCP LOAD TO MATRIX #
00256  M00S00254.exdrvr  +++|            AND LLR$RQI[0] NQ REQNAME"RQIINT")
00257  M00S00255.exdrvr  +++|          THEN                       # SEND K-DISPLAY MESSAGE #
00258  M00S00256.exdrvr  +++|            BEGIN  # K #
00259  M00S00257.exdrvr  +++|            P<KWORD> = LOC(LLR$KWORDS[0]);
00260  M00S00258.exdrvr  +++|            KW$WORD[0] = 0;
00261  M00S00259.exdrvr  +++|            KW$LINE1[0] = KM"KM2";
00262  M00S00260.exdrvr  +++|            KW$LINE2[0] = KM"KM20";  # ASSUME INPUT TRAY EMPTY #
00263  M00S00261.exdrvr  +++|            IF MS$MSG[0] EQ HFC$ACCR
00264  M00S00262.exdrvr  +++|            THEN                     # MATRIX CELL WAS EMPTY #
00265  M00S00263.exdrvr  +++|              BEGIN  # RESET #
00266  M00S00264.exdrvr  +++|              KW$LINE2[0] = KM"KM7";
00267  M00S00265.exdrvr  +++|              KW$DF[0] = TRUE;       # SEND TO JOB DAYFILE #
00268  M00S00266.exdrvr  +++|              KW$IC[0] = TRUE;       # SET IMMEDIATE COMPLETION #
00269  M00S00267.exdrvr  +++|              END  # RESET #
00270  M00S00268.exdrvr  +++|
00271  M00S00269.exdrvr  +++|            KW$RPGO[0] = TRUE;       # ALLOW GO RESPONSE #
00272  M00S00270.exdrvr  +++|            KP$EQ = UD$ESTO[LLR$CU[0]];  # PRESET MESSAGE PARAMETERS #
00273  M00S00271.exdrvr  +++|            P<MWBTMP> = LOC(UD$CAMF[LLR$CU[0]]);
00274  M00S00272.exdrvr  +++|            P<FETMWB> = MWB$ADDR[LLR$CIF[0]];
00275  M00S00273.exdrvr  +++|            P<FETMRA> = P<FETMWB> - 1;
00276  M00S00274.exdrvr  +++|            P<FETMRB> = FRA$MRBADR[0];
00277  M00S00275.exdrvr  +++|            KP$CN = FMR$CHAN[0];
00278  M00S00276.exdrvr  +++|            KP$DT = SM$ID[LLR$SMO[0]];
00279  M00S00277.exdrvr  +++|            KP$YA = LLR$Y[0];        # SET EMPTY CELL #
00280  M00S00278.exdrvr  +++|            KP$ZA = LLR$Z[0];
00281  M00S00279.exdrvr  +++|            KREQ(LOC(KWORD),KLINK);  # SEND K-DISPLAY REQUEST #
00282  M00S00280.exdrvr  +++|            END  # K #
00283  M00S00281.exdrvr  +++|
00284  M00S00282.exdrvr  +++|          END  # EXIT #
00285  M00S00283.exdrvr  +++|
00286  M00S00284.exdrvr  +++|        IF LLR$DRD[0] EQ 0
00287  M00S00285.exdrvr  +++|        THEN                         # UPPER DRD EMPTY #
00288  M00S00286.exdrvr  +++|          BEGIN  # UPPER #
00289  M00S00287.exdrvr  +++|          D0$FULL[LLR$SMO[0]] = FALSE;
00290  M00S00288.exdrvr  +++|          END  # UPPER #
00291  M00S00289.exdrvr  +++|
00292  M00S00290.exdrvr  +++|        ELSE                         # LOWER DRD EMPTY #
00293  M00S00291.exdrvr  +++|          BEGIN  # LOWER #
00294  M00S00292.exdrvr  +++|          D1$FULL[LLR$SMO[0]] = FALSE;
00295  M00S00293.exdrvr  +++|          END  # LOWER #
00296  M00S00294.exdrvr  +++|
00297  M00S00295.exdrvr  +++|        GOTO ACQCART1;
00298  M00S00296.exdrvr  +++|        END  # NO LOAD #
00299  M00S00297.exdrvr  +++|
00300  M00S00298.exdrvr  +++|      IF MS$MSG[0] EQ HFC$ACCR
00301  M00S00299.exdrvr  +++|      THEN                           # SET DRIVER RETURN CODE IN LLRQ #
00302  M00S00300.exdrvr  +++|        BEGIN  # SET #
00303  M00S00301.exdrvr  +++|        LLR$DR[0] = RESPTYP4"UNK$CART";
00304  M00S00302.exdrvr  +++|        END  # SET #
00305  M00S00303.exdrvr  +++|
00306  M00S00304.exdrvr  +++|      TEMPCSN0 = MS$CART0[0];        # MOVE CSN TO MSG BUFFER #
00307  M00S00305.exdrvr  +++|      TEMPCSN1 = MS$CART1[0];
00308  M00S00306.exdrvr  +++|      TEMPCSN2 = MS$CART2[0];
00309  M00S00307.exdrvr  +++|      ZFILL(UDT$MSG,MSGLT);          # CLEAR STORAGE BUFFER #
00310  M00S00308.exdrvr  +++|      SM$TOPDRD[LLR$SMO[0]] = NOT SM$TOPDRD[LLR$SMO[0]];
00311  M00S00309.exdrvr  +++|      P<UDT$MSG> = P<MBFHDR> + 1;
00312  M00S00310.exdrvr  +++|      MS$CART0[0] = TEMPCSN0;
00313  M00S00311.exdrvr  +++|      MS$CART1[0] = TEMPCSN1;
00314  M00S00312.exdrvr  +++|      MS$CART2[0] = TEMPCSN2;
00315  M00S00313.exdrvr  +++|      MS$MSG[0] = HFC$RCLBP0;        # SET *READ LABEL* FUNCTION #
00316  M00S00314.exdrvr  +++|      MBF$WORD[0] = 0;               # CLEAR MESSAGE STATUS #
00317  M00S00315.exdrvr  +++|      MBF$SAVE[0] = SAVEMOST;
00318  M00S00316.exdrvr  +++|      LLR$RS[0] = PROCST"CONT2";
00319  M00S00317.exdrvr  +++|
00320  M00S00318.exdrvr  +++|#
00321  M00S00319.exdrvr  +++|*     ISSUE M860 MESSAGE TO READ CARTRIDGE LABEL.
00322  M00S00320.exdrvr  +++|#
00323  M00S00321.exdrvr  +++|
00324  M00S00322.exdrvr  +++|ACQREAD:
00325  M00S00323.exdrvr  +++|      P<MBFHDR> = LLR$MBH[0];
00326  M00S00324.exdrvr  +++|      IF LABELBUSY AND NOT MBF$ACTIVE[0]
00327  M00S00325.exdrvr  +++|      THEN                           # ANOTHER REQUEST HAS LABEL BUF #
00328  M00S00326.exdrvr  +++|        BEGIN  # WAIT #
00329  M00S00327.exdrvr  +++|        RETURN;                      # WAIT FOR FREE LABEL BUFFER #
00330  M00S00328.exdrvr  +++|        END  # WAIT #
00331  M00S00329.exdrvr  +++|
00332  M00S00330.exdrvr  +++|      LABELBUSY = TRUE;              # RESERVE LABEL BUFFER #
00333  M00S00331.exdrvr  +++|      SENDMSG;                       # SEND M860 MESSAGE #
00334  M00S00332.exdrvr  +++|      IF MBF$SBADDR[0] EQ 0          ##
00335  M00S00333.exdrvr  +++|        AND LLR$DR[0] EQ RESPTYP4"OK4"  # GOOD HARDWARE #
00336  M00S00334.exdrvr  +++|      THEN                           # RESPONSE NOT YET RECEIVED #
00337  M00S00335.exdrvr  +++|        BEGIN  # RETRY #
00338  M00S00336.exdrvr  +++|        RETURN;
00339  M00S00337.exdrvr  +++|        END  # RETRY #
00340  M00S00338.exdrvr  +++|
00341  M00S00339.exdrvr  +++|      IF LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"  # HARDWARE ERROR #
00342  M00S00340.exdrvr  +++|      THEN                           # LABEL NOT NEEDED #
00343  M00S00341.exdrvr  +++|        BEGIN  # M860 #
00344  M00S00342.exdrvr  +++|        LABELBUSY = FALSE;
00345  M00S00343.exdrvr  +++|        GOTO ACQCART1;
00346  M00S00344.exdrvr  +++|        END  # M860 #
00347  M00S00345.exdrvr  +++|
00348  M00S00346.exdrvr  +++|      P<UDT$MSG> = MBF$SBADDR[0];
00349  M00S00347.exdrvr  +++|      IF LLR$PRCNME[0] EQ REQTYP4"INITHW"
00350  M00S00348.exdrvr  +++|      THEN                           # LABEL NOT NEEDED #
00351  M00S00349.exdrvr  +++|        BEGIN  # CLEAR #
00352  M00S00350.exdrvr  +++|        LABELBUSY = FALSE;
00353  M00S00351.exdrvr  +++|        END  # CLEAR #
00354  M00S00352.exdrvr  +++|
00355  M00S00353.exdrvr  +++|      IF MS$ASS$DT[0] EQ 0           # NO LABEL RETURNED #
00356  M00S00354.exdrvr  +++|        OR LAB$ALL[0] EQ 0           # LABEL HAS ALL ZEROES #
00357  M00S00355.exdrvr  +++|      THEN                           # NO LABEL ON CARTRIDGE #
00358  M00S00356.exdrvr  +++|        BEGIN  # NO LABEL #
00359  M00S00357.exdrvr  +++|        LLR$DR[0] = RESPTYP4"UNK$CART";
00360  M00S00358.exdrvr  +++|        ZFILL(LABEL$CART,LABLEN);    # CLEAR LABEL BUFFER #
00361  M00S00359.exdrvr  +++|        LAB$CSNA[0] = MS$CART0[0];   # MOVE CSN TO LABEL #
00362  M00S00360.exdrvr  +++|        LAB$CSNB[0] = MS$CART1A[0];
00363  M00S00361.exdrvr  +++|        LAB$CSN1A[0] = MS$CART1B[0];
00364  M00S00362.exdrvr  +++|        LAB$CSN1B[0] = MS$CART2[0];
00365  M00S00363.exdrvr  +++|        GOTO ACQCART1;
00366  M00S00364.exdrvr  +++|        END  # NO LABEL #
00367  M00S00365.exdrvr  +++|
00368  M00S00366.exdrvr  +++|      LLR$DR[0] = RESPTYP4"CART$LB$ERR";  # ASSUME SOME OF LABEL GOOD #
00369  M00S00367.exdrvr  +++|      P<HLRQ> = LLR$UCPRA[0];        # LOCATE FAMILY/SUBFAMILY #
00370  M00S00368.exdrvr  +++|      P<TDAM> = LOC(HLR$TDAM[0]);
00371  M00S00369.exdrvr  +++|      IF LAB$CSNA[0] EQ MS$CART0[0]  # HEX CSN #
00372  M00S00370.exdrvr  +++|        AND LAB$CSNB[0] EQ MS$CART1A[0]  ##
00373  M00S00371.exdrvr  +++|        AND LAB$CSN1A[0] EQ MS$CART1B[0]  ##
00374  M00S00372.exdrvr  +++|        AND LAB$CSN1B[0] EQ MS$CART2[0]  ##
00375  M00S00373.exdrvr  +++|        AND ((LAB$CSNT[0] EQ LLR$CSNT[0]  # CYBER CSN #
00376  M00S00374.exdrvr  +++|        AND LAB$FMLY[0] EQ TDAMFAM   # FAMILY #
00377  M00S00375.exdrvr  +++|        AND LAB$SF[0] EQ TDAMSBF     # SUBFAMILY #
00378  M00S00376.exdrvr  +++|        AND LAB$SMID[0] EQ LLR$SMA[0]  # SM ID #
00379  M00S00377.exdrvr  +++|        AND LAB$Y[0] EQ LLR$Y[0]     # LOCATION #
00380  M00S00378.exdrvr  +++|        AND LAB$Z[0] EQ LLR$Z[0])  ##
00381  M00S00379.exdrvr  +++|        OR LLR$PRCNME[0] EQ REQTYP4"INITHW"
00382  M00S00380.exdrvr  +++|        OR LLR$RQI[0] LS REQNAME"RQITEST")  # UCP #
00383  M00S00381.exdrvr  +++|      THEN                           # NORMAL READ-LABEL #
00384  M00S00382.exdrvr  +++|        BEGIN  # OK #
00385  M00S00383.exdrvr  +++|        LLR$DR[0] = RESPTYP4"OK4";
00386  M00S00384.exdrvr  +++|        END  # OK #
00387  M00S00385.exdrvr  +++|
00388  M00S00386.exdrvr  +++|      IF (LAB$CSNA[0] NQ MS$CART0[0] # HEX CSN #
00389  M00S00387.exdrvr  +++|        OR LAB$CSNB[0] NQ MS$CART1A[0]  ##
00390  M00S00388.exdrvr  +++|        OR LAB$CSN1A[0] NQ MS$CART1B[0]  ##
00391  M00S00389.exdrvr  +++|        OR LAB$CSN1B[0] NQ MS$CART2[0])  ##
00392  M00S00390.exdrvr  +++|        AND ((LAB$CSNT[0] NQ LLR$CSNT[0]  # CYBER CSN #
00393  M00S00391.exdrvr  +++|        AND LAB$FMLY[0] NQ TDAMFAM   # FAMILY #
00394  M00S00392.exdrvr  +++|        AND LAB$SF[0] NQ TDAMSBF     # SUBFAMILY #
00395  M00S00393.exdrvr  +++|        AND LAB$SMID[0] NQ LLR$SMA[0]  # SM ID #
00396  M00S00394.exdrvr  +++|        AND (LAB$Y[0] NQ LLR$Y[0]    # LOCATION #
00397  M00S00395.exdrvr  +++|        OR LAB$Z[0] NQ LLR$Z[0]))  ##
00398  M00S00396.exdrvr  +++|        OR LLR$PRCNME[0] EQ REQTYP4"INITHW"
00399  M00S00397.exdrvr  +++|        OR LLR$RQI[0] LS REQNAME"RQITEST")  # UCP #
00400  M00S00398.exdrvr  +++|      THEN                           # TOTAL LABEL MISMATCH #
00401  M00S00399.exdrvr  +++|        BEGIN  # UNKNOWN #
00402  M00S00400.exdrvr  +++|        LLR$DR[0] = RESPTYP4"UNK$CART";
00403  M00S00401.exdrvr  +++|        END  # UNKNOWN #
00404  M00S00402.exdrvr  +++|
00405  M00S00403.exdrvr  +++|ACQCART1:
00406  M00S00404.exdrvr  +++|      IF LLR$CSNT[0] NQ 0            # *TDAM* REQUEST #
00407  M00S00405.exdrvr  +++|        AND (LLR$DR[0] EQ RESPTYP4"UNK$CART"  # UNEXPECTED LABEL #
00408  M00S00406.exdrvr  +++|        OR LLR$DR[0] EQ RESPTYP4"CART$LB$ERR")
00409  M00S00407.exdrvr  +++|      THEN                           # EJECT CARTRIDGE #
00410  M00S00408.exdrvr  +++|        BEGIN  # EJECT #
00411  M00S00409.exdrvr  +++|        LLR$Y[0] = SM$EXIT$TY;
00412  M00S00410.exdrvr  +++|        LLR$Z[0] = SM$TY$Z;
00413  M00S00411.exdrvr  +++|        END  # EJECT #
00414  M00S00412.exdrvr  +++|
00415  M00S00413.exdrvr  +++|      LLR$RS[0] = PROCST"COMPLETE";  # ASSUME REQUEST COMPLETE #
00416  M00S00414.exdrvr  +++|        IF MS$RETCODE[0] EQ HRC$TRAYPR    # INPUT TRAY EMPTY #
00417  M00S00415.exdrvr  +++|        AND NOT LLR$UCPABT[0]        # EXIT IF *SSLABEL* ABORTED #
00418  M00S00416.exdrvr  +++|      THEN                           # RETRY LOAD FROM INPUT TRAY #
00419  M00S00417.exdrvr  +++|        BEGIN  # RETRY #
00420  M00S00418.exdrvr  +++|        LLR$RS[0] = PROCST"INITIAL";
00421  M00S00419.exdrvr  +++|        END  # RETRY #
00422  M00S00420.exdrvr  +++|
00423  M00S00421.exdrvr  +++|      IF MBF$SBADDR[0] NQ 0
00424  M00S00422.exdrvr  +++|      THEN                           # CLEAR SBT ENTRY #
00425  M00S00423.exdrvr  +++|        BEGIN  # CLEAR #
00426  M00S00424.exdrvr  +++|        P<UDT$MSG> = MBF$SBADDR[0];
00427  M00S00425.exdrvr  +++|        ZFILL(UDT$MSG,MSGLT);
00428  M00S00426.exdrvr  +++|        END  # CLEAR #
00429  M00S00427.exdrvr  +++|
00430  M00S00428.exdrvr  +++|      MBF$WORD[0] = 0;               # CLEAR MESSAGE STATUS #
00431  M00S00429.exdrvr  +++|      RETURN;
00432  M00S00430.exdrvr  +++|
00433  M00S00431.exdrvr  +++|ACQCART2:
00434  M00S00432.exdrvr  +++|      MESSAGE(FEMSG,UDFL1);
00435  M00S00433.exdrvr  +++|      ABORT;
00436  M00S00434.exdrvr  +++|      END  # ACQCART #
00437  M00S00435.exdrvr  +++|
00438  M00S00436.exdrvr  +++|    TERM
00439  M00S00437.exdrvr  +++|PROC BMLOG;
00440  M00S00438.exdrvr  +++|# TITLE BMLOG - SEND MESSAGE TO BML.                                  #
00441  M00S00439.exdrvr  +++|
00442  M00S00440.exdrvr  +++|      BEGIN  # BMLOG #
00443  M00S00441.exdrvr  +++|
00444  M00S00442.exdrvr  +++|#
00445  M00S00443.exdrvr  +++|**    BMLOG - SEND MESSAGE TO BML.
00446  M00S00444.exdrvr  +++|*
00447  M00S00445.exdrvr  +++|*     *BMLOG* SENDS ERROR LOG AND BUFFERED LOG MESSAGES TO THE
00448  M00S00446.exdrvr  +++|*     BINARY MAINTENANCE LOG.
00449  M00S00447.exdrvr  +++|*
00450  M00S00448.exdrvr  +++|*     PROC BMLOG
00451  M00S00449.exdrvr  +++|*
00452  M00S00450.exdrvr  +++|*     ENTRY      THE MESSAGE FET BASED ARRAYS POINT TO THE ASSOCIATED
00453  M00S00451.exdrvr  +++|*                CHANNEL THROUGH WHICH THE M860 RESPONSE WAS SENT.
00454  M00S00452.exdrvr  +++|*
00455  M00S00453.exdrvr  +++|*     EXIT       THE M860 RESPONSE HAS BEEN REFORMATTED AND SENT TO
00456  M00S00454.exdrvr  +++|*                THE BML.  THE ASSOCIATED *HLRQ* HAS BEEN UPDATED, IF
00457  M00S00455.exdrvr  +++|*                PROCESSING BUFFERED LOG DATA.
00458  M00S00456.exdrvr  +++|*
00459  M00S00457.exdrvr  +++|*     MESSAGES   *EXEC ABNORMAL, BMLOG2.* - AN ERROR OCCURRED
00460  M00S00458.exdrvr  +++|*                                           WHEN READING THE
00461  M00S00459.exdrvr  +++|*                                           LOG DATA FROM THE
00462  M00S00460.exdrvr  +++|*                                           MESSAGE FET.
00463  M00S00461.exdrvr  +++|*
Line S00462 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
00464  M01S00462.exdrvr2 ---|*                *MASSTOR BUFFERED LOG ERROR.* - AN ERROR OCCURRED WHEN
00465  M01S00463.exdrvr2 ---|*                                                READING THE DRD
00466  M01S00464.exdrvr2 ---|*                                                BUFFERED LOG.
Line S00001 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
00467  M01S00001.exdrvr2 +++|*                *BUFFERED LOG ERROR.* - AN ERROR OCCURRED
00468  M01S00002.exdrvr2 +++|*                                        WHEN READING THE
00469  M01S00003.exdrvr2 +++|*                                        DRD BUFFERED LOG.
00470  M00S00465.exdrvr  +++|#
00471  M00S00466.exdrvr  +++|
00472  M00S00467.exdrvr  +++|
00473  M00S00468.exdrvr  +++|#
00474  M00S00469.exdrvr  +++|****  PROC BMLOG - XREF LIST BEGIN.
00475  M00S00470.exdrvr  +++|#
00476  M00S00471.exdrvr  +++|
00477  M00S00472.exdrvr  +++|      XREF
00478  M00S00473.exdrvr  +++|        BEGIN
00479  M00S00474.exdrvr  +++|        PROC ABORT;                  # ABORT #
00480  M00S00475.exdrvr  +++|        PROC GDATA;                  # GET DATA FROM READ BUFFER #
00481  M00S00476.exdrvr  +++|        PROC MESSAGE;                # ISSUE PREPARED MESSAGE #
00482  M00S00477.exdrvr  +++|        PROC MSG;                    # ISSUE MESSAGE #
00483  M00S00478.exdrvr  +++|        PROC ZFILL;                  # ZERO-FILL BUFFER #
00484  M00S00479.exdrvr  +++|        END
00485  M00S00480.exdrvr  +++|
00486  M00S00481.exdrvr  +++|#
00487  M00S00482.exdrvr  +++|****  PROC BMLOG - XREF LIST END.
00488  M00S00483.exdrvr  +++|#
00489  M00S00484.exdrvr  +++|
Line S00485 Modification History
M01 (Removed by) drvrr0f
Seq #  *Modification Id* Act 
----------------------------+
00490  M01S00485.drvrr0f ---|      DEF BFLLEN     #82#;           # M860 BUF LOG LENGTH #
00491  M01S00486.drvrr0f ---|      DEF BFLLENM1   #81#;           # M860 BUF LOG LENGTH - 1 #
Line S00001 Modification History
M01 (Added by) drvrr0f
Seq #  *Modification Id* Act 
----------------------------+
00492  M01S00001.drvrr0f +++|      DEF BFLLEN     #163#;   # M860 BUF LOG LENGTH #
00493  M01S00002.drvrr0f +++|      DEF BFLLENM1   #162#;   # M860 BUF LOG LENGTH - 1 #
00494  M00S00487.exdrvr  +++|      DEF CUCODE     #O"106"#;       # CU COMPONENT CODE #
00495  M00S00488.exdrvr  +++|      DEF ERLMLEN    #20#;           # ERROR LOG BML MSG LENGTH #
00496  M00S00489.exdrvr  +++|      DEF FORLEN     #23#;           # FORMATTING BUFFER LENGTH #
00497  M00S00490.exdrvr  +++|      DEF MAXBLC     #19#;           # NUMBER OF BUF LOG COUNTERS #
00498  M00S00491.exdrvr  +++|      DEF MAXBLCM1   #18#;           # NUMBER OF BUF LOG COUNTERS - 1 #
00499  M00S00492.exdrvr  +++|      DEF M860WLEN   #32#;           # M860 WORD LENGTH #
Line S00493 Modification History
M01 (Removed by) drvrr0f
Seq #  *Modification Id* Act 
----------------------------+
00500  M01S00493.drvrr0f ---|      DEF PBUFBITS   #8#;            # EXTRA BITS PER BUF LOG ENTRY #
00501  M01S00494.drvrr0f ---|      DEF PBUFLEN    #10#;           # FULL WORDS PER BUF LOG ENTRY #
00502  M00S00495.exdrvr  ---|      DEF SMCODE     #O"107"#;       # SM COMPONENT CODE #
00503  M00S00496.exdrvr  ---|      DEF USFORNUM   #O"1200"#;      # USAGE FORMAT NUMBER #
00504  M00S00497.exdrvr  ---|
00505  M00S00498.exdrvr  ---|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00506  M00S00499.exdrvr  ---|*CALL,COMBFAS
00507  M00S00500.exdrvr  ---|*CALL,COMBFET
00508  M00S00501.exdrvr  ---|*CALL,COMBHFC
00509  M00S00502.exdrvr  ---|*CALL,COMBLRQ
00510  M00S00503.exdrvr  ---|*CALL,COMBUDT
00511  M00S00504.exdrvr  ---|*CALL,COMXHLR
00512  M00S00505.exdrvr  ---|*CALL,COMXMSC
00513  M00S00506.exdrvr  ---|
00514  M00S00507.exdrvr  ---|      ITEM ASSOCDATA  U;             # ASSOCIATED DATA LENGTH #
00515  M00S00508.exdrvr  ---|      ITEM BUFBIT     U;             # BUF LOG BIT INDEX #
00516  M00S00509.exdrvr  ---|      ITEM BUFWORD    U;             # BUF LOG WORD INDEX #
Line S00003 Modification History
M01 (Added by) drvrr0f
Seq #  *Modification Id* Act 
----------------------------+
00517  M01S00003.drvrr0f +++|      ITEM FIRSTBIT    U;        # FIRST BIT OF BUF LOG DRD ENTRY #
00518  M00S00510.exdrvr  +++|      ITEM FIRSTPART  U;             # LENGTH OF 1ST PART M860 WORD #
00519  M00S00511.exdrvr  +++|      ITEM I          I;             # INDEX #
00520  M00S00512.exdrvr  +++|      ITEM J          I;             # INDEX #
00521  M00S00513.exdrvr  +++|      ITEM STAT       U;             # LOG TRANSFER STATUS #
00522  M00S00514.exdrvr  +++|
00523  M00S00515.exdrvr  +++|#
00524  M00S00516.exdrvr  +++|*     ARRAYS TO SEND BML MESSAGE FROM.
00525  M00S00517.exdrvr  +++|#
00526  M00S00518.exdrvr  +++|
00527  M00S00519.exdrvr  +++|      ARRAY LOGHDR [0:0] S(1);       # LOG HEADER WORD #
00528  M00S00520.exdrvr  +++|        BEGIN
00529  M00S00521.exdrvr  +++|        ITEM LH$WORD    U(00,00,60);
00530  M00S00522.exdrvr  +++|        ITEM LH$CNT     U(00,00,12); # LOG COUNT #
00531  M00S00523.exdrvr  +++|        END
00532  M00S00524.exdrvr  +++|
00533  M00S00525.exdrvr  +++|      ARRAY FORBUF [0:0] S(FORLEN);  # FORMATTING BUFFER #
00534  M00S00526.exdrvr  +++|        BEGIN
00535  M00S00527.exdrvr  +++|        ITEM FB$WORD0   U(00,00,60);  # FORMAT BUFFER WORD 0 #
00536  M00S00528.exdrvr  +++|        ITEM FB$DC      U(00,00,12);  # COMPONENT CODE #
00537  M00S00529.exdrvr  +++|        ITEM FB$FNUM    U(00,12,12);  # FORMAT NUMBER #
00538  M00S00530.exdrvr  +++|        ITEM FB$CHAN    U(00,30,06);  # CHANNEL #
00539  M00S00531.exdrvr  +++|        ITEM FB$SMUN    U(00,48,06);  # SM UNIT NUMBER #
00540  M00S00532.exdrvr  +++|        ITEM FB$DRD     U(00,54,06);  # DRD #
00541  M00S00533.exdrvr  +++|
00542  M00S00534.exdrvr  +++|        ITEM FB$WORD1   U(01,00,60);  # FORMAT BUFFER WORD 1 #
00543  M00S00535.exdrvr  +++|        ITEM FB$ESTO    U(01,00,12);  # EST ORDINAL #
00544  M00S00536.exdrvr  +++|
00545  M00S00537.exdrvr  +++|        ITEM FB$WORD2   U(02,00,60);  # FORMAT BUFFER WORD 2 #
00546  M00S00538.exdrvr  +++|        ITEM FB$ERLOG   U(02,00,60);  # ERROR LOG DATA FWA #
00547  M00S00539.exdrvr  +++|        ITEM FB$ERLFNUM U(02,00,08);  # ERROR LOG FORMAT NUMBER #
00548  M00S00540.exdrvr  +++|        ITEM FB$Y       U(02,21,05);  # ROW NUMBER #
00549  M00S00541.exdrvr  +++|        ITEM FB$Z       U(02,26,04);  # COLUMN NUMBER #
00550  M00S00542.exdrvr  +++|
00551  M00S00543.exdrvr  +++|        ITEM FB$WORD3   U(03,00,60);  # FORMAT BUFFER WORD 3 #
00552  M00S00544.exdrvr  +++|        ITEM FB$CSN     C(03,00,10);  # DISPLAY-CODE CSN #
00553  M00S00545.exdrvr  +++|
00554  M00S00546.exdrvr  +++|        ITEM FB$WORD4   U(04,00,60);  # FORMAT BUFFER WORD 4 #
00555  M00S00547.exdrvr  +++|        ITEM FB$BFLOG   U(04,00,60);  # BUF LOG DATA FWA #
00556  M00S00548.exdrvr  +++|
00557  M00S00549.exdrvr  +++|        ITEM FB$WORD19  U(19,00,60);  # FORMAT BUFFER WORD 19 #
00558  M00S00550.exdrvr  +++|        ITEM FB$EXCESS  U(19,04,56);  # EXCESS BITS #
00559  M00S00551.exdrvr  +++|        END
00560  M00S00552.exdrvr  +++|
00561  M00S00553.exdrvr  +++|#
00562  M00S00554.exdrvr  +++|*     ARRAYS TO UNPACK BUFFERED LOG DATA.
00563  M00S00555.exdrvr  +++|#
00564  M00S00556.exdrvr  +++|
00565  M00S00557.exdrvr  +++|      ARRAY TMPBUF [0:BFLLENM1] S(1);  # FULL BUF LOG #
00566  M00S00558.exdrvr  +++|        BEGIN
00567  M00S00559.exdrvr  +++|        ITEM TBFWORD    U(00,00,60);  # TEMP BUF WORD #
00568  M00S00560.exdrvr  +++|        END
00569  M00S00561.exdrvr  +++|
00570  M00S00562.exdrvr  +++|      ARRAY TMPBYTE [0:MAXBLCM1] S(1);  # BYTE-REVERSED COUNTERS #
00571  M00S00563.exdrvr  +++|        BEGIN
00572  M00S00564.exdrvr  +++|        ITEM TBYWORD    U(00,00,60);  # TEMP BYTE BUF WORD #
00573  M00S00565.exdrvr  +++|        END
00574  M00S00566.exdrvr  +++|
00575  M00S00567.exdrvr  +++|      BASED
00576  M00S00568.exdrvr  +++|      ARRAY TMPLOG [0:MAXBLCM1] S(1);  # UNPACKED COUNTERS #
00577  M00S00569.exdrvr  +++|        BEGIN
00578  M00S00570.exdrvr  +++|        ITEM TLGWORD    U(00,00,60);  # BUF LOG WORD #
00579  M00S00571.exdrvr  +++|        END
00580  M00S00572.exdrvr  +++|
00581  M00S00573.exdrvr  +++|#
00582  M00S00574.exdrvr  +++|*     BASED ARRAYS TO REFERENCE LOG DATA.
00583  M00S00575.exdrvr  +++|#
00584  M00S00576.exdrvr  +++|
00585  M00S00577.exdrvr  +++|      BASED
00586  M00S00578.exdrvr  +++|      ARRAY BFBYTE [0:0] S(MAXBLC);  # UNPACKED BUF LOG DATA #
00587  M00S00579.exdrvr  +++|        BEGIN
00588  M00S00580.exdrvr  +++|        ITEM BFL$STWR   U(04,00,60);  # STRIPES WRITTEN #
00589  M00S00581.exdrvr  +++|        ITEM BFL$SWRE   U(05,00,60);  # SOFT WRITE ERRORS #
00590  M00S00582.exdrvr  +++|        ITEM BFL$STDM   U(08,00,60);  # STRIPES DEMARKED #
00591  M00S00583.exdrvr  +++|        ITEM BFL$STRD   U(10,00,60);  # STRIPES READ #
00592  M00S00584.exdrvr  +++|        ITEM BFL$SRDE   U(11,00,60);  # SOFT READ ERRORS #
00593  M00S00585.exdrvr  +++|        ITEM BFL$CRLD   U(15,00,60);  # LOAD COUNT #
00594  M00S00586.exdrvr  +++|        ITEM BFL$LDER   U(16,00,60);  # LOAD ERRORS #
00595  M00S00587.exdrvr  +++|        END
00596  M00S00588.exdrvr  +++|
00597  M00S00589.exdrvr  +++|      BASED
00598  M00S00590.exdrvr  +++|      ARRAY LOGADDR [0:0] S(MAXBLC); ;    # LOG FWA #
00599  M00S00591.exdrvr  +++|                                               CONTROL EJECT;
00600  M00S00592.exdrvr  +++|
00601  M00S00593.exdrvr  +++|#
00602  M00S00594.exdrvr  +++|*     READ LOG INTO FORMAT BUFFER.
00603  M00S00595.exdrvr  +++|#
00604  M00S00596.exdrvr  +++|
00605  M00S00597.exdrvr  +++|      ZFILL(FORBUF,FORLEN);          # CLEAR BUFFER #
00606  M00S00598.exdrvr  +++|      LH$WORD[0] = 0;
00607  M00S00599.exdrvr  +++|      ASSOCDATA = ((MS$ASS$DT[0]*2)+14)/15;
00608  M00S00600.exdrvr  +++|      P<LOGADDR> = LOC(FB$ERLOG[0]);  # ASSUME ERROR LOG #
00609  M00S00601.exdrvr  +++|      IF MS$MSG[0] GQ HFC$DBLD0      ##
00610  M00S00602.exdrvr  +++|        AND MS$MSG[0] LQ HFC$DBLD7
00611  M00S00603.exdrvr  +++|      THEN                           # PROCESSING BUFFERED LOG #
00612  M00S00604.exdrvr  +++|        BEGIN  # RESET #
00613  M00S00605.exdrvr  +++|        ZFILL(TMPBUF,BFLLEN);        # CLEAR BUFFERS #
00614  M00S00606.exdrvr  +++|        ZFILL(TMPBYTE,MAXBLC);
00615  M00S00607.exdrvr  +++|        P<LOGADDR> = LOC(TMPBUF);
00616  M00S00608.exdrvr  +++|        END  # RESET #
00617  M00S00609.exdrvr  +++|
00618  M00S00610.exdrvr  +++|      IF MS$ASS$DT[0] NQ 0
00619  M00S00611.exdrvr  +++|      THEN                           # LOG EXISTS #
00620  M00S00612.exdrvr  +++|        BEGIN  # READ #
00621  M00S00613.exdrvr  +++|        GDATA(FETMRB,LOGADDR,ASSOCDATA,STAT);
00622  M00S00614.exdrvr  +++|        IF STAT NQ 0
00623  M00S00615.exdrvr  +++|        THEN                         # ERROR IN READING LOG #
00624  M00S00616.exdrvr  +++|          BEGIN  # ABORT #
00625  M00S00617.exdrvr  +++|          FE$RTN[0] = "BMLOG2.";
00626  M00S00618.exdrvr  +++|          GOTO BMLOG1;
00627  M00S00619.exdrvr  +++|          END  # ABORT #
00628  M00S00620.exdrvr  +++|
00629  M00S00621.exdrvr  +++|        END  # READ #
00630  M00S00622.exdrvr  +++|
00631  M00S00623.exdrvr  +++|#
00632  M00S00624.exdrvr  +++|*     SET HEADER FIELDS COMMON TO BOTH LOGS.
00633  M00S00625.exdrvr  +++|#
00634  M00S00626.exdrvr  +++|
00635  M00S00627.exdrvr  +++|      FB$CHAN[0] = FMR$CHAN[0];      # CHANNEL #
00636  M00S00628.exdrvr  +++|      FB$ESTO[0] = UD$ESTO[FMR$CU[0]];  # EST ORDINAL #
00637  M00S00629.exdrvr  +++|
00638  M00S00630.exdrvr  +++|#
00639  M00S00631.exdrvr  +++|*     COMPLETE ERROR LOG MESSAGE HEADER AND SEND TO BML.
00640  M00S00632.exdrvr  +++|#
00641  M00S00633.exdrvr  +++|
00642  M00S00634.exdrvr  +++|      IF P<LOGADDR> EQ LOC(FB$ERLOG[0])
00643  M00S00635.exdrvr  +++|      THEN                           # PROCESSING ERROR LOG #
00644  M00S00636.exdrvr  +++|        BEGIN  # ERROR LOG #
00645  M00S00637.exdrvr  +++|        FB$DC[0] = CUCODE;           # COMPONENT CODE #
00646  M00S00638.exdrvr  +++|        FB$FNUM[0] = FB$ERLFNUM[0];  # FORMAT NUMBER #
00647  M00S00639.exdrvr  +++|        FB$EXCESS[0] = 0;            # CLEAR EXCESS LOG INFO #
00648  M00S00640.exdrvr  +++|        LH$CNT[0] = ERLMLEN;
00649  M00S00641.exdrvr  +++|        MESSAGE(LOGHDR,BML);         # SEND ERROR LOG TO BML #
00650  M00S00642.exdrvr  +++|        RETURN;
00651  M00S00643.exdrvr  +++|        END  # ERROR LOG #
00652  M00S00644.exdrvr  +++|
00653  M00S00645.exdrvr  +++|#
00654  M00S00646.exdrvr  +++|*     COMPLETE HEADER FOR BUFFERED LOG BML MESSAGE.
00655  M00S00647.exdrvr  +++|#
00656  M00S00648.exdrvr  +++|
00657  M00S00649.exdrvr  +++|      IF MS$RETCODE[0] NQ 0
00658  M00S00650.exdrvr  +++|      THEN                           # BUFFERED LOG ERROR #
00659  M00S00651.exdrvr  +++|        BEGIN  # ERROR #
Line S00652 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
00660  M01S00652.exdrvr2 ---|        MSG(" MASSTOR BUFFERED LOG ERROR.",SYSUDF1);
Line S00004 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
00661  M01S00004.exdrvr2 +++|        MSG(" BUFFERED LOG ERROR.",SYSUDF1);
00662  M00S00653.exdrvr  +++|        IF MS$ASS$DT[0] EQ 0
00663  M00S00654.exdrvr  +++|        THEN                         # NO DATA TO PROCESS #
00664  M00S00655.exdrvr  +++|          BEGIN  # EXIT #
00665  M00S00656.exdrvr  +++|          RETURN;
00666  M00S00657.exdrvr  +++|          END  # EXIT #
00667  M00S00658.exdrvr  +++|
00668  M00S00659.exdrvr  +++|        END  # ERROR #
00669  M00S00660.exdrvr  +++|
00670  M00S00661.exdrvr  +++|      FB$DC[0] = SMCODE;             # COMPONENT CODE #
00671  M00S00662.exdrvr  +++|      FB$FNUM[0] = USFORNUM;         # FORMAT NUMBER #
00672  M00S00663.exdrvr  +++|      FB$SMUN[0] = SM$SUN[MS$MSQN$CN[0]];  # SM UNIT NUMBER #
00673  M00S00664.exdrvr  +++|      P<LLRQ> = D1$LLADR[MS$MSQN$CN[0]];  # ASSUME LOWER DRD #
00674  M00S00665.exdrvr  +++|      FB$DRD[0] = D1$SUN[MS$MSQN$CN[0]];  # DRD UNIT NUMBER #
00675  M00S00666.exdrvr  +++|      IF MS$MSQN$D0[0]
00676  M00S00667.exdrvr  +++|      THEN                           # UPPER DRD BEING PROCESSED #
00677  M00S00668.exdrvr  +++|        BEGIN  # RESET #
00678  M00S00669.exdrvr  +++|        P<LLRQ> = D0$LLADR[MS$MSQN$CN[0]];
00679  M00S00670.exdrvr  +++|        FB$DRD[0] = D0$SUN[MS$MSQN$CN[0]];  # DRD UNIT NUMBER #
00680  M00S00671.exdrvr  +++|        END  # RESET #
00681  M00S00672.exdrvr  +++|
00682  M00S00673.exdrvr  +++|      FB$Y[0] = LLR$Y[0];            # LOCATION #
00683  M00S00674.exdrvr  +++|      FB$Z[0] = LLR$Z[0];
00684  M00S00675.exdrvr  +++|      FB$CSN[0] = LLR$CSNT[0];       # DISPLAY-CODE CSN #
00685  M00S00676.exdrvr  +++|
00686  M00S00677.exdrvr  +++|#
00687  M00S00678.exdrvr  +++|*     UNPACK BUFFERED LOG AND SEND TO BML.
00688  M00S00679.exdrvr  +++|#
00689  M00S00680.exdrvr  +++|
Line S00681 Modification History
M01 (Removed by) drvrr0f
Seq #  *Modification Id* Act 
----------------------------+
00690  M01S00681.drvrr0f ---|      BUFWORD = MS$MSG$D[0] * PBUFLEN;  # PRESET BUF LOG LOCATION #
00691  M01S00682.drvrr0f ---|      BUFBIT = MS$MSG$D[0] * PBUFBITS;
Line S00004 Modification History
M01 (Added by) drvrr0f
Seq #  *Modification Id* Act 
----------------------------+
00692  M01S00004.drvrr0f +++|      FIRSTBIT = M860WLEN * MAXBLC * MS$MSG$D[0];  # SET START #
00693  M01S00005.drvrr0f +++|      BUFWORD = FIRSTBIT/60;
00694  M01S00006.drvrr0f +++|      BUFBIT = FIRSTBIT - (BUFWORD * 60);
00695  M00S00683.exdrvr  +++|      SLOWFOR I = 0 STEP 1 UNTIL MAXBLCM1
00696  M00S00684.exdrvr  +++|      DO                             # UNPACK 32-BIT WORDS #
00697  M00S00685.exdrvr  +++|        BEGIN  # UNPACK #
00698  M00S00686.exdrvr  +++|        FIRSTPART = 60 - BUFBIT;     # PRESET 1ST PART OF SPLIT WORD #
00699  M00S00687.exdrvr  +++|        IF FIRSTPART GR M860WLEN
00700  M00S00688.exdrvr  +++|        THEN                         # 32-BIT WORD NOT DIVIDED #
00701  M00S00689.exdrvr  +++|          BEGIN  # RESET #
00702  M00S00690.exdrvr  +++|          FIRSTPART = M860WLEN;
00703  M00S00691.exdrvr  +++|          END  # RESET #
00704  M00S00692.exdrvr  +++|
00705  M00S00693.exdrvr  +++|        B<0,FIRSTPART>TBYWORD[I] = B<BUFBIT,FIRSTPART>TBFWORD[BUFWORD];
00706  M00S00694.exdrvr  +++|                                     # MOVE FIRST PART OF WORD #
00707  M00S00695.exdrvr  +++|        IF FIRSTPART LS M860WLEN
00708  M00S00696.exdrvr  +++|        THEN                         # 32-BIT WORD HAS 2 PARTS #
00709  M00S00697.exdrvr  +++|          BEGIN  # SECOND #
00710  M00S00698.exdrvr  +++|          B<FIRSTPART,M860WLEN-FIRSTPART>TBYWORD[I] =
00711  M00S00699.exdrvr  +++|            B<0,M860WLEN-FIRSTPART>TBFWORD[BUFWORD+1];
00712  M00S00700.exdrvr  +++|          END  # SECOND #
00713  M00S00701.exdrvr  +++|
00714  M00S00702.exdrvr  +++|        BUFBIT = BUFBIT + M860WLEN;  # POSITION TO NEXT WORD #
00715  M00S00703.exdrvr  +++|        IF BUFBIT GQ 60
00716  M00S00704.exdrvr  +++|        THEN                         # NEXT WORD ON 60-BIT BOUNDARY #
00717  M00S00705.exdrvr  +++|          BEGIN  # NEXT #
00718  M00S00706.exdrvr  +++|          BUFBIT = BUFBIT - 60;
00719  M00S00707.exdrvr  +++|          BUFWORD = BUFWORD + 1;
00720  M00S00708.exdrvr  +++|          END  # NEXT #
00721  M00S00709.exdrvr  +++|
00722  M00S00710.exdrvr  +++|        END  # UNPACK #
00723  M00S00711.exdrvr  +++|
00724  M00S00712.exdrvr  +++|      P<TMPLOG> = LOC(FB$BFLOG[0]);
00725  M00S00713.exdrvr  +++|      SLOWFOR I = 0 STEP 1 UNTIL MAXBLCM1
00726  M00S00714.exdrvr  +++|      DO                             # REVERSE 8-BIT BYTES #
00727  M00S00715.exdrvr  +++|        BEGIN  # REVERSE #
00728  M00S00716.exdrvr  +++|        SLOWFOR J = 0 STEP 1 UNTIL 3
00729  M00S00717.exdrvr  +++|        DO                           # TRANSFER BYTES #
00730  M00S00718.exdrvr  +++|          BEGIN  # BYTE #
00731  M00S00719.exdrvr  +++|          B<60-M860WLEN+(8*J),8>TLGWORD[I] =
00732  M00S00720.exdrvr  +++|            B<8*(3-J),8>TBYWORD[I];
00733  M00S00721.exdrvr  +++|          END  # BYTE #
00734  M00S00722.exdrvr  +++|
00735  M00S00723.exdrvr  +++|        END  # REVERSE #
00736  M00S00724.exdrvr  +++|
00737  M00S00725.exdrvr  +++|      LH$CNT[0] = FORLEN;
00738  M00S00726.exdrvr  +++|      MESSAGE(LOGHDR,BML);           # SEND BUFFERED LOG TO BML #
00739  M00S00727.exdrvr  +++|
00740  M00S00728.exdrvr  +++|#
00741  M00S00729.exdrvr  +++|*     UPDATE EXEC CARTRIDGE STATISTICS.
00742  M00S00730.exdrvr  +++|#
00743  M00S00731.exdrvr  +++|
00744  M00S00732.exdrvr  +++|      P<BFBYTE> = LOC(FB$BFLOG[0]);
00745  M00S00733.exdrvr  +++|      P<HLRQ> = LLR$UCPRA[0];
00746  M00S00734.exdrvr  +++|      HLR$STRD[0] = BFL$STRD[0];     # STRIPES READ #
00747  M00S00735.exdrvr  +++|      HLR$STWR[0] = BFL$STWR[0];     # STRIPES WRITTEN #
00748  M00S00736.exdrvr  +++|      HLR$SRDE[0] = BFL$SRDE[0];     # SOFT READ ERRORS #
00749  M00S00737.exdrvr  +++|      HLR$SWRE[0] = BFL$SWRE[0];     # SOFT WRITE ERRORS #
00750  M00S00738.exdrvr  +++|      HLR$STDM[0] = BFL$STDM[0];     # STRIPES DEMARKED #
00751  M00S00739.exdrvr  +++|      HLR$CRLD[0] = BFL$CRLD[0];     # LOAD COUNT #
00752  M00S00740.exdrvr  +++|      HLR$LDER[0] = BFL$LDER[0];     # LOAD ERRORS #
00753  M00S00741.exdrvr  +++|      RETURN;
00754  M00S00742.exdrvr  +++|
00755  M00S00743.exdrvr  +++|BMLOG1:
00756  M00S00744.exdrvr  +++|      MESSAGE(FEMSG,UDFL1);
00757  M00S00745.exdrvr  +++|      ABORT;
00758  M00S00746.exdrvr  +++|      END  # BMLOG #
00759  M00S00747.exdrvr  +++|
00760  M00S00748.exdrvr  +++|    TERM
00761  M00S00749.exdrvr  +++|PROC CALLPP((FCODE));
00762  M00S00750.exdrvr  +++|# TITLE CALLPP - ACTIVATE THE PP MODULE *1SS*.                        #
00763  M00S00751.exdrvr  +++|
00764  M00S00752.exdrvr  +++|      BEGIN  # CALLPP #
00765  M00S00753.exdrvr  +++|
00766  M00S00754.exdrvr  +++|#
00767  M00S00755.exdrvr  +++|**    CALLPP - ACTIVATE THE PP MODULE *1SS*.
00768  M00S00756.exdrvr  +++|*
00769  M00S00757.exdrvr  +++|*     *CALLPP* SENDS A MESSAGE FROM A UDT MESSAGE BUFFER TO
00770  M00S00758.exdrvr  +++|*     THE M860 HARDWARE, THROUGH A MESSAGE WRITE FET BUFFER.
00771  M00S00759.exdrvr  +++|*     IT CALLS THE PP *1SS* IF IT IS NOT ALREADY ACTIVE ON
00772  M00S00760.exdrvr  +++|*     THE DESIRED CHANNEL.
00773  M00S00761.exdrvr  +++|*
00774  M00S00762.exdrvr  +++|*     PROC CALLPP ((FCODE))
00775  M00S00763.exdrvr  +++|*
00776  M00S00764.exdrvr  +++|*     ENTRY      (FCODE) = PP FUNCTION CODE.
00777  M00S00765.exdrvr  +++|*
00778  M00S00766.exdrvr  +++|*                P<LLRQ> = *DRQUEUE* ENTRY ADDRESS.
00779  M00S00767.exdrvr  +++|*
00780  M00S00768.exdrvr  +++|*                P<UDT$MSG> = UDT/SBT MESSAGE BUFFER ADDRESS.
00781  M00S00769.exdrvr  +++|*
00782  M00S00770.exdrvr  +++|*     EXIT       THE M860 MESSAGE WAS WRITTEN TO THE MESSAGE WRITE
00783  M00S00771.exdrvr  +++|*                FET BUFFER.  IF A PP WAS CALLED, THE ACTIVE PP CALL
00784  M00S00772.exdrvr  +++|*                BLOCK ENTRY COUNT IS INCREMENTED.  IF THE M860 MESSAGE
00785  M00S00773.exdrvr  +++|*                WAS INITIATED BY THE CPU DRIVER, THE CHANNEL MESSAGE
00786  M00S00774.exdrvr  +++|*                COUNT IS INCREMENTED.
00787  M00S00775.exdrvr  +++|*
00788  M00S00776.exdrvr  +++|*     MESSAGES   *EXEC ABNORMAL, CALLPP2.* - EXPECTED FREE CALL
00789  M00S00777.exdrvr  +++|*                                            BLOCK ENTRY NOT FOUND.
00790  M00S00778.exdrvr  +++|*
00791  M00S00779.exdrvr  +++|*                *EXEC ABNORMAL, CALLPP2A.* - TWO DATA TRANSFERS WERE
00792  M00S00780.exdrvr  +++|*                                             TRIED ON THE SAME
00793  M00S00781.exdrvr  +++|*                                             CHANNEL.  ONLY ONE SHOULD
00794  M00S00782.exdrvr  +++|*                                             BE TRIED AT A TIME.
00795  M00S00783.exdrvr  +++|*
00796  M00S00784.exdrvr  +++|*                *EXEC ABNORMAL, CALLPP3.* - TWO RAW DATA READS WERE
00797  M00S00785.exdrvr  +++|*                                            TRIED.  ONLY ONE SHOULD BE
00798  M00S00786.exdrvr  +++|*                                            ACTIVE AT A TIME.
00799  M00S00787.exdrvr  +++|*
00800  M00S00788.exdrvr  +++|*     NOTES      THE M860 MESSAGE IS NOT SENT IF IT REQUIRES THE
00801  M00S00789.exdrvr  +++|*                ACCESSOR ARM AND THE ARM IS BUSY, THE PP CALL BLOCK
00802  M00S00790.exdrvr  +++|*                TABLE IS FULL, OR NO CHANNEL COULD BE ALLOCATED.
00803  M00S00791.exdrvr  +++|#
00804  M00S00792.exdrvr  +++|
00805  M00S00793.exdrvr  +++|
00806  M00S00794.exdrvr  +++|#
00807  M00S00795.exdrvr  +++|****  PROC CALLPP - XREF LIST BEGIN.
00808  M00S00796.exdrvr  +++|#
00809  M00S00797.exdrvr  +++|
00810  M00S00798.exdrvr  +++|      XREF
00811  M00S00799.exdrvr  +++|        BEGIN
00812  M00S00800.exdrvr  +++|        PROC ABORT;                  # ABORT #
00813  M00S00801.exdrvr  +++|        PROC FSCLOG;                 # DUMP FSC LOG TO BML #
00814  M00S00802.exdrvr  +++|        PROC GETCHAN;                # ALLOCATE CHANNEL #
00815  M00S00803.exdrvr  +++|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
00816  M00S00804.exdrvr  +++|        PROC SMSG;                   # SEND AND CHECKSUM MESSAGE #
00817  M00S00805.exdrvr  +++|        PROC SYSTEM;                 # CALL PP #
00818  M00S00806.exdrvr  +++|        END
00819  M00S00807.exdrvr  +++|
00820  M00S00808.exdrvr  +++|#
00821  M00S00809.exdrvr  +++|****  PROC CALLPP - XREF LIST END.
00822  M00S00810.exdrvr  +++|#
00823  M00S00811.exdrvr  +++|
00824  M00S00812.exdrvr  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00825  M00S00813.exdrvr  +++|*CALL,COMBFAS
00826  M00S00814.exdrvr  +++|*CALL,COMBCDD
00827  M00S00815.exdrvr  +++|*CALL,COMBFET
00828  M00S00816.exdrvr  +++|*CALL,COMBHFC
00829  M00S00817.exdrvr  +++|*CALL,COMBLBL
00830  M00S00818.exdrvr  +++|*CALL,COMBLRQ
00831  M00S00819.exdrvr  +++|*CALL,COMBUDT
00832  M00S00820.exdrvr  +++|*CALL,COMXCTF
00833  M00S00821.exdrvr  +++|*CALL,COMXMSC
00834  M00S00822.exdrvr  +++|
00835  M00S00823.exdrvr  +++|      ITEM CALLINDEX  U;             # FREE CALL BLOCK ENTRY INDEX #
00836  M00S00824.exdrvr  +++|      ITEM CU         U;             # CONTROLLER ORDINAL #
00837  M00S00825.exdrvr  +++|      ITEM FCODE      U;             # PP FUNCTION CODE PARAMETER #
00838  M00S00826.exdrvr  +++|      ITEM I          I;             # INDEX #
00839  M00S00827.exdrvr  +++|      ITEM RESPCOUNT  U;             # EXPECTED MSG RESPONSE COUNT #
00840  M00S00828.exdrvr  +++|      ITEM STAT       U;             # *SMSG* STATUS #
00841  M00S00829.exdrvr  +++|                                               CONTROL EJECT;
00842  M00S00830.exdrvr  +++|
00843  M00S00831.exdrvr  +++|      IF SM$ACCBUSY[LLR$SMO[0]]      # SM IN USE #
00844  M00S00832.exdrvr  +++|        AND (((MS$MSG[0] EQ HFC$CHSSMA  # SM STATUS CHANGE #
00845  M00S00833.exdrvr  +++|        OR MS$MSG[0] EQ HFC$CHSDRD)  # DRD STATUS CHANGE #
00846  M00S00834.exdrvr  +++|        AND MS$PARM1A[0] EQ ONLINE)  ##
00847  M00S00835.exdrvr  +++|        OR MS$MSG[0] LQ HFC$STCRNF   # ACQUIRE OR STORE #
00848  M00S00836.exdrvr  +++|        OR MS$MSG[0] EQ HFC$ENCRDR)  # ENTER #
00849  M00S00837.exdrvr  +++|      THEN                           # SM ARM TO BE MOVED #
00850  M00S00838.exdrvr  +++|        BEGIN  # WAIT #
00851  M00S00839.exdrvr  +++|        RETURN;                      # WAIT FOR ARM TO STOP #
00852  M00S00840.exdrvr  +++|        END  # WAIT #
00853  M00S00841.exdrvr  +++|
00854  M00S00842.exdrvr  +++|#
00855  M00S00843.exdrvr  +++|*     ALLOCATE CHANNEL.
00856  M00S00844.exdrvr  +++|#
00857  M00S00845.exdrvr  +++|
00858  M00S00846.exdrvr  +++|      GETCHAN(FCODE);
00859  M00S00847.exdrvr  +++|      IF P<FETMWB> EQ 0
00860  M00S00848.exdrvr  +++|      THEN                           # NO CHANNEL ALLOCATED #
00861  M00S00849.exdrvr  +++|        BEGIN  # RETRY #
00862  M00S00850.exdrvr  +++|        RETURN;                      # REALLOCATE LATER #
00863  M00S00851.exdrvr  +++|        END  # RETRY #
00864  M00S00852.exdrvr  +++|
00865  M00S00853.exdrvr  +++|      IF FMW$AT[0] NQ 0
00866  M00S00854.exdrvr  +++|      THEN                           # LAST MESSAGE CAUSED ERROR #
00867  M00S00855.exdrvr  +++|        BEGIN  # FSC #
00868  M00S00856.exdrvr  +++|        FSCLOG(WFET);                # DUMP FSC LOG TO BML #
00869  M00S00857.exdrvr  +++|        END  # FSC #
00870  M00S00858.exdrvr  +++|
00871  M00S00859.exdrvr  +++|      CU = LLR$CU[0];                # ASSUME MESSAGE FROM LLRQ #
00872  M00S00860.exdrvr  +++|      IF MS$CU[0] NQ 0
00873  M00S00861.exdrvr  +++|      THEN                           # SENDING ERROR LOG MESSAGE #
00874  M00S00862.exdrvr  +++|        BEGIN  # RESET #
00875  M00S00863.exdrvr  +++|        CU = MS$CU[0];
00876  M00S00864.exdrvr  +++|        END  # RESET #
00877  M00S00865.exdrvr  +++|
00878  M00S00866.exdrvr  +++|      CALLINDEX = 0;                 # PRESET INDEX #
00879  M00S00867.exdrvr  +++|      IF B<FMR$CIF[0],1>UD$WBACT[CU] EQ OFF
00880  M00S00868.exdrvr  +++|      THEN                           # FREE CHANNEL PICKED #
00881  M00S00869.exdrvr  +++|        BEGIN  # FIND CALL ENTRY #
00882  M00S00870.exdrvr  +++|        IF PPCBENCNT EQ PPCBTSIZE
00883  M00S00871.exdrvr  +++|        THEN                         # NO FREE CALL ENTRY #
00884  M00S00872.exdrvr  +++|          BEGIN  # TRY LATER #
00885  M00S00873.exdrvr  +++|          RETURN;
00886  M00S00874.exdrvr  +++|          END  # TRY LATER #
00887  M00S00875.exdrvr  +++|
00888  M00S00876.exdrvr  +++|#
00889  M00S00877.exdrvr  +++|*     SEARCH FOR FREE ENTRY IN PP CALL BLOCK TABLE.
00890  M00S00878.exdrvr  +++|#
00891  M00S00879.exdrvr  +++|
00892  M00S00880.exdrvr  +++|        SLOWFOR I = 1 STEP 1 WHILE (CALLINDEX EQ 0)AND(I LQ PPCBTSIZE)
00893  M00S00881.exdrvr  +++|        DO                           # FIND FREE CALL ENTRY #
00894  M00S00882.exdrvr  +++|          BEGIN  # FIND #
00895  M00S00883.exdrvr  +++|          IF PPU$FC[I] EQ 0
00896  M00S00884.exdrvr  +++|          THEN                       # FREE ENTRY FOUND #
00897  M00S00885.exdrvr  +++|            BEGIN  # FOUND #
00898  M00S00886.exdrvr  +++|            CALLINDEX = I;
00899  M00S00887.exdrvr  +++|            END  # FOUND #
00900  M00S00888.exdrvr  +++|
00901  M00S00889.exdrvr  +++|          END  # FIND #
00902  M00S00890.exdrvr  +++|
00903  M00S00891.exdrvr  +++|        IF CALLINDEX EQ 0
00904  M00S00892.exdrvr  +++|        THEN                         # FREE ENTRY NOT FOUND #
00905  M00S00893.exdrvr  +++|          BEGIN  # ABORT #
00906  M00S00894.exdrvr  +++|          FE$RTN[0] = "CALLPP2.";
00907  M00S00895.exdrvr  +++|          GOTO CALLPP2;
00908  M00S00896.exdrvr  +++|          END  # ABORT #
00909  M00S00897.exdrvr  +++|
00910  M00S00898.exdrvr  +++|        END  # FIND CALL ENTRY #
00911  M00S00899.exdrvr  +++|
00912  M00S00900.exdrvr  +++|      ELSE                           # CHANNEL PICKED IN USE #
00913  M00S00901.exdrvr  +++|        BEGIN  # IN USE #
00914  M00S00902.exdrvr  +++|        SLOWFOR I = 1 STEP 1 WHILE (CALLINDEX EQ 0)AND(I LQ PPCBTSIZE)
00915  M00S00903.exdrvr  +++|        DO                           # SCAN CALL BLOCK #
00916  M00S00904.exdrvr  +++|          BEGIN  # SCAN #
00917  M00S00905.exdrvr  +++|          IF P<FETMWB> EQ PPU$MBADDR[I]
00918  M00S00906.exdrvr  +++|          THEN                       # PP IN USE FOUND #
00919  M00S00907.exdrvr  +++|            BEGIN  # FOUND #
00920  M00S00908.exdrvr  +++|            CALLINDEX = I;
00921  M00S00909.exdrvr  +++|            END  # FOUND #
00922  M00S00910.exdrvr  +++|
00923  M00S00911.exdrvr  +++|          END  # SCAN #
00924  M00S00912.exdrvr  +++|
00925  M00S00913.exdrvr  +++|        END  # IN USE #
00926  M00S00914.exdrvr  +++|
00927  M00S00915.exdrvr  +++|      IF FCODE EQ IRMDAT
00928  M00S00916.exdrvr  +++|      THEN                           # SENDING DATA #
00929  M00S00917.exdrvr  +++|        BEGIN  # DATA #
00930  M00S00918.exdrvr  +++|        IF PPU$DBADDR[CALLINDEX] NQ 0
00931  M00S00919.exdrvr  +++|        THEN                         # 2 DATA TRANSFERS TO SAME PP #
00932  M00S00920.exdrvr  +++|          BEGIN  # ABORT #
00933  M00S00921.exdrvr  +++|          FE$RTN[0] = "CALLPP2A.";
00934  M00S00922.exdrvr  +++|          GOTO CALLPP2;
00935  M00S00923.exdrvr  +++|          END  # ABORT #
00936  M00S00924.exdrvr  +++|
00937  M00S00925.exdrvr  +++|        PPU$DBADDR[CALLINDEX] = LLR$MSFET[0];  # PASS DATA BUF ADDR #
00938  M00S00926.exdrvr  +++|        GOTO CALLPP1;
00939  M00S00927.exdrvr  +++|        END  # DATA #
00940  M00S00928.exdrvr  +++|
00941  M00S00929.exdrvr  +++|#
00942  M00S00930.exdrvr  +++|*     COPY MESSAGE FROM UDT/STORAGE BUFFER TO MESSAGE WRITE BUFFER.
00943  M00S00931.exdrvr  +++|#
00944  M00S00932.exdrvr  +++|
00945  M00S00933.exdrvr  +++|      RESPCOUNT = 1;                 # ASSUME NORMAL MESSAGE #
00946  M00S00934.exdrvr  +++|      IF MS$MSG[0] GQ HFC$MVLMVR     ##
00947  M00S00935.exdrvr  +++|        AND MS$MSG[0] LQ HFC$MVLMNW
00948  M00S00936.exdrvr  +++|      THEN                           # *MOUNT-VOLUME* MESSAGE #
00949  M00S00937.exdrvr  +++|        BEGIN  # CIF #
00950  M00S00938.exdrvr  +++|        B<3-FMR$CIF[0],1>MS$INTER[0] = ON;  # SWITCH BIT ORDER #
00951  M00S00939.exdrvr  +++|        B<FMR$CIF[0],1>UD$DBACT[LLR$CU[0]] = ON;
00952  M00S00940.exdrvr  +++|        RESPCOUNT = 2;               # INCLUDE REWIND/UNLOAD #
00953  M00S00941.exdrvr  +++|        END  # CIF #
00954  M00S00942.exdrvr  +++|
00955  M00S00943.exdrvr  +++|      MS$CU[0] = 0;                  # IN CASE ERROR LOG MESSAGE #
00956  M00S00944.exdrvr  +++|      IF MS$MSG[0] NQ HFC$WRTLBL
00957  M00S00945.exdrvr  +++|      THEN                           # NOT A *WRITE-LABEL* MESSAGE #
00958  M00S00946.exdrvr  +++|        BEGIN  # NOT WRITE #
00959  M00S00947.exdrvr  +++|        SMSG(FETMWB,UDT$MSG,0,0,STAT);
00960  M00S00948.exdrvr  +++|        END  # NOT WRITE #
00961  M00S00949.exdrvr  +++|
00962  M00S00950.exdrvr  +++|      ELSE                           # SEND *WRITE-LABEL* MESSAGE #
00963  M00S00951.exdrvr  +++|        BEGIN  # WRLABEL #
00964  M00S00952.exdrvr  +++|        SMSG(FETMWB,UDT$MSG,LABEL$CART,LABLEN,STAT);
00965  M00S00953.exdrvr  +++|        END  # WRLABEL #
00966  M00S00954.exdrvr  +++|
00967  M00S00955.exdrvr  +++|      IF STAT NQ 0
00968  M00S00956.exdrvr  +++|      THEN                           # MESSAGE WRITE BUFFER FULL #
00969  M00S00957.exdrvr  +++|        BEGIN  # FREE CHANNEL #
00970  M00S00958.exdrvr  +++|        IF MS$MSG[0] GQ (HRF$ELGFUL + HRF$R)   # ERROR LOG MESSAGE #
00971  M00S00959.exdrvr  +++|          AND MS$MSG[0] LQ (HRF$REQDMP + HRF$R)
00972  M00S00960.exdrvr  +++|        THEN                         # INDICATE RESPONSE NOT SENT #
00973  M00S00961.exdrvr  +++|          BEGIN  # RESTORE #
00974  M00S00962.exdrvr  +++|          MS$CU[0] = CU;
00975  M00S00963.exdrvr  +++|          END  # RESTORE #
00976  M00S00964.exdrvr  +++|
00977  M00S00965.exdrvr  +++|        RETURN;                      # TRY LATER #
00978  M00S00966.exdrvr  +++|        END  # FREE CHANNEL #
00979  M00S00967.exdrvr  +++|
00980  M00S00968.exdrvr  +++|      IF MS$MSG[0] EQ HFC$RDRAW
00981  M00S00969.exdrvr  +++|      THEN                           # READING RAW DATA #
00982  M00S00970.exdrvr  +++|        BEGIN  # RAW #
00983  M00S00971.exdrvr  +++|        IF FMR$RDBA[0] NQ 0          # READING 2 RAW STRIPES #
00984  M00S00972.exdrvr  +++|        THEN                         # SHOULD BE ONLY ONE #
00985  M00S00973.exdrvr  +++|          BEGIN  # ABORT #
00986  M00S00974.exdrvr  +++|          FE$RTN[0] = "CALLPP3.";
00987  M00S00975.exdrvr  +++|          GOTO CALLPP2;
00988  M00S00976.exdrvr  +++|          END  # ABORT #
00989  M00S00977.exdrvr  +++|
00990  M00S00978.exdrvr  +++|        P<FETFHB> = LLR$MSFET[0];
00991  M00S00979.exdrvr  +++|        FMR$RDBA[0] = FHB$FRST[0] + MSGLT;  # SET RAW DATA ADDRESS #
00992  M00S00980.exdrvr  +++|        END  # RAW #
00993  M00S00981.exdrvr  +++|
00994  M00S00982.exdrvr  +++|      IF MS$MSG[0] LQ HFC$STCRNF     # ACQUIRE OR STORE #
00995  M00S00983.exdrvr  +++|        OR MS$MSG[0] EQ HFC$ENCRDR   # ENTER #
00996  M00S00984.exdrvr  +++|        OR ((MS$MSG[0] EQ HFC$CHSSMA # SM STATUS CHANGE #
00997  M00S00985.exdrvr  +++|        OR MS$MSG[0] EQ HFC$CHSDRD)  # DRD STATUS CHANGE #
00998  M00S00986.exdrvr  +++|        AND MS$PARM1A[0] EQ ONLINE)
00999  M00S00987.exdrvr  +++|      THEN                           # RESERVE SM ARM #
01000  M00S00988.exdrvr  +++|        BEGIN  # SM #
01001  M00S00989.exdrvr  +++|        SM$ACCBUSY[LLR$SMO[0]] = TRUE;
01002  M00S00990.exdrvr  +++|        END  # SM #
01003  M00S00991.exdrvr  +++|
01004  M00S00992.exdrvr  +++|      IF MS$MSG[0] LS (HRF$ELGFUL + HRF$R)     # NOT ERROR LOG MSG #
01005  M00S00993.exdrvr  +++|        OR MS$MSG[0] GR (HRF$REQDMP + HRF$R)
01006  M00S00994.exdrvr  +++|      THEN                           # LLRQ SENT MESSAGE #
01007  M00S00995.exdrvr  +++|        BEGIN  # LLRQ #
01008  M00S00996.exdrvr  +++|        MBF$SENT[0] = TRUE;          # MESSAGE SENT TO PP #
01009  M00S00997.exdrvr  +++|        LLR$CIF[0] = FMR$CIF[0];
01010  M00S00998.exdrvr  +++|        END  # LLRQ #
01011  M00S00999.exdrvr  +++|
01012  M00S01000.exdrvr  +++|#
01013  M00S01001.exdrvr  +++|*     DO NOT INCREMENT MESSAGE COUNT IF NO M860 RESPONSE EXPECTED.
01014  M00S01002.exdrvr  +++|#
01015  M00S01003.exdrvr  +++|
01016  M00S01004.exdrvr  +++|      IF NOT MS$MSG$R[0]
01017  M00S01005.exdrvr  +++|      THEN                           # DRIVER-INITIATED MESSAGE #
01018  M00S01006.exdrvr  +++|        BEGIN  # ADD #
01019  M00S01007.exdrvr  +++|        MSGCNT(FMR$CIF[0],LLR$CU[0]) = MSGCNT(FMR$CIF[0],LLR$CU[0])
01020  M00S01008.exdrvr  +++|                                         + RESPCOUNT;
01021  M00S01009.exdrvr  +++|                                     # UPDATE CHANNEL MSG COUNT #
01022  M00S01010.exdrvr  +++|        END  # ADD #
01023  M00S01011.exdrvr  +++|
01024  M00S01012.exdrvr  +++|#
01025  M00S01013.exdrvr  +++|*     PRESET PP CALL BLOCK TABLE ENTRY, IF NO PP IS ACTIVE ON
01026  M00S01014.exdrvr  +++|*     THE CHOSEN CHANNEL.
01027  M00S01015.exdrvr  +++|#
01028  M00S01016.exdrvr  +++|
01029  M00S01017.exdrvr  +++|CALLPP1:
01030  M00S01018.exdrvr  +++|      IF B<FMR$CIF[0],1>UD$WBACT[CU] EQ OFF
01031  M00S01019.exdrvr  +++|      THEN                           # FREE CHANNEL #
01032  M00S01020.exdrvr  +++|        BEGIN  # CALL PP #
01033  M00S01021.exdrvr  +++|        PPCBENCNT = PPCBENCNT + 1;   # CREATE NEW ENTRY #
01034  M00S01022.exdrvr  +++|        B<FMR$CIF[0],1>UD$WBACT[CU] = ON;
01035  M00S01023.exdrvr  +++|        PPU$MBADDR[CALLINDEX] = P<FETMWB>;
01036  M00S01024.exdrvr  +++|        PPU$FC[CALLINDEX] = FCODE;
01037  M00S01025.exdrvr  +++|        PPU$ACTIVE[CALLINDEX] = TRUE;
01038  M00S01026.exdrvr  +++|        PPU$ESTORD[CALLINDEX] = UD$ESTO[CU];
01039  M00S01027.exdrvr  +++|        PPU$CNTORD[CALLINDEX] = CU;
01040  M00S01028.exdrvr  +++|        PPT$WORD0[0] = PPU$WORD0[CALLINDEX];  # PRESET FOR PP CALL #
01041  M00S01029.exdrvr  +++|        SPC$ADDR[0] = LOC(PPT$WORD0[0]);
01042  M00S01030.exdrvr  +++|        REPEAT WHILE PPT$WORD0[0] NQ 0
01043  M00S01031.exdrvr  +++|        DO                           # ISSUE PP CALL #
01044  M00S01032.exdrvr  +++|          BEGIN  # PP #
01045  M00S01033.exdrvr  +++|          SYSTEM(SPC,NRCL);
01046  M00S01034.exdrvr  +++|          END  # PP #
01047  M00S01035.exdrvr  +++|
01048  M00S01036.exdrvr  +++|        END  # CALL PP #
01049  M00S01037.exdrvr  +++|
01050  M00S01038.exdrvr  +++|      DRVRACTIVE = TRUE;
01051  M00S01039.exdrvr  +++|      RETURN;
01052  M00S01040.exdrvr  +++|
01053  M00S01041.exdrvr  +++|CALLPP2:
01054  M00S01042.exdrvr  +++|      MESSAGE(FEMSG,UDFL1);
01055  M00S01043.exdrvr  +++|      ABORT;
01056  M00S01044.exdrvr  +++|      END  # CALLPP #
01057  M00S01045.exdrvr  +++|
01058  M00S01046.exdrvr  +++|    TERM
01059  M00S01047.exdrvr  +++|PROC CRMSG;
01060  M00S01048.exdrvr  +++|# TITLE CRMSG - CREATE M860 MESSAGE.                                  #
01061  M00S01049.exdrvr  +++|
01062  M00S01050.exdrvr  +++|      BEGIN  # CRMSG #
01063  M00S01051.exdrvr  +++|
01064  M00S01052.exdrvr  +++|#
01065  M00S01053.exdrvr  +++|**    CRMSG - CREATE M860 MESSAGE.
01066  M00S01054.exdrvr  +++|*
01067  M00S01055.exdrvr  +++|*     *CRMSG* CREATES AN M860 MESSAGE WITHIN A UDT MESSAGE BUFFER.
01068  M00S01056.exdrvr  +++|*
01069  M00S01057.exdrvr  +++|*     PROC CRMSG
01070  M00S01058.exdrvr  +++|*
01071  M00S01059.exdrvr  +++|*     ENTRY      P<LLRQ> = *DRQUEUE* ENTRY ADDRESS.
01072  M00S01060.exdrvr  +++|*
01073  M00S01061.exdrvr  +++|*                P<UDT$MSG> = UDT MESSAGE BUFFER ADDRESS.
01074  M00S01062.exdrvr  +++|*
01075  M00S01063.exdrvr  +++|*                THE UDT MESSAGE BUFFER CONTAINS THE M860 FUNCTION
01076  M00S01064.exdrvr  +++|*                DEFINING THE MESSAGE TO BE CREATED.
01077  M00S01065.exdrvr  +++|*
01078  M00S01066.exdrvr  +++|*     EXIT       IF THE M860 FUNCTION WAS A PATH/DEVICE STATUS CHANGE
01079  M00S01067.exdrvr  +++|*                OR A *START ERROR LOG*, AND THE UDT HAS BEEN
01080  M00S01068.exdrvr  +++|*                COMPLETELY PROCESSED, THEN THE UDT MESSAGE BUFFER
01081  M00S01069.exdrvr  +++|*                ACTIVE FLAG IS LEFT CLEAR, AND NO MESSAGE IS CREATED.
01082  M00S01070.exdrvr  +++|*                OTHERWISE, AN M860 MESSAGE IS CREATED, AND THE ACTIVE
01083  M00S01071.exdrvr  +++|*                FLAG IS SET.
01084  M00S01072.exdrvr  +++|*
01085  M00S01073.exdrvr  +++|*     MESSAGES   *EXEC ABNORMAL, CRMSG1.* - UDT MESSAGE BUFFER STILL
01086  M00S01074.exdrvr  +++|*                                           IN USE, OR MESSAGE
01087  M00S01075.exdrvr  +++|*                                           SEQUENCE NUMBER IS CLEARED.
01088  M00S01076.exdrvr  +++|*
01089  M00S01077.exdrvr  +++|*                *EXEC ABNORMAL, CRMSG1A.* - MULTIPLE REQUESTS ARE
01090  M00S01078.exdrvr  +++|*                                            PROCESSING SERVICE CELLS
01091  M00S01079.exdrvr  +++|*                                            WHEN TURNING ON A DRD.
01092  M00S01080.exdrvr  +++|*
Line S01081 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01093  M01S01081.exdrvr2 ---|*                *EXEC ABNORMAL, CRMSG2.* - TWO ACKNOWLEDGE FLAGS WERE
01094  M01S01082.exdrvr2 ---|*                                           SET DURING A PATH STATUS
01095  M01S01083.exdrvr2 ---|*                                           CHANGE.
01096  M01S01084.exdrvr2 ---|*
01097  M00S01085.exdrvr  ---|*                *EXEC ABNORMAL, CRMSG4.* - MULTIPLE REQUESTS ARE
01098  M00S01086.exdrvr  ---|*                                           PROCESSING SERVICE CELLS
01099  M00S01087.exdrvr  ---|*                                           WHEN TURNING ON AN SM.
01100  M00S01088.exdrvr  ---|*
01101  M00S01089.exdrvr  ---|*                *EXEC ABNORMAL, CRMSG5.* - INVALID SUBTYPE FOR A
01102  M00S01090.exdrvr  ---|*                                           *START ERROR LOG* FUNCTION.
01103  M00S01091.exdrvr  ---|*
01104  M00S01092.exdrvr  ---|*     NOTES      A UDT MESSAGE BUFFER IS NEVER CLEARED, EXCEPT WHEN
01105  M00S01093.exdrvr  ---|*                PREPARING TO CREATE ANOTHER MESSAGE IN IT.  THIS IS
01106  M00S01094.exdrvr  ---|*                DONE TO KEEP AN ACCURATE HISTORY FOR DEBUGGING
01107  M00S01095.exdrvr  ---|*                PURPOSES.
01108  M00S01096.exdrvr  ---|#
01109  M00S01097.exdrvr  ---|
01110  M00S01098.exdrvr  ---|
01111  M00S01099.exdrvr  ---|#
01112  M00S01100.exdrvr  ---|****  PROC CRMSG - XREF LIST BEGIN.
01113  M00S01101.exdrvr  ---|#
01114  M00S01102.exdrvr  ---|
01115  M00S01103.exdrvr  ---|      XREF
01116  M00S01104.exdrvr  ---|        BEGIN
01117  M00S01105.exdrvr  ---|        PROC ABORT;                  # ABORT #
01118  M00S01106.exdrvr  ---|        PROC GETCHAN;                # ALLOCATE CHANNEL #
01119  M00S01107.exdrvr  ---|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
01120  M00S01108.exdrvr  ---|        PROC PDATE;                  # GET PACKED DATE AND TIME #
01121  M00S01109.exdrvr  ---|        PROC ZFILL;                  # ZERO-FILL BUFFER #
01122  M00S01110.exdrvr  ---|        END
01123  M00S01111.exdrvr  ---|
01124  M00S01112.exdrvr  ---|#
01125  M00S01113.exdrvr  ---|****  PROC CRMSG - XREF LIST END.
01126  M00S01114.exdrvr  ---|#
01127  M00S01115.exdrvr  ---|
01128  M00S01116.exdrvr  ---|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
01129  M00S01117.exdrvr  ---|*CALL,COMBFAS
01130  M00S01118.exdrvr  ---|*CALL,COMBCDD
01131  M00S01119.exdrvr  ---|*CALL,COMBCPR
01132  M00S01120.exdrvr  ---|*CALL,COMBFET
01133  M00S01121.exdrvr  ---|*CALL,COMBHFC
01134  M00S01122.exdrvr  ---|*CALL,COMBLBL
01135  M00S01123.exdrvr  ---|*CALL,COMBLRQ
01136  M00S01124.exdrvr  ---|*CALL,COMBUDT
01137  M00S01125.exdrvr  ---|*CALL,COMXCTF
01138  M00S01126.exdrvr  ---|*CALL,COMXMSC
01139  M00S01127.exdrvr  ---|
01140  M00S01128.exdrvr  ---|#
01141  M00S01129.exdrvr  ---|*     DEFINITIONS TO CREATE *CHANGE STATUS* MESSAGES.
01142  M00S01130.exdrvr  ---|#
01143  M00S01131.exdrvr  ---|
01144  M00S01132.exdrvr  ---|      DEF CIFMASK    #X"0000"#;      # TURN OFF *CIF* ERROR LOGGING #
01145  M00S01133.exdrvr  ---|      DEF CONTDAV    #1#;            # CONTROLLER DEVICE ADDR VALUE #
01146  M00S01134.exdrvr  ---|      DEF DRDHNMASK  #X"8190"#;      # SET DRD/HANDLER ERROR LOGGING #
01147  M00S01135.exdrvr  ---|      DEF EOTBSC     #1#;            # EOT BUFFER STRIPE COUNT #
Line S00005 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01148  M01S00005.exdrvr2 +++|      DEF FIELDSM1   #7#;            # COUNT OF 6-BIT FIELDS MINUS 1 #
01149  M00S01136.exdrvr  +++|
Line S01137 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01150  M01S01137.exdrvr2 ---|      ITEM DIAGACK    U;             # DIAGNOSTIC ACK BIT INDEX #
01151  M00S01138.exdrvr  ---|      ITEM DRDWORD    U;             # SAVED DRD STATUS WORD ADDRESS #
01152  M00S01139.exdrvr  ---|      ITEM FOUND      B;             # SET IF PATH/DEVICE FOUND #
01153  M00S01140.exdrvr  ---|      ITEM I          I;             # INDEX #
01154  M00S01141.exdrvr  ---|      ITEM J          I;             # INDEX #
01155  M01S01142.exdrvr2 ---|      ITEM K          I;             # INDEX #
01156  M00S01143.exdrvr  ---|      ITEM MSGFTN     U;             # SAVED M860 FUNCTION #
01157  M00S01144.exdrvr  ---|      ITEM MSGSEQN    U;             # SAVED MSG SEQUENCE NUMBER #
01158  M00S01145.exdrvr  ---|      ITEM NEWPTHSTAT U;             # NEW PATH STATUS #
01159  M01S01146.exdrvr2 ---|      ITEM ONACK      U;             # ON/OFF ACK BIT INDEX #
01160  M00S01147.exdrvr  ---|      ITEM START      U;             # 1ST LINE TO CHECK ACK BITS #
01161  M01S01148.exdrvr2 ---|      ITEM STSP       U;             # SM/DRD STATUS FROM 1ST CU #
01162  M01S01149.exdrvr2 ---|      ITEM STSS       U;             # SM/DRD STATUS FROM 2ND CU #
01163  M00S01150.exdrvr  ---|      ITEM TEMPCIF    U;             # SAVED *CIF* NUMBER #
01164  M00S01151.exdrvr  ---|      ITEM TEMPCSN0   U;             # FIRST 4 BYTES OF CSN #
01165  M00S01152.exdrvr  ---|      ITEM TEMPCSN1   U;             # NEXT 6 BYTES OF CSN #
01166  M00S01153.exdrvr  ---|      ITEM TEMPCSN2   U;             # LAST 2 BYTES OF CSN #
01167  M00S01154.exdrvr  ---|      ITEM TEMPDRD    U;             # SAVED *DRD* UNIT NUMBER #
01168  M00S01155.exdrvr  ---|
01169  M00S01156.exdrvr  ---|#
01170  M00S01157.exdrvr  ---|*     ARRAY USED TO CREATE *SET DATE/TIME* MESSAGES.
01171  M00S01158.exdrvr  ---|#
01172  M00S01159.exdrvr  ---|
01173  M00S01160.exdrvr  ---|      ARRAY DATETIME [0:0] S(1);     # PACKED DATE AND TIME #
01174  M00S01161.exdrvr  ---|        BEGIN
01175  M00S01162.exdrvr  ---|        ITEM DT$YEAR    U(00,24,06);  # YEAR MINUS 1970 #
01176  M00S01163.exdrvr  ---|        ITEM DT$MONTH   U(00,30,06);  # MONTH #
01177  M00S01164.exdrvr  ---|        ITEM DT$DAY     U(00,36,06);  # DAY #
01178  M00S01165.exdrvr  ---|        ITEM DT$HOUR    U(00,42,06);  # HOUR #
01179  M00S01166.exdrvr  ---|        ITEM DT$MINUTE  U(00,48,06);  # MINUTE #
01180  M00S01167.exdrvr  ---|        ITEM DT$SECOND  U(00,54,06);  # SECOND #
01181  M00S01168.exdrvr  ---|        END
01182  M00S01169.exdrvr  ---|
01183  M00S01170.exdrvr  ---|#
01184  M00S01171.exdrvr  ---|*     ARRAYS USED TO CREATE *CHANGE STATUS* MESSAGES.
01185  M00S01172.exdrvr  ---|#
01186  M00S01173.exdrvr  ---|
01187  M00S01174.exdrvr  ---|      ARRAY PTH [0:6] S(1);          # UDT PATH STRUCTURE #
01188  M00S01175.exdrvr  ---|        BEGIN
01189  M01S01176.exdrvr2 ---|        ITEM PTH$ACK    U(00,00,06) = [7,,7,,3,7,7];
01190  M01S01177.exdrvr2 ---|        ITEM PTH$LASTLN U(00,06,06) = [5,,7,,2,3,1];
01191  M01S01178.exdrvr2 ---|        ITEM PTH$FRSTLN U(00,12,06) = [4,,6,,2,3,1];
Line S00006 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01192  M01S00006.exdrvr2 +++|        ITEM PTH$LASTLN U(00,06,06) = [6,,10,,3,4,2];
01193  M01S00007.exdrvr2 +++|        ITEM PTH$FRSTLN U(00,12,06) = [5,,7,,3,4,1];
01194  M00S01179.exdrvr  +++|        END
01195  M00S01180.exdrvr  +++|
Line S01181 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01196  M01S01181.exdrvr2 ---|      ARRAY BNODE [2:5] S(1);        # BOTTOM PATH NODES #
Line S00008 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01197  M01S00008.exdrvr2 +++|      ARRAY BNODE [3:6] S(1);        # BOTTOM PATH NODES #
01198  M00S01182.exdrvr  +++|        BEGIN
01199  M00S01183.exdrvr  +++|        ITEM NODE$B     U(00,00,60);  # PATH WORD #
01200  M00S01184.exdrvr  +++|        ITEM NODE$B0    U(00,00,06) = [0,0,1,1];
01201  M00S01185.exdrvr  +++|        ITEM NODE$B1    U(00,06,06) = [1,1,3,3];
Line S01186 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01202  M01S01186.exdrvr2 ---|        ITEM NODE$B2    U(00,12,06) = [0,0,0,0];
01203  M01S01187.exdrvr2 ---|        ITEM NODE$B3    U(00,18,06) = [1,1,2,2];
01204  M01S01188.exdrvr2 ---|        ITEM NODE$B4    U(00,24,06) = [,0,1,1];
01205  M01S01189.exdrvr2 ---|        ITEM NODE$B5    U(00,30,06) = [,1,3,3];
01206  M01S01190.exdrvr2 ---|        ITEM NODE$B6    U(00,36,06) = [,0,0,0];
01207  M01S01191.exdrvr2 ---|        ITEM NODE$B7    U(00,42,06) = [,1,2,2];
Line S00009 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01208  M01S00009.exdrvr2 +++|        ITEM NODE$B2    U(00,12,06) = [2,0,0,0];
01209  M01S00010.exdrvr2 +++|        ITEM NODE$B3    U(00,18,06) = [3,1,2,2];
01210  M01S00011.exdrvr2 +++|        ITEM NODE$B4    U(00,24,06) = [0,0,1,1];
01211  M01S00012.exdrvr2 +++|        ITEM NODE$B5    U(00,30,06) = [1,1,3,3];
01212  M01S00013.exdrvr2 +++|        ITEM NODE$B6    U(00,36,06) = [2,0,0,0];
01213  M01S00014.exdrvr2 +++|        ITEM NODE$B7    U(00,42,06) = [3,1,2,2];
01214  M00S01192.exdrvr  +++|        END
01215  M00S01193.exdrvr  +++|
Line S01194 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01216  M01S01194.exdrvr2 ---|      ARRAY TNODE [1:7] S(1);        # TOP PATH NODES #
Line S00015 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01217  M01S00015.exdrvr2 +++|      ARRAY TNODE [1:10] S(1);        # TOP PATH NODES #
01218  M00S01195.exdrvr  +++|        BEGIN
01219  M00S01196.exdrvr  +++|        ITEM NODE$T     U(00,00,60);  # PATH WORD #
Line S01197 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01220  M01S01197.exdrvr2 ---|        ITEM NODE$T0    U(00,00,06) = [0,0,1,0,2,0,1];
01221  M01S01198.exdrvr2 ---|        ITEM NODE$T1    U(00,06,06) = [0,0,1,0,2,0,1];
01222  M01S01199.exdrvr2 ---|        ITEM NODE$T2    U(00,12,06) = [0,1,3,0,2,0,1];
01223  M01S01200.exdrvr2 ---|        ITEM NODE$T3    U(00,18,06) = [0,1,3,0,2,0,1];
01224  M01S01201.exdrvr2 ---|        ITEM NODE$T4    U(00,24,06) = [1,,0,1,3,0,1];
01225  M01S01202.exdrvr2 ---|        ITEM NODE$T5    U(00,30,06) = [1,,0,1,3,0,1];
01226  M01S01203.exdrvr2 ---|        ITEM NODE$T6    U(00,36,06) = [1,,2,1,3,0,1];
01227  M01S01204.exdrvr2 ---|        ITEM NODE$T7    U(00,42,06) = [1,,2,1,3,0,1];
Line S00016 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01228  M01S00016.exdrvr2 +++|        ITEM NODE$T0    U(00,00,06) = [0,1,0,1,0,2,0,1,2,3];
01229  M01S00017.exdrvr2 +++|        ITEM NODE$T1    U(00,06,06) = [0,1,0,1,0,2,0,1,2,3];
01230  M01S00018.exdrvr2 +++|        ITEM NODE$T2    U(00,12,06) = [0,1,0,3,0,2,0,1,2,3];
01231  M01S00019.exdrvr2 +++|        ITEM NODE$T3    U(00,18,06) = [0,1,0,3,0,2,0,1,2,3];
01232  M01S00020.exdrvr2 +++|        ITEM NODE$T4    U(00,24,06) = [0,1,1,0,1,3,0,1,2,3];
01233  M01S00021.exdrvr2 +++|        ITEM NODE$T5    U(00,30,06) = [0,1,1,0,1,3,0,1,2,3];
01234  M01S00022.exdrvr2 +++|        ITEM NODE$T6    U(00,36,06) = [0,1,1,2,1,3,0,1,2,3];
01235  M01S00023.exdrvr2 +++|        ITEM NODE$T7    U(00,42,06) = [0,1,1,2,1,3,0,1,2,3];
01236  M00S01205.exdrvr  +++|        END
01237  M00S01206.exdrvr  +++|
01238  M00S01207.exdrvr  +++|      SWITCH M860FUNCTN              # M860 FUNCTION CODES #
01239  M00S01208.exdrvr  +++|        ,                            # RESERVED #
01240  M00S01209.exdrvr  +++|        ACQUIRECRT,                  # ACQUIRE CARTRIDGE #
01241  M00S01210.exdrvr  +++|        STORECRT,                    # STORE CARTRIDGE #
Line S01211 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01242  M01S01211.exdrvr2 ---|        READCSN,                     # READ CSN #
Line S00024 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01243  M01S00024.exdrvr2 +++|        ,                            # RESERVED #
01244  M00S01212.exdrvr  +++|        READCRTLBL,                  # READ CARTRIDGE LABEL #
01245  M00S01213.exdrvr  +++|        WRTLBLCRT,                   # WRITE CARTRIDGE LABEL #
01246  M00S01214.exdrvr  +++|        MNTVOLUME,                   # MOUNT VOLUME #
01247  M00S01215.exdrvr  +++|        WRTLBLVOL,                   # WRITE VOLUME LABEL #
01248  M00S01216.exdrvr  +++|        ENTERCRT,                    # ENTER CARTRIDGE #
Line S01217 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01249  M01S01217.exdrvr2 ---|        EJECTCRT,                    # EJECT CARTRIDGE #
01250  M01S01218.exdrvr2 ---|        REQSTAT,                     # REQUEST STATUS #
Line S00025 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01251  M01S00025.exdrvr2 +++|        ,                            # RESERVED #
01252  M01S00026.exdrvr2 +++|        ,                            # RESERVED #
01253  M00S01219.exdrvr  +++|        CHANGEPATH,                  # CHANGE PATH STATUS #
01254  M00S01220.exdrvr  +++|        DUMPBUFLOG,                  # DUMP BUFFERED LOG #
Line S01221 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01255  M01S01221.exdrvr2 ---|        DUMPMEMORY,                  # DUMP MEMORY #
Line S00027 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01256  M01S00027.exdrvr2 +++|        ,                            # RESERVED #
01257  M00S01222.exdrvr  +++|        SETDATTIME,                  # SET DATE/TIME #
Line S01223 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01258  M01S01223.exdrvr2 ---|        READDATTIM,                  # READ DATE/TIME #
Line S00028 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01259  M01S00028.exdrvr2 +++|        ,                            # RESERVED #
01260  M00S01224.exdrvr  +++|        SETMASCHAN,                  # SET MASTER CHANNEL #
01261  M00S01225.exdrvr  +++|        RDRAWSTRP,                   # READ RAW STRIPE #
01262  M00S01226.exdrvr  +++|        ,                            # RESERVED #
01263  M00S01227.exdrvr  +++|        STERRLOG,                    # START/STOP ERROR LOG #
Line S01228 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01264  M01S01228.exdrvr2 ---|        RDERRLOG,                    # READ ERROR LOG #
01265  M01S01229.exdrvr2 ---|        WRTERRLOG,                   # WRITE TO ERROR LOG #
Line S00029 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01266  M01S00029.exdrvr2 +++|        ,                            # RESERVED #
01267  M01S00030.exdrvr2 +++|        ,                            # RESERVED #
01268  M00S01230.exdrvr  +++|        SETERRLEN,                   # SET ERROR LOG LENGTH #
Line S01231 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01269  M01S01231.exdrvr2 ---|        COPYVOLUME,                  # COPY VOLUME #
Line S00031 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01270  M01S00031.exdrvr2 +++|        ,                            # RESERVED #
01271  M00S01232.exdrvr  +++|        ,                            # RESERVED #
01272  M00S01233.exdrvr  +++|        ,                            # RESERVED #
01273  M00S01234.exdrvr  +++|        ,                            # RESERVED #
Line S01235 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01274  M01S01235.exdrvr2 ---|        SMTRESTART,                  # HOST RESTART #
Line S00032 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01275  M01S00032.exdrvr2 +++|        ,                            # RESERVED #
01276  M00S01236.exdrvr  +++|        RESTARTCU;                   # RESTART CONTROLLER #
01277  M00S01237.exdrvr  +++|                                               CONTROL EJECT;
Line S00033 Modification History
M01 (Added by) exdrvr2
M02 (Removed by) exdrvr4
Seq #  *Modification Id* Act 
----------------------------+
01278  M02S00033.exdrvr4 ---|                                               CONTROL INERT;
01279  M00S01238.exdrvr  ---|
01280  M00S01239.exdrvr  ---|      IF MBF$SBADDR[0] NQ 0          ##
01281  M00S01240.exdrvr  ---|        OR MS$MSQN[0] EQ 0
01282  M00S01241.exdrvr  ---|      THEN                           # MESSAGE ERROR #
01283  M00S01242.exdrvr  ---|        BEGIN  # ABORT #
01284  M00S01243.exdrvr  ---|        FE$RTN[0] = "CRMSG1.";
01285  M00S01244.exdrvr  ---|        MESSAGE(FEMSG,UDFL1);
01286  M00S01245.exdrvr  ---|        ABORT;
01287  M00S01246.exdrvr  ---|        END  # ABORT #
01288  M00S01247.exdrvr  ---|
01289  M00S01248.exdrvr  ---|      IF MS$MSG[0] NQ HFC$CHSSMA     # HANDLED LATER #
01290  M00S01249.exdrvr  ---|        AND MS$MSG[0] NQ HFC$CHSDRD
01291  M00S01250.exdrvr  ---|      THEN                           # INDICATE DRIVER ACTIVITY #
01292  M00S01251.exdrvr  ---|        BEGIN  # ACTIVE #
01293  M00S01252.exdrvr  ---|        DRVRACTIVE = TRUE;
01294  M00S01253.exdrvr  ---|        END  # ACTIVE #
01295  M00S01254.exdrvr  ---|
01296  M00S01255.exdrvr  ---|      IF MBF$SAVE[0] NQ SAVENONE
01297  M00S01256.exdrvr  ---|      THEN                           # PRESERVE PART OF MSG BUFFER #
01298  M00S01257.exdrvr  ---|        BEGIN  # PRESET NORMALLY #
01299  M00S01258.exdrvr  ---|        MBF$ACTIVE[0] = TRUE;        # MESSAGE BUFFER NOW ACTIVE #
01300  M00S01259.exdrvr  ---|        MSGSEQN = MS$MSQN[0];        # SAVE MSG SEQUENCE NUMBER #
01301  M00S01260.exdrvr  ---|        MSGFTN = MS$MSG[0];          # SAVE M860 FUNCTION #
01302  M00S01261.exdrvr  ---|        IF MBF$SAVE[0] EQ SAVEMOST
01303  M00S01262.exdrvr  ---|        THEN                         # SAVE CSN AND DRD #
01304  M00S01263.exdrvr  ---|          BEGIN  # SAVE #
01305  M00S01264.exdrvr  ---|          TEMPCSN0 = MS$CART0[0];
01306  M00S01265.exdrvr  ---|          TEMPCSN1 = MS$CART1[0];
01307  M00S01266.exdrvr  ---|          TEMPCSN2 = MS$CART2[0];
01308  M00S01267.exdrvr  ---|          TEMPDRD = MS$DRDN[0];
01309  M00S01268.exdrvr  ---|          END  # SAVE #
01310  M00S01269.exdrvr  ---|
01311  M00S01270.exdrvr  ---|        ZFILL(UDT$MSG,MSGLT);        # CLEAR MESSAGE BUFFER #
01312  M00S01271.exdrvr  ---|        MS$MSG[0] = MSGFTN;
01313  M00S01272.exdrvr  ---|        MS$MSQN[0] = MSGSEQN;
01314  M00S01273.exdrvr  ---|        IF MBF$SAVE[0] EQ SAVEMOST
01315  M00S01274.exdrvr  ---|        THEN                         # RESTORE CSN AND DRD #
01316  M00S01275.exdrvr  ---|          BEGIN  # RESTORE #
01317  M00S01276.exdrvr  ---|          MS$CART0[0] = TEMPCSN0;
01318  M00S01277.exdrvr  ---|          MS$CART1[0] = TEMPCSN1;
01319  M00S01278.exdrvr  ---|          MS$CART2[0] = TEMPCSN2;
01320  M00S01279.exdrvr  ---|          MS$DRDN[0] = TEMPDRD;
01321  M00S01280.exdrvr  ---|          END  # RESTORE #
01322  M00S01281.exdrvr  ---|
01323  M00S01282.exdrvr  ---|        END  # PRESET NORMALLY #
01324  M00S01283.exdrvr  ---|
01325  M00S01284.exdrvr  ---|      GOTO M860FUNCTN[MS$MSG$M[0]];
01326  M00S01285.exdrvr  ---|
01327  M00S01286.exdrvr  ---|#
01328  M00S01287.exdrvr  ---|*     CREATE *LOAD CARTRIDGE* MESSAGE.
01329  M00S01288.exdrvr  ---|#
01330  M00S01289.exdrvr  ---|
01331  M00S01290.exdrvr  ---|ACQUIRECRT:
01332  M00S01291.exdrvr  ---|      MS$YADD[0] = LLR$Y[0];         # SET COORDINATES #
01333  M00S01292.exdrvr  ---|      MS$ZADD[0] = LLR$Z[0];
Line S01293 Modification History
M01 (Removed by) msea023
Seq #  *Modification Id* Act 
----------------------------+
01334  M01S01293.msea023 ---|
01335  M01S01294.msea023 ---|#
01336  M01S01295.msea023 ---|*     M860 MICROCODE REQUIRES NON-ZERO CSN ON ALL LOADS.
01337  M01S01296.msea023 ---|#
01338  M01S01297.msea023 ---|
01339  M00S01298.exdrvr  ---|      MS$CART0[0] = O"31160552100";  # ** *IBM * EBCDIC #
01340  M01S01299.msea023 ---|      MS$CART2[0] = MS$MSQN[0];      # ** ADD GARBAGE CSN #
Line S00003 Modification History
M01 (Added by) msea023
Seq #  *Modification Id* Act 
----------------------------+
01341  M01S00003.msea023 +++|      SLOWFOR I = 0 STEP 1 UNTIL FIELDSM1
01342  M01S00004.msea023 +++|      DO                             # CONVERT CSN TO EBCDIC #
01343  M01S00005.msea023 +++|        BEGIN  # CONVERT #
01344  M01S00006.msea023 +++|        IF I LQ 5                    ##
01345  M01S00007.msea023 +++|        THEN                         # BYTES 1 THRU 6 #
01346  M01S00008.msea023 +++|          BEGIN  # I LQ 5 #
01347  M01S00009.msea023 +++|          B<I*8,8>MS$CART1[0] = X"F0" LOR B<I*6,6>LLR$CSND[0] - O"33";
01348  M01S00010.msea023 +++|          END  # I LQ 5 #
01349  M01S00011.msea023 +++|
01350  M01S00012.msea023 +++|        ELSE                         # BYTES 7 AND 8 #
01351  M01S00013.msea023 +++|          BEGIN  # I GR 5 #
01352  M01S00014.msea023 +++|          B<(I-6)*8,8>MS$CART2[0] = X"F0" LOR
01353  M01S00015.msea023 +++|                                    B<I*6,6>LLR$CSND[0] - O"33";
01354  M01S00016.msea023 +++|          END  # I GR 5 #
01355  M01S00017.msea023 +++|
01356  M01S00018.msea023 +++|        END  # CONVERT #
01357  M01S00019.msea023 +++|
01358  M00S01300.exdrvr  +++|      GOTO ENTERCRT;                 # SET DRD AND LOCATION #
01359  M00S01301.exdrvr  +++|      RETURN;
01360  M00S01302.exdrvr  +++|
01361  M00S01303.exdrvr  +++|#
01362  M00S01304.exdrvr  +++|*     CREATE *CHANGE DRD STATUS* MESSAGE.
01363  M00S01305.exdrvr  +++|#
01364  M00S01306.exdrvr  +++|
01365  M00S01307.exdrvr  +++|CHANGEDRD:
01366  M00S01308.exdrvr  +++|      FOUND = FALSE;
01367  M00S01309.exdrvr  +++|      UD$DRDWAIT[LLR$CU[0]] = FALSE; # ASSUME CHANGING DRD-S EMPTY #
01368  M00S01310.exdrvr  +++|      SLOWFOR I = 0 STEP 1 WHILE I LQ MAX$DRD AND NOT FOUND
01369  M00S01311.exdrvr  +++|      DO                             # SEARCH FOR DRD CHANGING STATUS #
01370  M00S01312.exdrvr  +++|        BEGIN  # SEARCH #
01371  M00S01313.exdrvr  +++|        SMO = B<I*6,6>UD$SMORDS[LLR$CU[0]];
01372  M00S01314.exdrvr  +++|        IF SMO EQ 0                  ##
01373  M00S01315.exdrvr  +++|          OR NOT SM$EXIST[SMO]
01374  M00S01316.exdrvr  +++|        THEN                         # SM NOT FOUND #
01375  M00S01317.exdrvr  +++|          BEGIN  # RETRY #
01376  M00S01318.exdrvr  +++|          TEST I;
01377  M00S01319.exdrvr  +++|          END  # RETRY #
01378  M00S01320.exdrvr  +++|
01379  M00S01321.exdrvr  +++|        DRST = DRST1;                # ASSUME 2ND CU #
01380  M00S01322.exdrvr  +++|        IF LLR$CU[0] EQ SM$CUO0[SMO]
01381  M00S01323.exdrvr  +++|        THEN                         # 1ST CU CHANGING DRD STATUS #
01382  M00S01324.exdrvr  +++|          BEGIN  # RESET #
01383  M00S01325.exdrvr  +++|          DRST = DRST0;
01384  M00S01326.exdrvr  +++|          END  # RESET #
01385  M00S01327.exdrvr  +++|
01386  M00S01328.exdrvr  +++|        DRDWORD = LOC(D1$ST[SMO]);   # CHECK LOWER DRD FIRST #
01387  M00S01329.exdrvr  +++|        SLOWFOR J = 1 STEP 1 WHILE J LQ MAX$SMDRD AND NOT FOUND
01388  M00S01330.exdrvr  +++|        DO                           # CHECK BOTH DRD-S OF ELIGIBLE SM #
01389  M00S01331.exdrvr  +++|          BEGIN  # DRD-S #
01390  M00S01332.exdrvr  +++|          P<PTHSTAT> = DRDWORD;      # CHECK NEXT DRD #
01391  M00S01333.exdrvr  +++|          IF PATHBIT(DRST,PATH$DF"U$EXISTS") EQ ON  ##
01392  M00S01334.exdrvr  +++|            AND PATHBIT(DRST,PATH$DF"U$DONE") EQ OFF  # NOT CHECKED #
01393  M00S01335.exdrvr  +++|            AND (UD$CNUP[LLR$CU[0]]  # IGNORE ACK BITS IF SET #
01394  M00S01336.exdrvr  +++|            OR PATHBIT(DRST,PATH$DF"U$CU$ACK") EQ ON  # ON/OFF STATUS #
01395  M00S01337.exdrvr  +++|            OR PATHBIT(DRST,PATH$DF"U$DIAG$ACK") EQ ON)  # DIAG STATUS #
01396  M00S01338.exdrvr  +++|          THEN                       # DRD CHANGING STATUS #
01397  M00S01339.exdrvr  +++|            BEGIN  # CHANGING #
01398  M00S01340.exdrvr  +++|            IF (P<PTHSTAT> EQ LOC(D0$ST[SMO]) AND D0$FULL[SMO]  ##
01399  M00S01341.exdrvr  +++|              AND P<LLRQ> NQ D0$LLADR[SMO])  # OTHER DRD COULD GO OFF #
01400  M00S01342.exdrvr  +++|              OR (P<PTHSTAT> EQ LOC(D1$ST[SMO]) AND D1$FULL[SMO]  ##
01401  M00S01343.exdrvr  +++|              AND P<LLRQ> NQ D1$LLADR[SMO])
01402  M00S01344.exdrvr  +++|            THEN                     # CHOSEN DRD STILL FULL #
01403  M00S01345.exdrvr  +++|              BEGIN  # SKIP #
01404  M00S01346.exdrvr  +++|              UD$DRDWAIT[LLR$CU[0]] = TRUE;  # HAVE LLRQ RETRY #
01405  M00S01347.exdrvr  +++|              DRDWORD = LOC(D0$ST[SMO]);  # IN CASE AT DRD 1 #
01406  M00S01348.exdrvr  +++|              TEST J;
01407  M00S01349.exdrvr  +++|              END  # SKIP #
01408  M00S01350.exdrvr  +++|
01409  M00S01351.exdrvr  +++|            PATHBIT(DRST,PATH$DF"U$DONE") = ON;
01410  M00S01352.exdrvr  +++|            IF P<PTHSTAT> EQ LOC(D0$ST[SMO])
01411  M00S01353.exdrvr  +++|            THEN                     # UPPER DRD PROCESSED #
01412  M00S01354.exdrvr  +++|              BEGIN  # DRD 0 #
01413  M00S01355.exdrvr  +++|              D0$DONE[SMO] = TRUE;
01414  M00S01356.exdrvr  +++|              END  # DRD 0 #
01415  M00S01357.exdrvr  +++|
01416  M00S01358.exdrvr  +++|            ELSE                     # LOWER DRD PROCESSED #
01417  M00S01359.exdrvr  +++|              BEGIN  # DRD 1 #
01418  M00S01360.exdrvr  +++|              D1$DONE[SMO] = TRUE;
01419  M00S01361.exdrvr  +++|              END  # DRD 1 #
01420  M00S01362.exdrvr  +++|
01421  M00S01363.exdrvr  +++|            FOUND = TRUE;
01422  M00S01364.exdrvr  +++|            TEST J;
01423  M00S01365.exdrvr  +++|            END  # CHANGING #
01424  M00S01366.exdrvr  +++|
01425  M00S01367.exdrvr  +++|          DRDWORD = LOC(D0$ST[SMO]); # CHECK UPPER DRD NEXT #
01426  M00S01368.exdrvr  +++|          END  # DRD-S #
01427  M00S01369.exdrvr  +++|
01428  M00S01370.exdrvr  +++|        END  # SEARCH #
01429  M00S01371.exdrvr  +++|
01430  M00S01372.exdrvr  +++|      IF NOT FOUND
01431  M00S01373.exdrvr  +++|      THEN                           # NO DRD LEFT TO PROCESS #
01432  M00S01374.exdrvr  +++|        BEGIN  # EXIT #
01433  M00S01375.exdrvr  +++|        IF UD$DRDWAIT[LLR$CU[0]]
01434  M00S01376.exdrvr  +++|        THEN                         # STILL WAITING FOR DRD TO EMPTY #
01435  M00S01377.exdrvr  +++|          BEGIN  # WAIT #
01436  M00S01378.exdrvr  +++|          RETURN;
01437  M00S01379.exdrvr  +++|          END  # WAIT #
01438  M00S01380.exdrvr  +++|
01439  M00S01381.exdrvr  +++|        DRVRACTIVE = TRUE;           # SO DRD ERROR SENDS K-DISPLAY #
01440  M00S01382.exdrvr  +++|        SLOWFOR I = 0 STEP 1 UNTIL MAX$DRD
01441  M00S01383.exdrvr  +++|        DO                           # CLEAR DRD DONE FLAGS #
01442  M00S01384.exdrvr  +++|          BEGIN  # CLEAR #
01443  M00S01385.exdrvr  +++|          SMO = B<I*6,6>UD$SMORDS[LLR$CU[0]];
01444  M00S01386.exdrvr  +++|          IF SMO EQ 0                ##
01445  M00S01387.exdrvr  +++|            OR NOT SM$EXIST[SMO]     # NO SM #
01446  M00S01388.exdrvr  +++|          THEN                       # TRY NEXT ORDINAL #
01447  M00S01389.exdrvr  +++|            BEGIN  # NEXT #
01448  M00S01390.exdrvr  +++|            TEST I;
01449  M00S01391.exdrvr  +++|            END  # NEXT #
01450  M00S01392.exdrvr  +++|
01451  M00S01393.exdrvr  +++|          DRST = DRST1;              # ASSUME 2ND CU #
01452  M00S01394.exdrvr  +++|          IF LLR$CU[0] EQ SM$CUO0[SMO]
01453  M00S01395.exdrvr  +++|          THEN                       # 1ST CU PROCESSED DRD #
01454  M00S01396.exdrvr  +++|            BEGIN  # RESET #
01455  M00S01397.exdrvr  +++|            DRST = DRST0;
01456  M00S01398.exdrvr  +++|            END  # RESET #
01457  M00S01399.exdrvr  +++|
01458  M00S01400.exdrvr  +++|          P<PTHSTAT> = LOC(D0$ST[SMO]);  # CLEAR DRD 0 FLAG #
01459  M00S01401.exdrvr  +++|          PATHBIT(DRST,PATH$DF"U$DONE") = OFF;
Line S00001 Modification History
M01 (Added by) exdrvr3
Seq #  *Modification Id* Act 
----------------------------+
01460  M01S00001.exdrvr3 +++|          GOTO CRMSGA;
01461  M01S00002.exdrvr3 +++|
01462  M01S00003.exdrvr3 +++|CRMSGA:##
01463  M01S00004.exdrvr3 +++|          D0$FLAG[SMO] = B<12,6>D0$WD0[SMO] LOR B<18,6>D0$WD0[SMO];
01464  M01S00005.exdrvr3 +++|          GOTO CRMSGB;
01465  M01S00006.exdrvr3 +++|
01466  M01S00007.exdrvr3 +++|CRMSGB:##
Line S01402 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01467  M01S01402.exdrvr2 ---|          IF DRST NQ 0
01468  M01S01403.exdrvr2 ---|          THEN                       # RESET FOR *SSALTER* #
01469  M01S01404.exdrvr2 ---|            BEGIN  # FIX #
01470  M01S01405.exdrvr2 ---|            STSP = D0$STSP[SMO];
01471  M01S01406.exdrvr2 ---|            STSS = D0$STSS[SMO];
01472  M01S01407.exdrvr2 ---|            D0$FLAG[SMO] = STSP LOR STSS;
01473  M01S01408.exdrvr2 ---|            END  # FIX #
01474  M01S01409.exdrvr2 ---|
01475  M00S01410.exdrvr  ---|          P<PTHSTAT> = LOC(D1$ST[SMO]);  # CLEAR DRD 1 FLAG #
01476  M00S01411.exdrvr  ---|          PATHBIT(DRST,PATH$DF"U$DONE") = OFF;
01477  M01S01412.exdrvr2 ---|          IF DRST NQ 0
01478  M01S01413.exdrvr2 ---|          THEN                       # RESET FOR *SSALTER* #
01479  M01S01414.exdrvr2 ---|            BEGIN  # FIX #
01480  M01S01415.exdrvr2 ---|            STSP = D1$STSP[SMO];
01481  M01S01416.exdrvr2 ---|            STSS = D1$STSS[SMO];
01482  M01S01417.exdrvr2 ---|            D1$FLAG[SMO] = STSP LOR STSS;
01483  M01S01418.exdrvr2 ---|            END  # FIX #
01484  M01S01419.exdrvr2 ---|
Line S00034 Modification History
M01 (Added by) exdrvr2
M02 (Removed by) exdrvr3
Seq #  *Modification Id* Act 
----------------------------+
01485  M02S00034.exdrvr3 ---|
01486  M02S00035.exdrvr3 ---|                                               CONTROL REACTIVE;
01487  M02S00036.exdrvr3 ---|
01488  M02S00037.exdrvr3 ---|          D0$FLAG[SMO] = D0$STSP[SMO] LOR D0$STSS[SMO];
01489  M02S00038.exdrvr3 ---|          D1$FLAG[SMO] = D1$STSP[SMO] LOR D1$STSS[SMO];
01490  M02S00039.exdrvr3 ---|
01491  M02S00040.exdrvr3 ---|                                               CONTROL INERT;
01492  M02S00041.exdrvr3 ---|
Line S00008 Modification History
M01 (Added by) exdrvr3
Seq #  *Modification Id* Act 
----------------------------+
01493  M01S00008.exdrvr3 +++|          GOTO CRMSGC;
01494  M01S00009.exdrvr3 +++|
01495  M01S00010.exdrvr3 +++|CRMSGC:##
01496  M01S00011.exdrvr3 +++|          D1$FLAG[SMO] = B<12,6>D1$WD0[SMO] LOR B<18,6>D1$WD0[SMO];
01497  M00S01420.exdrvr  +++|          END  # CLEAR #
01498  M00S01421.exdrvr  +++|
01499  M00S01422.exdrvr  +++|        RETURN;
01500  M00S01423.exdrvr  +++|        END  # EXIT #
01501  M00S01424.exdrvr  +++|
01502  M00S01425.exdrvr  +++|      DRVRACTIVE = TRUE;             # INDICATE DRIVER ACTIVITY #
01503  M00S01426.exdrvr  +++|      UD$LLRQA[LLR$CU[0]] = P<LLRQ>; # STORE LLRQ ADDRESS #
01504  M00S01427.exdrvr  +++|      MBF$ACTIVE[0] = TRUE;
01505  M00S01428.exdrvr  +++|      MSGSEQN = MS$MSQN$CN[0];       # PRESET MESSAGE BUFFER #
01506  M00S01429.exdrvr  +++|      MSGFTN = MS$MSG[0];
01507  M00S01430.exdrvr  +++|      ZFILL(UDT$MSG,MSGLT);
01508  M00S01431.exdrvr  +++|      MS$MSQN$CN[0] = MSGSEQN;
01509  M00S01432.exdrvr  +++|      MS$MSG[0] = MSGFTN;
01510  M00S01433.exdrvr  +++|      MS$DRDN[0] = D1$SUN[SMO];      # ASSUME LOWER DRD #
01511  M00S01434.exdrvr  +++|      LLR$DRD[0] = 1;
01512  M00S01435.exdrvr  +++|      IF P<PTHSTAT> EQ LOC(D0$ST[SMO])
01513  M00S01436.exdrvr  +++|      THEN                           # UPPER DRD BEING CHANGED #
01514  M00S01437.exdrvr  +++|        BEGIN  # RESET #
01515  M00S01438.exdrvr  +++|        MS$DRDN[0] = D0$SUN[SMO];
01516  M00S01439.exdrvr  +++|        LLR$DRD[0] = 0;
01517  M00S01440.exdrvr  +++|        END  # RESET #
01518  M00S01441.exdrvr  +++|
01519  M00S01442.exdrvr  +++|      IF PATHBIT(DRST,PATH$DF"U$ON") EQ 1  ##
01520  M00S01443.exdrvr  +++|        AND (UD$CNUP[LLR$CU[0]]      ##
01521  M00S01444.exdrvr  +++|        OR PATHBIT(DRST,PATH$DF"U$CU$ACK") EQ 1)
01522  M00S01445.exdrvr  +++|      THEN                           # DRD GOING ONLINE #
01523  M00S01446.exdrvr  +++|        BEGIN  # ON #
01524  M00S01447.exdrvr  +++|        PATHBIT(DRST,PATH$DF"U$CU$ACK") = 1;  # IN CASE CU RESTARTING #
01525  M00S01448.exdrvr  +++|        MS$PARM1A[0] = ONLINE;
01526  M00S01449.exdrvr  +++|        IF SM$SCCU[SMO]
01527  M00S01450.exdrvr  +++|        THEN                         # 2 REQUESTS CHECKING SRV CELLS #
01528  M00S01451.exdrvr  +++|          BEGIN  # ABORT #
01529  M00S01452.exdrvr  +++|          FE$RTN[0] = "CRMSG1A.";
01530  M00S01453.exdrvr  +++|          MESSAGE(FEMSG,UDFL1);
01531  M00S01454.exdrvr  +++|          ABORT;
01532  M00S01455.exdrvr  +++|          END  # ABORT #
01533  M00S01456.exdrvr  +++|
01534  M00S01457.exdrvr  +++|        SM$SCCU[SMO] = TRUE;         # CHECK SERVICE CELLS #
01535  M00S01458.exdrvr  +++|        END  # ON #
01536  M00S01459.exdrvr  +++|
01537  M00S01460.exdrvr  +++|      IF PATHBIT(DRST,PATH$DF"U$ON") EQ OFF  ##
01538  M00S01461.exdrvr  +++|        AND PATHBIT(DRST,PATH$DF"U$RQ$DIAG") EQ OFF
01539  M00S01462.exdrvr  +++|      THEN                           # DRD GOING OFFLINE #
01540  M00S01463.exdrvr  +++|        BEGIN  # OFF #
01541  M00S01464.exdrvr  +++|        MS$PARM1A[0] = OFFLINE;
01542  M00S01465.exdrvr  +++|        END  # OFF #
01543  M00S01466.exdrvr  +++|
01544  M00S01467.exdrvr  +++|      IF PATHBIT(DRST,PATH$DF"U$RQ$DIAG") EQ 1  ##
01545  M00S01468.exdrvr  +++|        AND (UD$CNUP[LLR$CU[0]]      ##
01546  M00S01469.exdrvr  +++|        OR PATHBIT(DRST,PATH$DF"U$DIAG$ACK") EQ 1)
01547  M00S01470.exdrvr  +++|      THEN                           # DRD GOING INTO DIAGNOSTIC MODE #
01548  M00S01471.exdrvr  +++|        BEGIN  # DIAG #
01549  M00S01472.exdrvr  +++|        MS$PARM1A[0] = DIAGNOSTIC;
01550  M00S01473.exdrvr  +++|        END  # DIAG #
01551  M00S01474.exdrvr  +++|
01552  M00S01475.exdrvr  +++|      LLR$SMO[0] = SMO;              # SAVE SM ORDINAL #
01553  M00S01476.exdrvr  +++|      RETURN;
01554  M00S01477.exdrvr  +++|
01555  M00S01478.exdrvr  +++|#
01556  M00S01479.exdrvr  +++|*     CREATE *CHANGE PATH STATUS* MESSAGE.
01557  M00S01480.exdrvr  +++|#
01558  M00S01481.exdrvr  +++|
01559  M00S01482.exdrvr  +++|CHANGEPATH:
01560  M00S01483.exdrvr  +++|      IF MS$MSG[0] EQ HFC$CHSSMA
01561  M00S01484.exdrvr  +++|      THEN                           # CHANGE SM STATUS #
01562  M00S01485.exdrvr  +++|        BEGIN  # SM #
01563  M00S01486.exdrvr  +++|        GOTO CHANGESM;
01564  M00S01487.exdrvr  +++|        END  # SM #
01565  M00S01488.exdrvr  +++|
01566  M00S01489.exdrvr  +++|      IF MS$MSG[0] EQ HFC$CHSDRD
01567  M00S01490.exdrvr  +++|      THEN                           # CHANGE DRD STATUS #
01568  M00S01491.exdrvr  +++|        BEGIN  # DRD #
01569  M00S01492.exdrvr  +++|        GOTO CHANGEDRD;
01570  M00S01493.exdrvr  +++|        END  # DRD #
01571  M00S01494.exdrvr  +++|
01572  M00S01495.exdrvr  +++|      ACKLINE = 0;                   # PRESET ACK BIT LOCATION IN UDT #
01573  M00S01496.exdrvr  +++|      ACKINDEX = 0;
Line S01497 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01574  M01S01497.exdrvr2 ---|      ONACK = 0;
01575  M01S01498.exdrvr2 ---|      DIAGACK = 0;
01576  M00S01499.exdrvr  ---|      START = PTH$FRSTLN[MS$MSG$S[0]];  # PRESET FIRST LINE OF SEARCH #
01577  M00S01500.exdrvr  ---|      FOUND = FALSE;
01578  M00S01501.exdrvr  ---|
01579  M00S01502.exdrvr  ---|#
01580  M00S01503.exdrvr  ---|*     SEARCH FOR ACKNOWLEDGE BITS SET FOR THE DESIRED PATH.
01581  M00S01504.exdrvr  ---|#
01582  M00S01505.exdrvr  ---|
01583  M00S01506.exdrvr  ---|      SLOWFOR I = START STEP 1 UNTIL PTH$LASTLN[MS$MSG$S[0]]
01584  M00S01507.exdrvr  ---|      DO                             # SCAN UDT PATH WORDS #
01585  M00S01508.exdrvr  ---|        BEGIN  # SCAN WORDS #
01586  M00S01509.exdrvr  ---|        IF NOT FOUND
01587  M00S01510.exdrvr  ---|        THEN                         # CONTINUE WORD SCAN #
01588  M00S01511.exdrvr  ---|          BEGIN  # CHECK WORD #
01589  M00S01512.exdrvr  ---|          P<PTHSTAT> = P<UDT$CN> + ((LLR$CU[0]-1) * UDTCNTL) + I;
01590  M01S01513.exdrvr2 ---|          SLOWFOR J = 0 STEP 1 UNTIL PTH$ACK[MS$MSG$S[0]]
Line S00042 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01591  M01S00042.exdrvr2 +++|          SLOWFOR J = 0 STEP 1 UNTIL FIELDSM1
01592  M00S01514.exdrvr  +++|          DO                         # SCAN UDT PATH ACK BITS #
01593  M00S01515.exdrvr  +++|            BEGIN  # SCAN BITS #
01594  M00S01516.exdrvr  +++|            IF NOT FOUND
01595  M00S01517.exdrvr  +++|            THEN                     # CONTINUE BIT SCAN #
01596  M00S01518.exdrvr  +++|              BEGIN  # CHECK BITS #
01597  M00S01519.exdrvr  +++|              IF PATHBIT(J,PATH$DF"U$EXISTS") EQ ON  ##
01598  M00S01520.exdrvr  +++|                AND PATHBIT(J,PATH$DF"U$DONE") EQ OFF
01599  M00S01521.exdrvr  +++|              THEN                   # PATH EXISTS AND NOT PROCESSED #
01600  M00S01522.exdrvr  +++|                BEGIN  # SEND MSG #
01601  M00S01523.exdrvr  +++|                IF PATHBIT(J,PATH$DF"U$ON") EQ ON  ##
01602  M00S01524.exdrvr  +++|                  AND (UD$CNUP[LLR$CU[0]]  ##
01603  M00S01525.exdrvr  +++|                  OR PATHBIT(J,PATH$DF"U$CU$ACK") EQ ON)
01604  M00S01526.exdrvr  +++|                THEN                 # SEND ON MSG #
01605  M00S01527.exdrvr  +++|                  BEGIN  # ONLINE #
01606  M00S01528.exdrvr  +++|                  PATHBIT(J,PATH$DF"U$CU$ACK") = ON;  # SET ON ACK #
01607  M00S01529.exdrvr  +++|                  PATHBIT(J,PATH$DF"U$DONE") = ON;  # IGNORE CU CNUP #
01608  M00S01530.exdrvr  +++|                  NEWPTHSTAT = ONLINE;
Line S01531 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01609  M01S01531.exdrvr2 ---|                  SLOWFOR K = 1 STEP 1 UNTIL MAXSMUNIT
01610  M01S01532.exdrvr2 ---|                  DO                 # ASSUME ALL HARDWARE OK NOW #
01611  M01S01533.exdrvr2 ---|                    BEGIN  # ALL #
01612  M01S01534.exdrvr2 ---|                    SM$HWOFF[K] = FALSE;  # LATER REQUESTS MAY RESET #
01613  M01S01535.exdrvr2 ---|                    END  # ALL #
01614  M01S01536.exdrvr2 ---|
01615  M00S01537.exdrvr  ---|                  FOUND = TRUE;
01616  M00S01538.exdrvr  ---|                  ACKLINE = I;       # SAVE LOCATION #
01617  M00S01539.exdrvr  ---|                  ACKINDEX = J;
01618  M01S01540.exdrvr2 ---|                  ONACK = J;
01619  M00S01541.exdrvr  ---|                  END  # ONLINE #
01620  M00S01542.exdrvr  ---|
01621  M01S01543.exdrvr2 ---|                IF NOT INITIALIZE
01622  M01S01544.exdrvr2 ---|                THEN                 # OFF AND DIAG MODE CAN BE SENT #
01623  M01S01545.exdrvr2 ---|                  BEGIN  # NOT INIT #
01624  M01S01546.exdrvr2 ---|                  IF PATHBIT(J,PATH$DF"U$RQ$DIAG") EQ ON  ##
01625  M01S01547.exdrvr2 ---|                    AND (UD$CNUP[LLR$CU[0]]  ##
01626  M01S01548.exdrvr2 ---|                    OR PATHBIT(J,PATH$DF"U$DIAG$ACK") EQ ON)
01627  M01S01549.exdrvr2 ---|                  THEN               # SEND DIAGNOSTIC MSG #
01628  M01S01550.exdrvr2 ---|                    BEGIN  # DIAG #
01629  M01S01551.exdrvr2 ---|                    PATHBIT(J,PATH$DF"U$DIAG$ACK") = ON;  # SET ACK #
01630  M01S01552.exdrvr2 ---|                    PATHBIT(J,PATH$DF"U$DONE") = ON;  # IGNORE CU CNUP #
01631  M01S01553.exdrvr2 ---|                    NEWPTHSTAT = DIAGNOSTIC;
01632  M01S01554.exdrvr2 ---|                    FOUND = TRUE;
01633  M01S01555.exdrvr2 ---|                    ACKLINE = I;     # SAVE LOCATION #
01634  M01S01556.exdrvr2 ---|                    ACKINDEX = J;
01635  M01S01557.exdrvr2 ---|                    DIAGACK = J;
01636  M01S01558.exdrvr2 ---|                    END  # DIAG #
01637  M01S01559.exdrvr2 ---|
01638  M00S01560.exdrvr  ---|                  IF PATHBIT(J,PATH$DF"U$ON") EQ OFF
01639  M00S01561.exdrvr  ---|                  THEN               # PATH IS OFF #
01640  M00S01562.exdrvr  ---|                    BEGIN  # OFF #
01641  M00S01563.exdrvr  ---|                    IF UD$CNUP[LLR$CU[0]]
01642  M00S01564.exdrvr  ---|                    THEN             # CONTROLLER RESTARTING #
01643  M00S01565.exdrvr  ---|                      BEGIN  # CLEAR #
01644  M00S01566.exdrvr  ---|                      PATHBIT(J,PATH$DF"U$CU$ACK") = OFF;
01645  M00S01567.exdrvr  ---|                      END  # CLEAR #
01646  M00S01568.exdrvr  ---|
01647  M00S01569.exdrvr  ---|                    IF PATHBIT(J,PATH$DF"U$CU$ACK") EQ ON
01648  M00S01570.exdrvr  ---|                    THEN             # SEND OFF MSG #
01649  M00S01571.exdrvr  ---|                      BEGIN  # OFFLINE #
01650  M00S01572.exdrvr  ---|                      PATHBIT(J,PATH$DF"U$DONE") = ON;  # IGNORE CNUP #
01651  M00S01573.exdrvr  ---|                      NEWPTHSTAT = OFFLINE;
01652  M00S01574.exdrvr  ---|                      FOUND = TRUE;
01653  M00S01575.exdrvr  ---|                      ACKLINE = I;   # SAVE LOCATION #
01654  M00S01576.exdrvr  ---|                      ACKINDEX = J;
01655  M01S01577.exdrvr2 ---|                      ONACK = J;
01656  M00S01578.exdrvr  ---|                      END  # OFFLINE #
01657  M00S01579.exdrvr  ---|
01658  M00S01580.exdrvr  ---|                    END  # OFF #
01659  M01S01581.exdrvr2 ---|
01660  M01S01582.exdrvr2 ---|                  END  # NOT INIT #
01661  M00S01583.exdrvr  ---|
01662  M00S01584.exdrvr  ---|                END  # SEND MSG #
01663  M00S01585.exdrvr  ---|
01664  M01S01586.exdrvr2 ---|              IF ONACK NQ 0          ##
01665  M01S01587.exdrvr2 ---|                AND DIAGACK NQ 0
01666  M01S01588.exdrvr2 ---|              THEN                   # ACK BIT ERROR #
01667  M01S01589.exdrvr2 ---|                BEGIN  # ABORT #
01668  M01S01590.exdrvr2 ---|                FE$RTN[0] = "CRMSG2";
01669  M01S01591.exdrvr2 ---|                MESSAGE(FEMSG,UDFL1);
01670  M01S01592.exdrvr2 ---|                ABORT;
01671  M01S01593.exdrvr2 ---|                END  # ABORT #
01672  M01S01594.exdrvr2 ---|
01673  M00S01595.exdrvr  ---|              END  # CHECK BITS #
01674  M00S01596.exdrvr  ---|
01675  M00S01597.exdrvr  ---|            END  # SCAN BITS #
01676  M00S01598.exdrvr  ---|
01677  M00S01599.exdrvr  ---|          END  # CHECK WORD #
01678  M00S01600.exdrvr  ---|
01679  M00S01601.exdrvr  ---|        END # SCAN WORDS #
01680  M00S01602.exdrvr  ---|
01681  M00S01603.exdrvr  ---|      IF NOT FOUND
01682  M00S01604.exdrvr  ---|      THEN                           # ALL STATUS CHANGES COMPLETED #
01683  M00S01605.exdrvr  ---|        BEGIN  # EXIT #
01684  M00S01606.exdrvr  ---|        SLOWFOR I = START STEP 1 UNTIL PTH$LASTLN[MS$MSG$S[0]]
01685  M00S01607.exdrvr  ---|        DO                           # SCAN UDT PATH WORDS #
01686  M00S01608.exdrvr  ---|          BEGIN  # SCAN #
01687  M00S01609.exdrvr  ---|          P<PTHSTAT> = P<UDT$CN> + ((LLR$CU[0]-1) * UDTCNTL) + I;
01688  M01S01610.exdrvr2 ---|          SLOWFOR J = 0 STEP 1 UNTIL PTH$ACK[MS$MSG$S[0]]
Line S00043 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01689  M01S00043.exdrvr2 +++|          SLOWFOR J = 0 STEP 1 UNTIL FIELDSM1
01690  M00S01611.exdrvr  +++|          DO                         # CLEAR PATH-PROCESSED BITS #
01691  M00S01612.exdrvr  +++|            BEGIN  # CLEAR #
01692  M00S01613.exdrvr  +++|            PATHBIT(J,PATH$DF"U$DONE") = OFF;
01693  M00S01614.exdrvr  +++|            END  # CLEAR #
01694  M00S01615.exdrvr  +++|
01695  M00S01616.exdrvr  +++|          END  # SCAN #
01696  M00S01617.exdrvr  +++|
01697  M00S01618.exdrvr  +++|        RETURN;                      # LEAVE MSG BUF FLAG CLEAR #
01698  M00S01619.exdrvr  +++|        END  # EXIT #
01699  M00S01620.exdrvr  +++|
01700  M00S01621.exdrvr  +++|#
01701  M00S01622.exdrvr  +++|*     STORE PATH INFORMATION INTO MESSAGE BUFFER.
01702  M00S01623.exdrvr  +++|#
01703  M00S01624.exdrvr  +++|
01704  M00S01625.exdrvr  +++|      MSGSEQN = MS$MSQN$CN[0];       # PRESET MESSAGE BUFFER #
01705  M00S01626.exdrvr  +++|      MSGFTN = MS$MSG[0];
01706  M00S01627.exdrvr  +++|      ZFILL(UDT$MSG,MSGLT);
01707  M00S01628.exdrvr  +++|      MS$MSQN$CN[0] = MSGSEQN;
01708  M00S01629.exdrvr  +++|      MS$MSG[0] = MSGFTN;
01709  M00S01630.exdrvr  +++|      MS$PARM1A[0] = NEWPTHSTAT;     # SET NEW PATH STATUS #
01710  M00S01631.exdrvr  +++|      MS$PATH[0] = B<ACKINDEX*6,6>NODE$B[ACKLINE];  # ASSUME PATH #
01711  M00S01632.exdrvr  +++|      IF MS$MSG[0] EQ HFC$CHSAIF
01712  M00S01633.exdrvr  +++|      THEN                           # SET SM UNIT NUMBER #
01713  M00S01634.exdrvr  +++|        BEGIN  # RESET #
01714  M00S01635.exdrvr  +++|        MS$PATH[0] = SM$SUN[B<ACKINDEX*6,6>UD$SMORDS[LLR$CU[0]]];
01715  M00S01636.exdrvr  +++|        END  # RESET #
01716  M00S01637.exdrvr  +++|
01717  M00S01638.exdrvr  +++|      IF MS$MSG[0] EQ HFC$CHSDRC
01718  M00S01639.exdrvr  +++|      THEN                           # SET DRD UNIT NUMBER #
01719  M00S01640.exdrvr  +++|        BEGIN  # RESET #
01720  M00S01641.exdrvr  +++|        MS$PATH[0] = ACKINDEX;
01721  M01S00044.exdrvr2 +++|        IF P<PTHSTAT> GQ LOC(UD$DRCP2[LLR$CU[0]])
01722  M01S00045.exdrvr2 +++|        THEN                         # 2ND DRD GROUP BEING ACCESSED #
01723  M01S00046.exdrvr2 +++|          BEGIN  # 2ND #
01724  M01S00047.exdrvr2 +++|          MS$PATH[0] = ACKINDEX + 8;
01725  M01S00048.exdrvr2 +++|          END  # 2ND #
01726  M01S00049.exdrvr2 +++|
01727  M00S01642.exdrvr  +++|        END  # RESET #
01728  M00S01643.exdrvr  +++|
01729  M00S01644.exdrvr  +++|      MS$DRDN[0] = B<ACKINDEX*6,6>NODE$T[ACKLINE];
01730  M00S01645.exdrvr  +++|      MBF$ACTIVE[0] = TRUE;          # SET MSG BUFFER ACTIVE #
01731  M00S01646.exdrvr  +++|      UD$LLRQA[LLR$CU[0]] = P<LLRQ>; # STORE LLRQ ADDRESS #
01732  M00S01647.exdrvr  +++|      LLR$ACKIN[0] = ACKINDEX;       # STORE UDT ACK LOCATION #
01733  M00S01648.exdrvr  +++|      LLR$ACKLN[0] = ACKLINE;
01734  M00S01649.exdrvr  +++|      RETURN;
01735  M00S01650.exdrvr  +++|
01736  M00S01651.exdrvr  +++|#
01737  M00S01652.exdrvr  +++|*     CREATE *CHANGE SM STATUS* MESSAGE.
01738  M00S01653.exdrvr  +++|#
01739  M00S01654.exdrvr  +++|
01740  M00S01655.exdrvr  +++|CHANGESM:
01741  M00S01656.exdrvr  +++|      UD$DRDWAIT[LLR$CU[0]] = FALSE; # ASSUME CHANGING SM-S EMPTY #
01742  M00S01657.exdrvr  +++|      SLOWFOR I = 0 STEP 1 UNTIL MAX$DRD
01743  M00S01658.exdrvr  +++|      DO                             # SEARCH FOR SM CHANGING STATUS #
01744  M00S01659.exdrvr  +++|        BEGIN  # SEARCH #
01745  M00S01660.exdrvr  +++|        SMO = B<I*6,6>UD$SMORDS[LLR$CU[0]];
01746  M00S01661.exdrvr  +++|        IF SMO EQ 0
01747  M00S01662.exdrvr  +++|        THEN                         # NO SM #
01748  M00S01663.exdrvr  +++|          BEGIN  # NEXT #
01749  M00S01664.exdrvr  +++|          TEST I;
01750  M00S01665.exdrvr  +++|          END  # NEXT #
01751  M00S01666.exdrvr  +++|
01752  M00S01667.exdrvr  +++|        P<PTHSTAT> = LOC(SM$STS[SMO]);
01753  M00S01668.exdrvr  +++|        SMST = SMST1;                # ASSUME 2ND CU #
01754  M00S01669.exdrvr  +++|        IF LLR$CU[0] EQ SM$CUO0[SMO]
01755  M00S01670.exdrvr  +++|        THEN                         # 1ST CU CHANGING SM #
01756  M00S01671.exdrvr  +++|          BEGIN  # RESET #
01757  M00S01672.exdrvr  +++|          SMST = SMST0;
01758  M00S01673.exdrvr  +++|          END  # RESET #
01759  M00S01674.exdrvr  +++|
01760  M00S01675.exdrvr  +++|        IF PATHBIT(SMST,PATH$DF"U$DONE") EQ ON
01761  M00S01676.exdrvr  +++|        THEN                         # SM ALREADY PROCESSED #
01762  M00S01677.exdrvr  +++|          BEGIN  # NEXT #
01763  M00S01678.exdrvr  +++|          TEST I;
01764  M00S01679.exdrvr  +++|          END  # NEXT #
01765  M00S01680.exdrvr  +++|
01766  M00S01681.exdrvr  +++|        IF UD$CNUP[LLR$CU[0]]        # CURESTART IN PROGRESS #
01767  M00S01682.exdrvr  +++|          AND PATHBIT(SMST,PATH$DF"U$ON") EQ OFF  ##
01768  M00S01683.exdrvr  +++|          AND PATHBIT(SMST,PATH$DF"U$RQ$DIAG") EQ OFF
01769  M00S01684.exdrvr  +++|        THEN                         # ON/OFF ACK BIT MAY BE SET #
01770  M00S01685.exdrvr  +++|          BEGIN  # CLEAR #
01771  M00S01686.exdrvr  +++|          PATHBIT(SMST,PATH$DF"U$CU$ACK") = OFF;  # SM ALREADY OFF #
01772  M00S01687.exdrvr  +++|          PATHBIT(SMST,PATH$DF"U$DIAG$ACK") = OFF;
01773  M00S01688.exdrvr  +++|          END  # CLEAR #
01774  M00S01689.exdrvr  +++|
01775  M00S01690.exdrvr  +++|        IF SM$EXIST[SMO]             ##
01776  M00S01691.exdrvr  +++|          AND (PATHBIT(SMST,PATH$DF"U$CU$ACK") EQ 1  ##
01777  M00S01692.exdrvr  +++|          OR PATHBIT(SMST,PATH$DF"U$DIAG$ACK") EQ 1  ##
01778  M00S01693.exdrvr  +++|          OR UD$CNUP[LLR$CU[0]])
01779  M00S01694.exdrvr  +++|        THEN                         # SM STATUS CHANGING #
01780  M00S01695.exdrvr  +++|          BEGIN  # CLEAR #
01781  M00S01696.exdrvr  +++|          IF D0$FULL[SMO] OR D1$FULL[SMO]
01782  M00S01697.exdrvr  +++|          THEN                       # WAIT FOR SM TO EMPTY #
01783  M00S01698.exdrvr  +++|            BEGIN  # SKIP #
01784  M00S01699.exdrvr  +++|            UD$DRDWAIT[LLR$CU[0]] = TRUE;  # HAVE LLRQ RETRY #
01785  M00S01700.exdrvr  +++|            TEST I;
01786  M00S01701.exdrvr  +++|            END  # SKIP #
01787  M00S01702.exdrvr  +++|
01788  M00S01703.exdrvr  +++|          GOTO CHANGESM1;            # PROCESS SM #
01789  M00S01704.exdrvr  +++|          END  # CLEAR #
01790  M00S01705.exdrvr  +++|
01791  M00S01706.exdrvr  +++|        END  # SEARCH #
01792  M00S01707.exdrvr  +++|
01793  M00S01708.exdrvr  +++|      IF UD$DRDWAIT[LLR$CU[0]]
01794  M00S01709.exdrvr  +++|      THEN                           # STILL WAITING FOR SM TO EMPTY #
01795  M00S01710.exdrvr  +++|        BEGIN  # RETRY #
01796  M00S01711.exdrvr  +++|        RETURN;
01797  M00S01712.exdrvr  +++|        END  # RETRY #
01798  M00S01713.exdrvr  +++|
01799  M00S01714.exdrvr  +++|      DRVRACTIVE = TRUE;             # KEEP UDT SCAN CONTINUING #
01800  M00S01715.exdrvr  +++|      SLOWFOR I = 0 STEP 1 UNTIL MAX$DRD
01801  M00S01716.exdrvr  +++|      DO                             # CLEAR *SM-PROCESSED* FLAGS #
01802  M00S01717.exdrvr  +++|        BEGIN  # SCAN #
01803  M00S01718.exdrvr  +++|        SMO = B<I*6,6>UD$SMORDS[LLR$CU[0]];
01804  M00S01719.exdrvr  +++|        IF SMO NQ 0                  ##
01805  M00S01720.exdrvr  +++|          AND SM$EXIST[SMO]
01806  M00S01721.exdrvr  +++|        THEN                         # SM EXISTS #
01807  M00S01722.exdrvr  +++|          BEGIN  # CLEAR #
01808  M00S01723.exdrvr  +++|          SMST = SMST1;              # ASSUME 2ND CU #
01809  M00S01724.exdrvr  +++|          IF LLR$CU[0] EQ SM$CUO0[SMO]
01810  M00S01725.exdrvr  +++|          THEN                       # 1ST CU PROCESSED SM #
01811  M00S01726.exdrvr  +++|            BEGIN  # RESET #
01812  M00S01727.exdrvr  +++|            SMST = SMST0;
01813  M00S01728.exdrvr  +++|            END  # RESET #
01814  M00S01729.exdrvr  +++|
01815  M00S01730.exdrvr  +++|          P<PTHSTAT> = LOC(SM$STS[SMO]);
01816  M00S01731.exdrvr  +++|          PATHBIT(SMST,PATH$DF"U$DONE") = OFF;  # CLEAR SM DONE FLAG #
Line S01732 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01817  M01S01732.exdrvr2 ---|          GOTO CRMSGA;               # FIXES COMPILER BUG #
01818  M01S01733.exdrvr2 ---|
01819  M01S01734.exdrvr2 ---|CRMSGA:
01820  M01S01735.exdrvr2 ---|          STSP = SM$STS0[SMO];
01821  M01S01736.exdrvr2 ---|          STSS = SM$STS1[SMO];
01822  M01S01737.exdrvr2 ---|          SM$FLAG[SMO] = STSP LOR STSS;
Line S00050 Modification History
M01 (Added by) exdrvr2
M02 (Removed by) exdrvr4
Seq #  *Modification Id* Act 
----------------------------+
01823  M02S00050.exdrvr4 ---|
01824  M02S00051.exdrvr4 ---|                                               CONTROL REACTIVE;
01825  M02S00052.exdrvr4 ---|
Line S00001 Modification History
M01 (Added by) exdrvr4
Seq #  *Modification Id* Act 
----------------------------+
01826  M01S00001.exdrvr4 +++|          GOTO CRMSGF;
01827  M01S00002.exdrvr4 +++|
01828  M01S00003.exdrvr4 +++|CRMSGF:##
Line S00053 Modification History
M01 (Added by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01829  M01S00053.exdrvr2 +++|          SM$FLAG[SMO] = SM$STS0[SMO] LOR SM$STS1[SMO];# RESET GLOBALS #
Line S00054 Modification History
M01 (Added by) exdrvr2
M02 (Removed by) exdrvr4
Seq #  *Modification Id* Act 
----------------------------+
01830  M02S00054.exdrvr4 ---|
01831  M02S00055.exdrvr4 ---|                                               CONTROL INERT;
01832  M02S00056.exdrvr4 ---|
01833  M00S01738.exdrvr  ---|          END  # CLEAR #
01834  M00S01739.exdrvr  ---|
01835  M00S01740.exdrvr  ---|        END  # SCAN #
01836  M00S01741.exdrvr  ---|
01837  M00S01742.exdrvr  ---|      RETURN;                        # ALL SM-S ON THIS CU PROCESSED #
01838  M00S01743.exdrvr  ---|
01839  M00S01744.exdrvr  ---|#
01840  M00S01745.exdrvr  ---|*     PRESET SM ORDINAL IF VARYING SM ONLINE.
01841  M00S01746.exdrvr  ---|#
01842  M00S01747.exdrvr  ---|
01843  M00S01748.exdrvr  ---|CHANGESM1:
01844  M00S01749.exdrvr  ---|      PATHBIT(SMST,PATH$DF"U$DONE") = ON;  # SM BEING PROCESSED #
Line S01750 Modification History
M01 (Removed by) exdrvr2
Seq #  *Modification Id* Act 
----------------------------+
01845  M01S01750.exdrvr2 ---|      GOTO CRMSGB;                   # FIXES COMPILER BUG #
01846  M01S01751.exdrvr2 ---|
01847  M01S01752.exdrvr2 ---|CRMSGB:
01848  M01S01753.exdrvr2 ---|      STSP = SM$STS0[SMO];           # RESET GLOBAL FLAGS #
01849  M01S01754.exdrvr2 ---|      STSS = SM$STS1[SMO];
01850  M01S01755.exdrvr2 ---|      SM$FLAG[SMO] = STSP LOR STSS;
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/exdrvr.txt ยท Last modified: (external edit)