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