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