TITLE 'AMDSAIOI VITRUAL DUMP I/O INTERRUPT HANDLER *00001000 ' 00002000 AMDSAIOI CSECT 00003000 STM R0,R15,IOISAVE SAVE REGISTERS AT TIME OF INTERRUPT 00004000 BALR BASEREG,0 ESTABLISH ADDRESSABILITY 00005000 USING *,BASEREG 00006000 * IOIBSW = OFF; /* INDICATE INTERRUPT ENTERED */ 00007000 NI IOIBSW,B'01111111' 01S0198 00008000 * GO TO SVECHAIN; /* SET UP SAVE AREA CHAIN */ 00009000 B SVECHAIN 01S0199 00010000 * 01S0200 00011000 * /*****************************************************************/ 00012000 * /* */ 00013000 * /* THIS IS THE SVC 27 ENTRY TO IOI. IT IS AN ALTERNATE ''BRANCH''*/ 00014000 * /* TYPE ENTRY POINT */ 00015000 * /* */ 00016000 * /*****************************************************************/ 00017000 * 01S0200 00018000 */*AMDSAIOB: E ENTRY VIA SVC 27 */ 00019000 */* N THIS ENTRY RECEIVES CONTROL VIA AN SVC */ 00020000 */* N THE DEVICE ADDR IS IN R10 */ 00021000 */* N THE CSW IS AT LOCATION FLCCSW */ 00022000 */* P SAVE REGISTERS IN CALLER'S SAVE AREA */ 00023000 */* P SAVE R10 IN FLCIOAA */ 00024000 */* P TURN ON IOIBSW */ 00025000 */*SVECHAIN: P ESTABLISH ADDRESSABILITY FOR COMMON ENTRY */ 00026000 * GEN REFS(R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15) 00027000 * SETS(BASEREG)FLOWS(AMDSAIOB); 01S0200 00028000 ENTRY AMDSAIOB 00029000 AMDSAIOB DS 0H 00030000 STM RETREG,R12,12(R13) SAVE CALLERS REGISTERS 00031000 BALR BASEREG,0 ESTABLISH ADDRESSABILITY 00032000 USING *,BASEREG 00033000 * RESPECIFY R10 RESTRICTED; 01S0201 00034000 * FLCIOAA = R10; /* SAVE INPUT DEVICE ADDRESS */ 00035000 STCM R10,7,FLCIOAA 01S0202 00036000 * RESPECIFY R10 UNRESTRICTED; 01S0203 00037000 * IOIBSW = ON; /* INDICATE BRANCH ENTRY */ 00038000 * 01S0204 00039000 OI IOIBSW,B'10000000' 01S0204 00040000 *SVECHAIN: 01S0205 00041000 * GEN SETS(BASEREG); 01S0205 00042000 SVECHAIN DS 0H 01S0205 00043000 BALR BASEREG,0 REESTABLISH ADDRESSABILITY FOR REST OF CODE 00044000 USING *,BASEREG 00045000 * 01S0206 00046000 * /*****************************************************************/ 00047000 * /* */ 00048000 * /* THIS SECTION OF CODE INITIALIZES IOI'S SAVE AREA AND QUEUES */ 00049000 * /* THE RCB ON THE VCTRCB CHAIN */ 00050000 * /* */ 00051000 * /*****************************************************************/ 00052000 * 01S0206 00053000 */*IOIRCBQ: P SET UP SAVE AREA CHAINING */ 00054000 */* P (RCB,DEQRCB,NORM,) ESTABLISH RCB AND QUEUE ON VCTRCB CHAIN */ 00055000 * RESPECIFY R13 RESTRICTED; 01S0206 00056000 * RESPECIFY SAVEFORM BASED (R13); 01S0207 00057000 * IF IOIBSW = ON THEN 01S0208 00058000 TM IOIBSW,B'10000000' 01S0208 00059000 BNO @RF00208 01S0208 00060000 * DO; 01S0209 00061000 * SAVENEXT = ADDR(IOIAREA); /* SET UP FORWARD CHAIN */ 00062000 LA @10,IOIAREA 01S0210 00063000 ST @10,SAVENEXT(,R13) 01S0210 00064000 * RESPECIFY SAVEFORM BASED (ADDR(IOIAREA)); 01S0211 00065000 * SAVEBACK = R13; /* SAVE BACK CHAIN */ 00066000 ST R13,SAVEBACK(,@10) 01S0212 00067000 * END; 01S0213 00068000 * R13 = ADDR(IOIAREA); /* SET UP R13 WITH SAVE AREA 00069000 * ADDRESS */ 00070000 @RF00208 LA R13,IOIAREA 01S0214 00071000 * CCTREG = CCTADDR; /* SET POINTER TO CCT */ 00072000 LH CCTREG,@CH00740 01S0215 00073000 * VCCTREG = CTVCCT; /* RESET POINTER TO VCCT */ 00074000 L VCCTREG,CTVCCT(,CCTREG) 01S0216 00075000 * IRCBNEXT = VCTRCB; /* POINT TO NEXT LOWER CHAIN 00076000 * ELEMENT */ 00077000 MVC IRCBNEXT(4),VCTRCB(VCCTREG) 01S0217 00078000 * IRCBEXIT = ADDR (IOIRET); /* ERROR EXIT */ 00079000 LA @10,IOIRET 01S0218 00080000 ST @10,IRCBEXIT 01S0218 00081000 * IRCBBASE = BASEREG; /* SAVE BASE REGISTER FOR RCB 00082000 * EXIT */ 00083000 ST BASEREG,IRCBBASE 01S0219 00084000 * VCTRCB = ADDR(IOIRCB); /* QUEUE RCB ON CHAIN */ 00085000 LA @10,IOIRCB 01S0220 00086000 ST @10,VCTRCB(,VCCTREG) 01S0220 00087000 * 01S0221 00088000 * /*****************************************************************/ 00089000 * /* */ 00090000 * /* WE SHALL NEXT DETERMINE IF THE INTERRUPT IS VALID (I.E. FROM A*/ 00091000 * /* DEVICE AMDSADMP IS USING - NOTE ONLY DA, WORKFILE, AND OUTPUT */ 00092000 * /* ARE CONSIDERED VALID DEVICES */ 00093000 * /* */ 00094000 * /*****************************************************************/ 00095000 * 01S0221 00096000 */* D (YES,,NO,IOIWKCK) DOES DA IODBDEV = FLCIOAA ? */ 00097000 */* D (YES,,NO,IOIWKCK) DA I/O ACTIVE ? */ 00098000 */* P (,IOIRCBE2) SET IODBREG = ADDR OF DA IODB */ 00099000 */*IOIWKCK: D (YES,,NO,IOIOTCK) DOES WKFILE IODBDEV = FLCIOAA ? */ 00100000 */* D (YES,,NO,IOIOTCK) I/O ACTIVE ON WKFILE ? */ 00101000 */* P (,IOIRCBE2) SET IODBREG = ADDR OF WKFILE IODB */ 00102000 */*IOIOTCK: D (YES,,NO,IOIEXTIN) DOES OUTPUT IODBDEV = FLCIOAA ? */ 00103000 */* D (YES,,NO,IOIEXTIN) I/O ACTIVE ON OUTPUT ? */ 00104000 */* P (,IOIRCBE2) SET IODBREG = ADDR OF OUTPUT IODB */ 00105000 */*IOIEXTIN: N (,DEQRCB) EXTRANEOUS INTERRUPT - IGNORE */ 00106000 * IODBREG = ADDR(IODBDA); /* SET POINTER TO DA IODB */ 00107000 L IODBREG,@CA00945 01S0221 00108000 * IF FLCIOAA = IODBDEV & IODBACTV = ON THEN 01S0222 00109000 SR @10,@10 01S0222 00110000 ICM @10,7,FLCIOAA 01S0222 00111000 CH @10,IODBDEV(,IODBREG) 01S0222 00112000 BNE @RF00222 01S0222 00113000 TM IODBACTV(IODBREG),B'00000100' 01S0222 00114000 BO @RT00222 01S0222 00115000 * GO TO IOIRCBE2; /* USE DA IODB FOR INTERRUPT */ 00116000 * IODBREG = ADDR(IODBWORK); /* SET POINTER TO WORKFILE IODB */ 00117000 @RF00222 L IODBREG,@CA00944 01S0224 00118000 * IF FLCIOAA = IODBDEV & IODBACTV = ON THEN 01S0225 00119000 SR @10,@10 01S0225 00120000 ICM @10,7,FLCIOAA 01S0225 00121000 CH @10,IODBDEV(,IODBREG) 01S0225 00122000 BNE @RF00225 01S0225 00123000 TM IODBACTV(IODBREG),B'00000100' 01S0225 00124000 BO @RT00225 01S0225 00125000 * GO TO IOIRCBE2; /* USE WORKFILE IODB FOR 01S0226 00126000 * INTERRUPT */ 00127000 * IODBREG = ADDR(IODBOUT); /* SET POINTER TO OUTPUT IODB */ 00128000 @RF00225 L IODBREG,@CA00946 01S0227 00129000 * IF FLCIOAA = IODBDEV & IODBACTV = ON THEN 01S0228 00130000 SR @10,@10 01S0228 00131000 ICM @10,7,FLCIOAA 01S0228 00132000 CH @10,IODBDEV(,IODBREG) 01S0228 00133000 BNE @RF00228 01S0228 00134000 TM IODBACTV(IODBREG),B'00000100' 01S0228 00135000 BO @RT00228 01S0228 00136000 * GO TO IOIRCBE2; /* USE OUTPUT IODB FOR INTERRUPT */ 00137000 * ELSE 01S0230 00138000 * GO TO IOIRET; /* EXTRANEOUS INTERRUPT - IGNORE */ 00139000 * 01S0230 00140000 B IOIRET 01S0230 00141000 * /*****************************************************************/ 00142000 * /* */ 00143000 * /* MODIFY THE RCB EXIT ADDRESS TO IOI'S PRIMARY RCB EXIT */ 00144000 * /* */ 00145000 * /*****************************************************************/ 00146000 * 01S0231 00147000 */*IOIRCBE2: P (NORM,,RCB2,RCBE2) MODIFY RCB EXIT ENTRY TO RCBE2 */ 00148000 * 01S0231 00149000 *IOIRCBE2: 01S0231 00150000 * IRCBEXIT = ADDR(RCBE2); /* NORMAL IOI RCB EXIT */ 00151000 IOIRCBE2 LA @10,RCBE2 01S0231 00152000 ST @10,IRCBEXIT 01S0231 00153000 * 01S0232 00154000 * /*****************************************************************/ 00155000 * /* */ 00156000 * /* NOW THE INTERRUPT CAN BE PROCESSED. WE KNOW THE DEVICE IS */ 00157000 * /* VALID, THAT AN INTERRUPT OCCURRED FOR THE DEVICE, AND THAT */ 00158000 * /* SOME ACTION MAY BE TAKEN */ 00159000 * /* */ 00160000 * /*****************************************************************/ 00161000 * 01S0232 00162000 */* P SET IODBINT = 1 FOR THIS IODB */ 00163000 */* P MOVE FLCCSW TO IODBCSW */ 00164000 */* P SET CCW ADDRESS */ 00165000 * IODBINT = ON; /* INDICATE AN INTERRUPT HAS 00166000 * OCCURRED */ 00167000 OI IODBINT(IODBREG),B'00100000' 01S0232 00168000 * IODBCSW = FLCCSW; /* SAVE THE CSW AT THE TIME OF 00169000 * THE INTERRUPT */ 00170000 MVC IODBCSW(8,IODBREG),FLCCSW 01S0233 00171000 * IF CSWDE = ON THEN /* DEVICE END RECEIVED */ 00172000 LA @10,IODBCSW(,IODBREG) 01S0234 00173000 TM CSWDE(@10),B'00000100' 01S0234 00174000 BNO @RF00234 01S0234 00175000 * IODBACTV = OFF; /* INDICATE I/O NO LONGER ACTIVE */ 00176000 NI IODBACTV(IODBREG),B'11111011' 01S0235 00177000 * GEN FLOWS(RCBE2) /* ANY ERROR WILL NOW CAUSE 01S0236 00178000 * AMDSAAUD TO RETURN CONTROL AT 00179000 * RCBE2 */ 00180000 * 01S0236 00181000 @RF00234 DS 0H 01S0237 00182000 * /*****************************************************************/ 00183000 * /* */ 00184000 * /* FIND OUT WHAT HAPPENED, I/O ERROR ? */ 00185000 * /* */ 00186000 * /*****************************************************************/ 00187000 * 01S0237 00188000 */*IOCATERR: D (YES,IOERR,NO,IOPCI) CATASTROPHIC ERROR ? */ 00189000 */*IOERR: N FOR ALL ERRORS QUIESCE I/O ON ALL OTHER DEVICES */ 00190000 * 01S0237 00191000 *IOCATERR: 01S0237 00192000 * IF CSWCADDR = ZERO | (CSWCADDR=IODBCAW & VCTCPOUT ^= IODBCAW) THEN 00193000 IOCATERR LA @10,IODBCSW(,IODBREG) 01S0237 00194000 SR @04,@04 01S0237 00195000 ICM @04,7,CSWCADDR(@10) 01S0237 00196000 LTR @04,@04 01S0237 00197000 BZ @RT00237 01S0237 00198000 L @10,IODBCAW(,IODBREG) 01S0237 00199000 CR @04,@10 01S0237 00200000 BNE @RF00237 01S0237 00201000 C @10,VCTCPOUT(,VCCTREG) 01S0237 00202000 BE @RF00237 01S0237 00203000 @RT00237 DS 0H 01S0238 00204000 * /* IS THERE A CCW ADDRESS */ 00205000 * CURCCW = IODBCAW; /* NO--USE THE CAW */ 00206000 L CURCCW,IODBCAW(,IODBREG) 01S0238 00207000 * ELSE 01S0239 00208000 * CURCCW = CSWCADDR - LENGTH(CCW); /* YES--THEN BACK IT UP */ 00209000 B @RC00237 01S0239 00210000 @RF00237 LA @10,IODBCSW(,IODBREG) 01S0239 00211000 SR CURCCW,CURCCW 01S0239 00212000 ICM CURCCW,7,CSWCADDR(@10) 01S0239 00213000 SH CURCCW,@CH00036 01S0239 00214000 * IF CSWATTN = ON | CSWSTMOD = ON | CSWBUSY = ON | CSWUC = ON | 00215000 * CSWUE = ON | CSWIL = ON | CSWPGC = ON | CSWPTC = ON | 01S0240 00216000 * CSWCDC = ON | CSWCCC = ON | CSWICC = ON | CSWCHC = ON THEN 00217000 @RC00237 LA @10,IODBCSW(,IODBREG) 01S0240 00218000 TM CSWATTN(@10),B'11010011' 01S0240 00219000 BNZ @RT00240 01S0240 00220000 TM CSWIL(@10),B'01111111' 01S0240 00221000 BNZ @RT00240 01S0240 00222000 * GO TO IOERR; 01S0241 00223000 * IF (CSWPCI = ON & IODBREG ^= ADDR(IODBOUT)) THEN 01S0242 00224000 TM CSWPCI(@10),B'10000000' 01S0242 00225000 BNO @RF00242 01S0242 00226000 L @10,@CA00946 01S0242 00227000 CR IODBREG,@10 01S0242 00228000 BE @RF00242 01S0242 00229000 * DO; /* IF CATASTROPHIC ERROR PREPARE 00230000 * TO PROCESS BY ERROR RECOVERY */ 00231000 * 01S0243 00232000 *IOERR: 01S0244 00233000 * IODBHALT = ON; /* SET ON HALTED I/O FOR PRIMARY 00234000 * DEVICE */ 00235000 IOERR DS 0H 01S0245 00236000 * IODBACTV = OFF; /* I/O NOT ACTIVE ON DEVICE */ 00237000 OI IODBHALT(IODBREG),B'00001000' 01S0245 00238000 NI IODBACTV(IODBREG),B'11111011' 01S0245 00239000 * 01S0246 00240000 * /*****************************************************************/ 00241000 * /* */ 00242000 * /* ERROR SITUATION -- STOP I/O ON ALL OTHER DEVICES. WE DO NOT */ 00243000 * /* WANT INTERFERENCE FROM OTHER ACTIVE AMDSADMP I/O DURING ERROR */ 00244000 * /* RECOVERY */ 00245000 * /* */ 00246000 * /*****************************************************************/ 00247000 * 01S0246 00248000 */* D (YES,,NO,HALTWK) IS ORIGINAL IODB = DA IODB ? */ 00249000 */* S IOIHALT:HALT I/O ON OTHER ACTIVE DEVICES */ 00250000 */*HALTWK: D (YES,,NO,HALTOP) IS ORIGINAL IODB = WKFILE IODB ? */ 00251000 */* S IOIHALT:HALT I/O ON OTHER ACTIVE DEVICES */ 00252000 */*HALTOP: D (YES,,NO,HALTDONE) IS ORIGINAL IODB = OUTPUT IODB ? */ 00253000 */* S IOIHALT:HALT I/O ON OTHER ACTIVE DEVICES */ 00254000 * IF IODBREG ^= ADDR(IODBDA) THEN 01S0246 00255000 L @10,@CA00945 01S0246 00256000 CR IODBREG,@10 01S0246 00257000 BE @RF00246 01S0246 00258000 * DO; /* SET UP TO HALT DA DEVICE */ 00259000 * IODBADDR = ADDR(IODBDA); /* SET UP INPUT DEVICE ADDRESS */ 00260000 LR IODBADDR,@10 01S0248 00261000 * CALL IOIHALT; /* STOP I/O ON THE DEVICE */ 00262000 BAL @14,IOIHALT 01S0249 00263000 * END; 01S0250 00264000 * IF IODBREG ^= ADDR(IODBWORK) THEN 01S0251 00265000 @RF00246 L @10,@CA00944 01S0251 00266000 CR IODBREG,@10 01S0251 00267000 BE @RF00251 01S0251 00268000 * DO; /* SET UP TO HALT WORKFILE I/O */ 00269000 * IODBADDR = ADDR(IODBWORK); /* WORKFILE IODB ADDRESS */ 00270000 LR IODBADDR,@10 01S0253 00271000 * CALL IOIHALT; /* STOP WORKFILE I/O */ 00272000 BAL @14,IOIHALT 01S0254 00273000 * END; 01S0255 00274000 * IF IODBREG ^= ADDR(IODBOUT) THEN 01S0256 00275000 @RF00251 L @10,@CA00946 01S0256 00276000 CR IODBREG,@10 01S0256 00277000 BE @RF00256 01S0256 00278000 * DO; /* STOP OUTPUT I/O */ 00279000 * IODBADDR = ADDR(IODBOUT); /* SET UP FOR OUTPUT I/O */ 00280000 LR IODBADDR,@10 01S0258 00281000 * CALL IOIHALT; /* STOP I/O TO OUTPUT DEVICE */ 00282000 BAL @14,IOIHALT 01S0259 00283000 * END; 01S0260 00284000 * 01S0261 00285000 * /*****************************************************************/ 00286000 * /* */ 00287000 * /* NOW I/O HAS BEEN QUIESCED ON ALL OTHER ACTIVE DEVICES. WE CAN */ 00288000 * /* NOW ATTEMPT ERROR RECOVERY */ 00289000 * /* */ 00290000 * /*****************************************************************/ 00291000 * 01S0261 00292000 */*HALTDONE: D (NO,,YES,IOITER) IODBCLAS = TAPE ? */ 00293000 */* D (NO,,YES,IOIDER) IODBCLAS = D. A. ? */ 00294000 */* P SET UP UNIQUE IOI AUDIT CODE */ 00295000 */* W (RCB,RCBE2) CALL AMDSAAUD (SVC 13) */ 00296000 */*IOITER: L AMDSATER: TAPE ERROR RECOVERY ROUTINE */ 00297000 */*IOIHLT0: P (,IOIBUF) IODBHALT = 0 */ 00298000 */*IOIDER: L (,IOIHLT0) AMDSADER: DA ERROR RECOVERY ROUTINE */ 00299000 * RESPECIFY R8 RESTRICTED; 01S0261 00300000 @RF00256 DS 0H 01S0262 00301000 * R8 = IODBREG; /* SET UP ACTIVE DEVICE IODB */ 00302000 LR R8,IODBREG 01S0262 00303000 * IF IODBCLAS = TAPE THEN 01S0263 00304000 CLI IODBCLAS(IODBREG),128 01S0263 00305000 BNE @RF00263 01S0263 00306000 * SVC (TERSVC); /* HANDLE TAPE ERROR RECOVERY */ 00307000 SVC 10 01S0264 00308000 * ELSE 01S0265 00309000 * IF IODBCLAS = DA THEN 01S0265 00310000 B @RC00263 01S0265 00311000 @RF00263 CLI IODBCLAS(IODBREG),32 01S0265 00312000 BNE @RF00265 01S0265 00313000 * SVC (DERSVC); /* HANDLE DA ERROR RECOVERY */ 00314000 SVC 15 01S0266 00315000 * ELSE 01S0267 00316000 * DO; 01S0267 00317000 B @RC00265 01S0267 00318000 @RF00265 DS 0H 01S0268 00319000 * VCTAUDIT = IOIAUD1; /* SET UP AUDIT ERROR CONDITION 00320000 * CODE INDICATING INVALID DEVICE 00321000 * TYPE */ 00322000 MVC VCTAUDIT(2,VCCTREG),IOIAUD1 01S0268 00323000 * SVC (AUDSVC); /* ERROR - DUMP AMDSADMP */ 00324000 SVC 13 01S0269 00325000 * END; 01S0270 00326000 * IODBHALT = OFF; /* RESET HALT SWITCH AS WE HAVE 00327000 * HANDLED THE ERROR */ 00328000 @RC00265 DS 0H 01S0271 00329000 @RC00263 NI IODBHALT(IODBREG),B'11110111' 01S0271 00330000 * RESPECIFY R8 UNRESTRICTED; 01S0272 00331000 * IF CSWCADDR=ZERO | (CSWCADDR=IODBCAW & VCTCPOUT ^= IODBCAW) THE 00332000 * /* IS THERE A CCW ADDRESS */ 00333000 LA @10,IODBCSW(,IODBREG) 01S0273 00334000 SR @04,@04 01S0273 00335000 ICM @04,7,CSWCADDR(@10) 01S0273 00336000 LTR @04,@04 01S0273 00337000 BZ @RT00273 01S0273 00338000 L @10,IODBCAW(,IODBREG) 01S0273 00339000 CR @04,@10 01S0273 00340000 BNE @RF00273 01S0273 00341000 C @10,VCTCPOUT(,VCCTREG) 01S0273 00342000 BE @RF00273 01S0273 00343000 @RT00273 DS 0H 01S0274 00344000 * CURCCW = IODBCAW; /* NO--USE THE CAW */ 00345000 L CURCCW,IODBCAW(,IODBREG) 01S0274 00346000 * ELSE 01S0275 00347000 * CURCCW = CSWCADDR - LENGTH(CCW); /* YES--THEN BACK IT UP */ 00348000 B @RC00273 01S0275 00349000 @RF00273 LA @10,IODBCSW(,IODBREG) 01S0275 00350000 SR CURCCW,CURCCW 01S0275 00351000 ICM CURCCW,7,CSWCADDR(@10) 01S0275 00352000 SH CURCCW,@CH00036 01S0275 00353000 * END; /* ENDS CATATROPHIC ERROR 01S0276 00354000 * PROCESSING */ 00355000 @RC00273 DS 0H 01S0277 00356000 * 01S0277 00357000 * /*****************************************************************/ 00358000 * /* */ 00359000 * /* HERE WE WILL HANDLE NORMAL CONDITIONS */ 00360000 * /* */ 00361000 * /*****************************************************************/ 00362000 * 01S0277 00363000 */*IOPCI: D (YES,,NO,IOCHEND) PCI ? */ 00364000 */* D (YES,,NO,IOCHEND) OUTPUT IODB ? */ 00365000 */* P (,IOIBUF) POINT TO CCW AFTER LAST COMPLETED WRITE */ 00366000 */*IOCHEND: D (YES,,NO,IODEVEND) CHANNEL END? */ 00367000 */* P SET CCW ADDRESS IN IODBCAW */ 00368000 */*IODEVEND: D (YES,IOIBUF,NO,IOINOINT) DEVICE END ? */ 00369000 */*IOINOINT: P (,IOIHLT0) SET IODBINT = 0 FOR THIS IODB */ 00370000 * IF CSWPCI = ON & IODBREG = ADDR(IODBOUT) THEN 01S0277 00371000 @RF00242 LA @10,IODBCSW(,IODBREG) 01S0277 00372000 TM CSWPCI(@10),B'10000000' 01S0277 00373000 BNO @RF00277 01S0277 00374000 L @10,@CA00946 01S0277 00375000 CR IODBREG,@10 01S0277 00376000 BNE @RF00277 01S0277 00377000 * DO; 01S0278 00378000 * DO WHILE CCWCMD ^= TIC & CCWCMD ^= NOP; /* POINT TO TIC OR 00379000 * NOP FOLLOWING WRITE */ 00380000 B @DE00279 01S0279 00381000 @DL00279 DS 0H 01S0280 00382000 * CURCCW = CURCCW - LENGTH(CCW); /* BACK UP ONE CCW */ 00383000 SH CURCCW,@CH00036 01S0280 00384000 * IF CURCCW <= ADDR(OUTCCW) THEN /* IS NEW ADDRESS OUT OF 00385000 * TABLE */ 00386000 L @10,@CA00942 01S0281 00387000 CR CURCCW,@10 01S0281 00388000 BH @RF00281 01S0281 00389000 * CURCCW = ADDR(OUTCCW) + LENGTH(OUTCCW) - LENGTH(CCW); 00390000 SH @10,@CH00994 01S0282 00391000 LR CURCCW,@10 01S0282 00392000 * /* YES--POINT TO LAST WRITE IN 00393000 * TABLE */ 00394000 * END; 01S0283 00395000 @RF00281 DS 0H 01S0283 00396000 @DE00279 CLI CCWCMD(CURCCW),8 01S0283 00397000 BE @DC00279 01S0283 00398000 CLI CCWCMD(CURCCW),3 01S0283 00399000 BNE @DL00279 01S0283 00400000 @DC00279 DS 0H 01S0284 00401000 * IODBCAW = ZERO; /* @YM04511*/ 00402000 SR @10,@10 01S0284 00403000 ST @10,IODBCAW(,IODBREG) 01S0284 00404000 * GO TO IOIBUF; /* PCI VALID FOR OUTPUT ONLY */ 00405000 B IOIBUF 01S0285 00406000 * END; 01S0286 00407000 * IF CSWUSTAT = '08'X THEN /* CHANNEL END ONLY */ 00408000 @RF00277 LA @10,IODBCSW(,IODBREG) 01S0287 00409000 CLI CSWUSTAT(@10),X'08' 01S0287 00410000 BNE @RF00287 01S0287 00411000 * IODBCAW = CURCCW; /* YES--RESET CAW PAST SUCCESSFUL 00412000 * CCWS (USED FOR WTM, WTM, RUN 00413000 * SEQUENCE) */ 00414000 ST CURCCW,IODBCAW(,IODBREG) 01S0288 00415000 * IF CSWDE ^= ON THEN 01S0289 00416000 @RF00287 LA @10,IODBCSW(,IODBREG) 01S0289 00417000 TM CSWDE(@10),B'00000100' 01S0289 00418000 BO @RF00289 01S0289 00419000 * DO; 01S0290 00420000 * IODBINT = OFF; /* CHANNEL END OR CONTROL UNIT 00421000 * END - IGNORE AND WAIT FOR DE */ 00422000 * IODBHALT = OFF; /* RESET HALT I/O INDICATOR */ 00423000 NI IODBINT(IODBREG),B'11010111' 01S0292 00424000 * GO TO IOHDA; /* SEE IF DONE */ 00425000 B IOHDA 01S0293 00426000 * END; 01S0294 00427000 * 01S0295 00428000 * /*****************************************************************/ 00429000 * /* */ 00430000 * /* NORMAL PCI OR DEVICE END PROCESSING */ 00431000 * /* */ 00432000 * /*****************************************************************/ 00433000 * 01S0295 00434000 */*IOIBUF: P PICK UP IODBBCT 1ST BUFFER */ 00435000 */*IOIBACK: P BACK CCW ADDRESS UP BY 8 BYTES */ 00436000 */* D (YES,IOIBACK,NO,) TIC OR NOP OPERATION ? */ 00437000 */* D (YES,,NO,BCTFLG) OUTPUT IODB ? */ 00438000 */* BCTADDR: D (YES,BCTFLG,NO,) ADDR IN CCW = BCTRADDR ? */ 00439000 */* D (YES,%IOERR,NO,) BCTNEXT = 0 ? */ 00440000 */* P (,BCTADDR) OBTAIN NEXT BCT FROM BCTNEXT */ 00441000 */*%IOERR: W CALL AUDIT-CODE IS 0201 */ 00442000 * 01S0295 00443000 *IOIBUF: 01S0295 00444000 * IF CTIOTERM = ON THEN 01S0295 00445000 @RF00289 DS 0H 01S0295 00446000 IOIBUF TM CTIOTERM(CCTREG),B'10000000' 01S0295 00447000 BO @RT00295 01S0295 00448000 * GO TO IOIRET; /* IF TERMINATION REQUEST - SKIP 00449000 * FREEING ALL BUFFERS */ 00450000 * DO WHILE CCWCMD = TIC | CCWCMD = NOP; /* LOOK ONLY FOR DATA 01S0297 00451000 * COMMANDS */ 00452000 B @DE00297 01S0297 00453000 @DL00297 DS 0H 01S0298 00454000 * CURCCW = CURCCW - LENGTH(CCW); /* BACK UP A CCW */ 00455000 SH CURCCW,@CH00036 01S0298 00456000 * END; 01S0299 00457000 @DE00297 CLI CCWCMD(CURCCW),8 01S0299 00458000 BE @DL00297 01S0299 00459000 CLI CCWCMD(CURCCW),3 01S0299 00460000 BE @DL00297 01S0299 00461000 * IF IODBBCT ^= ZERO THEN /* IS THERE A BCT */ 00462000 L @10,IODBBCT(,IODBREG) 01S0300 00463000 LTR @10,@10 01S0300 00464000 BZ @RF00300 01S0300 00465000 * DO; /* YES--FIND BUFFER AND MARK BCTS 00466000 * COMPLETE */ 00467000 * BCTADDR = IODBBCT; /* SET UP TO BUFFER TABLE */ 00468000 LR BCTADDR,@10 01S0302 00469000 * IF IODBREG = ADDR(IODBOUT) THEN /* MATCH BCT & CCW IF OUTPUT */ 00470000 L @10,@CA00946 01S0303 00471000 CR IODBREG,@10 01S0303 00472000 BNE @RF00303 01S0303 00473000 * DO WHILE BCTRADDR ^= CCWDADDR; /* LOOK FOR VALID 01S0304 00474000 * ADDRESS--NOTE THAT BCT'S ARE 00475000 * CHAINED BEGINNING WITH THE 00476000 * MOST RECENT BUFFER */ 00477000 B @DE00304 01S0304 00478000 @DL00304 DS 0H 01S0305 00479000 * IF BCTNEXT = ZERO THEN 01S0305 00480000 ICM @10,15,BCTNEXT(BCTADDR) 01S0305 00481000 BNZ @RF00305 01S0305 00482000 * DO; 01S0306 00483000 * VCTAUDIT = IOIAUD2; /* SET UP AUDIT ERROR CONDITION 00484000 * CODE */ 00485000 MVC VCTAUDIT(2,VCCTREG),IOIAUD2 01S0307 00486000 * SVC (AUDSVC); /* ERROR CONDITION TAKE A DUMP */ 00487000 SVC 13 01S0308 00488000 * END; 01S0309 00489000 * BCTADDR = BCTNEXT; /* GET NEXT BUFFER */ 00490000 @RF00305 L BCTADDR,BCTNEXT(,BCTADDR) 01S0310 00491000 * END; 01S0311 00492000 @DE00304 L @10,BCTRADDR(,BCTADDR) 01S0311 00493000 SR @15,@15 01S0311 00494000 ICM @15,7,CCWDADDR(CURCCW) 01S0311 00495000 CR @10,@15 01S0311 00496000 BNE @DL00304 01S0311 00497000 * 01S0312 00498000 * /*****************************************************************/ 00499000 * /* */ 00500000 * /* WE HAVE BUFFERS FOR WHICH I/O IS COMPLETE - MARK I/O STATUS */ 00501000 * /* */ 00502000 * /*****************************************************************/ 00503000 * 01S0312 00504000 */*BCTFLG: P SET BCTCOMP FLAG FOR THIS BUFFER */ 00505000 */* D (YES,,NO,IOIHLT0) OUTPUT IODB ? */ 00506000 */* D (YES,RESTART,NO,) BCTADDR = 0 ? */ 00507000 */* P (,BCTFLG) SET TO NEXT BCT VIA BCTNEXT POINTER */ 00508000 */*RESTART: D (YES,,NO,IOIHLT0) DEVICE END ? */ 00509000 */* P OBTAIN IODBBCT (START OF CHAIN) */ 00510000 */* D (YES,IOIHLT0,NO,IOERR) BCTCOMP = 1 ? */ 00511000 * BCTCOMP = ON; /* I/O COMPLETE FOR BUFFER */ 00512000 @RF00303 OI BCTCOMP(BCTADDR),B'10000000' 01S0312 00513000 * IF IODBREG = ADDR(IODBOUT) THEN 01S0313 00514000 L @10,@CA00946 01S0313 00515000 CR IODBREG,@10 01S0313 00516000 BNE @RF00313 01S0313 00517000 * DO; /* DO ONLY FOR OUTPUT IODB */ 00518000 * DO WHILE BCTADDR ^= ZERO; /* DO ENTIRE CHAIN */ 00519000 B @DE00315 01S0315 00520000 @DL00315 DS 0H 01S0316 00521000 * BCTCOMP = ON; /* MARK I/O COMPLETE */ 00522000 OI BCTCOMP(BCTADDR),B'10000000' 01S0316 00523000 * BCTADDR = BCTNEXT; /* GET NEXT BCT */ 00524000 L BCTADDR,BCTNEXT(,BCTADDR) 01S0317 00525000 * END; 01S0318 00526000 @DE00315 LTR BCTADDR,BCTADDR 01S0318 00527000 BNZ @DL00315 01S0318 00528000 * IF CSWDE = ON THEN 01S0319 00529000 LA @10,IODBCSW(,IODBREG) 01S0319 00530000 TM CSWDE(@10),B'00000100' 01S0319 00531000 BNO @RF00319 01S0319 00532000 * DO; /* IF DE FOR TAPE */ 00533000 * IODBACTV = OFF; /* NO I/O ACTIVE ON DEVICE */ 00534000 NI IODBACTV(IODBREG),B'11111011' 01S0321 00535000 * BCTADDR = IODBBCT; /* GET START OF CHAIN AND SEE IF 00536000 * I/O MUST BE RESTARTED */ 00537000 L BCTADDR,IODBBCT(,IODBREG) 01S0322 00538000 * IF BCTCOMP = OFF THEN 01S0323 00539000 TM BCTCOMP(BCTADDR),B'10000000' 01S0323 00540000 BNZ @RF00323 01S0323 00541000 * DO; 01S0324 00542000 * PFIOIRST = PFIOIRST + 1; /* INCREMENT PERFORMANCE 00543000 * COUNTER BY 1 */ 00544000 * 01S0325 00545000 LA @10,1 01S0325 00546000 AH @10,PFIOIRST 01S0325 00547000 STH @10,PFIOIRST 01S0325 00548000 * GO TO IOERR; /* GO RESTART I/O */ 00549000 B IOERR 01S0326 00550000 * END; 01S0327 00551000 * END; /* END I/O COMPLETE FOR BUFFER */ 00552000 @RF00323 DS 0H 01S0329 00553000 * END; 01S0329 00554000 @RF00319 DS 0H 01S0330 00555000 * END; 01S0330 00556000 @RF00313 DS 0H 01S0331 00557000 * IODBHALT = OFF; /* I/O PROCESSED */ 00558000 @RF00300 NI IODBHALT(IODBREG),B'11110111' 01S0331 00559000 * GO TO IOHDA; /* SKIP RCBE2 */ 00560000 B IOHDA 01S0332 00561000 * 01S0333 00562000 * /*****************************************************************/ 00563000 * /* */ 00564000 * /* SECOND RCB EXIT POINT */ 00565000 * /* */ 00566000 * /*****************************************************************/ 00567000 * 01S0333 00568000 */*RCBE2: P SET IODBIOC = 1 */ 00569000 */* P (,IOHDA) SET IODBINT = 1 */ 00570000 * 01S0333 00571000 *RCBE2: 01S0333 00572000 * IODBIOC = ON; /* I/O ERROR AS STATE IS UNKNOWN */ 00573000 RCBE2 DS 0H 01S0334 00574000 * IODBINT = ON; /* SOMETHING WAS DONE FOR DEVICE */ 00575000 * 01S0334 00576000 OI IODBIOC(IODBREG),B'00110000' 01S0334 00577000 * /*****************************************************************/ 00578000 * /* */ 00579000 * /* PROCESS ALL POSSIBLE IODB'S */ 00580000 * /* */ 00581000 * /*****************************************************************/ 00582000 * 01S0335 00583000 */*IOHDA: D (YES,,NO,IOHWK) IODBHALT ON FOR DA IODB ? */ 00584000 */* P (,IOCATERR) SET IODBREG = ADDR OF DA IODB */ 00585000 */*IOHWK: D (YES,,NO,IOHOP) IODBHALT ON FOR WKFILE IODB ? */ 00586000 */* P (,IOCATERR) SET IODBREG = ADDR OF WKFILE IODB */ 00587000 */*IOHOP: D (YES,,NO,DEQRCB) IODBHALT ON FOR OUTPUT IODB ? */ 00588000 */* P (,IOCATERR) SET IODBREG = ADDR OF OUTPUT IODB */ 00589000 * 01S0335 00590000 *IOHDA: 01S0335 00591000 * IODBREG = ADDR(IODBDA); /* SET UP TO DA IODB */ 00592000 IOHDA L IODBREG,@CA00945 01S0335 00593000 * IF IODBHALT = ON THEN 01S0336 00594000 TM IODBHALT(IODBREG),B'00001000' 01S0336 00595000 BO @RT00336 01S0336 00596000 * GO TO IOCATERR; /* HANDLE DA DEVICE */ 00597000 * IODBREG = ADDR(IODBWORK); /* LOOK AT WORKFILE */ 00598000 L IODBREG,@CA00944 01S0338 00599000 * IF IODBHALT = ON THEN 01S0339 00600000 TM IODBHALT(IODBREG),B'00001000' 01S0339 00601000 BO @RT00339 01S0339 00602000 * GO TO IOCATERR; /* HANDLE WORKFILE */ 00603000 * IODBREG = ADDR(IODBOUT); /* SET UP FOR OUTPUT */ 00604000 L IODBREG,@CA00946 01S0341 00605000 * IF IODBHALT = ON THEN 01S0342 00606000 TM IODBHALT(IODBREG),B'00001000' 01S0342 00607000 BO @RT00342 01S0342 00608000 * GO TO IOCATERR; /* HANDLE OUTPUT */ 00609000 * 01S0344 00610000 * /*****************************************************************/ 00611000 * /* */ 00612000 * /* DETERMINE TYPE OF ENTRY AND SET UP TO RETURN */ 00613000 * /* */ 00614000 * /*****************************************************************/ 00615000 * 01S0344 00616000 */*DEQRCB: P DEQUEUE RCB FROM VCTRCB QUEUE */ 00617000 */* D (YES,IOBREXIT,NO,%LPSW) BRANCH ENTRY (IOIBSW = 1) ? */ 00618000 */*IOBREXIT: P RESTORE REGISTERS FROM CALLER'S SAVE AREA */ 00619000 */* R RETURN TO CALLER VIA BR 14 */ 00620000 */*%LPSW: P RESTORE REGISTERS FROM IOISAVE */ 00621000 */* P TURN OFF WAIT BIT */ 00622000 */* R RESTORE PRE-INTERRUPT STATE VIA LPSW */ 00623000 * 01S0344 00624000 *IOIRET: 01S0344 00625000 * VCTRCB = IRCBNEXT; /* DEQUEUE IOI RCB */ 00626000 IOIRET MVC VCTRCB(4,VCCTREG),IRCBNEXT 01S0344 00627000 * IF IOIBSW = ON THEN 01S0345 00628000 TM IOIBSW,B'10000000' 01S0345 00629000 BNO @RF00345 01S0345 00630000 * DO; 01S0346 00631000 * R13 = SAVEBACK; /* SET UP SAVE AREA */ 00632000 LA @10,IOIAREA 01S0347 00633000 L R13,SAVEBACK(,@10) 01S0347 00634000 * GEN 01S0348 00635000 *SETS(R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15) 01S0348 00636000 * REFS(R13); 01S0348 00637000 LM RETREG,R12,12(R13) RESTORE CALLERS REGISTERS 00638000 BR RETREG RETURN TO CALLER 00639000 * END; 01S0349 00640000 * ELSE 01S0350 00641000 * PSWAIT = OFF; 01S0350 00642000 B @RC00345 01S0350 00643000 @RF00345 LA @10,FLCIOPSW 01S0350 00644000 NI PSWAIT(@10),B'11111101' 01S0350 00645000 * GEN SETS(R0,R1,R2,R3,R4,R5,R6,R6,R8,R9,R10,R11,R12,R13,R14,R15) 00646000 * REFS(IOISAVE,FLCIOPSW); 01S0351 00647000 @RC00345 DS 0H 01S0351 00648000 LM R0,R15,IOISAVE RESTORE CALLERS REGISTERS 00649000 LPSW FLCIOPSW RETURN 00650000 * 01S0352 00651000 *IOIHALT: 01S0352 00652000 * PROC OPTIONS(NOSAVE); 01S0352 00653000 * 01S0352 00654000 B @PB00002 01S0352 00655000 IOIHALT DS 0H 01S0353 00656000 * /*****************************************************************/ 00657000 * /* */ 00658000 * /* THE FOLLOWING ROUTINE IS RESPONSIBLE FOR QUIESCING I/O ON THE */ 00659000 * /* INPUT ACTIVE DEVICE. I/O IS ALLOWED TO REACH SOME REASONABLE */ 00660000 * /* CONCLUSION, THAT IS IT IS NOT PREMATURELY STOPPED */ 00661000 * /* */ 00662000 * /*****************************************************************/ 00663000 * 01S0353 00664000 */*IOIHALT: E I/O HALT ROUTINE */ 00665000 */* N INPUT IS IODB IN IODBADDR */ 00666000 */* D (YES,HALTRET,NO,) IODBBCT = 0 ? */ 00667000 */* L AMDSATAP: CALL VIA SVC 2 TO GET ON PROPER CPU */ 00668000 */* D (YES,HALTRET,NO,) ERROR ENTERING NEW CPU ? */ 00669000 */*HALTWAIT: W (CSW,HALTCSW,AVAL,HALTRET) TIO ON DEVICE */ 00670000 */*HALTCSW: P IODBCSW = FLCCSW */ 00671000 */* D (YES,,NO,HALTSET) OUTPUT DEVICE ? */ 00672000 */* D (YES,HALTWAIT,NO,HALTSET) PCI ONLY ? */ 00673000 */*HALTSET: P IODBHALT = 1 */ 00674000 */* P IODBINT = 1 */ 00675000 */*HALTRET: R RETURN TO CALLER */ 00676000 */* P (,IOIRCBQ) INDICATE BRANCH ENTRY BY IOIBSW = 1 */ 00677000 */*AMDSAIOI: END */ 00678000 * RESPECIFY IODB BASED(IODBADDR); /* USE IODB PASSED IN IODBADDR */ 00679000 * RESPECIFY R14 RESTRICTED; /* RESTRICT REGISTER */ 00680000 * TEMPSAVE = R14; /* SAVE RETURN ADDRESS (CHANGED 00681000 * BY SVC) */ 00682000 LR TEMPSAVE,R14 01S0355 00683000 * RESPECIFY R14 UNRESTRICTED; /* RELEASE REG */ 00684000 * IF IODBACTV = ON THEN 01S0357 00685000 TM IODBACTV(IODBADDR),B'00000100' 01S0357 00686000 BNO @RF00357 01S0357 00687000 * DO; /* IF I/O ACTIVE - HANDLE */ 00688000 * SAVECTIO = CTIOTYPE; /* SAVE CURRENT CTIOTYPE */ 00689000 MVC SAVECTIO(1),CTIOTYPE(CCTREG) 01S0359 00690000 * CTIOTYPE = ZERO; /* ZERO FOR USE */ 00691000 MVI CTIOTYPE(CCTREG),X'00' 01S0360 00692000 * IF IODBADDR = ADDR(IODBDA) THEN 01S0361 00693000 L @10,@CA00945 01S0361 00694000 CR IODBADDR,@10 01S0361 00695000 BNE @RF00361 01S0361 00696000 * CTIODA = ON; /* FOR DA GET ON ATTACHED CPU */ 00697000 OI CTIODA(CCTREG),B'00100000' 01S0362 00698000 * ELSE 01S0363 00699000 * IF IODBADDR = ADDR(IODBWORK) THEN 01S0363 00700000 B @RC00361 01S0363 00701000 @RF00361 L @10,@CA00944 01S0363 00702000 CR IODBADDR,@10 01S0363 00703000 BNE @RF00363 01S0363 00704000 * CTIOWK = ON; /* FOR WORKFILE ENTER IPLED CPU */ 00705000 OI CTIOWK(CCTREG),B'00010000' 01S0364 00706000 * ELSE 01S0365 00707000 * IF IODBADDR = ADDR(IODBOUT) THEN 01S0365 00708000 B @RC00363 01S0365 00709000 @RF00363 L @10,@CA00946 01S0365 00710000 CR IODBADDR,@10 01S0365 00711000 BNE @RF00365 01S0365 00712000 * CTIOOUT = ON; /* FOR OUTPUT ENTER IPLED CPU */ 00713000 OI CTIOOUT(CCTREG),B'01000000' 01S0366 00714000 * RESPECIFY RETCODE RESTRICTED; 01S0367 00715000 @RF00365 DS 0H 01S0367 00716000 @RC00363 DS 0H 01S0367 00717000 @RC00361 DS 0H 01S0368 00718000 * SVC (TAPSVC); /* GET ON TARGET CPU */ 00719000 SVC 2 01S0368 00720000 * CTIOTYPE = SAVECTIO; /* RESTORE CTIOTYPE */ 00721000 MVC CTIOTYPE(1,CCTREG),SAVECTIO 01S0369 00722000 * IF RETCODE = ZERO THEN 01S0370 00723000 LTR RETCODE,RETCODE 01S0370 00724000 BNZ @RF00370 01S0370 00725000 * DO; /* IF RESTARTED ON PROPER CPU 00726000 * THEN HANDLE THE INPUT REQUEST */ 00727000 * 01S0371 00728000 * /*****************************************************************/ 00729000 * /* */ 00730000 * /* IF ON PROPER CPU THEN WAIT FOR I/O COMPLETION */ 00731000 * /* */ 00732000 * /*****************************************************************/ 00733000 * 01S0372 00734000 * RESPECIFY RETCODE UNRESTRICTED; 01S0372 00735000 * 01S0372 00736000 *TIOLOOP: 01S0373 00737000 * TIO (IODBDEV); 01S0373 00738000 TIOLOOP LH @10,IODBDEV(,IODBADDR) 01S0373 00739000 TIO 0(@10) 01S0373 00740000 * BC (2,TIOLOOP); /* LOOP UNTIL DONE */ 00741000 BC 2,TIOLOOP 01S0374 00742000 * BC (9,HALTRET); /* IF AVAILABLE OR NOT OP - EXIT */ 00743000 BC 9,HALTRET 01S0375 00744000 * IODBCSW = FLCCSW; /* SAVE CSW STORED */ 00745000 MVC IODBCSW(8,IODBADDR),FLCCSW 01S0376 00746000 * IF CSWCE = ON THEN 01S0377 00747000 LA @10,IODBCSW(,IODBADDR) 01S0377 00748000 TM CSWCE(@10),B'00001000' 01S0377 00749000 BNO @RF00377 01S0377 00750000 * DO; 01S0378 00751000 * IF CSWATTN = OFF & CSWSTMOD = OFF & CSWCUE = OFF & 00752000 * CSWBUSY = OFF & CSWDE = OFF & CSWUC = OFF & 00753000 * CSWUE = OFF & CSWCSTAT = ZERO THEN 01S0379 00754000 TM CSWATTN(@10),B'11110111' 01S0379 00755000 BNZ @RF00379 01S0379 00756000 CLI CSWCSTAT(@10),0 01S0379 00757000 BE @RT00379 01S0379 00758000 * GO TO TIOLOOP; /* IGNORE CHANNEL END */ 00759000 * END; 01S0381 00760000 @RF00379 DS 0H 01S0382 00761000 * IF CSWPCI = ON & CSWUSTAT = ZERO & CSWIL = OFF & CSWPGC = 00762000 * OFF & CSWPTC = OFF & CSWCDC = OFF & CSWCCC = OFF & 00763000 * CSWICC = OFF & CSWCHC = OFF & IODBADDR = 01S0382 00764000 * ADDR(IODBOUT) THEN 01S0382 00765000 @RF00377 LA @10,IODBCSW(,IODBADDR) 01S0382 00766000 TM CSWPCI(@10),B'10000000' 01S0382 00767000 BNO @RF00382 01S0382 00768000 CLI CSWUSTAT(@10),0 01S0382 00769000 BNE @RF00382 01S0382 00770000 TM CSWIL(@10),B'01111111' 01S0382 00771000 BNZ @RF00382 01S0382 00772000 L @10,@CA00946 01S0382 00773000 CR IODBADDR,@10 01S0382 00774000 BE @RT00382 01S0382 00775000 * GO TO TIOLOOP; /* IGNORE PCI */ 00776000 * IODBHALT = ON; /* DEVICE HALTED */ 00777000 @RF00382 DS 0H 01S0385 00778000 * IODBINT = ON; /* INTERRUPT OCCURRED */ 00779000 OI IODBHALT(IODBADDR),B'00101000' 01S0385 00780000 * END; 01S0386 00781000 * END; 01S0387 00782000 * 01S0387 00783000 @RF00370 DS 0H 01S0388 00784000 *HALTRET: 01S0388 00785000 * IODBACTV = OFF; /* INDICATE I/O NO LONGER ACTIVE */ 00786000 @RF00357 DS 0H 01S0388 00787000 HALTRET NI IODBACTV(IODBADDR),B'11111011' 01S0388 00788000 * RESPECIFY R14 RESTRICTED; /* RESTRICT REGISTER */ 00789000 * R14 = TEMPSAVE; /* RESTORE RETURN ADDRESS 01S0390 00790000 * (CHANGED BY SVC) */ 00791000 LR R14,TEMPSAVE 01S0390 00792000 * RESPECIFY R14 UNRESTRICTED; /* RELEASE REG */ 00793000 * END IOIHALT; 01S0392 00794000 @EL00002 DS 0H 01S0392 00795000 @EF00002 DS 0H 01S0392 00796000 @ER00002 BR @14 01S0392 00797000 @PB00002 DS 0H 01S0392 00798000 * END AMDSAIOI 01S0393 00799000 */* THE FOLLOWING INCLUDE STATEMENTS WERE FOUND IN THIS PROGRAM. * 00800000 */*%INCLUDE SYSLIB (IHAPSA ) * 00801000 */*%INCLUDE SYSLIB (AMDSARMK) * 00802000 *; 01S0393 00803000 @DATA DS 0H 00804000 @CH00994 DC H'-232' 00805000 @CH00036 DC H'8' 00806000 @CH00740 DC H'28672' 00807000 DS 0F 00808000 DS 0F 00809000 @CA00942 DC A(OUTCCW) 00810000 @CA00944 DC A(IODBWORK) 00811000 @CA00945 DC A(IODBDA) 00812000 @CA00946 DC A(IODBOUT) 00813000 DS 0D 00814000 IOISWITH DC X'00' 00815000 ORG IOISWITH 00816000 IOIBSW DS BL1 00817000 @NM00055 EQU IOISWITH+0 00818000 ORG IOISWITH+1 00819000 DS CL3 00820000 IOIAREA DS CL72 00821000 ORG IOIAREA 00822000 @NM00056 DC CL1'L' 00823000 @NM00057 DC CL3'IOI' 00824000 @NM00058 DC 17F'0' 00825000 ORG IOIAREA+72 00826000 IOIRCB DS CL20 00827000 ORG IOIRCB 00828000 IRCBNEXT DC A(0) 00829000 @NM00059 DC A(0) 00830000 @NM00060 DC AL4(IOIAREA) 00831000 IRCBEXIT DC AL4(IOIRET) 00832000 IRCBBASE DC A(0) 00833000 ORG IOIRCB+20 00834000 SAVECTIO DS BL1 00835000 IOIAUD1 DS CL2 00836000 ORG IOIAUD1 00837000 @NM00061 DC X'01' 00838000 @NM00062 DC AL1(27) 00839000 ORG IOIAUD1+2 00840000 IOIAUD2 DS CL2 00841000 ORG IOIAUD2 00842000 @NM00063 DC X'02' 00843000 @NM00064 DC AL1(27) 00844000 ORG IOIAUD2+2 00845000 DS CL3 00846000 IOIPATCH DC 15F'0' 00847000 @00 EQU 00 EQUATES FOR REGISTERS 0-15 00848000 @01 EQU 01 00849000 @02 EQU 02 00850000 @03 EQU 03 00851000 @04 EQU 04 00852000 @05 EQU 05 00853000 @06 EQU 06 00854000 @07 EQU 07 00855000 @08 EQU 08 00856000 @09 EQU 09 00857000 @10 EQU 10 00858000 @11 EQU 11 00859000 @12 EQU 12 00860000 @13 EQU 13 00861000 @14 EQU 14 00862000 @15 EQU 15 00863000 BCTADDR EQU @04 00864000 CURCCW EQU @02 00865000 TEMPSAVE EQU @06 00866000 CCTREG EQU @05 00867000 IODBADDR EQU @04 00868000 IODBREG EQU @03 00869000 VCCTREG EQU @12 00870000 RETCODE EQU @15 00871000 BASEREG EQU @11 00872000 R0 EQU @00 00873000 R1 EQU @01 00874000 R2 EQU @02 00875000 R3 EQU @03 00876000 R4 EQU @04 00877000 R5 EQU @05 00878000 R6 EQU @06 00879000 R7 EQU @07 00880000 R8 EQU @08 00881000 R9 EQU @09 00882000 R10 EQU @10 00883000 R11 EQU @11 00884000 R12 EQU @12 00885000 R13 EQU @13 00886000 R14 EQU @14 00887000 R15 EQU @15 00888000 RETREG EQU @14 00889000 EXTRN OUTCCW 00890000 EXTRN IODBWORK 00891000 EXTRN IODBDA 00892000 EXTRN IODBOUT 00893000 PSA EQU 0 00894000 FLCRNPSW EQU PSA 00895000 FLCROPSW EQU PSA+8 00896000 FLCICCW2 EQU PSA+16 00897000 FLCIOPSW EQU PSA+56 00898000 FLCCSW EQU PSA+64 00899000 PSAEEPSW EQU PSA+132 00900000 PSAESPSW EQU PSA+136 00901000 FLCSVILC EQU PSAESPSW+1 00902000 PSAEPPSW EQU PSA+140 00903000 FLCPIILC EQU PSAEPPSW+1 00904000 FLCPICOD EQU PSAEPPSW+2 00905000 PSAPICOD EQU FLCPICOD+1 00906000 FLCTEA EQU PSAEPPSW+4 00907000 FLCPER EQU PSA+152 00908000 FLCMCLA EQU PSA+168 00909000 FLCIOEL EQU FLCMCLA+4 00910000 FLCIOA EQU FLCMCLA+16 00911000 FLCIOAA EQU FLCIOA+1 00912000 FLCFSA EQU FLCMCLA+80 00913000 PSASUPER EQU PSA+552 00914000 PSASUP1 EQU PSASUPER 00915000 PSASUP2 EQU PSASUPER+1 00916000 PSASUP3 EQU PSASUPER+2 00917000 PSASUP4 EQU PSASUPER+3 00918000 PSACLHT EQU PSA+640 00919000 PSALKSA EQU PSA+696 00920000 PSAHLHI EQU PSA+760 00921000 PSADSSFL EQU PSA+836 00922000 PSADSSF1 EQU PSADSSFL 00923000 PSADSSF3 EQU PSADSSFL+2 00924000 PSADSSF4 EQU PSADSSFL+3 00925000 PSARSVT EQU PSA+896 00926000 DEBUGLSD EQU 3286 00927000 PFIOIRST EQU DEBUGLSD+24 00928000 SADMPLSD EQU 3312 00929000 IOISAVE EQU SADMPLSD+372 00930000 ARB EQU 0 00931000 BCTH EQU 0 00932000 BCT EQU 0 00933000 BCTNEXT EQU BCT+4 00934000 BCTRADDR EQU BCT+16 00935000 BCTLPID EQU BCT+28 00936000 BCTFLGT EQU BCT+44 00937000 BCTFLGI EQU BCT+45 00938000 BCTCOMP EQU BCTFLGI 00939000 CCT EQU 0 00940000 CTFLG1 EQU CCT+1 00941000 CTFLG2 EQU CCT+2 00942000 CTLOWFLG EQU CCT+48 00943000 CTDMPTYP EQU CCT+52 00944000 CTIOTYPE EQU CTDMPTYP 00945000 CTIOTERM EQU CTIOTYPE 00946000 CTIOOUT EQU CTIOTYPE 00947000 CTIODA EQU CTIOTYPE 00948000 CTIOWK EQU CTIOTYPE 00949000 CTCONFLG EQU CTDMPTYP+2 00950000 CTBUFTYP EQU CTDMPTYP+3 00951000 CTVCCT EQU CTDMPTYP+20 00952000 CTPRMT1 EQU CTDMPTYP+24 00953000 CTPRMT2 EQU CTDMPTYP+26 00954000 CCW EQU 0 00955000 CCWCMD EQU CCW 00956000 CCWDADDR EQU CCW+1 00957000 CCWFLAGS EQU CCW+4 00958000 CSW EQU 0 00959000 CSWKEY00 EQU CSW 00960000 CSWCADDR EQU CSW+1 00961000 CSWUSTAT EQU CSW+4 00962000 CSWATTN EQU CSWUSTAT 00963000 CSWSTMOD EQU CSWUSTAT 00964000 CSWCUE EQU CSWUSTAT 00965000 CSWBUSY EQU CSWUSTAT 00966000 CSWCE EQU CSWUSTAT 00967000 CSWDE EQU CSWUSTAT 00968000 CSWUC EQU CSWUSTAT 00969000 CSWUE EQU CSWUSTAT 00970000 CSWCSTAT EQU CSW+5 00971000 CSWPCI EQU CSWCSTAT 00972000 CSWIL EQU CSWCSTAT 00973000 CSWPGC EQU CSWCSTAT 00974000 CSWPTC EQU CSWCSTAT 00975000 CSWCDC EQU CSWCSTAT 00976000 CSWCCC EQU CSWCSTAT 00977000 CSWICC EQU CSWCSTAT 00978000 CSWCHC EQU CSWCSTAT 00979000 DSCE EQU 0 00980000 IODB EQU 0 00981000 IODBFLAG EQU IODB+8 00982000 IODBINT EQU IODBFLAG 00983000 IODBIOC EQU IODBFLAG 00984000 IODBHALT EQU IODBFLAG 00985000 IODBACTV EQU IODBFLAG 00986000 IODBDEV EQU IODB+10 00987000 IODBCLAS EQU IODB+12 00988000 IODBBCT EQU IODB+16 00989000 IODBCAW EQU IODB+20 00990000 IODBCSW EQU IODB+24 00991000 IODBCCHH EQU IODB+32 00992000 IODBSRCH EQU IODBCCHH+3 00993000 MDCE EQU 0 00994000 MDCB EQU 0 00995000 MDCBGRS EQU MDCB+16 00996000 MDCBFLGS EQU MDCB+86 00997000 PSW EQU 0 00998000 PSWSM EQU PSW 00999000 @NM00047 EQU PSW+1 01000000 PSWAIT EQU @NM00047 01001000 PSWCCPM EQU PSW+2 01002000 @NM00050 EQU PSW+3 01003000 PTRT EQU 0 01004000 PTRTRSA EQU 0 01005000 RCB EQU 0 01006000 VCCT EQU 0 01007000 VCTRCB EQU VCCT+4 01008000 VCTRECSN EQU VCCT+8 01009000 VCTFLGS EQU VCCT+9 01010000 VCTMDCE EQU VCCT+12 01011000 VCTDSCE EQU VCCT+20 01012000 VCTBCTH EQU VCCT+24 01013000 VCTAUDIT EQU VCCT+62 01014000 VCTCBID EQU VCCT+64 01015000 VCTCPOUT EQU VCCT+96 01016000 SDL EQU 0 01017000 REGLOCAL EQU 0 01018000 SAVEFORM EQU 0 01019000 SAVEBACK EQU SAVEFORM+4 01020000 SAVENEXT EQU SAVEFORM+8 01021000 PTRTVSA EQU 0 01022000 PSARSVTE EQU PSARSVT 01023000 CTLOWDMP EQU CTDMPTYP 01024000 FLC EQU PSA 01025000 AGO .@UNREFD START UNREFERENCED COMPONENTS 01026000 CTADDRE EQU CTLOWDMP+4 01027000 CTADDRS EQU CTLOWDMP 01028000 PSARSAV EQU PSARSVTE+60 01029000 PSARSTK EQU PSARSVTE+56 01030000 PSAESAV3 EQU PSARSVTE+52 01031000 PSAESTK3 EQU PSARSVTE+48 01032000 PSAESAV2 EQU PSARSVTE+44 01033000 PSAESTK2 EQU PSARSVTE+40 01034000 PSAESAV1 EQU PSARSVTE+36 01035000 PSAESTK1 EQU PSARSVTE+32 01036000 PSAPSAV EQU PSARSVTE+28 01037000 PSAPSTK EQU PSARSVTE+24 01038000 PSAMSAV EQU PSARSVTE+20 01039000 PSAMSTK EQU PSARSVTE+16 01040000 PSASSAV EQU PSARSVTE+12 01041000 PSASSTK EQU PSARSVTE+8 01042000 PSANSTK EQU PSARSVTE+4 01043000 PSACSTK EQU PSARSVTE 01044000 SAVER12 EQU SAVEFORM+68 01045000 SAVER11 EQU SAVEFORM+64 01046000 SAVER10 EQU SAVEFORM+60 01047000 SAVER9 EQU SAVEFORM+56 01048000 SAVER8 EQU SAVEFORM+52 01049000 SAVER7 EQU SAVEFORM+48 01050000 SAVER6 EQU SAVEFORM+44 01051000 SAVER5 EQU SAVEFORM+40 01052000 SAVER4 EQU SAVEFORM+36 01053000 SAVER3 EQU SAVEFORM+32 01054000 SAVER2 EQU SAVEFORM+28 01055000 SAVER1 EQU SAVEFORM+24 01056000 SAVER0 EQU SAVEFORM+20 01057000 SAVER15 EQU SAVEFORM+16 01058000 SAVER14 EQU SAVEFORM+12 01059000 SAVENAME EQU SAVEFORM+1 01060000 SAVEID EQU SAVEFORM 01061000 REGL15 EQU REGLOCAL+60 01062000 REGL14 EQU REGLOCAL+56 01063000 REGL13 EQU REGLOCAL+52 01064000 REGL12 EQU REGLOCAL+48 01065000 REGL11 EQU REGLOCAL+44 01066000 REGL10 EQU REGLOCAL+40 01067000 REGL9 EQU REGLOCAL+36 01068000 REGL8 EQU REGLOCAL+32 01069000 REGL7 EQU REGLOCAL+28 01070000 REGL6 EQU REGLOCAL+24 01071000 REGL5 EQU REGLOCAL+20 01072000 REGL4 EQU REGLOCAL+16 01073000 REGL3 EQU REGLOCAL+12 01074000 REGL2 EQU REGLOCAL+8 01075000 REGL1 EQU REGLOCAL+4 01076000 REGL0 EQU REGLOCAL 01077000 SDLSPN EQU SDL+1 01078000 SDLNUM EQU SDL 01079000 VCTVCCTV EQU VCCT+108 01080000 VCTCCTV EQU VCCT+104 01081000 @NM00054 EQU VCCT+102 01082000 VCTEXTRA EQU VCCT+100 01083000 VCTSVCTB EQU VCCT+92 01084000 VCTPGT EQU VCCT+88 01085000 VCTLPA EQU VCCT+84 01086000 VCTCBADR EQU VCCT+80 01087000 VCTJBNME EQU VCCT+72 01088000 VCTCBIDN EQU VCTCBID+7 01089000 @NM00053 EQU VCTCBID 01090000 VCTASID EQU VCCT+60 01091000 VCTPTRT EQU VCCT+56 01092000 VCTMASCB EQU VCCT+52 01093000 VCTASCB EQU VCCT+48 01094000 VCTCPUC EQU VCCT+46 01095000 VCTWKC EQU VCCT+45 01096000 VCTWKHI EQU VCCT+44 01097000 VCTSUBPL EQU VCCT+40 01098000 VCTARB EQU VCCT+36 01099000 VCTIODB EQU VCCT+32 01100000 VCTBCTC EQU VCCT+28 01101000 VCTSTOR EQU VCCT+16 01102000 VCTRECVA EQU VCCT+10 01103000 @NM00052 EQU VCTFLGS 01104000 VCTNOI22 EQU VCTFLGS 01105000 VCTLRCLM EQU VCTFLGS 01106000 VCTARCLM EQU VCTFLGS 01107000 VCTASMIC EQU VCTFLGS 01108000 VCTMEMIN EQU VCTFLGS 01109000 VCTSADMP EQU VCTFLGS 01110000 @NM00051 EQU VCTRECSN 01111000 VCTRSMR EQU VCTRECSN 01112000 VCTEXIR EQU VCTRECSN 01113000 VCTUPDR EQU VCTRECSN 01114000 VCTPGIR EQU VCTRECSN 01115000 VCTVCT EQU VCCT 01116000 RCBBASE EQU RCB+16 01117000 RCBEXIT EQU RCB+12 01118000 RCBSAVE EQU RCB+8 01119000 RCBSTOR EQU RCB+4 01120000 RCBNEXT EQU RCB 01121000 PTRTVS EQU PTRT+1032 01122000 PTRTRS EQU PTRT+8 01123000 PTRTLGID EQU PTRT+4 01124000 PTRTPTRT EQU PTRT 01125000 PSWEND EQU PSW+8 01126000 PSWIA EQU PSW+4 01127000 PSWSP EQU @NM00050 01128000 PSWSIG EQU PSWCCPM 01129000 PSWEU EQU PSWCCPM 01130000 PSWDO EQU PSWCCPM 01131000 PSWFPO EQU PSWCCPM 01132000 @NM00049 EQU PSWCCPM 01133000 @NM00048 EQU PSWCCPM 01134000 PSWPRBLM EQU @NM00047 01135000 PSWMCH EQU @NM00047 01136000 PSWMODE EQU @NM00047 01137000 PSWKEY EQU @NM00047 01138000 PSWXTRNL EQU PSWSM 01139000 PSWIO EQU PSWSM 01140000 PSWDAT EQU PSWSM 01141000 @NM00046 EQU PSWSM 01142000 @NM00045 EQU PSWSM 01143000 @NM00044 EQU PSWSM 01144000 PSWPER EQU PSWSM 01145000 @NM00043 EQU PSWSM 01146000 @NM00042 EQU MDCB+87 01147000 @NM00041 EQU MDCBFLGS 01148000 MDCBDUMP EQU MDCBFLGS 01149000 MDCBASMI EQU MDCBFLGS 01150000 MDCBPI EQU MDCB+84 01151000 MDCBSTOR EQU MDCB+80 01152000 MDCBGR15 EQU MDCBGRS+60 01153000 MDCBGR14 EQU MDCBGRS+56 01154000 MDCBGR13 EQU MDCBGRS+52 01155000 MDCBGR12 EQU MDCBGRS+48 01156000 MDCBGR11 EQU MDCBGRS+44 01157000 MDCBGR10 EQU MDCBGRS+40 01158000 MDCBGR9 EQU MDCBGRS+36 01159000 MDCBGR8 EQU MDCBGRS+32 01160000 MDCBGR7 EQU MDCBGRS+28 01161000 MDCBGR6 EQU MDCBGRS+24 01162000 MDCBGR5 EQU MDCBGRS+20 01163000 MDCBGR4 EQU MDCBGRS+16 01164000 MDCBGR3 EQU MDCBGRS+12 01165000 MDCBGR2 EQU MDCBGRS+8 01166000 MDCBGR1 EQU MDCBGRS+4 01167000 MDCBGR0 EQU MDCBGRS 01168000 MDCBPSW EQU MDCB+8 01169000 MDCBNEXT EQU MDCB+4 01170000 MDCBMDCB EQU MDCB 01171000 MDCEAVIL EQU MDCE+8 01172000 MDCEACTV EQU MDCE+4 01173000 MDCEMDCE EQU MDCE 01174000 IODBSENS EQU IODB+40 01175000 IODBR EQU IODBCCHH+7 01176000 IODBHH EQU IODBSRCH+2 01177000 IODBCC EQU IODBSRCH 01178000 IODBSEEK EQU IODBCCHH+1 01179000 IODBM EQU IODBCCHH 01180000 IODBCPU EQU IODB+14 01181000 IODBTYPE EQU IODB+13 01182000 @NM00040 EQU IODBFLAG+1 01183000 IODBSTRT EQU IODBFLAG 01184000 IODBCONW EQU IODBFLAG 01185000 IODBPTRM EQU IODBFLAG 01186000 IODBTERM EQU IODBFLAG 01187000 IODBIDEN EQU IODB+4 01188000 IODBIODB EQU IODB 01189000 DSCETEND EQU DSCE+20 01190000 DSCETCUR EQU DSCE+16 01191000 DSCETBEG EQU DSCE+12 01192000 DSCENEXT EQU DSCE+8 01193000 DSCEBEGN EQU DSCE+4 01194000 DSCEDSCE EQU DSCE 01195000 CSWCNT EQU CSW+6 01196000 @NM00039 EQU CSWKEY00 01197000 CSWKEY EQU CSWKEY00 01198000 CCWCNT EQU CCW+6 01199000 @NM00038 EQU CCW+5 01200000 @NM00037 EQU CCWFLAGS 01201000 CCWIDA EQU CCWFLAGS 01202000 CCWPCI EQU CCWFLAGS 01203000 CCWSKIP EQU CCWFLAGS 01204000 CCWSLI EQU CCWFLAGS 01205000 CCWCC EQU CCWFLAGS 01206000 CCWDC EQU CCWFLAGS 01207000 CTHWMAX EQU CTDMPTYP+29 01208000 CTHWM EQU CTDMPTYP+28 01209000 CTPRMT2X EQU CTPRMT2+1 01210000 CTPRMT2Y EQU CTPRMT2 01211000 CTPRMT1X EQU CTPRMT1+1 01212000 CTPRMT1Y EQU CTPRMT1 01213000 CTEOR EQU CTDMPTYP+16 01214000 CTCOMMIO EQU CTDMPTYP+12 01215000 CTLWKAD EQU CTDMPTYP+8 01216000 CTCONSOL EQU CTDMPTYP+4 01217000 @NM00036 EQU CTBUFTYP 01218000 CTDUMP EQU CTBUFTYP 01219000 CTLSQA EQU CTBUFTYP 01220000 CTASM EQU CTBUFTYP 01221000 CTPGT EQU CTBUFTYP 01222000 CTWKFLE EQU CTBUFTYP 01223000 @NM00035 EQU CTBUFTYP 01224000 @NM00034 EQU CTCONFLG 01225000 CTREAD EQU CTCONFLG 01226000 CTMSGOUT EQU CTCONFLG 01227000 @NM00033 EQU CTDMPTYP+1 01228000 @NM00032 EQU CTIOTYPE 01229000 CTIORSET EQU CTIOTYPE 01230000 CTIOINT EQU CTIOTYPE 01231000 CTIOCON EQU CTIOTYPE 01232000 CTEBCOPR EQU CCT+49 01233000 @NM00031 EQU CTLOWFLG 01234000 CTWKSTUS EQU CTLOWFLG 01235000 CTINIT EQU CTLOWFLG 01236000 CTFP EQU CTLOWFLG 01237000 CTVIRTD EQU CTLOWFLG 01238000 CTEBCOPD EQU CCT+45 01239000 CTCONTYP EQU CCT+44 01240000 CTOUTAD EQU CCT+42 01241000 CTCPUI EQU CCT+40 01242000 CTERBCON EQU CCT+36 01243000 CTERBTPE EQU CCT+32 01244000 CTERBDA EQU CCT+28 01245000 CTCCHHW EQU CCT+24 01246000 CTCCHHE EQU CCT+20 01247000 CTCCHHS EQU CCT+16 01248000 CTPGECNT EQU CCT+15 01249000 CTCCHHR EQU CCT+8 01250000 CTINADDR EQU CCT+6 01251000 CTSENSE EQU CCT+4 01252000 CTDEVTYP EQU CCT+3 01253000 @NM00030 EQU CTFLG2 01254000 CTALTCON EQU CTFLG2 01255000 CTWKDONE EQU CTFLG2 01256000 CTVIRTR EQU CTFLG2 01257000 CTNOSTAT EQU CTFLG2 01258000 CTPGEFLT EQU CTFLG2 01259000 CTSTOR EQU CTFLG2 01260000 CTDUPSW EQU CTFLG2 01261000 CTERREC EQU CTFLG1 01262000 CTMP EQU CTFLG1 01263000 @NM00029 EQU CTFLG1 01264000 CTDEFO EQU CTFLG1 01265000 CTWORK EQU CTFLG1 01266000 CTMORTPE EQU CTFLG1 01267000 CTDEVICE EQU CTFLG1 01268000 CTERROR EQU CTFLG1 01269000 CTWAIT EQU CCT 01270000 @NM00028 EQU BCT+46 01271000 BCTRECLM EQU BCTFLGI 01272000 BCTIOERR EQU BCTFLGI 01273000 BCTALLOC EQU BCTFLGI 01274000 @NM00027 EQU BCTFLGT 01275000 BCTPGTF EQU BCTFLGT 01276000 BCTDUMP EQU BCTFLGT 01277000 BCTLSQA EQU BCTFLGT 01278000 BCTASM EQU BCTFLGT 01279000 BCTPGT EQU BCTFLGT 01280000 BCTWKFLE EQU BCTFLGT 01281000 @NM00026 EQU BCTFLGT 01282000 BCTRBA EQU BCT+40 01283000 BCTAMB EQU BCT+36 01284000 @NM00025 EQU BCTLPID+4 01285000 BCTLGN EQU BCTLPID 01286000 BCTMDCB EQU BCT+24 01287000 BCTPGTE EQU BCT+20 01288000 BCTVADDR EQU BCT+12 01289000 BCTASID EQU BCT+10 01290000 BCTKEY2 EQU BCT+9 01291000 BCTKEY1 EQU BCT+8 01292000 BCTBCT EQU BCT 01293000 BCTHLAST EQU BCTH+8 01294000 BCTHFRST EQU BCTH+4 01295000 BCTHBCTH EQU BCTH 01296000 ARBADDRE EQU ARB+4 01297000 ARBADDRB EQU ARB 01298000 GTMSAVE EQU SADMPLSD+684 01299000 GTMNAME EQU SADMPLSD+680 01300000 FRMSAVE EQU SADMPLSD+580 01301000 FRMNAME EQU SADMPLSD+576 01302000 AUDSAVE EQU SADMPLSD+476 01303000 AUDNAME EQU SADMPLSD+472 01304000 IOINAME EQU SADMPLSD+368 01305000 PGISAVE EQU SADMPLSD+268 01306000 PGINAME EQU SADMPLSD+264 01307000 SVISAVE EQU SADMPLSD+164 01308000 SVINAME EQU SADMPLSD+160 01309000 LOWCRS EQU SADMPLSD+96 01310000 LOWGRS EQU SADMPLSD+32 01311000 SAVEDUMP EQU SADMPLSD+24 01312000 AUDPSW EQU SADMPLSD+16 01313000 SVIRPSW EQU SADMPLSD+8 01314000 PSWSADMP EQU SADMPLSD 01315000 PFWATOIP EQU DEBUGLSD+22 01316000 PFWATDE EQU DEBUGLSD+20 01317000 PFWATEN EQU DEBUGLSD+18 01318000 PFWATENW EQU DEBUGLSD+16 01319000 PFSIOWAT EQU DEBUGLSD+14 01320000 PFSIOPCI EQU DEBUGLSD+12 01321000 PFSIOOUT EQU DEBUGLSD+10 01322000 PFSIOWK EQU DEBUGLSD+8 01323000 PFSIODA EQU DEBUGLSD+6 01324000 PFTAPCPU EQU DEBUGLSD+4 01325000 PFBUFWAT EQU DEBUGLSD+2 01326000 PFTRCLM EQU DEBUGLSD 01327000 @NM00024 EQU PSA+3412 01328000 PSASTAK EQU PSA+3072 01329000 @NM00023 EQU PSA+1032 01330000 PSAUSEND EQU PSA+1032 01331000 PSAPCPSW EQU PSA+1024 01332000 PSARV060 EQU PSA+1020 01333000 PSARV059 EQU PSA+1018 01334000 PSASVC13 EQU PSA+1016 01335000 PSALSFCC EQU PSA+1012 01336000 PSASFACC EQU PSA+1008 01337000 PSASTOP EQU PSA+992 01338000 PSASTART EQU PSA+976 01339000 PSARSPSW EQU PSA+968 01340000 PSASRPSW EQU PSA+960 01341000 PSARV045 EQU PSA+892 01342000 PSARV044 EQU PSA+888 01343000 PSARV043 EQU PSA+884 01344000 PSARV042 EQU PSA+880 01345000 PSARV041 EQU PSA+876 01346000 PSARV040 EQU PSA+872 01347000 PSARV025 EQU PSA+868 01348000 PSADSSED EQU PSA+868 01349000 PSADSSPR EQU PSA+864 01350000 PSADSSFW EQU PSA+860 01351000 PSADSS14 EQU PSA+856 01352000 PSADSSPP EQU PSA+848 01353000 PSADSSRP EQU PSA+840 01354000 PSADSS05 EQU PSADSSF4 01355000 PSADSS10 EQU PSADSSF4 01356000 PSADSSVE EQU PSADSSF4 01357000 PSADSSDE EQU PSADSSF4 01358000 PSADSSC0 EQU PSADSSF4 01359000 PSADSSIE EQU PSADSSF4 01360000 PSADSS12 EQU PSADSSF4 01361000 PSADSSRC EQU PSADSSF4 01362000 PSARV057 EQU PSADSSF3 01363000 PSARV056 EQU PSADSSF3 01364000 PSARV055 EQU PSADSSF3 01365000 PSADSSMC EQU PSADSSF3 01366000 PSADSSRW EQU PSADSSF3 01367000 PSADSSNM EQU PSADSSF3 01368000 PSADSSES EQU PSADSSF3 01369000 PSADSSGP EQU PSADSSF3 01370000 PSADSSF2 EQU PSADSSFL+1 01371000 PSADSSPI EQU PSADSSF1 01372000 PSADSSOI EQU PSADSSF1 01373000 PSADSSSP EQU PSADSSF1 01374000 PSADSSTP EQU PSADSSF1 01375000 PSADSSDW EQU PSADSSF1 01376000 PSADSSDD EQU PSADSSF1 01377000 PSADSSDM EQU PSADSSF1 01378000 PSADSSMV EQU PSADSSF1 01379000 PSADSSTS EQU PSA+816 01380000 PSADSSWK EQU PSA+812 01381000 PSADSSR3 EQU PSA+808 01382000 PSADSSR2 EQU PSA+804 01383000 PSADSSRS EQU PSA+800 01384000 PSASTOR EQU PSA+796 01385000 PSACPUSA EQU PSA+794 01386000 PSAVSTAP EQU PSA+792 01387000 PSAWKVAP EQU PSA+788 01388000 PSAWKRAP EQU PSA+784 01389000 PSAMCHIC EQU PSA+783 01390000 PSARV061 EQU PSA+782 01391000 PSASYMSK EQU PSA+781 01392000 PSAMCHFL EQU PSA+780 01393000 PSACR0 EQU PSA+776 01394000 PSAPSWSV EQU PSA+768 01395000 PSALITA EQU PSA+764 01396000 PSACLHS EQU PSAHLHI 01397000 PSALKR15 EQU PSALKSA+60 01398000 PSALKR14 EQU PSALKSA+56 01399000 PSALKR13 EQU PSALKSA+52 01400000 PSALKR12 EQU PSALKSA+48 01401000 PSALKR11 EQU PSALKSA+44 01402000 PSALKR10 EQU PSALKSA+40 01403000 PSALKR9 EQU PSALKSA+36 01404000 PSALKR8 EQU PSALKSA+32 01405000 PSALKR7 EQU PSALKSA+28 01406000 PSALKR6 EQU PSALKSA+24 01407000 PSALKR5 EQU PSALKSA+20 01408000 PSALKR4 EQU PSALKSA+16 01409000 PSALKR3 EQU PSALKSA+12 01410000 PSALKR2 EQU PSALKSA+8 01411000 PSALKR1 EQU PSALKSA+4 01412000 PSALKR0 EQU PSALKSA 01413000 PSARV023 EQU PSACLHT+52 01414000 PSALOCAL EQU PSACLHT+48 01415000 PSACMSL EQU PSACLHT+44 01416000 PSAOPTL EQU PSACLHT+40 01417000 PSATPACL EQU PSACLHT+36 01418000 PSATPDNL EQU PSACLHT+32 01419000 PSATPNCL EQU PSACLHT+28 01420000 PSAIOSLL EQU PSACLHT+24 01421000 PSAIOSUL EQU PSACLHT+20 01422000 PSAIOSCL EQU PSACLHT+16 01423000 PSAIOSSL EQU PSACLHT+12 01424000 PSASALCL EQU PSACLHT+8 01425000 PSAASML EQU PSACLHT+4 01426000 PSADISPL EQU PSACLHT 01427000 PSASRSA EQU PSA+636 01428000 PSARV050 EQU PSA+634 01429000 PSADSSGO EQU PSA+633 01430000 PSARECUR EQU PSA+632 01431000 PSAHLHIS EQU PSA+628 01432000 PSAIPCSA EQU PSA+624 01433000 @NM00022 EQU PSA+621 01434000 PSAIPCDM EQU PSA+620 01435000 PSAIPCD EQU PSA+616 01436000 @NM00021 EQU PSA+613 01437000 PSAIPCRM EQU PSA+612 01438000 PSAIPCR EQU PSA+608 01439000 PSAMCHEX EQU PSA+600 01440000 PSAMPSW EQU PSA+592 01441000 PSAEXPS2 EQU PSA+584 01442000 PSAEXPS1 EQU PSA+576 01443000 PSAPIREG EQU PSA+572 01444000 PSARSREG EQU PSA+568 01445000 PSAGPREG EQU PSA+556 01446000 PSARV022 EQU PSASUP4 01447000 PSARV021 EQU PSASUP4 01448000 PSARV020 EQU PSASUP4 01449000 PSARV019 EQU PSASUP4 01450000 PSARV018 EQU PSASUP4 01451000 PSARV017 EQU PSASUP4 01452000 PSARV016 EQU PSASUP4 01453000 PSARV015 EQU PSASUP4 01454000 PSARV014 EQU PSASUP3 01455000 PSARV013 EQU PSASUP3 01456000 PSARV012 EQU PSASUP3 01457000 PSARV011 EQU PSASUP3 01458000 PSARV010 EQU PSASUP3 01459000 PSARV009 EQU PSASUP3 01460000 PSARV008 EQU PSASUP3 01461000 PSAIOSUP EQU PSASUP3 01462000 PSALCR EQU PSASUP2 01463000 PSARTM EQU PSASUP2 01464000 PSAACR EQU PSASUP2 01465000 PSAIPCE2 EQU PSASUP2 01466000 PSAIPCES EQU PSASUP2 01467000 PSAIPCEC EQU PSASUP2 01468000 PSAGTF EQU PSASUP2 01469000 PSAIPCRI EQU PSASUP2 01470000 PSAIPCRP EQU PSASUP1 01471000 PSAIPCDR EQU PSASUP1 01472000 PSADISP EQU PSASUP1 01473000 PSALOCK EQU PSASUP1 01474000 PSAPI EQU PSASUP1 01475000 PSAEXT EQU PSASUP1 01476000 PSASVC EQU PSASUP1 01477000 PSAIO EQU PSASUP1 01478000 PSAAOLD EQU PSA+548 01479000 PSAANEW EQU PSA+544 01480000 PSATOLD EQU PSA+540 01481000 PSATNEW EQU PSA+536 01482000 PSALCCAR EQU PSA+532 01483000 PSALCCAV EQU PSA+528 01484000 PSAPCCAR EQU PSA+524 01485000 PSAPCCAV EQU PSA+520 01486000 PSACPULA EQU PSA+518 01487000 PSACPUPA EQU PSA+516 01488000 PSAPSA EQU PSA+512 01489000 FLCHDEND EQU PSA+512 01490000 FLCCRSAV EQU FLCMCLA+280 01491000 FLCGRSAV EQU FLCMCLA+216 01492000 FLCFPSAV EQU FLCMCLA+184 01493000 FLCFLA EQU FLCMCLA+88 01494000 FLCRGNCD EQU FLCMCLA+84 01495000 FLCFSAA EQU FLCFSA+1 01496000 @NM00020 EQU FLCFSA 01497000 @NM00019 EQU FLCMCLA+72 01498000 FLCMCIC EQU FLCMCLA+64 01499000 @NM00018 EQU FLCMCLA+20 01500000 @NM00017 EQU FLCIOA 01501000 @NM00016 EQU FLCMCLA+15 01502000 @NM00015 EQU FLCMCLA+14 01503000 @NM00014 EQU FLCMCLA+12 01504000 FLCLCL EQU FLCMCLA+8 01505000 FLCIOELA EQU FLCIOEL+1 01506000 @NM00013 EQU FLCIOEL 01507000 FLCCHNID EQU FLCMCLA 01508000 @NM00012 EQU PSA+160 01509000 FLCMTRCD EQU PSA+157 01510000 @NM00011 EQU PSA+156 01511000 FLCPERA EQU FLCPER+1 01512000 @NM00010 EQU FLCPER 01513000 @NM00009 EQU PSA+151 01514000 FLCPERCD EQU PSA+150 01515000 FLCMCNUM EQU PSA+149 01516000 @NM00008 EQU PSA+148 01517000 FLCTEAA EQU FLCTEA+1 01518000 @NM00007 EQU FLCTEA 01519000 PSAPIPC EQU PSAPICOD 01520000 PSAPIMC EQU PSAPICOD 01521000 PSAPIPER EQU PSAPICOD 01522000 PSARV049 EQU FLCPICOD 01523000 FLCPILCB EQU FLCPIILC 01524000 @NM00006 EQU FLCPIILC 01525000 @NM00005 EQU PSAEPPSW 01526000 FLCSVCN EQU PSAESPSW+2 01527000 FLCSILCB EQU FLCSVILC 01528000 @NM00004 EQU FLCSVILC 01529000 @NM00003 EQU PSAESPSW 01530000 FLCEICOD EQU PSAEEPSW+2 01531000 PSASPAD EQU PSAEEPSW 01532000 @NM00002 EQU PSA+128 01533000 FLCINPSW EQU PSA+120 01534000 FLCMNPSW EQU PSA+112 01535000 FLCPNPSW EQU PSA+104 01536000 FLCSNPSW EQU PSA+96 01537000 FLCENPSW EQU PSA+88 01538000 FLCTRACE EQU PSA+84 01539000 FLCTIMER EQU PSA+80 01540000 FLCCVT2 EQU PSA+76 01541000 FLCCAW EQU PSA+72 01542000 FLCMOPSW EQU PSA+48 01543000 FLCPOPSW EQU PSA+40 01544000 FLCSOPSW EQU PSA+32 01545000 FLCEOPSW EQU PSA+24 01546000 @NM00001 EQU FLCICCW2+4 01547000 FLCCVT EQU FLCICCW2 01548000 FLCICCW1 EQU FLCROPSW 01549000 FLCIPPSW EQU FLCRNPSW 01550000 .@UNREFD ANOP END UNREFERENCED COMPONENTS 01551000 @RT00222 EQU IOIRCBE2 01552000 @RT00225 EQU IOIRCBE2 01553000 @RT00228 EQU IOIRCBE2 01554000 @RF00228 EQU IOIRET 01555000 @RT00240 EQU IOERR 01556000 @RT00295 EQU IOIRET 01557000 @RT00336 EQU IOCATERR 01558000 @RT00339 EQU IOCATERR 01559000 @RT00342 EQU IOCATERR 01560000 @RT00379 EQU TIOLOOP 01561000 @RT00382 EQU TIOLOOP 01562000 @ENDDATA EQU * 01563000 END AMDSAIOI,(C'PL/S-II',0502,74107) 01564000