cdc:nos2.source:opl.opl871:deck:exdrvr
Deck EXDRVR
7 Modifications
Listing Sections
- Deck EXDRVR Start
- Deck EXDRVR Part 1 (Line 1628)
- Deck EXDRVR Part 2 (Line 2758)
- Deck EXDRVR Part 3 (Line 4749)
Source
Seq # *Modification Id* Act ----------------------------+ 00001 M01S00001.exdrvr +++|PROC ACQCART; 00002 M01S00002.exdrvr +++|# TITLE ACQCART - ACQUIRE CARTRIDGE. # 00003 M01S00003.exdrvr +++| 00004 M01S00004.exdrvr +++| BEGIN # ACQCART # 00005 M01S00005.exdrvr +++| 00006 M01S00006.exdrvr +++|# 00007 M01S00007.exdrvr +++|** ACQCART - ACQUIRE CARTRIDGE. 00008 M01S00008.exdrvr +++|* 00009 M01S00009.exdrvr +++|* *ACQCART* PROCESSES *DRQUEUE* REQUESTS TO LOAD CARTRIDGES 00010 M01S00010.exdrvr +++|* AND READ CARTRIDGE LABELS. 00011 M01S00011.exdrvr +++|* 00012 M01S00012.exdrvr +++|* PROC ACQCART 00013 M01S00013.exdrvr +++|* 00014 M01S00014.exdrvr +++|* ENTRY P<LLRQ> = *DRQUEUE* ENTRY ADDRESS. 00015 M01S00015.exdrvr +++|* 00016 M01S00016.exdrvr +++|* EXIT THE *DRQUEUE* ENTRY REQUEST STATE FIELD HAS BEEN 00017 M01S00017.exdrvr +++|* UPDATED TO INDICATE WHERE SUBSEQUENT PROCESSING OF 00018 M01S00018.exdrvr +++|* THIS REQUEST IS TO CONTINUE. 00019 M01S00019.exdrvr +++|* 00020 M01S00020.exdrvr +++|* MESSAGES *EXEC ABNORMAL, ACQCART2.* - UDT MESSAGE BUFFER 00021 M01S00021.exdrvr +++|* STILL IN USE. 00022 M01S00022.exdrvr +++|* 00023 M01S00023.exdrvr +++|* A K-DISPLAY MESSAGE IS ISSUED IF THE INPUT TRAY OR 00024 M01S00024.exdrvr +++|* MATRIX CELL IS EMPTY. 00025 M01S00025.exdrvr +++|* 00026 M01S00026.exdrvr +++|* NOTES THIS IS A PSEUDO-REENTRANT PROCEDURE. 00027 M01S00027.exdrvr +++|# 00028 M01S00028.exdrvr +++| 00029 M01S00029.exdrvr +++| 00030 M01S00030.exdrvr +++|# 00031 M01S00031.exdrvr +++|**** PROC ACQCART - XREF LIST BEGIN. 00032 M01S00032.exdrvr +++|# 00033 M01S00033.exdrvr +++| 00034 M01S00034.exdrvr +++| XREF 00035 M01S00035.exdrvr +++| BEGIN 00036 M01S00036.exdrvr +++| PROC ABORT; # ABORT # 00037 M01S00037.exdrvr +++| PROC KREQ; # SEND K-DISPLAY REQUEST # 00038 M01S00038.exdrvr +++| PROC MESSAGE; # ISSUE DAYFILE MESSAGE # 00039 M01S00039.exdrvr +++| PROC SENDMSG; # SEND M860 MESSAGE # 00040 M01S00040.exdrvr +++| PROC ZFILL; # ZERO-FILL BUFFER # 00041 M01S00041.exdrvr +++| END 00042 M01S00042.exdrvr +++| 00043 M01S00043.exdrvr +++|# 00044 M01S00044.exdrvr +++|**** PROC ACQCART - XREF LIST END. 00045 M01S00045.exdrvr +++|# 00046 M01S00046.exdrvr +++| 00047 M01S00047.exdrvr +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 00048 M01S00048.exdrvr +++|*CALL,COMBFAS 00049 M01S00049.exdrvr +++|*CALL,COMBCPR 00050 M01S00050.exdrvr +++|*CALL,COMBFET 00051 M01S00051.exdrvr +++|*CALL,COMBHFC 00052 M01S00052.exdrvr +++|*CALL,COMBKDD 00053 M01S00053.exdrvr +++|*CALL,COMBLBL 00054 M01S00054.exdrvr +++|*CALL,COMBLRQ 00055 M01S00055.exdrvr +++|*CALL,COMBTDM 00056 M01S00056.exdrvr +++|*CALL,COMBUCR 00057 M01S00057.exdrvr +++|*CALL,COMBUDT 00058 M01S00058.exdrvr +++|*CALL,COMXCTF 00059 M01S00059.exdrvr +++|*CALL,COMXHLR 00060 M01S00060.exdrvr +++|*CALL,COMXMSC 00061 M01S00061.exdrvr +++| 00062 M01S00062.exdrvr +++| ITEM DRDFULL B; # NEXT-DRD FULL FLAG # 00063 M01S00063.exdrvr +++| ITEM DRDON B; # NEXT-DRD ON FLAG # 00064 M01S00064.exdrvr +++| ITEM I I; # INDEX # 00065 M01S00065.exdrvr +++| ITEM OTHERFULL B; # OTHER-DRD FULL FLAG # 00066 M01S00066.exdrvr +++| ITEM OTHERON B; # OTHER-DRD ON FLAG # 00067 M01S00067.exdrvr +++| ITEM TEMPALL B; # TEMP ALLOCATION FLAG # 00068 M01S00068.exdrvr +++| ITEM TEMPCSN0 U; # FIRST 4 BYTES OF CSN # 00069 M01S00069.exdrvr +++| ITEM TEMPCSN1 U; # NEXT 6 BYTES OF CSN # 00070 M01S00070.exdrvr +++| ITEM TEMPCSN2 U; # LAST 2 BYTES OF CSN # 00071 M01S00071.exdrvr +++| 00072 M01S00072.exdrvr +++| SWITCH ACQLBL:PROCST # DRIVER REQUEST STATE # 00073 M01S00073.exdrvr +++| ACQINIT:INITIAL, # INITIAL STATE # 00074 M01S00074.exdrvr +++| ACQLOAD:CONT1, # CONTINUATION 1 # 00075 M01S00075.exdrvr +++| ACQREAD:CONT2; # CONTINUATION 2 # 00076 M01S00076.exdrvr +++| CONTROL EJECT; 00077 M01S00077.exdrvr +++| 00078 M01S00078.exdrvr +++| GOTO ACQLBL[LLR$RS[0]]; 00079 M01S00079.exdrvr +++| 00080 M01S00080.exdrvr +++|# 00081 M01S00081.exdrvr +++|* INITIAL DRIVER REQUEST STATE. 00082 M01S00082.exdrvr +++|# 00083 M01S00083.exdrvr +++| 00084 M01S00084.exdrvr +++|ACQINIT: 00085 M01S00085.exdrvr +++| SLOWFOR I = 1 STEP 1 WHILE (LLR$SMO[0] EQ 0)AND(I LQ MAXSMUNIT) 00086 M01S00086.exdrvr +++| DO # LOCATE SM ORDINAL FROM SM ID # 00087 M01S00087.exdrvr +++| BEGIN # LOCATE # 00088 M01S00088.exdrvr +++| IF LLR$SMA[0] EQ SM$ID[I] ## 00089 M01S00089.exdrvr +++| AND SM$EXIST[I] 00090 M01S00090.exdrvr +++| THEN # SM ORDINAL FOUND # 00091 M01S00091.exdrvr +++| BEGIN # SET ORD # 00092 M01S00092.exdrvr +++| LLR$SMO[0] = I; 00093 M01S00093.exdrvr +++| END # SET ORD # 00094 M01S00094.exdrvr +++| 00095 M01S00095.exdrvr +++| END # LOCATE # 00096 M01S00096.exdrvr +++| 00097 M01S00097.exdrvr +++|# 00098 M01S00098.exdrvr +++|* ALLOCATE DRD IN PREPARATION FOR LOAD. 00099 M01S00099.exdrvr +++|# 00100 M01S00100.exdrvr +++| 00101 M01S00101.exdrvr +++| IF LLR$SMO[0] EQ 0 # SM ORDINAL NOT FOUND # 00102 M01S00102.exdrvr +++| OR NOT SM$ON[LLR$SMO[0]] # SM OFF # 00103 M01S00103.exdrvr +++| THEN # LOAD NOT POSSIBLE # 00104 M01S00104.exdrvr +++| BEGIN # EXIT # 00105 M01S00105.exdrvr +++| DRVRACTIVE = TRUE; 00106 M01S00106.exdrvr +++| LLR$DR[0] = RESPTYP4"SMA$OFF"; 00107 M01S00107.exdrvr +++| LLR$RS[0] = PROCST"COMPLETE"; 00108 M01S00108.exdrvr +++| RETURN; 00109 M01S00109.exdrvr +++| END # EXIT # 00110 M01S00110.exdrvr +++| 00111 M01S00111.exdrvr +++| IF SM$SCCU[LLR$SMO[0]] # PROCESSING SERVICE CELLS ONLY # 00112 M01S00112.exdrvr +++| AND LLR$PRCNME[0] NQ REQTYP4"INITHW" # NOT SRV CELL LOAD # 00113 M01S00113.exdrvr +++| THEN # LOAD AFTER SRV CELLS PROCESSED # 00114 M01S00114.exdrvr +++| BEGIN # WAIT # 00115 M01S00115.exdrvr +++| RETURN; 00116 M01S00116.exdrvr +++| END # WAIT # 00117 M01S00117.exdrvr +++| 00118 M01S00118.exdrvr +++| DRDON = D1$ON[LLR$SMO[0]] ## 00119 M01S00119.exdrvr +++| AND (NOT D1$ON$ACK[LLR$SMO[0]]) ## 00120 M01S00120.exdrvr +++| AND (D1$DONE[LLR$SMO[0]] ## 00121 M01S00121.exdrvr +++| OR SM$DONE[LLR$SMO[0]] ## 00122 M01S00122.exdrvr +++| OR LLR$PRCNME[0] NQ REQTYP4"INITHW"); 00123 M01S00123.exdrvr +++| 00124 M01S00124.exdrvr +++| OTHERON = D0$ON[LLR$SMO[0]] ## 00125 M01S00125.exdrvr +++| AND (NOT D0$ON$ACK[LLR$SMO[0]]) ## 00126 M01S00126.exdrvr +++| AND (D0$DONE[LLR$SMO[0]] ## 00127 M01S00127.exdrvr +++| OR SM$DONE[LLR$SMO[0]] ## 00128 M01S00128.exdrvr +++| OR LLR$PRCNME[0] NQ REQTYP4"INITHW"); 00129 M01S00129.exdrvr +++| 00130 M01S00130.exdrvr +++| DRDFULL = D1$FULL[LLR$SMO[0]]; 00131 M01S00131.exdrvr +++| OTHERFULL = D0$FULL[LLR$SMO[0]]; 00132 M01S00132.exdrvr +++| IF SM$TOPDRD[LLR$SMO[0]] 00133 M01S00133.exdrvr +++| THEN # UPPER DRD CHOSEN # 00134 M01S00134.exdrvr +++| BEGIN # RESET # 00135 M01S00135.exdrvr +++| TEMPALL = DRDON; 00136 M01S00136.exdrvr +++| DRDON = OTHERON; 00137 M01S00137.exdrvr +++| OTHERON = TEMPALL; 00138 M01S00138.exdrvr +++| DRDFULL = D0$FULL[LLR$SMO[0]]; 00139 M01S00139.exdrvr +++| OTHERFULL = D1$FULL[LLR$SMO[0]]; 00140 M01S00140.exdrvr +++| END # RESET # 00141 M01S00141.exdrvr +++| 00142 M01S00142.exdrvr +++| IF DRDFULL OR NOT DRDON 00143 M01S00143.exdrvr +++| THEN # CHOSEN DRD NOT AVAILABLE # 00144 M01S00144.exdrvr +++| BEGIN # CHECK OTHER DRD # 00145 M01S00145.exdrvr +++| IF NOT OTHERON 00146 M01S00146.exdrvr +++| THEN # OTHER DRD OFF # 00147 M01S00147.exdrvr +++| BEGIN # RECHECK # 00148 M01S00148.exdrvr +++| IF NOT DRDON 00149 M01S00149.exdrvr +++| THEN # BOTH DRD-S OFF # 00150 M01S00150.exdrvr +++| BEGIN # OFF # 00151 M01S00151.exdrvr +++| DRVRACTIVE = TRUE; 00152 M01S00152.exdrvr +++| LLR$DR[0] = RESPTYP4"SMA$OFF"; # NO ACCESS # 00153 M01S00153.exdrvr +++| LLR$RS[0] = PROCST"COMPLETE"; 00154 M01S00154.exdrvr +++| END # OFF # 00155 M01S00155.exdrvr +++| 00156 M01S00156.exdrvr +++| RETURN; # CHOSEN DRD IS FULL # 00157 M01S00157.exdrvr +++| END # RECHECK # 00158 M01S00158.exdrvr +++| 00159 M01S00159.exdrvr +++| IF OTHERFULL 00160 M01S00160.exdrvr +++| THEN # OTHER DRD IS FULL # 00161 M01S00161.exdrvr +++| BEGIN # WAIT # 00162 M01S00162.exdrvr +++| RETURN; # AT LEAST ONE DRD IS FULL # 00163 M01S00163.exdrvr +++| END # WAIT # 00164 M01S00164.exdrvr +++| 00165 M01S00165.exdrvr +++| SM$TOPDRD[LLR$SMO[0]] = NOT SM$TOPDRD[LLR$SMO[0]]; 00166 M01S00166.exdrvr +++| # USE OTHER DRD # 00167 M01S00167.exdrvr +++| END # CHECK OTHER DRD # 00168 M01S00168.exdrvr +++| 00169 M01S00169.exdrvr +++| IF SM$TOPDRD[LLR$SMO[0]] 00170 M01S00170.exdrvr +++| THEN # UPPER DRD CHOSEN # 00171 M01S00171.exdrvr +++| BEGIN # UPPER # 00172 M01S00172.exdrvr +++| LLR$DRD[0] = 0; 00173 M01S00173.exdrvr +++| D0$FULL[LLR$SMO[0]] = TRUE; 00174 M01S00174.exdrvr +++| D0$LLADR[LLR$SMO[0]] = P<LLRQ>; 00175 M01S00175.exdrvr +++| LLR$MBH[0] = LOC(D0$MSG[LLR$SMO[0]]) - 1; 00176 M01S00176.exdrvr +++| END # UPPER # 00177 M01S00177.exdrvr +++| 00178 M01S00178.exdrvr +++| ELSE # LOWER DRD CHOSEN # 00179 M01S00179.exdrvr +++| BEGIN # LOWER # 00180 M01S00180.exdrvr +++| LLR$DRD[0] = 1; 00181 M01S00181.exdrvr +++| D1$FULL[LLR$SMO[0]] = TRUE; 00182 M01S00182.exdrvr +++| D1$LLADR[LLR$SMO[0]] = P<LLRQ>; 00183 M01S00183.exdrvr +++| LLR$MBH[0] = LOC(D1$MSG[LLR$SMO[0]]) - 1; 00184 M01S00184.exdrvr +++| END # LOWER # 00185 M01S00185.exdrvr +++| 00186 M01S00186.exdrvr +++| P<MBFHDR> = LLR$MBH[0]; 00187 M01S00187.exdrvr +++| IF MBF$WORD[0] NQ 0 00188 M01S00188.exdrvr +++| THEN # LAST MESSAGE NOT PROCESSED # 00189 M01S00189.exdrvr +++| BEGIN # ABORT # 00190 M01S00190.exdrvr +++| FE$RTN[0] = "ACQCART2."; 00191 M01S00191.exdrvr +++| GOTO ACQCART2; 00192 M01S00192.exdrvr +++| END # ABORT # 00193 M01S00193.exdrvr +++| 00194 M01S00194.exdrvr +++| P<UDT$MSG> = P<MBFHDR> + 1; 00195 M01S00195.exdrvr +++| MS$MSG[0] = HFC$ACCR; # SET *ACQUIRE* FUNCTION # 00196 M01S00196.exdrvr +++| IF LLR$Y[0] EQ SM$ENT$TY # LOAD FROM ENTRY TRAY # 00197 M01S00197.exdrvr +++| AND LLR$Z[0] EQ SM$TY$Z 00198 M01S00198.exdrvr +++| THEN # RESET TO *ENTER* FUNCTION # 00199 M01S00199.exdrvr +++| BEGIN # RESET # 00200 M01S00200.exdrvr +++| MS$MSG[0] = HFC$ENCRDR; 00201 M01S00201.exdrvr +++| END # RESET # 00202 M01S00202.exdrvr +++| 00203 M01S00203.exdrvr +++| MBF$SAVE[0] = SAVEPART; 00204 M01S00204.exdrvr +++| LLR$RS[0] = PROCST"CONT1"; # SET NEXT REQUEST STATE # 00205 M01S00205.exdrvr +++| 00206 M01S00206.exdrvr +++|# 00207 M01S00207.exdrvr +++|* ISSUE M860 MESSAGE TO LOAD CARTRIDGE. 00208 M01S00208.exdrvr +++|# 00209 M01S00209.exdrvr +++| 00210 M01S00210.exdrvr +++|ACQLOAD: 00211 M01S00211.exdrvr +++| P<MBFHDR> = LLR$MBH[0]; 00212 M01S00212.exdrvr +++| SENDMSG; # SEND M860 MESSAGE # 00213 M01S00213.exdrvr +++| IF MBF$SBADDR[0] EQ 0 ## 00214 M01S00214.exdrvr +++| AND LLR$DR[0] EQ RESPTYP4"OK4" # HARDWARE GOOD # 00215 M01S00215.exdrvr +++| THEN # RESPONSE NOT YET RECEIVED # 00216 M01S00216.exdrvr +++| BEGIN # RETRY # 00217 M01S00217.exdrvr +++| RETURN; 00218 M01S00218.exdrvr +++| END # RETRY # 00219 M01S00219.exdrvr +++| 00220 M01S00220.exdrvr +++| SM$ACCBUSY[LLR$SMO[0]] = FALSE;# SM ARM NOT IN USE # 00221 M01S00221.exdrvr +++| IF (MS$MSG[0] EQ HFC$ACCR # *ACQUIRE* ERROR #
Line S00222 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | msea023 |
Seq # *Modification Id* Act ----------------------------+ 00222 M02S00222.msea023 ---| AND MS$RETCODE[0] NQ HRC$CSNMIS) ## 00223 M01S00001.msea023 +++| AND MS$RETCODE[0] NQ 0 ## 00224 M01S00002.msea023 +++| AND MS$RETCODE[0] NQ HRC$CSNMIS) # HANDLE WHEN READING LABEL # 00225 M01S00223.exdrvr +++| OR (MS$MSG[0] EQ HFC$ENCRDR # *ENTER* ERROR # 00226 M01S00224.exdrvr +++| AND MS$RETCODE[0] NQ 0) ## 00227 M01S00225.exdrvr +++| OR LLR$DR[0] EQ RESPTYP4"M86$HDW$PR" 00228 M01S00226.exdrvr +++| THEN # UNEXPECTED RESPONSE # 00229 M01S00227.exdrvr +++| BEGIN # NO LOAD # 00230 M01S00228.exdrvr +++| IF LLR$DRFUL[0] # DEVICE DRIVER ERROR # 00231 M01S00229.exdrvr +++| THEN # TURN OFF DRD # 00232 M01S00230.exdrvr +++| BEGIN # OFF # 00233 M01S00231.exdrvr +++| LLR$LDERR[0] = TRUE; 00234 M01S00232.exdrvr +++| GOTO ACQCART1; 00235 M01S00233.exdrvr +++| END # OFF # 00236 M01S00234.exdrvr +++| 00237 M01S00235.exdrvr +++| IF MS$RETCODE[0] EQ 0 ## 00238 M01S00236.exdrvr +++| AND MS$MSG[0] EQ HFC$ACCR 00239 M01S00237.exdrvr +++| THEN # HARDWARE ERROR # 00240 M01S00238.exdrvr +++| BEGIN # M860 # 00241 M01S00239.exdrvr +++| LLR$DR[0] = RESPTYP4"M86$HDW$PR"; 00242 M01S00240.exdrvr +++| END # M860 # 00243 M01S00241.exdrvr +++| 00244 M01S00242.exdrvr +++| IF MS$RETCODE[0] EQ HRC$CELEMP ## 00245 M01S00243.exdrvr +++| OR MS$RETCODE[0] EQ HRC$TRAYPR 00246 M01S00244.exdrvr +++| THEN # CELL EMPTY # 00247 M01S00245.exdrvr +++| BEGIN # EXIT # 00248 M01S00246.exdrvr +++| LLR$DR[0] = RESPTYP4"CELL$EMP"; 00249 M01S00247.exdrvr +++| 00250 M01S00248.exdrvr +++|# 00251 M01S00249.exdrvr +++|* SEND K-DISPLAY MESSAGE TO OPERATOR INDICATING EMPTY CELL. 00252 M01S00250.exdrvr +++|# 00253 M01S00251.exdrvr +++| 00254 M01S00252.exdrvr +++| IF LLR$PRCNME[0] NQ REQTYP4"INITHW" # NOT SRV CELL LOAD # 00255 M01S00253.exdrvr +++| AND NOT (MS$MSG[0] EQ HFC$ACCR # NOT UCP LOAD TO MATRIX # 00256 M01S00254.exdrvr +++| AND LLR$RQI[0] NQ REQNAME"RQIINT") 00257 M01S00255.exdrvr +++| THEN # SEND K-DISPLAY MESSAGE # 00258 M01S00256.exdrvr +++| BEGIN # K # 00259 M01S00257.exdrvr +++| P<KWORD> = LOC(LLR$KWORDS[0]); 00260 M01S00258.exdrvr +++| KW$WORD[0] = 0; 00261 M01S00259.exdrvr +++| KW$LINE1[0] = KM"KM2"; 00262 M01S00260.exdrvr +++| KW$LINE2[0] = KM"KM20"; # ASSUME INPUT TRAY EMPTY # 00263 M01S00261.exdrvr +++| IF MS$MSG[0] EQ HFC$ACCR 00264 M01S00262.exdrvr +++| THEN # MATRIX CELL WAS EMPTY # 00265 M01S00263.exdrvr +++| BEGIN # RESET # 00266 M01S00264.exdrvr +++| KW$LINE2[0] = KM"KM7"; 00267 M01S00265.exdrvr +++| KW$DF[0] = TRUE; # SEND TO JOB DAYFILE # 00268 M01S00266.exdrvr +++| KW$IC[0] = TRUE; # SET IMMEDIATE COMPLETION # 00269 M01S00267.exdrvr +++| END # RESET # 00270 M01S00268.exdrvr +++| 00271 M01S00269.exdrvr +++| KW$RPGO[0] = TRUE; # ALLOW GO RESPONSE # 00272 M01S00270.exdrvr +++| KP$EQ = UD$ESTO[LLR$CU[0]]; # PRESET MESSAGE PARAMETERS # 00273 M01S00271.exdrvr +++| P<MWBTMP> = LOC(UD$CAMF[LLR$CU[0]]); 00274 M01S00272.exdrvr +++| P<FETMWB> = MWB$ADDR[LLR$CIF[0]]; 00275 M01S00273.exdrvr +++| P<FETMRA> = P<FETMWB> - 1; 00276 M01S00274.exdrvr +++| P<FETMRB> = FRA$MRBADR[0]; 00277 M01S00275.exdrvr +++| KP$CN = FMR$CHAN[0]; 00278 M01S00276.exdrvr +++| KP$DT = SM$ID[LLR$SMO[0]]; 00279 M01S00277.exdrvr +++| KP$YA = LLR$Y[0]; # SET EMPTY CELL # 00280 M01S00278.exdrvr +++| KP$ZA = LLR$Z[0]; 00281 M01S00279.exdrvr +++| KREQ(LOC(KWORD),KLINK); # SEND K-DISPLAY REQUEST # 00282 M01S00280.exdrvr +++| END # K # 00283 M01S00281.exdrvr +++| 00284 M01S00282.exdrvr +++| END # EXIT # 00285 M01S00283.exdrvr +++| 00286 M01S00284.exdrvr +++| IF LLR$DRD[0] EQ 0 00287 M01S00285.exdrvr +++| THEN # UPPER DRD EMPTY # 00288 M01S00286.exdrvr +++| BEGIN # UPPER # 00289 M01S00287.exdrvr +++| D0$FULL[LLR$SMO[0]] = FALSE; 00290 M01S00288.exdrvr +++| END # UPPER # 00291 M01S00289.exdrvr +++| 00292 M01S00290.exdrvr +++| ELSE # LOWER DRD EMPTY # 00293 M01S00291.exdrvr +++| BEGIN # LOWER # 00294 M01S00292.exdrvr +++| D1$FULL[LLR$SMO[0]] = FALSE; 00295 M01S00293.exdrvr +++| END # LOWER # 00296 M01S00294.exdrvr +++| 00297 M01S00295.exdrvr +++| GOTO ACQCART1; 00298 M01S00296.exdrvr +++| END # NO LOAD # 00299 M01S00297.exdrvr +++| 00300 M01S00298.exdrvr +++| IF MS$MSG[0] EQ HFC$ACCR 00301 M01S00299.exdrvr +++| THEN # SET DRIVER RETURN CODE IN LLRQ # 00302 M01S00300.exdrvr +++| BEGIN # SET # 00303 M01S00301.exdrvr +++| LLR$DR[0] = RESPTYP4"UNK$CART"; 00304 M01S00302.exdrvr +++| END # SET # 00305 M01S00303.exdrvr +++| 00306 M01S00304.exdrvr +++| TEMPCSN0 = MS$CART0[0]; # MOVE CSN TO MSG BUFFER # 00307 M01S00305.exdrvr +++| TEMPCSN1 = MS$CART1[0]; 00308 M01S00306.exdrvr +++| TEMPCSN2 = MS$CART2[0]; 00309 M01S00307.exdrvr +++| ZFILL(UDT$MSG,MSGLT); # CLEAR STORAGE BUFFER # 00310 M01S00308.exdrvr +++| SM$TOPDRD[LLR$SMO[0]] = NOT SM$TOPDRD[LLR$SMO[0]]; 00311 M01S00309.exdrvr +++| P<UDT$MSG> = P<MBFHDR> + 1; 00312 M01S00310.exdrvr +++| MS$CART0[0] = TEMPCSN0; 00313 M01S00311.exdrvr +++| MS$CART1[0] = TEMPCSN1; 00314 M01S00312.exdrvr +++| MS$CART2[0] = TEMPCSN2; 00315 M01S00313.exdrvr +++| MS$MSG[0] = HFC$RCLBP0; # SET *READ LABEL* FUNCTION # 00316 M01S00314.exdrvr +++| MBF$WORD[0] = 0; # CLEAR MESSAGE STATUS # 00317 M01S00315.exdrvr +++| MBF$SAVE[0] = SAVEMOST; 00318 M01S00316.exdrvr +++| LLR$RS[0] = PROCST"CONT2"; 00319 M01S00317.exdrvr +++| 00320 M01S00318.exdrvr +++|# 00321 M01S00319.exdrvr +++|* ISSUE M860 MESSAGE TO READ CARTRIDGE LABEL. 00322 M01S00320.exdrvr +++|# 00323 M01S00321.exdrvr +++| 00324 M01S00322.exdrvr +++|ACQREAD: 00325 M01S00323.exdrvr +++| P<MBFHDR> = LLR$MBH[0]; 00326 M01S00324.exdrvr +++| IF LABELBUSY AND NOT MBF$ACTIVE[0] 00327 M01S00325.exdrvr +++| THEN # ANOTHER REQUEST HAS LABEL BUF # 00328 M01S00326.exdrvr +++| BEGIN # WAIT # 00329 M01S00327.exdrvr +++| RETURN; # WAIT FOR FREE LABEL BUFFER # 00330 M01S00328.exdrvr +++| END # WAIT # 00331 M01S00329.exdrvr +++| 00332 M01S00330.exdrvr +++| LABELBUSY = TRUE; # RESERVE LABEL BUFFER # 00333 M01S00331.exdrvr +++| SENDMSG; # SEND M860 MESSAGE # 00334 M01S00332.exdrvr +++| IF MBF$SBADDR[0] EQ 0 ## 00335 M01S00333.exdrvr +++| AND LLR$DR[0] EQ RESPTYP4"OK4" # GOOD HARDWARE # 00336 M01S00334.exdrvr +++| THEN # RESPONSE NOT YET RECEIVED # 00337 M01S00335.exdrvr +++| BEGIN # RETRY # 00338 M01S00336.exdrvr +++| RETURN; 00339 M01S00337.exdrvr +++| END # RETRY # 00340 M01S00338.exdrvr +++| 00341 M01S00339.exdrvr +++| IF LLR$DR[0] EQ RESPTYP4"M86$HDW$PR" # HARDWARE ERROR # 00342 M01S00340.exdrvr +++| THEN # LABEL NOT NEEDED # 00343 M01S00341.exdrvr +++| BEGIN # M860 # 00344 M01S00342.exdrvr +++| LABELBUSY = FALSE; 00345 M01S00343.exdrvr +++| GOTO ACQCART1; 00346 M01S00344.exdrvr +++| END # M860 # 00347 M01S00345.exdrvr +++| 00348 M01S00346.exdrvr +++| P<UDT$MSG> = MBF$SBADDR[0]; 00349 M01S00347.exdrvr +++| IF LLR$PRCNME[0] EQ REQTYP4"INITHW" 00350 M01S00348.exdrvr +++| THEN # LABEL NOT NEEDED # 00351 M01S00349.exdrvr +++| BEGIN # CLEAR # 00352 M01S00350.exdrvr +++| LABELBUSY = FALSE; 00353 M01S00351.exdrvr +++| END # CLEAR # 00354 M01S00352.exdrvr +++| 00355 M01S00353.exdrvr +++| IF MS$ASS$DT[0] EQ 0 # NO LABEL RETURNED # 00356 M01S00354.exdrvr +++| OR LAB$ALL[0] EQ 0 # LABEL HAS ALL ZEROES # 00357 M01S00355.exdrvr +++| THEN # NO LABEL ON CARTRIDGE # 00358 M01S00356.exdrvr +++| BEGIN # NO LABEL # 00359 M01S00357.exdrvr +++| LLR$DR[0] = RESPTYP4"UNK$CART"; 00360 M01S00358.exdrvr +++| ZFILL(LABEL$CART,LABLEN); # CLEAR LABEL BUFFER # 00361 M01S00359.exdrvr +++| LAB$CSNA[0] = MS$CART0[0]; # MOVE CSN TO LABEL # 00362 M01S00360.exdrvr +++| LAB$CSNB[0] = MS$CART1A[0]; 00363 M01S00361.exdrvr +++| LAB$CSN1A[0] = MS$CART1B[0]; 00364 M01S00362.exdrvr +++| LAB$CSN1B[0] = MS$CART2[0]; 00365 M01S00363.exdrvr +++| GOTO ACQCART1; 00366 M01S00364.exdrvr +++| END # NO LABEL # 00367 M01S00365.exdrvr +++| 00368 M01S00366.exdrvr +++| LLR$DR[0] = RESPTYP4"CART$LB$ERR"; # ASSUME SOME OF LABEL GOOD # 00369 M01S00367.exdrvr +++| P<HLRQ> = LLR$UCPRA[0]; # LOCATE FAMILY/SUBFAMILY # 00370 M01S00368.exdrvr +++| P<TDAM> = LOC(HLR$TDAM[0]); 00371 M01S00369.exdrvr +++| IF LAB$CSNA[0] EQ MS$CART0[0] # HEX CSN # 00372 M01S00370.exdrvr +++| AND LAB$CSNB[0] EQ MS$CART1A[0] ## 00373 M01S00371.exdrvr +++| AND LAB$CSN1A[0] EQ MS$CART1B[0] ## 00374 M01S00372.exdrvr +++| AND LAB$CSN1B[0] EQ MS$CART2[0] ## 00375 M01S00373.exdrvr +++| AND ((LAB$CSNT[0] EQ LLR$CSNT[0] # CYBER CSN # 00376 M01S00374.exdrvr +++| AND LAB$FMLY[0] EQ TDAMFAM # FAMILY # 00377 M01S00375.exdrvr +++| AND LAB$SF[0] EQ TDAMSBF # SUBFAMILY # 00378 M01S00376.exdrvr +++| AND LAB$SMID[0] EQ LLR$SMA[0] # SM ID # 00379 M01S00377.exdrvr +++| AND LAB$Y[0] EQ LLR$Y[0] # LOCATION # 00380 M01S00378.exdrvr +++| AND LAB$Z[0] EQ LLR$Z[0]) ## 00381 M01S00379.exdrvr +++| OR LLR$PRCNME[0] EQ REQTYP4"INITHW" 00382 M01S00380.exdrvr +++| OR LLR$RQI[0] LS REQNAME"RQITEST") # UCP # 00383 M01S00381.exdrvr +++| THEN # NORMAL READ-LABEL # 00384 M01S00382.exdrvr +++| BEGIN # OK # 00385 M01S00383.exdrvr +++| LLR$DR[0] = RESPTYP4"OK4"; 00386 M01S00384.exdrvr +++| END # OK # 00387 M01S00385.exdrvr +++| 00388 M01S00386.exdrvr +++| IF (LAB$CSNA[0] NQ MS$CART0[0] # HEX CSN # 00389 M01S00387.exdrvr +++| OR LAB$CSNB[0] NQ MS$CART1A[0] ## 00390 M01S00388.exdrvr +++| OR LAB$CSN1A[0] NQ MS$CART1B[0] ## 00391 M01S00389.exdrvr +++| OR LAB$CSN1B[0] NQ MS$CART2[0]) ## 00392 M01S00390.exdrvr +++| AND ((LAB$CSNT[0] NQ LLR$CSNT[0] # CYBER CSN # 00393 M01S00391.exdrvr +++| AND LAB$FMLY[0] NQ TDAMFAM # FAMILY # 00394 M01S00392.exdrvr +++| AND LAB$SF[0] NQ TDAMSBF # SUBFAMILY # 00395 M01S00393.exdrvr +++| AND LAB$SMID[0] NQ LLR$SMA[0] # SM ID # 00396 M01S00394.exdrvr +++| AND (LAB$Y[0] NQ LLR$Y[0] # LOCATION # 00397 M01S00395.exdrvr +++| OR LAB$Z[0] NQ LLR$Z[0])) ## 00398 M01S00396.exdrvr +++| OR LLR$PRCNME[0] EQ REQTYP4"INITHW" 00399 M01S00397.exdrvr +++| OR LLR$RQI[0] LS REQNAME"RQITEST") # UCP # 00400 M01S00398.exdrvr +++| THEN # TOTAL LABEL MISMATCH # 00401 M01S00399.exdrvr +++| BEGIN # UNKNOWN # 00402 M01S00400.exdrvr +++| LLR$DR[0] = RESPTYP4"UNK$CART"; 00403 M01S00401.exdrvr +++| END # UNKNOWN # 00404 M01S00402.exdrvr +++| 00405 M01S00403.exdrvr +++|ACQCART1: 00406 M01S00404.exdrvr +++| IF LLR$CSNT[0] NQ 0 # *TDAM* REQUEST # 00407 M01S00405.exdrvr +++| AND (LLR$DR[0] EQ RESPTYP4"UNK$CART" # UNEXPECTED LABEL # 00408 M01S00406.exdrvr +++| OR LLR$DR[0] EQ RESPTYP4"CART$LB$ERR") 00409 M01S00407.exdrvr +++| THEN # EJECT CARTRIDGE # 00410 M01S00408.exdrvr +++| BEGIN # EJECT # 00411 M01S00409.exdrvr +++| LLR$Y[0] = SM$EXIT$TY; 00412 M01S00410.exdrvr +++| LLR$Z[0] = SM$TY$Z; 00413 M01S00411.exdrvr +++| END # EJECT # 00414 M01S00412.exdrvr +++| 00415 M01S00413.exdrvr +++| LLR$RS[0] = PROCST"COMPLETE"; # ASSUME REQUEST COMPLETE # 00416 M01S00414.exdrvr +++| IF MS$RETCODE[0] EQ HRC$TRAYPR # INPUT TRAY EMPTY # 00417 M01S00415.exdrvr +++| AND NOT LLR$UCPABT[0] # EXIT IF *SSLABEL* ABORTED # 00418 M01S00416.exdrvr +++| THEN # RETRY LOAD FROM INPUT TRAY # 00419 M01S00417.exdrvr +++| BEGIN # RETRY # 00420 M01S00418.exdrvr +++| LLR$RS[0] = PROCST"INITIAL"; 00421 M01S00419.exdrvr +++| END # RETRY # 00422 M01S00420.exdrvr +++| 00423 M01S00421.exdrvr +++| IF MBF$SBADDR[0] NQ 0 00424 M01S00422.exdrvr +++| THEN # CLEAR SBT ENTRY # 00425 M01S00423.exdrvr +++| BEGIN # CLEAR # 00426 M01S00424.exdrvr +++| P<UDT$MSG> = MBF$SBADDR[0]; 00427 M01S00425.exdrvr +++| ZFILL(UDT$MSG,MSGLT); 00428 M01S00426.exdrvr +++| END # CLEAR # 00429 M01S00427.exdrvr +++| 00430 M01S00428.exdrvr +++| MBF$WORD[0] = 0; # CLEAR MESSAGE STATUS # 00431 M01S00429.exdrvr +++| RETURN; 00432 M01S00430.exdrvr +++| 00433 M01S00431.exdrvr +++|ACQCART2: 00434 M01S00432.exdrvr +++| MESSAGE(FEMSG,UDFL1); 00435 M01S00433.exdrvr +++| ABORT; 00436 M01S00434.exdrvr +++| END # ACQCART # 00437 M01S00435.exdrvr +++| 00438 M01S00436.exdrvr +++| TERM 00439 M01S00437.exdrvr +++|PROC BMLOG; 00440 M01S00438.exdrvr +++|# TITLE BMLOG - SEND MESSAGE TO BML. # 00441 M01S00439.exdrvr +++| 00442 M01S00440.exdrvr +++| BEGIN # BMLOG # 00443 M01S00441.exdrvr +++| 00444 M01S00442.exdrvr +++|# 00445 M01S00443.exdrvr +++|** BMLOG - SEND MESSAGE TO BML. 00446 M01S00444.exdrvr +++|* 00447 M01S00445.exdrvr +++|* *BMLOG* SENDS ERROR LOG AND BUFFERED LOG MESSAGES TO THE 00448 M01S00446.exdrvr +++|* BINARY MAINTENANCE LOG. 00449 M01S00447.exdrvr +++|* 00450 M01S00448.exdrvr +++|* PROC BMLOG 00451 M01S00449.exdrvr +++|* 00452 M01S00450.exdrvr +++|* ENTRY THE MESSAGE FET BASED ARRAYS POINT TO THE ASSOCIATED 00453 M01S00451.exdrvr +++|* CHANNEL THROUGH WHICH THE M860 RESPONSE WAS SENT. 00454 M01S00452.exdrvr +++|* 00455 M01S00453.exdrvr +++|* EXIT THE M860 RESPONSE HAS BEEN REFORMATTED AND SENT TO 00456 M01S00454.exdrvr +++|* THE BML. THE ASSOCIATED *HLRQ* HAS BEEN UPDATED, IF 00457 M01S00455.exdrvr +++|* PROCESSING BUFFERED LOG DATA. 00458 M01S00456.exdrvr +++|* 00459 M01S00457.exdrvr +++|* MESSAGES *EXEC ABNORMAL, BMLOG2.* - AN ERROR OCCURRED 00460 M01S00458.exdrvr +++|* WHEN READING THE 00461 M01S00459.exdrvr +++|* LOG DATA FROM THE 00462 M01S00460.exdrvr +++|* MESSAGE FET. 00463 M01S00461.exdrvr +++|*
Line S00462 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 00464 M02S00462.exdrvr2 ---|* *MASSTOR BUFFERED LOG ERROR.* - AN ERROR OCCURRED WHEN
Line S00463 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 00465 M02S00463.exdrvr2 ---|* READING THE DRD
Line S00464 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 00466 M02S00464.exdrvr2 ---|* BUFFERED LOG. 00467 M01S00001.exdrvr2 +++|* *BUFFERED LOG ERROR.* - AN ERROR OCCURRED 00468 M01S00002.exdrvr2 +++|* WHEN READING THE 00469 M01S00003.exdrvr2 +++|* DRD BUFFERED LOG. 00470 M01S00465.exdrvr +++|# 00471 M01S00466.exdrvr +++| 00472 M01S00467.exdrvr +++| 00473 M01S00468.exdrvr +++|# 00474 M01S00469.exdrvr +++|**** PROC BMLOG - XREF LIST BEGIN. 00475 M01S00470.exdrvr +++|# 00476 M01S00471.exdrvr +++| 00477 M01S00472.exdrvr +++| XREF 00478 M01S00473.exdrvr +++| BEGIN 00479 M01S00474.exdrvr +++| PROC ABORT; # ABORT # 00480 M01S00475.exdrvr +++| PROC GDATA; # GET DATA FROM READ BUFFER # 00481 M01S00476.exdrvr +++| PROC MESSAGE; # ISSUE PREPARED MESSAGE # 00482 M01S00477.exdrvr +++| PROC MSG; # ISSUE MESSAGE # 00483 M01S00478.exdrvr +++| PROC ZFILL; # ZERO-FILL BUFFER # 00484 M01S00479.exdrvr +++| END 00485 M01S00480.exdrvr +++| 00486 M01S00481.exdrvr +++|# 00487 M01S00482.exdrvr +++|**** PROC BMLOG - XREF LIST END. 00488 M01S00483.exdrvr +++|# 00489 M01S00484.exdrvr +++|
Line S00485 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | drvrr0f |
Seq # *Modification Id* Act ----------------------------+ 00490 M02S00485.drvrr0f ---| DEF BFLLEN #82#; # M860 BUF LOG LENGTH #
Line S00486 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | drvrr0f |
Seq # *Modification Id* Act ----------------------------+ 00491 M02S00486.drvrr0f ---| DEF BFLLENM1 #81#; # M860 BUF LOG LENGTH - 1 # 00492 M01S00001.drvrr0f +++| DEF BFLLEN #163#; # M860 BUF LOG LENGTH # 00493 M01S00002.drvrr0f +++| DEF BFLLENM1 #162#; # M860 BUF LOG LENGTH - 1 # 00494 M01S00487.exdrvr +++| DEF CUCODE #O"106"#; # CU COMPONENT CODE # 00495 M01S00488.exdrvr +++| DEF ERLMLEN #20#; # ERROR LOG BML MSG LENGTH # 00496 M01S00489.exdrvr +++| DEF FORLEN #23#; # FORMATTING BUFFER LENGTH # 00497 M01S00490.exdrvr +++| DEF MAXBLC #19#; # NUMBER OF BUF LOG COUNTERS # 00498 M01S00491.exdrvr +++| DEF MAXBLCM1 #18#; # NUMBER OF BUF LOG COUNTERS - 1 # 00499 M01S00492.exdrvr +++| DEF M860WLEN #32#; # M860 WORD LENGTH #
Line S00493 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | drvrr0f |
Seq # *Modification Id* Act ----------------------------+ 00500 M02S00493.drvrr0f ---| DEF PBUFBITS #8#; # EXTRA BITS PER BUF LOG ENTRY #
Line S00494 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | drvrr0f |
Seq # *Modification Id* Act ----------------------------+ 00501 M02S00494.drvrr0f ---| DEF PBUFLEN #10#; # FULL WORDS PER BUF LOG ENTRY # 00502 M01S00495.exdrvr +++| DEF SMCODE #O"107"#; # SM COMPONENT CODE # 00503 M01S00496.exdrvr +++| DEF USFORNUM #O"1200"#; # USAGE FORMAT NUMBER # 00504 M01S00497.exdrvr +++| 00505 M01S00498.exdrvr +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 00506 M01S00499.exdrvr +++|*CALL,COMBFAS 00507 M01S00500.exdrvr +++|*CALL,COMBFET 00508 M01S00501.exdrvr +++|*CALL,COMBHFC 00509 M01S00502.exdrvr +++|*CALL,COMBLRQ 00510 M01S00503.exdrvr +++|*CALL,COMBUDT 00511 M01S00504.exdrvr +++|*CALL,COMXHLR 00512 M01S00505.exdrvr +++|*CALL,COMXMSC 00513 M01S00506.exdrvr +++| 00514 M01S00507.exdrvr +++| ITEM ASSOCDATA U; # ASSOCIATED DATA LENGTH # 00515 M01S00508.exdrvr +++| ITEM BUFBIT U; # BUF LOG BIT INDEX # 00516 M01S00509.exdrvr +++| ITEM BUFWORD U; # BUF LOG WORD INDEX # 00517 M01S00003.drvrr0f +++| ITEM FIRSTBIT U; # FIRST BIT OF BUF LOG DRD ENTRY # 00518 M01S00510.exdrvr +++| ITEM FIRSTPART U; # LENGTH OF 1ST PART M860 WORD # 00519 M01S00511.exdrvr +++| ITEM I I; # INDEX # 00520 M01S00512.exdrvr +++| ITEM J I; # INDEX # 00521 M01S00513.exdrvr +++| ITEM STAT U; # LOG TRANSFER STATUS # 00522 M01S00514.exdrvr +++| 00523 M01S00515.exdrvr +++|# 00524 M01S00516.exdrvr +++|* ARRAYS TO SEND BML MESSAGE FROM. 00525 M01S00517.exdrvr +++|# 00526 M01S00518.exdrvr +++| 00527 M01S00519.exdrvr +++| ARRAY LOGHDR [0:0] S(1); # LOG HEADER WORD # 00528 M01S00520.exdrvr +++| BEGIN 00529 M01S00521.exdrvr +++| ITEM LH$WORD U(00,00,60); 00530 M01S00522.exdrvr +++| ITEM LH$CNT U(00,00,12); # LOG COUNT # 00531 M01S00523.exdrvr +++| END 00532 M01S00524.exdrvr +++| 00533 M01S00525.exdrvr +++| ARRAY FORBUF [0:0] S(FORLEN); # FORMATTING BUFFER # 00534 M01S00526.exdrvr +++| BEGIN 00535 M01S00527.exdrvr +++| ITEM FB$WORD0 U(00,00,60); # FORMAT BUFFER WORD 0 # 00536 M01S00528.exdrvr +++| ITEM FB$DC U(00,00,12); # COMPONENT CODE # 00537 M01S00529.exdrvr +++| ITEM FB$FNUM U(00,12,12); # FORMAT NUMBER # 00538 M01S00530.exdrvr +++| ITEM FB$CHAN U(00,30,06); # CHANNEL # 00539 M01S00531.exdrvr +++| ITEM FB$SMUN U(00,48,06); # SM UNIT NUMBER # 00540 M01S00532.exdrvr +++| ITEM FB$DRD U(00,54,06); # DRD # 00541 M01S00533.exdrvr +++| 00542 M01S00534.exdrvr +++| ITEM FB$WORD1 U(01,00,60); # FORMAT BUFFER WORD 1 # 00543 M01S00535.exdrvr +++| ITEM FB$ESTO U(01,00,12); # EST ORDINAL # 00544 M01S00536.exdrvr +++| 00545 M01S00537.exdrvr +++| ITEM FB$WORD2 U(02,00,60); # FORMAT BUFFER WORD 2 # 00546 M01S00538.exdrvr +++| ITEM FB$ERLOG U(02,00,60); # ERROR LOG DATA FWA # 00547 M01S00539.exdrvr +++| ITEM FB$ERLFNUM U(02,00,08); # ERROR LOG FORMAT NUMBER # 00548 M01S00540.exdrvr +++| ITEM FB$Y U(02,21,05); # ROW NUMBER # 00549 M01S00541.exdrvr +++| ITEM FB$Z U(02,26,04); # COLUMN NUMBER # 00550 M01S00542.exdrvr +++| 00551 M01S00543.exdrvr +++| ITEM FB$WORD3 U(03,00,60); # FORMAT BUFFER WORD 3 # 00552 M01S00544.exdrvr +++| ITEM FB$CSN C(03,00,10); # DISPLAY-CODE CSN # 00553 M01S00545.exdrvr +++| 00554 M01S00546.exdrvr +++| ITEM FB$WORD4 U(04,00,60); # FORMAT BUFFER WORD 4 # 00555 M01S00547.exdrvr +++| ITEM FB$BFLOG U(04,00,60); # BUF LOG DATA FWA # 00556 M01S00548.exdrvr +++| 00557 M01S00549.exdrvr +++| ITEM FB$WORD19 U(19,00,60); # FORMAT BUFFER WORD 19 # 00558 M01S00550.exdrvr +++| ITEM FB$EXCESS U(19,04,56); # EXCESS BITS # 00559 M01S00551.exdrvr +++| END 00560 M01S00552.exdrvr +++| 00561 M01S00553.exdrvr +++|# 00562 M01S00554.exdrvr +++|* ARRAYS TO UNPACK BUFFERED LOG DATA. 00563 M01S00555.exdrvr +++|# 00564 M01S00556.exdrvr +++| 00565 M01S00557.exdrvr +++| ARRAY TMPBUF [0:BFLLENM1] S(1); # FULL BUF LOG # 00566 M01S00558.exdrvr +++| BEGIN 00567 M01S00559.exdrvr +++| ITEM TBFWORD U(00,00,60); # TEMP BUF WORD # 00568 M01S00560.exdrvr +++| END 00569 M01S00561.exdrvr +++| 00570 M01S00562.exdrvr +++| ARRAY TMPBYTE [0:MAXBLCM1] S(1); # BYTE-REVERSED COUNTERS # 00571 M01S00563.exdrvr +++| BEGIN 00572 M01S00564.exdrvr +++| ITEM TBYWORD U(00,00,60); # TEMP BYTE BUF WORD # 00573 M01S00565.exdrvr +++| END 00574 M01S00566.exdrvr +++| 00575 M01S00567.exdrvr +++| BASED 00576 M01S00568.exdrvr +++| ARRAY TMPLOG [0:MAXBLCM1] S(1); # UNPACKED COUNTERS # 00577 M01S00569.exdrvr +++| BEGIN 00578 M01S00570.exdrvr +++| ITEM TLGWORD U(00,00,60); # BUF LOG WORD # 00579 M01S00571.exdrvr +++| END 00580 M01S00572.exdrvr +++| 00581 M01S00573.exdrvr +++|# 00582 M01S00574.exdrvr +++|* BASED ARRAYS TO REFERENCE LOG DATA. 00583 M01S00575.exdrvr +++|# 00584 M01S00576.exdrvr +++| 00585 M01S00577.exdrvr +++| BASED 00586 M01S00578.exdrvr +++| ARRAY BFBYTE [0:0] S(MAXBLC); # UNPACKED BUF LOG DATA # 00587 M01S00579.exdrvr +++| BEGIN 00588 M01S00580.exdrvr +++| ITEM BFL$STWR U(04,00,60); # STRIPES WRITTEN # 00589 M01S00581.exdrvr +++| ITEM BFL$SWRE U(05,00,60); # SOFT WRITE ERRORS # 00590 M01S00582.exdrvr +++| ITEM BFL$STDM U(08,00,60); # STRIPES DEMARKED # 00591 M01S00583.exdrvr +++| ITEM BFL$STRD U(10,00,60); # STRIPES READ # 00592 M01S00584.exdrvr +++| ITEM BFL$SRDE U(11,00,60); # SOFT READ ERRORS # 00593 M01S00585.exdrvr +++| ITEM BFL$CRLD U(15,00,60); # LOAD COUNT # 00594 M01S00586.exdrvr +++| ITEM BFL$LDER U(16,00,60); # LOAD ERRORS # 00595 M01S00587.exdrvr +++| END 00596 M01S00588.exdrvr +++| 00597 M01S00589.exdrvr +++| BASED 00598 M01S00590.exdrvr +++| ARRAY LOGADDR [0:0] S(MAXBLC); ; # LOG FWA # 00599 M01S00591.exdrvr +++| CONTROL EJECT; 00600 M01S00592.exdrvr +++| 00601 M01S00593.exdrvr +++|# 00602 M01S00594.exdrvr +++|* READ LOG INTO FORMAT BUFFER. 00603 M01S00595.exdrvr +++|# 00604 M01S00596.exdrvr +++| 00605 M01S00597.exdrvr +++| ZFILL(FORBUF,FORLEN); # CLEAR BUFFER # 00606 M01S00598.exdrvr +++| LH$WORD[0] = 0; 00607 M01S00599.exdrvr +++| ASSOCDATA = ((MS$ASS$DT[0]*2)+14)/15; 00608 M01S00600.exdrvr +++| P<LOGADDR> = LOC(FB$ERLOG[0]); # ASSUME ERROR LOG # 00609 M01S00601.exdrvr +++| IF MS$MSG[0] GQ HFC$DBLD0 ## 00610 M01S00602.exdrvr +++| AND MS$MSG[0] LQ HFC$DBLD7 00611 M01S00603.exdrvr +++| THEN # PROCESSING BUFFERED LOG # 00612 M01S00604.exdrvr +++| BEGIN # RESET # 00613 M01S00605.exdrvr +++| ZFILL(TMPBUF,BFLLEN); # CLEAR BUFFERS # 00614 M01S00606.exdrvr +++| ZFILL(TMPBYTE,MAXBLC); 00615 M01S00607.exdrvr +++| P<LOGADDR> = LOC(TMPBUF); 00616 M01S00608.exdrvr +++| END # RESET # 00617 M01S00609.exdrvr +++| 00618 M01S00610.exdrvr +++| IF MS$ASS$DT[0] NQ 0 00619 M01S00611.exdrvr +++| THEN # LOG EXISTS # 00620 M01S00612.exdrvr +++| BEGIN # READ # 00621 M01S00613.exdrvr +++| GDATA(FETMRB,LOGADDR,ASSOCDATA,STAT); 00622 M01S00614.exdrvr +++| IF STAT NQ 0 00623 M01S00615.exdrvr +++| THEN # ERROR IN READING LOG # 00624 M01S00616.exdrvr +++| BEGIN # ABORT # 00625 M01S00617.exdrvr +++| FE$RTN[0] = "BMLOG2."; 00626 M01S00618.exdrvr +++| GOTO BMLOG1; 00627 M01S00619.exdrvr +++| END # ABORT # 00628 M01S00620.exdrvr +++| 00629 M01S00621.exdrvr +++| END # READ # 00630 M01S00622.exdrvr +++| 00631 M01S00623.exdrvr +++|# 00632 M01S00624.exdrvr +++|* SET HEADER FIELDS COMMON TO BOTH LOGS. 00633 M01S00625.exdrvr +++|# 00634 M01S00626.exdrvr +++| 00635 M01S00627.exdrvr +++| FB$CHAN[0] = FMR$CHAN[0]; # CHANNEL # 00636 M01S00628.exdrvr +++| FB$ESTO[0] = UD$ESTO[FMR$CU[0]]; # EST ORDINAL # 00637 M01S00629.exdrvr +++| 00638 M01S00630.exdrvr +++|# 00639 M01S00631.exdrvr +++|* COMPLETE ERROR LOG MESSAGE HEADER AND SEND TO BML. 00640 M01S00632.exdrvr +++|# 00641 M01S00633.exdrvr +++| 00642 M01S00634.exdrvr +++| IF P<LOGADDR> EQ LOC(FB$ERLOG[0]) 00643 M01S00635.exdrvr +++| THEN # PROCESSING ERROR LOG # 00644 M01S00636.exdrvr +++| BEGIN # ERROR LOG # 00645 M01S00637.exdrvr +++| FB$DC[0] = CUCODE; # COMPONENT CODE # 00646 M01S00638.exdrvr +++| FB$FNUM[0] = FB$ERLFNUM[0]; # FORMAT NUMBER # 00647 M01S00639.exdrvr +++| FB$EXCESS[0] = 0; # CLEAR EXCESS LOG INFO # 00648 M01S00640.exdrvr +++| LH$CNT[0] = ERLMLEN; 00649 M01S00641.exdrvr +++| MESSAGE(LOGHDR,BML); # SEND ERROR LOG TO BML # 00650 M01S00642.exdrvr +++| RETURN; 00651 M01S00643.exdrvr +++| END # ERROR LOG # 00652 M01S00644.exdrvr +++| 00653 M01S00645.exdrvr +++|# 00654 M01S00646.exdrvr +++|* COMPLETE HEADER FOR BUFFERED LOG BML MESSAGE. 00655 M01S00647.exdrvr +++|# 00656 M01S00648.exdrvr +++| 00657 M01S00649.exdrvr +++| IF MS$RETCODE[0] NQ 0 00658 M01S00650.exdrvr +++| THEN # BUFFERED LOG ERROR # 00659 M01S00651.exdrvr +++| BEGIN # ERROR #
Line S00652 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 00660 M02S00652.exdrvr2 ---| MSG(" MASSTOR BUFFERED LOG ERROR.",SYSUDF1); 00661 M01S00004.exdrvr2 +++| MSG(" BUFFERED LOG ERROR.",SYSUDF1); 00662 M01S00653.exdrvr +++| IF MS$ASS$DT[0] EQ 0 00663 M01S00654.exdrvr +++| THEN # NO DATA TO PROCESS # 00664 M01S00655.exdrvr +++| BEGIN # EXIT # 00665 M01S00656.exdrvr +++| RETURN; 00666 M01S00657.exdrvr +++| END # EXIT # 00667 M01S00658.exdrvr +++| 00668 M01S00659.exdrvr +++| END # ERROR # 00669 M01S00660.exdrvr +++| 00670 M01S00661.exdrvr +++| FB$DC[0] = SMCODE; # COMPONENT CODE # 00671 M01S00662.exdrvr +++| FB$FNUM[0] = USFORNUM; # FORMAT NUMBER # 00672 M01S00663.exdrvr +++| FB$SMUN[0] = SM$SUN[MS$MSQN$CN[0]]; # SM UNIT NUMBER # 00673 M01S00664.exdrvr +++| P<LLRQ> = D1$LLADR[MS$MSQN$CN[0]]; # ASSUME LOWER DRD # 00674 M01S00665.exdrvr +++| FB$DRD[0] = D1$SUN[MS$MSQN$CN[0]]; # DRD UNIT NUMBER # 00675 M01S00666.exdrvr +++| IF MS$MSQN$D0[0] 00676 M01S00667.exdrvr +++| THEN # UPPER DRD BEING PROCESSED # 00677 M01S00668.exdrvr +++| BEGIN # RESET # 00678 M01S00669.exdrvr +++| P<LLRQ> = D0$LLADR[MS$MSQN$CN[0]]; 00679 M01S00670.exdrvr +++| FB$DRD[0] = D0$SUN[MS$MSQN$CN[0]]; # DRD UNIT NUMBER # 00680 M01S00671.exdrvr +++| END # RESET # 00681 M01S00672.exdrvr +++| 00682 M01S00673.exdrvr +++| FB$Y[0] = LLR$Y[0]; # LOCATION # 00683 M01S00674.exdrvr +++| FB$Z[0] = LLR$Z[0]; 00684 M01S00675.exdrvr +++| FB$CSN[0] = LLR$CSNT[0]; # DISPLAY-CODE CSN # 00685 M01S00676.exdrvr +++| 00686 M01S00677.exdrvr +++|# 00687 M01S00678.exdrvr +++|* UNPACK BUFFERED LOG AND SEND TO BML. 00688 M01S00679.exdrvr +++|# 00689 M01S00680.exdrvr +++|
Line S00681 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | drvrr0f |
Seq # *Modification Id* Act ----------------------------+ 00690 M02S00681.drvrr0f ---| BUFWORD = MS$MSG$D[0] * PBUFLEN; # PRESET BUF LOG LOCATION #
Line S00682 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | drvrr0f |
Seq # *Modification Id* Act ----------------------------+ 00691 M02S00682.drvrr0f ---| BUFBIT = MS$MSG$D[0] * PBUFBITS; 00692 M01S00004.drvrr0f +++| FIRSTBIT = M860WLEN * MAXBLC * MS$MSG$D[0]; # SET START # 00693 M01S00005.drvrr0f +++| BUFWORD = FIRSTBIT/60; 00694 M01S00006.drvrr0f +++| BUFBIT = FIRSTBIT - (BUFWORD * 60); 00695 M01S00683.exdrvr +++| SLOWFOR I = 0 STEP 1 UNTIL MAXBLCM1 00696 M01S00684.exdrvr +++| DO # UNPACK 32-BIT WORDS # 00697 M01S00685.exdrvr +++| BEGIN # UNPACK # 00698 M01S00686.exdrvr +++| FIRSTPART = 60 - BUFBIT; # PRESET 1ST PART OF SPLIT WORD # 00699 M01S00687.exdrvr +++| IF FIRSTPART GR M860WLEN 00700 M01S00688.exdrvr +++| THEN # 32-BIT WORD NOT DIVIDED # 00701 M01S00689.exdrvr +++| BEGIN # RESET # 00702 M01S00690.exdrvr +++| FIRSTPART = M860WLEN; 00703 M01S00691.exdrvr +++| END # RESET # 00704 M01S00692.exdrvr +++| 00705 M01S00693.exdrvr +++| B<0,FIRSTPART>TBYWORD[I] = B<BUFBIT,FIRSTPART>TBFWORD[BUFWORD]; 00706 M01S00694.exdrvr +++| # MOVE FIRST PART OF WORD # 00707 M01S00695.exdrvr +++| IF FIRSTPART LS M860WLEN 00708 M01S00696.exdrvr +++| THEN # 32-BIT WORD HAS 2 PARTS # 00709 M01S00697.exdrvr +++| BEGIN # SECOND # 00710 M01S00698.exdrvr +++| B<FIRSTPART,M860WLEN-FIRSTPART>TBYWORD[I] = 00711 M01S00699.exdrvr +++| B<0,M860WLEN-FIRSTPART>TBFWORD[BUFWORD+1]; 00712 M01S00700.exdrvr +++| END # SECOND # 00713 M01S00701.exdrvr +++| 00714 M01S00702.exdrvr +++| BUFBIT = BUFBIT + M860WLEN; # POSITION TO NEXT WORD # 00715 M01S00703.exdrvr +++| IF BUFBIT GQ 60 00716 M01S00704.exdrvr +++| THEN # NEXT WORD ON 60-BIT BOUNDARY # 00717 M01S00705.exdrvr +++| BEGIN # NEXT # 00718 M01S00706.exdrvr +++| BUFBIT = BUFBIT - 60; 00719 M01S00707.exdrvr +++| BUFWORD = BUFWORD + 1; 00720 M01S00708.exdrvr +++| END # NEXT # 00721 M01S00709.exdrvr +++| 00722 M01S00710.exdrvr +++| END # UNPACK # 00723 M01S00711.exdrvr +++| 00724 M01S00712.exdrvr +++| P<TMPLOG> = LOC(FB$BFLOG[0]); 00725 M01S00713.exdrvr +++| SLOWFOR I = 0 STEP 1 UNTIL MAXBLCM1 00726 M01S00714.exdrvr +++| DO # REVERSE 8-BIT BYTES # 00727 M01S00715.exdrvr +++| BEGIN # REVERSE # 00728 M01S00716.exdrvr +++| SLOWFOR J = 0 STEP 1 UNTIL 3 00729 M01S00717.exdrvr +++| DO # TRANSFER BYTES # 00730 M01S00718.exdrvr +++| BEGIN # BYTE # 00731 M01S00719.exdrvr +++| B<60-M860WLEN+(8*J),8>TLGWORD[I] = 00732 M01S00720.exdrvr +++| B<8*(3-J),8>TBYWORD[I]; 00733 M01S00721.exdrvr +++| END # BYTE # 00734 M01S00722.exdrvr +++| 00735 M01S00723.exdrvr +++| END # REVERSE # 00736 M01S00724.exdrvr +++| 00737 M01S00725.exdrvr +++| LH$CNT[0] = FORLEN; 00738 M01S00726.exdrvr +++| MESSAGE(LOGHDR,BML); # SEND BUFFERED LOG TO BML # 00739 M01S00727.exdrvr +++| 00740 M01S00728.exdrvr +++|# 00741 M01S00729.exdrvr +++|* UPDATE EXEC CARTRIDGE STATISTICS. 00742 M01S00730.exdrvr +++|# 00743 M01S00731.exdrvr +++| 00744 M01S00732.exdrvr +++| P<BFBYTE> = LOC(FB$BFLOG[0]); 00745 M01S00733.exdrvr +++| P<HLRQ> = LLR$UCPRA[0]; 00746 M01S00734.exdrvr +++| HLR$STRD[0] = BFL$STRD[0]; # STRIPES READ # 00747 M01S00735.exdrvr +++| HLR$STWR[0] = BFL$STWR[0]; # STRIPES WRITTEN # 00748 M01S00736.exdrvr +++| HLR$SRDE[0] = BFL$SRDE[0]; # SOFT READ ERRORS # 00749 M01S00737.exdrvr +++| HLR$SWRE[0] = BFL$SWRE[0]; # SOFT WRITE ERRORS # 00750 M01S00738.exdrvr +++| HLR$STDM[0] = BFL$STDM[0]; # STRIPES DEMARKED # 00751 M01S00739.exdrvr +++| HLR$CRLD[0] = BFL$CRLD[0]; # LOAD COUNT # 00752 M01S00740.exdrvr +++| HLR$LDER[0] = BFL$LDER[0]; # LOAD ERRORS # 00753 M01S00741.exdrvr +++| RETURN; 00754 M01S00742.exdrvr +++| 00755 M01S00743.exdrvr +++|BMLOG1: 00756 M01S00744.exdrvr +++| MESSAGE(FEMSG,UDFL1); 00757 M01S00745.exdrvr +++| ABORT; 00758 M01S00746.exdrvr +++| END # BMLOG # 00759 M01S00747.exdrvr +++| 00760 M01S00748.exdrvr +++| TERM 00761 M01S00749.exdrvr +++|PROC CALLPP((FCODE)); 00762 M01S00750.exdrvr +++|# TITLE CALLPP - ACTIVATE THE PP MODULE *1SS*. # 00763 M01S00751.exdrvr +++| 00764 M01S00752.exdrvr +++| BEGIN # CALLPP # 00765 M01S00753.exdrvr +++| 00766 M01S00754.exdrvr +++|# 00767 M01S00755.exdrvr +++|** CALLPP - ACTIVATE THE PP MODULE *1SS*. 00768 M01S00756.exdrvr +++|* 00769 M01S00757.exdrvr +++|* *CALLPP* SENDS A MESSAGE FROM A UDT MESSAGE BUFFER TO 00770 M01S00758.exdrvr +++|* THE M860 HARDWARE, THROUGH A MESSAGE WRITE FET BUFFER. 00771 M01S00759.exdrvr +++|* IT CALLS THE PP *1SS* IF IT IS NOT ALREADY ACTIVE ON 00772 M01S00760.exdrvr +++|* THE DESIRED CHANNEL. 00773 M01S00761.exdrvr +++|* 00774 M01S00762.exdrvr +++|* PROC CALLPP ((FCODE)) 00775 M01S00763.exdrvr +++|* 00776 M01S00764.exdrvr +++|* ENTRY (FCODE) = PP FUNCTION CODE. 00777 M01S00765.exdrvr +++|* 00778 M01S00766.exdrvr +++|* P<LLRQ> = *DRQUEUE* ENTRY ADDRESS. 00779 M01S00767.exdrvr +++|* 00780 M01S00768.exdrvr +++|* P<UDT$MSG> = UDT/SBT MESSAGE BUFFER ADDRESS. 00781 M01S00769.exdrvr +++|* 00782 M01S00770.exdrvr +++|* EXIT THE M860 MESSAGE WAS WRITTEN TO THE MESSAGE WRITE 00783 M01S00771.exdrvr +++|* FET BUFFER. IF A PP WAS CALLED, THE ACTIVE PP CALL 00784 M01S00772.exdrvr +++|* BLOCK ENTRY COUNT IS INCREMENTED. IF THE M860 MESSAGE 00785 M01S00773.exdrvr +++|* WAS INITIATED BY THE CPU DRIVER, THE CHANNEL MESSAGE 00786 M01S00774.exdrvr +++|* COUNT IS INCREMENTED. 00787 M01S00775.exdrvr +++|* 00788 M01S00776.exdrvr +++|* MESSAGES *EXEC ABNORMAL, CALLPP2.* - EXPECTED FREE CALL 00789 M01S00777.exdrvr +++|* BLOCK ENTRY NOT FOUND. 00790 M01S00778.exdrvr +++|* 00791 M01S00779.exdrvr +++|* *EXEC ABNORMAL, CALLPP2A.* - TWO DATA TRANSFERS WERE 00792 M01S00780.exdrvr +++|* TRIED ON THE SAME 00793 M01S00781.exdrvr +++|* CHANNEL. ONLY ONE SHOULD 00794 M01S00782.exdrvr +++|* BE TRIED AT A TIME. 00795 M01S00783.exdrvr +++|* 00796 M01S00784.exdrvr +++|* *EXEC ABNORMAL, CALLPP3.* - TWO RAW DATA READS WERE 00797 M01S00785.exdrvr +++|* TRIED. ONLY ONE SHOULD BE 00798 M01S00786.exdrvr +++|* ACTIVE AT A TIME. 00799 M01S00787.exdrvr +++|* 00800 M01S00788.exdrvr +++|* NOTES THE M860 MESSAGE IS NOT SENT IF IT REQUIRES THE 00801 M01S00789.exdrvr +++|* ACCESSOR ARM AND THE ARM IS BUSY, THE PP CALL BLOCK 00802 M01S00790.exdrvr +++|* TABLE IS FULL, OR NO CHANNEL COULD BE ALLOCATED. 00803 M01S00791.exdrvr +++|# 00804 M01S00792.exdrvr +++| 00805 M01S00793.exdrvr +++| 00806 M01S00794.exdrvr +++|# 00807 M01S00795.exdrvr +++|**** PROC CALLPP - XREF LIST BEGIN. 00808 M01S00796.exdrvr +++|# 00809 M01S00797.exdrvr +++| 00810 M01S00798.exdrvr +++| XREF 00811 M01S00799.exdrvr +++| BEGIN 00812 M01S00800.exdrvr +++| PROC ABORT; # ABORT # 00813 M01S00801.exdrvr +++| PROC FSCLOG; # DUMP FSC LOG TO BML # 00814 M01S00802.exdrvr +++| PROC GETCHAN; # ALLOCATE CHANNEL # 00815 M01S00803.exdrvr +++| PROC MESSAGE; # ISSUE DAYFILE MESSAGE # 00816 M01S00804.exdrvr +++| PROC SMSG; # SEND AND CHECKSUM MESSAGE # 00817 M01S00805.exdrvr +++| PROC SYSTEM; # CALL PP # 00818 M01S00806.exdrvr +++| END 00819 M01S00807.exdrvr +++| 00820 M01S00808.exdrvr +++|# 00821 M01S00809.exdrvr +++|**** PROC CALLPP - XREF LIST END. 00822 M01S00810.exdrvr +++|# 00823 M01S00811.exdrvr +++| 00824 M01S00812.exdrvr +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 00825 M01S00813.exdrvr +++|*CALL,COMBFAS 00826 M01S00814.exdrvr +++|*CALL,COMBCDD 00827 M01S00815.exdrvr +++|*CALL,COMBFET 00828 M01S00816.exdrvr +++|*CALL,COMBHFC 00829 M01S00817.exdrvr +++|*CALL,COMBLBL 00830 M01S00818.exdrvr +++|*CALL,COMBLRQ 00831 M01S00819.exdrvr +++|*CALL,COMBUDT 00832 M01S00820.exdrvr +++|*CALL,COMXCTF 00833 M01S00821.exdrvr +++|*CALL,COMXMSC 00834 M01S00822.exdrvr +++| 00835 M01S00823.exdrvr +++| ITEM CALLINDEX U; # FREE CALL BLOCK ENTRY INDEX # 00836 M01S00824.exdrvr +++| ITEM CU U; # CONTROLLER ORDINAL # 00837 M01S00825.exdrvr +++| ITEM FCODE U; # PP FUNCTION CODE PARAMETER # 00838 M01S00826.exdrvr +++| ITEM I I; # INDEX # 00839 M01S00827.exdrvr +++| ITEM RESPCOUNT U; # EXPECTED MSG RESPONSE COUNT # 00840 M01S00828.exdrvr +++| ITEM STAT U; # *SMSG* STATUS # 00841 M01S00829.exdrvr +++| CONTROL EJECT; 00842 M01S00830.exdrvr +++| 00843 M01S00831.exdrvr +++| IF SM$ACCBUSY[LLR$SMO[0]] # SM IN USE # 00844 M01S00832.exdrvr +++| AND (((MS$MSG[0] EQ HFC$CHSSMA # SM STATUS CHANGE # 00845 M01S00833.exdrvr +++| OR MS$MSG[0] EQ HFC$CHSDRD) # DRD STATUS CHANGE # 00846 M01S00834.exdrvr +++| AND MS$PARM1A[0] EQ ONLINE) ## 00847 M01S00835.exdrvr +++| OR MS$MSG[0] LQ HFC$STCRNF # ACQUIRE OR STORE # 00848 M01S00836.exdrvr +++| OR MS$MSG[0] EQ HFC$ENCRDR) # ENTER # 00849 M01S00837.exdrvr +++| THEN # SM ARM TO BE MOVED # 00850 M01S00838.exdrvr +++| BEGIN # WAIT # 00851 M01S00839.exdrvr +++| RETURN; # WAIT FOR ARM TO STOP # 00852 M01S00840.exdrvr +++| END # WAIT # 00853 M01S00841.exdrvr +++| 00854 M01S00842.exdrvr +++|# 00855 M01S00843.exdrvr +++|* ALLOCATE CHANNEL. 00856 M01S00844.exdrvr +++|# 00857 M01S00845.exdrvr +++| 00858 M01S00846.exdrvr +++| GETCHAN(FCODE); 00859 M01S00847.exdrvr +++| IF P<FETMWB> EQ 0 00860 M01S00848.exdrvr +++| THEN # NO CHANNEL ALLOCATED # 00861 M01S00849.exdrvr +++| BEGIN # RETRY # 00862 M01S00850.exdrvr +++| RETURN; # REALLOCATE LATER # 00863 M01S00851.exdrvr +++| END # RETRY # 00864 M01S00852.exdrvr +++| 00865 M01S00853.exdrvr +++| IF FMW$AT[0] NQ 0 00866 M01S00854.exdrvr +++| THEN # LAST MESSAGE CAUSED ERROR # 00867 M01S00855.exdrvr +++| BEGIN # FSC # 00868 M01S00856.exdrvr +++| FSCLOG(WFET); # DUMP FSC LOG TO BML # 00869 M01S00857.exdrvr +++| END # FSC # 00870 M01S00858.exdrvr +++| 00871 M01S00859.exdrvr +++| CU = LLR$CU[0]; # ASSUME MESSAGE FROM LLRQ # 00872 M01S00860.exdrvr +++| IF MS$CU[0] NQ 0 00873 M01S00861.exdrvr +++| THEN # SENDING ERROR LOG MESSAGE # 00874 M01S00862.exdrvr +++| BEGIN # RESET # 00875 M01S00863.exdrvr +++| CU = MS$CU[0]; 00876 M01S00864.exdrvr +++| END # RESET # 00877 M01S00865.exdrvr +++| 00878 M01S00866.exdrvr +++| CALLINDEX = 0; # PRESET INDEX # 00879 M01S00867.exdrvr +++| IF B<FMR$CIF[0],1>UD$WBACT[CU] EQ OFF 00880 M01S00868.exdrvr +++| THEN # FREE CHANNEL PICKED # 00881 M01S00869.exdrvr +++| BEGIN # FIND CALL ENTRY # 00882 M01S00870.exdrvr +++| IF PPCBENCNT EQ PPCBTSIZE 00883 M01S00871.exdrvr +++| THEN # NO FREE CALL ENTRY # 00884 M01S00872.exdrvr +++| BEGIN # TRY LATER # 00885 M01S00873.exdrvr +++| RETURN; 00886 M01S00874.exdrvr +++| END # TRY LATER # 00887 M01S00875.exdrvr +++| 00888 M01S00876.exdrvr +++|# 00889 M01S00877.exdrvr +++|* SEARCH FOR FREE ENTRY IN PP CALL BLOCK TABLE. 00890 M01S00878.exdrvr +++|# 00891 M01S00879.exdrvr +++| 00892 M01S00880.exdrvr +++| SLOWFOR I = 1 STEP 1 WHILE (CALLINDEX EQ 0)AND(I LQ PPCBTSIZE) 00893 M01S00881.exdrvr +++| DO # FIND FREE CALL ENTRY # 00894 M01S00882.exdrvr +++| BEGIN # FIND # 00895 M01S00883.exdrvr +++| IF PPU$FC[I] EQ 0 00896 M01S00884.exdrvr +++| THEN # FREE ENTRY FOUND # 00897 M01S00885.exdrvr +++| BEGIN # FOUND # 00898 M01S00886.exdrvr +++| CALLINDEX = I; 00899 M01S00887.exdrvr +++| END # FOUND # 00900 M01S00888.exdrvr +++| 00901 M01S00889.exdrvr +++| END # FIND # 00902 M01S00890.exdrvr +++| 00903 M01S00891.exdrvr +++| IF CALLINDEX EQ 0 00904 M01S00892.exdrvr +++| THEN # FREE ENTRY NOT FOUND # 00905 M01S00893.exdrvr +++| BEGIN # ABORT # 00906 M01S00894.exdrvr +++| FE$RTN[0] = "CALLPP2."; 00907 M01S00895.exdrvr +++| GOTO CALLPP2; 00908 M01S00896.exdrvr +++| END # ABORT # 00909 M01S00897.exdrvr +++| 00910 M01S00898.exdrvr +++| END # FIND CALL ENTRY # 00911 M01S00899.exdrvr +++| 00912 M01S00900.exdrvr +++| ELSE # CHANNEL PICKED IN USE # 00913 M01S00901.exdrvr +++| BEGIN # IN USE # 00914 M01S00902.exdrvr +++| SLOWFOR I = 1 STEP 1 WHILE (CALLINDEX EQ 0)AND(I LQ PPCBTSIZE) 00915 M01S00903.exdrvr +++| DO # SCAN CALL BLOCK # 00916 M01S00904.exdrvr +++| BEGIN # SCAN # 00917 M01S00905.exdrvr +++| IF P<FETMWB> EQ PPU$MBADDR[I] 00918 M01S00906.exdrvr +++| THEN # PP IN USE FOUND # 00919 M01S00907.exdrvr +++| BEGIN # FOUND # 00920 M01S00908.exdrvr +++| CALLINDEX = I; 00921 M01S00909.exdrvr +++| END # FOUND # 00922 M01S00910.exdrvr +++| 00923 M01S00911.exdrvr +++| END # SCAN # 00924 M01S00912.exdrvr +++| 00925 M01S00913.exdrvr +++| END # IN USE # 00926 M01S00914.exdrvr +++| 00927 M01S00915.exdrvr +++| IF FCODE EQ IRMDAT 00928 M01S00916.exdrvr +++| THEN # SENDING DATA # 00929 M01S00917.exdrvr +++| BEGIN # DATA # 00930 M01S00918.exdrvr +++| IF PPU$DBADDR[CALLINDEX] NQ 0 00931 M01S00919.exdrvr +++| THEN # 2 DATA TRANSFERS TO SAME PP # 00932 M01S00920.exdrvr +++| BEGIN # ABORT # 00933 M01S00921.exdrvr +++| FE$RTN[0] = "CALLPP2A."; 00934 M01S00922.exdrvr +++| GOTO CALLPP2; 00935 M01S00923.exdrvr +++| END # ABORT # 00936 M01S00924.exdrvr +++| 00937 M01S00925.exdrvr +++| PPU$DBADDR[CALLINDEX] = LLR$MSFET[0]; # PASS DATA BUF ADDR # 00938 M01S00926.exdrvr +++| GOTO CALLPP1; 00939 M01S00927.exdrvr +++| END # DATA # 00940 M01S00928.exdrvr +++| 00941 M01S00929.exdrvr +++|# 00942 M01S00930.exdrvr +++|* COPY MESSAGE FROM UDT/STORAGE BUFFER TO MESSAGE WRITE BUFFER. 00943 M01S00931.exdrvr +++|# 00944 M01S00932.exdrvr +++| 00945 M01S00933.exdrvr +++| RESPCOUNT = 1; # ASSUME NORMAL MESSAGE # 00946 M01S00934.exdrvr +++| IF MS$MSG[0] GQ HFC$MVLMVR ## 00947 M01S00935.exdrvr +++| AND MS$MSG[0] LQ HFC$MVLMNW 00948 M01S00936.exdrvr +++| THEN # *MOUNT-VOLUME* MESSAGE # 00949 M01S00937.exdrvr +++| BEGIN # CIF # 00950 M01S00938.exdrvr +++| B<3-FMR$CIF[0],1>MS$INTER[0] = ON; # SWITCH BIT ORDER # 00951 M01S00939.exdrvr +++| B<FMR$CIF[0],1>UD$DBACT[LLR$CU[0]] = ON; 00952 M01S00940.exdrvr +++| RESPCOUNT = 2; # INCLUDE REWIND/UNLOAD # 00953 M01S00941.exdrvr +++| END # CIF # 00954 M01S00942.exdrvr +++| 00955 M01S00943.exdrvr +++| MS$CU[0] = 0; # IN CASE ERROR LOG MESSAGE # 00956 M01S00944.exdrvr +++| IF MS$MSG[0] NQ HFC$WRTLBL 00957 M01S00945.exdrvr +++| THEN # NOT A *WRITE-LABEL* MESSAGE # 00958 M01S00946.exdrvr +++| BEGIN # NOT WRITE # 00959 M01S00947.exdrvr +++| SMSG(FETMWB,UDT$MSG,0,0,STAT); 00960 M01S00948.exdrvr +++| END # NOT WRITE # 00961 M01S00949.exdrvr +++| 00962 M01S00950.exdrvr +++| ELSE # SEND *WRITE-LABEL* MESSAGE # 00963 M01S00951.exdrvr +++| BEGIN # WRLABEL # 00964 M01S00952.exdrvr +++| SMSG(FETMWB,UDT$MSG,LABEL$CART,LABLEN,STAT); 00965 M01S00953.exdrvr +++| END # WRLABEL # 00966 M01S00954.exdrvr +++| 00967 M01S00955.exdrvr +++| IF STAT NQ 0 00968 M01S00956.exdrvr +++| THEN # MESSAGE WRITE BUFFER FULL # 00969 M01S00957.exdrvr +++| BEGIN # FREE CHANNEL # 00970 M01S00958.exdrvr +++| IF MS$MSG[0] GQ (HRF$ELGFUL + HRF$R) # ERROR LOG MESSAGE # 00971 M01S00959.exdrvr +++| AND MS$MSG[0] LQ (HRF$REQDMP + HRF$R) 00972 M01S00960.exdrvr +++| THEN # INDICATE RESPONSE NOT SENT # 00973 M01S00961.exdrvr +++| BEGIN # RESTORE # 00974 M01S00962.exdrvr +++| MS$CU[0] = CU; 00975 M01S00963.exdrvr +++| END # RESTORE # 00976 M01S00964.exdrvr +++| 00977 M01S00965.exdrvr +++| RETURN; # TRY LATER # 00978 M01S00966.exdrvr +++| END # FREE CHANNEL # 00979 M01S00967.exdrvr +++| 00980 M01S00968.exdrvr +++| IF MS$MSG[0] EQ HFC$RDRAW 00981 M01S00969.exdrvr +++| THEN # READING RAW DATA # 00982 M01S00970.exdrvr +++| BEGIN # RAW # 00983 M01S00971.exdrvr +++| IF FMR$RDBA[0] NQ 0 # READING 2 RAW STRIPES # 00984 M01S00972.exdrvr +++| THEN # SHOULD BE ONLY ONE # 00985 M01S00973.exdrvr +++| BEGIN # ABORT # 00986 M01S00974.exdrvr +++| FE$RTN[0] = "CALLPP3."; 00987 M01S00975.exdrvr +++| GOTO CALLPP2; 00988 M01S00976.exdrvr +++| END # ABORT # 00989 M01S00977.exdrvr +++| 00990 M01S00978.exdrvr +++| P<FETFHB> = LLR$MSFET[0]; 00991 M01S00979.exdrvr +++| FMR$RDBA[0] = FHB$FRST[0] + MSGLT; # SET RAW DATA ADDRESS # 00992 M01S00980.exdrvr +++| END # RAW # 00993 M01S00981.exdrvr +++| 00994 M01S00982.exdrvr +++| IF MS$MSG[0] LQ HFC$STCRNF # ACQUIRE OR STORE # 00995 M01S00983.exdrvr +++| OR MS$MSG[0] EQ HFC$ENCRDR # ENTER # 00996 M01S00984.exdrvr +++| OR ((MS$MSG[0] EQ HFC$CHSSMA # SM STATUS CHANGE # 00997 M01S00985.exdrvr +++| OR MS$MSG[0] EQ HFC$CHSDRD) # DRD STATUS CHANGE # 00998 M01S00986.exdrvr +++| AND MS$PARM1A[0] EQ ONLINE) 00999 M01S00987.exdrvr +++| THEN # RESERVE SM ARM # 01000 M01S00988.exdrvr +++| BEGIN # SM # 01001 M01S00989.exdrvr +++| SM$ACCBUSY[LLR$SMO[0]] = TRUE; 01002 M01S00990.exdrvr +++| END # SM # 01003 M01S00991.exdrvr +++| 01004 M01S00992.exdrvr +++| IF MS$MSG[0] LS (HRF$ELGFUL + HRF$R) # NOT ERROR LOG MSG # 01005 M01S00993.exdrvr +++| OR MS$MSG[0] GR (HRF$REQDMP + HRF$R) 01006 M01S00994.exdrvr +++| THEN # LLRQ SENT MESSAGE # 01007 M01S00995.exdrvr +++| BEGIN # LLRQ # 01008 M01S00996.exdrvr +++| MBF$SENT[0] = TRUE; # MESSAGE SENT TO PP # 01009 M01S00997.exdrvr +++| LLR$CIF[0] = FMR$CIF[0]; 01010 M01S00998.exdrvr +++| END # LLRQ # 01011 M01S00999.exdrvr +++| 01012 M01S01000.exdrvr +++|# 01013 M01S01001.exdrvr +++|* DO NOT INCREMENT MESSAGE COUNT IF NO M860 RESPONSE EXPECTED. 01014 M01S01002.exdrvr +++|# 01015 M01S01003.exdrvr +++| 01016 M01S01004.exdrvr +++| IF NOT MS$MSG$R[0] 01017 M01S01005.exdrvr +++| THEN # DRIVER-INITIATED MESSAGE # 01018 M01S01006.exdrvr +++| BEGIN # ADD # 01019 M01S01007.exdrvr +++| MSGCNT(FMR$CIF[0],LLR$CU[0]) = MSGCNT(FMR$CIF[0],LLR$CU[0]) 01020 M01S01008.exdrvr +++| + RESPCOUNT; 01021 M01S01009.exdrvr +++| # UPDATE CHANNEL MSG COUNT # 01022 M01S01010.exdrvr +++| END # ADD # 01023 M01S01011.exdrvr +++| 01024 M01S01012.exdrvr +++|# 01025 M01S01013.exdrvr +++|* PRESET PP CALL BLOCK TABLE ENTRY, IF NO PP IS ACTIVE ON 01026 M01S01014.exdrvr +++|* THE CHOSEN CHANNEL. 01027 M01S01015.exdrvr +++|# 01028 M01S01016.exdrvr +++| 01029 M01S01017.exdrvr +++|CALLPP1: 01030 M01S01018.exdrvr +++| IF B<FMR$CIF[0],1>UD$WBACT[CU] EQ OFF 01031 M01S01019.exdrvr +++| THEN # FREE CHANNEL # 01032 M01S01020.exdrvr +++| BEGIN # CALL PP # 01033 M01S01021.exdrvr +++| PPCBENCNT = PPCBENCNT + 1; # CREATE NEW ENTRY # 01034 M01S01022.exdrvr +++| B<FMR$CIF[0],1>UD$WBACT[CU] = ON; 01035 M01S01023.exdrvr +++| PPU$MBADDR[CALLINDEX] = P<FETMWB>; 01036 M01S01024.exdrvr +++| PPU$FC[CALLINDEX] = FCODE; 01037 M01S01025.exdrvr +++| PPU$ACTIVE[CALLINDEX] = TRUE; 01038 M01S01026.exdrvr +++| PPU$ESTORD[CALLINDEX] = UD$ESTO[CU]; 01039 M01S01027.exdrvr +++| PPU$CNTORD[CALLINDEX] = CU; 01040 M01S01028.exdrvr +++| PPT$WORD0[0] = PPU$WORD0[CALLINDEX]; # PRESET FOR PP CALL # 01041 M01S01029.exdrvr +++| SPC$ADDR[0] = LOC(PPT$WORD0[0]); 01042 M01S01030.exdrvr +++| REPEAT WHILE PPT$WORD0[0] NQ 0 01043 M01S01031.exdrvr +++| DO # ISSUE PP CALL # 01044 M01S01032.exdrvr +++| BEGIN # PP # 01045 M01S01033.exdrvr +++| SYSTEM(SPC,NRCL); 01046 M01S01034.exdrvr +++| END # PP # 01047 M01S01035.exdrvr +++| 01048 M01S01036.exdrvr +++| END # CALL PP # 01049 M01S01037.exdrvr +++| 01050 M01S01038.exdrvr +++| DRVRACTIVE = TRUE; 01051 M01S01039.exdrvr +++| RETURN; 01052 M01S01040.exdrvr +++| 01053 M01S01041.exdrvr +++|CALLPP2: 01054 M01S01042.exdrvr +++| MESSAGE(FEMSG,UDFL1); 01055 M01S01043.exdrvr +++| ABORT; 01056 M01S01044.exdrvr +++| END # CALLPP # 01057 M01S01045.exdrvr +++| 01058 M01S01046.exdrvr +++| TERM 01059 M01S01047.exdrvr +++|PROC CRMSG; 01060 M01S01048.exdrvr +++|# TITLE CRMSG - CREATE M860 MESSAGE. # 01061 M01S01049.exdrvr +++| 01062 M01S01050.exdrvr +++| BEGIN # CRMSG # 01063 M01S01051.exdrvr +++| 01064 M01S01052.exdrvr +++|# 01065 M01S01053.exdrvr +++|** CRMSG - CREATE M860 MESSAGE. 01066 M01S01054.exdrvr +++|* 01067 M01S01055.exdrvr +++|* *CRMSG* CREATES AN M860 MESSAGE WITHIN A UDT MESSAGE BUFFER. 01068 M01S01056.exdrvr +++|* 01069 M01S01057.exdrvr +++|* PROC CRMSG 01070 M01S01058.exdrvr +++|* 01071 M01S01059.exdrvr +++|* ENTRY P<LLRQ> = *DRQUEUE* ENTRY ADDRESS. 01072 M01S01060.exdrvr +++|* 01073 M01S01061.exdrvr +++|* P<UDT$MSG> = UDT MESSAGE BUFFER ADDRESS. 01074 M01S01062.exdrvr +++|* 01075 M01S01063.exdrvr +++|* THE UDT MESSAGE BUFFER CONTAINS THE M860 FUNCTION 01076 M01S01064.exdrvr +++|* DEFINING THE MESSAGE TO BE CREATED. 01077 M01S01065.exdrvr +++|* 01078 M01S01066.exdrvr +++|* EXIT IF THE M860 FUNCTION WAS A PATH/DEVICE STATUS CHANGE 01079 M01S01067.exdrvr +++|* OR A *START ERROR LOG*, AND THE UDT HAS BEEN 01080 M01S01068.exdrvr +++|* COMPLETELY PROCESSED, THEN THE UDT MESSAGE BUFFER 01081 M01S01069.exdrvr +++|* ACTIVE FLAG IS LEFT CLEAR, AND NO MESSAGE IS CREATED. 01082 M01S01070.exdrvr +++|* OTHERWISE, AN M860 MESSAGE IS CREATED, AND THE ACTIVE 01083 M01S01071.exdrvr +++|* FLAG IS SET. 01084 M01S01072.exdrvr +++|* 01085 M01S01073.exdrvr +++|* MESSAGES *EXEC ABNORMAL, CRMSG1.* - UDT MESSAGE BUFFER STILL 01086 M01S01074.exdrvr +++|* IN USE, OR MESSAGE 01087 M01S01075.exdrvr +++|* SEQUENCE NUMBER IS CLEARED. 01088 M01S01076.exdrvr +++|* 01089 M01S01077.exdrvr +++|* *EXEC ABNORMAL, CRMSG1A.* - MULTIPLE REQUESTS ARE 01090 M01S01078.exdrvr +++|* PROCESSING SERVICE CELLS 01091 M01S01079.exdrvr +++|* WHEN TURNING ON A DRD. 01092 M01S01080.exdrvr +++|*
Line S01081 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01093 M02S01081.exdrvr2 ---|* *EXEC ABNORMAL, CRMSG2.* - TWO ACKNOWLEDGE FLAGS WERE
Line S01082 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01094 M02S01082.exdrvr2 ---|* SET DURING A PATH STATUS
Line S01083 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01095 M02S01083.exdrvr2 ---|* CHANGE.
Line S01084 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01096 M02S01084.exdrvr2 ---|* 01097 M01S01085.exdrvr +++|* *EXEC ABNORMAL, CRMSG4.* - MULTIPLE REQUESTS ARE 01098 M01S01086.exdrvr +++|* PROCESSING SERVICE CELLS 01099 M01S01087.exdrvr +++|* WHEN TURNING ON AN SM. 01100 M01S01088.exdrvr +++|* 01101 M01S01089.exdrvr +++|* *EXEC ABNORMAL, CRMSG5.* - INVALID SUBTYPE FOR A 01102 M01S01090.exdrvr +++|* *START ERROR LOG* FUNCTION. 01103 M01S01091.exdrvr +++|* 01104 M01S01092.exdrvr +++|* NOTES A UDT MESSAGE BUFFER IS NEVER CLEARED, EXCEPT WHEN 01105 M01S01093.exdrvr +++|* PREPARING TO CREATE ANOTHER MESSAGE IN IT. THIS IS 01106 M01S01094.exdrvr +++|* DONE TO KEEP AN ACCURATE HISTORY FOR DEBUGGING 01107 M01S01095.exdrvr +++|* PURPOSES. 01108 M01S01096.exdrvr +++|# 01109 M01S01097.exdrvr +++| 01110 M01S01098.exdrvr +++| 01111 M01S01099.exdrvr +++|# 01112 M01S01100.exdrvr +++|**** PROC CRMSG - XREF LIST BEGIN. 01113 M01S01101.exdrvr +++|# 01114 M01S01102.exdrvr +++| 01115 M01S01103.exdrvr +++| XREF 01116 M01S01104.exdrvr +++| BEGIN 01117 M01S01105.exdrvr +++| PROC ABORT; # ABORT # 01118 M01S01106.exdrvr +++| PROC GETCHAN; # ALLOCATE CHANNEL # 01119 M01S01107.exdrvr +++| PROC MESSAGE; # ISSUE DAYFILE MESSAGE # 01120 M01S01108.exdrvr +++| PROC PDATE; # GET PACKED DATE AND TIME # 01121 M01S01109.exdrvr +++| PROC ZFILL; # ZERO-FILL BUFFER # 01122 M01S01110.exdrvr +++| END 01123 M01S01111.exdrvr +++| 01124 M01S01112.exdrvr +++|# 01125 M01S01113.exdrvr +++|**** PROC CRMSG - XREF LIST END. 01126 M01S01114.exdrvr +++|# 01127 M01S01115.exdrvr +++| 01128 M01S01116.exdrvr +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 01129 M01S01117.exdrvr +++|*CALL,COMBFAS 01130 M01S01118.exdrvr +++|*CALL,COMBCDD 01131 M01S01119.exdrvr +++|*CALL,COMBCPR 01132 M01S01120.exdrvr +++|*CALL,COMBFET 01133 M01S01121.exdrvr +++|*CALL,COMBHFC 01134 M01S01122.exdrvr +++|*CALL,COMBLBL 01135 M01S01123.exdrvr +++|*CALL,COMBLRQ 01136 M01S01124.exdrvr +++|*CALL,COMBUDT 01137 M01S01125.exdrvr +++|*CALL,COMXCTF 01138 M01S01126.exdrvr +++|*CALL,COMXMSC 01139 M01S01127.exdrvr +++| 01140 M01S01128.exdrvr +++|# 01141 M01S01129.exdrvr +++|* DEFINITIONS TO CREATE *CHANGE STATUS* MESSAGES. 01142 M01S01130.exdrvr +++|# 01143 M01S01131.exdrvr +++| 01144 M01S01132.exdrvr +++| DEF CIFMASK #X"0000"#; # TURN OFF *CIF* ERROR LOGGING # 01145 M01S01133.exdrvr +++| DEF CONTDAV #1#; # CONTROLLER DEVICE ADDR VALUE # 01146 M01S01134.exdrvr +++| DEF DRDHNMASK #X"8190"#; # SET DRD/HANDLER ERROR LOGGING # 01147 M01S01135.exdrvr +++| DEF EOTBSC #1#; # EOT BUFFER STRIPE COUNT # 01148 M01S00005.exdrvr2 +++| DEF FIELDSM1 #7#; # COUNT OF 6-BIT FIELDS MINUS 1 # 01149 M01S01136.exdrvr +++|
Line S01137 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01150 M02S01137.exdrvr2 ---| ITEM DIAGACK U; # DIAGNOSTIC ACK BIT INDEX # 01151 M01S01138.exdrvr +++| ITEM DRDWORD U; # SAVED DRD STATUS WORD ADDRESS # 01152 M01S01139.exdrvr +++| ITEM FOUND B; # SET IF PATH/DEVICE FOUND # 01153 M01S01140.exdrvr +++| ITEM I I; # INDEX # 01154 M01S01141.exdrvr +++| ITEM J I; # INDEX #
Line S01142 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01155 M02S01142.exdrvr2 ---| ITEM K I; # INDEX # 01156 M01S01143.exdrvr +++| ITEM MSGFTN U; # SAVED M860 FUNCTION # 01157 M01S01144.exdrvr +++| ITEM MSGSEQN U; # SAVED MSG SEQUENCE NUMBER # 01158 M01S01145.exdrvr +++| ITEM NEWPTHSTAT U; # NEW PATH STATUS #
Line S01146 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01159 M02S01146.exdrvr2 ---| ITEM ONACK U; # ON/OFF ACK BIT INDEX # 01160 M01S01147.exdrvr +++| ITEM START U; # 1ST LINE TO CHECK ACK BITS #
Line S01148 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01161 M02S01148.exdrvr2 ---| ITEM STSP U; # SM/DRD STATUS FROM 1ST CU #
Line S01149 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01162 M02S01149.exdrvr2 ---| ITEM STSS U; # SM/DRD STATUS FROM 2ND CU # 01163 M01S01150.exdrvr +++| ITEM TEMPCIF U; # SAVED *CIF* NUMBER # 01164 M01S01151.exdrvr +++| ITEM TEMPCSN0 U; # FIRST 4 BYTES OF CSN # 01165 M01S01152.exdrvr +++| ITEM TEMPCSN1 U; # NEXT 6 BYTES OF CSN # 01166 M01S01153.exdrvr +++| ITEM TEMPCSN2 U; # LAST 2 BYTES OF CSN # 01167 M01S01154.exdrvr +++| ITEM TEMPDRD U; # SAVED *DRD* UNIT NUMBER # 01168 M01S01155.exdrvr +++| 01169 M01S01156.exdrvr +++|# 01170 M01S01157.exdrvr +++|* ARRAY USED TO CREATE *SET DATE/TIME* MESSAGES. 01171 M01S01158.exdrvr +++|# 01172 M01S01159.exdrvr +++| 01173 M01S01160.exdrvr +++| ARRAY DATETIME [0:0] S(1); # PACKED DATE AND TIME # 01174 M01S01161.exdrvr +++| BEGIN 01175 M01S01162.exdrvr +++| ITEM DT$YEAR U(00,24,06); # YEAR MINUS 1970 # 01176 M01S01163.exdrvr +++| ITEM DT$MONTH U(00,30,06); # MONTH # 01177 M01S01164.exdrvr +++| ITEM DT$DAY U(00,36,06); # DAY # 01178 M01S01165.exdrvr +++| ITEM DT$HOUR U(00,42,06); # HOUR # 01179 M01S01166.exdrvr +++| ITEM DT$MINUTE U(00,48,06); # MINUTE # 01180 M01S01167.exdrvr +++| ITEM DT$SECOND U(00,54,06); # SECOND # 01181 M01S01168.exdrvr +++| END 01182 M01S01169.exdrvr +++| 01183 M01S01170.exdrvr +++|# 01184 M01S01171.exdrvr +++|* ARRAYS USED TO CREATE *CHANGE STATUS* MESSAGES. 01185 M01S01172.exdrvr +++|# 01186 M01S01173.exdrvr +++| 01187 M01S01174.exdrvr +++| ARRAY PTH [0:6] S(1); # UDT PATH STRUCTURE # 01188 M01S01175.exdrvr +++| BEGIN
Line S01176 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01189 M02S01176.exdrvr2 ---| ITEM PTH$ACK U(00,00,06) = [7,,7,,3,7,7];
Line S01177 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01190 M02S01177.exdrvr2 ---| ITEM PTH$LASTLN U(00,06,06) = [5,,7,,2,3,1];
Line S01178 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01191 M02S01178.exdrvr2 ---| ITEM PTH$FRSTLN U(00,12,06) = [4,,6,,2,3,1]; 01192 M01S00006.exdrvr2 +++| ITEM PTH$LASTLN U(00,06,06) = [6,,10,,3,4,2]; 01193 M01S00007.exdrvr2 +++| ITEM PTH$FRSTLN U(00,12,06) = [5,,7,,3,4,1]; 01194 M01S01179.exdrvr +++| END 01195 M01S01180.exdrvr +++|
Line S01181 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01196 M02S01181.exdrvr2 ---| ARRAY BNODE [2:5] S(1); # BOTTOM PATH NODES # 01197 M01S00008.exdrvr2 +++| ARRAY BNODE [3:6] S(1); # BOTTOM PATH NODES # 01198 M01S01182.exdrvr +++| BEGIN 01199 M01S01183.exdrvr +++| ITEM NODE$B U(00,00,60); # PATH WORD # 01200 M01S01184.exdrvr +++| ITEM NODE$B0 U(00,00,06) = [0,0,1,1]; 01201 M01S01185.exdrvr +++| ITEM NODE$B1 U(00,06,06) = [1,1,3,3];
Line S01186 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01202 M02S01186.exdrvr2 ---| ITEM NODE$B2 U(00,12,06) = [0,0,0,0];
Line S01187 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01203 M02S01187.exdrvr2 ---| ITEM NODE$B3 U(00,18,06) = [1,1,2,2];
Line S01188 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01204 M02S01188.exdrvr2 ---| ITEM NODE$B4 U(00,24,06) = [,0,1,1];
Line S01189 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01205 M02S01189.exdrvr2 ---| ITEM NODE$B5 U(00,30,06) = [,1,3,3];
Line S01190 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01206 M02S01190.exdrvr2 ---| ITEM NODE$B6 U(00,36,06) = [,0,0,0];
Line S01191 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01207 M02S01191.exdrvr2 ---| ITEM NODE$B7 U(00,42,06) = [,1,2,2]; 01208 M01S00009.exdrvr2 +++| ITEM NODE$B2 U(00,12,06) = [2,0,0,0]; 01209 M01S00010.exdrvr2 +++| ITEM NODE$B3 U(00,18,06) = [3,1,2,2]; 01210 M01S00011.exdrvr2 +++| ITEM NODE$B4 U(00,24,06) = [0,0,1,1]; 01211 M01S00012.exdrvr2 +++| ITEM NODE$B5 U(00,30,06) = [1,1,3,3]; 01212 M01S00013.exdrvr2 +++| ITEM NODE$B6 U(00,36,06) = [2,0,0,0]; 01213 M01S00014.exdrvr2 +++| ITEM NODE$B7 U(00,42,06) = [3,1,2,2]; 01214 M01S01192.exdrvr +++| END 01215 M01S01193.exdrvr +++|
Line S01194 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01216 M02S01194.exdrvr2 ---| ARRAY TNODE [1:7] S(1); # TOP PATH NODES # 01217 M01S00015.exdrvr2 +++| ARRAY TNODE [1:10] S(1); # TOP PATH NODES # 01218 M01S01195.exdrvr +++| BEGIN 01219 M01S01196.exdrvr +++| ITEM NODE$T U(00,00,60); # PATH WORD #
Line S01197 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01220 M02S01197.exdrvr2 ---| ITEM NODE$T0 U(00,00,06) = [0,0,1,0,2,0,1];
Line S01198 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01221 M02S01198.exdrvr2 ---| ITEM NODE$T1 U(00,06,06) = [0,0,1,0,2,0,1];
Line S01199 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01222 M02S01199.exdrvr2 ---| ITEM NODE$T2 U(00,12,06) = [0,1,3,0,2,0,1];
Line S01200 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01223 M02S01200.exdrvr2 ---| ITEM NODE$T3 U(00,18,06) = [0,1,3,0,2,0,1];
Line S01201 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01224 M02S01201.exdrvr2 ---| ITEM NODE$T4 U(00,24,06) = [1,,0,1,3,0,1];
Line S01202 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01225 M02S01202.exdrvr2 ---| ITEM NODE$T5 U(00,30,06) = [1,,0,1,3,0,1];
Line S01203 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01226 M02S01203.exdrvr2 ---| ITEM NODE$T6 U(00,36,06) = [1,,2,1,3,0,1];
Line S01204 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01227 M02S01204.exdrvr2 ---| ITEM NODE$T7 U(00,42,06) = [1,,2,1,3,0,1]; 01228 M01S00016.exdrvr2 +++| ITEM NODE$T0 U(00,00,06) = [0,1,0,1,0,2,0,1,2,3]; 01229 M01S00017.exdrvr2 +++| ITEM NODE$T1 U(00,06,06) = [0,1,0,1,0,2,0,1,2,3]; 01230 M01S00018.exdrvr2 +++| ITEM NODE$T2 U(00,12,06) = [0,1,0,3,0,2,0,1,2,3]; 01231 M01S00019.exdrvr2 +++| ITEM NODE$T3 U(00,18,06) = [0,1,0,3,0,2,0,1,2,3]; 01232 M01S00020.exdrvr2 +++| ITEM NODE$T4 U(00,24,06) = [0,1,1,0,1,3,0,1,2,3]; 01233 M01S00021.exdrvr2 +++| ITEM NODE$T5 U(00,30,06) = [0,1,1,0,1,3,0,1,2,3]; 01234 M01S00022.exdrvr2 +++| ITEM NODE$T6 U(00,36,06) = [0,1,1,2,1,3,0,1,2,3]; 01235 M01S00023.exdrvr2 +++| ITEM NODE$T7 U(00,42,06) = [0,1,1,2,1,3,0,1,2,3]; 01236 M01S01205.exdrvr +++| END 01237 M01S01206.exdrvr +++| 01238 M01S01207.exdrvr +++| SWITCH M860FUNCTN # M860 FUNCTION CODES # 01239 M01S01208.exdrvr +++| , # RESERVED # 01240 M01S01209.exdrvr +++| ACQUIRECRT, # ACQUIRE CARTRIDGE # 01241 M01S01210.exdrvr +++| STORECRT, # STORE CARTRIDGE #
Line S01211 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01242 M02S01211.exdrvr2 ---| READCSN, # READ CSN # 01243 M01S00024.exdrvr2 +++| , # RESERVED # 01244 M01S01212.exdrvr +++| READCRTLBL, # READ CARTRIDGE LABEL # 01245 M01S01213.exdrvr +++| WRTLBLCRT, # WRITE CARTRIDGE LABEL # 01246 M01S01214.exdrvr +++| MNTVOLUME, # MOUNT VOLUME # 01247 M01S01215.exdrvr +++| WRTLBLVOL, # WRITE VOLUME LABEL # 01248 M01S01216.exdrvr +++| ENTERCRT, # ENTER CARTRIDGE #
Line S01217 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01249 M02S01217.exdrvr2 ---| EJECTCRT, # EJECT CARTRIDGE #
Line S01218 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01250 M02S01218.exdrvr2 ---| REQSTAT, # REQUEST STATUS # 01251 M01S00025.exdrvr2 +++| , # RESERVED # 01252 M01S00026.exdrvr2 +++| , # RESERVED # 01253 M01S01219.exdrvr +++| CHANGEPATH, # CHANGE PATH STATUS # 01254 M01S01220.exdrvr +++| DUMPBUFLOG, # DUMP BUFFERED LOG #
Line S01221 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01255 M02S01221.exdrvr2 ---| DUMPMEMORY, # DUMP MEMORY # 01256 M01S00027.exdrvr2 +++| , # RESERVED # 01257 M01S01222.exdrvr +++| SETDATTIME, # SET DATE/TIME #
Line S01223 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01258 M02S01223.exdrvr2 ---| READDATTIM, # READ DATE/TIME # 01259 M01S00028.exdrvr2 +++| , # RESERVED # 01260 M01S01224.exdrvr +++| SETMASCHAN, # SET MASTER CHANNEL # 01261 M01S01225.exdrvr +++| RDRAWSTRP, # READ RAW STRIPE # 01262 M01S01226.exdrvr +++| , # RESERVED # 01263 M01S01227.exdrvr +++| STERRLOG, # START/STOP ERROR LOG #
Line S01228 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01264 M02S01228.exdrvr2 ---| RDERRLOG, # READ ERROR LOG #
Line S01229 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01265 M02S01229.exdrvr2 ---| WRTERRLOG, # WRITE TO ERROR LOG # 01266 M01S00029.exdrvr2 +++| , # RESERVED # 01267 M01S00030.exdrvr2 +++| , # RESERVED # 01268 M01S01230.exdrvr +++| SETERRLEN, # SET ERROR LOG LENGTH #
Line S01231 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01269 M02S01231.exdrvr2 ---| COPYVOLUME, # COPY VOLUME # 01270 M01S00031.exdrvr2 +++| , # RESERVED # 01271 M01S01232.exdrvr +++| , # RESERVED # 01272 M01S01233.exdrvr +++| , # RESERVED # 01273 M01S01234.exdrvr +++| , # RESERVED #
Line S01235 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01274 M02S01235.exdrvr2 ---| SMTRESTART, # HOST RESTART # 01275 M01S00032.exdrvr2 +++| , # RESERVED # 01276 M01S01236.exdrvr +++| RESTARTCU; # RESTART CONTROLLER # 01277 M01S01237.exdrvr +++| CONTROL EJECT;
Line S00033 Modification History | |
---|---|
M01 (Added by) | exdrvr2 |
M02 (Updated by) | exdrvr4 |
Seq # *Modification Id* Act ----------------------------+ 01278 M02S00033.exdrvr4 ---| CONTROL INERT; 01279 M01S01238.exdrvr +++| 01280 M01S01239.exdrvr +++| IF MBF$SBADDR[0] NQ 0 ## 01281 M01S01240.exdrvr +++| OR MS$MSQN[0] EQ 0 01282 M01S01241.exdrvr +++| THEN # MESSAGE ERROR # 01283 M01S01242.exdrvr +++| BEGIN # ABORT # 01284 M01S01243.exdrvr +++| FE$RTN[0] = "CRMSG1."; 01285 M01S01244.exdrvr +++| MESSAGE(FEMSG,UDFL1); 01286 M01S01245.exdrvr +++| ABORT; 01287 M01S01246.exdrvr +++| END # ABORT # 01288 M01S01247.exdrvr +++| 01289 M01S01248.exdrvr +++| IF MS$MSG[0] NQ HFC$CHSSMA # HANDLED LATER # 01290 M01S01249.exdrvr +++| AND MS$MSG[0] NQ HFC$CHSDRD 01291 M01S01250.exdrvr +++| THEN # INDICATE DRIVER ACTIVITY # 01292 M01S01251.exdrvr +++| BEGIN # ACTIVE # 01293 M01S01252.exdrvr +++| DRVRACTIVE = TRUE; 01294 M01S01253.exdrvr +++| END # ACTIVE # 01295 M01S01254.exdrvr +++| 01296 M01S01255.exdrvr +++| IF MBF$SAVE[0] NQ SAVENONE 01297 M01S01256.exdrvr +++| THEN # PRESERVE PART OF MSG BUFFER # 01298 M01S01257.exdrvr +++| BEGIN # PRESET NORMALLY # 01299 M01S01258.exdrvr +++| MBF$ACTIVE[0] = TRUE; # MESSAGE BUFFER NOW ACTIVE # 01300 M01S01259.exdrvr +++| MSGSEQN = MS$MSQN[0]; # SAVE MSG SEQUENCE NUMBER # 01301 M01S01260.exdrvr +++| MSGFTN = MS$MSG[0]; # SAVE M860 FUNCTION # 01302 M01S01261.exdrvr +++| IF MBF$SAVE[0] EQ SAVEMOST 01303 M01S01262.exdrvr +++| THEN # SAVE CSN AND DRD # 01304 M01S01263.exdrvr +++| BEGIN # SAVE # 01305 M01S01264.exdrvr +++| TEMPCSN0 = MS$CART0[0]; 01306 M01S01265.exdrvr +++| TEMPCSN1 = MS$CART1[0]; 01307 M01S01266.exdrvr +++| TEMPCSN2 = MS$CART2[0]; 01308 M01S01267.exdrvr +++| TEMPDRD = MS$DRDN[0]; 01309 M01S01268.exdrvr +++| END # SAVE # 01310 M01S01269.exdrvr +++| 01311 M01S01270.exdrvr +++| ZFILL(UDT$MSG,MSGLT); # CLEAR MESSAGE BUFFER # 01312 M01S01271.exdrvr +++| MS$MSG[0] = MSGFTN; 01313 M01S01272.exdrvr +++| MS$MSQN[0] = MSGSEQN; 01314 M01S01273.exdrvr +++| IF MBF$SAVE[0] EQ SAVEMOST 01315 M01S01274.exdrvr +++| THEN # RESTORE CSN AND DRD # 01316 M01S01275.exdrvr +++| BEGIN # RESTORE # 01317 M01S01276.exdrvr +++| MS$CART0[0] = TEMPCSN0; 01318 M01S01277.exdrvr +++| MS$CART1[0] = TEMPCSN1; 01319 M01S01278.exdrvr +++| MS$CART2[0] = TEMPCSN2; 01320 M01S01279.exdrvr +++| MS$DRDN[0] = TEMPDRD; 01321 M01S01280.exdrvr +++| END # RESTORE # 01322 M01S01281.exdrvr +++| 01323 M01S01282.exdrvr +++| END # PRESET NORMALLY # 01324 M01S01283.exdrvr +++| 01325 M01S01284.exdrvr +++| GOTO M860FUNCTN[MS$MSG$M[0]]; 01326 M01S01285.exdrvr +++| 01327 M01S01286.exdrvr +++|# 01328 M01S01287.exdrvr +++|* CREATE *LOAD CARTRIDGE* MESSAGE. 01329 M01S01288.exdrvr +++|# 01330 M01S01289.exdrvr +++| 01331 M01S01290.exdrvr +++|ACQUIRECRT: 01332 M01S01291.exdrvr +++| MS$YADD[0] = LLR$Y[0]; # SET COORDINATES # 01333 M01S01292.exdrvr +++| MS$ZADD[0] = LLR$Z[0];
Line S01293 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | msea023 |
Seq # *Modification Id* Act ----------------------------+ 01334 M02S01293.msea023 ---|
Line S01294 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | msea023 |
Seq # *Modification Id* Act ----------------------------+ 01335 M02S01294.msea023 ---|#
Line S01295 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | msea023 |
Seq # *Modification Id* Act ----------------------------+ 01336 M02S01295.msea023 ---|* M860 MICROCODE REQUIRES NON-ZERO CSN ON ALL LOADS.
Line S01296 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | msea023 |
Seq # *Modification Id* Act ----------------------------+ 01337 M02S01296.msea023 ---|#
Line S01297 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | msea023 |
Seq # *Modification Id* Act ----------------------------+ 01338 M02S01297.msea023 ---| 01339 M01S01298.exdrvr +++| MS$CART0[0] = O"31160552100"; # ** *IBM * EBCDIC #
Line S01299 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | msea023 |
Seq # *Modification Id* Act ----------------------------+ 01340 M02S01299.msea023 ---| MS$CART2[0] = MS$MSQN[0]; # ** ADD GARBAGE CSN # 01341 M01S00003.msea023 +++| SLOWFOR I = 0 STEP 1 UNTIL FIELDSM1 01342 M01S00004.msea023 +++| DO # CONVERT CSN TO EBCDIC # 01343 M01S00005.msea023 +++| BEGIN # CONVERT # 01344 M01S00006.msea023 +++| IF I LQ 5 ## 01345 M01S00007.msea023 +++| THEN # BYTES 1 THRU 6 # 01346 M01S00008.msea023 +++| BEGIN # I LQ 5 # 01347 M01S00009.msea023 +++| B<I*8,8>MS$CART1[0] = X"F0" LOR B<I*6,6>LLR$CSND[0] - O"33"; 01348 M01S00010.msea023 +++| END # I LQ 5 # 01349 M01S00011.msea023 +++| 01350 M01S00012.msea023 +++| ELSE # BYTES 7 AND 8 # 01351 M01S00013.msea023 +++| BEGIN # I GR 5 # 01352 M01S00014.msea023 +++| B<(I-6)*8,8>MS$CART2[0] = X"F0" LOR 01353 M01S00015.msea023 +++| B<I*6,6>LLR$CSND[0] - O"33"; 01354 M01S00016.msea023 +++| END # I GR 5 # 01355 M01S00017.msea023 +++| 01356 M01S00018.msea023 +++| END # CONVERT # 01357 M01S00019.msea023 +++| 01358 M01S01300.exdrvr +++| GOTO ENTERCRT; # SET DRD AND LOCATION # 01359 M01S01301.exdrvr +++| RETURN; 01360 M01S01302.exdrvr +++| 01361 M01S01303.exdrvr +++|# 01362 M01S01304.exdrvr +++|* CREATE *CHANGE DRD STATUS* MESSAGE. 01363 M01S01305.exdrvr +++|# 01364 M01S01306.exdrvr +++| 01365 M01S01307.exdrvr +++|CHANGEDRD: 01366 M01S01308.exdrvr +++| FOUND = FALSE; 01367 M01S01309.exdrvr +++| UD$DRDWAIT[LLR$CU[0]] = FALSE; # ASSUME CHANGING DRD-S EMPTY # 01368 M01S01310.exdrvr +++| SLOWFOR I = 0 STEP 1 WHILE I LQ MAX$DRD AND NOT FOUND 01369 M01S01311.exdrvr +++| DO # SEARCH FOR DRD CHANGING STATUS # 01370 M01S01312.exdrvr +++| BEGIN # SEARCH # 01371 M01S01313.exdrvr +++| SMO = B<I*6,6>UD$SMORDS[LLR$CU[0]]; 01372 M01S01314.exdrvr +++| IF SMO EQ 0 ## 01373 M01S01315.exdrvr +++| OR NOT SM$EXIST[SMO] 01374 M01S01316.exdrvr +++| THEN # SM NOT FOUND # 01375 M01S01317.exdrvr +++| BEGIN # RETRY # 01376 M01S01318.exdrvr +++| TEST I; 01377 M01S01319.exdrvr +++| END # RETRY # 01378 M01S01320.exdrvr +++| 01379 M01S01321.exdrvr +++| DRST = DRST1; # ASSUME 2ND CU # 01380 M01S01322.exdrvr +++| IF LLR$CU[0] EQ SM$CUO0[SMO] 01381 M01S01323.exdrvr +++| THEN # 1ST CU CHANGING DRD STATUS # 01382 M01S01324.exdrvr +++| BEGIN # RESET # 01383 M01S01325.exdrvr +++| DRST = DRST0; 01384 M01S01326.exdrvr +++| END # RESET # 01385 M01S01327.exdrvr +++| 01386 M01S01328.exdrvr +++| DRDWORD = LOC(D1$ST[SMO]); # CHECK LOWER DRD FIRST # 01387 M01S01329.exdrvr +++| SLOWFOR J = 1 STEP 1 WHILE J LQ MAX$SMDRD AND NOT FOUND 01388 M01S01330.exdrvr +++| DO # CHECK BOTH DRD-S OF ELIGIBLE SM # 01389 M01S01331.exdrvr +++| BEGIN # DRD-S # 01390 M01S01332.exdrvr +++| P<PTHSTAT> = DRDWORD; # CHECK NEXT DRD # 01391 M01S01333.exdrvr +++| IF PATHBIT(DRST,PATH$DF"U$EXISTS") EQ ON ## 01392 M01S01334.exdrvr +++| AND PATHBIT(DRST,PATH$DF"U$DONE") EQ OFF # NOT CHECKED # 01393 M01S01335.exdrvr +++| AND (UD$CNUP[LLR$CU[0]] # IGNORE ACK BITS IF SET # 01394 M01S01336.exdrvr +++| OR PATHBIT(DRST,PATH$DF"U$CU$ACK") EQ ON # ON/OFF STATUS # 01395 M01S01337.exdrvr +++| OR PATHBIT(DRST,PATH$DF"U$DIAG$ACK") EQ ON) # DIAG STATUS # 01396 M01S01338.exdrvr +++| THEN # DRD CHANGING STATUS # 01397 M01S01339.exdrvr +++| BEGIN # CHANGING # 01398 M01S01340.exdrvr +++| IF (P<PTHSTAT> EQ LOC(D0$ST[SMO]) AND D0$FULL[SMO] ## 01399 M01S01341.exdrvr +++| AND P<LLRQ> NQ D0$LLADR[SMO]) # OTHER DRD COULD GO OFF # 01400 M01S01342.exdrvr +++| OR (P<PTHSTAT> EQ LOC(D1$ST[SMO]) AND D1$FULL[SMO] ## 01401 M01S01343.exdrvr +++| AND P<LLRQ> NQ D1$LLADR[SMO]) 01402 M01S01344.exdrvr +++| THEN # CHOSEN DRD STILL FULL # 01403 M01S01345.exdrvr +++| BEGIN # SKIP # 01404 M01S01346.exdrvr +++| UD$DRDWAIT[LLR$CU[0]] = TRUE; # HAVE LLRQ RETRY # 01405 M01S01347.exdrvr +++| DRDWORD = LOC(D0$ST[SMO]); # IN CASE AT DRD 1 # 01406 M01S01348.exdrvr +++| TEST J; 01407 M01S01349.exdrvr +++| END # SKIP # 01408 M01S01350.exdrvr +++| 01409 M01S01351.exdrvr +++| PATHBIT(DRST,PATH$DF"U$DONE") = ON; 01410 M01S01352.exdrvr +++| IF P<PTHSTAT> EQ LOC(D0$ST[SMO]) 01411 M01S01353.exdrvr +++| THEN # UPPER DRD PROCESSED # 01412 M01S01354.exdrvr +++| BEGIN # DRD 0 # 01413 M01S01355.exdrvr +++| D0$DONE[SMO] = TRUE; 01414 M01S01356.exdrvr +++| END # DRD 0 # 01415 M01S01357.exdrvr +++| 01416 M01S01358.exdrvr +++| ELSE # LOWER DRD PROCESSED # 01417 M01S01359.exdrvr +++| BEGIN # DRD 1 # 01418 M01S01360.exdrvr +++| D1$DONE[SMO] = TRUE; 01419 M01S01361.exdrvr +++| END # DRD 1 # 01420 M01S01362.exdrvr +++| 01421 M01S01363.exdrvr +++| FOUND = TRUE; 01422 M01S01364.exdrvr +++| TEST J; 01423 M01S01365.exdrvr +++| END # CHANGING # 01424 M01S01366.exdrvr +++| 01425 M01S01367.exdrvr +++| DRDWORD = LOC(D0$ST[SMO]); # CHECK UPPER DRD NEXT # 01426 M01S01368.exdrvr +++| END # DRD-S # 01427 M01S01369.exdrvr +++| 01428 M01S01370.exdrvr +++| END # SEARCH # 01429 M01S01371.exdrvr +++| 01430 M01S01372.exdrvr +++| IF NOT FOUND 01431 M01S01373.exdrvr +++| THEN # NO DRD LEFT TO PROCESS # 01432 M01S01374.exdrvr +++| BEGIN # EXIT # 01433 M01S01375.exdrvr +++| IF UD$DRDWAIT[LLR$CU[0]] 01434 M01S01376.exdrvr +++| THEN # STILL WAITING FOR DRD TO EMPTY # 01435 M01S01377.exdrvr +++| BEGIN # WAIT # 01436 M01S01378.exdrvr +++| RETURN; 01437 M01S01379.exdrvr +++| END # WAIT # 01438 M01S01380.exdrvr +++| 01439 M01S01381.exdrvr +++| DRVRACTIVE = TRUE; # SO DRD ERROR SENDS K-DISPLAY # 01440 M01S01382.exdrvr +++| SLOWFOR I = 0 STEP 1 UNTIL MAX$DRD 01441 M01S01383.exdrvr +++| DO # CLEAR DRD DONE FLAGS # 01442 M01S01384.exdrvr +++| BEGIN # CLEAR # 01443 M01S01385.exdrvr +++| SMO = B<I*6,6>UD$SMORDS[LLR$CU[0]]; 01444 M01S01386.exdrvr +++| IF SMO EQ 0 ## 01445 M01S01387.exdrvr +++| OR NOT SM$EXIST[SMO] # NO SM # 01446 M01S01388.exdrvr +++| THEN # TRY NEXT ORDINAL # 01447 M01S01389.exdrvr +++| BEGIN # NEXT # 01448 M01S01390.exdrvr +++| TEST I; 01449 M01S01391.exdrvr +++| END # NEXT # 01450 M01S01392.exdrvr +++| 01451 M01S01393.exdrvr +++| DRST = DRST1; # ASSUME 2ND CU # 01452 M01S01394.exdrvr +++| IF LLR$CU[0] EQ SM$CUO0[SMO] 01453 M01S01395.exdrvr +++| THEN # 1ST CU PROCESSED DRD # 01454 M01S01396.exdrvr +++| BEGIN # RESET # 01455 M01S01397.exdrvr +++| DRST = DRST0; 01456 M01S01398.exdrvr +++| END # RESET # 01457 M01S01399.exdrvr +++| 01458 M01S01400.exdrvr +++| P<PTHSTAT> = LOC(D0$ST[SMO]); # CLEAR DRD 0 FLAG # 01459 M01S01401.exdrvr +++| PATHBIT(DRST,PATH$DF"U$DONE") = OFF; 01460 M01S00001.exdrvr3 +++| GOTO CRMSGA; 01461 M01S00002.exdrvr3 +++| 01462 M01S00003.exdrvr3 +++|CRMSGA:## 01463 M01S00004.exdrvr3 +++| D0$FLAG[SMO] = B<12,6>D0$WD0[SMO] LOR B<18,6>D0$WD0[SMO]; 01464 M01S00005.exdrvr3 +++| GOTO CRMSGB; 01465 M01S00006.exdrvr3 +++| 01466 M01S00007.exdrvr3 +++|CRMSGB:##
Line S01402 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01467 M02S01402.exdrvr2 ---| IF DRST NQ 0
Line S01403 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01468 M02S01403.exdrvr2 ---| THEN # RESET FOR *SSALTER* #
Line S01404 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01469 M02S01404.exdrvr2 ---| BEGIN # FIX #
Line S01405 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01470 M02S01405.exdrvr2 ---| STSP = D0$STSP[SMO];
Line S01406 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01471 M02S01406.exdrvr2 ---| STSS = D0$STSS[SMO];
Line S01407 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01472 M02S01407.exdrvr2 ---| D0$FLAG[SMO] = STSP LOR STSS;
Line S01408 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01473 M02S01408.exdrvr2 ---| END # FIX #
Line S01409 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01474 M02S01409.exdrvr2 ---| 01475 M01S01410.exdrvr +++| P<PTHSTAT> = LOC(D1$ST[SMO]); # CLEAR DRD 1 FLAG # 01476 M01S01411.exdrvr +++| PATHBIT(DRST,PATH$DF"U$DONE") = OFF;
Line S01412 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01477 M02S01412.exdrvr2 ---| IF DRST NQ 0
Line S01413 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01478 M02S01413.exdrvr2 ---| THEN # RESET FOR *SSALTER* #
Line S01414 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01479 M02S01414.exdrvr2 ---| BEGIN # FIX #
Line S01415 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01480 M02S01415.exdrvr2 ---| STSP = D1$STSP[SMO];
Line S01416 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01481 M02S01416.exdrvr2 ---| STSS = D1$STSS[SMO];
Line S01417 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01482 M02S01417.exdrvr2 ---| D1$FLAG[SMO] = STSP LOR STSS;
Line S01418 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01483 M02S01418.exdrvr2 ---| END # FIX #
Line S01419 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01484 M02S01419.exdrvr2 ---|
Line S00034 Modification History | |
---|---|
M01 (Added by) | exdrvr2 |
M02 (Updated by) | exdrvr3 |
Seq # *Modification Id* Act ----------------------------+ 01485 M02S00034.exdrvr3 ---|
Line S00035 Modification History | |
---|---|
M01 (Added by) | exdrvr2 |
M02 (Updated by) | exdrvr3 |
Seq # *Modification Id* Act ----------------------------+ 01486 M02S00035.exdrvr3 ---| CONTROL REACTIVE;
Line S00036 Modification History | |
---|---|
M01 (Added by) | exdrvr2 |
M02 (Updated by) | exdrvr3 |
Seq # *Modification Id* Act ----------------------------+ 01487 M02S00036.exdrvr3 ---|
Line S00037 Modification History | |
---|---|
M01 (Added by) | exdrvr2 |
M02 (Updated by) | exdrvr3 |
Seq # *Modification Id* Act ----------------------------+ 01488 M02S00037.exdrvr3 ---| D0$FLAG[SMO] = D0$STSP[SMO] LOR D0$STSS[SMO];
Line S00038 Modification History | |
---|---|
M01 (Added by) | exdrvr2 |
M02 (Updated by) | exdrvr3 |
Seq # *Modification Id* Act ----------------------------+ 01489 M02S00038.exdrvr3 ---| D1$FLAG[SMO] = D1$STSP[SMO] LOR D1$STSS[SMO];
Line S00039 Modification History | |
---|---|
M01 (Added by) | exdrvr2 |
M02 (Updated by) | exdrvr3 |
Seq # *Modification Id* Act ----------------------------+ 01490 M02S00039.exdrvr3 ---|
Line S00040 Modification History | |
---|---|
M01 (Added by) | exdrvr2 |
M02 (Updated by) | exdrvr3 |
Seq # *Modification Id* Act ----------------------------+ 01491 M02S00040.exdrvr3 ---| CONTROL INERT;
Line S00041 Modification History | |
---|---|
M01 (Added by) | exdrvr2 |
M02 (Updated by) | exdrvr3 |
Seq # *Modification Id* Act ----------------------------+ 01492 M02S00041.exdrvr3 ---| 01493 M01S00008.exdrvr3 +++| GOTO CRMSGC; 01494 M01S00009.exdrvr3 +++| 01495 M01S00010.exdrvr3 +++|CRMSGC:## 01496 M01S00011.exdrvr3 +++| D1$FLAG[SMO] = B<12,6>D1$WD0[SMO] LOR B<18,6>D1$WD0[SMO]; 01497 M01S01420.exdrvr +++| END # CLEAR # 01498 M01S01421.exdrvr +++| 01499 M01S01422.exdrvr +++| RETURN; 01500 M01S01423.exdrvr +++| END # EXIT # 01501 M01S01424.exdrvr +++| 01502 M01S01425.exdrvr +++| DRVRACTIVE = TRUE; # INDICATE DRIVER ACTIVITY # 01503 M01S01426.exdrvr +++| UD$LLRQA[LLR$CU[0]] = P<LLRQ>; # STORE LLRQ ADDRESS # 01504 M01S01427.exdrvr +++| MBF$ACTIVE[0] = TRUE; 01505 M01S01428.exdrvr +++| MSGSEQN = MS$MSQN$CN[0]; # PRESET MESSAGE BUFFER # 01506 M01S01429.exdrvr +++| MSGFTN = MS$MSG[0]; 01507 M01S01430.exdrvr +++| ZFILL(UDT$MSG,MSGLT); 01508 M01S01431.exdrvr +++| MS$MSQN$CN[0] = MSGSEQN; 01509 M01S01432.exdrvr +++| MS$MSG[0] = MSGFTN; 01510 M01S01433.exdrvr +++| MS$DRDN[0] = D1$SUN[SMO]; # ASSUME LOWER DRD # 01511 M01S01434.exdrvr +++| LLR$DRD[0] = 1; 01512 M01S01435.exdrvr +++| IF P<PTHSTAT> EQ LOC(D0$ST[SMO]) 01513 M01S01436.exdrvr +++| THEN # UPPER DRD BEING CHANGED # 01514 M01S01437.exdrvr +++| BEGIN # RESET # 01515 M01S01438.exdrvr +++| MS$DRDN[0] = D0$SUN[SMO]; 01516 M01S01439.exdrvr +++| LLR$DRD[0] = 0; 01517 M01S01440.exdrvr +++| END # RESET # 01518 M01S01441.exdrvr +++| 01519 M01S01442.exdrvr +++| IF PATHBIT(DRST,PATH$DF"U$ON") EQ 1 ## 01520 M01S01443.exdrvr +++| AND (UD$CNUP[LLR$CU[0]] ## 01521 M01S01444.exdrvr +++| OR PATHBIT(DRST,PATH$DF"U$CU$ACK") EQ 1) 01522 M01S01445.exdrvr +++| THEN # DRD GOING ONLINE # 01523 M01S01446.exdrvr +++| BEGIN # ON # 01524 M01S01447.exdrvr +++| PATHBIT(DRST,PATH$DF"U$CU$ACK") = 1; # IN CASE CU RESTARTING # 01525 M01S01448.exdrvr +++| MS$PARM1A[0] = ONLINE; 01526 M01S01449.exdrvr +++| IF SM$SCCU[SMO] 01527 M01S01450.exdrvr +++| THEN # 2 REQUESTS CHECKING SRV CELLS # 01528 M01S01451.exdrvr +++| BEGIN # ABORT # 01529 M01S01452.exdrvr +++| FE$RTN[0] = "CRMSG1A."; 01530 M01S01453.exdrvr +++| MESSAGE(FEMSG,UDFL1); 01531 M01S01454.exdrvr +++| ABORT; 01532 M01S01455.exdrvr +++| END # ABORT # 01533 M01S01456.exdrvr +++| 01534 M01S01457.exdrvr +++| SM$SCCU[SMO] = TRUE; # CHECK SERVICE CELLS # 01535 M01S01458.exdrvr +++| END # ON # 01536 M01S01459.exdrvr +++| 01537 M01S01460.exdrvr +++| IF PATHBIT(DRST,PATH$DF"U$ON") EQ OFF ## 01538 M01S01461.exdrvr +++| AND PATHBIT(DRST,PATH$DF"U$RQ$DIAG") EQ OFF 01539 M01S01462.exdrvr +++| THEN # DRD GOING OFFLINE # 01540 M01S01463.exdrvr +++| BEGIN # OFF # 01541 M01S01464.exdrvr +++| MS$PARM1A[0] = OFFLINE; 01542 M01S01465.exdrvr +++| END # OFF # 01543 M01S01466.exdrvr +++| 01544 M01S01467.exdrvr +++| IF PATHBIT(DRST,PATH$DF"U$RQ$DIAG") EQ 1 ## 01545 M01S01468.exdrvr +++| AND (UD$CNUP[LLR$CU[0]] ## 01546 M01S01469.exdrvr +++| OR PATHBIT(DRST,PATH$DF"U$DIAG$ACK") EQ 1) 01547 M01S01470.exdrvr +++| THEN # DRD GOING INTO DIAGNOSTIC MODE # 01548 M01S01471.exdrvr +++| BEGIN # DIAG # 01549 M01S01472.exdrvr +++| MS$PARM1A[0] = DIAGNOSTIC; 01550 M01S01473.exdrvr +++| END # DIAG # 01551 M01S01474.exdrvr +++| 01552 M01S01475.exdrvr +++| LLR$SMO[0] = SMO; # SAVE SM ORDINAL # 01553 M01S01476.exdrvr +++| RETURN; 01554 M01S01477.exdrvr +++| 01555 M01S01478.exdrvr +++|# 01556 M01S01479.exdrvr +++|* CREATE *CHANGE PATH STATUS* MESSAGE. 01557 M01S01480.exdrvr +++|# 01558 M01S01481.exdrvr +++| 01559 M01S01482.exdrvr +++|CHANGEPATH: 01560 M01S01483.exdrvr +++| IF MS$MSG[0] EQ HFC$CHSSMA 01561 M01S01484.exdrvr +++| THEN # CHANGE SM STATUS # 01562 M01S01485.exdrvr +++| BEGIN # SM # 01563 M01S01486.exdrvr +++| GOTO CHANGESM; 01564 M01S01487.exdrvr +++| END # SM # 01565 M01S01488.exdrvr +++| 01566 M01S01489.exdrvr +++| IF MS$MSG[0] EQ HFC$CHSDRD 01567 M01S01490.exdrvr +++| THEN # CHANGE DRD STATUS # 01568 M01S01491.exdrvr +++| BEGIN # DRD # 01569 M01S01492.exdrvr +++| GOTO CHANGEDRD; 01570 M01S01493.exdrvr +++| END # DRD # 01571 M01S01494.exdrvr +++| 01572 M01S01495.exdrvr +++| ACKLINE = 0; # PRESET ACK BIT LOCATION IN UDT # 01573 M01S01496.exdrvr +++| ACKINDEX = 0;
Line S01497 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01574 M02S01497.exdrvr2 ---| ONACK = 0;
Line S01498 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01575 M02S01498.exdrvr2 ---| DIAGACK = 0; 01576 M01S01499.exdrvr +++| START = PTH$FRSTLN[MS$MSG$S[0]]; # PRESET FIRST LINE OF SEARCH # 01577 M01S01500.exdrvr +++| FOUND = FALSE; 01578 M01S01501.exdrvr +++| 01579 M01S01502.exdrvr +++|# 01580 M01S01503.exdrvr +++|* SEARCH FOR ACKNOWLEDGE BITS SET FOR THE DESIRED PATH. 01581 M01S01504.exdrvr +++|# 01582 M01S01505.exdrvr +++| 01583 M01S01506.exdrvr +++| SLOWFOR I = START STEP 1 UNTIL PTH$LASTLN[MS$MSG$S[0]] 01584 M01S01507.exdrvr +++| DO # SCAN UDT PATH WORDS # 01585 M01S01508.exdrvr +++| BEGIN # SCAN WORDS # 01586 M01S01509.exdrvr +++| IF NOT FOUND 01587 M01S01510.exdrvr +++| THEN # CONTINUE WORD SCAN # 01588 M01S01511.exdrvr +++| BEGIN # CHECK WORD # 01589 M01S01512.exdrvr +++| P<PTHSTAT> = P<UDT$CN> + ((LLR$CU[0]-1) * UDTCNTL) + I;
Line S01513 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01590 M02S01513.exdrvr2 ---| SLOWFOR J = 0 STEP 1 UNTIL PTH$ACK[MS$MSG$S[0]] 01591 M01S00042.exdrvr2 +++| SLOWFOR J = 0 STEP 1 UNTIL FIELDSM1 01592 M01S01514.exdrvr +++| DO # SCAN UDT PATH ACK BITS # 01593 M01S01515.exdrvr +++| BEGIN # SCAN BITS # 01594 M01S01516.exdrvr +++| IF NOT FOUND 01595 M01S01517.exdrvr +++| THEN # CONTINUE BIT SCAN # 01596 M01S01518.exdrvr +++| BEGIN # CHECK BITS # 01597 M01S01519.exdrvr +++| IF PATHBIT(J,PATH$DF"U$EXISTS") EQ ON ## 01598 M01S01520.exdrvr +++| AND PATHBIT(J,PATH$DF"U$DONE") EQ OFF 01599 M01S01521.exdrvr +++| THEN # PATH EXISTS AND NOT PROCESSED # 01600 M01S01522.exdrvr +++| BEGIN # SEND MSG # 01601 M01S01523.exdrvr +++| IF PATHBIT(J,PATH$DF"U$ON") EQ ON ## 01602 M01S01524.exdrvr +++| AND (UD$CNUP[LLR$CU[0]] ## 01603 M01S01525.exdrvr +++| OR PATHBIT(J,PATH$DF"U$CU$ACK") EQ ON) 01604 M01S01526.exdrvr +++| THEN # SEND ON MSG # 01605 M01S01527.exdrvr +++| BEGIN # ONLINE # 01606 M01S01528.exdrvr +++| PATHBIT(J,PATH$DF"U$CU$ACK") = ON; # SET ON ACK # 01607 M01S01529.exdrvr +++| PATHBIT(J,PATH$DF"U$DONE") = ON; # IGNORE CU CNUP # 01608 M01S01530.exdrvr +++| NEWPTHSTAT = ONLINE;
Line S01531 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01609 M02S01531.exdrvr2 ---| SLOWFOR K = 1 STEP 1 UNTIL MAXSMUNIT
Line S01532 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01610 M02S01532.exdrvr2 ---| DO # ASSUME ALL HARDWARE OK NOW #
Line S01533 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01611 M02S01533.exdrvr2 ---| BEGIN # ALL #
Line S01534 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01612 M02S01534.exdrvr2 ---| SM$HWOFF[K] = FALSE; # LATER REQUESTS MAY RESET #
Line S01535 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01613 M02S01535.exdrvr2 ---| END # ALL #
Line S01536 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01614 M02S01536.exdrvr2 ---| 01615 M01S01537.exdrvr +++| FOUND = TRUE; 01616 M01S01538.exdrvr +++| ACKLINE = I; # SAVE LOCATION # 01617 M01S01539.exdrvr +++| ACKINDEX = J;
Line S01540 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01618 M02S01540.exdrvr2 ---| ONACK = J; 01619 M01S01541.exdrvr +++| END # ONLINE # 01620 M01S01542.exdrvr +++|
Line S01543 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01621 M02S01543.exdrvr2 ---| IF NOT INITIALIZE
Line S01544 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01622 M02S01544.exdrvr2 ---| THEN # OFF AND DIAG MODE CAN BE SENT #
Line S01545 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01623 M02S01545.exdrvr2 ---| BEGIN # NOT INIT #
Line S01546 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01624 M02S01546.exdrvr2 ---| IF PATHBIT(J,PATH$DF"U$RQ$DIAG") EQ ON ##
Line S01547 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01625 M02S01547.exdrvr2 ---| AND (UD$CNUP[LLR$CU[0]] ##
Line S01548 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01626 M02S01548.exdrvr2 ---| OR PATHBIT(J,PATH$DF"U$DIAG$ACK") EQ ON)
Line S01549 Modification History | |
---|---|
M01 (Added by) | exdrvr |
M02 (Updated by) | exdrvr2 |
Seq # *Modification Id* Act ----------------------------+ 01627 M02S01549.exdrvr2 ---| THEN # SEND DIAGNOSTIC MSG #
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/exdrvr.txt ยท Last modified: by 127.0.0.1