User Tools

Site Tools


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

Deck SXLLR

Library Member Format: MODIFY

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.sxllr   +++|PROC L;
00002  M00S00002.sxllr   +++|# TITLE L - LOW LEVEL REQUEST PROCESSOR DOCUMENTATION.                #
00003  M00S00003.sxllr   +++|      BEGIN  # L #
00004  M00S00004.sxllr   +++|
00005  M00S00005.sxllr   +++|#
00006  M00S00006.sxllr   +++|****  LOW LEVEL REQUEST PROCESSORS.
00007  M00S00007.sxllr   +++|*
00008  M00S00008.sxllr   +++|*     THE FOLLOWING PROCESSORS CONSTITUTE THE LOW LEVEL REQUEST
00009  M00S00009.sxllr   +++|*     PROCESSORS:
00010  M00S00010.sxllr   +++|*        CPY$DS
00011  M00S00011.sxllr   +++|*        CPY$RS
00012  M00S00012.sxllr   +++|*        CPY$SD
00013  M00S00013.sxllr   +++|*        INIT$HW
00014  M00S00014.sxllr   +++|*        LD$CAR
00015  M00S00015.sxllr   +++|*        RD$LAB
00016  M00S00016.sxllr   +++|*        TEST$YZ
00017  M00S00017.sxllr   +++|*        UNL$CAR
00018  M00S00018.sxllr   +++|*        WT$LAB
00019  M00S00019.sxllr   +++|*
00020  M00S00020.sxllr   +++|*     THESE PROCESSORS ARE ALL CODED IN A SPECIAL WAY THAT IS TERMED
00021  M00S00021.sxllr   +++|*     "PSEUDO-REENTRANT".
00022  M00S00022.sxllr   +++|*
00023  M00S00023.sxllr   +++|*     WHEN A LOW LEVEL REQUEST PROCESSOR IS CALLED IT IS PASSED THE
00024  M00S00024.sxllr   +++|*     ADDRESS OF AN *LLRQ* ENTRY (A REQUEST) WHICH IS READY FOR
00025  M00S00025.sxllr   +++|*     FURTHER PROCESSING.  ALL THE PARAMETERS THE PROCESSOR NEEDS FOR
00026  M00S00026.sxllr   +++|*     ADVANCING THE REQUEST ARE CONTAINED IN THE *LLRQ* ENTRY. IN
00027  M00S00027.sxllr   +++|*     PARTICULAR, THE PROCESS STATE FIELD (LLR$PS) TELLS THE PROCESSOR
00028  M00S00028.sxllr   +++|*     WHERE IT LEFT OFF THE LAST TIME IT WAS PROCESSING THIS REQUEST,
00029  M00S00029.sxllr   +++|*     AND THUS WHAT TO DO NEXT TO ADVANCE THE REQUEST.
00030  M00S00030.sxllr   +++|*
00031  M00S00031.sxllr   +++|*     WHEN A LOW LEVEL REQUEST PROCESSOR REACHES A POINT WHERE IT
00032  M00S00032.sxllr   +++|*     CANNOT CONTINUE ADVANCING THE REQUEST WITHOUT A LONG DELAY, IT
00033  M00S00033.sxllr   +++|*     SETS UP SOME CONDITION THAT WILL EVENTUALLY GET THE REQUEST PUT
00034  M00S00034.sxllr   +++|*     BACK ON THE *LLRQ* READY CHAIN, AND THEN DROPS OUT BY
00035  M00S00035.sxllr   +++|*      1) SETTING THE PROCESS STATE FIELD IN THE *LLRQ* ENTRY TO A
00036  M00S00036.sxllr   +++|*         VALUE THAT WILL ALLOW THE PROCESSOR TO RESTART THE REQUEST
00037  M00S00037.sxllr   +++|*         AT THE CORRECT POINT LATER, AND
00038  M00S00038.sxllr   +++|*      2) RETURNING CONTROL TO THE *LLRQ* MONITOR.
00039  M00S00039.sxllr   +++|*
00040  M00S00040.sxllr   +++|*     WHEN A LOW LEVEL REQUEST PROCESSOR COMPLETES THE PROCESSING OF
00041  M00S00041.sxllr   +++|*     A REQUEST, IT CAUSES THE ORIGINATOR OF THE REQUEST TO BE
00042  M00S00042.sxllr   +++|*     NOTIFIED OF THE COMPLETION.  IF THE REQUEST ORIGINATED FROM A
00043  M00S00043.sxllr   +++|*     *UCP* THE NOTIFICATION IS DONE BY STORING THE RESPONSE CODE IN
00044  M00S00044.sxllr   +++|*     THE LONG TERM CONNECT TABLE ENTRY FOR THE *UCP* AND THEN
00045  M00S00045.sxllr   +++|*     CALLING *UCP$RES*.  IF THE REQUEST ORIGINATED FROM A HIGH LEVEL
00046  M00S00046.sxllr   +++|*     REQUEST PROCESSOR, THE NOTIFICATION IS DONE BY STORING THE
00047  M00S00047.sxllr   +++|*     RESPONSE CODE IN THE *HLRQ* ENTRY FOR THE HIGH LEVEL REQUEST,
00048  M00S00048.sxllr   +++|*     AND PUTTING THE *HLRQ* ENTRY ON THE *HLRQ* READY CHAIN.
00049  M00S00049.sxllr   +++|*
00050  M00S00050.sxllr   +++|*     WHEN THE PROCESSOR HAS NOTIFIED THE ORIGINATOR, IT THEN SETS
00051  M00S00051.sxllr   +++|*     PROCESS STATE FIELD IN THE *LLRQ* ENTRY TO "COMPLETE" AND
00052  M00S00052.sxllr   +++|*     RETURNS CONTROL TO THE *LLRQ* MONITOR. THE MONITOR THEN ZEROES
00053  M00S00053.sxllr   +++|*     OUT THE *LLRQ* ENTRY AND PUTS IT ON THE *LLRQ* FREE SPACE
00054  M00S00054.sxllr   +++|*     CHAIN.
00055  M00S00055.sxllr   +++|#
00056  M00S00056.sxllr   +++|
00057  M00S00057.sxllr   +++|      END  # L #
00058  M00S00058.sxllr   +++|
00059  M00S00059.sxllr   +++|    TERM
00060  M00S00060.sxllr   +++|PROC CPY$DS((LLRADR));
00061  M00S00061.sxllr   +++|# TITLE CPY$DS - COPY DISK TO VOLUME.                                 #
00062  M00S00062.sxllr   +++|
00063  M00S00063.sxllr   +++|      BEGIN  # CPY$DS #
00064  M00S00064.sxllr   +++|
00065  M00S00065.sxllr   +++|#
00066  M00S00066.sxllr   +++|**    CPY$DS - COPY DISK TO VOLUME.
00067  M00S00067.sxllr   +++|*
00068  M00S00068.sxllr   +++|*     *CPY$DS* COPIES THE DISK FILE (FROM ITS CURRENT POSITION) TO THE
00069  M00S00069.sxllr   +++|*     VOLUME, UNTIL END OF VOLUME OR END OF FILE IS ENCOUNTERED.
00070  M00S00070.sxllr   +++|*
00071  M00S00071.sxllr   +++|*     PROC CPY$DS((LLRADR))
00072  M00S00072.sxllr   +++|*
00073  M00S00073.sxllr   +++|*     ENTRY      (LLRADR) - ADDRESS OF *LLRQ* ENTRY FOR THE COPY
00074  M00S00074.sxllr   +++|*                           CONTAINING THE SMA-ID, YZ COORDINATES,
00075  M00S00075.sxllr   +++|*                           ADDRESS OF THE DISK AND M860 FET-S.  THE
00076  M00S00076.sxllr   +++|*                           FET-S MUST BE INITIALIZED.
00077  M00S00077.sxllr   +++|*
00078  M00S00078.sxllr   +++|*     EXIT       THE PROCESS STATE FIELD IN THE *LLRQ* ENTRY HAS BEEN
00079  M00S00079.sxllr   +++|*                ADVANCED TO INDICATE WHERE PROCESSING OF THIS REQUEST
00080  M00S00080.sxllr   +++|*                LEFT OFF AND THUS WHAT TO DO NEXT TO ADVANCE THE
00081  M00S00081.sxllr   +++|*                REQUEST.  WHEN THE COPY IS COMPLETE AN ERROR RESPONSE
00082  M00S00082.sxllr   +++|*                CODE IS RETURNED IN THE *HLRQ* ENTRY WHICH GENERATED
00083  M00S00083.sxllr   +++|*                THE COPY REQUEST.
00084  M00S00084.sxllr   +++|*                (HLR$RESP[0]) - ERROR RESPONSE CODE.
00085  M00S00085.sxllr   +++|*                                (VALUES DEFINED IN *COMBCPR*).
00086  M00S00086.sxllr   +++|*                                = RESPTYP4"OK4".
00087  M00S00087.sxllr   +++|*                                = RESPTYP4"UN$WRT$ERR".
00088  M00S00088.sxllr   +++|*                                = RESPTYP4"EX$WRT$ERR".
00089  M00S00089.sxllr   +++|*                                = RESPTYP4"M86$HDW$PR".
00090  M00S00090.sxllr   +++|*                                = RESPTYP4"RMS$FL$ERR".
00091  M00S00091.sxllr   +++|*
00092  M00S00092.sxllr   +++|*     NOTES      THIS MODULE IS A PSEUDO REENTRANT ROUTINE, CALLED ONLY
00093  M00S00093.sxllr   +++|*                BY *DESTAGR* THRU THE *HLRQ* PROCESSOR.
00094  M00S00094.sxllr   +++|#
00095  M00S00095.sxllr   +++|
00096  M00S00096.sxllr   +++|      ITEM LLRADR     U;             # *LLRQ* ENTRY ADDRESS #
00097  M00S00097.sxllr   +++|      ITEM STRPCT     U;             # NUMBER OF STRIPES #
00098  M00S00098.sxllr   +++|
00099  M00S00099.sxllr   +++|#
00100  M00S00100.sxllr   +++|****  PROC CPY$DS - XREF LIST BEGIN.
00101  M00S00101.sxllr   +++|#
00102  M00S00102.sxllr   +++|
00103  M00S00103.sxllr   +++|      XREF
00104  M00S00104.sxllr   +++|        BEGIN
00105  M00S00105.sxllr   +++|        PROC ADD$LNK;                # ADD ENTRY TO CHAIN #
00106  M00S00106.sxllr   +++|        PROC GETBUF;                 # GET LARGE BUFFER #
00107  M00S00107.sxllr   +++|        PROC RLSBUF;                 # RELASE LARGE BUFFER #
00108  M00S00108.sxllr   +++|        PROC READCW;                 # READ WITH CONTROL WORDS #
00109  M00S00109.sxllr   +++|        PROC SETFET;                 # INITIALIZE LARGE BUFFER #
00110  M00S00110.sxllr   +++|        END
00111  M00S00111.sxllr   +++|
00112  M00S00112.sxllr   +++|#
00113  M00S00113.sxllr   +++|****  PROC CPY$DS - XREF LIST END.
00114  M00S00114.sxllr   +++|#
00115  M00S00115.sxllr   +++|
00116  M00S00116.sxllr   +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
00117  M00S00117.sxllr   +++|*CALL COMBFAS
00118  M00S00118.sxllr   +++|*CALL COMBCDD
00119  M00S00119.sxllr   +++|*CALL COMBCHN
00120  M00S00120.sxllr   +++|*CALL COMBCPR
00121  M00S00121.sxllr   +++|*CALL COMBFET
00122  M00S00122.sxllr   +++|*CALL COMBLRQ
00123  M00S00123.sxllr   +++|*CALL COMBRCD
00124  M00S00124.sxllr   +++|*CALL COMXCCB
00125  M00S00125.sxllr   +++|*CALL COMXHLR
00126  M00S00126.sxllr   +++|*CALL COMXMSC
00127  M00S00127.sxllr   +++|
00128  M00S00128.sxllr   +++|      ITEM FLAG       B;             # FLAG #
00129  M00S00129.sxllr   +++|
00130  M00S00130.sxllr   +++|      SWITCH CDSENTR:PROCST          # COPY DISK TO VOLUME ENTRIES #
00131  M00S00131.sxllr   +++|             CDSINIT:INITIAL,        # INITIAL ENTRY #
00132  M00S00132.sxllr   +++|                CDS1:CONT1,          # WAIT LARGE BUFFER #
00133  M00S00133.sxllr   +++|                CDS2:CONT2,          # DRIVER VOLUME RETURN #
00134  M00S00134.sxllr   +++|                CDS3:CONT3;          # DRIVER RETURN *REWIND/UNLOAD* #
00135  M00S00135.sxllr   +++|                                               CONTROL EJECT;
00136  M00S00136.sxllr   +++|
00137  M00S00137.sxllr   +++|      P<LLRQ> = LLRADR;
00138  M00S00138.sxllr   +++|      P<HLRQ> = LLR$UCPRA[0];
00139  M00S00139.sxllr   +++|      GOTO CDSENTR[LLR$PRCST[0]];
00140  M00S00140.sxllr   +++|
00141  M00S00141.sxllr   +++|#
00142  M00S00142.sxllr   +++|*     "INITIAL" PROCESS STATE.
00143  M00S00143.sxllr   +++|#
00144  M00S00144.sxllr   +++|
00145  M00S00145.sxllr   +++|CDSINIT:                             # SET UP COPY CONTROL BLOCK #
00146  M00S00146.sxllr   +++|      GETBUF(LLRADR,HLRQIND,FLAG);
00147  M00S00147.sxllr   +++|      IF NOT FLAG
00148  M00S00148.sxllr   +++|      THEN                           # NO BUFFER AVAILABLE #
00149  M00S00149.sxllr   +++|        BEGIN
00150  M00S00150.sxllr   +++|        LLR$PRCST[0] = PROCST"CONT1";  # WAIT BUFFER ASSIGNMENT #
00151  M00S00151.sxllr   +++|        ADD$LNK(LLRADR,LCHN"LL$LGBUF",0);
00152  M00S00152.sxllr   +++|        RETURN;
00153  M00S00153.sxllr   +++|        END
00154  M00S00154.sxllr   +++|
00155  M00S00155.sxllr   +++|#
00156  M00S00156.sxllr   +++|*     *CONT1* PROCESS STATE.
00157  M00S00157.sxllr   +++|#
00158  M00S00158.sxllr   +++|
00159  M00S00159.sxllr   +++|CDS1:
00160  M00S00160.sxllr   +++|      SETFET(LLRADR);            # INITIALIZE,LARGE BUFFER #
00161  M00S00161.sxllr   +++|      P<HLRQ> = LLR$UCPRA[0];
00162  M00S00162.sxllr   +++|      P<LLRQ> = LLRADR;
00163  M00S00163.sxllr   +++|      P<CCB> = LLR$CCB[0];
00164  M00S00164.sxllr   +++|      P<FETSET> = LLR$DSKFET[0];
00165  M00S00165.sxllr   +++|      P<FETFHB> = LLR$MSFET[0];
00166  M00S00166.sxllr   +++|      CCBOPCODE[0] = CPYC"DISKAU";
00167  M00S00167.sxllr   +++|      FET$RR[0] = HLR$PRU[0];
00168  M00S00168.sxllr   +++|
00169  M00S00169.sxllr   +++|#
00170  M00S00170.sxllr   +++|*     SET STRIPE INFORMATION IN LARGE BUFFER.
00171  M00S00171.sxllr   +++|#
00172  M00S00172.sxllr   +++|
00173  M00S00173.sxllr   +++|      FHB$TIME[0] = PDATEV;
00174  M00S00174.sxllr   +++|      FHB$SMIF[0] = LLR$SMIF[0];
00175  M00S00175.sxllr   +++|      FHB$CCSN[0] = HLR$CSNTCU[0];
00176  M00S00176.sxllr   +++|      FHB$SHDWD[0] = HLR$FETMT[0];
00177  M00S00177.sxllr   +++|      FHB$PCSN[0] = HLR$CSNTPS[0];
00178  M00S00178.sxllr   +++|      FHB$PFC[0] = HLR$PFC[0];
00179  M00S00179.sxllr   +++|      FHB$CODE[0] = FCCWW;       # CONTROL WORD WRITE #
00180  M00S00180.sxllr   +++|       READCW(FETSET[0],0,NRCL);
00181  M00S00181.sxllr   +++|      LLR$RC[0] = REQCODE"SWRT$VOL";  # ISSUE WRITE VOLUME REQUEST #
00182  M00S00182.sxllr   +++|      LLR$RS[0] = PROCST"INITIAL";
00183  M00S00183.sxllr   +++|      ADD$LNK(CCBLLRQ[0],LCHN"DRQUEUE",0);
00184  M00S00184.sxllr   +++|      LLR$PRCST[0] = PROCST"CONT2";
00185  M00S00185.sxllr   +++|      RETURN;
00186  M00S00186.sxllr   +++|
00187  M00S00187.sxllr   +++|#
00188  M00S00188.sxllr   +++|*     *CONT2* PROCESS STATE.
00189  M00S00189.sxllr   +++|*     CPU DRIVER RETURN FROM VOLUME MOUNT.
00190  M00S00190.sxllr   +++|#
00191  M00S00191.sxllr   +++|
00192  M00S00192.sxllr   +++|CDS2:                                # PROCESS DRIVER RESPONSE #
00193  M00S00193.sxllr   +++|      IF LLR$DR[0] NQ RESPTYP4"OK4"
00194  M00S00194.sxllr   +++|      THEN
00195  M00S00195.sxllr   +++|        BEGIN        # PROCESS DRIVER ERROR RETURN CODE #
00196  M00S00196.sxllr   +++|        IF LLR$DR[0] EQ RESPTYP4"UN$WRT$ERR"
00197  M00S00197.sxllr   +++|        THEN
00198  M00S00198.sxllr   +++|          BEGIN       # UNRECOVERED WRITE ERROR #
00199  M00S00199.sxllr   +++|          HLR$AUUD[0] = (LLR$ST$LW[0] - INFTST) / INSPAU + 1;
00200  M00S00200.sxllr   +++|          HLR$HRDE[0] = HLR$HRDE[0] + 1;        # SET WRITE ERROR #
00201  M00S00201.sxllr   +++|          END       # WRITE ERROR #
00202  M00S00202.sxllr   +++|        GOTO CONT;
00203  M00S00203.sxllr   +++|        END
00204  M00S00204.sxllr   +++|
00205  M00S00205.sxllr   +++|      ADD$LNK(LLR$CCB[0],LCHN"KC$GOING",0);
00206  M00S00206.sxllr   +++|      LLR$PRCST[0] = PROCST"CONT3";
00207  M00S00207.sxllr   +++|      RETURN;
00208  M00S00208.sxllr   +++|
00209  M00S00209.sxllr   +++|
00210  M00S00210.sxllr   +++|#
00211  M00S00211.sxllr   +++|*     *CONT3* PROCESS STATE.
00212  M00S00212.sxllr   +++|*     KEEP COPY GOING RETURN AFTER REWIND/UNLOAD COMMAND.
00213  M00S00213.sxllr   +++|#
00214  M00S00214.sxllr   +++|
00215  M00S00215.sxllr   +++|CDS3:
00216  M00S00216.sxllr   +++|      P<CCB> = LLR$CCB[0];
00217  M00S00217.sxllr   +++|      HLR$AUUD[0] = (LLR$LT$ST[0] - INFTST) / INSPAU + 1;
00218  M00S00218.sxllr   +++|      STRPCT = LLR$LOG$ST[0] / INSPAU;
00219  M00S00219.sxllr   +++|
00220  M00S00220.sxllr   +++|       IF CCBDERR[0]
00221  M00S00221.sxllr   +++|       THEN
00222  M00S00222.sxllr   +++|         BEGIN         # DISK ERROR #
00223  M00S00223.sxllr   +++|         LLR$DR[0] = RESPTYP4"RMS$FL$ERR";
00224  M00S00224.sxllr   +++|         GOTO CONT;
00225  M00S00225.sxllr   +++|         END
00226  M00S00226.sxllr   +++|
00227  M00S00227.sxllr   +++|      IF (CCBHDWPM[0])
00228  M00S00228.sxllr   +++|        OR (LLR$DR[0] NQ RESPTYP4"OK4")
00229  M00S00229.sxllr   +++|        OR (HLR$AUUD[0] LS HLR$VOLAU[0])
00230  M00S00230.sxllr   +++|        OR (HLR$AUUD[0] GR (HLR$VOLAU[0] + HLR$VOLLN[0]))
00231  M00S00231.sxllr   +++|        OR (STRPCT GR HLR$VOLLN[0])
00232  M00S00232.sxllr   +++|      THEN                           # HARDWARE ERROR #
00233  M00S00233.sxllr   +++|        BEGIN
00234  M00S00234.sxllr   +++|        LLR$DR[0] = RESPTYP4"M86$HDW$PR";
00235  M00S00235.sxllr   +++|        LLR$DRFUL[0] = TRUE;         # FORCE UNLOAD OF CARTRIDGE #
00236  M00S00236.sxllr   +++|        GOTO CONT;
00237  M00S00237.sxllr   +++|        END
00238  M00S00238.sxllr   +++|
00239  M00S00239.sxllr   +++|      IF CCBTAPPAR
00240  M00S00240.sxllr   +++|      THEN
00241  M00S00241.sxllr   +++|        BEGIN       # WRITE PARITY ERROR #
00242  M00S00242.sxllr   +++|        LLR$DR[0] = RESPTYP4"UN$WRT$ERR";
00243  M00S00243.sxllr   +++|        HLR$HRDE[0] = HLR$HRDE[0] + 1;       # SET WRITE ERROR #
00244  M00S00244.sxllr   +++|        GOTO CONT;
00245  M00S00245.sxllr   +++|        END
00246  M00S00246.sxllr   +++|
00247  M00S00247.sxllr   +++|        HLR$PRU[0] = LLR$LOG$ST[0] * INPRUS + HLR$PRU[0];
00248  M00S00248.sxllr   +++|
00249  M00S00249.sxllr   +++|CONT:
00250  M00S00250.sxllr   +++|
00251  M00S00251.sxllr   +++|      HLR$RESP[0] = LLR$DR[0];       # RETURN RESPONSE #
00252  M00S00252.sxllr   +++|      ADD$LNK(LLR$UCPRA[0],LCHN"HL$READY",0);
Line S00001 Modification History
M01 (Added by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00253  M01S00001.sxllr2  +++|      LLR$MSFET[0] = 0;
00254  M01S00002.sxllr2  +++|      LLR$DSKFET[0] = 0;
00255  M00S00253.sxllr   +++|      RLSBUF(LLRADR);                # RELEASE BUFFER #
00256  M00S00254.sxllr   +++|      RETURN;
00257  M00S00255.sxllr   +++|      END  # CPY$DS #
00258  M00S00256.sxllr   +++|
00259  M00S00257.sxllr   +++|    TERM
00260  M00S00258.sxllr   +++|PROC CPY$RS((LLRADR));
00261  M00S00259.sxllr   +++|# TITLE CPY$RS - COPY RAW VOLUME.                                     #
00262  M00S00260.sxllr   +++|
00263  M00S00261.sxllr   +++|      BEGIN  # CPY$RS #
00264  M00S00262.sxllr   +++|
00265  M00S00263.sxllr   +++|#
00266  M00S00264.sxllr   +++|**    CPY$RS - COPY RAW VOLUME.
00267  M00S00265.sxllr   +++|*
00268  M00S00266.sxllr   +++|*     *CPY$RS* APPENDS A RAW VOLUME TO A FILE, STARTING WITH THE
00269  M00S00267.sxllr   +++|*     CURRENT POSITION ON THE VOLUME TO THE END OF VOLUME.
00270  M00S00268.sxllr   +++|*
00271  M00S00269.sxllr   +++|*     PROC CPY$RS((LLRADR))
00272  M00S00270.sxllr   +++|*
00273  M00S00271.sxllr   +++|*     ENTRY      (LLRADR) - ADDRESS OF *LLRQ* ENTRY FOR THE COPY
00274  M00S00272.sxllr   +++|*                           CONTAINING THE SMA-ID, THE VOLUME
00275  M00S00273.sxllr   +++|*                           NUMBER, AND THE YZ COORDINATES.
00276  M00S00274.sxllr   +++|*
00277  M00S00275.sxllr   +++|*     EXIT       THE PROCESS STATE FIELD IN THE *LLRQ* ENTRY HAS BEEN
00278  M00S00276.sxllr   +++|*                ADVANCED TO INDICATE WHERE PROCESSING OF THIS REQUEST
00279  M00S00277.sxllr   +++|*                LEFT OFF AND THUS WHAT TO DO NEXT TO ADVANCE THE
00280  M00S00278.sxllr   +++|*                REQUEST.  WHEN THE COPY IS COMPLETE AN ERROR RESPONSE
00281  M00S00279.sxllr   +++|*                CODE IS RETURNED VIA *LTC$RQR[LTCENTRY]*.
00282  M00S00280.sxllr   +++|*                (LTC$RQR[LTCENTRY]) - ERROR RESPONSE CODE.
00283  M00S00281.sxllr   +++|*                                      (VALUES DEFINED IN *COMBCPR*).
00284  M00S00282.sxllr   +++|*                                      = RESPTYP4"OK4".
00285  M00S00283.sxllr   +++|*                                      = RESPTYP4"M86$HDW$PR".
00286  M00S00284.sxllr   +++|*                                      = RESPTYP4"RMS$FL$ERR".
00287  M00S00285.sxllr   +++|*                                      = RESPTYP4"DISK$FULL".
00288  M00S00286.sxllr   +++|*
00289  M00S00287.sxllr   +++|*     MESSAGES   * EXEC ABNORMAL, CPY$RS.*.
00290  M00S00288.sxllr   +++|*
00291  M00S00289.sxllr   +++|*     NOTES      THIS MODULE IS A PSEUDO REENTRANT ROUTINE.  A COPY RAW
00292  M00S00290.sxllr   +++|*                VOLUME REQUEST ONLY COMES FROM *ASDEBUG* AND IS USED
00293  M00S00291.sxllr   +++|*                TO SALVAGE INFORMATION FROM A VOLUME WITH READ ERRORS.
00294  M00S00292.sxllr   +++|#
00295  M00S00293.sxllr   +++|
00296  M00S00294.sxllr   +++|      ITEM LLRADR     U;             # *LLRQ* ENTRY ADDRESS #
00297  M00S00295.sxllr   +++|
00298  M00S00296.sxllr   +++|#
00299  M00S00297.sxllr   +++|****  PROC CPY$RS - XREF LIST BEGIN.
00300  M00S00298.sxllr   +++|#
00301  M00S00299.sxllr   +++|
00302  M00S00300.sxllr   +++|      XREF
00303  M00S00301.sxllr   +++|        BEGIN
00304  M00S00302.sxllr   +++|        PROC ABORT;                  # ABORT #
00305  M00S00303.sxllr   +++|        PROC ADD$LNK;                # ADD ENTRY TO CHAIN #
00306  M00S00304.sxllr   +++|        PROC DELAY;                  # TIMED DELAY #
00307  M00S00305.sxllr   +++|        PROC GETBUF;                 # GET LARGE BUFFERS #
00308  M00S00306.sxllr   +++|        PROC MESSAGE;                # ISSUE MESSAGE #
00309  M00S00307.sxllr   +++|        PROC PFD;                    # PERMANENT FILE REQUEST DELAYS #
00310  M00S00308.sxllr   +++|        PROC RETERN;                 # RETURN FILE #
00311  M00S00309.sxllr   +++|        PROC RLSBUF;                 # RELEASE LARGE BUFFERS #
00312  M00S00310.sxllr   +++|        PROC SETFET;                 # INITIALIZE LARGE BUFFER #
00313  M00S00311.sxllr   +++|        PROC SETPFP;                 # SET PERMANENT FILE PARAMETERS #
00314  M00S00312.sxllr   +++|        PROC SFCALL;                 # INTERFACE TO *SFCALL* MACRO #
00315  M00S00313.sxllr   +++|        PROC SKIPEI;                 # SKIP TO *EOI* #
00316  M00S00314.sxllr   +++|        PROC UCP$RESP;               # UCP RESPONSE #
00317  M00S00315.sxllr   +++|        PROC WRITE;                  # WRITE DATA FROM *CIO* BUFFER #
00318  M00S00316.sxllr   +++|        PROC WRITER;                 # WRITE *EOR* #
00319  M00S00317.sxllr   +++|        END
00320  M00S00318.sxllr   +++|
00321  M00S00319.sxllr   +++|#
00322  M00S00320.sxllr   +++|****  PROC CPY$RS - XREF LIST END.
00323  M00S00321.sxllr   +++|#
00324  M00S00322.sxllr   +++|
00325  M00S00323.sxllr   +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
00326  M00S00324.sxllr   +++|*CALL COMBFAS
00327  M00S00325.sxllr   +++|*CALL COMBCHN
00328  M00S00326.sxllr   +++|*CALL COMBCPR
00329  M00S00327.sxllr   +++|*CALL COMBFET
00330  M00S00328.sxllr   +++|*CALL COMBLBL
00331  M00S00329.sxllr   +++|*CALL COMBLRQ
00332  M00S00330.sxllr   +++|*CALL COMBPFP
00333  M00S00331.sxllr   +++|*CALL COMBPFS
00334  M00S00332.sxllr   +++|*CALL COMBRCD
00335  M00S00333.sxllr   +++|*CALL COMBUCR
00336  M00S00334.sxllr   +++|*CALL COMXBST
00337  M00S00335.sxllr   +++|*CALL COMXIPR
00338  M00S00336.sxllr   +++|*CALL COMXLTC
00339  M00S00337.sxllr   +++|*CALL COMXMSC
00340  M00S00338.sxllr   +++|*CALL COMSPFM
00341  M00S00339.sxllr   +++|
00342  M00S00340.sxllr   +++|      ITEM FLAG       B;             # FLAG #
00343  M00S00341.sxllr   +++|
00344  M00S00342.sxllr   +++|      SWITCH CRSENTR:PROCST          # COPY RAW VOLUME ENTRIES #
00345  M00S00343.sxllr   +++|             CRSINIT:INITIAL,        # INITIAL ENTRY #
00346  M00S00344.sxllr   +++|                CRS1:CONT1,          # CONTINUATION 1 #
00347  M00S00345.sxllr   +++|                CRS2:CONT2,          # CONTINUATION 2 #
00348  M00S00346.sxllr   +++|                CRS3:CONT3,          # CONTINUATION 3 #
00349  M00S00347.sxllr   +++|                CRS4:CONT4;          # CONTINUATION 4 #
00350  M00S00348.sxllr   +++|                                               CONTROL EJECT;
00351  M00S00349.sxllr   +++|
00352  M00S00350.sxllr   +++|      P<LLRQ> = LLRADR;
00353  M00S00351.sxllr   +++|      LLR$DR[0] = RESPTYP4"OK4";
00354  M00S00352.sxllr   +++|      GOTO CRSENTR[LLR$PRCST[0]];    # PROCESS REQUEST #
00355  M00S00353.sxllr   +++|
00356  M00S00354.sxllr   +++|#
00357  M00S00355.sxllr   +++|*     "INITIAL" PROCESS STATE.
00358  M00S00356.sxllr   +++|#
00359  M00S00357.sxllr   +++|
00360  M00S00358.sxllr   +++|CRSINIT:
00361  M00S00359.sxllr   +++|      GETBUF(LLRADR,HLRQIND,FLAG);
00362  M00S00360.sxllr   +++|      IF NOT FLAG
00363  M00S00361.sxllr   +++|      THEN                           # NO BUFFER AVAILABLE #
00364  M00S00362.sxllr   +++|        BEGIN
00365  M00S00363.sxllr   +++|        LLR$PRCST[0] = PROCST"CONT1";   #WAIT BUFFER ASSIGNMENT#
00366  M00S00364.sxllr   +++|        ADD$LNK(LLRADR,LCHN"LL$LGBUF",0);
00367  M00S00365.sxllr   +++|        RETURN;
00368  M00S00366.sxllr   +++|        END
00369  M00S00367.sxllr   +++|
00370  M00S00368.sxllr   +++|
00371  M00S00369.sxllr   +++|CRS1:
00372  M00S00370.sxllr   +++|      SETFET(LLRADR);
00373  M00S00371.sxllr   +++|
00374  M00S00372.sxllr   +++|#
00375  M00S00373.sxllr   +++|*     "CONT1" PROCESS STATE.
00376  M00S00374.sxllr   +++|*
00377  M00S00375.sxllr   +++|*     REREAD THE UCP REQUEST BLOCK TO GET THE FAMILY, USER INDEX,
00378  M00S00376.sxllr   +++|*     AND FILE NAME.
00379  M00S00377.sxllr   +++|#
00380  M00S00378.sxllr   +++|
00381  M00S00379.sxllr   +++|CRS2:
00382  M00S00380.sxllr   +++|      IF LLR$UCPABT[0]
00383  M00S00381.sxllr   +++|      THEN
00384  M00S00382.sxllr   +++|        BEGIN
00385  M00S00383.sxllr   +++|        GOTO CRSCOMP;
00386  M00S00384.sxllr   +++|        END
00387  M00S00385.sxllr   +++|
00388  M00S00386.sxllr   +++|      P<FETSET> = LLR$DSKFET[0];
00389  M00S00387.sxllr   +++|      LTCENTRY = LLR$LTCT[0];
00390  M00S00388.sxllr   +++|      LTC$SFUCPA[LTCENTRY] = LLR$UCPRA[0];
00391  M00S00389.sxllr   +++|      LTC$SFSCPA[LTCENTRY] = FET$IN[0];
00392  M00S00390.sxllr   +++|      LTC$SFFP[LTCENTRY] = TYP4$WC + 1;
00393  M00S00391.sxllr   +++|      LTC$SFFC[LTCENTRY] = SFREAD;
00394  M00S00392.sxllr   +++|      SFCALL(LOC(LTC$WORD0[LTCENTRY]),RCL);
00395  M00S00393.sxllr   +++|      IF LTC$SFRC[LTCENTRY] NQ 0
00396  M00S00394.sxllr   +++|      THEN
00397  M00S00395.sxllr   +++|        BEGIN  # PROCESS ERROR RESPONSE #
00398  M00S00396.sxllr   +++|        IF LTC$SFRC[LTCENTRY] EQ SFRCSWPOUT
00399  M00S00397.sxllr   +++|        THEN
00400  M00S00398.sxllr   +++|          BEGIN  # SWAP IN UCP #
00401  M00S00399.sxllr   +++|          LTC$SFUCPA[LTCENTRY] = 0;
00402  M00S00400.sxllr   +++|          LTC$SFSCPA[LTCENTRY] = 0;
00403  M00S00401.sxllr   +++|          LTC$SFFC[LTCENTRY] = SFSWPI;
00404  M00S00402.sxllr   +++|          SFCALL(LOC(LTC$WORD0[LTCENTRY]),NRCL);
00405  M00S00403.sxllr   +++|
00406  M00S00404.sxllr   +++|#
00407  M00S00405.sxllr   +++|*     "CONT3" PROCESS STATE.
00408  M00S00406.sxllr   +++|#
00409  M00S00407.sxllr   +++|
00410  M00S00408.sxllr   +++|CRS3:
00411  M00S00409.sxllr   +++|          LTCENTRY = LLR$LTCT[0];
00412  M00S00410.sxllr   +++|          IF LTC$SFFCC[LTCENTRY]
00413  M00S00411.sxllr   +++|          THEN                       # RETRY *SFREAD* #
00414  M00S00412.sxllr   +++|            BEGIN
00415  M00S00413.sxllr   +++|            LLR$PRCST[0] = PROCST"CONT2";
00416  M00S00414.sxllr   +++|            END
00417  M00S00415.sxllr   +++|
00418  M00S00416.sxllr   +++|          ELSE                       # DELAY FOR REQUEST COMPLETION #
00419  M00S00417.sxllr   +++|            BEGIN
00420  M00S00418.sxllr   +++|            LLR$PRCST[0] = PROCST"CONT3";
00421  M00S00419.sxllr   +++|            DELAY(UCP$INTV,LLRADR,LLRQIND);
00422  M00S00420.sxllr   +++|            END
00423  M00S00421.sxllr   +++|
00424  M00S00422.sxllr   +++|          RETURN;
00425  M00S00423.sxllr   +++|          END  # SWAP IN UCP #
00426  M00S00424.sxllr   +++|
00427  M00S00425.sxllr   +++|        ELSE                         # FATAL ERROR #
00428  M00S00426.sxllr   +++|          BEGIN
00429  M00S00427.sxllr   +++|          GOTO CRSFERR;
00430  M00S00428.sxllr   +++|          END
00431  M00S00429.sxllr   +++|
00432  M00S00430.sxllr   +++|        END  # PROCESS ERROR RESPONSE #
00433  M00S00431.sxllr   +++|
00434  M00S00432.sxllr   +++|      P<CPR> = FET$IN[0];
00435  M00S00433.sxllr   +++|      FET$LFN[0] = CPR$PFN[0];
00436  M00S00434.sxllr   +++|      PFP$WRD0[0] = 0;               # SET FAMILY AND USER INDEX #
00437  M00S00435.sxllr   +++|      PFP$FAM[0] = CPR$FAM[0];
00438  M00S00436.sxllr   +++|      PFP$UI[0] = CPR$UI[0];
00439  M00S00437.sxllr   +++|      PFP$FG1[0] = TRUE;
00440  M00S00438.sxllr   +++|      PFP$FG4[0] = TRUE;
00441  M00S00439.sxllr   +++|      SETPFP(PFP);
00442  M00S00440.sxllr   +++|      IF PFP$STAT[0] NQ 0
00443  M00S00441.sxllr   +++|      THEN
00444  M00S00442.sxllr   +++|        BEGIN
00445  M00S00443.sxllr   +++|        GOTO CRSFERR;
00446  M00S00444.sxllr   +++|        END
00447  M00S00445.sxllr   +++|
00448  M00S00446.sxllr   +++|      PFD("ATTACH",FET$LFN[0],0,"M","W","RC",PFSTAT,"NA",0,"UP",0,0);
00449  M00S00447.sxllr   +++|      PFP$FAM[0] = DEF$FAM;          # RETURN TO DEFAULT FAMILY #
00450  M00S00448.sxllr   +++|      PFP$UI[0] = DEF$UI;
00451  M00S00449.sxllr   +++|      SETPFP(PFP);
00452  M00S00450.sxllr   +++|      IF PFP$STAT[0] NQ 0
00453  M00S00451.sxllr   +++|      THEN
00454  M00S00452.sxllr   +++|        BEGIN
00455  M00S00453.sxllr   +++|        GOTO CRSFERR;
00456  M00S00454.sxllr   +++|        END
00457  M00S00455.sxllr   +++|
00458  M00S00456.sxllr   +++|      IF PFSTAT NQ 0
00459  M00S00457.sxllr   +++|      THEN                           # IF *ATTACH* ERROR #
00460  M00S00458.sxllr   +++|        BEGIN
00461  M00S00459.sxllr   +++|        LLR$DR[0] = RESPTYP4"ATTACH$ERR";
00462  M00S00460.sxllr   +++|        GOTO CRSCOMP;
00463  M00S00461.sxllr   +++|        END
00464  M00S00462.sxllr   +++|
00465  M00S00463.sxllr   +++|      SKIPEI(FETSET[0],RCL);
00466  M00S00464.sxllr   +++|
00467  M00S00465.sxllr   +++|#
00468  M00S00466.sxllr   +++|*     SET READ ONE STRIPE AT A TIME.
00469  M00S00467.sxllr   +++|#
00470  M00S00468.sxllr   +++|
00471  M00S00469.sxllr   +++|      LLR$SAV$HI[0] = LLR$ST$HI[0];        # SAVE LAST STRIPE TO READ #
00472  M00S00470.sxllr   +++|      LLR$ST$HI[0] = LLR$ST$LW[0] + 1;
00473  M00S00471.sxllr   +++|
00474  M00S00472.sxllr   +++|#
00475  M00S00473.sxllr   +++|*     ISSUE A READ RAW STRIPE REQUEST TO THE DRIVER. WHEN IT IS
00476  M00S00474.sxllr   +++|*     COMPLETED, WRITE THE RAW STRIPE TO THE DISK FILE. THEN LOOP
00477  M00S00475.sxllr   +++|*     BACK TO READ THE NEXT RAW STRIPE. CONTINUE THIS LOOP UNTIL
00478  M00S00476.sxllr   +++|*     THE LAST STRIPE IS READ.
00479  M00S00477.sxllr   +++|#
00480  M00S00478.sxllr   +++|
00481  M00S00479.sxllr   +++|      LLR$RC[0] = REQCODE"SRDRAW$STP";
00482  M00S00480.sxllr   +++|      LLR$PRCST[0] = PROCST"CONT4";
00483  M00S00481.sxllr   +++|
00484  M00S00482.sxllr   +++|RDRAWSTP:                            # ISSUE READ RAW STRIPE REQUEST #
00485  M00S00483.sxllr   +++|      IF LLR$UCPABT[0]
00486  M00S00484.sxllr   +++|      THEN
00487  M00S00485.sxllr   +++|        BEGIN
00488  M00S00486.sxllr   +++|        GOTO CRSCOMP;
00489  M00S00487.sxllr   +++|        END
00490  M00S00488.sxllr   +++|
00491  M00S00489.sxllr   +++|      LLR$DR[0] = 0;
00492  M00S00490.sxllr   +++|      LLR$RS[0] = PROCST"INITIAL";
00493  M00S00491.sxllr   +++|      ADD$LNK(LLRADR,LCHN"DRQUEUE",0);
00494  M00S00492.sxllr   +++|      RETURN;
00495  M00S00493.sxllr   +++|
00496  M00S00494.sxllr   +++|#
00497  M00S00495.sxllr   +++|*     "CONT4" PROCESS STATE.
00498  M00S00496.sxllr   +++|#
00499  M00S00497.sxllr   +++|
00500  M00S00498.sxllr   +++|CRS4:
00501  M00S00499.sxllr   +++|      IF LLR$DR[0] NQ RESPTYP4"OK4"           ##
00502  M00S00500.sxllr   +++|      THEN
00503  M00S00501.sxllr   +++|        BEGIN  # PROCESS ERROR #
00504  M00S00502.sxllr   +++|         GOTO CRSCOMP;
00505  M00S00503.sxllr   +++|         END
00506  M00S00504.sxllr   +++|      P<FETFHB> = LLR$MSFET[0];
00507  M00S00505.sxllr   +++|      P<FETSET> = LLR$DSKFET[0];
00508  M00S00506.sxllr   +++|      FET$IN[0] = FHB$IN[0];
00509  M00S00507.sxllr   +++|
00510  M00S00508.sxllr   +++|      WRITER(FETSET[0],RCL);
00511  M00S00509.sxllr   +++|
00512  M00S00510.sxllr   +++|      IF FET$AT[0] NQ 0
00513  M00S00511.sxllr   +++|      THEN
00514  M00S00512.sxllr   +++|        BEGIN  # WRITE ERROR #
00515  M00S00513.sxllr   +++|        IF FET$AT[0] EQ ATCODE AND FET$DEC[0] EQ DISKFULL
00516  M00S00514.sxllr   +++|        THEN                         # DISK FULL #
00517  M00S00515.sxllr   +++|          BEGIN
00518  M00S00516.sxllr   +++|          LLR$DR[0] = RESPTYP4"DISK$FULL";
00519  M00S00517.sxllr   +++|          END
00520  M00S00518.sxllr   +++|
00521  M00S00519.sxllr   +++|        ELSE                         # FILE WRITE ERROR #
00522  M00S00520.sxllr   +++|          BEGIN
00523  M00S00521.sxllr   +++|          LLR$DR[0] = RESPTYP4"RMS$FL$ERR";
00524  M00S00522.sxllr   +++|          END
00525  M00S00523.sxllr   +++|
00526  M00S00524.sxllr   +++|        GOTO CRSCOMP;
00527  M00S00525.sxllr   +++|        END  # WRITE ERROR #
00528  M00S00526.sxllr   +++|
00529  M00S00527.sxllr   +++|      LLR$ST$LW[0] = LLR$ST$LW[0] + 1;
00530  M00S00528.sxllr   +++|      LLR$ST$HI[0] = LLR$ST$LW[0] + 1;
00531  M00S00529.sxllr   +++|
00532  M00S00530.sxllr   +++|      IF LLR$ST$LW[0] LQ LLR$SAV$HI[0]
00533  M00S00531.sxllr   +++|      THEN                           # IF NOT END OF VOLUME #
00534  M00S00532.sxllr   +++|        BEGIN
00535  M00S00533.sxllr   +++|        FHB$IN[0] = FET$FRST[0];
00536  M00S00534.sxllr   +++|        FHB$OUT[0] = FET$FRST[0];
00537  M00S00535.sxllr   +++|        FET$IN[0] = FET$FRST[0];
00538  M00S00536.sxllr   +++|        FET$OUT[0] = FET$FRST[0];
00539  M00S00537.sxllr   +++|        GOTO RDRAWSTP;               # CONTINUE READING STRIPES #
00540  M00S00538.sxllr   +++|        END
00541  M00S00539.sxllr   +++|
00542  M00S00540.sxllr   +++|      LLR$DR[0] = RESPTYP4"OK4";
00543  M00S00541.sxllr   +++|
00544  M00S00542.sxllr   +++|CRSCOMP:
00545  M00S00543.sxllr   +++|      P<FETSET> = LLR$DSKFET[0];
00546  M00S00544.sxllr   +++|      IF FET$LFN[0] NQ 0
00547  M00S00545.sxllr   +++|      THEN
00548  M00S00546.sxllr   +++|        BEGIN
00549  M00S00547.sxllr   +++|        RETERN(FETSET[0],RCL);
00550  M00S00548.sxllr   +++|        END
00551  M00S00549.sxllr   +++|
Line S00003 Modification History
M01 (Added by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00552  M01S00003.sxllr2  +++|      LLR$MSFET[0] = 0;
00553  M01S00004.sxllr2  +++|      LLR$DSKFET[0] =0;
00554  M00S00550.sxllr   +++|      RLSBUF(LLRADR);                # RELEASE BUFFERS #
00555  M00S00551.sxllr   +++|      P<LLRQ> = LLRADR;
00556  M00S00552.sxllr   +++|      IF NOT LLR$UCPABT[0]
00557  M00S00553.sxllr   +++|      THEN                           # ISSUE RESPONSE TO THE UCP #
00558  M00S00554.sxllr   +++|        BEGIN
00559  M00S00555.sxllr   +++|        LTCENTRY = LLR$LTCT[0];
00560  M00S00556.sxllr   +++|        LTC$RQR[LTCENTRY] = LLR$DR[0];
00561  M00S00557.sxllr   +++|        UCP$RESP;
00562  M00S00558.sxllr   +++|        END
00563  M00S00559.sxllr   +++|      ELSE
00564  M00S00560.sxllr   +++|        BEGIN       # FORCE UNLOAD OF CARTRIDGE #
00565  M00S00561.sxllr   +++|        LLR$PRCNME[0] = REQTYP4"UNLD$CART";
00566  M00S00562.sxllr   +++|        LLR$PRCST[0] = PROCST"INITIAL";
00567  M00S00563.sxllr   +++|        LLR$RQI[0] = REQNAME"RQIAUCP";
00568  M00S00564.sxllr   +++|        ADD$LNK(LLRADR,LCHN"LL$READY",0);
00569  M00S00565.sxllr   +++|        END         # UNLOAD CARTRIDGE #
00570  M00S00566.sxllr   +++|
00571  M00S00567.sxllr   +++|      RETURN;
00572  M00S00568.sxllr   +++|
00573  M00S00569.sxllr   +++|CRSFERR:                             # FATAL ERROR #
00574  M00S00570.sxllr   +++|      FE$RTN[0] = "CPY$RS.";
00575  M00S00571.sxllr   +++|      MESSAGE(FEMSG,UDFL1);
00576  M00S00572.sxllr   +++|      ABORT;
00577  M00S00573.sxllr   +++|      END  # CPY$RS #
00578  M00S00574.sxllr   +++|
00579  M00S00575.sxllr   +++|    TERM
00580  M00S00576.sxllr   +++|PROC CPY$SD((LLRADR));
00581  M00S00577.sxllr   +++|# TITLE CPY$SD - COPY VOLUME TO DISK.                                 #
00582  M00S00578.sxllr   +++|
00583  M00S00579.sxllr   +++|      BEGIN  # CPY$SD #
00584  M00S00580.sxllr   +++|
00585  M00S00581.sxllr   +++|#
00586  M00S00582.sxllr   +++|**    CPY$SD - COPY VOLUME TO DISK.
00587  M00S00583.sxllr   +++|*
00588  M00S00584.sxllr   +++|*     *CPY$SD* COPIES A VOLUME TO A DISK FILE.
00589  M00S00585.sxllr   +++|*
00590  M00S00586.sxllr   +++|*     PROC CPY$SD((LLRADR))
00591  M00S00587.sxllr   +++|*
00592  M00S00588.sxllr   +++|*     ENTRY      (LLRADR) - ADDRESS OF *LLRQ* ENTRY FOR THE COPY
00593  M00S00589.sxllr   +++|*                           CONTAINING THE SMA-ID, YZ COORDINATES,
00594  M00S00590.sxllr   +++|*                           ADDRESS OF THE DISK AND M860 FET-S.  THE
00595  M00S00591.sxllr   +++|*                           FET-S MUST BE INITIALIZED.
00596  M00S00592.sxllr   +++|*
00597  M00S00593.sxllr   +++|*     EXIT       THE PROCESS STATE FIELD IN THE *LLRQ* ENTRY HAS BEEN
00598  M00S00594.sxllr   +++|*                ADVANCED TO INDICATE WHERE PROCESSING OF THIS REQUEST
00599  M00S00595.sxllr   +++|*                LEFT OFF AND THUS WHAT TO DO NEXT TO ADVANCE THE
00600  M00S00596.sxllr   +++|*                REQUEST.  WHEN THE COPY IS COMPLETE AN ERROR RESPONSE
00601  M00S00597.sxllr   +++|*                CODE IS RETURNED IN THE *HLRQ* ENTRY WHICH GENERATED
00602  M00S00598.sxllr   +++|*                THE COPY REQUEST.
00603  M00S00599.sxllr   +++|*                (HLR$RESP[0]) - ERROR RESPONSE CODE.
00604  M00S00600.sxllr   +++|*                                (VALUES DEFINED IN *COMBCPR*).
00605  M00S00601.sxllr   +++|*                                = RESPTYP4"OK4".
00606  M00S00602.sxllr   +++|*                                = RESPTYP4"UNR$RD$ERR".
00607  M00S00603.sxllr   +++|*                                = RESPTYP4"M86SYS$ERR".
00608  M00S00604.sxllr   +++|*                                = RESPTYP4"M86$HDW$PR".
00609  M00S00605.sxllr   +++|*                                = RESPTYP4"RMS$FL$ERR".
00610  M00S00606.sxllr   +++|*                                = RESPTYP4"DISK$FULL".
00611  M00S00607.sxllr   +++|*
00612  M00S00608.sxllr   +++|*     NOTES      THIS MODULE IS A PSEUDO REENTRANT ROUTINE, CALLED ONLY
00613  M00S00609.sxllr   +++|*                BY *STAGER* THRU THE *HLRQ* PROCESSOR.
00614  M00S00610.sxllr   +++|#
00615  M00S00611.sxllr   +++|
00616  M00S00612.sxllr   +++|      ITEM LLRADR     U;             # *LLRQ* ENTRY ADDRESS #
00617  M00S00613.sxllr   +++|
00618  M00S00614.sxllr   +++|#
00619  M00S00615.sxllr   +++|****  PROC CPY$SD - XREF LIST BEGIN.
00620  M00S00616.sxllr   +++|#
00621  M00S00617.sxllr   +++|
00622  M00S00618.sxllr   +++|      XREF
00623  M00S00619.sxllr   +++|        BEGIN
00624  M00S00620.sxllr   +++|        PROC ADD$LNK;                # ADD ENTRY TO CHAIN #
00625  M00S00621.sxllr   +++|        PROC GETBUF;                 # GET LARGE BUFFER #
00626  M00S00622.sxllr   +++|        PROC RLSBUF;                 # RELEASE LARGE BUFFER #
00627  M00S00623.sxllr   +++|        PROC SETFET;                 # INITIALIZE LARGE BUFFER #
00628  M00S00624.sxllr   +++|        END
00629  M00S00625.sxllr   +++|
00630  M00S00626.sxllr   +++|#
00631  M00S00627.sxllr   +++|****  PROC CPY$SD - XREF LIST END.
00632  M00S00628.sxllr   +++|#
00633  M00S00629.sxllr   +++|
00634  M00S00630.sxllr   +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
00635  M00S00631.sxllr   +++|*CALL COMBFAS
00636  M00S00632.sxllr   +++|*CALL COMBCDD
00637  M00S00633.sxllr   +++|*CALL COMBCHN
00638  M00S00634.sxllr   +++|*CALL COMBCPR
00639  M00S00635.sxllr   +++|*CALL COMBFET
00640  M00S00636.sxllr   +++|*CALL COMBLRQ
00641  M00S00637.sxllr   +++|*CALL COMBRCD
00642  M00S00638.sxllr   +++|*CALL COMXCCB
00643  M00S00639.sxllr   +++|*CALL COMXHLR
00644  M00S00640.sxllr   +++|*CALL COMXMSC
00645  M00S00641.sxllr   +++|
00646  M00S00642.sxllr   +++|        ITEM FLAG       B;           # FLAG #
00647  M00S00643.sxllr   +++|
00648  M00S00644.sxllr   +++|      SWITCH CSDENTR:PROCST          # COPY VOLUME TO DISK ENTRIES #
00649  M00S00645.sxllr   +++|             CSDINIT:INITIAL,        # INITIAL ENTRY #
00650  M00S00646.sxllr   +++|                CSD1:CONT1,          # WAIT LARGE BUFFER #
00651  M00S00647.sxllr   +++|                CSD2:CONT2,          # DRIVER VOLUME RETURN #
00652  M00S00648.sxllr   +++|                CSD3:CONT3;          # DRIVER RETURN *REWIND/UNLOAD* #
00653  M00S00649.sxllr   +++|                                               CONTROL EJECT;
00654  M00S00650.sxllr   +++|
00655  M00S00651.sxllr   +++|      P<LLRQ> = LLRADR;
00656  M00S00652.sxllr   +++|      P<HLRQ> = LLR$UCPRA[0];
00657  M00S00653.sxllr   +++|      GOTO CSDENTR[LLR$PRCST[0]];
00658  M00S00654.sxllr   +++|
00659  M00S00655.sxllr   +++|#
00660  M00S00656.sxllr   +++|*     "INITIAL" PROCESS STATE.
00661  M00S00657.sxllr   +++|#
00662  M00S00658.sxllr   +++|
00663  M00S00659.sxllr   +++|CSDINIT:                             # SET UP COPY CONTROL BLOCK #
00664  M00S00660.sxllr   +++|      GETBUF(LLRADR,HLRQIND,FLAG);
00665  M00S00661.sxllr   +++|      IF NOT FLAG
00666  M00S00662.sxllr   +++|      THEN                           # NO BUFFER AVAILABLE #
00667  M00S00663.sxllr   +++|        BEGIN
00668  M00S00664.sxllr   +++|        LLR$PRCST[0] = PROCST"CONT1";   # WAIT BUFFER ASSIGNMENT #
00669  M00S00665.sxllr   +++|        ADD$LNK(LLRADR,LCHN"LL$LGBUF",0);
00670  M00S00666.sxllr   +++|        RETURN;
00671  M00S00667.sxllr   +++|        END
00672  M00S00668.sxllr   +++|
00673  M00S00669.sxllr   +++|
00674  M00S00670.sxllr   +++|#
00675  M00S00671.sxllr   +++|*     *CONT1* PROCESS STATE.
00676  M00S00672.sxllr   +++|#
00677  M00S00673.sxllr   +++|
00678  M00S00674.sxllr   +++|CSD1:
00679  M00S00675.sxllr   +++|      SETFET(LLRADR);                  # INITIALIZE LARGE BUFFER #
00680  M00S00676.sxllr   +++|      P<LLRQ> = LLRADR;
00681  M00S00677.sxllr   +++|      P<CCB> = LLR$CCB[0];
00682  M00S00678.sxllr   +++|      P<FETSET> = LLR$DSKFET[0];
00683  M00S00679.sxllr   +++|      P<FETFHB> = LLR$MSFET[0];
00684  M00S00680.sxllr   +++|      CCBOPCODE[0] = CPYC"AUDISK";
00685  M00S00681.sxllr   +++|      FHB$CODE[0] = FCCWR;
00686  M00S00682.sxllr   +++|      LLR$RC[0] = REQCODE"SREAD$VOL";  # ISSUE READ VOLUME REQUEST #
00687  M00S00683.sxllr   +++|      LLR$RS[0] = PROCST"INITIAL";
00688  M00S00684.sxllr   +++|      ADD$LNK(CCBLLRQ[0],LCHN"DRQUEUE",0);
00689  M00S00685.sxllr   +++|      LLR$PRCST[0] = PROCST"CONT2";
00690  M00S00686.sxllr   +++|      RETURN;
00691  M00S00687.sxllr   +++|
00692  M00S00688.sxllr   +++|#
00693  M00S00689.sxllr   +++|*     *CONT2* PROCESS STATE.
00694  M00S00690.sxllr   +++|*     CPU DRIVER MOUNT VOLUME RETURN.
00695  M00S00691.sxllr   +++|#
00696  M00S00692.sxllr   +++|
00697  M00S00693.sxllr   +++|CSD2:                                # PROCESS DRIVER RETURN #
00698  M00S00694.sxllr   +++|      IF LLR$DR[0] NQ RESPTYP4"OK4"
00699  M00S00695.sxllr   +++|      THEN
00700  M00S00696.sxllr   +++|        BEGIN      # PROCESS DRIVER ERROR RETURN CODE #
00701  M00S00697.sxllr   +++|        GOTO CONT;
00702  M00S00698.sxllr   +++|        END
00703  M00S00699.sxllr   +++|
00704  M00S00700.sxllr   +++|      ADD$LNK(LLR$CCB[0],LCHN"KC$GOING",0);
00705  M00S00701.sxllr   +++|      LLR$PRCST[0] = PROCST"CONT3";
00706  M00S00702.sxllr   +++|      RETURN;
00707  M00S00703.sxllr   +++|
00708  M00S00704.sxllr   +++|
00709  M00S00705.sxllr   +++|#
00710  M00S00706.sxllr   +++|*     *CONT3* PROCESS STATE.
00711  M00S00707.sxllr   +++|*     CPU DRIVER RETURN FROM REWIND/UNLOAD COMMAND.
00712  M00S00708.sxllr   +++|#
00713  M00S00709.sxllr   +++|
00714  M00S00710.sxllr   +++|
00715  M00S00711.sxllr   +++|CSD3:
00716  M00S00712.sxllr   +++|      P<CCB> = LLR$CCB[0];
00717  M00S00713.sxllr   +++|      P<FETSET> = LLR$DSKFET[0];
00718  M00S00714.sxllr   +++|      P<FETFHB> = LLR$MSFET[0];
00719  M00S00715.sxllr   +++|       IF CCBDERR[0]
00720  M00S00716.sxllr   +++|       THEN             # DISK ERROR #
00721  M00S00717.sxllr   +++|         BEGIN
00722  M00S00718.sxllr   +++|         LLR$DR[0] = RESPTYP4"RMS$FL$ERR";
00723  M00S00719.sxllr   +++|         GOTO CONT;
00724  M00S00720.sxllr   +++|         END
00725  M00S00721.sxllr   +++|
00726  M00S00722.sxllr   +++|       IF CCBDFULL[0]
00727  M00S00723.sxllr   +++|       THEN             # DISK FULL ERROR #
00728  M00S00724.sxllr   +++|         BEGIN
00729  M00S00725.sxllr   +++|         LLR$DR[0] = RESPTYP4"DISK$FULL";
00730  M00S00726.sxllr   +++|         GOTO CONT;
00731  M00S00727.sxllr   +++|         END
00732  M00S00728.sxllr   +++|      IF CCBHDWPM[0] OR LLR$DR[0] NQ RESPTYP4"OK4"
00733  M00S00729.sxllr   +++|      THEN                           # IF HARDWARE ERROR #
00734  M00S00730.sxllr   +++|        BEGIN
00735  M00S00731.sxllr   +++|        LLR$DR[0] = RESPTYP4"M86$HDW$PR";
00736  M00S00732.sxllr   +++|        LLR$DRFUL[0] = TRUE;         # FORCE UNLOAD OF CARTRIDGE #
00737  M00S00733.sxllr   +++|         GOTO CONT;
00738  M00S00734.sxllr   +++|        END
00739  M00S00735.sxllr   +++|      IF CCBTAPPAR
00740  M00S00736.sxllr   +++|      THEN
00741  M00S00737.sxllr   +++|        BEGIN       # READ PARITY ERROR #
00742  M00S00738.sxllr   +++|        LLR$DR[0] = RESPTYP4"UN$RD$ERR";
00743  M00S00739.sxllr   +++|        IF NOT HLR$RETRY[0]        # FIRST PARITY ERROR #
00744  M00S00740.sxllr   +++|        THEN
00745  M00S00741.sxllr   +++|          BEGIN       # FORCE UNLOAD AND DELINK OF CARTRIDGE #
00746  M00S00742.sxllr   +++|          LLR$DRFUL[0] = TRUE;
00747  M00S00743.sxllr   +++|          END
00748  M00S00744.sxllr   +++|        GOTO CONT;
00749  M00S00745.sxllr   +++|        END
00750  M00S00746.sxllr   +++|
Line S00005 Modification History
M01 (Added by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00751  M01S00005.sxllr2  +++|      IF CCPPUDCK
00752  M01S00006.sxllr2  +++|      THEN
00753  M01S00007.sxllr2  +++|        BEGIN      # PPU FOUND DATA TRANSFER ERROR #
00754  M01S00008.sxllr2  +++|        LLR$DR[0]= RESPTYP4"PPU$D$PROB";
00755  M01S00009.sxllr2  +++|        IF NOT HLR$RETRY[0]     # FIRST DATA ERROR #
00756  M01S00010.sxllr2  +++|        THEN
00757  M01S00011.sxllr2  +++|          BEGIN    # FORCE UNLOAD AND DELINK OF CARTRIDGE #
00758  M01S00012.sxllr2  +++|          LLR$DRFUL[0] = TRUE;
00759  M01S00013.sxllr2  +++|          END
00760  M01S00014.sxllr2  +++|
00761  M01S00015.sxllr2  +++|        GOTO CONT;
00762  M01S00016.sxllr2  +++|        END
00763  M01S00017.sxllr2  +++|
00764  M00S00747.sxllr   +++|      IF FHB$PVLN[0] NQ HLR$VOLLNP[0]      # PREVIOUS VOLUME LENGTH #
00765  M00S00748.sxllr   +++|        OR FHB$PVSN[0] NQ HLR$VOLAUP[0]    # PREVIOUS VOLUME NUMBER #
00766  M00S00749.sxllr   +++|        OR FHB$CVSN[0] NQ HLR$VOLAU[0]     # VOLUME NUMBER #
00767  M00S00750.sxllr   +++|        OR FHB$PCSN[0] NQ HLR$CSNTPS       # CSN OR PREVIOUS VOLUME #
00768  M00S00751.sxllr   +++|        OR FHB$PFC$UI[0] NQ HLR$TDAMUI[0]    # USER INDEX #
00769  M00S00752.sxllr   +++|        OR FHB$PFC$DT[0]  NQ HLR$TDAMCD[0]   # CREATION DATE / TIME #
00770  M00S00753.sxllr   +++|      THEN
00771  M00S00754.sxllr   +++|        BEGIN        # SET VOLUME HEADER ERROR #
00772  M00S00755.sxllr   +++|        LLR$DR[0] = RESPTYP4"VOL$HD$ERR";
00773  M00S00756.sxllr   +++|        GOTO CONT;
00774  M00S00757.sxllr   +++|        END
00775  M00S00758.sxllr   +++|
00776  M00S00759.sxllr   +++|
00777  M00S00760.sxllr   +++|      HLR$PRU[0] = FET$CRI[0] + HLR$PRU[0];
00778  M00S00761.sxllr   +++|
00779  M00S00762.sxllr   +++|      IF CCBTPMARK
00780  M00S00763.sxllr   +++|      THEN
00781  M00S00764.sxllr   +++|        BEGIN
00782  M00S00765.sxllr   +++|        HLR$EOI[0] = TRUE;
00783  M00S00766.sxllr   +++|        END
00784  M00S00767.sxllr   +++|
00785  M00S00768.sxllr   +++|CONT:
00786  M00S00769.sxllr   +++|
00787  M00S00770.sxllr   +++|
00788  M00S00771.sxllr   +++|      HLR$RESP[0] = LLR$DR[0];         # RETURN RESPONSE #
00789  M00S00772.sxllr   +++|      ADD$LNK(LLR$UCPRA[0],LCHN"HL$READY",0);
Line S00018 Modification History
M01 (Added by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00790  M01S00018.sxllr2  +++|      LLR$MSFET[0] = 0;
00791  M01S00019.sxllr2  +++|      LLR$DSKFET[0] = 0;
00792  M00S00773.sxllr   +++|      RLSBUF(LLRADR);                # RELEASE BUFFER #
00793  M00S00774.sxllr   +++|      RETURN;
00794  M00S00775.sxllr   +++|      END  # CPY$SD #
00795  M00S00776.sxllr   +++|
00796  M00S00777.sxllr   +++|    TERM
00797  M00S00778.sxllr   +++|PROC INIT$HW((LLRADR));
00798  M00S00779.sxllr   +++|# TITLE INIT$HW - INITIALIZE M860 HARDWARE.                           #
00799  M00S00780.sxllr   +++|
00800  M00S00781.sxllr   +++|      BEGIN  # INIT$HW #
00801  M00S00782.sxllr   +++|
00802  M00S00783.sxllr   +++|#
00803  M00S00784.sxllr   +++|**    INIT$HW - INITIALIZE M860 HARDWARE.
00804  M00S00785.sxllr   +++|*
00805  M00S00786.sxllr   +++|*     *INIT$HW* PASSES M860 HARDWARE INITIALIZATION
00806  M00S00787.sxllr   +++|*     REQUESTS TO THE MSAS DRIVER.  IT CLEARS THE
00807  M00S00788.sxllr   +++|*     *INITIALIZE* FLAG TO INDICATE THAT FULL
00808  M00S00789.sxllr   +++|*     INITIALIZATION HAS COMPLETED WHEN IT FINDS THE
00809  M00S00790.sxllr   +++|*     *LLRQ* READY CHAIN AND *DRQUEUE* BOTH INACTIVE, WHILE
00810  M00S00791.sxllr   +++|*     PROCESSING A REQUEST JUST RETURNED FROM THE DRIVER.
00811  M00S00792.sxllr   +++|*
00812  M00S00793.sxllr   +++|*     PROC INIT$HW((LLRADR))
00813  M00S00794.sxllr   +++|*
00814  M00S00795.sxllr   +++|*     ENTRY      (LLRADR) - *LLRQ* ENTRY ADDRESS CONTAINING
00815  M00S00796.sxllr   +++|*                           CONTROLLER ORDINAL FROM WHICH HARDWARE
00816  M00S00797.sxllr   +++|*                           INITIALIZATION IS TO BE BASED.
00817  M00S00798.sxllr   +++|*
00818  M00S00799.sxllr   +++|*     EXIT       THE *LLRQ* ENTRY PROCESS STATE FIELD HAS BEEN
00819  M00S00800.sxllr   +++|*                ADVANCED TO INDICATE WHERE SUBSEQUENT PROCESSING OF
00820  M00S00801.sxllr   +++|*                THIS REQUEST IS TO CONTINUE.
00821  M00S00802.sxllr   +++|*
00822  M00S00803.sxllr   +++|*     NOTES      THIS MODULE IS A PSEUDO-REENTRANT ROUTINE.
00823  M00S00804.sxllr   +++|#
00824  M00S00805.sxllr   +++|
00825  M00S00806.sxllr   +++|      ITEM BYNR       U;             # OFF SET BIT ADDRESS #
00826  M00S00807.sxllr   +++|      ITEM LLRADR     U;             # *LLRQ* ENTRY ADDRESS #
00827  M00S00808.sxllr   +++|      ITEM STAT       U;             # STATUS BIT #
00828  M00S00809.sxllr   +++|
00829  M00S00810.sxllr   +++|#
00830  M00S00811.sxllr   +++|****  PROC INIT$HW - XREF LIST BEGIN.
00831  M00S00812.sxllr   +++|#
00832  M00S00813.sxllr   +++|
00833  M00S00814.sxllr   +++|      XREF
00834  M00S00815.sxllr   +++|        BEGIN
00835  M00S00816.sxllr   +++|        PROC ABORT;                  # ABORT #
00836  M00S00817.sxllr   +++|        PROC ADD$LNK;                # ADD ENTRY TO END OF CHAIN #
00837  M00S00818.sxllr   +++|        PROC MESSAGE;                # ISSUE MESSAGE #
Line S00819 Modification History
M01 (Removed by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00838  M01S00819.sxllr2  ---|        PROC MSG;                    # ISSUE MESSAGE #
00839  M00S00820.sxllr   +++|        PROC UCP$RES;                # RETURN RESPONSE TO UCP #
00840  M00S00821.sxllr   +++|        END
00841  M00S00822.sxllr   +++|
00842  M00S00823.sxllr   +++|#
00843  M00S00824.sxllr   +++|****  PROC INIT$HW - XREF LIST END.
00844  M00S00825.sxllr   +++|#
00845  M00S00826.sxllr   +++|
00846  M00S00827.sxllr   +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
00847  M00S00828.sxllr   +++|
00848  M00S00829.sxllr   +++|*CALL,COMBFAS
00849  M00S00830.sxllr   +++|*CALL,COMBCHN
00850  M00S00831.sxllr   +++|*CALL,COMBCPR
00851  M00S00832.sxllr   +++|*CALL,COMBLRQ
00852  M00S00833.sxllr   +++|*CALL,COMBRCD
00853  M00S00834.sxllr   +++|*CALL,COMBUCR
00854  M00S00835.sxllr   +++|*CALL COMBUDT
00855  M00S00836.sxllr   +++|*CALL,COMXCTF
00856  M00S00837.sxllr   +++|*CALL,COMXLTC
00857  M00S00838.sxllr   +++|*CALL,COMXMSC
00858  M00S00839.sxllr   +++|
00859  M00S00840.sxllr   +++|      BASED
00860  M00S00841.sxllr   +++|      ARRAY  UDTBIT  [0:0]  P(1);     # CHECK *UDT* AREA #
00861  M00S00842.sxllr   +++|        BEGIN
00862  M00S00843.sxllr   +++|        ITEM UDT$BIT      U(00,00,60);
00863  M00S00844.sxllr   +++|        END
00864  M00S00845.sxllr   +++|
Line S00020 Modification History
M01 (Added by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00865  M01S00020.sxllr2  +++|#
00866  M01S00021.sxllr2  +++|*     GENERAL MESSAGE BUFFER.
00867  M01S00022.sxllr2  +++|#
00868  M01S00023.sxllr2  +++|
00869  M01S00024.sxllr2  +++|      ARRAY GMSB [0:0] S(5);
00870  M01S00025.sxllr2  +++|        BEGIN  # INIT MSGS #
00871  M01S00026.sxllr2  +++|        ITEM MSG$LINE   C(00,00,40);  # MESSAGE LINE #
00872  M01S00027.sxllr2  +++|        ITEM MSG$ZERO   U(04,00,12) = [0];  # ZERO-BYTE TERMINATOR #
00873  M01S00028.sxllr2  +++|        END  # INIT MSGS #
00874  M01S00029.sxllr2  +++|
00875  M00S00846.sxllr   +++|      SWITCH INITIALS:PROCST         # INITIALIZATION ENTRIES #
00876  M00S00847.sxllr   +++|                INIT1:INITIAL,       # INITIAL ENTRY #
00877  M00S00848.sxllr   +++|                INIT2:CONT1;         # FINAL ENTRY #
00878  M00S00849.sxllr   +++|                                               CONTROL EJECT;
00879  M00S00850.sxllr   +++|
00880  M00S00851.sxllr   +++|      P<LLRQ> = LLRADR;
00881  M00S00852.sxllr   +++|      GOTO INITIALS[LLR$PRCST[0]];
00882  M00S00853.sxllr   +++|
00883  M00S00854.sxllr   +++|#
00884  M00S00855.sxllr   +++|*     "INITIAL" PROCESS STATE.
00885  M00S00856.sxllr   +++|#
00886  M00S00857.sxllr   +++|
00887  M00S00858.sxllr   +++|INIT1:
00888  M00S00859.sxllr   +++|      LLR$RC[0] = RESTART$CU;        # ASSUME DRIVER RESTART REQUEST #
00889  M00S00860.sxllr   +++|      IF NOT INITIALIZE              ##
00890  M00S00861.sxllr   +++|      THEN                           # NO CU RESTART REQUIRED #
00891  M00S00862.sxllr   +++|        BEGIN  # RESET #
00892  M00S00863.sxllr   +++|        LLR$RC[0] = INIT$SM;
00893  M00S00864.sxllr   +++|        END  # RESET #
00894  M00S00865.sxllr   +++|
Line S00866 Modification History
M01 (Removed by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00895  M01S00866.sxllr2  ---|      IF LLR$CHAN
00896  M01S00867.sxllr2  ---|      THEN                           # CHANGE CHANNEL STATUS #
00897  M01S00868.sxllr2  ---|        BEGIN  # RESET #
00898  M01S00869.sxllr2  ---|        LLR$RC[0] = CHNG$CHN;
00899  M01S00870.sxllr2  ---|        END  # RESET #
00900  M01S00871.sxllr2  ---|
00901  M00S00872.sxllr   +++|      LLR$PRCST[0] = PROCST"CONT1";
00902  M00S00873.sxllr   +++|      ADD$LNK(LLRADR,LCHN"DRQUEUE",0);
00903  M00S00874.sxllr   +++|      RETURN;
00904  M00S00875.sxllr   +++|
00905  M00S00876.sxllr   +++|#
00906  M00S00877.sxllr   +++|*     "COMPLETE" PROCESS STATE.
00907  M00S00878.sxllr   +++|#
00908  M00S00879.sxllr   +++|
00909  M00S00880.sxllr   +++|INIT2:
00910  M00S00881.sxllr   +++|      IF CHN$BOC[LCHN"LL$READY"] EQ 0  ##
00911  M00S00882.sxllr   +++|        AND CHN$BOC[LCHN"DRQUEUE"] EQ 0  ##
00912  M00S00883.sxllr   +++|        AND INITIALIZE
00913  M00S00884.sxllr   +++|      THEN                           # FULL INITIALIZATION COMPLETED #
00914  M00S00885.sxllr   +++|        BEGIN  # INIT DONE #
Line S00886 Modification History
M01 (Removed by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00915  M01S00886.sxllr2  ---|        INITIALIZE = FALSE;
Line S00887 Modification History
M01 (Removed by) mse1
M02 (Removed by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00916  M02S00887.sxllr2  ---|        MSG(" M860 INITIALIZATION COMPLETE.",SYSUDF1);
Line S00001 Modification History
M01 (Added by) mse1
M02 (Removed by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00917  M02S00001.sxllr2  ---|        MSG(" INITIALIZATION COMPLETE.",SYSUDF1);
Line S00030 Modification History
M01 (Added by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
00918  M01S00030.sxllr2  +++|        IF UDT$HWOFF[0] EQ 0
00919  M01S00031.sxllr2  +++|        THEN                         # INITIALIZATION WAS SUCCESSFUL #
00920  M01S00032.sxllr2  +++|          BEGIN  # OK #
00921  M01S00033.sxllr2  +++|          INITIALIZE = FALSE;
00922  M01S00034.sxllr2  +++|          MSG$LINE[0] = " INITIALIZATION COMPLETE.";
00923  M01S00035.sxllr2  +++|          MESSAGE(GMSB,SYSUDF1);
00924  M01S00036.sxllr2  +++|          END  # OK #
00925  M01S00037.sxllr2  +++|
00926  M01S00038.sxllr2  +++|        ELSE                         # NO 7990 HARDWARE ACCESS #
00927  M01S00039.sxllr2  +++|          BEGIN  # EXIT #
00928  M01S00040.sxllr2  +++|          MSG$LINE[0] = " INITIALIZATION HALTED.";
00929  M01S00041.sxllr2  +++|          MESSAGE(GMSB,SYSUDF1);
00930  M01S00042.sxllr2  +++|          MSG$LINE[0] = "$INITIALIZATION HALTED.";
00931  M01S00043.sxllr2  +++|          MESSAGE(GMSB,LINE2);
00932  M01S00044.sxllr2  +++|          END  # EXIT #
00933  M01S00045.sxllr2  +++|
00934  M00S00888.sxllr   +++|        END  # INIT DONE #
00935  M00S00889.sxllr   +++|
00936  M00S00890.sxllr   +++|      IF LLR$RQI[0] EQ REQNAME"RQIALTER"      # SSALTER WORKING #
00937  M00S00891.sxllr   +++|        AND NOT LLR$UCPABT[0]
00938  M00S00892.sxllr   +++|      THEN                           # REQUEST FROM UCP #
00939  M00S00893.sxllr   +++|        BEGIN  # RETURN #
00940  M00S00894.sxllr   +++|        BYNR = LLR$BYNR[0];
00941  M00S00895.sxllr   +++|        P<UDTBIT> = LLR$UDTQ[0];
00942  M00S00896.sxllr   +++|        STAT = B<BYNR,1> UDT$BIT[0];
00943  M00S00897.sxllr   +++|        LTCENTRY = LLR$LTCT[0];
00944  M00S00898.sxllr   +++|        LTC$RQR[LTCENTRY] = RESPTYP5"OK5";
00945  M00S00899.sxllr   +++|        IF STAT NQ LLR$PMMR[0]       # STATUS UNCHANGED #
00946  M00S00900.sxllr   +++|          OR LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"  # HARDWARE PROBLEM #
00947  M00S00901.sxllr   +++|        THEN
00948  M00S00902.sxllr   +++|          BEGIN      # STATUS REMAINED #
00949  M00S00903.sxllr   +++|          LTC$RQR[LTCENTRY] = RESPTYP5"SSA$ERROR";
00950  M00S00904.sxllr   +++|          END        # STATUS REMAINED #
00951  M00S00905.sxllr   +++|
00952  M00S00906.sxllr   +++|        LTC$LLRQA[LTCENTRY] = 0;
00953  M00S00907.sxllr   +++|        UCP$RES;                     # RETURN RESPONSE TO UCP #
00954  M00S00908.sxllr   +++|        END  # RETURN #
00955  M00S00909.sxllr   +++|
00956  M00S00910.sxllr   +++|      LLR$PRCST[0] = PROCST"COMPLETE";
00957  M00S00911.sxllr   +++|      RETURN;
00958  M00S00912.sxllr   +++|
00959  M00S00913.sxllr   +++|      END  # INIT$HW #
00960  M00S00914.sxllr   +++|
00961  M00S00915.sxllr   +++|     TERM
00962  M00S00916.sxllr   +++|PROC KCG;
00963  M00S00917.sxllr   +++|# TITLE KCG - KEEP COPY GOING.                                        #
00964  M00S00918.sxllr   +++|
00965  M00S00919.sxllr   +++|      BEGIN  # KCG #
00966  M00S00920.sxllr   +++|
00967  M00S00921.sxllr   +++|#
00968  M00S00922.sxllr   +++|**    KCG - KEEP COPY GOING.
00969  M00S00923.sxllr   +++|*
00970  M00S00924.sxllr   +++|*     *KCG* MONITORS THE PROGRESS OF COPIES BETWEEN DISK AND A
00971  M00S00925.sxllr   +++|*     CARTRIDGE VOLUME, MOVES *IN* AND *OUT* POINTERS BETWEEN THE *CIO*
00972  M00S00926.sxllr   +++|*     AND *1SS* FET AND RESTARTS *CIO* OR *1SS* AS NECESSARY TO
00973  M00S00927.sxllr   +++|*     KEEP THE COPY PROCESS GOING.
00974  M00S00928.sxllr   +++|*
00975  M00S00929.sxllr   +++|*     PROC KCG
00976  M00S00930.sxllr   +++|*
00977  M00S00931.sxllr   +++|*     EXIT       ALL COPY REQUESTS WHICH HAVE BEEN COMPLETED ARE
00978  M00S00932.sxllr   +++|*                DELETED FROM THE KEEP COPY GOING CHAIN AND ADDED BACK
00979  M00S00933.sxllr   +++|*                ON THE *LLRQ* READY CHAIN.
Line S00001 Modification History
M01 (Added by) msea012
Seq #  *Modification Id* Act 
----------------------------+
00980  M01S00001.msea012 +++|*
00981  M01S00002.msea012 +++|*         SENSE SWITCH 2 IS USED TO SET READ AND WRITE 1MS
00982  M01S00003.msea012 +++|*         CALLS IN THE DAYFILE.  THE NUMBER OF TIMES 1MS IS CALLED
00983  M01S00004.msea012 +++|*         IN A VOLUME CAN BE TRACED BY SETTING SENSE SWITCHS 1 AND 2.
00984  M01S00005.msea012 +++|*
00985  M01S00006.msea012 +++|*         THE STRIPES ARE READ OR WRITTEN IN 13 PRU BLOCKS.
00986  M01S00007.msea012 +++|*         THE BUFFER HAS BEEN SET FOR 4 PLUS BLOCKS.
00987  M01S00008.msea012 +++|*         THE BUFFER SIZE IS CHANGED BY *DATABL* IN COMXBST.
00988  M01S00009.msea012 +++|*
00989  M01S00010.msea012 +++|*
00990  M01S00011.msea012 +++|*         THE CODE IS SET TO CALL 1MS WHEN A BUFFER IS 1/2 FULL.
00991  M01S00012.msea012 +++|*
00992  M01S00013.msea012 +++|*         THE BUFFER SIZE CAN BE VARIED, BUT 1/3 OF A BUFFER MUST BE
00993  M01S00014.msea012 +++|*         OVER 13 PRU-S OR A LOCK WILL HAPPEN BETWEEN 1SS AND 1MS.
00994  M01S00015.msea012 +++|*         DATABL  (BUFFER SIZE) HAS BEEN INCREASED FROM 3700 TO
00995  M01S00016.msea012 +++|*         6501.
00996  M01S00017.msea012 +++|*
00997  M01S00018.msea012 +++|*         TO CHANGE FROM 1/2 TO 2/3 BUFFER FULL CALLS TO *1MS* -
00998  M01S00019.msea012 +++|*             ((DATABL-1) / 2) TO ((DATABL-1) / 3) * 2
00999  M01S00020.msea012 +++|*
01000  M00S00934.sxllr   +++|#
01001  M00S00935.sxllr   +++|
Line S00021 Modification History
M01 (Added by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01002  M01S00021.msea012 +++|
01003  M01S00022.msea012 +++|        DEF BUFSTART #((DATABL-1) / 2)#;     # SETS HALF BUFFER START #
01004  M01S00023.msea012 +++|
01005  M00S00936.sxllr   +++|      DEF EOI$IWRD       #O"2000 0000 0000 0000 0000"#;  # *EOI* WORD #
01006  M00S00937.sxllr   +++|#
01007  M00S00938.sxllr   +++|****  PROC KCG - XREF LIST BEGIN.
01008  M00S00939.sxllr   +++|#
01009  M00S00940.sxllr   +++|
01010  M00S00941.sxllr   +++|      XREF
01011  M00S00942.sxllr   +++|        BEGIN
01012  M00S00943.sxllr   +++|        PROC ADD$LNK;                # ADD ENTRY TO CHAIN #
01013  M00S00944.sxllr   +++|        PROC CALLPPU;                # CALL PPU #
01014  M00S00945.sxllr   +++|        PROC DEL$LNK;                # DELETE ENTRY FROM CHAIN #
01015  M00S00946.sxllr   +++|        PROC READCW;                 # READ WITH CONTROL WORDS #
01016  M00S00947.sxllr   +++|        PROC WRITECW;                # WRITE WITH CONTROL WORDS #
01017  M00S00948.sxllr   +++|        PROC K8G;                    # KEEP M860 GOING #
Line S00024 Modification History
M01 (Added by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01018  M01S00024.msea012 +++|        PROC MESSAGE;                # ISSUE MESSAGE #
01019  M00S00949.sxllr   +++|        END
01020  M00S00950.sxllr   +++|
01021  M00S00951.sxllr   +++|#
01022  M00S00952.sxllr   +++|****  PROC KCG - XREF LIST END.
01023  M00S00953.sxllr   +++|#
01024  M00S00954.sxllr   +++|
01025  M00S00955.sxllr   +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
01026  M00S00956.sxllr   +++|*CALL COMBFAS
01027  M00S00957.sxllr   +++|*CALL COMBCDD
01028  M00S00958.sxllr   +++|*CALL COMBCHN
01029  M00S00959.sxllr   +++|*CALL COMBFET
01030  M00S00960.sxllr   +++|*CALL COMBLRQ
Line S00025 Modification History
M01 (Added by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01031  M01S00025.msea012 +++|*CALL     COMXBST
01032  M00S00961.sxllr   +++|*CALL COMXCCB
01033  M00S00962.sxllr   +++|*CALL COMXCTF
01034  M00S00963.sxllr   +++|*CALL COMXJCA
01035  M00S00964.sxllr   +++|*CALL COMXMSC
01036  M00S00965.sxllr   +++|
01037  M00S00966.sxllr   +++|      ITEM ENTADR     U;             # *CCB* ENTRY ADDRESS #
01038  M00S00967.sxllr   +++|      ITEM NEXTADDR   U;             # NEXT ENTRY ADDRESS #
01039  M00S00968.sxllr   +++|      ITEM TEMP       U;             # TEMPORARY STORAGE #
Line S00026 Modification History
M01 (Added by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01040  M01S00026.msea012 +++|      ITEM RD$READY   B;             # READ BUFFER READY #
01041  M01S00027.msea012 +++|      ITEM WRT$READY  B;             # WRITE BUFFER READY #
01042  M01S00028.msea012 +++|
01043  M01S00029.msea012 +++|
01044  M01S00030.msea012 +++|
01045  M01S00031.msea012 +++|      ARRAY  WRITEMG   [0:0]  S(2);
01046  M01S00032.msea012 +++|        BEGIN
01047  M01S00033.msea012 +++|        ITEM WRITEMSG  C(00,00,12) = [" 1MS WRITE."];
01048  M01S00034.msea012 +++|        ITEM TERMA     U(01,48,12) = [0];     # TERMINATOR #
01049  M01S00035.msea012 +++|        END
01050  M01S00036.msea012 +++|
01051  M01S00037.msea012 +++|
01052  M01S00038.msea012 +++|      ARRAY  READMG   [0:0]  S(2) ;
01053  M01S00039.msea012 +++|        BEGIN
01054  M01S00040.msea012 +++|        ITEM READMSG   C(00,00,12) = [" 1MS READ."];
01055  M01S00041.msea012 +++|        ITEM TERMB     U(01,48,12) = [0];     # TERMINATOR #
01056  M01S00042.msea012 +++|        END
01057  M01S00043.msea012 +++|
01058  M00S00969.sxllr   +++|                                               CONTROL EJECT;
01059  M00S00970.sxllr   +++|
01060  M00S00971.sxllr   +++|      ENTADR = CHN$BOC[LCHN"KC$GOING"];
01061  M00S00972.sxllr   +++|      REPEAT WHILE ENTADR NQ 0
01062  M00S00973.sxllr   +++|      DO
01063  M00S00974.sxllr   +++|        BEGIN  # MONITOR ENTRIES ON KEEP COPY GOING CHAIN #
01064  M00S00975.sxllr   +++|        P<CCB> = ENTADR;
01065  M00S00976.sxllr   +++|        P<LLRQ> = CCBLLRQ[0];
01066  M00S00977.sxllr   +++|        NEXTADDR = CCBLINK[0];
01067  M00S00978.sxllr   +++|        P<FETSET> = CCBDKFET[0];
01068  M00S00979.sxllr   +++|        P<FETFHB> = CCBM86FET[0];
01069  M00S00980.sxllr   +++|       IF CCBOPCODE[0] EQ CPYC"DISKAU"
01070  M00S00981.sxllr   +++|
01071  M00S00982.sxllr   +++|          THEN
01072  M00S00983.sxllr   +++|            BEGIN    # COPY DISK TO M860 #
01073  M00S00984.sxllr   +++|            FHB$IN[0] = FET$IN[0];
01074  M00S00985.sxllr   +++|            FET$OUT[0] = FHB$OUT[0];
01075  M00S00986.sxllr   +++|            END
01076  M00S00987.sxllr   +++|          ELSE
01077  M00S00988.sxllr   +++|            BEGIN    # COPY M860 TO DISK #
01078  M00S00989.sxllr   +++|            FET$IN[0] = FHB$IN[0];
01079  M00S00990.sxllr   +++|            FHB$OUT[0] = FET$OUT[0];
01080  M00S00991.sxllr   +++|            END
01081  M00S00992.sxllr   +++|
01082  M00S00993.sxllr   +++|        IF FET$LOCK[0]                                             ##
01083  M00S00994.sxllr   +++|          AND NOT (CCBDERR[0] OR CCBDFULL[0])
01084  M00S00995.sxllr   +++|        THEN                         # IF MEDIA NOT EMPTY, NO DISK
01085  M00S00996.sxllr   +++|                                    ERRORS AND *CIO* NOT RUNNING #
01086  M00S00997.sxllr   +++|          BEGIN
01087  M00S00998.sxllr   +++|          IF FET$AT[0] NQ 0
01088  M00S00999.sxllr   +++|          THEN
01089  M00S01000.sxllr   +++|            BEGIN                 # SET DISK ERROR FLAG #
01090  M00S01001.sxllr   +++|            IF FET$AT[0] EQ 1
01091  M00S01002.sxllr   +++|            THEN
01092  M00S01003.sxllr   +++|              BEGIN     # DISK FULL #
01093  M00S01004.sxllr   +++|              CCBDFULL[0] = TRUE;
01094  M00S01005.sxllr   +++|              END
01095  M00S01006.sxllr   +++|
01096  M00S01007.sxllr   +++|            ELSE
01097  M00S01008.sxllr   +++|              BEGIN      # DISK ERROR #
01098  M00S01009.sxllr   +++|              CCBDERR[0] = TRUE;
01099  M00S01010.sxllr   +++|              END
01100  M00S01011.sxllr   +++|
01101  M00S01012.sxllr   +++|          END
01102  M00S01013.sxllr   +++|
01103  M00S01014.sxllr   +++|
01104  M00S01015.sxllr   +++|          ELSE
01105  M00S01016.sxllr   +++|            BEGIN            # START COPY #
01106  M00S01017.sxllr   +++|            IF CCBOPCODE[0] EQ CPYC"DISKAU"
01107  M00S01018.sxllr   +++|            THEN
01108  M00S01019.sxllr   +++|              BEGIN              # DISK INPUT #
01109  M00S01020.sxllr   +++|              IF FET$EOI[0]
01110  M00S01021.sxllr   +++|              THEN
01111  M00S01022.sxllr   +++|                BEGIN         # WRITE *EOI* WORD #
01112  M00S01023.sxllr   +++|                RA$WORD[FET$IN[0]] = EOI$IWRD;
01113  M00S01024.sxllr   +++|
01114  M00S01025.sxllr   +++|                IF FET$IN[0] EQ FET$LIM[0] - 1
01115  M00S01026.sxllr   +++|                THEN
01116  M00S01027.sxllr   +++|                  BEGIN
01117  M00S01028.sxllr   +++|                  FET$IN[0] = FET$FRST[0];
01118  M00S01029.sxllr   +++|                  END
01119  M00S01030.sxllr   +++|
01120  M00S01031.sxllr   +++|                ELSE
01121  M00S01032.sxllr   +++|                  BEGIN
01122  M00S01033.sxllr   +++|                  FET$IN[0] = FET$IN[0] + 1;
01123  M00S01034.sxllr   +++|                  END
01124  M00S01035.sxllr   +++|
01125  M00S01036.sxllr   +++|                CCBDEOI[0] = TRUE;
01126  M00S01037.sxllr   +++|                END              # END OF *EOI* WRITE #
Line S01038 Modification History
M01 (Removed by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01127  M01S01038.msea012 ---|              IF (FET$IN[0] NQ FET$OUT[0])      ##
Line S00044 Modification History
M01 (Added by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01128  M01S00044.msea012 +++|
01129  M01S00045.msea012 +++|              RD$READY = ((FET$OUT[0] GR FET$IN[0])                 ##
01130  M01S00046.msea012 +++|                AND ((FET$OUT[0] - FET$IN[0]) GR  BUFSTART))        ##
01131  M01S00047.msea012 +++|                OR ((FET$OUT[0] LQ FET$IN[0])                       ##
01132  M01S00048.msea012 +++|                AND (((FET$OUT[0]-FET$FRST[0]) + (FET$LIM[0]-FET$IN[0]))
01133  M01S00049.msea012 +++|                GR BUFSTART));
01134  M01S00050.msea012 +++|
01135  M01S00051.msea012 +++|              IF RD$READY                       ##
01136  M00S01039.sxllr   +++|                AND (CCBRWCT[0] EQ 0)           ##
01137  M00S01040.sxllr   +++|                AND (NOT CCBDEOI[0])
01138  M00S01041.sxllr   +++|              THEN
01139  M00S01042.sxllr   +++|                BEGIN
01140  M00S01043.sxllr   +++|                READCW(FETSET[0],0,NRCL);
Line S00052 Modification History
M01 (Added by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01141  M01S00052.msea012 +++|
01142  M01S00053.msea012 +++|                IF RA$SW2
01143  M01S00054.msea012 +++|                THEN
01144  M01S00055.msea012 +++|                  BEGIN
01145  M01S00056.msea012 +++|                  MESSAGE(READMSG,UDFL1);
01146  M01S00057.msea012 +++|                  END
01147  M01S00058.msea012 +++|
01148  M00S01044.sxllr   +++|              END
01149  M00S01045.sxllr   +++|
01150  M00S01046.sxllr   +++|              END                  # END OF DISK INPUT #
01151  M00S01047.sxllr   +++|
01152  M00S01048.sxllr   +++|           ELSE
01153  M00S01049.sxllr   +++|              BEGIN                 # WRITE DISK #
Line S01050 Modification History
M01 (Removed by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01154  M01S01050.msea012 ---|              IF FET$IN[0] NQ FET$OUT[0]         ##
Line S00059 Modification History
M01 (Added by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01155  M01S00059.msea012 +++|              WRT$READY = ((FET$IN[0] GR FET$OUT[0])          ##
01156  M01S00060.msea012 +++|                 AND ((FET$IN[0] - FET$OUT[0]) GR  BUFSTART))
01157  M01S00061.msea012 +++|               OR ((FET$IN[0] LQ FET$OUT[0])                      ##
01158  M01S00062.msea012 +++|                  AND ((FET$LIM[0] - FET$OUT[0])                  ##
01159  M01S00063.msea012 +++|                    + (FET$IN[0] - FET$FRST[0]) GR  BUFSTART));
01160  M01S00064.msea012 +++|
01161  M01S00065.msea012 +++|              IF (WRT$READY OR CCBRWDULD[0] OR (CCBRWCT[0] NQ 0))    ##
01162  M01S00066.msea012 +++|                 AND (NOT FET$IN[0] EQ FET$OUT[0])
01163  M01S00067.msea012 +++|
01164  M01S00068.msea012 +++|
01165  M00S01051.sxllr   +++|              THEN
01166  M00S01052.sxllr   +++|                BEGIN
01167  M00S01053.sxllr   +++|                WRITECW(FETSET[0],NRCL);
Line S00069 Modification History
M01 (Added by) msea012
Seq #  *Modification Id* Act 
----------------------------+
01168  M01S00069.msea012 +++|
01169  M01S00070.msea012 +++|                 IF RA$SW2
01170  M01S00071.msea012 +++|                 THEN
01171  M01S00072.msea012 +++|                   BEGIN
01172  M01S00073.msea012 +++|                   MESSAGE(WRITEMSG,UDFL1);
01173  M01S00074.msea012 +++|                   END
01174  M01S00075.msea012 +++|
01175  M00S01054.sxllr   +++|                END
01176  M00S01055.sxllr   +++|              END                    # END OF WRITE DISK #
01177  M00S01056.sxllr   +++|            END                   # END OF COPY #
01178  M00S01057.sxllr   +++|
01179  M00S01058.sxllr   +++|          IF CCBDERR[0] OR CCBDFULL[0]
01180  M00S01059.sxllr   +++|          THEN         # STOP *1SS* #
01181  M00S01060.sxllr   +++|            BEGIN
01182  M00S01061.sxllr   +++|            FHB$ST$SS[0] = TRUE;
01183  M00S01062.sxllr   +++|            END
01184  M00S01063.sxllr   +++|
01185  M00S01064.sxllr   +++|          END
01186  M00S01065.sxllr   +++|
01187  M00S01066.sxllr   +++|        IF FHB$LOCK[0] AND NOT CCBRWDULD[0]
01188  M00S01067.sxllr   +++|        THEN                         # IF *1SS* RUNNING #
01189  M00S01068.sxllr   +++|          BEGIN
01190  M00S01069.sxllr   +++|          K8G(ENTADR);               # M860 SIDE OF COPY #
01191  M00S01070.sxllr   +++|          P<CCB> = ENTADR;
01192  M00S01071.sxllr   +++|           P<FETFHB> = CCBM86FET[0];
01193  M00S01072.sxllr   +++|          END
01194  M00S01073.sxllr   +++|
01195  M00S01074.sxllr   +++|#
01196  M00S01075.sxllr   +++|*     IF THE INPUT COULD NOT BE RESTARTED (BECAUSE THE BUFFER WAS
01197  M00S01076.sxllr   +++|*     FULL OR THE INPUT MEDIA WAS EMPTY OR THERE WAS AN UNRECOVERABLE
01198  M00S01077.sxllr   +++|*     READ ERROR), AND THE OUTPUT COULD NOT BE RESTARTED (BECAUSE THE
01199  M00S01078.sxllr   +++|*     BUFFER WAS EMPTY OR THE OUTPUT MEDIA WAS FULL OR THERE WAS AN
01200  M00S01079.sxllr   +++|*     UNRECOVERABLE WRITE ERROR), THEN THE COPY OPERATION IS COMPLETE.
01201  M00S01080.sxllr   +++|#
01202  M00S01081.sxllr   +++|
01203  M00S01082.sxllr   +++|
01204  M00S01083.sxllr   +++|        IF FET$LOCK[0]                                             ##
01205  M00S01084.sxllr   +++|          AND ((CCBOPCODE[0] EQ CPYC"DISKAU" AND CCBRWDULD[0])     ##
01206  M00S01085.sxllr   +++|          OR (CCBOPCODE[0] EQ CPYC"AUDISK" AND CCBRWDULD[0]        ##
01207  M00S01086.sxllr   +++|          AND FET$IN[0] EQ FHB$IN[0] AND FET$IN[0] EQ FET$OUT[0])  ##
01208  M00S01087.sxllr   +++|          OR (CCBRWDULD[0] AND (CCBDERR[0] OR CCBDFULL[0])))
01209  M00S01088.sxllr   +++|        THEN                         # INDICATE COPY COMPLETE #
01210  M00S01089.sxllr   +++|          BEGIN
01211  M00S01090.sxllr   +++|          DEL$LNK(ENTADR,LCHN"KC$GOING",0);
01212  M00S01091.sxllr   +++|          LLR$CCF[0] = TRUE;
01213  M00S01092.sxllr   +++|          LLR$RS[0] = PROCST"CONT3";
01214  M00S01093.sxllr   +++|          DRVRRECALL = TRUE;     # INSURE DRIVER ACTIVE #
01215  M00S01094.sxllr   +++|          ADD$LNK(CCBLLRQ[0],LCHN"DRQUEUE",0);
01216  M00S01095.sxllr   +++|          IF CCBHDWPM
01217  M00S01096.sxllr   +++|          THEN
01218  M00S01097.sxllr   +++|            BEGIN   # DELINK 1SS, NO REWIND/UNLOAD MESSAGE #
01219  M00S01098.sxllr   +++|            LLR$DRFUL[0] = TRUE;     # FORCE UNLOAD OF CARTRIDGE #
01220  M00S01099.sxllr   +++|            END        # RETURN OF COPY #
01221  M00S01100.sxllr   +++|          END
01222  M00S01101.sxllr   +++|
01223  M00S01102.sxllr   +++|        ENTADR = NEXTADDR;
01224  M00S01103.sxllr   +++|        END  # MONITOR ENTRIES ON KEEP COPY GOING CHAIN #
01225  M00S01104.sxllr   +++|
01226  M00S01105.sxllr   +++|      RETURN;
01227  M00S01106.sxllr   +++|      END  # KCG #
01228  M00S01107.sxllr   +++|
01229  M00S01108.sxllr   +++|    TERM
01230  M00S01109.sxllr   +++|PROC K8G((CCBADR));
01231  M00S01110.sxllr   +++|# TITLE K8G - KEEP M860 COPY GOING.                               #
01232  M00S01111.sxllr   +++|
01233  M00S01112.sxllr   +++|      BEGIN  # K8G #
01234  M00S01113.sxllr   +++|
01235  M00S01114.sxllr   +++|#
01236  M00S01115.sxllr   +++|**    K8G - KEEP M860 COPY GOING.
01237  M00S01116.sxllr   +++|*
01238  M00S01117.sxllr   +++|*     *K8G* KEEPS THE M860 COPY SIDE OF A VOLUME OPERATION GOING.
01239  M00S01118.sxllr   +++|*     FLAGS IN THE *CCB* ARE UPDATED TO INDICATE THE STATE OF THE COPY
01240  M00S01119.sxllr   +++|*     OPERATION AND A *1SS* CALL IS ISSUED IF NECESSARY.
01241  M00S01120.sxllr   +++|*
01242  M00S01121.sxllr   +++|*     PROC K8G((CCBADR))
01243  M00S01122.sxllr   +++|*
01244  M00S01123.sxllr   +++|*     ENTRY      (CCBADR) - ADDRESS OF THE COPY CONTROL BLOCK.
01245  M00S01124.sxllr   +++|#
01246  M00S01125.sxllr   +++|
01247  M00S01126.sxllr   +++|      ITEM CCBADR     U;             # COPY CONTROL BLOCK ADDRESS #
01248  M00S01127.sxllr   +++|
01249  M00S01128.sxllr   +++|#
01250  M00S01129.sxllr   +++|****  PROC K8G - XREF LIST BEGIN.
01251  M00S01130.sxllr   +++|#
01252  M00S01131.sxllr   +++|
01253  M00S01132.sxllr   +++|      XREF
01254  M00S01133.sxllr   +++|        BEGIN
01255  M00S01134.sxllr   +++|        PROC ABORT;                  # ABORT #
01256  M00S01135.sxllr   +++|        PROC FSCLOG;                 # LOG FSC ERROR MESSAGE #
01257  M00S01136.sxllr   +++|        PROC MESSAGE;                # ISSUE MESSAGE #
01258  M00S01137.sxllr   +++|        END
01259  M00S01138.sxllr   +++|
01260  M00S01139.sxllr   +++|#
01261  M00S01140.sxllr   +++|****  PROC K8G - XREF LIST END.
01262  M00S01141.sxllr   +++|#
01263  M00S01142.sxllr   +++|
01264  M00S01143.sxllr   +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
01265  M00S01144.sxllr   +++|*CALL COMBFAS
01266  M00S01145.sxllr   +++|*CALL COMBCDD
01267  M00S01146.sxllr   +++|*CALL COMBCHN
01268  M00S01147.sxllr   +++|*CALL COMBFET
01269  M00S01148.sxllr   +++|*CALL COMBRCD
01270  M00S01149.sxllr   +++|*CALL COMXCCB
01271  M00S01150.sxllr   +++|*CALL COMXCTF
01272  M00S01151.sxllr   +++|*CALL COMXMSC
01273  M00S01152.sxllr   +++|                                               CONTROL EJECT;
01274  M00S01153.sxllr   +++|
01275  M00S01154.sxllr   +++|#
01276  M00S01155.sxllr   +++|*     SET FLAGS TO INDICATE WHY *1SS* HAS STOPPED.
01277  M00S01156.sxllr   +++|#
01278  M00S01157.sxllr   +++|
01279  M00S01158.sxllr   +++|      P<CCB> = CCBADR;
01280  M00S01159.sxllr   +++|      P<FETFHB> = CCBM86FET[0];
01281  M00S01160.sxllr   +++|      IF CCBRWCT[0] NQ 0
01282  M00S01161.sxllr   +++|      THEN        # FIRST REWIND/UNLOAD EXECUTED #
01283  M00S01162.sxllr   +++|        BEGIN
01284  M00S01163.sxllr   +++|        IF FHB$AT[0] EQ 0
01285  M00S01164.sxllr   +++|        THEN
01286  M00S01165.sxllr   +++|          BEGIN       # REWIND/UNLOAD COMPLETED #
01287  M00S01166.sxllr   +++|          CCBRWDULD[0] = TRUE;
01288  M00S01167.sxllr   +++|          RETURN;
01289  M00S01168.sxllr   +++|          END
01290  M00S01169.sxllr   +++|        ELSE
01291  M00S01170.sxllr   +++|          BEGIN      # SET FOR ANOTHER TRY #
01292  M00S01171.sxllr   +++|          IF CCBRWCT[0] LQ 5
01293  M00S01172.sxllr   +++|          THEN
01294  M00S01173.sxllr   +++|            BEGIN      # TRY AN OTHER REWIND/UNLOAD #
01295  M00S01174.sxllr   +++|            GOTO RWDAUND;
01296  M00S01175.sxllr   +++|            END
01297  M00S01176.sxllr   +++|          ELSE
01298  M00S01177.sxllr   +++|            BEGIN      # HARDWARE PROBLEM - REWIND/UNLOAD #
01299  M00S01178.sxllr   +++|            CCBHDWPM[0] = TRUE;
01300  M00S01179.sxllr   +++|            CCBRWDULD[0] = TRUE;       # FORCE COMPLETE #
01301  M00S01180.sxllr   +++|            RETURN;
01302  M00S01181.sxllr   +++|            END
01303  M00S01182.sxllr   +++|        END     # END OF REWIND/UNLOAD SET UP #
01304  M00S01183.sxllr   +++|      END       # IF REWIND/UNLOAD COMPLETED #
01305  M00S01184.sxllr   +++|      IF FHB$EOI[0]
01306  M00S01185.sxllr   +++|      THEN
01307  M00S01186.sxllr   +++|        BEGIN       # SET TAPE MARK #
01308  M00S01187.sxllr   +++|        CCBTPMARK[0] = TRUE;
01309  M00S01188.sxllr   +++|        END
01310  M00S01189.sxllr   +++|
01311  M00S01190.sxllr   +++|      IF FHB$AT[0] EQ RCENDV    # #
01312  M00S01191.sxllr   +++|        OR FHB$AT[0] EQ RCTBRT
01313  M00S01192.sxllr   +++|      THEN     # *TAPE MARK* OR *END OF VOLUME* #
01314  M00S01193.sxllr   +++|        BEGIN
01315  M00S01194.sxllr   +++|        CCBENDVOL[0] = TRUE;
01316  M00S01195.sxllr   +++|        GOTO RWDAUND;
01317  M00S01196.sxllr   +++|        END
01318  M00S01197.sxllr   +++|
01319  M00S01198.sxllr   +++|      IF FHB$AT[0] EQ 0
01320  M00S01199.sxllr   +++|      THEN
01321  M00S01200.sxllr   +++|        BEGIN    # NO ERROR #
01322  M00S01201.sxllr   +++|        GOTO RWDAUND;
01323  M00S01202.sxllr   +++|        END
01324  M00S01203.sxllr   +++|
01325  M00S01204.sxllr   +++|      IF FHB$AT[0] EQ RCTERF
01326  M00S01205.sxllr   +++|      THEN
01327  M00S01206.sxllr   +++|        BEGIN
01328  M00S01207.sxllr   +++|        FHB$ST$SS[0] = FALSE;
01329  M00S01208.sxllr   +++|        GOTO RWDAUND;
01330  M00S01209.sxllr   +++|        END
01331  M00S01210.sxllr   +++|
01332  M00S01211.sxllr   +++|      IF FHB$AT[0] EQ RCBFTO
01333  M00S01212.sxllr   +++|      THEN
01334  M00S01213.sxllr   +++|        BEGIN
01335  M00S01214.sxllr   +++|        CCBHDWPM[0] = TRUE;
01336  M00S01215.sxllr   +++|        GOTO BMLRWUL;
01337  M00S01216.sxllr   +++|        END
01338  M00S01217.sxllr   +++|
01339  M00S01218.sxllr   +++|      IF FHB$AT[0] EQ RCSTER            # #
01340  M00S01219.sxllr   +++|        AND FHB$ERRCD[0] EQ 0           # #
01341  M00S01220.sxllr   +++|        AND FHB$PYERR[0] EQ 1
01342  M00S01221.sxllr   +++|      THEN
01343  M00S01222.sxllr   +++|        BEGIN    # TAPE PARITY ERROR #
01344  M00S01223.sxllr   +++|        CCBTAPPAR[0] = TRUE;
01345  M00S01224.sxllr   +++|        GOTO BMLRWUL;
01346  M00S01225.sxllr   +++|        END
01347  M00S01226.sxllr   +++|
01348  M00S01227.sxllr   +++|
01349  M00S01228.sxllr   +++|      IF FHB$AT[0] EQ RCILLF
Line S01229 Modification History
M01 (Removed by) mse1
Seq #  *Modification Id* Act 
----------------------------+
01350  M01S01229.mse1    ---|      OR FHB$AT[0] EQ RCDLER
01351  M01S01230.mse1    ---|      OR FHB$AT[0] EQ RCCWER
01352  M00S01231.sxllr   +++|      OR FHB$AT[0] EQ RCBARG
01353  M00S01232.sxllr   +++|      OR FHB$AT[0] EQ RCILLU
01354  M00S01233.sxllr   +++|      THEN     # ABORT ON ERRORS #
01355  M00S01234.sxllr   +++|        BEGIN
01356  M00S01235.sxllr   +++|        FE$RTN[0] = "K8G.";
01357  M00S01236.sxllr   +++|        MESSAGE(FEMSG,UDFL1);
01358  M00S01237.sxllr   +++|        ABORT;
01359  M00S01238.sxllr   +++|        END
01360  M00S01239.sxllr   +++|
Line S00046 Modification History
M01 (Added by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
01361  M01S00046.sxllr2  +++|      IF (FHB$AT[0] EQ RCDLER)
01362  M01S00047.sxllr2  +++|        OR (FHB$AT[0] EQ RCCWER)
01363  M01S00048.sxllr2  +++|        OR (FHB$AT[0] EQ RCHDER)
01364  M01S00049.sxllr2  +++|      THEN
01365  M01S00050.sxllr2  +++|        BEGIN    # PPU FOUND DATA TRANSFER ERROR #
01366  M01S00051.sxllr2  +++|        CCPPUDCK[0] = TRUE;
01367  M01S00052.sxllr2  +++|        GOTO BMLRWUL;
01368  M01S00053.sxllr2  +++|        END
01369  M01S00054.sxllr2  +++|
01370  M00S01240.sxllr   +++|      FSCLOG(DFET);             # ERROR LOG MESSAGE #
01371  M00S01241.sxllr   +++|
01372  M00S01242.sxllr   +++|      CCBHDWPM[0] = TRUE;   # REMAINING ERRORS #
01373  M00S01243.sxllr   +++|      CCBRWDULD[0] = TRUE;
01374  M00S01244.sxllr   +++|      RETURN;
01375  M00S01245.sxllr   +++|
01376  M00S01246.sxllr   +++|
01377  M00S01247.sxllr   +++|#
01378  M00S01248.sxllr   +++|*     SEND A *BML* MESSAGE BEFORE REWIND/UNLOAD.
01379  M00S01249.sxllr   +++|#
01380  M00S01250.sxllr   +++|
01381  M00S01251.sxllr   +++|BMLRWUL:
01382  M00S01252.sxllr   +++|
01383  M00S01253.sxllr   +++|      FSCLOG(DFET);                  # ERROR LOG MESSAGE #
01384  M00S01254.sxllr   +++|
01385  M00S01255.sxllr   +++|#
01386  M00S01256.sxllr   +++|*     RELEASE THE HARDWARE WITH A REWIND/UNLOAD FUNCTION.
01387  M00S01257.sxllr   +++|#
01388  M00S01258.sxllr   +++|
01389  M00S01259.sxllr   +++|RWDAUND:
01390  M00S01260.sxllr   +++|
01391  M00S01261.sxllr   +++|      DRVRRECALL = TRUE;       # INSURE CPUDRIVER ACTIVE #
01392  M00S01262.sxllr   +++|      FHB$CODE[0] = FCRUN;    # SET REWIND/UNLOAD #
01393  M00S01263.sxllr   +++|      CCBRWCT[0] = CCBRWCT[0] + 1;
01394  M00S01264.sxllr   +++|
01395  M00S01265.sxllr   +++|      RETURN;
01396  M00S01266.sxllr   +++|      END  # KDG #
01397  M00S01267.sxllr   +++|
01398  M00S01268.sxllr   +++|    TERM
01399  M00S01269.sxllr   +++|PROC LD$CAR((LLRADR));
01400  M00S01270.sxllr   +++|# TITLE LD$CAR - LOAD CARTRIDGE.                                      #
01401  M00S01271.sxllr   +++|
01402  M00S01272.sxllr   +++|      BEGIN  # LD$CAR #
01403  M00S01273.sxllr   +++|
01404  M00S01274.sxllr   +++|#
01405  M00S01275.sxllr   +++|**    LD$CAR - LOAD CARTRIDGE.
01406  M00S01276.sxllr   +++|*
01407  M00S01277.sxllr   +++|*     LOAD CARTRIDGE GETS THE SPECIFIED CARTRIDGE LOADED ON A
01408  M00S01278.sxllr   +++|*      DRD AND THE LABEL VERIFIED BY *SSDRIVER*.
01409  M00S01279.sxllr   +++|*
01410  M00S01280.sxllr   +++|*     PROC LD$CAR((LLRADR))
01411  M00S01281.sxllr   +++|*
01412  M00S01282.sxllr   +++|*     ENTRY      (LLRADR) - ADDRESS OF *LLRQ* ENTRY FOR THE REQUEST
01413  M00S01283.sxllr   +++|*                           CONTAINING THE SMA-ID AND THE YZ
01414  M00S01284.sxllr   +++|*                           COORDINATES.
01415  M00S01285.sxllr   +++|*
01416  M00S01286.sxllr   +++|*     EXIT       THE PROCESS STATE FIELD IN THE *LLRQ* ENTRY HAS BEEN
01417  M00S01287.sxllr   +++|*                ADVANCED TO INDICATE WHERE PROCESSING OF THIS REQUEST
01418  M00S01288.sxllr   +++|*                LEFT OFF, AND THUS WHAT TO DO NEXT TO ADVANCE THE
01419  M00S01289.sxllr   +++|*                REQUEST.  IF THE MOUNT IS COMPLETE AN ERROR RESPONSE
01420  M00S01290.sxllr   +++|*                CODE IS RETURNED VIA *HLR$RESP[0]* FOR INTERNAL
01421  M00S01291.sxllr   +++|*                REQUESTOR OR *LTC$RQR[LTCENTRY]* FOR EXTERNAL
01422  M00S01292.sxllr   +++|*                REQUESTORS.
01423  M00S01293.sxllr   +++|*                ERROR RESPONSE CODES (VALUES DEFINED IN *COMBCPR*).
01424  M00S01294.sxllr   +++|*                  = RESPTYP4"OK4".
01425  M00S01295.sxllr   +++|*                  = RESPTYP4"NO$CART".
01426  M00S01296.sxllr   +++|*                  = RESPTYP4"M86$HDW$PR".
01427  M00S01297.sxllr   +++|*
01428  M00S01298.sxllr   +++|*     NOTES      THIS MODULE IS A PSEUDO REENTRANT ROUTINE.
01429  M00S01299.sxllr   +++|*
01430  M00S01300.sxllr   +++|#
01431  M00S01301.sxllr   +++|
01432  M00S01302.sxllr   +++|      ITEM DRDCOUNT   I;             # *DRD-S* ACTIVE #
01433  M00S01303.sxllr   +++|      ITEM LLRADR     U;             # *LLRQ* ENTRY ADDRESS #
01434  M00S01304.sxllr   +++|      ITEM I          U;             # COUNTER #
01435  M00S01305.sxllr   +++|      ITEM MUCPRA     U;             # *UCP* OR *HLRQ* ADDRESS #
01436  M00S01306.sxllr   +++|      ITEM RQIID      B;             # INTERIAL REQUEST #
01437  M00S01307.sxllr   +++|      ITEM SMAO       U;             # REQUEST SM-ID #
01438  M00S01308.sxllr   +++|      ITEM YZO        U;             # Y AND Z COORDINATE #
01439  M00S01309.sxllr   +++|
01440  M00S01310.sxllr   +++|#
01441  M00S01311.sxllr   +++|****  PROC LD$CAR - XREF LIST BEGIN.
01442  M00S01312.sxllr   +++|#
01443  M00S01313.sxllr   +++|
01444  M00S01314.sxllr   +++|      XREF
01445  M00S01315.sxllr   +++|        BEGIN
01446  M00S01316.sxllr   +++|        PROC ABORT;                  # INTERFACE TO *ABORT* MACRO #
01447  M00S01317.sxllr   +++|        PROC ADD$LNK;                # ADD ENTRY TO END OF CHAIN #
01448  M00S01318.sxllr   +++|        PROC DELAY;                  # TIMED DELAY #
01449  M00S01319.sxllr   +++|        PROC KILL$UC;                # ABORT A UCP #
01450  M00S01320.sxllr   +++|        PROC MESSAGE;                # INTERFACE TO *MESSAGE* MACRO #
01451  M00S01321.sxllr   +++|        PROC SFCALL;                 # INTERFACE TO *SFCALL* MACRO #
01452  M00S01322.sxllr   +++|        PROC UCP$RES;                # SEND RESPONSE TO UCP #
01453  M00S01323.sxllr   +++|        END
01454  M00S01324.sxllr   +++|
01455  M00S01325.sxllr   +++|#
01456  M00S01326.sxllr   +++|****  PROC LD$CAR - XREF LIST END.
01457  M00S01327.sxllr   +++|#
01458  M00S01328.sxllr   +++|
01459  M00S01329.sxllr   +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
01460  M00S01330.sxllr   +++|*CALL COMBFAS
01461  M00S01331.sxllr   +++|*CALL COMBCHN
01462  M00S01332.sxllr   +++|*CALL COMBCPR
01463  M00S01333.sxllr   +++|*CALL COMBLRQ
01464  M00S01334.sxllr   +++|*CALL COMBLBL
01465  M00S01335.sxllr   +++|*CALL COMBMAT
01466  M00S01336.sxllr   +++|*CALL COMBRCD
01467  M00S01337.sxllr   +++|*CALL COMBUCR
01468  M00S01338.sxllr   +++|*CALL COMXHLR
01469  M00S01339.sxllr   +++|*CALL COMXCTF
01470  M00S01340.sxllr   +++|*CALL COMBUDT
01471  M00S01341.sxllr   +++|*CALL COMXIPR
01472  M00S01342.sxllr   +++|*CALL COMXLTC
01473  M00S01343.sxllr   +++|*CALL COMXMSC
01474  M00S01344.sxllr   +++|
01475  M00S01345.sxllr   +++|      DEF SKELLAB   #" E CSN=CCCCCCCC, SM=A, SF=X, FFFFFFF.  "#;
01476  M00S01346.sxllr   +++|
01477  M00S01347.sxllr   +++|      ARRAY MSGS   [0:0]  S(4);
01478  M00S01348.sxllr   +++|        BEGIN
01479  M00S01349.sxllr   +++|        ITEM MSGS$SKEL       C(00,00,36);       # TEXT #
01480  M00S01350.sxllr   +++|        ITEM MSGS$TYPE       C(00,06,01);       # TYPE #
01481  M00S01351.sxllr   +++|        ITEM MSGS$CSN        C(00,42,08);       # CCCCCCCC #
01482  M00S01352.sxllr   +++|        ITEM MSGS$SM         C(02,00,01);       # A #
01483  M00S01353.sxllr   +++|        ITEM MSGS$SF         C(02,36,01);       # SUB FAMILY #
01484  M00S01354.sxllr   +++|        ITEM MSGS$FAM        C(02,54,07);       # FAMILY #
01485  M00S01355.sxllr   +++|        ITEM MSGS$FI         U(03,36,24);       # ZERO FILL #
01486  M00S01356.sxllr   +++|        END
01487  M00S01357.sxllr   +++|
01488  M00S01358.sxllr   +++|      BASED
01489  M00S01359.sxllr   +++|      ARRAY CLEAR [0:0] S(1);
01490  M00S01360.sxllr   +++|        BEGIN
01491  M00S01361.sxllr   +++|        ITEM CLN      U(00,36,24);     # CLEAR DRD ASSIGNMENT #
01492  M00S01362.sxllr   +++|        END
01493  M00S01363.sxllr   +++|
01494  M00S01364.sxllr   +++|      SWITCH LDENTR:PROCST           # LOAD CARTRIDGE ENTRIES #
01495  M00S01365.sxllr   +++|             LDINIT:INITIAL,         # INITIAL ENTRY INTO PROCESS #
01496  M00S01366.sxllr   +++|             LDCONT:CONT1,           # CONTINUE PROCESS #
01497  M00S01367.sxllr   +++|             LDWAIT1:CONT2;          # AFTER A SWAPIN DELAY #
01498  M00S01368.sxllr   +++|
01499  M00S01369.sxllr   +++|                                               CONTROL EJECT;
01500  M00S01370.sxllr   +++|
01501  M00S01371.sxllr   +++|      P<LLRQ> = LLRADR;
01502  M00S01372.sxllr   +++|      GOTO LDENTR[LLR$PRCST[0]];
01503  M00S01373.sxllr   +++|
01504  M00S01374.sxllr   +++|#
01505  M00S01375.sxllr   +++|*     "INITIAL" PROCESS STATE.
01506  M00S01376.sxllr   +++|#
01507  M00S01377.sxllr   +++|
01508  M00S01378.sxllr   +++|LDINIT:                              # INITIAL ENTRY #
01509  M00S01379.sxllr   +++|#
01510  M00S01380.sxllr   +++|*     SEARCH THE *LLRQ* FOR AN MATCHING *CSN*.  IF AN INTERNAL
01511  M00S01381.sxllr   +++|*     REQUEST, LINK THE NEW REQUEST AT THE END OF THE DUPLICATE
01512  M00S01382.sxllr   +++|*     *CSN* REQUEST.  IF THE REQUEST IS FROM A *UCP* RETURN AN
01513  M00S01383.sxllr   +++|*     *CSN$IN$USE* RESPONSE.
01514  M00S01384.sxllr   +++|#
01515  M00S01385.sxllr   +++|
01516  M00S01386.sxllr   +++|
01517  M00S01387.sxllr   +++|      SMAO = LLR$SMA[0];
01518  M00S01388.sxllr   +++|      YZO = LLR$YZ[0];
01519  M00S01389.sxllr   +++|      RQIID = LLR$RQI[0] EQ REQNAME"RQIINT";
01520  M00S01390.sxllr   +++|      P<LLRQ> = MAT$FWA[MAT$ENTRY"LLRQ"];
01521  M00S01391.sxllr   +++|      SLOWFOR I=0 STEP LLRQENTL WHILE I LS MAT$SPACE[MAT$ENTRY"LLRQ"]
01522  M00S01392.sxllr   +++|      DO
01523  M00S01393.sxllr   +++|        BEGIN     # CHECK IF CALL FROM *UCP* #
01524  M00S01394.sxllr   +++|        IF SMAO EQ LLR$SMA[0]      ##
01525  M00S01395.sxllr   +++|          AND YZO EQ LLR$YZ[0]     ##
01526  M00S01396.sxllr   +++|          AND (LLR$DRDL[0] OR LLR$UNLD[0])
01527  M00S01397.sxllr   +++|        THEN
01528  M00S01398.sxllr   +++|          BEGIN      # CHECK FOR *UCP* OR *INTERNAL* CALL #
01529  M00S01399.sxllr   +++|
01530  M00S01400.sxllr   +++|          IF LLR$UNLD[0]
01531  M00S01401.sxllr   +++|          THEN     # DUPLICATE CARTRIDGE IN UNLOAD STATE #
01532  M00S01402.sxllr   +++|            BEGIN
01533  M00S01403.sxllr   +++|            P<LLRQ> = LLRADR;
01534  M00S01404.sxllr   +++|            DELAY(UCP$INTV,LLRADR,LLRQIND);
01535  M00S01405.sxllr   +++|            RETURN;
01536  M00S01406.sxllr   +++|            END
01537  M00S01407.sxllr   +++|
01538  M00S01408.sxllr   +++|          IF NOT RQIID
01539  M00S01409.sxllr   +++|          THEN
01540  M00S01410.sxllr   +++|            BEGIN     # *UCP* DUPLICATE CARTRIDGE REQUEST #
01541  M00S01411.sxllr   +++|            P<LLRQ> = LLRADR;
01542  M00S01412.sxllr   +++|            LTCENTRY = LLR$LTCT[0];
01543  M00S01413.sxllr   +++|            LTC$RQR[LTCENTRY] = RESPTYP4"CSN$IN$USE";
01544  M00S01414.sxllr   +++|            UCP$RES;
01545  M00S01415.sxllr   +++|            END       # END *UCP* DUPLICATE CARTRIDGE #
01546  M00S01416.sxllr   +++|          ELSE
01547  M00S01417.sxllr   +++|            BEGIN   # *INTERNAL* DUPLICATE CARTRIDGE REQUEST #
01548  M00S01418.sxllr   +++|            P<LLRQ> = LLRADR;
01549  M00S01419.sxllr   +++|            P<HLRQ> = LLR$UCPRA[0];
01550  M00S01420.sxllr   +++|            HLR$RESP[0] = RESPTYP4"CSN$IN$USE";
01551  M00S01421.sxllr   +++|            P<CLEAR> = HLR$DRDRA[0];
01552  M00S01422.sxllr   +++|            CLN = 0;
01553  M00S01423.sxllr   +++|            HLR$DRDRA[0] = 0;
01554  M00S01424.sxllr   +++|            HLR$LRQADR[0] = 0;
01555  M00S01425.sxllr   +++|            ADD$LNK(LLR$UCPRA[0],LCHN"HL$READY",0);
01556  M00S01426.sxllr   +++|            END
01557  M00S01427.sxllr   +++|
01558  M00S01428.sxllr   +++|          LLR$PRCST[0] = PROCST"COMPLETE";
01559  M00S01429.sxllr   +++|          RETURN;
01560  M00S01430.sxllr   +++|        END     # END OF *DUPLICATE* CARTRIDGE FOUND #
01561  M00S01431.sxllr   +++|
01562  M00S01432.sxllr   +++|      P<LLRQ> = P<LLRQ> + LLRQENTL;
01563  M00S01433.sxllr   +++|      END       # END OF DUPLICATE CARTRIDGE SEARCH #
01564  M00S01434.sxllr   +++|      P<LLRQ> = LLRADR;
01565  M00S01435.sxllr   +++|
01566  M00S01436.sxllr   +++|      IF NOT RQIID
01567  M00S01437.sxllr   +++|      THEN      # ASSIGN *DRD* TO EXTERNAL REQUEST #
01568  M00S01438.sxllr   +++|        BEGIN
01569  M00S01439.sxllr   +++|        SLOWFOR I=1 STEP 1 UNTIL MAXSMUNIT
01570  M00S01440.sxllr   +++|        DO
01571  M00S01441.sxllr   +++|          BEGIN    # UNTIL *SM* FOUND #
01572  M00S01442.sxllr   +++|          IF SMAO EQ SM$ID[I]
01573  M00S01443.sxllr   +++|          THEN
01574  M00S01444.sxllr   +++|            BEGIN      # *SM* FOUND #
01575  M00S01445.sxllr   +++|            GOTO SMFOUND;
01576  M00S01446.sxllr   +++|            END
01577  M00S01447.sxllr   +++|          END
01578  M00S01448.sxllr   +++|
01579  M00S01449.sxllr   +++|SMFOUND:
01580  M00S01450.sxllr   +++|      DRDCOUNT = 0;
01581  M00S01451.sxllr   +++|      IF D0$ON[I]
01582  M00S01452.sxllr   +++|      THEN
01583  M00S01453.sxllr   +++|        BEGIN
01584  M00S01454.sxllr   +++|        DRDCOUNT = 1;
01585  M00S01455.sxllr   +++|        END
01586  M00S01456.sxllr   +++|
01587  M00S01457.sxllr   +++|      IF D1$ON[I]
01588  M00S01458.sxllr   +++|      THEN
01589  M00S01459.sxllr   +++|        BEGIN
01590  M00S01460.sxllr   +++|        DRDCOUNT = DRDCOUNT + 1;
01591  M00S01461.sxllr   +++|        END
01592  M00S01462.sxllr   +++|
01593  M00S01463.sxllr   +++|      IF SM$REQRES1[I] NQ 0      ##
01594  M00S01464.sxllr   +++|        AND SM$REQRES2[I] NQ 0
01595  M00S01465.sxllr   +++|      THEN      # NO *DRD-S* AVAILABLE #
01596  M00S01466.sxllr   +++|        BEGIN
01597  M00S01467.sxllr   +++|        DELAY(UCP$INTV,LLRADR,LLRQIND);
01598  M00S01468.sxllr   +++|        RETURN;
01599  M00S01469.sxllr   +++|        END
01600  M00S01470.sxllr   +++|
01601  M00S01471.sxllr   +++|      IF DRDCOUNT EQ 1
01602  M00S01472.sxllr   +++|      THEN     # ONLY ONE *DRD* ACTIVE #
01603  M00S01473.sxllr   +++|        BEGIN
01604  M00S01474.sxllr   +++|        IF (SM$REQRES1[I] NQ 0)      ##
01605  M00S01475.sxllr   +++|          OR (SM$REQRES2[I] NQ 0)
01606  M00S01476.sxllr   +++|        THEN     # NO *DRD* AVAILABLE #
01607  M00S01477.sxllr   +++|            BEGIN
01608  M00S01478.sxllr   +++|            DELAY(UCP$INTV,LLRADR,LLRQIND);
01609  M00S01479.sxllr   +++|            RETURN;
01610  M00S01480.sxllr   +++|            END
01611  M00S01481.sxllr   +++|
01612  M00S01482.sxllr   +++|         END      # *DRD*  = 1 #
01613  M00S01483.sxllr   +++|
01614  M00S01484.sxllr   +++|      IF SM$REQRES1[I] EQ 0
01615  M00S01485.sxllr   +++|      THEN      # RESERVE A *DRD* #
01616  M00S01486.sxllr   +++|        BEGIN
01617  M00S01487.sxllr   +++|        SM$REQRES1[I] = LLRADR;
01618  M00S01488.sxllr   +++|        SM$LLRQ1[I] = TRUE;
01619  M00S01489.sxllr   +++|        LLR$DRDRA[0] = LOC(SM$REQRES1[I]);
01620  M00S01490.sxllr   +++|        END
01621  M00S01491.sxllr   +++|
01622  M00S01492.sxllr   +++|      ELSE
01623  M00S01493.sxllr   +++|        BEGIN
01624  M00S01494.sxllr   +++|        SM$REQRES2[I] = LLRADR;
01625  M00S01495.sxllr   +++|        SM$LLRQ2[I] = TRUE;
01626  M00S01496.sxllr   +++|        LLR$DRDRA[0] = LOC(SM$REQRES2[I]);
01627  M00S01497.sxllr   +++|        END
01628  M00S01498.sxllr   +++|
01629  M00S01499.sxllr   +++|        END      # EXTERNAL *DRD*ASSIGNMENT #
01630  M00S01500.sxllr   +++|      LLR$RC[0] = REQCODE"SMOUNT";   # ISSUE MOUNT REQUEST TO DRIVER #
01631  M00S01501.sxllr   +++|      LLR$DRDL[0] = TRUE;
01632  M00S01502.sxllr   +++|      ADD$LNK(LLRADR,LCHN"DRQUEUE",0);
01633  M00S01503.sxllr   +++|      LLR$PRCST[0] = PROCST"CONT1";
01634  M00S01504.sxllr   +++|      RETURN;
01635  M00S01505.sxllr   +++|
01636  M00S01506.sxllr   +++|#
01637  M00S01507.sxllr   +++|*     "CONT1" PROCESS STATE.
01638  M00S01508.sxllr   +++|*
01639  M00S01509.sxllr   +++|*     RETURN RESPONSE FROM *SSDRVR* TO THE REQUESTOR.
01640  M00S01510.sxllr   +++|#
01641  M00S01511.sxllr   +++|
01642  M00S01512.sxllr   +++|LDCONT:                              # CONTINUE PROCESSING #
01643  M00S01513.sxllr   +++|      LTCENTRY = LLR$LTCT[0];
01644  M00S01514.sxllr   +++|      IF LLR$RQI[0] LQ REQNAME"RQITEST"
01645  M00S01515.sxllr   +++|      THEN
01646  M00S01516.sxllr   +++|        BEGIN  # REQUEST IS FROM A UCP #
01647  M00S01517.sxllr   +++|        IF LLR$UCPABT[0]
01648  M00S01518.sxllr   +++|        THEN
01649  M00S01519.sxllr   +++|          BEGIN  # UCP HAS ABORTED #
01650  M00S01520.sxllr   +++|          IF LLR$DR[0] EQ RESPTYP4"OK4"
01651  M00S01521.sxllr   +++|            OR (LLR$DR[0] EQ RESPTYP4"M86$HDW$PR" AND NOT LLR$LDERR[0])
01652  M00S01522.sxllr   +++|          THEN
01653  M00S01523.sxllr   +++|            BEGIN  # MOUNT WAS OK SO DISMOUNT CARTRIDGE #
01654  M00S01524.sxllr   +++|            GOTO UNLCART;
01655  M00S01525.sxllr   +++|            END  # MOUNT WAS OK SO DISMOUNT CARTRIDGE #
01656  M00S01526.sxllr   +++|
01657  M00S01527.sxllr   +++|          ELSE
01658  M00S01528.sxllr   +++|            BEGIN  # CLEAR LLRQ #
01659  M00S01529.sxllr   +++|            GOTO CL$EX$UDT;
01660  M00S01530.sxllr   +++|            END
01661  M00S01531.sxllr   +++|
01662  M00S01532.sxllr   +++|          END  # UCP HAS ABORTED #
01663  M00S01533.sxllr   +++|
01664  M00S01534.sxllr   +++|        ELSE
01665  M00S01535.sxllr   +++|          BEGIN  # UCP IS STILL RUNNING #
01666  M00S01536.sxllr   +++|          IF LLR$DR[0] EQ RESPTYP4"OK4"
01667  M00S01537.sxllr   +++|            OR LLR$DR[0] EQ RESPTYP4"CART$LB$ERR"   # #
01668  M00S01538.sxllr   +++|            OR LLR$DR[0] EQ RESPTYP4"UNK$CART"
01669  M00S01539.sxllr   +++|          THEN
01670  M00S01540.sxllr   +++|            BEGIN        # MOUNT OK, SET UP *LTC* #
01671  M00S01541.sxllr   +++|            LTC$CART[LTCENTRY] = TRUE;
01672  M00S01542.sxllr   +++|            LTC$DRD[LTCENTRY] = LLR$DRD[0];
01673  M00S01543.sxllr   +++|            LTC$YP[LTCENTRY] = LLR$Y[0];
01674  M00S01544.sxllr   +++|            LTC$ZP[LTCENTRY] = LLR$Z[0];
01675  M00S01545.sxllr   +++|
01676  M00S01546.sxllr   +++|#
01677  M00S01547.sxllr   +++|*     RETURN THE LABEL TO THE UCP.  IF THE UCP IS SWAPPED OUT,
01678  M00S01548.sxllr   +++|*     DELAY THE REQUEST AND TRY AGAIN LATER.
01679  M00S01549.sxllr   +++|#
01680  M00S01550.sxllr   +++|
01681  M00S01551.sxllr   +++|WRTLOOP:
01682  M00S01552.sxllr   +++|            LTCENTRY = LLR$LTCT[0];
01683  M00S01553.sxllr   +++|            LTC$SFUCPA[LTCENTRY] = LLR$ADDR2[0];
01684  M00S01554.sxllr   +++|            LTC$SFSCPA[LTCENTRY] = MAT$FWA[MAT$ENTRY"LABBUF"];
01685  M00S01555.sxllr   +++|            LTC$SFFP[LTCENTRY] = LABLEN;
01686  M00S01556.sxllr   +++|            LTC$SFFC[LTCENTRY] = SFWRIT;
01687  M00S01557.sxllr   +++|            SFCALL(LOC(LTC$WORD0[LTCENTRY]),RCL);
01688  M00S01558.sxllr   +++|            IF LTC$SFRC[LTCENTRY] EQ SFRCUCPGON
01689  M00S01559.sxllr   +++|            THEN
01690  M00S01560.sxllr   +++|              BEGIN
Line S01561 Modification History
M01 (Removed by) sxllr1
Seq #  *Modification Id* Act 
----------------------------+
01691  M01S01561.sxllr1  ---|              GOTO COMPLREQ;
Line S00001 Modification History
M01 (Added by) sxllr1
Seq #  *Modification Id* Act 
----------------------------+
01692  M01S00001.sxllr1  +++|              GOTO UNLCART;
01693  M00S01562.sxllr   +++|              END
01694  M00S01563.sxllr   +++|
01695  M00S01564.sxllr   +++|            IF LTC$SFRC[LTCENTRY] EQ SFRCBDUCPA
01696  M00S01565.sxllr   +++|            THEN
01697  M00S01566.sxllr   +++|              BEGIN
01698  M00S01567.sxllr   +++|              KILL$UC(KILLCODE"INVADDR");
Line S01568 Modification History
M01 (Removed by) sxllr1
Seq #  *Modification Id* Act 
----------------------------+
01699  M01S01568.sxllr1  ---|              GOTO COMPLREQ;
Line S00002 Modification History
M01 (Added by) sxllr1
Seq #  *Modification Id* Act 
----------------------------+
01700  M01S00002.sxllr1  +++|              GOTO UNLCART;
01701  M00S01569.sxllr   +++|              END
01702  M00S01570.sxllr   +++|
01703  M00S01571.sxllr   +++|            IF LTC$SFRC[LTCENTRY] EQ SFRCSWPOUT
01704  M00S01572.sxllr   +++|            THEN
01705  M00S01573.sxllr   +++|              BEGIN
01706  M00S01574.sxllr   +++|              LTC$SFUCPA[LTCENTRY] = 0;
01707  M00S01575.sxllr   +++|              LTC$SFSCPA[LTCENTRY] = 0;
01708  M00S01576.sxllr   +++|              LTC$SFFC[LTCENTRY] = SFSWPI;
Line S01577 Modification History
M01 (Removed by) sxllr1
Seq #  *Modification Id* Act 
----------------------------+
01709  M01S01577.sxllr1  ---|              SFCALL(LOC(LTC$WORD0[LTCENTRY]),NRCL);
Line S00003 Modification History
M01 (Added by) sxllr1
Seq #  *Modification Id* Act 
----------------------------+
01710  M01S00003.sxllr1  +++|              SFCALL(LOC(LTC$WORD0[LTCENTRY]),RCL);
01711  M00S01578.sxllr   +++|
01712  M00S01579.sxllr   +++|#
01713  M00S01580.sxllr   +++|*      "CONT2" PROCESS STATE.
01714  M00S01581.sxllr   +++|#
01715  M00S01582.sxllr   +++|
01716  M00S01583.sxllr   +++|
01717  M00S01584.sxllr   +++|LDWAIT1:
01718  M00S01585.sxllr   +++|
01719  M00S01586.sxllr   +++|              LTCENTRY = LLR$LTCT[0];
01720  M00S01587.sxllr   +++|              IF LTC$SFFCC[LTCENTRY]
01721  M00S01588.sxllr   +++|              THEN
01722  M00S01589.sxllr   +++|                BEGIN
01723  M00S01590.sxllr   +++|                GOTO WRTLOOP;
01724  M00S01591.sxllr   +++|                END
01725  M00S01592.sxllr   +++|
01726  M00S01593.sxllr   +++|              LLR$PRCST[0] = PROCST"CONT2";
01727  M00S01594.sxllr   +++|              DELAY(UCP$INTV,LLRADR,LLRQIND);
01728  M00S01595.sxllr   +++|              RETURN;
01729  M00S01596.sxllr   +++|              END
01730  M00S01597.sxllr   +++|
01731  M00S01598.sxllr   +++|            LTC$RQR[LTCENTRY] = LLR$DR[0];
01732  M00S01599.sxllr   +++|            LABELBUSY = FALSE;
01733  M00S01600.sxllr   +++|            UCP$RES;
01734  M00S01601.sxllr   +++|            RETURN;
01735  M00S01602.sxllr   +++|            END  # MOUNT WAS OK SO BUILD UTC #
01736  M00S01603.sxllr   +++|
01737  M00S01604.sxllr   +++|
01738  M00S01605.sxllr   +++|#
01739  M00S01606.sxllr   +++|*     ERROR - CLEAN UP *LTCT*.
01740  M00S01607.sxllr   +++|#
01741  M00S01608.sxllr   +++|
01742  M00S01609.sxllr   +++|          LLR$RQR[0] = LLR$DR[0];
01743  M00S01610.sxllr   +++|          LTC$LLRQA[LTCENTRY] = 0;       # CLEAR *LLRQ* ENTRY #
01744  M00S01611.sxllr   +++|          LTC$RQR[LTCENTRY] = LLR$DR[0];
01745  M00S01612.sxllr   +++|          UCP$RES;
01746  M00S01613.sxllr   +++|          END  # UCP IS STILL RUNNING #
Line S01614 Modification History
M01 (Removed by) sxllr1
Seq #  *Modification Id* Act 
----------------------------+
01747  M01S01614.sxllr1  ---|COMPLREQ:
Line S00004 Modification History
M01 (Added by) sxllr1
M02 (Removed by) sxllr3
Seq #  *Modification Id* Act 
----------------------------+
01748  M02S00004.sxllr3  ---|      LTC$RQR[LTCENTRY] = LLR$DR[0];
01749  M00S01615.sxllr   +++|      LABELBUSY = FALSE;
Line S00005 Modification History
M01 (Added by) sxllr1
M02 (Removed by) sxllr3
Seq #  *Modification Id* Act 
----------------------------+
01750  M02S00005.sxllr3  ---|      UCP$RES;
01751  M00S01616.sxllr   +++|CL$EX$UDT:
01752  M00S01617.sxllr   +++|      P<CLEAR> = LLR$DRDRA[0];      # CLEAR *DRD* RESERVATION #
01753  M00S01618.sxllr   +++|      CLN = 0;
01754  M00S01619.sxllr   +++|      LLR$PRCST[0] = PROCST"COMPLETE";
01755  M00S01620.sxllr   +++|      RETURN;
01756  M00S01621.sxllr   +++|
01757  M00S01622.sxllr   +++|        END  # REQUEST IS FROM A UCP #
01758  M00S01623.sxllr   +++|
01759  M00S01624.sxllr   +++|
01760  M00S01625.sxllr   +++|      IF LLR$RQI[0] EQ REQNAME"RQIINT"
01761  M00S01626.sxllr   +++|      THEN                           # IF REQUEST IS INTERNAL #
01762  M00S01627.sxllr   +++|        BEGIN
01763  M00S01628.sxllr   +++|
01764  M00S01629.sxllr   +++|#
01765  M00S01630.sxllr   +++|*     ADD REQUESTING *HLRQ* ENTRY TO THE READY CHAIN.
01766  M00S01631.sxllr   +++|#
01767  M00S01632.sxllr   +++|
01768  M00S01633.sxllr   +++|        P<HLRQ> = LLR$UCPRA[0];
01769  M00S01634.sxllr   +++|        HLR$RESP[0] = LLR$DR[0];
01770  M00S01635.sxllr   +++|        HLR$ADRD[0] = LLR$DRD[0];
01771  M00S01636.sxllr   +++|        IF LLR$DR[0] NQ RESPTYP4"OK4"
01772  M00S01637.sxllr   +++|        THEN
01773  M00S01638.sxllr   +++|          BEGIN       # RETURN THE *LLRQ* #
01774  M00S01639.sxllr   +++|          MSGS$SKEL[0] = SKELLAB;
01775  M00S01640.sxllr   +++|          MSGS$CSN[0] = HLR$CSND[0];
01776  M00S01641.sxllr   +++|          MSGS$SM[0] = HLR$SM[0];
01777  M00S01642.sxllr   +++|          MSGS$SF[0] = O"33" + HLR$SBF[0];
01778  M00S01643.sxllr   +++|          MSGS$FAM[0] = HLR$FAM[0];
01779  M00S01644.sxllr   +++|          MESSAGE(MSGS,SYSUDF1);
01780  M00S01645.sxllr   +++|
01781  M00S01646.sxllr   +++|          IF (LLR$DR[0] NQ RESPTYP4"CELL$EMP")       ##
01782  M00S01647.sxllr   +++|            AND (LLR$DR[0] NQ RESPTYP4"SMA$OFF")   ##
01783  M00S01648.sxllr   +++|            AND (LLR$DR[0] NQ RESPTYP4"M86$HDW$PR")
01784  M00S01649.sxllr   +++|          THEN
01785  M00S01650.sxllr   +++|            BEGIN      # OUTPUT DRIVER LABEL BUFFER #
01786  M00S01651.sxllr   +++|            MSGS$TYPE[0] = "R";
01787  M00S01652.sxllr   +++|            MSGS$CSN[0] = LAB$CSND[0];
01788  M00S01653.sxllr   +++|            MSGS$SM[0] = LAB$SMID;
01789  M00S01654.sxllr   +++|            MSGS$SF[0] = O"33" + LAB$SF;
01790  M00S01655.sxllr   +++|            MSGS$FAM[0] = LAB$FMLY;
01791  M00S01656.sxllr   +++|            MESSAGE(MSGS,SYSUDF1);
01792  M00S01657.sxllr   +++|            END       # DRIVER LABEL BUFFER #
01793  M00S01658.sxllr   +++|
01794  M00S01659.sxllr   +++|          IF LLR$DR[0] EQ RESPTYP4"M86$HDW$PR" AND NOT LLR$LDERR[0]
01795  M00S01660.sxllr   +++|          THEN
01796  M00S01661.sxllr   +++|            BEGIN    # UNLOAD OF CARTRIDGE #
Line S01662 Modification History
M01 (Removed by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
01797  M01S01662.sxllr2  ---|            GOTO UNLCART;
Line S00055 Modification History
M01 (Added by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
01798  M01S00055.sxllr2  +++|            GOTO INTIALUNL;            # LET EXEC UNLOAD CARTRIDGE #
01799  M00S01663.sxllr   +++|            END
01800  M00S01664.sxllr   +++|
01801  M00S01665.sxllr   +++|
01802  M00S01666.sxllr   +++|#
01803  M00S01667.sxllr   +++|*     DELINK LLRQ FROM HLRQ.
01804  M00S01668.sxllr   +++|*     RELEASE LLRQ.
01805  M00S01669.sxllr   +++|#
01806  M00S01670.sxllr   +++|
01807  M00S01671.sxllr   +++|          HLR$LRQADR[0] = 0;
01808  M00S01672.sxllr   +++|          LLR$PRCST[0] = PROCST"COMPLETE";
01809  M00S01673.sxllr   +++|          P<CLEAR> = HLR$DRDRA[0];    # CLEAR *DRD* RESERVATION #
01810  M00S01674.sxllr   +++|          CLN = 0;
01811  M00S01675.sxllr   +++|          HLR$DRDRA[0] = 0;
01812  M00S01676.sxllr   +++|          IF LLR$DR[0] EQ RESPTYP4"CELL$EMP"      ##
01813  M00S01677.sxllr   +++|            OR LLR$DR[0] EQ RESPTYP4"SMA$OFF"      ##
01814  M00S01678.sxllr   +++|            OR LLR$DR[0] EQ RESPTYP4"M86$HDW$PR"
01815  M00S01679.sxllr   +++|          THEN
01816  M00S01680.sxllr   +++|            BEGIN      # DO NOT RELEASE LABEL BUFFER #
01817  M00S01681.sxllr   +++|          GOTO NOLABREL;
01818  M00S01682.sxllr   +++|            END        # RETURNED #
01819  M00S01683.sxllr   +++|          END
Line S00056 Modification History
M01 (Added by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
01820  M01S00056.sxllr2  +++|
01821  M01S00057.sxllr2  +++|INTIALUNL:
01822  M00S01684.sxllr   +++|        LABELBUSY = FALSE;
01823  M00S01685.sxllr   +++|
01824  M00S01686.sxllr   +++|NOLABREL:
01825  M00S01687.sxllr   +++|
01826  M00S01688.sxllr   +++|        ADD$LNK(LLR$UCPRA[0],LCHN"HL$READY",0);
01827  M00S01689.sxllr   +++|        RETURN;
01828  M00S01690.sxllr   +++|        END
01829  M00S01691.sxllr   +++|
01830  M00S01692.sxllr   +++|#
01831  M00S01693.sxllr   +++|*     UNLOAD A CARTRIDGE.
01832  M00S01694.sxllr   +++|#
01833  M00S01695.sxllr   +++|
01834  M00S01696.sxllr   +++|UNLCART:
01835  M00S01697.sxllr   +++|      LLR$PRCNME[0] = REQTYP4"UNLD$CART";
01836  M00S01698.sxllr   +++|      LLR$PRCST[0] = PROCST"INITIAL";
01837  M00S01699.sxllr   +++|      LABELBUSY = FALSE;
Line S01700 Modification History
M01 (Removed by) sxllr2
Seq #  *Modification Id* Act 
----------------------------+
01838  M01S01700.sxllr2  ---|      LLR$LCF[0] = TRUE;
01839  M00S01701.sxllr   +++|      ADD$LNK(LLRADR,LCHN"LL$READY",0);
01840  M00S01702.sxllr   +++|      RETURN;
01841  M00S01703.sxllr   +++|      END  # LD$CAR #
01842  M00S01704.sxllr   +++|
01843  M00S01705.sxllr   +++|    TERM
01844  M00S01706.sxllr   +++|PROC LLRQENQ(ADDR);
01845  M00S01707.sxllr   +++|# TITLE LLRQENQ - LOW LEVEL REQUEST QUEUE ENQUEUER.                   #
01846  M00S01708.sxllr   +++|
01847  M00S01709.sxllr   +++|      BEGIN  # LLRQENQ #
01848  M00S01710.sxllr   +++|
01849  M00S01711.sxllr   +++|#
01850  M00S01712.sxllr   +++|**    LLRQENQ - LOW LEVEL REQUEST QUEUE ENQUEUER.
01851  M00S01713.sxllr   +++|*
01852  M00S01714.sxllr   +++|*     *LLRQENQ* DELETES AN ENTRY FROM THE FREE SPACE CHAIN AND
01853  M00S01715.sxllr   +++|*     LINKS IT INTO THE *LLRQ* READY CHAIN.
01854  M00S01716.sxllr   +++|*     *LLRQENQ* IS CALLED ONLY IF THE *LLRQ* IS NOT FULL.
01855  M00S01717.sxllr   +++|*
01856  M00S01718.sxllr   +++|*     PROC LLRQENQ(ADDR)
01857  M00S01719.sxllr   +++|*
01858  M00S01720.sxllr   +++|*     EXIT       (ADDR) - ADDRESS OF ENTRY ADDED TO QUEUE.
01859  M00S01721.sxllr   +++|*
01860  M00S01722.sxllr   +++|*     MESSAGES   * EXEC ABNORMAL, LLRQENQ.*
01861  M00S01723.sxllr   +++|#
01862  M00S01724.sxllr   +++|
01863  M00S01725.sxllr   +++|      ITEM ADDR       U;             # ADDRESS OF *LLRQ* ENTRY #
01864  M00S01726.sxllr   +++|
01865  M00S01727.sxllr   +++|#
01866  M00S01728.sxllr   +++|****  PROC LLRQENQ - XREF LIST BEGIN.
01867  M00S01729.sxllr   +++|#
01868  M00S01730.sxllr   +++|
01869  M00S01731.sxllr   +++|      XREF
01870  M00S01732.sxllr   +++|        BEGIN
01871  M00S01733.sxllr   +++|        PROC ABORT;                  # ABORT #
01872  M00S01734.sxllr   +++|        PROC ADD$LNK;                # ADD ENTRY TO END OF CHAIN #
01873  M00S01735.sxllr   +++|        PROC DEL$LNK;                # DELETE ENTRY FROM CHAIN #
01874  M00S01736.sxllr   +++|        PROC MESSAGE;                # ISSUE MESSAGE #
01875  M00S01737.sxllr   +++|        END
01876  M00S01738.sxllr   +++|
01877  M00S01739.sxllr   +++|#
01878  M00S01740.sxllr   +++|****  PROC LLRQENQ - XREF LIST END.
01879  M00S01741.sxllr   +++|#
01880  M00S01742.sxllr   +++|
01881  M00S01743.sxllr   +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
01882  M00S01744.sxllr   +++|*CALL COMBFAS
01883  M00S01745.sxllr   +++|*CALL COMBCHN
01884  M00S01746.sxllr   +++|*CALL,COMBKDD
01885  M00S01747.sxllr   +++|*CALL COMBLRQ
01886  M00S01748.sxllr   +++|*CALL COMXMSC
01887  M00S01749.sxllr   +++|
01888  M00S01750.sxllr   +++|                                               CONTROL EJECT;
01889  M00S01751.sxllr   +++|
01890  M00S01752.sxllr   +++|#
01891  M00S01753.sxllr   +++|*     CHECK FOR NO FREE SPACE.
01892  M00S01754.sxllr   +++|#
01893  M00S01755.sxllr   +++|
01894  M00S01756.sxllr   +++|      ADDR = CHN$BOC[LCHN"LL$FRSPC"];
01895  M00S01757.sxllr   +++|      IF ADDR EQ 0                   # IF NO FREE ENTRIES #
01896  M00S01758.sxllr   +++|      THEN
01897  M00S01759.sxllr   +++|        BEGIN
01898  M00S01760.sxllr   +++|        FE$RTN[0] = "LLRQENQ.";
01899  M00S01761.sxllr   +++|        MESSAGE(FEMSG,UDFL1);
01900  M00S01762.sxllr   +++|        ABORT;
01901  M00S01763.sxllr   +++|        END
01902  M00S01764.sxllr   +++|
01903  M00S01765.sxllr   +++|      DEL$LNK(ADDR,LCHN"LL$FRSPC",0);  # DELETE ENTRY FROM FREE SPACE
01904  M00S01766.sxllr   +++|                                         CHAIN #
01905  M00S01767.sxllr   +++|      P<LLRQ> = ADDR;
01906  M00S01768.sxllr   +++|      P<KWORD> = LOC(LLR$KWORDS[0]); # PRESET K-DISPLAY WORDS #
01907  M00S01769.sxllr   +++|      KW$COMP[0] = TRUE;
01908  M00S01770.sxllr   +++|      ADD$LNK(ADDR,LCHN"LL$READY",0);  # ADD ENTRY TO READY CHAIN #
01909  M00S01771.sxllr   +++|      RETURN;
01910  M00S01772.sxllr   +++|
01911  M00S01773.sxllr   +++|      END  # LLRQENQ #
01912  M00S01774.sxllr   +++|
01913  M00S01775.sxllr   +++|    TERM
01914  M00S01776.sxllr   +++|PROC LLRQMTR;
01915  M00S01777.sxllr   +++|# TITLE LLRQMTR - LOW LEVEL REQUEST QUEUE MONITOR.                    #
01916  M00S01778.sxllr   +++|
01917  M00S01779.sxllr   +++|      BEGIN  # LLRQMTR #
01918  M00S01780.sxllr   +++|
01919  M00S01781.sxllr   +++|#
01920  M00S01782.sxllr   +++|**    LLRQMTR - LOW LEVEL REQUEST QUEUE MONITOR.
01921  M00S01783.sxllr   +++|*
01922  M00S01784.sxllr   +++|*     THE LOW LEVEL REQUEST QUEUE MONITOR CONTROLS THE ACTIVATION
01923  M00S01785.sxllr   +++|*     OF *LLRQ* PROCESSORS.  EACH *LLRQ* ENTRY ON THE READY CHAIN IS
01924  M00S01786.sxllr   +++|*     ACTIVATED BY CALLING THE APPROPRIATE PROCESSOR.
01925  M00S01787.sxllr   +++|*
01926  M00S01788.sxllr   +++|*     PROC LLRQMTR
01927  M00S01789.sxllr   +++|*
01928  M00S01790.sxllr   +++|*     EXIT       IF THE PROCESS STATE FIELD OF AN *LLRQ* ENTRY IS SET
01929  M00S01791.sxllr   +++|*                TO "COMPLETE" AFTER ITS PROCESSOR IS CALLED, THE ENTRY
01930  M00S01792.sxllr   +++|*                IS CLEARED AND LINKED INTO THE FREE SPACE CHAIN.
01931  M00S01793.sxllr   +++|*                OTHERWISE, THE PROCESSOR HAS SET UP SOME CONDITION
01932  M00S01794.sxllr   +++|*                THAT WILL EVENTUALLY CAUSE THE *LLRQ* ENTRY TO BE
01933  M00S01795.sxllr   +++|*                RELINKED INTO THE *LLRQ* READY CHAIN.
01934  M00S01796.sxllr   +++|#
01935  M00S01797.sxllr   +++|
01936  M00S01798.sxllr   +++|#
01937  M00S01799.sxllr   +++|****  PROC LLRQMTR - XREF LIST BEGIN.
01938  M00S01800.sxllr   +++|#
01939  M00S01801.sxllr   +++|
01940  M00S01802.sxllr   +++|      XREF
01941  M00S01803.sxllr   +++|        BEGIN
01942  M00S01804.sxllr   +++|        PROC ADD$LNK;                # ADD ENTRY TO END OF CHAIN #
01943  M00S01805.sxllr   +++|        PROC CPY$DS;                 # COPY DISK TO VOLUME #
01944  M00S01806.sxllr   +++|        PROC CPY$RS;                 # COPY RAW VOLUME #
01945  M00S01807.sxllr   +++|        PROC CPY$SD;                 # COPY VOLUME TO DISK #
01946  M00S01808.sxllr   +++|        PROC DEL$LNK;                # DELETE ENTRY FROM CHAIN #
01947  M00S01809.sxllr   +++|        PROC INIT$HW;                # INITIALIZE M860 HARDWARE #
01948  M00S01810.sxllr   +++|        PROC LD$CAR;                 # LOAD CARTRIDGE #
01949  M00S01811.sxllr   +++|        PROC SSDRVR;                 # SS DRIVER #
01950  M00S01812.sxllr   +++|        PROC UNL$CAR;                # UNLOAD CARTRIDGE #
01951  M00S01813.sxllr   +++|        PROC WT$LAB;                 # WRITE LABEL #
01952  M00S01814.sxllr   +++|        PROC ZFILL;                  # ZERO FILL BUFFER #
01953  M00S01815.sxllr   +++|        END
01954  M00S01816.sxllr   +++|
01955  M00S01817.sxllr   +++|#
01956  M00S01818.sxllr   +++|****  PROC LLRQMTR - XREF LIST END.
01957  M00S01819.sxllr   +++|#
01958  M00S01820.sxllr   +++|
01959  M00S01821.sxllr   +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
01960  M00S01822.sxllr   +++|*CALL COMBFAS
01961  M00S01823.sxllr   +++|*CALL COMBCHN
01962  M00S01824.sxllr   +++|*CALL COMBCPR
01963  M00S01825.sxllr   +++|*CALL COMBLRQ
01964  M00S01826.sxllr   +++|*CALL COMXMSC
01965  M00S01827.sxllr   +++|
01966  M00S01828.sxllr   +++|      ITEM LLRENT     U;             # *LLRQ* ENTRY ADDRESS #
01967  M00S01829.sxllr   +++|
01968  M00S01830.sxllr   +++|      SWITCH LLPROC:REQTYP4          # *LLRQ* PROCESSOR CALLS #
01969  M00S01831.sxllr   +++|                LL1:LOAD$CART,       # #
01970  M00S01832.sxllr   +++|                LL2:UNLD$CART,       # #
01971  M00S01833.sxllr   +++|                LL3:WRT$LAB,         # #
01972  M00S01834.sxllr   +++|                LL4:CPY$AD,          # #
01973  M00S01835.sxllr   +++|                LL5:CPY$DA,          # #
01974  M00S01836.sxllr   +++|                LL6:CP$RAW$AU,       # #
01975  M00S01837.sxllr   +++|                LL7:INITHW,          # #
01976  M00S01838.sxllr   +++|
01977  M00S01839.sxllr   +++|        ENDLLP:LSTREQTYP4;           # END OF *LLRQ* PROCESSOR CALLS #
01978  M00S01840.sxllr   +++|
01979  M00S01841.sxllr   +++|                                               CONTROL EJECT;
01980  M00S01842.sxllr   +++|
01981  M00S01843.sxllr   +++|#
01982  M00S01844.sxllr   +++|*     *LLRQMTR* IS CALLED WHEN THERE IS WORK FOR *SSDRVR* TO DO OR
01983  M00S01845.sxllr   +++|*     WHEN THERE ARE ENTRIES ON THE *LLRQ* READY CHAIN TO BE PROCESSED.
01984  M00S01846.sxllr   +++|*     PROCESSING OF ENTRIES ON THE *LLRQ* READY CHAIN CAN CREATE WORK
01985  M00S01847.sxllr   +++|*     FOR *SSDRVR*, AND EXECUTION OF *SSDRVR* CAN PUT ENTRIES BACK
01986  M00S01848.sxllr   +++|*     ON THE *LLRQ* READY CHAIN.
01987  M00S01849.sxllr   +++|#
01988  M00S01850.sxllr   +++|
01989  M00S01851.sxllr   +++|      IF CHN$BOC[LCHN"LL$READY"] EQ 0
01990  M00S01852.sxllr   +++|      THEN                           # IF READY CHAIN IS EMPTY #
01991  M00S01853.sxllr   +++|        BEGIN
01992  M00S01854.sxllr   +++|        SSDRVR;
01993  M00S01855.sxllr   +++|        END
01994  M00S01856.sxllr   +++|
01995  M00S01857.sxllr   +++|#
01996  M00S01858.sxllr   +++|*     TRAVERSE THE *LLRQ* READY CHAIN.
01997  M00S01859.sxllr   +++|#
01998  M00S01860.sxllr   +++|
01999  M00S01861.sxllr   +++|      REPEAT WHILE CHN$BOC[LCHN"LL$READY"] NQ 0
02000  M00S01862.sxllr   +++|      DO
02001  M00S01863.sxllr   +++|        BEGIN  # PROCESS READY *LLRQ* ENTRIES #
02002  M00S01864.sxllr   +++|        LLRENT = CHN$BOC[LCHN"LL$READY"];
02003  M00S01865.sxllr   +++|        DEL$LNK(LLRENT,LCHN"LL$READY",0);
02004  M00S01866.sxllr   +++|        P<LLRQ> = LLRENT;
02005  M00S01867.sxllr   +++|
02006  M00S01868.sxllr   +++|#
02007  M00S01869.sxllr   +++|*     SIMULATED CASE STATEMENT FOR *LLRQ* PROCESSOR CALLS.
02008  M00S01870.sxllr   +++|#
02009  M00S01871.sxllr   +++|
02010  M00S01872.sxllr   +++|        GOTO LLPROC[LLR$PRCNME[0]];
02011  M00S01873.sxllr   +++|
02012  M00S01874.sxllr   +++|LL1:                                 # LOAD CARTRIDGE #
02013  M00S01875.sxllr   +++|        LD$CAR(LLRENT);
02014  M00S01876.sxllr   +++|        GOTO ENDLLP;
02015  M00S01877.sxllr   +++|
02016  M00S01878.sxllr   +++|LL2:                                 # UNLOAD CARTRIDGE #
02017  M00S01879.sxllr   +++|        UNL$CAR(LLRENT);
02018  M00S01880.sxllr   +++|        GOTO ENDLLP;
02019  M00S01881.sxllr   +++|
02020  M00S01882.sxllr   +++|LL3:                                 # WRITE LABEL #
02021  M00S01883.sxllr   +++|        WT$LAB(LLRENT);
02022  M00S01884.sxllr   +++|        GOTO ENDLLP;
02023  M00S01885.sxllr   +++|
02024  M00S01886.sxllr   +++|LL4:                                 # COPY VOLUME TO DISK #
02025  M00S01887.sxllr   +++|        CPY$SD(LLRENT);
02026  M00S01888.sxllr   +++|        GOTO ENDLLP;
02027  M00S01889.sxllr   +++|
02028  M00S01890.sxllr   +++|LL5:                                 # COPY DISK TO VOLUME #
02029  M00S01891.sxllr   +++|        CPY$DS(LLRENT);
02030  M00S01892.sxllr   +++|        GOTO ENDLLP;
02031  M00S01893.sxllr   +++|
02032  M00S01894.sxllr   +++|LL6:                                 # COPY RAW VOLUME #
02033  M00S01895.sxllr   +++|        CPY$RS(LLRENT);
02034  M00S01896.sxllr   +++|        GOTO ENDLLP;
02035  M00S01897.sxllr   +++|
02036  M00S01898.sxllr   +++|LL7:                                 # INITIALIZE M860 HARDWARE #
02037  M00S01899.sxllr   +++|        INIT$HW(LLRENT);
02038  M00S01900.sxllr   +++|        GOTO ENDLLP;
02039  M00S01901.sxllr   +++|
02040  M00S01902.sxllr   +++|
02041  M00S01903.sxllr   +++|
02042  M00S01904.sxllr   +++|ENDLLP:                              # CONTINUE #
02043  M00S01905.sxllr   +++|
02044  M00S01906.sxllr   +++|#
02045  M00S01907.sxllr   +++|*     END SIMULATED CASE STATEMENT FOR *LLRQ* PROCESSOR CALLS.
02046  M00S01908.sxllr   +++|#
02047  M00S01909.sxllr   +++|
02048  M00S01910.sxllr   +++|#
02049  M00S01911.sxllr   +++|*     IF A PROCESSOR CREATED WORK FOR THE DRIVER, CALL *SSDRVR*.
02050  M00S01912.sxllr   +++|#
02051  M00S01913.sxllr   +++|
02052  M00S01914.sxllr   +++|        IF CHN$BOC[LCHN"DRQUEUE"] NQ 0
02053  M00S01915.sxllr   +++|        THEN                         # IF DRIVER QUEUE NOT EMPTY #
02054  M00S01916.sxllr   +++|          BEGIN
02055  M00S01917.sxllr   +++|          SSDRVR;
02056  M00S01918.sxllr   +++|          END
02057  M00S01919.sxllr   +++|
02058  M00S01920.sxllr   +++|#
02059  M00S01921.sxllr   +++|*     ADD *LLRQ* ENTRY TO THE FREE SPACE CHAIN IF PROCESS IS COMPLETE.
02060  M00S01922.sxllr   +++|#
02061  M00S01923.sxllr   +++|
02062  M00S01924.sxllr   +++|        P<LLRQ> = LLRENT;
02063  M00S01925.sxllr   +++|        IF LLR$PRCST[0] EQ PROCST"COMPLETE"
02064  M00S01926.sxllr   +++|        THEN                         # IF PROCESS IS COMPLETE #
02065  M00S01927.sxllr   +++|          BEGIN
02066  M00S01928.sxllr   +++|          ZFILL(LLRQ,LLRQENTL);        # CLEAR *LLRQ* ENTRY #
02067  M00S01929.sxllr   +++|          ADD$LNK(LLRENT,LCHN"LL$FRSPC",0);
02068  M00S01930.sxllr   +++|          END
02069  M00S01931.sxllr   +++|
02070  M00S01932.sxllr   +++|        END  # PROCESS READY *LLRQ* ENTRIES #
02071  M00S01933.sxllr   +++|
02072  M00S01934.sxllr   +++|      RETURN;
02073  M00S01935.sxllr   +++|      END  # LLRQMTR #
02074  M00S01936.sxllr   +++|
02075  M00S01937.sxllr   +++|    TERM
02076  M00S01938.sxllr   +++|PROC UNL$CAR((LLRENT));
02077  M00S01939.sxllr   +++|# TITLE UNL$CAR - RETURN CARTRIDGE TO MATRIX.                         #
02078  M00S01940.sxllr   +++|
02079  M00S01941.sxllr   +++|      BEGIN  # UNL$CAR #
02080  M00S01942.sxllr   +++|
02081  M00S01943.sxllr   +++|#
02082  M00S01944.sxllr   +++|**    UNL$CAR - RETURN CARTRIDGE TO MATRIX.
02083  M00S01945.sxllr   +++|*
02084  M00S01946.sxllr   +++|*     *UNL$CAR* RETURNS THE CARTRIDGE FROM THE DRD TO THE
02085  M00S01947.sxllr   +++|*     DESIGNATED MATRIX POSITION.  IF THE CARTRIDGE IS ASSIGNED TO THE
02086  M00S01948.sxllr   +++|*     INPUT TRAY ON ENTRY, THE ASSIGNMENT WILL BE CHANGED TO THE
02087  M00S01949.sxllr   +++|*     OUTPUT TRAY PRIOR TO DISMOUNTING THE CARTRIDGE.
02088  M00S01950.sxllr   +++|*
02089  M00S01951.sxllr   +++|*     PROC UNL$CAR((LLRENT))
02090  M00S01952.sxllr   +++|*
02091  M00S01953.sxllr   +++|*     ENTRY      (LLRENT) - ADDRESS OF *LLRQ* ENTRY FOR THE REQUEST
02092  M00S01954.sxllr   +++|*                           CONTAINING THE SMA-ID AND THE YZ
02093  M00S01955.sxllr   +++|*                           COORDINATES.
02094  M00S01956.sxllr   +++|*
02095  M00S01957.sxllr   +++|*     EXIT       THE PROCESS STATE FIELD IN THE *LLRQ* ENTRY HAS BEEN
02096  M00S01958.sxllr   +++|*                ADVANCED TO INDICATE WHERE PROCESSING OF THIS REQUEST
02097  M00S01959.sxllr   +++|*                LEFT OFF, AND THUS WHAT TO DO NEXT TO ADVANCE THE
02098  M00S01960.sxllr   +++|*                REQUEST.
02099  M00S01961.sxllr   +++|*
02100  M00S01962.sxllr   +++|*                WHEN THE PROCESS IS COMPLETED AN ERROR RESPONSE CODE
02101  M00S01963.sxllr   +++|*                IS RETURNED VIA *LTC$RQR[LTCENTRY]* FOR EXTERNAL
02102  M00S01964.sxllr   +++|*                REQUESTORS OR *HLR$RESP[0]* FOR INTERNAL REQUESTORS.
02103  M00S01965.sxllr   +++|*                RESPONSE CODE (VALUES ARE DEFINED IN *COMBCPR*).
02104  M00S01966.sxllr   +++|*                  = RESPTYP4"OK4".
02105  M00S01967.sxllr   +++|*
02106  M00S01968.sxllr   +++|*                THE CARTRIDGE LOAD, PASS, AND ERROR COUNTS ARE
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/sxllr.txt ยท Last modified: by 127.0.0.1