cdc:nos2.source:opl.opl871:deck:sxinit
Deck SXINIT
3 Modifications
Listing Sections
- Deck SXINIT Start
- Deck SXINIT Part 1 (Line 2072)
Source
Seq # *Modification Id* Act ----------------------------+ 00001 M01S00001.sxinit +++|PROC CALCTS; 00002 M01S00002.sxinit +++|# TITLE CALCTS - CALCULATE TABLE SPACE. # 00003 M01S00003.sxinit +++| BEGIN # CALCTS # 00004 M01S00004.sxinit +++| 00005 M01S00005.sxinit +++|# 00006 M01S00006.sxinit +++|** CALCTS - CALCULATE TABLE SPACE. 00007 M01S00007.sxinit +++|* 00008 M01S00008.sxinit +++|* THIS PROCEDURE WILL CALCULATE THE NUMBER OF ENTRIES AND THE SPACE 00009 M01S00009.sxinit +++|* REQUIRED FOR EACH OF THE VARIABLE TABLES, AND STORE THE RESULTS 00010 M01S00010.sxinit +++|* IN THE ARRAY *MAT*. 00011 M01S00011.sxinit +++|* 00012 M01S00012.sxinit +++|* EXIT TABLE CALCULATIONS COMPLETED. 00013 M01S00013.sxinit +++|# 00014 M01S00014.sxinit +++| 00015 M01S00015.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 00016 M01S00016.sxinit +++|*CALL COMBFAS 00017 M01S00017.sxinit +++|*CALL COMBCMD 00018 M01S00018.sxinit +++|*CALL COMBLBL 00019 M01S00019.sxinit +++|*CALL COMBLRQ 00020 M01S00020.sxinit +++|*CALL COMBMAT 00021 M01S00021.sxinit +++|*CALL COMBMCT 00022 M01S00022.sxinit +++|*CALL COMBTDM 00023 M01S00023.sxinit +++|*CALL COMBUDT 00024 M01S00024.sxinit +++|*CALL COMXBST 00025 M01S00025.sxinit +++|*CALL COMXCTF 00026 M01S00026.sxinit +++|*CALL COMXEXP 00027 M01S00027.sxinit +++|*CALL COMXFCQ 00028 M01S00028.sxinit +++|*CALL COMXHLR 00029 M01S00029.sxinit +++|*CALL,COMXIPR 00030 M01S00030.sxinit +++|*CALL COMXINT 00031 M01S00031.sxinit +++|*CALL COMXLTC 00032 M01S00001.sxinit2 +++|*CALL COMXMFD 00033 M01S00032.sxinit +++|*CALL COMXMSC 00034 M01S00033.sxinit +++| 00035 M01S00034.sxinit +++| ITEM TEMPCOUNT U; # TEMPORARY COUNT FIELD # 00036 M01S00035.sxinit +++| CONTROL EJECT; 00037 M01S00036.sxinit +++| 00038 M01S00037.sxinit +++|# 00039 M01S00038.sxinit +++|* CALCULATES THE SPACE REQUIRED AND THE NUMBER OF ENTRIES FOR EACH 00040 M01S00039.sxinit +++|* OF THE VARIABLE TABLES, AND STORES THE RESULTS IN THE ARRAY 00041 M01S00040.sxinit +++|* *MAT*. 00042 M01S00041.sxinit +++|# 00043 M01S00042.sxinit +++| 00044 M01S00043.sxinit +++| TEMPCOUNT = Q+2; 00045 M01S00044.sxinit +++| 00046 M01S00045.sxinit +++| MAT$COUNT[MAT$ENTRY"HLRQ"] = TEMPCOUNT; 00047 M01S00046.sxinit +++| MAT$SPACE[MAT$ENTRY"HLRQ"] = HLRQLEN * TEMPCOUNT; 00048 M01S00047.sxinit +++| 00049 M01S00048.sxinit +++| 00050 M01S00049.sxinit +++| MAT$COUNT[MAT$ENTRY"LLRQ"] = TEMPCOUNT; 00051 M01S00050.sxinit +++| MAT$SPACE[MAT$ENTRY"LLRQ"] = LLRQENTL * TEMPCOUNT; 00052 M01S00051.sxinit +++| 00053 M01S00052.sxinit +++| MAT$COUNT[MAT$ENTRY"RTRQ"] = Q * RTRQ$SPACE; 00054 M01S00053.sxinit +++| MAT$SPACE[MAT$ENTRY"RTRQ"] = (TDAMLEN + 1) * (Q * RTRQ$SPACE); 00055 M01S00054.sxinit +++| 00056 M01S00055.sxinit +++| MAT$COUNT[MAT$ENTRY"FCTQ"] = Q; # SET FCTQ FIELD # 00057 M01S00056.sxinit +++| MAT$SPACE[MAT$ENTRY"FCTQ"] = (FCTQHL+FCTENTL) * Q; 00058 M01S00057.sxinit +++| 00059 M01S00058.sxinit +++| BSTL = MAXCTN * 2; 00060 M01S00059.sxinit +++| MAT$COUNT[MAT$ENTRY"BST"] = BSTL; 00061 M01S00060.sxinit +++| MAT$SPACE[MAT$ENTRY"BST"] = BSTENTL * BSTL; 00062 M01S00061.sxinit +++| 00063 M01S00062.sxinit +++| LTCTCNT = FAMCNT + 3; 00064 M01S00063.sxinit +++| MAT$COUNT[MAT$ENTRY"LTCT"] = FAMCNT + 3; 00065 M01S00064.sxinit +++| MAT$SPACE[MAT$ENTRY"LTCT"] = LTCL * (FAMCNT + 3); 00066 M01S00065.sxinit +++| 00067 M01S00066.sxinit +++| MAT$COUNT[MAT$ENTRY"MRFT"] = FAMCNT; 00068 M01S00067.sxinit +++| MAT$SPACE[MAT$ENTRY"MRFT"] = MRFTLEN * FAMCNT; 00069 M01S00068.sxinit +++| 00070 M01S00069.sxinit +++| MAT$COUNT[MAT$ENTRY"OMT"] = MAXSM; 00071 M01S00070.sxinit +++| MAT$SPACE[MAT$ENTRY"OMT"] = OMTENTL * MAXSM; 00072 M01S00071.sxinit +++| 00073 M01S00072.sxinit +++| MAT$COUNT[MAT$ENTRY"OCT"] = 8 * FAMCNT; 00074 M01S00073.sxinit +++| MAT$SPACE[MAT$ENTRY"OCT"] = OCTENTL * 8 * FAMCNT; 00075 M01S00074.sxinit +++| 00076 M01S00075.sxinit +++| MAT$COUNT[MAT$ENTRY"PREAMBLE"] = 8 * FAMCNT; 00077 M01S00076.sxinit +++| MAT$SPACE[MAT$ENTRY"PREAMBLE"] = PRMTLEN * 8 * FAMCNT * 3; 00078 M01S00077.sxinit +++| 00079 M01S00002.sxinit2 +++| MAT$COUNT[MAT$ENTRY"SCR$BUF"] = BSTL; 00080 M01S00003.sxinit2 +++| MAT$SPACE[MAT$ENTRY"SCR$BUF"] = SCCBL * BSTL; 00081 M01S00004.sxinit2 +++| 00082 M01S00078.sxinit +++| MAT$COUNT[MAT$ENTRY"UDT$CONT"] = MAXCTN; 00083 M01S00079.sxinit +++| MAT$SPACE[MAT$ENTRY"UDT$CONT"] = UDTCUL + 1; # HEADER INCLUDED # 00084 M01S00080.sxinit +++| 00085 M01S00081.sxinit +++| MAT$COUNT[MAT$ENTRY"UDT$SM"] = MAXSMUNIT; 00086 M01S00082.sxinit +++| MAT$SPACE[MAT$ENTRY"UDT$SM"] = UDTSML; 00087 M01S00083.sxinit +++| 00088 M01S00084.sxinit +++| MAT$COUNT[MAT$ENTRY"CAT$FET"] = 1; 00089 M01S00085.sxinit +++| MAT$SPACE[MAT$ENTRY"CAT$FET"] = RFETL; 00090 M01S00086.sxinit +++| 00091 M01S00087.sxinit +++| MAT$COUNT[MAT$ENTRY"CAT$BUF"] = 1; 00092 M01S00088.sxinit +++| MAT$SPACE[MAT$ENTRY"CAT$BUF"] = FCTBL; 00093 M01S00089.sxinit +++| 00094 M01S00090.sxinit +++| MAT$COUNT[MAT$ENTRY"MAP$FET"] = 1; 00095 M01S00091.sxinit +++| MAT$SPACE[MAT$ENTRY"MAP$FET"] = RFETL; 00096 M01S00092.sxinit +++| 00097 M01S00093.sxinit +++| MAT$COUNT[MAT$ENTRY"MAP$BUF"] = 1; 00098 M01S00094.sxinit +++| MAT$SPACE[MAT$ENTRY"MAP$BUF"] = MAPBUFL; 00099 M01S00095.sxinit +++| 00100 M01S00096.sxinit +++| MAT$COUNT[MAT$ENTRY"TEMP$FET"] = 1; 00101 M01S00097.sxinit +++| MAT$SPACE[MAT$ENTRY"TEMP$FET"] = RFETL * 2; 00102 M01S00098.sxinit +++| 00103 M01S00099.sxinit +++| MAT$COUNT[MAT$ENTRY"TEMP$BUF"] = 1; 00104 M01S00100.sxinit +++| MAT$SPACE[MAT$ENTRY"TEMP$BUF"] = TBUFL; 00105 M01S00101.sxinit +++| 00106 M01S00102.sxinit +++| MAT$COUNT[MAT$ENTRY"TEMP$WB"] = 1; 00107 M01S00103.sxinit +++| MAT$SPACE[MAT$ENTRY"TEMP$WB"] = WBUFL; 00108 M01S00104.sxinit +++| 00109 M01S00105.sxinit +++| MAT$COUNT[MAT$ENTRY"AST$BUF"] = 1; 00110 M01S00106.sxinit +++| MAT$SPACE[MAT$ENTRY"AST$BUF"] = ABUFLEN; 00111 M01S00107.sxinit +++| 00112 M01S00108.sxinit +++| MAT$COUNT[MAT$ENTRY"LABBUF"] = 1; 00113 M01S00109.sxinit +++| MAT$SPACE[MAT$ENTRY"LABBUF"] = LABLEN; 00114 M01S00110.sxinit +++|
Line S00111 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00115 M02S00111.sxinit3 ---| MAT$COUNT[MAT$ENTRY"MW$BUFS"] = MAXCTN * CHANPC;
Line S00112 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00116 M02S00112.sxinit3 ---| MAT$SPACE[MAT$ENTRY"MW$BUFS"] = MAXCTN * CHANPC * 00117 M01S00001.sxinit3 +++| MAT$COUNT[MAT$ENTRY"MW$BUFS"] = MAXCTUNIT * CHANPC; 00118 M01S00002.sxinit3 +++| MAT$SPACE[MAT$ENTRY"MW$BUFS"] = MAXCTUNIT * CHANPC * 00119 M01S00113.sxinit +++| (MWBUFL + SFMWL + 1); 00120 M01S00114.sxinit +++| # READ BUFFER ADDRESS INCLUDED # 00121 M01S00115.sxinit +++|
Line S00116 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00122 M02S00116.sxinit3 ---| MAT$COUNT[MAT$ENTRY"MR$BUFS"] = MAXCTN * CHANPC;
Line S00117 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00123 M02S00117.sxinit3 ---| MAT$SPACE[MAT$ENTRY"MR$BUFS"] = MAXCTN * CHANPC * (MRBUFL+SFMRL); 00124 M01S00003.sxinit3 +++| MAT$COUNT[MAT$ENTRY"MR$BUFS"] = MAXCTUNIT * CHANPC; 00125 M01S00004.sxinit3 +++| MAT$SPACE[MAT$ENTRY"MR$BUFS"] = MAXCTUNIT*CHANPC*(MRBUFL+SFMRL); 00126 M01S00118.sxinit +++|
Line S00119 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00127 M02S00119.sxinit3 ---| MAT$COUNT[MAT$ENTRY"SBT"] = MAXCTN + (2 * MAXSMUNIT) + 1;
Line S00120 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00128 M02S00120.sxinit3 ---| MAT$SPACE[MAT$ENTRY"SBT"] = (MAXCTN+(2*MAXSMUNIT)+1) * MSGLT; 00129 M01S00005.sxinit3 +++| MAT$COUNT[MAT$ENTRY"SBT"] = MAXCTUNIT + (2 * MAXSMUNIT) + 1; 00130 M01S00006.sxinit3 +++| MAT$SPACE[MAT$ENTRY"SBT"] = (MAXCTUNIT+(2*MAXSMUNIT)+1) * MSGLT; 00131 M01S00121.sxinit +++| 00132 M01S00122.sxinit +++| END # CALCTS # 00133 M01S00123.sxinit +++| 00134 M01S00124.sxinit +++| TERM 00135 M01S00125.sxinit +++|PROC CRAST((FCTX),(QADDR),(ASTADDR)); 00136 M01S00126.sxinit +++| 00137 M01S00127.sxinit +++|# TITLE CRAST - CREATE *AST* ENTRY. # 00138 M01S00128.sxinit +++| BEGIN # CRAST # 00139 M01S00129.sxinit +++| 00140 M01S00130.sxinit +++|# 00141 M01S00131.sxinit +++|** CRAST - CREATE *AST* ENTRY. 00142 M01S00132.sxinit +++|* 00143 M01S00133.sxinit +++|* THIS PROCEDURE WILL SCAN THE *FCT* ENTRY AT ORDINAL *FCTX* TO 00144 M01S00134.sxinit +++|* CREATE THE CORRESPONDING TRIAL *AST* ENTRY TO BE 00145 M01S00135.sxinit +++|* CHECKED WITH THE EXISTING AST IN THE PROCEDURE OPENCAT. 00146 M01S00136.sxinit +++|* 00147 M01S00137.sxinit +++|* PROC CRAST((FCTX),(QADDR),(ASTADDR)) 00148 M01S00138.sxinit +++|* 00149 M01S00139.sxinit +++|* ENTRY (FCTX) = ORDINAL OF *FCT* ENTRY. 00150 M01S00140.sxinit +++|* (QADDR) = ADDRESS OF *FCTQ* ENTRY. 00151 M01S00141.sxinit +++|* (ASTADDR) = ADDRESS OF *AST* BUFFER. 00152 M01S00142.sxinit +++|* 00153 M01S00143.sxinit +++|* EXIT *AST* ENTRY HAS BEEN CONSTRUCTED. 00154 M01S00144.sxinit +++|# 00155 M01S00145.sxinit +++| 00156 M01S00146.sxinit +++| ITEM FCTX U; # ORDINAL OF *FCT* ENTRY # 00157 M01S00147.sxinit +++| ITEM QADDR U; # ADDRESS OF *FCTQ* ENTRY # 00158 M01S00148.sxinit +++| ITEM ASTADDR U; # ADDRESS OF *AST* BUFFER # 00159 M01S00149.sxinit +++| 00160 M01S00150.sxinit +++| DEF SPACES #" "#; # SPACES # 00161 M01S00151.sxinit +++| 00162 M01S00152.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 00163 M01S00153.sxinit +++| 00164 M01S00154.sxinit +++|*CALL COMBFAS 00165 M01S00155.sxinit +++|*CALL COMBMCT 00166 M01S00156.sxinit +++|*CALL COMXCTF 00167 M01S00157.sxinit +++|*CALL COMXFCQ 00168 M01S00158.sxinit +++|*CALL COMXINT 00169 M01S00159.sxinit +++|*CALL COMXMSC 00170 M01S00160.sxinit +++| 00171 M01S00161.sxinit +++| ITEM ATBNDRY B; # TRUE IF AT *CDP* OR DONE # 00172 M01S00162.sxinit +++| ITEM DONE B; # TRUE IF AFTER LAST AU # 00173 M01S00163.sxinit +++| ITEM I U; # INDEX # 00174 M01S00164.sxinit +++| ITEM LASTBUSY U; # LAST PROTECTED AU # 00175 M01S00165.sxinit +++| ITEM NXTFREE U; # NEXT (EXPECTED) FREE VOLUME # 00176 M01S00166.sxinit +++| ITEM PREVVOL U; # AU OF PREVIOUS VOLUME # 00177 M01S00167.sxinit +++| ITEM TEMP U; # TEMPORARY # 00178 M01S00168.sxinit +++| ITEM THISAU U; # LOOP INDEX # 00179 M01S00169.sxinit +++| ITEM TOTAU U; # TOTAL AU AVAILABLE FOR 00180 M01S00170.sxinit +++| ALLOCATION # 00181 M01S00171.sxinit +++| ITEM VOLLN U; # NUMBER OF (EXPECTED) 00182 M01S00172.sxinit +++| CONTINUATION AU # 00183 M01S00173.sxinit +++| 00184 M01S00174.sxinit +++| 00185 M01S00175.sxinit +++| CONTROL EJECT; 00186 M01S00176.sxinit +++| 00187 M01S00177.sxinit +++| P<FCT> = QADDR + FCTQHL; 00188 M01S00178.sxinit +++| P<AST> = ASTADDR; 00189 M01S00179.sxinit +++| IF AST$STAT[FCTX] NQ ASTENSTAT"ASS$CART" 00190 M01S00180.sxinit +++| THEN 00191 M01S00181.sxinit +++| BEGIN 00192 M01S00182.sxinit +++| RETURN; 00193 M01S00183.sxinit +++| END 00194 M01S00184.sxinit +++| 00195 M01S00185.sxinit +++|# 00196 M01S00186.sxinit +++|* DET OFF CARTRIDGE LINK AND ALLOCATION ALLOWED FLAGS IS AST. 00197 M01S00187.sxinit +++|# 00198 M01S00188.sxinit +++| 00199 M01S00189.sxinit +++| AST$NOCLF[FCTX] = FCT$OCLF[FCTX] EQ 7; 00200 M01S00190.sxinit +++| AST$AAF[FCTX] = NOT ( FCT$IAF[0] OR FCT$LCF[0] OR ## 00201 M01S00191.sxinit +++| FCT$EEF[0] OR FCT$SEF[0] OR ## 00202 M01S00192.sxinit +++| FCT$FCF[0]) OR (FCT$ORD[0] NQ FCTX); 00203 M01S00193.sxinit +++| 00204 M01S00194.sxinit +++|# 00205 M01S00195.sxinit +++|* THE OBJECTIVES OF THE FOLLOWING ANALYSIS OF THE *FCT* ENTRY 00206 M01S00196.sxinit +++|* ARE THREEFOLD: 00207 M01S00197.sxinit +++|* 00208 M01S00198.sxinit +++|* 1) COUNT THE AU AVAILABLE FOR ALLOCATION. 00209 M01S00199.sxinit +++|* 00210 M01S00200.sxinit +++|* 2) IDENTIFY THE FREE AU WHICH CAN SAFELY BE ALLOCATED 00211 M01S00201.sxinit +++|* FOR STORAGE OF FILE DATA, LEAVING ALONE THOSE AU 00212 M01S00202.sxinit +++|* WHICH ARE UNALLOCATED, BUT ARE FLAGGED, FLAWED OR 00213 M01S00203.sxinit +++|* INCLUDED WITHIN THE COUNT OF CONTINUATION AU OF 00214 M01S00204.sxinit +++|* AN AU OR VOLUME WHICH IS ALLOCATED. 00215 M01S00205.sxinit +++|* 00216 M01S00206.sxinit +++|* 3) RE-ORGANIZE THESE USABLE AU INTO VOLUMES AND REBUILD 00217 M01S00207.sxinit +++|* THE CHAIN OF AVAILABLE VOLUMES FOR USE BY THE ALLOCATOR. 00218 M01S00208.sxinit +++|* 00219 M01S00209.sxinit +++|* A LOOP EXAMINES EACH AU IN THE *FCT* ENTRY. EACH AU IS 00220 M01S00210.sxinit +++|* REJECTED AS BEING AVAILABLE IF IT IS BUSY, FLAWED, OR HAS 00221 M01S00211.sxinit +++|* OTHER FLAGS SET. AN AU WHICH IS EXPECTED TO BE A 00222 M01S00212.sxinit +++|* CONTINUATION AU FOR A VOLUME AVAILABLE FOR ALLOCATION IS 00223 M01S00213.sxinit +++|* ACCEPTED IN THE VOLUME IF IT IS NOT BUSY OR FLAGGED. 00224 M01S00214.sxinit +++|* ANY AU WHICH IS NOT BUSY, FLAGGED, OR PART OF A VOLUME IS 00225 M01S00215.sxinit +++|* TREATED AS THE START OF A NEW VOLUME, AND PROPERLY LINKED 00226 M01S00216.sxinit +++|* INTO THE CHAIN OF FREE VOLUMES. 00227 M01S00217.sxinit +++|* 00228 M01S00218.sxinit +++|* THE FOLLOWING SEQUENCE OF STEPS IS TAKEN TO ACHIEVE THE ABOVE: 00229 M01S00219.sxinit +++|* 00230 M01S00220.sxinit +++|* 1) DETERMINE IF THIS AU IS JUST AFTER A BOUNDARY POINT, 00231 M01S00221.sxinit +++|* I.E., IT IS JUST AFTER THE LAST AU FOR SHORT OR LONG FILES. 00232 M01S00222.sxinit +++|* 00233 M01S00223.sxinit +++|* 2) IF A VOLUME OF FREE AU IS BEING ACCUMULATED, REDUCE THE 00234 M01S00224.sxinit +++|* VOLUME LENGTH IF IT WOULD OTHERWISE INCLUDE AN AU WHICH 00235 M01S00225.sxinit +++|* SHOULD NOT BE PART OF THE VOLUME. 00236 M01S00226.sxinit +++|* 00237 M01S00227.sxinit +++|* 3) IF THIS AU IS JUST AFTER A BOUNDARY POINT (SEE STEP 1), 00238 M01S00228.sxinit +++|* - VERIFY THAT THE FREE VOLUME CHAIN IS TERMINATED WITH A 00239 M01S00229.sxinit +++|* LINK=0. 00240 M01S00230.sxinit +++|* - SAVE THE COUNT OF FREE AU IN THE *FCT* HEADER. 00241 M01S00231.sxinit +++|* - IF AT START OF AU FOR LONG FILES, RESET COUNTERS. 00242 M01S00232.sxinit +++|* 00243 M01S00233.sxinit +++|* 4) IF THIS AU IS BUSY, 00244 M01S00234.sxinit +++|* - SET A VARIABLE SO THAT ANY AU WHICH ARE CLAIMED TO 00245 M01S00235.sxinit +++|* BE CONTINUATION AU ARE NOT TREATED AS AVAILABLE FOR 00246 M01S00236.sxinit +++|* ALLOCATION REGARDLESS OF THEIR *FCT* ENTRY. 00247 M01S00237.sxinit +++|* - LOOP TO EXAMINE THE NEXT AU. 00248 M01S00238.sxinit +++|* 00249 M01S00239.sxinit +++|* 5) IF THE AU IS PROTECTED (SEE STEP 4) OR FLAGGED, LOOP TO 00250 M01S00240.sxinit +++|* EXAMINE THE NEXT AU. 00251 M01S00241.sxinit +++|* 00252 M01S00242.sxinit +++|* 6) PROCESS THE AU WHICH IS REALLY AVAILABLE FOR ALLOCATION. 00253 M01S00243.sxinit +++|* - CLEAR CONTINUATION FLAG..FORCE A HEAD OF VOLUME STATUS. 00254 M01S00244.sxinit +++|* - ADJUST IF NECESSARY THE FREE VOLUME LINKAGE TO POINT 00255 M01S00245.sxinit +++|* TO THIS AU (VOLUME). 00256 M01S00246.sxinit +++|* - SAVE LENGTH FIELD AS THE COUNT OF NUMBER OF EXPECTED 00257 M01S00247.sxinit +++|* CONTINUATION AU. 00258 M01S00248.sxinit +++|* - SAVE LINK FIELD AS THE NEXT EXPECTED FREE VOLUME. 00259 M01S00249.sxinit +++|* - SAVE THE ID OF THIS VOLUME IN CASE ITS LENGTH HAS 00260 M01S00250.sxinit +++|* TO BE REDUCED (SEE STEP 2), OR ITS LINK HAS TO BE 00261 M01S00251.sxinit +++|* ADJUSTED (SEE ABOVE SUBSTEP). 00262 M01S00252.sxinit +++|# 00263 M01S00253.sxinit +++| 00264 M01S00254.sxinit +++| FCT$FLAWS[0] = 0; 00265 M01S00255.sxinit +++| PREVVOL = 0; 00266 M01S00256.sxinit +++| NXTFREE = FCT$FAUSF[0]; 00267 M01S00257.sxinit +++| TOTAU = 0; 00268 M01S00258.sxinit +++| VOLLN = 0; 00269 M01S00259.sxinit +++| LASTBUSY = 0; 00270 M01S00260.sxinit +++| DONE = FALSE; 00271 M01S00261.sxinit +++| 00272 M01S00262.sxinit +++| FOR THISAU = 1 STEP 1 WHILE NOT DONE 00273 M01S00263.sxinit +++| DO 00274 M01S00264.sxinit +++| BEGIN # THISAU LOOP # 00275 M01S00265.sxinit +++| 00276 M01S00266.sxinit +++|# 00277 M01S00267.sxinit +++|* STEP 1 - DETERMINE IF AT A BOUNDARY POINT. 00278 M01S00268.sxinit +++|# 00279 M01S00269.sxinit +++| 00280 M01S00270.sxinit +++| SETFCTX(THISAU); 00281 M01S00271.sxinit +++| DONE = THISAU GR FCT$AVOT[0]; 00282 M01S00272.sxinit +++| ATBNDRY = (THISAU EQ FCT$CDP[0]) OR DONE; 00283 M01S00273.sxinit +++| 00284 M01S00274.sxinit +++|# 00285 M01S00275.sxinit +++|* STEP 2 - IF IN A SEQUENCE OF CONTINUATION AU, VERIFY THAT 00286 M01S00276.sxinit +++|* THIS AU CAN BE INCLUDED. IF NOT, CORRECT VOLUME LENGTH. 00287 M01S00277.sxinit +++|# 00288 M01S00278.sxinit +++| 00289 M01S00279.sxinit +++| IF VOLLN NQ 0 00290 M01S00280.sxinit +++| THEN 00291 M01S00281.sxinit +++| BEGIN # STEP 2 # 00292 M01S00282.sxinit +++| FCT$CLFG(0,0) = FCT$CLFG(FWD,FPS); 00293 M01S00283.sxinit +++| FCT$CAUF(0,0) = 1-FCT$CAUF(0,0); 00294 M01S00284.sxinit +++| 00295 M01S00285.sxinit +++| IF (FCT$FLGS1(0,0) EQ 0) ## 00296 M01S00286.sxinit +++| AND NOT ATBNDRY 00297 M01S00287.sxinit +++| THEN # AU IS OK AS A CONTINUATION AU # 00298 M01S00288.sxinit +++| BEGIN 00299 M01S00289.sxinit +++| TOTAU = TOTAU + 1; 00300 M01S00290.sxinit +++| FCT$CLFG(FWD,FPS) = 0; 00301 M01S00291.sxinit +++| FCT$CAUF(FWD,FPS) = 1; 00302 M01S00292.sxinit +++| FCT$LEN(FWD,FPS) = VOLLN - 1; 00303 M01S00293.sxinit +++| FCT$LINK(FWD,FPS) = PREVVOL; 00304 M01S00294.sxinit +++| VOLLN = VOLLN - 1; 00305 M01S00295.sxinit +++| TEST THISAU; 00306 M01S00296.sxinit +++| END 00307 M01S00297.sxinit +++| 00308 M01S00298.sxinit +++| ELSE # TERMINATE THIS VOLUME AND ADJUST 00309 M01S00299.sxinit +++| ITS LENGTH # 00310 M01S00300.sxinit +++| BEGIN 00311 M01S00301.sxinit +++| SETFCTX(PREVVOL); 00312 M01S00302.sxinit +++| FCT$LEN(FWD,FPS) = FCT$LEN(FWD,FPS) - VOLLN; 00313 M01S00303.sxinit +++| VOLLN = 0; 00314 M01S00304.sxinit +++| END 00315 M01S00305.sxinit +++| 00316 M01S00306.sxinit +++| END # STEP 2 # 00317 M01S00307.sxinit +++| 00318 M01S00308.sxinit +++|# 00319 M01S00309.sxinit +++|* STEP 3 - PROCESS BOUNDARY CONDITION. 00320 M01S00310.sxinit +++|# 00321 M01S00311.sxinit +++| 00322 M01S00312.sxinit +++| IF ATBNDRY 00323 M01S00313.sxinit +++| THEN 00324 M01S00314.sxinit +++| BEGIN # STEP 3 # 00325 M01S00315.sxinit +++| SETFCTX(PREVVOL); 00326 M01S00316.sxinit +++| IF NXTFREE NQ 0 00327 M01S00317.sxinit +++| THEN # SET LINK TO ZERO # 00328 M01S00318.sxinit +++| BEGIN 00329 M01S00319.sxinit +++| FCT$LINK(FWD,FPS) = 0; 00330 M01S00320.sxinit +++| END 00331 M01S00321.sxinit +++| 00332 M01S00322.sxinit +++| IF DONE 00333 M01S00323.sxinit +++| THEN # FINISHED AU FOR LONG FILES # 00334 M01S00324.sxinit +++| BEGIN 00335 M01S00325.sxinit +++| AST$AULF[FCTX] = TOTAU; 00336 M01S00326.sxinit +++| IF FCT$FAULF[0] EQ 0 00337 M01S00327.sxinit +++| THEN 00338 M01S00328.sxinit +++| BEGIN 00339 M01S00329.sxinit +++| AST$AULF[FCTX] = 0; 00340 M01S00330.sxinit +++| END 00341 M01S00331.sxinit +++| 00342 M01S00332.sxinit +++| TEST THISAU; 00343 M01S00333.sxinit +++| END 00344 M01S00334.sxinit +++| 00345 M01S00335.sxinit +++| ELSE # FINISHED AU FOR SHORT FILES # 00346 M01S00336.sxinit +++| BEGIN 00347 M01S00337.sxinit +++| AST$AUSF[FCTX] = TOTAU; 00348 M01S00338.sxinit +++| TOTAU = 0; 00349 M01S00339.sxinit +++| PREVVOL = 0; 00350 M01S00340.sxinit +++| NXTFREE = FCT$FAULF[0]; 00351 M01S00341.sxinit +++| END 00352 M01S00342.sxinit +++| 00353 M01S00343.sxinit +++| END # STEP 3 # 00354 M01S00344.sxinit +++| 00355 M01S00345.sxinit +++|# 00356 M01S00346.sxinit +++|* STEP 4 - PROCESS AU BUSY. 00357 M01S00347.sxinit +++|# 00358 M01S00348.sxinit +++| 00359 M01S00349.sxinit +++| SETFCTX(THISAU); 00360 M01S00350.sxinit +++| IF FCT$FBF(FWD,FPS) EQ 1 00361 M01S00351.sxinit +++| THEN # AU IS BUSY, PROTECT ALL AU 00362 M01S00352.sxinit +++| COVERED BY LENGTH FIELD # 00363 M01S00353.sxinit +++| BEGIN 00364 M01S00354.sxinit +++| TEMP = THISAU + FCT$LEN(FWD,FPS); 00365 M01S00355.sxinit +++| IF TEMP GR LASTBUSY 00366 M01S00356.sxinit +++| THEN 00367 M01S00357.sxinit +++| BEGIN 00368 M01S00358.sxinit +++| LASTBUSY = TEMP; 00369 M01S00359.sxinit +++| END 00370 M01S00360.sxinit +++| 00371 M01S00361.sxinit +++| TEST THISAU; 00372 M01S00362.sxinit +++| END 00373 M01S00363.sxinit +++| 00374 M01S00364.sxinit +++|# 00375 M01S00365.sxinit +++|* STEP 5 - SKIP ANY AU THAT ARE PROTECTED OR FLAGGED. 00376 M01S00366.sxinit +++|# 00377 M01S00367.sxinit +++| 00378 M01S00368.sxinit +++| FCT$CAUF(FWD,FPS) = 0; # CLEAR CONTINUATION AU FLAG # 00379 M01S00369.sxinit +++| 00380 M01S00370.sxinit +++| IF FCT$FAUF(FWD,FPS) NQ 0 00381 M01S00371.sxinit +++| THEN # COUNT FLAWED AU # 00382 M01S00372.sxinit +++| BEGIN 00383 M01S00373.sxinit +++| FCT$FLAWS[0] = FCT$FLAWS[0] + 1; 00384 M01S00374.sxinit +++| END 00385 M01S00375.sxinit +++| 00386 M01S00376.sxinit +++| IF THISAU LQ LASTBUSY ## 00387 M01S00377.sxinit +++| OR (FCT$FLGS1(FWD,FPS) NQ 0) 00388 M01S00378.sxinit +++| THEN 00389 M01S00379.sxinit +++| BEGIN 00390 M01S00380.sxinit +++| TEST THISAU; 00391 M01S00381.sxinit +++| END 00392 M01S00382.sxinit +++| 00393 M01S00383.sxinit +++|# 00394 M01S00384.sxinit +++|* STEP 6 - ENSURE THE VOLUME HEADED BY THIS AU IS IN THE 00395 M01S00385.sxinit +++|* FREE SPACE CHAIN. 00396 M01S00386.sxinit +++|* - IF THE NEXT EXPECTED FREE VOLUME (*NXTFREE*) 00397 M01S00387.sxinit +++|* IS BEYOND THIS AU, INSERT THIS AU IN THE MIDDLE 00398 M01S00388.sxinit +++|* OF THE CHAIN. 00399 M01S00389.sxinit +++|* - IF THE NEXT EXPECTED FREE VOLUME IS PRIOR TO THIS 00400 M01S00390.sxinit +++|* AU, CORRECT THE LINK FIELD OF THE PREVIOUS VOLUME 00401 M01S00391.sxinit +++|* BY LINKING TO THIS AU. 00402 M01S00392.sxinit +++|* - USE THE VOLUME LENGTH AND LINK FIELDS AS SPECIFIED 00403 M01S00393.sxinit +++|* BY THIS AU-S *FCT* ENTRY. IF THEY ARE NOT CORRECT, 00404 M01S00394.sxinit +++|* STEP 2 WILL REDUCE THE LENGTH, AND STEP 3 OR THIS 00405 M01S00395.sxinit +++|* STEP WILL CORRECT THE LINK FIELD. 00406 M01S00396.sxinit +++|# 00407 M01S00397.sxinit +++| 00408 M01S00398.sxinit +++| IF THISAU NQ NXTFREE 00409 M01S00399.sxinit +++| THEN # NEED TO CORRECT LINKAGE # 00410 M01S00400.sxinit +++| BEGIN # CORRECT LINKAGE # 00411 M01S00401.sxinit +++| IF THISAU LS NXTFREE 00412 M01S00402.sxinit +++| THEN # ADD THIS AU (VOLUME) TO CURRENT 00413 M01S00403.sxinit +++| CHAIN # 00414 M01S00404.sxinit +++| BEGIN 00415 M01S00405.sxinit +++| FCT$LINK(FWD,FPS) = NXTFREE; 00416 M01S00406.sxinit +++| END 00417 M01S00407.sxinit +++| 00418 M01S00408.sxinit +++|# 00419 M01S00409.sxinit +++|* ADJUST LINK FIELD OF PREVIOUS ENTRY TO POINT TO THIS VOLUME. 00420 M01S00410.sxinit +++|# 00421 M01S00411.sxinit +++| 00422 M01S00412.sxinit +++| IF PREVVOL EQ 0 00423 M01S00413.sxinit +++| THEN # UPDATE FREE SPACE POINTERS # 00424 M01S00414.sxinit +++| BEGIN 00425 M01S00415.sxinit +++| IF THISAU LS FCT$CDP[0] 00426 M01S00416.sxinit +++| THEN # UPDATE SHORT FILE POINTER # 00427 M01S00417.sxinit +++| BEGIN 00428 M01S00418.sxinit +++| FCT$FAUSF[0] = THISAU; 00429 M01S00419.sxinit +++| END 00430 M01S00420.sxinit +++| 00431 M01S00421.sxinit +++| ELSE # UPDATE LONG FILE POINTER # 00432 M01S00422.sxinit +++| BEGIN 00433 M01S00423.sxinit +++| FCT$FAULF[0] = THISAU; 00434 M01S00424.sxinit +++| END 00435 M01S00425.sxinit +++| 00436 M01S00426.sxinit +++| END 00437 M01S00427.sxinit +++| 00438 M01S00428.sxinit +++| ELSE # UPDATE PREVIOUS LINK # 00439 M01S00429.sxinit +++| BEGIN 00440 M01S00430.sxinit +++| SETFCTX(PREVVOL); 00441 M01S00431.sxinit +++| FCT$LINK(FWD,FPS) = THISAU; 00442 M01S00432.sxinit +++| END 00443 M01S00433.sxinit +++| 00444 M01S00434.sxinit +++| END # CORRECT LINKAGE # 00445 M01S00435.sxinit +++| 00446 M01S00436.sxinit +++| SETFCTX(THISAU); 00447 M01S00437.sxinit +++| TOTAU = TOTAU + 1; 00448 M01S00438.sxinit +++| PREVVOL = THISAU; 00449 M01S00439.sxinit +++| NXTFREE = FCT$LINK(FWD,FPS); 00450 M01S00440.sxinit +++| VOLLN = FCT$LEN(FWD,FPS); 00451 M01S00441.sxinit +++| TEST THISAU; 00452 M01S00442.sxinit +++| END # THISAU LOOP # 00453 M01S00443.sxinit +++| 00454 M01S00444.sxinit +++| FCT$CLFG(0,0) = 0; 00455 M01S00445.sxinit +++| RETURN; 00456 M01S00446.sxinit +++| END # CRAST # 00457 M01S00447.sxinit +++| 00458 M01S00448.sxinit +++| TERM 00459 M01S00449.sxinit +++|PROC GETRTP; 00460 M01S00450.sxinit +++|# TITLE GETRTP - GETS AND PROCESSES RUN TIME PARAMETERS. # 00461 M01S00451.sxinit +++| 00462 M01S00452.sxinit +++| BEGIN # GETRTP # 00463 M01S00453.sxinit +++| 00464 M01S00454.sxinit +++|# 00465 M01S00455.sxinit +++|** GETRTP - GETS AND PROCESSES RUN TIME PARAMETERS. 00466 M01S00456.sxinit +++|* 00467 M01S00457.sxinit +++|* THIS ROUTINE WILL GET AND PROCESS THE TUNING PARAMETER 00468 M01S00458.sxinit +++|* AND THE TRACE MODE PARAMETER. 00469 M01S00459.sxinit +++|* 00470 M01S00460.sxinit +++|* PROC GETRTP 00471 M01S00461.sxinit +++|* 00472 M01S00462.sxinit +++|* EXIT THE RUN TIME PARAMETERS HAVE BEEN PROCESSED. 00473 M01S00463.sxinit +++|* 00474 M01S00464.sxinit +++|* MESSAGE 1) EXEC ABORT - SYNTAX ERROR. 00475 M01S00465.sxinit +++|* 00476 M01S00466.sxinit +++|* 2) *Q* PARAMETER TOO LARGE - 00477 M01S00467.sxinit +++|* MAXIMUM ALLOWABLE VALUE SUBSTITUTED. 00478 M01S00468.sxinit +++|* 00479 M01S00469.sxinit +++|* 3) *Q* PARAMETER TOO SMALL - 00480 M01S00470.sxinit +++|* MINIMUM ALLOWABLE VALUE SUBSTITUTED. 00481 M01S00471.sxinit +++|# 00482 M01S00472.sxinit +++| 00483 M01S00473.sxinit +++|# 00484 M01S00474.sxinit +++|**** PROC GETRTP - XREF LIST BEGIN. 00485 M01S00475.sxinit +++|# 00486 M01S00476.sxinit +++| 00487 M01S00477.sxinit +++| XREF 00488 M01S00478.sxinit +++| BEGIN 00489 M01S00479.sxinit +++| PROC EXTAB; # SETS UP PARAMETER LIST # 00490 M01S00480.sxinit +++| PROC MESSAGE; # ISSUES MESSAGE TO DAYFILE # 00491 M01S00481.sxinit +++| PROC XARG; # CRACK PARAMETER LIST # 00492 M01S00482.sxinit +++| PROC XDXB; # CONVERT DECIMAL TO BINARY # 00493 M01S00483.sxinit +++| END 00494 M01S00484.sxinit +++| 00495 M01S00485.sxinit +++|# 00496 M01S00486.sxinit +++|**** PROC GETRTP - XREF LIST END. 00497 M01S00487.sxinit +++|# 00498 M01S00488.sxinit +++| 00499 M01S00489.sxinit +++| 00500 M01S00490.sxinit +++| 00501 M01S00491.sxinit +++| DEF DEC$TYPE #1#; # DECIMAL TYPE CONVERSION # 00502 M01S00492.sxinit +++| DEF QAVERAGE #10#; # AVERAGE TUNING PARAMETER VALUE # 00503 M01S00493.sxinit +++| DEF QMAXIMUM #50#; # MAXIMUM TUNING PARAMETER VALUE # 00504 M01S00494.sxinit +++| DEF QMINIMUM #6#; # MINIMUM TUNING PARAMETER VALUE # 00505 M01S00495.sxinit +++| DEF SYNTAXOK #0#; # NO SYNTAX ERRORS # 00506 M01S00496.sxinit +++| 00507 M01S00497.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 00508 M01S00498.sxinit +++|*CALL COMBFAS 00509 M01S00499.sxinit +++|*CALL COMXCTF 00510 M01S00500.sxinit +++|*CALL COMXEXP 00511 M01S00501.sxinit +++|*CALL COMXINT 00512 M01S00502.sxinit +++|*CALL,COMXJCA 00513 M01S00503.sxinit +++| 00514 M01S00504.sxinit +++| ITEM ARGLIST U; # ADDRESS OF ARGUMENT LIST # 00515 M01S00505.sxinit +++| ITEM ARG$Q I; # INTEGER TUNING PARAMETER # 00516 M01S00506.sxinit +++| ITEM DFLT B; # DEFAULT *Q* FLAG # 00517 M01S00507.sxinit +++| ITEM FLAG U; # STATUS FLAG FOR ASARG # 00518 M01S00508.sxinit +++| ITEM OPTION U; # OPTION TO SKIP PROGRAM NAME # 00519 M01S00509.sxinit +++| 00520 M01S00510.sxinit +++|# 00521 M01S00511.sxinit +++|* MESSAGE BUFFER. 00522 M01S00512.sxinit +++|# 00523 M01S00513.sxinit +++| 00524 M01S00514.sxinit +++| ARRAY MSGBUF[0:0] P(5); 00525 M01S00515.sxinit +++| BEGIN # ARRAY MSGBUF # 00526 M01S00516.sxinit +++| ITEM MSG$LINE C(00,00,40); # MESSAGE LINE # 00527 M01S00517.sxinit +++| ITEM MSG$RZRO C(04,00,12); # ZERO BYE TERMINATOR # 00528 M01S00518.sxinit +++| END # ARRAY MSGBUF # 00529 M01S00519.sxinit +++| 00530 M01S00520.sxinit +++| CONTROL EJECT; 00531 M01S00521.sxinit +++| 00532 M01S00522.sxinit +++|# 00533 M01S00523.sxinit +++|* GET THE RUN TIME PARAMETERS. 00534 M01S00524.sxinit +++|# 00535 M01S00525.sxinit +++| 00536 M01S00526.sxinit +++| EXTAB(ARGLIST); # SET UP ARGUMENT LIST # 00537 M01S00527.sxinit +++| OPTION = 0; # SKIP OVER PROGRAM NAME # 00538 M01S00528.sxinit +++| XARG(ARGLIST,OPTION,FLAG); # GET PARAMETERS # 00539 M01S00529.sxinit +++| 00540 M01S00530.sxinit +++| IF FLAG NQ SYNTAXOK 00541 M01S00531.sxinit +++| THEN 00542 M01S00532.sxinit +++| BEGIN # IF SYNTAX ERRORS DETECTED BY ASARG # 00543 M01S00533.sxinit +++| MSG$LINE[0] = " EXEC ABORT - SYNTAX ERRORS. "; 00544 M01S00534.sxinit +++| MESSAGE(MSGBUF[0],UDFL1); # ERROR MESSAGE TO DAYFILE # 00545 M01S00535.sxinit +++| FATALERR = TRUE; 00546 M01S00536.sxinit +++| RETURN; 00547 M01S00537.sxinit +++| END # IF SYNTAX ERRORS DETECTED BY ASARG # 00548 M01S00538.sxinit +++| 00549 M01S00539.sxinit +++|# 00550 M01S00540.sxinit +++|* CHANGE DISPLAY CODE *S* PARAMETER TO DECIMAL INTEGER. IF 00551 M01S00541.sxinit +++|* *S* PARAMETER IS NOT FOUND ON CONTROL COMMAND, *ARG$S* 00552 M01S00542.sxinit +++|* WILL BE SET TO -1. 00553 M01S00543.sxinit +++|# 00554 M01S00544.sxinit +++| 00555 M01S00545.sxinit +++| XDXB(ARG$SC[0],DEC$TYPE,ARG$S); 00556 M01S00546.sxinit +++| 00557 M01S00547.sxinit +++|# 00558 M01S00548.sxinit +++|* SET THE SMALLEST *HLRQ* COUNT. 00559 M01S00549.sxinit +++|# 00560 M01S00550.sxinit +++| 00561 M01S00551.sxinit +++| Q = MAXSMUNIT * 2; # SET MAXIMUN AND DEFAULT *HLRQ* COUNT # 00562 M01S00552.sxinit +++| IF MIMHLRQ LS Q 00563 M01S00553.sxinit +++| THEN 00564 M01S00554.sxinit +++| BEGIN # FORCE THE SMALLEST *HLRQ* COUNT # 00565 M01S00555.sxinit +++| Q = MIMHLRQ; 00566 M01S00556.sxinit +++| END 00567 M01S00557.sxinit +++| 00568 M01S00558.sxinit +++| 00569 M01S00559.sxinit +++|# 00570 M01S00560.sxinit +++|* SET *RA$TRACE* TO *TRUE* IF *TM* PARAMETER SPECIFIED. 00571 M01S00561.sxinit +++|# 00572 M01S00562.sxinit +++| 00573 M01S00563.sxinit +++| RA$TRACE = (ARG$T NQ -1); 00574 M01S00564.sxinit +++| 00575 M01S00565.sxinit +++| RETURN; 00576 M01S00566.sxinit +++| END # GETRTP # 00577 M01S00567.sxinit +++| 00578 M01S00568.sxinit +++| TERM 00579 M01S00569.sxinit +++|PROC GETUDT; 00580 M01S00570.sxinit +++|# TITLE GETUDT - DETERMINES THE PROPERTIES OF THE CONFIGURATION. # 00581 M01S00571.sxinit +++| 00582 M01S00572.sxinit +++| BEGIN # GETUDT # 00583 M01S00573.sxinit +++| 00584 M01S00574.sxinit +++|# 00585 M01S00575.sxinit +++|** GETUDT - DETERMINES THE PROPERTIES OF THE CONFIGURATION. 00586 M01S00576.sxinit +++|* 00587 M01S00577.sxinit +++|* THIS ROUTINE WILL INITIALIZE VARIABLES DEFINING THE 00588 M01S00578.sxinit +++|* CONFIGURATION OF THE CONTROLLERS AND STORAGE MODULES. 00589 M01S00579.sxinit +++|* 00590 M01S00580.sxinit +++|* PROC GETUDT. 00591 M01S00581.sxinit +++|* 00592 M01S00582.sxinit +++|* ENTRY M860 HARDWARE CONFIGURATION EXISTS. 00593 M01S00583.sxinit +++|* 00594 M01S00584.sxinit +++|* EXIT CONFIGURATION INFORMATION HAS BEEN PROCESSED. 00595 M01S00585.sxinit +++|* 00596 M01S00586.sxinit +++|* MESSAGES 1) ATTACH ERROR - BUDT FILE BUSY. 00597 M01S00587.sxinit +++|* 00598 M01S00588.sxinit +++|* 2) ATTACH ERROR - BUDT FILE NOT FOUND. 00599 M01S00589.sxinit +++|* 00600 M01S00590.sxinit +++|* 3) BUDT CONTROLLER ENTRY COUNT EXCEEDED. 00601 M01S00591.sxinit +++|* 00602 M01S00592.sxinit +++|* 4) BUDT CONTROLLER TABLE READ ERROR. 00603 M01S00593.sxinit +++|* 00604 M01S00594.sxinit +++|* 5) BUDT READ ERROR. 00605 M01S00595.sxinit +++|* 00606 M01S00596.sxinit +++|* 6) BUDT SM ENTRY COUNT EXCEEDED. 00607 M01S00597.sxinit +++|* 00608 M01S00598.sxinit +++|* 7) BUDT SM TABLE READ ERROR. 00609 M01S00599.sxinit +++|* 00610 M01S00600.sxinit +++|* 8) EST ORDINAL XX - NO UDT ENTRY. 00611 M01S00601.sxinit +++|* 00612 M01S00602.sxinit +++|* 9) EST READ ERROR. 00613 M01S00603.sxinit +++|* 00614 M01S00604.sxinit +++|* 10) EST/UDT CHANNEL MISMATCH. 00615 M01S00605.sxinit +++|* 00616 M01S00606.sxinit +++|* 11) MORE CHANNELS THAN MSG FETS. 00617 M01S00607.sxinit +++|* 00618 M01S00608.sxinit +++|* 12) VERIFY ERROR ON EST ENTRY XX. 00619 M01S00609.sxinit +++|* 00620 M01S00610.sxinit +++|* NOTES *INITTAB* MUST BE CALLED BEFORE *GETUDT* SO THAT AN 00621 M01S00611.sxinit +++|* I/O BUFFER IS AVAILABLE TO READ THE BUDT INTO 00622 M01S00612.sxinit +++|* *SSEXEC*. 00623 M01S00613.sxinit +++|* 00624 M01S00614.sxinit +++|* *KINIT* MUST BE CALLED BEFORE *GETUDT* SO THAT A 00625 M01S00615.sxinit +++|* K-DISPLAY MESSAGE CAN BE ISSUED ALLOWING THE OPERATOR 00626 M01S00616.sxinit +++|* TO RUN *SSALTER* TO MODIFY THE UDT. 00627 M01S00617.sxinit +++|* 00628 M01S00618.sxinit +++|* THE *UCP* INTERFACE MUST BE INITIALIZED BEFORE 00629 M01S00619.sxinit +++|* *GETUDT* IS CALLED SO THAT *SSALTER* MAY BE RUN. 00630 M01S00620.sxinit +++|# 00631 M01S00621.sxinit +++| 00632 M01S00622.sxinit +++|# 00633 M01S00623.sxinit +++|**** PROC GETUDT - XREF LIST BEGIN. 00634 M01S00624.sxinit +++|# 00635 M01S00625.sxinit +++| 00636 M01S00626.sxinit +++| XREF 00637 M01S00627.sxinit +++| BEGIN 00638 M01S00628.sxinit +++| PROC ATTACH; # ATTACH FILE # 00639 M01S00629.sxinit +++| PROC BZFILL; # BLANK OR ZERO FILLS # 00640 M01S00630.sxinit +++| PROC PFD; # PFM ENTRY # 00641 M01S00631.sxinit +++| PROC SETPFP; # SETS USER INDEX AND FAMILY # 00642 M01S00632.sxinit +++| PROC MESSAGE; # CALLS *MESSAGE* MACRO # 00643 M01S00633.sxinit +++| PROC RDEST; # READ EST ENTRIES # 00644 M01S00634.sxinit +++| PROC READ; # READS FILE TO I/O BUFFER # 00645 M01S00635.sxinit +++| PROC READW; # READS FILE TO WORKING BUFFER # 00646 M01S00636.sxinit +++| PROC RETERN; # RETURNS FILE # 00647 M01S00637.sxinit +++| PROC RTIME; # GET REAL TIME # 00648 M01S00638.sxinit +++| FUNC XCOD C(10); # CONVERT OCTAL TO DISPLAY # 00649 M01S00639.sxinit +++| PROC ZSETFET; # SETS UP *FET* # 00650 M01S00640.sxinit +++| END 00651 M01S00641.sxinit +++| 00652 M01S00642.sxinit +++|# 00653 M01S00643.sxinit +++|**** PROC GETUDT - XREF LIST END. 00654 M01S00644.sxinit +++|# 00655 M01S00645.sxinit +++| 00656 M01S00646.sxinit +++| DEF CNTYPE #"SS"#; # CONTROLLER TYPE # 00657 M01S00001.sxinit4 +++| DEF DOWNSTATUS #3#; # CONTROLLER EST *DOWN* STATUS # 00658 M01S00647.sxinit +++| DEF ESTCHAN(CUO,UCHO) #B<13+(UCHO*6),5>EST$WORD[0]#; 00659 M01S00648.sxinit +++| # EST CHANNEL #
Line S00649 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act ----------------------------+ 00660 M02S00649.sxinit2 ---| DEF ESTON(CUO,UCHO) #B<12+(UCHO*6),1>EST$WORD[0]#; 00661 M01S00005.sxinit2 +++| DEF ESTON(UCHO) # B<12+(UCHO*6),1>EST$WORD[0]#; 00662 M01S00650.sxinit +++| # EST CHANNEL STATUS # 00663 M01S00651.sxinit +++| DEF FILLSIZE #7#; # FILL SIZE FOR *BZFILL* # 00664 M01S00652.sxinit +++| DEF FIRSTCHAN #1#; # PRIMARY EST CHANNEL INDEX # 00665 M01S00002.sxinit4 +++| DEF IDLESTATUS #1#; # CONTROLLER EST *IDLE* STATUS # 00666 M01S00003.sxinit4 +++| DEF OFFSTATUS #2#; # CONTROLLER EST *OFF* STATUS # 00667 M01S00004.sxinit4 +++| DEF ONSTATUS #0#; # CONTROLLER EST *ON* STATUS # 00668 M01S00653.sxinit +++| DEF READMODE #1#; # READ MODE FOR ATTACH # 00669 M01S00654.sxinit +++| DEF UDTEX(CUO,CIFO) #B<CIFO,1>UD$CHEX[CUO]#; 00670 M01S00655.sxinit +++| # SET IF CHANNEL EXISTS # 00671 M01S00656.sxinit +++| 00672 M01S00657.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 00673 M01S00658.sxinit +++|*CALL COMBFAS 00674 M01S00659.sxinit +++|*CALL COMBBZF 00675 M01S00660.sxinit +++|*CALL COMBCMD 00676 M01S00661.sxinit +++|*CALL COMBCPR 00677 M01S00662.sxinit +++|*CALL,COMBFET 00678 M01S00663.sxinit +++|*CALL COMBKDD 00679 M01S00664.sxinit +++|*CALL COMBMAT 00680 M01S00665.sxinit +++|*CALL,COMBPFP 00681 M01S00666.sxinit +++|*CALL COMBPFS 00682 M01S00667.sxinit +++|*CALL COMBUCR 00683 M01S00668.sxinit +++|*CALL COMBUDT 00684 M01S00669.sxinit +++|*CALL COMSPFM 00685 M01S00670.sxinit +++|*CALL COMXBST 00686 M01S00671.sxinit +++|*CALL COMXCTF 00687 M01S00672.sxinit +++|*CALL COMXINT 00688 M01S00673.sxinit +++|*CALL COMXJCA 00689 M01S00674.sxinit +++| 00690 M01S00675.sxinit +++| 00691 M01S00007.sxinit3 +++| ITEM BITMAPPOS U; # BIT POSITION IN EST ORD BIT MAP # 00692 M01S00008.sxinit3 +++| ITEM BITMAPWORD U; # EST ORDINAL BIT MAP WORD # 00693 M01S00676.sxinit +++| ITEM BUFL U; # I/O BUFFER LENGTH # 00694 M01S00009.sxinit3 +++| ITEM DESIREDORD I; # EST ORD TO CHECK IN BIT MAP # 00695 M01S00677.sxinit +++| ITEM ESTNUM U; # COUNT OF EST ENTRIES READ # 00696 M01S00678.sxinit +++| ITEM ESTORD C(10); # DISPLAY CODE EST ORDINAL # 00697 M01S00679.sxinit +++| ITEM NUM I; # NUMBER OF EST ENTRIES # 00698 M01S00680.sxinit +++| ITEM FETL U; # TEMP BUFFER FET LENGTH # 00699 M01S00681.sxinit +++| ITEM FOUND B; # SET IF EST/UDT MATCH FOUND # 00700 M01S00682.sxinit +++| ITEM I U; # INDEX # 00701 M01S00683.sxinit +++| ITEM J U; # INDEX # 00702 M01S00684.sxinit +++| ITEM K I; # INDEX # 00703 M01S00685.sxinit +++| ITEM LFN C(7); # BUDT LOCAL FILENAME # 00704 M01S00686.sxinit +++| ITEM PASSWORD C(7); # BUDT FILE PASSWORD # 00705 M01S00687.sxinit +++| ITEM STAT U; # FUNCTION RETURN STATUS # 00706 M01S00688.sxinit +++| ITEM TMPCCNT U; # TEMP CHANNEL COUNT # 00707 M01S00689.sxinit +++| 00708 M01S00690.sxinit +++|# 00709 M01S00691.sxinit +++|* ARRAY TO MARK SS-TYPE EQUIPMENT. 00710 M01S00692.sxinit +++|# 00711 M01S00693.sxinit +++|
Line S00694 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00712 M02S00694.sxinit3 ---| ARRAY EQBITS [0:0] S(9); 00713 M01S00010.sxinit3 +++| ARRAY EQBITS [0:8] S(9); 00714 M01S00695.sxinit +++| BEGIN
Line S00696 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00715 M02S00696.sxinit3 ---| ITEM EQUSED U; 00716 M01S00011.sxinit3 +++| ITEM EQUSED U(00,00,60); # BIT MAP WORD # 00717 M01S00697.sxinit +++| END 00718 M01S00698.sxinit +++| 00719 M01S00699.sxinit +++| 00720 M01S00700.sxinit +++|# 00721 M01S00701.sxinit +++|* EST BUFFER. 00722 M01S00702.sxinit +++|# 00723 M01S00703.sxinit +++| 00724 M01S00704.sxinit +++| ARRAY ESTB [0:0] S(2); 00725 M01S00705.sxinit +++| BEGIN # EST # 00726 M01S00706.sxinit +++| ITEM EST$WORD U(00,00,60); # EST WORD # 00727 M01S00005.sxinit4 +++| ITEM EST$STAT U(00,10,02); # CONTROLLER STATUS # 00728 M01S00707.sxinit +++| ITEM EST$CHBDWN B(00,12,01); # CHANNEL *B* DOWN # 00729 M01S00708.sxinit +++| ITEM EST$CHB U(00,13,05); # CHANNEL *B* # 00730 M01S00709.sxinit +++| ITEM EST$CHADWN B(00,18,01); # CHANNEL *A* DOWN # 00731 M01S00710.sxinit +++| ITEM EST$CHA U(00,19,05); # CHANNEL *A* # 00732 M01S00711.sxinit +++| ITEM EST$CHDDWN B(00,24,01); # CHANNEL *D* DOWN # 00733 M01S00712.sxinit +++| ITEM EST$CHD U(00,25,05); # CHANNEL *D* # 00734 M01S00713.sxinit +++| ITEM EST$CHCDWN B(00,30,01); # CHANNEL *C* DOWN # 00735 M01S00714.sxinit +++| ITEM EST$CHC U(00,31,05); # CHANNEL *C* #
Line S00715 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit4 |
Seq # *Modification Id* Act ----------------------------+ 00736 M02S00715.sxinit4 ---| ITEM EST$OFF B(00,36,01); # CONTROLLER OFF # 00737 M01S00716.sxinit +++| ITEM EST$CONT U(00,37,11); # CONTROLLER TYPE # 00738 M01S00717.sxinit +++| ITEM EST$CNCT U(00,48,03); # CONNECT CODE # 00739 M01S00718.sxinit +++| END # EST # 00740 M01S00719.sxinit +++| 00741 M01S00720.sxinit +++| 00742 M01S00721.sxinit +++|# 00743 M01S00722.sxinit +++|* UDT CHANNEL ARRAY. 00744 M01S00723.sxinit +++|# 00745 M01S00724.sxinit +++| 00746 M01S00725.sxinit +++| ARRAY UDTCH [0:MAX$CH] S(1); 00747 M01S00726.sxinit +++| BEGIN 00748 M01S00006.sxinit2 +++| ITEM UDTCWORD U(00,00,06); # CHANNEL WORD # 00749 M01S00727.sxinit +++| ITEM UDTBSTAT B(00,00,01); # CHANNEL STATUS (BOOLEAN) # 00750 M01S00728.sxinit +++| ITEM UDTSTAT U(00,00,01); # CHANNEL STATUS # 00751 M01S00729.sxinit +++| ITEM UDTCHAN U(00,01,05); # CHANNEL NUMBER # 00752 M01S00730.sxinit +++| END 00753 M01S00731.sxinit +++| 00754 M01S00732.sxinit +++| 00755 M01S00733.sxinit +++|# 00756 M01S00734.sxinit +++|* *MISSING UDT ENTRY* ERROR MESSAGE BUFFER. 00757 M01S00735.sxinit +++|# 00758 M01S00736.sxinit +++| 00759 M01S00737.sxinit +++| ARRAY MISMB [0:0] S(4); 00760 M01S00738.sxinit +++| BEGIN # MESSAGE BUFFER # 00761 M01S00739.sxinit +++| ITEM MIS$1 C(00,00,13) = [" EST ORDINAL "]; 00762 M01S00740.sxinit +++| ITEM MIS$NUM U(01,18,24); # EST ORDINAL # 00763 M01S00741.sxinit +++| ITEM MIS$2 C(01,42,16) = [" - NO UDT ENTRY."]; 00764 M01S00742.sxinit +++| ITEM MIS$ZRO U(03,18,42) = [0]; # ZERO-BYTE TERMINATOR # 00765 M01S00743.sxinit +++| END # MESSAGE BUFFER # 00766 M01S00744.sxinit +++| 00767 M01S00745.sxinit +++| 00768 M01S00746.sxinit +++|# 00769 M01S00747.sxinit +++|* GENERAL ERROR MESSAGE BUFFER. 00770 M01S00748.sxinit +++|# 00771 M01S00749.sxinit +++| 00772 M01S00750.sxinit +++| ARRAY MSGMB [0:0] S(5); 00773 M01S00751.sxinit +++| BEGIN # MESSAGE BUFFER # 00774 M01S00752.sxinit +++| ITEM MSG$LINE C(00,00,40); # MESSAGE LINE # 00775 M01S00753.sxinit +++| ITEM MSG$ZRO U(04,00,12) = [0]; # ZERO-BYTE TERMINATOR # 00776 M01S00754.sxinit +++| END # MESSAGE BUFFER # 00777 M01S00755.sxinit +++| 00778 M01S00756.sxinit +++| 00779 M01S00757.sxinit +++|# 00780 M01S00758.sxinit +++|* *VERIFY* ERROR MESSAGE BUFFER. 00781 M01S00759.sxinit +++|# 00782 M01S00760.sxinit +++| 00783 M01S00761.sxinit +++| ARRAY VERMB [0:0] S(4); 00784 M01S00762.sxinit +++| BEGIN # MESSAGE BUFFER # 00785 M01S00763.sxinit +++| ITEM VER$1 C(00,00,27) = [" VERIFY ERROR ON EST ENTRY "]; 00786 M01S00764.sxinit +++| ITEM VER$NUM C(02,42,24); # EST ORDINAL # 00787 M01S00765.sxinit +++| ITEM VER$2 C(03,06,06) = ["."]; 00788 M01S00766.sxinit +++| ITEM VER$ZRO U(03,12,48) = [0]; # ZERO-BYTE TERMINATOR # 00789 M01S00767.sxinit +++| END # MESSAGE BUFFER # 00790 M01S00768.sxinit +++| 00791 M01S00769.sxinit +++| 00792 M01S00770.sxinit +++| CONTROL EJECT; 00793 M01S00771.sxinit +++| 00794 M01S00772.sxinit +++|# 00795 M01S00773.sxinit +++|* READ BUDT INTO TEMPORARY BUFFER. 00796 M01S00774.sxinit +++|# 00797 M01S00775.sxinit +++| 00798 M01S00776.sxinit +++| LFN = BUDT; 00799 M01S00777.sxinit +++| PASSWORD = BUDTPW; 00800 M01S00778.sxinit +++| BZFILL(LFN,TYPFILL"ZFILL",FILLSIZE); # CLEAR FILENAME # 00801 M01S00779.sxinit +++| BZFILL(PASSWORD,TYPFILL"ZFILL",FILLSIZE); # CLEAR PASSWORD # 00802 M01S00780.sxinit +++| PFP$UI = DEF$UI; # SET *SETPFP* PARAMETERS # 00803 M01S00781.sxinit +++| PFP$FAM = FAM$NAME[DEFAULTORD]; 00804 M01S00782.sxinit +++| PFP$FG1 = TRUE; 00805 M01S00783.sxinit +++| PFP$FG4 = TRUE; 00806 M01S00784.sxinit +++| SETPFP(PFP[0]); # SET USER INDEX AND FAMILY # 00807 M01S00785.sxinit +++| 00808 M01S00786.sxinit +++|# 00809 M01S00787.sxinit +++|* TRY ATTACHING BUDT FILE 10 TIMES BEFORE TERMINATING. 00810 M01S00788.sxinit +++|# 00811 M01S00789.sxinit +++| SLOWFOR I = 0 STEP 1 UNTIL 10 00812 M01S00790.sxinit +++| DO 00813 M01S00791.sxinit +++| BEGIN 00814 M01S00792.sxinit +++| PFD("ATTACH",LFN,0,"PW",PASSWORD,"RC",PFSTAT,"NA",0,"UP",0,0); 00815 M01S00793.sxinit +++| 00816 M01S00794.sxinit +++| IF PFSTAT EQ OK 00817 M01S00795.sxinit +++| THEN 00818 M01S00796.sxinit +++| BEGIN # BUDT ATTACHED # 00819 M01S00797.sxinit +++| GOTO ENDCON; 00820 M01S00798.sxinit +++| END 00821 M01S00799.sxinit +++| END # ATTACH BUDT LOOP # 00822 M01S00800.sxinit +++| 00823 M01S00801.sxinit +++|ENDCON: 00824 M01S00802.sxinit +++| 00825 M01S00803.sxinit +++| IF PFSTAT NQ OK 00826 M01S00804.sxinit +++| THEN # PROCESS ATTACH ERROR # 00827 M01S00805.sxinit +++| BEGIN # ABORT # 00828 M01S00806.sxinit +++| MSG$LINE[0] = " ATTACH ERROR - BUDT FILE BUSY."; 00829 M01S00807.sxinit +++| IF PFP$STAT[0] NQ FBS 00830 M01S00808.sxinit +++| THEN # BUDT FILE NOT FOUND # 00831 M01S00809.sxinit +++| BEGIN # NOT FOUND # 00832 M01S00810.sxinit +++| MSG$LINE[0] = " ATTACH ERROR - BUDT FILE NOT FOUND."; 00833 M01S00811.sxinit +++| END # NOT FOUND # 00834 M01S00812.sxinit +++| 00835 M01S00813.sxinit +++| GOTO GETUDT1; 00836 M01S00814.sxinit +++| END # ABORT # 00837 M01S00815.sxinit +++| 00838 M01S00816.sxinit +++| BUFL = MAT$SPACE[MAT$ENTRY"TEMP$BUF"]; 00839 M01S00817.sxinit +++| FETL = MAT$SPACE[MAT$ENTRY"TEMP$FET"]; 00840 M01S00818.sxinit +++| ZSETFET(TFETADR,LFN,TBUFADR,BUFL,FETL); 00841 M01S00819.sxinit +++| READ(TFET,RCL); # READ BUDT WITH AUTO-RECALL # 00842 M01S00820.sxinit +++| 00843 M01S00821.sxinit +++|# 00844 M01S00822.sxinit +++|* READ BUDT FROM TEMPORARY BUFFER INTO UDT SPACE. 00845 M01S00823.sxinit +++|# 00846 M01S00824.sxinit +++| 00847 M01S00825.sxinit +++| P<UDT$WORD> = UDTCADR; 00848 M01S00826.sxinit +++| READW(TFET,UDT$WORD,1,STAT); 00849 M01S00827.sxinit +++| IF STAT NQ OK 00850 M01S00828.sxinit +++| THEN # READ COMPLETED WITH ERRORS # 00851 M01S00829.sxinit +++| BEGIN # ABORT # 00852 M01S00830.sxinit +++| MSG$LINE[0] = " BUDT READ ERROR."; 00853 M01S00831.sxinit +++| GOTO GETUDT1; 00854 M01S00832.sxinit +++| END # ABORT # 00855 M01S00833.sxinit +++| 00856 M01S00834.sxinit +++| IF UDT$LINE$CUN[0] GR MAXCTN 00857 M01S00835.sxinit +++| THEN # CONTROLLER TABLE TOO LARGE # 00858 M01S00836.sxinit +++| BEGIN # ABORT # 00859 M01S00837.sxinit +++| MSG$LINE[0] = " BUDT CONTROLLER ENTRY COUNT EXCEEDED."; 00860 M01S00838.sxinit +++| GOTO GETUDT1; 00861 M01S00839.sxinit +++| END # ABORT # 00862 M01S00840.sxinit +++|
Line S00841 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act ----------------------------+ 00863 M02S00841.sxinit2 ---| IF UDT$LINE$SMN[0] GR MAXSMUNIT 00864 M01S00007.sxinit2 +++| IF UDT$LINE$SMN[0] GR MAXSM 00865 M01S00842.sxinit +++| THEN # SM TABLE TOO LARGE # 00866 M01S00843.sxinit +++| BEGIN # ABORT # 00867 M01S00844.sxinit +++| MSG$LINE[0] = " BUDT SM ENTRY COUNT EXCEEDED."; 00868 M01S00845.sxinit +++| GOTO GETUDT1; 00869 M01S00846.sxinit +++| END # ABORT # 00870 M01S00847.sxinit +++| 00871 M01S00848.sxinit +++| UDT$WORDCNT[0] = MAT$SPACE[MAT$ENTRY"UDT$CONT"] 00872 M01S00849.sxinit +++| + MAT$SPACE[MAT$ENTRY"UDT$SM"]; 00873 M01S00850.sxinit +++| 00874 M01S00851.sxinit +++| READW(TFET,UDT$CN,UDTCUL,STAT); # STORE CU TABLE # 00875 M01S00852.sxinit +++| IF STAT NQ OK 00876 M01S00853.sxinit +++| THEN # READ COMPLETED WITH ERRORS # 00877 M01S00854.sxinit +++| BEGIN # ABORT # 00878 M01S00855.sxinit +++| MSG$LINE[0] = " BUDT CONTROLLER TABLE READ ERROR."; 00879 M01S00856.sxinit +++| GOTO GETUDT1; 00880 M01S00857.sxinit +++| END # ABORT # 00881 M01S00858.sxinit +++| 00882 M01S00859.sxinit +++| READW(TFET,UDT$SMA,UDTSML,STAT); # STORE *SM* TABLE # 00883 M01S00860.sxinit +++| IF STAT NQ OK 00884 M01S00861.sxinit +++| THEN # READ COMPLETED WITH ERRORS # 00885 M01S00862.sxinit +++| BEGIN # ABORT # 00886 M01S00863.sxinit +++| MSG$LINE[0] = " BUDT SM TABLE READ ERROR."; 00887 M01S00864.sxinit +++| GOTO GETUDT1; 00888 M01S00865.sxinit +++| END # ABORT # 00889 M01S00866.sxinit +++| 00890 M01S00867.sxinit +++| RETERN(TFET,RCL); # RETURN BUDT WITH AUTO-RECALL # 00891 M01S00868.sxinit +++| RETERN(TFET,RCL); 00892 M01S00869.sxinit +++| 00893 M01S00870.sxinit +++|# 00894 M01S00871.sxinit +++|* INITIALIZE UDT CONTROLLER AND SM ENTRIES. 00895 M01S00872.sxinit +++|# 00896 M01S00873.sxinit +++|
Line S00874 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00897 M02S00874.sxinit3 ---| EQUSED = 0; 00898 M01S00012.sxinit3 +++| SLOWFOR I = 1 STEP 1 UNTIL 9 00899 M01S00013.sxinit3 +++| DO # PRESET EST ORDINAL BIT MAP # 00900 M01S00014.sxinit3 +++| BEGIN # PRESET # 00901 M01S00015.sxinit3 +++| EQUSED[I] = 0; 00902 M01S00016.sxinit3 +++| END # PRESET # 00903 M01S00875.sxinit +++| 00904 M01S00876.sxinit +++| MAX$ACHN = 0; # PRESET ACTIVE CHANNEL COUNT # 00905 M01S00877.sxinit +++| SLOWFOR I = 1 STEP 1 WHILE UD$EXIST[I] AND I LQ MAXCTN 00906 M01S00878.sxinit +++| DO # PRESET CONTROLLER ENTRIES # 00907 M01S00879.sxinit +++| BEGIN # PRESET # 00908 M01S00880.sxinit +++| NUM = 1; 00909 M01S00881.sxinit +++| ESTNUM = UD$ESTO[I]; 00910 M01S00882.sxinit +++| RDEST(ESTB,NUM,ESTNUM); # READ EST ENTRY # 00911 M01S00883.sxinit +++| IF NUM NQ 1 00912 M01S00884.sxinit +++| THEN # ABORT ON READ ERROR # 00913 M01S00885.sxinit +++| BEGIN 00914 M01S00886.sxinit +++| MSG$LINE[0] = "EST READ ERROR."; 00915 M01S00887.sxinit +++| GOTO GETUDT1; 00916 M01S00888.sxinit +++| END 00917 M01S00889.sxinit +++| 00918 M01S00890.sxinit +++| IF EST$CONT[0] NQ CNTYPE # CONTROLLER TYPE MISMATCH # 00919 M01S00891.sxinit +++| OR EST$CNCT[0] NQ UD$CUDA[I] # CONNECT MISMATCH # 00920 M01S00892.sxinit +++| THEN # CONTROLLER ENTRY IS INCORRECT # 00921 M01S00893.sxinit +++| BEGIN # ABORT # 00922 M01S00894.sxinit +++| ESTORD = XCOD(UD$ESTO[I]); # SET EST ORDINAL IN MESSAGE # 00923 M01S00895.sxinit +++| VER$NUM[0] = C<6,4>ESTORD; 00924 M01S00896.sxinit +++| MESSAGE(VERMB,SYSUDF1); 00925 M01S00897.sxinit +++| FATALERR = TRUE; 00926 M01S00898.sxinit +++| RETURN; 00927 M01S00899.sxinit +++| END # ABORT # 00928 M01S00900.sxinit +++|
Line S00901 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit4 |
Seq # *Modification Id* Act ----------------------------+ 00929 M02S00901.sxinit4 ---| UD$CUON[I] = NOT EST$OFF[0]; # MOVE CU STATUS # 00930 M01S00006.sxinit4 +++| UD$CUON[I] = EST$STAT[0] EQ ONSTATUS # MOVE CU STATUS # 00931 M01S00007.sxinit4 +++| OR EST$STAT[0] EQ IDLESTATUS;
Line S00902 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act ----------------------------+ 00932 M02S00902.sxinit2 ---| UDTCHAN[0] = UD$CHANA[I]; # COPY UDT CHANNEL INFO #
Line S00903 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act ----------------------------+ 00933 M02S00903.sxinit2 ---| UDTCHAN[1] = UD$CHANB[I];
Line S00904 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act ----------------------------+ 00934 M02S00904.sxinit2 ---| UDTCHAN[2] = UD$CHANC[I];
Line S00905 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act ----------------------------+ 00935 M02S00905.sxinit2 ---| UDTCHAN[3] = UD$CHAND[I]; 00936 M01S00008.sxinit2 +++| UDTCWORD[0] = UD$CHANA[I]; # COPY UDT CHANNEL INFO # 00937 M01S00009.sxinit2 +++| UDTCWORD[1] = UD$CHANB[I]; 00938 M01S00010.sxinit2 +++| UDTCWORD[2] = UD$CHANC[I]; 00939 M01S00011.sxinit2 +++| UDTCWORD[3] = UD$CHAND[I]; 00940 M01S00906.sxinit +++| TMPCCNT = 0; # PRESET TEMP CHANNEL COUNT # 00941 M01S00907.sxinit +++| SLOWFOR J = 0 STEP 1 UNTIL MAX$CH 00942 M01S00908.sxinit +++| DO # SCAN EST ENTRY FOR CHANNELS # 00943 M01S00909.sxinit +++| BEGIN # SCAN EST # 00944 M01S00910.sxinit +++| IF J EQ FIRSTCHAN # IN CASE CHANNEL 0 # 00945 M01S00911.sxinit +++| OR ESTCHAN(I,J) NQ 0 00946 M01S00912.sxinit +++| THEN # EST CHANNEL FOUND # 00947 M01S00913.sxinit +++| BEGIN # FOUND # 00948 M01S00914.sxinit +++| FOUND = FALSE; 00949 M01S00915.sxinit +++| SLOWFOR K = 0 STEP 1 UNTIL MAX$CH 00950 M01S00916.sxinit +++| DO # SCAN ARRAY FOR CHANNEL MATCH # 00951 M01S00917.sxinit +++| BEGIN # SCAN UDT # 00952 M01S00918.sxinit +++| IF UDTEX(I,K) NQ 0 # UDT CHANNEL FOUND # 00953 M01S00919.sxinit +++| AND ESTCHAN(I,J) EQ UDTCHAN[K] # CHANNELS MATCH # 00954 M01S00920.sxinit +++| THEN # MOVE CHANNEL STATUS TO UDT # 00955 M01S00921.sxinit +++| BEGIN # STATUS # 00956 M01S00922.sxinit +++| FOUND = TRUE;
Line S00923 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act ----------------------------+ 00957 M02S00923.sxinit2 ---| UDTSTAT[K] = 1 - ESTON(I,J); # TOGGLE SO ON IF SET # 00958 M01S00924.sxinit +++| MAX$ACHN = MAX$ACHN + UDTSTAT[K]; # COUNT CHANNELS # 00959 M01S00925.sxinit +++| TMPCCNT = TMPCCNT + 1; 00960 M01S00012.sxinit2 +++| IF ESTON(J) EQ 1 00961 M01S00013.sxinit2 +++| THEN # CHANNEL OFF IN EST # 00962 M01S00014.sxinit2 +++| BEGIN # OFF # 00963 M01S00015.sxinit2 +++| UDTBSTAT[K] = FALSE; # TURN OFF CHANNEL IN UDT # 00964 M01S00016.sxinit2 +++| END # OFF # 00965 M01S00017.sxinit2 +++| 00966 M01S00926.sxinit +++| END # STATUS # 00967 M01S00927.sxinit +++| 00968 M01S00928.sxinit +++| END # SCAN UDT # 00969 M01S00929.sxinit +++| 00970 M01S00930.sxinit +++| IF NOT FOUND 00971 M01S00931.sxinit +++| THEN # CHANNEL MISMATCH # 00972 M01S00932.sxinit +++| BEGIN # ABORT # 00973 M01S00933.sxinit +++| GOTO GETUDT2; 00974 M01S00934.sxinit +++| END # ABORT # 00975 M01S00935.sxinit +++| 00976 M01S00936.sxinit +++| END # FOUND # 00977 M01S00937.sxinit +++| 00978 M01S00938.sxinit +++| END # SCAN EST # 00979 M01S00939.sxinit +++| 00980 M01S00940.sxinit +++| IF TMPCCNT NQ (UDTEX(I,0) + UDTEX(I,1) + 00981 M01S00941.sxinit +++| UDTEX(I,2) + UDTEX(I,3)) 00982 M01S00942.sxinit +++| THEN # CHANNEL MISMATCH # 00983 M01S00943.sxinit +++| BEGIN # ABORT # 00984 M01S00944.sxinit +++| GOTO GETUDT2; 00985 M01S00945.sxinit +++| END # ABORT # 00986 M01S00946.sxinit +++| 00987 M01S00947.sxinit +++| UD$CHANA$O[I] = UDTBSTAT[0]; # COPY CHANNEL STATUSES TO UDT # 00988 M01S00948.sxinit +++| UD$CHANB$O[I] = UDTBSTAT[1]; 00989 M01S00949.sxinit +++| UD$CHANC$O[I] = UDTBSTAT[2]; 00990 M01S00950.sxinit +++| UD$CHAND$O[I] = UDTBSTAT[3]; 00991 M01S00951.sxinit +++| P<UDT$MSG> = LOC(UD$MSG[I]); 00992 M01S00952.sxinit +++| MS$MSQN$CN[0] = I; # STORE CONTROLLER ORDINAL #
Line S00953 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 00993 M02S00953.sxinit3 ---| B<UD$ESTO[I],1>EQUSED = 1; 00994 M01S00017.sxinit3 +++| BITMAPWORD = UD$ESTO[I]/60; 00995 M01S00018.sxinit3 +++| BITMAPPOS = UD$ESTO[I] - (BITMAPWORD * 60); 00996 M01S00019.sxinit3 +++| B<BITMAPPOS,1>EQUSED[BITMAPWORD] = 1; # NOTE ORD PROCESSED # 00997 M01S00954.sxinit +++| END # PRESET # 00998 M01S00955.sxinit +++| 00999 M01S00956.sxinit +++| SLOWFOR I= 1 STEP 1 UNTIL MAX$ACHN 01000 M01S00957.sxinit +++| DO 01001 M01S00958.sxinit +++| BEGIN 01002 M01S00959.sxinit +++| BST$AUTH[I] = TRUE; 01003 M01S00960.sxinit +++| END 01004 M01S00961.sxinit +++| 01005 M01S00962.sxinit +++|
Line S00963 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 01006 M02S00963.sxinit3 ---| SLOWFOR I = 1 STEP 1 WHILE NUM EQ 1 01007 M01S00020.sxinit3 +++| SLOWFOR BITMAPWORD = 0 STEP 1 WHILE NUM EQ 1 01008 M01S00964.sxinit +++| DO # FIND UNUSED M860 EST ENTRIES # 01009 M01S00965.sxinit +++| BEGIN # FIND #
Line S00966 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 01010 M02S00966.sxinit3 ---| NUM = 1;
Line S00967 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 01011 M02S00967.sxinit3 ---| RDEST(ESTB,NUM,I); 01012 M01S00021.sxinit3 +++| SLOWFOR BITMAPPOS = 0 STEP 1 UNTIL 59 01013 M01S00022.sxinit3 +++| DO # SCAN EST ORDINAL BIT MAP WORD # 01014 M01S00023.sxinit3 +++| BEGIN # WORD # 01015 M01S00024.sxinit3 +++| DESIREDORD = BITMAPPOS + (BITMAPWORD * 60); 01016 M01S00025.sxinit3 +++| IF DESIREDORD EQ 0 01017 M01S00026.sxinit3 +++| THEN # AVOID READING ENTIRE EST # 01018 M01S00027.sxinit3 +++| BEGIN # SKIP # 01019 M01S00028.sxinit3 +++| TEST BITMAPPOS; # ONLY READ INDIVIDUAL ENTRIES # 01020 M01S00029.sxinit3 +++| END # SKIP # 01021 M01S00030.sxinit3 +++| 01022 M01S00031.sxinit3 +++| NUM = 1; 01023 M01S00032.sxinit3 +++| RDEST(ESTB,NUM,DESIREDORD); 01024 M01S00033.sxinit3 +++| IF NUM NQ 1 01025 M01S00034.sxinit3 +++| THEN # EST ORDINAL NON-EXISTENT # 01026 M01S00035.sxinit3 +++| BEGIN # END # 01027 M01S00036.sxinit3 +++| TEST BITMAPWORD; # REACHED END OF EST # 01028 M01S00037.sxinit3 +++| END # END # 01029 M01S00038.sxinit3 +++| 01030 M01S00968.sxinit +++| IF EST$CONT[0] EQ CNTYPE
Line S00969 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 01031 M02S00969.sxinit3 ---| AND B<I,1>EQUSED EQ 0 01032 M01S00039.sxinit3 +++| AND B<BITMAPPOS,1>EQUSED[BITMAPWORD] EQ 0 01033 M01S00970.sxinit +++| THEN # UNPROCESSED ENTRY FOUND # 01034 M01S00971.sxinit +++| BEGIN # MESSAGE #
Line S00972 Modification History | |
---|---|
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act ----------------------------+ 01035 M02S00972.sxinit3 ---| ESTORD = XCOD(I); # SET EST ORDINAL IN MESSAGE # 01036 M01S00040.sxinit3 +++| ESTORD = XCOD(DESIREDORD); # SET EST ORDINAL IN MESSAGE # 01037 M01S00973.sxinit +++| MIS$NUM[0] = C<6,4>ESTORD; 01038 M01S00974.sxinit +++| MESSAGE(MISMB,SYSUDF1); 01039 M01S00975.sxinit +++| END # MESSAGE # 01040 M01S00976.sxinit +++| 01041 M01S00041.sxinit3 +++| END # WORD # 01042 M01S00042.sxinit3 +++| 01043 M01S00977.sxinit +++| END # FIND # 01044 M01S00978.sxinit +++| 01045 M01S00979.sxinit +++| SLOWFOR I = 1 STEP 1 WHILE SM$EXIST[I] AND I LQ MAXSMUNIT 01046 M01S00980.sxinit +++| DO # PRESET SM ENTRIES # 01047 M01S00981.sxinit +++| BEGIN # PRESET # 01048 M01S00982.sxinit +++| P<UDT$MSG> = LOC(D0$MSG[I]); 01049 M01S00983.sxinit +++| MS$MSQN$CN[0] = I; # STORE SM ORDINAL # 01050 M01S00984.sxinit +++| MS$MSQN$D0[0] = TRUE; # SET DRD 0 FLAG # 01051 M01S00985.sxinit +++| P<UDT$MSG> = LOC(D1$MSG[I]); 01052 M01S00986.sxinit +++| MS$MSQN$CN[0] = I; # STORE SM ORDINAL # 01053 M01S00987.sxinit +++| MS$MSQN$D1[0] = TRUE; # SET DRD 1 FLAG # 01054 M01S00988.sxinit +++| END # PRESET # 01055 M01S00989.sxinit +++| 01056 M01S00990.sxinit +++|# 01057 M01S00991.sxinit +++|* INITIALIZE MESSAGE READ AND WRITE BUFFER FETS. 01058 M01S00992.sxinit +++|# 01059 M01S00993.sxinit +++| 01060 M01S00994.sxinit +++| P<FETMWB> = MWRBADR + 1; # ALLOW FOR READ BUFFER PTR # 01061 M01S00995.sxinit +++| P<FETMRB> = MRDBADR; 01062 M01S00996.sxinit +++| SLOWFOR I = 1 STEP 1 WHILE UD$EXIST[I] AND (I LQ MAXCTN) 01063 M01S00997.sxinit +++| DO # CHECK UDT CHANNELS # 01064 M01S00998.sxinit +++| BEGIN # CHECK # 01065 M01S00999.sxinit +++| CHT$WORD[0] = UD$CHANA[I]; # PRESET TEMPORARY CHANNEL ARRAY # 01066 M01S01000.sxinit +++| CHT$WORD[1] = UD$CHANB[I]; 01067 M01S01001.sxinit +++| CHT$WORD[2] = UD$CHANC[I]; 01068 M01S01002.sxinit +++| CHT$WORD[3] = UD$CHAND[I]; 01069 M01S01003.sxinit +++| SLOWFOR J = 0 STEP 1 WHILE J LQ MAX$CIF 01070 M01S01004.sxinit +++| DO # FIND ON CHANNELS # 01071 M01S01005.sxinit +++| BEGIN # FIND # 01072 M01S01006.sxinit +++| IF CHT$ON[J] 01073 M01S01007.sxinit +++| AND (CHT$CHAN[J] NQ 0 OR J EQ 0) 01074 M01S01008.sxinit +++| THEN # INITIALIZE ASSOCIATED MSG FETS # 01075 M01S01009.sxinit +++| BEGIN # INITIALIZE # 01076 M01S01010.sxinit +++| IF P<FETMWB> GQ (MWRBADR + MAT$SPACE[MAT$ENTRY"MW$BUFS"]) 01077 M01S01011.sxinit +++| THEN # MORE CHANNELS THAN MSG FETS # 01078 M01S01012.sxinit +++| BEGIN # ABORT # 01079 M01S01013.sxinit +++| MSG$LINE[0] = " MORE CHANNELS THAN MSG FETS."; 01080 M01S01014.sxinit +++| GOTO GETUDT1; 01081 M01S01015.sxinit +++| END # ABORT # 01082 M01S01016.sxinit +++| 01083 M01S01017.sxinit +++| P<FETMRA> = P<FETMWB> - 1; 01084 M01S01018.sxinit +++| FRA$MRBADR[0] = P<FETMRB>; # MESSAGE READ BUFFER ADDRESS # 01085 M01S01019.sxinit +++| 01086 M01S01020.sxinit +++| FMW$FIRST[0] = P<FETMWB> + SFMWL; # PRESET WRITE BUFFER # 01087 M01S01021.sxinit +++| FMW$IN[0] = FMW$FIRST[0]; 01088 M01S01022.sxinit +++| FMW$OUT[0] = FMW$FIRST[0]; 01089 M01S01023.sxinit +++| FMW$CHAN[0] = CHT$CHAN[J]; 01090 M01S01024.sxinit +++| FMW$CHON[0] = TRUE; 01091 M01S01025.sxinit +++| FMW$LIMIT[0] = FMW$FIRST[0] + MWBUFL; 01092 M01S01026.sxinit +++| 01093 M01S01027.sxinit +++| FMR$CU[0] = I; # PRESET READ BUFFER # 01094 M01S01028.sxinit +++| FMR$FIRST[0] = P<FETMRB> + SFMRL; 01095 M01S01029.sxinit +++| FMR$IN[0] = FMR$FIRST[0]; 01096 M01S01030.sxinit +++| FMR$OUT[0] = FMR$FIRST[0]; 01097 M01S01031.sxinit +++| FMR$CHAN[0] = CHT$CHAN[J]; 01098 M01S01032.sxinit +++| FMR$CIF[0] = J; 01099 M01S01033.sxinit +++| FMR$LIMIT[0] = FMR$FIRST[0] + MRBUFL; 01100 M01S01034.sxinit +++| P<KWORD> = LOC(FMR$KWORDS[0]); # PRESET K-DISPLAY WORDS # 01101 M01S01035.sxinit +++| KW$COMP[0] = TRUE; 01102 M01S01036.sxinit +++| 01103 M01S01037.sxinit +++| P<MWBTMP> = LOC(UD$CAMF[I]); 01104 M01S01038.sxinit +++| MWB$ADDR[J] = P<FETMWB>; # SET FET ADDRESS IN CU ORDINAL # 01105 M01S01039.sxinit +++| P<FETMWB> = P<FETMWB> + SFMWL + MWBUFL + 1; # NEXT FETS # 01106 M01S01040.sxinit +++| P<FETMRB> = P<FETMRB> + SFMRL + MRBUFL; 01107 M01S01041.sxinit +++| END # INITIALIZE # 01108 M01S01042.sxinit +++| 01109 M01S01043.sxinit +++| END # FIND # 01110 M01S01044.sxinit +++| 01111 M01S01045.sxinit +++| END # CHECK # 01112 M01S01046.sxinit +++| 01113 M01S01047.sxinit +++| RETURN; 01114 M01S01048.sxinit +++| 01115 M01S01049.sxinit +++|GETUDT2: 01116 M01S01050.sxinit +++| MSG$LINE[0] = " EST/UDT CHANNEL MISMATCH."; 01117 M01S01051.sxinit +++| 01118 M01S01052.sxinit +++|GETUDT1: 01119 M01S01053.sxinit +++| MESSAGE(MSGMB,SYSUDF1); # ABORT PROCESSING # 01120 M01S01054.sxinit +++| FATALERR = TRUE; 01121 M01S01055.sxinit +++| RETURN; 01122 M01S01056.sxinit +++| END # GETUDT # 01123 M01S01057.sxinit +++| 01124 M01S01058.sxinit +++| TERM 01125 M01S01059.sxinit +++|PROC INITDAM; 01126 M01S01060.sxinit +++|# TITLE INITDAM - INITIALIZE *TDAM* INTERFACE. # 01127 M01S01061.sxinit +++| BEGIN # INITDAM # 01128 M01S01062.sxinit +++| 01129 M01S01063.sxinit +++|# 01130 M01S01064.sxinit +++|*** INITDAM - INITAILIZE *TDAM* INTERFACE. 01131 M01S01065.sxinit +++|* 01132 M01S01066.sxinit +++|* THIS ROUTINE WILL INITIALIZE THE *TDAM* INTERFACE 01133 M01S01067.sxinit +++|* AND ISSUE AN EVENT TO SWAP IN THE JOBS WAITING FOR *MSAS*. 01134 M01S01068.sxinit +++| 01135 M01S01069.sxinit +++|* PROC INITDAM. 01136 M01S01070.sxinit +++|* 01137 M01S01071.sxinit +++|* ENTRY *SSEXEC* HAS BEEN INITIALIZED AND READY TO BE 01138 M01S01072.sxinit +++|* CALLED BY WAITING JOBS. 01139 M01S01073.sxinit +++|* 01140 M01S01074.sxinit +++|* EXIT *TDAM* INTERFACE HAS BEEN INITIALIZED AND 01141 M01S01075.sxinit +++|* EVENT TO SWAP IN WAITING JOBS HAS BEEN ISSUED. 01142 M01S01076.sxinit +++|# 01143 M01S01077.sxinit +++| 01144 M01S01078.sxinit +++|# 01145 M01S01079.sxinit +++|**** PROC INITDAM - XREF LIST BEGIN. 01146 M01S01080.sxinit +++|# 01147 M01S01081.sxinit +++| 01148 M01S01082.sxinit +++| XREF 01149 M01S01083.sxinit +++| BEGIN 01150 M01S01084.sxinit +++| PROC EESET; # ENTERS EVENT IN EVENT TABLE # 01151 M01S01085.sxinit +++| PROC SYSTEM; # CALLS *SYSTEM* MACRO # 01152 M01S01086.sxinit +++| PROC ZFILL; # ZERO FILLS BUFFER # 01153 M01S01087.sxinit +++| END 01154 M01S01088.sxinit +++| 01155 M01S01089.sxinit +++|# 01156 M01S01090.sxinit +++|**** PROC INITDAM - XREF LIST END. 01157 M01S01091.sxinit +++|# 01158 M01S01092.sxinit +++| 01159 M01S01093.sxinit +++| DEF NO$EQUIP #0#; # NO EQUIPMENT VALUE # 01160 M01S01094.sxinit +++| 01161 M01S01095.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 01162 M01S01096.sxinit +++|*CALL COMBFAS 01163 M01S01097.sxinit +++|*CALL,COMBCDD 01164 M01S01098.sxinit +++|*CALL COMBTDM 01165 M01S01099.sxinit +++|*CALL COMBUDT 01166 M01S01100.sxinit +++|*CALL COMXCTF 01167 M01S01101.sxinit +++|*CALL COMXINT 01168 M01S01102.sxinit +++|*CALL,COMXJCA 01169 M01S01103.sxinit +++| 01170 M01S01104.sxinit +++| ITEM I U; # INDEX # 01171 M01S01105.sxinit +++| 01172 M01S01106.sxinit +++| 01173 M01S01107.sxinit +++| 01174 M01S01108.sxinit +++| 01175 M01S01109.sxinit +++| 01176 M01S01110.sxinit +++|# 01177 M01S01111.sxinit +++|* INITIALIZE *TDAM* INTERFACE AND ISSUE EVENT TO SWAP IN JOBS 01178 M01S01112.sxinit +++|* WAITING FOR *MSAS*. 01179 M01S01113.sxinit +++|# 01180 M01S01114.sxinit +++| 01181 M01S01115.sxinit +++| P<TDAM> = LOC(RA$TDAM); 01182 M01S01116.sxinit +++| ZFILL(TDAM,TDAMLEN); 01183 M01S01117.sxinit +++| 01184 M01S01118.sxinit +++| EESET$EQ[0] = NO$EQUIP; # USE NO EQUIPMENT VALUE # 01185 M01S01119.sxinit +++| EESET(EVENT); # SET EVENT INTO EVENT TABLE # 01186 M01S01120.sxinit +++| 01187 M01S01121.sxinit +++| 01188 M01S01122.sxinit +++|# 01189 M01S01123.sxinit +++|* PRESET ALL PP CALL BLOCK ENTRIES. 01190 M01S01124.sxinit +++|# 01191 M01S01125.sxinit +++| 01192 M01S01126.sxinit +++| SLOWFOR I = 1 STEP 1 UNTIL PPCBTSIZE 01193 M01S01127.sxinit +++| DO # SET PARAMETER WORD ADDRESS # 01194 M01S01128.sxinit +++| BEGIN # SET ADDRESS # 01195 M01S01129.sxinit +++| PPU$1SS[I] = "1SS"; 01196 M01S01130.sxinit +++| PPU$PADDR[I] = LOC(PPU$WORD1[I]); 01197 M01S01131.sxinit +++| PPU$DRCL[I] = LOC(DRVRRECALL); 01198 M01S01132.sxinit +++| END # SET ADDRESS # 01199 M01S01133.sxinit +++| 01200 M01S01134.sxinit +++| PPU$FC[1] = IRTDAM; 01201 M01S01135.sxinit +++| PPCBENCNT = PPCBENCNT+1; # INCREMENT PPCALL COUNT # 01202 M01S01136.sxinit +++| SPC$SPC[0] = "SPC"; 01203 M01S01137.sxinit +++| SPC$ADDR[0] = LOC(PPTMP); 01204 M01S01138.sxinit +++| PPT$WORD0[0] = PPU$WORD0[1]; 01205 M01S01139.sxinit +++| SLOWFOR I = 0 WHILE PPT$WORD0[0] NQ 0 01206 M01S01140.sxinit +++| DO 01207 M01S01141.sxinit +++| BEGIN 01208 M01S01142.sxinit +++| SYSTEM(SPC,RCL); 01209 M01S01143.sxinit +++| END 01210 M01S01144.sxinit +++| 01211 M01S01145.sxinit +++| END # INITDAM # 01212 M01S01146.sxinit +++| 01213 M01S01147.sxinit +++| TERM 01214 M01S01148.sxinit +++|PROC INITFAM; 01215 M01S01149.sxinit +++|# TITLE INITFAM - INITIALIZES SUBFAMILY PARAMETERS. # 01216 M01S01150.sxinit +++| 01217 M01S01151.sxinit +++| BEGIN # INITFAM # 01218 M01S01152.sxinit +++| 01219 M01S01153.sxinit +++|# 01220 M01S01154.sxinit +++|** INITFAM - INITIALIZES SUBFAMILY PARAMETERS. 01221 M01S01155.sxinit +++|* 01222 M01S01156.sxinit +++|* PROC INITFAM. 01223 M01S01157.sxinit +++|# 01224 M01S01158.sxinit +++| 01225 M01S01159.sxinit +++|# 01226 M01S01160.sxinit +++|**** PROC INITFAM - XREF LIST BEGIN. 01227 M01S01161.sxinit +++|# 01228 M01S01162.sxinit +++| 01229 M01S01163.sxinit +++| XREF 01230 M01S01164.sxinit +++| BEGIN 01231 M01S01165.sxinit +++| PROC ABORT; # CALLS *ABORT* MACRO # 01232 M01S01166.sxinit +++| PROC BZFILL; # BLANK OR ZERO FILLS # 01233 M01S01167.sxinit +++| PROC GETFAM; # GETS TABLE OF FAMILIES # 01234 M01S01168.sxinit +++| PROC MESSAGE; # CALLS *MESSAGE* MACRO # 01235 M01S01169.sxinit +++| PROC PFD; # PERMANENT FILE REQUEST DELAYS # 01236 M01S01170.sxinit +++| PROC RETERN; # RETURNS FILE # 01237 M01S01171.sxinit +++| PROC RMVBLNK; # REMOVE MULTIPLE BLANKS # 01238 M01S01172.sxinit +++| PROC SETPFP; # SETS USER INDEX AND FAMILY # 01239 M01S01173.sxinit +++| FUNC XCOD I; # CHANGES INTEGER TO DISPLAY # 01240 M01S01174.sxinit +++| PROC XWOD; # CHANGES INTEGER TO OCTAL # 01241 M01S01175.sxinit +++| PROC ZSETFET; # SETS UP *FET* # 01242 M01S01176.sxinit +++| END 01243 M01S01177.sxinit +++| 01244 M01S01178.sxinit +++|# 01245 M01S01179.sxinit +++|**** PROC INITFAM - XREF LIST END. 01246 M01S01180.sxinit +++|# 01247 M01S01181.sxinit +++| 01248 M01S01182.sxinit +++| DEF FILLSIZE #7#; # FILL SIZE FOR *BZFILL* # 01249 M01S01183.sxinit +++| DEF NUM$MST #4#; # NUMBER OF *MSA-S* # 01250 M01S01184.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 01251 M01S01185.sxinit +++|*CALL COMBFAS 01252 M01S01186.sxinit +++|*CALL COMBBZF 01253 M01S01187.sxinit +++|*CALL COMBPFP 01254 M01S01188.sxinit +++|*CALL COMBPFS 01255 M01S01189.sxinit +++|*CALL COMBUDT 01256 M01S01190.sxinit +++|*CALL COMXCTF 01257 M01S01191.sxinit +++|*CALL COMXINT 01258 M01S01192.sxinit +++|*CALL COMXMSC 01259 M01S01193.sxinit +++|*CALL COMSPFM 01260 M01S01194.sxinit +++| 01261 M01S01195.sxinit +++| 01262 M01S01196.sxinit +++| ITEM ATLEASTONE B; # AT LEAST ONE FOUND FLAG # 01263 M01S01197.sxinit +++| ITEM BADNUM U; # BAD FILE INDEX # 01264 M01S01198.sxinit +++| ITEM BLKFILL S:TYPFILL = S"BFILL"; # BLANK FILL # 01265 M01S01199.sxinit +++| ITEM BLKFOUND B; # BLANK FOUND FLAG # 01266 M01S01200.sxinit +++| ITEM FOUND B; # ITEM FOUND FLAG # 01267 M01S01201.sxinit +++| ITEM I U; # INDEX # 01268 M01S01202.sxinit +++| ITEM J U; # INDEX # 01269 M01S01203.sxinit +++| ITEM K U; # INDEX # 01270 M01S01204.sxinit +++| ITEM MSGTEMP C(8); # ITEM FOR *BZFILL* # 01271 M01S01205.sxinit +++| ITEM NUM$FAM U; # NUMBER OF *GETFAM* ENTRIES # 01272 M01S01206.sxinit +++| ITEM UI U; # USER INDEX # 01273 M01S01207.sxinit +++| 01274 M01S01208.sxinit +++| 01275 M01S01209.sxinit +++|# 01276 M01S01210.sxinit +++|* ARRAY TO DISPLAY BAD FILE INFORMATION. 01277 M01S01211.sxinit +++|# 01278 M01S01212.sxinit +++| 01279 M01S01213.sxinit +++| ARRAY BADFILE[0:MAXSF] P(3); 01280 M01S01214.sxinit +++| BEGIN 01281 M01S01215.sxinit +++| ITEM BAD$PFN C(00,00,07); # FILE NAME # 01282 M01S01216.sxinit +++| ITEM BAD$FAM C(00,42,08); # FAMILY NAME # 01283 M01S01217.sxinit +++| ITEM BAD$INDEX C(01,30,06); # USER INDEX # 01284 M01S01218.sxinit +++| END 01285 M01S01219.sxinit +++| 01286 M01S01220.sxinit +++|# 01287 M01S01221.sxinit +++|* ARRAY TO USER INDEX DISPLAY CODE. 01288 M01S01222.sxinit +++|# 01289 M01S01223.sxinit +++| 01290 M01S01224.sxinit +++| ARRAY DIS[0:0] P(2); 01291 M01S01225.sxinit +++| BEGIN 01292 M01S01226.sxinit +++| ITEM DIS$UI C(01,24,06); # USER INDEX IN DISPLAY CODE # 01293 M01S01227.sxinit +++| END 01294 M01S01228.sxinit +++| 01295 M01S01229.sxinit +++|# 01296 M01S01230.sxinit +++|* ARRAY TO HOLD *SFMCAT* FILE NAME. 01297 M01S01231.sxinit +++|# 01298 M01S01232.sxinit +++| 01299 M01S01233.sxinit +++| ARRAY CAT[0:0]; 01300 M01S01234.sxinit +++| BEGIN # CAT # 01301 M01S01235.sxinit +++| ITEM CAT$PFN C(00,00,07) = ["SFMCAT "]; # FILE NAME # 01302 M01S01236.sxinit +++| ITEM CAT$UNID C(00,36,01); # UNIQUE IDENTIFIER # 01303 M01S01237.sxinit +++| END # CAT # 01304 M01S01238.sxinit +++| 01305 M01S01239.sxinit +++| 01306 M01S01240.sxinit +++|# 01307 M01S01241.sxinit +++|* MESSAGE BUFFER. 01308 M01S01242.sxinit +++|# 01309 M01S01243.sxinit +++| 01310 M01S01244.sxinit +++| ARRAY MSGBUF[0:0] P(5); 01311 M01S01245.sxinit +++| BEGIN # ARRAY MSGBUF # 01312 M01S01246.sxinit +++| ITEM MSG$LINE C(00,00,40); # MESSAGE LINE # 01313 M01S01247.sxinit +++| ITEM MSG$RZRO C(04,00,12); # ZERO BYE TERMINATOR # 01314 M01S01248.sxinit +++| END # ARRAY MSGBUF # 01315 M01S01249.sxinit +++| 01316 M01S01250.sxinit +++| ARRAY SC$FET [0:0] P(SFETL); 01317 M01S01251.sxinit +++| ; 01318 M01S01252.sxinit +++| CONTROL EJECT; 01319 M01S01253.sxinit +++| 01320 M01S01254.sxinit +++|# 01321 M01S01255.sxinit +++|* FUNCTION 2 - ANALYZE FAMILIES. 01322 M01S01256.sxinit +++|* 01323 M01S01257.sxinit +++|* FIND NUMBER AND NAMES OF FAMILIES WITH ALL SUBFAMILY CATALOGS. 01324 M01S01258.sxinit +++|# 01325 M01S01259.sxinit +++| 01326 M01S01260.sxinit +++| NFAM = 1; 01327 M01S01261.sxinit +++| 01328 M01S01262.sxinit +++| SSID = ATAS; 01329 M01S01263.sxinit +++| GETFAM(FAMT,NUM$FAM,LINK[0],DEFAULTORD,SSID); 01330 M01S01264.sxinit +++| DEF$FAM = FAM$NAME[DEFAULTORD]; 01331 M01S01265.sxinit +++| 01332 M01S01266.sxinit +++| 01333 M01S01267.sxinit +++|# 01334 M01S01268.sxinit +++|* ATTEMPT TO ATTACH EACH *SFMCAT* FILE FOR EACH FAMILY. 01335 M01S01269.sxinit +++|* THE FOLLOWING ACTIONS WILL BE TAKEN DEPENDING ON THE NUMBER 01336 M01S01270.sxinit +++|* OF FILES ATTACHED 01337 M01S01271.sxinit +++|* 01338 M01S01272.sxinit +++|* 1) IF NONE, DO NOTHING, 01339 M01S01273.sxinit +++|* 2) IF EIGHT, SAVE THE FAMILY NAME, 01340 M01S01274.sxinit +++|* 3) IF SOME BUT NOT EIGHT, ISSUE ERROR MESSAGE. 01341 M01S01275.sxinit +++|# 01342 M01S01276.sxinit +++| 01343 M01S01277.sxinit +++| SLOWFOR I = 1 STEP 1 UNTIL NUM$FAM 01344 M01S01278.sxinit +++| DO 01345 M01S01279.sxinit +++| BEGIN # CHECK ALL FAMILIES FOR EIGHT CATALOGS # 01346 M01S01280.sxinit +++| 01347 M01S01281.sxinit +++| ATLEASTONE = FALSE; # AT LEAST ONE FOUND FLAG # 01348 M01S01282.sxinit +++| FOUND = TRUE; # CATALOG FOUND FLAG # 01349 M01S01283.sxinit +++| BADNUM = 0; # BAD FILE INDEX # 01350 M01S01284.sxinit +++| 01351 M01S01285.sxinit +++| SLOWFOR J = 0 STEP 1 UNTIL MAXSF 01352 M01S01286.sxinit +++| DO 01353 M01S01287.sxinit +++| BEGIN # CHECK CATALOG FOR EACH SUBFAMILY # 01354 M01S01288.sxinit +++| 01355 M01S01289.sxinit +++| PFP$UI = DEF$UI + J; # SET USER INDEX FOR *SETPFP* # 01356 M01S01290.sxinit +++| PFP$FAM = FAM$NAME[I]; # SET FAMILY NAME FOR *SETPFP* # 01357 M01S01291.sxinit +++| PFP$FG1 = TRUE; # SET FAMILY BIT FOR *SETPFP* # 01358 M01S01292.sxinit +++| PFP$FG4 = TRUE; # SET INDEX BIT FOR *SETPFP* # 01359 M01S01293.sxinit +++| SETPFP(PFP); # SET USER INDEX AND FAMILY # 01360 M01S01294.sxinit +++| 01361 M01S01295.sxinit +++|# 01362 M01S01296.sxinit +++|* IF UNABLE TO DO A *SETPFP* ON A FAMILY, IGNORE CATALOG VALIDATION 01363 M01S01297.sxinit +++|* AND CONTINUE WITH THE NEXT FAMILY. 01364 M01S01298.sxinit +++|# 01365 M01S01299.sxinit +++| 01366 M01S01300.sxinit +++| IF PFP$STAT NQ 0 01367 M01S01301.sxinit +++| THEN 01368 M01S01302.sxinit +++| BEGIN 01369 M01S01303.sxinit +++| TEST I; # NEXT FAMILY # 01370 M01S01304.sxinit +++| END 01371 M01S01305.sxinit +++| 01372 M01S01306.sxinit +++| CAT$UNID[0] = XCOD(J); # CHANGE INDEX TO DISPLAY CODE # 01373 M01S01307.sxinit +++| PFD("ATTACH",CAT$PFN,0,"RC", ## 01374 M01S01308.sxinit +++| PFSTAT,"NA",0,"UP",0,0); 01375 M01S01309.sxinit +++| IF PFSTAT EQ 0 OR PFSTAT EQ FBS 01376 M01S01310.sxinit +++| THEN 01377 M01S01311.sxinit +++| BEGIN # IF ATTACH SUCCESSFUL # 01378 M01S01312.sxinit +++| ATLEASTONE = TRUE; 01379 M01S01313.sxinit +++| END # IF ATTACH SUCCESSFUL # 01380 M01S01314.sxinit +++| 01381 M01S01315.sxinit +++| ELSE 01382 M01S01316.sxinit +++| BEGIN # ERROR OTHER THAN FILE BUSY OR UTILITY ACTIVE # 01383 M01S01317.sxinit +++| UI = DEF$UI + J; 01384 M01S01318.sxinit +++| XWOD(UI,DIS); 01385 M01S01319.sxinit +++| 01386 M01S01320.sxinit +++| BAD$PFN[BADNUM] = CAT$PFN[0]; # SAVE FILE NAME # 01387 M01S01321.sxinit +++| MSGTEMP = FAM$NAME[I]; 01388 M01S01322.sxinit +++| BZFILL(MSGTEMP,BLKFILL,FILLSIZE); 01389 M01S01323.sxinit +++| BAD$FAM[BADNUM] = MSGTEMP; # SAVE FAMILY NAME # 01390 M01S01324.sxinit +++| BAD$INDEX[BADNUM] = DIS$UI; # SAVE USER INDEX # 01391 M01S01325.sxinit +++| 01392 M01S01326.sxinit +++| BADNUM = BADNUM + 1; # INCREMENT COUNT # 01393 M01S01327.sxinit +++| FOUND = FALSE; # CATALOG NOT ATTACHED # 01394 M01S01328.sxinit +++| END # ERROR OTHER THAN FILE BUSY OR UTILITY ACTIVE # 01395 M01S01329.sxinit +++| 01396 M01S01330.sxinit +++| ZSETFET(LOC(SC$FET[0]),CAT$PFN,0,0,SFETL); 01397 M01S01331.sxinit +++| RETERN(SC$FET[0],RCL); 01398 M01S01332.sxinit +++| 01399 M01S01333.sxinit +++| END # CHECK CATALOG FOR EACH SUBFAMILY # 01400 M01S01334.sxinit +++| 01401 M01S01335.sxinit +++| IF FOUND 01402 M01S01336.sxinit +++| THEN 01403 M01S01337.sxinit +++| BEGIN # IF EIGHT CATALOGS EXIST # 01404 M01S01338.sxinit +++| NAMEFAM[NFAM] = FAM$NAME[I]; # SAVE FAMILY NAME # 01405 M01S01339.sxinit +++| NFAM = NFAM + 1; # INCREMENT FAMILY COUNT # 01406 M01S01340.sxinit +++| END # IF EIGHT CATALOGS EXIST # 01407 M01S01341.sxinit +++| 01408 M01S01342.sxinit +++| ELSE 01409 M01S01343.sxinit +++| BEGIN # CHECK FOR AT LEAST ONE SUCCESSFUL ATTACH # 01410 M01S01344.sxinit +++| IF ATLEASTONE 01411 M01S01345.sxinit +++| THEN 01412 M01S01346.sxinit +++| BEGIN # OUTPUT MESSAGE FOR EACH BAD FILE # 01413 M01S01347.sxinit +++| SLOWFOR J = 0 STEP 1 WHILE J LS BADNUM 01414 M01S01348.sxinit +++| DO 01415 M01S01349.sxinit +++| BEGIN # FOR EACH BAD FILE # 01416 M01S01350.sxinit +++| MSG$LINE[0] = " ATTACH ERROR ON SFM SUBFAMILY CATALOG."; 01417 M01S01351.sxinit +++| MESSAGE(MSGBUF,UDFL1); 01418 M01S01352.sxinit +++| 01419 M01S01353.sxinit +++| MSGPFN[0] = BAD$PFN[J]; 01420 M01S01354.sxinit +++| MSGFAM[0] = BAD$FAM[J]; 01421 M01S01355.sxinit +++| MSGUI[0] = BAD$INDEX[J]; 01422 M01S01356.sxinit +++| 01423 M01S01357.sxinit +++| MSG$LINE[0] = MSG$TEXT[0]; 01424 M01S01358.sxinit +++| RMVBLNK(MSGBUF[0],40); 01425 M01S01359.sxinit +++| MESSAGE(MSGBUF,UDFL1); 01426 M01S01360.sxinit +++| END # FOR EACH BAD FILE # 01427 M01S01361.sxinit +++| 01428 M01S01362.sxinit +++| END # OUTPUT MESSAGE FOR EACH BAD FILE # 01429 M01S01363.sxinit +++| 01430 M01S01364.sxinit +++| END # CHECK FOR AT LEAST ONE SUCCESSFUL ATTACH # 01431 M01S01365.sxinit +++| 01432 M01S01366.sxinit +++| END # CHECK ALL FAMILIES FOR EIGHT CATALOGS # 01433 M01S01367.sxinit +++| 01434 M01S01368.sxinit +++| NFAM = NFAM - 1; # SET FAMILY COUNT # 01435 M01S01369.sxinit +++| 01436 M01S01370.sxinit +++|# 01437 M01S01371.sxinit +++|* SET THE FATAL ERROR FLAG IF THERE ARE NO FAMILIES WITH 01438 M01S01372.sxinit +++|* EIGHT *SFM* CATALOGS. 01439 M01S01373.sxinit +++|# 01440 M01S01374.sxinit +++| 01441 M01S01375.sxinit +++| IF NFAM EQ 0 01442 M01S01376.sxinit +++| THEN 01443 M01S01377.sxinit +++| BEGIN # NO FAMILY WITH 8 CATALOGS FOUND # 01444 M01S01378.sxinit +++| FATALERR = TRUE; 01445 M01S01379.sxinit +++| 01446 M01S01380.sxinit +++| MSG$LINE[0] = " INITIALIZATION PROBLEMS -"; 01447 M01S01381.sxinit +++| MESSAGE(MSGBUF[0],UDFL1); 01448 M01S01382.sxinit +++| 01449 M01S01383.sxinit +++| MSG$LINE[0] = " NO FAMILY WITH 8 CATALOGS FOUND."; 01450 M01S01384.sxinit +++| MESSAGE(MSGBUF[0],UDFL1); 01451 M01S01385.sxinit +++| END # NO FAMILY WITH 8 CATALOGS FOUND # 01452 M01S01386.sxinit +++| 01453 M01S01387.sxinit +++| END # INITFAM # 01454 M01S01388.sxinit +++| 01455 M01S01389.sxinit +++| TERM 01456 M01S01390.sxinit +++|PROC INITFLG; 01457 M01S01391.sxinit +++|# TITLE INITFLG - INITIALIZES ASSORTED FLAGS AND COUNTERS. # 01458 M01S01392.sxinit +++| 01459 M01S01393.sxinit +++| BEGIN # INITFLG # 01460 M01S01394.sxinit +++| 01461 M01S01395.sxinit +++|# 01462 M01S01396.sxinit +++|** INITFLG - INITIALIZES ASSORTED FLAGS AND COUNTERS. 01463 M01S01397.sxinit +++|* 01464 M01S01398.sxinit +++|* THIS PROCEDURE WILL INITIALIZE ASSORTED FLAGS AND COUNTERS. 01465 M01S01399.sxinit +++|* 01466 M01S01400.sxinit +++|* PROC INITFLG. 01467 M01S01401.sxinit +++|* 01468 M01S01402.sxinit +++|* EXIT FLAGS HAVE BEEN INITIALIZED. 01469 M01S01403.sxinit +++|# 01470 M01S01404.sxinit +++| 01471 M01S01405.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 01472 M01S01406.sxinit +++|*CALL COMBFAS 01473 M01S01407.sxinit +++|*CALL COMBCMD 01474 M01S01408.sxinit +++|*CALL COMBLBL 01475 M01S01409.sxinit +++|*CALL COMBMAT 01476 M01S01410.sxinit +++|*CALL COMBUCR 01477 M01S01411.sxinit +++|*CALL COMBUDT 01478 M01S01412.sxinit +++|*CALL COMXBST 01479 M01S01413.sxinit +++|*CALL COMXCTF 01480 M01S01414.sxinit +++|*CALL COMXINT 01481 M01S01415.sxinit +++| CONTROL EJECT; 01482 M01S01416.sxinit +++| 01483 M01S01417.sxinit +++|# 01484 M01S01418.sxinit +++|* INITIALIZE FLAGS. 01485 M01S01419.sxinit +++|# 01486 M01S01420.sxinit +++| 01487 M01S01421.sxinit +++| CURESERVED = FALSE; # CONTROLLER RESERVED FLAG # 01488 M01S01422.sxinit +++| DRVRRECALL = FALSE; # DRIVER RECALL FLAG # 01489 M01S01423.sxinit +++| DRYUP = FALSE; # DRY-UP FLAG # 01490 M01S01424.sxinit +++| EXEC = TRUE; # MSAS EXECUTIVE FLAG # 01491 M01S01425.sxinit +++| GLBINTLK = FALSE; # GLOBAL CATALOG INTERLOCK FLAG # 01492 M01S01426.sxinit +++| GLBSTFL = TRUE; # GLOBAL STAGE FLAG # 01493 M01S01427.sxinit +++| GLBDSFL = TRUE; # GLOBAL DESTAGE FLAG # 01494 M01S01428.sxinit +++| GLBUCPSW = FALSE; # GLOBAL *UCP* SWAPPED FLAG # 01495 M01S01429.sxinit +++| LABELBUSY = FALSE; # LABEL BUFFER BUSY FLAG # 01496 M01S01430.sxinit +++| TERMINATE = FALSE; # TERMINATE FLAG # 01497 M01S01431.sxinit +++| 01498 M01S01432.sxinit +++|# 01499 M01S01433.sxinit +++|* INITIALIZE COUNTS. 01500 M01S01434.sxinit +++|# 01501 M01S01435.sxinit +++| 01502 M01S01436.sxinit +++| SMCNT = NSM; # NUMBER OF *SM-S* # 01503 M01S01437.sxinit +++| FAMCNT = NFAM; # NUMBER OF FAMILIES # 01504 M01S01438.sxinit +++| PPCBENCNT = 0; # CALL BLOCK ACTIVE ENTRY COUNT # 01505 M01S01439.sxinit +++| 01506 M01S01440.sxinit +++|# 01507 M01S01441.sxinit +++|* INITIALIZE THRESHOLDS. 01508 M01S01442.sxinit +++|# 01509 M01S01443.sxinit +++| 01510 M01S01444.sxinit +++| 01511 M01S01445.sxinit +++|# 01512 M01S01446.sxinit +++|* INITIALIZE DELAY EXPIRATION TIMES. 01513 M01S01447.sxinit +++|# 01514 M01S01448.sxinit +++| 01515 M01S01449.sxinit +++| ITLK$EXPIR = 0; # RECLAIM CATALOG INTERLOCKS # 01516 M01S01450.sxinit +++| MINQ$EXPIR = 0; # MINIMUM QUEUE DELAY EXPIRATION # 01517 M01S01451.sxinit +++| KDIS$EXPIR = 0; # K-DISPLAY REFRESH # 01518 M01S01452.sxinit +++| 01519 M01S01453.sxinit +++|# 01520 M01S01454.sxinit +++|* INITIALIZE ASSORTED POINTERS. 01521 M01S01455.sxinit +++|# 01522 M01S01456.sxinit +++| 01523 M01S01457.sxinit +++| SFBLKPTR = LOC(SFPARMBLK); 01524 M01S01458.sxinit +++| END # INITFLG # 01525 M01S01459.sxinit +++| 01526 M01S01460.sxinit +++| TERM 01527 M01S01461.sxinit +++|PROC INITLZR; 01528 M01S01462.sxinit +++|# TITLE INITLZR - SEQUENCES *SSEXEC-S* INITIALIZATION STEPS. # 01529 M01S01463.sxinit +++| BEGIN # INITLZR # 01530 M01S01464.sxinit +++| 01531 M01S01465.sxinit +++|# 01532 M01S01466.sxinit +++|*** INITLZR - SEQUENCES *SSEXEC-S* INITIALIZATION STEPS. 01533 M01S01467.sxinit +++|* 01534 M01S01468.sxinit +++|* THIS ROUTINE WILL MAKE CALLS TO SUBROUTINES AND MACROES TO 01535 M01S01469.sxinit +++|* PERFORM ALL NON-HARDWARE INITIALIZATION STEPS FOR *SSEXEC*. 01536 M01S01470.sxinit +++|* 01537 M01S01471.sxinit +++|* PROC INITLZR. 01538 M01S01472.sxinit +++|* 01539 M01S01473.sxinit +++|* ENTRY CALLED FROM *SSEXEC*. 01540 M01S01474.sxinit +++|* 01541 M01S01475.sxinit +++|* EXIT PARAMETERS HAVE BEEN PROCESSED AND ALL NON-HARDWARE 01542 M01S01476.sxinit +++|* INITIALIZATION STEPS HAVE BEEN EXECUTED OR THE FATAL 01543 M01S01477.sxinit +++|* ERROR FLAG HAS BEEN SET. 01544 M01S01478.sxinit +++|* 01545 M01S01479.sxinit +++|* NOTES THIS INITIALIZATION ROUTINE MAKES PROCEDURE CALLS TO 01546 M01S01480.sxinit +++|* DO THE FOLLOWING: 01547 M01S01481.sxinit +++|* 01548 M01S01482.sxinit +++|* 1) GET THE RUN TIME PARAMETERS, 01549 M01S01483.sxinit +++|* 2) INITIALIZE SUBFAMILY PARAMETERS, 01550 M01S01484.sxinit +++|* 3) INITIALIZE ASSORTED FLAGS, 01551 M01S01485.sxinit +++|* 4) INITIALIZE ASSORTED TABLES, 01552 M01S01486.sxinit +++|* 5) INITIALIZE FOR MULTI-MAINFRAMES, 01553 M01S01487.sxinit +++|* 6) ADVISE SYSTEM OF KEYBOARD BUFFER, 01554 M01S01488.sxinit +++|* 7) REQUEST ACTIVE SUBSYSTEM STATUS, 01555 M01S01489.sxinit +++|* 8) INITIALIZE UDT INTERFACE, 01556 M01S01490.sxinit +++|* 9) INITIALIZE *TDAM* INTERFACE. 01557 M01S01491.sxinit +++|# 01558 M01S01492.sxinit +++| 01559 M01S01493.sxinit +++|# 01560 M01S01494.sxinit +++|**** PROC INITLZR - XREF LIST BEGIN. 01561 M01S01495.sxinit +++|# 01562 M01S01496.sxinit +++| 01563 M01S01497.sxinit +++| XREF 01564 M01S01498.sxinit +++| BEGIN 01565 M01S01499.sxinit +++| PROC CALLSS; # ISSUES REQUEST TO SUBSYSTEM # 01566 M01S01500.sxinit +++| PROC GETMI; # GETS MACHINE INFORMATION # 01567 M01S01501.sxinit +++| PROC GETRTP; # GETS RUN TIME PARAMETERS # 01568 M01S01502.sxinit +++| PROC GETSPS; # GET SYSTEM ORIGIN PRIVILEDGES # 01569 M01S01503.sxinit +++| PROC GETUDT; # GETS UNIT DEVICE TABLE # 01570 M01S01504.sxinit +++| PROC INITDAM; # INITIALIZES *TDAM* INTERFACE # 01571 M01S01505.sxinit +++| PROC INITFAM; # INITIALIZE SUBFAMILY PARAMETERS 01572 M01S01506.sxinit +++| # 01573 M01S01507.sxinit +++| PROC INITFLG; # INITIALIZES FLAGS # 01574 M01S01508.sxinit +++| PROC OPENCAT; # OPEN CATALOGS AND MAPS # 01575 M01S01509.sxinit +++| PROC INITSRP; # INITIALIZES FOR *MMF* MODE # 01576 M01S01510.sxinit +++| PROC INITTAB; # INITIALIZES ASSORTED TABLES # 01577 M01S01511.sxinit +++| PROC KINIT; # INITIALIZES *K* DISPLAY # 01578 M01S01512.sxinit +++| PROC RTIME; # INTERFACE TO *RTIME* MACRO # 01579 M01S01513.sxinit +++| END 01580 M01S01514.sxinit +++| 01581 M01S01515.sxinit +++|# 01582 M01S01516.sxinit +++|**** PROC INITLZR - XREF LIST END. 01583 M01S01517.sxinit +++|# 01584 M01S01518.sxinit +++| 01585 M01S01519.sxinit +++| DEF NOPARAM #-1#; # NO PARAMETER SPECIFIED # 01586 M01S01520.sxinit +++| DEF SECOND #1#; # SWITCH FOR SECOND BUFFER # 01587 M01S01521.sxinit +++| DEF SS$SYS #0#; # REQUEST SUBSYSTEM STATUS CODE # 01588 M01S01522.sxinit +++| DEF RSLEN #1#; # RETURN USER STATUS # 01589 M01S01523.sxinit +++| 01590 M01S01524.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 01591 M01S01525.sxinit +++|*CALL COMBFAS 01592 M01S01526.sxinit +++|*CALL COMBCPR 01593 M01S01527.sxinit +++|*CALL COMBUCR 01594 M01S01528.sxinit +++|*CALL COMXCTF 01595 M01S01529.sxinit +++|*CALL COMXEXP 01596 M01S01530.sxinit +++|*CALL COMXINT 01597 M01S01531.sxinit +++|*CALL,COMXJCA 01598 M01S01532.sxinit +++| ITEM FAMSRP C(7); # FAMILY FOR *INITSRP* # 01599 M01S01533.sxinit +++| ITEM MFINDEX U; # MACHINE INDEX FOR *INITSRP* # 01600 M01S01534.sxinit +++| ITEM PBLOCK U = 0; # PARAMETER BLOCK # 01601 M01S01535.sxinit +++| ITEM SS U; # SUBSYSTEM QUEUE PRIORITY # 01602 M01S01536.sxinit +++| 01603 M01S01537.sxinit +++| 01604 M01S01538.sxinit +++| ARRAY SPSSTAT [0:0] S(RSLEN); 01605 M01S01539.sxinit +++| BEGIN 01606 M01S01540.sxinit +++| ITEM SPS$STATUS U(00,48,12); # RETURN STATUS # 01607 M01S01541.sxinit +++| END 01608 M01S01542.sxinit +++| 01609 M01S01543.sxinit +++| CONTROL EJECT; 01610 M01S01544.sxinit +++| 01611 M01S01545.sxinit +++|# 01612 M01S01546.sxinit +++|* READ AND SAVE RTIME. 01613 M01S01547.sxinit +++|# 01614 M01S01548.sxinit +++| 01615 M01S01549.sxinit +++| RTIME(RTIMESTAT); 01616 M01S01550.sxinit +++| FIRSTRTIME = RTIMSECS[0]; 01617 M01S01551.sxinit +++| 01618 M01S01552.sxinit +++|# 01619 M01S01553.sxinit +++|* CHECK SYSTEM ORIGIN PRIVILEDGES. 01620 M01S01554.sxinit +++|# 01621 M01S01555.sxinit +++| 01622 M01S01556.sxinit +++| 01623 M01S01557.sxinit +++| GETSPS(SPSSTAT); 01624 M01S01558.sxinit +++| IF SPS$STATUS NQ 0 01625 M01S01559.sxinit +++| THEN 01626 M01S01560.sxinit +++| BEGIN 01627 M01S01561.sxinit +++| FATALERR = TRUE; 01628 M01S01562.sxinit +++| END 01629 M01S01563.sxinit +++| 01630 M01S01564.sxinit +++|# 01631 M01S01565.sxinit +++|* SET UP *RA* POINTER. 01632 M01S01566.sxinit +++|# 01633 M01S01567.sxinit +++| 01634 M01S01568.sxinit +++| P<RA$AREA> = 0; 01635 M01S01569.sxinit +++| 01636 M01S01570.sxinit +++|# 01637 M01S01571.sxinit +++|* CALL *GETRTP* TO PROCESS RUN TIME PARAMETERS. 01638 M01S01572.sxinit +++|# 01639 M01S01573.sxinit +++| 01640 M01S01574.sxinit +++| GETRTP; 01641 M01S01575.sxinit +++| 01642 M01S01576.sxinit +++| IF FATALERR 01643 M01S01577.sxinit +++| THEN 01644 M01S01578.sxinit +++| BEGIN # IF FATAL ERROR # 01645 M01S01579.sxinit +++| RETURN; 01646 M01S01580.sxinit +++| END # IF FATAL ERROR # 01647 M01S01581.sxinit +++| 01648 M01S01582.sxinit +++|# 01649 M01S01583.sxinit +++|* CALL *INITFAM* TO INITIALIZE SUBFAMILY PARAMETERS. 01650 M01S01584.sxinit +++|# 01651 M01S01585.sxinit +++| 01652 M01S01586.sxinit +++| INITFAM; 01653 M01S01587.sxinit +++| 01654 M01S01588.sxinit +++| IF FATALERR 01655 M01S01589.sxinit +++| THEN 01656 M01S01590.sxinit +++| BEGIN # IF FATAL ERROR # 01657 M01S01591.sxinit +++| RETURN; 01658 M01S01592.sxinit +++| END # IF FATAL ERROR # 01659 M01S01593.sxinit +++| 01660 M01S01594.sxinit +++|# 01661 M01S01595.sxinit +++|* CALL *INITFLG* TO INITIALIZE ASSORTED FLAGS. 01662 M01S01596.sxinit +++|# 01663 M01S01597.sxinit +++| 01664 M01S01598.sxinit +++| INITFLG; 01665 M01S01599.sxinit +++| 01666 M01S01600.sxinit +++|# 01667 M01S01601.sxinit +++|* CALL *INITTAB* TO INITIALIZE ASSORTED TABLES. 01668 M01S01602.sxinit +++|# 01669 M01S01603.sxinit +++| 01670 M01S01604.sxinit +++| INITTAB; 01671 M01S01605.sxinit +++| 01672 M01S01606.sxinit +++| IF FATALERR 01673 M01S01607.sxinit +++| THEN 01674 M01S01608.sxinit +++| BEGIN 01675 M01S01609.sxinit +++| RETURN; 01676 M01S01610.sxinit +++| END 01677 M01S01611.sxinit +++| 01678 M01S01612.sxinit +++|# 01679 M01S01613.sxinit +++|* CALL *INITSRP* TO INITIALIZE FOR MULTI-MAINFRAMES. 01680 M01S01614.sxinit +++|# 01681 M01S01615.sxinit +++| 01682 M01S01616.sxinit +++| GETMI(CMRINFO,EVENT); 01683 M01S01617.sxinit +++| 01684 M01S01618.sxinit +++| EESET$EVT = EESET$ASXE; # MSAS SET UP # 01685 M01S01619.sxinit +++| EESET$ASXE = 0; 01686 M01S01620.sxinit +++| 01687 M01S01621.sxinit +++| IF ARG$SC EQ NOPARAM 01688 M01S01622.sxinit +++| THEN 01689 M01S01623.sxinit +++| BEGIN # *S* NOT SPECIFIED # 01690 M01S01624.sxinit +++| FAMSRP = FAM$NAME[LINK$ORD[0]]; 01691 M01S01625.sxinit +++| MFINDEX = CMR$MFID[0]; 01692 M01S01626.sxinit +++| END # *S* NOT SPECIFIED # 01693 M01S01627.sxinit +++| 01694 M01S01628.sxinit +++| ELSE 01695 M01S01629.sxinit +++| BEGIN # *S* PARAMETER SPECIFIED # 01696 M01S01630.sxinit +++| FAMSRP = DEF$FAM; 01697 M01S01631.sxinit +++| MFINDEX = ARG$S; 01698 M01S01632.sxinit +++| END # *S* PARAMTER SPECIFIED # 01699 M01S01633.sxinit +++| 01700 M01S01634.sxinit +++| INITSRP(CMR$MID[0],MFINDEX,FAMSRP); 01701 M01S01635.sxinit +++| 01702 M01S01636.sxinit +++|# 01703 M01S01637.sxinit +++|* CALL *KINIT* TO INITIALIZE *K* DISPLAY. 01704 M01S01638.sxinit +++|# 01705 M01S01639.sxinit +++| 01706 M01S01640.sxinit +++| KINIT; 01707 M01S01641.sxinit +++| 01708 M01S01642.sxinit +++|# 01709 M01S01643.sxinit +++|* CALL *CALLSS* MACRO TO REQUEST ACTIVE SUBSYSTEM STATUS AND 01710 M01S01644.sxinit +++|* INITIALIZE RA.SSC AND *UCPPARMSW* FOR INCOMING *UCP* REQUESTS. 01711 M01S01645.sxinit +++|* *UPCPARMSW* INDICATES WHICH BUFFER THE NEXT *UCP* REQUEST 01712 M01S01646.sxinit +++|* WILL USE. 01713 M01S01647.sxinit +++|# 01714 M01S01648.sxinit +++| 01715 M01S01649.sxinit +++| SS = SS$SYS; # REQUEST ACTIVE STATUS CODE # 01716 M01S01650.sxinit +++| CALLSS(SS,PBLOCK,NRCL); # REQUEST ACTIVE STATUS # 01717 M01S01651.sxinit +++| 01718 M01S01652.sxinit +++| RA$SSWWRD[0] = 0; 01719 M01S01653.sxinit +++| RA$SSCINLK = FALSE; 01720 M01S01654.sxinit +++| RA$SSCPP = TRUE; 01721 M01S01655.sxinit +++| RA$SSCXP = 0; 01722 M01S01656.sxinit +++| RA$SSCVF = TRUE; 01723 M01S01657.sxinit +++| RA$SSCLP = CPRLEN + 2; 01724 M01S01658.sxinit +++| RA$SSCAP = LOC(PRAMUCP); # SET *UCP* PARAMETER ADDRESS # 01725 M01S01659.sxinit +++| RA$SSPN = "SSEXEC"; 01726 M01S01660.sxinit +++| RA$SSCODE = SSID; 01727 M01S01661.sxinit +++| UCPPARMSW = SECOND; # SET NEXT BUFFER SWITCH # 01728 M01S01662.sxinit +++| 01729 M01S01663.sxinit +++|# 01730 M01S01664.sxinit +++|* CALL *GETUDT* TO INITIALIZE UDT INTERFACE. 01731 M01S01665.sxinit +++|# 01732 M01S01666.sxinit +++| 01733 M01S01667.sxinit +++| GETUDT; 01734 M01S01668.sxinit +++| 01735 M01S01669.sxinit +++| IF FATALERR 01736 M01S01670.sxinit +++| THEN 01737 M01S01671.sxinit +++| BEGIN # IF FATAL ERROR # 01738 M01S01672.sxinit +++| RETURN; 01739 M01S01673.sxinit +++| END # IF FATAL ERROR # 01740 M01S01674.sxinit +++| 01741 M01S01675.sxinit +++|# 01742 M01S01676.sxinit +++|* CALL OPENCAT TO INITIALIZE THE OCT AND OMT TABLES AND 01743 M01S01677.sxinit +++|* TO FIND ANY DESCREPENCIES IN THE AST. 01744 M01S01678.sxinit +++|# 01745 M01S01679.sxinit +++| OPENCAT; 01746 M01S01680.sxinit +++| 01747 M01S01681.sxinit +++|# 01748 M01S01682.sxinit +++|* INITIALIZE *TDAM* INTERFACE AND ISSUE EVENT TO SWAP IN JOBS 01749 M01S01683.sxinit +++|* WAITING FOR *MSAS*. 01750 M01S01684.sxinit +++|# 01751 M01S01685.sxinit +++| 01752 M01S01686.sxinit +++| INITDAM; 01753 M01S01687.sxinit +++| 01754 M01S01688.sxinit +++| END # INITLZR # 01755 M01S01689.sxinit +++| 01756 M01S01690.sxinit +++| TERM 01757 M01S01691.sxinit +++|PROC INITSRP((MID),(MIDX),(LINKFAM)); 01758 M01S01692.sxinit +++|# TITLE INITSRP - INITIALIZE SLAVE REQUEST PROCESSOR. # 01759 M01S01693.sxinit +++| 01760 M01S01694.sxinit +++| BEGIN # INITSRP # 01761 M01S01695.sxinit +++| 01762 M01S01696.sxinit +++|# 01763 M01S01697.sxinit +++|** INITSRP - INITIALIZE THE SLAVE REQUEST PROCESSOR. 01764 M01S01698.sxinit +++|* 01765 M01S01699.sxinit +++|* *INITSRP* INITIALIZES THE *SSEXEC* FOR MULTIMAINFRAME 01766 M01S01700.sxinit +++|* PROCESSING. IT WILL INITIALIZE THE *MTOS* FILE WHICH IS USED TO 01767 M01S01701.sxinit +++|* COMMUNICATE WITH EACH *SLVEXEC*. IT WILL ALSO ATTACH IN 01768 M01S01702.sxinit +++|* READ-ALLOW-MODIFY MODE THE *STOM* FILES FROM ALL POSSIBLE SLAVE 01769 M01S01703.sxinit +++|* MAINFRAMES SO STAGING REQUESTS FROM *SLVEXEC* PROGRAMS CAN BE 01770 M01S01704.sxinit +++|* ACCEPTED AND PROCESSED. 01771 M01S01705.sxinit +++|* 01772 M01S01706.sxinit +++|* PROC INITSRP((MID),(MIDX),(LINKFAM)) 01773 M01S01707.sxinit +++|* 01774 M01S01708.sxinit +++|* ENTRY (MID) = 2 CHARACTER ID OF THE MASTER MAINFRAME. 01775 M01S01709.sxinit +++|* (MIDX) = MACHINE INDEX (1-4) OF THE MASTER MAINFRAME. 01776 M01S01710.sxinit +++|* (LINKFAM) = NAME OF THE FAMILY ON WHICH THE 01777 M01S01711.sxinit +++|* COMMUNICATION FILES RESIDE, OR ARE TO 01778 M01S01712.sxinit +++|* RESIDE. 01779 M01S01713.sxinit +++|* 01780 M01S01714.sxinit +++|* EXIT THE VARIABLES *STOM$EXPIR* AND *MTOS$EXPIR* (IN 01781 M01S01715.sxinit +++|* *COMXCTF*) ARE INITIALIZED TO INDICATE THE TIMES WHEN 01782 M01S01716.sxinit +++|* THE *STOM* FILES SHOULD BE MONITORED AND THE *MTOS* 01783 M01S01717.sxinit +++|* FILE SHOULD BE UPDATED, RESPECTIVELY. IF THE 01784 M01S01718.sxinit +++|* *SSEXEC* IS TO RUN IN SINGLE MAINFRAME MODE, THESE 01785 M01S01719.sxinit +++|* TIMES ARE SET TO THE LARGEST POSSIBLE VALUE. 01786 M01S01720.sxinit +++|* 01787 M01S01721.sxinit +++|* NOTES THE *SSEXEC* WILL RUN IN SINGLE MAINFRAME MODE IF ANY 01788 M01S01722.sxinit +++|* OF THE FOLLOWING CONDITIONS ARE MET. 01789 M01S01723.sxinit +++|* 1) THE MAINFRAME IS NOT IN MULTIMAINFRAME 01790 M01S01724.sxinit +++|* MODE. 01791 M01S01725.sxinit +++|* 2) THE *SETPFP* REQUEST FAILS. 01792 M01S01726.sxinit +++|* 3) THE *MTOS* FILE EXISTS, BUT CANNOT BE 01793 M01S01727.sxinit +++|* ATTACHED IN MODIFY MODE. 01794 M01S01728.sxinit +++|* 4) THE *MTOS* FILE DOES NOT EXIST, BUT 01795 M01S01729.sxinit +++|* CANNOT BE DEFINED. 01796 M01S01730.sxinit +++|* 5) NO VALID SLAVE MAINFRAMES CAN BE 01797 M01S01731.sxinit +++|* IDENTIFIED. 01798 M01S01732.sxinit +++|* 01799 M01S01733.sxinit +++|* ANOTHER MAINFRAME WILL NOT BE RECOGNIZED AS A VALID 01800 M01S01734.sxinit +++|* SLAVE MAINFRAME IF ANY OF THE FOLLOWING IS TRUE. 01801 M01S01735.sxinit +++|* 1) THE *STOM* FILE CANNOT BE ATTACHED IN 01802 M01S01736.sxinit +++|* READ-ALLOW-MODIFY MODE. 01803 M01S01737.sxinit +++|* 01804 M01S01738.sxinit +++|* 2) THE LENGTH OF THE *STOM* FILE INDICATES 01805 M01S01739.sxinit +++|* THAT THE *SLVEXEC* IS WORKING WITH A 01806 M01S01740.sxinit +++|* DIFFERENT SET OF INSTALLATION 01807 M01S01741.sxinit +++|* PARAMETERS. 01808 M01S01742.sxinit +++|* 01809 M01S01743.sxinit +++|* MESSAGES 01810 M01S01744.sxinit +++|* * EXEC MMF INITIALIZATION OK.* 01811 M01S01745.sxinit +++|* AN INFORMATIVE MESSAGE NOTING THAT *SSEXEC* 01812 M01S01746.sxinit +++|* IS READY TO RUN IN MULTIMAINFRAME MODE. 01813 M01S01747.sxinit +++|* 01814 M01S01748.sxinit +++|* * EXEC MMF INITIALIZATION FAILED -* 01815 M01S01749.sxinit +++|* * - ALL SLAVES OMITTED.* -OR- 01816 M01S01750.sxinit +++|* * - ATTACH MTOS FAILED.* -OR- 01817 M01S01751.sxinit +++|* * - DEFINE MTOS FAILED.* -OR- 01818 M01S01752.sxinit +++|* * - MTOS FILE BUSY.* -OR- 01819 M01S01753.sxinit +++|* * - SETPFP PROBLEM.* 01820 M01S01754.sxinit +++|* A MESSAGE INDICATING THAT THE *SSEXEC* PROGRAM 01821 M01S01755.sxinit +++|* WILL NOT RUN IN MULTIFRAME MODE FOR THE REASON 01822 M01S01756.sxinit +++|* NOTED ON THE SECOND LINE. 01823 M01S01757.sxinit +++|* 01824 M01S01758.sxinit +++|* * EXEC IN SINGLE MAINFRAME MODE.* 01825 M01S01759.sxinit +++|* AN INFORMATIVE MESSAGE INDICATING THAT THE 01826 M01S01760.sxinit +++|* *SSEXEC* PROGRAM IS RUNNING IN A SINGLE 01827 M01S01761.sxinit +++|* MAINFRAME CONFIGURATION. 01828 M01S01762.sxinit +++|* 01829 M01S01763.sxinit +++|* * EXEC - SLAVE N XXXX.* 01830 M01S01764.sxinit +++|* XXXX = ACTIVE/IDLE. 01831 M01S01765.sxinit +++|* AN INFORMATIVE MESSAGE INDICATING THAT *SSEXEC* 01832 M01S01766.sxinit +++|* IS READY TO COMMUNICATE WITH THE *SSSLV* 01833 M01S01767.sxinit +++|* PROGRAM WHICH IS RUNNING ON MAINFRAME *N*. 01834 M01S01768.sxinit +++|* 01835 M01S01769.sxinit +++|* * EXEC - SLAVE N OMITTED -* 01836 M01S01770.sxinit +++|* * - NO STOM FILE.* -OR- 01837 M01S01771.sxinit +++|* * - STOM FILE LENGTH PROBLEM.* 01838 M01S01772.sxinit +++|* A MESSAGE INDICATING THAT *SSEXEC* WILL NOT 01839 M01S01773.sxinit +++|* COMMUNICATE WITH AN *SSSLV* PROGRAM, IF ANY, ON 01840 M01S01774.sxinit +++|* MAINFRAME *N* FOR THE REASON NOTED IN THE 01841 M01S01775.sxinit +++|* SECOND LINE. 01842 M01S01776.sxinit +++|* 01843 M01S01777.sxinit +++|# 01844 M01S01778.sxinit +++| 01845 M01S01779.sxinit +++| 01846 M01S01780.sxinit +++| ITEM MID C(2); # MACHINE ID OF MASTER MF # 01847 M01S01781.sxinit +++| ITEM MIDX U; # INDEX (1-4) OF MASTER MF # 01848 M01S01782.sxinit +++| ITEM LINKFAM C(7); # NAME OF LINK FAMILY # 01849 M01S01783.sxinit +++| 01850 M01S01784.sxinit +++|# 01851 M01S01785.sxinit +++|**** PROC INITSRP - XREF LIST BEGIN. 01852 M01S01786.sxinit +++|# 01853 M01S01787.sxinit +++| 01854 M01S01788.sxinit +++| XREF 01855 M01S01789.sxinit +++| BEGIN 01856 M01S01790.sxinit +++| PROC MESSAGE; # ISSUES MESSAGE MACRO # 01857 M01S01791.sxinit +++| PROC PDATE; # ISSUE PDATE MACRO # 01858 M01S01792.sxinit +++| PROC PFD; # PERMANENT FILE REQUEST DELAYS # 01859 M01S01793.sxinit +++| PROC READ; # READ FILE # 01860 M01S01794.sxinit +++| PROC READW; # READ LINE # 01861 M01S01795.sxinit +++| PROC REWIND; # REWIND FILE # 01862 M01S01796.sxinit +++| PROC RETERN; # RETURN FILE # 01863 M01S01797.sxinit +++| PROC RTIME; # ISSUE RTIME MACRO # 01864 M01S01798.sxinit +++| PROC SETPFP; # ISSUE SETPFP MACRO # 01865 M01S01799.sxinit +++| PROC WRITER; # WRITE FILE # 01866 M01S01800.sxinit +++| FUNC XCOD C(10); # INTEGER TO DISPLAY # 01867 M01S01801.sxinit +++| PROC ZFILL; # ZERO FILL AN ARRAY # 01868 M01S01802.sxinit +++| PROC ZSETFET; # INITIALIZE *FET* # 01869 M01S01803.sxinit +++| END 01870 M01S01804.sxinit +++| 01871 M01S01805.sxinit +++|# 01872 M01S01806.sxinit +++|**** PROC INITSRP - XREF LIST END. 01873 M01S01807.sxinit +++|# 01874 M01S01808.sxinit +++| 01875 M01S01809.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01876 M01S01810.sxinit +++| 01877 M01S01811.sxinit +++| 01878 M01S01812.sxinit +++|*CALL,COMBFAS 01879 M01S01813.sxinit +++|*CALL,COMBFET 01880 M01S01814.sxinit +++|*CALL,COMBPFP 01881 M01S01815.sxinit +++|*CALL COMBPFS 01882 M01S01816.sxinit +++|*CALL,COMXCTF 01883 M01S01817.sxinit +++|*CALL COMXINT 01884 M01S01818.sxinit +++|*CALL,COMXIPR 01885 M01S01819.sxinit +++|*CALL,COMXMMF 01886 M01S01820.sxinit +++|*CALL,COMSPFM 01887 M01S01821.sxinit +++| 01888 M01S01822.sxinit +++| 01889 M01S01823.sxinit +++| 01890 M01S01824.sxinit +++| ARRAY MMFSTAT [0:0] S(4); 01891 M01S01825.sxinit +++| BEGIN 01892 M01S01826.sxinit +++| ITEM MMF$TEXT C(00,00,38) # INITIALIZATION STATUS # 01893 M01S01827.sxinit +++| =[" EXEC MMF INITIALIZATION STATUS"]; 01894 M01S01828.sxinit +++| ITEM MMF$STAT C(02,30,09); # OK/FAILED - # 01895 M01S01829.sxinit +++| ITEM MMF$END U(03,48,12) =[0]; # END OF LINE # 01896 M01S01830.sxinit +++| END 01897 M01S01831.sxinit +++| 01898 M01S01832.sxinit +++| 01899 M01S01833.sxinit +++| ARRAY RBBUF [0:0] S(RBSIZE);; # SCRATCH BUFFER # 01900 M01S01834.sxinit +++| 01901 M01S01835.sxinit +++| 01902 M01S01836.sxinit +++| 01903 M01S01837.sxinit +++| ITEM PFNAME C(7); # PERMANENT FILE NAME # 01904 M01S01838.sxinit +++| ITEM RB U; # INDEX TO A REQUEST BLOCK # 01905 M01S01839.sxinit +++| ITEM STAT U; # SCRATCH STATUS WORD # 01906 M01S01840.sxinit +++| ITEM STATM S:EXECSTAT; # STATUS OF MMF INITIALIZATION # 01907 M01S01841.sxinit +++| ITEM STATS S:EXECSTAT; # STATUS OF A SLAVE # 01908 M01S01842.sxinit +++| ITEM THISSLV U; # SCRATCH WORD # 01909 M01S01843.sxinit +++| 01910 M01S01844.sxinit +++| CONTROL EJECT; 01911 M01S01845.sxinit +++| 01912 M01S01846.sxinit +++|# 01913 M01S01847.sxinit +++|* INITIALIZE VARIOUS ITEMS AND POINTERS. 01914 M01S01848.sxinit +++|# 01915 M01S01849.sxinit +++| 01916 M01S01850.sxinit +++| STATM = S"INITPROB"; 01917 M01S01851.sxinit +++| L$STOM = (NUMRB + 1) * RBSIZE; 01918 M01S01852.sxinit +++| L$MTOSH = (MAXSLV + 1) * 3; 01919 M01S01853.sxinit +++| L$MTOS = L$MTOSH + NUMRB * NUMSLV; 01920 M01S01854.sxinit +++| P<MTOSHEAD> = LOC(MTOS$BUF); 01921 M01S01855.sxinit +++| P<MTOSM> = LOC(MTOB$FET); 01922 M01S01856.sxinit +++| P<STOMMBUF> = LOC(STOM$BUF); 01923 M01S01857.sxinit +++| STOMBUFL = STOM$BFL; 01924 M01S01858.sxinit +++| 01925 M01S01859.sxinit +++| ZSETFET(LOC(MTOSM),MTOSMLFN,LOC(MTOSHEAD),L$MTOS + 1,SFETL); 01926 M01S01860.sxinit +++| 01927 M01S01861.sxinit +++| IF MIDX EQ 0 01928 M01S01862.sxinit +++| THEN # SINGLE MAINFRAME MODE # 01929 M01S01863.sxinit +++| BEGIN 01930 M01S01864.sxinit +++| STATM = S"SMF"; 01931 M01S01865.sxinit +++| GOTO INITMASTER; 01932 M01S01866.sxinit +++| END 01933 M01S01867.sxinit +++| 01934 M01S01868.sxinit +++|# 01935 M01S01869.sxinit +++|* ISSUE A *SETPFP* SO THE COMMUNICATION FILES 01936 M01S01870.sxinit +++|* CAN BE ATTACHED. 01937 M01S01871.sxinit +++|# 01938 M01S01872.sxinit +++| 01939 M01S01873.sxinit +++| PFP$WRD0[0] = 0; 01940 M01S01874.sxinit +++| PFP$FAM[0] = LINKFAM; 01941 M01S01875.sxinit +++| PFP$FG1[0] = TRUE; # CHANGE FAMILY # 01942 M01S01876.sxinit +++| PFP$FG4[0] = TRUE; # CHANGE USER INDEX # 01943 M01S01877.sxinit +++| PFP$UI[0] = DEF$UI; 01944 M01S01878.sxinit +++| SETPFP(PFP); 01945 M01S01879.sxinit +++| IF PFP$STAT[0] NQ 0 01946 M01S01880.sxinit +++| THEN 01947 M01S01881.sxinit +++| BEGIN 01948 M01S01882.sxinit +++| MMFD$PROB[0] = "SETPFP PROBLEM."; 01949 M01S01883.sxinit +++| GOTO INITMASTER; 01950 M01S01884.sxinit +++| END 01951 M01S01885.sxinit +++| 01952 M01S01886.sxinit +++|# 01953 M01S01887.sxinit +++|* ATTACH THE *MTOS* FILE IN MODIFY MODE, 01954 M01S01888.sxinit +++|* AND READ IT TO THE *MTOS* BUFFER. 01955 M01S01889.sxinit +++|* USE THE *STOM* FILE BUFFER AND *FET* TO READ THE *MTOS* FILE. 01956 M01S01890.sxinit +++|# 01957 M01S01891.sxinit +++| 01958 M01S01892.sxinit +++| ZSETFET(LOC(STOMM),MTOSMLFN,LOC(STOMMBUF),STOMBUFL,SFETL); 01959 M01S01893.sxinit +++| PFD("ATTACH",MTOSMLFN,MTBSPFN,"PW",MTOSPW, 01960 M01S01894.sxinit +++| "M","M", "RC",PFSTAT,"NA",0,"UP",0,0); 01961 M01S01895.sxinit +++| IF PFSTAT EQ FBS 01962 M01S01896.sxinit +++| THEN # FILE BUSY # 01963 M01S01897.sxinit +++| BEGIN 01964 M01S01898.sxinit +++| MMFD$PROB[0] = "MTOS FILE BUSY."; 01965 M01S01899.sxinit +++| GOTO INITMASTER; 01966 M01S01900.sxinit +++| END 01967 M01S01901.sxinit +++| 01968 M01S01902.sxinit +++| 01969 M01S01903.sxinit +++| IF PFSTAT EQ OK 01970 M01S01904.sxinit +++| THEN # READ *MTOS* # 01971 M01S01905.sxinit +++| BEGIN 01972 M01S01906.sxinit +++| READ(STOMM,RCL); 01973 M01S01907.sxinit +++| READW(STOMM,MTOSHEAD,L$MTOS,STAT); 01974 M01S01908.sxinit +++| END 01975 M01S01909.sxinit +++| 01976 M01S01910.sxinit +++| 01977 M01S01911.sxinit +++| 01978 M01S01912.sxinit +++| IF PFSTAT NQ OK ## 01979 M01S01913.sxinit +++| OR MSH$NUMSLV[0] NQ NUMSLV ## 01980 M01S01914.sxinit +++| OR MSH$NUMRB[0] NQ NUMRB 01981 M01S01915.sxinit +++| THEN # INITIALIZE THE *MTOS* FILE # 01982 M01S01916.sxinit +++| BEGIN 01983 M01S01917.sxinit +++| PFSTAT = 1; 01984 M01S01918.sxinit +++| MSH$NUMSLV[0] = NUMSLV; 01985 M01S01919.sxinit +++| MSH$NUMRB[0] = NUMRB; 01986 M01S01920.sxinit +++| STAT = 1; 01987 M01S01921.sxinit +++| END 01988 M01S01922.sxinit +++| 01989 M01S01923.sxinit +++|# 01990 M01S01924.sxinit +++|* INITIALIZE THE MASTER STATUS INFORMATION. 01991 M01S01925.sxinit +++|# 01992 M01S01926.sxinit +++| 01993 M01S01927.sxinit +++| MSH$PFNM[0] = MTBSPFN; 01994 M01S01928.sxinit +++| MSH$MIDM[0] = MID; 01995 M01S01929.sxinit +++| MSH$MIDX[0] = MIDX; 01996 M01S01930.sxinit +++| 01997 M01S01931.sxinit +++| 01998 M01S01932.sxinit +++| IF PFSTAT NQ OK 01999 M01S01933.sxinit +++| THEN 02000 M01S01934.sxinit +++| BEGIN # CREATE *MTOS* # 02001 M01S01935.sxinit +++| 02002 M01S01936.sxinit +++|# 02003 M01S01937.sxinit +++|* CREATE A NEW *MTOS* PERMANENT FILE WHICH 02004 M01S01938.sxinit +++|* HAS THE MASTER HEADER INFORMATION. 02005 M01S01939.sxinit +++|* REATTACH THE *MTOS* FILE IN MODIFY MODE 02006 M01S01940.sxinit +++|* SO THE *SSSLV* PROGRAMS CAN READ IT. 02007 M01S01941.sxinit +++|# 02008 M01S01942.sxinit +++| 02009 M01S01943.sxinit +++| RETERN(STOMM,RCL); 02010 M01S01944.sxinit +++| PFD("PURGE",MTBSPFN,"PW",MTOSPW,"RC",PFSTAT,"UP",0,0); 02011 M01S01945.sxinit +++| PFD("DEFINE",MTOSMLFN,MTBSPFN,"PW",MTOSPW,"BR","N", "R", 02012 M01S01946.sxinit +++| LINK$DT[0],"RC",PFSTAT,"UP",0,0); 02013 M01S01947.sxinit +++| IF PFSTAT NQ OK 02014 M01S01948.sxinit +++| THEN # CAN NOT DEFINE # 02015 M01S01949.sxinit +++| BEGIN 02016 M01S01950.sxinit +++| MMFD$PROB[0] = "DEFINE MTOS FAILED."; 02017 M01S01951.sxinit +++| GOTO INITMASTER; 02018 M01S01952.sxinit +++| END 02019 M01S01953.sxinit +++| 02020 M01S01954.sxinit +++| P<FETSET> = LOC(MTOSM); 02021 M01S01955.sxinit +++| FET$IN[0] = FET$FRST[0] + L$MTOS; 02022 M01S01956.sxinit +++| WRITER(MTOSM,RCL); 02023 M01S01957.sxinit +++| PFD("ATTACH",MTOSMLFN,MTBSPFN,"PW",MTOSPW,"M","M", "RC",PFSTAT 02024 M01S01958.sxinit +++| ,"NA",0,"UP",0,0); 02025 M01S01959.sxinit +++| IF PFSTAT NQ OK 02026 M01S01960.sxinit +++| THEN # ABNORMAL ERROR # 02027 M01S01961.sxinit +++| BEGIN 02028 M01S01962.sxinit +++| MMFD$PROB[0] = "ATTACH MTOS FAILED."; 02029 M01S01963.sxinit +++| GOTO INITMASTER; 02030 M01S01964.sxinit +++| END 02031 M01S01965.sxinit +++| 02032 M01S01966.sxinit +++| END # CREATE *MTOS* # 02033 M01S01967.sxinit +++| 02034 M01S01968.sxinit +++| STATM = S"ACTIVE"; 02035 M01S01969.sxinit +++| 02036 M01S01970.sxinit +++| 02037 M01S01971.sxinit +++| 02038 M01S01972.sxinit +++| 02039 M01S01973.sxinit +++|# 02040 M01S01974.sxinit +++|* ATTACH AND READ THE *STOM* COMMUNICATION FILE 02041 M01S01975.sxinit +++|* FROM EACH POSSIBLE SLAVE AND INITIALIZE THE 02042 M01S01976.sxinit +++|* HEADER AND EACH REPLY BLOCK STATUS FOR EACH SLAVE. 02043 M01S01977.sxinit +++|# 02044 M01S01978.sxinit +++| 02045 M01S01979.sxinit +++| SINDX = 1; 02046 M01S01980.sxinit +++| P<STOMFILE> = LOC(RBBUF); 02047 M01S01981.sxinit +++| FASTFOR DUMMY = 1 STEP 1 UNTIL MAXSLV + 1 02048 M01S01982.sxinit +++| DO 02049 M01S01983.sxinit +++| BEGIN # INITIALIZE EACH SLAVE # 02050 M01S01984.sxinit +++| IF DUMMY EQ MIDX OR ## 02051 M01S01985.sxinit +++| SINDX GR NUMSLV 02052 M01S01986.sxinit +++| THEN # BYPASS THIS *MF* # 02053 M01S01987.sxinit +++| BEGIN 02054 M01S01988.sxinit +++| TEST DUMMY; 02055 M01S01989.sxinit +++| END 02056 M01S01990.sxinit +++| 02057 M01S01991.sxinit +++| P<MTOSREPBLK> = LOC(MTOSHEAD) + L$MTOSH + (SINDX-1)*NUMRB; 02058 M01S01992.sxinit +++| PFNAME = STOMPFN; 02059 M01S01993.sxinit +++| CHAR10 = XCOD(DUMMY); 02060 M01S01994.sxinit +++| CHAR1 = C<9,1>CHAR10; 02061 M01S01995.sxinit +++| B<36,6>PFNAME = CHAR1; 02062 M01S01996.sxinit +++| SLVN$INDX[0] = CHAR1; 02063 M01S01997.sxinit +++| MSH$PFNS[SINDX] = PFNAME; 02064 M01S01998.sxinit +++| 02065 M01S01999.sxinit +++|# 02066 M01S02000.sxinit +++|* ATTACH AND READ THE *STOM* FILE FOR THIS SLAVE 02067 M01S02001.sxinit +++|# 02068 M01S02002.sxinit +++| 02069 M01S02003.sxinit +++| PFD("ATTACH",PFNAME,0,"PW",STOMPW,"M","RM","RC",PFSTAT, "NA",0 02070 M01S02004.sxinit +++| ,"UP",0,0); 02071 M01S02005.sxinit +++| IF PFSTAT NQ OK
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/sxinit.txt ยท Last modified: by 127.0.0.1