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